diff options
Diffstat (limited to 'doc/bugs')
-rw-r--r-- | doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn | 123 |
1 files changed, 121 insertions, 2 deletions
diff --git a/doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn b/doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn index cccd53d05..11735f770 100644 --- a/doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn +++ b/doc/bugs/pagetitle_function_does_not_respect_meta_titles.mdwn @@ -2,8 +2,127 @@ The `IkiWiki::pagetitle` function does not respect title changes via `meta.title --[[madduck]] -> Agreed. [[todo/using_meta_titles_for_parentlinks]] contains a beginning of -> solution. A few quick notes about it: +---- + +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. + +<ul> +<li> I give pagetitle the full path to a page. +<li> I redefine the 'pagetitle'-sub to deal with it. +<li> to maintain compatibility for IkiWikis without the meta-plugin, i added a 'basename' to the Original-pagetitle. +</ul> + +<pre> +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 ($$;@) { + +</pre> + +-- + +> A few quick notes about it: > - Using <code>inline</code> would avoid the redefinition + code duplication. > - A few plugins would need to be upgraded. |