[Pmwiki-users] http references with : in the link

Patrick R. Michaud pmichaud at sci.tamucc.edu
Wed Apr 9 18:37:44 CDT 2003

On 10 Apr 2003, John Rankin wrote:

> Let me summarise the requirements I have been asked to meet and the 
> approach I have been taking.
> 1. Distinguish links that are local to the encyclopedia from those 
> that will take a visitor elsewhere, preferably by using a different 
> link colour. This should happen automatically -- the author focuses 
> on content, the style sheet takes care of presentation.
> [...]

Okay.  I can think of several ways to do what you're wanting to do, so
let me propose one way and we'll see where it leads.  It may require several
iterations to get there so let's just take it one step at a time.

First, I've made a couple of minor modifications to PmWiki and released
it as 0.4.9.  This new version introduces two new variables:  $UrlLinkFmt and
$UrlImgFmt which determine how URLs should be formatted by the FmtUrlLink
function (roughly analogous to $WikiPageExistsFmt for the FmtWikiLink

So, if you want to have external links appear with a special style sheet,
you can just set $UrlLinkFmt to be 
   "<a href='\$Url' class='url'>\$LinkText</a>"
and all URL references will come out with a class attribute set.

As to the problem with ThisPage, ThisGroup, and ThisWiki, they're currently
implemented as InterMap links but they're also local customizations.  And they
don't have to be implemented via InterMap--there are other ways to do that.
So, to have these links not be treated as external links, simply do:

   $EnableThisWiki = 0;		# to avoid including thiswiki.php 
   $LinkPatterns["ThisWiki:($UrlPagePattern)"] = 
     "<a href='$ScriptUrl/\$1'>\$0</a>";
   $LinkPatterns["ThisPage:($UrlPagePattern)"] =
     FmtPageName("<a href='\$PageUrl/\$1'>\$0</a>",$pagename);
   $LinkPatterns["ThisGroup:($UrlPagePattern)"] =
     FmtPageName("<a href='\$ScriptUrl/\$Group/\$1'>\$0</a>",$pagename);

This does direct HTML substitutions for the ThisWiki/ThisPage/ThisGroup
links and bypasses the FmtUrlLink function altogether.  So, these references
won't be treated as external URL links (or InterMap links).

This should work with all of the permutations of links and their double-bracket
counterparts.  It does assume that ThisWiki:, ThisPage:, and ThisGroup: are
never used as image references; i.e., "ThisWiki:path/to/image.gif" won't work.

I'm going to skip the "display external references as endnotes" feature for 
a moment--I think that's also doable, but I want to tackle this one in
baby steps if we can.

So, does this approach address what you're trying to achieve?  What parts
other than endnotes does it leave out?


More information about the pmwiki-users mailing list