mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Cfg: Convert rest of pages
This commit is contained in:
@@ -21,16 +21,13 @@ import gplx.xowa.parsers.xndes.*;
|
||||
public class Xoh_html_mgr implements Gfo_invk {
|
||||
public Xoh_html_mgr(Xoae_app app) {}
|
||||
public void Init_by_app(Xoae_app app) {
|
||||
tidy_mgr.Init_by_app(app);
|
||||
page_mgr.Init_by_app(app);
|
||||
}
|
||||
public Xoh_page_mgr Page_mgr() {return page_mgr;} private final Xoh_page_mgr page_mgr = new Xoh_page_mgr();
|
||||
public Xoa_tidy_mgr Tidy_mgr() {return tidy_mgr;} private final Xoa_tidy_mgr tidy_mgr = new Xoa_tidy_mgr();
|
||||
public Xoh_skin_mgr Skin_mgr() {return skin_mgr;} private final Xoh_skin_mgr skin_mgr = new Xoh_skin_mgr();
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_page)) return page_mgr;
|
||||
else if (ctx.Match(k, Invk_tidy)) return tidy_mgr;
|
||||
else if (ctx.Match(k, Invk_skins)) return skin_mgr;
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
} private static final String Invk_page = "page", Invk_tidy = "tidy", Invk_skins = "skins";
|
||||
} private static final String Invk_page = "page", Invk_skins = "skins";
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012 gnosygnu@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*;
|
||||
import gplx.core.primitives.*;
|
||||
import gplx.xowa.wikis.domains.*;
|
||||
public class Xoh_imgs_mgr implements Gfo_invk {
|
||||
public Xoh_imgs_mgr(Xow_html_mgr html_mgr) {wiki_is_default = html_mgr.Wiki().Domain_tid() == Xow_domain_tid_.Tid__home;} private boolean wiki_is_default;
|
||||
public Bool_obj_ref Alt_in_caption() {return alt_in_caption;} Bool_obj_ref alt_in_caption = Bool_obj_ref.y_();
|
||||
public Bool_obj_ref Alt_defaults_to_caption() {return alt_defaults_to_caption;} Bool_obj_ref alt_defaults_to_caption = Bool_obj_ref.y_();
|
||||
public void Copy_cfg(Xoh_imgs_mgr copy) {this.alt_in_caption = copy.alt_in_caption;}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_alt_in_caption)) return Yn.To_str(alt_in_caption.Val());
|
||||
else if (ctx.Match(k, Invk_alt_in_caption_)) alt_in_caption = Modify(wiki_is_default, alt_in_caption, m.ReadYn("v"));
|
||||
else if (ctx.Match(k, Invk_alt_defaults_to_caption)) return Yn.To_str(alt_defaults_to_caption.Val());
|
||||
else if (ctx.Match(k, Invk_alt_defaults_to_caption_)) alt_defaults_to_caption = Modify(wiki_is_default, alt_defaults_to_caption, m.ReadYn("v"));
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
public static final String Invk_alt_in_caption = "alt_in_caption", Invk_alt_in_caption_ = "alt_in_caption_", Invk_alt_defaults_to_caption = "alt_defaults_to_caption", Invk_alt_defaults_to_caption_ = "alt_defaults_to_caption_";
|
||||
private static Bool_obj_ref Modify(boolean orig, Bool_obj_ref cur, boolean v) {return orig ? cur.Val_(v) : Bool_obj_ref.new_(v);}
|
||||
}
|
||||
@@ -36,21 +36,18 @@ public class Xoh_page_mgr implements Gfo_invk {
|
||||
public Bry_fmt Content_code_fmt() {return content_code_fmt;} private final Bry_fmt content_code_fmt = Bry_fmt.Auto("<pre>~{page_text}</pre>");
|
||||
public Xoh_subpages_bldr Subpages_bldr() {return subpages_bldr;} private final Xoh_subpages_bldr subpages_bldr = new Xoh_subpages_bldr();
|
||||
public void Init_by_app(Xoa_app app) {
|
||||
app.Cfg().Bind_many_app(this, Cfg__font_enabled, Cfg__font_name, Cfg__font_size, Cfg__font_format, Cfg__custom_script);
|
||||
app.Cfg().Bind_many_app(this, Cfg__font_enabled, Cfg__font_name, Cfg__font_size, Cfg__font_format, Cfg__custom_script, Cfg__content_code_fmt);
|
||||
}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_content_code_fmt)) return String_.new_u8(content_code_fmt.Fmt());
|
||||
else if (ctx.Match(k, Invk_content_code_fmt_)) content_code_fmt.Fmt_(m.ReadBry("v"));
|
||||
|
||||
else if (ctx.Match(k, Cfg__font_enabled)) font_enabled = m.ReadYn("v");
|
||||
if (ctx.Match(k, Cfg__font_enabled)) font_enabled = m.ReadYn("v");
|
||||
else if (ctx.Match(k, Cfg__font_name)) {font_name = m.ReadStr("v"); Font_css_bry_();}
|
||||
else if (ctx.Match(k, Cfg__font_size)) {font_size = m.ReadFloat("v"); Font_css_bry_();}
|
||||
else if (ctx.Match(k, Cfg__font_format)) {font_css_fmt.Fmt_(m.ReadBry("v")); Font_css_bry_();}
|
||||
else if (ctx.Match(k, Cfg__custom_script)) custom_script = m.ReadBry("v");
|
||||
else if (ctx.Match(k, Cfg__content_code_fmt)) content_code_fmt.Fmt_(m.ReadBry("v"));
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
private static final String Invk_content_code_fmt = "content_code_fmt", Invk_content_code_fmt_ = "content_code_fmt_";
|
||||
|
||||
public static final String
|
||||
Cfg__font_enabled = "xowa.html.css.font.enabled"
|
||||
@@ -60,6 +57,7 @@ public class Xoh_page_mgr implements Gfo_invk {
|
||||
Cfg__font_name = "xowa.html.css.font.name"
|
||||
, Cfg__font_format = "xowa.html.css.font.format"
|
||||
, Cfg__custom_script = "xowa.html.css.custom.script"
|
||||
, Cfg__content_code_fmt = "xowa.html.wiki.content_code_fmt"
|
||||
;
|
||||
public static final float Font_size_default = 16;
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
|
||||
public boolean Html_capable() {return html_capable;} public Xoh_page_wtr_mgr Html_capable_(boolean v) {html_capable = v; return this;} private boolean html_capable;
|
||||
public byte[] Css_common_bry() {return css_common_bry;} private byte[] css_common_bry;
|
||||
public byte[] Css_wiki_bry() {return css_wiki_bry;} private byte[] css_wiki_bry;
|
||||
public boolean Scripting_enabled() {return scripting_enabled;} private boolean scripting_enabled;
|
||||
public Bry_fmtr Page_read_fmtr() {return page_read_fmtr;} private Bry_fmtr page_read_fmtr = Bry_fmtr.new_("", Fmtr_keys);
|
||||
public Bry_fmtr Page_edit_fmtr() {return page_edit_fmtr;} private Bry_fmtr page_edit_fmtr = Bry_fmtr.new_("", Fmtr_keys);
|
||||
public Bry_fmtr Page_html_fmtr() {return page_html_fmtr;} private Bry_fmtr page_html_fmtr = Bry_fmtr.new_("", Fmtr_keys);
|
||||
@@ -39,6 +40,9 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
|
||||
this.css_wiki_bry = css_wiki_url.To_http_file_bry();
|
||||
}
|
||||
public void Init_(boolean v) {init = v;} private boolean init = true;
|
||||
public void Init_by_wiki(Xow_wiki wiki) {
|
||||
wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__scripting_enabled);
|
||||
}
|
||||
public byte[] Gen(Xoae_page page, byte output_tid) {
|
||||
Xoh_page_wtr_wkr wtr = Wkr(output_tid);
|
||||
Xowe_wiki wiki = page.Wikie();
|
||||
@@ -64,6 +68,7 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
|
||||
else if (ctx.Match(k, Invk_page_edit_)) page_edit_fmtr.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_page_html_)) page_html_fmtr.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_xowa_div_edit_rename_)) div_edit_rename_fmtr.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Cfg__scripting_enabled)) scripting_enabled = m.ReadYn("v");
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
@@ -88,6 +93,7 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
|
||||
, "portal_div_admin", "portal_div_wikis", "portal_sidebar"
|
||||
, "edit_div_rename", "edit_div_preview", "js_edit_toolbar"
|
||||
};
|
||||
private static final String Cfg__scripting_enabled = "xowa.addon.scripting.enabled";
|
||||
}
|
||||
/*
|
||||
NOTE_1:xowa_anchor_button
|
||||
|
||||
@@ -28,6 +28,7 @@ public class Xoh_page_wtr_wkr {
|
||||
private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
|
||||
private final Xoh_page_wtr_mgr mgr; private final byte page_mode;
|
||||
private final Wdata_xwiki_link_wtr wdata_lang_wtr = new Wdata_xwiki_link_wtr(); // In other languages
|
||||
private final gplx.xowa.addons.apps.scripts.Xoscript_mgr scripting_mgr = new gplx.xowa.addons.apps.scripts.Xoscript_mgr();
|
||||
private Xoae_app app; private Xowe_wiki wiki; private Xoae_page page; private byte[] root_dir_bry;
|
||||
public Xoh_page_wtr_wkr(Xoh_page_wtr_mgr mgr, byte page_mode) {this.mgr = mgr; this.page_mode = page_mode;}
|
||||
public Xoh_page_wtr_wkr Ctgs_enabled_(boolean v) {ctgs_enabled = v; return this;} private boolean ctgs_enabled = true;
|
||||
@@ -57,7 +58,7 @@ public class Xoh_page_wtr_wkr {
|
||||
hctx = Xoh_wtr_ctx.Basic;
|
||||
Write_body(page_bfr, ctx, hctx, page);
|
||||
Write_page_by_tid(ctx, hctx, view_mode, rv, fmtr, page_bfr.To_bry_and_rls());
|
||||
new gplx.xowa.addons.apps.scripts.Xoscript_mgr().Write(rv, wiki, page);
|
||||
scripting_mgr.Write(rv, wiki, page);
|
||||
if (page_mode == Xopg_page_.Tid_html) // if html, write page again, but wrap it in html skin this time
|
||||
Write_page_by_tid(ctx, hctx, page_mode, rv, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(rv.To_bry_and_clear()));
|
||||
wdata_lang_wtr.Page_(null);
|
||||
@@ -107,7 +108,7 @@ public class Xoh_page_wtr_wkr {
|
||||
, portal_mgr.Div_ns_bry(wiki.Utl__bfr_mkr(), page_ttl, wiki.Ns_mgr())
|
||||
, portal_mgr.Div_view_bry(wiki.Utl__bfr_mkr(), html_gen_tid, page.Html_data().Xtn_search_text())
|
||||
, portal_mgr.Div_logo_bry(), portal_mgr.Div_home_bry(), new Xopg_xtn_skin_fmtr_arg(page, Xopg_xtn_skin_itm_tid.Tid_sidebar)
|
||||
, portal_mgr.Div_sync_bry(tmp_bfr, app.Api_root().Addon().Bldr().Sync().Manual_enabled(), wiki, page)
|
||||
, portal_mgr.Div_sync_bry(tmp_bfr, wiki.Page_mgr().Sync_mgr().Manual_enabled(), wiki, page)
|
||||
, portal_mgr.Div_wikis_bry(wiki.Utl__bfr_mkr())
|
||||
, portal_mgr.Sidebar_mgr().Html_bry()
|
||||
, mgr.Edit_rename_div_bry(page_ttl), page.Html_data().Edit_preview_w_dbg(), js_edit_toolbar_bry
|
||||
@@ -200,8 +201,7 @@ public class Xoh_page_wtr_wkr {
|
||||
) {
|
||||
if (app.Mode().Tid_is_gui()) app.Usr_dlg().Prog_many("", "", "loading categories: count=~{0}", ctgs_len);
|
||||
Xoctg_pagebox_itm[] pagebox_itms = wiki.Ctg__pagebox_wtr().Get_catlinks_by_page(wiki, page);
|
||||
boolean hidden_enabled = wiki.App().Api_root().Addon().Wikis__ctgs__hidden_enabled();
|
||||
wiki.Ctg__pagebox_wtr().Write_pagebox(hidden_enabled, bfr, wiki, page, pagebox_itms);
|
||||
wiki.Ctg__pagebox_wtr().Write_pagebox(bfr, wiki, page, pagebox_itms);
|
||||
}
|
||||
|
||||
// translate if variants are enabled
|
||||
|
||||
@@ -32,7 +32,6 @@ public class Xow_html_mgr implements Gfo_invk {
|
||||
page_wtr_mgr = new Xoh_page_wtr_mgr(app.Gui_mgr().Kit().Tid() != Gfui_kit_.Swing_tid); // reverse logic to handle swt,drd but not mem
|
||||
img_xowa_protocol = fsys_lnx_encoder.Encode_to_file_protocol(app.Fsys_mgr().Bin_xowa_file_dir().GenSubFil_nest("app.general", "xowa_exec.png"));
|
||||
portal_mgr = new Xow_portal_mgr(wiki);
|
||||
imgs_mgr = new Xoh_imgs_mgr(this);
|
||||
module_mgr = new Xow_module_mgr(wiki);
|
||||
this.js_cleaner = new Xoh_js_cleaner(app);
|
||||
}
|
||||
@@ -40,6 +39,8 @@ public class Xow_html_mgr implements Gfo_invk {
|
||||
html_wtr.Init_by_wiki(wiki);
|
||||
module_mgr.Init_by_wiki(wiki);
|
||||
tidy_mgr.Init_by_wiki(wiki.Appe());
|
||||
portal_mgr.Init_by_wiki(wiki);
|
||||
page_wtr_mgr.Init_by_wiki(wiki);
|
||||
}
|
||||
public void Init_by_lang(Xol_lang_itm lang) {
|
||||
portal_mgr.Init_by_lang(lang);
|
||||
@@ -56,14 +57,11 @@ public class Xow_html_mgr implements Gfo_invk {
|
||||
public int Img_thumb_width() {return img_thumb_width;} private int img_thumb_width = 220;
|
||||
public byte[] Img_xowa_protocol() {return img_xowa_protocol;} private byte[] img_xowa_protocol;
|
||||
public boolean Img_suppress_missing_src() {return img_suppress_missing_src;} public Xow_html_mgr Img_suppress_missing_src_(boolean v) {img_suppress_missing_src = v; return this;} private boolean img_suppress_missing_src = true;
|
||||
public Xoh_imgs_mgr Imgs_mgr() {return imgs_mgr;} private Xoh_imgs_mgr imgs_mgr;
|
||||
public void Copy_cfg(Xow_html_mgr html_mgr) {imgs_mgr.Copy_cfg(html_mgr.Imgs_mgr());}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_article)) return page_wtr_mgr;
|
||||
else if (ctx.Match(k, Invk_portal)) return portal_mgr;
|
||||
else if (ctx.Match(k, Invk_imgs)) return imgs_mgr;
|
||||
else if (ctx.Match(k, Invk_modules)) return module_mgr;
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
}
|
||||
public static final String Invk_article = "article", Invk_portal = "portal", Invk_imgs = "imgs", Invk_modules = "modules";
|
||||
public static final String Invk_article = "article", Invk_portal = "portal", Invk_modules = "modules";
|
||||
}
|
||||
|
||||
@@ -67,8 +67,7 @@ public class Xow_hdump_mgr__load implements Gfo_invk {
|
||||
Xoctg_pagebox_itm[] pagebox_itms = wiki.Ctg__pagebox_wtr().Get_catlinks_by_page(wiki, hpg);
|
||||
if (pagebox_itms.length > 0) {
|
||||
tmp_bfr.Add(src);
|
||||
boolean hidden_enabled = wiki.App().Api_root() == null ? false : wiki.App().Api_root().Addon().Wikis__ctgs__hidden_enabled(); // HACK: handle drd which doesn't have api
|
||||
wiki.Ctg__pagebox_wtr().Write_pagebox(hidden_enabled, tmp_bfr, wiki, hpg, pagebox_itms);
|
||||
wiki.Ctg__pagebox_wtr().Write_pagebox(tmp_bfr, wiki, hpg, pagebox_itms);
|
||||
src = tmp_bfr.To_bry_and_clear();
|
||||
}
|
||||
|
||||
|
||||
@@ -41,8 +41,7 @@ public class Xob_hdump_bldr implements Gfo_invk {
|
||||
this.stat_tbl = new Xoh_stat_tbl(make_conn); this.stat_itm = hdump_mgr.Hzip_mgr().Hctx().Hzip__stat();
|
||||
this.toc_label = wiki.Msg_mgr().Val_by_id(gplx.xowa.langs.msgs.Xol_msg_itm_.Id_toc);
|
||||
|
||||
Xoapi_import import_cfg = wiki.Appe().Api_root().Bldr().Wiki().Import();
|
||||
if (zip_tid == Byte_.Max_value_127) zip_tid = import_cfg.Zip_tid_html();
|
||||
if (zip_tid == Byte_.Max_value_127) zip_tid = Xobldr_cfg.Zip_mode__html(wiki.App());
|
||||
hdump_mgr.Init_by_db(zip_tid, hzip_enabled, hzip_b256);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ public class Xoh_html_wtr {
|
||||
public void Init_by_wiki(Xowe_wiki wiki) {
|
||||
cfg.Toc__show_(Bool_.Y).Lnki__title_(true).Lnki__visited_y_().Lnki__id_(Bool_.Y); // NOTE: set during Init_by_wiki, b/c all tests assume these are false
|
||||
ref_wtr.Init_by_wiki(wiki);
|
||||
lnki_wtr.Init_by_wiki(wiki);
|
||||
}
|
||||
public void Init_by_page(Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xoae_page page) {
|
||||
this.page = page;
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012 gnosygnu@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*;
|
||||
import gplx.core.envs.*;
|
||||
import gplx.langs.htmls.*;
|
||||
import gplx.xowa.apps.fsys.*;
|
||||
public class Xoa_tidy_mgr implements Gfo_evt_itm {
|
||||
public Xoa_tidy_mgr() {this.evt_mgr = new Gfo_evt_mgr(this);}
|
||||
public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr;
|
||||
public Xoh_tidy_wkr_tidy Wkr_tidy() {return wkr_tidy;} private Xoh_tidy_wkr_tidy wkr_tidy = new Xoh_tidy_wkr_tidy(); // NOTE: app-level; not thread-safe; needed b/c of Options and exe/args DATE:2016-07-12
|
||||
public void Init_by_app(Xoae_app app) {
|
||||
wkr_tidy.Init_by_app(app);
|
||||
Xoa_fsys_eval cmd_eval = app.Url_cmd_eval();
|
||||
Process_adp.ini_(this, app.Usr_dlg(), wkr_tidy, cmd_eval, Process_adp.Run_mode_sync_timeout, 1 * 60, "~{<>bin_plat_dir<>}tidy" + Op_sys.Cur().Fsys_dir_spr_str() + "tidy", Xoh_tidy_wkr_tidy.Args_fmt, "source", "target");
|
||||
}
|
||||
public boolean Enabled() {return enabled;} private boolean enabled = true;
|
||||
public void Enabled_toggle() {Enabled_(!enabled);}
|
||||
public byte Wkr_tid() {return wkr_tid;} private byte wkr_tid = Xoh_tidy_wkr_.Tid_jtidy;
|
||||
private void Enabled_(boolean v) {
|
||||
this.enabled = v;
|
||||
Gfo_evt_mgr_.Pub_val(this, Evt__enabled_changed, v);
|
||||
}
|
||||
public void Wkr_tid_(byte v) {
|
||||
this.wkr_tid = v;
|
||||
Gfo_evt_mgr_.Pub_val(this, Evt__engine_changed, v);
|
||||
}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled);
|
||||
else if (ctx.Match(k, Invk_enabled_)) Enabled_(m.ReadYn("v"));
|
||||
else if (ctx.Match(k, Invk_enabled_toggle)) Enabled_(!enabled);
|
||||
else if (ctx.Match(k, Invk_engine_type)) return Xoh_tidy_wkr_.Xto_key(wkr_tid);
|
||||
else if (ctx.Match(k, Invk_engine_type_)) Wkr_tid_(Xoh_tidy_wkr_.Xto_tid(m.ReadStr("v")));
|
||||
else if (ctx.Match(k, Invk_engine_type_list)) return Xoh_tidy_wkr_.Options__list;
|
||||
else if (ctx.Match(k, Invk_lib)) return wkr_tidy;
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
private static final String
|
||||
Invk_enabled = "enabled", Invk_enabled_ = "enabled_", Invk_enabled_toggle = "enabled_toggle", Invk_lib = "lib"
|
||||
, Invk_engine_type = "engine_type", Invk_engine_type_ = "engine_type_", Invk_engine_type_list = "engine_type_list"
|
||||
;
|
||||
public static final String Evt__enabled_changed = "enabled_changed", Evt__engine_changed = "engine_changed";
|
||||
}
|
||||
@@ -18,23 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*;
|
||||
public class Xoh_tidy_wkr_ {
|
||||
public static final byte Tid_null = 0, Tid_tidy = 1, Tid_jtidy = 2;
|
||||
public static final String Key_null = "null", Key_tidy = "tidy", Key_jtidy = "jtidy";
|
||||
public static final Xoh_tidy_wkr Wkr_null = new Xoh_tidy_wkr_null();
|
||||
public static String Xto_key(byte v) {
|
||||
switch (v) {
|
||||
case Tid_null: return Key_null;
|
||||
case Tid_tidy: return Key_tidy;
|
||||
case Tid_jtidy: return Key_jtidy;
|
||||
default: throw Err_.new_unimplemented();
|
||||
}
|
||||
}
|
||||
public static byte Xto_tid(String s) {
|
||||
if (String_.Eq(s, Key_tidy)) return Tid_tidy;
|
||||
else if (String_.Eq(s, Key_jtidy)) return Tid_jtidy;
|
||||
else if (String_.Eq(s, Key_null)) return Tid_null;
|
||||
else throw Err_.new_unimplemented();
|
||||
}
|
||||
public static Keyval[] Options__list = Keyval_.Ary(Keyval_.new_(Key_tidy), Keyval_.new_(Key_jtidy));
|
||||
}
|
||||
class Xoh_tidy_wkr_null implements Xoh_tidy_wkr {
|
||||
public byte Tid() {return Xoh_tidy_wkr_.Tid_null;}
|
||||
|
||||
@@ -16,27 +16,24 @@ You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.htmls.core.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.htmls.*;
|
||||
import gplx.core.envs.*;
|
||||
import gplx.langs.htmls.*;
|
||||
public class Xow_tidy_mgr implements Gfo_evt_itm, Xow_tidy_mgr_interface {
|
||||
private Xoae_app app; private Xoa_tidy_mgr tidy_mgr;
|
||||
private Xoae_app app; private Xoh_tidy_wkr_tidy tidy_cmd = new Xoh_tidy_wkr_tidy(); // NOTE: app-level; not thread-safe; needed b/c of Options and exe/args DATE:2016-07-12
|
||||
private boolean enabled = true; private Xoh_tidy_wkr wkr = Xoh_tidy_wkr_.Wkr_null; // TEST: set default wkr to null
|
||||
public Xow_tidy_mgr() {this.evt_mgr = new Gfo_evt_mgr(this);}
|
||||
public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private final Gfo_evt_mgr evt_mgr;
|
||||
private void Wkr_(byte tid) {
|
||||
switch (tid) {
|
||||
case Xoh_tidy_wkr_.Tid_tidy: wkr = tidy_mgr.Wkr_tidy(); break;
|
||||
case Xoh_tidy_wkr_.Tid_jtidy: wkr = new Xoh_tidy_wkr_jtidy(); break;
|
||||
case Xoh_tidy_wkr_.Tid_null: wkr = Xoh_tidy_wkr_.Wkr_null; break;
|
||||
default: throw Err_.new_unhandled_default(tid);
|
||||
}
|
||||
private void Engine_(String v) {
|
||||
if (String_.Eq(v, "tidy")) wkr = new Xoh_tidy_wkr_tidy(); // NOTE: app-level; not thread-safe; needed b/c of Options and exe/args DATE:2016-07-12
|
||||
else if (String_.Eq(v, "jtidy")) wkr = new Xoh_tidy_wkr_jtidy();
|
||||
else throw Err_.new_unhandled_default(v);
|
||||
wkr.Init_by_app(app);
|
||||
}
|
||||
public void Init_by_wiki(Xoae_app app) {
|
||||
this.app = app;
|
||||
this.tidy_mgr = app.Html_mgr().Tidy_mgr();
|
||||
Gfo_evt_mgr_.Sub_same_many(tidy_mgr, this, Xoa_tidy_mgr.Evt__enabled_changed, Xoa_tidy_mgr.Evt__engine_changed);
|
||||
this.enabled = tidy_mgr.Enabled();
|
||||
this.Wkr_(tidy_mgr.Wkr_tid());
|
||||
tidy_cmd.Init_by_app(app);
|
||||
Process_adp.ini_(this, app.Usr_dlg(), tidy_cmd, app.Url_cmd_eval(), Process_adp.Run_mode_sync_timeout, 1 * 60, "~{<>bin_plat_dir<>}tidy" + Op_sys.Cur().Fsys_dir_spr_str() + "tidy", Xoh_tidy_wkr_tidy.Args_fmt, "source", "target");
|
||||
app.Cfg().Bind_many_app(this, Cfg__enabled, Cfg__engine, Cfg__cmd);
|
||||
}
|
||||
public void Exec_tidy(Bry_bfr bfr, boolean indent, byte[] page_url) {
|
||||
if (!enabled) return;
|
||||
@@ -47,8 +44,9 @@ public class Xow_tidy_mgr implements Gfo_evt_itm, Xow_tidy_mgr_interface {
|
||||
Tidy_unwrap(bfr);
|
||||
}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Xoa_tidy_mgr.Evt__enabled_changed)) this.enabled = m.ReadBool("v");
|
||||
else if (ctx.Match(k, Xoa_tidy_mgr.Evt__engine_changed)) this.Wkr_(m.ReadByte("v"));
|
||||
if (ctx.Match(k, Cfg__enabled)) this.enabled = m.ReadYn("v");
|
||||
else if (ctx.Match(k, Cfg__engine)) Engine_(m.ReadStr("v"));
|
||||
else if (ctx.Match(k, Cfg__cmd)) gplx.xowa.apps.progs.Xoa_prog_mgr.Init_cmd(m.ReadStr("v"), tidy_cmd);
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
@@ -77,4 +75,9 @@ public class Xow_tidy_mgr implements Gfo_evt_itm, Xow_tidy_mgr_interface {
|
||||
( "</body>"
|
||||
+ "</html>"
|
||||
);
|
||||
private static final String
|
||||
Cfg__enabled = "xowa.html.tidy.enabled"
|
||||
, Cfg__engine = "xowa.html.tidy.engine"
|
||||
, Cfg__cmd = "xowa.html.tidy.cmd"
|
||||
;
|
||||
}
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012 gnosygnu@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.htmls.core.wkrs.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.wkrs.*;
|
||||
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.hdrs.*;
|
||||
public class Xoh_section_editable_ {
|
||||
public static final String Cfg__section_editing__enabled = "xowa.edit.section_edit.enabled";
|
||||
}
|
||||
@@ -29,6 +29,9 @@ public class Xoh_file_mgr {
|
||||
this.wiki = wiki; this.file_wtr = new Xoh_file_wtr__basic(wiki, html_mgr, html_wtr);
|
||||
}
|
||||
public Xoh_file_wtr__basic File_wtr() {return file_wtr;} private final Xoh_file_wtr__basic file_wtr;
|
||||
public void Init_by_wiki(Xowe_wiki wiki) {
|
||||
file_wtr.Init_by_wiki(wiki);
|
||||
}
|
||||
public void Init_by_page(Xoh_wtr_ctx hctx, Xoae_page page) {file_wtr.Init_by_page(hctx, page);}
|
||||
public void Write_or_queue(Bry_bfr bfr, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki) {Write_or_queue(bfr, page, ctx, hctx, src, lnki, file_wtr.Bld_alt(Bool_.N, ctx, Xoh_wtr_ctx.Alt, src, lnki));}
|
||||
public void Write_or_queue(Bry_bfr bfr, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki, byte[] alt_text) {
|
||||
|
||||
@@ -21,23 +21,26 @@ import gplx.langs.htmls.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.
|
||||
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
|
||||
import gplx.xowa.wikis.nss.*; import gplx.xowa.files.*;
|
||||
import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*;
|
||||
public class Xoh_file_wtr__basic {
|
||||
public class Xoh_file_wtr__basic implements Gfo_invk {
|
||||
private final Xowe_wiki wiki; private final Xow_html_mgr html_mgr; private final Xoh_html_wtr html_wtr;
|
||||
private final Xoh_file_fmtr__basic fmtr__basic = new Xoh_file_fmtr__basic(), fmtr__hdump = new Xoh_file_fmtr__hdump();
|
||||
private final Xoh_lnki_text_fmtr alt_fmtr, caption_fmtr;
|
||||
private final Xop_link_parser tmp_link_parser = new Xop_link_parser(); private Xoa_url tmp_url = Xoa_url.blank();
|
||||
private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(32);
|
||||
private Xoae_page page; private boolean cfg_alt_defaults_to_caption; private byte[] msg_file_enlarge;
|
||||
private Xoae_page page; private byte[] msg_file_enlarge;
|
||||
private Xoh_file_fmtr__basic html_fmtr;
|
||||
private boolean alt_in_caption = true, alt_defaults_to_caption = true;
|
||||
public Xoh_file_wtr__basic(Xowe_wiki wiki, Xow_html_mgr html_mgr, Xoh_html_wtr html_wtr) {
|
||||
this.wiki = wiki; this.html_mgr = html_mgr; this.html_wtr = html_wtr;
|
||||
this.alt_fmtr = new Xoh_lnki_text_fmtr(wiki.Utl__bfr_mkr(), html_wtr);
|
||||
this.caption_fmtr = new Xoh_lnki_text_fmtr(wiki.Utl__bfr_mkr(), html_wtr);
|
||||
this.html_fmtr = fmtr__basic;
|
||||
}
|
||||
public void Init_by_wiki(Xowe_wiki wiki) {
|
||||
wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__alt_in_caption, Cfg__alt_defaults_to_caption);
|
||||
}
|
||||
public void Init_by_page(Xoh_wtr_ctx hctx, Xoae_page page) {
|
||||
this.page = page;
|
||||
this.cfg_alt_defaults_to_caption = wiki.Appe().Usere().Wiki().Html_mgr().Imgs_mgr().Alt_defaults_to_caption().Val();
|
||||
this.html_fmtr = hctx.Mode_is_hdump() ? fmtr__hdump : fmtr__basic;
|
||||
if (msg_file_enlarge == null) this.msg_file_enlarge = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_file_enlarge);
|
||||
}
|
||||
@@ -169,7 +172,7 @@ public class Xoh_file_wtr__basic {
|
||||
if (bfr.Len() > 0) bfr.Add_byte_nl();
|
||||
|
||||
// write image_div
|
||||
byte[] alt_html = wiki.Html_mgr().Imgs_mgr().Alt_in_caption().Val() ? Bld_alt(Bool_.Y, ctx, hctx, src, lnki) : Bry_.Empty;
|
||||
byte[] alt_html = alt_in_caption ? Bld_alt(Bool_.Y, ctx, hctx, src, lnki) : Bry_.Empty;
|
||||
img_fmtr.Add_full_img(tmp_bfr, hctx, page, src, xfer_itm, uid, lnki_href, Bool_.N, Xoh_lnki_consts.Tid_a_cls_image, Xoh_lnki_consts.Tid_a_rel_none, anch_ttl
|
||||
, Xoh_file_fmtr__basic.Escape_xowa_title(lnki_ttl), xfer_itm.Html_w(), xfer_itm.Html_h(), img_view_src, alt
|
||||
, xfer_itm.File_exists() ? Xoh_img_cls_.Tid__thumbimage : Xoh_img_cls_.Tid__none
|
||||
@@ -180,7 +183,7 @@ public class Xoh_file_wtr__basic {
|
||||
);
|
||||
}
|
||||
else { // is full
|
||||
if ( cfg_alt_defaults_to_caption
|
||||
if ( alt_defaults_to_caption
|
||||
&& Bry_.Len_eq_0(alt) // NOTE: if no alt, always use caption for alt; DATE:2013-07-22
|
||||
&& !lnki.Alt_exists() // unless blank alt exists; EX: [[File:A.png|a|alt=]] should have alt of "", not "a"
|
||||
) {
|
||||
@@ -261,6 +264,15 @@ public class Xoh_file_wtr__basic {
|
||||
, width - 2, max_width); // NOTE: -2 is fudge factor else play btn will jut out over video thumb; see Earth and ISS video
|
||||
}
|
||||
private int Get_play_btn_width(int w) {return w > 0 ? w : html_mgr.Img_thumb_width();} // if no width set width to default img width
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Cfg__alt_in_caption)) alt_in_caption = m.ReadYn("v");
|
||||
else if (ctx.Match(k, Cfg__alt_defaults_to_caption)) alt_defaults_to_caption = m.ReadYn("v");
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
private static final String
|
||||
Cfg__alt_in_caption = "xowa.html.wiki.alt_in_caption"
|
||||
, Cfg__alt_defaults_to_caption = "xowa.html.wiki.alt_defaults_to_caption";
|
||||
|
||||
private static final byte[]
|
||||
Div_center_bgn = Bry_.new_a7("<div class=\"center\">")
|
||||
|
||||
@@ -35,6 +35,9 @@ public class Xoh_lnki_wtr {
|
||||
file_wtr = new Xoh_file_mgr(wiki, html_mgr, html_wtr);
|
||||
}
|
||||
public Xoh_file_mgr File_wtr() {return file_wtr;} private Xoh_file_mgr file_wtr;
|
||||
public void Init_by_wiki(Xowe_wiki wiki) {
|
||||
file_wtr.Init_by_wiki(wiki);
|
||||
}
|
||||
public void Init_by_page(Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xoae_page page) {
|
||||
this.ctx = ctx; this.page = page; // NOTE: must set ctx for file.v2; DATE:2014-06-22
|
||||
this.wiki = ctx.Wiki();
|
||||
|
||||
@@ -21,11 +21,11 @@ public class Xoh_head_itm__collapsible extends Xoh_head_itm__base {
|
||||
@Override public int Flags() {return Flag__js_head_global;}
|
||||
@Override public void Write_js_head_global(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) {
|
||||
wtr.Write_js_global_ini_atr_val(Key_enabled , true);
|
||||
wtr.Write_js_global_ini_atr_val(Key_collapsed , app.Api_root().Html().Modules().Collapsible().Collapsed());
|
||||
wtr.Write_js_global_ini_atr_val(Key_collapsed , wiki.Html_mgr().Head_mgr().Collapsible__collapsible());
|
||||
wtr.Write_js_global_ini_atr_msg(wiki , Key_collapse);
|
||||
wtr.Write_js_global_ini_atr_msg(wiki , Key_expand);
|
||||
}
|
||||
private static final byte[]
|
||||
private static final byte[]
|
||||
Key_enabled = Bry_.new_a7("collapsible-enabled")
|
||||
, Key_collapsed = Bry_.new_a7("collapsible-collapsed")
|
||||
, Key_collapse = Bry_.new_a7("collapsible-collapse")
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Xoh_head_itm__css extends Xoh_head_itm__base {
|
||||
@Override public byte[] Key() {return Xoh_head_itm_.Key__css;}
|
||||
@Override public int Flags() {return Flag__css_text;}
|
||||
@Override public void Write_css_text(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) {
|
||||
wtr.Write_css_style_itm(app.Ctg_mgr().Missing_ctg_cls_css());
|
||||
wtr.Write_css_style_itm(wiki.Ctg__catpage_mgr().Missing_ctg_cls_css());
|
||||
app.Html_mgr().Page_mgr().Write_css(wtr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,11 +21,11 @@ public class Xoh_head_itm__navframe extends Xoh_head_itm__base {
|
||||
@Override public int Flags() {return Flag__js_head_global;}
|
||||
@Override public void Write_js_head_global(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) {
|
||||
wtr.Write_js_global_ini_atr_val(Key_enabled , true);
|
||||
wtr.Write_js_global_ini_atr_val(Key_collapsed , app.Api_root().Html().Modules().Navframe().Collapsed() || wiki.Html_mgr().Head_mgr().Itm__navframe().Enabled_n());
|
||||
wtr.Write_js_global_ini_atr_val(Key_collapsed , wiki.Html_mgr().Head_mgr().Collapsible__navframe() || wiki.Html_mgr().Head_mgr().Itm__navframe().Enabled_n());
|
||||
wtr.Write_js_global_ini_atr_msg(wiki , Key_show);
|
||||
wtr.Write_js_global_ini_atr_msg(wiki , Key_hide);
|
||||
}
|
||||
private static final byte[]
|
||||
private static final byte[]
|
||||
Key_enabled = Bry_.new_a7("navframe-enabled")
|
||||
, Key_collapsed = Bry_.new_a7("navframe-collapsed")
|
||||
, Key_show = Bry_.new_a7("show")
|
||||
|
||||
@@ -22,7 +22,7 @@ public class Xoh_head_itm__toc extends Xoh_head_itm__base {
|
||||
@Override public int Flags() {return Flag__js_head_global | Flag__js_tail_script;}
|
||||
@Override public void Write_js_head_global(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) {
|
||||
wtr.Write_js_global_ini_atr_val(Key_exists , true);
|
||||
wtr.Write_js_global_ini_atr_val(Key_collapsed , app.Api_root().Html().Modules().Collapsible().Collapsed() ? Val_collapsed_y : Val_collapsed_n);
|
||||
wtr.Write_js_global_ini_atr_val(Key_collapsed , wiki.Html_mgr().Head_mgr().Collapsible__toc() ? Val_collapsed_y : Val_collapsed_n);
|
||||
wtr.Write_js_global_ini_atr_msg(wiki , Key_showtoc);
|
||||
wtr.Write_js_global_ini_atr_msg(wiki , Key_hidetoc);
|
||||
}
|
||||
@@ -31,13 +31,13 @@ public class Xoh_head_itm__toc extends Xoh_head_itm__base {
|
||||
// wtr.Write_js_line(Xoh_head_itm__popups.Mw_init);
|
||||
// wtr.Write_js_tail_load_lib(app.Fsys_mgr().Bin_any_dir().GenSubFil_nest("xowa", "html", "modules", "mw.toc", "mw.toc.js"));
|
||||
}
|
||||
private static final byte[]
|
||||
private static final byte[]
|
||||
Key_exists = Bry_.new_a7("toc-enabled")
|
||||
, Key_collapsed = Bry_.new_a7("mw_hidetoc")
|
||||
, Val_collapsed_y = Bry_.new_a7("1")
|
||||
, Val_collapsed_n = Bry_.new_a7("0")
|
||||
;
|
||||
public static final byte[]
|
||||
public static final byte[]
|
||||
Key_showtoc = Bry_.new_a7("showtoc")
|
||||
, Key_hidetoc = Bry_.new_a7("hidetoc")
|
||||
;
|
||||
|
||||
@@ -63,7 +63,7 @@ public class Xoh_head_mgr implements gplx.core.brys.Bfr_arg {
|
||||
if (page.Wtxt().Toc().Enabled()) itm__toc.Enabled_y_();
|
||||
if (wiki.Html_mgr().Head_mgr().Itm__top_icon().Enabled_y()) itm__top_icon.Enabled_y_();
|
||||
if (wiki.Html_mgr().Head_mgr().Itm__title_rewrite().Enabled_y()) itm__title_rewrite.Enabled_y_();
|
||||
if (app.Gui_mgr().Search_cfg().Enabled()) itm__search_suggest.Enabled_y_();
|
||||
if (app.Addon_mgr().Itms__search__htmlbar().Enabled()) itm__search_suggest.Enabled_y_();
|
||||
itm__css.Enabled_y_();
|
||||
itm__globals.Enabled_y_(); // for now, always mark this and rest as exists; DATE:2014-06-09
|
||||
itm__collapsible.Enabled_y_();
|
||||
|
||||
@@ -125,7 +125,7 @@ public class Xoh_js_cbk implements Gfo_invk {
|
||||
Xowe_wiki wiki = html_itm.Owner_tab().Wiki();
|
||||
byte[] search_str = Bry_.new_u8((String)m.ReadValAt(0));
|
||||
byte[] cbk_func = Bry_.new_u8((String)m.ReadValAt(1));
|
||||
app.Gui_mgr().Search_cfg().Search(wiki, search_str, cbk_func);
|
||||
app.Addon_mgr().Itms__search__htmlbar().Search(wiki, search_str, cbk_func);
|
||||
return "";
|
||||
}
|
||||
private String[] Wikidata_get_label(GfoMsg m) {
|
||||
|
||||
@@ -22,31 +22,45 @@ import gplx.xowa.guis.*; import gplx.xowa.addons.htmls.sidebars.*; import gplx.x
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.wikis.domains.*;
|
||||
import gplx.langs.htmls.encoders.*; import gplx.xowa.htmls.hrefs.*;
|
||||
import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.apps.apis.xowa.html.skins.*;
|
||||
import gplx.xowa.apps.apis.xowa.html.*;
|
||||
import gplx.xowa.langs.vnts.*; import gplx.xowa.htmls.portal.vnts.*;
|
||||
public class Xow_portal_mgr implements Gfo_invk {
|
||||
private Xowe_wiki wiki; private boolean lang_is_rtl; private Xoapi_toggle_itm toggle_itm;
|
||||
private final Vnt_mnu_grp_fmtr vnt_menu_fmtr = new Vnt_mnu_grp_fmtr();
|
||||
private final Gfo_url_encoder fsys_lnx_encoder = Gfo_url_encoder_.New__fsys_lnx().Make();
|
||||
private boolean sidebar_enabled;
|
||||
public Xow_portal_mgr(Xowe_wiki wiki) {
|
||||
this.wiki = wiki;
|
||||
this.sidebar_mgr = new Xoh_sidebar_mgr(wiki);
|
||||
this.missing_ns_cls = Bry_.Eq(wiki.Domain_bry(), Xow_domain_tid_.Bry__home) ? Missing_ns_cls_hide : null; // if home wiki, set missing_ns to application default; if any other wiki, set to null; will be overriden during init
|
||||
}
|
||||
public void Init_by_lang(Xol_lang_itm lang) {
|
||||
lang_is_rtl = !lang.Dir_ltr();
|
||||
}
|
||||
private Xoapi_skin_app_base api_skin;
|
||||
public byte[] Missing_ns_cls() {return missing_ns_cls;} public Xow_portal_mgr Missing_ns_cls_(byte[] v) {missing_ns_cls = v; return this;} private byte[] missing_ns_cls; // NOTE: must be null due to Init check above
|
||||
public Xoh_sidebar_mgr Sidebar_mgr() {return sidebar_mgr;} private Xoh_sidebar_mgr sidebar_mgr;
|
||||
public Bry_fmtr Div_home_fmtr() {return div_home_fmtr;} private Bry_fmtr div_home_fmtr = Bry_fmtr.new_("");
|
||||
public Xow_portal_mgr Init_assert() {if (init_needed) Init(); return this;}
|
||||
public byte[] Div_jump_to() {return div_jump_to;} private byte[] div_jump_to = Bry_.Empty;
|
||||
public void Init_by_lang(Xol_lang_itm lang) {
|
||||
lang_is_rtl = !lang.Dir_ltr();
|
||||
}
|
||||
public void Init_by_wiki(Xowe_wiki wiki) {
|
||||
wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__missing_class, Cfg__sidebar_enabled__desktop, Cfg__sidebar_enabled__server);
|
||||
}
|
||||
private void Sidebar_enabled_(boolean is_desktop, boolean val) {
|
||||
// set sidebar_enabled if (a) is_gui and is_desktop; or (b) is_server and !is_desktop
|
||||
if (wiki.App().Mode().Tid_is_gui()) {
|
||||
if (is_desktop)
|
||||
this.sidebar_enabled = val;
|
||||
}
|
||||
else {
|
||||
if (!is_desktop)
|
||||
this.sidebar_enabled = val;
|
||||
}
|
||||
}
|
||||
public void Init() {
|
||||
init_needed = false;
|
||||
if (missing_ns_cls == null) // if missing_ns_cls not set for wiki, use the home wiki's
|
||||
if (missing_ns_cls == null) {// if missing_ns_cls not set for wiki, use the home wiki's
|
||||
Missing_ns_cls_(wiki.Appe().Usere().Wiki().Html_mgr().Portal_mgr().Missing_ns_cls());
|
||||
Xoapi_skins skins = wiki.Appe().Api_root().Html().Skins();
|
||||
api_skin = wiki.App().Mode().Tid_is_gui() ? skins.Desktop() : skins.Server();
|
||||
}
|
||||
Bry_fmtr_eval_mgr eval_mgr = wiki.Eval_mgr();
|
||||
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512();
|
||||
Init_fmtr(tmp_bfr, eval_mgr, div_view_fmtr);
|
||||
@@ -105,7 +119,7 @@ public class Xow_portal_mgr implements Gfo_invk {
|
||||
return tmp_bfr.To_bry_and_rls();
|
||||
} public static final byte[] Cls_selected_y = Bry_.new_a7("selected"), Cls_new = Bry_.new_a7("new"), Cls_display_none = Bry_.new_a7("xowa_display_none");
|
||||
public byte[] Div_logo_bry() {return div_logo_bry;} private byte[] div_logo_bry = Bry_.Empty;
|
||||
public byte[] Div_home_bry() {return api_skin != null && api_skin.Sidebar_home_enabled() ? div_home_bry : Bry_.Empty;} private byte[] div_home_bry = Bry_.Empty;
|
||||
public byte[] Div_home_bry() {return sidebar_enabled ? div_home_bry : Bry_.Empty;} private byte[] div_home_bry = Bry_.Empty;
|
||||
public byte[] Div_sync_bry(Bry_bfr tmp_bfr, boolean manual_enabled, Xow_wiki wiki, Xoa_page page) {
|
||||
// only show update_html if wmf; DATE:2016-08-31
|
||||
if ( wiki.Domain_itm().Domain_type().Src() == Xow_domain_tid.Src__wmf
|
||||
@@ -122,7 +136,6 @@ public class Xow_portal_mgr implements Gfo_invk {
|
||||
div_wikis_fmtr.Bld_bfr_many(tmp_bfr, toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr());
|
||||
return tmp_bfr.To_bry_and_rls();
|
||||
}
|
||||
public byte[] Missing_ns_cls() {return missing_ns_cls;} public Xow_portal_mgr Missing_ns_cls_(byte[] v) {missing_ns_cls = v; return this;} private byte[] missing_ns_cls; // NOTE: must be null due to Init check above
|
||||
private final Bry_fmtr
|
||||
div_personal_fmtr = Bry_fmtr.new_("~{portal_personal_subj_href};~{portal_personal_subj_text};~{portal_personal_talk_cls};~{portal_personal_talk_href};~{portal_personal_talk_cls};", "portal_personal_subj_href", "portal_personal_subj_text", "portal_personal_subj_cls", "portal_personal_talk_href", "portal_personal_talk_cls")
|
||||
, div_ns_fmtr = Bry_fmtr.new_("~{portal_ns_subj_href};~{portal_ns_subj_cls};~{portal_ns_talk_href};~{portal_ns_talk_cls};~{portal_div_vnts}", "portal_ns_subj_href", "portal_ns_subj_cls", "portal_ns_talk_href", "portal_ns_talk_cls", "portal_div_vnts")
|
||||
@@ -142,21 +155,24 @@ public class Xow_portal_mgr implements Gfo_invk {
|
||||
else if (ctx.Match(k, Invk_div_home_)) div_home_fmtr.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_div_sync_)) div_sync_fmtr.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_div_wikis_)) div_wikis_fmtr.Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_missing_ns_cls)) return String_.new_u8(missing_ns_cls);
|
||||
else if (ctx.Match(k, Invk_missing_ns_cls_)) missing_ns_cls = m.ReadBry("v");
|
||||
else if (ctx.Match(k, Invk_missing_ns_cls_list)) return Options_missing_ns_cls_list;
|
||||
|
||||
else if (ctx.Match(k, Cfg__missing_class)) missing_ns_cls = m.ReadBry("v");
|
||||
else if (ctx.Match(k, Cfg__sidebar_enabled__desktop)) Sidebar_enabled_(Bool_.Y, m.ReadYn("v"));
|
||||
else if (ctx.Match(k, Cfg__sidebar_enabled__server)) Sidebar_enabled_(Bool_.N, m.ReadYn("v"));
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
private static final String Invk_div_personal_ = "div_personal_", Invk_div_view_ = "div_view_", Invk_div_ns_ = "div_ns_", Invk_div_home_ = "div_home_"
|
||||
, Invk_div_sync_ = "div_sync_"
|
||||
, Invk_div_wikis_ = "div_wikis_"
|
||||
, Invk_missing_ns_cls = "missing_ns_cls", Invk_missing_ns_cls_ = "missing_ns_cls_", Invk_missing_ns_cls_list = "missing_ns_cls_list"
|
||||
;
|
||||
, Invk_div_sync_ = "div_sync_", Invk_div_wikis_ = "div_wikis_";
|
||||
public static final String Invk_div_logo_ = "div_logo_";
|
||||
private static Keyval[] Options_missing_ns_cls_list = Keyval_.Ary(Keyval_.new_("", "Show as blue link"), Keyval_.new_("new", "Show as red link"), Keyval_.new_("xowa_display_none", "Hide"));
|
||||
private static final byte[] Missing_ns_cls_hide = Bry_.new_a7("xowa_display_none");
|
||||
private static final Bry_fmtr Div_jump_to_fmtr = Bry_fmtr.new_
|
||||
( "\n <div id=\"jump-to-nav\" class=\"mw-jump\">~{jumpto}<a href=\"#mw-navigation\">~{jumptonavigation}</a>~{comma-separator}<a href=\"#p-search\">~{jumptosearch}</a></div>"
|
||||
, "jumpto", "jumptonavigation", "comma-separator", "jumptosearch");
|
||||
|
||||
private static final String
|
||||
Cfg__missing_class = "xowa.html.wiki.portal.missing_class"
|
||||
, Cfg__sidebar_enabled__desktop = "xowa.html.wiki.portal.sidebar_enabled_desktop"
|
||||
, Cfg__sidebar_enabled__server = "xowa.html.wiki.portal.sidebar_enabled_server"
|
||||
;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ class Xowh_portal_mgr_fxt {
|
||||
wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
wiki.Ns_mgr().Ns_main().Exists_(true); // needed for ns
|
||||
wiki.Html_mgr().Portal_mgr().Init_assert(); // needed for personal
|
||||
wiki.Html_mgr().Portal_mgr().Missing_ns_cls_(Bry_.new_a7("xowa_display_none"));
|
||||
}
|
||||
} private Xoae_app app; Xowe_wiki wiki;
|
||||
public void Test_div_ns_bry(String ttl, String expd) {
|
||||
|
||||
Reference in New Issue
Block a user