DefinitionLists


Pm is clearly up to something very cool. The definition list that he has on the Notify page is no ordinary definition list. While it appears to use standard definition list markup, it renders an html definition list that includes all sorts of additional attributes that cause the term to be rendered as escaped code that links to an anchor at the current postion.

Observe:

Here is a portion of the definition list copied from PmWiki/Notify

%apply=item id=NotifySubjectFmt?%$NotifySubjectFmt
The subject line of the mail to be sent.
%apply=item id=NotifyHeaders?%$NotifyHeaders
String of extra mail headers to be passed to the mail() function.
%apply=item id=NotifyParameters?%$NotifyParameters
String of additional parameters to be passed to PHP's mail() function [1].
%apply=item id=NotifyFile?%$NotifyFile
The scratch file where Notify keeps track of recent posting information. Defaults to "$WikiDir/.notifylist". Note that this file must generally be writable by the webserver process.
%apply=item id=NotifyListPageFmt?%$NotifyListPageFmt
The name of the page containing notify= lines for use by notify.php. Defaults to {$SiteGroup}.NotifyList.
%apply=item id=NotifyList?%$NotifyList
An array of notify= specifications that can be specified from a local customization file (used in addition to entries in Site.NotifyList).
        # send notifications to alice@example.com
        $NotifyList[] = 'notify=alice@example.com'

Copy the first link and change the term name

The link no longer works

%apply=item id=NotifySubjectFmtNewText?%$NotifySubjectFmtNewText
The subject line of the mail to be sent.

Create a new term from scratch

No link, just an ordinary definition list

New Term1
New Term1 Definition
New Term2
New Term2 Definition

Lets have a look at the html source

Looking at the first items, in their original and modified forms, we see the following:

<h3>Here is a portion of the definition list copied from <span class='wikiword'>PmWiki</span>/Notify</h3>

<dl><dt><a name='NotifySubjectFmt' id='NotifySubjectFmt'></a><a class='varlink' 

href='http://pmwiki.org/wiki/PmWiki/Notify#NotifySubjectFmt'><code 

class='varlink'>&#36;NotifySubjectFmt</code></a></dt><dd>The subject line of the mail to be sent.

<h3>Copy the first link and change the term name</h3>

<p>The link no longer works
</p>

<div class='vspace'></div><dl><dt><a name='NotifySubjectFmtNewText' 

id='NotifySubjectFmtNewText'></a>&#36;NotifySubjectFmtNewText</dt><dd>The subject line of the mail to be sent.

</dd></dl><div class='vspace'></div><h3>Create a new term from scratch</h3>

<p>No link, just an ordinary definition list

</p><dl><dt>New Term1</dt><dd>New Term1 Definition

</dd><dt>New Term2</dt><dd>New Term2 Definition
 0: 00.00 00.00 config start
 1: 00.01 00.01 config end
 2: 00.12 00.11 MarkupToHTML begin
 3: 00.15 00.14 ReadApprovedUrls SiteAdmin.ApprovedUrls begin
 4: 00.15 00.14 ReadApprovedUrls SiteAdmin.ApprovedUrls end
 5: 00.20 00.18 MarkupToHTML end
 6: 00.21 00.19 MarkupToHTML begin
 7: 00.24 00.20 MarkupToHTML end
 8: 00.24 00.20 MarkupToHTML begin
 9: 00.24 00.20 MarkupToHTML end
10: 00.25 00.20 now
Peak memory: 3,531,528 bytes