[Pmwiki-users] Feature request?
John Rankin
john.rankin
Mon Nov 17 14:21:29 CST 2003
Jason, a couple of thoughts:
- what happens if $t isn't a wikiword?
- for consistency with (say) the search results page, you probably
do want to handle "HomePage"
So how about the following:
function MyFmtWikiLink($pat,$ref,$btext,$out=NULL,$pname=NULL) {
global $DefaultTitle;
$pg = FmtWikiLink($pat,$ref,$btext,'PageName',$pname);
if (!PageExists($pg))
{
$t = preg_replace("/^.*\\./",'',$pg);
if (PageExists("$t.$t"))
$ref = "$t/{{$t}}"; // in case $t isn't a wikiword
elseif (PageExists("$t.$DefaultTitle")) // try HomePage
$ref = "$t.$DefaultTitle";
}
return FmtWikiLink($pat,$ref,$btext,$out,$pname);
}
JR
--
John Rankin
--
On Saturday, 15 November 2003 9:42 AM, J. Perkins <jason at 379.com> wrote:
I finally got around to trying this, and while it didn't work as
suggested, it did show me how to do it. Here's the working solution,
which I will add to the Cookbook as soon as I get a chance:
$FmtWikiLink = 'MyFmtWikiLink';
function MyFmtWikiLink($pat,$ref,$btext,$out=NULL,$pname=NULL) {
$pg = FmtWikiLink($pat,$ref,$btext,'PageName',$pname);
if (!PageExists($pg))
{
$t = preg_replace("/^.*\\./",'',$pg);
if (PageExists("$t.$t"))
$ref = "$t/$t";
}
return FmtWikiLink($pat,$ref,$btext,$out,$pname);
}
Put this in your local.php, and "WikiWord" will automatically link to
"WikiWord/WikiWord" if that page exists. Can easily be changed to go to
"WikiWord/HomePage" too. Very handy if you have a lot of groups like I do.
Thanks for the help, John.
Jason
John Rankin wrote:
> Try something like the following in your local.php
>
> $FmtWikiLink = 'MyFmtWikiLink';
>
>
> function MyFmtWikiLink($pat,$ref,$btext,$out=NULL,$pname=NULL) {
> $pg = FmtWikiLink($pat,$ref,$btext,'PageName',$pname);
> if (PageExists($pg)) {
> return FmtWikiLink($pat,$ref,$btext,$out,$pname);
> } else {
> $t = preg_replace("/^.*\\./",'',$pg);
> if (PageExists("$t.$t")) {
> return FmtWikiLink($pat,"$t.$t",$btext,'PageName',$pname);
> }
> }
> return FmtWikiLink($pat,$ref,$btext,$out,$pname);
> }
> On Saturday, 1 November 2003 5:53 AM, J. Perkins <jason at 379.com> wrote:
> In addition to all of my public sites, I am using a private installation
> of PmWiki as a "mind map" where I keep track of...well, just about
> everything. In order to keep things organized, I started to split it up
> into different groups for each topic. Each group has a main page with
> the same name as the group, so it looks like "PmWiki.PmWiki". The with
> this approach is that every time I mention the topic in a different
> group, I have to give the fully qualified "PmWiki/PmWiki" to make the
> link. I did this for a while and then got annoyed and modified
> pmwiki.php to automatically look for $title.$title if plain old $title
> didn't work. In the function "FmtWikiLink", I changed the last few lines to:
>
> if (PageExists("$group.$title")) $fmt=$WikiPageExistsFmt;
> elseif (PageExists("$title.$title")) { $group=$title;
> $fmt=$WikiPageExistsFmt; }
> elseif (preg_match('/\\s/',$txt)) $fmt=$WikiPageCreateSpaceFmt;
> else $fmt=$WikiPageCreateFmt;
>
> I added the first "elseif" clause there. Now this works great, but it
> requires me to edit pmwiki.php every release to make it work. Is there
> any way to achieve this same result via an addon?
_______________________________________________
Pmwiki-users mailing list
Pmwiki-users at pmichaud.com
http://pmichaud.com/mailman/listinfo/pmwiki-users_pmichaud.com
More information about the pmwiki-users
mailing list