The `IkiWiki::pagetitle` function does not respect title changes via `meta.title`. It really should, so that links rendered with `htmllink` get the proper title in the link text. --[[madduck]] ---- It is possible to set a Page-Title in the meta-plugin, but that one isn't reused in parentlinks. This [[patch]] may fix it.
diff -c /usr/share/perl5/IkiWiki/Render.pm.distrib /usr/share/perl5/IkiWiki/Render.pm *** /usr/share/perl5/IkiWiki/Render.pm.distrib Wed Aug 6 07:34:55 2008 --- /usr/share/perl5/IkiWiki/Render.pm Tue Aug 26 23:29:32 2008 *************** *** 102,108 **** $template->param( title => $page eq 'index' ? $config{wikiname} ! : pagetitle(basename($page)), wikiname => $config{wikiname}, content => $content, backlinks => $backlinks, --- 102,108 ---- $template->param( title => $page eq 'index' ? $config{wikiname} ! : pagetitle($page), wikiname => $config{wikiname}, content => $content, backlinks => $backlinks, diff -c /usr/share/perl5/IkiWiki/Plugin/parentlinks.pm.distrib /usr/share/perl5/IkiWiki/Plugin/parentlinks.pm *** /usr/share/perl5/IkiWiki/Plugin/parentlinks.pm.distrib Wed Aug 6 07:34:55 2008 --- /usr/share/perl5/IkiWiki/Plugin/parentlinks.pm Tue Aug 26 23:19:43 2008 *************** *** 44,50 **** "height_$height" => 1, }; $path.="/".$dir; ! $title=IkiWiki::pagetitle($dir); $i++; } return @ret; --- 44,50 ---- "height_$height" => 1, }; $path.="/".$dir; ! $title=IkiWiki::pagetitle($path); $i++; } return @ret; diff -c /usr/share/perl5/IkiWiki.pm.distrib /usr/share/perl5/IkiWiki.pm *** /usr/share/perl5/IkiWiki.pm.distrib Wed Aug 6 07:48:34 2008 --- /usr/share/perl5/IkiWiki.pm Tue Aug 26 23:47:30 2008 *************** *** 792,797 **** --- 792,799 ---- my $page=shift; my $unescaped=shift; + $page=basename($page); + if ($unescaped) { $page=~s/(__(\d+)__|_)/$1 eq '_' ? ' ' : chr($2)/eg; } diff -c /usr/share/perl5/IkiWiki/Plugin/meta.pm.distrib /usr/share/perl5/IkiWiki/Plugin/meta.pm *** /usr/share/perl5/IkiWiki/Plugin/meta.pm.distrib Wed Aug 6 07:34:55 2008 --- /usr/share/perl5/IkiWiki/Plugin/meta.pm Tue Aug 26 23:30:58 2008 *************** *** 3,8 **** --- 3,9 ---- package IkiWiki::Plugin::meta; use warnings; + no warnings 'redefine'; use strict; use IkiWiki 2.00; *************** *** 289,294 **** --- 290,319 ---- } } + sub IkiWiki::pagetitle ($;$) { + my $page=shift; + my $unescaped=shift; + + if ($page =~ m#/#) { + $page =~ s#^/##; + $page =~ s#/index$##; + if ($pagestate{"$page/index"}{meta}{title}) { + $page = $pagestate{"$page/index"}{meta}{title}; + } else { + $page = IkiWiki::basename($page); + } + } + + if ($unescaped) { + $page=~s/(__(\d+)__|_)/$1 eq '_' ? ' ' : chr($2)/eg; + } + else { + $page=~s/(__(\d+)__|_)/$1 eq '_' ? ' ' : "$2;"/eg; + } + + return $page; + } + package IkiWiki::PageSpec; sub match_title ($$;@) {-- > A few quick notes about it: > - Using
inline
would avoid the redefinition + code duplication.
> - A few plugins would need to be upgraded.
> - It may be necessary to adapt the testsuite in `t/pagetitle.t`, as well.
>
> --[[intrigeri]]
>
>> It was actually more complicated than expected. A working prototype is
>> now in my `meta` branch, see my userpage for the up-to-date url.
>> Thus tagging [[patch]]. --[[intrigeri]]
>>
>>> Joey, please consider merging my `meta` branch. --[[intrigeri]]