Changeset 9133
- Timestamp:
- 09/10/2019 04:51:17 AM (5 years ago)
- Location:
- sites/trunk/buddypress.org/public_html/wp-content/themes
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/buddypress.org/public_html/wp-content/themes/bb-base/functions.php
r8938 r9133 597 597 } 598 598 add_filter( 'is_bbpress', 'bb_base_filter_is_bbpress' ); 599 600 /** 601 * Redirect away from the login page (if you're already logged in) 602 */ 603 function bb_base_login_redirect() { 604 if ( is_user_logged_in() && is_page( 'login' ) ) { 605 wp_safe_redirect( bbp_get_forums_url() ); 606 exit(); 607 } 608 } 609 add_action( 'bbp_template_redirect', 'bb_base_login_redirect', 11 ); -
sites/trunk/buddypress.org/public_html/wp-content/themes/bb-base/style.css
r9122 r9133 1615 1615 } 1616 1616 1617 #wp-admin-bar-my-account img.avatar { 1618 border-radius: 50%; 1619 } 1620 1617 1621 /* =Responsive Overrides 1618 1622 -------------------------------------------------------------- */ … … 1751 1755 } 1752 1756 #wp-admin-bar-my-account img.avatar { 1753 height: 38px; 1754 width: 38px; 1755 border-radius: 50%; 1756 } 1757 } 1757 height: 38px !important; 1758 width: 38px !important; 1759 } 1760 } -
sites/trunk/buddypress.org/public_html/wp-content/themes/bbpress-org/functions.php
r1644 r9133 1 1 <?php 2 3 /**4 * Redirect away from the login page if you're already logged in5 */6 function bb_theme_login_redirect() {7 if ( is_user_logged_in() && is_page( 'login' ) ) {8 wp_safe_redirect( 'https://bbpress.org/forums/' );9 exit();10 }11 }12 add_action( 'bbp_template_redirect', 'bb_theme_login_redirect', 11 ); -
sites/trunk/buddypress.org/public_html/wp-content/themes/bporg-developer/css/style.css
r9132 r9133 11 11 } 12 12 13 #wpadminbar {14 position: absolute;15 }16 17 13 #header-inner { 18 14 margin: 0 auto; … … 20 16 height: 80px; 21 17 padding: 0; 22 }23 24 @media screen and (min-width: 960px) {25 #header-inner, #footer {26 max-width: 960px;27 }28 18 } 29 19 -
sites/trunk/buddypress.org/public_html/wp-content/themes/bporg-developer/functions.php
r9131 r9133 1 <?php namespace DevHub;1 <?php 2 2 /** 3 3 * BuddyPress Developer Theme functions. … … 6 6 * @since 1.0.0 7 7 */ 8 namespace DevHub; 8 9 9 10 // Exit if accessed directly … … 16 17 */ 17 18 function bporg_developer_enqueue_styles() { 18 wp_enqueue_style( 'wporg-developer', get_template_directory_uri() . '/style.css' ); 19 wp_enqueue_style( 'bporg-developer-main', 20 get_stylesheet_directory_uri() . '/css/style.css', 21 array( 'wp-dev-sass-compiled', 'dashicons' ), 22 wp_get_theme()->get('Version') 23 ); 19 wp_enqueue_style( 'bb-base', content_url( 'themes' ) . '/bb-base/style.css' ); 20 wp_enqueue_style( 'wporg-developer', get_template_directory_uri() . '/style.css' ); 21 wp_enqueue_style( 'bporg-developer-main', 22 get_stylesheet_directory_uri() . '/css/style.css', 23 array( 'wp-dev-sass-compiled', 'dashicons', 'bb-base' ), 24 wp_get_theme()->get( 'Version' ) 25 ); 24 26 } 25 27 add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\\bporg_developer_enqueue_styles', 20 ); … … 34 36 */ 35 37 function bporg_developer_register_rest_api( $post_types = array() ) { 36 37 38 $post_types[] = 'bp-rest-api'; 39 return $post_types; 38 40 } 39 41 add_filter( 'handbook_post_types', __NAMESPACE__ . '\\bporg_developer_register_rest_api', 100, 1 ); … … 49 51 */ 50 52 function bporg_developer_set_rest_api_label( $label, $post_type ) { 51 52 53 54 55 53 if ( 'bp-rest-api-handbook' === $post_type ) { 54 $label = __( 'BP REST API Handbook', 'bporg-developer' ); 55 } 56 57 return $label; 56 58 } 57 59 add_filter( 'handbook_label', __NAMESPACE__ . '\\bporg_developer_set_rest_api_label', 100, 2 ); … … 63 65 */ 64 66 function bporg_developer_starter_content() { 65 register_nav_menu( 'header-nav-menu', 'Main nav bar' ); 66 67 add_theme_support( 'title-tag' ); 68 69 add_theme_support( 'starter-content', array( 70 'widgets' => array( 71 // Place the BP REST API Chapters accordeon. 72 'bp-rest-api-handbook' => array( 73 'bp-rest-api-chapters' => array( 74 'handbook_pages', 75 array( 76 'title' => __( 'Chapters', 'bporg-developer' ), 77 ), 78 ), 79 ), 80 81 // Place a link to the codex. 82 'landing-footer-1' => array( 83 'more-resources' => array( 84 'text', 85 array( 86 'title' => __( 'More resources', 'bporg-developer' ), 87 'text' => sprintf( '<a href="https://codex.buddypress.org/">%s</a>', __( 'BuddyPress Codex', 'bporg-developer' ) ), 88 'filter' => true, 89 'visual' => true, 90 ), 91 ), 92 ), 93 94 // Place a link to the support forums. 95 'landing-footer-2' => array( 96 'more-resources' => array( 97 'text', 98 array( 99 'title' => __( 'Need help?', 'bporg-developer' ), 100 'text' => sprintf( '<a href="https://buddypress.org/support/">%s</a>', __( 'BuddyPress support forums', 'bporg-developer' ) ), 101 'filter' => true, 102 'visual' => true, 103 ), 104 ), 105 ), 106 ), 107 108 // Create initial pages. 109 'posts' => array( 110 'landing' => array( 111 'post_title' => __( 'Home', 'bporg-developer' ), 112 'post_type' => 'page', 113 'post_name' => 'landing', 114 'template' => 'page-home-landing.php', 115 ), 116 'reference' => array( 117 'post_title' => __( 'Reference', 'bporg-developer' ), 118 'post_type' => 'page', 119 'post_name' => 'reference', 120 'template' => 'page-under-construction.php', 121 ), 122 'bp-rest-api' => array( 123 'post_title' => __( 'BP REST API Handbook', 'bporg-developer' ), 124 'post_type' => 'bp-rest-api-handbook', 125 'post_name' => 'bp-rest-api', 126 'menu_order' => 0, 127 'post_content' => __( 'Let’s start documenting the BP REST API!', 'bporg-developer' ), 128 ), 129 ), 130 131 // Default to a static front page and assign the front and posts pages. 132 'options' => array( 133 'show_on_front' => 'page', 134 'page_on_front' => '{{landing}}', 135 ), 136 137 // Set the site title and description. 138 'theme_mods' => array( 139 'blogname' => __( 'BuddyPress Developer Resources', 'bporg-developer' ), 140 'blogdescription' => __( 'Your best buddies ever to help you code.', 'bporg-developer' ), 141 ), 142 143 // Set up nav menus 144 'nav_menus' => array( 145 // Assign a menu to the "header-nav-menu" location. 146 'header-nav-menu' => array( 147 'name' => __( 'BuddyPress.org nav', 'bporg-developer' ), 148 'items' => array( 149 'about' => array( 150 'type' => 'custom', 151 'title' => __( 'About', 'bporg-developer' ), 152 'url' => 'https://buddypress.org/about/', 153 ), 154 'plugins' => array( 155 'type' => 'custom', 156 'title' => __( 'Plugins', 'bporg-developer' ), 157 'url' => 'https://buddypress.org/plugins/', 158 ), 159 'themes' => array( 160 'type' => 'custom', 161 'title' => __( 'Themes', 'bporg-developer' ), 162 'url' => 'https://buddypress.org/themes/', 163 ), 164 'documentation' => array( 165 'type' => 'custom', 166 'title' => __( 'Documentation', 'bporg-developer' ), 167 'url' => 'https://codex.buddypress.org/', 168 ), 169 'blog' => array( 170 'type' => 'custom', 171 'title' => __( 'Blog', 'bporg-developer' ), 172 'url' => 'https://buddypress.org/blog/', 173 ), 174 'download' => array( 175 'type' => 'custom', 176 'title' => __( 'Download', 'bporg-developer' ), 177 'url' => 'https://buddypress.org/download/', 178 ), 179 ), 180 ), 181 182 // Assign a menu to the "devhub-menu" location. 183 'devhub-menu' => array( 184 'name' => __( 'DevHub menu', 'bporg-developer' ), 185 'items' => array( 186 'link_home' => array( 187 'title' => __( 'All Developer Resources', 'bporg-developer' ), 188 ), 189 ), 190 ), 191 192 // Assign a menu to the "reference-home-api" location. 193 'reference-home-api' => array( 194 'name' => __( 'BuddyPress API', 'bporg-developer' ), 195 'items' => array( 196 'bp-attachment' => array( 197 'type' => 'custom', 198 'title' => __( 'BP Attachment API', 'bporg-developer' ), 199 'url' => 'https://codex.buddypress.org/plugindev/bp_attachment/', 200 ), 201 'bp-theme-compat' => array( 202 'type' => 'custom', 203 'title' => __( 'BP Theme Compat API', 'bporg-developer' ), 204 'url' => 'https://codex.buddypress.org/plugindev/how-to-enjoy-bp-theme-compat-in-plugins/', 205 ), 206 'bp-component' => array( 207 'type' => 'custom', 208 'title' => __( 'BP Component API', 'bporg-developer' ), 209 'url' => 'https://codex.buddypress.org/developer/bp_component/', 210 ), 211 'bp-user-query' => array( 212 'type' => 'custom', 213 'title' => __( 'BP User Query API', 'bporg-developer' ), 214 'url' => 'https://codex.buddypress.org/developer/bp_user_query/', 215 ), 216 'bp-member-types' => array( 217 'type' => 'custom', 218 'title' => __( 'Member Types API', 'bporg-developer' ), 219 'url' => 'https://codex.buddypress.org/developer/member-types/', 220 ), 221 'bp-group-types' => array( 222 'type' => 'custom', 223 'title' => __( 'Group Types API', 'bporg-developer' ), 224 'url' => 'https://codex.buddypress.org/developer/group-types/', 225 ), 226 'bp-nav' => array( 227 'type' => 'custom', 228 'title' => __( 'BP Nav API', 'bporg-developer' ), 229 'url' => 'https://codex.buddypress.org/developer/navigation-api/', 230 ), 231 'bp-group-extension' => array( 232 'type' => 'custom', 233 'title' => __( 'Group Extension API', 'bporg-developer' ), 234 'url' => 'https://codex.buddypress.org/developer/group-extension-api/', 235 ), 236 ), 237 ), 238 ), 239 ) ); 67 register_nav_menu( 'header-nav-menu', 'Main nav bar' ); 68 69 add_theme_support( 'title-tag' ); 70 71 add_theme_support( 'starter-content', array( 72 'widgets' => array( 73 // Place the BP REST API Chapters accordeon. 74 'bp-rest-api-handbook' => array( 75 'bp-rest-api-chapters' => array( 76 'handbook_pages', 77 array( 78 'title' => __( 'Chapters', 'bporg-developer' ), 79 ), 80 ), 81 ), 82 // Place a link to the codex. 83 'landing-footer-1' => array( 84 'more-resources' => array( 85 'text', 86 array( 87 'title' => __( 'More resources', 'bporg-developer' ), 88 'text' => sprintf( '<a href="https://codex.buddypress.org/">%s</a>', __( 'BuddyPress Codex', 'bporg-developer' ) ), 89 'filter' => true, 90 'visual' => true, 91 ), 92 ), 93 ), 94 // Place a link to the support forums. 95 'landing-footer-2' => array( 96 'more-resources' => array( 97 'text', 98 array( 99 'title' => __( 'Need help?', 'bporg-developer' ), 100 'text' => sprintf( '<a href="https://buddypress.org/support/">%s</a>', __( 'BuddyPress support forums', 'bporg-developer' ) ), 101 'filter' => true, 102 'visual' => true, 103 ), 104 ), 105 ), 106 ), 107 // Create initial pages. 108 'posts' => array( 109 'landing' => array( 110 'post_title' => __( 'Home', 'bporg-developer' ), 111 'post_type' => 'page', 112 'post_name' => 'landing', 113 'template' => 'page-home-landing.php', 114 ), 115 'reference' => array( 116 'post_title' => __( 'Reference', 'bporg-developer' ), 117 'post_type' => 'page', 118 'post_name' => 'reference', 119 'template' => 'page-under-construction.php', 120 ), 121 'bp-rest-api' => array( 122 'post_title' => __( 'BP REST API Handbook', 'bporg-developer' ), 123 'post_type' => 'bp-rest-api-handbook', 124 'post_name' => 'bp-rest-api', 125 'menu_order' => 0, 126 'post_content' => __( 'Let’s start documenting the BP REST API!', 'bporg-developer' ), 127 ), 128 ), 129 // Default to a static front page and assign the front and posts pages. 130 'options' => array( 131 'show_on_front' => 'page', 132 'page_on_front' => '{{landing}}', 133 ), 134 // Set the site title and description. 135 'theme_mods' => array( 136 'blogname' => __( 'BuddyPress Developer Resources', 'bporg-developer' ), 137 'blogdescription' => __( 'Your best buddies ever to help you code.', 'bporg-developer' ), 138 ), 139 // Set up nav menus 140 'nav_menus' => array( 141 // Assign a menu to the "header-nav-menu" location. 142 'header-nav-menu' => array( 143 'name' => __( 'BuddyPress.org nav', 'bporg-developer' ), 144 'items' => array( 145 'about' => array( 146 'type' => 'custom', 147 'title' => __( 'About', 'bporg-developer' ), 148 'url' => 'https://buddypress.org/about/', 149 ), 150 'plugins' => array( 151 'type' => 'custom', 152 'title' => __( 'Plugins', 'bporg-developer' ), 153 'url' => 'https://buddypress.org/plugins/', 154 ), 155 'themes' => array( 156 'type' => 'custom', 157 'title' => __( 'Themes', 'bporg-developer' ), 158 'url' => 'https://buddypress.org/themes/', 159 ), 160 'documentation' => array( 161 'type' => 'custom', 162 'title' => __( 'Documentation', 'bporg-developer' ), 163 'url' => 'https://codex.buddypress.org/', 164 ), 165 'blog' => array( 166 'type' => 'custom', 167 'title' => __( 'Blog', 'bporg-developer' ), 168 'url' => 'https://buddypress.org/blog/', 169 ), 170 'download' => array( 171 'type' => 'custom', 172 'title' => __( 'Download', 'bporg-developer' ), 173 'url' => 'https://buddypress.org/download/', 174 ), 175 ), 176 ), 177 // Assign a menu to the "devhub-menu" location. 178 'devhub-menu' => array( 179 'name' => __( 'DevHub menu', 'bporg-developer' ), 180 'items' => array( 181 'link_home' => array( 182 'title' => __( 'All Developer Resources', 'bporg-developer' ), 183 ), 184 ), 185 ), 186 // Assign a menu to the "reference-home-api" location. 187 'reference-home-api' => array( 188 'name' => __( 'BuddyPress API', 'bporg-developer' ), 189 'items' => array( 190 'bp-attachment' => array( 191 'type' => 'custom', 192 'title' => __( 'BP Attachment API', 'bporg-developer' ), 193 'url' => 'https://codex.buddypress.org/plugindev/bp_attachment/', 194 ), 195 'bp-theme-compat' => array( 196 'type' => 'custom', 197 'title' => __( 'BP Theme Compat API', 'bporg-developer' ), 198 'url' => 'https://codex.buddypress.org/plugindev/how-to-enjoy-bp-theme-compat-in-plugins/', 199 ), 200 'bp-component' => array( 201 'type' => 'custom', 202 'title' => __( 'BP Component API', 'bporg-developer' ), 203 'url' => 'https://codex.buddypress.org/developer/bp_component/', 204 ), 205 'bp-user-query' => array( 206 'type' => 'custom', 207 'title' => __( 'BP User Query API', 'bporg-developer' ), 208 'url' => 'https://codex.buddypress.org/developer/bp_user_query/', 209 ), 210 'bp-member-types' => array( 211 'type' => 'custom', 212 'title' => __( 'Member Types API', 'bporg-developer' ), 213 'url' => 'https://codex.buddypress.org/developer/member-types/', 214 ), 215 'bp-group-types' => array( 216 'type' => 'custom', 217 'title' => __( 'Group Types API', 'bporg-developer' ), 218 'url' => 'https://codex.buddypress.org/developer/group-types/', 219 ), 220 'bp-nav' => array( 221 'type' => 'custom', 222 'title' => __( 'BP Nav API', 'bporg-developer' ), 223 'url' => 'https://codex.buddypress.org/developer/navigation-api/', 224 ), 225 'bp-group-extension' => array( 226 'type' => 'custom', 227 'title' => __( 'Group Extension API', 'bporg-developer' ), 228 'url' => 'https://codex.buddypress.org/developer/group-extension-api/', 229 ), 230 ), 231 ), 232 ), 233 ) ); 240 234 } 241 235 add_action( 'after_setup_theme', __NAMESPACE__ . '\\bporg_developer_starter_content' ); … … 247 241 */ 248 242 function bporg_developer_version_setting_callback() { 249 250 251 252 243 printf( 244 '<input type="text" id="_bp_get_stable_version" name="_bp_get_stable_version" value="%s" class="regular-text ltr" />', 245 esc_attr( get_option( '_bp_get_stable_version', '' ) ) 246 ); 253 247 } 254 248 … … 259 253 */ 260 254 function bporg_developer_version_setting() { 261 262 263 264 265 266 267 268 255 register_setting( 'general', '_bp_get_stable_version', 'esc_attr' ); 256 257 add_settings_field( 258 '_bp_get_stable_version', 259 sprintf( '<label for="_bp_get_stable_version">%s</label>', esc_html__( 'BuddyPress latest stable version', 'bporg-developer' ) ), 260 __NAMESPACE__ . '\\bporg_developer_version_setting_callback', 261 'general' 262 ); 269 263 } 270 264 add_action( 'admin_init', __NAMESPACE__ . '\\bporg_developer_version_setting' ); … … 278 272 */ 279 273 function bporg_developer_get_site_section_url() { 280 $parts = explode( '/', $GLOBALS['wp']->request );281 switch ( $parts[0] ) {282 283 284 285 286 return home_url( '/' . $parts[0] . '/' );287 288 return apply_filters( 'bporg_developer_get_site_section_url', home_url( '/' ), $parts[0] );289 274 $parts = explode( '/', $GLOBALS[ 'wp' ]->request ); 275 switch ( $parts[ 0 ] ) { 276 case 'reference': 277 case 'plugins': 278 case 'themes': 279 case 'bp-rest-api': 280 return home_url( '/' . $parts[ 0 ] . '/' ); 281 default: 282 return apply_filters( 'bporg_developer_get_site_section_url', home_url( '/' ), $parts[ 0 ] ); 283 } 290 284 } 291 285 … … 298 292 */ 299 293 function bporg_developer_get_site_section_title() { 300 $parts = explode( '/', $GLOBALS['wp']->request );301 302 switch ( $parts[0] ) {303 304 305 306 307 return__( 'Code Reference', 'bporg-developer' );308 309 310 311 312 313 314 315 316 294 $parts = explode( '/', $GLOBALS[ 'wp' ]->request ); 295 296 switch ( $parts[ 0 ] ) { 297 case 'resources': 298 case 'resource': 299 return sprintf( __( 'Developer Resources: %s', 'bporg-developer' ), get_the_title() ); 300 case 'reference': 301 return __( 'Code Reference', 'bporg-developer' ); 302 case 'plugins': 303 return __( 'Plugin Handbook', 'bporg-developer' ); 304 case 'themes': 305 return __( 'Theme Handbook', 'bporg-developer' ); 306 case 'bp-rest-api': 307 return __( 'BP REST API Handbook', 'bporg-developer' ); 308 default: 309 return apply_filters( 'bporg_developer_get_site_section_title', __( 'Developer Resources', 'bporg-developer' ) ); 310 } 317 311 } 318 312 … … 330 324 */ 331 325 function bporg_developer_get_current_version( $prefix = 'tags/', $ignore_unstable = true ) { 332 $version= 'trunk';333 334 335 336 337 338 339 340 341 342 343 344 345 if ( !$ignore_unstable ) {346 347 348 349 350 351 352 353 354 355 356 357 326 $version = 'trunk'; 327 $bp_version = ''; 328 329 // BuddyPress might be active. 330 if ( function_exists( 'bp_get_version' ) ) { 331 $bp_version = bp_get_version(); 332 } 333 334 // Try to get the option value. 335 $bp_version = get_option( '_bp_get_stable_version', $bp_version ); 336 337 if ( $bp_version ) { 338 if ( false !== strpos( $bp_version, '-' ) ) { 339 if ( !$ignore_unstable ) { 340 list( $bp_version, $dev_version ) = explode( '-', $bp_version, 2 ); 341 } else { 342 $bp_version = ''; 343 } 344 } 345 346 if ( $bp_version ) { 347 $version = $prefix . $bp_version; 348 } 349 } 350 351 return $version; 358 352 } 359 353 … … 367 361 */ 368 362 function bporg_developer_source_file_link( $post_id = null, $line_number = true ) { 369 363 echo esc_url( bporg_developer_get_source_file_link( $post_id, $line_number ) ); 370 364 } 371 365 … … 382 376 function bporg_developer_get_source_file_link( $post_id = null, $line_number = true ) { 383 377 384 385 $url= '';386 387 388 389 if ( !empty( $source_file ) ) {390 391 $url= 'https://buddypress.trac.wordpress.org/browser/' . $bp_version . '/src/' . $source_file;392 393 394 395 396 397 398 378 $post_id = empty( $post_id ) ? get_the_ID() : $post_id; 379 $url = ''; 380 381 // Source file. 382 $source_file = get_source_file( $post_id ); 383 if ( !empty( $source_file ) ) { 384 $bp_version = bporg_developer_get_current_version( 'tags/' ); 385 $url = 'https://buddypress.trac.wordpress.org/browser/' . $bp_version . '/src/' . $source_file; 386 // Line number. 387 if ( $line_number = get_post_meta( get_the_ID(), '_wp-parser_line_num', true ) ) { 388 $url .= "#L{$line_number}"; 389 } 390 } 391 392 return $url; 399 393 } 400 394 … … 414 408 */ 415 409 function bporg_developer_get_current_version_term( $ignore_minor = true ) { 416 $current_version = bporg_developer_get_current_version( '' ); 417 418 if ( $ignore_minor ) { 419 $version_parts = explode( '.', $current_version, 3 ); 420 if ( count( $version_parts ) == 2 ) { 421 $version_parts[] = '0'; 422 } else { 423 $version_parts[2] = '0'; 424 } 425 $current_version = implode( '-', $version_parts ); 426 } 427 428 $version = get_terms( 'wp-parser-since', array( 429 'number' => '1', 430 'order' => 'DESC', 431 'slug' => $current_version, 432 ) ); 433 434 return is_wp_error( $version ) ? $version : reset( $version ); 435 } 436 437 if ( ! function_exists( 'wp_body_open' ) ) : 410 $current_version = bporg_developer_get_current_version( '' ); 411 412 if ( $ignore_minor ) { 413 $version_parts = explode( '.', $current_version, 3 ); 414 415 if ( count( $version_parts ) === 2 ) { 416 $version_parts[] = '0'; 417 } else { 418 $version_parts[ 2 ] = '0'; 419 } 420 421 $current_version = implode( '-', $version_parts ); 422 } 423 424 $version = get_terms( 'wp-parser-since', array( 425 'number' => '1', 426 'order' => 'DESC', 427 'slug' => $current_version, 428 ) ); 429 430 return is_wp_error( $version ) ? $version : reset( $version ); 431 } 432 433 if ( !function_exists( 'wp_body_open' ) ) : 438 434 /** 439 435 * Fire the wp_body_open action. -
sites/trunk/buddypress.org/public_html/wp-content/themes/buddypress-org/functions.php
r1644 r9133 1 1 <?php 2 3 /**4 * Redirect away from the login page if you're already logged in5 */6 function bb_theme_login_redirect() {7 if ( is_user_logged_in() && is_page( 'login' ) ) {8 wp_safe_redirect( 'https://buddypress.org/support/' );9 exit();10 }11 }12 add_action( 'bbp_template_redirect', 'bb_theme_login_redirect', 11 );
Note: See TracChangeset
for help on using the changeset viewer.