Difference between revisions of "TemplatedPageList"

From Wiki4Intranet
Jump to: navigation, search
Line 1: Line 1:
This is Yet Another Page Listing extension. It is similar to DynamicPageList & company ([[mediawikiwiki:Extension:DynamicPageList (Wikimedia)|Intersection / Wikimedia's DPL]], [[mediawikiwiki:Extension:DynamicPageList (third-party)|3rd party's DPL]], [[mediawikiwiki:Extension:SubPageList|SubPageList]], [[mediawikiwiki:Extension:SubPageList2|SubPageList2]], [[mediawikiwiki:Extension:SubPageList2|SubPageList3]], etc), but the code is simpler and the functionality is more advanced. Initially, it was just an improved [[mediawikiwiki:Extension:SubPageList2|SubPageList2]].
+
This is Yet Another Page Listing extension. It is similar to DynamicPageList & company ([[mediawikiwiki:Extension:DynamicPageList (Wikimedia)|Intersection / Wikimedia’s DPL]], [[mediawikiwiki:Extension:DynamicPageList (third-party)|3rd party’s DPL]], [[mediawikiwiki:Extension:SubPageList|SubPageList]], [[mediawikiwiki:Extension:SubPageList2|SubPageList2]], [[mediawikiwiki:Extension:SubPageList2|SubPageList3]], etc), but the code is simpler and the functionality is more advanced.
 +
 
 +
Initially, it was just an improved [[mediawikiwiki:Extension:SubPageList2|SubPageList2]]. Then it survived several refactorings (previous authors probably were C-coders and big lovers of rounding integers (<tt>round(intval($options['count']))</tt>)).
  
 
Features:
 
Features:
Line 10: Line 12:
 
* License: GPLv2 or higher
 
* License: GPLv2 or higher
 
* Code is part of [[MediaWiki4Intranet]] and lives on [http://code.google.com/p/mediawiki4intranet/source/browse/?name=mw4install#hg%2Fextensions%2FSubPageList2 Google Code]
 
* Code is part of [[MediaWiki4Intranet]] and lives on [http://code.google.com/p/mediawiki4intranet/source/browse/?name=mw4install#hg%2Fextensions%2FSubPageList2 Google Code]
 +
 +
TODO:
 +
* Support «materialization» of lists in the DB, enable caching and support correct refreshing of parser cache by saving dependencies into database.
  
 
== Automatic subpage listing ==
 
== Automatic subpage listing ==
Line 21: Line 26:
 
== &lt;subpagelist&gt; syntax ==
 
== &lt;subpagelist&gt; syntax ==
  
Syntax is backwards compatible with [[mediawikiwiki:Extension:DynamicPageList_(Wikimedia)|Wikimedia's DynamicPageList]] syntax,
+
Syntax is backwards compatible with [[mediawikiwiki:Extension:DynamicPageList_(Wikimedia)|Wikimedia’s DynamicPageList]] syntax,
 
except for 'firstcategorydate' related stuff. The text inside <tt>&lt;subpagelist></tt>
 
except for 'firstcategorydate' related stuff. The text inside <tt>&lt;subpagelist></tt>
 
is preprocessed, so you can use templates, magic words and parser functions
 
is preprocessed, so you can use templates, magic words and parser functions
Line 32: Line 37:
 
=== Page selection ===
 
=== Page selection ===
  
; namespace = Main|Talk|...: Restrict list to some namespaces
+
; namespace = Main|Talk|: Restrict list to some namespaces
; category = A|B|C<br /> category = D|E: Restrict page list to pages which are in one of these categories. This option may be specified multiple times, following occurrences will be appended as a conjunction, i.e., the resulting expression will be (A or B or C) & (D or E). This is compatible with Wikimedia's DynamicPageList syntax, but allows more complex queries.
+
; category = A|B|C<br /> category = D|E: Restrict page list to pages which are in one of these categories. This option may be specified multiple times, following occurrences will be appended as a conjunction, i.e., the resulting expression will be (A or B or C) & (D or E). This is compatible with Wikimedia’s DynamicPageList syntax, but allows more complex queries.
 
; notcategory = A: Exclude pages which are in category A
 
; notcategory = A: Exclude pages which are in category A
 
; parent = P: Restrict listing to subpages of P
 
; parent = P: Restrict listing to subpages of P
 
; level = L or MIN..MAX: Set wanted subpage nesting levels (i.e. number of '/' in title) it must be equal to L or be within MIN..MAX.
 
; level = L or MIN..MAX: Set wanted subpage nesting levels (i.e. number of '/' in title) it must be equal to L or be within MIN..MAX.
 
; deepness = D or MIN..MAX: Set wanted subpage nesting levels, relative to parent.
 
; deepness = D or MIN..MAX: Set wanted subpage nesting levels, relative to parent.
; ignore = L1|L2|...: Ignore pages which match L1 or L2 or ... LIKE patterns:
+
; ignore = L1|L2|: Ignore pages which match L1 or L2 or LIKE patterns:
 
:* '\_' and ' ' match single space
 
:* '\_' and ' ' match single space
 
:* '_' matches any single character
 
:* '_' matches any single character
Line 47: Line 52:
 
=== Ordering ===
 
=== Ordering ===
  
;order|ordermethod = Y1 [asc|desc],Y2 [asc|desc],...: Sort pages by Y1,Y2,..., asc|desc can be specified right after Yi, each Yi is one of:
+
;order|ordermethod = Y1 [asc|desc],Y2 [asc|desc],: Sort pages by Y1,Y2,, asc|desc can be specified right after Yi, each Yi is one of:
 
:* title
 
:* title
 
:* titlewithoutnamespace
 
:* titlewithoutnamespace
Line 62: Line 67:
  
 
;template = X: Use template:X for output. The template will be preprocessed just like when included into listed article. I.e. all standard MediaWiki magic variables (<nowiki>{{PAGENAME}} {{REVISIONDAY}}</nowiki> etc) will generate values corresponding to listed articles. Additionally, the following parameters are passed to this template:
 
;template = X: Use template:X for output. The template will be preprocessed just like when included into listed article. I.e. all standard MediaWiki magic variables (<nowiki>{{PAGENAME}} {{REVISIONDAY}}</nowiki> etc) will generate values corresponding to listed articles. Additionally, the following parameters are passed to this template:
:; <nowiki>{{{</nowiki>index}}}     : list index, beginning at 0
+
:; <nowiki>{{{</nowiki>index}}} : list index, beginning at 0
:; <nowiki>{{{</nowiki>number}}}   : list index, beginning at 1
+
:; <nowiki>{{{</nowiki>number}}} : list index, beginning at 1
:; <nowiki>{{{</nowiki>odd}}}       : is <nowiki>{{{</nowiki>number}}} odd? (1 or 0)
+
:; <nowiki>{{{</nowiki>odd}}} : is <nowiki>{{{</nowiki>number}}} odd? (1 or 0)
:; <nowiki>{{{</nowiki>ns_N}}}     : N is namespace index, value is 1
+
:; <nowiki>{{{</nowiki>ns_N}}} : N is namespace index, value is 1
:; <nowiki>{{{</nowiki>title}}}     : full title
+
:; <nowiki>{{{</nowiki>title}}} : full title
 
:; <nowiki>{{{</nowiki>title_rel}}} : title relative to parent specified in options
 
:; <nowiki>{{{</nowiki>title_rel}}} : title relative to parent specified in options
 
; suppresserrors|noerrors|silent = true: Suppress errors.
 
; suppresserrors|noerrors|silent = true: Suppress errors.

Revision as of 18:38, 28 June 2011

This is Yet Another Page Listing extension. It is similar to DynamicPageList & company (Intersection / Wikimedia’s DPL, 3rd party’s DPL, SubPageList, SubPageList2, SubPageList3, etc), but the code is simpler and the functionality is more advanced.

Initially, it was just an improved SubPageList2. Then it survived several refactorings (previous authors probably were C-coders and big lovers of rounding integers (round(intval($options['count'])))).

Features:

  • (Main feature) <subpagelist> tag produces a simple or templated list of pages selected by dynamic conditions.
  • {{#getsection|Title|section number}} parser function for extracting page sections by number.
  • Automatic AJAX display of subpages everywhere.

Details:

TODO:

  • Support «materialization» of lists in the DB, enable caching and support correct refreshing of parser cache by saving dependencies into database.

Automatic subpage listing

TemplatedPageList can add a simple link to each page, and when clicked, this link displays list of all subpages of current page.

$egSubpagelistAjaxNamespaces = array(NS_MAIN => true); setting enables this on namespaces specified.

$egSubpagelistAjaxDisableRE = "regexp"; is a regexp disables this on pages whose title match it.

<subpagelist> syntax

Syntax is backwards compatible with Wikimedia’s DynamicPageList syntax, except for 'firstcategorydate' related stuff. The text inside <subpagelist> is preprocessed, so you can use templates, magic words and parser functions inside it. Options are specified one per line.

Open tag

<subpagelist> (you can also use <DynamicPageList> or <subpages> for compatibility)

Page selection

namespace = Main|Talk|…
Restrict list to some namespaces
category = A|B|C
category = D|E
Restrict page list to pages which are in one of these categories. This option may be specified multiple times, following occurrences will be appended as a conjunction, i.e., the resulting expression will be (A or B or C) & (D or E). This is compatible with Wikimedia’s DynamicPageList syntax, but allows more complex queries.
notcategory = A
Exclude pages which are in category A
parent = P
Restrict listing to subpages of P
level = L or MIN..MAX
Set wanted subpage nesting levels (i.e. number of '/' in title) it must be equal to L or be within MIN..MAX.
deepness = D or MIN..MAX
Set wanted subpage nesting levels, relative to parent.
ignore = L1|L2|…
Ignore pages which match L1 or L2 or … LIKE patterns:
  • '\_' and ' ' match single space
  • '_' matches any single character
  • '%' matches any substring
  • '\%' matches single '%' character
redirect = yes|no
restring listing to redirect or non-redirect pages

Ordering

order|ordermethod = Y1 [asc|desc],Y2 [asc|desc],…
Sort pages by Y1,Y2,…, asc|desc can be specified right after Yi, each Yi is one of:
  • title
  • titlewithoutnamespace
  • lastedit
  • user
  • creation|firstedit
  • length|size
  • popularity|pagecounter
order = ASC or DESC
Ascending or descending sort order for all Yi (compatibility)
count|limit = N
Show at most N pages
offset = M
Skip first M pages

Output

template = X
Use template:X for output. The template will be preprocessed just like when included into listed article. I.e. all standard MediaWiki magic variables ({{PAGENAME}} {{REVISIONDAY}} etc) will generate values corresponding to listed articles. Additionally, the following parameters are passed to this template:
{{{index}}} 
list index, beginning at 0
{{{number}}} 
list index, beginning at 1
{{{odd}}} 
is {{{number}}} odd? (1 or 0)
{{{ns_N}}} 
N is namespace index, value is 1
{{{title}}} 
full title
{{{title_rel}}} 
title relative to parent specified in options
suppresserrors|noerrors|silent = true
Suppress errors.

Close tag

</subpagelist>