Property changes on: branches/querypage-work2/phase3/maintenance/deleteSelfExternals.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1 | 1 | Merged /trunk/phase3/maintenance/deleteSelfExternals.php:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Index: branches/querypage-work2/phase3/maintenance/tests/UploadFromUrlTestSuite.php |
— | — | @@ -0,0 +1,168 @@ |
| 2 | +<?php |
| 3 | + |
| 4 | +require_once('UploadFromUrlTest.php'); |
| 5 | + |
| 6 | +class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite |
| 7 | +{ |
| 8 | + public static function addTables(&$tables) { |
| 9 | + $tables[] = 'user_properties'; |
| 10 | + $tables[] = 'filearchive'; |
| 11 | + $tables[] = 'logging'; |
| 12 | + $tables[] = 'updatelog'; |
| 13 | + $tables[] = 'iwlinks'; |
| 14 | + return true; |
| 15 | + } |
| 16 | + |
| 17 | + function setUp() { |
| 18 | + global $wgParser, $wgParserConf, $IP, $messageMemc, $wgMemc, $wgDeferredUpdateList, |
| 19 | + $wgUser, $wgLang, $wgOut, $wgRequest, $wgStyleDirectory, $wgEnableParserCache, |
| 20 | + $wgMessageCache, $wgUseDatabaseMessages, $wgMsgCacheExpiry, $parserMemc, |
| 21 | + $wgNamespaceAliases, $wgNamespaceProtection, $wgLocalFileRepo, |
| 22 | + $wgNamespacesWithSubpages, $wgThumbnailScriptPath, $wgScriptPath, |
| 23 | + $wgArticlePath, $wgStyleSheetPath, $wgScript, $wgStylePath; |
| 24 | + |
| 25 | + $wgScript = '/index.php'; |
| 26 | + $wgScriptPath = '/'; |
| 27 | + $wgArticlePath = '/wiki/$1'; |
| 28 | + $wgStyleSheetPath = '/skins'; |
| 29 | + $wgStylePath = '/skins'; |
| 30 | + $wgThumbnailScriptPath = false; |
| 31 | + $wgLocalFileRepo = array( |
| 32 | + 'class' => 'LocalRepo', |
| 33 | + 'name' => 'local', |
| 34 | + 'directory' => 'test-repo', |
| 35 | + 'url' => 'http://example.com/images', |
| 36 | + 'hashLevels' => 2, |
| 37 | + 'transformVia404' => false, |
| 38 | + ); |
| 39 | + $wgNamespaceProtection[NS_MEDIAWIKI] = 'editinterface'; |
| 40 | + $wgNamespaceAliases['Image'] = NS_FILE; |
| 41 | + $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK; |
| 42 | + |
| 43 | + |
| 44 | + $wgEnableParserCache = false; |
| 45 | + $wgDeferredUpdateList = array(); |
| 46 | + $wgMemc =& wfGetMainCache(); |
| 47 | + $messageMemc =& wfGetMessageCacheStorage(); |
| 48 | + $parserMemc =& wfGetParserCacheStorage(); |
| 49 | + |
| 50 | + $wgContLang = new StubContLang; |
| 51 | + $wgUser = new StubUser; |
| 52 | + $wgLang = new StubUserLang; |
| 53 | + $wgOut = new StubObject( 'wgOut', 'OutputPage' ); |
| 54 | + $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) ); |
| 55 | + $wgRequest = new WebRequest; |
| 56 | + |
| 57 | + $wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache', |
| 58 | + array( $messageMemc, $wgUseDatabaseMessages, |
| 59 | + $wgMsgCacheExpiry, wfWikiID() ) ); |
| 60 | + if( $wgStyleDirectory === false) $wgStyleDirectory = "$IP/skins"; |
| 61 | + |
| 62 | + } |
| 63 | + |
| 64 | + public function tearDown() { |
| 65 | + $this->teardownUploadDir($this->uploadDir); |
| 66 | + } |
| 67 | + |
| 68 | + private $uploadDir; |
| 69 | + private $keepUploads; |
| 70 | + /** |
| 71 | + * Remove the dummy uploads directory |
| 72 | + */ |
| 73 | + private function teardownUploadDir( $dir ) { |
| 74 | + if ( $this->keepUploads ) { |
| 75 | + return; |
| 76 | + } |
| 77 | + |
| 78 | + // delete the files first, then the dirs. |
| 79 | + self::deleteFiles( |
| 80 | + array ( |
| 81 | + "$dir/3/3a/Foobar.jpg", |
| 82 | + "$dir/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg", |
| 83 | + "$dir/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg", |
| 84 | + "$dir/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg", |
| 85 | + "$dir/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg", |
| 86 | + |
| 87 | + "$dir/0/09/Bad.jpg", |
| 88 | + ) |
| 89 | + ); |
| 90 | + |
| 91 | + self::deleteDirs( |
| 92 | + array ( |
| 93 | + "$dir/3/3a", |
| 94 | + "$dir/3", |
| 95 | + "$dir/thumb/6/65", |
| 96 | + "$dir/thumb/6", |
| 97 | + "$dir/thumb/3/3a/Foobar.jpg", |
| 98 | + "$dir/thumb/3/3a", |
| 99 | + "$dir/thumb/3", |
| 100 | + |
| 101 | + "$dir/0/09/", |
| 102 | + "$dir/0/", |
| 103 | + |
| 104 | + "$dir/thumb", |
| 105 | + "$dir", |
| 106 | + ) |
| 107 | + ); |
| 108 | + } |
| 109 | + |
| 110 | + |
| 111 | + /** |
| 112 | + * Delete the specified files, if they exist. |
| 113 | + * @param array $files full paths to files to delete. |
| 114 | + */ |
| 115 | + private static function deleteFiles( $files ) { |
| 116 | + foreach( $files as $file ) { |
| 117 | + if( file_exists( $file ) ) { |
| 118 | + unlink( $file ); |
| 119 | + } |
| 120 | + } |
| 121 | + } |
| 122 | + /** |
| 123 | + * Delete the specified directories, if they exist. Must be empty. |
| 124 | + * @param array $dirs full paths to directories to delete. |
| 125 | + */ |
| 126 | + private static function deleteDirs( $dirs ) { |
| 127 | + foreach( $dirs as $dir ) { |
| 128 | + if( is_dir( $dir ) ) { |
| 129 | + rmdir( $dir ); |
| 130 | + } |
| 131 | + } |
| 132 | + } |
| 133 | + |
| 134 | + /** |
| 135 | + * Create a dummy uploads directory which will contain a couple |
| 136 | + * of files in order to pass existence tests. |
| 137 | + * @return string The directory |
| 138 | + */ |
| 139 | + private function setupUploadDir() { |
| 140 | + global $IP; |
| 141 | + if ( $this->keepUploads ) { |
| 142 | + $dir = wfTempDir() . '/mwParser-images'; |
| 143 | + if ( is_dir( $dir ) ) { |
| 144 | + return $dir; |
| 145 | + } |
| 146 | + } else { |
| 147 | + $dir = wfTempDir() . "/mwParser-" . mt_rand() . "-images"; |
| 148 | + } |
| 149 | + |
| 150 | + wfDebug( "Creating upload directory $dir\n" ); |
| 151 | + if ( file_exists( $dir ) ) { |
| 152 | + wfDebug( "Already exists!\n" ); |
| 153 | + return $dir; |
| 154 | + } |
| 155 | + wfMkdirParents( $dir . '/3/3a' ); |
| 156 | + copy( "$IP/skins/monobook/headbg.jpg", "$dir/3/3a/Foobar.jpg" ); |
| 157 | + |
| 158 | + wfMkdirParents( $dir . '/0/09' ); |
| 159 | + copy( "$IP/skins/monobook/headbg.jpg", "$dir/0/09/Bad.jpg" ); |
| 160 | + return $dir; |
| 161 | + } |
| 162 | + |
| 163 | + public static function suite() |
| 164 | + { |
| 165 | + return new UploadFromUrlTestSuite('UploadFromUrlTest'); |
| 166 | + } |
| 167 | + |
| 168 | +} |
| 169 | + |
Property changes on: branches/querypage-work2/phase3/maintenance/tests/UploadFromUrlTestSuite.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 170 | + native |
Added: svn:eol-syle |
2 | 171 | + native |
Index: branches/querypage-work2/phase3/maintenance/tests/UploadFromUrlTest.php |
— | — | @@ -13,9 +13,10 @@ |
14 | 14 | class UploadFromUrlTest extends ApiSetup { |
15 | 15 | |
16 | 16 | function setUp() { |
17 | | - global $wgEnableUploads, $wgLocalFileRepo; |
| 17 | + global $wgEnableUploads, $wgLocalFileRepo, $wgAllowCopyUploads; |
18 | 18 | |
19 | 19 | $wgEnableUploads = true; |
| 20 | + $wgAllowCopyUploads = true; |
20 | 21 | parent::setup(); |
21 | 22 | $wgLocalFileRepo = array( |
22 | 23 | 'class' => 'LocalRepo', |
— | — | @@ -172,7 +173,7 @@ |
173 | 174 | $job = Job::pop(); |
174 | 175 | $this->assertEquals( 'UploadFromUrlJob', get_class($job) ); |
175 | 176 | |
176 | | - $status = $job->run(); |
| 177 | + $status = $job->run(); |
177 | 178 | $this->assertTrue( $status->isOk() ); |
178 | 179 | |
179 | 180 | return $data; |
Index: branches/querypage-work2/phase3/maintenance/tests/phpunit.xml |
— | — | @@ -32,7 +32,7 @@ |
33 | 33 | <file>TitlePermissionTest.php</file> |
34 | 34 | <file>TitleTest.php</file> |
35 | 35 | <file>UploadTest.php</file> |
36 | | - <file>UploadFromUrlTest.php</file> |
| 36 | + <file>UploadFromUrlTestSuite.php</file> |
37 | 37 | <file>XmlTest.php</file> |
38 | 38 | </testsuite> |
39 | 39 | <groups> |
Property changes on: branches/querypage-work2/phase3/maintenance/populateRevisionLength.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
40 | 40 | Merged /trunk/phase3/maintenance/populateRevisionLength.php:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Property changes on: branches/querypage-work2/phase3/maintenance/cleanupTable.inc |
___________________________________________________________________ |
Modified: svn:mergeinfo |
41 | 41 | Merged /trunk/phase3/maintenance/cleanupTable.inc:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Property changes on: branches/querypage-work2/phase3/skins/common/jquery.js |
___________________________________________________________________ |
Modified: svn:mergeinfo |
42 | 42 | Merged /trunk/phase3/skins/common/jquery.js:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Property changes on: branches/querypage-work2/phase3/skins/common/jquery.min.js |
___________________________________________________________________ |
Modified: svn:mergeinfo |
43 | 43 | Merged /trunk/phase3/skins/common/jquery.min.js:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Index: branches/querypage-work2/phase3/skins/common/wikibits.js |
— | — | @@ -25,8 +25,14 @@ |
26 | 26 | var opera7_bugs = is_opera_seven && !is_opera_95; |
27 | 27 | var opera95_bugs = /opera\/(9\.5)/.test( clientPC ); |
28 | 28 | } |
29 | | -// Start at 4 to minimize the chance of breaking on IE10 :) |
30 | | -var ie6_bugs = /msie [4-6]/.test( clientPC ); |
| 29 | +// As recommended by <http://msdn.microsoft.com/en-us/library/ms537509.aspx>, |
| 30 | +// avoiding false positives from moronic extensions that append to the IE UA |
| 31 | +// string (bug 23171) |
| 32 | +var ie6_bugs = false; |
| 33 | +if ( /MSIE ([0-9]{1,}[\.0-9]{0,})/.exec( clientPC ) != null |
| 34 | +&& parseFloat( RegExp.$1 ) <= 6.0 ) { |
| 35 | + ie6_bugs = true; |
| 36 | +} |
31 | 37 | |
32 | 38 | // Global external objects used by this script. |
33 | 39 | /*extern ta, stylepath, skin */ |
Property changes on: branches/querypage-work2/phase3/includes/json/Services_JSON.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
34 | 40 | Merged /trunk/phase3/includes/json/Services_JSON.php:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Index: branches/querypage-work2/phase3/includes/Article.php |
— | — | @@ -1604,7 +1604,7 @@ |
1605 | 1605 | /** |
1606 | 1606 | * Insert a new empty page record for this article. |
1607 | 1607 | * This *must* be followed up by creating a revision |
1608 | | - * and running $this->updateToLatest( $rev_id ); |
| 1608 | + * and running $this->updateRevisionOn( ... ); |
1609 | 1609 | * or else the record will be left in a funky state. |
1610 | 1610 | * Best if all done inside a transaction. |
1611 | 1611 | * |
Property changes on: branches/querypage-work2/phase3/includes/OutputPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1612 | 1612 | Merged /trunk/phase3/includes/OutputPage.php:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Property changes on: branches/querypage-work2/phase3/includes/HistoryPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1613 | 1613 | Merged /trunk/phase3/includes/HistoryPage.php:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Property changes on: branches/querypage-work2/phase3/includes/api |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1614 | 1614 | Merged /trunk/phase3/includes/api:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Property changes on: branches/querypage-work2/phase3/includes/ChangesList.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1615 | 1615 | Merged /trunk/phase3/includes/ChangesList.php:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Property changes on: branches/querypage-work2/phase3/includes/ConfEditor.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1616 | 1616 | Merged /trunk/phase3/includes/ConfEditor.php:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Index: branches/querypage-work2/phase3/includes/DefaultSettings.php |
— | — | @@ -145,7 +145,7 @@ |
146 | 146 | * asset paths as seen by users |
147 | 147 | */ |
148 | 148 | $wgStylePath = false; ///< defaults to "{$wgScriptPath}/skins" |
149 | | -$wgLocalStylePath = false; ///< defaults to the same value as $wgStylePath, and shouldn't point to an external domain |
| 149 | +$wgLocalStylePath = false; ///< defaults to "{$wgScriptPath}/skins", shouldn't point to an external domain |
150 | 150 | $wgExtensionAssetsPath = false; ///< defaults to "{$wgScriptPath}/extensions" |
151 | 151 | |
152 | 152 | /** |
— | — | @@ -1683,7 +1683,7 @@ |
1684 | 1684 | * to ensure that client-side caches do not keep obsolete copies of global |
1685 | 1685 | * styles. |
1686 | 1686 | */ |
1687 | | -$wgStyleVersion = '274'; |
| 1687 | +$wgStyleVersion = '275'; |
1688 | 1688 | |
1689 | 1689 | |
1690 | 1690 | # Server-side caching: |
— | — | @@ -4204,8 +4204,6 @@ |
4205 | 4205 | |
4206 | 4206 | /** |
4207 | 4207 | * Show the name of the current variant as a label in the variants drop-down menu |
4208 | | - * true = Show the label |
4209 | | - * false = Do not show the label |
4210 | 4208 | */ |
4211 | 4209 | $wgVectorShowVariantName = false; |
4212 | 4210 | |
Index: branches/querypage-work2/phase3/includes/specials/SpecialCategories.php |
— | — | @@ -51,7 +51,7 @@ |
52 | 52 | } |
53 | 53 | |
54 | 54 | function getIndexField() { |
55 | | -# return array( 'abc' => 'cat_title', 'count' => 'cat_pages' ); |
| 55 | + #return array( 'abc' => 'cat_title', 'count' => 'cat_pages' ); |
56 | 56 | return 'cat_title'; |
57 | 57 | } |
58 | 58 | |
Index: branches/querypage-work2/phase3/includes/specials/SpecialUserlogin.php |
— | — | @@ -72,7 +72,7 @@ |
73 | 73 | $this->mRemember = $request->getCheck( 'wpRemember' ); |
74 | 74 | $this->mLanguage = $request->getText( 'uselang' ); |
75 | 75 | $this->mSkipCookieCheck = $request->getCheck( 'wpSkipCookieCheck' ); |
76 | | - $this->mToken = $request->getVal( 'wpLoginToken' ); |
| 76 | + $this->mToken = ($this->mType == 'signup' ) ? $request->getVal( 'wpCreateaccountToken' ) : $request->getVal( 'wpLoginToken' ); |
77 | 77 | |
78 | 78 | if ( $wgRedirectOnLogin ) { |
79 | 79 | $this->mReturnTo = $wgRedirectOnLogin; |
— | — | @@ -251,6 +251,25 @@ |
252 | 252 | return false; |
253 | 253 | } |
254 | 254 | |
| 255 | + # Request forgery checks. |
| 256 | + if ( !self::getCreateaccountToken() ) { |
| 257 | + self::setCreateaccountToken(); |
| 258 | + $this->mainLoginForm( wfMsg( 'sessionfailure' ) ); |
| 259 | + return false; |
| 260 | + } |
| 261 | + |
| 262 | + # The user didn't pass a createaccount token |
| 263 | + if ( !$this->mToken ) { |
| 264 | + $this->mainLoginForm( wfMsg( 'sessionfailure' ) ); |
| 265 | + return false; |
| 266 | + } |
| 267 | + |
| 268 | + # Validate the createaccount token |
| 269 | + if ( $this->mToken !== self::getCreateaccountToken() ) { |
| 270 | + $this->mainLoginForm( wfMsg( 'sessionfailure' ) ); |
| 271 | + return false; |
| 272 | + } |
| 273 | + |
255 | 274 | # Check permissions |
256 | 275 | if ( !$wgUser->isAllowed( 'createaccount' ) ) { |
257 | 276 | $this->userNotPrivilegedMessage(); |
— | — | @@ -263,7 +282,7 @@ |
264 | 283 | $ip = wfGetIP(); |
265 | 284 | if ( $wgUser->isDnsBlacklisted( $ip, true /* check $wgProxyWhitelist */ ) ) { |
266 | 285 | $this->mainLoginForm( wfMsg( 'sorbs_create_account_reason' ) . ' (' . htmlspecialchars( $ip ) . ')' ); |
267 | | - return; |
| 286 | + return false; |
268 | 287 | } |
269 | 288 | |
270 | 289 | # Now create a dummy user ($u) and check if it is valid |
— | — | @@ -340,6 +359,7 @@ |
341 | 360 | return false; |
342 | 361 | } |
343 | 362 | |
| 363 | + self::clearCreateaccountToken(); |
344 | 364 | return $this->initUser( $u, false ); |
345 | 365 | } |
346 | 366 | |
— | — | @@ -683,20 +703,33 @@ |
684 | 704 | return; |
685 | 705 | } |
686 | 706 | |
687 | | - # Check against blocked IPs |
688 | | - # fixme -- should we not? |
| 707 | + # Check against blocked IPs so blocked users can't flood admins |
| 708 | + # with password resets |
689 | 709 | if( $wgUser->isBlocked() ) { |
690 | 710 | $this->mainLoginForm( wfMsg( 'blocked-mailpassword' ) ); |
691 | 711 | return; |
692 | 712 | } |
693 | 713 | |
694 | | - // Check for hooks |
| 714 | + # Check for hooks |
695 | 715 | $error = null; |
696 | 716 | if ( ! wfRunHooks( 'UserLoginMailPassword', array( $this->mName, &$error ) ) ) { |
697 | 717 | $this->mainLoginForm( $error ); |
698 | 718 | return; |
699 | 719 | } |
700 | 720 | |
| 721 | + # If the user doesn't have a login token yet, set one. |
| 722 | + if ( !self::getLoginToken() ) { |
| 723 | + self::setLoginToken(); |
| 724 | + $this->mainLoginForm( wfMsg( 'sessionfailure' ) ); |
| 725 | + return; |
| 726 | + } |
| 727 | + |
| 728 | + # If the user didn't pass a login token, tell them we need one |
| 729 | + if ( !$this->mToken ) { |
| 730 | + $this->mainLoginForm( wfMsg( 'sessionfailure' ) ); |
| 731 | + return; |
| 732 | + } |
| 733 | + |
701 | 734 | # Check against the rate limiter |
702 | 735 | if( $wgUser->pingLimiter( 'mailpassword' ) ) { |
703 | 736 | $wgOut->rateLimited(); |
— | — | @@ -717,6 +750,12 @@ |
718 | 751 | return; |
719 | 752 | } |
720 | 753 | |
| 754 | + # Validate the login token |
| 755 | + if ( $this->mToken !== self::getLoginToken() ) { |
| 756 | + $this->mainLoginForm( wfMsg( 'sessionfailure' ) ); |
| 757 | + return; |
| 758 | + } |
| 759 | + |
721 | 760 | # Check against password throttle |
722 | 761 | if ( $u->isPasswordReminderThrottled() ) { |
723 | 762 | global $wgPasswordReminderResendTime; |
— | — | @@ -732,6 +771,7 @@ |
733 | 772 | $this->mainLoginForm( wfMsg( 'mailerror', $result->getMessage() ) ); |
734 | 773 | } else { |
735 | 774 | $this->mainLoginForm( wfMsg( 'passwordsent', $u->getName() ), 'success' ); |
| 775 | + self::clearLoginToken(); |
736 | 776 | } |
737 | 777 | } |
738 | 778 | |
— | — | @@ -965,11 +1005,18 @@ |
966 | 1006 | $template->set( 'canremember', ( $wgCookieExpiration > 0 ) ); |
967 | 1007 | $template->set( 'remember', $wgUser->getOption( 'rememberpassword' ) or $this->mRemember ); |
968 | 1008 | |
969 | | - if ( !self::getLoginToken() ) { |
970 | | - self::setLoginToken(); |
| 1009 | + if ( $this->mType == 'signup' ) { |
| 1010 | + if ( !self::getCreateaccountToken() ) { |
| 1011 | + self::setCreateaccountToken(); |
| 1012 | + } |
| 1013 | + $template->set( 'token', self::getCreateaccountToken() ); |
| 1014 | + } else { |
| 1015 | + if ( !self::getLoginToken() ) { |
| 1016 | + self::setLoginToken(); |
| 1017 | + } |
| 1018 | + $template->set( 'token', self::getLoginToken() ); |
971 | 1019 | } |
972 | | - $template->set( 'token', self::getLoginToken() ); |
973 | | - |
| 1020 | + |
974 | 1021 | # Prepare language selection links as needed |
975 | 1022 | if( $wgLoginLanguageSelector ) { |
976 | 1023 | $template->set( 'languages', $this->makeLanguageSelector() ); |
— | — | @@ -1034,7 +1081,7 @@ |
1035 | 1082 | } |
1036 | 1083 | |
1037 | 1084 | /** |
1038 | | - * Generate a new login token and attach it to the current session |
| 1085 | + * Randomly generate a new login token and attach it to the current session |
1039 | 1086 | */ |
1040 | 1087 | public static function setLoginToken() { |
1041 | 1088 | global $wgRequest; |
— | — | @@ -1046,12 +1093,36 @@ |
1047 | 1094 | /** |
1048 | 1095 | * Remove any login token attached to the current session |
1049 | 1096 | */ |
1050 | | - public static function clearLoginToken() { |
| 1097 | + public static function clearLoginToken() { |
1051 | 1098 | global $wgRequest; |
1052 | 1099 | $wgRequest->setSessionData( 'wsLoginToken', null ); |
1053 | 1100 | } |
1054 | 1101 | |
1055 | 1102 | /** |
| 1103 | + * Get the createaccount token from the current session |
| 1104 | + */ |
| 1105 | + public static function getCreateaccountToken() { |
| 1106 | + global $wgRequest; |
| 1107 | + return $wgRequest->getSessionData( 'wsCreateaccountToken' ); |
| 1108 | + } |
| 1109 | + |
| 1110 | + /** |
| 1111 | + * Randomly generate a new createaccount token and attach it to the current session |
| 1112 | + */ |
| 1113 | + public static function setCreateaccountToken() { |
| 1114 | + global $wgRequest; |
| 1115 | + $wgRequest->setSessionData( 'wsCreateaccountToken', User::generateToken() ); |
| 1116 | + } |
| 1117 | + |
| 1118 | + /** |
| 1119 | + * Remove any createaccount token attached to the current session |
| 1120 | + */ |
| 1121 | + public static function clearCreateaccountToken() { |
| 1122 | + global $wgRequest; |
| 1123 | + $wgRequest->setSessionData( 'wsCreateaccountToken', null ); |
| 1124 | + } |
| 1125 | + |
| 1126 | + /** |
1056 | 1127 | * @private |
1057 | 1128 | */ |
1058 | 1129 | function cookieRedirectCheck( $type ) { |
Index: branches/querypage-work2/phase3/includes/specials/SpecialDeadendpages.php |
— | — | @@ -27,7 +27,9 @@ |
28 | 28 | return true; |
29 | 29 | } |
30 | 30 | |
31 | | - function isSyndicated() { return false; } |
| 31 | + function isSyndicated() { |
| 32 | + return false; |
| 33 | + } |
32 | 34 | |
33 | 35 | /** |
34 | 36 | * @return false |
Property changes on: branches/querypage-work2/phase3/includes/specials |
___________________________________________________________________ |
Modified: svn:mergeinfo |
35 | 37 | Merged /trunk/phase3/includes/specials:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Index: branches/querypage-work2/phase3/includes/templates/Userlogin.php |
— | — | @@ -315,6 +315,7 @@ |
316 | 316 | </tr> |
317 | 317 | </table> |
318 | 318 | <?php if( @$this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?> |
| 319 | +<?php if( @$this->haveData( 'token' ) ) { ?><input type="hidden" name="wpCreateaccountToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?> |
319 | 320 | </form> |
320 | 321 | </div> |
321 | 322 | <div id="signupend"><?php $this->msgWiki( 'signupend' ); ?></div> |
Property changes on: branches/querypage-work2/phase3/includes |
___________________________________________________________________ |
Modified: svn:mergeinfo |
322 | 323 | Merged /trunk/phase3/includes:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |
Index: branches/querypage-work2/phase3/languages/messages/MessagesPt_br.php |
— | — | @@ -3369,7 +3369,7 @@ |
3370 | 3370 | 'specialpages-group-pages' => 'Listas de páginas', |
3371 | 3371 | 'specialpages-group-pagetools' => 'Ferramentas de páginas', |
3372 | 3372 | 'specialpages-group-wiki' => 'Dados e ferramentas sobre este wiki', |
3373 | | -'specialpages-group-redirects' => 'Páginas especias redirecionadas', |
| 3373 | +'specialpages-group-redirects' => 'Páginas especiais redirecionadas', |
3374 | 3374 | 'specialpages-group-spam' => 'Ferramentas anti-spam', |
3375 | 3375 | |
3376 | 3376 | # Special:BlankPage |
Index: branches/querypage-work2/phase3/languages/messages/MessagesId.php |
— | — | @@ -2696,6 +2696,8 @@ |
2697 | 2697 | 'tooltip-upload' => 'Mulai pemuatan', |
2698 | 2698 | 'tooltip-rollback' => 'Mengembalikan suntingan-suntingan di halaman ini ke kontributor terakhir dalam satu kali klik.', |
2699 | 2699 | 'tooltip-undo' => 'Mengembalikan revisi ini dan membuka kotak penyuntingan dengan mode pratayang. Alasan dapat ditambahkan di kotak ringkasan.', |
| 2700 | +'tooltip-preferences-save' => 'Simpan preferensi', |
| 2701 | +'tooltip-summary' => 'Masukkan sebuah ringkasan pendek', |
2700 | 2702 | |
2701 | 2703 | # Stylesheets |
2702 | 2704 | 'common.css' => '/* CSS yang ada di sini akan diterapkan untuk semua kulit. */', |
Index: branches/querypage-work2/phase3/languages/messages/MessagesLa.php |
— | — | @@ -1718,6 +1718,14 @@ |
1719 | 1719 | 'ipbexpiry' => 'Exitus:', |
1720 | 1720 | 'ipbreason' => 'Causa:', |
1721 | 1721 | 'ipbreasonotherlist' => 'Causa alia', |
| 1722 | +'ipbreason-dropdown' => '*Rationes crebriter adductae |
| 1723 | +** Ob scripta falsa |
| 1724 | +** Ob textum remotum |
| 1725 | +** Ob nexus externos multiplicatos |
| 1726 | +** Ob scripta sensu sive et Latinitate carentia |
| 1727 | +** Ob scripta inurbana |
| 1728 | +** Ob rationes perniciose multiplicatas |
| 1729 | +** Ob nomen inurbanum sive inconveniens', |
1722 | 1730 | 'ipbanononly' => 'Solum usores anonymi obstruere', |
1723 | 1731 | 'ipbcreateaccount' => 'Creationem rationum obstruere', |
1724 | 1732 | 'ipbemailban' => 'Litteras electronicas vetare', |
Index: branches/querypage-work2/phase3/languages/messages/MessagesPl.php |
— | — | @@ -1816,7 +1816,7 @@ |
1817 | 1817 | 'unusedtemplateswlh' => 'linkujące', |
1818 | 1818 | |
1819 | 1819 | # Random page |
1820 | | -'randompage' => 'Losuj stronę', |
| 1820 | +'randompage' => 'Losowa strona', |
1821 | 1821 | 'randompage-nopages' => 'Brak stron w {{PLURAL:$2|przestrzeni nazw|przestrzeniach nazw:}} $1.', |
1822 | 1822 | |
1823 | 1823 | # Random redirect |
— | — | @@ -2732,6 +2732,7 @@ |
2733 | 2733 | 'tooltip-undo' => '„anuluj edycję” wycofuje tę edycję i otwiera okno edycji w trybie podglądu. |
2734 | 2734 | Pozwala na wpisanie powodu w opisie zmian.', |
2735 | 2735 | 'tooltip-preferences-save' => 'Zapisz preferencje', |
| 2736 | +'tooltip-summary' => 'Wpisz krótki opis', |
2736 | 2737 | |
2737 | 2738 | # Stylesheets |
2738 | 2739 | 'common.css' => '/* Umieszczony tutaj kod CSS zostanie zastosowany we wszystkich skórkach */', |
Index: branches/querypage-work2/phase3/languages/messages/MessagesXal.php |
— | — | @@ -422,7 +422,7 @@ |
423 | 423 | 'remembermypassword' => 'Мини нерн эн тоолдврд тодлх', |
424 | 424 | 'yourdomainname' => 'Тана домен:', |
425 | 425 | 'login' => 'Орлһн', |
426 | | -'nav-login-createaccount' => 'Орх аль харһх', |
| 426 | +'nav-login-createaccount' => 'Харһх / бичгдлһн кех', |
427 | 427 | 'loginprompt' => '{{SITENAME}} тал орлһна төлә, та «cookies» олзлдг кергтә.', |
428 | 428 | 'userlogin' => 'Орх аль бичгдлһиг бүтәх', |
429 | 429 | 'userloginnocreate' => 'Харһх', |
Index: branches/querypage-work2/phase3/languages/messages/MessagesLmo.php |
— | — | @@ -432,8 +432,8 @@ |
433 | 433 | # Login and logout pages |
434 | 434 | 'logouttext' => "'''Adess a sii descuness.''' |
435 | 435 | |
436 | | -A pudé andà inanz a druvà la {{SITENAME}} in manera anònima, o a pudé cunètev anmò cun l'istess suranomm o cun un suranomm diferent. |
437 | | -Tegné cünt che certi paginn pödass che i se veden anmò cume se a füdissi anmò cuness, fin quand che hii nò vudaa 'l ''cache'' del voster browser.", |
| 436 | +A pudé andà inanz a druvà la {{SITENAME}} in manera anònima, o a pudé [[Special:UserLogin|cunètev anmò]] cun l'istess suranomm o cun un suranomm diferent. |
| 437 | +Tegné cünt che certi paginn pödass che i seguiten a vedess tant 'me se a füdìssuv anmò cuness, fin quand che hii nò vudaa 'l ''cache'' del voster browser.", |
438 | 438 | 'welcomecreation' => "== Benvegnüü, $1! == |
439 | 439 | 'L to cünt l'è staa pruntaa. Desmenteghet mía de mudifegà i to [[Special:Preferences|preferenz de {{SITENAME}}]].", |
440 | 440 | 'yourname' => 'El to suranóm:', |
— | — | @@ -444,6 +444,7 @@ |
445 | 445 | 'nav-login-createaccount' => 'Vena denter / Crea un cünt', |
446 | 446 | 'loginprompt' => 'Par cunett a {{SITENAME}}, a duvii abilitá i galet.', |
447 | 447 | 'userlogin' => 'Vegní denter - Creè un cünt', |
| 448 | +'userloginnocreate' => 'Vegn denter', |
448 | 449 | 'logout' => 'Va fö', |
449 | 450 | 'userlogout' => 'Và fö', |
450 | 451 | 'notloggedin' => 'Te seet minga dent in del sistema', |
— | — | @@ -457,6 +458,7 @@ |
458 | 459 | 'userexists' => "El nom de duvrat che t'hee miss dent a l'è giamò dupraa. |
459 | 460 | Per piasè, scerniss un alter suranom.", |
460 | 461 | 'loginerror' => "Erur in de l'andà dent in del sistema.", |
| 462 | +'createaccounterror' => 'Se pö minga creà el cünt: $1', |
461 | 463 | 'nocookiesnew' => "El cünt a l'è staa creaa, ma t'hee minga pudüü andà dent in del sistema. |
462 | 464 | {{SITENAME}} al dupra i cookies per fà andà i duvrat in del sistema. |
463 | 465 | Tì te gh'hee i cookies disabilitaa. |
— | — | @@ -524,12 +526,29 @@ |
525 | 527 | 'showdiff' => 'Famm vedè i cambiament', |
526 | 528 | 'anoneditwarning' => 'Tì te set minga entraa. In de la crunulugia de la pagina se vedarà el tò IP.', |
527 | 529 | 'summary-preview' => "Pröva de l'uget:", |
| 530 | +'blockedtext' => "'''El to nom del druvadur o el to indirizz IP l'è stat blucaa.''' |
| 531 | + |
| 532 | +El bloch l'è stat fat da $1. |
| 533 | +El mutiv per el bloch l'è: ''$2'' |
| 534 | + |
| 535 | +* Principi del bloch: $8 |
| 536 | +* Scadenza del bloch: $6 |
| 537 | +* Blucaa: $7 |
| 538 | + |
| 539 | +Se a vurii, a pudii cuntatà $1 o un olter [[{{MediaWiki:Grouppage-sysop}}|aministradur]] per discüt el bloch. |
| 540 | + |
| 541 | +Feegh a ment che la funzion 'Manda un email a quel druvadur chì' l'è mia ativa se avii mia registraa un indirizz e-mail valid ind i voster [[Special:Preferences|preferenz]] o se l'üsagg de 'sta funzion l' è stat blucaa. |
| 542 | + |
| 543 | +L'indirizz IP curent l'è $3, el nümer ID del bloch l'è #$5. |
| 544 | +Fee el piasè d'inclüd tüt i detaj chì de sura in qualsessìa dumanda che a decidii de fà.", |
528 | 545 | 'accmailtext' => 'La parola d\'urdin per "$1" l\'è stada mandada a $2.', |
529 | 546 | 'newarticle' => '(Növ)', |
530 | 547 | 'newarticletext' => 'Te seet andaa adree a un ligam a una pagina che la esista gnamò. |
531 | 548 | Per creà la pagina, a l\'è assee che te tachet a scriv in del box desota (varda la [[{{MediaWiki:Helppage}}|pagina de vüt]] per savèn püssee). |
532 | 549 | Se te seet chì per erur, schiscia "indree" in sül tò browser.', |
533 | | -'anontalkpagetext' => "----''Chesta chí a l'é la pagina da ciciarada d'un usuari che l'ha ammò minga registraa un cunt, o ascí ch'al vœur minga dovràl; donca, el pò vess identificaa domà cont el sò IP, ch'el pœul vess compartii con fiss dovrat diferent. Se al é un dovrat anònim e a l'ha vist un quai messagg ch'al ga par ch'al gh'a nagòt à vidé con lu, ch'al prœuva a [[Special:UserLogin|creà el sò cunt]].''", |
| 550 | +'anontalkpagetext' => "''Questa chí a l'é la pagina da ciciarada d'un druvadur che l'ha nonanmò registraa un cünt, o che 'l le dröva mia. |
| 551 | +Per 'sta reson chí, el pò vess identificaa dumà cunt el sò indirizz nümereg de IP. |
| 552 | +'Stu indirizz IP el pö vess druvaa da püssee d'un druvadur. Se te seet un druvadur anònim e ve someja che un quaj messagg ch'al ga par ch'al gh'a nagòt à vidé con lu, ch'al prœuva a [[Special:UserLogin|creà el sò cunt]].''", |
534 | 553 | 'noarticletext' => "Per 'l mument quela pagina chì l'è vöja. Te pòdet [[Special:Search/{{PAGENAME}}|cercà quel articul chì]] int i alter paginn, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercà int i register imparentaa], o sedenò [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifichè 'sta pagina chì adess-adess].", |
535 | 554 | 'clearyourcache' => "'''Nòta:''' dòpu che avii salvaa, pudaría véss neçessari de scancelá la memòria \"cache\" dal vòst prugráma də navigazziún in reet par vidé i mudifich faa. '''Mozilla / Firefox / Safari:''' tegní schiscjaa al butún ''Shift'' intaant che sə clica ''Reload'', upüür schiscjá ''Ctrl-Shift-R'' (''Cmd-Shift-R'' sül Apple Mac); '''IE:''' schiscjá ''Ctrl'' intaant che sə clica ''Refresh'', upüür schiscjá ''Ctrl-F5''; '''Konqueror:''': semplicemeent clicá al butún ''Reload'', upüür schiscjá ''F5''; '''Opera''' i üteent pudarían vech büsögn da scancelá cumpletameent la memòria \"cache\" in ''Tools→Preferences''.", |
536 | 555 | 'previewnote' => "''''''Atenziun'''! Questa pagina la serviss dumà de vardà. I cambiament hinn minga staa salvaa.'''", |
— | — | @@ -958,7 +977,7 @@ |
959 | 978 | 'listgrouprights-members' => '(Lista di member)', |
960 | 979 | |
961 | 980 | # E-mail user |
962 | | -'emailuser' => 'Manda un email al duvrátt', |
| 981 | +'emailuser' => 'Manda un email a quel druvadur chì', |
963 | 982 | 'emailsent' => 'Messagg spedii', |
964 | 983 | 'emailsenttext' => "El messagg e-mail l'è staa spedii.", |
965 | 984 | |
— | — | @@ -1047,7 +1066,7 @@ |
1048 | 1067 | |
1049 | 1068 | # Protect |
1050 | 1069 | 'protectlogpage' => 'Register di prutezión', |
1051 | | -'protectedarticle' => 't\'hee prutegiüü "[[$1]]"', |
| 1070 | +'protectedarticle' => 'l\'ha prutegiüü "[[$1]]"', |
1052 | 1071 | 'modifiedarticleprotection' => 'A l\'è müdaa el nivel de prutezión per "[[$1]]"', |
1053 | 1072 | 'unprotectedarticle' => 'l\'ha sblucaa "[[$1]]"', |
1054 | 1073 | 'protect-title' => 'Prutezziún da "$1"', |
— | — | @@ -1069,9 +1088,22 @@ |
1070 | 1089 | 'protect-expiring' => 'scadenza: $1 (UTC)', |
1071 | 1090 | 'protect-cascade' => "Prutegg i paginn ch'i fan part de questa (prutezión recursiva)", |
1072 | 1091 | 'protect-cantedit' => "Te pödet minga mudifegà i nivel de prutezión a quela pagina chì, per via che t'hee minga el permiss de mudifegala.", |
| 1092 | +'protect-dropdown' => '*Mutiv cumün per la prutezion |
| 1093 | +** Tròp vandalism |
| 1094 | +** Tròp spam |
| 1095 | +** Edit war |
| 1096 | +** Pagina cun parecc tràfich', |
| 1097 | +'protect-edit-reasonlist' => 'Mudifega i mutiv per la prutezion', |
| 1098 | +'protect-expiry-options' => '1 ura:1 hour,1 dì:1 day,1 semana:1 week,2 semann:2 weeks,1 mes:1 month,3 mes:3 months,6 mes:6 months,1 ann:1 year,per sémper:infinite', |
1073 | 1099 | 'restriction-type' => 'Permiss', |
1074 | 1100 | 'restriction-level' => 'Nivel de restrizión', |
| 1101 | +'minimum-size' => 'Misüra mìnima', |
| 1102 | +'maximum-size' => 'Misüra màssima:', |
| 1103 | +'pagesize' => '(byte)', |
1075 | 1104 | |
| 1105 | +# Restrictions (nouns) |
| 1106 | +'restriction-edit' => 'Mudifega', |
| 1107 | + |
1076 | 1108 | # Undelete |
1077 | 1109 | 'undelete' => 'Varda i pagin scancelaa', |
1078 | 1110 | 'undelete-nodiff' => "Per questa pagina gh'è nanca una revisiun precedenta.", |
Index: branches/querypage-work2/phase3/languages/messages/MessagesUr.php |
— | — | @@ -1125,21 +1125,23 @@ |
1126 | 1126 | 'created' => 'بنا دیا گیا', |
1127 | 1127 | |
1128 | 1128 | # Delete |
1129 | | -'deletepage' => 'صفحہ ضائع کریں', |
1130 | | -'confirm' => 'یقین', |
1131 | | -'excontent' => "'$1':مواد تھا", |
1132 | | -'excontentauthor' => "حذف شدہ مواد: '$1' (اور صرف '[[Special:Contributions/$2|$2]]' نے حصہ ڈالا)", |
1133 | | -'exblank' => 'صفحہ خالی تھا', |
1134 | | -'historywarning' => 'انتباہ: جو صفحہ آپ حذف کرنے جارہے ہیں اس سے ایک تاریخچہ منسلک ہے۔', |
1135 | | -'confirmdeletetext' => 'آپ نے اس صفحے کو اس سے ملحقہ تاریخچہ سمیت حذف کرنے کا ارادہ کیا ہے۔ براۓ مہربانی تصدیق کرلیجیۓ کہ آپ اس عمل کے نتائج سے بخوبی آگاہ ہیں، اور یہ بھی یقین کرلیجیۓ کہ آپ ایسا [[{{MediaWiki:Policy-url}}|ویکیپیڈیا کی حکمت عملی]] کے دائرے میں رہ کر کر رہے ہیں۔', |
1136 | | -'actioncomplete' => 'اقدام تکمیل کو پہنچا', |
1137 | | -'deletedtext' => '"<nowiki>$1</nowiki>" کو حذف کر دیا گیا ہے ۔ |
| 1129 | +'deletepage' => 'صفحہ ضائع کریں', |
| 1130 | +'confirm' => 'یقین', |
| 1131 | +'excontent' => "'$1':مواد تھا", |
| 1132 | +'excontentauthor' => "حذف شدہ مواد: '$1' (اور صرف '[[Special:Contributions/$2|$2]]' نے حصہ ڈالا)", |
| 1133 | +'exblank' => 'صفحہ خالی تھا', |
| 1134 | +'historywarning' => 'انتباہ: جو صفحہ آپ حذف کرنے جارہے ہیں اس سے ایک تاریخچہ منسلک ہے۔', |
| 1135 | +'confirmdeletetext' => 'آپ نے اس صفحے کو اس سے ملحقہ تاریخچہ سمیت حذف کرنے کا ارادہ کیا ہے۔ براۓ مہربانی تصدیق کرلیجیۓ کہ آپ اس عمل کے نتائج سے بخوبی آگاہ ہیں، اور یہ بھی یقین کرلیجیۓ کہ آپ ایسا [[{{MediaWiki:Policy-url}}|ویکیپیڈیا کی حکمت عملی]] کے دائرے میں رہ کر کر رہے ہیں۔', |
| 1136 | +'actioncomplete' => 'اقدام تکمیل کو پہنچا', |
| 1137 | +'deletedtext' => '"<nowiki>$1</nowiki>" کو حذف کر دیا گیا ہے ۔ |
1138 | 1138 | حالیہ حذف شدگی کے تاریخ نامہ کیلیۓ $2 دیکھیۓ', |
1139 | | -'deletedarticle' => 'حذف شدہ "[[$1]]"', |
1140 | | -'dellogpage' => 'نوشتۂ حذف شدگی', |
1141 | | -'dellogpagetext' => 'حالیہ حذف شدگی کی فہرست درج ذیل ہے۔', |
1142 | | -'deletionlog' => 'نوشتۂ حذف شدگی', |
1143 | | -'deletecomment' => 'حذف کرنے کی وجہ', |
| 1139 | +'deletedarticle' => 'حذف شدہ "[[$1]]"', |
| 1140 | +'dellogpage' => 'نوشتۂ حذف شدگی', |
| 1141 | +'dellogpagetext' => 'حالیہ حذف شدگی کی فہرست درج ذیل ہے۔', |
| 1142 | +'deletionlog' => 'نوشتۂ حذف شدگی', |
| 1143 | +'deletecomment' => 'حذف کرنے کی وجہ', |
| 1144 | +'deleteotherreason' => 'دوسری/اِضافی وجہ:', |
| 1145 | +'deletereasonotherlist' => 'دوسری وجہ', |
1144 | 1146 | |
1145 | 1147 | # Rollback |
1146 | 1148 | 'rollback' => 'ترمیمات سابقہ حالت پرواپس', |
— | — | @@ -1216,6 +1218,8 @@ |
1217 | 1219 | 'newtitle' => 'نـیــا عـنــوان', |
1218 | 1220 | 'move-watch' => 'صفحہ زیر نظر', |
1219 | 1221 | 'movepagebtn' => 'مـنـتـقـل', |
| 1222 | +'pagemovedsub' => 'انتقال کامیاب', |
| 1223 | +'movepage-moved' => '\'\'\'"$1" منتقل کردیا گیا بطرف "$2"\'\'\'', |
1220 | 1224 | 'articleexists' => 'اس عنوان سے کوئی صفحہ پہلے ہی موجود ہے، یا آپکا منتخب کردہ نام مستعمل نہیں۔ براۓ مہربانی دوسرا نام منتخب کیجیۓ۔', |
1221 | 1225 | '1movedto2' => '[[$1]] بجانب [[$2]] منتقل', |
1222 | 1226 | 'movelogpage' => 'نوشتۂ منتقلی', |
— | — | @@ -1279,6 +1283,7 @@ |
1280 | 1284 | 'tooltip-feed-rss' => 'اِس صفحہ کیلئے اسس خورد', |
1281 | 1285 | 'tooltip-feed-atom' => 'اِس صفحہ کیلئے اٹوم خورد', |
1282 | 1286 | 'tooltip-t-contributions' => 'نئی تدوین →', |
| 1287 | +'tooltip-t-emailuser' => 'اِس صارف کو برقی خط ارسال کریں', |
1283 | 1288 | 'tooltip-t-upload' => 'زبراثقالِ ملفات', |
1284 | 1289 | 'tooltip-t-specialpages' => 'تمام خاص صفحات کی فہرست', |
1285 | 1290 | 'tooltip-t-print' => 'اِس صفحہ کا قابلِ طبعہ نسخہ', |
Index: branches/querypage-work2/phase3/languages/messages/MessagesRgn.php |
— | — | @@ -22,7 +22,7 @@ |
23 | 23 | 'tog-newpageshidepatrolled' => 'Nascònd al pàgin verifichèdi da la lèsta dal pàgin növi', |
24 | 24 | 'tog-extendwatchlist' => "Slèrga la funziòn \"tènn sot occ\" d'mod ch'us pòsa avdé toti al mudefchi, no sol l'ultma.", |
25 | 25 | 'tog-usenewrc' => "Drova agl'j ultmi mudèfchi avanzëdi (u j vô JavaScript)", |
26 | | -'tog-numberheadings' => "Titul d'paràgraf<br/>chi à un nòmar daparlò", |
| 26 | +'tog-numberheadings' => "Titul d'un paràgraf ch'l'à un nòmar daparlò", |
27 | 27 | 'tog-showtoolbar' => "Fam avdé la bara d'j strumént (u j vó JavaScript)", |
28 | 28 | |
29 | 29 | # Dates |
Index: branches/querypage-work2/phase3/languages/messages/MessagesKrc.php |
— | — | @@ -1521,7 +1521,7 @@ |
1522 | 1522 | 'linkstoimage-more' => '$1-ден артыкъ {{PLURAL:$1|бет|бет}} бу файлгъа джибериу береди. |
1523 | 1523 | Кёзюудеги список къуру бу файлгъа джибериу берген {{PLURAL:$1|биринчи файлны|биринчи $1 файлны}} кёргюзеди. |
1524 | 1524 | [[Special:WhatLinksHere/$2|Толу спиосок]] барды.', |
1525 | | -'nolinkstoimage' => 'Бу файлгъа джибириу берген бет джокъду.', |
| 1525 | +'nolinkstoimage' => 'Бу файлгъа джиберген бет джокъду.', |
1526 | 1526 | 'morelinkstoimage' => 'Бу файлгъа [[Special:WhatLinksHere/$1|къалгъан джибериулеге]] къара.', |
1527 | 1527 | 'redirectstofile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлгъа джибереди.', |
1528 | 1528 | 'duplicatesoffile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):', |
Index: branches/querypage-work2/phase3/languages/messages/MessagesEs.php |
— | — | @@ -2604,7 +2604,7 @@ |
2605 | 2605 | 'semiprotectedpagemovewarning' => "'''Nota:''' Esta página ha sido bloqueada para que solamente usuarios registrados pueden moverla. |
2606 | 2606 | A continuación se muestra la última entrada de registro para referencia:", |
2607 | 2607 | 'move-over-sharedrepo' => '== El archivo existe == |
2608 | | - [[:$1]] existe en un repositorio compartido. Mover el archivo a este título invalidará el archivo compartido.', |
| 2608 | +[[:$1]] existe en un repositorio compartido. Mover el archivo a este título invalidará el archivo compartido.', |
2609 | 2609 | 'file-exists-sharedrepo' => 'El nombre de archivo elegido ya está siendo usado en un repositorio compartido. |
2610 | 2610 | Por favor, elija otro nombre.', |
2611 | 2611 | |
Index: branches/querypage-work2/phase3/languages/messages/MessagesUk.php |
— | — | @@ -1187,6 +1187,7 @@ |
1188 | 1188 | 'searchprofile-everything-tooltip' => 'Пошук на всіх сторінках (включаючи сторінки обговорення)', |
1189 | 1189 | 'searchprofile-advanced-tooltip' => 'Шукати в заданих просторах назв', |
1190 | 1190 | 'search-result-size' => '$1 ($2 {{PLURAL:$2|слово|слова|слів}})', |
| 1191 | +'search-result-category-size' => '{{PLURAL:$1|$1 елемент|$1 елементи|$1 елементів}} ({{PLURAL:$2|$2 підкатегорія|$2 підкатегорії|$2 підкатегорій}}, {{PLURAL:$3|$3 файл|$3 файли|$3 файлів}})', |
1191 | 1192 | 'search-result-score' => 'Відповідність: $1 %', |
1192 | 1193 | 'search-redirect' => '(перенаправлення $1)', |
1193 | 1194 | 'search-section' => '(розділ $1)', |
— | — | @@ -1548,6 +1549,9 @@ |
1549 | 1550 | 'upload_directory_missing' => 'Директорія для завантажень ($1) відсутня і не може бути створена веб-сервером.', |
1550 | 1551 | 'upload_directory_read_only' => 'Веб-сервер не має прав запису в папку ($1), в якій планується зберігати завантажувані файли.', |
1551 | 1552 | 'uploaderror' => 'Помилка завантаження файлу', |
| 1553 | +'upload-recreate-warning' => "'''Увага. Файл з такою назвою був раніше вилучений або перейменований.'' |
| 1554 | + |
| 1555 | +Далі наведено журнал вилучень і перейменувань цього файлу:", |
1552 | 1556 | 'uploadtext' => "За допомогою цієї форми ви можете завантажити файли на сервер. |
1553 | 1557 | |
1554 | 1558 | Якщо файл із зазначеною вами назвою вже існує в проекті, то його буде замінено без попередження. Тому, якщо ви не збираєтесь оновлювати файл, |
Index: branches/querypage-work2/phase3/languages/Names.php |
— | — | @@ -25,7 +25,7 @@ |
26 | 26 | 'av' => 'Авар', # Avar |
27 | 27 | 'avk' => 'Kotava', # Kotava |
28 | 28 | 'ay' => 'Aymar aru', # Aymara |
29 | | - 'az' => 'Azərbaycan', # Azerbaijani |
| 29 | + 'az' => 'Azərbaycanca', # Azerbaijani |
30 | 30 | 'ba' => 'Башҡорт', # Bashkir |
31 | 31 | 'bar' => 'Boarisch', # Bavarian (Austro-Bavarian and South Tyrolean) |
32 | 32 | 'bat-smg' => 'Žemaitėška', # Samogitian |
Index: branches/querypage-work2/phase3/RELEASE-NOTES |
— | — | @@ -62,7 +62,7 @@ |
63 | 63 | * ajaxwatch now uses the API and JQuery, and can be used to animate arbitrary |
64 | 64 | watch links, not just to watch the page the link is on. |
65 | 65 | * (bug 20193) Added $wgVectorShowVariantName global configuration variable |
66 | | - which causes Vector to render the the variants drop-down menu with a label |
| 66 | + which causes Vector to render the variants drop-down menu with a label |
67 | 67 | showing the current variant name. This is off by default, pending further |
68 | 68 | research into its user experience implications. |
69 | 69 | |
— | — | @@ -163,6 +163,7 @@ |
164 | 164 | * (bug 23156) Commafy and search normalization updated for Belarusian |
165 | 165 | (Taraškievica) |
166 | 166 | * (bug 23283) Native name for Old English -> Ænglisc |
| 167 | +* (bug 23364) Native name for Azerbaijani -> Azərbaycanca |
167 | 168 | |
168 | 169 | == Compatibility == |
169 | 170 | |
Property changes on: branches/querypage-work2/phase3 |
___________________________________________________________________ |
Modified: svn:mergeinfo |
170 | 171 | Merged /trunk/phase3:r65720,65729,65754,65757-65758,65760,65764-65765,65774 |