Index: branches/REL1_17/phase3/skins/monobook/main.css |
— | — | @@ -60,14 +60,7 @@ |
61 | 61 | table { |
62 | 62 | font-size: 100%; |
63 | 63 | color: black; |
64 | | - /* we don't want the bottom borders of <h2>s to be visible through |
65 | | - floated tables */ |
66 | | - background-color: white; |
67 | 64 | } |
68 | | -fieldset table { |
69 | | - /* but keep table layouts in forms clean... */ |
70 | | - background: none; |
71 | | -} |
72 | 65 | a { |
73 | 66 | text-decoration: none; |
74 | 67 | color: #002bb8; |
Index: branches/REL1_17/phase3/skins/common/shared.css |
— | — | @@ -325,11 +325,7 @@ |
326 | 326 | font-weight: bold; |
327 | 327 | } |
328 | 328 | |
329 | | -table#mw-search-top-table { |
330 | | - background-color: transparent; |
331 | | -} |
332 | 329 | |
333 | | - |
334 | 330 | /* |
335 | 331 | * Advanced PowerSearch box |
336 | 332 | */ |
— | — | @@ -480,11 +476,7 @@ |
481 | 477 | } |
482 | 478 | |
483 | 479 | /* Special:Allpages styling */ |
484 | | -table.allpageslist { |
485 | | - background-color: transparent; |
486 | | -} |
487 | 480 | table.mw-allpages-table-form, table.mw-allpages-table-chunk { |
488 | | - background-color: transparent; |
489 | 481 | width: 100%; |
490 | 482 | } |
491 | 483 | td.mw-allpages-alphaindexline { |
— | — | @@ -503,7 +495,6 @@ |
504 | 496 | table#mw-prefixindex-list-table, |
505 | 497 | table#mw-prefixindex-nav-table { |
506 | 498 | width: 98%; |
507 | | - background-color: transparent; |
508 | 499 | } |
509 | 500 | td#mw-prefixindex-nav-form { |
510 | 501 | font-size: smaller; |
Property changes on: branches/REL1_17/phase3/skins/common/shared.css |
___________________________________________________________________ |
Modified: svn:mergeinfo |
511 | 502 | Merged /trunk/phase3/skins/common/shared.css:r80495,80610,80765,81177,81467,81490,81692,81707,81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |
Index: branches/REL1_17/phase3/skins/vector/screen.css |
— | — | @@ -811,14 +811,7 @@ |
812 | 812 | table { |
813 | 813 | font-size: 100%; |
814 | 814 | color: black; |
815 | | - /* we don't want the bottom borders of <h2>s to be visible through |
816 | | - * floated tables */ |
817 | | - background-color: white; |
818 | 815 | } |
819 | | -fieldset table { |
820 | | - /* but keep table layouts in forms clean... */ |
821 | | - background: none; |
822 | | -} |
823 | 816 | /* Forms */ |
824 | 817 | fieldset { |
825 | 818 | border: 1px solid #2f6fab; |
Property changes on: branches/REL1_17/phase3/skins/vector/screen.css |
___________________________________________________________________ |
Modified: svn:mergeinfo |
826 | 819 | Merged /trunk/phase3/skins/vector/screen.css:r80495,80610,80765,81177,81467,81490,81692,81707,81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |
Index: branches/REL1_17/phase3/docs/skin.txt |
— | — | @@ -1,8 +1,9 @@ |
2 | 2 | skin.txt |
3 | 3 | |
4 | | -MediaWiki's default skin is called Monobook, after the black-and-white photo of |
5 | | -a book, in the page background. This skin has been the default since MediaWiki |
6 | | -1.3 (2004). It is used on Wikipedia, and is popular on other sites. |
| 4 | +MediaWiki's default skin is called Vector. This has been the case since |
| 5 | +the 1.17 release (2011). This replaces the popular skin, Monobook which |
| 6 | +had been been the default since MediaWiki 1.3 (2004). It is now the |
| 7 | +default skin on Wikimedia Projects. |
7 | 8 | |
8 | 9 | There are three legacy skins which were introduced before MediaWiki 1.3: |
9 | 10 | |
— | — | @@ -15,7 +16,12 @@ |
16 | 17 | |
17 | 18 | * Cologne Blue: A nicer-looking alternative to Standard. |
18 | 19 | |
| 20 | +The other skin that is widely used (and is the MediaWiki default before 1.17) |
| 21 | +is Monobook. |
19 | 22 | |
| 23 | +* Monobook: Named after the black-and-white photo of a book, in the page background. |
| 24 | +This was introduced in the 2004 release of 1.3 |
| 25 | + |
20 | 26 | And there are four Monobook-derived skins which have been introduced since 1.3: |
21 | 27 | |
22 | 28 | * MySkin: Monobook without the CSS. The idea is that you customise it using user |
— | — | @@ -29,7 +35,6 @@ |
30 | 36 | |
31 | 37 | * Modern: An attractive blue/grey theme with sidebar and top bar. |
32 | 38 | |
33 | | - |
34 | 39 | == Custom CSS/JS == |
35 | 40 | |
36 | 41 | It is possible to customise the site CSS and JavaScript without editing any |
Index: branches/REL1_17/phase3/includes/User.php |
— | — | @@ -578,10 +578,13 @@ |
579 | 579 | return false; |
580 | 580 | } |
581 | 581 | |
582 | | - if( preg_match( '/[' . preg_quote( $wgInvalidUsernameCharacters, '/' ) . ']/', $name ) ) { |
583 | | - wfDebugLog( 'username', __METHOD__ . |
584 | | - ": '$name' invalid due to wgInvalidUsernameCharacters" ); |
585 | | - return false; |
| 582 | + // Preg yells if you try to give it an empty string |
| 583 | + if( $wgInvalidUsernameCharacters ) { |
| 584 | + if( preg_match( '/[' . preg_quote( $wgInvalidUsernameCharacters, '/' ) . ']/', $name ) ) { |
| 585 | + wfDebugLog( 'username', __METHOD__ . |
| 586 | + ": '$name' invalid due to wgInvalidUsernameCharacters" ); |
| 587 | + return false; |
| 588 | + } |
586 | 589 | } |
587 | 590 | |
588 | 591 | return self::isUsableName( $name ); |
Property changes on: branches/REL1_17/phase3/includes/User.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
589 | 592 | Merged /trunk/phase3/includes/User.php:r81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |
Index: branches/REL1_17/phase3/includes/BagOStuff.php |
— | — | @@ -727,6 +727,7 @@ |
728 | 728 | |
729 | 729 | $handle = $this->getReader(); |
730 | 730 | if ( !$handle ) { |
| 731 | + wfProfileOut( __METHOD__ ); |
731 | 732 | return null; |
732 | 733 | } |
733 | 734 | |
— | — | @@ -757,6 +758,7 @@ |
758 | 759 | |
759 | 760 | $handle = $this->getWriter(); |
760 | 761 | if ( !$handle ) { |
| 762 | + wfProfileOut( __METHOD__ ); |
761 | 763 | return false; |
762 | 764 | } |
763 | 765 | |
— | — | @@ -773,6 +775,7 @@ |
774 | 776 | |
775 | 777 | $handle = $this->getWriter(); |
776 | 778 | if ( !$handle ) { |
| 779 | + wfProfileOut( __METHOD__ ); |
777 | 780 | return false; |
778 | 781 | } |
779 | 782 | |
— | — | @@ -791,6 +794,7 @@ |
792 | 795 | $handle = $this->getWriter(); |
793 | 796 | |
794 | 797 | if ( !$handle ) { |
| 798 | + wfProfileOut( __METHOD__ ); |
795 | 799 | return false; |
796 | 800 | } |
797 | 801 | |
Index: branches/REL1_17/phase3/includes/diff/DifferenceEngine.php |
— | — | @@ -150,6 +150,8 @@ |
151 | 151 | URL=$url2 |
152 | 152 | CONTROL; |
153 | 153 | echo( $control ); |
| 154 | + |
| 155 | + wfProfileOut( __METHOD__ ); |
154 | 156 | return; |
155 | 157 | } |
156 | 158 | |
— | — | @@ -620,16 +622,20 @@ |
621 | 623 | $this->mCacheHit = true; |
622 | 624 | // Check if the diff should be hidden from this user |
623 | 625 | if ( !$this->loadRevisionData() ) { |
| 626 | + wfProfileOut( __METHOD__ ); |
624 | 627 | return false; |
625 | 628 | } elseif ( $this->mOldRev && !$this->mOldRev->userCan( Revision::DELETED_TEXT ) ) { |
| 629 | + wfProfileOut( __METHOD__ ); |
626 | 630 | return false; |
627 | 631 | } elseif ( $this->mNewRev && !$this->mNewRev->userCan( Revision::DELETED_TEXT ) ) { |
| 632 | + wfProfileOut( __METHOD__ ); |
628 | 633 | return false; |
629 | 634 | } |
630 | 635 | // Short-circuit |
631 | 636 | if ( $this->mOldRev && $this->mNewRev |
632 | 637 | && $this->mOldRev->getID() == $this->mNewRev->getID() ) |
633 | 638 | { |
| 639 | + wfProfileOut( __METHOD__ ); |
634 | 640 | return ''; |
635 | 641 | } |
636 | 642 | // Cacheable? |
— | — | @@ -757,6 +763,7 @@ |
758 | 764 | wfProfileOut( __METHOD__ . "-shellexec" ); |
759 | 765 | unlink( $tempName1 ); |
760 | 766 | unlink( $tempName2 ); |
| 767 | + wfProfileOut( __METHOD__ ); |
761 | 768 | return $difftext; |
762 | 769 | } |
763 | 770 | |
— | — | @@ -765,7 +772,9 @@ |
766 | 773 | $nta = explode( "\n", $wgContLang->segmentForDiff( $ntext ) ); |
767 | 774 | $diffs = new Diff( $ota, $nta ); |
768 | 775 | $formatter = new TableDiffFormatter(); |
769 | | - return $wgContLang->unsegmentForDiff( $formatter->format( $diffs ) ) . |
| 776 | + $difftext = $wgContLang->unsegmentForDiff( $formatter->format( $diffs ) ) . |
| 777 | + wfProfileOut( __METHOD__ ); |
| 778 | + return $difftext; |
770 | 779 | $this->debug(); |
771 | 780 | } |
772 | 781 | |
Index: branches/REL1_17/phase3/includes/Article.php |
— | — | @@ -1908,6 +1908,7 @@ |
1909 | 1909 | if ( !$rev ) { |
1910 | 1910 | wfDebug( "Article::replaceSection asked for bogus section (page: " . |
1911 | 1911 | $this->getId() . "; section: $section; edittime: $edittime)\n" ); |
| 1912 | + wfProfileOut( __METHOD__ ); |
1912 | 1913 | return null; |
1913 | 1914 | } |
1914 | 1915 | |
— | — | @@ -2089,12 +2090,12 @@ |
2090 | 2091 | $flags & EDIT_MINOR, null, null, &$flags, &$status ) ) ) |
2091 | 2092 | { |
2092 | 2093 | wfDebug( __METHOD__ . ": ArticleSave hook aborted save!\n" ); |
2093 | | - wfProfileOut( __METHOD__ ); |
2094 | 2094 | |
2095 | 2095 | if ( $status->isOK() ) { |
2096 | 2096 | $status->fatal( 'edit-hook-aborted' ); |
2097 | 2097 | } |
2098 | 2098 | |
| 2099 | + wfProfileOut( __METHOD__ ); |
2099 | 2100 | return $status; |
2100 | 2101 | } |
2101 | 2102 | |
Property changes on: branches/REL1_17/phase3/includes/Article.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
2102 | 2103 | Merged /trunk/phase3/includes/Article.php:r81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |
Index: branches/REL1_17/phase3/includes/parser/Tidy.php |
— | — | @@ -118,15 +118,13 @@ |
119 | 119 | $retval = -1; |
120 | 120 | } |
121 | 121 | |
122 | | - wfProfileOut( __METHOD__ ); |
123 | | - |
124 | 122 | if( !$stderr && $cleansource == '' && $text != '' ) { |
125 | 123 | // Some kind of error happened, so we couldn't get the corrected text. |
126 | 124 | // Just give up; we'll use the source text and append a warning. |
127 | | - return null; |
128 | | - } else { |
129 | | - return $cleansource; |
| 125 | + $cleansource = null; |
130 | 126 | } |
| 127 | + wfProfileOut( __METHOD__ ); |
| 128 | + return $cleansource; |
131 | 129 | } |
132 | 130 | |
133 | 131 | /** |
— | — | @@ -144,6 +142,7 @@ |
145 | 143 | |
146 | 144 | if( $stderr ) { |
147 | 145 | $retval = $tidy->getStatus(); |
| 146 | + wfProfileOut( __METHOD__ ); |
148 | 147 | return $tidy->errorBuffer; |
149 | 148 | } else { |
150 | 149 | $tidy->cleanRepair(); |
Index: branches/REL1_17/phase3/includes/parser/Parser.php |
— | — | @@ -2422,6 +2422,7 @@ |
2423 | 2423 | } |
2424 | 2424 | if ( $stack > 0 ) { |
2425 | 2425 | wfDebug( __METHOD__.": Invalid input; not enough close tags (stack $stack, state $state)\n" ); |
| 2426 | + wfProfileOut( __METHOD__ ); |
2426 | 2427 | return false; |
2427 | 2428 | } |
2428 | 2429 | wfProfileOut( __METHOD__ ); |
Property changes on: branches/REL1_17/phase3/includes/parser/Parser.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
2429 | 2430 | Merged /trunk/phase3/includes/parser/Parser.php:r81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |
Index: branches/REL1_17/phase3/includes/parser/Parser_LinkHooks.php |
— | — | @@ -265,9 +265,10 @@ |
266 | 266 | if( $return === false ) { |
267 | 267 | # False (no link) was returned, output plain wikitext |
268 | 268 | # Build it again as the hook is allowed to modify $paramText |
269 | | - return isset($paramText) ? "[[$titleText|$paramText]]" : "[[$titleText]]"; |
| 269 | + $return = isset($paramText) ? "[[$titleText|$paramText]]" : "[[$titleText]]"; |
270 | 270 | } |
271 | 271 | # Content was returned, return it |
| 272 | + wfProfileOut( __METHOD__ ); |
272 | 273 | return $return; |
273 | 274 | } |
274 | 275 | |
Index: branches/REL1_17/phase3/includes/parser/ParserOptions.php |
— | — | @@ -281,7 +281,7 @@ |
282 | 282 | // since it disables the parser cache, its value will always |
283 | 283 | // be 0 when this function is called by parsercache. |
284 | 284 | // The conditional is here to avoid a confusing 0 |
285 | | - if ( in_array( 'stubthreshold', $forOptions ) ) |
| 285 | + if ( true || in_array( 'stubthreshold', $forOptions ) ) |
286 | 286 | $confstr .= '!0' ; |
287 | 287 | else |
288 | 288 | $confstr .= '!*' ; |
Index: branches/REL1_17/phase3/includes/MessageCache.php |
— | — | @@ -376,6 +376,10 @@ |
377 | 377 | global $wgMaxMsgCacheEntrySize; |
378 | 378 | wfProfileIn( __METHOD__ ); |
379 | 379 | |
| 380 | + if ( $this->mDisable ) { |
| 381 | + wfProfileOut( __METHOD__ ); |
| 382 | + return; |
| 383 | + } |
380 | 384 | |
381 | 385 | list( $msg, $code ) = $this->figureMessage( $title ); |
382 | 386 | |
Index: branches/REL1_17/phase3/includes/Linker.php |
— | — | @@ -720,6 +720,7 @@ |
721 | 721 | return $this->linkKnown( $title, "$prefix$text$inside", array(), $query ) . $trail; |
722 | 722 | } |
723 | 723 | } else { |
| 724 | + wfProfileOut( __METHOD__ ); |
724 | 725 | return "<!-- ERROR -->{$prefix}{$text}{$trail}"; |
725 | 726 | } |
726 | 727 | } |
— | — | @@ -1670,12 +1671,17 @@ |
1671 | 1672 | * escape), or false for no accesskey attribute |
1672 | 1673 | */ |
1673 | 1674 | public function accesskey( $name ) { |
| 1675 | + if ( isset( $this->accesskeycache[$name] ) ) { |
| 1676 | + return $this->accesskeycache[$name]; |
| 1677 | + } |
1674 | 1678 | wfProfileIn( __METHOD__ ); |
1675 | 1679 | |
1676 | | - if ( wfEmptyMsg( "accesskey-$name" ) ) { |
| 1680 | + $message = wfMessage( "accesskey-$name" ); |
| 1681 | + |
| 1682 | + if ( !$message->exists() ) { |
1677 | 1683 | $accesskey = false; |
1678 | 1684 | } else { |
1679 | | - $accesskey = wfMsg( "accesskey-$name" ); |
| 1685 | + $accesskey = $message->plain(); |
1680 | 1686 | if ( $accesskey === '' || $accesskey === '-' ) { |
1681 | 1687 | # FIXME: Per standard MW behavior, a value of '-' means to suppress the |
1682 | 1688 | # attribute, but this is broken for accesskey: that might be a useful |
— | — | @@ -1685,7 +1691,7 @@ |
1686 | 1692 | } |
1687 | 1693 | |
1688 | 1694 | wfProfileOut( __METHOD__ ); |
1689 | | - return $accesskey; |
| 1695 | + return $this->accesskeycache[$name] = $accesskey; |
1690 | 1696 | } |
1691 | 1697 | |
1692 | 1698 | /** |
Index: branches/REL1_17/phase3/includes/ExternalEdit.php |
— | — | @@ -53,6 +53,11 @@ |
54 | 54 | } |
55 | 55 | $special=$wgLang->getNsText(NS_SPECIAL); |
56 | 56 | $control = <<<CONTROL |
| 57 | +; You're seeing this file because you're using Mediawiki's External Editor |
| 58 | +; feature. This is probably because you selected use external editor |
| 59 | +; in your preferences. To edit normally, either disable that preference |
| 60 | +; or go to the URL $url . |
| 61 | +; See http://www.mediawiki.org/wiki/Manual:External_editors for details. |
57 | 62 | [Process] |
58 | 63 | Type=$type |
59 | 64 | Engine=MediaWiki |
Index: branches/REL1_17/phase3/includes/AjaxDispatcher.php |
— | — | @@ -133,7 +133,7 @@ |
134 | 134 | } |
135 | 135 | } |
136 | 136 | |
| 137 | + $wgOut = null; |
137 | 138 | wfProfileOut( __METHOD__ ); |
138 | | - $wgOut = null; |
139 | 139 | } |
140 | 140 | } |
Index: branches/REL1_17/phase3/includes/db/DatabaseIbm_db2.php |
— | — | @@ -367,6 +367,7 @@ |
368 | 368 | "Server: $server, Database: $dbName, User: $user, Password: " |
369 | 369 | . substr( $password, 0, 3 ) . "...\n" ); |
370 | 370 | $this->installPrint( $this->lastError() . "\n" ); |
| 371 | + |
371 | 372 | wfProfileOut( __METHOD__ ); |
372 | 373 | return null; |
373 | 374 | } |
Index: branches/REL1_17/phase3/includes/Export.php |
— | — | @@ -177,8 +177,8 @@ |
178 | 178 | "</id>" . |
179 | 179 | "</contributor>"; |
180 | 180 | } |
| 181 | + $this->author_list .= "</contributors>"; |
181 | 182 | wfProfileOut( __METHOD__ ); |
182 | | - $this->author_list .= "</contributors>"; |
183 | 183 | } |
184 | 184 | |
185 | 185 | protected function dumpFrom( $cond = '' ) { |
Index: branches/REL1_17/phase3/includes/EditPage.php |
— | — | @@ -659,10 +659,10 @@ |
660 | 660 | // Custom edit intro for new sections |
661 | 661 | $this->section === 'new' ? 'MediaWiki:addsection-editintro' : '' ); |
662 | 662 | |
663 | | - wfProfileOut( __METHOD__ ); |
664 | | - |
665 | 663 | // Allow extensions to modify form data |
666 | 664 | wfRunHooks( 'EditPage::importFormData', array( $this, $request ) ); |
| 665 | + |
| 666 | + wfProfileOut( __METHOD__ ); |
667 | 667 | } |
668 | 668 | |
669 | 669 | /** |
— | — | @@ -788,6 +788,8 @@ |
789 | 789 | |
790 | 790 | if ( !wfRunHooks( 'EditPage::attemptSave', array( $this ) ) ) { |
791 | 791 | wfDebug( "Hook 'EditPage::attemptSave' aborted article saving\n" ); |
| 792 | + wfProfileOut( __METHOD__ . '-checks' ); |
| 793 | + wfProfileOut( __METHOD__ ); |
792 | 794 | return self::AS_HOOK_ERROR; |
793 | 795 | } |
794 | 796 | |
— | — | @@ -795,11 +797,12 @@ |
796 | 798 | if ( $this->mTitle->getNamespace() == NS_FILE && |
797 | 799 | Title::newFromRedirect( $this->textbox1 ) instanceof Title && |
798 | 800 | !$wgUser->isAllowed( 'upload' ) ) { |
799 | | - if ( $wgUser->isAnon() ) { |
800 | | - return self::AS_IMAGE_REDIRECT_ANON; |
801 | | - } else { |
802 | | - return self::AS_IMAGE_REDIRECT_LOGGED; |
803 | | - } |
| 801 | + $isAnon = $wgUser->isAnon(); |
| 802 | + |
| 803 | + wfProfileOut( __METHOD__ . '-checks' ); |
| 804 | + wfProfileOut( __METHOD__ ); |
| 805 | + |
| 806 | + return $isAnon ? self::AS_IMAGE_REDIRECT_ANON : self::AS_IMAGE_REDIRECT_LOGGED; |
804 | 807 | } |
805 | 808 | |
806 | 809 | # Check for spam |
— | — | @@ -1220,8 +1223,10 @@ |
1221 | 1224 | # Enabled article-related sidebar, toplinks, etc. |
1222 | 1225 | $wgOut->setArticleRelated( true ); |
1223 | 1226 | |
1224 | | - if ( $this->showHeader() === false ) |
| 1227 | + if ( $this->showHeader() === false ) { |
| 1228 | + wfProfileOut( __METHOD__ ); |
1225 | 1229 | return; |
| 1230 | + } |
1226 | 1231 | |
1227 | 1232 | $action = htmlspecialchars( $this->getActionURL( $wgTitle ) ); |
1228 | 1233 | |
— | — | @@ -1873,8 +1878,10 @@ |
1874 | 1879 | if ( $wgRawHtml && !$this->mTokenOk ) { |
1875 | 1880 | // Could be an offsite preview attempt. This is very unsafe if |
1876 | 1881 | // HTML is enabled, as it could be an attack. |
1877 | | - return $wgOut->parse( "<div class='previewnote'>" . |
| 1882 | + $parsedNote = $wgOut->parse( "<div class='previewnote'>" . |
1878 | 1883 | wfMsg( 'session_fail_preview_html' ) . "</div>" ); |
| 1884 | + wfProfileOut( __METHOD__ ); |
| 1885 | + return $parsedNote; |
1879 | 1886 | } |
1880 | 1887 | |
1881 | 1888 | # don't parse user css/js, show message about preview |
Index: branches/REL1_17/phase3/includes/api/ApiQueryAllUsers.php |
— | — | @@ -35,7 +35,6 @@ |
36 | 36 | * @ingroup API |
37 | 37 | */ |
38 | 38 | class ApiQueryAllUsers extends ApiQueryBase { |
39 | | - |
40 | 39 | public function __construct( $query, $moduleName ) { |
41 | 40 | parent::__construct( $query, $moduleName, 'au' ); |
42 | 41 | } |
— | — | @@ -52,7 +51,7 @@ |
53 | 52 | $fld_groups = isset( $prop['groups'] ); |
54 | 53 | $fld_registration = isset( $prop['registration'] ); |
55 | 54 | } else { |
56 | | - $fld_blockinfo = $fld_editcount = $fld_groups = $fld_registration = false; |
| 55 | + $fld_blockinfo = $fld_editcount = $fld_groups = $fld_registration = $fld_rights = false; |
57 | 56 | } |
58 | 57 | |
59 | 58 | $limit = $params['limit']; |
Index: branches/REL1_17/phase3/includes/resourceloader/ResourceLoaderSiteModule.php |
— | — | @@ -36,15 +36,14 @@ |
37 | 37 | global $wgHandheldStyle; |
38 | 38 | |
39 | 39 | $pages = array( |
40 | | - 'Common.js' => array( 'ns' => NS_MEDIAWIKI, 'type' => 'script' ), |
41 | | - 'Common.css' => array( 'ns' => NS_MEDIAWIKI, 'type' => 'style' ), |
42 | | - ucfirst( $context->getSkin() ) . '.js' => array( 'ns' => NS_MEDIAWIKI, 'type' => 'script' ), |
43 | | - ucfirst( $context->getSkin() ) . '.css' => array( 'ns' => NS_MEDIAWIKI, 'type' => 'style' ), |
44 | | - 'Print.css' => array( 'ns' => NS_MEDIAWIKI, 'type' => 'style', 'media' => 'print' ), |
| 40 | + 'MediaWiki:Common.js' => array( 'type' => 'script' ), |
| 41 | + 'MediaWiki:Common.css' => array( 'type' => 'style' ), |
| 42 | + 'MediaWiki:' . ucfirst( $context->getSkin() ) . '.js' => array( 'type' => 'script' ), |
| 43 | + 'MediaWiki:' . ucfirst( $context->getSkin() ) . '.css' => array( 'type' => 'style' ), |
| 44 | + 'MediaWiki:Print.css' => array( 'type' => 'style', 'media' => 'print' ), |
45 | 45 | ); |
46 | 46 | if ( $wgHandheldStyle ) { |
47 | | - $pages['Handheld.css'] = array( |
48 | | - 'ns' => NS_MEDIAWIKI, |
| 47 | + $pages['MediaWiki:Handheld.css'] = array( |
49 | 48 | 'type' => 'style', |
50 | 49 | 'media' => 'handheld' ); |
51 | 50 | } |
Index: branches/REL1_17/phase3/includes/resourceloader/ResourceLoader.php |
— | — | @@ -206,6 +206,7 @@ |
207 | 207 | foreach ( $name as $key => $value ) { |
208 | 208 | $this->register( $key, $value ); |
209 | 209 | } |
| 210 | + wfProfileOut( __METHOD__ ); |
210 | 211 | return; |
211 | 212 | } |
212 | 213 | |
— | — | @@ -441,6 +442,7 @@ |
442 | 443 | return '/* No modules requested. Max made me put this here */'; |
443 | 444 | } |
444 | 445 | |
| 446 | + wfProfileIn( __METHOD__ ); |
445 | 447 | // Pre-fetch blobs |
446 | 448 | if ( $context->shouldIncludeMessages() ) { |
447 | 449 | try { |
— | — | @@ -521,15 +523,16 @@ |
522 | 524 | } |
523 | 525 | } |
524 | 526 | |
525 | | - if ( $context->getDebug() ) { |
526 | | - return $exceptions . $out; |
527 | | - } else { |
| 527 | + if ( !$context->getDebug() ) { |
528 | 528 | if ( $context->getOnly() === 'styles' ) { |
529 | | - return $exceptions . $this->filter( 'minify-css', $out ); |
| 529 | + $out = $this->filter( 'minify-css', $out ); |
530 | 530 | } else { |
531 | | - return $exceptions . $this->filter( 'minify-js', $out ); |
| 531 | + $out = $this->filter( 'minify-js', $out ); |
532 | 532 | } |
533 | 533 | } |
| 534 | + |
| 535 | + wfProfileOut( __METHOD__ ); |
| 536 | + return $exceptions . $out; |
534 | 537 | } |
535 | 538 | |
536 | 539 | /* Static Methods */ |
Property changes on: branches/REL1_17/phase3/includes/resourceloader/ResourceLoader.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
537 | 540 | Merged /trunk/phase3/includes/resourceloader/ResourceLoader.php:r81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |
Index: branches/REL1_17/phase3/includes/resourceloader/ResourceLoaderUserModule.php |
— | — | @@ -31,12 +31,12 @@ |
32 | 32 | if ( $context->getUser() ) { |
33 | 33 | $username = $context->getUser(); |
34 | 34 | return array( |
35 | | - "$username/common.js" => array( 'ns' => NS_USER, 'type' => 'script' ), |
36 | | - "$username/" . $context->getSkin() . '.js' => |
37 | | - array( 'ns' => NS_USER, 'type' => 'script' ), |
38 | | - "$username/common.css" => array( 'ns' => NS_USER, 'type' => 'style' ), |
39 | | - "$username/" . $context->getSkin() . '.css' => |
40 | | - array( 'ns' => NS_USER, 'type' => 'style' ), |
| 35 | + "User:$username/common.js" => array( 'type' => 'script' ), |
| 36 | + "User:$username/" . $context->getSkin() . '.js' => |
| 37 | + array( 'type' => 'script' ), |
| 38 | + "User:$username/common.css" => array( 'type' => 'style' ), |
| 39 | + "User:$username/" . $context->getSkin() . '.css' => |
| 40 | + array( 'type' => 'style' ), |
41 | 41 | ); |
42 | 42 | } |
43 | 43 | return array(); |
Index: branches/REL1_17/phase3/includes/resourceloader/ResourceLoaderFileModule.php |
— | — | @@ -355,6 +355,7 @@ |
356 | 356 | // If a module is nothing but a list of dependencies, we need to avoid |
357 | 357 | // giving max() an empty array |
358 | 358 | if ( count( $files ) === 0 ) { |
| 359 | + wfProfileOut( __METHOD__ ); |
359 | 360 | return $this->modifiedTime[$context->getHash()] = 1; |
360 | 361 | } |
361 | 362 | |
— | — | @@ -364,6 +365,7 @@ |
365 | 366 | $this->modifiedTime[$context->getHash()] = max( |
366 | 367 | $filesMtime, |
367 | 368 | $this->getMsgBlobMtime( $context->getLanguage() ) ); |
| 369 | + |
368 | 370 | wfProfileOut( __METHOD__ ); |
369 | 371 | return $this->modifiedTime[$context->getHash()]; |
370 | 372 | } |
Index: branches/REL1_17/phase3/includes/resourceloader/ResourceLoaderWikiModule.php |
— | — | @@ -42,12 +42,12 @@ |
43 | 43 | |
44 | 44 | /* Protected Methods */ |
45 | 45 | |
46 | | - protected function getContent( $page, $ns ) { |
47 | | - if ( $ns === NS_MEDIAWIKI ) { |
48 | | - return wfEmptyMsg( $page ) ? '' : wfMsgExt( $page, 'content' ); |
| 46 | + protected function getContent( $title ) { |
| 47 | + if ( $title->getNamespace() === NS_MEDIAWIKI ) { |
| 48 | + $dbkey = $title->getDBkey(); |
| 49 | + return wfEmptyMsg( $dbkey ) ? '' : wfMsgExt( $dbkey, 'content' ); |
49 | 50 | } |
50 | | - $title = Title::newFromText( $page, $ns ); |
51 | | - if ( !$title || !$title->isCssJsSubpage() ) { |
| 51 | + if ( !$title->isCssJsSubpage() ) { |
52 | 52 | return null; |
53 | 53 | } |
54 | 54 | $revision = Revision::newFromTitle( $title ); |
— | — | @@ -61,15 +61,21 @@ |
62 | 62 | |
63 | 63 | public function getScript( ResourceLoaderContext $context ) { |
64 | 64 | $scripts = ''; |
65 | | - foreach ( $this->getPages( $context ) as $page => $options ) { |
| 65 | + foreach ( $this->getPages( $context ) as $titleText => $options ) { |
66 | 66 | if ( $options['type'] !== 'script' ) { |
67 | 67 | continue; |
68 | 68 | } |
69 | | - $script = $this->getContent( $page, $options['ns'] ); |
70 | | - if ( $script ) { |
71 | | - $ns = MWNamespace::getCanonicalName( $options['ns'] ); |
72 | | - $scripts .= "/* $ns:$page */\n$script\n"; |
| 69 | + $title = Title::newFromText( $titleText ); |
| 70 | + if ( !$title ) { |
| 71 | + continue; |
73 | 72 | } |
| 73 | + $script = $this->getContent( $title ); |
| 74 | + if ( strval( $script ) !== '' ) { |
| 75 | + if ( strpos( $titleText, '*/' ) === false ) { |
| 76 | + $scripts .= "/* $titleText */\n"; |
| 77 | + } |
| 78 | + $scripts .= $script . "\n"; |
| 79 | + } |
74 | 80 | } |
75 | 81 | return $scripts; |
76 | 82 | } |
— | — | @@ -77,13 +83,17 @@ |
78 | 84 | public function getStyles( ResourceLoaderContext $context ) { |
79 | 85 | |
80 | 86 | $styles = array(); |
81 | | - foreach ( $this->getPages( $context ) as $page => $options ) { |
| 87 | + foreach ( $this->getPages( $context ) as $titleText => $options ) { |
82 | 88 | if ( $options['type'] !== 'style' ) { |
83 | 89 | continue; |
84 | 90 | } |
| 91 | + $title = Title::newFromText( $titleText ); |
| 92 | + if ( !$title ) { |
| 93 | + continue; |
| 94 | + } |
85 | 95 | $media = isset( $options['media'] ) ? $options['media'] : 'all'; |
86 | | - $style = $this->getContent( $page, $options['ns'] ); |
87 | | - if ( !$style ) { |
| 96 | + $style = $this->getContent( $title ); |
| 97 | + if ( strval( $style ) === '' ) { |
88 | 98 | continue; |
89 | 99 | } |
90 | 100 | if ( $this->getFlip( $context ) ) { |
— | — | @@ -92,8 +102,10 @@ |
93 | 103 | if ( !isset( $styles[$media] ) ) { |
94 | 104 | $styles[$media] = ''; |
95 | 105 | } |
96 | | - $ns = MWNamespace::getCanonicalName( $options['ns'] ); |
97 | | - $styles[$media] .= "/* $ns:$page */\n$style\n"; |
| 106 | + if ( strpos( $titleText, '*/' ) === false ) { |
| 107 | + $styles[$media] .= "/* $titleText */\n"; |
| 108 | + } |
| 109 | + $styles[$media] .= $style . "\n"; |
98 | 110 | } |
99 | 111 | return $styles; |
100 | 112 | } |
— | — | @@ -104,17 +116,16 @@ |
105 | 117 | return $this->modifiedTime[$hash]; |
106 | 118 | } |
107 | 119 | |
108 | | - $titles = array(); |
109 | | - foreach ( $this->getPages( $context ) as $page => $options ) { |
110 | | - $titles[$options['ns']][$page] = true; |
| 120 | + $batch = new LinkBatch; |
| 121 | + foreach ( $this->getPages( $context ) as $titleText => $options ) { |
| 122 | + $batch->addObj( Title::newFromText( $titleText ) ); |
111 | 123 | } |
112 | 124 | |
113 | 125 | $modifiedTime = 1; // wfTimestamp() interprets 0 as "now" |
114 | | - |
115 | | - if ( $titles ) { |
| 126 | + if ( !$batch->isEmpty() ) { |
116 | 127 | $dbr = wfGetDB( DB_SLAVE ); |
117 | 128 | $latest = $dbr->selectField( 'page', 'MAX(page_touched)', |
118 | | - $dbr->makeWhereFrom2d( $titles, 'page_namespace', 'page_title' ), |
| 129 | + $batch->constructSet( 'page', $dbr ), |
119 | 130 | __METHOD__ ); |
120 | 131 | |
121 | 132 | if ( $latest ) { |
— | — | @@ -122,6 +133,7 @@ |
123 | 134 | } |
124 | 135 | } |
125 | 136 | |
126 | | - return $this->modifiedTime[$hash] = $modifiedTime; |
| 137 | + $this->modifiedTime[$hash] = $modifiedTime; |
| 138 | + return $modifiedTime; |
127 | 139 | } |
128 | 140 | } |
Index: branches/REL1_17/phase3/includes/media/SVGMetadataExtractor.php |
— | — | @@ -48,7 +48,7 @@ |
49 | 49 | */ |
50 | 50 | function __construct( $source ) { |
51 | 51 | $this->reader = new XMLReader(); |
52 | | - $this->reader->open( $source ); |
| 52 | + $this->reader->open( $source, null, LIBXML_NOERROR | LIBXML_NOWARNING ); |
53 | 53 | |
54 | 54 | $this->metadata['width'] = self::DEFAULT_WIDTH; |
55 | 55 | $this->metadata['height'] = self::DEFAULT_HEIGHT; |
Index: branches/REL1_17/phase3/includes/Title.php |
— | — | @@ -2104,8 +2104,6 @@ |
2105 | 2105 | Title::purgeExpiredRestrictions(); |
2106 | 2106 | } |
2107 | 2107 | |
2108 | | - wfProfileOut( __METHOD__ ); |
2109 | | - |
2110 | 2108 | if ( $getPages ) { |
2111 | 2109 | $this->mCascadeSources = $sources; |
2112 | 2110 | $this->mCascadingRestrictions = $pagerestrictions; |
— | — | @@ -2113,6 +2111,7 @@ |
2114 | 2112 | $this->mHasCascadingRestrictions = $sources; |
2115 | 2113 | } |
2116 | 2114 | |
| 2115 | + wfProfileOut( __METHOD__ ); |
2117 | 2116 | return array( $sources, $pagerestrictions ); |
2118 | 2117 | } |
2119 | 2118 | |
Property changes on: branches/REL1_17/phase3/includes/Title.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
2120 | 2119 | Merged /trunk/phase3/includes/Title.php:r81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |
Index: branches/REL1_17/phase3/includes/job/RefreshLinksJob.php |
— | — | @@ -99,6 +99,8 @@ |
100 | 100 | $jobs[] = new RefreshLinksJob( $title, '' ); |
101 | 101 | } |
102 | 102 | Job::batchInsert( $jobs ); |
| 103 | + |
| 104 | + wfProfileOut( __METHOD__ ); |
103 | 105 | return true; |
104 | 106 | } |
105 | 107 | # Re-parse each page that transcludes this page and update their tracking links... |
Index: branches/REL1_17/phase3/includes/libs/JavaScriptDistiller.php |
— | — | @@ -77,8 +77,8 @@ |
78 | 78 | // Protect strings. The original code had [^\'\\v] here, but that didn't armor multiline |
79 | 79 | // strings correctly. This also armors multiline strings that don't have backslashes at the |
80 | 80 | // end of the line (these are invalid), but that's fine because we're just armoring here. |
81 | | - $parser->add( '/\'[^\']*\'/', '$1' ); |
82 | | - $parser->add( '/"[^"]*"/', '$1' ); |
| 81 | + $parser->add( '/\'([^\'\\\\]*(\\\\.[^\'\\\\]*)*)\'/', '$1' ); |
| 82 | + $parser->add( '/"([^"\\\\]*(\\\\.[^"\\\\]*)*)"/', '$1' ); |
83 | 83 | // Protect regular expressions |
84 | 84 | $parser->add( '/[ \\t]+(\\/[^\\/\\r\\n\\*][^\\/\\r\\n]*\\/g?i?)/', '$2' ); |
85 | 85 | $parser->add( '/[^\\w\\$\\/\'"*)\\?:]\\/[^\\/\\r\\n\\*][^\\/\\r\\n]*\\/g?i?/', '$1' ); |
Index: branches/REL1_17/phase3/includes/specials/SpecialAllmessages.php |
— | — | @@ -202,8 +202,8 @@ |
203 | 203 | |
204 | 204 | // Normalise message names so they look like page titles |
205 | 205 | $messageNames = array_map( array( $this->lang, 'ucfirst' ), $messageNames ); |
206 | | - wfProfileIn( __METHOD__ ); |
207 | 206 | |
| 207 | + wfProfileOut( __METHOD__ ); |
208 | 208 | return $messageNames; |
209 | 209 | } |
210 | 210 | |
Index: branches/REL1_17/phase3/includes/DjVuImage.php |
— | — | @@ -226,6 +226,8 @@ |
227 | 227 | */ |
228 | 228 | function retrieveMetaData() { |
229 | 229 | global $wgDjvuToXML, $wgDjvuDump, $wgDjvuTxt; |
| 230 | + wfProfileIn( __METHOD__ ); |
| 231 | + |
230 | 232 | if ( isset( $wgDjvuDump ) ) { |
231 | 233 | # djvudump is faster as of version 3.5 |
232 | 234 | # http://sourceforge.net/tracker/index.php?func=detail&aid=1704049&group_id=32953&atid=406583 |
— | — | @@ -272,6 +274,7 @@ |
273 | 275 | $xml = $xml . $txt. '</mw-djvu>' ; |
274 | 276 | } |
275 | 277 | } |
| 278 | + wfProfileOut( __METHOD__ ); |
276 | 279 | return $xml; |
277 | 280 | } |
278 | 281 | |
Index: branches/REL1_17/phase3/thumb.php |
— | — | @@ -56,11 +56,13 @@ |
57 | 57 | $bits = explode( '!', $fileName, 2 ); |
58 | 58 | if( !isset($bits[1]) ) { |
59 | 59 | wfThumbError( 404, wfMsg( 'badtitletext' ) ); |
| 60 | + wfProfileOut( __METHOD__ ); |
60 | 61 | return; |
61 | 62 | } |
62 | 63 | $title = Title::makeTitleSafe( NS_FILE, $bits[1] ); |
63 | 64 | if( is_null($title) ) { |
64 | 65 | wfThumbError( 404, wfMsg( 'badtitletext' ) ); |
| 66 | + wfProfileOut( __METHOD__ ); |
65 | 67 | return; |
66 | 68 | } |
67 | 69 | $img = RepoGroup::singleton()->getLocalRepo()->newFromArchiveName( $title, $fileName ); |
— | — | @@ -73,6 +75,7 @@ |
74 | 76 | if ( !$img->getTitle()->userCanRead() ) { |
75 | 77 | wfThumbError( 403, 'Access denied. You do not have permission to access ' . |
76 | 78 | 'the source file.' ); |
| 79 | + wfProfileOut( __METHOD__ ); |
77 | 80 | return; |
78 | 81 | } |
79 | 82 | $headers[] = 'Cache-Control: private'; |
— | — | @@ -81,15 +84,18 @@ |
82 | 85 | |
83 | 86 | if ( !$img ) { |
84 | 87 | wfThumbError( 404, wfMsg( 'badtitletext' ) ); |
| 88 | + wfProfileOut( __METHOD__ ); |
85 | 89 | return; |
86 | 90 | } |
87 | 91 | if ( !$img->exists() ) { |
88 | 92 | wfThumbError( 404, 'The source file for the specified thumbnail does not exist.' ); |
| 93 | + wfProfileOut( __METHOD__ ); |
89 | 94 | return; |
90 | 95 | } |
91 | 96 | $sourcePath = $img->getPath(); |
92 | 97 | if ( $sourcePath === false ) { |
93 | 98 | wfThumbError( 500, 'The source file is not locally accessible.' ); |
| 99 | + wfProfileOut( __METHOD__ ); |
94 | 100 | return; |
95 | 101 | } |
96 | 102 | |
— | — | @@ -105,6 +111,7 @@ |
106 | 112 | wfRestoreWarnings(); |
107 | 113 | if ( $stat['mtime'] <= $imsUnix ) { |
108 | 114 | header( 'HTTP/1.1 304 Not Modified' ); |
| 115 | + wfProfileOut( __METHOD__ ); |
109 | 116 | return; |
110 | 117 | } |
111 | 118 | } |
— | — | @@ -116,11 +123,13 @@ |
117 | 124 | |
118 | 125 | if ( is_file( $thumbPath ) ) { |
119 | 126 | wfStreamFile( $thumbPath, $headers ); |
| 127 | + wfProfileOut( __METHOD__ ); |
120 | 128 | return; |
121 | 129 | } |
122 | 130 | } |
123 | 131 | } catch ( MWException $e ) { |
124 | 132 | wfThumbError( 500, $e->getHTML() ); |
| 133 | + wfProfileOut( __METHOD__ ); |
125 | 134 | return; |
126 | 135 | } |
127 | 136 | |
Index: branches/REL1_17/phase3/languages/LanguageConverter.php |
— | — | @@ -345,6 +345,7 @@ |
346 | 346 | if ( !$toVariant ) { |
347 | 347 | $toVariant = $this->getPreferredVariant(); |
348 | 348 | if ( !$toVariant ) { |
| 349 | + wfProfileOut( __METHOD__ ); |
349 | 350 | return $text; |
350 | 351 | } |
351 | 352 | } |
Property changes on: branches/REL1_17/phase3/languages/LanguageConverter.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
352 | 353 | Merged /trunk/phase3/languages/LanguageConverter.php:r81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |
Index: branches/REL1_17/phase3/languages/classes/LanguageEo.php |
— | — | @@ -41,7 +41,7 @@ |
42 | 42 | if ( strcasecmp( $in, 'x' ) == 0 && strcasecmp( $out, 'utf-8' ) == 0 ) { |
43 | 43 | return preg_replace_callback ( |
44 | 44 | '/([cghjsu]x?)((?:xx)*)(?!x)/i', |
45 | | - array( $this, 'strrtuxCallback' ), $string ); |
| 45 | + array( $this, 'strrtxuCallback' ), $string ); |
46 | 46 | } else if ( strcasecmp( $in, 'UTF-8' ) == 0 && strcasecmp( $out, 'x' ) == 0 ) { |
47 | 47 | # Double Xs only if they follow cxapelutaj literoj. |
48 | 48 | return preg_replace_callback( |
Property changes on: branches/REL1_17/phase3/languages/classes/LanguageEo.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
49 | 49 | Merged /trunk/phase3/languages/classes/LanguageEo.php:r81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |
Index: branches/REL1_17/phase3/RELEASE-NOTES |
— | — | @@ -504,6 +504,12 @@ |
505 | 505 | redirect revision with no page. |
506 | 506 | * (bug 15641) Fixed permissions checks in Special:Import which allowed users without |
507 | 507 | the 'import' permission to import pages from configured import sources. |
| 508 | +* (bug 26449) Keep underlines from headings outside of tables and thumbs by |
| 509 | + adding overflow:hidden to h1,h2,h3,h4,h5,h6 (also fixes editsection bunching). |
| 510 | +* (bug 26708) Remove background-color:white from tables in Monobook and Vector. |
| 511 | +* (bug 26781) {{PAGENAME}} and related parser functions escape their output better. |
| 512 | +* (bug 26716) Provide link to instructions for external editor related preferences |
| 513 | + and add a comment to the ini control file explaining what is going on. |
508 | 514 | |
509 | 515 | === API changes in 1.17 === |
510 | 516 | * BREAKING CHANGE: action=patrol now requires POST |
— | — | @@ -633,9 +639,9 @@ |
634 | 640 | * Rusyn (rue) (new) |
635 | 641 | |
636 | 642 | * (bug 23156) Commafy and search normalization updated for Belarusian |
637 | | - (Taraškievica). |
638 | | -* (bug 23283) Native name for Old English -> Ænglisc. |
639 | | -* (bug 23364) Native name for Azerbaijani -> Azərbaycanca. |
| 643 | + (Tara�kievica). |
| 644 | +* (bug 23283) Native name for Old English -> �nglisc. |
| 645 | +* (bug 23364) Native name for Azerbaijani -> Az?rbaycanca. |
640 | 646 | * (bug 24593) Native name for Sorani now uses only Arabic script. |
641 | 647 | * (bug 24628) Generic translations for NS_USER/NS_USER_TALK for Esperanto. |
642 | 648 | * (bug 24917) Polish as fallback for Kashubia. |
Property changes on: branches/REL1_17/phase3/RELEASE-NOTES |
___________________________________________________________________ |
Modified: svn:mergeinfo |
643 | 649 | Merged /trunk/phase3/RELEASE-NOTES:r80495,80610,80765,81177,81467,81490,81692,81707,81729,81765,81778,81812,81854,81890-81894,81896-81898,81900,81955 |