adding 1.1.1
This commit is contained in:
parent
50a14d62e6
commit
4b06d0e364
3 changed files with 555 additions and 0 deletions
75
Preloader
Normal file
75
Preloader
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
PRELOADER EXTENSION
|
||||||
|
|
||||||
|
Version 1.1.1
|
||||||
|
© 2006 Rob Church
|
||||||
|
|
||||||
|
== Overview ==
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
2. Requirements
|
||||||
|
3. Installation
|
||||||
|
4. Configuration
|
||||||
|
5. Feedback
|
||||||
|
6. Change Log
|
||||||
|
|
||||||
|
== 1. Introduction ==
|
||||||
|
|
||||||
|
The Preloader extension allows the creation of boilerplate text which will
|
||||||
|
be inserted into the edit form when creating new pages. Different boilerplate
|
||||||
|
text can be specified for different namespaces.
|
||||||
|
|
||||||
|
In addition, a new parser tag, <nopreload> is introduced, which is used to
|
||||||
|
denote sections which should not be preloaded, ever; useful for instructions
|
||||||
|
and advice on the boilerplate pages. This tag has no effect during a regular
|
||||||
|
parse operation.
|
||||||
|
|
||||||
|
== 2. Requirements ==
|
||||||
|
|
||||||
|
The Preloader extension requires MediaWiki 1.7.0 or later.
|
||||||
|
|
||||||
|
== 3. Installation ==
|
||||||
|
|
||||||
|
To install the Preloader extension, download all files from Subversion, and
|
||||||
|
place them into your extensions directory.
|
||||||
|
|
||||||
|
Then edit your LocalSettings.php file and add the following line:
|
||||||
|
|
||||||
|
require_once( 'extensions/Preloader.php' );
|
||||||
|
|
||||||
|
Installation can be verified through the Special:Version page on your wiki.
|
||||||
|
|
||||||
|
== 4. Configuration ==
|
||||||
|
|
||||||
|
Configuration of the boilerplate sources is done via the $wgPreloaderSource
|
||||||
|
configuration variable, which takes the following format:
|
||||||
|
|
||||||
|
$wgPreloaderSource[ <namespace index> ] = PAGE TITLE;
|
||||||
|
|
||||||
|
For instance
|
||||||
|
|
||||||
|
$wgPreloaderSource[ NS_MAIN ] = 'Template:Boilerplate';
|
||||||
|
$wgPreloaderSource[ NS_HELP ] = 'Template:Boilerplate help';
|
||||||
|
|
||||||
|
dictates that the boilerplate text for pages in the main namespace should be
|
||||||
|
loaded from Template:Boilerplate, while pages in the Help namespace will be
|
||||||
|
preloaded from Template:Boilerplate_help. Other namespaces have no boilerplate
|
||||||
|
configured.
|
||||||
|
|
||||||
|
== 5. Feedback ==
|
||||||
|
|
||||||
|
Please submit comments, suggestions and bug reports to <robchur@gmail.com>.
|
||||||
|
|
||||||
|
== 6. Change Log ==
|
||||||
|
|
||||||
|
17/12/2006
|
||||||
|
Version 1.0
|
||||||
|
* Initial release
|
||||||
|
|
||||||
|
31/12/2006
|
||||||
|
Version 1.1
|
||||||
|
* Trim preloaded text
|
||||||
|
* Fix newlines in <nopreload></nopreload> tags
|
||||||
|
|
||||||
|
13/03/2008
|
||||||
|
Version 1.1.1
|
||||||
|
* Add description message for [[Special:Version]]
|
||||||
377
Preloader.i18n.php
Normal file
377
Preloader.i18n.php
Normal file
|
|
@ -0,0 +1,377 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Internationalisation file for Preloader extension.
|
||||||
|
*
|
||||||
|
* @file
|
||||||
|
* @ingroup Extensions
|
||||||
|
*/
|
||||||
|
|
||||||
|
$messages = array();
|
||||||
|
|
||||||
|
/** English
|
||||||
|
* @author Rob Church
|
||||||
|
*/
|
||||||
|
$messages['en'] = array(
|
||||||
|
'preloader-desc' => 'Provides customisable per-namespace boilerplate text for new pages',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Message documentation (Message documentation)
|
||||||
|
* @author Purodha
|
||||||
|
* @author The Evil IP address
|
||||||
|
*/
|
||||||
|
$messages['qqq'] = array(
|
||||||
|
'preloader-desc' => '{{desc}}',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Arabic (العربية)
|
||||||
|
* @author Meno25
|
||||||
|
*/
|
||||||
|
$messages['ar'] = array(
|
||||||
|
'preloader-desc' => 'يوفر نص بويلربلات مخصص لكل نطاق للصفحات الجديدة',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Egyptian Spoken Arabic (مصرى)
|
||||||
|
* @author Meno25
|
||||||
|
*/
|
||||||
|
$messages['arz'] = array(
|
||||||
|
'preloader-desc' => 'يوفر نص بويلربلات مخصص لكل نطاق للصفحات الجديدة',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Asturian (asturianu)
|
||||||
|
* @author Xuacu
|
||||||
|
*/
|
||||||
|
$messages['ast'] = array(
|
||||||
|
'preloader-desc' => 'Proporciona un testu patrón personalizable por espaciu de nome pa les páxines nueves',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Belarusian (Taraškievica orthography) (беларуская (тарашкевіца))
|
||||||
|
* @author EugeneZelenko
|
||||||
|
*/
|
||||||
|
$messages['be-tarask'] = array(
|
||||||
|
'preloader-desc' => 'Дадае тыпавыя тэксты для новых старонак, якія магчыма настройваць па прасторах назваў',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Breton (brezhoneg)
|
||||||
|
* @author Fulup
|
||||||
|
*/
|
||||||
|
$messages['br'] = array(
|
||||||
|
'preloader-desc' => 'Pourchas a ra prenestroù testenn personeladus evit pep esaouenn anv, evit ar pajennoù nevez',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Bosnian (bosanski)
|
||||||
|
* @author CERminator
|
||||||
|
*/
|
||||||
|
$messages['bs'] = array(
|
||||||
|
'preloader-desc' => 'Omogućuje unos po imenskom prostoru prilagodljivih šablona za nove stranice',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Danish (dansk)
|
||||||
|
* @author Byrial
|
||||||
|
*/
|
||||||
|
$messages['da'] = array(
|
||||||
|
'preloader-desc' => 'Giver en forhåndsbestemt starttekst for nye sider for hvert navnerum',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** German (Deutsch)
|
||||||
|
* @author Raimond Spekking
|
||||||
|
*/
|
||||||
|
$messages['de'] = array(
|
||||||
|
'preloader-desc' => 'Ermöglicht das Hinzufügen pro Namensraum anpassbarer Vorlagen bei der Erstellung neuer Seiten',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Lower Sorbian (dolnoserbski)
|
||||||
|
* @author Michawiki
|
||||||
|
*/
|
||||||
|
$messages['dsb'] = array(
|
||||||
|
'preloader-desc' => 'Zmóžnja pśiměrjujobne tekstowe elementy za nowe boki na mjenjowy rum',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Greek (Ελληνικά)
|
||||||
|
* @author Omnipaedista
|
||||||
|
*/
|
||||||
|
$messages['el'] = array(
|
||||||
|
'preloader-desc' => 'Παρέχει για τις καινούργιες σελίδες εξατομικευμένο πανομοιότυπο κείμενο κατά περιοχή ονομάτων',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Esperanto (Esperanto)
|
||||||
|
* @author Yekrats
|
||||||
|
*/
|
||||||
|
$messages['eo'] = array(
|
||||||
|
'preloader-desc' => 'Provizas ŝanĝeblan norman tekston laŭ nomspaco por novaj paĝoj',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Spanish (español)
|
||||||
|
* @author Sanbec
|
||||||
|
*/
|
||||||
|
$messages['es'] = array(
|
||||||
|
'preloader-desc' => 'Provee texto por defecto para las páginas nuevas configurable para cada espacio de nombres',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Finnish (suomi)
|
||||||
|
* @author Mobe
|
||||||
|
*/
|
||||||
|
$messages['fi'] = array(
|
||||||
|
'preloader-desc' => 'Tarjoaa muokattavan nimiavaruuskohtaisen pohjatekstin uusille sivuille.',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** French (français)
|
||||||
|
* @author Grondin
|
||||||
|
* @author Zetud
|
||||||
|
*/
|
||||||
|
$messages['fr'] = array(
|
||||||
|
'preloader-desc' => 'Fournit, pour les nouvelles pages, des fenêtres de texte personnalisables par nom d’espace',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Galician (galego)
|
||||||
|
* @author Toliño
|
||||||
|
*/
|
||||||
|
$messages['gl'] = array(
|
||||||
|
'preloader-desc' => 'Proporciona, para as páxinas novas, ventás de texto personalizable para os nomes dos espazos',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Ancient Greek (Ἀρχαία ἑλληνικὴ)
|
||||||
|
* @author Omnipaedista
|
||||||
|
*/
|
||||||
|
$messages['grc'] = array(
|
||||||
|
'preloader-desc' => 'Παρέχει συνηθισμένον πανομοιότυπον κείμενον κατὰ ὀνοματεῖον διὰ τὰς καινοὺς δέλτους',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Swiss German (Alemannisch)
|
||||||
|
* @author Als-Holder
|
||||||
|
*/
|
||||||
|
$messages['gsw'] = array(
|
||||||
|
'preloader-desc' => 'Macht s megli pro Namensruum aapassbarei Vorlage zuezfiege bim Aalege vu neje Syte',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Hebrew (עברית)
|
||||||
|
* @author Rotemliss
|
||||||
|
*/
|
||||||
|
$messages['he'] = array(
|
||||||
|
'preloader-desc' => 'אפשרות לתבנית טקסט עבור דפים חדשים, שניתנת להתאמה לפי מרחב שם',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Hiligaynon (Ilonggo)
|
||||||
|
* @author Tagimata
|
||||||
|
*/
|
||||||
|
$messages['hil'] = array(
|
||||||
|
'preloader-desc' => 'Nagahatag sang gin-obra na daan kada-ngalanespasyo boilerplate teksto para sa mga bag-o nga pahina',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Upper Sorbian (hornjoserbsce)
|
||||||
|
* @author Michawiki
|
||||||
|
*/
|
||||||
|
$messages['hsb'] = array(
|
||||||
|
'preloader-desc' => 'Dodawa tekstowe elementy za nowe strony přiměrjomne na mjenowy rum',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Hungarian (magyar)
|
||||||
|
* @author Tgr
|
||||||
|
*/
|
||||||
|
$messages['hu'] = array(
|
||||||
|
'preloader-desc' => 'Névterenként más-más rendszerüzenet az új oldalakhoz',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Interlingua (interlingua)
|
||||||
|
* @author McDutchie
|
||||||
|
*/
|
||||||
|
$messages['ia'] = array(
|
||||||
|
'preloader-desc' => 'Permitte predefinir un modello de texto pro nove paginas, un pro cata spatio de nomines',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Indonesian (Bahasa Indonesia)
|
||||||
|
* @author Bennylin
|
||||||
|
*/
|
||||||
|
$messages['id'] = array(
|
||||||
|
'preloader-desc' => 'Menyediakan teks pembuka yang dapat dikustomisasi per ruang nama untuk halaman-halaman baru',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Italian (italiano)
|
||||||
|
* @author Darth Kule
|
||||||
|
*/
|
||||||
|
$messages['it'] = array(
|
||||||
|
'preloader-desc' => 'Fornisce un testo standard personalizzabile per ciascun namespace per le nuove pagine',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Japanese (日本語)
|
||||||
|
* @author Fryed-peach
|
||||||
|
* @author Shirayuki
|
||||||
|
*/
|
||||||
|
$messages['ja'] = array(
|
||||||
|
'preloader-desc' => '新しいページ用に名前空間ごとのカスタマイズ可能な雛形文章を提供する',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Korean (한국어)
|
||||||
|
* @author 아라
|
||||||
|
*/
|
||||||
|
$messages['ko'] = array(
|
||||||
|
'preloader-desc' => '새 문서에 대해 사용자 정의 이름공간마다 상용구를 제공',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Colognian (Ripoarisch)
|
||||||
|
* @author Purodha
|
||||||
|
*/
|
||||||
|
$messages['ksh'] = array(
|
||||||
|
'preloader-desc' => 'Määt et müjjelesch, för jedes Appachtemang ene Täx förzejävve, dä eets ens ne de neu Sigge erin küt.',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Luxembourgish (Lëtzebuergesch)
|
||||||
|
* @author Robby
|
||||||
|
*/
|
||||||
|
$messages['lb'] = array(
|
||||||
|
'preloader-desc' => 'Erméiglecht et personabiliséierten Text fir nei Säiten pro Nummraum derbäizesetzen',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Macedonian (македонски)
|
||||||
|
* @author Bjankuloski06
|
||||||
|
*/
|
||||||
|
$messages['mk'] = array(
|
||||||
|
'preloader-desc' => 'Овозможува кориснички-прилагодлив фиксен текст за нови страници',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Marathi (मराठी)
|
||||||
|
* @author Kaustubh
|
||||||
|
*/
|
||||||
|
$messages['mr'] = array(
|
||||||
|
'preloader-desc' => 'नवीन पानांसाठी बदलता येण्याजोगी नामविश्व बॉइलरप्लेट देते',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Malay (Bahasa Melayu)
|
||||||
|
* @author Anakmalaysia
|
||||||
|
*/
|
||||||
|
$messages['ms'] = array(
|
||||||
|
'preloader-desc' => 'Menyediakan teks plat dandang seruang nama yang boleh disuaikan untuk laman baru',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Norwegian Bokmål (norsk (bokmål)) */
|
||||||
|
$messages['nb'] = array(
|
||||||
|
'preloader-desc' => 'Gir egendefinerbar forhåndslastet tekst for nye sider i de enkelte navnerommene',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Low German (Plattdüütsch)
|
||||||
|
* @author Slomox
|
||||||
|
*/
|
||||||
|
$messages['nds'] = array(
|
||||||
|
'preloader-desc' => 'Verlöövt dat Tofögen vun ännerbore Vörlagen, de för elk Naamruum bi’t Opstellen vun ne’e Sieden wiest warrt',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Dutch (Nederlands)
|
||||||
|
* @author Siebrand
|
||||||
|
*/
|
||||||
|
$messages['nl'] = array(
|
||||||
|
'preloader-desc' => "Geeft de mogelijkheid aan te passen per naamruimte tekstblokken te maken voor nieuwe pagina's",
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Norwegian Nynorsk (norsk (nynorsk))
|
||||||
|
* @author Harald Khan
|
||||||
|
* @author Njardarlogar
|
||||||
|
*/
|
||||||
|
$messages['nn'] = array(
|
||||||
|
'preloader-desc' => 'Gjev ein eigendefinerbar førehandslasta tekst for nye sider i dei enkelte namneromma',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Occitan (occitan)
|
||||||
|
* @author Cedric31
|
||||||
|
*/
|
||||||
|
$messages['oc'] = array(
|
||||||
|
'preloader-desc' => 'Provesís, per las paginas novèlas, de fenèstras de tèxte personalizablas per nom d’espaci',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Polish (polski)
|
||||||
|
* @author Sp5uhe
|
||||||
|
*/
|
||||||
|
$messages['pl'] = array(
|
||||||
|
'preloader-desc' => 'Zapewnia odrębny dla każdej przestrzeni nazw domyślny tekst nowej strony',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Piedmontese (Piemontèis)
|
||||||
|
* @author Dragonòt
|
||||||
|
*/
|
||||||
|
$messages['pms'] = array(
|
||||||
|
'preloader-desc' => 'A dà test përsonalisà për-namespace për neuve pàgine',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Portuguese (português)
|
||||||
|
* @author Hamilton Abreu
|
||||||
|
* @author Waldir
|
||||||
|
*/
|
||||||
|
$messages['pt'] = array(
|
||||||
|
'preloader-desc' => 'Fornece textos-modelo para novas páginas, personalizáveis por espaço nominal',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Brazilian Portuguese (português do Brasil)
|
||||||
|
* @author Eduardo.mps
|
||||||
|
*/
|
||||||
|
$messages['pt-br'] = array(
|
||||||
|
'preloader-desc' => 'Fornece textos-modelo para novas páginas, personalizáveis por domínio',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** tarandíne (tarandíne)
|
||||||
|
* @author Joetaras
|
||||||
|
*/
|
||||||
|
$messages['roa-tara'] = array(
|
||||||
|
'preloader-desc' => 'Avène ausete pe de le pre-namespace ca sonde personalizzabbele pe le pàggene nueve',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Russian (русский)
|
||||||
|
* @author Александр Сигачёв
|
||||||
|
*/
|
||||||
|
$messages['ru'] = array(
|
||||||
|
'preloader-desc' => 'Предоставляет настраиваемые по пространствам имён типовые тексты для новых страниц',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Slovak (slovenčina)
|
||||||
|
* @author Helix84
|
||||||
|
*/
|
||||||
|
$messages['sk'] = array(
|
||||||
|
'preloader-desc' => 'Poskytuje prispôsobiteľný šablónový text pre nové stránky na báze menných priestorov',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Seeltersk (Seeltersk)
|
||||||
|
* @author Pyt
|
||||||
|
*/
|
||||||
|
$messages['stq'] = array(
|
||||||
|
'preloader-desc' => 'Moaket dät Bietouföigjen muugelk fon pro Noomensruum anpaasboare Foarloagen bie dät Moakjen fon näie Sieden',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Swedish (svenska)
|
||||||
|
* @author M.M.S.
|
||||||
|
*/
|
||||||
|
$messages['sv'] = array(
|
||||||
|
'preloader-desc' => 'Ger en egendefinierad förhandsladdad text för nya sidor',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Telugu (తెలుగు)
|
||||||
|
* @author Veeven
|
||||||
|
*/
|
||||||
|
$messages['te'] = array(
|
||||||
|
'preloader-desc' => 'కొత్త పేజీలకి పేరుబరివారీగా మార్చుకొనగలిగే మూస పాఠ్యాన్ని అందిస్తుంది',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Tagalog (Tagalog)
|
||||||
|
* @author AnakngAraw
|
||||||
|
*/
|
||||||
|
$messages['tl'] = array(
|
||||||
|
'preloader-desc' => 'Nagbibigay na maipapasadyang pang-bawat espasyo ng pangalang teksto ng pakuluang-bakal para sa bagong mga pahina',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Turkish (Türkçe)
|
||||||
|
* @author Vito Genovese
|
||||||
|
*/
|
||||||
|
$messages['tr'] = array(
|
||||||
|
'preloader-desc' => 'Yeni sayfalar için isim alanına özel kişiselleştirilebilir hazır metinler sunar',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Ukrainian (українська)
|
||||||
|
* @author Alex Khimich
|
||||||
|
*/
|
||||||
|
$messages['uk'] = array(
|
||||||
|
'preloader-desc' => 'Забезпечення настроюваних за імен по стандартним типовим текстам для нової сторінки',
|
||||||
|
);
|
||||||
|
|
||||||
|
/** Vietnamese (Tiếng Việt)
|
||||||
|
* @author Vinhtantran
|
||||||
|
*/
|
||||||
|
$messages['vi'] = array(
|
||||||
|
'preloader-desc' => 'Cung cấp những mẫu văn bản viết sẵn theo từng không gian tên khi tạo trang mới',
|
||||||
|
);
|
||||||
|
|
||||||
103
Preloader.php
Normal file
103
Preloader.php
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extension allows preloading of custom content into all edit forms
|
||||||
|
* when creating an article
|
||||||
|
*
|
||||||
|
* Also adds a new tag <nopreload> which is used to mark sections which
|
||||||
|
* shouldn't be preloaded, ever; has no effect on the rendering of pages
|
||||||
|
*
|
||||||
|
* @file
|
||||||
|
* @ingroup Extensions
|
||||||
|
* @author Rob Church <robchur@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
if( !defined( 'MEDIAWIKI' ) ) {
|
||||||
|
echo( "This file is an extension to the MediaWiki software and cannot be used standalone.\n" );
|
||||||
|
exit( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
$wgExtensionCredits['other'][] = array(
|
||||||
|
'path' => __FILE__,
|
||||||
|
'name' => 'Preloader',
|
||||||
|
'author' => 'Rob Church',
|
||||||
|
'version' => '1.1.1',
|
||||||
|
'url' => 'https://www.mediawiki.org/wiki/Extension:Preloader',
|
||||||
|
'descriptionmsg' => 'preloader-desc',
|
||||||
|
);
|
||||||
|
$wgExtensionMessagesFiles['Preloader'] = dirname(__FILE__) . '/Preloader.i18n.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sources of preloaded content for each namespace
|
||||||
|
*/
|
||||||
|
$wgPreloaderSource[ NS_MAIN ] = 'Template:Preload';
|
||||||
|
|
||||||
|
$wgHooks['EditFormPreloadText'][] = 'Preloader::mainHook';
|
||||||
|
$wgHooks['ParserFirstCallInit'][] = 'Preloader::setParserHook';
|
||||||
|
|
||||||
|
class Preloader {
|
||||||
|
|
||||||
|
public static function setParserHook( $parser ) {
|
||||||
|
$parser->setHook( 'nopreload', array( __CLASS__, 'parserHook' ) );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Hook function for the preloading */
|
||||||
|
public static function mainHook( &$text, &$title ) {
|
||||||
|
$src = self::preloadSource( $title->getNamespace() );
|
||||||
|
if( $src ) {
|
||||||
|
$stx = self::sourceText( $src );
|
||||||
|
if( $stx )
|
||||||
|
$text = $stx;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Hook function for the parser */
|
||||||
|
public static function parserHook( $input, $args, &$parser ) {
|
||||||
|
$output = $parser->parse( $input, $parser->getTitle(), $parser->getOptions(), false, false );
|
||||||
|
return $output->getText();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine what page should be used as the source of preloaded text
|
||||||
|
* for a given namespace and return the title (in text form)
|
||||||
|
*
|
||||||
|
* @param $namespace Namespace to check for
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
static function preloadSource( $namespace ) {
|
||||||
|
global $wgPreloaderSource;
|
||||||
|
if( isset( $wgPreloaderSource[ $namespace ] ) ) {
|
||||||
|
return $wgPreloaderSource[ $namespace ];
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grab the current text of a given page if it exists
|
||||||
|
*
|
||||||
|
* @param $page Text form of the page title
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
static function sourceText( $page ) {
|
||||||
|
$title = Title::newFromText( $page );
|
||||||
|
if( $title && $title->exists() ) {
|
||||||
|
$revision = Revision::newFromTitle( $title );
|
||||||
|
return self::transform( $revision->getText() );
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove <nopreload> sections from the text and trim whitespace
|
||||||
|
*
|
||||||
|
* @param $text
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
static function transform( $text ) {
|
||||||
|
return trim( preg_replace( '/<nopreload>.*<\/nopreload>/s', '', $text ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in a new issue