Image pager
This page is kept for historical interest. Any policies mentioned may be obsolete. If you want to revive the topic, you can use the talk page or start a discussion on the community forum. |
It would be nice to be able to dynamically link through the list of images in a category, rather than backing up to the category page itself. (This would make mediawiki a viable gallery program!)
Below are some implemenation ideas. No PHP work has been done on this topic, but a mediawiki template in conjunction with a bot can get a decent working version.
Example category
[edit]The category "foo" used in the examples on this page contains ten images (a, b, c, ... j) and three articles (1, 2, 3).
Example syntax
[edit]Like a namespace
[edit][[Pager:foo]]
This syntax allows parameters, so we could say [[Pager:foo|images]]
to only page between images, and [[Pager:foo|articles]]
for only articles (plus "all" and perhaps other restrictions on what gets paged). A big con is that it is not actually a namespace; it is one-to-one with the Category: namespace. A fix to this could be along the lines of [[Special:Pager]]
.
Like a template
[edit]{{pager|foo}}
This acts almost identically to the namespace suggestion, allowing further parameters.
Like a tag
[edit]This syntax would allow multiple categories to be stringed together in one pager:
<pager>[[Category:foo]]</pager>
This would create a simple pager which notes the order of the articles and images listed in the category view. It presents a link to the first, previous, current, next, and last article/image in the list, perhaps looking like this:
Example pager
[edit]This is the pager that Adam Katz uses; it is positioned at the top of this document.
Implementation w/out a patch
[edit]This is up live in a functional form; see http://people.ics.com/wiki/Template_talk:Pager. It uses two templates; one for pagers overall and one for each category:
Template:Pager
[edit]<!-- pager template syntax: {{pager|category|first|prev|next|last}} --> <div style="background:white;color:black;border:dashed thin gray;padding:0 1em 0 1em;position:absolute;top:1em;right:1em"> [[{{{2}}}|<<]] [[{{{3}}}|<]] [[:Category:{{{1}}}|<b>{{{1}}} pager</b>]] [[{{{4}}}|>]] [[{{{5}}}|>>]] </div>
Template:Pager-foo
[edit]{{pager|foo|1|{{{1}}}|{{{2}}}|:Image:J}}
Usage
[edit]With my hacks, you could call this with:
{{pager-foo|:Image:C|:Image:E}}
Creating the pagers w/out a patch
[edit]Creating the pager for each image is tedious; the Pywikipediabot can help, but even that is quite messy. Here's my implemenation:
echo "y" >yes # (I don't like the 'yes' command) export f=current links -dump-width 300 -dump "http://wiki.bar.com/wiki/Category:foo" \ |sed -e '/http:/!d' -e 's/^.*http.*wiki\///' |uniq >$f # now manually edit the file vim $f # - remove all lines before the first entry and after the last entry # - duplicate the first and last entries # (so {a, b, c} would be {a, a, b, c, c}, with each entry on its own line) export n=2 # loop through each entry (excluding first and last) while [ $n -lt `sed -n '$=' $f` ] do python replace.py \ -page:`sed -n ${n}p $f` \ -regex "(\]\])$" \ "\1\n{{pager-foo|:`sed -n $((n-1))p $f`|:`sed -n $((n+1))p $f`}}" \ <yes # increment counter for loop export n=$((n+1)) done
The python pywikipediabot replace script:
- -page... will modify the current page (line n of our list)
- -regex... best way I know of to only replace once (how do we just match the EOF? That would be ideal.) ... This is the stupid part; it needs exactly one link at the end of a line in the entire description.
- "\1\n{{pager-foo|... this inserts the template on a new line, pulling the previous and next lines from our list
- <yes... we're prompted to accept the changes. I don't like the yes command, so we created a file to feed it earlier.