Template:Ulistproc

This replaces my original template using the #while function to control the looping.

The difference between this and my original listproc templates is that this approach has no limit to the length of the lists. We do still have a list length issue because of the 99 Expensive Parser Functions limit. For instance, a Template:Mob page for a Merchant or Instructor that uses the Drops fields to list the For Sale items, or a Boss page that lists everything they drop, will exceed this limit causing the item icons to stop rendering once this limit is surpassed. At this time there is nothing we can do about this limit.

This duplicates, in wikicode, a function, that I miss very much from ZAM. We had a wiki function called #commalist that would take multiple lists and process them against a mask to create displays.

The basic idea is to have a group of comma-delimited lists, each of which defines a part of what I need. Note: MediaWiki does not allow recursion.

See also: Template:Clistproc, Template:nolistproc

Dependent Extensions
This template makes extensive use of #SimpleSort, written by Clark Verbrugge (MediaWiki user clump). This uses the "keyed" option to sort list 2 thru mobtypes in the same order as list1 to maintain the connections.

#while from Extension:Loops (by David M. Sledge and Daniel Werner) is also used/needed.

Usage
pre=
 * Display this before each call to the linker. Added specifically for Template:BWItem to display "Quest " to the left of each quest name this item is needed for.

list1= to list5=
 * With the above fields, we are going to extract the first value from each and use it to build a call to Template: while building an Unordered List. list1 controls the output. if list1 has fewer elements than the others, it will stop when it runs out of list1. If list1 has more, it will treat the short lists as blanks. list2 is ONLY needed if you need to be able to use alternate names for values in list1. If list1 contains a blank element processing will stop there.

notes=
 * if the value is not blank it is placed to the right of the linker call, inside parentheses, as a note

mobtypes=
 * This is only needed IF linker=moblink. This allows you to tell if each mob in the list is a Monster, NPC, Passive or Ambience.

type=
 * If you are using this for zonelink or poilink calls on a Quest, Object or Mob page, you use this to tell the linker to add the ...by Zone or ...by POI category. Generally, suers do not need to worry about this, as the Quest, Object or Mob template will set the type= when it calls Ulistproc.

noprefix=
 * Currently, this only applies if linker=questlink.

usebr=
 * If NOT blank, make this a vertical list using &lt;br /&gt; instead of &lt;ul&gt;. Default is to make this an Unordered List.


 * px=
 * Used only by classlink to set the class icon size


 * ol
 * (switch) use Ordered List instead of the default of Unordered List. Ordered List means the list is numbered instead of using bullets.


 * noicon
 * passed to linker. Used if linker=itemlink


 * sorted
 * (switch) IF non-blank, sort the lists using #SimpleSort!