├── .gitignore
├── i18n
├── qqq.json
├── os.json
├── mg.json
├── lv.json
├── af.json
├── br.json
├── grc.json
├── vep.json
├── vo.json
├── ko.json
├── io.json
├── bn.json
├── eu.json
├── lt.json
├── te.json
├── bcc.json
├── km.json
├── ja.json
├── mr.json
├── ar.json
├── hi.json
├── sv.json
├── fi.json
├── arz.json
├── hsb.json
├── tr.json
├── uk.json
├── eo.json
├── nds.json
├── nn.json
├── jut.json
├── vi.json
├── ca.json
├── cs.json
├── dsb.json
├── gsw.json
├── stq.json
├── ia.json
├── li.json
├── hr.json
├── ms.json
├── pt-br.json
├── sah.json
├── an.json
├── fa.json
├── ro.json
├── tg-cyrl.json
├── vec.json
├── ast.json
├── bs.json
├── jv.json
├── bg.json
├── pt.json
├── el.json
├── gl.json
├── hu.json
├── oc.json
├── be-tarask.json
├── frp.json
├── nb.json
├── roa-tara.json
├── lb.json
├── es.json
├── ml.json
├── tl.json
├── ksh.json
├── yue.json
├── zh-hans.json
├── zh-hant.json
├── nl.json
├── sr-el.json
├── he.json
├── ru.json
├── sk.json
├── sr-ec.json
├── sr.json
├── id.json
├── fr.json
├── it.json
├── de.json
├── en.json
└── pl.json
├── .gitreview
├── .gitlab-ci.yml
├── composer.json
├── classes
├── heading
│ ├── OrderedHeading.php
│ ├── UnorderedHeading.php
│ ├── DefinitionHeading.php
│ ├── TieredHeading.php
│ └── Heading.php
├── lister
│ ├── UnorderedList.php
│ ├── DefinitionList.php
│ ├── GalleryList.php
│ ├── CategoryList.php
│ ├── InlineList.php
│ ├── OrderedList.php
│ ├── SubPageList.php
│ └── UserFormatList.php
├── db
│ └── CreateTemplateUpdateMaintenance.php
├── Config.php
├── Logger.php
├── Variables.php
└── Article.php
├── DynamicPageList.i18n.magic.php
├── .phpcs.xml
├── extension.json
├── README.md
├── README.mediawiki
└── LICENSE.md
/.gitignore:
--------------------------------------------------------------------------------
1 | *.kate-swp
2 | *~
3 | .*.swp
4 | .DS_Store
5 | .svn
6 | /vendor
7 | composer.lock
8 | .idea
9 |
--------------------------------------------------------------------------------
/i18n/qqq.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Purodha"
5 | ]
6 | },
7 | "intersection-desc": "{{desc}}"
8 | }
--------------------------------------------------------------------------------
/.gitreview:
--------------------------------------------------------------------------------
1 | [gerrit]
2 | host=gerrit.wikimedia.org
3 | port=29418
4 | project=mediawiki/extensions/DynamicPageList.git
5 | defaultbranch=master
6 | defaultrebase=0
7 |
--------------------------------------------------------------------------------
/i18n/os.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Amikeco"
5 | ]
6 | },
7 | "intersection_toomanycats": "Рæдыд: æгæр бирæ категоритæ!"
8 | }
--------------------------------------------------------------------------------
/i18n/mg.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Jagwar"
5 | ]
6 | },
7 | "intersection_toomanycats": "DynamicPageList : Be laotra ny sokajy"
8 | }
--------------------------------------------------------------------------------
/.gitlab-ci.yml:
--------------------------------------------------------------------------------
1 | image: valeryan/php-fpm
2 |
3 | stages:
4 | - test
5 |
6 | before_script:
7 | - composer self-update
8 | - composer install
9 | - npm install
10 |
11 | job:
12 | stage: test
13 | script: composer test
14 |
--------------------------------------------------------------------------------
/i18n/lv.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Xil"
5 | ]
6 | },
7 | "intersection_toomanycats": "Kļūda: pārāk daudz kategoriju!",
8 | "intersection_toofewcats": "Kļūda: pārāk maz kategoriju!"
9 | }
--------------------------------------------------------------------------------
/i18n/af.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Naudefj"
5 | ]
6 | },
7 | "intersection_toomanycats": "Fout: Te veel kategorieë!",
8 | "intersection_toofewcats": "Fout: Te min kategorieë!",
9 | "intersection_noresults": "Fout: Geen resultate!"
10 | }
--------------------------------------------------------------------------------
/i18n/br.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Fulup"
5 | ]
6 | },
7 | "intersection_toomanycats": "Error: Re a rummadoù !",
8 | "intersection_toofewcats": "Error: Re nebeut a rummadoù !",
9 | "intersection_noresults": "Error: Disoc'h ebet !"
10 | }
--------------------------------------------------------------------------------
/i18n/grc.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Omnipaedista"
5 | ]
6 | },
7 | "intersection_noresults": "Σφάλμα: οὐδὲν ἀποτέλεσμα",
8 | "intersection_noincludecats": "Σφάλμα: Ἔξεστί σοι περιλαμβάνειν μίαν τοὐλάχιστον κατηγορίαν, ἢ καθορίζειν ὀνοματεῖον τι!"
9 | }
--------------------------------------------------------------------------------
/i18n/vep.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Игорь Бродский"
5 | ]
6 | },
7 | "intersection_toomanycats": "Error: äjahk kategorijoid!",
8 | "intersection_toofewcats": "Error: Vähähk kategorijoid!",
9 | "intersection_noresults": "Error: Ei ole rezul'tatoid!"
10 | }
--------------------------------------------------------------------------------
/i18n/vo.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Smeira"
5 | ]
6 | },
7 | "intersection_toomanycats": "Error: Klads tu mödiks!",
8 | "intersection_toofewcats": "Error: Klads tu nemödiks!",
9 | "intersection_noresults": "Error: Seks nonik!",
10 | "intersection_noincludecats": "Error: Nedol välön kladi pu bali, u nemaspadi!"
11 | }
--------------------------------------------------------------------------------
/i18n/ko.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Kwj2772",
5 | "Yknok29"
6 | ]
7 | },
8 | "intersection_toomanycats": "에러: 분류가 너무 많습니다!",
9 | "intersection_toofewcats": "에러: 분류가 너무 적습니다!",
10 | "intersection_noresults": "오류: 결과가 없습니다!",
11 | "intersection_noincludecats": "에러: 최소한 하나의 분류에 포함시켜 주시거나 이름공간을 명확히 적어 주세요!"
12 | }
--------------------------------------------------------------------------------
/i18n/io.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Malafaya"
5 | ]
6 | },
7 | "intersection_toomanycats": "Eroro: Tro multa kategorii!",
8 | "intersection_toofewcats": "Eroro: Tro poka kategorii!",
9 | "intersection_noresults": "Eroro: Nula rezultaji!",
10 | "intersection_noincludecats": "Eroro: Vu mustas inkluzar adminime un kategorio, o specigez nomaro!"
11 | }
--------------------------------------------------------------------------------
/i18n/bn.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Bellayet"
5 | ]
6 | },
7 | "intersection_toomanycats": "Error: অনেক বেশি বিষয়শ্রেণী!",
8 | "intersection_toofewcats": "Error: অনেক কম বিষয়শ্রেণী!",
9 | "intersection_noresults": "Error: ফলাফল নাই!",
10 | "intersection_noincludecats": "ত্রুটি:আপনার অন্তত একটি বিষয়শ্রেণী যুক্ত করতে, অথবা একটি নেমস্পেস দিতে হবে!"
11 | }
--------------------------------------------------------------------------------
/i18n/eu.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "An13sa"
5 | ]
6 | },
7 | "intersection_toomanycats": "Errorea: Kategoria gehiegi!",
8 | "intersection_toofewcats": "Errorea: Kategoria gutxiegi!",
9 | "intersection_noresults": "Errorea: Emaitzarik ez!",
10 | "intersection_noincludecats": "Errorea: Gutxienez kategoria bat gehitu edo izen bat zehaztu behar duzu!"
11 | }
--------------------------------------------------------------------------------
/i18n/lt.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Matasg"
5 | ]
6 | },
7 | "intersection_toomanycats": "Error: Per daug kategorijų!",
8 | "intersection_toofewcats": "Error: Per mažai kategorijų!",
9 | "intersection_noresults": "Error: Nėra rezultatų!",
10 | "intersection_noincludecats": "Error: Jums reikia įtraukti bent vieną kategoriją, arba nurodyti vardų sritį!"
11 | }
--------------------------------------------------------------------------------
/i18n/te.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Veeven"
5 | ]
6 | },
7 | "intersection_toomanycats": "Error: చాలా ఎక్కువ వర్గాలు!",
8 | "intersection_toofewcats": "Error: మరీ తక్కువ వర్గాలు!",
9 | "intersection_noresults": "Error: ఫలితాలు లేవు!",
10 | "intersection_noincludecats": "Error: మీరు కనీసం ఒక్క వర్గాన్నైనా చేర్చాలి, లేదా ఓ నేమ్స్పేసునైనా ఇవ్వాలి!"
11 | }
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "require-dev": {
3 | "jakub-onderka/php-parallel-lint": "1.0.0",
4 | "jakub-onderka/php-console-highlighter": "0.3.2",
5 | "mediawiki/minus-x": "0.3.1",
6 | "hydrawiki/hydrawiki-codesniffer": "^1.0.0"
7 | },
8 | "scripts": {
9 | "test": [
10 | "parallel-lint . --exclude vendor",
11 | "phpcs -p -s",
12 | "minus-x check ."
13 | ],
14 | "fix": [
15 | "minus-x fix .",
16 | "phpcbf"
17 | ]
18 | }
19 | }
--------------------------------------------------------------------------------
/i18n/bcc.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Mostafadaneshvar"
5 | ]
6 | },
7 | "intersection_toomanycats": "DynamicPageList: بازگین دسته جات!",
8 | "intersection_toofewcats": "DynamicPageList: باز کمین دسته جات!",
9 | "intersection_noresults": "DynamicPageList: هچ نتیجه ای",
10 | "intersection_noincludecats": "لیست صفحات دینامیکی: شما لازمنت حداقل یک دسته هور کنیت یا یک نام فضایی مشخص کنیت!"
11 | }
--------------------------------------------------------------------------------
/i18n/km.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Chhorran",
5 | "Thearith"
6 | ]
7 | },
8 | "intersection_toomanycats": "កំហុស៖ ចំណាត់ថ្នាក់ក្រុមច្រើនពេក!",
9 | "intersection_toofewcats": "កំហុស៖ ចំណាត់ថ្នាក់ក្រុមតិចពេក!",
10 | "intersection_noresults": "កំហុស៖ គ្មានលទ្ធផល!",
11 | "intersection_noincludecats": "កំហុស៖ អ្នកត្រូវតែមានចំណាត់ថ្នាក់ក្រុមមួយយ៉ាងតិច ឬ សំដៅមួយលំហឈ្មោះ!"
12 | }
--------------------------------------------------------------------------------
/i18n/ja.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Fryed-peach",
5 | "JtFuruhata"
6 | ]
7 | },
8 | "intersection-desc": "単一カテゴリ内または複数カテゴリ内において最近更新された項目を箇条書きで表示する",
9 | "intersection_toomanycats": "エラー: カテゴリ指定が多すぎます!",
10 | "intersection_toofewcats": "エラー: カテゴリ指定が少なすぎます!",
11 | "intersection_noresults": "エラー: 最近更新された項目はありません!",
12 | "intersection_noincludecats": "エラー: 1つ以上のカテゴリ、または名前空間を指定する必要があります!"
13 | }
--------------------------------------------------------------------------------
/i18n/mr.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Kaustubh"
5 | ]
6 | },
7 | "intersection-desc": "एखाद्या वर्गातील अथवा वर्गसमूहातील नवीनतम लेख दर्शवितो.",
8 | "intersection_toomanycats": "Error: खूप जास्त वर्ग!",
9 | "intersection_toofewcats": "Error: खूप कमी वर्ग!",
10 | "intersection_noresults": "Error: निकाल नाहीत!",
11 | "intersection_noincludecats": "Error: कमीतकमी एक वर्ग अथवा नामविश्व देणे गरजेचे आहे!"
12 | }
--------------------------------------------------------------------------------
/i18n/ar.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Meno25"
5 | ]
6 | },
7 | "intersection-desc": "يخرج قائمة معلمة بأحدث المدخلات الساكنة في تصنيف، أو اتحاد عدة تصنيفات",
8 | "intersection_toomanycats": "خطأ: تصنيفات كثيرة جدا!",
9 | "intersection_toofewcats": "خطأ: تصنيفات قليلة جدا!",
10 | "intersection_noresults": "خطأ: لا نتائج!",
11 | "intersection_noincludecats": "خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!"
12 | }
--------------------------------------------------------------------------------
/i18n/hi.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Kaustubh"
5 | ]
6 | },
7 | "intersection-desc": "एक श्रेणी या श्रेणीसमूहमें उपलब्ध नवीनतम लेख दर्शायें।",
8 | "intersection_toomanycats": "Error: बहुत ज्यादा श्रेणीयां!",
9 | "intersection_toofewcats": "Error: बहुत कम श्रेणीयां!",
10 | "intersection_noresults": "Error: रिज़ल्ट नहीं!",
11 | "intersection_noincludecats": "Error: कमसे कम एक श्रेणी या नामस्थान देना अनिवार्य हैं!"
12 | }
--------------------------------------------------------------------------------
/i18n/sv.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Lejonel"
5 | ]
6 | },
7 | "intersection-desc": "Skapar punktlistor över de nyaste sidorna i en eller flera kategorier",
8 | "intersection_toomanycats": "Fel: För många kategorier!",
9 | "intersection_toofewcats": "Fel: För få kategorier!",
10 | "intersection_noresults": "Fel: Inga resultat!",
11 | "intersection_noincludecats": "Fel: Du måste inkludera minst en kategori eller ange en namnrymd!"
12 | }
--------------------------------------------------------------------------------
/i18n/fi.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Nike"
5 | ]
6 | },
7 | "intersection-desc": "Tulostaa listan luokassa tai useamman luokan yhdisteessä olevista sivuista.",
8 | "intersection_toomanycats": "Error: Liian monta luokkaa.",
9 | "intersection_toofewcats": "Error: Liian vähän luokkia.",
10 | "intersection_noresults": "Error: Ei tuloksia.",
11 | "intersection_noincludecats": "Error: Lisää vähintään yksi luokka tai määritä nimiavaruus."
12 | }
--------------------------------------------------------------------------------
/i18n/arz.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Meno25",
5 | "Ramsis II"
6 | ]
7 | },
8 | "intersection-desc": "بيطلع لستة مترقمة لاحدث الحاجات الموجودة فى تصنيف,او اتحاد اكتر من تصنيف",
9 | "intersection_toomanycats": "غلط:تصانيف كتيرة خالص!",
10 | "intersection_toofewcats": "غلط:تصانيف قليلة خالص!",
11 | "intersection_noresults": "غلط:مافيش نتايج!",
12 | "intersection_noincludecats": "غلط: لازم تحط تصنيف واحد على الأقل، أو تحدد نطاق!"
13 | }
--------------------------------------------------------------------------------
/classes/heading/OrderedHeading.php:
--------------------------------------------------------------------------------
1 | ';
20 |
21 | /**
22 | * List(Section) End
23 | *
24 | * @var string
25 | */
26 | public $listEnd = '';
27 | }
28 |
--------------------------------------------------------------------------------
/i18n/hsb.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Michawiki"
5 | ]
6 | },
7 | "intersection-desc": "Wudaće lisćiny najaktualnišich zapiskow w jednej kategoriji abo w skupinje kategorijow",
8 | "intersection_toomanycats": "Error: Přewjele kategorijow!",
9 | "intersection_toofewcats": "Error: Přemało kategorijow!",
10 | "intersection_noresults": "Error: Žane wuslědki!",
11 | "intersection_noincludecats": "Error: Dyrbiš znajmjeńša kednu kategoriju zapřijeć abo mjenowy rum podać!"
12 | }
--------------------------------------------------------------------------------
/i18n/tr.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Joseph"
5 | ]
6 | },
7 | "intersection-desc": "Bir kategoride, yada birçok kategorinin kesişiminde bulunan en son öğelerin, madde işaretli listesini üretir",
8 | "intersection_toomanycats": "Hata: Çok fazla kategori!",
9 | "intersection_toofewcats": "Hata: Çok az kategori!",
10 | "intersection_noresults": "Hata: Sonuç yok!",
11 | "intersection_noincludecats": "Hata: En az bir kategori eklemeli, ya da bir ad alanı belirtmelisiniz!"
12 | }
--------------------------------------------------------------------------------
/i18n/uk.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Ahonc"
5 | ]
6 | },
7 | "intersection-desc": "Виводить у маркований список останні додавання до категорії або об'єднання кількох категорій",
8 | "intersection_toomanycats": "Error: дуже багато категорій!",
9 | "intersection_toofewcats": "Error: дуже мало категорій!",
10 | "intersection_noresults": "Error: нема результатів!",
11 | "intersection_noincludecats": "Error: ви повинні включити хоча б одну категорію або зазначити простір назв!"
12 | }
--------------------------------------------------------------------------------
/DynamicPageList.i18n.magic.php:
--------------------------------------------------------------------------------
1 | [0, 'dpl'],
16 | 'dplnum' => [0, 'dplnum'],
17 | 'dplvar' => [0, 'dplvar'],
18 | 'dplreplace' => [0, 'dplreplace'],
19 | 'dplchapter' => [0, 'dplchapter'],
20 | 'dplmatrix' => [0, 'dplmatrix'],
21 | 'DynamicPageList' => [0, 'DynamicPageList']
22 | ];
23 |
--------------------------------------------------------------------------------
/i18n/eo.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Yekrats"
5 | ]
6 | },
7 | "intersection-desc": "Eligas bulpunktitan liston de la plej lastaj kategorianoj, aŭ unuigo de pluraj kategorioj",
8 | "intersection_toomanycats": "Eraro: Tro da kategorioj!",
9 | "intersection_toofewcats": "Error: Tro malmultaj da kategorioj!",
10 | "intersection_noresults": "Error: Neniom da rezultoj!",
11 | "intersection_noincludecats": "Error: Vi devas inkluzivi almenaŭ unu kategorion, aŭ specifigu nomspacon!"
12 | }
--------------------------------------------------------------------------------
/i18n/nds.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Slomox"
5 | ]
6 | },
7 | "intersection-desc": "Wiest en List mit de aktuellsten Indrääg in en Kategorie, oder de Snittmengd vun mehr Kategorien",
8 | "intersection_toomanycats": "Fehler: Toveel Kategorien!",
9 | "intersection_toofewcats": "Fehler: To wenig Kategorien!",
10 | "intersection_noresults": "Fehler: Nix funnen!",
11 | "intersection_noincludecats": "Fehler: Dor mutt opminnst een Kategorie angeven warrn! ODer geev en Naamruum an."
12 | }
--------------------------------------------------------------------------------
/i18n/nn.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Harald Khan"
5 | ]
6 | },
7 | "intersection-desc": "Gjev ei punktlista over dei nyaste elementa i ein kategori, eller element som er felles i fleire kategoriar",
8 | "intersection_toomanycats": "Feil: For mange kategoriar!",
9 | "intersection_toofewcats": "Feil: For få kategoriar!",
10 | "intersection_noresults": "Feil: Ingen resultat!",
11 | "intersection_noincludecats": "Feil: Du må inkludera minst éin kategori, eller oppgje eit namnerom!"
12 | }
--------------------------------------------------------------------------------
/i18n/jut.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Huslåke"
5 | ]
6 | },
7 | "intersection-desc": "Outputs en bulleted liste der senestste itemer ræsidende i en klynge, æller æ unje der severæl klynger",
8 | "intersection_toomanycats": "Error: Åverføl klynger!",
9 | "intersection_toofewcats": "Error: Åverwæneg klynger!",
10 | "intersection_noresults": "Error: Ekke ræsultåter!",
11 | "intersection_noincludecats": "Error: Du nødst til inkludær til mendst en klynge, æller spæsifiær en navnerum!"
12 | }
--------------------------------------------------------------------------------
/i18n/vi.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Minh Nguyen"
5 | ]
6 | },
7 | "intersection-desc": "Cho ra danh sách những khoản gần đây nhất được xếp vào một thể loại hay hợp của hơn một thể loại",
8 | "intersection_toomanycats": "Error: Nhiều thể loại quá!",
9 | "intersection_toofewcats": "Error: Ít thể loại quá!",
10 | "intersection_noresults": "Error: Không tìm thấy trang nào!",
11 | "intersection_noincludecats": "Error: Cần phải bao gồm ít nhất một thể loại hay định rõ một không gian tên!"
12 | }
--------------------------------------------------------------------------------
/i18n/ca.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Paucabot",
5 | "SMP"
6 | ]
7 | },
8 | "intersection-desc": "Genera una llista d'elements recents en una categoria o en la intersecció de diverses.",
9 | "intersection_toomanycats": "Error: Massa categories!",
10 | "intersection_toofewcats": "Error: Massa poques categories!",
11 | "intersection_noresults": "Error: Cap resultat!",
12 | "intersection_noincludecats": "Error: Heu d'incloure almenys una categoria o especificar un espai de noms!"
13 | }
--------------------------------------------------------------------------------
/i18n/cs.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Li-sung",
5 | "Matěj Grabovský"
6 | ]
7 | },
8 | "intersection-desc": "Vypíše seznam nejnovějších položek v kategorii nebo sjednotí několik kategorií",
9 | "intersection_toomanycats": "Error: Příliš mnoho kategorií!",
10 | "intersection_toofewcats": "Error: Málo kategorií!",
11 | "intersection_noresults": "Error: Žádné výsledky!",
12 | "intersection_noincludecats": "Error: Musíte zahrnout alespoň jednu kategorii nebo určit jmenný prostor!"
13 | }
--------------------------------------------------------------------------------
/i18n/dsb.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Michawiki"
5 | ]
6 | },
7 | "intersection-desc": "Wudawa lisćina nejaktualnjejšych zapiskow w kategoriji abo zgromadneje młogosći někotarych kategorijow",
8 | "intersection_toomanycats": "Zmólka: Pśewjele kategorijow!",
9 | "intersection_toofewcats": "Zmólka: Pśemało kategorijow!",
10 | "intersection_noresults": "Zmólka: Žedne wuslědki!",
11 | "intersection_noincludecats": "Zmólka: Musyš nanejmjenjej jadnu kategoriju zapśěgnuś abo mjenjowy rum pódaś!"
12 | }
--------------------------------------------------------------------------------
/i18n/gsw.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Als-Holder"
5 | ]
6 | },
7 | "intersection-desc": "Usgabe vun ere Lischt vu dr aktuällschte Yyträg in ere Kategorii, oder vu dr Schnittmängi vu mehrere Kategorie",
8 | "intersection_toomanycats": "Fähler: Zvyyl Kategorie!",
9 | "intersection_toofewcats": "Fähler: Zwenig Kategorie!",
10 | "intersection_noresults": "Fähler: Kei Ergebnis!",
11 | "intersection_noincludecats": "Fähler: S muess zmindescht ei Kategorii yybunde wäre oder gib e Namensruum aa!"
12 | }
--------------------------------------------------------------------------------
/i18n/stq.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Pyt"
5 | ]
6 | },
7 | "intersection-desc": "Uutgoawe fon ne Lieste fon do aktuälste Iendraage in ne Kategorie, of n Truchsnit fon moorere Kategorien.",
8 | "intersection_toomanycats": "Error: Toufuul Kategorien!",
9 | "intersection_toofewcats": "Error: Toumin Kategorien!",
10 | "intersection_noresults": "Error: Neen Resultoat!",
11 | "intersection_noincludecats": "Error: Der mout mindestens een Kategorie ienbuunen weese of reek n Noomensruum oun!"
12 | }
--------------------------------------------------------------------------------
/i18n/ia.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "McDutchie"
5 | ]
6 | },
7 | "intersection-desc": "Face un lista a punctos del elementos le plus recente in un categoria, o un union de plure categorias",
8 | "intersection_toomanycats": "Error: Troppo de categorias!",
9 | "intersection_toofewcats": "Error: Non bastante categorias!",
10 | "intersection_noresults": "Error: Nulle resultatos!",
11 | "intersection_noincludecats": "Error: Tu debe includer al minus un categoria, o specificar un spatio de nomines!"
12 | }
--------------------------------------------------------------------------------
/i18n/li.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Matthias"
5 | ]
6 | },
7 | "intersection-desc": "Geeft als uitvoer een ongenummerde lijst met de meest recent toegevoegde items in een categorie, of een combinatie van categorieë",
8 | "intersection_toomanycats": "Error: Te veel categorieë!",
9 | "intersection_toofewcats": "Error: Te weinig categorieë!",
10 | "intersection_noresults": "Error: Gein resultate!",
11 | "intersection_noincludecats": "Error: U moet tenminste een categorie of een naamruimte opgeve!"
12 | }
--------------------------------------------------------------------------------
/i18n/hr.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Dalibor Bosits",
5 | "Dnik"
6 | ]
7 | },
8 | "intersection-desc": "Omogućava popis najnovijih stranica ili datoteka iz kategorije, ili presjeka nekoliko kategorija",
9 | "intersection_toomanycats": "Error: Previše kategorija!",
10 | "intersection_toofewcats": "Error: Premalo kategorija!",
11 | "intersection_noresults": "Error: Nema rezultata!",
12 | "intersection_noincludecats": "Error: Morate uključiti bar jednu kategoriju, ili odabrati imenski prostor!"
13 | }
--------------------------------------------------------------------------------
/i18n/ms.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Aviator"
5 | ]
6 | },
7 | "intersection-desc": "Mengoutput senarai item terkini dalam sesebuah kategori atau kesatuan beberapa buah kategori",
8 | "intersection_toomanycats": "Error: Kategori terlalu banyak!",
9 | "intersection_toofewcats": "Error: Kategori terlalu sedikit!",
10 | "intersection_noresults": "Error: Tiada hasil!",
11 | "intersection_noincludecats": "Error: Anda hendaklah memasukkan sekurang-kurangnya sebuah kategori atau menyatakan sebuah ruang nama!"
12 | }
--------------------------------------------------------------------------------
/i18n/pt-br.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Eduardo.mps"
5 | ]
6 | },
7 | "intersection-desc": "Exibe uma lista pontuada dos itens mais recentes presentes numa categoria, ou uma intersecção de várias categorias",
8 | "intersection_toomanycats": "Erro: Categorias demais!",
9 | "intersection_toofewcats": "Erro: Poucas categorias!",
10 | "intersection_noresults": "Erro: Sem resultados!",
11 | "intersection_noincludecats": "Erro: É necessário incluir no mínimo uma categoria ou especificar um espaço nominal!"
12 | }
--------------------------------------------------------------------------------
/i18n/sah.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "HalanTul"
5 | ]
6 | },
7 | "intersection-desc": "Категорияларга бүтэһик эбиилэри эбэтэр категориялар холбонууларын бэлиэлээх (маркированнай) испииһэк курдук таһаарар",
8 | "intersection_toomanycats": "Error: категорийата наһаа элбэх!",
9 | "intersection_toofewcats": "Error: Категорията наһаа аҕыйах",
10 | "intersection_noresults": "Error: Түмүк суох!",
11 | "intersection_noincludecats": "Error: Биир эмит категорияны эбэтэр ааты (пространство имен) талыахтааххын!"
12 | }
--------------------------------------------------------------------------------
/i18n/an.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Juanpabl"
5 | ]
6 | },
7 | "intersection-desc": "Preduz una lista d'os elementos más rezients que bi ha en una categoría u a unión de barios categorías",
8 | "intersection_toomanycats": "Error: Masiadas categorías!",
9 | "intersection_toofewcats": "Error: numero insufizient de categorías!",
10 | "intersection_noresults": "Error: No bi ha garra resultau!",
11 | "intersection_noincludecats": "Error: Ha d'encluyir á lo menos una categoría u endicar un espazio de nombres!"
12 | }
--------------------------------------------------------------------------------
/i18n/fa.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Huji"
5 | ]
6 | },
7 | "intersection-desc": "فهرست گلولهای از صفحههایی به نمایش در میآورد که به تازگی در یک یا چند رده وارد شدهاند",
8 | "intersection_toomanycats": "DynamicPageList: تعداد ردهها زیاد است!",
9 | "intersection_toofewcats": "DynamicPageList: تعداد ردهها کم است!",
10 | "intersection_noresults": "DynamicPageList: نتیجهای وجود ندارد!",
11 | "intersection_noincludecats": "DynamicPageList: شما حداقل باید یک رده را وارد کنید، یا یک فضای نام را مشخص کنید!"
12 | }
--------------------------------------------------------------------------------
/i18n/ro.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Mihai"
5 | ]
6 | },
7 | "intersection-desc": "Întoarce o lista celor mai recenţi itemi care fac parte dintr-o categorie, sau intersecţia a mai multor categorii",
8 | "intersection_toomanycats": "Eroare: Prea multe categorii!",
9 | "intersection_toofewcats": "Eroare: Prea puţine categorii!",
10 | "intersection_noresults": "Eroare: Niciun rezultat!",
11 | "intersection_noincludecats": "Eroare: Trebuie să incluzi cel puţin o categorie, sau să specifici un spaţiu de nume!"
12 | }
--------------------------------------------------------------------------------
/i18n/tg-cyrl.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Ibrahim"
5 | ]
6 | },
7 | "intersection-desc": "Феҳристи гулулае аз саҳифаҳое ба намоиш дар меояд, ки ба тозагӣ дар як ё чанд гурӯҳ ворид шудаанд",
8 | "intersection_toomanycats": "Error: Теъдоди гурӯҳҳо зиёд аст!",
9 | "intersection_toofewcats": "Error: Теъдоди гурӯҳҳо кам аст!",
10 | "intersection_noresults": "Error: Натиҷае вуҷуд надорад!",
11 | "intersection_noincludecats": "Error: Шумо ҳадди ақал бояд як гурӯҳро ворид кунед, ё як фазои номро мушаххас кунед!"
12 | }
--------------------------------------------------------------------------------
/i18n/vec.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Candalua"
5 | ]
6 | },
7 | "intersection-desc": "Mostra un elenco puntato coi elementi piassè reçenti inserìi in te na categoria o ne l'union de più categorie",
8 | "intersection_toomanycats": "Error: Ghe xe massa categorie!",
9 | "intersection_toofewcats": "Error: Ghe xe massa póche categorie!",
10 | "intersection_noresults": "Error: Nissun risultato!",
11 | "intersection_noincludecats": "Error: Te ghè da inclùdar almanco na categoria opure specificar un namespace."
12 | }
--------------------------------------------------------------------------------
/i18n/ast.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Esbardu"
5 | ]
6 | },
7 | "intersection-desc": "Amuesa una llista de los elementos más recién que tenga una categoría o una xuntanza de varies categoríes",
8 | "intersection_toomanycats": "Error: ¡Demasiaes categoríes!",
9 | "intersection_toofewcats": "Error: ¡Demasiaes poques categoríes!",
10 | "intersection_noresults": "Error: ¡Nun hai resultaos!",
11 | "intersection_noincludecats": "Error: ¡Necesites amiestar a lo menos una categoría, o especificar un espaciu de nomes!"
12 | }
--------------------------------------------------------------------------------
/i18n/bs.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "CERminator",
5 | "Seha"
6 | ]
7 | },
8 | "intersection-desc": "Izbacuje listu najčešćih tačaka koje se nalaze u kategoriji ili u sekciji nekoliko kategorija.",
9 | "intersection_toomanycats": "Greška: Previše kategorija!",
10 | "intersection_toofewcats": "Greška: Premalo kategorija!",
11 | "intersection_noresults": "Greška: Nema rezultata!",
12 | "intersection_noincludecats": "Greška: Potrebno je da uključite najmanje jednu kategoriju ili odredite imenski prostor!"
13 | }
--------------------------------------------------------------------------------
/i18n/jv.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Meursault2004"
5 | ]
6 | },
7 | "intersection-desc": "Ngasilaké sawijining daftar item paling anyar ing sawijining kategori utawa gabungan sawetara kategori",
8 | "intersection_toomanycats": "Error: Kakèhan kategori!",
9 | "intersection_toofewcats": "Error: Kesithikan kategori!",
10 | "intersection_noresults": "Error: Ora ana pituwasé (kasilé)!",
11 | "intersection_noincludecats": "Error: Panjenengan perlu minimal mènèhi kategori sawiji, utawa spésifikasi bilik nama sawiji!"
12 | }
--------------------------------------------------------------------------------
/i18n/bg.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "DCLXVI",
5 | "Spiritia"
6 | ]
7 | },
8 | "intersection-desc": "Извежда списък на най-скорошните записи в дадена категория или сечение на няколко категории",
9 | "intersection_toomanycats": "Error: Твърде много категории!",
10 | "intersection_toofewcats": "Error: Твърде малко категории!",
11 | "intersection_noresults": "Error: Няма резултати!",
12 | "intersection_noincludecats": "Error: Необходимо е да се включи поне една категория или да се посочи именно пространство!"
13 | }
--------------------------------------------------------------------------------
/i18n/pt.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "555",
5 | "Malafaya"
6 | ]
7 | },
8 | "intersection-desc": "constrói uma lista pontuada dos itens mais recentes presentes numa categoria, ou uma união de várias categorias",
9 | "intersection_toomanycats": "Error: Categorias em excesso!",
10 | "intersection_toofewcats": "Error: Poucas categorias!",
11 | "intersection_noresults": "Error: Sem resultados!",
12 | "intersection_noincludecats": "Error: É necessário incluir no mínimo uma categoria ou especificar um espaço nominal!"
13 | }
--------------------------------------------------------------------------------
/i18n/el.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Dead3y3"
5 | ]
6 | },
7 | "intersection-desc": "Έχει ως έξοδο μια μη αριθμημένη λίστα των πιο πρόσφατων στοιχείων σε μια κατηγορία, ή μια τομή μερικών κατηγοριών",
8 | "intersection_toomanycats": "Σφάλμα: Πάρα πολλές κατηγορίες!",
9 | "intersection_toofewcats": "Σφάλμα: Πολύ λίγες κατηγορίες!",
10 | "intersection_noresults": "Σφάλμα: Δεν υπάρχουν αποτελέσματα!",
11 | "intersection_noincludecats": "Σφάλμα: Πρέπει να περιλάβετε τουλάχιστον μία κατηγορία, ή να ορίσετε μια περιοχή ονομάτων!"
12 | }
--------------------------------------------------------------------------------
/i18n/gl.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Toliño",
5 | "Xosé"
6 | ]
7 | },
8 | "intersection-desc": "Devolve unha lista punteada dos elementos máis recentes que están nunha categoría ou nunha unión de varias categorías",
9 | "intersection_toomanycats": "Erro: demasiadas categorías!",
10 | "intersection_toofewcats": "Erro: moi poucas categorías!",
11 | "intersection_noresults": "Erro: ningún resultado!",
12 | "intersection_noincludecats": "Erro: ten que incluír unha categoría polo menos ou especificar un espazo de nomes!"
13 | }
--------------------------------------------------------------------------------
/i18n/hu.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Dani",
5 | "Gondnok",
6 | "KossuthRad"
7 | ]
8 | },
9 | "intersection-desc": "Megjeleníti egy adott kategóriában, vagy kategóriák uniójában lévő legújabb szócikkek listáját",
10 | "intersection_toomanycats": "Hiba: Túl sok kategória!",
11 | "intersection_toofewcats": "Hiba: Túl kevés kategória!",
12 | "intersection_noresults": "Hiba: Nincs eredmény!",
13 | "intersection_noincludecats": "Hiba: Legalább egy listázandó kategóriát meg kell adnod, vagy pedig egy névteret!"
14 | }
--------------------------------------------------------------------------------
/i18n/oc.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Cedric31"
5 | ]
6 | },
7 | "intersection-desc": "Aficha una lista, amb de piuses, dels articles mai recents dins una categoria, o a partir d’una combinason de mantuna categoria.",
8 | "intersection_toomanycats": "Error : Tròp de categorias !",
9 | "intersection_toofewcats": "Error : Pas pro de categorias !",
10 | "intersection_noresults": "Error : Pas cap de resultat !",
11 | "intersection_noincludecats": "Error : avètz besonh d’inclure almens una categoria, o de precisar un nom d’espaci !"
12 | }
--------------------------------------------------------------------------------
/i18n/be-tarask.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "EugeneZelenko",
5 | "Jim-by"
6 | ]
7 | },
8 | "intersection-desc": "Выводзіць у маркіраваны сьпіс апошнія дабаўленьні да катэгорыі альбо аб'ядноўвае некалькі катэгорыяў",
9 | "intersection_toomanycats": "Памылка: Зашмат катэгорыяў!",
10 | "intersection_toofewcats": "Памылка: Занадта мала катэгорыяў!",
11 | "intersection_noresults": "Памылка: Няма вынікаў!",
12 | "intersection_noincludecats": "Памылка: Вам неабходна ўключыць хаця б адну катэгорыю альбо ўказаць прастору назваў!"
13 | }
--------------------------------------------------------------------------------
/i18n/frp.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "ChrisPtDe"
5 | ]
6 | },
7 | "intersection-desc": "Afiche una lista de puges des articllos los ples novéls dens una catègorie, ou ben dês una combinèson de plusiors catègories.",
8 | "intersection_toomanycats": "Error : trop de catègories !",
9 | "intersection_toofewcats": "Error : pas prod de catègories !",
10 | "intersection_noresults": "Error : nion rèsultat !",
11 | "intersection_noincludecats": "Error : vos avéd fôta d’encllure u muens yona catègorie, ou ben de spècefiar un èspâço de nom !"
12 | }
--------------------------------------------------------------------------------
/i18n/nb.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Jon Harald Søby"
5 | ]
6 | },
7 | "intersection-desc": "Gir en punktliste over de nyeste elementene i en kategori, eller elementer som er felles i flere kategorier",
8 | "intersection_toomanycats": "Dynamisk sideliste: For mange kategorier!",
9 | "intersection_toofewcats": "Dynamisk sidelist: For få kategorier!",
10 | "intersection_noresults": "Dynamisk sideliste: Ingen resultater!",
11 | "intersection_noincludecats": "Dynamisk sideliste: Du må inkludere minst én kategori, eller oppgi et navnerom!"
12 | }
--------------------------------------------------------------------------------
/i18n/roa-tara.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Joetaras"
5 | ]
6 | },
7 | "intersection-desc": "Fa assè 'na liste cu le palle de le urteme urteme artichele ca stonne jndr'à 'na categorije, o 'n'interseziona de cchiù categorije",
8 | "intersection_toomanycats": "Errore: Troppe categorije!",
9 | "intersection_toofewcats": "Errore: Troppe picche categorije!",
10 | "intersection_noresults": "Errore: Nisciune resultete!",
11 | "intersection_noincludecats": "Errore: Tu è abbesogne de 'ngludere ninde ninde 'na categorije, o specificà 'nu namespace!"
12 | }
--------------------------------------------------------------------------------
/i18n/lb.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Robby"
5 | ]
6 | },
7 | "intersection-desc": "Generéiert eng Lëscht mat de rezentesten Androungen an eng Kategorie, oder an eng Intersektioun vu méi Kategorien",
8 | "intersection_toomanycats": "Dynamesch Säite-Lëscht: Zevill Kategorien!",
9 | "intersection_toofewcats": "Dynamesch Säite-Lëscht: Ze wéineg Kategorien!",
10 | "intersection_noresults": "Dynamesch Säite-Lëscht: Kee Resultat!",
11 | "intersection_noincludecats": "Dynamesch Säite-Lëscht: Dir musst mindestens eng Kategorie abannen, oder de Nummraum uginn!"
12 | }
--------------------------------------------------------------------------------
/i18n/es.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Aleator",
5 | "Remember the dot",
6 | "Sanbec"
7 | ]
8 | },
9 | "intersection-desc": "Devuelve una lista de los elementos más recientes que están en una categoría o en una intersección de varias categorías",
10 | "intersection_toomanycats": "¡Error: Demasiadas categorías!",
11 | "intersection_toofewcats": "Error: ¡Muy pocas categorías!",
12 | "intersection_noresults": "Error: ¡Sin resultados!",
13 | "intersection_noincludecats": "Error: ¡Necesita incluir al menos una categoría, o especificar un espacio de nombres!"
14 | }
--------------------------------------------------------------------------------
/i18n/ml.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Shijualex"
5 | ]
6 | },
7 | "intersection-desc": "ഒരു കാറ്റഗറിയില് പുതിയതായി വന്ന ഇനങ്ങളുടെ ബുള്ളറ്റ് പട്ടികയോ, അല്ലെങ്കില് നിരവധി കാറ്റഗറികളുടെ കൂട്ടത്തെയോ ഔട്ട് പുട്ടായി കിട്ടുന്നു.",
8 | "intersection_toomanycats": "Error: വളരെയധികം കാറ്റഗറികള്!",
9 | "intersection_toofewcats": "Error: വളരെ കുറച്ച് കാറ്റഗറികള്!",
10 | "intersection_noresults": "Error: ഫലങ്ങള് ഒന്നുമില്ല!",
11 | "intersection_noincludecats": "Error: ചുരുങ്ങിയത് ഒരു കാറ്റഗറിയെങ്കിലും ഉള്പ്പെടുത്തുകയോ അല്ലെങ്കില് ഒരു നേംസ്പേസ് എങ്കിലും നിഷ്കര്ഷിച്ചിരിക്കുകയോ വേണം!"
12 | }
--------------------------------------------------------------------------------
/i18n/tl.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "AnakngAraw"
5 | ]
6 | },
7 | "intersection-desc": "Naglalabas ng isang tinuldukang talaan ng pinakakamakailang mga bagay-bagay na naninirahan sa loob ng isang kaurian, o isang pinagsangahang daanan ng ilang mga kaurian",
8 | "intersection_toomanycats": "Kamalian: Napakaraming mga kaurian!",
9 | "intersection_toofewcats": "Kamalian: Napakakaunti ng mga kaurian!",
10 | "intersection_noresults": "Kaurian: Walang mga kinalabasan/resulta!",
11 | "intersection_noincludecats": "Kamalian: Kinakailangan mong magsama ng kahit na isang kaurian, o tumukoy ng isang espasyo ng pangalan!"
12 | }
--------------------------------------------------------------------------------
/.phpcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
Extension:DynamicPageList (DPL), version ' . DPL_VERSION . ': ' . $text . '
'; 77 | } 78 | return false; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /i18n/yue.json: -------------------------------------------------------------------------------- 1 | { 2 | "@metadata": { 3 | "authors": [ 4 | "Shinjiman" 5 | ] 6 | }, 7 | "intersection-desc": "輸出一個點列最近響分類嘅項目,或者係幾個分類嘅一個聯繫", 8 | "intersection_toomanycats": "DynamicPageList: 太多分類!", 9 | "intersection_toofewcats": "DynamicPageList: 太少分類!", 10 | "intersection_noresults": "DynamicPageList: 無結果!", 11 | "intersection_noincludecats": "DynamicPageList: 你需要去包含最少一個分類,或者指定一個空間名!", 12 | "dpl-desc": "一個畀MediaWiki嘅高彈性報告產生器", 13 | "dpl_log_1": "錯誤: 錯嘅 '$0' 參數: '$1'! 幫助:$0= 空字串 (主)$3。",
14 | "dpl_log_3": "錯誤: 太多分類! 最大值: $0。 幫助: 增加 DynamicPageListHooks::$maxCategoryCount 嘅值去指定更多嘅分類或者設定 DynamicPageListHooks::$allowUnlimitedCategories=true 以解除限制。 (當加上 DynamicPageList.php之後,響LocalSettings.php度設定變數。)",
15 | "dpl_log_4": "錯誤: 太少分類! 最小值: $0. 幫助: 減少 DynamicPageListHooks::$minCategoryCount 嘅值去指定更少嘅分類。 (當加上 DynamicPageList.php之後,響LocalSettings.php度設定一個合適嘅變數。)",
16 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
17 | "dpl_log_6": "錯誤: 如果你想去用 'addfirstcategorydate=true' 或者 'ordermethod=categoryadd' ,你需要包含最少一個分類!",
18 | "dpl_log_7": "錯誤: 如果你包含多過一個分類,你唔可以用 'addfirstcategorydate=true' 或者 'ordermethod=categoryadd'!",
19 | "dpl_log_8": "錯誤: 你唔可以響一個時間度加入多個一種嘅日期!",
20 | "dpl_log_9": "錯誤: 你只可以用 'ordermethod=[...,]$1' 響 '$0' 上!",
21 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
22 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
23 | "dpl_log_13": "警告: 不明嘅參數 '$1' 被忽略。 幫助: 可用嘅參數: $2。",
24 | "dpl_log_14": "警告: 錯誤嘅 '$0' 參數: '$1'! 用緊預設嘅: '$2'。 幫助: $0= $3。",
25 | "dpl_log_15": "警告: 錯誤嘅 '$0' 參數: '$1'! 用緊預設嘅: '$2' (冇上限)。 幫助: $0= 空字串 (冇上限) | n, n係一個正整數。",
26 | "dpl_log_16": "警告: 無結果!",
27 | "dpl_log_17": "警告: 加入* 參數 ('adduser', 'addeditdate', 等)' 係對 'mode=category' 冇作用嘅。只有頁空間名/標題至可以響呢個模式度睇到。",
28 | "dpl_log_18": "警告: 響單一部件中, 'ordermethod' 度用 'headingmode=$0' 係冇作用嘅。 用緊: '$1'。 幫助: 你可以用非$1 'headingmode' 數值,響多個部件中用 'ordermethod' 。第一個部件係用嚟做標題。例如響分類標題度用 'ordermethod=category,comp' (comp係另外一個部件) 。",
29 | "dpl_log_19": "警告: 'debug=$0' 唔係第一個響DPL元素嘅第一位。新嘅除錯設定響所有參數都能夠處理同檢查之前都唔會應用。",
30 | "dpl_log_21": "查訽: $0",
31 | "dpl_articlecount": "響呢個標題度有$1篇文。"
32 | }
--------------------------------------------------------------------------------
/i18n/zh-hans.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Shinjiman"
5 | ]
6 | },
7 | "intersection-desc": "输出一个点列最近在分类中的项目,或者系数个分类的一个联系",
8 | "intersection_toomanycats": "DynamicPageList: 太多分类!",
9 | "intersection_toofewcats": "DynamicPageList: 太少分类!",
10 | "intersection_noresults": "DynamicPageList: 没有结果!",
11 | "intersection_noincludecats": "DynamicPageList: 您需要去包含最少一个分类,或者指定一个空间名!",
12 | "dpl-desc": "一个给MediaWiki的高弹性报告产生器",
13 | "dpl_log_1": "错误: 错误的 '$0' 参数: '$1'! 帮助: $0= 空白字符串 (主)$3。",
14 | "dpl_log_3": "错误: 过多分类! 最大值: $0。 帮助: 增加 DynamicPageListHooks::$maxCategoryCount 的值去指定更多的分类或设定 DynamicPageListHooks::$allowUnlimitedCategories=true 以解除限制。 (当加上 DynamicPageList.php后,在LocalSettings.php中设定变量。)",
15 | "dpl_log_4": "错误: 过少分类! 最小值: $0。 帮助: 减少 DynamicPageListHooks::$minCategoryCount 的值去指定更少的分类。 (当加上 DynamicPageList.php后,在LocalSettings.php中设定一个合适的变量。)",
16 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
17 | "dpl_log_6": "错误: 如果您想用 'addfirstcategorydate=true' 或 'ordermethod=categoryadd' ,您需要包含最少一个分类!",
18 | "dpl_log_7": "错误: 如果您包含多一个分类,您不可以用 'addfirstcategorydate=true' 或 'ordermethod=categoryadd'!",
19 | "dpl_log_8": "错误: 您不可以在一个时间里加入多于一种的日期!",
20 | "dpl_log_9": "错误: 你只可以用 'ordermethod=[...,]$1' 在 '$0' 上!",
21 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
22 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
23 | "dpl_log_13": "警告: 不明的参数 '$1' 被忽略。 帮助: 可用的参数: $2。",
24 | "dpl_log_14": "警告: 错误的 '$0' 参数: '$1'! 正在使用默认值: '$2'。 帮助: $0= $3。",
25 | "dpl_log_15": "警告: 错误的 '$0' 参数: '$1'! 正在使用默认值: '$2' (没有上限)。 帮助: $0= 空白字符串 (没有上限) | n, n是一个正整数。",
26 | "dpl_log_16": "警告: 无结果!",
27 | "dpl_log_17": "警告: 加入* 参数 ('adduser', 'addeditdate', 等)' 是对 'mode=category' 没有作用。只有页面空间名/标题才可以在这个模式度看到。",
28 | "dpl_log_18": "警告: 在单一部件中, 'ordermethod' 用 'headingmode=$0' 是没有作用的。 正在使用: '$1'。 帮助: 你可以用非$1 'headingmode' 数值,在多个部件中用 'ordermethod' 。第一个部是用来作标题。例如在分类标题中用 'ordermethod=category,comp' (comp是另外一个部件) 。",
29 | "dpl_log_19": "警告: 'debug=$0' 不是第一个在DPL元素嘅第一位置。新的除错设定在所有参数都能处理和检查前都不会应用。",
30 | "dpl_log_21": "查訽: $0",
31 | "dpl_articlecount": "在这个标题中有$1篇条目。"
32 | }
--------------------------------------------------------------------------------
/i18n/zh-hant.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Shinjiman"
5 | ]
6 | },
7 | "intersection-desc": "輸出一個點列最近在分類中的項目,或者係數個分類的一個聯繫",
8 | "intersection_toomanycats": "DynamicPageList: 太多分類!",
9 | "intersection_toofewcats": "DynamicPageList: 太少分類!",
10 | "intersection_noresults": "DynamicPageList: 沒有結果!",
11 | "intersection_noincludecats": "DynamicPageList: 您需要去包含最少一個分類,或者指定一個空間名!",
12 | "dpl-desc": "一個給MediaWiki的高彈性報告產生器",
13 | "dpl_log_1": "錯誤: 錯誤的 '$0' 參數: '$1'! 說明: $0= 空白字串 (主)$3。",
14 | "dpl_log_3": "錯誤: 過多分類! 最大值: $0。 說明: 增加 DynamicPageListHooks::$maxCategoryCount 的值去指定更多的分類或設定 DynamicPageListHooks::$allowUnlimitedCategories=true 以解除限制。 (當加上 DynamicPageList.php後,在LocalSettings.php中設定變數。)",
15 | "dpl_log_4": "錯誤: 過少分類! 最小值: $0。 說明: 減少 DynamicPageListHooks::$minCategoryCount 的值去指定更少的分類。 (當加上 DynamicPageList.php後,在LocalSettings.php中設定一個合適的變數。)",
16 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
17 | "dpl_log_6": "錯誤: 如果您想用 'addfirstcategorydate=true' 或 'ordermethod=categoryadd' ,您需要包含最少一個分類!",
18 | "dpl_log_7": "錯誤: 如果您包含多一個分類,您不可以用 'addfirstcategorydate=true' 或 'ordermethod=categoryadd'!",
19 | "dpl_log_8": "錯誤: 您不可以在一個時間裡加入多於一種的日期!",
20 | "dpl_log_9": "錯誤: 你只可以用 'ordermethod=[...,]$1' 在 '$0' 上!",
21 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
22 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
23 | "dpl_log_13": "警告: 不明的參數 '$1' 被忽略。 說明: 可用的參數: $2。",
24 | "dpl_log_14": "警告: 錯誤的 '$0' 參數: '$1'! 正在使用預設值: '$2'。 說明: $0= $3。",
25 | "dpl_log_15": "警告: 錯誤的 '$0' 參數: '$1'! 正在使用預設值: '$2' (沒有上限)。 說明: $0= 空白字串 (沒有上限) | n, n是一個正整數。",
26 | "dpl_log_16": "警告: 無結果!",
27 | "dpl_log_17": "警告: 加入* 參數 ('adduser', 'addeditdate', 等)' 是對 'mode=category' 沒有作用。只有頁面空間名/標題才可以在這個模式度看到。",
28 | "dpl_log_18": "警告: 在單一部件中, 'ordermethod' 用 'headingmode=$0' 是沒有作用的。 正在使用: '$1'。 說明: 你可以用非$1 'headingmode' 數值,在多個部件中用 'ordermethod' 。第一個部是用來作標題。例如在分類標題中用 'ordermethod=category,comp' (comp是另外一個部件) 。",
29 | "dpl_log_19": "警告: 'debug=$0' 不是第一個在DPL元素嘅第一位置。新的除錯設定在所有參數都能處理和檢查前都不會應用。",
30 | "dpl_log_21": "查訽: $0",
31 | "dpl_articlecount": "在這個標題中有$1篇條目。"
32 | }
--------------------------------------------------------------------------------
/classes/heading/TieredHeading.php:
--------------------------------------------------------------------------------
1 | ';
23 |
24 | /**
25 | * List(Section) End
26 | *
27 | * @var string
28 | */
29 | public $listEnd = '$0= lege string (Main)$3.",
14 | "dpl_log_2": "FOUT: Te veel categoriën! Maximum: $0. Hulp: verhoog DynamicPageListHooks::$maxCategoryCount om meer categorieën op te kunnen geven of stel geen limiet in met DynamicPageListHooks::$allowUnlimitedCategories=true. (Neem deze variabele op in LocalSettings.php, na het toevoegen van DynamicPageList.php.)",
15 | "dpl_log_3": "FOUT: Te weinig categorieën! Minimum: $0. Hulp: verlaag DynamicPageListHooks::$minCategoryCount om minder categorieën aan te hoeven geven. (Stel de variabele bij voorkeur in via LocalSettings.php, na het toevoegen van DynamicPageList.php.)",
16 | "dpl_log_4": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
17 | "dpl_log_5": "FOUT: U dient tenminste één categorie op te nemen als u 'addfirstcategorydate=true' of 'ordermethod=categoryadd' wilt gebruiken!",
18 | "dpl_log_6": "FOUT: Als u meer dan één categorie opneemt, kunt u 'addfirstcategorydate=true' of 'ordermethod=categoryadd' niet gebruiken!",
19 | "dpl_log_8": "FOUT: U kunt niet meer dan één type of datum tegelijk gebruiken!",
20 | "dpl_log_9": "FOUT: U kunt '$0' alleen met 'ordermethod=[...,]$1' gebruiken!",
21 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
22 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
23 | "dpl_log_14": "WAARSCHUWING: Verkeerde parameter '$0': '$1'! Nu wordt de standaard gebruikt: '$2'. Hulp: $0= $3.",
24 | "dpl_log_16": "WAARSCHUWING: Geen resultaten!",
25 | "dpl_log_17": "WAARSCHUWING: Add* parameters ('adduser', 'addeditdate', etc.)' heeft geen effect bij 'mode=category'. Alleen de paginanaamruimte/titel is in deze modus te bekijken.",
26 | "dpl_log_18": "WAARSCHUWING: 'headingmode=$0' heeft geen effect met 'ordermethod' op een enkele component. Nu wordt gebruikt: '$1'. Hulp: u kunt een niet-$1 'headingmode'-waarde gebruiken met 'ordermethod' op meerdere componenten. De eerste component wordt gebruikt als kop. Bijvoorbeeld 'ordermethod=category,comp' (comp is een ander component) voor categoriekoppen.",
27 | "dpl_log_19": "WAARSCHUWING: 'debug=$0' is niet de eerste positie in het DPL-element. De nieuwe debuginstellingen zijn niet toegepast voor alle voorgaande parameters zijn verwerkt en gecontroleerd.",
28 | "dpl_log_21": "QUERY: $0",
29 | "dpl_articlecount": "Er {{PLURAL:$1|is één pagina|zijn $1 pagina's}} onder deze kop."
30 | }
--------------------------------------------------------------------------------
/i18n/sr-el.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Millosh"
5 | ]
6 | },
7 | "dpl_log_1": "GREŠKA: Pogrean '$0' parametar: '$1'! Pomoć: $0= pogrešan string (Glavno)$3. (Ekvivalenti sa magičnim rečima su takođe dozvoljeni.)",
8 | "dpl_log_2": "GREŠKA: Pogrešan '$0' parametar: '$1'! Pomoć: $0= puno ime stranice. (Magične reči su dozvoljene.)",
9 | "dpl_log_3": "GREŠKA: Previše kategorija! Maksimum je: $0. Pomoć: povećajte DynamicPageListHooks::$maxCategoryCount kako biste postavili više kategorija ili promenite DynamicPageListHooks::$allowUnlimitedCategories=true za bez granica. (Podesite varijablu u LocalSettings.php, nakon uključivanja DynamicPageList.php.)",
10 | "dpl_log_4": "GREŠKA: Premalo kategorija! Minimum je: $0. Pomoć: povećajte DynamicPageListHooks::$minCategoryCount kako biste postavili manje kategorija. (Podesite varijablu u LocalSettings.php, nakon uključivanja DynamicPageList.php.)",
11 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
12 | "dpl_log_6": "GREŠKA: Morate uključiti bar jednu kategoriju ukoliko želite da koristite 'addfirstcategorydate=true' ili 'ordermethod=categoryadd'!",
13 | "dpl_log_7": "GREŠKA: Ukoliko uključujete više od jedne kategorije, ne možete koristiti 'addfirstcategorydate=true' ili 'ordermethod=categoryadd'!",
14 | "dpl_log_8": "GREŠKA: Ne možete dodati više od jednog tipa datuma!",
15 | "dpl_log_9": "GREŠKA: Možete koristiti '$0' sa 'ordermethod=[...,]$1' isključivo!",
16 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
17 | "dpl_log_11": "GREŠKA: Nemoguće izvršiti operaciju na nekategorizovanim stranicama (npr. sa 'category' parametrom) zato što $0 pregled ne postoji u bazi podataka! Pomoć: neka administrator baze izvrši ovaj upit: $1.",
18 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
19 | "dpl_log_13": "PAŽNJA: Nepoznat parametar '$1' je ignorisan. Pomoć: dostupni parametri su: $2.",
20 | "dpl_log_14": "PAŽNJA: Pogrešan '$0' parametar: '$1'! Koristi se osnovni: '$2'. Pomoć: $0= $3.",
21 | "dpl_log_15": "PAŽNJA: Pogrešan '$0' parametar: '$1'! Koristi se osnovni: '$2' (bez granice). Pomoć: $0= prazan string (bez granice) | n, s n je pozitivan integer.",
22 | "dpl_log_16": "PAŽNJA: Nema rezultata!",
23 | "dpl_log_17": "PAŽNJA: Dodavanje* parametara ('adduser', 'addeditdate', itd.)' i 'includepage' nema efekta sa 'mode=category'. Isključivo ime stranice/imenski prostor mogu da se vide u ovom modu.",
24 | "dpl_log_18": "PAŽNJA: 'headingmode=$0' nema efekta sa 'ordermethod' na jednoj komponenti. Koristi se: '$1'. Pomoć: ne morate koristiti-$1 'headingmode' podatke 'ordermethod' na više komponenti. Prva komponenta se koristi za naslov. Npr. 'ordermethod=category,komponenta' (komponenta je druga komponenta) za naslove kategorija.",
25 | "dpl_log_19": "PAŽNJA: 'debug=$0' nije na prvom mestu u DPL elementu. Nova debag podešavanja nisu primenjena pre svih parametara koji su provereni",
26 | "dpl_log_20": "PAŽNJA: Beskonačna petljasa stranice '$0'.",
27 | "dpl_log_21": "UPIT: $0",
28 | "dpl_articlecount": "U ovom naslovu se trenutno nalazi {{PLURAL:$1|jedan članak|$1 članka|$1 članaka}}"
29 | }
--------------------------------------------------------------------------------
/classes/Variables.php:
--------------------------------------------------------------------------------
1 | = 3 && $arg[2] == '') {
33 | $start = 3;
34 | } else {
35 | $start = 2;
36 | }
37 | for ($i = $start; $i < $numargs; $i++) {
38 | $var = $arg[$i];
39 | if (++$i <= $numargs - 1) {
40 | self::$memoryVar[$var] = $arg[$i];
41 | } else {
42 | self::$memoryVar[$var] = '';
43 | }
44 | }
45 | return '';
46 | }
47 |
48 | public static function setVarDefault($arg) {
49 | $numargs = count($arg);
50 | if ($numargs > 3) {
51 | $value = $arg[3];
52 | } else {
53 | return '';
54 | }
55 | $var = $arg[2];
56 | if (!array_key_exists($var, self::$memoryVar) || self::$memoryVar[$var] == '') {
57 | self::$memoryVar[$var] = $value;
58 | }
59 | return '';
60 | }
61 |
62 | public static function getVar($var) {
63 | if (array_key_exists($var, self::$memoryVar)) {
64 | return self::$memoryVar[$var];
65 | }
66 | return '';
67 | }
68 |
69 | public static function setArray($arg) {
70 | $numargs = count($arg);
71 | if ($numargs < 5) {
72 | return '';
73 | }
74 | $var = trim($arg[2]);
75 | $value = $arg[3];
76 | $delimiter = $arg[4];
77 | if ($var == '') {
78 | return '';
79 | }
80 | if ($value == '') {
81 | self::$memoryArray[$var] = [];
82 | return;
83 | }
84 | if ($delimiter == '') {
85 | self::$memoryArray[$var] = [
86 | $value
87 | ];
88 | return;
89 | }
90 | if (0 !== strpos($delimiter, '/') || (strlen($delimiter) - 1) !== strrpos($delimiter, '/')) {
91 | $delimiter = '/\s*' . $delimiter . '\s*/';
92 | }
93 | self::$memoryArray[$var] = preg_split($delimiter, $value);
94 | return "value={$value}, delimiter={$delimiter}," . count(self::$memoryArray[$var]);
95 | }
96 |
97 | public static function dumpArray($arg) {
98 | $numargs = count($arg);
99 | if ($numargs < 3) {
100 | return '';
101 | }
102 | $var = trim($arg[2]);
103 | $text = " array {$var} = {";
104 | $n = 0;
105 | if (array_key_exists($var, self::$memoryArray)) {
106 | foreach (self::$memoryArray[$var] as $value) {
107 | if ($n++ > 0) {
108 | $text .= ', ';
109 | }
110 | $text .= "{$value}";
111 | }
112 | }
113 | return $text . "}\n";
114 | }
115 |
116 | public static function printArray($var, $delimiter, $search, $subject) {
117 | $var = trim($var);
118 | if ($var == '') {
119 | return '';
120 | }
121 | if (!array_key_exists($var, self::$memoryArray)) {
122 | return '';
123 | }
124 | $values = self::$memoryArray[$var];
125 | $rendered_values = [];
126 | foreach ($values as $v) {
127 | $temp_result_value = str_replace($search, $v, $subject);
128 | $rendered_values[] = $temp_result_value;
129 | }
130 | return [
131 | implode($delimiter, $rendered_values),
132 | 'noparse' => false,
133 | 'isHTML' => false
134 | ];
135 | }
136 | }
137 |
--------------------------------------------------------------------------------
/extension.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "DynamicPageList3",
3 | "version": "3.3.3",
4 | "author": [
5 | "[http://de.wikipedia.org/wiki/Benutzer:Algorithmix Gero Scholz]",
6 | "Alexia E. Smith"
7 | ],
8 | "url": "https://www.mediawiki.org/wiki/Extension:DynamicPageList3",
9 | "descriptionmsg": "dpl-desc",
10 | "license-name": "GPL-2.0-or-later",
11 | "type": "parserhook",
12 | "requires": {
13 | "MediaWiki": ">= 1.27.4"
14 | },
15 | "GroupPermissions": {
16 | "sysop": {
17 | "dpl_param_update_rules": true,
18 | "dpl_param_delete_rules": true
19 | }
20 | },
21 | "AvailableRights": [
22 | "dpl_param_update_rules",
23 | "dpl_param_delete_rules"
24 | ],
25 | "MessagesDirs": {
26 | "DynamicPageList": [
27 | "i18n"
28 | ]
29 | },
30 | "ExtensionMessagesFiles": {
31 | "DynamicPageListMagic": "DynamicPageList.i18n.magic.php"
32 | },
33 | "AutoloadClasses": {
34 | "DPL\\Article": "classes/Article.php",
35 | "DPL\\Config": "classes/Config.php",
36 | "DPL\\DB\\CreateTemplateUpdateMaintenance": "classes/db/CreateTemplateUpdateMaintenance.php",
37 | "DPL\\Heading\\DefinitionHeading": "classes/heading/DefinitionHeading.php",
38 | "DPL\\Heading\\Heading": "classes/heading/Heading.php",
39 | "DPL\\Heading\\OrderedHeading": "classes/heading/OrderedHeading.php",
40 | "DPL\\Heading\\TieredHeading": "classes/heading/TieredHeading.php",
41 | "DPL\\Heading\\UnorderedHeading": "classes/heading/UnorderedHeading.php",
42 | "DPL\\Lister\\CategoryList": "classes/lister/CategoryList.php",
43 | "DPL\\Lister\\DefinitionList": "classes/lister/DefinitionList.php",
44 | "DPL\\Lister\\GalleryList": "classes/lister/GalleryList.php",
45 | "DPL\\Lister\\InlineList": "classes/lister/InlineList.php",
46 | "DPL\\Lister\\Lister": "classes/lister/Lister.php",
47 | "DPL\\Lister\\OrderedList": "classes/lister/OrderedList.php",
48 | "DPL\\Lister\\SubPageList": "classes/lister/SubPageList.php",
49 | "DPL\\Lister\\UnorderedList": "classes/lister/UnorderedList.php",
50 | "DPL\\Lister\\UserFormatList": "classes/lister/UserFormatList.php",
51 | "DPL\\Logger": "classes/Logger.php",
52 | "DPL\\LST": "classes/LST.php",
53 | "DPL\\Parameters": "classes/Parameters.php",
54 | "DPL\\ParametersData": "classes/ParametersData.php",
55 | "DPL\\Parse": "classes/Parse.php",
56 | "DPL\\Query": "classes/Query.php",
57 | "DPL\\UpdateArticle": "classes/UpdateArticle.php",
58 | "DPL\\Variables": "classes/Variables.php",
59 | "DynamicPageListHooks": "DynamicPageListHooks.php"
60 | },
61 | "Hooks": {
62 | "ParserFirstCallInit": [
63 | "DynamicPageListHooks::onParserFirstCallInit"
64 | ],
65 | "LoadExtensionSchemaUpdates": [
66 | "DynamicPageListHooks::onLoadExtensionSchemaUpdates"
67 | ]
68 | },
69 | "config": {
70 | "DplSettings": {
71 | "allowedNamespaces": null,
72 | "allowUnlimitedCategories": false,
73 | "allowUnlimitedResults": false,
74 | "behavingLikeIntersection": false,
75 | "categoryStyleListCutoff": 6,
76 | "fixedCategories": [],
77 | "functionalRichness": 3,
78 | "maxCategoryCount": 4,
79 | "minCategoryCount": 0,
80 | "maxResultCount": 500,
81 | "recursiveTagParse": false,
82 | "runFromProtectedPagesOnly": false,
83 | "handleSectionTag": false,
84 | "alwaysCacheResults": false
85 | }
86 | },
87 | "TrackingCategories": [
88 | "dpl-tag-tracking-category",
89 | "dpl-intersection-tracking-category",
90 | "dpl-parserfunc-tracking-category",
91 | "dplnum-parserfunc-tracking-category",
92 | "dplvar-parserfunc-tracking-category",
93 | "dplreplace-parserfunc-tracking-category",
94 | "dplchapter-parserfunc-tracking-category",
95 | "dplmatrix-parserfunc-tracking-category"
96 | ],
97 | "callback": "DynamicPageListHooks::onRegistration",
98 | "manifest_version": 1
99 | }
100 |
--------------------------------------------------------------------------------
/i18n/he.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Rotem Liss"
5 | ]
6 | },
7 | "intersection-desc": "רשימה עם תבליטים של הפריטים האחרונים המצויים בקטגוריה, או במספר קטגוריות",
8 | "intersection_toomanycats": "DynamicPageList: קטגוריות רבות מדי!",
9 | "intersection_toofewcats": "DynamicPageList: קטגוריות מעטות מדי!",
10 | "intersection_noresults": "DynamicPageList: אין תוצאות!",
11 | "intersection_noincludecats": "DynamicPageList: עליכם לכלול לפחות קטגוריה אחת, או לציין מרחב שם!",
12 | "dpl_log_1": "שגיאה: פרמטר '$0' שגוי: '$1'! עזרה: $0= מחרוזת ריקה (ראשי)$3. (ניתן להשתמש גם בשווי ערך באמצעות מילות קסם.)",
13 | "dpl_log_2": "שגיאה: פרמטר '$0' שגוי: '$1'! עזרה: $0= שם הדף המלא. (ניתן להשתמש במילות קסם.)",
14 | "dpl_log_3": "שגיאה: קטגוריות רבות מדי! מקסימום: $0. עזרה: העלו את DynamicPageListHooks::$maxCategoryCount כדי לציין עוד קטגוריות או הגדירו DynamicPageListHooks::$allowUnlimitedCategories=true כדי לבטל את ההגבלה. (הגידרו את המשתנה בקובץ LocalSettings.php, לאחר הכללת DynamicPageList.php.)",
15 | "dpl_log_4": "שגיאה: קטגוריות מעטות מדי! מינימום: $0. עזרה: הורידו את DynamicPageListHooks::$minCategoryCount כדי לציין פחות קטגוריות. (הגידרו את המשתנה בקובץ LocalSettings.php, לאחר הכללת DynamicPageList.php.)",
16 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
17 | "dpl_log_6": "שגיאה: עליכם להכליל לפחות קטגוריה אחת אם ברצונכם להשתמש ב־'addfirstcategorydate=true' או ב־'ordermethod=categoryadd'!",
18 | "dpl_log_7": "שגיאה: אם אתם מכלילים יותר מקטגוריה אחת, אינכם יכולים להשתמש ב־'addfirstcategorydate=true' או ב־'ordermethod=categoryadd'!",
19 | "dpl_log_8": "שגיאה: אינכם יכולים להוסיף יותר מסוג אחד של תאריך בו זמנית!",
20 | "dpl_log_9": "?????: ????????? ?????? ??'$0' ?? 'ordermethod=[...,]$1' ????!",
21 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
22 | "dpl_log_11": "שגיאה: לא ניתן לבצע פעולות לוגיות על דפים ללא קטגוריות (למשל, עם הפרמטר 'קטגוריה') כיוון שתצוגת $0 אינה קיימת במסד הנתונים! עזרה: מנהל מסד הנתונים צריך להריץ את השאילתה: $1.",
23 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
24 | "dpl_log_13": "אזהרה: בוצעה התעלמות מהפרמטר הלא ידוע '$1'. עזרה: פרמטרים זמינים: $2.",
25 | "dpl_log_14": "אזהרה: פרמטר '$0' שגוי: '$1'! משתמש בברירת המחדל: '$2'. עזרה: $0= $3.",
26 | "dpl_log_15": "אזהרה: פרמטר '$0' שגוי: '$1'! משתמש בברירת המחדל: '$2' (ללא הגבלה). עזרה: $0= מחרוזת ריקה (ללא הגבלה) | n, עם n כמספר שלם וחיובי.",
27 | "dpl_log_16": "?????: ??? ??????!",
28 | "dpl_log_17": "אזהרה: להוספת* הפרמטרים ('adduser', 'addeditdate' וכדומה) וכן ל־'includepage' אין השפעה עם 'mode=category'. ניתן לצפות רק במרחב השם או בכותרת הדף במצב זה.",
29 | "dpl_log_18": "אזהרה: ל־'headingmode=$0' אין השפעה עם 'ordermethod' על פריט יחיד. משתמש ב: '$1'. עזרה: באפשרותכם להשתמש בערכים של 'headingmode' שאינם $1 עם 'ordermethod' על פריטים מרובים. משתמשים בפריט הראשון לכותרת. למשל, 'ordermethod=category,comp' (comp הוא פריט אחר) לכותרות הקטגוריה.",
30 | "dpl_log_19": "אזהרה: 'debug=$0w הוא לא במקום הראשון ברכיב ה־DPL. הגדרות ניפוי השגיאות החדשות לא יחולו לפני שכל הפרמטרים הקודמים ינותחו וייבדקו.",
31 | "dpl_log_20": "אזהרה: לולאת הכללה אינסופית נוצרה בדף '$0'.",
32 | "dpl_log_21": "שאילתה: $0",
33 | "dpl_articlecount": "{{PLURAL:$1|ישנם $1 דפים|ישנו דף אחד}} תחת כותרת זו."
34 | }
--------------------------------------------------------------------------------
/i18n/ru.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Александр Сигачёв"
5 | ]
6 | },
7 | "intersection-desc": "Выводит в маркированный список последние добавления в категорию или объединение нескольких категорий",
8 | "intersection_toomanycats": "Error: слишком много категорий!",
9 | "intersection_toofewcats": "Error: слишком мало категорий!",
10 | "intersection_noresults": "Error: нет результатов!",
11 | "intersection_noincludecats": "Error: вы должны включить хотя бы одну категорию или указать пространство имён!",
12 | "dpl_log_1": "ОШИБКА: неправильный «$0»-параметр: «$1»! Подсказка: $0= пустая строка (Основное)$3.",
13 | "dpl_log_3": "ОШИБКА: слишком много категорий! Максимум: $0. Подсказка: увеличте DynamicPageListHooks::$maxCategoryCount чтобы разрешить больше категорий или установите DynamicPageListHooks::$allowUnlimitedCategories=true для снятия ограничения. (Устанавливайте переменные в LocalSettings.php, после подключения DynamicPageList.php.)",
14 | "dpl_log_4": "ОШИБКА: слишком мало категорий! Минимум: $0. Подсказка: уменьшите DynamicPageListHooks::$minCategoryCount чтобы разрешить меньше категорий. (Устанавливайте переменную в LocalSettings.php, после подключения DynamicPageList.php.)",
15 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
16 | "dpl_log_6": "ОШИБКА: вы должны включить хотя бы одну категорию, если вы хотите использовать «addfirstcategorydate=true» или «ordermethod=categoryadd»!",
17 | "dpl_log_7": "ОШИБКА: если вы включаете больше одной категории, то вы не можете использовать «addfirstcategorydate=true» или «ordermethod=categoryadd»!",
18 | "dpl_log_8": "ОШИБКА: вы не можете добавить более одного типа данных за раз!",
19 | "dpl_log_9": "ОШИБКА: вы можете использовать «$0» только с «ordermethod=[...,]$1»!",
20 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
21 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
22 | "dpl_log_13": "ПРЕДУПРЕЖДЕНИЕ: неизвестный параметр «$1» проигнорирован. Подсказка: доступные параметры: $2.",
23 | "dpl_log_14": "ПРЕДУПРЕЖДЕНИЕ: неправильный параметр «$0»: «$1»! Использование параметра по умолчанию: «$2». Подсказка: $0= $3.",
24 | "dpl_log_15": "ПРЕДУПРЕЖДЕНИЕ: неправильный параметр «$0»: «$1»! Использование параметра по умолчанию: «$2» (без ограничений). Подсказка: $0= пустая строка (без ограничений) | n, с n равным положительному целому числу.",
25 | "dpl_log_16": "ПРЕДУПРЕЖДЕНИЕ: не найдено!",
26 | "dpl_log_17": "ПРЕДУПРЕЖДЕНИЕ: Добавление* параметров («adduser», «addeditdate», и др.) не действительны с «mode=category». Только пространства имён или названия могут просматриваться в этом режиме.",
27 | "dpl_log_18": "ПРЕДУПРЕЖДЕНИЕ: «headingmode=$0» не действителен с «ordermethod» в одном компоненте. Использование: «$1». Подсказка: вы можете использоватьe не-$1 «headingmode» значения с «ordermethod» во множестве компонентов. Первый компонент используется для заголовков. Например, «ordermethod=category,comp» (comp является другим компонентом) для заголовков категорий.",
28 | "dpl_log_19": "ПРЕДУПРЕЖДЕНИЕ: «debug=$0» не находится на первом месте в DPL-элементе. Новые настройки отладки не будут применены пока все предыдущие параметры не будут разобраны и проверены.",
29 | "dpl_log_21": "ЗАПРОС: $0",
30 | "dpl_articlecount": "В этом заголовке $1 {{PLURAL:$1|статья|статьи|статей}}."
31 | }
--------------------------------------------------------------------------------
/i18n/sk.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Helix84"
5 | ]
6 | },
7 | "intersection-desc": "Vypíše zoznam najnovších položiek v kategórii alebo zjednotení niekoľkých kategórií",
8 | "intersection_toomanycats": "Error: Príliš veľa kategórií!",
9 | "intersection_toofewcats": "Error: Príliš málo kategórií!",
10 | "intersection_noresults": "Error: Žiadne výsledky!",
11 | "intersection_noincludecats": "Error: Musíte uviesť aspoň jednu kategóriu alebo menný priestor!",
12 | "dpl_log_1": "CHYBA: nesprávny parameter '$0': '$1'! Pomocník $0= prázdny retazec (Hlavný)$3.",
13 | "dpl_log_2": "CHYBA: Zlý parameter '$0': '$1'! Pomocník $0= plný názov stránky.",
14 | "dpl_log_3": "CHYBA: Príli vela kategórií! Maximum: $0. Pomocník: zväcite DynamicPageListHooks::$maxCategoryCount, aby ste mohli pecifikovat viac kategórií alebo nastavte DynamicPageListHooks::$allowUnlimitedCategories=true pre vypnutie limitu. (Premennú nastatavte v LocalSettings.php, potom ako bol includovaný DynamicPageList.php.)",
15 | "dpl_log_4": "CHYBA: Príli málo kategórií! Minimum: $0. Pomocník: zníte DynamicPageListHooks::$minCategoryCount, aby ste mohli pecifikovat menej kategórií. (Premennú nastavte najlepie v LocalSettings.php potom, ako v nom bol includovaný DynamicPageList.php.)",
16 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
17 | "dpl_log_6": "CHYBA: Musíte uviest aspon jednu kategóriu ak chcete pouit 'addfirstcategorydate=true' alebo 'ordermethod=categoryadd'!",
18 | "dpl_log_7": "CHYBA: Ak zahrniete viac ako jednu kategóriu, nemôete pouit 'addfirstcategorydate=true' alebo 'ordermethod=categoryadd'!",
19 | "dpl_log_8": "CHYBA: Nemôete naraz pridat viac ako jeden typ dátumu!",
20 | "dpl_log_9": "CHYBA: '$0' môete pouit iba s 'ordermethod=[...,]$1'!",
21 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
22 | "dpl_log_11": "CHYBA: Nie je momoné vykonávat logické operácie na nekategorizovaných kategóriách (napr. s parametrom 'Kategória') lebo neexistuje na databázu pohlad $0! Pomocník: nech admin databázy vykoná tento dotaz: $1.",
23 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
24 | "dpl_log_13": "VAROVANIE: Neznámy parameter '$1' ignorovaný. Pomocník: dostupné parametre: $2.",
25 | "dpl_log_14": "VAROVANIE: Nesprávny '$0' parameter: '$1'! Pouívam tandardný '$2'. Pomocník: $0= $3.",
26 | "dpl_log_15": "VAROVANIE: Nesprávny parameter '$0': '$1'! Pouívam tandardný: '$2' (bez obmedzenia). Pomocník: $0= prázdny retazec (bez obmedzenia) | n, s kladným celým císlom n.",
27 | "dpl_log_16": "VAROVANIE: No results!",
28 | "dpl_log_17": "VAROVANIE: Parametre Add* ('adduser', 'addeditdate', atd' nepracujú s mode=category'. V tomto reime je moné prehliadat iba menná priestor/titulok stránky.",
29 | "dpl_log_18": "VAROVANIE: 'headingmode=$0' nepracuje s 'ordermethod' na jednom komponente. Pouitie: '$1'. Pomocník: môete pouit not-$1 hodnoty 'headingmode' s 'ordermethod' na viaceré komponenty. Prvý komponent sa pouíva na nadpisy. Napr. 'ordermethod=category,comp' (comp je iný komponent) pre nadpisy kategórií.",
30 | "dpl_log_19": "VAROVANIE: 'debug=$0' nie je na prvej pozícii v prvku DPL. Nové ladiacie nastavenia nebudú pouíté skôr ne budú parsované a skontrolované vetky predchádzajúce.",
31 | "dpl_log_21": "DOTAZ: $0",
32 | "dpl_articlecount": "V tomto nadpise {{PLURAL:$1|je jeden clánok|sú $1 clánky|je $1 clánkov}}."
33 | }
--------------------------------------------------------------------------------
/i18n/sr-ec.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Millosh"
5 | ]
6 | },
7 | "intersection-desc": "Даје редни списак најскорије додатих чланака у једну или више категорија.",
8 | "intersection_toomanycats": "Грешка: Превише категорија!",
9 | "intersection_toofewcats": "Грешка:Премало категорија!",
10 | "intersection_noresults": "Грешка: Нема резулатата!",
11 | "intersection_noincludecats": "Грешка: Потребно је укључити бар једну категорију или одредити именски простор!",
12 | "dpl_log_1": "ГРЕШКА: Погреан '$0' параметар: '$1'! Помоћ: $0= погрешан стринг (Главно)$3. (Еквиваленти са магичним речима су такође дозвољени.)",
13 | "dpl_log_2": "ГРЕШКА: Погрешан '$0' параметар: '$1'! Помоћ: $0= пуно име странице. (Магичне речи су дозвољене.)",
14 | "dpl_log_3": "ГРЕШКА: Превише категорија! Максимум је: $0. Помоћ: повећајте DynamicPageListHooks::$maxCategoryCount како бисте поставили више категорија или промените DynamicPageListHooks::$allowUnlimitedCategories=true за без граница. (Подесите варијаблу у LocalSettings.php, након укључивања DynamicPageList.php.)",
15 | "dpl_log_4": "ГРЕШКА: Премало категорија! Минимум је: $0. Помоћ: повећајте DynamicPageListHooks::$minCategoryCount како бисте поставили мање категорија. (Подесите варијаблу у LocalSettings.php, након укључивања DynamicPageList.php.)",
16 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
17 | "dpl_log_6": "ГРЕШКА: Морате укључити бар једну категорију уколико желите да користите 'addfirstcategorydate=true' или 'ordermethod=categoryadd'!",
18 | "dpl_log_7": "ГРЕШКА: Уколико укључујете више од једне категорије, не можете користити 'addfirstcategorydate=true' или 'ordermethod=categoryadd'!",
19 | "dpl_log_8": "ГРЕШКА: Не можете додати више од једног типа датума!",
20 | "dpl_log_9": "ГРЕШКА: Можете користити '$0' са 'ordermethod=[...,]$1' искључиво!",
21 | "dpl_log_10": "ГРЕШКА: Немогуће извршити операцију на некатегоризованим страницама (нпр. са 'category' параметром) зато што $0 преглед не постоји у бази података! Помоћ: нека администратор базе изврши овај упит: $1.",
22 | "dpl_log_11": "ERROR: Cannot perform logical operations on the Uncategorized pages (f.e. with the 'category' parameter) because the $0 view does not exist on the database! Help: have the database administrator execute this query: $1.",
23 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
24 | "dpl_log_13": "ПАЖЊА: Непознат параметар '$1' је игнорисан. Помоћ: доступни параметри су: $2.",
25 | "dpl_log_14": "ПАЖЊА: Погрешан '$0' параметар: '$1'! Користи се основни: '$2'. Помоћ: $0= $3.",
26 | "dpl_log_15": "ПАЖЊА: Погрешан '$0' параметар: '$1'! Користи се основни: '$2' (без границе). Помоћ: $0= празан стринг (без границе) | n, с n је позитиван интегер.",
27 | "dpl_log_16": "ПАЖЊА: Нема резултата!",
28 | "dpl_log_17": "ПАЖЊА: Додавање* параметара ('adduser', 'addeditdate', итд.)' и 'includepage' нема ефекта са 'mode=category'. Искључиво име странице/именски простор могу да се виде у овом моду.",
29 | "dpl_log_18": "ПАЖЊА: 'headingmode=$0' нема ефекта са 'ordermethod' на једној компоненти. Користи се: '$1'. Помоћ: не морате користити-$1 'headingmode' податке 'ordermethod' на више компоненти. Прва компонента се користи за наслов. Нпр. 'ordermethod=category,компонента' (компонента је друга компонента) за наслове категорија.",
30 | "dpl_log_29": "ПАЖЊА: 'debug=$0' није на првом месту у DPL елементу. Нова дебаг подешавања нису примењена пре свих параметара који су проверени",
31 | "dpl_log_20": "ПАЖЊА: Бесконачна петљаса странице '$0'.",
32 | "dpl_log_21": "УПИТ: $0",
33 | "dpl_articlecount": "У овом наслову се тренутно налази {{PLURAL:$1|један чланак|$1 чланка|$1 чланака}}."
34 | }
--------------------------------------------------------------------------------
/i18n/sr.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Millosh"
5 | ]
6 | },
7 | "intersection-desc": "Даје редни списак најскорије додатих чланака у једну или више категорија.",
8 | "intersection_toomanycats": "Грешка: Превише категорија!",
9 | "intersection_toofewcats": "Грешка:Премало категорија!",
10 | "intersection_noresults": "Грешка: Нема резулатата!",
11 | "intersection_noincludecats": "Грешка: Потребно је укључити бар једну категорију или одредити именски простор!",
12 | "dpl_log_1": "ГРЕШКА: Погреан '$0' параметар: '$1'! Помоћ: $0= погрешан стринг (Главно)$3. (Еквиваленти са магичним речима су такође дозвољени.)",
13 | "dpl_log_2": "ГРЕШКА: Погрешан '$0' параметар: '$1'! Помоћ: $0= пуно име странице. (Магичне речи су дозвољене.)",
14 | "dpl_log_3": "ГРЕШКА: Превише категорија! Максимум је: $0. Помоћ: повећајте DynamicPageListHooks::$maxCategoryCount како бисте поставили више категорија или промените DynamicPageListHooks::$allowUnlimitedCategories=true за без граница. (Подесите варијаблу у LocalSettings.php, након укључивања DynamicPageList.php.)",
15 | "dpl_log_4": "ГРЕШКА: Премало категорија! Минимум је: $0. Помоћ: повећајте DynamicPageListHooks::$minCategoryCount како бисте поставили мање категорија. (Подесите варијаблу у LocalSettings.php, након укључивања DynamicPageList.php.)",
16 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
17 | "dpl_log_6": "ГРЕШКА: Морате укључити бар једну категорију уколико желите да користите 'addfirstcategorydate=true' или 'ordermethod=categoryadd'!",
18 | "dpl_log_7": "ГРЕШКА: Уколико укључујете више од једне категорије, не можете користити 'addfirstcategorydate=true' или 'ordermethod=categoryadd'!",
19 | "dpl_log_8": "ГРЕШКА: Не можете додати више од једног типа датума!",
20 | "dpl_log_9": "ГРЕШКА: Можете користити '$0' са 'ordermethod=[...,]$1' искључиво!",
21 | "dpl_log_10": "ГРЕШКА: Немогуће извршити операцију на некатегоризованим страницама (нпр. са 'category' параметром) зато што $0 преглед не постоји у бази података! Помоћ: нека администратор базе изврши овај упит: $1.",
22 | "dpl_log_11": "ERROR: Cannot perform logical operations on the Uncategorized pages (f.e. with the 'category' parameter) because the $0 view does not exist on the database! Help: have the database administrator execute this query: $1.",
23 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
24 | "dpl_log_13": "ПАЖЊА: Непознат параметар '$1' је игнорисан. Помоћ: доступни параметри су: $2.",
25 | "dpl_log_14": "ПАЖЊА: Погрешан '$0' параметар: '$1'! Користи се основни: '$2'. Помоћ: $0= $3.",
26 | "dpl_log_15": "ПАЖЊА: Погрешан '$0' параметар: '$1'! Користи се основни: '$2' (без границе). Помоћ: $0= празан стринг (без границе) | n, с n је позитиван интегер.",
27 | "dpl_log_16": "ПАЖЊА: Нема резултата!",
28 | "dpl_log_17": "ПАЖЊА: Додавање* параметара ('adduser', 'addeditdate', итд.)' и 'includepage' нема ефекта са 'mode=category'. Искључиво име странице/именски простор могу да се виде у овом моду.",
29 | "dpl_log_18": "ПАЖЊА: 'headingmode=$0' нема ефекта са 'ordermethod' на једној компоненти. Користи се: '$1'. Помоћ: не морате користити-$1 'headingmode' податке 'ordermethod' на више компоненти. Прва компонента се користи за наслов. Нпр. 'ordermethod=category,компонента' (компонента је друга компонента) за наслове категорија.",
30 | "dpl_log_29": "ПАЖЊА: 'debug=$0' није на првом месту у DPL елементу. Нова дебаг подешавања нису примењена пре свих параметара који су проверени",
31 | "dpl_log_20": "ПАЖЊА: Бесконачна петљаса странице '$0'.",
32 | "dpl_log_21": "УПИТ: $0",
33 | "dpl_articlecount": "У овом наслову се тренутно налази {{PLURAL:$1|један чланак|$1 чланка|$1 чланака}}."
34 | }
--------------------------------------------------------------------------------
/i18n/id.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "IvanLanin"
5 | ]
6 | },
7 | "intersection-desc": "Menghasilkan suatu daftar item terbaru pada suatu kategori atau gabungan beberapa kategori",
8 | "intersection_toomanycats": "DynamicPageList: Terlalu banyak kategori!",
9 | "intersection_toofewcats": "DynamicPageList: Terlalu sedikit kategori!",
10 | "intersection_noresults": "DynamicPageList: Tak ada hasil yang sesuai!",
11 | "intersection_noincludecats": "DynamicPageList: Anda perlu mencantumkan paling tidak satu kategori, atau menyebutkan satu ruang nama!",
12 | "dpl_log_1": "KESALAHAN: Parameter '$0' salah: '$1'! Bantuan: $0= string kosong (Utama)$3. (Ekivalen kata kunci juga diizinkan.)",
13 | "dpl_log_2": "KESALAHAN: Parameter '$0' salah: '$1'! Bantuan: $0= nama lengkap halaman. (Kata kunci diizinkan.)",
14 | "dpl_log_3": "KESALAHAN: Kategori terlalu banyak! Maksimum: $0. Bantuan: perbesar DynamicPageListHooks::$maxCategoryCount untuk memberikan lebih banyak kategori atau atur DynamicPageListHooks::$allowUnlimitedCategories=true untuk menghapus batasan. (Atur variabel tersebut di LocalSettings.php, setelah mencantumkan DynamicPageList.php.)",
15 | "dpl_log_4": "KESALAHAN: Kategori terlalu sedikit! Minimum: $0. Bantuan: kurangi DynamicPageListHooks::$minCategoryCount untuk mengurangi kategori. (Atur variabel tersebut di LocalSettings.php, setelah mencantumkan DynamicPageList.php.)",
16 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
17 | "dpl_log_6": "KESALAHAN: Anda harus memberikan paling tidak satu kategori jika menggunakan 'addfirstcategorydate=true' atau 'ordermethod=categoryadd'!",
18 | "dpl_log_7": "KESALAHAN: Jika Anda memberikan lebih dari satu kategori, Anda tidak dapat menggunakan 'addfirstcategorydate=true' atau 'ordermethod=categoryadd'!",
19 | "dpl_log_8": "KESALAHAN: Anda tidak dapat memberikan lebih dari satu jenis tanggal dalam satu waktu!",
20 | "dpl_log_9": "KESALAHAN: Anda dapat menggunakan '$0' hanya dengan 'ordermethod=[...,]$1'!",
21 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
22 | "dpl_log_11": "KESALAHAN: Tidak dapat melakukan operasi logika pada halaman yang tak terkategori (misalnya dengan parameter 'kategori') karena view $0 tidak ada di basis data! Bantuan: mintalah admin basis data untuk menjalankan kueri berikut: $1.",
23 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
24 | "dpl_log_13": "KESALAHAN: Paramater yang tak dikenal '$1' diabaikan. Bantuan: parameter yang tersedia: $2.",
25 | "dpl_log_14": "KESALAHAN: Parameter '$0' salah: '$1'! Menggunakan konfigurasi baku: '$2'. Bantuan: $0= $3.",
26 | "dpl_log_15": "KESALAHAN: Parameter '$0' salah: '$1'! Menggunakan konfigurasi baku: '$2' (tanpa limitasi). Bantuan: $0= string kosong (tanpa limitasi) | n, dengan n suatu bilangan positif.",
27 | "dpl_log_16": "KESALAHAN: Hasil tak ditemukan!",
28 | "dpl_log_17": "KESALAHAN: Menambahkan * parameter ('adduser', 'addeditdate', dll.)' dan 'includepage' tidak berpengaruh pada 'mode=category'. Hanya ruang nama/judul halaman yang dapat ditampilkan dengan mode ini.",
29 | "dpl_log_18": "KESALAHAN: 'headingmode=$0' tidak berpengaruh dengan 'ordermethod' pada suatu komponen tunggal. Menggunakan: '$1'. Bantuan: Anda dapat menggunakan nilai not-$1 'headingmode' dengan 'ordermethod' terhadap beberapa komponen. Komponen pertama digunakan sebagai judul. Misalnya 'ordermethod=category,comp' (comp adalah komponen lain) untuk judul kategori.",
30 | "dpl_log_19": "KESALAHAN: 'debug=$0' tidak pada posisi pertama pada elemen DPL. Aturan debug tidak diterapkan sebelum semua variabel sebelumnya telah diparsing dan dicek.",
31 | "dpl_log_20": "KESALAHAN: Suatu lingkaran transklusi tak hingga ditimbulkan oleh halaman '$0'.",
32 | "dpl_log_21": "KUERI: $0",
33 | "dpl_articlecount": "Terdapat {{PLURAL:$1|artikel|artikel}} dalam judul ini."
34 | }
--------------------------------------------------------------------------------
/i18n/fr.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Grondin",
5 | "Urhixidur",
6 | "Verdy p"
7 | ]
8 | },
9 | "intersection-desc": "Affiche une liste, à puces, des articles les plus récents dans une catégorie, ou à partir d’une combinaison de plusieurs catégories.",
10 | "intersection_toomanycats": "DynamicPageList : trop de catégories !",
11 | "intersection_toofewcats": "DynamicPageList : pas assez de catégories !",
12 | "intersection_noresults": "DynamicPageList : aucun résultat !",
13 | "intersection_noincludecats": "Error : vous devez inclure au moins une catégorie, ou préciser un nom d’espace !",
14 | "dpl_log_1": "ERREUR : Mauvais paramètre '$0' : '$1'! Aide : $0= chaîne vide (Principal)$3. (Les équivalents avec des mots magiques sont aussi autorisés.)",
15 | "dpl_log_2": "ERREUR : Mauvais paramètre '$0' : '$1'! Aide : $0= Nom complet de la page. (Les mots magiques sont autorisés.)",
16 | "dpl_log_3": "ERREUR : Trop de catégories ! Maximum : $0. Aide : accroître DynamicPageListHooks::$maxCategoryCount pour autoriser plus de catégories ou régler DynamicPageListHooks::$allowUnlimitedCategories=true pour aucune limite. (À régler dans LocalSettings.php, après avoir inclus DynamicPageList.php.)",
17 | "dpl_log_4": "ERREUR : Pas assez de catégories ! Minimum : $0. Aide : décroître DynamicPageListHooks::$minCategoryCount pour autoriser moins de catégories. (À régler dans LocalSettings.php de préférence, après avoir inclus DynamicPageList.php.)",
18 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
19 | "dpl_log_6": "ERREUR : Vous devez inclure au moins une catégorie si vous voulez utiliser 'addfirstcategorydate=true' ou 'ordermethod=categoryadd' !",
20 | "dpl_log_7": "ERREUR : Si vous incluez plus d’une catégorie, vous ne pouvez pas utiliser 'addfirstcategorydate=true' ou 'ordermethod=categoryadd' !",
21 | "dpl_log_8": "ERREUR : Vous ne pouvez pas utiliser plus d’un type de date à la fois !",
22 | "dpl_log_9": "ERREUR : Vous ne pouvez utiliser '$0' qu’avec 'ordermethod=[...,]$1' !",
23 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
24 | "dpl_log_11": "ERREUR : Ne peut pas effectuer d’opérations logiques sur les pages sans catégories (avec la paramètre 'category') car la vue $0 n’existe pas dans la base de données ! Aide : demander à un administrateur de la base de données d'effectuer : $1.",
25 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
26 | "dpl_log_13": "AVERTISSEMENT : Le paramètre inconnu '$1' est ignoré. Aide : paramètres disponibles : $2.",
27 | "dpl_log_14": "AVERTISSEMENT : Mauvais paramètre '$0' : '$1'! Utilisation de la valeur par défaut : '$2'. Aide : $0= $3.",
28 | "dpl_log_15": "AVERTISSEMENT : Mauvais paramètre '$0' : '$1'! Utilisattion de la valeur par défaut : '$2' (aucune limite). Aide : $0= chaîne vide (aucune limite) | n, avec n un entier positif.",
29 | "dpl_log_16": "AVERTISSEMENT : Aucun résultat !",
30 | "dpl_log_17": "AVERTISSEMENT : Les paramètres Add* ('adduser', 'addeditdate', etc.)' et 'includepage' n’ont aucun effet avec 'mode=category'. Seuls l’espace de nom et le titre de la page peuvent être vus dans ce mode..",
31 | "dpl_log_18": "AVERTISSEMENT : 'headingmode=$0' n'a aucun effet avec 'ordermethod' sur une simple composante. Utiliser : '$1'. Aide : vous pouvez utiliser not-$1 sur les valeurs de 'headingmode' avec 'ordermethod' sur plusieurs composantes. La première composante est utilisée pour les en-têtes. Exemple : 'ordermethod=category,comp' (comp est une autre composante) pour les en-têtes de catégorie.",
32 | "dpl_log_19": "AVERTISSEMENT : 'debug=$0' n’est pas en première position dans l’élément DPL. Les nouveaux réglages de débogage ne seront appliqués qu’après que les paramètres précédents aient été vérifiés.",
33 | "dpl_log_20": "AVERTISSEMENT : Une boucle d’inclusion infinie est créée par la page '$0'.",
34 | "dpl_log_21": "REQUÊTE : $0",
35 | "dpl_articlecount": "Il y a {{PLURAL:$1|un article|$1 articles}} dans cette section."
36 | }
--------------------------------------------------------------------------------
/i18n/it.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "BrokenArrow",
5 | "Darth Kule"
6 | ]
7 | },
8 | "intersection-desc": "Visualizza un elenco puntato con gli elementi più recenti inseriti in una categoria o nell'unione di più categorie",
9 | "intersection_toomanycats": "Errore: Numero di categorie eccessivo.",
10 | "intersection_toofewcats": "Errore: Numero di categorie insufficiente.",
11 | "intersection_noresults": "Errore: Nessun risultato.",
12 | "intersection_noincludecats": "Errore: È necessario includere almeno una categoria oppure specificare un namespace.",
13 | "dpl_log_1": "ERRORE nel parametro '$0': '$1'. Suggerimento: $0= stringa vuota (Principale)$3.",
14 | "dpl_log_2": "ERRORE nel parametro '$0': '$1'. Suggerimento: $0= nome completo della pagina.",
15 | "dpl_log_3": "ERRORE: Categorie sovrabbondanti (massimo $0). Suggerimento: aumentare il valore di DynamicPageListHooks::$maxCategoryCount per indicare un numero maggiore di categorie, oppure impostare DynamicPageListHooks::$allowUnlimitedCategories=true per non avere alcun limite. (Impostare le variabili nel file LocalSettings.php, dopo l'inclusione di DynamicPageList.php.)",
16 | "dpl_log_4": "ERRORE: Categorie insufficienti (minimo $0). Suggerimento: diminuire il valore di DynamicPageListHooks::$minCategoryCount per indicare un numero minore di categorie. (Impostare la variabile nel file LocalSettings.php, dopo l'inclusione di DynamicPageList.php.)",
17 | "dpl_log_5": "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
18 | "dpl_log_6": "ERRORE: L'uso dei parametri 'addfirstcategorydate=true' e 'ordermethod=categoryadd' richiede l'inserimento di una o più categorie.",
19 | "dpl_log_7": "ERRORE: L'inserimento di più categorie impedisce l'uso dei parametri 'addfirstcategorydate=true' e 'ordermethod=categoryadd'.",
20 | "dpl_log_8": "ERRORE: Non è consentito l'uso contemporaneo di più tipi di data.",
21 | "dpl_log_9": "ERRORE: L'uso del parametro '$0' è consentito unicamente con 'ordermethod=[...,]$1'.",
22 | "dpl_log_10": "ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
23 | "dpl_log_11": "ERRORE: Impossibile effettuare operazioni logiche sulle pagine prive di categoria (ad es. con il parametro 'category') in quanto il database non contiene la vista $0. Suggerimento: chiedere all'amministratore del database di eseguire la seguente query: $1.",
24 | "dpl_log_12": "ERROR: specifying \"openreferences\" is incompatible with some other option you specified. See the manual for details.",
25 | "dpl_log_13": "ATTENZIONE: Il parametro non riconosciuto '$1' è stato ignorato. Suggerimento: i parametri disponibili sono: $2.",
26 | "dpl_log_14": "ATTENZIONE: Errore nel parametro '$0': '$1'. È stato usato il valore predefinito '$2'. Suggerimento: $0= $3.",
27 | "dpl_log_15": "ATTENZIONE: errore nel parametro '$0': '$1'. È stato usato il valore predefinito '$2' (nessun limite). Suggerimento: $0= stringa vuota (nessun limite) | n, con n intero positivo.",
28 | "dpl_log_16": "ATTENZIONE: Nessun risultato.",
29 | "dpl_log_17": "ATTENZIONE: I parametri add* ('adduser', 'addeditdate', ecc.)' non hanno alcun effetto quando è specificato 'mode=category'. In tale modalità vengono visualizzati unicamente il namespace e il titolo della pagina.",
30 | "dpl_log_18": "ATTENZIONE: Il parametro 'headingmode=$0' non ha alcun effetto quando è specificato 'ordermethod' su un solo componente. Verrà utilizzato il valore '$1'. Suggerimento: è posibile utilizzare i valori diversi da $1 per il parametro 'headingmode' nel caso di 'ordermethod' su più componenti. Il primo componente viene usato per generare i titoli di sezione. Ad es. 'ordermethod=category,comp' (dove comp è un altro componente) per avere titoli di sezione basati sulla categoria.",
31 | "dpl_log_19": "ATTENZIONE: Il parametro 'debug=$0' non è il primo elemento della sezione DPL. Le nuove impostazioni di debug non verranno applicate prima di aver completato il parsing e la verifica di tutti i parametri che lo precedono.",
32 | "dpl_log_21": "QUERY: $0",
33 | "dpl_articlecount": "Questa sezione contiene {{PLURAL:$1|una voce|$1 voci}}."
34 | }
--------------------------------------------------------------------------------
/classes/lister/UserFormatList.php:
--------------------------------------------------------------------------------
1 | textSeparator = $parameters->getParameter('inlinetext');
41 | $listSeparators = $parameters->getParameter('listseparators');
42 | if (isset($listSeparators[0])) {
43 | $this->listStart = $listSeparators[0];
44 | }
45 | if (isset($listSeparators[1])) {
46 | $this->itemStart = $listSeparators[1];
47 | }
48 | if (isset($listSeparators[2])) {
49 | $this->itemEnd = $listSeparators[2];
50 | }
51 | if (isset($listSeparators[3])) {
52 | $this->listEnd = $listSeparators[3];
53 | }
54 | }
55 |
56 | /**
57 | * Format the list of articles.
58 | *
59 | * @access public
60 | * @param array List of \DPL\Article
61 | * @param integer Start position of the array to process.
62 | * @param integer Total objects from the array to process.
63 | * @return string Formatted list.
64 | */
65 | public function formatList($articles, $start, $count) {
66 | $filteredCount = 0;
67 | $items = [];
68 | for ($i = $start; $i < $start + $count; $i++) {
69 | $article = $articles[$i];
70 | if (empty($article) || empty($article->mTitle)) {
71 | continue;
72 | }
73 |
74 | $pageText = null;
75 | if ($this->includePageText) {
76 | $pageText = $this->transcludePage($article, $filteredCount);
77 | } else {
78 | $filteredCount++;
79 | }
80 |
81 | $this->rowCount = $filteredCount;
82 |
83 | $items[] = $this->formatItem($article, $pageText);
84 | }
85 |
86 | $this->rowCount = $filteredCount;
87 |
88 | // if requested we sort the table by the contents of a given column
89 | $sortColumn = $this->getTableSortColumn();
90 | if ($sortColumn != 0) {
91 | $rowsKey = [];
92 | foreach ($items as $index => $item) {
93 | $item = trim($item);
94 | if (strpos($item, '|-') === 0) {
95 | $item = explode('|-', $item, 2);
96 | if (count($item) == 2) {
97 | $item = $item[1];
98 | } else {
99 | $rowsKey[$index] = $item;
100 | continue;
101 | }
102 | }
103 | if (strlen($item) > 0) {
104 | $word = explode("\n|", $item);
105 | if (isset($word[0]) && empty($word[0])) {
106 | array_shift($word);
107 | }
108 | if (isset($word[abs($sortColumn) - 1])) {
109 | $test = trim($word[abs($sortColumn) - 1]);
110 | if (strpos($test, '|') > 0) {
111 | $test = trim(explode('|', $test)[1]);
112 | }
113 | $rowsKey[$index] = $test;
114 | }
115 | }
116 | }
117 | if ($sortColumn < 0) {
118 | arsort($rowsKey);
119 | } else {
120 | asort($rowsKey);
121 | }
122 | $newItems = [];
123 | foreach ($rowsKey as $index => $val) {
124 | $newItems[] = $items[$index];
125 | }
126 | $items = $newItems;
127 | }
128 |
129 | return $this->listStart . $this->implodeItems($items) . $this->listEnd;
130 | }
131 |
132 | /**
133 | * Format a single item.
134 | *
135 | * @access public
136 | * @param object DPL\Article
137 | * @param string [Optional] Page text to include.
138 | * @return string Item HTML
139 | */
140 | public function formatItem(Article $article, $pageText = null) {
141 | $item = '';
142 |
143 | if ($pageText !== null) {
144 | //Include parsed/processed wiki markup content after each item before the closing tag.
145 | $item .= $pageText;
146 | }
147 |
148 | $item = $this->getItemStart() . $item . $this->getItemEnd();
149 |
150 | $item = $this->replaceTagParameters($item, $article);
151 |
152 | return $item;
153 | }
154 |
155 | /**
156 | * Return $this->itemStart with attributes replaced.
157 | *
158 | * @access public
159 | * @return string Item Start
160 | */
161 | public function getItemStart() {
162 | return $this->replaceTagCount($this->itemStart, $this->getRowCount());
163 | }
164 |
165 | /**
166 | * Return $this->itemEnd with attributes replaced.
167 | *
168 | * @access public
169 | * @return string Item End
170 | */
171 | public function getItemEnd() {
172 | return $this->replaceTagCount($this->itemEnd, $this->getRowCount());
173 | }
174 |
175 | /**
176 | * Join together items after being processed by formatItem().
177 | *
178 | * @access public
179 | * @param array Items as formatted by formatItem().
180 | * @return string Imploded items.
181 | */
182 | protected function implodeItems($items) {
183 | return implode($this->textSeparator, $items);
184 | }
185 | }
186 |
--------------------------------------------------------------------------------
/i18n/de.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Gero Scholz",
5 | "MarkusRost"
6 | ]
7 | },
8 | "intersection-desc": "Ausgabe einer Liste der aktuellsten Einträge in einer Kategorie, oder der Schnittmenge mehrerer Kategorien",
9 | "intersection_toomanycats": "Fehler: Zu viele Kategorien!",
10 | "intersection_toofewcats": "Fehler: Zu wenige Kategorien!",
11 | "intersection_noresults": "Fehler: Kein Ergebnis!",
12 | "intersection_noincludecats": "Fehler: Es muss mindestens eine Kategorie eingebunden werden oder ein Namensraum angegeben sein!",
13 | "dpl_log_1": "Fehler: bei „$1“ Parameter: „$2“! Hilfe: $1= (leer) (Hauptnamensraum)$3.",
14 | "dpl_log_2": "Fehler: bei „$1“ Parameter: „$2“! Hilfe: $1= vollständiger Seitenname.",
15 | "dpl_log_3": "Fehler: Zu viele Kategorien! Maximum: $1.",
16 | "dpl_log_4": "Fehler: Zu wenige Kategorien! Minimum: $1.",
17 | "dpl_log_5": "Fehler: Keine Auswahlkriterien angegeben! Mindestens einer der folgenden Parameter ist erforderlich: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby oder die „not“-Varianten davon.",
18 | "dpl_log_6": "Fehler: Sie müssen mindestens eine Kategorie angeben, wenn Sie „addfirstcategorydate=true“ oder „ordermethod=categoryadd“ benutzen.",
19 | "dpl_log_7": "Fehler: Wenn Sie mehr als eine Kategorie angeben, können Sie „addfirstcategorydate=true“ oder „ordermethod=categoryadd“ nicht benutzen.",
20 | "dpl_log_8": "Fehler: Es ist nur eine einzige Art der Datumsangabe gleichzeitig möglich.",
21 | "dpl_log_9": "Fehler: Der Parameter „$1“ muss in Verbindung mit „ordermethod=[ $2 ]“ benutzt werden.",
22 | "dpl_log_10": "Fehler: Die Indexangabe bei „dominantsection“ muss zwischen 1 und der Anzahl der Argumente von „includepage“ liegen ($0 in diesem Fall).",
23 | "dpl_log_11": "Fehler: Kann keine logischen Operationen an nicht kategorisierten Seiten ausführen (z. B. mit dem „category“ Parameter) weil die „$0“-Ansicht nicht in der Datenbank vorhanden ist!",
24 | "dpl_log_12": "Fehler: Die Angabe von „openreferences“ ist nicht vereinbar mit anderen angegegeben Optionen. Entferne die anderen Optionen oder „openreferences“. Details dazu stehen im DPL-Manual.",
25 | "dpl_log_13": "Warnung: Der unbekannte Parameter „$1“ wurde ignoriert. Hilfe: Verfügbare Parameter: $2.",
26 | "dpl_log_14": "Warnung: Überspringe die ungültige Option „$2“ für den Parameter „$1“.",
27 | "dpl_log_15": "Warnung: Falscher „$1“-Parameter: „$2“! Standardwert wird verwendet: „$3“ (unbegrenzt). Hilfe: $1= (leer) (unbegrenzt) | n, wobei n eine positive Ganzzahl sein muss.",
28 | "dpl_log_16": "Warnung: Keine Ergebnisse.",
29 | "dpl_log_17": "Warnung: Add* Parameter („adduser“, „addeditdate“, usw.) und „includepage“ haben keinen Effekt in Verbindung mit „mode=category“. Es kann nur der Seitentitel und Namensraum angezeigt werden.",
30 | "dpl_log_18": "Warnung: „headingmode=$1“ hat keinen Effekt, wenn „ordermethod“ sich auf eine einzelne Komponente bezieht. Es wird „$2“ verwendet. Hilfe: Sie können not-$1 „headingmode“ Werte in Verbindung mit „ordermethod“ für mehrfache Komponenten verwenden. Die erste Konponente wird für Gruppen verwendet. Z. B. „ordermethod=category,comp“ (comp ist eine andere Komponente) für Kategorie-Gruppen.",
31 | "dpl_log_19": "Warnung: „debug=$1“ steht nicht an erster Stelle in der DPL-Anweisung. Die Einstellung wird erst wirksam, nachdem die vorausgehenden Parameter geprüft und verarbeitet sind.",
32 | "dpl_log_20": "Warnung: Endlosschleife beim Einbinden von Inhalten der Seite „$0“.",
33 | "dpl_log_21": "Datenbank-Abfrage: $0",
34 | "dpl_log_22": "Warnung: Keine Parameter-Option angegeben für „$1“. („=“ fehlt)",
35 | "dpl_articlecount": "Diese Gruppe enthält {{PLURAL:$1|einen|$1}} Artikel.",
36 | "action-dpl_param_update_rules": "um den Parameter „updaterules“ zu nutzen",
37 | "action-dpl_param_delete_rules": "um den Parameter „deleterules“ zu nutzen",
38 | "dpl_query_error": "Die DPL-Erweiterung (Version $1) produzierte ein SQL-Statement, was zu einem Datenbank-Fehler führte.
Der Grund könnte ein interner Fehler von DPL sein oder ein Fehler deinerseits; besonders beim Nutzen von Parametern wie „categoryregexp“ oder „titleregexp“. Die Verwendung von non-greedy *? matching patterns werden nicht unterstützt.
Fehlermeldung:
$2",
39 | "dpl-tag-tracking-category": "Seiten, die DynamicPageList parser tag nutzen",
40 | "dpl-intersection-tracking-category": "Seiten, die DynamicPageList Intersection parser tag nutzen",
41 | "dpl-parserfunc-tracking-category": "Seiten, die DynamicPageList parser function nutzen",
42 | "dplnum-parserfunc-tracking-category": "Seiten, die DynamicPageList dplnum parser function nutzen",
43 | "dplvar-parserfunc-tracking-category": "Seiten, die DynamicPageList dplvar parser function nutzen",
44 | "dplreplace-parserfunc-tracking-category": "Seiten, die DynamicPageList dplreplace parser function nutzen",
45 | "dplchapter-parserfunc-tracking-category": "Seiten, die DynamicPageList dplchapter parser function nutzen",
46 | "dplmatrix-parserfunc-tracking-category": "Seiten, die DynamicPageList dplmatrix parser function nutzen",
47 | "right-dpl_param_delete_rules": "Massenlöschungen von Seiten, die DPL nutzen",
48 | "right-dpl_param_update_rules": "Massenänderungen von Seiten, die DPL nutzen"
49 | }
--------------------------------------------------------------------------------
/i18n/en.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "m:User:Dangerman "
5 | ]
6 | },
7 | "intersection-desc": "Outputs a bulleted list of the most recent items residing in a category, or an intersection of several categories",
8 | "intersection_toomanycats": "Error: Too many categories!",
9 | "intersection_toofewcats": "Error: Too few categories!",
10 | "intersection_noresults": "Error: No results!",
11 | "intersection_noincludecats": "Error: You need to include at least one category, or specify a namespace!",
12 | "dpl-desc": "A highly flexible report generator for MediaWikis",
13 | "dpl_log_1": "Error: Wrong '$1' parameter: '$2'! Help: $1= empty string (Main)$3.",
14 | "dpl_log_2": "Error: Wrong '$1' parameter: '$2'! Help: $1= full pagename.",
15 | "dpl_log_3": "Error: Too many categories! Maximum: $1. Help: increase $wgDplSettings['maxCategoryCount'] to specify more categories or set $wgDplSettings['allowUnlimitedCategories'] = true; for no limitation. (Set the variable in the wiki's LocalSettings.php configuration file.)",
16 | "dpl_log_4": "Error: Too few categories! Minimum: $1. Help: decrease $wgDplSettings['minCategoryCount'] to specify fewer categories. (Set the variable in the wiki's LocalSettings.php configuration file.)",
17 | "dpl_log_5": "Error: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby, or their 'not' variants",
18 | "dpl_log_6": "Error: At least one category must be chosen if to use 'addfirstcategorydate=true' or 'ordermethod=categoryadd'.",
19 | "dpl_log_7": "Error: If you include more than one category, you cannot use 'addfirstcategorydate=true' or 'ordermethod=categoryadd'.",
20 | "dpl_log_8": "Error: Only one date type can be added at a time.",
21 | "dpl_log_9": "Error: The paramater '$1' must be used with 'ordermethod=[ $2 ]'",
22 | "dpl_log_10": "Error: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case)",
23 | "dpl_log_11": "Error: Cannot perform logical operations on the Uncategorized pages (f.e. with the 'category' parameter) because the $0 view does not exist on the database! Help: have the database administrator execute this query: $1.",
24 | "dpl_log_12": "Error: specifying \"openreferences\" is incompatible with another option specified. Please remove that other option or \"openreferences\". See the manual for details.",
25 | "dpl_log_13": "Warning: Unknown parameter '$1' was ignored. Help: available parameters: $2.",
26 | "dpl_log_14": "Warning: Skipping bad option '$2' for parameter '$1'.",
27 | "dpl_log_15": "Warning: Wrong '$1' parameter: '$2'! Using default: '$3' (no limit). Help: $1= empty string (no limit) | n, with n a positive integer.",
28 | "dpl_log_16": "Warning: No results.",
29 | "dpl_log_17": "Warning: Add* parameters ('adduser', 'addeditdate', etc.)' and 'includepage' have no effect with 'mode=category'. Only the page namespace/title can be viewed in this mode.",
30 | "dpl_log_18": "Warning: 'headingmode=$1' has no effect with 'ordermethod' on a single component. Using: '$2'. Help: you can use not-$2 'headingmode' values with 'ordermethod' on multiple components. The first component is used for headings. E.g. 'ordermethod=category,comp' (comp is another component) for category headings.",
31 | "dpl_log_19": "Warning: 'debug=$1' is not in first position in the DPL element. The new debug settings are not applied before all previous parameters have been parsed and checked.",
32 | "dpl_log_20": "Warning: An infinite transclusion loop is created by page '$0'.",
33 | "dpl_log_21": "Query: $0",
34 | "dpl_log_22": "Warning: No parameter option supplied for '$1'. (Missing '=')",
35 | "dpl_articlecount": "There {{PLURAL:$1|is one article|are $1 articles}} in this heading.",
36 | "dpl_description": "A flexible report generator for MediaWiki. See [http://semeb.com/dpldemo] for the manual and examples",
37 | "action-dpl_param_update_rules": "to use the parameter 'updaterules'",
38 | "action-dpl_param_delete_rules": "to use the parameter 'deleterules'",
39 | "dpl_query_error": "The DPL extension (version $1) produced a SQL statement which led to a Database error.
The reason may be an internal error of DPL or an error which you made; especially when using parameters like 'categoryregexp' or 'titleregexp'. Usage of non-greedy *? matching patterns are not supported.
Error message was:
$2",
40 | "dpl-tag-tracking-category": "Pages using DynamicPageList parser tag",
41 | "dpl-intersection-tracking-category": "Pages using DynamicPageList Intersection parser tag",
42 | "dpl-parserfunc-tracking-category": "Pages using DynamicPageList parser function",
43 | "dplnum-parserfunc-tracking-category": "Pages using DynamicPageList dplnum parser function",
44 | "dplvar-parserfunc-tracking-category": "Pages using DynamicPageList dplvar parser function",
45 | "dplreplace-parserfunc-tracking-category": "Pages using DynamicPageList dplreplace parser function",
46 | "dplchapter-parserfunc-tracking-category": "Pages using DynamicPageList dplchapter parser function",
47 | "dplmatrix-parserfunc-tracking-category": "Pages using DynamicPageList dplmatrix parser function",
48 | "right-dpl_param_delete_rules": "Mass deletion of pages using DPL",
49 | "right-dpl_param_update_rules": "Mass update of pages using DPL"
50 | }
--------------------------------------------------------------------------------
/i18n/pl.json:
--------------------------------------------------------------------------------
1 | {
2 | "@metadata": {
3 | "authors": [
4 | "Sp5uhe",
5 | "Rail",
6 | "Frisk"
7 | ]
8 | },
9 | "intersection-desc": "Zwraca listę wypunktowaną najnowszych elementów w kategorii lub grupie kilku kategorii",
10 | "intersection_toomanycats": "Błąd – zbyt wiele kategorii!",
11 | "intersection_toofewcats": "Błąd – zbyt mało kategorii!",
12 | "intersection_noresults": "Błąd – brak wyników!",
13 | "intersection_noincludecats": "Błąd – musisz załączyć co najmniej jedną kategorię lub określić przestrzeń nazw!",
14 | "dpl-desc": "Wysoce elastyczny generator raportów w MediaWiki",
15 | "dpl_log_1": "Błąd – Błędny parametr „$1”: „$2”! Pomoc: $1= empty string (Main)$3.",
16 | "dpl_log_2": "Błąd – Błędny parametr „$1”: „$2”! Pomoc: $1= full pagename.",
17 | "dpl_log_3": "Błąd – zbyt wiele kategorii! Maksymalnie $1. Pomoc: zwiększ wartość $wgDplSettings['maxCategoryCount'] aby określić więcej kategorii lub ustaw $wgDplSettings['allowUnlimitedCategories'] = true; w celu wyłączeniu limitu (ustaw zmienną w pliku konfiguracyjnym LocalSettings.php wiki).",
18 | "dpl_log_4": "Błąd – zbyt mało kategorii! Minimalnie $1. Pomoc: zmniejsz wartość decrease $wgDplSettings['minCategoryCount'] aby określić mniej kategorii (ustaw zmienną w pliku konfiguracyjnym LocalSettings.php wiki).",
19 | "dpl_log_5": "Błąd – nie odnaleziono kryteriów wyboru! Musisz użyć przynajmniej jednego z poniższych parametrów: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby lub ich wariantów „not”.",
20 | "dpl_log_6": "Błąd – musisz wybrać przynajmniej jedną kategorię aby użyć „addfirstcategorydate=true” lub „ordermethod=categoryadd”.",
21 | "dpl_log_7": "Błąd – nie możesz użyć „addfirstcategorydate=true” lub „ordermethod=categoryadd” jeśli podasz więcej niż jedną kategorię.",
22 | "dpl_log_8": "Błąd – można dodać tylko jeden typ daty na raz.",
23 | "dpl_log_9": "Błąd – parametr „$1” musi być używany wraz z „ordermethod=[ $2 ]”.",
24 | "dpl_log_10": "Błąd – indeksem dominującej sekcji musi być liczba pomiędzy 1 a liczbą argumentów parametru „includepage” ($0 w tym przypadku).",
25 | "dpl_log_11": "Błąd – nie można wykonywać logicznych operacji na nieskategoryzowanych stronach (np. z parametrem „category”), ponieważ podgląd $0 nie istnieje w bazie danych! Pomoc: administrator bazy danych musi wykonać to zapytanie: $1.",
26 | "dpl_log_12": "Błąd – podawanie parametru „openreferences” jest niekompatybilne z inną podaną opcją. Usuń proszę tę inną opcję lub „openreferences”. Zobacz poradnik aby dowiedzieć się więcej.",
27 | "dpl_log_13": "Ostrzeżenie – nieznany parametr „$1” został zignorowany. Pomoc: dostępne parametry – $2.",
28 | "dpl_log_14": "Ostrzeżenie – pominięto złą opcję „$2” dla parametru „$1”.",
29 | "dpl_log_15": "Ostrzeżenie – zły parametr „$1”: „$2”! Użyto domyślnego – „$3” (brak limitu). Pomoc: $1= empty string (no limit) | n z n jako liczbą dodatnią.",
30 | "dpl_log_16": "Ostrzeżenie – brak wyników.",
31 | "dpl_log_17": "Ostrzeżenie – podane parametry („adduser”, „addeditdate”, itd.) oraz „includepage” nie przyniosą zamierzonego efektu wraz z „mode=category”. W tym trybie widać tylko tytuł oraz przestrzeń nazw strony.",
32 | "dpl_log_18": "Ostrzeżenie – „headingmode=$1” nie przyniesie zamierzonego efektu z „ordermethod” na pojedynczym komponencie. Użyto „$2”. Pomoc: możesz użyć wartości innych niż $2 dla „headingmode” na wielu komponentach. Pierwszy komponent jest używany w nagłówkach. Np. „ordermethod=category,comp” (gdzie comp jest kolejnym komponentem) dla nagłówków kategorii.",
33 | "dpl_log_19": "Ostrzeżenie – „debug=$1” nie jest w pierwszej pozycji w elemencie DPL. Nowe ustawienia debugowania nie są aplikowane przed sprawdzeniem i sparsowaniem wszystkich poprzednich parametrów.",
34 | "dpl_log_20": "Ostrzeżenie – strona „$0” tworzy nieskończoną pętlę transkluzji.",
35 | "dpl_log_21": "Zapytanie – $0",
36 | "dpl_log_22": "Ostrzeżenie – nie podano opcji parametru dla „$1” (brakujący znak „=”).",
37 | "dpl_articlecount": "W tym nagłówku {{PLURAL:$1|znajduje się jeden artykuł|znajdują się $1 artykuły|znajduje się $1 artykułów}}.",
38 | "dpl_description": "Wysoce elastyczny generator raportów w MediaWiki. Zobacz http://semeb.com/dpldemo po poradnik i przykłady",
39 | "action-dpl_param_update_rules": "używania parametru „updaterules”",
40 | "action-dpl_param_delete_rules": "używania parametru „deleterules”",
41 | "dpl_query_error": "Rozszerzenie DPL (wersja $1) wyprodukowało wyrażenie SQL które doprowadziło do błędu bazy danych.
Powodem może być wewnętrzny błąd DPL lub problem spowodowany przez Ciebie; szczególnie podczas używania takich parametrów jak „categoryregexp” lub „titleregexp”. Używanie wzorców dopasowywania takich jak *? nie jest wspierane.
Komunikat błędu:
$2",
42 | "dpl-tag-tracking-category": "Strony używające znacznika parsera DynamicPageList",
43 | "dpl-intersection-tracking-category": "Strony używające znacznika parsera DynamicPageList Intersection",
44 | "dpl-parserfunc-tracking-category": "Strony używające funkcji parsera DynamicPageList",
45 | "dplnum-parserfunc-tracking-category": "Strony używające funkcji parsera DynamicPageList dplnum",
46 | "dplvar-parserfunc-tracking-category": "Strony używające funkcji parsera DynamicPageList dplvar",
47 | "dplreplace-parserfunc-tracking-category": "Strony używające funkcji parsera DynamicPageList dplreplace",
48 | "dplchapter-parserfunc-tracking-category": "Strony używające funkcji parsera DynamicPageList dplchapter",
49 | "dplmatrix-parserfunc-tracking-category": "Strony używające funkcji parsera DynamicPageList dplmatrix",
50 | "right-dpl_param_delete_rules": "Masowe usuwanie stron używających DPL",
51 | "right-dpl_param_update_rules": "Masowe aktualizowanie stron używających DPL"
52 | }
--------------------------------------------------------------------------------
/classes/heading/Heading.php:
--------------------------------------------------------------------------------
1 |
27 | *
28 | * @var string
29 | */
30 | public $listStart = '';
31 |
32 | /**
33 | * List(Section) End
34 | *
35 | * @var string
36 | */
37 | public $listEnd = '';
38 |
39 | /**
40 | * Item Start
41 | * Use %s for attribute placement. Example:
42 | *
43 | * @var string
44 | */
45 | public $itemStart = '';
46 |
47 | /**
48 | * Item End
49 | *
50 | * @var string
51 | */
52 | public $itemEnd = '';
53 |
54 | /**
55 | * Extra list HTML attributes.
56 | *
57 | * @var array
58 | */
59 | public $listAttributes = '';
60 |
61 | /**
62 | * Extra item HTML attributes.
63 | *
64 | * @var array
65 | */
66 | public $itemAttributes = '';
67 |
68 | /**
69 | * If the article count per heading should be shown.
70 | *
71 | * @var boolean
72 | */
73 | protected $showHeadingCount = false;
74 |
75 | /**
76 | * \DPL\Parameters
77 | *
78 | * @var object
79 | */
80 | protected $parameters = null;
81 |
82 | /**
83 | * Main Constructor
84 | *
85 | * @access public
86 | * @param object \DPL\Parameters
87 | * @return void
88 | */
89 | public function __construct(Parameters $parameters) {
90 | $this->setListAttributes($parameters->getParameter('hlistattr'));
91 | $this->setItemAttributes($parameters->getParameter('hitemattr'));
92 | $this->setShowHeadingCount($parameters->getParameter('headingcount'));
93 | $this->parameters = $parameters;
94 | }
95 |
96 | /**
97 | * Get a new List subclass based on user selection.
98 | *
99 | * @access public
100 | * @param string Heading style.
101 | * @param object \DPL\Parameters
102 | * @param object MediaWiki \Parser
103 | * @return mixed Heading subclass or null for a bad style.
104 | */
105 | public static function newFromStyle($style, \DPL\Parameters $parameters) {
106 | $style = strtolower($style);
107 | switch ($style) {
108 | case 'definition':
109 | $class = 'DefinitionHeading';
110 | break;
111 | case 'h1':
112 | case 'h2':
113 | case 'h3':
114 | case 'h4':
115 | case 'h5':
116 | case 'h6':
117 | case 'header':
118 | $class = 'TieredHeading';
119 | break;
120 | case 'ordered':
121 | $class = 'OrderedHeading';
122 | break;
123 | case 'unordered':
124 | $class = 'UnorderedHeading';
125 | break;
126 | default:
127 | return null;
128 | break;
129 | }
130 | $class = '\DPL\Heading\\' . $class;
131 |
132 | return new $class($parameters);
133 | }
134 |
135 | /**
136 | * Get the \DPL\Parameters object this object was constructed with.
137 | *
138 | * @access public
139 | * @return object \DPL\Parameters
140 | */
141 | public function getParameters() {
142 | return $this->parameters;
143 | }
144 |
145 | /**
146 | * Set extra list attributes.
147 | *
148 | * @access public
149 | * @param string Tag soup attributes, example: this="that" thing="no"
150 | * @return void
151 | */
152 | public function setListAttributes($attributes) {
153 | $this->listAttributes = \Sanitizer::fixTagAttributes($attributes, 'ul');
154 | }
155 |
156 | /**
157 | * Set extra item attributes.
158 | *
159 | * @access public
160 | * @param string Tag soup attributes, example: this="that" thing="no"
161 | * @return void
162 | */
163 | public function setItemAttributes($attributes) {
164 | $this->itemAttributes = \Sanitizer::fixTagAttributes($attributes, 'li');
165 | }
166 |
167 | /**
168 | * Set if the article count per heading should be shown.
169 | *
170 | * @access public
171 | * @param boolean [Optional] Show Heading Count
172 | * @return void
173 | */
174 | public function setShowHeadingCount($show = false) {
175 | $this->showHeadingCount = boolval($show);
176 | }
177 |
178 | /**
179 | * Return the list style.
180 | *
181 | * @access public
182 | * @return integer List style constant.
183 | */
184 | public function getStyle() {
185 | return $this->style;
186 | }
187 |
188 | /**
189 | * Format a list of articles into all lists with headings as needed.
190 | *
191 | * @access public
192 | * @param array List of \DPL\Article
193 | * @param object List of \DPL\Lister\Lister
194 | * @return string Formatted list.
195 | */
196 | public function format($articles, Lister $lister) {
197 | $columns = $this->getParameters()->getParameter('columns');
198 | $rows = $this->getParameters()->getParameter('rows');
199 | $rowSize = $this->getParameters()->getParameter('rowsize');
200 | $rowColFormat = $this->getParameters()->getParameter('rowcolformat');
201 |
202 | $start = 0;
203 | $count = 0;
204 |
205 | $headings = Article::getHeadings();
206 | $output = '';
207 | if (!empty($headings)) {
208 | if ($columns != 1 || $rows != 1) {
209 | $hspace = 2; // the extra space for headings
210 | // repeat outer tags for each of the specified columns / rows in the output
211 | // we assume that a heading roughly takes the space of two articles
212 | $count = count($articles) + $hspace * count($headings);
213 | if ($columns != 1) {
214 | $iGroup = $columns;
215 | } else {
216 | $iGroup = $rows;
217 | }
218 | $nsize = floor($count / $iGroup);
219 | $rest = $count - (floor($nsize) * floor($iGroup));
220 | if ($rest > 0) {
221 | $nsize += 1;
222 | }
223 | $output .= "{|" . $rowColFormat . "\n|\n";
224 | if ($nsize < $hspace + 1) {
225 | $nsize = $hspace + 1; // correction for result sets with one entry
226 | }
227 | $output .= $this->getListStart();
228 | $nstart = 0;
229 | $greml = $nsize; // remaining lines in current group
230 | $g = 0;
231 | $offset = 0;
232 | foreach ($headings as $headingCount) {
233 | $headingStart = $nstart - $offset;
234 | $headingLink = $articles[$headingStart]->mParentHLink;
235 | $output .= $this->getItemStart() . $headingLink . $this->getItemEnd();
236 | if ($this->showHeadingCount) {
237 | $output .= $this->articleCountMessage($headingCount);
238 | }
239 | $offset += $hspace;
240 | $nstart += $hspace;
241 | $portion = $headingCount;
242 | $greml -= $hspace;
243 | $listOutput = '';
244 | do {
245 | $greml -= $portion;
246 | // $output .= "nsize=$nsize, portion=$portion, greml=$greml";
247 | if ($greml > 0) {
248 | $output .= $lister->formatList($articles, $nstart - $offset, $portion);
249 | $nstart += $portion;
250 | $portion = 0;
251 | break;
252 | } else {
253 | $output .= $lister->formatList($articles, $nstart - $offset, $portion + $greml);
254 | $nstart += ($portion + $greml);
255 | $portion = (-$greml);
256 | if ($columns != 1) {
257 | $output .= "\n|valign=top|\n";
258 | } else {
259 | $output .= "\n|-\n|\n";
260 | }
261 | ++$g;
262 | // if ($rest != 0 && $g==$rest) $nsize -= 1;
263 | if ($nstart + $nsize > $count) {
264 | $nsize = $count - $nstart;
265 | }
266 | $greml = $nsize;
267 | if ($greml <= 0) {
268 | break;
269 | }
270 | }
271 | } while ($portion > 0);
272 | $output .= $this->getItemEnd();
273 | }
274 | $output .= $this->listEnd;
275 | $output .= "\n|}\n";
276 | } else {
277 | $output .= $this->getListStart();
278 | $headingStart = 0;
279 | foreach ($headings as $headingCount) {
280 | $headingLink = $articles[$headingStart]->mParentHLink;
281 | $output .= $this->formatItem($headingStart, $headingCount, $headingLink, $articles, $lister);
282 | $headingStart += $headingCount;
283 | }
284 | $output .= $this->listEnd;
285 | }
286 | } elseif ($columns != 1 || $rows != 1) {
287 | // repeat outer tags for each of the specified columns / rows in the output
288 | $nstart = 0;
289 | $count = count($articles);
290 | if ($columns != 1) {
291 | $iGroup = $columns;
292 | } else {
293 | $iGroup = $rows;
294 | }
295 | $nsize = floor($count / $iGroup);
296 | $rest = $count - (floor($nsize) * floor($iGroup));
297 | if ($rest > 0) {
298 | $nsize += 1;
299 | }
300 | $output .= "{|" . $rowColFormat . "\n|\n";
301 | for ($g = 0; $g < $iGroup; $g++) {
302 | $output .= $lister->formatList($articles, $nstart, $nsize);
303 | if ($columns != 1) {
304 | $output .= "\n|valign=top|\n";
305 | } else {
306 | $output .= "\n|-\n|\n";
307 | }
308 | $nstart = $nstart + $nsize;
309 | // if ($rest != 0 && $g+1==$rest) $nsize -= 1;
310 | if ($nstart + $nsize > $count) {
311 | $nsize = $count - $nstart;
312 | }
313 | }
314 | $output .= "\n|}\n";
315 | } elseif ($rowSize > 0) {
316 | // repeat row header after n lines of output
317 | $nstart = 0;
318 | $nsize = $rowSize;
319 | $count = count($articles);
320 | $output .= '{|' . $rowColFormat . "\n|\n";
321 | do {
322 | if ($nstart + $nsize > $count) {
323 | $nsize = $count - $nstart;
324 | }
325 | $output .= $lister->formatList($articles, $nstart, $nsize);
326 | $output .= "\n|-\n|\n";
327 | $nstart = $nstart + $nsize;
328 | if ($nstart >= $count) {
329 | break;
330 | }
331 | } while (true);
332 | $output .= "\n|}\n";
333 | } else {
334 | //Even though the headingmode is not none there were no headings, but still results. Output them anyway.
335 | $output .= $lister->formatList($articles, 0, count($articles));
336 | }
337 |
338 | return $output;
339 | }
340 |
341 | /**
342 | * Format a heading group.
343 | *
344 | * @access public
345 | * @param integer Article start index for this heading.
346 | * @param integer Article count for this heading.
347 | * @param string Heading link/text display.
348 | * @param array List of \DPL\Article.
349 | * @param object List of \DPL\Lister\Lister
350 | * @return string Heading HTML
351 | */
352 | public function formatItem($headingStart, $headingCount, $headingLink, $articles, Lister $lister) {
353 | $item = '';
354 |
355 | $item .= $this->getItemStart() . $headingLink;
356 | if ($this->showHeadingCount) {
357 | $item .= $this->articleCountMessage($headingCount);
358 | }
359 | $item .= $lister->formatList($articles, $headingStart, $headingCount);
360 | $item .= $this->getItemEnd();
361 |
362 | return $item;
363 | }
364 |
365 | /**
366 | * Return $this->listStart with attributes replaced.
367 | *
368 | * @access public
369 | * @return string List Start
370 | */
371 | public function getListStart() {
372 | return sprintf($this->listStart, $this->listAttributes);
373 | }
374 |
375 | /**
376 | * Return $this->itemStart with attributes replaced.
377 | *
378 | * @access public
379 | * @return string Item Start
380 | */
381 | public function getItemStart() {
382 | return sprintf($this->itemStart, $this->itemAttributes);
383 | }
384 |
385 | /**
386 | * Return $this->itemEnd with attributes replaced.
387 | *
388 | * @access public
389 | * @return string Item End
390 | */
391 | public function getItemEnd() {
392 | return $this->itemEnd;
393 | }
394 |
395 | /**
396 | * Get the article count message appropriate for this list.
397 | *
398 | * @access public
399 | * @param integer Count
400 | * @return string Message
401 | */
402 | protected function articleCountMessage($count) {
403 | $orderMethods = $this->getParameters()->getParameter('ordermethods');
404 | if (isset($orderMethods[0]) && $orderMethods[0] === 'category') {
405 | $message = 'categoryarticlecount';
406 | } else {
407 | $message = 'dpl_articlecount';
408 | }
409 | return '' . wfMessage($message, $count)->escaped() . '
';
410 | }
411 | }
412 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DynamicPageList3
2 |
3 | The **DynamicPageList3** extension is a reporting tool for MediaWiki, listing category members and intersections with various formats and details. For full documentation, see the [manual](https://help.gamepedia.com/Extension:DPL3/Manual).
4 |
5 | When invoked with a basic set of selection parameters DPL displays a list of pages in one or more categories. Selections may also be based on factors such as author, namespace, date, name pattern, usage of templates, or references to other articles. Output takes a variety of forms, some of which incorporate elements of selected articles.
6 |
7 | This extension is invoked with the parser function {{#dpl: .... }} or parser tag . A [Wikimedia](https://www.mediawiki.org/wiki/Extension:DynamicPageList_(Wikimedia))-compatible implementation of certain features can be invoked with <DynamicPageList>.
8 |
9 | Complex look ups can result in computationally expensive database queries. However, by default all output is cached for a period of one hour to reduce the need to rerun the query every page load. The [DPL:Parameters: Other Parameters](https://help.gamepedia.com/Extension:DPL3/Parameters:_Other_parameters#cacheperiod) manual page contains information on parameters that can be used to disable the cache and allow instant updates.
10 |
11 | * Manual and Complete Documentation: [Documentation at Gamepedia Help Wiki](https://help.gamepedia.com/Extension:DPL3/Manual)
12 | * Source Code: [Source code at Gitlab](https://gitlab.com/hydrawiki/extensions/DynamicPageList)
13 | * Bugs and Feature Requests: [Issues at Gitlab](https://gitlab.com/hydrawiki/extensions/DynamicPageList/issues)
14 | * Licensing: DynamicPageList3 is released under [GNU General Public License, version 2](https://opensource.org/licenses/GPL-2.0).
15 |
16 |
17 | ## Installation
18 | Please see the [releases page](https://gitlab.com/hydrawiki/extensions/DynamicPageList/releases) for the latest releases.
19 |
20 | ## Configuration
21 | These are DPL's configuration settings and along with their default values. To change them make sure they are defined before including the extension on the wiki. More configuration information is available on the **[MediaWiki extension page](https://www.mediawiki.org/wiki/Extension:DynamicPageList3#Configuration)**.
22 |
23 | **Note:** In release 3.0.4 the configuration variable name was changed from $dplSettings to $wgDplSettings. This was to faciliate compatibility with Mediawiki 1.25's extension registration change.
24 |
25 | | Setting | Default | Description |
26 | |:--------------------------------------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
27 | | $wgDplSettings['allowedNamespaces'] | null | By default all existing namespaces are used when DPL initializes. Customize this setting with an array of namespace constants to restrict DPL to work only in those namespaces. |
28 | | $wgDplSettings['allowUnlimitedCategories'] | false | Set this to true to ignore 'maxCategoryCount' and allow unlimited categories. Please note that large amounts of categories in a query can slow down or crash servers. |
29 | | $wgDplSettings['allowUnlimitedResults'] | false | Set this to true to ignore 'maxResultCount' and allow unlimited results. Please note that large result sets may result in slow or failed page loads. |
30 | | $wgDplSettings['behavingLikeIntersection'] | false | Set DPL to always behave like Extension:Intersection. |
31 | | $wgDplSettings['categoryStyleListCutoff'] | 6 | Maximum number of items in a category list before being cut off. |
32 | | $wgDplSettings['fixedCategories'] | [] | This does something with preventing DPL from "looking" at these categories. |
33 | | $wgDplSettings['functionalRichness'] | 3 | Set the level of parameters available to end users. |
34 | | $wgDplSettings['maxCategoryCount'] | 4 | Maximum number of categories to allow in queries. |
35 | | $wgDplSettings['minCategoryCount'] | 0 | Minimum number of categories to allow in queries. |
36 | | $wgDplSettings['maxResultCount'] | 500 | Maximum number of results to return from a query. |
37 | | $wgDplSettings['recursiveTagParse'] | false | Do recursive tag parsing on parser tags converting tags and functions such as magic words like {{PAGENAME}}. This is similar to the {{#dpl}} parser function call, but may not work exactly the same in all cases. |
38 | | $wgDplSettings['runFromProtectedPagesOnly'] | false | Set this to true to allow DPL to run from protected pages only. This is recommend if wiki administrators are having issues with malicious users creating computationally intensive queries. |
39 | | $wgDplSettings['handleSectionTag'] | false | Set this to true to have DPL handle tags outside of DPL parser tags. |
40 |
41 | The global variable {{manual|$wgNonincludableNamespaces}} is automatically respected by DPL. It will prevent the contents of the listed namespaces from appearing in DPL's output.
42 |
43 | **Note: $wgDplSettings['maxResultCount'] is a LIMIT *on the SQL query itself*. Some DPL query parameters like includematch are applied *after* the SQL query, however, so results here may easily be misleading.**
44 |
45 | ### Functional Richness
46 |
47 | DynamicPageList has many features which are unlocked based on the maximum functional richness level. There are some that can cause high CPU or database load and should be used sparingly.
48 |
49 | * $wgDplSettings['functionalRichness'] = 0 is equivalent to Wikimedia's [[Extension:DynamicPageList (Wikimedia)|Wikimedia]]
50 | * $wgDplSettings['functionalRichness'] = 1 adds additional formatting parameters
51 | * $wgDplSettings['functionalRichness'] = 2 adds performance equivalent features for templates and pagelinks
52 | * $wgDplSettings['functionalRichness'] = 3 allows more-expensive page inclusion features and regular expression queries.
53 | * $wgDplSettings['functionalRichness'] = 4 permits exotic and potentially dangerous batch update and delete operations; not recommended for public websites. Includes debugging parameters for testing and development.
54 |
55 |
56 | ## Usage
57 | ### Extended DPL Functionality
58 | Extended DPL is invoked by using the parser function {{#dpl: .... }}, or the parser extension tag .... .
59 |
60 | *See [Manual - **General Usage and Invocation Syntax**](https://help.gamepedia.com/Extension:DPL3/General_usage_and_invocation_syntax) and [DPL:Parameters: **Criteria for Page Selection**](https://help.gamepedia.com/Extension:DPL3/Parameters:_Criteria_for_page_selection)*
61 |
62 | ### Backwards Compatibility
63 | Functionality compatible with Wikimedia's DPL extension can be invoked with <DynamicPageList> .... </DynamicPageList>. Further information can be found on the [Compatibility manual page](https://help.gamepedia.com/Extension:DPL3/Compatibility).
64 |
65 | ## Usage Philosophy and Overview
66 | With the assumption there are some articles writtne about *countries* those articles will typically have three things in common:
67 | * They will belong to a common category
68 | * They will have a similar chapter structure, i.e. they will contain paragraphs named 'Religion' or 'History'
69 | * They will use a template which is used to present highly structured short data items ('Capital', 'Inhabitants', ..) in a nice way (e.g. as a wikitable)
70 |
71 | ### Generate a Report Based on **countries**
72 | If there was a need to assemble a report of what countries practice a certain religion this could be easily done with the **category** and **linksto** parameters.
73 |
74 | {{#dpl:
75 | category=countries
76 | |linksto=Pastafarianism
77 | }}
78 |
79 |
80 | With DPL one could:
81 | * Generate a list of all those articles (or a random sample)
82 | * Show metadata of the articles (popularity, date of last update, ..)
83 | * Show one or more chapters of the articles ('transclude' content)
84 | * Show parameter values which are passed to the common template
85 | * Order articles appropriately
86 | * Present the result in a sortable table (e.g.)
87 | * Generate multiple column output
88 |
89 | ### Which steps are necessary?
90 | **Find the articles you want to list:**
91 | * Select by a logical combination (AND,OR,NOT) of categories
92 | * Specify a range for the number of categories the article must be assigned to
93 | * Select by a logical combination (AND,OR,NOT) of namespaces
94 | * Define a pattern which must match the article's name
95 | * Name a page to which the article must or must not link
96 | * Name a template which the article must or must not use
97 | * Name a text pattern which must occur within external links from a page
98 | * Exclude or include redirections
99 | * Restrict your search to stable pages or quality pages ("flagged revisions")
100 | * Use other criteria for selection like author, date of last change etc.
101 | * Define regular expressions to match the contents of pages you want to include
102 |
103 | **Order the result list of articles according to**
104 | * Article Name
105 | * Article Size
106 | * Date of last change
107 | * Last User to Make an Edit
108 |
109 | **Define attributes you want to see**
110 | * Article Name
111 | * Article Namespace
112 | * Article Size
113 | * Date of Last Change
114 | * Date of Last Access
115 | * Last User to Make an Edit
116 |
117 | **Define contents you want to show**
118 | * Whole Article
119 | * Contents of Certain Sections (Identified by headings)
120 | * Text Portions (Defined by special marker tags in the article)
121 | * Values of template calls
122 | * Use a custom template to show output
123 |
124 | **Define the output format**
125 | * Specify header and footer for the default output
126 | * Use ordered list, unordered list
127 | * Use tables
128 | * Format table fields individually by applying templates to their content
129 | * Use category style listing
130 | * Truncate title or contents to a certain maximum length
131 | * Add a link to the article or to one or more of its sections
132 |
133 | ## Considerations
134 | ### Performance
135 | DPL's code execution and database access is typically fast for typical category and article look ups. However, using loose LIKE and REGEXP match parameters and/or requesting large data sets can result in long database access times. Parser time should also be kept in consideration. For example, having the query of image results go into a template that displays them will result in a parser media transform for each one. This can quickly eat up 2MBs of RAM per media transform.
136 |
137 | ## See Also
138 | ### Further Reading
139 | DPL can do much more than we can explain here. A complete **[manual](https://help.gamepedia.com/Extension:DPL3/Manual)** is available with full parameter documentation.
--------------------------------------------------------------------------------
/README.mediawiki:
--------------------------------------------------------------------------------
1 | {{TNT|Extension
2 | |name = DynamicPageList3
3 | |status = stable
4 | |type1 = tag
5 | |type2 = parser function
6 | |author = '''[[User:Alexia_E._Smith|Alexia E. Smith]]''', [[User:Algorithmix|Algorithmix]], [[meta:User:Dangerman|Dangerville]], [[w:en:User:IlyaHaykinson|IlyaHaykinson]], [[User:Theaitetos|Theaitetos]], [[w:de:Benutzer:Unendlich|Unendlich]]
7 | |image =
8 | |version = 3.3.3
9 | |update = 2010-04-03
10 | |mediawiki = 1.27+
11 | |php = 5.6+
12 | |download = {{TNT|GitlabDownload|HydraWiki/Extensions|DynamicPageList}}
13 | |hook1 = ParserFirstCallInit
14 | |description = '''Create lists''' of other articles based on their ''category, namespace, title, references'' or ''template usage'' and '''include contents''' or arguments of template calls of those articles into your page.
15 | |license = GPL-2.0+
16 | |example = [http://help.gamepedia.com/DPL:Manual DPL:Manual - Gamepedia Help Wiki]
17 | }}
18 |
19 | :{{note}} ''This is a continuation and fork of [[Extension:DynamicPageList (third-party)|DynamicPageList (third-party)]]. It is a fully reworked object oriented code base, significant code and database speed improvements, and is fully backwards compatible with previous versions.''
20 |
21 | The '''DynamicPageList3''' extension is a reporting tool for MediaWiki, listing category members and intersections with various formats and details. For full documentation, see the [http://help.gamepedia.com/DPL:Manual manual].
22 |
23 | When invoked with a basic set of selection parameters DPL displays a list of pages in one or more categories. Selections may also be based on factors such as author, namespace, date, name pattern, usage of templates, or references to other articles. Output takes a variety of forms, some of which incorporate elements of selected articles.
24 |
25 | This extension is invoked with the parser function {{#dpl: .... }} or parser tag . A [[Extension:DynamicPageList (Wikimedia)|Wikimedia]]-compatible implementation of certain features can be invoked with <DynamicPageList>.
26 |
27 | Complex look ups can result in computationally expensive database queries. However, by default all output is cached for a period of one hour to reduce the need to rerun the query every page load. The [http://help.gamepedia.com/DPL:Parameters:_Other_Parameters#cacheperiod DPL:Parameters: Other Parameters] manual page contains information on parameters that can be used to disable the cache and allow instant updates.
28 |
29 | ;Manual and Complete Documentation: [http://help.gamepedia.com/DPL:Manual Documentation at Gamepedia Help Wiki]
30 | ;Source Code: [https://gitlab.com/hydrawiki/extensions/DynamicPageList Source code at Gitlab]
31 | ;Bugs and Feature Requests: [https://gitlab.com/hydrawiki/extensions/DynamicPageList/issues Issues at Gitlab]
32 | ;Licensing: DynamicPageList3 is released under [https://opensource.org/licenses/GPL-2.0 GNU General Public License, version 2].
33 |
34 |
35 | == Installation ==
36 | {{TNT|ExtensionInstall
37 | |DynamicPageList
38 | |download-link=[https://gitlab.com/hydrawiki/extensions/DynamicPageList/-/archive/3.3.3/DynamicPageList-3.3.3.tar.bz2 Download, extract]
39 | |custom-steps=* [[#Configuration|If necessary configure as required.]]
40 | |registration=required
41 | }}
42 |
43 | == Configuration ==
44 | These are DPL's configuration settings and along with their default values. To change them make sure they are defined before including the extension on the wiki. More configuration information is available on the '''[http://help.gamepedia.com/DPL:Source_and_Installation#Configuration Source and Installation]''' manual page.
45 |
46 | '''Note:''' In release 3.0.4 the configuration variable name was changed from $dplSettings to $wgDplSettings. This was to faciliate compatibility with Mediawiki 1.25's extension registration change.
47 |
48 | {|class = "wikitable"
49 | !Setting
50 | !Default
51 | !Description
52 | |-
53 | |$wgDplSettings['allowedNamespaces'] || null || By default all existing namespaces are used when DPL initializes. Customize this setting with an array of namespace constants to restrict DPL to work only in those namespaces.
54 | |-
55 | |$wgDplSettings['allowUnlimitedCategories'] || false || Set this to true to ignore 'maxCategoryCount' and allow unlimited categories. Please note that large amounts of categories in a query can slow down or crash servers.
56 | |-
57 | |$wgDplSettings['allowUnlimitedResults'] || false || Set this to true to ignore 'maxResultCount' and allow unlimited results. Please note that large result sets may result in slow or failed page loads.
58 | |-
59 | |$wgDplSettings['behavingLikeIntersection'] || false || Set DPL to always behave like Extension:Intersection.
60 | |-
61 | |$wgDplSettings['categoryStyleListCutoff'] || 6 || Maximum number of items in a category list before being cut off.
62 | |-
63 | |$wgDplSettings['fixedCategories'] || empty array || This does something with preventing DPL from "looking" at these categories.
64 | |-
65 | |$wgDplSettings['functionalRichness'] || 3, 0 if $dplMigrationTesting is set to true || Set the level of parameters available to end users.
66 | |-
67 | |$wgDplSettings['maxCategoryCount'] || 4 || Maximum number of categories to allow in queries.
68 | |-
69 | |$wgDplSettings['minCategoryCount'] || 0 || Minimum number of categories to allow in queries.
70 | |-
71 | |$wgDplSettings['maxResultCount'] || 500 || Maximum number of results to return from a query.
72 | |-
73 | |$wgDplSettings['recursiveTagParse'] || false || Do recursive tag parsing on parser tags converting tags and functions such as magic words like {{PAGENAME}} . This is similar to the {{#dpl}} parser function call, but may not work exactly the same in all cases.
74 | |-
75 | |$wgDplSettings['runFromProtectedPagesOnly'] || false || Set this to true to allow DPL to run from protected pages only. This is recommend if wiki administrators are having issues with malicious users creating computationally intensive queries.
76 | |-
77 | |$wgDplSettings['handleSectionTag'] || false || Set this to true to have DPL handle tags outside of DPL parser tags.
78 | |}
79 |
80 | The global variable {{manual|$wgNonincludableNamespaces}} is automatically respected by DPL. It will prevent the contents of the listed namespaces from appearing in DPL's output.
81 |
82 | '''Note: $wgDplSettings['maxResultCount'] is a LIMIT ''on the SQL query itself''. Some DPL query parameters like includematch are applied ''after'' the SQL query, however, so results here may easily be misleading.'''
83 |
84 | === Functional Richness ===
85 |
86 | DynamicPageList has many features which are unlocked based on the maximum functional richness level. There are some that can cause high CPU or database load and should be used sparingly.
87 |
88 | * $wgDplSettings['functionalRichness'] = 0 is equivalent to Wikimedia's [[Extension:DynamicPageList (Wikimedia)|Wikimedia]]
89 | * $wgDplSettings['functionalRichness'] = 1 adds additional formatting parameters
90 | * $wgDplSettings['functionalRichness'] = 2 adds performance equivalent features for templates and pagelinks
91 | * $wgDplSettings['functionalRichness'] = 3 allows more-expensive page inclusion features and regular expression queries.
92 | * $wgDplSettings['functionalRichness'] = 4 permits exotic and potentially dangerous batch update and delete operations; not recommended for public websites. Includes debugging parameters for testing and development.
93 |
94 |
95 | == Usage ==
96 | ===Extended DPL Functionality===
97 | Extended DPL is invoked by using the parser function {{#dpl: .... }}, or the parser extension tag .... .
98 |
99 | :''See: [http://help.gamepedia.com/DPL:General_Usage_and_Invocation_Syntax Manual - '''General Usage and Invocation Syntax'''] and [http://help.gamepedia.com/DPL:Parameters:_Criteria_for_Page_Selection DPL:Parameters: '''Criteria for Page Selection''']''
100 |
101 | === Backwards Compatibility ===
102 | Functionality compatible with Wikimedia's DPL extension can be invoked with <DynamicPageList> .... </DynamicPageList>. Further information can be found on the [http://help.gamepedia.com/DPL:Compatibility Compatibility manual page].
103 |
104 | ==Usage Philosophy and Overview==
105 | With the assumption there are some articles written about ''countries'' those articles will typically have three things in common:
106 | * They will belong to a common category
107 | * They will have a similar chapter structure, i.e. they will contain paragraphs named 'Religion' or 'History'
108 | * They will use a template which is used to present highly structured short data items ('Capital', 'Inhabitants', ..) in a nice way (e.g. as a wikitable)
109 |
110 | ===Generate a Report Based on '''countries'''===
111 | If there was a need to assemble a report of what countries practice a certain religion this could be easily done with the '''category''' and '''linksto''' parameters.
112 |
113 | {{#dpl:
114 | category=countries
115 | |linksto=Pastafarianism
116 | }}
117 |
118 |
119 | With DPL one could:
120 | * Generate a list of all those articles (or a random sample)
121 | * Show metadata of the articles (popularity, date of last update, ..)
122 | * Show one or more chapters of the articles ('transclude' content)
123 | * Show parameter values which are passed to the common template
124 | * Order articles appropriately
125 | * Present the result in a sortable table (e.g.)
126 | * Generate multiple column output
127 |
128 | ===Which steps are necessary?===
129 | '''Find the articles you want to list:'''
130 | * Select by a logical combination (AND,OR,NOT) of categories
131 | * Specify a range for the number of categories the article must be assigned to
132 | * Select by a logical combination (AND,OR,NOT) of namespaces
133 | * Define a pattern which must match the article's name
134 | * Name a page to which the article must or must not link
135 | * Name a template which the article must or must not use
136 | * Name a text pattern which must occur within external links from a page
137 | * Exclude or include redirections
138 | * Restrict your search to stable pages or quality pages ("flagged revisions")
139 | * Use other criteria for selection like author, date of last change etc.
140 | * Define regular expressions to match the contents of pages you want to include
141 |
142 | '''Order the result list of articles according to'''
143 | * Article Name
144 | * Article Size
145 | * Date of last change
146 | * Last User to Make an Edit
147 |
148 | '''Define attributes you want to see'''
149 | * Article Name
150 | * Article Namespace
151 | * Article Size
152 | * Date of Last Change
153 | * Date of Last Access
154 | * Last User to Make an Edit
155 |
156 | '''Define contents you want to show'''
157 | * Whole Article
158 | * Contents of Certain Sections (Identified by headings)
159 | * Text Portions (Defined by special marker tags in the article)
160 | * Values of template calls
161 | * Use a custom template to show output
162 |
163 | '''Define the output format'''
164 | * Specify header and footer for the default output
165 | * Use ordered list, unordered list
166 | * Use tables
167 | * Format table fields individually by applying templates to their content
168 | * Use category style listing
169 | * Truncate title or contents to a certain maximum length
170 | * Add a link to the article or to one or more of its sections
171 |
172 | ==Considerations==
173 | ===Performance===
174 | DPL's code execution and database access is typically fast for typical category and article look ups. However, using loose LIKE and REGEXP match parameters and/or requesting large data sets can result in long database access times. Parser time should also be kept in consideration. For example, having the query of image results go into a template that displays them will result in a parser media transform for each one. This can quickly eat up 2MBs of RAM per media transform.
175 |
176 | ==See Also==
177 | ===Further Reading===
178 | DPL can do much more than we can explain here. A complete '''[http://help.gamepedia.com/DPL:Manual manual]''' is available with full parameter documentation.
179 |
180 | [[Category:Category extensions{{#translation:}}]]
181 | [[Category:List extensions{{#translation:}}]]
182 | [[Category:Namespace extensions{{#translation:}}]]
183 | [[Category:Special page extensions{{#translation:}}]]
184 | [[Category:Table extensions{{#translation:}}]]
185 | [[Category:Page content extensions{{#translation:}}]]
186 | [[Category:Tag cloud extensions{{#translation:}}]]
187 | [[Category:Category intersection extensions{{#translation:}}]]
--------------------------------------------------------------------------------
/classes/Article.php:
--------------------------------------------------------------------------------
1 | mTitle = $title;
194 | $this->mNamespace = $namespace;
195 | }
196 |
197 | /**
198 | * Initialize a new instance from a database row.
199 | *
200 | * @access public
201 | * @param array Database Row
202 | * @param object \DPL\Parameters Object
203 | * @param object Mediawiki Title Object
204 | * @param integer Page Namespace ID
205 | * @param string Page Title as Selected from Query
206 | * @return object \DPL\Article Object
207 | */
208 | public static function newFromRow($row, Parameters $parameters, \Title $title, $pageNamespace, $pageTitle) {
209 | global $wgLang, $wgContLang;
210 |
211 | $article = new Article($title, $pageNamespace);
212 |
213 | $titleText = $title->getText();
214 | if ($parameters->getParameter('shownamespace') === true) {
215 | $titleText = $title->getPrefixedText();
216 | }
217 | $replaceInTitle = $parameters->getParameter('replaceintitle');
218 | if (is_array($replaceInTitle) && count($replaceInTitle) === 2) {
219 | $titleText = preg_replace($replaceInTitle[0], $replaceInTitle[1], $titleText);
220 | }
221 |
222 | //Chop off title if longer than the 'titlemaxlen' parameter.
223 | if ($parameters->getParameter('titlemaxlen') !== null && strlen($titleText) > $parameters->getParameter('titlemaxlen')) {
224 | $titleText = substr($titleText, 0, $parameters->getParameter('titlemaxlen')) . '...';
225 | }
226 | if ($parameters->getParameter('showcurid') === true && isset($row['page_id'])) {
227 | $articleLink = '[' . $title->getLinkURL(['curid' => $row['page_id']]) . ' ' . htmlspecialchars($titleText) . ']';
228 | } else {
229 | $articleLink = '[[' . ($parameters->getParameter('escapelinks') && ($pageNamespace == NS_CATEGORY || $pageNamespace == NS_FILE) ? ':' : '') . $title->getFullText() . '|' . htmlspecialchars($titleText) . ']]';
230 | }
231 |
232 | $article->mLink = $articleLink;
233 |
234 | //get first char used for category-style output
235 | if (isset($row['sortkey'])) {
236 | $article->mStartChar = $wgContLang->convert($wgContLang->firstChar($row['sortkey']));
237 | } else {
238 | $article->mStartChar = $wgContLang->convert($wgContLang->firstChar($pageTitle));
239 | }
240 |
241 | $article->mID = intval($row['page_id']);
242 |
243 | //External link
244 | if (isset($row['el_to'])) {
245 | $article->mExternalLink = $row['el_to'];
246 | }
247 |
248 | //SHOW PAGE_COUNTER
249 | if (isset($row['page_counter'])) {
250 | $article->mCounter = intval($row['page_counter']);
251 | }
252 |
253 | //SHOW PAGE_SIZE
254 | if (isset($row['page_len'])) {
255 | $article->mSize = intval($row['page_len']);
256 | }
257 | //STORE initially selected PAGE
258 | if (is_array($parameters->getParameter('linksto')) && (count($parameters->getParameter('linksto')) || count($parameters->getParameter('linksfrom')))) {
259 | if (!isset($row['sel_title'])) {
260 | $article->mSelTitle = 'unknown page';
261 | $article->mSelNamespace = 0;
262 | } else {
263 | $article->mSelTitle = $row['sel_title'];
264 | $article->mSelNamespace = $row['sel_ns'];
265 | }
266 | }
267 |
268 | //STORE selected image
269 | if (is_array($parameters->getParameter('imageused')) && count($parameters->getParameter('imageused')) > 0) {
270 | if (!isset($row['image_sel_title'])) {
271 | $article->mImageSelTitle = 'unknown image';
272 | } else {
273 | $article->mImageSelTitle = $row['image_sel_title'];
274 | }
275 | }
276 |
277 | if ($parameters->getParameter('goal') != 'categories') {
278 | //REVISION SPECIFIED
279 | if ($parameters->getParameter('lastrevisionbefore') || $parameters->getParameter('allrevisionsbefore') || $parameters->getParameter('firstrevisionsince') || $parameters->getParameter('allrevisionssince')) {
280 | $article->mRevision = $row['rev_id'];
281 | $article->mUser = $row['rev_user_text'];
282 | $article->mDate = $row['rev_timestamp'];
283 | $article->mComment = $row['rev_comment'];
284 | }
285 |
286 | //SHOW "PAGE_TOUCHED" DATE, "FIRSTCATEGORYDATE" OR (FIRST/LAST) EDIT DATE
287 | if ($parameters->getParameter('addpagetoucheddate')) {
288 | $article->mDate = $row['page_touched'];
289 | } elseif ($parameters->getParameter('addfirstcategorydate')) {
290 | $article->mDate = $row['cl_timestamp'];
291 | } elseif ($parameters->getParameter('addeditdate') && isset($row['rev_timestamp'])) {
292 | $article->mDate = $row['rev_timestamp'];
293 | } elseif ($parameters->getParameter('addeditdate') && isset($row['page_touched'])) {
294 | $article->mDate = $row['page_touched'];
295 | }
296 |
297 | //Time zone adjustment
298 | if ($article->mDate) {
299 | $article->mDate = $wgLang->userAdjust($article->mDate);
300 | }
301 |
302 | if ($article->mDate && $parameters->getParameter('userdateformat')) {
303 | //Apply the userdateformat
304 | $article->myDate = gmdate($parameters->getParameter('userdateformat'), wfTimeStamp(TS_UNIX, $article->mDate));
305 | }
306 | // CONTRIBUTION, CONTRIBUTOR
307 | if ($parameters->getParameter('addcontribution')) {
308 | $article->mContribution = $row['contribution'];
309 | // This is the wrong check since the ActorMigration may be in progress
310 | // https://www.mediawiki.org/wiki/Actor_migration
311 | if ( class_exists( 'ActorMigration' ) ) {
312 | $article->mContributor = User::newFromActorId( $row['contributor'] )->getName();
313 | } else {
314 | $article->mContributor = $row['contributor'];
315 | }
316 | $article->mContrib = substr('*****************', 0, (int) round(log($row['contribution'])));
317 | }
318 |
319 | //USER/AUTHOR(S)
320 | // because we are going to do a recursive parse at the end of the output phase
321 | // we have to generate wiki syntax for linking to a user´s homepage
322 | if ($parameters->getParameter('adduser') || $parameters->getParameter('addauthor') || $parameters->getParameter('addlasteditor')) {
323 | $article->mUserLink = '[[User:' . $row['rev_user_text'] . '|' . $row['rev_user_text'] . ']]';
324 | $article->mUser = $row['rev_user_text'];
325 | }
326 |
327 | //CATEGORY LINKS FROM CURRENT PAGE
328 | if ($parameters->getParameter('addcategories') && ($row['cats'])) {
329 | $artCatNames = explode(' | ', $row['cats']);
330 | foreach ($artCatNames as $artCatName) {
331 | $article->mCategoryLinks[] = '[[:Category:' . $artCatName . '|' . str_replace('_', ' ', $artCatName) . ']]';
332 | $article->mCategoryTexts[] = str_replace('_', ' ', $artCatName);
333 | }
334 | }
335 | // PARENT HEADING (category of the page, editor (user) of the page, etc. Depends on ordermethod param)
336 | if ($parameters->getParameter('headingmode') != 'none') {
337 | switch ($parameters->getParameter('ordermethod')[0]) {
338 | case 'category':
339 | //Count one more page in this heading
340 | self::$headings[$row['cl_to']] = (isset(self::$headings[$row['cl_to']]) ? self::$headings[$row['cl_to']] + 1 : 1);
341 | if ($row['cl_to'] == '') {
342 | //uncategorized page (used if ordermethod=category,...)
343 | $article->mParentHLink = '[[:Special:Uncategorizedpages|' . wfMessage('uncategorizedpages') . ']]';
344 | } else {
345 | $article->mParentHLink = '[[:Category:' . $row['cl_to'] . '|' . str_replace('_', ' ', $row['cl_to']) . ']]';
346 | }
347 | break;
348 | case 'user':
349 | self::$headings[$row['rev_user_text']] = (isset(self::$headings[$row['rev_user_text']]) ? self::$headings[$row['rev_user_text']] + 1 : 1);
350 | if ($row['rev_user'] == 0) { //anonymous user
351 | $article->mParentHLink = '[[User:' . $row['rev_user_text'] . '|' . $row['rev_user_text'] . ']]';
352 | } else {
353 | $article->mParentHLink = '[[User:' . $row['rev_user_text'] . '|' . $row['rev_user_text'] . ']]';
354 | }
355 | break;
356 | }
357 | }
358 | }
359 |
360 | return $article;
361 | }
362 |
363 | /**
364 | * Returns all heading information processed from all newly instantiated article objects.
365 | *
366 | * @access public
367 | * @return array Headings
368 | */
369 | public static function getHeadings() {
370 | return self::$headings;
371 | }
372 |
373 | /**
374 | * Reset the headings to their initial state.
375 | * Ideally this Article class should not exist and be handled by the built in MediaWiki class.
376 | * Bug: https://jira/browse/HYD-913
377 | *
378 | * @access public
379 | * @return void
380 | */
381 | public static function resetHeadings() {
382 | self::$headings = [];
383 | }
384 |
385 | /**
386 | * Get the formatted date for this article if available.
387 | *
388 | * @access public
389 | * @return mixed Formatted string or null for none set.
390 | */
391 | public function getDate() {
392 | global $wgLang;
393 | if ($this->myDate !== null) {
394 | return $this->myDate;
395 | } elseif ($this->mDate !== null) {
396 | return $wgLang->timeanddate($article->mDate, true);
397 | }
398 | return null;
399 | }
400 | }
401 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The GNU General Public License, Version 2, June 1991 (GPLv2)
2 | ============================================================
3 |
4 | > Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 | > 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
6 |
7 | Everyone is permitted to copy and distribute verbatim copies of this license
8 | document, but changing it is not allowed.
9 |
10 |
11 | Preamble
12 | --------
13 |
14 | The licenses for most software are designed to take away your freedom to share
15 | and change it. By contrast, the GNU General Public License is intended to
16 | guarantee your freedom to share and change free software--to make sure the
17 | software is free for all its users. This General Public License applies to most
18 | of the Free Software Foundation's software and to any other program whose
19 | authors commit to using it. (Some other Free Software Foundation software is
20 | covered by the GNU Lesser General Public License instead.) You can apply it to
21 | your programs, too.
22 |
23 | When we speak of free software, we are referring to freedom, not price. Our
24 | General Public Licenses are designed to make sure that you have the freedom to
25 | distribute copies of free software (and charge for this service if you wish),
26 | that you receive source code or can get it if you want it, that you can change
27 | the software or use pieces of it in new free programs; and that you know you can
28 | do these things.
29 |
30 | To protect your rights, we need to make restrictions that forbid anyone to deny
31 | you these rights or to ask you to surrender the rights. These restrictions
32 | translate to certain responsibilities for you if you distribute copies of the
33 | software, or if you modify it.
34 |
35 | For example, if you distribute copies of such a program, whether gratis or for a
36 | fee, you must give the recipients all the rights that you have. You must make
37 | sure that they, too, receive or can get the source code. And you must show them
38 | these terms so they know their rights.
39 |
40 | We protect your rights with two steps: (1) copyright the software, and (2) offer
41 | you this license which gives you legal permission to copy, distribute and/or
42 | modify the software.
43 |
44 | Also, for each author's protection and ours, we want to make certain that
45 | everyone understands that there is no warranty for this free software. If the
46 | software is modified by someone else and passed on, we want its recipients to
47 | know that what they have is not the original, so that any problems introduced by
48 | others will not reflect on the original authors' reputations.
49 |
50 | Finally, any free program is threatened constantly by software patents. We wish
51 | to avoid the danger that redistributors of a free program will individually
52 | obtain patent licenses, in effect making the program proprietary. To prevent
53 | this, we have made it clear that any patent must be licensed for everyone's free
54 | use or not licensed at all.
55 |
56 | The precise terms and conditions for copying, distribution and modification
57 | follow.
58 |
59 |
60 | Terms And Conditions For Copying, Distribution And Modification
61 | ---------------------------------------------------------------
62 |
63 | **0.** This License applies to any program or other work which contains a notice
64 | placed by the copyright holder saying it may be distributed under the terms of
65 | this General Public License. The "Program", below, refers to any such program or
66 | work, and a "work based on the Program" means either the Program or any
67 | derivative work under copyright law: that is to say, a work containing the
68 | Program or a portion of it, either verbatim or with modifications and/or
69 | translated into another language. (Hereinafter, translation is included without
70 | limitation in the term "modification".) Each licensee is addressed as "you".
71 |
72 | Activities other than copying, distribution and modification are not covered by
73 | this License; they are outside its scope. The act of running the Program is not
74 | restricted, and the output from the Program is covered only if its contents
75 | constitute a work based on the Program (independent of having been made by
76 | running the Program). Whether that is true depends on what the Program does.
77 |
78 | **1.** You may copy and distribute verbatim copies of the Program's source code
79 | as you receive it, in any medium, provided that you conspicuously and
80 | appropriately publish on each copy an appropriate copyright notice and
81 | disclaimer of warranty; keep intact all the notices that refer to this License
82 | and to the absence of any warranty; and give any other recipients of the Program
83 | a copy of this License along with the Program.
84 |
85 | You may charge a fee for the physical act of transferring a copy, and you may at
86 | your option offer warranty protection in exchange for a fee.
87 |
88 | **2.** You may modify your copy or copies of the Program or any portion of it,
89 | thus forming a work based on the Program, and copy and distribute such
90 | modifications or work under the terms of Section 1 above, provided that you also
91 | meet all of these conditions:
92 |
93 | * **a)** You must cause the modified files to carry prominent notices stating
94 | that you changed the files and the date of any change.
95 |
96 | * **b)** You must cause any work that you distribute or publish, that in whole
97 | or in part contains or is derived from the Program or any part thereof, to
98 | be licensed as a whole at no charge to all third parties under the terms of
99 | this License.
100 |
101 | * **c)** If the modified program normally reads commands interactively when
102 | run, you must cause it, when started running for such interactive use in the
103 | most ordinary way, to print or display an announcement including an
104 | appropriate copyright notice and a notice that there is no warranty (or
105 | else, saying that you provide a warranty) and that users may redistribute
106 | the program under these conditions, and telling the user how to view a copy
107 | of this License. (Exception: if the Program itself is interactive but does
108 | not normally print such an announcement, your work based on the Program is
109 | not required to print an announcement.)
110 |
111 | These requirements apply to the modified work as a whole. If identifiable
112 | sections of that work are not derived from the Program, and can be reasonably
113 | considered independent and separate works in themselves, then this License, and
114 | its terms, do not apply to those sections when you distribute them as separate
115 | works. But when you distribute the same sections as part of a whole which is a
116 | work based on the Program, the distribution of the whole must be on the terms of
117 | this License, whose permissions for other licensees extend to the entire whole,
118 | and thus to each and every part regardless of who wrote it.
119 |
120 | Thus, it is not the intent of this section to claim rights or contest your
121 | rights to work written entirely by you; rather, the intent is to exercise the
122 | right to control the distribution of derivative or collective works based on the
123 | Program.
124 |
125 | In addition, mere aggregation of another work not based on the Program with the
126 | Program (or with a work based on the Program) on a volume of a storage or
127 | distribution medium does not bring the other work under the scope of this
128 | License.
129 |
130 | **3.** You may copy and distribute the Program (or a work based on it, under
131 | Section 2) in object code or executable form under the terms of Sections 1 and 2
132 | above provided that you also do one of the following:
133 |
134 | * **a)** Accompany it with the complete corresponding machine-readable source
135 | code, which must be distributed under the terms of Sections 1 and 2 above on
136 | a medium customarily used for software interchange; or,
137 |
138 | * **b)** Accompany it with a written offer, valid for at least three years, to
139 | give any third party, for a charge no more than your cost of physically
140 | performing source distribution, a complete machine-readable copy of the
141 | corresponding source code, to be distributed under the terms of Sections 1
142 | and 2 above on a medium customarily used for software interchange; or,
143 |
144 | * **c)** Accompany it with the information you received as to the offer to
145 | distribute corresponding source code. (This alternative is allowed only for
146 | noncommercial distribution and only if you received the program in object
147 | code or executable form with such an offer, in accord with Subsection b
148 | above.)
149 |
150 | The source code for a work means the preferred form of the work for making
151 | modifications to it. For an executable work, complete source code means all the
152 | source code for all modules it contains, plus any associated interface
153 | definition files, plus the scripts used to control compilation and installation
154 | of the executable. However, as a special exception, the source code distributed
155 | need not include anything that is normally distributed (in either source or
156 | binary form) with the major components (compiler, kernel, and so on) of the
157 | operating system on which the executable runs, unless that component itself
158 | accompanies the executable.
159 |
160 | If distribution of executable or object code is made by offering access to copy
161 | from a designated place, then offering equivalent access to copy the source code
162 | from the same place counts as distribution of the source code, even though third
163 | parties are not compelled to copy the source along with the object code.
164 |
165 | **4.** You may not copy, modify, sublicense, or distribute the Program except as
166 | expressly provided under this License. Any attempt otherwise to copy, modify,
167 | sublicense or distribute the Program is void, and will automatically terminate
168 | your rights under this License. However, parties who have received copies, or
169 | rights, from you under this License will not have their licenses terminated so
170 | long as such parties remain in full compliance.
171 |
172 | **5.** You are not required to accept this License, since you have not signed
173 | it. However, nothing else grants you permission to modify or distribute the
174 | Program or its derivative works. These actions are prohibited by law if you do
175 | not accept this License. Therefore, by modifying or distributing the Program (or
176 | any work based on the Program), you indicate your acceptance of this License to
177 | do so, and all its terms and conditions for copying, distributing or modifying
178 | the Program or works based on it.
179 |
180 | **6.** Each time you redistribute the Program (or any work based on the
181 | Program), the recipient automatically receives a license from the original
182 | licensor to copy, distribute or modify the Program subject to these terms and
183 | conditions. You may not impose any further restrictions on the recipients'
184 | exercise of the rights granted herein. You are not responsible for enforcing
185 | compliance by third parties to this License.
186 |
187 | **7.** If, as a consequence of a court judgment or allegation of patent
188 | infringement or for any other reason (not limited to patent issues), conditions
189 | are imposed on you (whether by court order, agreement or otherwise) that
190 | contradict the conditions of this License, they do not excuse you from the
191 | conditions of this License. If you cannot distribute so as to satisfy
192 | simultaneously your obligations under this License and any other pertinent
193 | obligations, then as a consequence you may not distribute the Program at all.
194 | For example, if a patent license would not permit royalty-free redistribution of
195 | the Program by all those who receive copies directly or indirectly through you,
196 | then the only way you could satisfy both it and this License would be to refrain
197 | entirely from distribution of the Program.
198 |
199 | If any portion of this section is held invalid or unenforceable under any
200 | particular circumstance, the balance of the section is intended to apply and the
201 | section as a whole is intended to apply in other circumstances.
202 |
203 | It is not the purpose of this section to induce you to infringe any patents or
204 | other property right claims or to contest validity of any such claims; this
205 | section has the sole purpose of protecting the integrity of the free software
206 | distribution system, which is implemented by public license practices. Many
207 | people have made generous contributions to the wide range of software
208 | distributed through that system in reliance on consistent application of that
209 | system; it is up to the author/donor to decide if he or she is willing to
210 | distribute software through any other system and a licensee cannot impose that
211 | choice.
212 |
213 | This section is intended to make thoroughly clear what is believed to be a
214 | consequence of the rest of this License.
215 |
216 | **8.** If the distribution and/or use of the Program is restricted in certain
217 | countries either by patents or by copyrighted interfaces, the original copyright
218 | holder who places the Program under this License may add an explicit
219 | geographical distribution limitation excluding those countries, so that
220 | distribution is permitted only in or among countries not thus excluded. In such
221 | case, this License incorporates the limitation as if written in the body of this
222 | License.
223 |
224 | **9.** The Free Software Foundation may publish revised and/or new versions of
225 | the General Public License from time to time. Such new versions will be similar
226 | in spirit to the present version, but may differ in detail to address new
227 | problems or concerns.
228 |
229 | Each version is given a distinguishing version number. If the Program specifies
230 | a version number of this License which applies to it and "any later version",
231 | you have the option of following the terms and conditions either of that version
232 | or of any later version published by the Free Software Foundation. If the
233 | Program does not specify a version number of this License, you may choose any
234 | version ever published by the Free Software Foundation.
235 |
236 | **10.** If you wish to incorporate parts of the Program into other free programs
237 | whose distribution conditions are different, write to the author to ask for
238 | permission. For software which is copyrighted by the Free Software Foundation,
239 | write to the Free Software Foundation; we sometimes make exceptions for this.
240 | Our decision will be guided by the two goals of preserving the free status of
241 | all derivatives of our free software and of promoting the sharing and reuse of
242 | software generally.
243 |
244 |
245 | No Warranty
246 | -----------
247 |
248 | **11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
249 | THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
250 | STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
251 | "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
252 | BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
253 | PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
254 | PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
255 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
256 |
257 | **12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
258 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
259 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
260 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
261 | INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
262 | BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
263 | FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
264 | OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
--------------------------------------------------------------------------------