Index: branches/wmf/1.18wmf1/resources/mediawiki.page/mediawiki.page.startup.js |
— | — | @@ -1,15 +1,10 @@ |
2 | 2 | ( function( $ ) { |
3 | 3 | |
4 | 4 | /* Client profile classes for <html> */ |
| 5 | + /* Allows for easy hiding/showing of JS or no-JS-specific UI elements */ |
5 | 6 | |
6 | | - var prof = $.client.profile(); |
7 | 7 | $( 'html' ) |
8 | | - .addClass( |
9 | | - 'client-' + prof.name |
10 | | - + ' client-' + prof.name + '-' + prof.versionBase |
11 | | - + ' client-' + prof.layout |
12 | | - + ' client-' + prof.platform |
13 | | - + ' client-js' ) |
| 8 | + .addClass('client-js' ) |
14 | 9 | .removeClass( 'client-nojs' ); |
15 | 10 | |
16 | 11 | } )( jQuery ); |
Index: branches/wmf/1.18wmf1/resources/mediawiki.action/mediawiki.action.edit.js |
— | — | @@ -13,7 +13,7 @@ |
14 | 14 | insertButton : function( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId, selectText ) { |
15 | 15 | var image = $('<img>', { |
16 | 16 | width : 23, |
17 | | - height : 23, |
| 17 | + height : 22, |
18 | 18 | src : imageFile, |
19 | 19 | alt : speedTip, |
20 | 20 | title : speedTip, |
Index: branches/wmf/1.18wmf1/skins/common/shared.css |
— | — | @@ -18,12 +18,6 @@ |
19 | 19 | /* @noflip */textarea[dir="ltr"], input[dir="ltr"] { direction: ltr; } |
20 | 20 | /* @noflip */textarea[dir="rtl"], input[dir="rtl"] { direction: rtl; } |
21 | 21 | |
22 | | -/* The scripts of these languages are very hard to read with underlines */ |
23 | | -[lang="ar"] a, [lang="ckb"] a, [lang="fa"] a, [lang="kk-arab"] a, |
24 | | -[lang="mzn"] a, [lang="ps"] a, [lang="ur"] a { |
25 | | - text-decoration: none; |
26 | | -} |
27 | | - |
28 | 22 | /* Default style for semantic tags */ |
29 | 23 | abbr, acronym, .explain { |
30 | 24 | border-bottom: 1px dotted black; |
— | — | @@ -176,6 +170,13 @@ |
177 | 171 | /** |
178 | 172 | * Categories |
179 | 173 | */ |
| 174 | +#catlinks { |
| 175 | + /** |
| 176 | + * Overrides text justification (user preference) |
| 177 | + * See bug 31990 |
| 178 | + */ |
| 179 | + text-align: left; |
| 180 | +} |
180 | 181 | #catlinks ul { |
181 | 182 | display:inline; |
182 | 183 | margin: 0px; |
Index: branches/wmf/1.18wmf1/RELEASE-NOTES-1.18 |
— | — | @@ -457,6 +457,7 @@ |
458 | 458 | * (bug 28545) When using the uca-default collation, sortkey's starting with a |
459 | 459 | space (U+20) will sort under an invisible header like in 1.16 rather than a U+6DE |
460 | 460 | * (bug 31674) Can't edit watchlist if it contains special pages |
| 461 | +* (bug 31990) justify paragraphs pref adds extra space to category listing |
461 | 462 | |
462 | 463 | === API changes in 1.18 === |
463 | 464 | * BREAKING CHANGE: action=watch now requires POST and token. |
Property changes on: branches/wmf/1.18wmf1/RELEASE-NOTES-1.18 |
___________________________________________________________________ |
Modified: svn:mergeinfo |
464 | 465 | Merged /trunk/phase3/RELEASE-NOTES-1.18:r102297,102334-102335,102440 |
Index: branches/wmf/1.18wmf1/includes/parser/Parser.php |
— | — | @@ -2942,7 +2942,7 @@ |
2943 | 2943 | $isLocalObj = false; # $text is a DOM node needing expansion in the current frame |
2944 | 2944 | |
2945 | 2945 | # Title object, where $text came from |
2946 | | - $title = null; |
| 2946 | + $title = false; |
2947 | 2947 | |
2948 | 2948 | # $part1 is the bit before the first |, and must contain only title characters. |
2949 | 2949 | # Various prefixes will be stripped from it later. |
Index: branches/wmf/1.18wmf1/includes/specials/SpecialEditWatchlist.php |
— | — | @@ -18,6 +18,8 @@ |
19 | 19 | |
20 | 20 | protected $successMessage; |
21 | 21 | |
| 22 | + protected $toc; |
| 23 | + |
22 | 24 | public function __construct(){ |
23 | 25 | parent::__construct( 'EditWatchlist' ); |
24 | 26 | } |
— | — | @@ -86,6 +88,8 @@ |
87 | 89 | if( $form->show() ){ |
88 | 90 | $out->addHTML( $this->successMessage ); |
89 | 91 | $out->returnToMain(); |
| 92 | + } elseif ( $this->toc !== false ) { |
| 93 | + $out->prependHTML( $this->toc ); |
90 | 94 | } |
91 | 95 | break; |
92 | 96 | } |
— | — | @@ -391,6 +395,7 @@ |
392 | 396 | global $wgContLang; |
393 | 397 | |
394 | 398 | $fields = array(); |
| 399 | + $count = 0; |
395 | 400 | |
396 | 401 | $haveInvalidNamespaces = false; |
397 | 402 | foreach( $this->getWatchlistInfo() as $namespace => $pages ){ |
— | — | @@ -398,13 +403,9 @@ |
399 | 404 | $haveInvalidNamespaces = true; |
400 | 405 | continue; |
401 | 406 | } |
402 | | - |
403 | | - $namespace == NS_MAIN |
404 | | - ? wfMsgHtml( 'blanknamespace' ) |
405 | | - : htmlspecialchars( $wgContLang->getFormattedNsText( $namespace ) ); |
406 | 407 | |
407 | 408 | $fields['TitlesNs'.$namespace] = array( |
408 | | - 'type' => 'multiselect', |
| 409 | + 'class' => 'EditWatchlistCheckboxSeriesField', |
409 | 410 | 'options' => array(), |
410 | 411 | 'section' => "ns$namespace", |
411 | 412 | ); |
— | — | @@ -413,6 +414,7 @@ |
414 | 415 | $title = Title::makeTitleSafe( $namespace, $dbkey ); |
415 | 416 | $text = $this->buildRemoveLine( $title, $redirect ); |
416 | 417 | $fields['TitlesNs'.$namespace]['options'][$text] = $title->getEscapedText(); |
| 418 | + $count++; |
417 | 419 | } |
418 | 420 | } |
419 | 421 | if ( $haveInvalidNamespaces ) { |
— | — | @@ -420,7 +422,22 @@ |
421 | 423 | $this->getContext()->getUser()->cleanupWatchlist(); |
422 | 424 | } |
423 | 425 | |
424 | | - $form = new EditWatchlistNormalHTMLForm( $fields ); |
| 426 | + if ( count( $fields ) > 1 && $count > 30 ) { |
| 427 | + $this->toc = Linker::tocIndent(); |
| 428 | + $tocLength = 0; |
| 429 | + foreach( $fields as $key => $data ) { |
| 430 | + $ns = substr( $data['section'], 2 ); |
| 431 | + $nsText = $ns == NS_MAIN |
| 432 | + ? wfMsgHtml( 'blanknamespace' ) |
| 433 | + : htmlspecialchars( $wgContLang->getFormattedNsText( $ns ) ); |
| 434 | + $this->toc .= Linker::tocLine( "mw-htmlform-{$data['section']}", $nsText, ++$tocLength, 1 ) . Linker::tocLineEnd(); |
| 435 | + } |
| 436 | + $this->toc = Linker::tocList( $this->toc ); |
| 437 | + } else { |
| 438 | + $this->toc = false; |
| 439 | + } |
| 440 | + |
| 441 | + $form = new EditWatchlistNormalHTMLForm( $fields, $this->getContext() ); |
425 | 442 | $form->setTitle( $this->getTitle() ); |
426 | 443 | $form->setSubmitText( wfMessage( 'watchlistedit-normal-submit' )->text() ); |
427 | 444 | $form->setWrapperLegend( wfMessage( 'watchlistedit-normal-legend' )->text() ); |
— | — | @@ -556,3 +573,21 @@ |
557 | 574 | : htmlspecialchars( $this->getContext()->getLang()->getFormattedNsText( $namespace ) ); |
558 | 575 | } |
559 | 576 | } |
| 577 | + |
| 578 | +class EditWatchlistCheckboxSeriesField extends HTMLMultiSelectField { |
| 579 | + /** |
| 580 | + * HTMLMultiSelectField throws validation errors if we get input data |
| 581 | + * that doesn't match the data set in the form setup. This causes |
| 582 | + * problems if something gets removed from the watchlist while the |
| 583 | + * form is open (bug 32126), but we know that invalid items will |
| 584 | + * be harmless so we can override it here. |
| 585 | + * |
| 586 | + * @param $value String the value the field was submitted with |
| 587 | + * @param $alldata Array the data collected from the form |
| 588 | + * @return Mixed Bool true on success, or String error to display. |
| 589 | + */ |
| 590 | + function validate( $value, $alldata ) { |
| 591 | + // Need to call into grandparent to be a good citizen. :) |
| 592 | + return HTMLFormField::validate( $value, $alldata ); |
| 593 | + } |
| 594 | +} |
\ No newline at end of file |
Property changes on: branches/wmf/1.18wmf1/includes/specials/SpecialEditWatchlist.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
560 | 595 | Merged /trunk/phase3/includes/specials/SpecialEditWatchlist.php:r101666,101802,101860,101990,102297,102334-102335,102440 |
Property changes on: branches/wmf/1.18wmf1/includes/specials |
___________________________________________________________________ |
Modified: svn:mergeinfo |
561 | 596 | Merged /trunk/phase3/includes/specials:r101666,101802,101860,101990,102297,102334-102335,102440 |
Index: branches/wmf/1.18wmf1/includes/resourceloader/ResourceLoaderUserOptionsModule.php |
— | — | @@ -93,7 +93,11 @@ |
94 | 94 | $rules = array(); |
95 | 95 | if ( $options['underline'] < 2 ) { |
96 | 96 | $rules[] = "a { text-decoration: " . |
97 | | - ( $options['underline'] ? 'underline !important' : 'none' ) . "; }"; |
| 97 | + ( $options['underline'] ? 'underline' : 'none' ) . "; }"; |
| 98 | + } else { |
| 99 | + # The scripts of these languages are very hard to read with underlines |
| 100 | + $rules[] = 'a:lang(ar), a:lang(ckb), a:lang(fa),a:lang(kk-arab), ' . |
| 101 | + 'a:lang(mzn), a:lang(ps), a:lang(ur) { text-decoration: none; }'; |
98 | 102 | } |
99 | 103 | if ( $options['highlightbroken'] ) { |
100 | 104 | $rules[] = "a.new, #quickbar a.new { color: #ba0000; }\n"; |
Index: branches/wmf/1.18wmf1/includes/HTMLForm.php |
— | — | @@ -1319,7 +1319,10 @@ |
1320 | 1320 | } |
1321 | 1321 | |
1322 | 1322 | // GetCheck won't work like we want for checks. |
1323 | | - if ( $request->getCheck( 'wpEditToken' ) || $this->mParent->getMethod() != 'post' ) { |
| 1323 | + // Fetch the value in either one of the two following case: |
| 1324 | + // - we have a valid token (form got posted or GET forged by the user) |
| 1325 | + // - checkbox name has a value (false or true), ie is not null |
| 1326 | + if ( $request->getCheck( 'wpEditToken' ) || $request->getVal( $this->mName )!== null ) { |
1324 | 1327 | // XOR has the following truth table, which is what we want |
1325 | 1328 | // INVERT VALUE | OUTPUT |
1326 | 1329 | // true true | false |
Index: branches/wmf/1.18wmf1/includes/media/XMPInfo.php |
— | — | @@ -631,12 +631,23 @@ |
632 | 632 | 'validate' => 'validateClosed', |
633 | 633 | 'choices' => array( '1' => true, '2' => true ), |
634 | 634 | ), |
635 | | - 'YCbCrSubSampling' => array( |
636 | | - 'map_group' => 'exif', |
637 | | - 'mode' => XMPReader::MODE_SEQ, |
638 | | - 'validate' => 'validateClosed', |
639 | | - 'choices' => array( '1' => true, '2' => true ), |
640 | | - ), |
| 635 | + /******** |
| 636 | + * Disable extracting this property (bug 31944) |
| 637 | + * Several files have a string instead of a Seq |
| 638 | + * for this property. XMPReader doesn't handle |
| 639 | + * mismatched types very gracefully (it marks |
| 640 | + * the entire file as invalid, instead of just |
| 641 | + * the relavent prop). Since this prop |
| 642 | + * doesn't communicate all that useful information |
| 643 | + * just disable this prop for now, until such |
| 644 | + * XMPReader is more graceful (bug 32172) |
| 645 | + * 'YCbCrSubSampling' => array( |
| 646 | + * 'map_group' => 'exif', |
| 647 | + * 'mode' => XMPReader::MODE_SEQ, |
| 648 | + * 'validate' => 'validateClosed', |
| 649 | + * 'choices' => array( '1' => true, '2' => true ), |
| 650 | + * ), |
| 651 | + */ |
641 | 652 | ), |
642 | 653 | 'http://ns.adobe.com/exif/1.0/aux/' => array( |
643 | 654 | 'Lens' => array( |
Property changes on: branches/wmf/1.18wmf1/includes/media |
___________________________________________________________________ |
Modified: svn:mergeinfo |
644 | 655 | Merged /trunk/phase3/includes/media:r101802,101860,101990,102297,102334-102335,102440 |
Property changes on: branches/wmf/1.18wmf1/includes |
___________________________________________________________________ |
Modified: svn:mergeinfo |
645 | 656 | Merged /trunk/phase3/includes:r101445,101464,101666,101802,101860,101990,102297,102334-102335,102440 |
Property changes on: branches/wmf/1.18wmf1 |
___________________________________________________________________ |
Modified: svn:mergeinfo |
646 | 657 | Merged /trunk/phase3:r101445,101464,101666,101802,101860,101990,102297,102334-102335,102440 |