Changeset 11450
- Timestamp:
- 05/24/2009 11:47:49 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 54 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/admin-ajax.php
r11427 r11450 1065 1065 1066 1066 $data = &$_POST; 1067 1067 1068 1068 $post = get_post( $post_ID, ARRAY_A ); 1069 1069 $post = add_magic_quotes($post); //since it is from db 1070 1070 1071 1071 $data['content'] = $post['post_content']; 1072 1072 $data['excerpt'] = $post['post_excerpt']; … … 1324 1324 die(); 1325 1325 } 1326 1326 1327 1327 die('1'); 1328 1328 break; -
trunk/wp-admin/cache-manifest.php
r11449 r11450 25 25 header( 'Cache-Control: no-cache, must-revalidate, max-age=0' ); 26 26 header( 'Pragma: no-cache' ); 27 header( 'Content-Type: text/cache-manifest; charset=UTF-8' ); 27 header( 'Content-Type: text/cache-manifest; charset=UTF-8' ); 28 28 ?> 29 29 CACHE MANIFEST -
trunk/wp-admin/css/widgets.css
r11445 r11450 194 194 } 195 195 196 .widget-inside, 196 .widget-inside, 197 197 .widget-description { 198 198 display: none; -
trunk/wp-admin/import/dotclear.php
r11278 r11450 51 51 /** 52 52 * Convert from dotclear charset to utf8 if required 53 * 53 * 54 54 * @package WordPress 55 55 * @subpackage Dotclear_Import -
trunk/wp-admin/includes/class-wp-upgrader.php
r11383 r11450 35 35 $this->skin = $skin; 36 36 } 37 37 38 38 function init() { 39 39 $this->skin->set_upgrader($this); … … 522 522 523 523 function install($package) { 524 524 525 525 $this->init(); 526 526 $this->install_strings(); … … 787 787 788 788 /** 789 * Plugin Upgrader Skin for WordPress Plugin Upgrades. 789 * Plugin Upgrader Skin for WordPress Plugin Upgrades. 790 790 * 791 791 * @TODO More Detailed docs, for methods as well. … … 836 836 837 837 /** 838 * Plugin Installer Skin for WordPress Plugin Installer. 838 * Plugin Installer Skin for WordPress Plugin Installer. 839 839 * 840 840 * @TODO More Detailed docs, for methods as well. … … 891 891 892 892 /** 893 * Theme Installer Skin for the WordPress Theme Installer. 893 * Theme Installer Skin for the WordPress Theme Installer. 894 894 * 895 895 * @TODO More Detailed docs, for methods as well. … … 956 956 957 957 /** 958 * Theme Upgrader Skin for WordPress Theme Upgrades. 958 * Theme Upgrader Skin for WordPress Theme Upgrades. 959 959 * 960 960 * @TODO More Detailed docs, for methods as well. -
trunk/wp-admin/includes/dashboard.php
r11383 r11450 318 318 echo "\n\t".'<div class="versions">'; 319 319 $ct = current_theme_info(); 320 320 321 321 echo "\n\t<p>"; 322 322 if ( !empty($wp_registered_sidebars) ) { -
trunk/wp-admin/includes/file.php
r11312 r11450 72 72 $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */ 73 73 $pos = strpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home); 74 $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos); 74 $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos); 75 75 $home_path = trailingslashit( $home_path ); 76 76 } else { … … 688 688 $credentials['connection_type'] = 'ftp'; 689 689 690 if ( ! $error && 690 if ( ! $error && 691 691 ( 692 692 ( !empty($credentials['password']) && !empty($credentials['username']) && !empty($credentials['hostname']) ) || -
trunk/wp-admin/includes/media.php
r11383 r11450 195 195 if ( isset($file['error']) ) 196 196 return new WP_Error( 'upload_error', $file['error'] ); 197 197 198 198 $name_parts = pathinfo($name); 199 199 $name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) ); … … 328 328 $args = array_slice($args, 1); 329 329 call_user_func_array($content_func, $args); 330 330 331 331 do_action('admin_print_footer_scripts'); 332 332 ?> -
trunk/wp-admin/includes/misc.php
r11350 r11450 139 139 * Updates the IIS web.config file with the current rules if it is writable. 140 140 * If the permalinks do not require rewrite rules then the rules are deleted from the web.config file. 141 * 141 * 142 142 * @since 2.8.0 143 * 143 * 144 144 * @return bool True if web.config was updated successfully 145 145 */ 146 146 function iis7_save_url_rewrite_rules(){ 147 147 global $wp_rewrite; 148 148 149 149 $home_path = get_home_path(); 150 150 $web_config_file = $home_path . 'web.config'; 151 151 152 // Using win_is_writable() instead of is_writable() because of a bug in Windows PHP 152 // Using win_is_writable() instead of is_writable() because of a bug in Windows PHP 153 153 if ( ( ! file_exists($web_config_file) && win_is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks() ) || win_is_writable($web_config_file) ) { 154 154 if ( iis7_supports_permalinks() ) { … … 402 402 /** 403 403 * Check if IIS 7 supports pretty permalinks 404 * 404 * 405 405 * @since 2.8.0 406 * 406 * 407 407 * @return bool 408 408 */ … … 410 410 global $is_iis7; 411 411 412 $supports_permalinks = false; 412 $supports_permalinks = false; 413 413 if ( $is_iis7 ) { 414 414 /* First we check if the DOMDocument class exists. If it does not exist, … … 419 419 * Next we check if the URL Rewrite Module 1.1 is loaded and enabled for the web site. When 420 420 * URL Rewrite 1.1 is loaded it always sets a server variable called 'IIS_UrlRewriteModule'. 421 * Lastly we make sure that PHP is running via FastCGI. This is important because if it runs 421 * Lastly we make sure that PHP is running via FastCGI. This is important because if it runs 422 422 * via ISAPI then pretty permalinks will not work. 423 423 */ 424 424 $supports_permalinks = class_exists('DOMDocument') && isset($_SERVER['IIS_UrlRewriteModule']) && ( php_sapi_name() == 'cgi-fcgi' ); 425 425 } 426 426 427 427 return apply_filters('iis7_supports_permalinks', $supports_permalinks); 428 428 } … … 430 430 /** 431 431 * Check if rewrite rule for WordPress already exists in the IIS 7 configuration file 432 * 432 * 433 433 * @since 2.8.0 434 * 434 * 435 435 * @return bool 436 436 * @param string $filename The file path to the configuration file 437 437 */ 438 function iis7_rewrite_rule_exists($filename) { 438 function iis7_rewrite_rule_exists($filename) { 439 439 if ( ! file_exists($filename) ) 440 return false; 440 return false; 441 441 if ( ! class_exists('DOMDocument') ) 442 442 return false; 443 443 444 444 $doc = new DOMDocument(); 445 445 if ( $doc->load($filename) === false ) … … 450 450 return false; 451 451 else 452 return true; 452 return true; 453 453 } 454 454 … … 456 456 * Delete WordPress rewrite rule from web.config file if it exists there 457 457 * 458 * @since 2.8.0 458 * @since 2.8.0 459 459 * 460 460 * @param string $filename Name of the configuration file 461 461 * @return bool 462 462 */ 463 function iis7_delete_rewrite_rule($filename) { 463 function iis7_delete_rewrite_rule($filename) { 464 464 // If configuration file does not exist then rules also do not exist so there is nothing to delete 465 465 if ( ! file_exists($filename) ) 466 466 return true; 467 467 468 468 if ( ! class_exists('DOMDocument') ) 469 469 return false; 470 470 471 471 $doc = new DOMDocument(); 472 472 $doc->preserveWhiteSpace = false; … … 488 488 /** 489 489 * Add WordPress rewrite rule to the IIS 7 configuration file. 490 * 490 * 491 491 * @since 2.8.0 492 * 492 * 493 493 * @param string $filename The file path to the configuration file 494 494 * @param string $rewrite_rule The XML fragment with URL Rewrite rule 495 495 * @return bool 496 496 */ 497 function iis7_add_rewrite_rule($filename, $rewrite_rule) { 497 function iis7_add_rewrite_rule($filename, $rewrite_rule) { 498 498 if ( ! class_exists('DOMDocument') ) 499 499 return false; 500 500 501 501 // If configuration file does not exist then we create one. 502 502 if ( ! file_exists($filename) ) { … … 505 505 fclose($fp); 506 506 } 507 507 508 508 $doc = new DOMDocument(); 509 509 $doc->preserveWhiteSpace = false; … … 511 511 if ( $doc->load($filename) === false ) 512 512 return false; 513 513 514 514 $xpath = new DOMXPath($doc); 515 515 … … 525 525 } else { 526 526 $rules_node = $doc->createElement('rules'); 527 527 528 528 $xmlnodes = $xpath->query('/configuration/system.webServer/rewrite'); 529 529 if ( $xmlnodes->length > 0 ) { … … 541 541 $system_webServer_node = $doc->createElement('system.webServer'); 542 542 $system_webServer_node->appendChild($rewrite_node); 543 543 544 544 $xmlnodes = $xpath->query('/configuration'); 545 545 if ( $xmlnodes->length > 0 ) { … … 554 554 } 555 555 } 556 556 557 557 $rule_fragment = $doc->createDocumentFragment(); 558 558 $rule_fragment->appendXML($rewrite_rule); 559 559 $rules_node->appendChild($rule_fragment); 560 560 561 $doc->formatOutput = true; 561 $doc->formatOutput = true; 562 562 saveDomDocument($doc, $filename); 563 563 564 return true; 564 return true; 565 565 } 566 566 567 567 /** 568 568 * Saves the XML document into a file 569 * 569 * 570 570 * @since 2.8.0 571 571 * -
trunk/wp-admin/includes/plugin.php
r11207 r11450 469 469 470 470 // Force refresh of plugin update information 471 if ( $current = get_transient('update_plugins') ) { 471 if ( $current = get_transient('update_plugins') ) { 472 472 unset( $current->response[ $plugin_file ] ); 473 473 set_transient('update_plugins', $current); … … 599 599 $icon_url = 'images/generic.png'; 600 600 elseif ( is_ssl() && 0 === strpos($icon_url, 'http://') ) 601 $icon_url = 'https://' . substr($icon_url, 7); 601 $icon_url = 'https://' . substr($icon_url, 7); 602 602 603 603 $menu[] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url ); … … 641 641 $icon_url = 'images/generic.png'; 642 642 elseif ( is_ssl() && 0 === strpos($icon_url, 'http://') ) 643 $icon_url = 'https://' . substr($icon_url, 7); 643 $icon_url = 'https://' . substr($icon_url, 7); 644 644 645 645 $_wp_last_utility_menu++; -
trunk/wp-admin/includes/post.php
r11437 r11450 928 928 } 929 929 930 $post->post_name = wp_unique_post_slug($post->post_name, $post->ID, $post->post_status, $post->post_type, $post->post_parent); 930 $post->post_name = wp_unique_post_slug($post->post_name, $post->ID, $post->post_status, $post->post_type, $post->post_parent); 931 931 932 932 // If the user wants to set a new name -- override the current one … … 1340 1340 $language = $initArray['language']; 1341 1341 $zip = $compress_scripts ? 1 : 0; 1342 1342 1343 1343 /** 1344 1344 * Deprecated 1345 * 1345 * 1346 1346 * The tiny_mce_version filter is not needed since external plugins are loaded directly by TinyMCE. 1347 1347 * These plugins can be refreshed by appending query string to the URL passed to mce_external_plugins filter. 1348 * If the plugin has a popup dialog, a query string can be added to the button action that opens it (in the plugin's code). 1348 * If the plugin has a popup dialog, a query string can be added to the button action that opens it (in the plugin's code). 1349 1349 */ 1350 1350 $version = apply_filters('tiny_mce_version', ''); -
trunk/wp-admin/includes/schema.php
r11318 r11450 304 304 'widget_text' => array(), 305 305 'widget_rss' => array(), 306 306 307 307 // 2.8 308 308 'timezone_string' => '' -
trunk/wp-admin/includes/template.php
r11445 r11450 22 22 */ 23 23 function cat_rows( $parent = 0, $level = 0, $categories = 0, $page = 1, $per_page = 20 ) { 24 24 25 25 $count = 0; 26 26 27 27 if ( empty($categories) ) { 28 28 29 29 $args = array('hide_empty' => 0); 30 30 if ( !empty($_GET['s']) ) 31 31 $args['search'] = $_GET['s']; 32 33 $categories = get_categories( $args ); 34 32 33 $categories = get_categories( $args ); 34 35 35 if ( empty($categories) ) 36 36 return false; 37 37 } 38 38 39 $children = _get_term_hierarchy('category'); 40 41 _cat_rows( $parent, $level, $categories, $children, $page, $per_page, $count ); 42 39 $children = _get_term_hierarchy('category'); 40 41 _cat_rows( $parent, $level, $categories, $children, $page, $per_page, $count ); 42 43 43 } 44 44 … … 56 56 * @return unknown 57 57 */ 58 function _cat_rows( $parent = 0, $level = 0, $categories, &$children, $page = 1, $per_page = 20, &$count ) { 59 58 function _cat_rows( $parent = 0, $level = 0, $categories, &$children, $page = 1, $per_page = 20, &$count ) { 59 60 60 $start = ($page - 1) * $per_page; 61 61 $end = $start + $per_page; 62 62 ob_start(); 63 63 64 64 foreach ( $categories as $key => $category ) { 65 65 if ( $count >= $end ) 66 66 break; 67 67 68 68 if ( $category->parent != $parent && empty($_GET['s']) ) 69 69 continue; … … 71 71 // If the page starts in a subtree, print the parents. 72 72 if ( $count == $start && $category->parent > 0 ) { 73 73 74 74 $my_parents = array(); 75 75 $p = $category->parent; … … 81 81 $p = $my_parent->parent; 82 82 } 83 83 84 84 $num_parents = count($my_parents); 85 85 while( $my_parent = array_pop($my_parents) ) { … … 92 92 echo "\t" . _cat_row( $category, $level ); 93 93 94 unset( $categories[ $key ] ); 95 94 unset( $categories[ $key ] ); 95 96 96 $count++; 97 97 98 98 if ( isset($children[$category->term_id]) ) 99 _cat_rows( $category->term_id, $level + 1, $categories, $children, $page, $per_page, $count ); 99 _cat_rows( $category->term_id, $level + 1, $categories, $children, $page, $per_page, $count ); 100 100 } 101 101 … … 518 518 // Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache) 519 519 $checked_categories = array(); 520 $keys = array_keys( $categories ); 521 520 $keys = array_keys( $categories ); 521 522 522 foreach( $keys as $k ) { 523 523 if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) { 524 524 $checked_categories[] = $categories[$k]; 525 525 unset( $categories[$k] ); 526 } 526 } 527 527 } 528 528 … … 3599 3599 return ''; 3600 3600 } 3601 3601 3602 3602 $screen_layout_columns = get_user_option("screen_layout_$screen"); 3603 3603 $num = $columns[$screen]; -
trunk/wp-admin/includes/update.php
r11391 r11450 155 155 $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array()); 156 156 $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags ); 157 157 158 158 $details_url = admin_url('plugin-install.php?tab=plugin-information&plugin=' . $r->slug . '&TB_iframe=true&width=600&height=800'); 159 159 … … 165 165 else 166 166 printf( __('There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%3$s">View version %4$s Details</a> or <a href="%5$s">upgrade automatically</a>.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version, wp_nonce_url('update.php?action=upgrade-plugin&plugin=' . $file, 'upgrade-plugin_' . $file) ); 167 167 168 168 do_action( "in_plugin_update_message-$file", $plugin_data, $r ); 169 169 170 170 echo '</div></td></tr>'; 171 171 } -
trunk/wp-admin/includes/user.php
r11441 r11450 180 180 181 181 // Allow plugins to return there own errors. 182 do_action_ref_array('user_profile_update_errors', array ( &$errors, $update, &$user ) ); 183 182 do_action_ref_array('user_profile_update_errors', array ( &$errors, $update, &$user ) ); 183 184 184 if ( $errors->get_error_codes() ) 185 185 return $errors; … … 804 804 805 805 //get_user_setting = JS saved UI setting. else no-js-falback code. 806 if ( 'hide' == get_user_setting('default_password_nag') || isset($_GET['default_password_nag']) && '0' == $_GET['default_password_nag'] ) { 806 if ( 'hide' == get_user_setting('default_password_nag') || isset($_GET['default_password_nag']) && '0' == $_GET['default_password_nag'] ) { 807 807 delete_user_setting('default_password_nag'); 808 808 update_usermeta($user_ID, 'default_password_nag', false); -
trunk/wp-admin/js/common.dev.js
r11437 r11450 138 138 jQuery(document).ready( function($) { 139 139 var lastClicked = false, checks, first, last, checked; 140 140 141 141 // pulse 142 142 $('.fade').animate( { backgroundColor: '#ffffe0' }, 300).animate( { backgroundColor: '#fffbcc' }, 300).animate( { backgroundColor: '#ffffe0' }, 300).animate( { backgroundColor: '#fffbcc' }, 300); -
trunk/wp-admin/js/custom-fields.dev.js
r10326 r11450 1 1 jQuery(document).ready( function($) { 2 2 var before, addBefore, addAfter, delBefore; 3 3 4 4 before = function() { 5 5 var nonce = $('#newmeta [name=_ajax_nonce]').val(), postId = $('#post_ID').val(); -
trunk/wp-admin/js/edit-comments.dev.js
r10531 r11450 4 4 setCommentsList = function() { 5 5 var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter; 6 6 7 7 totalInput = $('#comments-form .tablenav :input[name="_total"]'); 8 8 perPageInput = $('#comments-form .tablenav :input[name="_per_page"]'); … … 102 102 }); 103 103 104 104 105 105 // XML response 106 106 if ( ( 'object' == typeof r ) && lastConfidentTime < settings.parsed.responses[0].supplemental.time ) { … … 157 157 commentReply.close(); 158 158 }); 159 159 160 160 this.comments_listing = $('#comments-form > input[name="comment_status"]').val() || ''; 161 161 … … 251 251 setTimeout(function() { 252 252 var rtop, rbottom, scrollTop, vp, scrollBottom; 253 253 254 254 rtop = $('#replyrow').offset().top; 255 255 rbottom = rtop + $('#replyrow').height(); … … 317 317 $(c).hide() 318 318 $('#replyrow').after(c); 319 319 320 320 this.o = id = '#comment-'+r.id; 321 321 this.revert(); … … 358 358 return function() { 359 359 var first_last, l; 360 360 361 361 first_last = 'next' == which? 'first' : 'last'; 362 362 l = $('.'+which+'.page-numbers'); -
trunk/wp-admin/js/inline-edit-post.dev.js
r10444 r11450 193 193 save : function(id) { 194 194 var params, fields; 195 195 196 196 if( typeof(id) == 'object' ) 197 197 id = this.getId(id); -
trunk/wp-admin/js/inline-edit-tax.dev.js
r10557 r11450 65 65 save : function(id) { 66 66 var params, fields, tax = $('input[name="taxonomy"]').val() || ''; 67 67 68 68 if( typeof(id) == 'object' ) 69 69 id = this.getId(id); -
trunk/wp-admin/js/media-upload.dev.js
r10366 r11450 2 2 function send_to_editor(h) { 3 3 var ed; 4 4 5 5 if ( typeof tinyMCE != 'undefined' && ( ed = tinyMCE.activeEditor ) && !ed.isHidden() ) { 6 6 ed.focus(); -
trunk/wp-admin/js/page.dev.js
r10348 r11450 23 23 function updateText() { 24 24 var attemptedDate, originalDate, currentDate, publishOn; 25 25 26 26 attemptedDate = new Date( $('#aa').val(), $('#mm').val() -1, $('#jj').val(), $('#hh').val(), $('#mn').val()); 27 27 originalDate = new Date( $('#hidden_aa').val(), $('#hidden_mm').val() -1, $('#hidden_jj').val(), $('#hidden_hh').val(), $('#hidden_mn').val()); -
trunk/wp-admin/js/post.dev.js
r11224 r11450 37 37 jQuery.each( current_tags, function( key, val ) { 38 38 var txt, button_id; 39 39 40 40 val = jQuery.trim(val); 41 41 if ( !val.match(/^\s+$/) && '' != val ) { … … 53 53 a = a || false; 54 54 var taxbox, text, tags, newtags; 55 55 56 56 taxbox = jQuery('#'+id); 57 57 text = a ? jQuery(a).text() : taxbox.find('input.newtag').val(); … … 69 69 taxbox.find('.the-tags').val(newtags); 70 70 tag_update_quickclicks(taxbox); 71 71 72 72 if ( ! a ) 73 73 taxbox.find('input.newtag').val('').focus(); … … 318 318 function updateText() { 319 319 var attemptedDate, originalDate, currentDate, publishOn; 320 320 321 321 attemptedDate = new Date( $('#aa').val(), $('#mm').val() -1, $('#jj').val(), $('#hh').val(), $('#mn').val()); 322 322 originalDate = new Date( $('#hidden_aa').val(), $('#hidden_mm').val() -1, $('#hidden_jj').val(), $('#hidden_hh').val(), $('#hidden_mn').val()); -
trunk/wp-admin/js/tags.dev.js
r10557 r11450 19 19 options[o] = null; 20 20 } 21 21 22 22 delBefore = function(s) { 23 23 s.data.taxonomy = $('input[name="taxonomy"]').val(); -
trunk/wp-admin/js/theme-preview.dev.js
r10823 r11450 24 24 var alink = $(this).parents('.available-theme').find('.activatelink'), link = '', href = $(this).attr('href'), url, text; 25 25 26 if ( tbWidth = href.match(/&tbWidth=[0-9]+/) ) 26 if ( tbWidth = href.match(/&tbWidth=[0-9]+/) ) 27 27 tbWidth = parseInt(tbWidth[0].replace(/[^0-9]+/g, ''), 10); 28 28 else 29 29 tbWidth = $(window).width() - 90; 30 30 31 if ( tbHeight = href.match(/&tbHeight=[0-9]+/) ) 31 if ( tbHeight = href.match(/&tbHeight=[0-9]+/) ) 32 32 tbHeight = parseInt(tbHeight[0].replace(/[^0-9]+/g, ''), 10); 33 33 else -
trunk/wp-admin/js/utils.dev.js
r10348 r11450 135 135 if ( 'object' !== typeof userSettings ) 136 136 return false; 137 137 138 138 var c = 'wp-settings-' + userSettings.uid, o = wpCookies.getHash(c) || {}, d = new Date(), p, 139 139 n = name.toString().replace(/[^A-Za-z0-9_]/, ''), v = value.toString().replace(/[^A-Za-z0-9_]/, ''); … … 150 150 wpCookies.setHash(c, o, d, p); 151 151 wpCookies.set('wp-settings-time-'+userSettings.uid, userSettings.time, d, p); 152 152 153 153 return name; 154 154 } -
trunk/wp-admin/link-manager.php
r11380 r11450 234 234 ?><td <?php echo $attributes ?>><?php echo $visible; ?></td><?php 235 235 break; 236 case 'rating': 237 ?><td <?php echo $attributes ?>><?php echo $rating; ?></td><?php 238 break; 236 case 'rating': 237 ?><td <?php echo $attributes ?>><?php echo $rating; ?></td><?php 238 break; 239 239 default: 240 240 ?> -
trunk/wp-admin/menu.php
r11204 r11450 129 129 foreach ($menu as $menu_page) { 130 130 $hook_name = sanitize_title(basename($menu_page[2], '.php')); 131 131 132 132 // ensure we're backwards compatible 133 133 $compat = array( … … 141 141 'themes' => 'appearance', 142 142 ); 143 143 144 144 if ( isset($compat[$hook_name]) ) 145 145 $hook_name = $compat[$hook_name]; 146 146 elseif ( !$hook_name ) 147 147 continue; 148 148 149 149 $admin_page_hooks[$menu_page[2]] = $hook_name; 150 150 } -
trunk/wp-admin/options-permalink.php
r11380 r11450 229 229 <p><textarea rows="10" class="large-text readonly" name="rules" id="rules" readonly="readonly"><?php echo esc_html($wp_rewrite->iis7_url_rewrite_rules()); ?></textarea></p> 230 230 </form> 231 <p><?php _e('If you temporarily make your <code>web.config</code> file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.') ?></p> 231 <p><?php _e('If you temporarily make your <code>web.config</code> file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.') ?></p> 232 232 <?php endif; ?> 233 <?php else : 233 <?php else : 234 234 if ( $permalink_structure && ! $usingpi && ! $writable ) : ?> 235 235 <p><?php _e('If your <code>.htaccess</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your <code>.htaccess</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all.') ?></p> -
trunk/wp-admin/plugin-editor.php
r11380 r11450 85 85 86 86 wp_enqueue_script( 'codepress' ); 87 add_action( 'admin_print_footer_scripts', 'codepress_footer_js' ); 88 87 add_action( 'admin_print_footer_scripts', 'codepress_footer_js' ); 88 89 89 // List of allowable extensions 90 90 $editable_extensions = array('php', 'txt', 'text', 'js', 'css', 'html', 'htm', 'xml', 'inc', 'include'); … … 102 102 } 103 103 } 104 104 105 105 require_once('admin-header.php'); 106 106 107 107 update_recently_edited(WP_PLUGIN_DIR . '/' . $file); 108 108 -
trunk/wp-admin/plugins.php
r11422 r11450 411 411 echo "</p></td> 412 412 </tr>\n"; 413 413 414 414 do_action( 'after_plugin_row', $plugin_file, $plugin_data, $context ); 415 415 do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $context ); -
trunk/wp-admin/widgets.php
r11445 r11450 70 70 } 71 71 } 72 72 73 73 // discard invalid, theme-specific widgets from sidebars 74 74 $shown_widgets = array(); … … 76 76 if ( !is_array($widgets) ) 77 77 continue; 78 78 79 79 $_widgets = array(); 80 80 foreach ( $widgets as $widget ) { … … 221 221 if ( !isset($name) ) 222 222 $name = esc_html( strip_tags($control['name']) ); 223 223 224 224 if ( !isset($sidebar) ) 225 225 $sidebar = isset($_GET['sidebar']) ? $_GET['sidebar'] : 'wp_inactive_widgets'; … … 243 243 <form action="widgets.php" method="post"> 244 244 <div class="widget-inside"> 245 <?php 245 <?php 246 246 if ( is_callable( $control_callback ) ) 247 247 call_user_func_array( $control_callback, $control['params'] ); -
trunk/wp-includes/author-template.php
r11416 r11450 81 81 82 82 /** 83 * Retrieve the requested data of the author of the current post. 84 * @link http://codex.wordpress.org/Template_Tags/the_author_meta 85 * @since 2.8.0 83 * Retrieve the requested data of the author of the current post. 84 * @link http://codex.wordpress.org/Template_Tags/the_author_meta 85 * @since 2.8.0 86 86 * @uses $authordata The current author's DB object (if $user_id not specified). 87 * @param string $field selects the field of the users record. 87 * @param string $field selects the field of the users record. 88 88 * @param int $user_id Optional. User ID. 89 * @return string The author's field from the current author's DB object. 89 * @return string The author's field from the current author's DB object. 90 90 */ 91 91 function get_the_author_meta($field = '', $user_id = false) { … … 97 97 $field = strtolower($field); 98 98 $user_field = "user_$field"; 99 99 100 100 if ( 'id' == $field ) 101 101 $value = isset($authordata->ID) ? (int)$authordata->ID : 0; … … 109 109 110 110 /** 111 * Retrieve the requested data of the author of the current post. 112 * @link http://codex.wordpress.org/Template_Tags/the_author_meta 113 * @since 2.8.0 114 * @param string $field selects the field of the users record. 111 * Retrieve the requested data of the author of the current post. 112 * @link http://codex.wordpress.org/Template_Tags/the_author_meta 113 * @since 2.8.0 114 * @param string $field selects the field of the users record. 115 115 * @param int $user_id Optional. User ID. 116 * @echo string The author's field from the current author's DB object. 116 * @echo string The author's field from the current author's DB object. 117 117 */ 118 118 function the_author_meta($field = '', $user_id = false) { -
trunk/wp-includes/category-template.php
r11428 r11450 576 576 * The 'tag_cloud_sort' filter allows you to override the sorting done 577 577 * by the 'orderby' argument; passed to the filter: $tags array and $args array. 578 * 578 * 579 579 * The 'orderby' argument will accept 'name' or 'count' and defaults to 'name'. 580 580 * The 'order' is the direction to sort, defaults to 'ASC' and can be 'DESC' or … … 624 624 625 625 $tags = apply_filters( 'tag_cloud_sort', $tags, $args ); 626 626 627 627 if ( 'DESC' == $order ) 628 628 $tags = array_reverse( $tags, true ); -
trunk/wp-includes/class.wp-dependencies.php
r11058 r11450 90 90 91 91 $moved = $this->set_group( $handle, $recursion, $group ); 92 92 93 93 if ( $queued && !$moved ) // already queued and in the right group 94 94 continue; -
trunk/wp-includes/comment.php
r11410 r11450 170 170 * 171 171 * The comment list can be for the blog as a whole or for an individual post. 172 * 172 * 173 173 * The list of comment arguments are 'status', 'orderby', 'comment_date_gmt', 174 174 * 'order', 'number', 'offset', and 'post_id'. -
trunk/wp-includes/default-widgets.php
r11432 r11450 190 190 echo $after_widget; 191 191 } 192 192 193 193 function form( $instance ) { 194 194 $instance = wp_parse_args( (array) $instance, array( 'title' => '') ); … … 198 198 <?php 199 199 } 200 200 201 201 function update( $new_instance, $old_instance ) { 202 202 $instance = $old_instance; … … 204 204 $instance['title'] = strip_tags($new_instance['title']); 205 205 return $instance; 206 } 207 206 } 207 208 208 } 209 209 -
trunk/wp-includes/deprecated.php
r11383 r11450 1673 1673 * @return int The author's ID. 1674 1674 */ 1675 function get_the_author_ID() { 1675 function get_the_author_ID() { 1676 1676 _deprecated_function(__FUNCTION__, '2.8', 'get_the_author_meta(\'ID\')' ); 1677 1677 return get_the_author_meta('ID'); … … 1686 1686 * @uses get_the_author_ID() 1687 1687 */ 1688 function the_author_ID() { 1688 function the_author_ID() { 1689 1689 _deprecated_function(__FUNCTION__, '2.8', 'the_author_meta(\'ID\')' ); 1690 1690 the_author_meta('ID'); 1691 } 1691 } 1692 1692 1693 1693 ?> -
trunk/wp-includes/formatting.php
r11435 r11450 173 173 * Checks to see if a string is utf8 encoded. 174 174 * 175 * NOTE: This function checks for 5-Byte sequences, UTF8 175 * NOTE: This function checks for 5-Byte sequences, UTF8 176 176 * has Bytes Sequences with a maximum length of 4. 177 177 * … … 185 185 $length = strlen($str); 186 186 for ($i=0; $i < $length; $i++) { 187 $c = ord($str[$i]); 187 $c = ord($str[$i]); 188 188 if ($c < 0x80) $n = 0; # 0bbbbbbb 189 189 elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb … … 257 257 $quote_style = ENT_NOQUOTES; 258 258 } 259 259 260 260 // Handle double encoding ourselves 261 261 if ( !$double_encode ) { … … 582 582 * Sanitizes a filename replacing whitespace with dashes 583 583 * 584 * Removes special characters that are illegal in filenames on certain 585 * operating systems and special characters requiring special escaping 586 * to manipulate at the command line. Replaces spaces and consecutive 584 * Removes special characters that are illegal in filenames on certain 585 * operating systems and special characters requiring special escaping 586 * to manipulate at the command line. Replaces spaces and consecutive 587 587 * dashes with a single dash. Trim period, dash and underscore from beginning 588 588 * and end of filename. … … 721 721 /** 722 722 * Santizes a html classname to ensure it only contains valid characters 723 * 723 * 724 724 * Strips the string down to A-Z,a-z,0-9,'-' if this results in an empty 725 725 * string then it will return the alternative value supplied. 726 * 726 * 727 727 * @todo Expand to support the full range of CDATA that a class attribute can contain. 728 * 728 * 729 729 * @since 2.8.0 730 * 730 * 731 731 * @param string $class The classname to be sanitized 732 732 * @param string $fallback The value to return if the sanitization end's up as an empty string. … … 736 736 //Strip out any % encoded octets 737 737 $sanitized = preg_replace('|%[a-fA-F0-9][a-fA-F0-9]|', '', $class); 738 738 739 739 //Limit to A-Z,a-z,0-9,'-' 740 740 $sanitized = preg_replace('/[^A-Za-z0-9-]/', '', $sanitized); 741 741 742 742 if ('' == $sanitized) 743 743 $sanitized = $fallback; 744 745 return apply_filters('sanitize_html_class',$sanitized, $class, $fallback); 744 745 return apply_filters('sanitize_html_class',$sanitized, $class, $fallback); 746 746 } 747 747 … … 2216 2216 * @deprecated 2.8.0 2217 2217 * @see esc_attr() 2218 * 2218 * 2219 2219 * @param string $text 2220 2220 * @return string -
trunk/wp-includes/functions.php
r11434 r11450 142 142 143 143 $num = number_format( $number, $decimals, $wp_locale->number_format['decimal_point'], $wp_locale->number_format['thousands_sep'] ); 144 144 145 145 // let the user translate digits from latin to localized language 146 146 return apply_filters( 'number_format_i18n', $num ); … … 480 480 * first is the new value and the second is the old value. Whatever is 481 481 * returned will be used as the new value. 482 * 482 * 483 483 * After the value has been updated the action named 'update_option_$option_name' 484 484 * will be called. This action receives two parameters the first being the old … … 2036 2036 $ext = !empty($info['extension']) ? $info['extension'] : ''; 2037 2037 $name = basename($filename, ".{$ext}"); 2038 2038 2039 2039 // edge case: if file is named '.ext', treat as an empty name 2040 2040 if( $name === ".$ext" ) … … 2367 2367 $defaults = array( 'response' => 500 ); 2368 2368 $r = wp_parse_args($args, $defaults); 2369 2369 2370 2370 $have_gettext = function_exists('__'); 2371 2371 … … 2391 2391 $message = "<p>$message</p>"; 2392 2392 } 2393 2393 2394 2394 if ( isset( $r['back_link'] ) && $r['back_link'] ) { 2395 2395 $back_text = $have_gettext? __('« Back') : '« Back'; 2396 2396 $message .= "\n<p><a href='javascript:history.back()'>$back_text</p>"; 2397 2397 } 2398 2398 2399 2399 if ( defined( 'WP_SITEURL' ) && '' != WP_SITEURL ) 2400 2400 $admin_dir = WP_SITEURL . '/wp-admin/'; … … 2412 2412 header( 'Content-Type: text/html; charset=utf-8' ); 2413 2413 } 2414 2414 2415 2415 if ( empty($title) ) { 2416 2416 $title = $have_gettext? __('WordPress › Error') : 'WordPress › Error'; … … 2684 2684 */ 2685 2685 function wp_ob_end_flush_all() { 2686 $levels = ob_get_level(); 2687 for ($i=0; $i<$levels; $i++) 2688 ob_end_flush(); 2686 $levels = ob_get_level(); 2687 for ($i=0; $i<$levels; $i++) 2688 ob_end_flush(); 2689 2689 } 2690 2690 … … 3165 3165 return strnatcasecmp($a_continent, $b_continent); 3166 3166 ')); 3167 3167 3168 3168 $structure = ''; 3169 3169 $pad = ' '; -
trunk/wp-includes/general-template.php
r11448 r11450 209 209 */ 210 210 function wp_lostpassword_url($redirect = '') { 211 $args = array( 'action' => 'lostpassword' ); 211 $args = array( 'action' => 'lostpassword' ); 212 212 if ( !empty($redirect) ) { 213 213 $args['redirect_to'] = $redirect; -
trunk/wp-includes/http.php
r11355 r11450 282 282 } else { 283 283 if ( is_array( $r['body'] ) || is_object( $r['body'] ) ) { 284 if ( ! version_compare(phpversion(), '5.1.2', '>=') ) 284 if ( ! version_compare(phpversion(), '5.1.2', '>=') ) 285 285 $r['body'] = _http_build_query($r['body'], null, '&'); 286 286 else -
trunk/wp-includes/link-template.php
r11426 r11450 1434 1434 * 1435 1435 * @param string|array $args Optional args. 1436 * @return string The posts link navigation. 1436 * @return string The posts link navigation. 1437 1437 */ 1438 1438 function get_posts_nav_link( $args = array() ) { 1439 1439 global $wp_query; 1440 1440 1441 1441 $return = ''; 1442 1442 1443 1443 if ( !is_singular() ) { 1444 1444 $defaults = array( 1445 'sep' => ' — ', 1446 'prelabel' => __('« Previous Page'), 1445 'sep' => ' — ', 1446 'prelabel' => __('« Previous Page'), 1447 1447 'nxtlabel' => __('Next Page »'), 1448 1448 ); -
trunk/wp-includes/media.php
r11339 r11450 611 611 function gallery_shortcode($attr) { 612 612 global $post; 613 613 614 614 static $instance = 0; 615 615 $instance++; … … 655 655 $columns = intval($columns); 656 656 $itemwidth = $columns > 0 ? floor(100/$columns) : 100; 657 657 658 658 $selector = "gallery-{$instance}"; 659 659 -
trunk/wp-includes/pluggable.php
r11387 r11450 955 955 956 956 if ( $comment->user_id == $post->post_author ) return false; // The author moderated a comment on his own post 957 957 958 958 if ('' == $user->user_email) return false; // If there's no email to send the comment to 959 959 -
trunk/wp-includes/post-template.php
r11435 r11450 312 312 313 313 $classes = array(); 314 314 315 315 $classes[] = 'post-' . $post->ID; 316 316 $classes[] = $post->post_type; -
trunk/wp-includes/post.php
r11410 r11450 1198 1198 } 1199 1199 1200 wp_clear_scheduled_hook('publish_future_post', $postid); 1201 1200 wp_clear_scheduled_hook('publish_future_post', $postid); 1201 1202 1202 do_action('deleted_post', $postid); 1203 1203 … … 1735 1735 * @param string $post_type 1736 1736 * @param integer $post_parent 1737 * @return string unique slug for the post, based on $post_name (with a -1, -2, etc. suffix) 1737 * @return string unique slug for the post, based on $post_name (with a -1, -2, etc. suffix) 1738 1738 */ 1739 1739 function wp_unique_post_slug($slug, $post_ID, $post_status, $post_type, $post_parent) { … … 1748 1748 $post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_type, $post_ID, $post_parent)); 1749 1749 } 1750 1750 1751 1751 if ( $post_name_check || in_array($slug, $wp_rewrite->feeds) ) { 1752 1752 $suffix = 2; -
trunk/wp-includes/query.php
r11420 r11450 1909 1909 if ( empty($q[$item]) ) continue; 1910 1910 if ( in_array($item, $tagin) && empty($q['cat']) ) continue; // We should already have what we need if categories aren't being used 1911 1911 1912 1912 if ( $item != 'category__and' ) { 1913 1913 $reqtag = is_term( $q[$item][0], 'post_tag' ); … … 2663 2663 2664 2664 do_action_ref_array('the_post', array(&$post)); 2665 2665 2666 2666 $id = (int) $post->ID; 2667 2667 -
trunk/wp-includes/rewrite.php
r11419 r11450 1704 1704 return $rules; 1705 1705 } 1706 1706 1707 1707 /** 1708 1708 * Retrieve IIS7 URL Rewrite formatted rewrite rules to write to web.config file. … … 1711 1711 * the process that will. 1712 1712 * 1713 * @since 2.8.0 1713 * @since 2.8.0 1714 1714 * @access public 1715 1715 * … … 1717 1717 */ 1718 1718 function iis7_url_rewrite_rules(){ 1719 1719 1720 1720 if ( ! $this->using_permalinks()) { 1721 1721 return ''; … … 1729 1729 $rules .= " <action type=\"Rewrite\" url=\"index.php\" />\n"; 1730 1730 $rules .= "</rule>"; 1731 1731 1732 1732 $rules = apply_filters('iis7_url_rewrite_rules', $rules); 1733 1733 1734 1734 return $rules; 1735 1735 } … … 1875 1875 * between the current permalink structure and the parameter value. Calls 1876 1876 * {@link WP_Rewrite::init()} after the option is updated. 1877 * 1877 * 1878 1878 * Fires the 'permalink_structure_changed' action once the init call has 1879 1879 * processed passing the old and new values -
trunk/wp-includes/script-loader.php
r11445 r11450 423 423 // all colors stylesheets need to have the same query strings (cache manifest compat) 424 424 $colors_version = '20090522'; 425 425 426 426 $styles->add( 'wp-admin', '/wp-admin/wp-admin.css', array(), '20090522' ); 427 427 $styles->add_data( 'wp-admin', 'rtl', '/wp-admin/rtl.css' ); -
trunk/wp-includes/taxonomy.php
r11428 r11450 16 16 */ 17 17 function create_initial_taxonomies() { 18 register_taxonomy( 'category', 'post', array('hierarchical' => true, 'update_count_callback' => '_update_post_term_count', 'label' => __('Categories'), 'query_var' => false, 'rewrite' => false) ) ; 19 register_taxonomy( 'post_tag', 'post', array('hierarchical' => false, 'update_count_callback' => '_update_post_term_count', 'label' => __('Post Tags'), 'query_var' => false, 'rewrite' => false) ) ; 20 register_taxonomy( 'link_category', 'link', array('hierarchical' => false, 'label' => __('Categories'), 'query_var' => false, 'rewrite' => false) ) ; 18 register_taxonomy( 'category', 'post', array('hierarchical' => true, 'update_count_callback' => '_update_post_term_count', 'label' => __('Categories'), 'query_var' => false, 'rewrite' => false) ) ; 19 register_taxonomy( 'post_tag', 'post', array('hierarchical' => false, 'update_count_callback' => '_update_post_term_count', 'label' => __('Post Tags'), 'query_var' => false, 'rewrite' => false) ) ; 20 register_taxonomy( 'link_category', 'link', array('hierarchical' => false, 'label' => __('Categories'), 'query_var' => false, 'rewrite' => false) ) ; 21 21 } 22 22 add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority … … 168 168 global $wp_taxonomies, $wp_rewrite, $wp; 169 169 170 if (!is_array($wp_taxonomies)) 170 if (!is_array($wp_taxonomies)) 171 171 $wp_taxonomies = array(); 172 172 … … 526 526 * the $args. 527 527 * 528 * The 'get_terms_orderby' filter passes the ORDER BY clause for the query 528 * The 'get_terms_orderby' filter passes the ORDER BY clause for the query 529 529 * along with the $args array. 530 530 … … 534 534 * The list of arguments that $args can contain, which will overwrite the defaults: 535 535 * 536 * orderby - Default is 'name'. Can be name, count, term_group, slug or nothing 536 * orderby - Default is 'name'. Can be name, count, term_group, slug or nothing 537 537 * (will use term_id), Passing a custom value other than these will cause it to 538 538 * order based on the custom value. 539 * 539 * 540 540 * order - Default is ASC. Can use DESC. 541 541 * … … 681 681 else if ( 'term_group' == $_orderby ) 682 682 $orderby = 't.term_group'; 683 elseif ( empty($_orderby) || 'id' == $_orderby ) 683 elseif ( empty($_orderby) || 'id' == $_orderby ) 684 684 $orderby = 't.term_id'; 685 685 … … 872 872 873 873 $term = trim( stripslashes( $term ) ); 874 874 875 875 if ( '' === $slug = sanitize_title($term) ) 876 876 return 0; -
trunk/wp-includes/theme.php
r11383 r11450 885 885 } 886 886 887 // Prevent theme mods to current theme being used on theme being previewed 887 // Prevent theme mods to current theme being used on theme being previewed 888 888 add_filter( 'pre_option_mods_' . get_current_theme(), create_function( '', "return array();" ) ); 889 889 -
trunk/wp-includes/widgets.php
r11427 r11450 174 174 $settings = $settings[$this->number]; 175 175 // filters the widget's settings, return false to stop displaying the widget 176 $settings = apply_filters('widget_display_callback', $settings, $this, $args); 176 $settings = apply_filters('widget_display_callback', $settings, $this, $args); 177 177 if ( false !== $settings ) 178 178 $this->widget($args, $settings); … … 286 286 function get_settings() { 287 287 $settings = get_option($this->option_name); 288 288 289 289 if ( false === $settings && isset($this->alt_option_name) ) 290 290 $settings = get_option($this->alt_option_name); … … 773 773 $did_one = false; 774 774 foreach ( (array) $sidebars_widgets[$index] as $id ) { 775 775 776 776 if ( !isset($wp_registered_widgets[$id]) ) continue; 777 777 778 778 $params = array_merge( 779 779 array( array_merge( $sidebar, array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ) ), … … 814 814 * With the $widget_id parameter, returns the ID of the sidebar where 815 815 * the widget with that callback/$id_base AND that ID is found. 816 * 816 * 817 817 * NOTE: $widget_id and $id_base are the same for single widgets. To be effective 818 818 * this function has to run after widgets have initialized, at action 'init' or later. … … 835 835 if ( $skip_inactive && 'wp_inactive_widgets' == $sidebar ) 836 836 continue; 837 837 838 838 if ( is_array($widgets) ) { 839 839 foreach ( $widgets as $widget ) { … … 879 879 function is_active_sidebar( $index ) { 880 880 $index = ( is_int($index) ) ? "sidebar-$index" : sanitize_title($index); 881 $sidebars_widgets = get_option( 'sidebars_widgets', array() ); 882 if ( isset($sidebars_widgets[$index]) && !empty($sidebars_widgets[$index]) ) 881 $sidebars_widgets = get_option( 'sidebars_widgets', array() ); 882 if ( isset($sidebars_widgets[$index]) && !empty($sidebars_widgets[$index]) ) 883 883 return true; 884 884 … … 1057 1057 $sidebars_widgets = &$GLOBALS['_wp_sidebars_widgets']; 1058 1058 } 1059 1059 1060 1060 foreach ( (array) $sidebars_widgets as $index => $sidebar ) { 1061 1061 if ( is_array($sidebar) ) { -
trunk/wp-login.php
r11291 r11450 148 148 $message .= __('To reset your password visit the following address, otherwise just ignore this email and nothing will happen.') . "\r\n\r\n"; 149 149 $message .= site_url("wp-login.php?action=rp&key=$key", 'login') . "\r\n"; 150 150 151 151 $title = sprintf(__('[%s] Password Reset'), get_option('blogname')); 152 152 153 153 $title = apply_filters('retrieve_password_title', $title); 154 154 $message = apply_filters('retrieve_password_message', $message, $key); 155 155 156 156 if ( $message && !wp_mail($user_email, $title, $message) ) 157 157 die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>'); … … 182 182 // Generate something random for a password... 183 183 $new_pass = wp_generate_password(); 184 184 185 185 do_action('password_reset', $user, $new_pass); 186 186 … … 195 195 $title = apply_filters('password_reset_title', $title); 196 196 $message = apply_filters('password_reset_message', $message, $new_pass); 197 197 198 198 if ( $message && !wp_mail($user->user_email, $title, $message) ) 199 199 die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>');
Note: See TracChangeset
for help on using the changeset viewer.