r22747 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r22746‎ | r22747 | r22748 >
Date:07:07, 5 June 2007
Author:david
Status:old
Tags:
Comment:
Merged revisions 22716-22746 via svnmerge from
svn+ssh://david@svn.wikimedia.org/svnroot/mediawiki/trunk/phase3

........
r22716 | robchurch | 2007-06-04 13:00:06 -0700 (Mon, 04 Jun 2007) | 2 lines

* (bug 10117) Special:Wantedpages doesn't handle invalid titles in result - now prints out a warning inline
* Some refactoring of Special:Wantedpages in general
........
r22718 | tstarling | 2007-06-04 14:03:36 -0700 (Mon, 04 Jun 2007) | 1 line

Don't delete images in foreign repositories. Also fixed image counter downwards drift bug.
........
r22720 | robchurch | 2007-06-04 14:39:12 -0700 (Mon, 04 Jun 2007) | 2 lines

* (bug 10118) Introduce Special:Mostlinkedtemplates
* Change default text for "specialpage-empty"
........
r22721 | robchurch | 2007-06-04 14:43:02 -0700 (Mon, 04 Jun 2007) | 1 line

(bug 10104) Provide stub "getLag()" function for DatabaseOracle and DatabasePostgres
........
r22722 | raymond | 2007-06-04 15:01:26 -0700 (Mon, 04 Jun 2007) | 2 lines

* Update German
* Adding new messages to messages.inc
........
r22723 | simetrical | 2007-06-04 15:26:15 -0700 (Mon, 04 Jun 2007) | 3 lines

Use __construct syntax instead of PHP4 syntax. Someone said it was causing problems, but in any case we may as well. Nothing else seems to call them and they don't break my wiki at least, so it shouldn't cause problems.

(This is too trivial for RELEASE-NOTES.)
........
r22726 | robchurch | 2007-06-04 16:43:08 -0700 (Mon, 04 Jun 2007) | 7 lines

Had a bash at cleaning up the horrendous-looking deletion log on the edit page:

* Suppress if no deletion log entries
* Provide a message to explain what it is
* Allow the whole thing to be dismissed
* Remove the mess in Article
* Some prettification
........
r22729 | robchurch | 2007-06-04 17:20:56 -0700 (Mon, 04 Jun 2007) | 3 lines

* (bug 9820) session.save_path check no longer halts installation, but warns of possible bad values
* (bug 9978) Fixed session.save_path validation when using extended configuration format, e.g. "5;/tmp"
........
r22730 | robchurch | 2007-06-04 17:50:46 -0700 (Mon, 04 Jun 2007) | 2 lines

* (bug 9898) Allow viewing all namespaces in Special:Newpages
* Removed some bizarre behaviour in Xml::namespaceSelector() that stopped non-numeric indexes working for the "all namespace" option
........
r22731 | ivanlanin | 2007-06-04 18:02:15 -0700 (Mon, 04 Jun 2007) | 2 lines

* Add recreate-deleted-warn and recreate-deleted-dismiss to messages.inc.
* Indonesian (id) localisation updates.
........
r22732 | wegge | 2007-06-04 18:10:41 -0700 (Mon, 04 Jun 2007) | 1 line

Fix typo in copyrightwarning; translations for r22720, r22726
........
r22733 | robchurch | 2007-06-04 18:16:13 -0700 (Mon, 04 Jun 2007) | 1 line

Copied some of the CSS added in r22726 into other skins, leaving pure aesthetics alone
........
r22734 | wegge | 2007-06-04 18:16:43 -0700 (Mon, 04 Jun 2007) | 1 line

Better wording
........
r22736 | robchurch | 2007-06-04 18:29:05 -0700 (Mon, 04 Jun 2007) | 1 line

Clarification for $wgRestrictionLevels
........
r22737 | robchurch | 2007-06-04 18:50:33 -0700 (Mon, 04 Jun 2007) | 1 line

(bug 10139) Introduce 'EditSectionLink' and 'EditSectionLinkForOther' hooks; see docs/hooks.txt for details [patch from Jack D. Pond, with small modifications]
........
r22738 | ivanlanin | 2007-06-04 18:56:48 -0700 (Mon, 04 Jun 2007) | 1 line

Indonesian (id) localisation updates. Improvements in wording.
........
r22739 | robchurch | 2007-06-04 19:18:49 -0700 (Mon, 04 Jun 2007) | 3 lines

* (bug 9769) Provide "watch this page" toggle on protection form
* Clean up protection form a little
* Change default text for "protectcomment", "protectexpiry", "unprotectcomment" and "protect-cascade" messages
........
r22740 | robchurch | 2007-06-04 19:39:18 -0700 (Mon, 04 Jun 2007) | 1 line

* (bug 9886) Provide clear example "stub link" in Special:Preferences; this is a much simpler, cleaner method than r22245, which was reverted
........
r22741 | robchurch | 2007-06-04 19:46:43 -0700 (Mon, 04 Jun 2007) | 1 line

Restore a mention of "cascading protection" to the message, so users don't get confused, per Simetrical
........
r22742 | robchurch | 2007-06-04 20:28:40 -0700 (Mon, 04 Jun 2007) | 1 line

Don't generate a diff link in the patrol log if the page doesn't exist, it'll be useless
........
r22744 | ivanlanin | 2007-06-04 22:51:53 -0700 (Mon, 04 Jun 2007) | 3 lines

* Change stubthreshold to stub-threshold in maintenance/language/messages.inc.
* Indonesian (id) localisation updates.
........
r22745 | wegge | 2007-06-04 23:13:52 -0700 (Mon, 04 Jun 2007) | 1 line

Danish translation for 22740
........
Modified paths:
  • /branches/liquidthreads (modified) (history)
  • /branches/liquidthreads/RELEASE-NOTES (modified) (history)
  • /branches/liquidthreads/config/index.php (modified) (history)
  • /branches/liquidthreads/docs/hooks.txt (modified) (history)
  • /branches/liquidthreads/includes/Article.php (modified) (history)
  • /branches/liquidthreads/includes/AutoLoader.php (modified) (history)
  • /branches/liquidthreads/includes/BagOStuff.php (modified) (history)
  • /branches/liquidthreads/includes/DatabaseOracle.php (modified) (history)
  • /branches/liquidthreads/includes/DatabasePostgres.php (modified) (history)
  • /branches/liquidthreads/includes/DefaultSettings.php (modified) (history)
  • /branches/liquidthreads/includes/EditPage.php (modified) (history)
  • /branches/liquidthreads/includes/ImagePage.php (modified) (history)
  • /branches/liquidthreads/includes/Linker.php (modified) (history)
  • /branches/liquidthreads/includes/PatrolLog.php (modified) (history)
  • /branches/liquidthreads/includes/ProtectionForm.php (modified) (history)
  • /branches/liquidthreads/includes/QueryPage.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialLog.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialMostlinkedtemplates.php (added) (history)
  • /branches/liquidthreads/includes/SpecialMostlinkedtemplates.php (added) (history)
  • /branches/liquidthreads/includes/SpecialNewpages.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialPage.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialPreferences.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialWantedpages.php (modified) (history)
  • /branches/liquidthreads/includes/Xml.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/ForeignDBFile.php (modified) (history)
  • /branches/liquidthreads/install-utils.inc (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesDa.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesDe.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesEn.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesId.php (modified) (history)
  • /branches/liquidthreads/maintenance/language/messageTypes.inc (modified) (history)
  • /branches/liquidthreads/maintenance/language/messages.inc (modified) (history)
  • /branches/liquidthreads/skins/chick/main.css (modified) (history)
  • /branches/liquidthreads/skins/common/common.css (modified) (history)
  • /branches/liquidthreads/skins/common/wikibits.js (modified) (history)
  • /branches/liquidthreads/skins/monobook/main.css (modified) (history)
  • /branches/liquidthreads/skins/simple/main.css (modified) (history)

Diff [purge]

Index: branches/liquidthreads/docs/hooks.txt
@@ -391,6 +391,20 @@
392392 to be echoed at the top of the edit form as wikitext. Return true without altering
393393 $error to allow the edit to proceed.
394394
 395+'EditSectionLink': Override the return value of Linker::editSectionLink()
 396+$skin: Skin rendering the UI
 397+$title: Title being linked to
 398+$section: Section to link to
 399+$link: Default link
 400+$result: Result (alter this to override the generated links)
 401+
 402+'EditSectionLinkForOther': Override the return value of Linker::editSectionLinkForOther()
 403+$skin: Skin rendering the UI
 404+$title: Title being linked to
 405+$section: Section to link to
 406+$link: Default link
 407+$result: Result (alter this to override the generated links)
 408+
395409 'EmailConfirmed': When checking that the user's email address is "confirmed"
396410 $user: User being checked
397411 $confirmed: Whether or not the email address is confirmed
Index: branches/liquidthreads/languages/messages/MessagesDa.php
@@ -83,6 +83,7 @@
8484 'Wantedcategories' => array( 'Ønskede_kategorier' ),
8585 'Mostlinked' => array( 'Sider_med_flest_henvisninger' ),
8686 'Mostlinkedcategories' => array( 'Kategorier_mes_flest_sider' ),
 87+ 'Mostlinkedtemplates' => array( 'Hyppigst_brugte_skabeloner' ),
8788 'Mostcategories' => array( 'Sider_med_flest_kategorie' ),
8889 'Mostimages' => array( 'Mest_brugte_filer' ),
8990 'Mostrevisions' => array( 'Artikler_med_flest_redigeringer' ),
@@ -661,8 +662,8 @@
662663 'yourdiff' => 'Forskelle',
663664 'copyrightwarning' => '<strong>Husk: <big>kopier ingen websider</big>, som ikke tilhører dig selv, brug <big>ingen ophavsretsligt beskyttede værker</big> uden tilladelse fra ejeren!</strong><br />
664665 Du lover os hermed, at du selv <strong>har skrevet teksten</strong>, at teksten tilhører almenheden, er (<strong>public domain</strong>), eller at <strong>ophavsrets-indehaveren</strong> har givet sin <strong>tilladelse</strong>. Hvis denne tekst allerede er offentliggkort andre steder, skriv det venligst på diskussionssiden.
665 -<i>Bemærk venligst, at alle {{SITENAME}}-artikler automatisk står under „$2“ (se $1 fo detaljer). Hvis du ikke vil, at dit arbejde her ændres og udbredes af andre, så tryk ikke på „Gem“.</i>',
666 -'copyrightwarning2' => 'Bemærk venligst, at alle artikler på {{SITENAME}} kan bearbejdes, ændres eller slettes af andre medarbejdere.
 666+<i>Bemærk venligst, at alle {{SITENAME}}-artikler automatisk står under „$2“ (se $1 for detaljer). Hvis du ikke vil, at dit arbejde her ændres og udbredes af andre, så tryk ikke på „Gem“.</i>',
 667+'copyrightwarning2' => 'Bemærk venligst, at alle artikler på {{SITENAME}} kan bearbejdes, ændres eller slettes af andre brugere.
667668 Læg ingen tekster ind, hvis du ikke kan acceptere at disse kan ændres.
668669
669670 Du bekræfter hermed også, at du selv har skrevet denne tekst eller kopieret den fra en offentlig kilde
@@ -683,6 +684,11 @@
684685 'edittools' => '<!-- Denne tekst vises under formularen „Ændre“ samt "Upload". -->',
685686 'nocreatetitle' => 'Oprettelse af nye sider er begrænset.',
686687 'nocreatetext' => 'Serveren har begrænset oprettelse af nye sider. Bestående sider kan ændres eller [[Special:Userlogin|logge på]].',
 688+'recreate-deleted-warn' => "'''Advarsel: Du er ved at genskabe en tidligere slettet side.'''
 689+
 690+Overvej om det er passende at genoprette siden. De slettede versioner for
 691+denne side er vist nedenfor:",
 692+'recreate-deleted-dismiss' => '(skjul liste)',
687693
688694 # "Undo" feature
689695 'undo-success' => 'Ændringen er nu annulleret. Kontroller venligst bearbejdningen i sammenligningen og klik så på „Gem side“, for at gemme den.',
@@ -854,7 +860,7 @@
855861 'resultsperpage' => 'Resultater pr. side',
856862 'contextlines' => 'Linjer pr. resultat',
857863 'contextchars' => 'Tegn pr. linje i resultatet',
858 -'stubthreshold' => 'Grænse for visning af artikelstumper',
 864+'stub-threshold' => 'Grænse for visning af henvisning som <a href="#" class="stub">artikelstump</a>:',
859865 'recentchangesdays' => 'Antal dage, som listen „Sidste ændringer“ standardmæssigt skal omfatte:',
860866 'recentchangescount' => 'Antallet af titler på siden "seneste ændringer"',
861867 'savedprefs' => 'Dine indstillinger er blevet gemt.',
@@ -1158,6 +1164,8 @@
11591165 'mostlinked-summary' => 'Denne specialside viser, uafhængigt af navnerummet, de sider der har flest henvisninger.',
11601166 'mostlinkedcategories' => 'Mest brugte kategorier',
11611167 'mostlinkedcategories-summary' => 'Denne specialside viser en liste med de mest brugte kategorier.',
 1168+'mostlinkedtemplates' => 'Hyppigst brugte skabeloner',
 1169+'mostlinkedtemplates-summary' => '',
11621170 'mostcategories' => 'Mest brugte sider',
11631171 'mostcategories-summary' => 'Denne specialside viser særligt hyppigt kategoriserede sider.',
11641172 'mostimages' => 'Mest brugte filer',
Index: branches/liquidthreads/languages/messages/MessagesDe.php
@@ -88,6 +88,7 @@
8989 'Wantedcategories' => array( 'Gewünschte_Kategorien' ),
9090 'Mostlinked' => array( 'Meistverlinkte_Seiten' ),
9191 'Mostlinkedcategories' => array( 'Meistbenutzte_Kategorien' ),
 92+ 'Mostlinkedtemplates' => array( 'Meistbenutzte_Vorlagen' ),
9293 'Mostcategories' => array( 'Meistkategorisierte_Seiten' ),
9394 'Mostimages' => array( 'Meistbenutzte_Dateien' ),
9495 'Mostrevisions' => array( 'Meistbearbeitete_Seiten' ),
@@ -1162,7 +1163,7 @@
11631164 'nbytes' => '$1 {{PLURAL:$1|Byte|Bytes}}',
11641165 'ncategories' => '$1 {{PLURAL:$1|Kategorie|Kategorien}}',
11651166 'nlinks' => '{{PLURAL:$1|1 Link|$1 Links}}',
1166 -'nmembers' => '– {{PLURAL:$1|1 Eintrag|$1 Einträge}}',
 1167+'nmembers' => '{{PLURAL:$1|1 Eintrag|$1 Einträge}}',
11671168 'nrevisions' => '{{PLURAL:$1|1 Bearbeitung|$1 Bearbeitungen}}',
11681169 'nviews' => '{{PLURAL:$1|1 Abfrage|$1 Abfragen}}',
11691170 'specialpage-empty' => 'Die Seite enthält aktuell keine Einträge.',
@@ -1186,6 +1187,8 @@
11871188 'mostlinked-summary' => 'Diese Spezialseite zeigt, unabhängig vom Namensraum, alle besonders häufig verlinkten Seiten an.',
11881189 'mostlinkedcategories' => 'Meistbenutzte Kategorien',
11891190 'mostlinkedcategories-summary' => 'Diese Spezialseite zeigt eine Liste der meistbenutzten Kategorien.',
 1191+'mostlinkedtemplates' => 'Meistbenutzte Vorlagen',
 1192+'mostlinkedtemplates-summary' => 'Diese Spezialseite zeigt eine Liste der meistbenutzten Vorlagen.',
11901193 'mostcategories' => 'Meistkategorisierte Seiten',
11911194 'mostcategories-summary' => 'Diese Spezialseite zeigt besonders häufig kategorisierte Seiten an.',
11921195 'mostimages' => 'Meistbenutzte Dateien',
Index: branches/liquidthreads/languages/messages/MessagesEn.php
@@ -379,6 +379,7 @@
380380 'Wantedcategories' => array( 'Wantedcategories' ),
381381 'Mostlinked' => array( 'Mostlinked' ),
382382 'Mostlinkedcategories' => array( 'Mostlinkedcategories' ),
 383+ 'Mostlinkedtemplates' => array( 'Mostlinkedtemplates' ),
383384 'Mostcategories' => array( 'Mostcategories' ),
384385 'Mostimages' => array( 'Mostimages' ),
385386 'Mostrevisions' => array( 'Mostrevisions' ),
@@ -1052,7 +1053,12 @@
10531054 'nocreatetitle' => 'Page creation limited',
10541055 'nocreatetext' => 'This site has restricted the ability to create new pages.
10551056 You can go back and edit an existing page, or [[Special:Userlogin|log in or create an account]].',
 1057+'recreate-deleted-warn' => "'''Warning: You are recreating a page that was previously deleted.'''
10561058
 1059+You should consider whether it is appropriate to continue editing this page.
 1060+The deletion log for this page is provided here for convenience:",
 1061+'recreate-deleted-dismiss' => '(dismiss)',
 1062+
10571063 # "Undo" feature
10581064 'undo-success' => 'The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.',
10591065 'undo-failure' => 'The edit could not be undone due to conflicting intermediate edits.',
@@ -1262,7 +1268,7 @@
12631269 'resultsperpage' => 'Hits per page:',
12641270 'contextlines' => 'Lines per hit:',
12651271 'contextchars' => 'Context per line:',
1266 -'stubthreshold' => 'Threshold for stub display:',
 1272+'stub-threshold' => 'Threshold for <a href="#" class="stub">stub link</a> formatting:',
12671273 'recentchangesdays' => 'Days to show in recent changes:',
12681274 'recentchangescount' => 'Number of edits to show in recent changes:',
12691275 'savedprefs' => 'Your preferences have been saved.',
@@ -1553,7 +1559,7 @@
15541560 'nmembers' => '$1 {{PLURAL:$1|member|members}}',
15551561 'nrevisions' => '$1 {{PLURAL:$1|revision|revisions}}',
15561562 'nviews' => '$1 {{PLURAL:$1|view|views}}',
1557 -'specialpage-empty' => 'This page is empty.',
 1563+'specialpage-empty' => 'There are no results for this report.',
15581564 'lonelypages' => 'Orphaned pages',
15591565 'lonelypages-summary' => '',
15601566 'lonelypagestext' => 'The following pages are not linked from other pages in this wiki.',
@@ -1575,6 +1581,8 @@
15761582 'mostlinked-summary' => '',
15771583 'mostlinkedcategories' => 'Most linked to categories',
15781584 'mostlinkedcategories-summary' => '',
 1585+'mostlinkedtemplates' => 'Most linked-to templates',
 1586+'mostlinkedtemplates-summary' => '',
15791587 'mostcategories' => 'Articles with the most categories',
15801588 'mostcategories-summary' => '',
15811589 'mostimages' => 'Most linked to images',
@@ -1838,14 +1846,14 @@
18391847 'confirmprotecttext' => 'Do you really want to protect this page?',
18401848 'confirmprotect' => 'Confirm protection',
18411849 'protectmoveonly' => 'Protect from moves only',
1842 -'protectcomment' => 'Reason for protecting',
1843 -'protectexpiry' => 'Expiry',
 1850+'protectcomment' => 'Comment:',
 1851+'protectexpiry' => 'Expires:',
18441852 'protect_expiry_invalid' => 'Expiry time is invalid.',
18451853 'protect_expiry_old' => 'Expiry time is in the past.',
18461854 'unprotectsub' =>"(Unprotecting \"$1\")",
18471855 'confirmunprotecttext' => 'Do you really want to unprotect this page?',
18481856 'confirmunprotect' => 'Confirm unprotection',
1849 -'unprotectcomment' => 'Reason for unprotecting',
 1857+'unprotectcomment' => 'Comment:',
18501858 'protect-unchain' => 'Unlock move permissions',
18511859 'protect-text' => 'You may view and change the protection level here for the page <strong>$1</strong>.',
18521860 'protect-locked-blocked' => 'You cannot change protection levels while blocked. Here are the
@@ -1860,7 +1868,7 @@
18611869 'protect-level-sysop' => 'Sysops only',
18621870 'protect-summary-cascade' => 'cascading',
18631871 'protect-expiring' => 'expires $1 (UTC)',
1864 -'protect-cascade' => 'Cascading protection - protect any pages included in this page.',
 1872+'protect-cascade' => 'Protect pages included in this page (cascading protection)',
18651873 'restriction-type' => 'Permission:',
18661874 'restriction-level' => 'Restriction level:',
18671875 'minimum-size' => 'Min size',
Index: branches/liquidthreads/languages/messages/MessagesId.php
@@ -228,7 +228,8 @@
229229 'Wantedpages' => array( 'Halamandiinginkan' ),
230230 'Wantedcategories' => array( 'Kategoridiinginkan' ),
231231 'Mostlinked' => array( 'Palingdituju' ),
232 - 'Mostlinkedcategories' => array( 'Kategoripalingdituju' ),
 232+ 'Mostlinkedcategories' => array( 'Kategoripalingdigunakan' ),
 233+ 'Mostlinkedtemplates' => array( 'Templatpalingdigunakan' ),
233234 'Mostcategories' => array( 'Kategoriterbanyak' ),
234235 'Mostimages' => array( 'Berkastersering' ),
235236 'Mostrevisions' => array( 'Perubahanterbanyak' ),
@@ -778,9 +779,9 @@
779780 'longpagewarning' => "'''PERINGATAN: Halaman ini panjangnya adalah $1 kilobita; beberapa penjelajah web mungkin mengalami masalah dalam menyunting halaman yang panjangnya 32 kb atau lebih. Harap pertimbangkan untuk memecah halaman menjadi beberapa bagian yang lebih kecil.'''",
780781 'longpageerror' => '<strong>KESALAHAN: Teks yang Anda kirimkan sebesar $1 kilobita, yang berarti lebih besar dari jumlah maksimum $2 kilobita. Teks tidak dapat disimpan.</strong>',
781782 'readonlywarning' => '<strong>PERINGATAN: Basis data sedang dikunci karena pemeliharaan, sehingga saat ini Anda tidak akan dapat menyimpan hasil penyuntingan Anda. Anda mungkin perlu memindahkan hasil penyuntingan Anda ini ke tempat lain untuk disimpan belakangan.</strong>',
782 -'protectedpagewarning' => '<strong>PERINGATAN: Halaman ini telah dikunci sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya.</strong>',
 783+'protectedpagewarning' => '<strong>PERINGATAN: Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya.</strong>',
783784 'semiprotectedpagewarning' => "'''Catatan:''' Halaman ini sedang dilindungi, sehingga hanya pengguna terdaftar yang bisa menyuntingnya.",
784 -'cascadeprotectedwarning' => "<strong>PERINGATAN: Halaman ini telah dikunci sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya karena disertakan dalam {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi 'perlindungan runtun':</strong>",
 785+'cascadeprotectedwarning' => "<strong>PERINGATAN: Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya karena disertakan dalam {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi 'perlindungan runtun':</strong>",
785786 'templatesused' => 'Templat yang digunakan di halaman ini:',
786787 'templatesusedpreview' => 'Templat yang digunakan di pratayang ini:',
787788 'templatesusedsection' => 'Templat yang digunakan di bagian ini:',
@@ -789,6 +790,8 @@
790791 'edittools' => '<!-- Teks di sini akan dimunculkan di bawah isian suntingan dan pemuatan.-->',
791792 'nocreatetitle' => 'Pembuatan halaman baru dibatasi',
792793 'nocreatetext' => 'Situs ini membatasi kemampuan membuat halaman baru. Anda dapat kembali dan menyunting halaman yang telah ada, atau silakan [[{{ns:special}}:Userlogin|masuk log atau mendaftar]]',
 794+'recreate-deleted-warn' => "'''Peringatan: Anda membuat ulang suatu halaman yang sudah pernah dihapus.''' Harap pertimbangkan apakah layak untuk melanjutkan suntingan Anda. Berikut adalah log penghapusan dari halaman ini:",
 795+'recreate-deleted-dismiss' => '(tutup)',
793796
794797 # "Undo" feature
795798 'undo-success' => 'Suntingan ini dapat dibatalkan. Tolong cek perbandingan di bawah untuk meyakinkan bahwa benar itu yang Anda ingin lakukan, lalu simpan perubahan tersebut untuk menyelesaikan pembatalan suntingan.',
@@ -949,7 +952,7 @@
950953 'resultsperpage' => 'Hasil per halaman:',
951954 'contextlines' => 'Baris ditampilkan per hasil:',
952955 'contextchars' => 'Karakter untuk konteks per baris:',
953 -'stubthreshold' => 'Ambang batas tampilan rintisan:',
 956+'stub-threshold' => 'Ambang batas untuk format <a href="#" class="stub">pranala rintisan</a>:',
954957 'recentchangesdays' => 'Jumlah hari yang ditampilkan di perubahan terbaru:',
955958 'recentchangescount' => 'Jumlah suntingan yang ditampilkan di perubahan terbaru:',
956959 'savedprefs' => 'Preferensi Anda telah disimpan',
@@ -1170,13 +1173,11 @@
11711174 'statistics' => 'Statistik',
11721175 'sitestats' => 'Statistik situs',
11731176 'userstats' => 'Statistik pengguna',
1174 -'sitestatstext' => "Terdapat total '''\$1''' halaman dalam basis data. Ini termasuk halaman \"pembicaraan\", halaman tentang {{SITENAME}}, halaman \"rintisan\" minimum, halaman peralihan, dan halaman-halaman lain yang mungkin tidak masuk kriteria artikel. Selain itu, ada '''\$2''' halaman yang mungkin termasuk artikel yang sah.
 1177+'sitestatstext' => "{{SITENAME}} saat ini memiliki '''$2''' halaman yang termasuk artikel yang sah. Jumlah tersebut tidak memperhitungkan halaman pembicaraan, halaman tentang {{SITENAME}}, halaman rintisan minimum, halaman peralihan, dan halaman-halaman lain yang tidak masuk dalam kriteria artikel. Jika termasuk halaman-halaman ini, terdapat total '''$1''' halaman dalam basis data.
11751178
1176 -'''\$8''' berkas telah dimuat.
 1179+Telah terjadi sejumlah '''$3''' penampilan halaman dan '''$4''' penyuntingan sejak {{SITENAME}} dimulai. Ini berarti rata-rata '''$5''' suntingan per halaman, dan '''$6''' penampilan per penyuntingan.
11771180
1178 -Ada sejumlah '''\$3''' penampilan halaman, dan sejumlah '''\$4''' penyuntingan sejak {{SITENAME}} dimulai. Ini berarti rata-rata '''\$5''' suntingan per halaman, dan '''\$6''' penampilan per penyuntingan.
1179 -
1180 -[http://meta.wikimedia.org/wiki/Help:Job_queue Antrian job] adalah sebanyak '''\$7'''.",
 1181+Telah dimuat sejumlah '''$8''' berkas dan sedang terjadi '''$7''' [http://meta.wikimedia.org/wiki/Help:Job_queue antrian pekerjaan].",
11811182 'userstatstext' => "Terdapat '''$1''' pengguna terdaftar. '''$2''' (atau '''$4%''') diantaranya memiliki hak akses $5.",
11821183 'statistics-mostpopular' => 'Halaman yang paling banyak ditampilkan',
11831184
@@ -1204,7 +1205,7 @@
12051206 'nmembers' => '$1 pengguna',
12061207 'nrevisions' => '$1 revisi',
12071208 'nviews' => '$1 penampilan',
1208 -'specialpage-empty' => 'Halaman ini kosong.',
 1209+'specialpage-empty' => 'Tak ada yang perlu dilaporkan.',
12091210 'lonelypages' => 'Halaman tak bertuan',
12101211 'lonelypagestext' => 'Halaman-halaman berikut tidak memiliki pranala dari halaman manapun di wiki ini.',
12111212 'uncategorizedpages' => 'Halaman yang tak terkategori',
@@ -1216,7 +1217,8 @@
12171218 'wantedcategories' => 'Kategori yang diinginkan',
12181219 'wantedpages' => 'Halaman yang diinginkan',
12191220 'mostlinked' => 'Halaman yang tersering dituju',
1220 -'mostlinkedcategories' => 'Kategori dengan halaman terbanyak',
 1221+'mostlinkedcategories' => 'Kategori yang tersering digunakan',
 1222+'mostlinkedtemplates' => 'Templat yang tersering digunakan',
12211223 'mostcategories' => 'Artikel dengan kategori terbanyak',
12221224 'mostimages' => 'Berkas yang tersering digunakan',
12231225 'mostrevisions' => 'Artikel dengan perubahan terbanyak',
@@ -1427,14 +1429,14 @@
14281430 'confirmprotecttext' => 'Apakah Anda benar-benar ingin melindungi halaman ini?',
14291431 'confirmprotect' => 'Konfirmasi perlindungan',
14301432 'protectmoveonly' => 'Lindungi dari pemindahan saja',
1431 -'protectcomment' => 'Alasan perlindungan',
1432 -'protectexpiry' => 'Kadaluwarsa',
 1433+'protectcomment' => 'Komentar:',
 1434+'protectexpiry' => 'Kadaluwarsa:',
14331435 'protect_expiry_invalid' => 'Waktu kadaluwarsa tidak sah.',
14341436 'protect_expiry_old' => 'Waktu kadaluwarsa adalah pada masa lampau.',
14351437 'unprotectsub' => '(Menghilangkan perlindungan terhadap "$1")',
14361438 'confirmunprotecttext' => 'Apakah Anda benar-benar ingin menghilangkan perlindungan terhadap halaman ini?',
14371439 'confirmunprotect' => 'Konfirmasi penghilangan perlindungan',
1438 -'unprotectcomment' => 'Alasan penghilangan perlindungan',
 1440+'unprotectcomment' => 'Komentar:',
14391441 'protect-unchain' => 'Buka perlindungan pemindahan',
14401442 'protect-text' => 'Anda dapat melihat atau mengganti tingkatan perlindungan untuk halaman <strong>$1</strong> di sini.',
14411443 'protect-locked-blocked' => 'Anda tak dapat mengganti tingkat perlindungan selagi diblokir. Berikut adalah konfigurasi saat ini untuk halaman <strong>$1</strong>:',
@@ -1446,7 +1448,7 @@
14471449 'protect-level-sysop' => 'Hanya pengurus',
14481450 'protect-summary-cascade' => 'runtun',
14491451 'protect-expiring' => 'kadalawarsa $1 (UTC)',
1450 -'protect-cascade' => 'Perlindungan runtun - lindungi semua halaman yang termasuk dalam halaman ini.',
 1452+'protect-cascade' => 'Lindungi semua halaman yang termasuk dalam halaman ini (perlindungan runtun ).',
14511453 'restriction-type' => 'Perlindungan:',
14521454 'restriction-level' => 'Tingkatan:',
14531455 'minimum-size' => 'Ukuran minimum',
Index: branches/liquidthreads/includes/AutoLoader.php
@@ -190,6 +190,7 @@
191191 'MostimagesPage' => 'includes/SpecialMostimages.php',
192192 'MostlinkedPage' => 'includes/SpecialMostlinked.php',
193193 'MostlinkedCategoriesPage' => 'includes/SpecialMostlinkedcategories.php',
 194+ 'SpecialMostlinkedtemplates' => 'includes/SpecialMostlinkedtemplates.php',
194195 'MostrevisionsPage' => 'includes/SpecialMostrevisions.php',
195196 'FewestrevisionsPage' => 'includes/SpecialFewestrevisions.php',
196197 'MovePageForm' => 'includes/SpecialMovepage.php',
Index: branches/liquidthreads/includes/Xml.php
@@ -100,15 +100,8 @@
101101 */
102102 public static function namespaceSelector($selected = '', $allnamespaces = null, $includehidden=false) {
103103 global $wgContLang;
104 - if( $selected !== '' ) {
105 - if( is_null( $selected ) ) {
106 - // No namespace selected; let exact match work without hitting Main
107 - $selected = '';
108 - } else {
109 - // Let input be numeric strings without breaking the empty match.
110 - $selected = intval( $selected );
111 - }
112 - }
 104+ if( is_null( $selected ) )
 105+ $selected = '';
113106 $s = "\n<select id='namespace' name='namespace' class='namespaceselector'>\n";
114107 $arr = $wgContLang->getFormattedNamespaces();
115108 if( !is_null($allnamespaces) ) {
Index: branches/liquidthreads/includes/BagOStuff.php
@@ -172,7 +172,7 @@
173173 */
174174 var $bag;
175175
176 - function HashBagOStuff() {
 176+ function __construct() {
177177 $this->bag = array();
178178 }
179179
@@ -222,7 +222,7 @@
223223 var $table;
224224 var $lastexpireall = 0;
225225
226 - function SqlBagOStuff($tablename = 'objectcache') {
 226+ function __construct($tablename = 'objectcache') {
227227 $this->table = $tablename;
228228 }
229229
Index: branches/liquidthreads/includes/SpecialLog.php
@@ -74,7 +74,8 @@
7575
7676 // XXX This all needs to use Pager, ugly hack for now.
7777 global $wgMiserMode;
78 - if ($wgMiserMode && ($this->offset >10000)) $this->offset=10000;
 78+ if( $wgMiserMode )
 79+ $this->offset = min( $this->offset, 10000 );
7980 }
8081
8182 /**
@@ -215,6 +216,23 @@
216217 return $this->title->getPrefixedText();
217218 }
218219 }
 220+
 221+ /**
 222+ * Is there at least one row?
 223+ *
 224+ * @return bool
 225+ */
 226+ public function hasRows() {
 227+ # Little hack...
 228+ $limit = $this->limit;
 229+ $this->limit = 1;
 230+ $res = $this->db->query( $this->getQuery() );
 231+ $this->limit = $limit;
 232+ $ret = $this->db->numRows( $res ) > 0;
 233+ $this->db->freeResult( $res );
 234+ return $ret;
 235+ }
 236+
219237 }
220238
221239 /**
Index: branches/liquidthreads/includes/Article.php
@@ -852,13 +852,11 @@
853853 );
854854 }
855855
856 - /**
857 - * If it's a non-existant page, stick the deletion log after the "noarticle" message.
858 - * This won't appear when editing a new page, but will when viewing a nonexistant one.
 856+ /**
 857+ * Show the deletion log when viewing a non-existent page
859858 */
860 - if ( 0 == $this->getID() ) {
861 - $this->showLogExtract( $wgOut, 'view' );
862 - }
 859+ if( $this->getId() == 0 )
 860+ $this->showLogExtract( $wgOut );
863861
864862 # Trackbacks
865863 if ($wgUseTrackbacks)
@@ -2006,23 +2004,21 @@
20072005
20082006 $wgOut->returnToMain( false );
20092007
2010 - $this->showLogExtract( $wgOut, 'delete' );
 2008+ $this->showLogExtract( $wgOut );
20112009 }
20122010
20132011
20142012 /**
2015 - * Fetch deletion log
 2013+ * Show relevant lines from the deletion log
20162014 */
2017 - function showLogExtract( &$out, $type = '' ) {
2018 - # Show relevant lines from the deletion log:
2019 - $out->addHTML( "<div id='mw-article-$type-deletionlog'><h2>" . htmlspecialchars( LogPage::logName( 'delete' ) ) . "</h2>\n" );
 2015+ function showLogExtract( $out ) {
 2016+ $out->addHtml( '<h2>' . htmlspecialchars( LogPage::logName( 'delete' ) ) . '</h2>' );
20202017 $logViewer = new LogViewer(
20212018 new LogReader(
20222019 new FauxRequest(
20232020 array( 'page' => $this->mTitle->getPrefixedText(),
20242021 'type' => 'delete' ) ) ) );
20252022 $logViewer->showList( $out );
2026 - $out->addHTML( "</div>" );
20272023 }
20282024
20292025
Index: branches/liquidthreads/includes/DatabasePostgres.php
@@ -1177,8 +1177,17 @@
11781178 wfDebug( "Function ping() not written for DatabasePostgres.php yet");
11791179 return true;
11801180 }
 1181+
 1182+ /**
 1183+ * How lagged is this slave?
 1184+ *
 1185+ * @return int
 1186+ */
 1187+ public function getLag() {
 1188+ # Not implemented for PostgreSQL
 1189+ return 0;
 1190+ }
11811191
1182 -
11831192 } // end DatabasePostgres class
11841193
11851194 ?>
Index: branches/liquidthreads/includes/SpecialPreferences.php
@@ -949,8 +949,8 @@
950950 # Misc
951951 #
952952 $wgOut->addHTML('<fieldset><legend>' . wfMsg('prefs-misc') . '</legend>');
953 - $wgOut->addHTML( wfInputLabel( wfMsg( 'stubthreshold' ),
954 - 'wpStubs', 'wpStubs', 6, $this->mStubs ) );
 953+ $wgOut->addHtml( '<label for="wpStubs">' . wfMsg( 'stub-threshold' ) . '</label>&nbsp;' );
 954+ $wgOut->addHtml( Xml::input( 'wpStubs', 6, $this->mStubs, array( 'id' => 'wpStubs' ) ) );
955955 $msgUnderline = htmlspecialchars( wfMsg ( 'tog-underline' ) );
956956 $msgUnderlinenever = htmlspecialchars( wfMsg ( 'underline-never' ) );
957957 $msgUnderlinealways = htmlspecialchars( wfMsg ( 'underline-always' ) );
Index: branches/liquidthreads/includes/ImagePage.php
@@ -502,6 +502,12 @@
503503 {
504504 global $wgUser, $wgOut, $wgRequest;
505505
 506+ if ( !$this->img->exists() || !$this->img->isLocal() ) {
 507+ # Use standard article deletion
 508+ Article::delete();
 509+ return;
 510+ }
 511+
506512 $confirm = $wgRequest->wasPosted();
507513 $reason = $wgRequest->getVal( 'wpReason' );
508514 $image = $wgRequest->getVal( 'image' );
@@ -533,7 +539,7 @@
534540 # Deleting old images doesn't require confirmation
535541 if ( !is_null( $oldimage ) || $confirm ) {
536542 if( $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ), $oldimage ) ) {
537 - $this->doDelete( $reason );
 543+ $this->doDeleteImage( $reason );
538544 } else {
539545 $wgOut->showFatalError( wfMsg( 'sessionfailure' ) );
540546 }
@@ -552,9 +558,12 @@
553559
554560 /*
555561 * Delete an image.
 562+ * Called doDeleteImage() not doDelete() so that Article::delete() doesn't
 563+ * call back to here.
 564+ *
556565 * @param $reason User provided reason for deletion.
557566 */
558 - function doDelete( $reason ) {
 567+ function doDeleteImage( $reason ) {
559568 global $wgOut, $wgRequest;
560569
561570 $oldimage = $wgRequest->getVal( 'oldimage' );
Index: branches/liquidthreads/includes/PatrolLog.php
@@ -49,11 +49,16 @@
5050 list( $cur, /* $prev */, $auto ) = $params;
5151 # Standard link to the page in question
5252 $link = $skin->makeLinkObj( $title );
53 - # Generate a diff link
54 - $bits[] = 'oldid=' . urlencode( $cur );
55 - $bits[] = 'diff=prev';
56 - $bits = implode( '&', $bits );
57 - $diff = $skin->makeLinkObj( $title, htmlspecialchars( wfMsg( 'patrol-log-diff', $cur ) ), $bits );
 53+ if( $title->exists() ) {
 54+ # Generate a diff link
 55+ $bits[] = 'oldid=' . urlencode( $cur );
 56+ $bits[] = 'diff=prev';
 57+ $bits = implode( '&', $bits );
 58+ $diff = $skin->makeKnownLinkObj( $title, htmlspecialchars( wfMsg( 'patrol-log-diff', $cur ) ), $bits );
 59+ } else {
 60+ # Don't bother with a diff link, it's useless
 61+ $diff = htmlspecialchars( wfMsg( 'patrol-log-diff', $cur ) );
 62+ }
5863 # Indicate whether or not the patrolling was automatic
5964 $auto = $auto ? wfMsgHtml( 'patrol-log-auto' ) : '';
6065 # Put it all together
Index: branches/liquidthreads/includes/SpecialWantedpages.php
@@ -63,46 +63,49 @@
6464 $db->dataSeek( $res, 0 );
6565 }
6666
67 -
68 - function formatResult( $skin, $result ) {
 67+ /**
 68+ * Format an individual result
 69+ *
 70+ * @param Skin $skin Skin to use for UI elements
 71+ * @param object $result Result row
 72+ * @return string
 73+ */
 74+ public function formatResult( $skin, $result ) {
6975 global $wgLang;
70 -
7176 $title = Title::makeTitleSafe( $result->namespace, $result->title );
72 -
73 - if( $this->isCached() ) {
74 - # Check existence; which is stored in the link cache
75 - if( !$title->exists() ) {
76 - # Make a redlink
 77+ if( $title instanceof Title ) {
 78+ if( $this->isCached() ) {
 79+ $pageLink = $title->exists()
 80+ ? '<s>' . $skin->makeLinkObj( $title ) . '</s>'
 81+ : $skin->makeBrokenLinkObj( $title );
 82+ } else {
7783 $pageLink = $skin->makeBrokenLinkObj( $title );
78 - } else {
79 - # Make a a struck-out normal link
80 - $pageLink = "<s>" . $skin->makeLinkObj( $title ) . "</s>";
81 - }
 84+ }
 85+ return wfSpecialList( $pageLink, $this->makeWlhLink( $title, $skin, $result ) );
8286 } else {
83 - # Not cached? Don't bother checking existence; it can't
84 - $pageLink = $skin->makeBrokenLinkObj( $title );
 87+ $tsafe = htmlspecialchars( $result->title );
 88+ return "Invalid title in result set; {$tsafe}";
8589 }
86 -
87 - # Make a link to "what links here" if it's required
88 - $wlhLink = $this->nlinks
89 - ? $this->makeWlhLink( $title, $skin,
90 - wfMsgExt( 'nlinks', array( 'parsemag', 'escape'),
91 - $wgLang->formatNum( $result->value ) ) )
92 - : null;
93 -
94 - return wfSpecialList($pageLink, $wlhLink);
9590 }
9691
9792 /**
98 - * Make a "what links here" link for a specified title
99 - * @param $title Title to make the link for
100 - * @param $skin Skin to use
101 - * @param $text Link text
 93+ * Make a "what links here" link for a specified result if required
 94+ *
 95+ * @param Title $title Title to make the link for
 96+ * @param Skin $skin Skin to use
 97+ * @param object $result Result row
10298 * @return string
10399 */
104 - function makeWlhLink( &$title, &$skin, $text ) {
105 - $wlhTitle = SpecialPage::getTitleFor( 'Whatlinkshere' );
106 - return $skin->makeKnownLinkObj( $wlhTitle, $text, 'target=' . $title->getPrefixedUrl() );
 100+ private function makeWlhLink( $title, $skin, $result ) {
 101+ global $wgLang;
 102+ if( $this->nlinks ) {
 103+ $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
 104+ $label = wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ),
 105+ $wgLang->formatNum( $result->value ) );
 106+ return $skin->makeKnownLinkObj( $wlh, $label, 'target=' . $title->getPrefixedUrl() );
 107+ } else {
 108+ return null;
 109+ }
107110 }
108111
109112 }
Index: branches/liquidthreads/includes/DatabaseOracle.php
@@ -675,10 +675,19 @@
676676 }
677677
678678 function ping() {
679 - wfDebug( "Function ping() not written for DatabasePostgres.php yet");
 679+ wfDebug( "Function ping() not written for DatabaseOracle.php yet");
680680 return true;
681681 }
682682
 683+ /**
 684+ * How lagged is this slave?
 685+ *
 686+ * @return int
 687+ */
 688+ public function getLag() {
 689+ # Not implemented for Oracle
 690+ return 0;
 691+ }
683692
684693 } // end DatabaseOracle class
685694
Index: branches/liquidthreads/includes/SpecialNewpages.php
@@ -36,12 +36,19 @@
3737 }
3838 }
3939
 40+ private function makeNamespaceWhere() {
 41+ return $this->namespace !== 'all'
 42+ ? ' AND rc_namespace = ' . intval( $this->namespace )
 43+ : '';
 44+ }
 45+
4046 function getSQL() {
4147 global $wgUser, $wgUseRCPatrol;
4248 $usepatrol = ( $wgUseRCPatrol && $wgUser->isAllowed( 'patrol' ) ) ? 1 : 0;
4349 $dbr = wfGetDB( DB_SLAVE );
4450 list( $recentchanges, $page ) = $dbr->tableNamesN( 'recentchanges', 'page' );
4551
 52+ $nsfilter = $this->makeNamespaceWhere();
4653 $uwhere = $this->makeUserWhere( $dbr );
4754
4855 # FIXME: text will break with compression
@@ -62,7 +69,8 @@
6370 page_latest as rev_id
6471 FROM $recentchanges,$page
6572 WHERE rc_cur_id=page_id AND rc_new=1
66 - AND rc_namespace=" . $this->namespace . " AND page_is_redirect=0
 73+ {$nsfilter}
 74+ AND page_is_redirect = 0
6775 {$uwhere}";
6876 }
6977
@@ -134,7 +142,7 @@
135143 $form = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $self->getLocalUrl() ) );
136144 # Namespace selector
137145 $form .= '<table><tr><td align="right">' . Xml::label( wfMsg( 'namespace' ), 'namespace' ) . '</td>';
138 - $form .= '<td>' . Xml::namespaceSelector( $this->namespace ) . '</td></tr>';
 146+ $form .= '<td>' . Xml::namespaceSelector( $this->namespace, 'all' ) . '</td></tr>';
139147 # Username filter
140148 $form .= '<tr><td align="right">' . Xml::label( wfMsg( 'newpages-username' ), 'mw-np-username' ) . '</td>';
141149 $form .= '<td>' . Xml::input( 'username', 30, $this->username, array( 'id' => 'mw-np-username' ) ) . '</td></tr>';
@@ -186,7 +194,7 @@
187195 }
188196 }
189197 } else {
190 - if( $ns = $wgRequest->getInt( 'namespace', 0 ) )
 198+ if( $ns = $wgRequest->getText( 'namespace', NS_MAIN ) )
191199 $namespace = $ns;
192200 if( $un = $wgRequest->getText( 'username' ) )
193201 $username = $un;
Index: branches/liquidthreads/includes/ProtectionForm.php
@@ -188,6 +188,13 @@
189189 if( !$ok ) {
190190 throw new FatalError( "Unknown error at restriction save time." );
191191 }
 192+
 193+ if( $wgRequest->getCheck( 'mwProtectWatch' ) ) {
 194+ $this->mArticle->doWatch();
 195+ } elseif( $this->mTitle->userIsWatching() ) {
 196+ $this->mArticle->doUnwatch();
 197+ }
 198+
192199 return $ok;
193200 }
194201
@@ -232,14 +239,16 @@
233240 $out .= "</tbody>\n";
234241 $out .= "</table>\n";
235242
 243+ $out .= "<table>\n";
 244+ $out .= "<tbody>\n";
 245+
236246 global $wgEnableCascadingProtection;
 247+ if( $wgEnableCascadingProtection )
 248+ $out .= '<tr><td></td><td>' . $this->buildCascadeInput() . "</td></tr>\n";
237249
238 - if ($wgEnableCascadingProtection)
239 - $out .= $this->buildCascadeInput();
 250+ if( !$this->disabled )
 251+ $out .= '<tr><td></td><td>' . $this->buildWatchInput() . "</td></tr>\n";
240252
241 - $out .= "<table>\n";
242 - $out .= "<tbody>\n";
243 -
244253 $out .= $this->buildExpiryInput();
245254
246255 if( !$this->disabled ) {
@@ -311,7 +320,7 @@
312321 function buildExpiryInput() {
313322 $id = 'mwProtect-expiry';
314323
315 - $ci = "<tr> <td align=\"right\">";
 324+ $ci = "<tr><td align=\"right\">";
316325 $ci .= wfElement( 'label', array (
317326 'id' => "$id-label",
318327 'for' => $id ),
@@ -326,6 +335,16 @@
327336
328337 return $ci;
329338 }
 339+
 340+ function buildWatchInput() {
 341+ global $wgUser;
 342+ return Xml::checkLabel(
 343+ wfMsg( 'watchthis' ),
 344+ 'mwProtectWatch',
 345+ 'mwProtectWatch',
 346+ $this->mTitle->userIsWatching() || $wgUser->getOption( 'watchdefault' )
 347+ );
 348+ }
330349
331350 function buildSubmit() {
332351 return wfElement( 'input', array(
Index: branches/liquidthreads/includes/DefaultSettings.php
@@ -1086,6 +1086,10 @@
10871087 /**
10881088 * Set of permission keys that can be selected via action=protect.
10891089 * 'autoconfirm' allows all registerd users if $wgAutoConfirmAge is 0.
 1090+ *
 1091+ * You can add a new protection level that requires a specific
 1092+ * permission by manipulating this array. The ordering of elements
 1093+ * dictates the order on the protection form's lists.
10901094 */
10911095 $wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' );
10921096
@@ -1176,7 +1180,7 @@
11771181 * to ensure that client-side caches don't keep obsolete copies of global
11781182 * styles.
11791183 */
1180 -$wgStyleVersion = '73';
 1184+$wgStyleVersion = '74';
11811185
11821186
11831187 # Server-side caching:
Index: branches/liquidthreads/includes/Linker.php
@@ -1058,13 +1058,14 @@
10591059 /** @todo document */
10601060 public function editSectionLinkForOther( $title, $section ) {
10611061 global $wgContLang;
1062 -
10631062 $title = Title::newFromText( $title );
10641063 $editurl = '&section='.$section;
10651064 $url = $this->makeKnownLinkObj( $title, wfMsg('editsection'), 'action=edit'.$editurl );
1066 -
1067 - return "<span class=\"editsection\">[".$url."]</span>";
1068 -
 1065+ $result = null;
 1066+ wfRunHooks( 'EditSectionLinkForOther', array( &$this, $title, $section, $url, &$result ) );
 1067+ return is_null( $result )
 1068+ ? "<span class=\"editsection\"[{$url}]</span>"
 1069+ : "<span class=\"editsection\">[{$result}]</span>";
10691070 }
10701071
10711072 /**
@@ -1074,12 +1075,14 @@
10751076 */
10761077 public function editSectionLink( $nt, $section, $hint='' ) {
10771078 global $wgContLang;
1078 -
10791079 $editurl = '&section='.$section;
10801080 $hint = ( $hint=='' ) ? '' : ' title="' . wfMsgHtml( 'editsectionhint', htmlspecialchars( $hint ) ) . '"';
10811081 $url = $this->makeKnownLinkObj( $nt, wfMsg('editsection'), 'action=edit'.$editurl, '', '', '', $hint );
1082 -
1083 - return "<span class=\"editsection\">[".$url."]</span>";
 1082+ $result = null;
 1083+ wfRunHooks( 'EditSectionLink', array( &$this, $nt, $section, $url, &$result ) );
 1084+ return is_null( $result )
 1085+ ? "<span class=\"editsection\">[{$url}]</span>"
 1086+ : "<span class=\"editsection\">[{$result}]</span>";
10841087 }
10851088
10861089 /**
Index: branches/liquidthreads/includes/SpecialMostlinkedtemplates.php
@@ -0,0 +1,132 @@
 2+<?php
 3+
 4+/**
 5+ * Special page lists templates with a large number of
 6+ * transclusion links, i.e. "most used" templates
 7+ *
 8+ * @addtogroup SpecialPage
 9+ * @author Rob Church <robchur@gmail.com>
 10+ */
 11+class SpecialMostlinkedtemplates extends QueryPage {
 12+
 13+ /**
 14+ * Name of the report
 15+ *
 16+ * @return string
 17+ */
 18+ public function getName() {
 19+ return 'Mostlinkedtemplates';
 20+ }
 21+
 22+ /**
 23+ * Is this report expensive, i.e should it be cached?
 24+ *
 25+ * @return bool
 26+ */
 27+ public function isExpensive() {
 28+ return true;
 29+ }
 30+
 31+ /**
 32+ * Is there a feed available?
 33+ *
 34+ * @return bool
 35+ */
 36+ public function isSyndicated() {
 37+ return false;
 38+ }
 39+
 40+ /**
 41+ * Sort the results in descending order?
 42+ *
 43+ * @return bool
 44+ */
 45+ public function sortDescending() {
 46+ return true;
 47+ }
 48+
 49+ /**
 50+ * Generate SQL for the report
 51+ *
 52+ * @return string
 53+ */
 54+ public function getSql() {
 55+ $dbr = wfGetDB( DB_SLAVE );
 56+ $templatelinks = $dbr->tableName( 'templatelinks' );
 57+ $name = $dbr->addQuotes( $this->getName() );
 58+ return "SELECT {$name} AS type,
 59+ " . NS_TEMPLATE . " AS namespace,
 60+ tl_title AS title,
 61+ COUNT(*) AS value
 62+ FROM {$templatelinks}
 63+ WHERE tl_namespace = " . NS_TEMPLATE . "
 64+ GROUP BY 1, 2, 3";
 65+ }
 66+
 67+ /**
 68+ * Pre-cache page existence to speed up link generation
 69+ *
 70+ * @param Database $dbr Database connection
 71+ * @param int $res Result pointer
 72+ */
 73+ public function preprocessResults( $dbr, $res ) {
 74+ $batch = new LinkBatch();
 75+ while( $row = $dbr->fetchObject( $res ) ) {
 76+ $title = Title::makeTitleSafe( $row->namespace, $row->title );
 77+ $batch->addObj( $title );
 78+ }
 79+ $batch->execute();
 80+ if( $dbr->numRows( $res ) > 0 )
 81+ $dbr->dataSeek( $res, 0 );
 82+ }
 83+
 84+ /**
 85+ * Format a result row
 86+ *
 87+ * @param Skin $skin Skin to use for UI elements
 88+ * @param object $result Result row
 89+ * @return string
 90+ */
 91+ public function formatResult( $skin, $result ) {
 92+ $title = Title::makeTitleSafe( $result->namespace, $result->title );
 93+ if( $title instanceof Title ) {
 94+ return wfSpecialList(
 95+ $skin->makeLinkObj( $title ),
 96+ $this->makeWlhLink( $title, $skin, $result )
 97+ );
 98+ } else {
 99+ $tsafe = htmlspecialchars( $result->title );
 100+ return "Invalid title in result set; {$tsafe}";
 101+ }
 102+ }
 103+
 104+ /**
 105+ * Make a "what links here" link for a given title
 106+ *
 107+ * @param Title $title Title to make the link for
 108+ * @param Skin $skin Skin to use
 109+ * @param object $result Result row
 110+ * @return string
 111+ */
 112+ private function makeWlhLink( $title, $skin, $result ) {
 113+ global $wgLang;
 114+ $wlh = SpecialPage::getTitleFor( 'Whatlinkshere' );
 115+ $label = wfMsgExt( 'nlinks', array( 'parsemag', 'escape' ),
 116+ $wgLang->formatNum( $result->value ) );
 117+ return $skin->makeKnownLinkObj( $wlh, $label, 'target=' . $title->getPrefixedUrl() );
 118+ }
 119+
 120+}
 121+
 122+/**
 123+ * Execution function
 124+ *
 125+ * @param mixed $par Parameters passed to the page
 126+ */
 127+function wfSpecialMostlinkedtemplates( $par = false ) {
 128+ list( $limit, $offset ) = wfCheckLimits();
 129+ $mlt = new SpecialMostlinkedtemplates();
 130+ $mlt->doQuery( $offset, $limit );
 131+}
 132+
 133+?>
\ No newline at end of file
Property changes on: branches/liquidthreads/includes/SpecialMostlinkedtemplates.php
___________________________________________________________________
Added: svn:eol-style
1134 + native
Index: branches/liquidthreads/includes/QueryPage.php
@@ -25,6 +25,7 @@
2626 array( 'MostcategoriesPage', 'Mostcategories' ),
2727 array( 'MostimagesPage', 'Mostimages' ),
2828 array( 'MostlinkedCategoriesPage', 'Mostlinkedcategories' ),
 29+ array( 'SpecialMostlinkedtemplates', 'Mostlinkedtemplates' ),
2930 array( 'MostlinkedPage', 'Mostlinked' ),
3031 array( 'MostrevisionsPage', 'Mostrevisions' ),
3132 array( 'FewestrevisionsPage', 'Fewestrevisions' ),
Index: branches/liquidthreads/includes/SpecialPage.php
@@ -106,6 +106,7 @@
107107 'Wantedcategories' => array( 'SpecialPage', 'Wantedcategories' ),
108108 'Mostlinked' => array( 'SpecialPage', 'Mostlinked' ),
109109 'Mostlinkedcategories' => array( 'SpecialPage', 'Mostlinkedcategories' ),
 110+ 'Mostlinkedtemplates' => array( 'SpecialPage', 'Mostlinkedtemplates' ),
110111 'Mostcategories' => array( 'SpecialPage', 'Mostcategories' ),
111112 'Mostimages' => array( 'SpecialPage', 'Mostimages' ),
112113 'Mostrevisions' => array( 'SpecialPage', 'Mostrevisions' ),
Index: branches/liquidthreads/includes/filerepo/ForeignDBFile.php
@@ -25,6 +25,9 @@
2626 function restore( /*...*/ ) {
2727 $this->readOnlyError();
2828 }
 29+ function delete( /*...*/ ) {
 30+ $this->readOnlyError();
 31+ }
2932
3033 function getDescriptionUrl() {
3134 // Restore remote behaviour
Index: branches/liquidthreads/includes/EditPage.php
@@ -611,8 +611,8 @@
612612 $wgOut->addWikiText( wfMsg( 'newarticletext' ) );
613613 else
614614 $wgOut->addWikiText( wfMsg( 'newarticletextanon' ) );
615 - // Show deletion log when editing new article.
616 - $this->mArticle->showLogExtract( $wgOut, 'create' );
 615+ # Let the user know about previous deletions if applicable
 616+ $this->showDeletionLog( $wgOut );
617617 }
618618 }
619619
@@ -2048,6 +2048,46 @@
20492049 $wgOut->setPageTitle( wfMsg( 'nocreatetitle' ) );
20502050 $wgOut->addWikiText( wfMsg( 'nocreatetext' ) );
20512051 }
 2052+
 2053+ /**
 2054+ * If there are rows in the deletion log for this page, show them,
 2055+ * along with a nice little note for the user
 2056+ *
 2057+ * @param OutputPage $out
 2058+ */
 2059+ private function showDeletionLog( $out ) {
 2060+ $title = $this->mArticle->getTitle();
 2061+ $reader = new LogReader(
 2062+ new FauxRequest(
 2063+ array(
 2064+ 'page' => $title->getPrefixedText(),
 2065+ 'type' => 'delete',
 2066+ )
 2067+ )
 2068+ );
 2069+ if( $reader->hasRows() ) {
 2070+ $out->addHtml( '<div id="mw-recreate-deleted-warn">' );
 2071+ $out->addHtml( $this->buildWarningDismisser() );
 2072+ $out->addWikiText( wfMsg( 'recreate-deleted-warn' ) );
 2073+ $viewer = new LogViewer( $reader );
 2074+ $viewer->showList( $out );
 2075+ $out->addHtml( '</div>' );
 2076+ }
 2077+ }
 2078+
 2079+ /**
 2080+ * Builds a JavaScript fragment that injects a link to dismiss the
 2081+ * "recreating deleted" warning
 2082+ *
 2083+ * @return string
 2084+ */
 2085+ private function buildWarningDismisser() {
 2086+ return '<script type="text/javascript">'
 2087+ . 'document.write( \'<div class="mw-recreate-deleted-control">'
 2088+ . '<a href="javascript:dismissRecreateWarning();">'
 2089+ . wfMsgHtml( 'recreate-deleted-dismiss' ) . '</a></div>\' );'
 2090+ . '</script>';
 2091+ }
20522092
20532093 }
20542094
Index: branches/liquidthreads/RELEASE-NOTES
@@ -51,10 +51,14 @@
5252 * Added $wgArticleRobotPolicies
5353 * (bug 10076) Additional parameter $7 added to MediaWiki:Blockedtext
5454 containing, the ip, ip range, or username whose block is affecting the
55 -* (bug 7691) Deletion log now shown when creating a new article, following
56 - MediaWiki:Noarticletext(anon) or MediaWiki:Newarticletext(anon).
57 - current user.
 55+* (bug 7691) Show relevant lines from the deletion log when viewing
 56+ a non-existent article or re-creating a previously-deleted article
5857 * Added variables 'wgRestrictionEdit' and 'wgRestrictionMove' for JS to header
 58+* (bug 9898) Allow viewing all namespaces in Special:Newpages
 59+* (bug 10139) Introduce 'EditSectionLink' and 'EditSectionLinkForOther' hooks;
 60+ see docs/hooks.txt for details
 61+* (bug 9769) Provide "watch this page" toggle on protection form
 62+* (bug 9886) Provide clear example "stub link" in Special:Preferences
5963
6064 == Bugfixes since 1.10 ==
6165
@@ -110,8 +114,17 @@
111115 * (bug 3624) TeX: \ker, \hom, \arg, \dim treated like \sin & \cos
112116 * (bug 10132, 10134) Restore back-compatibility Image::imageUrl() function
113117 * (bug 10113) Fix double-click for view source on protected pages
 118+* (bug 10117) Special:Wantedpages doesn't handle invalid titles in result
 119+ set [now prints out a warning]
 120+* (bug 10118) Introduced Special:Mostlinkedtemplates, report which lists
 121+ templates with a high number of inclusion links
 122+* (bug 10104) Fixed Database::getLag() for PostgreSQL and Oracle
 123+* (bug 9820) session.save_path check no longer halts installation, but
 124+ warns of possible bad values
 125+* (bug 9978) Fixed session.save_path validation when using extended
 126+ configuration format, e.g. "5;/tmp"
 127+* Don't generate a diff link in the patrol log if the page doesn't exist
114128
115 -
116129 == MediaWiki API changes since 1.10 ==
117130
118131 (For ongoing development discussion, see http://www.mediawiki.org/wiki/API)
Index: branches/liquidthreads/maintenance/language/messages.inc
@@ -505,6 +505,8 @@
506506 'edittools',
507507 'nocreatetitle',
508508 'nocreatetext',
 509+ 'recreate-deleted-warn',
 510+ 'recreate-deleted-dismiss',
509511 ),
510512 'undo' => array(
511513 'undo-success',
@@ -666,7 +668,7 @@
667669 'resultsperpage',
668670 'contextlines',
669671 'contextchars',
670 - 'stubthreshold',
 672+ 'stub-threshold',
671673 'recentchangesdays',
672674 'recentchangescount',
673675 'savedprefs',
@@ -950,6 +952,8 @@
951953 'mostlinked-summary',
952954 'mostlinkedcategories',
953955 'mostlinkedcategories-summary',
 956+ 'mostlinkedtemplates',
 957+ 'mostlinkedtemplates-summary',
954958 'mostcategories',
955959 'mostcategories-summary',
956960 'mostimages',
Index: branches/liquidthreads/maintenance/language/messageTypes.inc
@@ -128,6 +128,7 @@
129129 'wantedpages-summary',
130130 'mostlinked-summary',
131131 'mostlinkedcategories-summary',
 132+ 'mostlinkedtemplates-summary',
132133 'mostcategories-summary',
133134 'mostimages-summary',
134135 'mostrevisions-summary',
Index: branches/liquidthreads/skins/chick/main.css
@@ -470,6 +470,15 @@
471471
472472 .templatesUsed { margin-top: 1.5em; }
473473
 474+/* Recreating-deleted-page warning and log entries */
 475+div#mw-recreate-deleted-warn ul li {
 476+ font-size: 95%;
 477+}
 478+div.mw-recreate-deleted-control {
 479+ float: right;
 480+ font-size: 90%;
 481+}
 482+
474483 /**
475484 * Here is some stuff that's ACTUALLY COMMON TO ALL SKINS.
476485 * When the day comes, it can be moved to a *real* common.css.
Index: branches/liquidthreads/skins/monobook/main.css
@@ -1887,6 +1887,19 @@
18881888 background-color: #CC9999;
18891889 }
18901890
 1891+/* Recreating-deleted-page warning and log entries */
 1892+div#mw-recreate-deleted-warn {
 1893+ padding: 3px;
 1894+ margin-bottom: 3px;
 1895+ border: 2px solid #993333;
 1896+}
 1897+div#mw-recreate-deleted-warn ul li {
 1898+ font-size: 95%;
 1899+}
 1900+div.mw-recreate-deleted-control {
 1901+ float: right;
 1902+ font-size: 90%;
 1903+}
18911904 /**
18921905 * Here is some stuff that's ACTUALLY COMMON TO ALL SKINS.
18931906 * When the day comes, it can be moved to a *real* common.css.
Index: branches/liquidthreads/skins/common/common.css
@@ -451,6 +451,15 @@
452452 float: right;
453453 }
454454
 455+/* Recreating-deleted-page warning and log entries */
 456+div#mw-recreate-deleted-warn ul li {
 457+ font-size: 95%;
 458+}
 459+div.mw-recreate-deleted-control {
 460+ float: right;
 461+ font-size: 90%;
 462+}
 463+
455464 /**
456465 * Here is some stuff that's ACTUALLY COMMON TO ALL SKINS.
457466 * When the day comes, it can be moved to a *real* common.css.
Index: branches/liquidthreads/skins/common/wikibits.js
@@ -1213,6 +1213,17 @@
12141214 /*
12151215 * End of table sorting code
12161216 */
 1217+
 1218+/**
 1219+ * Allows the "recreating-deleted-page" warning to be expanded
 1220+ * and collapsed
 1221+ */
 1222+function dismissRecreateWarning() {
 1223+ var warning = document.getElementById( "mw-recreate-deleted-warn" );
 1224+ if( warning != undefined ) {
 1225+ warning.parentNode.removeChild( warning );
 1226+ }
 1227+}
12171228
12181229 function runOnloadHook() {
12191230 // don't run anything below this for non-dom browsers
@@ -1243,4 +1254,4 @@
12441255 // so the below should be redundant. It's there just in case.
12451256 hookEvent("load", runOnloadHook);
12461257
1247 -hookEvent("load", mwSetupToolbar);
 1258+hookEvent("load", mwSetupToolbar);
\ No newline at end of file
Index: branches/liquidthreads/skins/simple/main.css
@@ -441,6 +441,15 @@
442442
443443 .templatesUsed { margin-top: 1.5em; }
444444
 445+/* Recreating-deleted-page warning and log entries */
 446+div#mw-recreate-deleted-warn ul li {
 447+ font-size: 95%;
 448+}
 449+div.mw-recreate-deleted-control {
 450+ float: right;
 451+ font-size: 90%;
 452+}
 453+
445454 /**
446455 * Here is some stuff that's ACTUALLY COMMON TO ALL SKINS.
447456 * When the day comes, it can be moved to a *real* common.css.
Index: branches/liquidthreads/config/index.php
@@ -395,7 +395,8 @@
396396
397397 # session.save_path doesn't *have* to be set, but if it is, and it's
398398 # not valid/writable/etc. then it can cause problems
399 -$sessionSavePath = ini_get( 'session.save_path' );
 399+$sessionSavePath = mw_get_session_save_path();
 400+$ssp = htmlspecialchars( $sessionSavePath );
400401 # Warn the user if it's not set, but let them proceed
401402 if( !$sessionSavePath ) {
402403 print "<li><strong>Warning:</strong> A value for <tt>session.save_path</tt>
@@ -404,14 +405,12 @@
405406 for the user your web server is running under.</li>";
406407 } elseif ( is_dir( $sessionSavePath ) && is_writable( $sessionSavePath ) ) {
407408 # All good? Let the user know
408 - print "<li>Session save path appears to be valid.</li>";
 409+ print "<li>Session save path (<tt>{$ssp}</tt>) appears to be valid.</li>";
409410 } else {
410 - # Something not right? Halt the installation so the user can fix it up
411 - dieout( "Your session save path appears to be invalid or is not writable.
412 - PHP needs to be able to save data to this location in order for correct
413 - session operation. Please check that <tt>session.save_path</tt> in
414 - <tt>PHP.ini</tt> points to a valid path, and is read/write/execute for
415 - the user your web server is running under." );
 411+ # Something not right? Warn the user, but let them proceed
 412+ print "<li><strong>Warning:</strong> Your <tt>session.save_path</tt> value (<tt>{$ssp}</tt>)
 413+ appears to be invalid or is not writable. PHP needs to be able to save data to
 414+ this location for correct session operation.</li>";
416415 }
417416
418417 # Check for PCRE support
Index: branches/liquidthreads/install-utils.inc
@@ -106,4 +106,20 @@
107107 exit(1);
108108 }
109109 }
110 -?>
 110+
 111+/**
 112+ * Get the value of session.save_path
 113+ *
 114+ * Per http://uk.php.net/manual/en/ref.session.php#ini.session.save-path,
 115+ * this might have some additional preceding parts which need to be
 116+ * ditched
 117+ *
 118+ * @return string
 119+ */
 120+function mw_get_session_save_path() {
 121+ $path = ini_get( 'session.save_path' );
 122+ $path = substr( $path, strrpos( $path, ';' ) );
 123+ return $path;
 124+}
 125+
 126+?>
\ No newline at end of file
Property changes on: branches/liquidthreads
___________________________________________________________________
Modified: svnmerge-integrated
111127 - /trunk/phase3:1-22715
112128 + /trunk/phase3:1-22746

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r22245(bug 9886) Give a sample stub link in stub threshold label in preferences...robchurch21:10, 18 May 2007
r22716* (bug 10117) Special:Wantedpages doesn't handle invalid titles in result - n...robchurch20:00, 4 June 2007
r22718Don't delete images in foreign repositories. Also fixed image counter downwar...tstarling21:03, 4 June 2007
r22720* (bug 10118) Introduce Special:Mostlinkedtemplates...robchurch21:39, 4 June 2007
r22721(bug 10104) Provide stub "getLag()" function for DatabaseOracle and DatabaseP...robchurch21:43, 4 June 2007
r22722* Update German...raymond22:01, 4 June 2007
r22723Use __construct syntax instead of PHP4 syntax. Someone said it was causing p...simetrical22:26, 4 June 2007
r22726Had a bash at cleaning up the horrendous-looking deletion log on the edit page:...robchurch23:43, 4 June 2007
r22729* (bug 9820) session.save_path check no longer halts installation, but warns ...robchurch00:20, 5 June 2007
r22730* (bug 9898) Allow viewing all namespaces in Special:Newpages...robchurch00:50, 5 June 2007
r22731* Add recreate-deleted-warn and recreate-deleted-dismiss to messages.inc....ivanlanin01:02, 5 June 2007
r22732Fix typo in copyrightwarning; translations for r22720, r22726wegge01:10, 5 June 2007
r22733Copied some of the CSS added in r22726 into other skins, leaving pure aesthet...robchurch01:16, 5 June 2007
r22734Better wordingwegge01:16, 5 June 2007
r22736Clarification for $wgRestrictionLevelsrobchurch01:29, 5 June 2007
r22737(bug 10139) Introduce 'EditSectionLink' and 'EditSectionLinkForOther' hooks; ...robchurch01:50, 5 June 2007
r22738Indonesian (id) localisation updates. Improvements in wording.ivanlanin01:56, 5 June 2007
r22739* (bug 9769) Provide "watch this page" toggle on protection form...robchurch02:18, 5 June 2007
r22740* (bug 9886) Provide clear example "stub link" in Special:Preferences; this i...robchurch02:39, 5 June 2007
r22741Restore a mention of "cascading protection" to the message, so users don't ge...robchurch02:46, 5 June 2007
r22742Don't generate a diff link in the patrol log if the page doesn't exist, it'll...robchurch03:28, 5 June 2007
r22744* Change stubthreshold to stub-threshold in maintenance/language/messages.inc....ivanlanin05:51, 5 June 2007
r22745Danish translation for 22740wegge06:13, 5 June 2007

Status & tagging log