summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/po.pm19
-rw-r--r--doc/plugins/po.mdwn6
2 files changed, 18 insertions, 7 deletions
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm
index 515809f70..44fd44a2d 100644
--- a/IkiWiki/Plugin/po.pm
+++ b/IkiWiki/Plugin/po.pm
@@ -465,7 +465,24 @@ sub myurlto ($$;$) { #{{{
&& istranslatable('index')) {
return IkiWiki::beautify_urlpath(IkiWiki::baseurl($from) . "index." . lang($from) . ".$config{htmlext}");
}
- return $origsubs{'urlto'}->($to,$from,$absolute);
+ # avoid using our injected beautify_urlpath if run by cgi_editpage,
+ # 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
+ if ($config{po_link_to} eq "negotiated") {
+ my @caller = caller(1);
+ my $run_by_editpage = ($caller[3] eq "IkiWiki::cgi_editpage");
+ inject(name => "IkiWiki::beautify_urlpath", call => $origsubs{'beautify_urlpath'})
+ if $run_by_editpage;
+ my $res = $origsubs{'urlto'}->($to,$from,$absolute);
+ inject(name => "IkiWiki::beautify_urlpath", call => \&mybeautify_urlpath)
+ if $run_by_editpage;
+ return $res;
+ }
+ else {
+ return $origsubs{'urlto'}->($to,$from,$absolute)
+ }
} #}}}
diff --git a/doc/plugins/po.mdwn b/doc/plugins/po.mdwn
index 722a7c66c..da8a13074 100644
--- a/doc/plugins/po.mdwn
+++ b/doc/plugins/po.mdwn
@@ -520,12 +520,6 @@ See [[contrib/po]].
They are not updated when the source page changes (e.g. meta title).
-### Redirect after edit
-
-After editing master page, when using `po_link_to=negotiated`, one is
-redirected to the page in her preferred language. Would be slightly
-better to be redirected, in any case, to the just saved page.
-
Page formats
------------