mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Cfg: Convert 'Addon - Popups'
This commit is contained in:
parent
42e7f5f2c6
commit
3ebc5aa2cd
@ -53,9 +53,13 @@ public class Xocfg_mgr {
|
||||
cache_mgr.Sub(sub, ctx, key, key);
|
||||
return cache_mgr.Get(ctx, key);
|
||||
}
|
||||
public boolean Get_bool_by_app_or(String key, boolean or) {
|
||||
String rv = Get_str(Ctx__app, key);
|
||||
return rv == null ? or : Yn.parse_or(rv, or);
|
||||
}
|
||||
public boolean Get_bool_by_wiki_or(Xow_wiki wiki, String key, boolean or) {
|
||||
String rv = Get_str(wiki.Domain_itm().Abrv_xo_str(), key);
|
||||
return rv == null ? Yn.parse_or(rv, or) : or;
|
||||
return rv == null ? or : Yn.parse_or(rv, or);
|
||||
}
|
||||
public String Get_str_app(String key) {return Get_str(Xocfg_mgr.Ctx__app, key);}
|
||||
public boolean Get_bool_or(String ctx, String key, boolean or) {
|
||||
@ -67,6 +71,15 @@ public class Xocfg_mgr {
|
||||
return or;
|
||||
}
|
||||
}
|
||||
public int Get_int_by_wiki_or(Xow_wiki wiki, String key, int or) {
|
||||
String rv = Get_str(wiki.Domain_itm().Abrv_xo_str(), key);
|
||||
try {return Int_.parse(rv);}
|
||||
catch (Exception exc) {
|
||||
Err_.Noop(exc);
|
||||
Gfo_usr_dlg_.Instance.Warn_many("", "", "cfg:failed to parse int; key=~{0} val=~{1}", key, rv);
|
||||
return or;
|
||||
}
|
||||
}
|
||||
public int Get_int_or(String ctx, String key, int or) {
|
||||
String rv = cache_mgr.Get(ctx, key);
|
||||
try {return Int_.parse(rv);}
|
||||
|
@ -19,7 +19,7 @@ package gplx.xowa.addons.apps.cfgs.specials.edits.objs; import gplx.*; import gp
|
||||
import gplx.langs.mustaches.*;
|
||||
import gplx.core.gfobjs.*;
|
||||
public class Xoedit_grp implements Xoedit_nde, Mustache_doc_itm {
|
||||
private String lang, name, help;
|
||||
private String lang, name;
|
||||
public Xoedit_grp(int id, String key, int sort) {
|
||||
this.id = id;
|
||||
this.key = key;
|
||||
@ -27,7 +27,9 @@ public class Xoedit_grp implements Xoedit_nde, Mustache_doc_itm {
|
||||
}
|
||||
public int Id() {return id;} private final int id;
|
||||
public String Key() {return key;} private final String key;
|
||||
public int Sort() {return sort;} private final int sort;
|
||||
public int Sort() {return sort;} private final int sort;
|
||||
public String Help() {return help;} private String help;
|
||||
|
||||
public Xoedit_itm[] Itms() {return itms;} private Xoedit_itm[] itms = new Xoedit_itm[0];
|
||||
public void Itms_(Xoedit_itm[] v) {this.itms = v;}
|
||||
public void Load_by_i18n(String lang, String name, String help) {
|
||||
|
@ -22,7 +22,7 @@ import gplx.xowa.addons.apps.cfgs.mgrs.types.*;
|
||||
public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
|
||||
private int gui_type;
|
||||
private boolean edited;
|
||||
private String data_type, gui_args, dflt, lang, name, help, ctx, val, date;
|
||||
private String data_type, gui_args, dflt, lang, name, ctx, val, date;
|
||||
private Xocfg_type_mgr type_mgr;
|
||||
public Xoedit_itm(Xocfg_type_mgr type_mgr, int id, String key, int sort) {
|
||||
this.type_mgr = type_mgr;
|
||||
@ -32,6 +32,8 @@ public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm {
|
||||
}
|
||||
public int Id() {return id;} private final int id;
|
||||
public String Key() {return key;} private final String key;
|
||||
public String Help() {return help;} private String help;
|
||||
|
||||
public int Sort() {return sort;} private final int sort;
|
||||
public void Load_by_meta(int scope_id, String data_type, int gui_type, String gui_args, String dflt) {
|
||||
this.data_type = data_type;
|
||||
|
@ -19,5 +19,6 @@ package gplx.xowa.addons.apps.cfgs.specials.edits.objs; import gplx.*; import gp
|
||||
public interface Xoedit_nde {
|
||||
int Id();
|
||||
String Key();
|
||||
String Help();
|
||||
void Load_by_i18n(String lang, String name, String help);
|
||||
}
|
||||
|
@ -21,8 +21,10 @@ import gplx.core.gfobjs.*;
|
||||
public class Xoedit_root implements Mustache_doc_itm {
|
||||
private final Xoedit_nav_mgr nav_mgr;
|
||||
private final Xoedit_grp[] grps;
|
||||
public Xoedit_root(Xoedit_nav_mgr nav_mgr, Xoedit_grp[] grps) {
|
||||
private final String page_help;
|
||||
public Xoedit_root(Xoedit_nav_mgr nav_mgr, String page_help, Xoedit_grp[] grps) {
|
||||
this.nav_mgr = nav_mgr;
|
||||
this.page_help = page_help;
|
||||
this.grps = grps;
|
||||
}
|
||||
public Gfobj_nde To_nde() {
|
||||
@ -33,16 +35,18 @@ public class Xoedit_root implements Mustache_doc_itm {
|
||||
Xoedit_grp itm = grps[i];
|
||||
list.Add(itm.To_nde());
|
||||
}
|
||||
rv.Add_str("page_help", page_help);
|
||||
rv.Add_ary("grps", new Gfobj_ary((Gfobj_nde[])list.To_ary_and_clear(Gfobj_nde.class)));
|
||||
return rv;
|
||||
}
|
||||
public boolean Mustache__write(String k, Mustache_bfr bfr) {
|
||||
if (String_.Eq(k, "page_help")) bfr.Add_str_u8(page_help);
|
||||
return true;
|
||||
}
|
||||
public Mustache_doc_itm[] Mustache__subs(String key) {
|
||||
if (String_.Eq(key, "grps")) return grps;
|
||||
else if (String_.Eq(key, "nav_exists")) return Mustache_doc_itm_.Ary__bool(nav_mgr.Itms().length > 1); // NOTE: do not show combo if 0 or 1 item
|
||||
else if (String_.Eq(key, "itms")) return nav_mgr.Itms();
|
||||
public Mustache_doc_itm[] Mustache__subs(String k) {
|
||||
if (String_.Eq(k, "grps")) return grps;
|
||||
else if (String_.Eq(k, "nav_exists")) return Mustache_doc_itm_.Ary__bool(nav_mgr.Itms().length > 1); // NOTE: do not show combo if 0 or 1 item
|
||||
else if (String_.Eq(k, "itms")) return nav_mgr.Itms();
|
||||
return Mustache_doc_itm_.Ary__empty;
|
||||
}
|
||||
}
|
||||
|
@ -56,8 +56,10 @@ public class Xocfg_edit_loader {
|
||||
Load_itm_data(itm_list, ctx);
|
||||
Load_i18n(grp_list, itm_list, lang);
|
||||
|
||||
Xoedit_nde page_nde = grp_list.Get_by_or_fail(grp_key);
|
||||
|
||||
grp_list.Delete_container_grps();
|
||||
return new Xoedit_root(Load_nav_mgr(grp_key), (Xoedit_grp[])grp_list.To_grp_ary_and_clear());
|
||||
return new Xoedit_root(Load_nav_mgr(grp_key), page_nde.Help(), (Xoedit_grp[])grp_list.To_grp_ary_and_clear());
|
||||
}
|
||||
private Xoedit_nav_mgr Load_nav_mgr(String grp_key) {
|
||||
// get grp_id
|
||||
|
@ -37,13 +37,13 @@ public class Xocfg_maint_svc {
|
||||
db_app.Conn().Txn_bgn("xo__cfg_maint__upsert");
|
||||
byte[] anch_find_bry = Bry_.new_a7("<a "), anch_repl_bry = Bry_.new_a7("<a tabindex=\"-1\" ");
|
||||
for (Xocfg_maint_nde nde : ndes) {
|
||||
byte[] help = parser_mgr.Main().Parse_text_to_html(parser_mgr.Ctx(), Bry_.new_u8(nde.Help()));
|
||||
help = Bry_.Replace(help, anch_find_bry, anch_repl_bry); // replace "<a " with "<a tabindex=-1 " else tabbing will go to hidden anchors in help text
|
||||
if (nde.Type_is_grp()) {
|
||||
Xocfg_maint_svc.Create_grp(db_app, nde.Key(), nde.Owner(), nde.Name(), nde.Help());
|
||||
Xocfg_maint_svc.Create_grp(db_app, nde.Key(), nde.Owner(), nde.Name(), String_.new_u8(help));
|
||||
}
|
||||
else {
|
||||
Xocfg_maint_itm itm = (Xocfg_maint_itm)nde;
|
||||
byte[] help = parser_mgr.Main().Parse_text_to_html(parser_mgr.Ctx(), Bry_.new_u8(itm.Help()));
|
||||
help = Bry_.Replace(help, anch_find_bry, anch_repl_bry); // replace "<a " with "<a tabindex=-1 " else tabbing will go to hidden anchors in help text
|
||||
Xocfg_maint_svc.Create_itm(db_app, nde.Key(), nde.Owner(), nde.Name(), String_.new_u8(help), itm.Scope(), itm.Db_type(), itm.Dflt(), itm.Gui_type(), itm.Gui_args());
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ class Xoh_sidebar_htmlr {
|
||||
public static byte[] To_html(Bry_bfr bfr, Xowe_wiki wiki, List_adp grps) {
|
||||
Xoh_sidebar_itms_fmtr itms_fmtr = new Xoh_sidebar_itms_fmtr();
|
||||
int len = grps.Count();
|
||||
boolean popups_enabled = wiki.Appe().Api_root().Html().Modules().Popups().Enabled();
|
||||
boolean popups_enabled = wiki.Html_mgr().Head_mgr().Popup_mgr().Enabled();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Xoh_sidebar_itm grp = (Xoh_sidebar_itm)grps.Get_at(i);
|
||||
itms_fmtr.Init_by_grp(popups_enabled, grp);
|
||||
|
@ -169,7 +169,10 @@ class Xoh_sidebar_mgr_fxt {
|
||||
rv.Init_by_title_and_accesskey(Bry_.new_a7(title), Bry_.new_a7(accesskey), null);
|
||||
return rv;
|
||||
}
|
||||
public Xoh_sidebar_mgr_fxt Init__popups_enabled(boolean v) {app.Api_root().Html().Modules().Popups().Enabled_(v); return this;}
|
||||
public Xoh_sidebar_mgr_fxt Init__popups_enabled(boolean v) {
|
||||
wiki.Html_mgr().Head_mgr().Popup_mgr().Enabled_(v);
|
||||
return this;
|
||||
}
|
||||
public Xoh_sidebar_mgr_fxt Init__msg__grp(String key, String text, String title) {
|
||||
Init_msg(key, text);
|
||||
Init_msg("tooltip-n-" + key, title);
|
||||
|
@ -24,33 +24,6 @@ public class Xoapi_popups implements Gfo_invk, Gfo_evt_mgr_owner {
|
||||
}
|
||||
public Gfo_evt_mgr Evt_mgr() {return evt_mgr;} private Gfo_evt_mgr evt_mgr;
|
||||
public void Init_by_app(Xoae_app app) {this.app = app;}
|
||||
public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled = true;
|
||||
public int Show_init_word_count() {return show_init_word_count;} private int show_init_word_count = Dflt_show_init_word_count;
|
||||
public int Show_more_word_count() {return show_more_word_count;} private int show_more_word_count = Dflt_show_more_word_count;
|
||||
public int Show_all_if_less_than() {return show_all_if_less_than;} private int show_all_if_less_than = Dflt_show_all_if_less_than;
|
||||
public int Win_show_delay() {return win_show_delay;} private int win_show_delay = Dflt_win_show_delay;
|
||||
public int Win_hide_delay() {return win_hide_delay;} private int win_hide_delay = Dflt_win_hide_delay;
|
||||
public int Win_max_w() {return win_max_w;} private int win_max_w = Dflt_win_max_w;
|
||||
public int Win_max_h() {return win_max_h;} private int win_max_h = Dflt_win_max_h;
|
||||
public int Win_show_all_max_w() {return win_show_all_max_w;} private int win_show_all_max_w = Dflt_win_show_all_max_w;
|
||||
public boolean Win_bind_focus_blur() {return win_bind_focus_blur;} private boolean win_bind_focus_blur = Dflt_win_bind_focus_blur;
|
||||
public byte[] Xnde_ignore_ids() {return xnde_ignore_ids;} private byte[] xnde_ignore_ids = Dflt_xnde_ignore_ids;
|
||||
public int Scan_len() {return scan_len;} private int scan_len = Dflt_scan_len;
|
||||
public int Scan_max() {return scan_max;} private int scan_max = Dflt_scan_max;
|
||||
public byte[] Ns_allowed() {return ns_allowed;} private byte[] ns_allowed = Dflt_ns_allowed;
|
||||
public int Read_til_stop_fwd() {return read_til_stop_fwd;} private int read_til_stop_fwd = Dflt_read_til_stop_fwd;
|
||||
public int Read_til_stop_bwd() {return read_til_stop_bwd;} private int read_til_stop_bwd = Dflt_read_til_stop_bwd;
|
||||
public int Stop_if_hdr_after() {return stop_if_hdr_after;} private int stop_if_hdr_after = Dflt_stop_if_hdr_after;
|
||||
public int Tmpl_tkn_max() {return tmpl_tkn_max;} private int tmpl_tkn_max = Dflt_tmpl_tkn_max;
|
||||
public byte[] Tmpl_keeplist() {return tmpl_keeplist;} private byte[] tmpl_keeplist = Dflt_tmpl_keeplist;
|
||||
public byte[] Html_fmtr_popup() {return html_fmtr_popup;} private byte[] html_fmtr_popup = Dflt_html_fmtr_popup;
|
||||
public byte[] Html_fmtr_popup_dflt() {return html_fmtr_popup_dflt;} private byte[] html_fmtr_popup_dflt = Dflt_html_fmtr_popup;
|
||||
public byte[] Html_fmtr_viewed() {return html_fmtr_viewed;} private byte[] html_fmtr_viewed = Dflt_html_fmtr_viewed;
|
||||
public byte[] Html_fmtr_viewed_dflt() {return html_fmtr_viewed_dflt;} private byte[] html_fmtr_viewed_dflt = Dflt_html_fmtr_viewed;
|
||||
public byte[] Html_fmtr_wiki() {return html_fmtr_wiki;} private byte[] html_fmtr_wiki = Dflt_html_fmtr_wiki;
|
||||
public byte[] Html_fmtr_wiki_dflt() {return html_fmtr_wiki_dflt;} private byte[] html_fmtr_wiki_dflt = Dflt_html_fmtr_wiki;
|
||||
public byte[] Html_fmtr_next_sect_fmt() {return html_fmtr_next_sect;} private byte[] html_fmtr_next_sect = Dflt_html_fmtr_next_sect;
|
||||
public byte[] Html_fmtr_next_sect_fmt_dflt() {return html_fmtr_next_sect_dflt;} private byte[] html_fmtr_next_sect_dflt = Dflt_html_fmtr_next_sect;
|
||||
public void Show_more(String popup_id) {
|
||||
Xowe_wiki wiki = app.Gui_mgr().Browser_win().Active_tab().Wiki();
|
||||
wiki.Html_mgr().Head_mgr().Popup_mgr().Show_more(popup_id);
|
||||
@ -60,183 +33,12 @@ public class Xoapi_popups implements Gfo_invk, Gfo_evt_mgr_owner {
|
||||
wiki.Html_mgr().Head_mgr().Popup_mgr().Show_all(popup_id);
|
||||
}
|
||||
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_show_more)) Show_more(m.ReadStr("popup_id"));
|
||||
if (ctx.Match(k, Invk_show_more)) Show_more(m.ReadStr("popup_id"));
|
||||
else if (ctx.Match(k, Invk_show_all)) Show_all (m.ReadStr("popup_id"));
|
||||
else if (ctx.Match(k, Invk_show_init_word_count)) return show_init_word_count;
|
||||
else if (ctx.Match(k, Invk_show_init_word_count_)) {show_init_word_count = Set_int_gt_0(m, show_init_word_count, Evt_show_init_word_count_changed);}
|
||||
else if (ctx.Match(k, Invk_show_more_word_count)) return show_more_word_count;
|
||||
else if (ctx.Match(k, Invk_show_more_word_count_)) {show_more_word_count = Set_int_gt_0(m, show_more_word_count, Evt_show_more_word_count_changed);}
|
||||
else if (ctx.Match(k, Invk_show_all_if_less_than)) return show_all_if_less_than;
|
||||
else if (ctx.Match(k, Invk_show_all_if_less_than_)) {show_all_if_less_than = Set_int(m, show_all_if_less_than, Evt_show_all_if_less_than_changed);}
|
||||
else if (ctx.Match(k, Invk_win_show_delay)) return win_show_delay;
|
||||
else if (ctx.Match(k, Invk_win_show_delay_)) {win_show_delay = Set_int(m, win_show_delay, Evt_win_show_delay_changed);}
|
||||
else if (ctx.Match(k, Invk_win_hide_delay)) return win_hide_delay;
|
||||
else if (ctx.Match(k, Invk_win_hide_delay_)) {win_hide_delay = Set_int(m, win_hide_delay, Evt_win_hide_delay_changed);}
|
||||
else if (ctx.Match(k, Invk_win_max_w)) return win_max_w;
|
||||
else if (ctx.Match(k, Invk_win_max_w_)) {win_max_w = Set_int(m, win_max_w, Evt_win_max_w_changed);}
|
||||
else if (ctx.Match(k, Invk_win_max_h)) return win_max_h;
|
||||
else if (ctx.Match(k, Invk_win_max_h_)) {win_max_h = Set_int(m, win_max_h, Evt_win_max_h_changed);}
|
||||
else if (ctx.Match(k, Invk_win_show_all_max_w)) return win_show_all_max_w;
|
||||
else if (ctx.Match(k, Invk_win_show_all_max_w_)) {win_show_all_max_w = m.ReadInt("v");}
|
||||
else if (ctx.Match(k, Invk_win_bind_focus_blur)) return Yn.To_str(win_bind_focus_blur);
|
||||
else if (ctx.Match(k, Invk_win_bind_focus_blur_)) win_bind_focus_blur = m.ReadYn("v");
|
||||
else if (ctx.Match(k, Invk_xnde_ignore_ids)) return String_.new_u8(xnde_ignore_ids);
|
||||
else if (ctx.Match(k, Invk_xnde_ignore_ids_)) {xnde_ignore_ids = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_xnde_ignore_ids_changed, xnde_ignore_ids);}
|
||||
else if (ctx.Match(k, Invk_scan_len)) return scan_len;
|
||||
else if (ctx.Match(k, Invk_scan_len_)) {scan_len = Set_int_gt_0(m, scan_len, Evt_scan_len_changed);}
|
||||
else if (ctx.Match(k, Invk_scan_max)) return scan_max;
|
||||
else if (ctx.Match(k, Invk_scan_max_)) {scan_max = Set_int_gt_0(m, scan_max, Evt_scan_max_changed);}
|
||||
else if (ctx.Match(k, Invk_read_til_stop_fwd)) return read_til_stop_fwd;
|
||||
else if (ctx.Match(k, Invk_read_til_stop_fwd_)) {read_til_stop_fwd = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_read_til_stop_fwd_changed, read_til_stop_fwd);}
|
||||
else if (ctx.Match(k, Invk_read_til_stop_bwd)) return read_til_stop_bwd;
|
||||
else if (ctx.Match(k, Invk_read_til_stop_bwd_)) {read_til_stop_bwd = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_read_til_stop_bwd_changed, read_til_stop_bwd);}
|
||||
else if (ctx.Match(k, Invk_stop_if_hdr_after)) return stop_if_hdr_after;
|
||||
else if (ctx.Match(k, Invk_stop_if_hdr_after_)) {stop_if_hdr_after = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_stop_if_hdr_after_changed, stop_if_hdr_after);}
|
||||
else if (ctx.Match(k, Invk_ns_allowed)) return String_.new_u8(ns_allowed);
|
||||
else if (ctx.Match(k, Invk_ns_allowed_)) {ns_allowed = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_ns_allowed_changed, ns_allowed);}
|
||||
else if (ctx.Match(k, Invk_tmpl_tkn_max)) return tmpl_tkn_max;
|
||||
else if (ctx.Match(k, Invk_tmpl_tkn_max_)) {tmpl_tkn_max = m.ReadInt("v"); Gfo_evt_mgr_.Pub_val(this, Evt_tmpl_tkn_max_changed, tmpl_tkn_max);}
|
||||
else if (ctx.Match(k, Invk_tmpl_keeplist)) return String_.new_u8(tmpl_keeplist);
|
||||
else if (ctx.Match(k, Invk_tmpl_keeplist_)) {tmpl_keeplist = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_tmpl_keeplist_changed, tmpl_keeplist);}
|
||||
else if (ctx.Match(k, Invk_html_fmtr_popup)) return String_.new_u8(html_fmtr_popup);
|
||||
else if (ctx.Match(k, Invk_html_fmtr_popup_)) {html_fmtr_popup = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_html_fmtr_popup_changed, html_fmtr_popup);}
|
||||
else if (ctx.Match(k, Invk_html_fmtr_popup_dflt)) return String_.new_u8(html_fmtr_popup_dflt);
|
||||
else if (ctx.Match(k, Invk_html_fmtr_popup_dflt_)) {html_fmtr_popup_dflt = m.ReadBry("v");}
|
||||
else if (ctx.Match(k, Invk_html_fmtr_viewed)) return String_.new_u8(html_fmtr_viewed);
|
||||
else if (ctx.Match(k, Invk_html_fmtr_viewed_)) {html_fmtr_viewed = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_html_fmtr_viewed_changed, html_fmtr_viewed);}
|
||||
else if (ctx.Match(k, Invk_html_fmtr_viewed_dflt)) return String_.new_u8(html_fmtr_viewed_dflt);
|
||||
else if (ctx.Match(k, Invk_html_fmtr_viewed_dflt_)) {html_fmtr_viewed_dflt = m.ReadBry("v");}
|
||||
else if (ctx.Match(k, Invk_html_fmtr_wiki)) return String_.new_u8(html_fmtr_wiki);
|
||||
else if (ctx.Match(k, Invk_html_fmtr_wiki_)) {html_fmtr_wiki = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_html_fmtr_wiki_changed, html_fmtr_wiki);}
|
||||
else if (ctx.Match(k, Invk_html_fmtr_wiki_dflt)) return String_.new_u8(html_fmtr_wiki_dflt);
|
||||
else if (ctx.Match(k, Invk_html_fmtr_wiki_dflt_)) {html_fmtr_wiki_dflt = m.ReadBry("v");}
|
||||
else if (ctx.Match(k, Invk_html_fmtr_next_sect)) return String_.new_u8(html_fmtr_next_sect);
|
||||
else if (ctx.Match(k, Invk_html_fmtr_next_sect_)) {html_fmtr_next_sect = m.ReadBry("v"); Gfo_evt_mgr_.Pub_val(this, Evt_html_fmtr_next_sect_changed, html_fmtr_next_sect);}
|
||||
else if (ctx.Match(k, Invk_html_fmtr_next_sect_dflt)) return String_.new_u8(html_fmtr_next_sect_dflt);
|
||||
else if (ctx.Match(k, Invk_html_fmtr_next_sect_dflt_)) {html_fmtr_next_sect_dflt = m.ReadBry("v");}
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
private int Set_int_gt_0(GfoMsg m, int cur_val, String evt) {
|
||||
int tmp = m.ReadInt("v");
|
||||
if (tmp < 1) return cur_val;
|
||||
Gfo_evt_mgr_.Pub_val(this, evt, tmp);
|
||||
return tmp;
|
||||
}
|
||||
private int Set_int(GfoMsg m, int cur_val, String evt) {
|
||||
int tmp = m.ReadInt("v");
|
||||
Gfo_evt_mgr_.Pub_val(this, evt, tmp);
|
||||
return tmp;
|
||||
}
|
||||
private static final String
|
||||
Invk_enabled = "enabled", Invk_enabled_ = "enabled_"
|
||||
, Invk_show_init_word_count = "show_init_word_count", Invk_show_init_word_count_ = "show_init_word_count_"
|
||||
, Invk_show_more_word_count = "show_more_word_count", Invk_show_more_word_count_ = "show_more_word_count_"
|
||||
, Invk_show_all_if_less_than = "show_all_if_less_than", Invk_show_all_if_less_than_ = "show_all_if_less_than_"
|
||||
, Invk_xnde_ignore_ids = "xnde_ignore_ids", Invk_xnde_ignore_ids_ = "xnde_ignore_ids_"
|
||||
, Invk_scan_len = "scan_len", Invk_scan_len_ = "scan_len_"
|
||||
, Invk_scan_max = "scan_max", Invk_scan_max_ = "scan_max_"
|
||||
, Invk_show_more = "show_more", Invk_show_all = "show_all"
|
||||
, Invk_html_fmtr_popup = "html_fmtr_popup" , Invk_html_fmtr_popup_ = "html_fmtr_popup"
|
||||
, Invk_html_fmtr_viewed = "html_fmtr_viewed" , Invk_html_fmtr_viewed_ = "html_fmtr_viewed_"
|
||||
, Invk_html_fmtr_wiki = "html_fmtr_wiki" , Invk_html_fmtr_wiki_ = "html_fmtr_wiki_"
|
||||
, Invk_html_fmtr_next_sect = "html_fmtr_next_sect" , Invk_html_fmtr_next_sect_ = "html_fmtr_next_sect_"
|
||||
, Invk_html_fmtr_popup_dflt = "html_fmtr_popup_dflt" , Invk_html_fmtr_popup_dflt_ = "html_fmtr_popup_dflt_"
|
||||
, Invk_html_fmtr_viewed_dflt = "html_fmtr_viewed_dflt" , Invk_html_fmtr_viewed_dflt_ = "html_fmtr_viewed_dflt_"
|
||||
, Invk_html_fmtr_wiki_dflt = "html_fmtr_wiki_dflt" , Invk_html_fmtr_wiki_dflt_ = "html_fmtr_wiki_dflt_"
|
||||
, Invk_html_fmtr_next_sect_dflt = "html_fmtr_next_sect_dflt" , Invk_html_fmtr_next_sect_dflt_ = "html_fmtr_next_sect_dflt_"
|
||||
, Invk_win_show_delay = "win_show_delay", Invk_win_show_delay_ = "win_show_delay_"
|
||||
, Invk_win_hide_delay = "win_hide_delay", Invk_win_hide_delay_ = "win_hide_delay_"
|
||||
, Invk_win_bind_focus_blur = "win_bind_focus_blur", Invk_win_bind_focus_blur_ = "win_bind_focus_blur_"
|
||||
, Invk_win_max_w = "win_max_w", Invk_win_max_w_ = "win_max_w_"
|
||||
, Invk_win_max_h = "win_max_h", Invk_win_max_h_ = "win_max_h_"
|
||||
, Invk_win_show_all_max_w = "win_show_all_max_w", Invk_win_show_all_max_w_ = "win_show_all_max_w_"
|
||||
, Invk_read_til_stop_fwd = "read_til_stop_fwd", Invk_read_til_stop_fwd_ = "read_til_stop_fwd_"
|
||||
, Invk_read_til_stop_bwd = "read_til_stop_bwd", Invk_read_til_stop_bwd_ = "read_til_stop_bwd_"
|
||||
, Invk_stop_if_hdr_after = "stop_if_hdr_after", Invk_stop_if_hdr_after_ = "stop_if_hdr_after_"
|
||||
, Invk_ns_allowed = "ns_allowed", Invk_ns_allowed_ = "ns_allowed_"
|
||||
, Invk_tmpl_tkn_max = "tmpl_tkn_max", Invk_tmpl_tkn_max_ = "tmpl_tkn_max_"
|
||||
, Invk_tmpl_keeplist = "tmpl_keeplist", Invk_tmpl_keeplist_ = "tmpl_keeplist_"
|
||||
;
|
||||
public static final String
|
||||
Evt_show_init_word_count_changed = "show_init_word_count_changed"
|
||||
, Evt_show_more_word_count_changed = "show_more_word_count_changed"
|
||||
, Evt_show_all_if_less_than_changed = "show_all_if_less_than_changed"
|
||||
, Evt_win_show_delay_changed = "win_show_delay_changed"
|
||||
, Evt_win_hide_delay_changed = "win_hide_delay_changed"
|
||||
, Evt_win_max_w_changed = "win_max_w_changed"
|
||||
, Evt_win_max_h_changed = "win_max_h_changed"
|
||||
, Evt_xnde_ignore_ids_changed = "xnde_ignore_ids_changed"
|
||||
, Evt_scan_len_changed = "scan_len_changed"
|
||||
, Evt_scan_max_changed = "scan_max_changed"
|
||||
, Evt_read_til_stop_fwd_changed = "read_til_stop_fwd_changed"
|
||||
, Evt_read_til_stop_bwd_changed = "read_til_stop_bwd_changed"
|
||||
, Evt_stop_if_hdr_after_changed = "stop_if_hdr_after_changed"
|
||||
, Evt_ns_allowed_changed = "ns_allowed_changed"
|
||||
, Evt_tmpl_tkn_max_changed = "tmpl_tkn_max_changed"
|
||||
, Evt_tmpl_keeplist_changed = "tmpl_keeplist"
|
||||
, Evt_html_fmtr_popup_changed = "html_fmtr_popup_changed"
|
||||
, Evt_html_fmtr_viewed_changed = "html_fmtr_viewed_changed"
|
||||
, Evt_html_fmtr_wiki_changed = "html_fmtr_wiki_changed"
|
||||
, Evt_html_fmtr_next_sect_changed = "html_fmtr_next_sect_changed"
|
||||
;
|
||||
public static final byte[]
|
||||
Dflt_xnde_ignore_ids = Bry_.new_a7("coordinates")
|
||||
, Dflt_tmpl_keeplist = Bry_.new_a7("en.wikipedia.org|formatnum;age;age_in_days;age_in_years_and_days*;nts;number_table_sorting*;as_of;oldstyledatedy;gregorian_serial_date;currentminute;currentsecond;dmca;spaced_ndash;trim;month*;convert*;worldpop*;ipa*;lang*;nowrap*;h:*;mvar;math;vgy;audio;iso_639_name;transl;translate;linktext;zh;nihongo*;japanese_name;ko-hhrm;mp|\n")
|
||||
, Dflt_html_fmtr_popup = Bry_.new_a7(String_.Concat_lines_nl_skip_last
|
||||
( "<div dir=~{page_lang_ltr}>"
|
||||
, " <div>~{content}"
|
||||
, " </div>"
|
||||
, " <hr/>"
|
||||
, " <div>"
|
||||
, " <span class='data_val'><b>~{page_title}</b></span>~{wiki_item}"
|
||||
, " <span class='data_key'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.size-name');<>}</span><span class='data_val'>~{page_size}</span>"
|
||||
, " <span class='data_key'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.edited-name');<>}</span><span class='data_val'>~{edit_time}</span>~{view_time_item}"
|
||||
, " </div>"
|
||||
, " <hr/>"
|
||||
, " <div style='float:bottom;'>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.nav.goto(\"~{page_url}\");' title='~{<>msgs.get('api-xowa.gui.browser.url.exec-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/page/open.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.gui.browser.tabs.new_link__at_dflt__focus_y(\"~{page_url}\");' title='~{<>msgs.get('api-xowa.gui.browser.tabs.new_link__at_dflt__focus_y-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/tabs/new.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.gui.browser.tabs.new_link__at_dflt__focus_n(\"~{page_url}\");' title='~{<>msgs.get('api-xowa.gui.browser.tabs.new_link__at_dflt__focus_n-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/tabs/new_background.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.usr.bookmarks.add(\"~{page_url}\");' title='~{<>msgs.get('api-xowa.usr.bookmarks.add-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/bookmarks/add.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.html.modules.popups.show_more(\"~{popup_id}\");' title='~{<>msgs.get('api-xowa.html.modules.popups.show_more-tip');<>}'><img src='~{xowa_root_dir}bin/any/xowa/html/res/src/xowa/popups/imgs/show_more.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.html.modules.popups.show_all (\"~{popup_id}\");' title='~{<>msgs.get('api-xowa.html.modules.popups.show_all-tip');<>}'> <img src='~{xowa_root_dir}bin/any/xowa/html/res/src/xowa/popups/imgs/show_all.png' ></a></span>"
|
||||
, " <span><a href='/wiki/Special:XowaPopupHistory' title='~{<>msgs.get('api-xowa.html.modules.popups.history-tip');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/history/show.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.gui.browser.tabs.new_link__at_dflt__focus_y(\"home/wiki/Options/Popups\");' title='~{<>msgs.get('api-xowa.nav.cfg.main-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/tools/options.png'></a></span>" // HOME
|
||||
, " </div>"
|
||||
, "</div>"
|
||||
))
|
||||
, Dflt_html_fmtr_viewed = Bry_.new_a7("\n <span class='data_key'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.view_time-name');<>}</span><span class='data_val'>~{viewed_val}</span>")
|
||||
, Dflt_html_fmtr_wiki = Bry_.new_a7("\n <span class='data_key'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.wiki-name');<>}</span><span class='data_val'>~{wiki_val}</span>")
|
||||
, Dflt_html_fmtr_next_sect = Bry_.new_a7("\n\n<span class='next_sect'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.next_sect-name');<>}~{next_sect_val}</span>")
|
||||
;
|
||||
public static final String[]
|
||||
Dflt_html_fmtr_popup_keys = String_.Ary("content", "page_lang_ltr", "page_url", "page_title", "popup_id", "wiki_item", "page_size", "edit_time", "view_time_item", "xowa_root_dir")
|
||||
, Dflt_html_fmtr_viewed_keys = String_.Ary("viewed_val")
|
||||
, Dflt_html_fmtr_wiki_keys = String_.Ary("wiki_val")
|
||||
, Dflt_html_fmtr_next_sect_keys = String_.Ary("next_sect_val")
|
||||
;
|
||||
public static final byte[]
|
||||
Dflt_ns_allowed = Bry_.Empty
|
||||
;
|
||||
public static final int
|
||||
Dflt_show_init_word_count = 128
|
||||
, Dflt_show_more_word_count = 192
|
||||
, Dflt_show_all_if_less_than = -1
|
||||
, Dflt_show_all_win_max_w = -1
|
||||
, Dflt_win_show_delay = 600, Dflt_win_hide_delay = 400
|
||||
, Dflt_win_max_w = -1, Dflt_win_max_h = -1
|
||||
, Dflt_win_show_all_max_w = 800
|
||||
, Dflt_scan_len = 1 * Io_mgr.Len_kb
|
||||
, Dflt_scan_max = 32 * Io_mgr.Len_kb
|
||||
, Dflt_read_til_stop_fwd = 32
|
||||
, Dflt_read_til_stop_bwd = 16
|
||||
, Dflt_stop_if_hdr_after = 96
|
||||
, Dflt_tmpl_tkn_max = 8 * Io_mgr.Len_kb
|
||||
;
|
||||
public static final boolean
|
||||
Dflt_win_bind_focus_blur = false
|
||||
Invk_show_more = "show_more", Invk_show_all = "show_all"
|
||||
;
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ public class Xog_tab_itm implements Gfo_invk {
|
||||
if (url.Vnt_bry() != null) Cur_vnt_(wiki, url.Vnt_bry());
|
||||
Tab_name_(new_tab_name);
|
||||
usr_dlg.Prog_one("", "", "loading: ~{0}", String_.new_u8(ttl.Raw()));
|
||||
if (app.Api_root().Html().Modules().Popups().Enabled())
|
||||
if (wiki.Html_mgr().Head_mgr().Popup_mgr().Enabled())
|
||||
this.Html_box().Html_js_eval_script("if (window.xowa_popups_hide_all != null) window.xowa_popups_hide_all();"); // should be more configurable; DATE:2014-07-09
|
||||
app.Thread_mgr_old().Page_load_mgr().Add_at_end(new Load_page_wkr(this, wiki, url, ttl)).Run();
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*;
|
||||
import gplx.xowa.guis.*;
|
||||
import gplx.xowa.apps.apis.xowa.html.modules.*;
|
||||
import gplx.xowa.htmls.modules.popups.*; import gplx.xowa.addons.apps.cfgs.*;
|
||||
public class Xoh_head_itm__popups extends Xoh_head_itm__base {
|
||||
@Override public byte[] Key() {return Xoh_head_itm_.Key__popups;}
|
||||
@Override public int Flags() {return Flag__css_include | Flag__js_head_global | Flag__js_tail_script;}
|
||||
@ -28,21 +29,21 @@ public class Xoh_head_itm__popups extends Xoh_head_itm__base {
|
||||
wtr.Write_css_include(Css_url);
|
||||
}
|
||||
@Override public void Write_js_head_global(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) {
|
||||
Xoapi_popups api_popups = app.Api_root().Html().Modules().Popups();
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_show_delay , api_popups.Win_show_delay());
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_hide_delay , api_popups.Win_hide_delay());
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_max_w , api_popups.Win_max_w());
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_max_h , api_popups.Win_max_h());
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_show_all_max_w , api_popups.Win_show_all_max_w());
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_bind_focus_blur , api_popups.Win_bind_focus_blur());
|
||||
Xocfg_mgr cfg_mgr = app.Cfg();
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_show_delay , cfg_mgr.Get_int_by_wiki_or(wiki, Xow_popup_mgr.Cfg__win_show_delay, 0));
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_hide_delay , cfg_mgr.Get_int_by_wiki_or(wiki, Xow_popup_mgr.Cfg__win_hide_delay, 0));
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_max_w , cfg_mgr.Get_int_by_wiki_or(wiki, Xow_popup_mgr.Cfg__win_max_w, 0));
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_max_h , cfg_mgr.Get_int_by_wiki_or(wiki, Xow_popup_mgr.Cfg__win_max_h, 0));
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_show_all_max_w , cfg_mgr.Get_int_by_wiki_or(wiki, Xow_popup_mgr.Cfg__win_show_all_max_w, 0));
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_bind_focus_blur , cfg_mgr.Get_bool_by_wiki_or(wiki, Xow_popup_mgr.Cfg__win_bind_focus_blur, false));
|
||||
wtr.Write_js_global_ini_atr_val(Key_win_bind_hover_area , bind_hover_area);
|
||||
}
|
||||
@Override public void Write_js_tail_script(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) {
|
||||
wtr.Write_js_line(Jquery_init); // NOTE: must assert that jquery is init'd, else popup.js will not compile after going back / forward; DATE:2014-09-10
|
||||
wtr.Write_js_tail_load_lib(app.Fsys_mgr().Bin_any_dir().GenSubFil_nest("xowa", "html", "res", "src", "xowa", "popups", "popups.js"));
|
||||
} public static final byte[] Jquery_init = Bry_.new_a7("xowa.js.jquery.init();"), Mw_init = Bry_.new_a7("xowa.js.mediaWiki.init();");
|
||||
} public static final byte[] Jquery_init = Bry_.new_a7("xowa.js.jquery.init();"), Mw_init = Bry_.new_a7("xowa.js.mediaWiki.init();");
|
||||
private static byte[] Css_url;
|
||||
private static final byte[]
|
||||
private static final byte[]
|
||||
Key_win_show_delay = Bry_.new_a7("popups-win-show_delay")
|
||||
, Key_win_hide_delay = Bry_.new_a7("popups-win-hide_delay")
|
||||
, Key_win_max_w = Bry_.new_a7("popups-win-max_w")
|
||||
|
@ -70,7 +70,7 @@ public class Xoh_head_mgr implements gplx.core.brys.Bfr_arg {
|
||||
itm__navframe.Enabled_y_();
|
||||
boolean popups_enabled
|
||||
= !app.Mode().Tid_is_http() // do not enable if http_server, else js errors when calling xowa_exec; DATE:2016-06-22
|
||||
&& app.Api_root().Html().Modules().Popups().Enabled(); // check user_cfg
|
||||
&& wiki.Html_mgr().Head_mgr().Popup_mgr().Enabled(); // check user_cfg
|
||||
itm__popups.Enabled_(popups_enabled);
|
||||
return this;
|
||||
}
|
||||
|
@ -18,16 +18,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*;
|
||||
import gplx.xowa.apps.apis.xowa.html.modules.*;
|
||||
public class Xow_popup_cfg {
|
||||
public int Show_all_if_less_than() {return show_all_if_less_than;} public void Show_all_if_less_than_(int v) {show_all_if_less_than = v;} private int show_all_if_less_than = Xoapi_popups.Dflt_show_all_if_less_than;
|
||||
public int Tmpl_read_max() {return tmpl_read_max;} public void Tmpl_read_max_(int v) {tmpl_read_max = v;} private int tmpl_read_max = Xoapi_popups.Dflt_scan_max;
|
||||
public int Tmpl_read_len() {return tmpl_read_len;} public void Tmpl_read_len_(int v) {tmpl_read_len = v;} private int tmpl_read_len = Xoapi_popups.Dflt_scan_len;
|
||||
public int Read_til_stop_fwd() {return read_til_stop_fwd;} public void Read_til_stop_fwd_(int v) {read_til_stop_fwd = v;} private int read_til_stop_fwd = Xoapi_popups.Dflt_read_til_stop_fwd;
|
||||
public int Read_til_stop_bwd() {return read_til_stop_bwd;} public void Read_til_stop_bwd_(int v) {read_til_stop_bwd = v;} private int read_til_stop_bwd = Xoapi_popups.Dflt_read_til_stop_bwd;
|
||||
public int Stop_if_hdr_after() {return stop_if_hdr_after;} public void Stop_if_hdr_after_(int v) {stop_if_hdr_after = v;} private int stop_if_hdr_after = Xoapi_popups.Dflt_stop_if_hdr_after;
|
||||
public int Show_all_if_less_than() {return show_all_if_less_than;} public void Show_all_if_less_than_(int v) {show_all_if_less_than = v;} private int show_all_if_less_than;
|
||||
public int Tmpl_read_max() {return tmpl_read_max;} public void Tmpl_read_max_(int v) {tmpl_read_max = v;} private int tmpl_read_max;
|
||||
public int Tmpl_read_len() {return tmpl_read_len;} public void Tmpl_read_len_(int v) {tmpl_read_len = v;} private int tmpl_read_len;
|
||||
public int Read_til_stop_fwd() {return read_til_stop_fwd;} public void Read_til_stop_fwd_(int v) {read_til_stop_fwd = v;} private int read_til_stop_fwd;
|
||||
public int Read_til_stop_bwd() {return read_til_stop_bwd;} public void Read_til_stop_bwd_(int v) {read_til_stop_bwd = v;} private int read_til_stop_bwd;
|
||||
public int Stop_if_hdr_after() {return stop_if_hdr_after;} public void Stop_if_hdr_after_(int v) {stop_if_hdr_after = v;} private int stop_if_hdr_after;
|
||||
public boolean Stop_if_hdr_after_enabled() {return stop_if_hdr_after > 0;}
|
||||
public byte[] Ellipsis() {return ellipsis;} public void Ellipsis_(byte[] v) {ellipsis = v;} private byte[] ellipsis = Bry_.Empty;
|
||||
public byte[] Notoc() {return notoc;} public void Notoc_(byte[] v) {notoc = v;} private byte[] notoc = Notoc_const;
|
||||
public static final byte[]
|
||||
public static final byte[]
|
||||
Notoc_const = Bry_.new_a7("\n__NOTOC__") // NOTE: always add a whitespace tkn else __NOTOC__ will be deactivated if last tkn is lnke; DATE:2014-06-22
|
||||
, Msg_key_ellipsis = Bry_.new_a7("ellipsis")
|
||||
;
|
||||
|
@ -20,10 +20,10 @@ import gplx.core.brys.fmtrs.*;
|
||||
import gplx.xowa.apps.apis.xowa.html.modules.*;
|
||||
public class Xow_popup_html_mkr {
|
||||
private Xoae_app app; private Xowe_wiki wiki;
|
||||
public Bry_fmtr Fmtr_popup() {return fmtr_popup;} private Bry_fmtr fmtr_popup = Bry_fmtr.keys_(Xoapi_popups.Dflt_html_fmtr_popup_keys);
|
||||
public Bry_fmtr Fmtr_viewed() {return fmtr_viewed;} private Bry_fmtr fmtr_viewed = Bry_fmtr.keys_(Xoapi_popups.Dflt_html_fmtr_viewed_keys);
|
||||
public Bry_fmtr Fmtr_wiki() {return fmtr_wiki;} private Bry_fmtr fmtr_wiki = Bry_fmtr.keys_(Xoapi_popups.Dflt_html_fmtr_wiki_keys);
|
||||
public Bry_fmtr Fmtr_next_sect() {return fmtr_next_sect;} private Bry_fmtr fmtr_next_sect = Bry_fmtr.keys_(Xoapi_popups.Dflt_html_fmtr_next_sect_keys);
|
||||
public Bry_fmtr Fmtr_popup() {return fmtr_popup;} private Bry_fmtr fmtr_popup = Bry_fmtr.new_(Dflt_html_fmtr_popup, Dflt_html_fmtr_popup_keys);
|
||||
public Bry_fmtr Fmtr_viewed() {return fmtr_viewed;} private Bry_fmtr fmtr_viewed = Bry_fmtr.new_(Dflt_html_fmtr_viewed, Dflt_html_fmtr_viewed_keys);
|
||||
public Bry_fmtr Fmtr_wiki() {return fmtr_wiki;} private Bry_fmtr fmtr_wiki = Bry_fmtr.new_(Dflt_html_fmtr_wiki, Dflt_html_fmtr_wiki_keys);
|
||||
public Bry_fmtr Fmtr_next_sect() {return fmtr_next_sect;} private Bry_fmtr fmtr_next_sect = Bry_fmtr.new_(Dflt_html_fmtr_next_sect, Dflt_html_fmtr_next_sect_keys);
|
||||
public void Output_js_clean_(boolean v) {output_js_clean = v;} private boolean output_js_clean = true;
|
||||
public void Output_tidy_(boolean v) {output_tidy = v;} private boolean output_tidy = true;
|
||||
public void Ctor(Xoae_app app, Xowe_wiki wiki) {
|
||||
@ -53,6 +53,41 @@ public class Xow_popup_html_mkr {
|
||||
);
|
||||
return wrdx_bfr.To_bry_and_clear();
|
||||
}
|
||||
|
||||
private static final byte[]
|
||||
Dflt_html_fmtr_popup = Bry_.new_a7(String_.Concat_lines_nl_skip_last
|
||||
( "<div dir=~{page_lang_ltr}>"
|
||||
, " <div>~{content}"
|
||||
, " </div>"
|
||||
, " <hr/>"
|
||||
, " <div>"
|
||||
, " <span class='data_val'><b>~{page_title}</b></span>~{wiki_item}"
|
||||
, " <span class='data_key'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.size-name');<>}</span><span class='data_val'>~{page_size}</span>"
|
||||
, " <span class='data_key'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.edited-name');<>}</span><span class='data_val'>~{edit_time}</span>~{view_time_item}"
|
||||
, " </div>"
|
||||
, " <hr/>"
|
||||
, " <div style='float:bottom;'>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.nav.goto(\"~{page_url}\");' title='~{<>msgs.get('api-xowa.gui.browser.url.exec-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/page/open.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.gui.browser.tabs.new_link__at_dflt__focus_y(\"~{page_url}\");' title='~{<>msgs.get('api-xowa.gui.browser.tabs.new_link__at_dflt__focus_y-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/tabs/new.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.gui.browser.tabs.new_link__at_dflt__focus_n(\"~{page_url}\");' title='~{<>msgs.get('api-xowa.gui.browser.tabs.new_link__at_dflt__focus_n-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/tabs/new_background.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.usr.bookmarks.add(\"~{page_url}\");' title='~{<>msgs.get('api-xowa.usr.bookmarks.add-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/bookmarks/add.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.html.modules.popups.show_more(\"~{popup_id}\");' title='~{<>msgs.get('api-xowa.html.modules.popups.show_more-tip');<>}'><img src='~{xowa_root_dir}bin/any/xowa/html/res/src/xowa/popups/imgs/show_more.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.html.modules.popups.show_all (\"~{popup_id}\");' title='~{<>msgs.get('api-xowa.html.modules.popups.show_all-tip');<>}'> <img src='~{xowa_root_dir}bin/any/xowa/html/res/src/xowa/popups/imgs/show_all.png' ></a></span>"
|
||||
, " <span><a href='/wiki/Special:XowaPopupHistory' title='~{<>msgs.get('api-xowa.html.modules.popups.history-tip');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/history/show.png'></a></span>"
|
||||
, " <span><a href='xowa-cmd:xowa.api.gui.browser.tabs.new_link__at_dflt__focus_y(\"home/wiki/Options/Popups\");' title='~{<>msgs.get('api-xowa.nav.cfg.main-name');<>}'><img src='~{xowa_root_dir}bin/any/xowa/file/app.menu/tools/options.png'></a></span>" // HOME
|
||||
, " </div>"
|
||||
, "</div>"
|
||||
))
|
||||
, Dflt_html_fmtr_viewed = Bry_.new_a7("\n <span class='data_key'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.view_time-name');<>}</span><span class='data_val'>~{viewed_val}</span>")
|
||||
, Dflt_html_fmtr_wiki = Bry_.new_a7("\n <span class='data_key'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.wiki-name');<>}</span><span class='data_val'>~{wiki_val}</span>")
|
||||
, Dflt_html_fmtr_next_sect = Bry_.new_a7("\n\n<span class='next_sect'>~{<>msgs.get('api-xowa.html.modules.popups.msgs.next_sect-name');<>}~{next_sect_val}</span>")
|
||||
;
|
||||
private static final String[]
|
||||
Dflt_html_fmtr_popup_keys = String_.Ary("content", "page_lang_ltr", "page_url", "page_title", "popup_id", "wiki_item", "page_size", "edit_time", "view_time_item", "xowa_root_dir")
|
||||
, Dflt_html_fmtr_viewed_keys = String_.Ary("viewed_val")
|
||||
, Dflt_html_fmtr_wiki_keys = String_.Ary("wiki_val")
|
||||
, Dflt_html_fmtr_next_sect_keys = String_.Ary("next_sect_val")
|
||||
;
|
||||
}
|
||||
class Xow_popup_html_bldr_ {
|
||||
public static byte[] Bld_fmtr_wiki(Bry_fmtr fmtr, Bry_bfr wrdx_bfr, byte[] wiki_domain, byte[] page_domain) {
|
||||
|
@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*;
|
||||
import gplx.core.primitives.*; import gplx.core.threads.*; import gplx.core.envs.*;
|
||||
import gplx.core.js.*;
|
||||
import gplx.xowa.addons.apps.cfgs.*;
|
||||
import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.guis.views.*;
|
||||
import gplx.xowa.htmls.hrefs.*;
|
||||
@ -25,7 +26,7 @@ import gplx.xowa.specials.*;
|
||||
import gplx.xowa.apps.apis.xowa.html.modules.*;
|
||||
public class Xow_popup_mgr implements Gfo_invk, Gfo_evt_itm {
|
||||
private Xoae_app app; private Xowe_wiki wiki; private Js_wtr js_wtr = new Js_wtr();
|
||||
private int show_init_word_count = Xoapi_popups.Dflt_show_init_word_count, show_more_word_count = Xoapi_popups.Dflt_show_more_word_count;
|
||||
private int show_init_word_count, show_more_word_count;
|
||||
private Xoa_url tmp_url = Xoa_url.blank();
|
||||
private static final Object thread_lock = new Object(); private Xow_popup_itm async_itm; private Gfo_invk async_cmd_show; private int async_id_next = 1;
|
||||
public Xow_popup_mgr(Xowe_wiki wiki) {
|
||||
@ -34,33 +35,15 @@ public class Xow_popup_mgr implements Gfo_invk, Gfo_evt_itm {
|
||||
}
|
||||
public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private Gfo_evt_mgr ev_mgr;
|
||||
public Xow_popup_parser Parser() {return parser;} private Xow_popup_parser parser = new Xow_popup_parser();
|
||||
public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {this.enabled = v;} private boolean enabled = true; // TEST: false will fail Xob_init_base_tst; DATE:2016-12-13
|
||||
public void Init_by_wiki(Xowe_wiki wiki) {
|
||||
parser.Init_by_wiki(wiki);
|
||||
Xoapi_popups api_popups = app.Api_root().Html().Modules().Popups();
|
||||
show_init_word_count = api_popups.Show_init_word_count();
|
||||
show_more_word_count = api_popups.Show_more_word_count();
|
||||
Ns_allowed_(api_popups.Ns_allowed());
|
||||
parser.Cfg().Show_all_if_less_than_(api_popups.Show_all_if_less_than());
|
||||
parser.Cfg().Tmpl_read_len_(api_popups.Scan_len());
|
||||
parser.Cfg().Tmpl_read_max_(api_popups.Scan_max());
|
||||
parser.Cfg().Read_til_stop_fwd_(api_popups.Read_til_stop_fwd());
|
||||
parser.Cfg().Read_til_stop_bwd_(api_popups.Read_til_stop_bwd());
|
||||
parser.Cfg().Stop_if_hdr_after_(api_popups.Stop_if_hdr_after());
|
||||
parser.Tmpl_tkn_max_(api_popups.Tmpl_tkn_max());
|
||||
if (!Env_.Mode_testing())
|
||||
parser.Tmpl_keeplist_init_(api_popups.Tmpl_keeplist());
|
||||
parser.Wrdx_mkr().Xnde_ignore_ids_(api_popups.Xnde_ignore_ids());
|
||||
parser.Html_mkr().Fmtr_popup().Fmt_(api_popups.Html_fmtr_popup());
|
||||
parser.Html_mkr().Fmtr_viewed().Fmt_(api_popups.Html_fmtr_viewed());
|
||||
parser.Html_mkr().Fmtr_wiki().Fmt_(api_popups.Html_fmtr_wiki());
|
||||
parser.Html_mkr().Fmtr_next_sect().Fmt_(api_popups.Html_fmtr_next_sect_fmt());
|
||||
Gfo_evt_mgr_.Sub_same_many(api_popups, this
|
||||
, Xoapi_popups.Evt_show_init_word_count_changed, Xoapi_popups.Evt_show_more_word_count_changed , Xoapi_popups.Evt_show_all_if_less_than_changed
|
||||
, Xoapi_popups.Evt_scan_len_changed, Xoapi_popups.Evt_scan_max_changed
|
||||
, Xoapi_popups.Evt_read_til_stop_fwd_changed, Xoapi_popups.Evt_read_til_stop_bwd_changed, Xoapi_popups.Evt_stop_if_hdr_after_changed
|
||||
, Xoapi_popups.Evt_ns_allowed_changed
|
||||
, Xoapi_popups.Evt_xnde_ignore_ids_changed, Xoapi_popups.Evt_tmpl_tkn_max_changed, Xoapi_popups.Evt_tmpl_keeplist_changed
|
||||
, Xoapi_popups.Evt_html_fmtr_popup_changed, Xoapi_popups.Evt_html_fmtr_viewed_changed, Xoapi_popups.Evt_html_fmtr_wiki_changed, Xoapi_popups.Evt_html_fmtr_next_sect_changed
|
||||
wiki.App().Cfg().Bind_many_wiki(this, wiki
|
||||
, Cfg__enabled
|
||||
, Cfg__show_init_word_count, Cfg__show_more_word_count
|
||||
, Cfg__show_all_if_less_than, Cfg__read_til_stop_fwd, Cfg__read_til_stop_bwd, Cfg__stop_if_hdr_after
|
||||
, Cfg__tmpl_tkn_max, Cfg__tmpl_keeplist
|
||||
, Cfg__ns_allowed, Cfg__xnde_ignore_ids, Cfg__scan_len, Cfg__scan_max
|
||||
);
|
||||
}
|
||||
public String Show_init(int id, byte[] href, byte[] tooltip) {
|
||||
@ -216,22 +199,26 @@ public class Xow_popup_mgr implements Gfo_invk, Gfo_evt_itm {
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_show_popup_async)) Show_popup_async();
|
||||
else if (ctx.Match(k, Invk_show_popup)) Show_popup();
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_show_init_word_count_changed)) show_init_word_count = m.ReadInt("v");
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_show_more_word_count_changed)) show_more_word_count = m.ReadInt("v");
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_show_all_if_less_than_changed)) parser.Cfg().Show_all_if_less_than_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_xnde_ignore_ids_changed)) parser.Wrdx_mkr().Xnde_ignore_ids_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_scan_len_changed)) parser.Cfg().Tmpl_read_len_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_scan_max_changed)) parser.Cfg().Tmpl_read_max_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_read_til_stop_bwd_changed)) parser.Cfg().Read_til_stop_bwd_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_read_til_stop_fwd_changed)) parser.Cfg().Read_til_stop_fwd_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_stop_if_hdr_after_changed)) parser.Cfg().Stop_if_hdr_after_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_ns_allowed_changed)) Ns_allowed_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_tmpl_tkn_max_changed)) parser.Tmpl_tkn_max_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_tmpl_keeplist_changed)) parser.Tmpl_keeplist_init_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_html_fmtr_popup_changed)) parser.Html_mkr().Fmtr_popup().Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_html_fmtr_viewed_changed)) parser.Html_mkr().Fmtr_viewed().Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_html_fmtr_wiki_changed)) parser.Html_mkr().Fmtr_wiki().Fmt_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Xoapi_popups.Evt_html_fmtr_next_sect_changed)) parser.Html_mkr().Fmtr_next_sect().Fmt_(m.ReadBry("v"));
|
||||
|
||||
else if (ctx.Match(k, Cfg__enabled)) enabled = m.ReadYn("v");
|
||||
else if (ctx.Match(k, Cfg__show_init_word_count)) show_init_word_count = m.ReadInt("v");
|
||||
else if (ctx.Match(k, Cfg__show_more_word_count)) show_more_word_count = m.ReadInt("v");
|
||||
else if (ctx.Match(k, Cfg__show_all_if_less_than)) parser.Cfg().Show_all_if_less_than_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Cfg__read_til_stop_fwd)) parser.Cfg().Read_til_stop_fwd_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Cfg__read_til_stop_bwd)) parser.Cfg().Read_til_stop_bwd_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Cfg__stop_if_hdr_after)) parser.Cfg().Stop_if_hdr_after_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Cfg__tmpl_tkn_max))
|
||||
parser.Tmpl_tkn_max_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Cfg__tmpl_keeplist))
|
||||
parser.Tmpl_keeplist_init_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Cfg__ns_allowed))
|
||||
Ns_allowed_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Cfg__xnde_ignore_ids))
|
||||
parser.Wrdx_mkr().Xnde_ignore_ids_(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Cfg__scan_len))
|
||||
parser.Cfg().Tmpl_read_len_(m.ReadInt("v"));
|
||||
else if (ctx.Match(k, Cfg__scan_max))
|
||||
parser.Cfg().Tmpl_read_max_(m.ReadInt("v"));
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
@ -244,61 +231,27 @@ public class Xow_popup_mgr implements Gfo_invk, Gfo_evt_itm {
|
||||
Mode_show_more = Bry_.new_a7("more")
|
||||
, Mode_show_all = Bry_.new_a7("all")
|
||||
;
|
||||
}
|
||||
class Xow_popup_mgr_ {
|
||||
public static String Bld_js_cmd(Js_wtr js_wtr, String cbk, byte[] mode, byte[] href, byte[] html) {
|
||||
js_wtr.Func_init(cbk);
|
||||
js_wtr.Prm_bry(mode);
|
||||
js_wtr.Prm_bry(href);
|
||||
js_wtr.Prm_bry(html);
|
||||
js_wtr.Func_term();
|
||||
return js_wtr.To_str_and_clear();
|
||||
}
|
||||
}
|
||||
class Load_popup_wkr implements Gfo_thread_wkr {
|
||||
private Xow_popup_itm itm; private Xoae_page cur_page; private Xoa_url tmp_url;
|
||||
private Hash_adp ns_allowed_regy;
|
||||
private Int_obj_ref ns_allowed_regy_key = Int_obj_ref.New_zero();
|
||||
public Load_popup_wkr(Xowe_wiki wiki, Xoae_page cur_page, Xow_popup_itm itm, Xoa_url tmp_url, Hash_adp ns_allowed_regy, Int_obj_ref ns_allowed_regy_key) {
|
||||
this.wiki = wiki; this.cur_page = cur_page; this.itm = itm; this.tmp_url = tmp_url; this.ns_allowed_regy = ns_allowed_regy; this.ns_allowed_regy_key = ns_allowed_regy_key;
|
||||
}
|
||||
public String Thread__name() {return "xowa.load_popup_wkr";}
|
||||
public boolean Thread__resume() {return false;}
|
||||
public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki;
|
||||
public byte[] Rslt_bry() {return rslt_bry;} private byte[] rslt_bry;
|
||||
public boolean Rslt_done() {return rslt_done;} private boolean rslt_done;
|
||||
public void Rslt_(byte[] bry) {this.rslt_done = true; rslt_bry = bry;}
|
||||
public void Thread__exec() {
|
||||
Xoae_app app = wiki.Appe();
|
||||
try {
|
||||
if (itm.Canceled()) return;
|
||||
cur_page.Popup_mgr().Itms().Add_if_dupe_use_nth(itm.Popup_id(), itm);
|
||||
app.Html__href_parser().Parse_as_url(tmp_url, itm.Page_href(), wiki, cur_page.Ttl().Full_url()); // NOTE: use Full_url, not Page_url, else anchors won't work for non-main ns; PAGE:en.w:Project:Sandbox; DATE:2014-08-07
|
||||
if (!Xoa_url_.Tid_is_pagelike(tmp_url.Tid())) return; // NOTE: do not get popups for "file:///"; DATE:2015-04-05
|
||||
Xowe_wiki popup_wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_or_null(tmp_url.Wiki_bry());
|
||||
popup_wiki.Init_assert();
|
||||
Xoa_ttl popup_ttl = Xoa_ttl.Parse(popup_wiki, tmp_url.To_bry_page_w_anch());
|
||||
switch (popup_ttl.Ns().Id()) {
|
||||
case Xow_ns_.Tid__media:
|
||||
case Xow_ns_.Tid__file:
|
||||
return; // do not popup for media or file
|
||||
case Xow_ns_.Tid__special:
|
||||
if (!Xow_special_meta_.Itm__popup_history.Match_ttl(popup_ttl)) return; // do not popup for special, unless popupHistory; DATE:2015-04-20
|
||||
break;
|
||||
}
|
||||
if (ns_allowed_regy.Count() > 0 && !ns_allowed_regy.Has(ns_allowed_regy_key.Val_(popup_ttl.Ns().Id()))) return;
|
||||
itm.Init(popup_wiki.Domain_bry(), popup_ttl);
|
||||
Xoae_page popup_page = popup_wiki.Data_mgr().Load_page_by_ttl(popup_ttl);
|
||||
byte[] rv = popup_wiki.Html_mgr().Head_mgr().Popup_mgr().Parser().Parse(wiki, popup_page, cur_page.Tab_data().Tab(), itm);
|
||||
Xow_popup_mgr.Update_progress_bar(app, wiki, cur_page, itm);
|
||||
Rslt_(rv);
|
||||
}
|
||||
catch(Exception e) {
|
||||
app.Usr_dlg().Warn_many("", "", "failed to get popup: href=~{0} err=~{1}", itm.Page_href(), Err_.Message_gplx_full(e));
|
||||
Rslt_(null);
|
||||
}
|
||||
finally {
|
||||
app.Thread_mgr_old().Page_load_mgr().Resume();
|
||||
}
|
||||
}
|
||||
private static final String
|
||||
Cfg__enabled = "xowa.addon.popups.enabled"
|
||||
, Cfg__show_init_word_count = "xowa.addon.popups.show_init_word_count"
|
||||
, Cfg__show_more_word_count = "xowa.addon.popups.show_more_word_count"
|
||||
, Cfg__show_all_if_less_than = "xowa.addon.popups.show_all_if_less_than"
|
||||
, Cfg__read_til_stop_fwd = "xowa.addon.popups.read_til_stop_fwd"
|
||||
, Cfg__read_til_stop_bwd = "xowa.addon.popups.read_til_stop_bwd"
|
||||
, Cfg__stop_if_hdr_after = "xowa.addon.popups.stop_if_hdr_after"
|
||||
, Cfg__tmpl_tkn_max = "xowa.addon.popups.tmpl_tkn_max"
|
||||
, Cfg__tmpl_keeplist = "xowa.addon.popups.tmpl_keeplist"
|
||||
, Cfg__ns_allowed = "xowa.addon.popups.ns_allowed"
|
||||
, Cfg__xnde_ignore_ids = "xowa.addon.popups.xnde_ignore_ids"
|
||||
, Cfg__scan_len = "xowa.addon.popups.scan_len"
|
||||
, Cfg__scan_max = "xowa.addon.popups.scan_max"
|
||||
;
|
||||
public static final String
|
||||
Cfg__win_show_delay = "xowa.addon.popups.win_show_delay"
|
||||
, Cfg__win_hide_delay = "xowa.addon.popups.win_hide_delay"
|
||||
, Cfg__win_max_w = "xowa.addon.popups.win_max_w"
|
||||
, Cfg__win_max_h = "xowa.addon.popups.win_max_h"
|
||||
, Cfg__win_show_all_max_w = "xowa.addon.popups.win_show_all_max_w"
|
||||
, Cfg__win_bind_focus_blur = "xowa.addon.popups.win_bind_focus_blur"
|
||||
;
|
||||
}
|
||||
|
@ -0,0 +1,77 @@
|
||||
/*
|
||||
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.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*;
|
||||
import gplx.core.threads.*; import gplx.core.primitives.*; import gplx.core.js.*;
|
||||
import gplx.xowa.wikis.nss.*; import gplx.xowa.specials.*;
|
||||
class Xow_popup_mgr_ {
|
||||
public static String Bld_js_cmd(Js_wtr js_wtr, String cbk, byte[] mode, byte[] href, byte[] html) {
|
||||
js_wtr.Func_init(cbk);
|
||||
js_wtr.Prm_bry(mode);
|
||||
js_wtr.Prm_bry(href);
|
||||
js_wtr.Prm_bry(html);
|
||||
js_wtr.Func_term();
|
||||
return js_wtr.To_str_and_clear();
|
||||
}
|
||||
}
|
||||
class Load_popup_wkr implements Gfo_thread_wkr {
|
||||
private Xow_popup_itm itm; private Xoae_page cur_page; private Xoa_url tmp_url;
|
||||
private Hash_adp ns_allowed_regy;
|
||||
private Int_obj_ref ns_allowed_regy_key = Int_obj_ref.New_zero();
|
||||
public Load_popup_wkr(Xowe_wiki wiki, Xoae_page cur_page, Xow_popup_itm itm, Xoa_url tmp_url, Hash_adp ns_allowed_regy, Int_obj_ref ns_allowed_regy_key) {
|
||||
this.wiki = wiki; this.cur_page = cur_page; this.itm = itm; this.tmp_url = tmp_url; this.ns_allowed_regy = ns_allowed_regy; this.ns_allowed_regy_key = ns_allowed_regy_key;
|
||||
}
|
||||
public String Thread__name() {return "xowa.load_popup_wkr";}
|
||||
public boolean Thread__resume() {return false;}
|
||||
public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki;
|
||||
public byte[] Rslt_bry() {return rslt_bry;} private byte[] rslt_bry;
|
||||
public boolean Rslt_done() {return rslt_done;} private boolean rslt_done;
|
||||
public void Rslt_(byte[] bry) {this.rslt_done = true; rslt_bry = bry;}
|
||||
public void Thread__exec() {
|
||||
Xoae_app app = wiki.Appe();
|
||||
try {
|
||||
if (itm.Canceled()) return;
|
||||
cur_page.Popup_mgr().Itms().Add_if_dupe_use_nth(itm.Popup_id(), itm);
|
||||
app.Html__href_parser().Parse_as_url(tmp_url, itm.Page_href(), wiki, cur_page.Ttl().Full_url()); // NOTE: use Full_url, not Page_url, else anchors won't work for non-main ns; PAGE:en.w:Project:Sandbox; DATE:2014-08-07
|
||||
if (!Xoa_url_.Tid_is_pagelike(tmp_url.Tid())) return; // NOTE: do not get popups for "file:///"; DATE:2015-04-05
|
||||
Xowe_wiki popup_wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_or_null(tmp_url.Wiki_bry());
|
||||
popup_wiki.Init_assert();
|
||||
Xoa_ttl popup_ttl = Xoa_ttl.Parse(popup_wiki, tmp_url.To_bry_page_w_anch());
|
||||
switch (popup_ttl.Ns().Id()) {
|
||||
case Xow_ns_.Tid__media:
|
||||
case Xow_ns_.Tid__file:
|
||||
return; // do not popup for media or file
|
||||
case Xow_ns_.Tid__special:
|
||||
if (!Xow_special_meta_.Itm__popup_history.Match_ttl(popup_ttl)) return; // do not popup for special, unless popupHistory; DATE:2015-04-20
|
||||
break;
|
||||
}
|
||||
if (ns_allowed_regy.Count() > 0 && !ns_allowed_regy.Has(ns_allowed_regy_key.Val_(popup_ttl.Ns().Id()))) return;
|
||||
itm.Init(popup_wiki.Domain_bry(), popup_ttl);
|
||||
Xoae_page popup_page = popup_wiki.Data_mgr().Load_page_by_ttl(popup_ttl);
|
||||
byte[] rv = popup_wiki.Html_mgr().Head_mgr().Popup_mgr().Parser().Parse(wiki, popup_page, cur_page.Tab_data().Tab(), itm);
|
||||
Xow_popup_mgr.Update_progress_bar(app, wiki, cur_page, itm);
|
||||
Rslt_(rv);
|
||||
}
|
||||
catch(Exception e) {
|
||||
app.Usr_dlg().Warn_many("", "", "failed to get popup: href=~{0} err=~{1}", itm.Page_href(), Err_.Message_gplx_full(e));
|
||||
Rslt_(null);
|
||||
}
|
||||
finally {
|
||||
app.Thread_mgr_old().Page_load_mgr().Resume();
|
||||
}
|
||||
}
|
||||
}
|
@ -465,6 +465,7 @@ class Xop_popup_parser_fxt {
|
||||
parser = wiki.Html_mgr().Head_mgr().Popup_mgr().Parser();
|
||||
parser.Init_by_wiki(wiki);
|
||||
parser.Cfg().Tmpl_read_len_(4);
|
||||
parser.Cfg().Tmpl_read_max_(32 * Io_mgr.Len_kb);
|
||||
parser.Cfg().Ellipsis_(Bry_.Empty);
|
||||
parser.Cfg().Notoc_(Bry_.Empty);
|
||||
parser.Cfg().Show_all_if_less_than_(-1);
|
||||
@ -475,7 +476,7 @@ class Xop_popup_parser_fxt {
|
||||
parser.Html_mkr().Output_js_clean_(false);
|
||||
parser.Html_mkr().Output_tidy_(false);
|
||||
parser.Html_mkr().Fmtr_next_sect().Fmt_(" (~{next_sect_val})");
|
||||
parser.Wrdx_mkr().Xnde_ignore_ids_(Xoapi_popups.Dflt_xnde_ignore_ids);
|
||||
parser.Wrdx_mkr().Xnde_ignore_ids_(Bry_.new_a7("coordinates"));
|
||||
word_min = 2;
|
||||
}
|
||||
public Xop_popup_parser_fxt Init_notoc_(String v) {parser.Cfg().Notoc_(Bry_.new_u8(v)); return this;}
|
||||
|
@ -24,8 +24,8 @@ public class Xoa_available_wikis_mgr implements Gfo_invk {
|
||||
public Xoa_available_wikis_mgr(Xoae_app app) {this.app = app;} private Xoae_app app;
|
||||
public String Itms_as_html() {
|
||||
if (itms_as_html == null) {
|
||||
String itm_cls = app.Api_root().Html().Modules().Popups().Enabled() ? " class='xowa-hover-off'" : "";
|
||||
Bry_bfr tmp_bfr = Bry_bfr_.New(); // NOTE: do not use app.Utl__bfr_mkr().Get_k004() as it is being used simultaneously by another caller; TODO_OLD: find call
|
||||
String itm_cls = app.Usere().Wiki().Html_mgr().Head_mgr().Popup_mgr().Enabled() ? " class='xowa-hover-off'" : ""; // always add popup-disabled class in sidebar, even if popups aren't enabled; not worth effort to check cfg for get "current wiki"; DATE:2016-12-13
|
||||
Bry_bfr tmp_bfr = Bry_bfr_.New();
|
||||
Xow_xwiki_mgr xwiki_mgr = app.Usere().Wiki().Xwiki_mgr();
|
||||
xwiki_mgr.Sort_by_key();
|
||||
int len = xwiki_mgr.Len();
|
||||
|
Loading…
Reference in New Issue
Block a user