Index: branches/liquidthreads/docs/hooks.txt |
— | — | @@ -391,6 +391,20 @@ |
392 | 392 | to be echoed at the top of the edit form as wikitext. Return true without altering |
393 | 393 | $error to allow the edit to proceed. |
394 | 394 | |
| 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 | + |
395 | 409 | 'EmailConfirmed': When checking that the user's email address is "confirmed" |
396 | 410 | $user: User being checked |
397 | 411 | $confirmed: Whether or not the email address is confirmed |
Index: branches/liquidthreads/languages/messages/MessagesDa.php |
— | — | @@ -83,6 +83,7 @@ |
84 | 84 | 'Wantedcategories' => array( 'Ønskede_kategorier' ), |
85 | 85 | 'Mostlinked' => array( 'Sider_med_flest_henvisninger' ), |
86 | 86 | 'Mostlinkedcategories' => array( 'Kategorier_mes_flest_sider' ), |
| 87 | + 'Mostlinkedtemplates' => array( 'Hyppigst_brugte_skabeloner' ), |
87 | 88 | 'Mostcategories' => array( 'Sider_med_flest_kategorie' ), |
88 | 89 | 'Mostimages' => array( 'Mest_brugte_filer' ), |
89 | 90 | 'Mostrevisions' => array( 'Artikler_med_flest_redigeringer' ), |
— | — | @@ -661,8 +662,8 @@ |
662 | 663 | 'yourdiff' => 'Forskelle', |
663 | 664 | '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 /> |
664 | 665 | 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. |
667 | 668 | Læg ingen tekster ind, hvis du ikke kan acceptere at disse kan ændres. |
668 | 669 | |
669 | 670 | Du bekræfter hermed også, at du selv har skrevet denne tekst eller kopieret den fra en offentlig kilde |
— | — | @@ -683,6 +684,11 @@ |
684 | 685 | 'edittools' => '<!-- Denne tekst vises under formularen „Ændre“ samt "Upload". -->', |
685 | 686 | 'nocreatetitle' => 'Oprettelse af nye sider er begrænset.', |
686 | 687 | '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)', |
687 | 693 | |
688 | 694 | # "Undo" feature |
689 | 695 | '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 @@ |
855 | 861 | 'resultsperpage' => 'Resultater pr. side', |
856 | 862 | 'contextlines' => 'Linjer pr. resultat', |
857 | 863 | '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>:', |
859 | 865 | 'recentchangesdays' => 'Antal dage, som listen „Sidste ændringer“ standardmæssigt skal omfatte:', |
860 | 866 | 'recentchangescount' => 'Antallet af titler på siden "seneste ændringer"', |
861 | 867 | 'savedprefs' => 'Dine indstillinger er blevet gemt.', |
— | — | @@ -1158,6 +1164,8 @@ |
1159 | 1165 | 'mostlinked-summary' => 'Denne specialside viser, uafhængigt af navnerummet, de sider der har flest henvisninger.', |
1160 | 1166 | 'mostlinkedcategories' => 'Mest brugte kategorier', |
1161 | 1167 | 'mostlinkedcategories-summary' => 'Denne specialside viser en liste med de mest brugte kategorier.', |
| 1168 | +'mostlinkedtemplates' => 'Hyppigst brugte skabeloner', |
| 1169 | +'mostlinkedtemplates-summary' => '', |
1162 | 1170 | 'mostcategories' => 'Mest brugte sider', |
1163 | 1171 | 'mostcategories-summary' => 'Denne specialside viser særligt hyppigt kategoriserede sider.', |
1164 | 1172 | 'mostimages' => 'Mest brugte filer', |
Index: branches/liquidthreads/languages/messages/MessagesDe.php |
— | — | @@ -88,6 +88,7 @@ |
89 | 89 | 'Wantedcategories' => array( 'Gewünschte_Kategorien' ), |
90 | 90 | 'Mostlinked' => array( 'Meistverlinkte_Seiten' ), |
91 | 91 | 'Mostlinkedcategories' => array( 'Meistbenutzte_Kategorien' ), |
| 92 | + 'Mostlinkedtemplates' => array( 'Meistbenutzte_Vorlagen' ), |
92 | 93 | 'Mostcategories' => array( 'Meistkategorisierte_Seiten' ), |
93 | 94 | 'Mostimages' => array( 'Meistbenutzte_Dateien' ), |
94 | 95 | 'Mostrevisions' => array( 'Meistbearbeitete_Seiten' ), |
— | — | @@ -1162,7 +1163,7 @@ |
1163 | 1164 | 'nbytes' => '$1 {{PLURAL:$1|Byte|Bytes}}', |
1164 | 1165 | 'ncategories' => '$1 {{PLURAL:$1|Kategorie|Kategorien}}', |
1165 | 1166 | '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}}', |
1167 | 1168 | 'nrevisions' => '{{PLURAL:$1|1 Bearbeitung|$1 Bearbeitungen}}', |
1168 | 1169 | 'nviews' => '{{PLURAL:$1|1 Abfrage|$1 Abfragen}}', |
1169 | 1170 | 'specialpage-empty' => 'Die Seite enthält aktuell keine Einträge.', |
— | — | @@ -1186,6 +1187,8 @@ |
1187 | 1188 | 'mostlinked-summary' => 'Diese Spezialseite zeigt, unabhängig vom Namensraum, alle besonders häufig verlinkten Seiten an.', |
1188 | 1189 | 'mostlinkedcategories' => 'Meistbenutzte Kategorien', |
1189 | 1190 | '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.', |
1190 | 1193 | 'mostcategories' => 'Meistkategorisierte Seiten', |
1191 | 1194 | 'mostcategories-summary' => 'Diese Spezialseite zeigt besonders häufig kategorisierte Seiten an.', |
1192 | 1195 | 'mostimages' => 'Meistbenutzte Dateien', |
Index: branches/liquidthreads/languages/messages/MessagesEn.php |
— | — | @@ -379,6 +379,7 @@ |
380 | 380 | 'Wantedcategories' => array( 'Wantedcategories' ), |
381 | 381 | 'Mostlinked' => array( 'Mostlinked' ), |
382 | 382 | 'Mostlinkedcategories' => array( 'Mostlinkedcategories' ), |
| 383 | + 'Mostlinkedtemplates' => array( 'Mostlinkedtemplates' ), |
383 | 384 | 'Mostcategories' => array( 'Mostcategories' ), |
384 | 385 | 'Mostimages' => array( 'Mostimages' ), |
385 | 386 | 'Mostrevisions' => array( 'Mostrevisions' ), |
— | — | @@ -1052,7 +1053,12 @@ |
1053 | 1054 | 'nocreatetitle' => 'Page creation limited', |
1054 | 1055 | 'nocreatetext' => 'This site has restricted the ability to create new pages. |
1055 | 1056 | 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.''' |
1056 | 1058 | |
| 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 | + |
1057 | 1063 | # "Undo" feature |
1058 | 1064 | '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.', |
1059 | 1065 | 'undo-failure' => 'The edit could not be undone due to conflicting intermediate edits.', |
— | — | @@ -1262,7 +1268,7 @@ |
1263 | 1269 | 'resultsperpage' => 'Hits per page:', |
1264 | 1270 | 'contextlines' => 'Lines per hit:', |
1265 | 1271 | 'contextchars' => 'Context per line:', |
1266 | | -'stubthreshold' => 'Threshold for stub display:', |
| 1272 | +'stub-threshold' => 'Threshold for <a href="#" class="stub">stub link</a> formatting:', |
1267 | 1273 | 'recentchangesdays' => 'Days to show in recent changes:', |
1268 | 1274 | 'recentchangescount' => 'Number of edits to show in recent changes:', |
1269 | 1275 | 'savedprefs' => 'Your preferences have been saved.', |
— | — | @@ -1553,7 +1559,7 @@ |
1554 | 1560 | 'nmembers' => '$1 {{PLURAL:$1|member|members}}', |
1555 | 1561 | 'nrevisions' => '$1 {{PLURAL:$1|revision|revisions}}', |
1556 | 1562 | 'nviews' => '$1 {{PLURAL:$1|view|views}}', |
1557 | | -'specialpage-empty' => 'This page is empty.', |
| 1563 | +'specialpage-empty' => 'There are no results for this report.', |
1558 | 1564 | 'lonelypages' => 'Orphaned pages', |
1559 | 1565 | 'lonelypages-summary' => '', |
1560 | 1566 | 'lonelypagestext' => 'The following pages are not linked from other pages in this wiki.', |
— | — | @@ -1575,6 +1581,8 @@ |
1576 | 1582 | 'mostlinked-summary' => '', |
1577 | 1583 | 'mostlinkedcategories' => 'Most linked to categories', |
1578 | 1584 | 'mostlinkedcategories-summary' => '', |
| 1585 | +'mostlinkedtemplates' => 'Most linked-to templates', |
| 1586 | +'mostlinkedtemplates-summary' => '', |
1579 | 1587 | 'mostcategories' => 'Articles with the most categories', |
1580 | 1588 | 'mostcategories-summary' => '', |
1581 | 1589 | 'mostimages' => 'Most linked to images', |
— | — | @@ -1838,14 +1846,14 @@ |
1839 | 1847 | 'confirmprotecttext' => 'Do you really want to protect this page?', |
1840 | 1848 | 'confirmprotect' => 'Confirm protection', |
1841 | 1849 | 'protectmoveonly' => 'Protect from moves only', |
1842 | | -'protectcomment' => 'Reason for protecting', |
1843 | | -'protectexpiry' => 'Expiry', |
| 1850 | +'protectcomment' => 'Comment:', |
| 1851 | +'protectexpiry' => 'Expires:', |
1844 | 1852 | 'protect_expiry_invalid' => 'Expiry time is invalid.', |
1845 | 1853 | 'protect_expiry_old' => 'Expiry time is in the past.', |
1846 | 1854 | 'unprotectsub' =>"(Unprotecting \"$1\")", |
1847 | 1855 | 'confirmunprotecttext' => 'Do you really want to unprotect this page?', |
1848 | 1856 | 'confirmunprotect' => 'Confirm unprotection', |
1849 | | -'unprotectcomment' => 'Reason for unprotecting', |
| 1857 | +'unprotectcomment' => 'Comment:', |
1850 | 1858 | 'protect-unchain' => 'Unlock move permissions', |
1851 | 1859 | 'protect-text' => 'You may view and change the protection level here for the page <strong>$1</strong>.', |
1852 | 1860 | 'protect-locked-blocked' => 'You cannot change protection levels while blocked. Here are the |
— | — | @@ -1860,7 +1868,7 @@ |
1861 | 1869 | 'protect-level-sysop' => 'Sysops only', |
1862 | 1870 | 'protect-summary-cascade' => 'cascading', |
1863 | 1871 | '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)', |
1865 | 1873 | 'restriction-type' => 'Permission:', |
1866 | 1874 | 'restriction-level' => 'Restriction level:', |
1867 | 1875 | 'minimum-size' => 'Min size', |
Index: branches/liquidthreads/languages/messages/MessagesId.php |
— | — | @@ -228,7 +228,8 @@ |
229 | 229 | 'Wantedpages' => array( 'Halamandiinginkan' ), |
230 | 230 | 'Wantedcategories' => array( 'Kategoridiinginkan' ), |
231 | 231 | 'Mostlinked' => array( 'Palingdituju' ), |
232 | | - 'Mostlinkedcategories' => array( 'Kategoripalingdituju' ), |
| 232 | + 'Mostlinkedcategories' => array( 'Kategoripalingdigunakan' ), |
| 233 | + 'Mostlinkedtemplates' => array( 'Templatpalingdigunakan' ), |
233 | 234 | 'Mostcategories' => array( 'Kategoriterbanyak' ), |
234 | 235 | 'Mostimages' => array( 'Berkastersering' ), |
235 | 236 | 'Mostrevisions' => array( 'Perubahanterbanyak' ), |
— | — | @@ -778,9 +779,9 @@ |
779 | 780 | '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.'''", |
780 | 781 | 'longpageerror' => '<strong>KESALAHAN: Teks yang Anda kirimkan sebesar $1 kilobita, yang berarti lebih besar dari jumlah maksimum $2 kilobita. Teks tidak dapat disimpan.</strong>', |
781 | 782 | '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>', |
783 | 784 | '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>", |
785 | 786 | 'templatesused' => 'Templat yang digunakan di halaman ini:', |
786 | 787 | 'templatesusedpreview' => 'Templat yang digunakan di pratayang ini:', |
787 | 788 | 'templatesusedsection' => 'Templat yang digunakan di bagian ini:', |
— | — | @@ -789,6 +790,8 @@ |
790 | 791 | 'edittools' => '<!-- Teks di sini akan dimunculkan di bawah isian suntingan dan pemuatan.-->', |
791 | 792 | 'nocreatetitle' => 'Pembuatan halaman baru dibatasi', |
792 | 793 | '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)', |
793 | 796 | |
794 | 797 | # "Undo" feature |
795 | 798 | '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 @@ |
950 | 953 | 'resultsperpage' => 'Hasil per halaman:', |
951 | 954 | 'contextlines' => 'Baris ditampilkan per hasil:', |
952 | 955 | '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>:', |
954 | 957 | 'recentchangesdays' => 'Jumlah hari yang ditampilkan di perubahan terbaru:', |
955 | 958 | 'recentchangescount' => 'Jumlah suntingan yang ditampilkan di perubahan terbaru:', |
956 | 959 | 'savedprefs' => 'Preferensi Anda telah disimpan', |
— | — | @@ -1170,13 +1173,11 @@ |
1171 | 1174 | 'statistics' => 'Statistik', |
1172 | 1175 | 'sitestats' => 'Statistik situs', |
1173 | 1176 | '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. |
1175 | 1178 | |
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. |
1177 | 1180 | |
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].", |
1181 | 1182 | 'userstatstext' => "Terdapat '''$1''' pengguna terdaftar. '''$2''' (atau '''$4%''') diantaranya memiliki hak akses $5.", |
1182 | 1183 | 'statistics-mostpopular' => 'Halaman yang paling banyak ditampilkan', |
1183 | 1184 | |
— | — | @@ -1204,7 +1205,7 @@ |
1205 | 1206 | 'nmembers' => '$1 pengguna', |
1206 | 1207 | 'nrevisions' => '$1 revisi', |
1207 | 1208 | 'nviews' => '$1 penampilan', |
1208 | | -'specialpage-empty' => 'Halaman ini kosong.', |
| 1209 | +'specialpage-empty' => 'Tak ada yang perlu dilaporkan.', |
1209 | 1210 | 'lonelypages' => 'Halaman tak bertuan', |
1210 | 1211 | 'lonelypagestext' => 'Halaman-halaman berikut tidak memiliki pranala dari halaman manapun di wiki ini.', |
1211 | 1212 | 'uncategorizedpages' => 'Halaman yang tak terkategori', |
— | — | @@ -1216,7 +1217,8 @@ |
1217 | 1218 | 'wantedcategories' => 'Kategori yang diinginkan', |
1218 | 1219 | 'wantedpages' => 'Halaman yang diinginkan', |
1219 | 1220 | 'mostlinked' => 'Halaman yang tersering dituju', |
1220 | | -'mostlinkedcategories' => 'Kategori dengan halaman terbanyak', |
| 1221 | +'mostlinkedcategories' => 'Kategori yang tersering digunakan', |
| 1222 | +'mostlinkedtemplates' => 'Templat yang tersering digunakan', |
1221 | 1223 | 'mostcategories' => 'Artikel dengan kategori terbanyak', |
1222 | 1224 | 'mostimages' => 'Berkas yang tersering digunakan', |
1223 | 1225 | 'mostrevisions' => 'Artikel dengan perubahan terbanyak', |
— | — | @@ -1427,14 +1429,14 @@ |
1428 | 1430 | 'confirmprotecttext' => 'Apakah Anda benar-benar ingin melindungi halaman ini?', |
1429 | 1431 | 'confirmprotect' => 'Konfirmasi perlindungan', |
1430 | 1432 | 'protectmoveonly' => 'Lindungi dari pemindahan saja', |
1431 | | -'protectcomment' => 'Alasan perlindungan', |
1432 | | -'protectexpiry' => 'Kadaluwarsa', |
| 1433 | +'protectcomment' => 'Komentar:', |
| 1434 | +'protectexpiry' => 'Kadaluwarsa:', |
1433 | 1435 | 'protect_expiry_invalid' => 'Waktu kadaluwarsa tidak sah.', |
1434 | 1436 | 'protect_expiry_old' => 'Waktu kadaluwarsa adalah pada masa lampau.', |
1435 | 1437 | 'unprotectsub' => '(Menghilangkan perlindungan terhadap "$1")', |
1436 | 1438 | 'confirmunprotecttext' => 'Apakah Anda benar-benar ingin menghilangkan perlindungan terhadap halaman ini?', |
1437 | 1439 | 'confirmunprotect' => 'Konfirmasi penghilangan perlindungan', |
1438 | | -'unprotectcomment' => 'Alasan penghilangan perlindungan', |
| 1440 | +'unprotectcomment' => 'Komentar:', |
1439 | 1441 | 'protect-unchain' => 'Buka perlindungan pemindahan', |
1440 | 1442 | 'protect-text' => 'Anda dapat melihat atau mengganti tingkatan perlindungan untuk halaman <strong>$1</strong> di sini.', |
1441 | 1443 | '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 @@ |
1447 | 1449 | 'protect-level-sysop' => 'Hanya pengurus', |
1448 | 1450 | 'protect-summary-cascade' => 'runtun', |
1449 | 1451 | '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 ).', |
1451 | 1453 | 'restriction-type' => 'Perlindungan:', |
1452 | 1454 | 'restriction-level' => 'Tingkatan:', |
1453 | 1455 | 'minimum-size' => 'Ukuran minimum', |
Index: branches/liquidthreads/includes/AutoLoader.php |
— | — | @@ -190,6 +190,7 @@ |
191 | 191 | 'MostimagesPage' => 'includes/SpecialMostimages.php', |
192 | 192 | 'MostlinkedPage' => 'includes/SpecialMostlinked.php', |
193 | 193 | 'MostlinkedCategoriesPage' => 'includes/SpecialMostlinkedcategories.php', |
| 194 | + 'SpecialMostlinkedtemplates' => 'includes/SpecialMostlinkedtemplates.php', |
194 | 195 | 'MostrevisionsPage' => 'includes/SpecialMostrevisions.php', |
195 | 196 | 'FewestrevisionsPage' => 'includes/SpecialFewestrevisions.php', |
196 | 197 | 'MovePageForm' => 'includes/SpecialMovepage.php', |
Index: branches/liquidthreads/includes/Xml.php |
— | — | @@ -100,15 +100,8 @@ |
101 | 101 | */ |
102 | 102 | public static function namespaceSelector($selected = '', $allnamespaces = null, $includehidden=false) { |
103 | 103 | 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 = ''; |
113 | 106 | $s = "\n<select id='namespace' name='namespace' class='namespaceselector'>\n"; |
114 | 107 | $arr = $wgContLang->getFormattedNamespaces(); |
115 | 108 | if( !is_null($allnamespaces) ) { |
Index: branches/liquidthreads/includes/BagOStuff.php |
— | — | @@ -172,7 +172,7 @@ |
173 | 173 | */ |
174 | 174 | var $bag; |
175 | 175 | |
176 | | - function HashBagOStuff() { |
| 176 | + function __construct() { |
177 | 177 | $this->bag = array(); |
178 | 178 | } |
179 | 179 | |
— | — | @@ -222,7 +222,7 @@ |
223 | 223 | var $table; |
224 | 224 | var $lastexpireall = 0; |
225 | 225 | |
226 | | - function SqlBagOStuff($tablename = 'objectcache') { |
| 226 | + function __construct($tablename = 'objectcache') { |
227 | 227 | $this->table = $tablename; |
228 | 228 | } |
229 | 229 | |
Index: branches/liquidthreads/includes/SpecialLog.php |
— | — | @@ -74,7 +74,8 @@ |
75 | 75 | |
76 | 76 | // XXX This all needs to use Pager, ugly hack for now. |
77 | 77 | global $wgMiserMode; |
78 | | - if ($wgMiserMode && ($this->offset >10000)) $this->offset=10000; |
| 78 | + if( $wgMiserMode ) |
| 79 | + $this->offset = min( $this->offset, 10000 ); |
79 | 80 | } |
80 | 81 | |
81 | 82 | /** |
— | — | @@ -215,6 +216,23 @@ |
216 | 217 | return $this->title->getPrefixedText(); |
217 | 218 | } |
218 | 219 | } |
| 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 | + |
219 | 237 | } |
220 | 238 | |
221 | 239 | /** |
Index: branches/liquidthreads/includes/Article.php |
— | — | @@ -852,13 +852,11 @@ |
853 | 853 | ); |
854 | 854 | } |
855 | 855 | |
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 |
859 | 858 | */ |
860 | | - if ( 0 == $this->getID() ) { |
861 | | - $this->showLogExtract( $wgOut, 'view' ); |
862 | | - } |
| 859 | + if( $this->getId() == 0 ) |
| 860 | + $this->showLogExtract( $wgOut ); |
863 | 861 | |
864 | 862 | # Trackbacks |
865 | 863 | if ($wgUseTrackbacks) |
— | — | @@ -2006,23 +2004,21 @@ |
2007 | 2005 | |
2008 | 2006 | $wgOut->returnToMain( false ); |
2009 | 2007 | |
2010 | | - $this->showLogExtract( $wgOut, 'delete' ); |
| 2008 | + $this->showLogExtract( $wgOut ); |
2011 | 2009 | } |
2012 | 2010 | |
2013 | 2011 | |
2014 | 2012 | /** |
2015 | | - * Fetch deletion log |
| 2013 | + * Show relevant lines from the deletion log |
2016 | 2014 | */ |
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>' ); |
2020 | 2017 | $logViewer = new LogViewer( |
2021 | 2018 | new LogReader( |
2022 | 2019 | new FauxRequest( |
2023 | 2020 | array( 'page' => $this->mTitle->getPrefixedText(), |
2024 | 2021 | 'type' => 'delete' ) ) ) ); |
2025 | 2022 | $logViewer->showList( $out ); |
2026 | | - $out->addHTML( "</div>" ); |
2027 | 2023 | } |
2028 | 2024 | |
2029 | 2025 | |
Index: branches/liquidthreads/includes/DatabasePostgres.php |
— | — | @@ -1177,8 +1177,17 @@ |
1178 | 1178 | wfDebug( "Function ping() not written for DatabasePostgres.php yet"); |
1179 | 1179 | return true; |
1180 | 1180 | } |
| 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 | + } |
1181 | 1191 | |
1182 | | - |
1183 | 1192 | } // end DatabasePostgres class |
1184 | 1193 | |
1185 | 1194 | ?> |
Index: branches/liquidthreads/includes/SpecialPreferences.php |
— | — | @@ -949,8 +949,8 @@ |
950 | 950 | # Misc |
951 | 951 | # |
952 | 952 | $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> ' ); |
| 954 | + $wgOut->addHtml( Xml::input( 'wpStubs', 6, $this->mStubs, array( 'id' => 'wpStubs' ) ) ); |
955 | 955 | $msgUnderline = htmlspecialchars( wfMsg ( 'tog-underline' ) ); |
956 | 956 | $msgUnderlinenever = htmlspecialchars( wfMsg ( 'underline-never' ) ); |
957 | 957 | $msgUnderlinealways = htmlspecialchars( wfMsg ( 'underline-always' ) ); |
Index: branches/liquidthreads/includes/ImagePage.php |
— | — | @@ -502,6 +502,12 @@ |
503 | 503 | { |
504 | 504 | global $wgUser, $wgOut, $wgRequest; |
505 | 505 | |
| 506 | + if ( !$this->img->exists() || !$this->img->isLocal() ) { |
| 507 | + # Use standard article deletion |
| 508 | + Article::delete(); |
| 509 | + return; |
| 510 | + } |
| 511 | + |
506 | 512 | $confirm = $wgRequest->wasPosted(); |
507 | 513 | $reason = $wgRequest->getVal( 'wpReason' ); |
508 | 514 | $image = $wgRequest->getVal( 'image' ); |
— | — | @@ -533,7 +539,7 @@ |
534 | 540 | # Deleting old images doesn't require confirmation |
535 | 541 | if ( !is_null( $oldimage ) || $confirm ) { |
536 | 542 | if( $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ), $oldimage ) ) { |
537 | | - $this->doDelete( $reason ); |
| 543 | + $this->doDeleteImage( $reason ); |
538 | 544 | } else { |
539 | 545 | $wgOut->showFatalError( wfMsg( 'sessionfailure' ) ); |
540 | 546 | } |
— | — | @@ -552,9 +558,12 @@ |
553 | 559 | |
554 | 560 | /* |
555 | 561 | * Delete an image. |
| 562 | + * Called doDeleteImage() not doDelete() so that Article::delete() doesn't |
| 563 | + * call back to here. |
| 564 | + * |
556 | 565 | * @param $reason User provided reason for deletion. |
557 | 566 | */ |
558 | | - function doDelete( $reason ) { |
| 567 | + function doDeleteImage( $reason ) { |
559 | 568 | global $wgOut, $wgRequest; |
560 | 569 | |
561 | 570 | $oldimage = $wgRequest->getVal( 'oldimage' ); |
Index: branches/liquidthreads/includes/PatrolLog.php |
— | — | @@ -49,11 +49,16 @@ |
50 | 50 | list( $cur, /* $prev */, $auto ) = $params; |
51 | 51 | # Standard link to the page in question |
52 | 52 | $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 | + } |
58 | 63 | # Indicate whether or not the patrolling was automatic |
59 | 64 | $auto = $auto ? wfMsgHtml( 'patrol-log-auto' ) : ''; |
60 | 65 | # Put it all together |
Index: branches/liquidthreads/includes/SpecialWantedpages.php |
— | — | @@ -63,46 +63,49 @@ |
64 | 64 | $db->dataSeek( $res, 0 ); |
65 | 65 | } |
66 | 66 | |
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 ) { |
69 | 75 | global $wgLang; |
70 | | - |
71 | 76 | $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 { |
77 | 83 | $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 ) ); |
82 | 86 | } 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}"; |
85 | 89 | } |
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); |
95 | 90 | } |
96 | 91 | |
97 | 92 | /** |
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 |
102 | 98 | * @return string |
103 | 99 | */ |
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 | + } |
107 | 110 | } |
108 | 111 | |
109 | 112 | } |
Index: branches/liquidthreads/includes/DatabaseOracle.php |
— | — | @@ -675,10 +675,19 @@ |
676 | 676 | } |
677 | 677 | |
678 | 678 | function ping() { |
679 | | - wfDebug( "Function ping() not written for DatabasePostgres.php yet"); |
| 679 | + wfDebug( "Function ping() not written for DatabaseOracle.php yet"); |
680 | 680 | return true; |
681 | 681 | } |
682 | 682 | |
| 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 | + } |
683 | 692 | |
684 | 693 | } // end DatabaseOracle class |
685 | 694 | |
Index: branches/liquidthreads/includes/SpecialNewpages.php |
— | — | @@ -36,12 +36,19 @@ |
37 | 37 | } |
38 | 38 | } |
39 | 39 | |
| 40 | + private function makeNamespaceWhere() { |
| 41 | + return $this->namespace !== 'all' |
| 42 | + ? ' AND rc_namespace = ' . intval( $this->namespace ) |
| 43 | + : ''; |
| 44 | + } |
| 45 | + |
40 | 46 | function getSQL() { |
41 | 47 | global $wgUser, $wgUseRCPatrol; |
42 | 48 | $usepatrol = ( $wgUseRCPatrol && $wgUser->isAllowed( 'patrol' ) ) ? 1 : 0; |
43 | 49 | $dbr = wfGetDB( DB_SLAVE ); |
44 | 50 | list( $recentchanges, $page ) = $dbr->tableNamesN( 'recentchanges', 'page' ); |
45 | 51 | |
| 52 | + $nsfilter = $this->makeNamespaceWhere(); |
46 | 53 | $uwhere = $this->makeUserWhere( $dbr ); |
47 | 54 | |
48 | 55 | # FIXME: text will break with compression |
— | — | @@ -62,7 +69,8 @@ |
63 | 70 | page_latest as rev_id |
64 | 71 | FROM $recentchanges,$page |
65 | 72 | 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 |
67 | 75 | {$uwhere}"; |
68 | 76 | } |
69 | 77 | |
— | — | @@ -134,7 +142,7 @@ |
135 | 143 | $form = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $self->getLocalUrl() ) ); |
136 | 144 | # Namespace selector |
137 | 145 | $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>'; |
139 | 147 | # Username filter |
140 | 148 | $form .= '<tr><td align="right">' . Xml::label( wfMsg( 'newpages-username' ), 'mw-np-username' ) . '</td>'; |
141 | 149 | $form .= '<td>' . Xml::input( 'username', 30, $this->username, array( 'id' => 'mw-np-username' ) ) . '</td></tr>'; |
— | — | @@ -186,7 +194,7 @@ |
187 | 195 | } |
188 | 196 | } |
189 | 197 | } else { |
190 | | - if( $ns = $wgRequest->getInt( 'namespace', 0 ) ) |
| 198 | + if( $ns = $wgRequest->getText( 'namespace', NS_MAIN ) ) |
191 | 199 | $namespace = $ns; |
192 | 200 | if( $un = $wgRequest->getText( 'username' ) ) |
193 | 201 | $username = $un; |
Index: branches/liquidthreads/includes/ProtectionForm.php |
— | — | @@ -188,6 +188,13 @@ |
189 | 189 | if( !$ok ) { |
190 | 190 | throw new FatalError( "Unknown error at restriction save time." ); |
191 | 191 | } |
| 192 | + |
| 193 | + if( $wgRequest->getCheck( 'mwProtectWatch' ) ) { |
| 194 | + $this->mArticle->doWatch(); |
| 195 | + } elseif( $this->mTitle->userIsWatching() ) { |
| 196 | + $this->mArticle->doUnwatch(); |
| 197 | + } |
| 198 | + |
192 | 199 | return $ok; |
193 | 200 | } |
194 | 201 | |
— | — | @@ -232,14 +239,16 @@ |
233 | 240 | $out .= "</tbody>\n"; |
234 | 241 | $out .= "</table>\n"; |
235 | 242 | |
| 243 | + $out .= "<table>\n"; |
| 244 | + $out .= "<tbody>\n"; |
| 245 | + |
236 | 246 | global $wgEnableCascadingProtection; |
| 247 | + if( $wgEnableCascadingProtection ) |
| 248 | + $out .= '<tr><td></td><td>' . $this->buildCascadeInput() . "</td></tr>\n"; |
237 | 249 | |
238 | | - if ($wgEnableCascadingProtection) |
239 | | - $out .= $this->buildCascadeInput(); |
| 250 | + if( !$this->disabled ) |
| 251 | + $out .= '<tr><td></td><td>' . $this->buildWatchInput() . "</td></tr>\n"; |
240 | 252 | |
241 | | - $out .= "<table>\n"; |
242 | | - $out .= "<tbody>\n"; |
243 | | - |
244 | 253 | $out .= $this->buildExpiryInput(); |
245 | 254 | |
246 | 255 | if( !$this->disabled ) { |
— | — | @@ -311,7 +320,7 @@ |
312 | 321 | function buildExpiryInput() { |
313 | 322 | $id = 'mwProtect-expiry'; |
314 | 323 | |
315 | | - $ci = "<tr> <td align=\"right\">"; |
| 324 | + $ci = "<tr><td align=\"right\">"; |
316 | 325 | $ci .= wfElement( 'label', array ( |
317 | 326 | 'id' => "$id-label", |
318 | 327 | 'for' => $id ), |
— | — | @@ -326,6 +335,16 @@ |
327 | 336 | |
328 | 337 | return $ci; |
329 | 338 | } |
| 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 | + } |
330 | 349 | |
331 | 350 | function buildSubmit() { |
332 | 351 | return wfElement( 'input', array( |
Index: branches/liquidthreads/includes/DefaultSettings.php |
— | — | @@ -1086,6 +1086,10 @@ |
1087 | 1087 | /** |
1088 | 1088 | * Set of permission keys that can be selected via action=protect. |
1089 | 1089 | * '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. |
1090 | 1094 | */ |
1091 | 1095 | $wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' ); |
1092 | 1096 | |
— | — | @@ -1176,7 +1180,7 @@ |
1177 | 1181 | * to ensure that client-side caches don't keep obsolete copies of global |
1178 | 1182 | * styles. |
1179 | 1183 | */ |
1180 | | -$wgStyleVersion = '73'; |
| 1184 | +$wgStyleVersion = '74'; |
1181 | 1185 | |
1182 | 1186 | |
1183 | 1187 | # Server-side caching: |
Index: branches/liquidthreads/includes/Linker.php |
— | — | @@ -1058,13 +1058,14 @@ |
1059 | 1059 | /** @todo document */ |
1060 | 1060 | public function editSectionLinkForOther( $title, $section ) { |
1061 | 1061 | global $wgContLang; |
1062 | | - |
1063 | 1062 | $title = Title::newFromText( $title ); |
1064 | 1063 | $editurl = '§ion='.$section; |
1065 | 1064 | $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>"; |
1069 | 1070 | } |
1070 | 1071 | |
1071 | 1072 | /** |
— | — | @@ -1074,12 +1075,14 @@ |
1075 | 1076 | */ |
1076 | 1077 | public function editSectionLink( $nt, $section, $hint='' ) { |
1077 | 1078 | global $wgContLang; |
1078 | | - |
1079 | 1079 | $editurl = '§ion='.$section; |
1080 | 1080 | $hint = ( $hint=='' ) ? '' : ' title="' . wfMsgHtml( 'editsectionhint', htmlspecialchars( $hint ) ) . '"'; |
1081 | 1081 | $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>"; |
1084 | 1087 | } |
1085 | 1088 | |
1086 | 1089 | /** |
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 |
1 | 134 | + native |
Index: branches/liquidthreads/includes/QueryPage.php |
— | — | @@ -25,6 +25,7 @@ |
26 | 26 | array( 'MostcategoriesPage', 'Mostcategories' ), |
27 | 27 | array( 'MostimagesPage', 'Mostimages' ), |
28 | 28 | array( 'MostlinkedCategoriesPage', 'Mostlinkedcategories' ), |
| 29 | + array( 'SpecialMostlinkedtemplates', 'Mostlinkedtemplates' ), |
29 | 30 | array( 'MostlinkedPage', 'Mostlinked' ), |
30 | 31 | array( 'MostrevisionsPage', 'Mostrevisions' ), |
31 | 32 | array( 'FewestrevisionsPage', 'Fewestrevisions' ), |
Index: branches/liquidthreads/includes/SpecialPage.php |
— | — | @@ -106,6 +106,7 @@ |
107 | 107 | 'Wantedcategories' => array( 'SpecialPage', 'Wantedcategories' ), |
108 | 108 | 'Mostlinked' => array( 'SpecialPage', 'Mostlinked' ), |
109 | 109 | 'Mostlinkedcategories' => array( 'SpecialPage', 'Mostlinkedcategories' ), |
| 110 | + 'Mostlinkedtemplates' => array( 'SpecialPage', 'Mostlinkedtemplates' ), |
110 | 111 | 'Mostcategories' => array( 'SpecialPage', 'Mostcategories' ), |
111 | 112 | 'Mostimages' => array( 'SpecialPage', 'Mostimages' ), |
112 | 113 | 'Mostrevisions' => array( 'SpecialPage', 'Mostrevisions' ), |
Index: branches/liquidthreads/includes/filerepo/ForeignDBFile.php |
— | — | @@ -25,6 +25,9 @@ |
26 | 26 | function restore( /*...*/ ) { |
27 | 27 | $this->readOnlyError(); |
28 | 28 | } |
| 29 | + function delete( /*...*/ ) { |
| 30 | + $this->readOnlyError(); |
| 31 | + } |
29 | 32 | |
30 | 33 | function getDescriptionUrl() { |
31 | 34 | // Restore remote behaviour |
Index: branches/liquidthreads/includes/EditPage.php |
— | — | @@ -611,8 +611,8 @@ |
612 | 612 | $wgOut->addWikiText( wfMsg( 'newarticletext' ) ); |
613 | 613 | else |
614 | 614 | $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 ); |
617 | 617 | } |
618 | 618 | } |
619 | 619 | |
— | — | @@ -2048,6 +2048,46 @@ |
2049 | 2049 | $wgOut->setPageTitle( wfMsg( 'nocreatetitle' ) ); |
2050 | 2050 | $wgOut->addWikiText( wfMsg( 'nocreatetext' ) ); |
2051 | 2051 | } |
| 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 | + } |
2052 | 2092 | |
2053 | 2093 | } |
2054 | 2094 | |
Index: branches/liquidthreads/RELEASE-NOTES |
— | — | @@ -51,10 +51,14 @@ |
52 | 52 | * Added $wgArticleRobotPolicies |
53 | 53 | * (bug 10076) Additional parameter $7 added to MediaWiki:Blockedtext |
54 | 54 | 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 |
58 | 57 | * 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 |
59 | 63 | |
60 | 64 | == Bugfixes since 1.10 == |
61 | 65 | |
— | — | @@ -110,8 +114,17 @@ |
111 | 115 | * (bug 3624) TeX: \ker, \hom, \arg, \dim treated like \sin & \cos |
112 | 116 | * (bug 10132, 10134) Restore back-compatibility Image::imageUrl() function |
113 | 117 | * (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 |
114 | 128 | |
115 | | - |
116 | 129 | == MediaWiki API changes since 1.10 == |
117 | 130 | |
118 | 131 | (For ongoing development discussion, see http://www.mediawiki.org/wiki/API) |
Index: branches/liquidthreads/maintenance/language/messages.inc |
— | — | @@ -505,6 +505,8 @@ |
506 | 506 | 'edittools', |
507 | 507 | 'nocreatetitle', |
508 | 508 | 'nocreatetext', |
| 509 | + 'recreate-deleted-warn', |
| 510 | + 'recreate-deleted-dismiss', |
509 | 511 | ), |
510 | 512 | 'undo' => array( |
511 | 513 | 'undo-success', |
— | — | @@ -666,7 +668,7 @@ |
667 | 669 | 'resultsperpage', |
668 | 670 | 'contextlines', |
669 | 671 | 'contextchars', |
670 | | - 'stubthreshold', |
| 672 | + 'stub-threshold', |
671 | 673 | 'recentchangesdays', |
672 | 674 | 'recentchangescount', |
673 | 675 | 'savedprefs', |
— | — | @@ -950,6 +952,8 @@ |
951 | 953 | 'mostlinked-summary', |
952 | 954 | 'mostlinkedcategories', |
953 | 955 | 'mostlinkedcategories-summary', |
| 956 | + 'mostlinkedtemplates', |
| 957 | + 'mostlinkedtemplates-summary', |
954 | 958 | 'mostcategories', |
955 | 959 | 'mostcategories-summary', |
956 | 960 | 'mostimages', |
Index: branches/liquidthreads/maintenance/language/messageTypes.inc |
— | — | @@ -128,6 +128,7 @@ |
129 | 129 | 'wantedpages-summary', |
130 | 130 | 'mostlinked-summary', |
131 | 131 | 'mostlinkedcategories-summary', |
| 132 | + 'mostlinkedtemplates-summary', |
132 | 133 | 'mostcategories-summary', |
133 | 134 | 'mostimages-summary', |
134 | 135 | 'mostrevisions-summary', |
Index: branches/liquidthreads/skins/chick/main.css |
— | — | @@ -470,6 +470,15 @@ |
471 | 471 | |
472 | 472 | .templatesUsed { margin-top: 1.5em; } |
473 | 473 | |
| 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 | + |
474 | 483 | /** |
475 | 484 | * Here is some stuff that's ACTUALLY COMMON TO ALL SKINS. |
476 | 485 | * When the day comes, it can be moved to a *real* common.css. |
Index: branches/liquidthreads/skins/monobook/main.css |
— | — | @@ -1887,6 +1887,19 @@ |
1888 | 1888 | background-color: #CC9999; |
1889 | 1889 | } |
1890 | 1890 | |
| 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 | +} |
1891 | 1904 | /** |
1892 | 1905 | * Here is some stuff that's ACTUALLY COMMON TO ALL SKINS. |
1893 | 1906 | * When the day comes, it can be moved to a *real* common.css. |
Index: branches/liquidthreads/skins/common/common.css |
— | — | @@ -451,6 +451,15 @@ |
452 | 452 | float: right; |
453 | 453 | } |
454 | 454 | |
| 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 | + |
455 | 464 | /** |
456 | 465 | * Here is some stuff that's ACTUALLY COMMON TO ALL SKINS. |
457 | 466 | * When the day comes, it can be moved to a *real* common.css. |
Index: branches/liquidthreads/skins/common/wikibits.js |
— | — | @@ -1213,6 +1213,17 @@ |
1214 | 1214 | /* |
1215 | 1215 | * End of table sorting code |
1216 | 1216 | */ |
| 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 | +} |
1217 | 1228 | |
1218 | 1229 | function runOnloadHook() { |
1219 | 1230 | // don't run anything below this for non-dom browsers |
— | — | @@ -1243,4 +1254,4 @@ |
1244 | 1255 | // so the below should be redundant. It's there just in case. |
1245 | 1256 | hookEvent("load", runOnloadHook); |
1246 | 1257 | |
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 @@ |
442 | 442 | |
443 | 443 | .templatesUsed { margin-top: 1.5em; } |
444 | 444 | |
| 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 | + |
445 | 454 | /** |
446 | 455 | * Here is some stuff that's ACTUALLY COMMON TO ALL SKINS. |
447 | 456 | * When the day comes, it can be moved to a *real* common.css. |
Index: branches/liquidthreads/config/index.php |
— | — | @@ -395,7 +395,8 @@ |
396 | 396 | |
397 | 397 | # session.save_path doesn't *have* to be set, but if it is, and it's |
398 | 398 | # 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 ); |
400 | 401 | # Warn the user if it's not set, but let them proceed |
401 | 402 | if( !$sessionSavePath ) { |
402 | 403 | print "<li><strong>Warning:</strong> A value for <tt>session.save_path</tt> |
— | — | @@ -404,14 +405,12 @@ |
405 | 406 | for the user your web server is running under.</li>"; |
406 | 407 | } elseif ( is_dir( $sessionSavePath ) && is_writable( $sessionSavePath ) ) { |
407 | 408 | # 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>"; |
409 | 410 | } 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>"; |
416 | 415 | } |
417 | 416 | |
418 | 417 | # Check for PCRE support |
Index: branches/liquidthreads/install-utils.inc |
— | — | @@ -106,4 +106,20 @@ |
107 | 107 | exit(1); |
108 | 108 | } |
109 | 109 | } |
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 |
111 | 127 | - /trunk/phase3:1-22715 |
112 | 128 | + /trunk/phase3:1-22746 |