Index: branches/wmf/1.17wmf1/skins/common/IE80Fixes.css |
— | — | @@ -0,0 +1,15 @@ |
| 2 | +/** |
| 3 | + * Fixes textarea scrolling bug (bug #19334). The bug only occurs when a |
| 4 | + * percentage width is given, so instead of width: 100%, use min-width: 100%; |
| 5 | + * max-width: 100%. We also need to give a fixed width for the actual width |
| 6 | + * property for the hack to work, although the actual value (500px here) ends |
| 7 | + * up being ignored; min/max-width take precedence. |
| 8 | + * |
| 9 | + * More info: http://grantovich.net/posts/2009/06/that-weird-ie8-textarea-bug/ |
| 10 | + */ |
| 11 | +#wpTextbox1 { |
| 12 | + height: 390px; |
| 13 | + width: 500px; |
| 14 | + min-width: 100%; |
| 15 | + max-width: 100%; |
| 16 | +} |
Property changes on: branches/wmf/1.17wmf1/skins/common/IE80Fixes.css |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 17 | + native |
Index: branches/wmf/1.17wmf1/skins/common/wikibits.js |
— | — | @@ -620,13 +620,13 @@ |
621 | 621 | for ( var i = 0; i < firstRow.cells.length; i++ ) { |
622 | 622 | var cell = firstRow.cells[i]; |
623 | 623 | if ( (' ' + cell.className + ' ').indexOf(' unsortable ') == -1 ) { |
624 | | - cell.innerHTML += '<a href="#" class="sortheader" ' |
| 624 | + $(cell).append ( '<a href="#" class="sortheader" ' |
625 | 625 | + 'onclick="ts_resortTable(this);return false;">' |
626 | 626 | + '<span class="sortarrow">' |
627 | 627 | + '<img src="' |
628 | 628 | + ts_image_path |
629 | 629 | + ts_image_none |
630 | | - + '" alt="↓"/></span></a>'; |
| 630 | + + '" alt="↓"/></span></a>'); |
631 | 631 | } |
632 | 632 | } |
633 | 633 | if ( ts_alternate_row_colors ) { |
— | — | @@ -1041,8 +1041,9 @@ |
1042 | 1042 | |
1043 | 1043 | updateTooltipAccessKeys( null ); |
1044 | 1044 | setupCheckboxShiftClick(); |
1045 | | - sortables_init(); |
1046 | 1045 | |
| 1046 | + jQuery( document ).ready( sortables_init ); |
| 1047 | + |
1047 | 1048 | // Run any added-on functions |
1048 | 1049 | for ( var i = 0; i < onloadFuncts.length; i++ ) { |
1049 | 1050 | onloadFuncts[i](); |
Index: branches/wmf/1.17wmf1/extensions/DoubleWiki/DoubleWiki_body.php |
— | — | @@ -35,11 +35,15 @@ |
36 | 36 | /* |
37 | 37 | * Read the list of matched phrases and add tags to the html output. |
38 | 38 | */ |
39 | | - function addMatchingTags ( &$text, $lang ) { |
40 | | - $pattern = "/<div id=\"align-$lang\" style=\"display:none;\">\n<p>([^<]*?)<\/p>\n<\/div>/is"; |
41 | | - if( ! preg_match( $pattern, $text, $m ) ) return ; |
| 39 | + function addMatchingTags ( &$text, $lang ) { |
| 40 | + $pattern = "/<div id=\"align-$lang\" style=\"display:none;\"><pre>(.*?)<\/pre>/is"; |
| 41 | + $m = array(); |
| 42 | + if ( ! preg_match( $pattern, $text, $m ) ) { |
| 43 | + return; |
| 44 | + } |
42 | 45 | $text = str_replace( $m[1], '', $text ); |
43 | | - $line_pattern = "/\s*([^:\n]*?)\s*:\s*([^:\n]*?)\s*\n/i"; |
| 46 | + $line_pattern = '/\s*([^:\n]*?)\s*=\s*([^:\n]*?)\s*\n/i'; |
| 47 | + $items = array(); |
44 | 48 | preg_match_all( $line_pattern, $m[1], $items, PREG_SET_ORDER ); |
45 | 49 | foreach( $items as $n => $i ) { |
46 | 50 | $text = str_replace( $i[1], "<span id=\"dw-$n\" title=\"{$i[2]}\"/>".$i[1], $text ); |
Index: branches/wmf/1.17wmf1/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.css |
— | — | @@ -241,7 +241,7 @@ |
242 | 242 | } |
243 | 243 | .wikiEditor-ui-toolbar .section-help .page-table td.cell-syntax, |
244 | 244 | .wikiEditor-ui-toolbar .section-help .page-table td.syntax { |
245 | | - font-family: monospace; |
| 245 | + font-family: monospace, "Courier New"; |
246 | 246 | } |
247 | 247 | .wikiEditor-ui-toolbar .section-help .page-table td.syntax, |
248 | 248 | .wikiEditor-ui-toolbar .section-help .page-table td.cell-syntax, |
— | — | @@ -267,7 +267,7 @@ |
268 | 268 | color: black; |
269 | 269 | text-decoration: none; |
270 | 270 | cursor: pointer; |
271 | | - font-family: monospace; |
| 271 | + font-family: monospace, "Courier New"; |
272 | 272 | font-size: 1.25em; |
273 | 273 | } |
274 | 274 | .wikiEditor-ui-toolbar .page-characters div[dir=rtl] span { |
Index: branches/wmf/1.17wmf1/extensions/ProofreadPage/ProofreadPage_body.php |
— | — | @@ -357,19 +357,24 @@ |
358 | 358 | $height = $image->getHeight(); |
359 | 359 | if ( $m[2] ) { |
360 | 360 | $thumbName = $image->thumbName( array( 'width' => '##WIDTH##', 'page' => $m[3] ) ); |
| 361 | + $thumbURL = $image->getThumbUrl( $thumbName ); |
| 362 | + $thumbURL = str_replace( '%23', '#', $thumbURL ); |
| 363 | + $fullURL = str_replace( '##WIDTH##', "$width", $thumbURL ); |
361 | 364 | } else { |
362 | 365 | $thumbName = $image->thumbName( array( 'width' => '##WIDTH##' ) ); |
| 366 | + $thumbURL = $image->getThumbUrl( $thumbName ); |
| 367 | + $thumbURL = str_replace( '%23', '#', $thumbURL ); |
| 368 | + $fullURL = $image->getURL(); |
363 | 369 | } |
364 | | - $thumbURL = $image->getThumbUrl( $thumbName ); |
365 | | - $thumbURL = str_replace( '%23', '#', $thumbURL ); |
366 | 370 | $scan_link = Html::element( 'a', |
367 | | - array( 'href' => str_replace( '##WIDTH##', "$width", $thumbURL ), |
| 371 | + array( 'href' => $fullURL, |
368 | 372 | 'title' => wfMsg( 'proofreadpage_image' ) ), |
369 | 373 | wfMsg( 'proofreadpage_image' ) ); |
370 | 374 | } else { |
371 | 375 | $width = 0; |
372 | 376 | $height = 0; |
373 | 377 | $thumbURL = ''; |
| 378 | + $fullURL = ''; |
374 | 379 | $scan_link = ''; |
375 | 380 | } |
376 | 381 | |
— | — | @@ -388,6 +393,7 @@ |
389 | 394 | 'proofreadPageHeight' => intval( $height ), |
390 | 395 | 'proofreadPageEditWidth' => $edit_width, |
391 | 396 | 'proofreadPageThumbURL' => $thumbURL, |
| 397 | + 'proofreadPageURL' => $fullURL, |
392 | 398 | 'proofreadPageIsEdit' => intval( $isEdit ), |
393 | 399 | 'proofreadPageIndexLink' => $index_link, |
394 | 400 | 'proofreadPageNextLink' => $next_link, |
— | — | @@ -601,10 +607,10 @@ |
602 | 608 | $view = ( $i - $offset ); |
603 | 609 | switch( $mode ) { |
604 | 610 | case 'highroman': |
605 | | - $view = toRoman( $view ); |
| 611 | + $view = $this->toRoman( $view ); |
606 | 612 | break; |
607 | 613 | case 'roman': |
608 | | - $view = strtolower( toRoman( $view ) ); |
| 614 | + $view = strtolower( $this->toRoman( $view ) ); |
609 | 615 | break; |
610 | 616 | case 'normal': |
611 | 617 | $view = '' . $view; |
— | — | @@ -857,11 +863,9 @@ |
858 | 864 | if( !$is_q0 ) { |
859 | 865 | $out .= '<span>{{:MediaWiki:Proofreadpage_pagenum_template|page=' . $text . "|num=$pagenum}}</span>"; |
860 | 866 | } |
861 | | - if( $args["$i"] != null ) { |
862 | | - $out .= '{{#lst:' . $text . '|' . $args["$i"] . '}}'; |
863 | | - } elseif( $page == $from && $args['fromsection'] ) { |
| 867 | + if( $page == $from_page && $args['fromsection'] ) { |
864 | 868 | $out .= '{{#lst:' . $text . '|' . $args['fromsection'] . '}}'; |
865 | | - } elseif( $page == $to && $args['tosection'] ) { |
| 869 | + } elseif( $page == $to_page && $args['tosection'] ) { |
866 | 870 | $out .= '{{#lst:' . $text . '|' . $args['tosection'] . '}}'; |
867 | 871 | } else { |
868 | 872 | $out .= '{{:' . $text . '}}'; |
Index: branches/wmf/1.17wmf1/extensions/ProofreadPage/proofread.js |
— | — | @@ -16,10 +16,15 @@ |
17 | 17 | // enforce quantization: width must be multiple of 100px |
18 | 18 | var width = 100 * Math.round( requested_width / 100 ); |
19 | 19 | // compare to the width of the image |
20 | | - width = Math.min( width, proofreadPageWidth ); |
21 | | - self.DisplayWidth = width; |
22 | | - self.DisplayHeight = width * proofreadPageHeight / proofreadPageWidth; |
23 | | - return proofreadPageThumbURL.replace( '##WIDTH##', '' + width ); |
| 20 | + if( width < proofreadPageWidth ) { |
| 21 | + self.DisplayWidth = width; |
| 22 | + self.DisplayHeight = width * proofreadPageHeight / proofreadPageWidth; |
| 23 | + return proofreadPageThumbURL.replace( '##WIDTH##', '' + width ); |
| 24 | + } else { |
| 25 | + self.DisplayWidth = proofreadPageWidth; |
| 26 | + self.DisplayHeight = proofreadPageHeight; |
| 27 | + return proofreadPageURL; |
| 28 | + } |
24 | 29 | } |
25 | 30 | } |
26 | 31 | |
— | — | @@ -893,12 +898,8 @@ |
894 | 899 | } |
895 | 900 | |
896 | 901 | // add CSS classes to the container div |
897 | | - var c = document.getElementById( 'pagequality' ); |
898 | | - if( c ) { |
899 | | - c = c.nextSibling; |
900 | | - if( c.className == 'pagetext' ) { |
901 | | - c.className += ' ' + self.proofreadPageCss; |
902 | | - } |
| 902 | + if( self.proofreadPageCss) { |
| 903 | + $( 'div.pagetext' ).addClass( self.proofreadPageCss ); |
903 | 904 | } |
904 | 905 | } |
905 | 906 | |
— | — | @@ -947,7 +948,7 @@ |
948 | 949 | if( !proofreadPageAddButtons ) { |
949 | 950 | f.innerHTML = |
950 | 951 | ' <input type="hidden" name="wpProofreader" value="' + escapeQuotesHTML( self.proofreadpage_username ) + '">' + |
951 | | - '<input type="hidden" name="quality" value="' + escapeQuotesHTML( self.proofreadpage_quality ) + '" >'; |
| 952 | + '<input type="hidden" name="quality" value="' + escapeQuotesHTML( self.proofreadpage_quality +'' ) + '" >'; |
952 | 953 | return; |
953 | 954 | } |
954 | 955 | |
Index: branches/wmf/1.17wmf1/includes/EditPage.php |
— | — | @@ -340,6 +340,8 @@ |
341 | 341 | if ( $wgUser->getOption( 'uselivepreview', false ) ) { |
342 | 342 | $wgOut->addModules( 'mediawiki.legacy.preview' ); |
343 | 343 | } |
| 344 | + // Bug #19334: textarea jumps when editing articles in IE8 |
| 345 | + $wgOut->addStyle( 'common/IE80Fixes.css', 'screen', 'IE 8' ); |
344 | 346 | |
345 | 347 | $permErrors = $this->getEditPermissionErrors(); |
346 | 348 | if ( $permErrors ) { |
Property changes on: branches/wmf/1.17wmf1/includes/EditPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
347 | 349 | Merged /trunk/phase3/includes/EditPage.php:r78893,78897,78909,82404,82408-82409,82453,82456-82458,82460,82465,82474,82478,82482,82486,82513,82518,82530 |
Index: branches/wmf/1.17wmf1/includes/OutputPage.php |
— | — | @@ -2334,7 +2334,7 @@ |
2335 | 2335 | // Lazy-load ResourceLoader |
2336 | 2336 | // TODO: Should this be a static function of ResourceLoader instead? |
2337 | 2337 | // TODO: Divide off modules starting with "user", and add the user parameter to them |
2338 | | - $query = array( |
| 2338 | + $baseQuery = array( |
2339 | 2339 | 'lang' => $wgLang->getCode(), |
2340 | 2340 | 'debug' => ResourceLoader::inDebugMode() ? 'true' : 'false', |
2341 | 2341 | 'skin' => $skin->getSkinName(), |
— | — | @@ -2342,10 +2342,10 @@ |
2343 | 2343 | ); |
2344 | 2344 | // Propagate printable and handheld parameters if present |
2345 | 2345 | if ( $wgRequest->getBool( 'printable' ) ) { |
2346 | | - $query['printable'] = 1; |
| 2346 | + $baseQuery['printable'] = 1; |
2347 | 2347 | } |
2348 | 2348 | if ( $wgRequest->getBool( 'handheld' ) ) { |
2349 | | - $query['handheld'] = 1; |
| 2349 | + $baseQuery['handheld'] = 1; |
2350 | 2350 | } |
2351 | 2351 | |
2352 | 2352 | if ( !count( $modules ) ) { |
— | — | @@ -2381,7 +2381,7 @@ |
2382 | 2382 | } |
2383 | 2383 | $links = ''; |
2384 | 2384 | foreach ( $groups as $group => $modules ) { |
2385 | | - $query['modules'] = implode( '|', array_keys( $modules ) ); |
| 2385 | + $query = $baseQuery; |
2386 | 2386 | // Special handling for user-specific groups |
2387 | 2387 | if ( ( $group === 'user' || $group === 'private' ) && $wgUser->isLoggedIn() ) { |
2388 | 2388 | $query['user'] = $wgUser->getName(); |
— | — | @@ -2677,19 +2677,19 @@ |
2678 | 2678 | public function buildCssLinks( $sk ) { |
2679 | 2679 | $ret = ''; |
2680 | 2680 | // Add ResourceLoader styles |
2681 | | - // Split the styles into three groups |
2682 | | - $styles = array( 'other' => array(), 'user' => array(), 'site' => array() ); |
| 2681 | + // Split the styles into four groups |
| 2682 | + $styles = array( 'other' => array(), 'user' => array(), 'site' => array(), 'private' => array() ); |
2683 | 2683 | $resourceLoader = $this->getResourceLoader(); |
2684 | 2684 | foreach ( $this->getModuleStyles() as $name ) { |
2685 | 2685 | $group = $resourceLoader->getModule( $name )->getGroup(); |
2686 | | - // Modules in groups named "other" or anything different than "user" or "site" will |
2687 | | - // be placed in the "other" group |
| 2686 | + // Modules in groups named "other" or anything different than "user", "site" or "private" |
| 2687 | + // will be placed in the "other" group |
2688 | 2688 | $styles[isset( $styles[$group] ) ? $group : 'other'][] = $name; |
2689 | 2689 | } |
2690 | 2690 | |
2691 | | - // We want site and user styles to override dynamically added styles from modules, but we want |
| 2691 | + // We want site, private and user styles to override dynamically added styles from modules, but we want |
2692 | 2692 | // dynamically added styles to override statically added styles from other modules. So the order |
2693 | | - // has to be other, dynamic, site, user |
| 2693 | + // has to be other, dynamic, site, private, user |
2694 | 2694 | // Add statically added styles for other modules |
2695 | 2695 | $ret .= $this->makeResourceLoaderLink( $sk, $styles['other'], 'styles' ); |
2696 | 2696 | // Add normal styles added through addStyle()/addInlineStyle() here |
— | — | @@ -2697,10 +2697,13 @@ |
2698 | 2698 | // Add marker tag to mark the place where the client-side loader should inject dynamic styles |
2699 | 2699 | // We use a <meta> tag with a made-up name for this because that's valid HTML |
2700 | 2700 | $ret .= Html::element( 'meta', array( 'name' => 'ResourceLoaderDynamicStyles', 'content' => '' ) ); |
2701 | | - // Add site and user styles |
2702 | | - $ret .= $this->makeResourceLoaderLink( |
2703 | | - $sk, array_merge( $styles['site'], $styles['user'] ), 'styles' |
2704 | | - ); |
| 2701 | + |
| 2702 | + // Add site, private and user styles |
| 2703 | + // 'private' at present only contains user.options, so put that before 'user' |
| 2704 | + // Any future private modules will likely have a similar user-specific character |
| 2705 | + foreach ( array( 'site', 'private', 'user' ) as $group ) { |
| 2706 | + $ret .= $this->makeResourceLoaderLink( $sk, $styles[$group], 'styles' ); |
| 2707 | + } |
2705 | 2708 | return $ret; |
2706 | 2709 | } |
2707 | 2710 | |
Property changes on: branches/wmf/1.17wmf1/includes/OutputPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
2708 | 2711 | Merged /trunk/phase3/includes/OutputPage.php:r78893,78897,78909,82404,82408-82409,82453,82456-82458,82460,82465,82474,82478,82482,82486,82513,82518,82530 |
Index: branches/wmf/1.17wmf1/includes/resourceloader/ResourceLoaderContext.php |
— | — | @@ -131,7 +131,7 @@ |
132 | 132 | } |
133 | 133 | |
134 | 134 | public function getHash() { |
135 | | - if ( isset( $this->hash ) ) { |
| 135 | + if ( !isset( $this->hash ) ) { |
136 | 136 | $this->hash = implode( '|', array( |
137 | 137 | $this->getLanguage(), $this->getDirection(), $this->skin, $this->user, |
138 | 138 | $this->debug, $this->only, $this->version |
Index: branches/wmf/1.17wmf1/includes/libs/CSSMin.php |
— | — | @@ -120,12 +120,23 @@ |
121 | 121 | self::URL_REGEX . '(?P<post>[^;]*)[\;]?/'; |
122 | 122 | $offset = 0; |
123 | 123 | while ( preg_match( $pattern, $source, $match, PREG_OFFSET_CAPTURE, $offset ) ) { |
124 | | - // Skip absolute URIs and relative URIs with absolute paths |
125 | | - if ( preg_match( '/^(\/|https?:\/\/)/', $match['file'][0] ) ) { |
| 124 | + // Skip absolute URIs |
| 125 | + if ( preg_match( '/^https?:\/\//', $match['file'][0] ) ) { |
126 | 126 | // Move the offset to the end of the match, leaving it alone |
127 | 127 | $offset = $match[0][1] + strlen( $match[0][0] ); |
128 | 128 | continue; |
129 | 129 | } |
| 130 | + // URLs with absolute paths like /w/index.php need to be expanded |
| 131 | + // to absolute URLs but otherwise left alone |
| 132 | + if ( $match['file'][0] !== '' && $match['file'][0][0] === '/' ) { |
| 133 | + // Replace the file path with an expanded URL |
| 134 | + $source = substr_replace( $source, wfExpandUrl( $match['file'][0] ), |
| 135 | + $match['file'][1], strlen( $match['file'][0] ) |
| 136 | + ); |
| 137 | + // Move the offset to the end of the match, leaving it alone |
| 138 | + $offset = $match[0][1] + strlen( $match[0][0] ); |
| 139 | + continue; |
| 140 | + } |
130 | 141 | // Shortcuts |
131 | 142 | $embed = $match['embed'][0]; |
132 | 143 | $pre = $match['pre'][0]; |
Index: branches/wmf/1.17wmf1/includes/specials/SpecialContributions.php |
— | — | @@ -56,7 +56,7 @@ |
57 | 57 | $this->opts['contribs'] = 'newbie'; |
58 | 58 | } |
59 | 59 | |
60 | | - $this->opts['deletedOnly'] = $wgRequest->getCheck( 'deletedOnly' ); |
| 60 | + $this->opts['deletedOnly'] = $wgRequest->getBool( 'deletedOnly' ); |
61 | 61 | |
62 | 62 | if( !strlen( $target ) ) { |
63 | 63 | $wgOut->addHTML( $this->getForm() ); |
— | — | @@ -65,7 +65,7 @@ |
66 | 66 | |
67 | 67 | $this->opts['limit'] = $wgRequest->getInt( 'limit', $wgUser->getOption('rclimit') ); |
68 | 68 | $this->opts['target'] = $target; |
69 | | - $this->opts['topOnly'] = $wgRequest->getCheck( 'topOnly' ); |
| 69 | + $this->opts['topOnly'] = $wgRequest->getBool( 'topOnly' ); |
70 | 70 | |
71 | 71 | $nt = Title::makeTitleSafe( NS_USER, $target ); |
72 | 72 | if( !$nt ) { |
Index: branches/wmf/1.17wmf1/includes/Import.php |
— | — | @@ -662,7 +662,7 @@ |
663 | 663 | return false; |
664 | 664 | } |
665 | 665 | |
666 | | - return array( $origTitle, $title ); |
| 666 | + return array( $title, $origTitle ); |
667 | 667 | } |
668 | 668 | } |
669 | 669 | |
Index: branches/wmf/1.17wmf1/languages/classes/LanguageWa.php |
— | — | @@ -25,6 +25,7 @@ |
26 | 26 | ## # "<day> d' <monthname>" for months starting with a vowel |
27 | 27 | ## # |
28 | 28 | function date( $ts, $adj = false, $format = true, $tc = false ) { |
| 29 | + $ts = wfTimestamp( TS_MW, $ts ); |
29 | 30 | if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); } |
30 | 31 | $datePreference = $this->dateFormat( $format ); |
31 | 32 | |
Index: branches/wmf/1.17wmf1/RELEASE-NOTES |
— | — | @@ -491,6 +491,7 @@ |
492 | 492 | * (bug 26449) Keep underlines from headings outside of tables and thumbs by |
493 | 493 | adding overflow:hidden to h1,h2,h3,h4,h5,h6 (also fixes editsection bunching). |
494 | 494 | * (bug 26708) Remove background-color:white from tables in Monobook and Vector. |
| 495 | +* (bug 27560) Search queries no longer fail in walloon language |
495 | 496 | |
496 | 497 | === API changes in 1.17 === |
497 | 498 | * BREAKING CHANGE: action=patrol now requires POST |
Property changes on: branches/wmf/1.17wmf1/RELEASE-NOTES |
___________________________________________________________________ |
Modified: svn:mergeinfo |
498 | 499 | Merged /trunk/extensions/RELEASE-NOTES:r78893,78897,78909,82404 |
499 | 500 | Merged /trunk/phase3/RELEASE-NOTES:r78893,78897,78909,82404,82408-82409,82453,82456-82458,82460,82465,82474,82478,82482,82486,82513,82518,82530 |
Index: branches/wmf/1.17wmf1/resources/jquery/jquery.textSelection.js |
— | — | @@ -386,7 +386,7 @@ |
387 | 387 | break; |
388 | 388 | } |
389 | 389 | var context = $(this).data( 'wikiEditor-context' ); |
390 | | - var hasIframe = context !== undefined && context.$iframe !== undefined; |
| 390 | + var hasIframe = typeof context !== 'undefined' && context && typeof context.$iframe !== 'undefined'; |
391 | 391 | |
392 | 392 | // IE selection restore voodoo |
393 | 393 | var needSave = false; |