Randy Brown writes:
When I have a page whose name is a number, I sometimes use the Summary page
text variable in pagelists as the page's effective title. To make the markup
easier for users, I want to create custom markup similar to PmWiki's
[[MyPage|+]] markup. My markup would use the tilde instead of a plus sign,
to produce link text with the page's $:Summary, if available, and using the
title, or if necessary the page name, if it's not.
Here's what I've written so far:
if …. # I NEED A CONDITIONAL HERE that will evaluate to true if the to-be-
saved Summary page text variable will be null
if (PTVlen($page,"Summary") == 0) {
$BestAvailableTitle = '$Titlespaced';
} else {
$BestAvailableTitle = 'PageTextVar($pagename,"Summary")';
}
$FmtPV['$BestAvailableTitle'] = $BestAvailableTitle;
First, at this point there is not $page variable.
Even if you have a custom variable containing the current page name, your
$BestAvailableTitle will be defined for all pages based on the current page.
So this will not do what you want (it will do what you tell it to do :-).
Markup('[[|~', '<[[|',
"/(?>\\[\\[([^|\\]]+))\\|\\s*\\~\\s*]]/e",
"Keep(MakeLink(\$pagename, PSS('$1'),
PageVar(MakePageName(\$pagename,PSS('$1')),
'\$BestAvailableTitle')
),'L')");
I have tried using for the missing conditional the following:
function PTVlen ($page, $ptv) {
$var=PageTextVar($page,$ptv);
return strlen($var);
}
Something like this may work:
Markup('[[|~', '<[[|',
"/(?>\\[\\[([^|\\]]+))\\|\\s*\\~\\s*]]/e",
"Keep(MakeLink(\$pagename, PSS('$1'),
BestTitle(MakePageName(\$pagename,PSS('$1')))
),'L')");
function BestTitle ($pn) {
$sum = PageTextVar($pn,'Summary');
if (strlen($sum)) return $sum;
else return PageVar($pn, '$Title');
}
You evaluate the "best title" of every page for every [[link|~]], not once
based on the current page.
But when I do that, preview shows the old page text variable values when it
previews the page.
"Preview" of posted PTVs was fixed almost 4 years ago in version 2.2.10 -
before this version PmWiki retrieved the variables from the last saved page
content.
Petko
_______________________________________________
pmwiki-users mailing list
pmwiki-users@pmichaud.com
http://www.pmichaud.com/mailman/listinfo/pmwiki-users