diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java index 6006e0824..20c62b501 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java @@ -21,10 +21,13 @@ import gplx.xowa.parsers.mws.*; import gplx.xowa.parsers.mws.wkrs.*; import gplx public class Xop_section_mgr implements Gfo_invk { private Xoae_app app; private Xowe_wiki wiki; private Xow_tidy_mgr_interface tidy_mgr; - private final Bry_fmt section_editable_fmt = Bry_fmt.Auto_nl_apos - ( "[edit]" - ); - + private final Bry_bfr tmp_bfr = Bry_bfr_.New(); + private byte[] bry__edit_text; + private final Bry_fmt fmt__edit_hint = Bry_fmt.New("") + , fmt__section_editable = Bry_fmt.Auto_nl_apos + ( "[~{edit_text}]" + ) + ; public boolean Enabled() {return enabled;} private boolean enabled; public void Init_by_wiki(Xowe_wiki wiki) { this.app = wiki.Appe(); @@ -64,9 +67,15 @@ public class Xop_section_mgr implements Gfo_invk { throw Err_.new_wo_type("could not merge section_key", "page", url.To_str(), "section_key", section_key); return rv; } - public void Write_html(Bry_bfr bfr, byte[] src, byte[] page_ttl, Xop_hdr_tkn hdr, byte[] name) { - name = wiki.Parser_mgr().Uniq_mgr().Convert(name); // need to swap out uniqs for Math; DATE:2016-12-09 - section_editable_fmt.Bld_many(bfr, page_ttl, name, name); + public void Write_html(Bry_bfr bfr, byte[] src, byte[] page_ttl, Xop_hdr_tkn hdr, byte[] toc_text) { + if (bry__edit_text == null) { // LAZY: cannot call in Init_by_wiki b/c of circularity; section_mgr is init'd by parser_mgr which is init'd before msg_mgr which is used below + this.bry__edit_text = wiki.Msg_mgr().Val_by_key_obj("editlink"); + this.fmt__edit_hint.Fmt_(String_.new_u8(wiki.Msg_mgr().Val_by_key_obj("editsectionhint"))); + } + + toc_text = wiki.Parser_mgr().Uniq_mgr().Convert(toc_text); // need to swap out uniqs for Math; DATE:2016-12-09 + byte[] edit_hint = fmt__edit_hint.Bld_many_to_bry(tmp_bfr, toc_text); + fmt__section_editable.Bld_many(bfr, page_ttl, toc_text, edit_hint, bry__edit_text); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, gplx.xowa.htmls.core.wkrs.hdrs.Xoh_section_editable_.Cfg__section_editing__enabled)) enabled = m.ReadBool("v");