From 0113c69d4fb5f55da932cb26e9eb58709d12e5a5 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Wed, 26 Aug 2009 07:02:29 +0200 Subject: po: (hopefully) fixed WikiLink to self with po_link_to=default --- IkiWiki/Plugin/po.pm | 3 +++ 1 file changed, 3 insertions(+) (limited to 'IkiWiki') diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 414906999..ea0e56467 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -547,6 +547,9 @@ sub mybestlink ($$) { my $page=shift; my $link=shift; + return $origsubs{'bestlink'}->($page, $link) + if $config{po_link_to} eq "default"; + my $res=$origsubs{'bestlink'}->(masterpage($page), $link); if (length $res && ($config{po_link_to} eq "current" || $config{po_link_to} eq "negotiated") -- cgit v1.2.3 From 496e8523c6706d096f1b794e3f3ba5dd2fa260f3 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Wed, 26 Aug 2009 07:56:33 +0200 Subject: po: do not beautify urls on the recentchanges page ... else, the recentchanges page shows a link such as "sandbox.es". But, clicking on it goes to the English (or negotiated language) version of the page. It is better in this one case if the link goes direct to the translated version of the page. --- IkiWiki/Plugin/po.pm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'IkiWiki') diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index ea0e56467..88d021388 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -605,17 +605,21 @@ sub myurlto ($$;$) { # so that one is redirected to the just-edited page rather than to the # negociated translation; to prevent unnecessary fiddling with caller/inject, # we only do so when our beautify_urlpath would actually do what we want to - # avoid, i.e. when po_link_to = negotiated + # avoid, i.e. when po_link_to = negotiated. + # also avoid doing so when run by cgi_goto, so that the links on recentchanges + # page actually lead to the exact page they pretend to. if ($config{po_link_to} eq "negotiated") { my @caller = caller(1); - my $run_by_editpage = 0; - $run_by_editpage = 1 if (exists $caller[3] && defined $caller[3] - && $caller[3] eq "IkiWiki::cgi_editpage"); + my $use_orig = 0; + $use_orig = 1 if (exists $caller[3] && defined $caller[3] + && ($caller[3] eq "IkiWiki::cgi_editpage" || + $caller[3] eq "IkiWiki::Plugin::goto::cgi_goto") + ); inject(name => "IkiWiki::beautify_urlpath", call => $origsubs{'beautify_urlpath'}) - if $run_by_editpage; + if $use_orig; my $res = $origsubs{'urlto'}->($to,$from,$absolute); inject(name => "IkiWiki::beautify_urlpath", call => \&mybeautify_urlpath) - if $run_by_editpage; + if $use_orig; return $res; } else { -- cgit v1.2.3 From 3c2bffe21b91684971155ab41b15dacc515b2fc5 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Thu, 27 Aug 2009 19:59:15 +0200 Subject: po(scan): removed scary comment about only wanting to change the first link Signed-off-by: intrigeri --- IkiWiki/Plugin/po.pm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'IkiWiki') diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 88d021388..3039334c4 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -204,10 +204,7 @@ sub scan (@) { if (istranslation($page)) { foreach my $destpage (@{$links{$page}}) { if (istranslatable($destpage)) { - # replace one occurence of $destpage in $links{$page} - # (we only want to replace the one that was added by - # IkiWiki::Plugin::link::scan, other occurences may be - # there for other reasons) + # replace the occurence of $destpage in $links{$page} for (my $i=0; $i<@{$links{$page}}; $i++) { if (@{$links{$page}}[$i] eq $destpage) { @{$links{$page}}[$i] = $destpage . '.' . lang($page); -- cgit v1.2.3 From 6c0f9c691c3df3a2ec30dec626c997623568a400 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Thu, 27 Aug 2009 20:19:17 +0200 Subject: po: override the title template variable for coherent homepage titling Signed-off-by: intrigeri --- IkiWiki/Plugin/po.pm | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'IkiWiki') diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 3039334c4..2b2839f24 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -302,6 +302,9 @@ sub pagetemplate (@) { && $masterpage eq "index") { $template->param('parentlinks' => []); } + if (ishomepage($page) && $template->query(name => "title")) { + $template->param(title => $config{wikiname}); + } } # }}} # Add the renamed page translations to the list of to-be-renamed pages. @@ -960,6 +963,14 @@ sub homepageurl (;$) { return urlto('', $page); } +sub ishomepage ($) { + my $page = shift; + + return 1 if $page eq 'index'; + map { return 1 if $page eq 'index.'.$_ } keys %{$config{po_slave_languages}}; + return undef; +} + sub deletetranslations ($) { my $deletedmasterfile=shift; -- cgit v1.2.3 From cdc3576c8d1efb2593cac2d9da3f2393a2afe26e Mon Sep 17 00:00:00 2001 From: intrigeri Date: Thu, 27 Aug 2009 20:31:44 +0200 Subject: po: do not inject custom bestlink function when po_link_to eq default Signed-off-by: intrigeri --- IkiWiki/Plugin/po.pm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'IkiWiki') diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 2b2839f24..12f41f6de 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -51,8 +51,6 @@ sub import { hook(type => "formbuilder_setup", id => "po", call => \&formbuilder_setup, last => 1); hook(type => "formbuilder", id => "po", call => \&formbuilder); - $origsubs{'bestlink'}=\&IkiWiki::bestlink; - inject(name => "IkiWiki::bestlink", call => \&mybestlink); $origsubs{'beautify_urlpath'}=\&IkiWiki::beautify_urlpath; inject(name => "IkiWiki::beautify_urlpath", call => \&mybeautify_urlpath); $origsubs{'targetpage'}=\&IkiWiki::targetpage; @@ -153,6 +151,10 @@ sub checkconfig () { warn(gettext('po_link_to=negotiated requires usedirs to be enabled, falling back to po_link_to=default')); $config{po_link_to}='default'; } + unless ($config{po_link_to} eq 'default') { + $origsubs{'bestlink'}=\&IkiWiki::bestlink; + inject(name => "IkiWiki::bestlink", call => \&mybestlink); + } push @{$config{wiki_file_prune_regexps}}, qr/\.pot$/; @@ -543,16 +545,13 @@ sub formbuilder (@) { # `---- # Implement po_link_to 'current' and 'negotiated' settings. +# Not injected otherwise. sub mybestlink ($$) { my $page=shift; my $link=shift; - return $origsubs{'bestlink'}->($page, $link) - if $config{po_link_to} eq "default"; - my $res=$origsubs{'bestlink'}->(masterpage($page), $link); if (length $res - && ($config{po_link_to} eq "current" || $config{po_link_to} eq "negotiated") && istranslatable($res) && istranslation($page)) { return $res . "." . lang($page); -- cgit v1.2.3