Merge "Add SVG versions of table pager icons"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 4 Dec 2014 22:34:23 +0000 (22:34 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 4 Dec 2014 22:34:23 +0000 (22:34 +0000)
29 files changed:
autoload.php
includes/Hooks.php
includes/api/i18n/be-tarask.json
includes/api/i18n/fr.json
includes/api/i18n/pl.json
includes/db/Database.php
includes/profiler/ProfilerStub.php
includes/profiler/ProfilerXhprof.php
includes/specials/SpecialActiveusers.php
includes/specials/SpecialContributions.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialListDuplicatedFiles.php
includes/specials/SpecialListredirects.php
includes/specials/SpecialMediaStatistics.php
includes/specials/SpecialMostcategories.php
includes/specials/SpecialMostinterwikis.php
includes/specials/SpecialMostlinked.php
includes/specials/SpecialMostlinkedcategories.php
includes/specials/SpecialMostlinkedtemplates.php
includes/specials/SpecialSearch.php
includes/specials/SpecialShortpages.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialWatchlist.php
languages/i18n/hr.json
languages/i18n/sv.json
languages/i18n/zh-hant.json
maintenance/removeInvalidEmails.php
resources/src/mediawiki.special/mediawiki.special.search.css

index da1c97a..dbc28ed 100644 (file)
@@ -935,6 +935,7 @@ $wgAutoloadLocalClasses = array(
        'RefreshLinksJob' => __DIR__ . '/includes/jobqueue/jobs/RefreshLinksJob.php',
        'RefreshLinksJob2' => __DIR__ . '/includes/jobqueue/jobs/RefreshLinksJob2.php',
        'RegexlikeReplacer' => __DIR__ . '/includes/utils/StringUtils.php',
+       'RemoveInvalidEmails' => __DIR__ . '/maintenance/removeInvalidEmails.php',
        'RemoveUnusedAccounts' => __DIR__ . '/maintenance/removeUnusedAccounts.php',
        'RenameDbPrefix' => __DIR__ . '/maintenance/renameDbPrefix.php',
        'RenderAction' => __DIR__ . '/includes/actions/RenderAction.php',
index 668c3d9..44f78a5 100644 (file)
@@ -134,7 +134,9 @@ class Hooks {
         * @throws FatalError
         */
        public static function run( $event, array $args = array(), $deprecatedVersion = null ) {
-               wfProfileIn( 'hook: ' . $event );
+               $profiler = Profiler::instance();
+               $eventPS = $profiler->scopedProfileIn( 'hook: ' . $event );
+
                foreach ( self::getHandlers( $event ) as $hook ) {
                        // Turn non-array values into an array. (Can't use casting because of objects.)
                        if ( !is_array( $hook ) ) {
@@ -193,8 +195,8 @@ class Hooks {
                        $badhookmsg = null;
                        $hook_args = array_merge( $hook, $args );
 
-                       // Profile first in case the Profiler causes errors.
-                       wfProfileIn( $func );
+                       // Profile first in case the Profiler causes errors
+                       $funcPS = $profiler->scopedProfileIn( $func );
                        set_error_handler( 'Hooks::hookErrorHandler' );
 
                        // mark hook as deprecated, if deprecation version is specified
@@ -210,8 +212,9 @@ class Hooks {
                                restore_error_handler();
                                throw $e;
                        }
+
                        restore_error_handler();
-                       wfProfileOut( $func );
+                       $profiler->scopedProfileOut( $funcPS );
 
                        // Process the return value.
                        if ( is_string( $retval ) ) {
@@ -224,13 +227,11 @@ class Hooks {
                                        "Hook $func has invalid call signature; " . $badhookmsg
                                );
                        } elseif ( $retval === false ) {
-                               wfProfileOut( 'hook: ' . $event );
                                // False was returned. Stop processing, but no error.
                                return false;
                        }
                }
 
-               wfProfileOut( 'hook: ' . $event );
                return true;
        }
 
index 35f4eaa..2d57aa2 100644 (file)
@@ -19,5 +19,6 @@
        "apihelp-block-description": "Блякаваньне ўдзельніка.",
        "apihelp-block-param-user": "Імя ўдзельніка, IP-адрас або IP-дыяпазон, якія вы хочаце заблякаваць.",
        "apihelp-block-param-expiry": "Час заканчэньня. Можа быць адносным (напрыклад, «5 months» або «2 weeks») ці аблсалютным (напрыклад, «2014-09-18T12:34:56Z»). Калі выстаўлены на «infinite», «indefinite» ці «never», блякаваньне будзе бестэрміновым.",
-       "apihelp-block-param-reason": "Прычына блякаваньня."
+       "apihelp-block-param-reason": "Прычына блякаваньня.",
+       "apihelp-block-param-anononly": "Заблякаваць толькі ананімных удзельнікаў (напрыклад, забараніць ананімныя праўкі з гэтага IP-адрасу)."
 }
index 450a5db..8676f43 100644 (file)
        "apihelp-query+watchlistraw-param-show": "Lister uniquement les éléments correspondant à ces critères.",
        "apihelp-query+watchlistraw-param-owner": "Utilisé avec $1token pour accéder à la liste de suivi d’un autre utilisateur.",
        "apihelp-query+watchlistraw-param-token": "Un jeton de sécurité (disponible dans les [[Special:Preferences#mw-prefsection-watchlist|préférences]] de l’utilisateur) pour permettre l’accès à la liste de suivi d’un autre utilisateur.",
+       "apihelp-query+watchlistraw-example-simple": "Lister les pages dans la liste de suivi de l’utilisateur actuel",
+       "apihelp-query+watchlistraw-example-generator": "Chercher l’information sur les pages de la liste de suivi de l’utilisateur actuel",
+       "apihelp-revisiondelete-description": "Supprimer et annuler la suppression des révisions.",
+       "apihelp-revisiondelete-param-type": "Type de suppression de révision en cours de traitement.",
+       "apihelp-revisiondelete-param-target": "Titre de page pour la suppression de révision, s’il est nécessaire pour le type.",
+       "apihelp-revisiondelete-param-ids": "Identifiants pour les révisions à supprimer.",
+       "apihelp-revisiondelete-param-hide": "Quoi masquer pour chaque révision.",
+       "apihelp-revisiondelete-param-show": "Quoi démasquer pour chaque révision",
+       "apihelp-revisiondelete-param-suppress": "S’il faut supprimer les données aux administrateurs comme aux autres.",
+       "apihelp-revisiondelete-param-reason": "Motif de suppression ou d’annulation de suppression.",
+       "apihelp-revisiondelete-example-revision": "Masquer le contenu de la révision 12345 de la Page principale",
+       "apihelp-revisiondelete-example-log": "Masquer toutes les données de l’entrée de journal 67890 avec le motif « Violation de Biographie de Personne Vivante »",
+       "apihelp-rollback-description": "Annuler la dernière modification de la page.\n\nSi le dernier utilisateur à avoir modifié la page a fait plusieurs modifications sur une ligne, elles seront toutes annulées.",
+       "apihelp-rollback-param-title": "Titre de la page que vous voulez restaurer. Impossible à utiliser avec $1pageid.",
+       "apihelp-rollback-param-pageid": "ID de la page que vous voulez restaurer. Impossible à utiliser avec $1title.",
+       "apihelp-rollback-param-user": "Nom de l’utilisateur dont les modifications doivent être annulées.",
+       "apihelp-rollback-param-summary": "Personnaliser le résumé de la modification. S’il est vide, le résumé par défaut sera utilisé.",
+       "apihelp-rollback-param-markbot": "Marquer les modifications annulées et les modifications annulées comme robot.",
+       "apihelp-rollback-param-watchlist": "Ajouter ou supprimer la page de votre liste de suivi sans condition, utiliser les préférences ou ne pas modifier le suivi.",
+       "apihelp-rollback-example-simple": "Annuler les dernières modifications à [[Main Page]] par l’utilisateur Exemple",
+       "apihelp-rollback-example-summary": "Annuler les dernières modifications sur [[Main Page]] par l’utilisateur à l’adresse IP 192.0.2.5 avec le résumé « Annulation de vandalisme », et marquer ces modifications et l’annulation comme « robot »",
+       "apihelp-rsd-description": "Exporter un schéma RSD (Découverte Très Simple).",
+       "apihelp-rsd-example-simple": "Exporter le schéma RSD",
        "apihelp-format-example-generic": "Mettre en forme le résultat de la requête dans le format $1",
        "apihelp-dbg-description": "Extraire les données au format de var_export() de PHP.",
        "apihelp-dbgfm-description": "Extraire les données au format de var_export() de PHP (affiché proprement en HTML).",
index ebd9958..f61f215 100644 (file)
@@ -33,6 +33,7 @@
        "apihelp-move-description": "Przenieś stronę.",
        "apihelp-move-param-ignorewarnings": "Ignoruj wszystkie ostrzeżenia.",
        "apihelp-protect-example-protect": "Zabezpiecz stronę",
+       "apihelp-query+prefixsearch-param-offset": "Liczba wyników do pominięcia.",
        "apihelp-query+search-description": "Wykonaj wyszukiwanie pełnotekstowe.",
        "apihelp-query+watchlist-param-excludeuser": "Nie wyświetlaj zmian wykonanych przez tego użytkownika.",
        "apihelp-unblock-param-reason": "Powód odblokowania.",
index a805fa5..6c53f6a 100644 (file)
@@ -2423,12 +2423,16 @@ abstract class DatabaseBase implements IDatabase {
        }
 
        /**
-        * Get the name of an index in a given table
+        * Get the name of an index in a given table.
         *
+        * @protected Don't use outside of DatabaseBase and childs
         * @param string $index
         * @return string
         */
-       protected function indexName( $index ) {
+       public function indexName( $index ) {
+               // @FIXME: Make this protected once we move away from PHP 5.3
+               // Needs to be public because of usage in closure (in DatabaseBase::replaceVars)
+
                // Backwards-compatibility hack
                $renamed = array(
                        'ar_usertext_timestamp' => 'usertext_timestamp',
index b400601..2db06e4 100644 (file)
@@ -34,7 +34,9 @@ class ProfilerStub extends Profiler {
        }
 
        public function scopedProfileIn( $section ) {
-               return null;
+               return new ScopedCallback( function() {
+                       // no-op
+               } );
        }
 
        public function getFunctionStats() {
index 808c5cd..d91b429 100644 (file)
@@ -131,7 +131,9 @@ class ProfilerXhprof extends Profiler {
                        } );
                }
 
-               return null;
+               return new ScopedCallback( function() {
+                       // no-op
+               } );
        }
 
        /**
index 6219fc4..fe06375 100644 (file)
@@ -314,10 +314,10 @@ class SpecialActiveUsers extends SpecialPage {
        }
 
        /**
-        * @param DatabaseBase $dbw Passed in from updateSpecialPages.php
+        * @param IDatabase $dbw Passed in from updateSpecialPages.php
         * @return void
         */
-       public static function cacheUpdate( DatabaseBase $dbw ) {
+       public static function cacheUpdate( IDatabase $dbw ) {
                global $wgActiveUserDays;
 
                self::doQueryCacheUpdate( $dbw, $wgActiveUserDays, $wgActiveUserDays * 86400 );
@@ -326,12 +326,12 @@ class SpecialActiveUsers extends SpecialPage {
        /**
         * Update the query cache as needed
         *
-        * @param DatabaseBase $dbw
+        * @param IDatabase $dbw
         * @param int $days How many days user must be idle before he is considered inactive
         * @param int $window Maximum time range of new data to scan (in seconds)
         * @return int|bool UNIX timestamp the cache is now up-to-date as of (false on error)
         */
-       protected static function doQueryCacheUpdate( DatabaseBase $dbw, $days, $window ) {
+       protected static function doQueryCacheUpdate( IDatabase $dbw, $days, $window ) {
                $dbw->startAtomic( __METHOD__ );
 
                $lockKey = wfWikiID() . '-activeusers';
index 59e2bba..1e829b1 100644 (file)
@@ -658,7 +658,7 @@ class ContribsPager extends ReverseChronologicalPager {
        public $mDb;
        public $preventClickjacking = false;
 
-       /** @var DatabaseBase */
+       /** @var IDatabase */
        public $mDbSecondary;
 
        /**
index e739a86..29c3fd4 100644 (file)
@@ -266,7 +266,7 @@ class DeletedContribsPager extends IndexPager {
        /**
         * Get the Database object in use
         *
-        * @return DatabaseBase
+        * @return IDatabase
         */
        public function getDatabase() {
                return $this->mDb;
index 05c89c2..f6cb84d 100644 (file)
@@ -254,7 +254,7 @@ class LinkSearchPage extends QueryPage {
        /**
         * Pre-fill the link cache
         *
-        * @param DatabaseBase $db
+        * @param IDatabase $db
         * @param ResultWrapper $res
         */
        function preprocessResults( $db, $res ) {
index 2667270..1e3dff6 100644 (file)
@@ -71,7 +71,7 @@ class ListDuplicatedFilesPage extends QueryPage {
        /**
         * Pre-fill the link cache
         *
-        * @param DatabaseBase $db
+        * @param IDatabase $db
         * @param ResultWrapper $res
         */
        function preprocessResults( $db, $res ) {
index de05be4..2df4834 100644 (file)
@@ -72,7 +72,7 @@ class ListredirectsPage extends QueryPage {
        /**
         * Cache page existence for performance
         *
-        * @param DatabaseBase $db
+        * @param IDatabase $db
         * @param ResultWrapper $res
         */
        function preprocessResults( $db, $res ) {
index 1084482..c26adc5 100644 (file)
@@ -99,7 +99,7 @@ class MediaStatisticsPage extends QueryPage {
         *
         * @param $out OutputPage
         * @param $skin Skin (deprecated presumably)
-        * @param $dbr DatabaseBase
+        * @param $dbr IDatabase
         * @param $res ResultWrapper Results from query
         * @param $num integer Number of results
         * @param $offset integer Paging offset (Should always be 0 in our case)
@@ -314,7 +314,7 @@ class MediaStatisticsPage extends QueryPage {
        /**
         * Initialize total values so we can figure out percentages later.
         *
-        * @param $dbr DatabaseBase
+        * @param $dbr IDatabase
         * @param $res ResultWrapper
         */
        public function preprocessResults( $dbr, $res ) {
index 9b67f34..c70bbdb 100644 (file)
@@ -65,7 +65,7 @@ class MostcategoriesPage extends QueryPage {
        }
 
        /**
-        * @param DatabaseBase $db
+        * @param IDatabase $db
         * @param ResultWrapper $res
         */
        function preprocessResults( $db, $res ) {
index 30ccbe5..ab3d9c9 100644 (file)
@@ -71,7 +71,7 @@ class MostinterwikisPage extends QueryPage {
        /**
         * Pre-fill the link cache
         *
-        * @param DatabaseBase $db
+        * @param IDatabase $db
         * @param ResultWrapper $res
         */
        function preprocessResults( $db, $res ) {
index 99f0ecf..ae0b070 100644 (file)
@@ -74,7 +74,7 @@ class MostlinkedPage extends QueryPage {
        /**
         * Pre-fill the link cache
         *
-        * @param DatabaseBase $db
+        * @param IDatabase $db
         * @param ResultWrapper $res
         */
        function preprocessResults( $db, $res ) {
index f61a115..cc718e0 100644 (file)
@@ -55,7 +55,7 @@ class MostlinkedCategoriesPage extends QueryPage {
        /**
         * Fetch user page links and cache their existence
         *
-        * @param DatabaseBase $db
+        * @param IDatabase $db
         * @param ResultWrapper $res
         */
        function preprocessResults( $db, $res ) {
index 8e6a596..a924525 100644 (file)
@@ -75,7 +75,7 @@ class MostlinkedTemplatesPage extends QueryPage {
        /**
         * Pre-cache page existence to speed up link generation
         *
-        * @param DatabaseBase $db
+        * @param IDatabase $db
         * @param ResultWrapper $res
         */
        public function preprocessResults( $db, $res ) {
index b1baf67..448b802 100644 (file)
@@ -330,8 +330,9 @@ class SpecialSearch extends SpecialPage {
                        Xml::openElement( 'div', array( 'id' => 'mw-search-top-table' ) ) .
                        $this->shortDialog( $term, $num, $totalRes ) .
                        Xml::closeElement( 'div' ) .
-                       $this->formHeader( $term ) .
-                       Xml::closeElement( 'form' )
+                       Xml::closeElement( 'form' ) .
+                       $this->didYouMeanHtml .
+                       $this->searchProfileTabs( $term )
                );
 
                $filePrefix = $wgContLang->getFormattedNsText( NS_FILE ) . ':';
@@ -993,8 +994,8 @@ class SpecialSearch extends SpecialPage {
         * @param string $term
         * @return string
         */
-       protected function formHeader( $term ) {
-               $out = Xml::openElement( 'div', array( 'class' => 'mw-search-formheader' ) );
+       protected function searchProfileTabs( $term ) {
+               $out = Xml::openElement( 'div', array( 'class' => 'mw-search-profile-tabs' ) );
 
                $bareterm = $term;
                if ( $this->startsWithImage( $term ) ) {
@@ -1083,7 +1084,7 @@ class SpecialSearch extends SpecialPage {
                                Xml::element( 'div', array( 'style' => 'clear:both' ), '', false );
                }
 
-               return $out . $this->didYouMeanHtml;
+               return $out;
        }
 
        /**
index 782d9a1..7ec69e0 100644 (file)
@@ -58,7 +58,7 @@ class ShortPagesPage extends QueryPage {
        }
 
        /**
-        * @param DatabaseBase $db
+        * @param IDatabase $db
         * @param ResultWrapper $res
         */
        function preprocessResults( $db, $res ) {
index a1f48e9..bcf83c8 100644 (file)
@@ -94,7 +94,7 @@ class PageArchive {
        }
 
        /**
-        * @param DatabaseBase $dbr
+        * @param IDatabase $dbr
         * @param string|array $condition
         * @return bool|ResultWrapper
         */
index a06955d..a7c2052 100644 (file)
@@ -294,9 +294,9 @@ class SpecialWatchlist extends ChangesListSpecialPage {
        }
 
        /**
-        * Return a DatabaseBase object for reading
+        * Return a IDatabase object for reading
         *
-        * @return DatabaseBase
+        * @return IDatabase
         */
        protected function getDB() {
                return wfGetDB( DB_SLAVE, 'watchlist' );
@@ -601,7 +601,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
        /**
         * Count the number of items on a user's watchlist
         *
-        * @param DatabaseBase $dbr A database connection
+        * @param IDatabase $dbr A database connection
         * @return int
         */
        protected function countItems( $dbr ) {
index b5f4a8b..23768c1 100644 (file)
        "templatesusedsection": "{{PLURAL:$1|Predložak koji se rabi|Predlošci koji se rabe}} u ovom odjeljku:",
        "template-protected": "(zaštićen)",
        "template-semiprotected": "(djelomično zaštićen)",
-       "hiddencategories": "Ova stranica je član {{PLURAL:$1|1 skrivene kategorija|$1 skrivene kategorije|$1 skrivenih kategorija}}:",
+       "hiddencategories": "Ova stranica je član {{PLURAL:$1|1 skrivene kategorije|$1 skrivene kategorije|$1 skrivenih kategorija}}:",
        "nocreatetext": "Na ovom je projektu ograničeno otvaranje novih stranica.\nMožete se vratiti i uređivati već postojeće stranice ili se [[Special:UserLogin|prijaviti ili otvoriti suradnički račun]].",
        "nocreate-loggedin": "Nemate ovlasti za stvaranje novih stranica.",
        "sectioneditnotsupported-title": "Uređivanje odjeljka nije podržano",
index 55192df..c56f06a 100644 (file)
        "log-name-pagelang": "Språkändringslogg",
        "log-description-pagelang": "Detta är en logg över ändringar i sidspråken.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ändrade}} sidspråket för $3 från $4 till $5.",
-       "default-skin-not-found": "Ojsan! Standardutseendet för din wiki, definierad i <code dir=\"ltr\">$wgDefaultSkin</code> som <code>$1</code>, är inte tillgängligt.\n\nDin installation verkar innehålla följande utseenden. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manualen: Utseendeinställningar] för information om hur du aktiverar dem och hur standard väljs.\n\n$2\n\n; Om du precis installerat MediaWiki:\n: Du installerade troligen från git, eller direkt från källkoden via någon annan metod. Detta är normalt. Försök att installera några utseenden från [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org:s utseendekatalog], genom att:\n:* Ladda ner [https://www.mediawiki.org/wiki/Download tarball-installeraren], som kommer med flera utseenden och tillägg. Du kan klippa och klistra in <code>skins/</code> katalogen från den.\n:* Ladda ner individuella skin tarbells från[https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Klona ett av <code>mediawiki/skins/*</code> centralförvaren in i <code dir=\"ltr\">skins/</code> arkiven i din MediaWiki-installation.\n: Att göra detta borde inte påverka ditt git arkivet om du är en MediaWiki-utvecklare. \n\n; Om du precis har uppgraderat MediaWiki:\n: MediaWiki 1.24 och nyare aktiverar ej längre automatiskt installerade utseenden (se [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Automatisk identifiering av utseenden]). Du kan klistra in följande rader i <code>LocalSettings.php</code> för att aktivera alla för närvarande installerade utseenden:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Om du precis har modifierat <code>LocalSettings.php</code>:\n: Dubbelkolla namnen för utseendena för att identifiera stavfel.",
+       "default-skin-not-found": "Ojsan! Standardutseendet för din wiki, definierad i <code dir=\"ltr\">$wgDefaultSkin</code> som <code>$1</code>, är inte tillgängligt.\n\nDin installation verkar innehålla följande utseenden. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manualen: Utseendeinställningar] för information om hur du aktiverar dem och hur standard väljs.\n\n$2\n\n; Om du precis installerat MediaWiki:\n: Du installerade troligen från git, eller direkt från källkoden via någon annan metod. Detta är normalt. Försök att installera några utseenden från [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org:s utseendekatalog], genom att:\n:* Ladda ner [https://www.mediawiki.org/wiki/Download tarball-installeraren], som kommer med flera utseenden och tillägg. Du kan klippa och klistra in <code>skins/</code>-katalogen från den.\n:* Ladda ner individuella tarballs med utseenden från [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Klona ett av <code>mediawiki/skins/*</code>-centralförvaren in i <code dir=\"ltr\">skins/</code>-arkiven i din MediaWiki-installation.\n: Att göra detta borde inte påverka ditt git-centralförvar om du är en MediaWiki-utvecklare. \n\n; Om du precis har uppgraderat MediaWiki:\n: MediaWiki 1.24 och nyare aktiverar ej längre automatiskt installerade utseenden (se [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Automatisk identifiering av utseenden]). Du kan klistra in följande rader i <code>LocalSettings.php</code> för att aktivera alla för närvarande installerade utseenden:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Om du precis har modifierat <code>LocalSettings.php</code>:\n: Dubbelkolla namnen för utseendena för att identifiera stavfel.",
        "default-skin-not-found-no-skins": "Ojsan! Standardutseendet för din wiki, definierad i <code>$wgDefaultSkin</code> som <code>$1</code>, är inte tillgängligt.\n\nDu har inga installerade utseenden.\n\n; Om du precis installerat eller uppdaterat MediaWiki:\n: Du installerade troligen från git, eller direkt från källkoden via någon annan metod. Detta är att förvänta. MediaWiki 1.24 och nyare inkluderar inte några utseenden i det huvudsakliga centralförvaret. Försök att installera några utseenden från [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org:s utseendekatalog], genom att:\n:* Ladda ner [https://www.mediawiki.org/wiki/Download tarball-installeraren], som kommer med flera utseenden och tillägg. Du kan klipp-och-klistra in <code dir=\"ltr\">skins/</code>-katalogen från den.\n* Klona ett av <code>mediawiki/skins/*</code>-centralförvaren in i <code>skins/</code>-katalogen i din MediaWiki-installation.\n: Att göra detta borde inte påverka ditt git-centralförvar om du är en MediaWiki-utvecklare. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manualen: Utseendeinställningar] för information om hur utseenden aktiveras och hur standardutseendet väljs.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktiverad)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''inaktiverad''')",
index 88fadab..8b3a491 100644 (file)
        "listusers-desc": "使用降冪排序",
        "usereditcount": "$1 次{{PLURAL:$1|編輯}}",
        "usercreated": "於 $1 $2 {{GENDER:$3|建立}}",
-       "newpages": "æ\9c\80æ\96°é \81é\9d¢",
+       "newpages": "新頁面",
        "newpages-username": "使用者名稱:",
        "ancientpages": "最舊頁面",
        "move": "移動",
index 7ff69a1..265723a 100644 (file)
@@ -44,9 +44,9 @@ class RemoveInvalidEmails extends Maintenance {
                                if ( !Sanitizer::validateEmail( trim( $row->user_email ) ) ) {
                                        $this->output( "Found bad email: {$row->user_email} for user #{$row->user_id}\n" );
                                        $badIds[] = $row->user_id;
-                                       if ( $row->user_id > $lastId ) {
-                                               $lastId = $row->user_id;
-                                       }
+                               }
+                               if ( $row->user_id > $lastId ) {
+                                       $lastId = $row->user_id;
                                }
                        }
 
index 4b6c14e..8f845df 100644 (file)
@@ -40,34 +40,34 @@ div.searchresult {
        color: green;
        font-size: 97%;
 }
-.mw-search-formheader {
+.mw-search-profile-tabs {
        background-color: #f3f3f3;
        margin-top: 1em;
        border: 1px solid silver;
 }
-.mw-search-formheader div.search-types {
+.mw-search-profile-tabs div.search-types {
        float: left;
        padding-left: 0.25em;
 }
-.mw-search-formheader div.search-types ul {
+.mw-search-profile-tabs div.search-types ul {
        margin: 0 !important;
        padding: 0 !important;
        list-style: none !important;
 }
-.mw-search-formheader div.search-types ul li {
+.mw-search-profile-tabs div.search-types ul li {
        float: left;
        margin: 0;
        padding: 0;
 }
-.mw-search-formheader div.search-types ul li a {
+.mw-search-profile-tabs div.search-types ul li a {
        display: block;
        padding: 0.5em;
 }
-.mw-search-formheader div.search-types ul li.current a {
+.mw-search-profile-tabs div.search-types ul li.current a {
        color: #333333;
        cursor: default;
 }
-.mw-search-formheader div.search-types ul li.current a:hover {
+.mw-search-profile-tabs div.search-types ul li.current a:hover {
        text-decoration: none;
 }
 #mw-search-top-table div.results-info {