- ctx.Cur_page().Redlink_lnki_list().Clear();
+ ctx.Page().Redlink_lnki_list().Clear();
html_wtr.Write_all(tmp_bfr, ctx, hctx, src_bry, root);
// Tfds.Dbg(tmp_bfr.To_str());
return tmp_bfr.To_str_and_clear();
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_keys.java b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_keys.java
index 007f86290..1875ffd57 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_keys.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_keys.java
@@ -49,6 +49,7 @@ public class Xob_cmd_keys {
, Key_util_cleanup = "util.cleanup" // "core.cleanup"
, Key_util_download = "util.download" // "file.download"
, Key_util_xml_dump = "util.xml_dump"
+ , Key_util_random = "util.random"
, Key_wbase_json_dump = "wbase.json_dump"
, Key_wbase_qid = "wbase.qid" // "text.wdata.qid"
, Key_wbase_pid = "wbase.pid" // "text.wdata.pid"
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java
index 7df3b6d2b..20248fdbb 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java
@@ -41,8 +41,7 @@ public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_
int ttl_bgn = end, ttl_end = -1;
int pos = end;
while (true) {
- if (pos == src_len) {
- Log(Tid_eos, page, src, bgn);
+ if (pos == src_len) { // fail: EOS
return end;
}
Object o = trie.Match_bgn(src, pos, src_len);
@@ -56,11 +55,9 @@ public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_
if (ttl_end > ttl_bgn) // NOTE: ignore examples like [[Category: ]]
Process_ctg(page, src, src_len, ttl_bgn, ttl_end);
break;
- case Tid_brack_bgn:
- Log(Tid_brack_bgn, page, src, bgn);
+ case Tid_brack_bgn: // fail: [[ is invalid
return pos;
- case Tid_nl:
- Log(Tid_nl, page, src, bgn);
+ case Tid_nl: // fail: \n is invalid
return pos;
}
return pos + bry.length;
@@ -68,19 +65,6 @@ public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_
++pos;
}
}
- @gplx.Virtual public void Log(byte err_tid, Xowd_page_itm page, byte[] src, int ctg_bgn) {
- String title = String_.new_u8(page.Ttl_full_db());
- int ctg_end = ctg_bgn + 40; if (ctg_end > src.length) ctg_end = src.length;
- String ctg_str = String_.Replace(String_.new_u8(src, ctg_bgn, ctg_end), "\n", "");
- String err = "";
- switch (err_tid) {
- case Tid_eos: err = "eos"; break;
- case Tid_nl: err = "bad \\n"; break;
- case Tid_brack_bgn: err = "bad [["; break;
- }
- bldr.Usr_dlg().Log_many(GRP_KEY, "ctg_fail", "~{0}\n>> ~{1}\n~{2}\n~{3}\n\n", LogErr_hdr, err + " " + ctg_str, "http://" + wiki.Domain_str() + "/wiki/" + title, Bry_.MidByLenToStr(src, ctg_bgn, 100));
- log_idx++;
- } int log_idx = 0; final String LogErr_hdr = String_.Repeat("-", 80);
@gplx.Virtual public void Process_ctg(Xowd_page_itm page, byte[] src, int src_len, int bgn, int end) {
Process_ctg_row(fld_wtr, dump_fil_len, dump_url_gen, page.Id(), src, src_len, bgn, end);
}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java
index 81a2122ff..6f612beae 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base_tst.java
@@ -56,6 +56,4 @@ class Xobd_parser_wkr_ctg_tstr extends Xob_ctg_v1_txt { public List_adp Found()
@Override public void Process_ctg(Xowd_page_itm page, byte[] src, int src_len, int bgn, int end) {
found.Add(Bry_.Mid(src, bgn, end));
}
- @Override public void Log(byte err_tid, Xowd_page_itm page, byte[] src, int ctg_bgn) {
- }
}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java
index 09befb9dc..1d0781430 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java
@@ -91,7 +91,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
byte[] ttl_bry = ttl.Page_db();
byte page_tid = Xow_page_tid.Identify(wiki.Domain_tid(), ns.Id(), ttl_bry);
if (page_tid != Xow_page_tid.Tid_wikitext) return; // ignore js, css, lua, json
- Xoae_page page = ctx.Cur_page();
+ Xoae_page page = ctx.Page();
page.Clear_all();
page.Bldr__ns_ord_(ns_ord);
page.Ttl_(ttl).Revision_data().Id_(db_page.Id());
@@ -102,7 +102,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
else {
parser.Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), page_src);
if (gen_html && !page.Redirected())
- wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Cur_page().Root_(root), Xopg_page_.Tid_read);
+ wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Page().Root_(root), Xopg_page_.Tid_read);
if (gen_hdump)
hdump_bldr.Insert(page.Root_(root));
root.Clear();
@@ -134,10 +134,10 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
byte[] ttl_commons = Xto_commons(ns_file_is_case_match_all, commons_wiki, ttl);
if ( Xof_lnki_page.Null_n(lnki_page) // page set
&& Xof_lnki_time.Null_n(lnki_time)) // thumbtime set
- usr_dlg.Warn_many("", "", "page and thumbtime both set; this may be an issue with fsdb: page=~{0} ttl=~{1}", ctx.Cur_page().Ttl().Page_db_as_str(), String_.new_u8(ttl));
+ usr_dlg.Warn_many("", "", "page and thumbtime both set; this may be an issue with fsdb: page=~{0} ttl=~{1}", ctx.Page().Ttl().Page_db_as_str(), String_.new_u8(ttl));
if (lnki.Ns_id() == Xow_ns_.Tid__media)
lnki_src_tid = Xob_lnki_src_tid.Tid_media;
- tbl.Insert_cmd_by_batch(ctx.Cur_page().Bldr__ns_ord(), ctx.Cur_page().Revision_data().Id(), ttl, ttl_commons, Byte_.By_int(ext.Id()), lnki.Lnki_type(), lnki_src_tid, lnki.W(), lnki.H(), lnki.Upright(), lnki_time, lnki_page);
+ tbl.Insert_cmd_by_batch(ctx.Page().Bldr__ns_ord(), ctx.Page().Revision_data().Id(), ttl, ttl_commons, Byte_.By_int(ext.Id()), lnki.Lnki_type(), lnki_src_tid, lnki.W(), lnki.H(), lnki.Upright(), lnki_time, lnki_page);
}
@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_wdata_enabled_)) wdata_enabled = m.ReadYn("v");
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/randoms/Xob_rnd_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/randoms/Xob_rnd_cmd.java
new file mode 100644
index 000000000..dc5349362
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/randoms/Xob_rnd_cmd.java
@@ -0,0 +1,31 @@
+/*
+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 .
+*/
+package gplx.xowa.bldrs.cmds.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
+public class Xob_rnd_cmd implements Xob_cmd {
+ // private final Xob_bldr bldr; private final Xowe_wiki wiki;
+ public Xob_rnd_cmd(Xob_bldr bldr, Xowe_wiki wiki) {}//this.bldr = bldr; this.wiki = wiki;}
+ public String Cmd_key() {return Xob_cmd_keys.Key_util_random;}
+ public void Cmd_run() {
+ }
+ public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return this;}
+
+ public void Cmd_init(Xob_bldr bldr) {}
+ public void Cmd_bgn(Xob_bldr bldr) {}
+ public void Cmd_end() {}
+ public void Cmd_term() {}
+}
diff --git a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java
index 1912d0a01..165d3e15a 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java
@@ -33,8 +33,6 @@ public class Xob_tmp_wtr {
public void Flush(Gfo_usr_dlg usr_dlg) {
if (bfr.Len() == 0) return; // nothing to flush
Io_url url = url_gen.Nxt_url();
- if (bfr.Len() > fil_max) // NOTE: data can exceed proscribed len; EX: wikt:Category for Italian nouns is 1 MB+
- usr_dlg.Log_many("xowa.tmp_wtr", "flush", "--fil exceeds len: ~{0} ~{1} ~{2}", bfr.Len(), fil_max, url.Xto_api());
Io_mgr.Instance.AppendFilBfr(url, bfr);
}
public void Rls() {bfr.Rls();}
diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java
index 5a386b7ce..5b3fe8022 100644
--- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java
+++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java
@@ -32,7 +32,7 @@ public class Xof_xfer_queue_html_fxt extends Xof_xfer_queue_base_fxt {
public Xof_xfer_queue_html_fxt Lnki_(String lnki_ttl, boolean thumb, int lnki_w, int lnki_h, double upright, int seek_time) { // NOTE: only one xfer_itm; supports one Lnki_ per test only
Xowe_wiki wiki = this.En_wiki();
Xop_ctx ctx = wiki.Parser_mgr().Ctx();
- xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(Xof_exec_tid.Tid_wiki_page, ctx, ctx.Cur_page(), queue, Bry_.new_u8(lnki_ttl), thumb ? Xop_lnki_type.Id_thumb : Xop_lnki_type.Id_null, upright, lnki_w, lnki_h, Xof_lnki_time.X_int(seek_time), Xof_lnki_page.Null, false);
+ xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(Xof_exec_tid.Tid_wiki_page, ctx, ctx.Page(), queue, Bry_.new_u8(lnki_ttl), thumb ? Xop_lnki_type.Id_thumb : Xop_lnki_type.Id_null, upright, lnki_w, lnki_h, Xof_lnki_time.X_int(seek_time), Xof_lnki_page.Null, false);
return this;
}
public Xof_file_itm Xfer_itm() {return xfer_itm;} private Xof_file_itm xfer_itm;
diff --git a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java
index 2d2bb99b5..b3dd52ef1 100644
--- a/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java
@@ -138,7 +138,7 @@ public class Xog_tab_itm implements GfoInvkAble {
Xoae_app app = wiki.Appe(); Gfo_usr_dlg usr_dlg = app.Usr_dlg();
try {
if (page.Tab_data().Cancel_show()) return; // Special:Search canceled show; NOTE: must be inside try b/c finally handles thread
- wiki.Parser_mgr().Ctx().Cur_page_(page);
+ wiki.Parser_mgr().Ctx().Page_(page);
if (page.Missing()) {
if (wiki.Db_mgr().Save_mgr().Create_enabled()) {
page = Xoae_page.New_edit(wiki, ttl);
diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java
index 5c4b49a07..3e9b73e55 100644
--- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java
@@ -83,7 +83,7 @@ public class Xoh_page_wtr_mgr implements GfoInvkAble {
{ "app_root_dir", "app_version", "app_build_date", "xowa_mode_is_server"
, "page_id", "page_name", "page_title", "page_modified_on_msg"
, "html_css_common_path", "html_css_wiki_path", "xowa_head"
- , "page_lang_ltr", "page_indicators", "page_content_sub", "page_jumpto", "page_body_cls", "html_content_editable"
+ , "page_lang_ltr", "page_indicators", "page_content_sub", "page_jumpto", "page_pgbnr", "page_body_cls", "html_content_editable"
, "page_data", "page_langs"
, "portal_div_personal", "portal_div_ns", "portal_div_view"
, "portal_div_logo", "portal_div_home", "portal_div_xtn"
diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java
index 5076c6585..f9006d58a 100644
--- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java
@@ -27,7 +27,7 @@ public class Xoh_page_wtr_mgr_tst {
GfoInvkAble_.InvkCmd_val(portal_mgr, Xow_portal_mgr.Invk_div_logo_, Bry_.new_a7("~{portal_nav_main_href}"));
portal_mgr.Init_assert();
Xoh_page_wtr_mgr page_wtr_mgr = new Xoh_page_wtr_mgr(true);
- page_wtr_mgr.Gen(wiki.Parser_mgr().Ctx().Cur_page(), Xopg_page_.Tid_read);
+ page_wtr_mgr.Gen(wiki.Parser_mgr().Ctx().Page(), Xopg_page_.Tid_read);
Tfds.Eq(String_.new_a7(portal_mgr.Div_logo_bry()), "/site/en.wikipedia.org/wiki/");
}
}
diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java
index 4c6f73fbb..4d4598585 100644
--- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java
@@ -31,7 +31,7 @@ public class Xoh_page_wtr_wkr {
public byte[] Write_page(Xoae_page page, Xop_ctx ctx, Bry_bfr bfr) {
synchronized (thread_lock_1) {
this.page = page; this.ctx = ctx; this.wiki = page.Wikie(); this.app = wiki.Appe();
- ctx.Cur_page_(page); // HACK: must update page for toc_mgr; WHEN: Xoae_page rewrite
+ ctx.Page_(page); // HACK: must update page for toc_mgr; WHEN: Xoae_page rewrite
Bry_fmtr fmtr = null;
if (mgr.Html_capable()) {
wdata_lang_wtr.Page_(page);
@@ -40,7 +40,7 @@ public class Xoh_page_wtr_wkr {
case Xopg_page_.Tid_edit: fmtr = mgr.Page_edit_fmtr(); break;
case Xopg_page_.Tid_html: fmtr = mgr.Page_read_fmtr(); view_mode = Xopg_page_.Tid_read; break; // set view_mode to read, so that "read" is highlighted in HTML
case Xopg_page_.Tid_read: fmtr = mgr.Page_read_fmtr();
- ctx.Cur_page().Redlink_lnki_list().Clear(); // not sure if this is the best place to put it, but redlinks (a) must only fire once; (b) must fire before html generation; (c) cannot fire during edit (preview will handle separately)
+ ctx.Page().Redlink_lnki_list().Clear(); // not sure if this is the best place to put it, but redlinks (a) must only fire once; (b) must fire before html generation; (c) cannot fire during edit (preview will handle separately)
break;
}
Bry_bfr page_bfr = Xoa_app_.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page bfr to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do
@@ -94,7 +94,7 @@ public class Xoh_page_wtr_wkr {
, page_name, page_display
, modified_on_msg
, mgr.Css_common_bry(), mgr.Css_wiki_bry(), page.Html_data().Head_mgr().Init(app, wiki, page).Init_dflts()
- , page.Lang().Dir_ltr_bry(), page.Html_data().Indicators(), page_content_sub, wiki.Html_mgr().Portal_mgr().Div_jump_to(), page_body_class, html_content_editable
+ , page.Lang().Dir_ltr_bry(), page.Html_data().Indicators(), page_content_sub, wiki.Html_mgr().Portal_mgr().Div_jump_to(), wiki.Xtn_mgr().Xtn_pgbnr().Write_html(ctx, page), page_body_class, html_content_editable
, page_data, wdata_lang_wtr
, portal_mgr.Div_personal_bry(), portal_mgr.Div_ns_bry(app.Utl__bfr_mkr(), page_ttl, wiki.Ns_mgr()), portal_mgr.Div_view_bry(app.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_wikis_bry(app.Utl__bfr_mkr()), portal_mgr.Sidebar_mgr().Html_bry()
diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java
index 3d1741f29..c6b44c748 100644
--- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java
@@ -56,7 +56,7 @@ class Xoh_page_wtr_fxt {
}
public void Test_edit(String raw, String expd) {
wiki.Html_mgr().Page_wtr_mgr().Html_capable_(true);
- Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page();
+ Xoae_page page = wiki.Parser_mgr().Ctx().Page();
page.Data_raw_(Bry_.new_u8(raw));
Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr();
Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_page_.Tid_edit);
@@ -65,7 +65,7 @@ class Xoh_page_wtr_fxt {
}
public void Test_read(String page_name, String page_text, String expd) {
wiki.Html_mgr().Page_wtr_mgr().Html_capable_(true);
- Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page();
+ Xoae_page page = wiki.Parser_mgr().Ctx().Page();
page.Ttl_(Xoa_ttl.parse(wiki, Bry_.new_a7(page_name)));
page.Data_raw_(Bry_.new_u8(page_text));
Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr();
diff --git a/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java
index 4b0105210..efe2d8440 100644
--- a/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java
@@ -48,7 +48,7 @@ class Xoh_ctg_mgr_fxt {
public Xoh_ctg_mgr_fxt Init_ctgs(String... v) {init_ctgs = v; return this;} private String[] init_ctgs;
public void Test_html(String expd) {
byte[][] ctgs_bry_ary = Bry_.Ary(init_ctgs);
- Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page();
+ Xoae_page page = wiki.Parser_mgr().Ctx().Page();
page.Category_list_(ctgs_bry_ary);
ctg_grp_mgr.Bld(tmp_bfr, page, ctgs_bry_ary.length);
Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear());
diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load_tst.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load_tst.java
index abf4e2ee7..c1dfb7bff 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load_tst.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load_tst.java
@@ -115,7 +115,7 @@ class Xodb_hdump_mgr__base_fxt {
if (fxt == null) {
fxt = new Xop_fxt();
wiki = fxt.Wiki();
- page = wiki.Parser_mgr().Ctx().Cur_page();
+ page = wiki.Parser_mgr().Ctx().Page();
hdump_mgr = wiki.Html__hdump_mgr();
hdump_mgr.Init_by_db(gplx.core.ios.Io_stream_.Tid_raw, false, false);
}
diff --git a/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java
index cb4299f4b..06ce4a1f4 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_html_wtr.java
@@ -45,9 +45,9 @@ public class Xoh_html_wtr {
public void Write_all(Bry_bfr bfr, Xop_ctx ctx, byte[] src, Xop_root_tkn root) {Write_all(bfr, ctx, Xoh_wtr_ctx.Basic, src, root);}
public void Write_all(Bry_bfr bfr, Xop_ctx ctx, Xoh_wtr_ctx hctx, byte[] src, Xop_root_tkn root) {
try {
- indent_level = 0; this.page = ctx.Cur_page();
+ indent_level = 0; this.page = ctx.Page();
page.Slink_list().Clear(); // HACK: always clear langs; necessary for reload
- lnki_wtr.Init_by_page(ctx, hctx, src, ctx.Cur_page());
+ lnki_wtr.Init_by_page(ctx, hctx, src, ctx.Page());
Write_tkn(bfr, ctx, hctx, src, null, -1, root);
}
finally {
diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_html.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_html.java
index 7c2e5cf47..fa4cbabbd 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_html.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/hdrs/Xoh_hdr_html.java
@@ -22,7 +22,7 @@ import gplx.xowa.htmls.core.htmls.*;
public class Xoh_hdr_html {
public void Write_html(Bry_bfr bfr, Xoh_html_wtr wtr, Xowe_wiki wiki, Xoae_page page, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoh_html_wtr_cfg cfg, Xop_tkn_grp grp, int sub_idx, byte[] src, Xop_hdr_tkn hdr) {
if (hdr.Hdr_html_first() && cfg.Toc__show() && !page.Hdr_mgr().Toc_manual()) // __TOC__ not specified; place at top; NOTE: if __TOC__ was specified, then it would be placed wherever __TOC__ appears
- wiki.Html_mgr().Toc_mgr().Html(ctx.Cur_page(), hctx, src, bfr);
+ wiki.Html_mgr().Toc_mgr().Html(ctx.Page(), hctx, src, bfr);
int hdr_len = hdr.Hdr_level();
if (hdr_len > 0) { // NOTE: need to check hdr_len b/c it could be dangling
diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java
index 3ab856043..057c8f61c 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkes/Xoh_lnke_html.java
@@ -71,7 +71,7 @@ public class Xoh_lnke_html {
if (lnke.Lnke_typ() == Xop_lnke_tkn.Lnke_typ_text) // EX: 'http://a.org' -> 'http://a.org'
bfr.Add_mid(src, href_bgn, href_end);
else // EX: '[http://a.org]' -> '[1]'
- bfr.Add_byte(Byte_ascii.Brack_bgn).Add_int_variable(ctx.Cur_page().Html_data().Lnke_autonumber_next()).Add_byte(Byte_ascii.Brack_end);
+ bfr.Add_byte(Byte_ascii.Brack_bgn).Add_int_variable(ctx.Page().Html_data().Lnke_autonumber_next()).Add_byte(Byte_ascii.Brack_end);
}
else { // EX: '[http://a.org a]' -> 'a'
for (int i = 0; i < subs_len; i++)
diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java
index af3eec027..247799ae5 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_mgr.java
@@ -54,7 +54,7 @@ public class Xoh_file_mgr {
)
return false;
if (source_wiki.File_mgr().Version() == Xow_file_mgr.Version_2)
- return ctx.App().User().User_db_mgr().File__xfer_itm_finder().Find(source_wiki, xfer.Lnki_exec_tid(), xfer, ctx.Cur_page().Url_bry_safe());
+ return ctx.App().User().User_db_mgr().File__xfer_itm_finder().Find(source_wiki, xfer.Lnki_exec_tid(), xfer, ctx.Page().Url_bry_safe());
else
return source_wiki.File_mgr().Find_meta(xfer);
}
diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java
index e5717e5a7..91a66b014 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_file_wtr__basic.java
@@ -141,7 +141,7 @@ public class Xoh_file_wtr__basic {
else { // thumb
Arg_itm_tkn link_tkn = lnki_link_tkn.Val_tkn();
byte[] link_arg = Xoa_ttl.Replace_spaces(link_tkn.Dat_to_bry(src)); // replace spaces with unders, else "/wiki/File:A b.ogg" instead of "A_b.ogg"; DATE:2015-11-27
- if (Bry_.Has_at_bgn(link_arg, Xop_tkn_.Anchor_byte)) link_arg = Bry_.Add(ctx.Cur_page().Ttl().Page_db(), link_arg);
+ if (Bry_.Has_at_bgn(link_arg, Xop_tkn_.Anchor_byte)) link_arg = Bry_.Add(ctx.Page().Ttl().Page_db(), link_arg);
byte[] link_arg_html = tmp_link_parser.Parse(tmp_bfr, tmp_url, wiki, link_arg, lnki_href);
byte[] xowa_title_bry = tmp_link_parser.Html_xowa_ttl(); // NOTE: xowa_title_bry will be link arg; [[File:A.png|link=file:///A.ogg]] -> A.ogg x> A.png
boolean a_href_is_file = true;
diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java
index 8a41993bb..cf868f3cb 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java
@@ -46,7 +46,7 @@ public class Xoh_lnki_wtr {
public void Write(Bry_bfr bfr, Xoh_wtr_ctx hctx, byte[] src, Xop_lnki_tkn lnki) {
Xoa_ttl lnki_ttl = lnki.Ttl();
if (lnki_ttl == null) {// NOTE: parser failed to properly invalidate lnki; escape tkn now and warn; DATE:2014-06-06
- app.Usr_dlg().Warn_many("", "", "invalid lnki evaded parser; page=~{0} ex=~{1}", ctx.Cur_page().Url().To_str(), String_.new_u8(src, lnki.Src_bgn(), lnki.Src_end()));
+ app.Usr_dlg().Warn_many("", "", "invalid lnki evaded parser; page=~{0} ex=~{1}", ctx.Page().Url().To_str(), String_.new_u8(src, lnki.Src_bgn(), lnki.Src_end()));
Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), bfr, src, lnki.Src_bgn(), lnki.Src_end(), true, false);
return;
}
diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/tags/Xoh_tag_parser.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/tags/Xoh_tag_parser.java
index db8aa37e8..d4fbff123 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/tags/Xoh_tag_parser.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/tags/Xoh_tag_parser.java
@@ -99,8 +99,8 @@ public class Xoh_tag_parser implements Gfh_doc_wkr {
private int Parse_by_data(Xoh_hdoc_wkr hdoc_wkr, Xoh_hdoc_ctx hctx, Gfh_tag_rdr tag_rdr, byte[] src, Gfh_tag cur, Gfh_tag nxt, int tid) {
Xoh_data_itm data = hctx.Pool_mgr__data().Get_by_tid(tid);
data.Clear();
- if (!data.Init_by_parse(hdoc_wkr, hctx, tag_rdr, src, cur, nxt)) return -1;
- if (!hdoc_wkr.Process_parse(data)) return -1;
+ if (!data.Init_by_parse(hdoc_wkr, hctx, tag_rdr, src, cur, nxt)) {data.Pool__rls(); return -1;}
+ if (!hdoc_wkr.Process_parse(data)) {data.Pool__rls(); return -1;}
int rv = data.Src_end();
data.Pool__rls();
return rv;
diff --git a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java
index 6365438d3..eab68be9c 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/wkrs/thms/Xoh_thm_hzip_tst.java
@@ -302,16 +302,16 @@ public class Xoh_thm_hzip_tst {
, ""
));
}
-// @Test public void Dump() {
-// Xowe_wiki en_d = fxt.Init_wiki_alias("wikt", "en.wiktionary.org");
-// gplx.xowa.wikis.nss.Xow_ns_mgr ns_mgr = en_d.Ns_mgr();
-// ns_mgr.Ns_main().Case_match_(gplx.xowa.wikis.nss.Xow_ns_case_.Tid__all);
-//
-// fxt.Wiki().Ns_mgr().Aliases_add(gplx.xowa.wikis.nss.Xow_ns_.Tid__portal, "WP");
-// fxt.Wiki().Ns_mgr().Init();
-//
-// fxt.Init_mode_is_b256_(Bool_.N);
-// fxt.Exec_write_to_fsys(Io_url_.new_dir_("J:\\xowa\\dev_rls\\html\\"), "debug.html");
-// fxt.Init_mode_is_b256_(Bool_.N);
-// }
+ @Test public void Dump() {
+ Xowe_wiki en_d = fxt.Init_wiki_alias("wikt", "en.wiktionary.org");
+ gplx.xowa.wikis.nss.Xow_ns_mgr ns_mgr = en_d.Ns_mgr();
+ ns_mgr.Ns_main().Case_match_(gplx.xowa.wikis.nss.Xow_ns_case_.Tid__all);
+
+ fxt.Wiki().Ns_mgr().Aliases_add(gplx.xowa.wikis.nss.Xow_ns_.Tid__portal, "WP");
+ fxt.Wiki().Ns_mgr().Init();
+
+ fxt.Init_mode_is_b256_(Bool_.N);
+ fxt.Exec_write_to_fsys(Io_url_.new_dir_("J:\\xowa\\dev_rls\\html\\"), "debug.html");
+ fxt.Init_mode_is_b256_(Bool_.N);
+ }
}
diff --git a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java
index 847539082..3532d9e3b 100644
--- a/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java
+++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java
@@ -63,11 +63,11 @@ public class Xow_popup_parser {
private boolean Canceled(Xow_popup_itm popup_itm, Xog_tab_itm cur_tab) {return popup_itm.Canceled() || cur_tab != null && cur_tab.Tab_is_loading();}
private void Init_ctxs(byte[] tmpl_src, Xoa_ttl ttl) {
tmpl_ctx.Clear_all();
- tmpl_ctx.Cur_page().Ttl_(ttl); // NOTE: must set cur_page, else page-dependent templates won't work; EX: {{FULLPAGENAME}}; PAGE:en.w:June_20; DATE:2014-06-20
- tmpl_ctx.Cur_page().Html_data().Html_restricted_(data.Html_restricted()); // NOTE: must set data.Html_restricted() if Special:XowaPopupHistory
- tmpl_ctx.Page_bgn(tmpl_root, tmpl_src);
+ tmpl_ctx.Page().Ttl_(ttl); // NOTE: must set cur_page, else page-dependent templates won't work; EX: {{FULLPAGENAME}}; PAGE:en.w:June_20; DATE:2014-06-20
+ tmpl_ctx.Page().Html_data().Html_restricted_(data.Html_restricted()); // NOTE: must set data.Html_restricted() if Special:XowaPopupHistory
+ tmpl_ctx.Parser__page_init(tmpl_root, tmpl_src);
Wtxt_ctx_init(true, tmpl_src);
- wtxt_ctx.Cur_page().Ttl_(ttl); // NOTE: must set cur_page, or rel lnkis won't work; EX: [[../A]]
+ wtxt_ctx.Page().Ttl_(ttl); // NOTE: must set cur_page, or rel lnkis won't work; EX: [[../A]]
}
public byte[] Parse(Xowe_wiki cur_wiki, Xoae_page page, Xog_tab_itm cur_tab, Xow_popup_itm popup_itm) { // NOTE: must pass cur_wiki for xwiki label; DATE:2014-07-02
if (Bry_.Eq(popup_itm.Wiki_domain(), Xow_domain_itm_.Bry__wikidata)) {
@@ -125,7 +125,7 @@ public class Xow_popup_parser {
wtxt_root.Clear(); // now start parsing wrdx_bry from wtxt to html
Wtxt_ctx_init(false, wrdx_bry);
parser.Parse_to_src_end(wtxt_root, wtxt_ctx, tkn_mkr, wrdx_bry, wtxt_trie, Xop_parser_.Doc_bgn_bos, wrdx_bry.length);
- wtxt_ctx.Page_end(wtxt_root, wrdx_bry, wrdx_bry.length);
+ wtxt_ctx.Parser__page_term(wtxt_root, wrdx_bry, wrdx_bry.length);
wiki.Html_mgr().Html_wtr().Write_all(wrdx_bfr, wtxt_ctx, hctx, wrdx_bry, wtxt_root);
}
private void Adjust_wrdx_end(Xow_popup_itm popup_itm, Bry_bfr wrdx_bfr) {
@@ -195,10 +195,10 @@ public class Xow_popup_parser {
}
private void Wtxt_ctx_init(boolean incremental, byte[] bry) {
wtxt_ctx.Clear_all();
- wtxt_ctx.Cur_page().Html_data().Html_restricted_(data.Html_restricted());
+ wtxt_ctx.Page().Html_data().Html_restricted_(data.Html_restricted());
wtxt_ctx.Para().Enabled_(!incremental); // NOTE: if incremental, disable para; easier to work with \n rather than ; also, must be enabled before Page_bgn; DATE:2014-06-18DATE:2014-06-18
wtxt_ctx.Lnke().Dangling_goes_on_stack_(incremental);
- wtxt_ctx.Page_bgn(wtxt_root, bry);
+ wtxt_ctx.Parser__page_init(wtxt_root, bry);
}
private byte[] Parse_to_wtxt(byte[] src) {
int subs_len = tmpl_root.Subs_len();
diff --git a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java
index b03ccf821..480259b3b 100644
--- a/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java
+++ b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java
@@ -30,7 +30,7 @@ public class Xoh_ns_file_page_mgr implements gplx.core.brys.Bfr_arg {
Xowe_wiki wiki = (Xowe_wiki)page.Commons_mgr().Source_wiki_or(cur_wiki);
this.ttl = ttl; this.html_wtr = html_wtr; this.repo_mgr = wiki.File__repo_mgr();
this.play_btn_icon = wiki.Html_mgr().Img_media_play_btn();
- this.xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(Xof_exec_tid.Tid_wiki_file, ctx, ctx.Cur_page(), queue, ttl.Page_txt()
+ this.xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(Xof_exec_tid.Tid_wiki_file, ctx, ctx.Page(), queue, ttl.Page_txt()
, Xop_lnki_type.Id_thumb, Xop_lnki_tkn.Upright_null, html_wtr.Main_img_w(), html_wtr.Main_img_h(), Xof_lnki_time.Null, Xof_lnki_page.Null, Bool_.N);
Xof_orig_itm orig = wiki.File_mgr().Orig_mgr().Find_by_ttl_or_null(xfer_itm.Lnki_ttl());
if (orig == Xof_orig_itm.Null) return; // no orig;
diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java
index 476328f94..1d9acb360 100644
--- a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java
@@ -267,6 +267,7 @@ kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pagesincategory_pages, "pagesincategory_pag
kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pagesincategory_subcats, "pagesincategory_subcats", "subcats");
kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pagesincategory_files, "pagesincategory_files", "files");
kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_revisionsize, "REVISIONSIZE");
-kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_pagebanner, "PAGEBANNER"); // NOTE: must be casematch; EX:{{pagebanner}}
+kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_pagebanner, "PAGEBANNER"); // NOTE: must be casematch; EX: in en.v, {{pagebanner}} is actually template name which calls {{PAGEBANNER}}
+kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_protectionexpiry, "PROTECTIONEXPIRY");
}
}
diff --git a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java
index cb45476f0..7d96d0565 100644
--- a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java
+++ b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java
@@ -230,8 +230,9 @@ public static final int
, Id_pagesincategory_files = 208
, Id_rev_revisionsize = 209
, Id_pagebanner = 210
+, Id_rev_protectionexpiry = 211
;
-public static final int Id__max = 211;
+public static final int Id__max = 212;
private static byte[] ary_itm_(int id) {
switch (id) {
@@ -446,6 +447,7 @@ case Xol_kwd_grp_.Id_pagesincategory_subcats: return Bry_.new_u8("pagesincategor
case Xol_kwd_grp_.Id_pagesincategory_files: return Bry_.new_u8("pagesincategory_files");
case Xol_kwd_grp_.Id_rev_revisionsize: return Bry_.new_u8("revisionsize");
case Xol_kwd_grp_.Id_pagebanner: return Bry_.new_u8("pagebanner");
+case Xol_kwd_grp_.Id_rev_protectionexpiry: return Bry_.new_u8("protectionexpiry");
default: throw Err_.new_unhandled(id);
}
}
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java
index 623f80a62..c7f23ee72 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java
@@ -36,7 +36,7 @@ public class Xop_ctx {
public Xowe_wiki Wiki() {return wiki;} private final Xowe_wiki wiki;
public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang;
public Xop_tkn_mkr Tkn_mkr() {return tkn_mkr;} private final Xop_tkn_mkr tkn_mkr;
- public Xoae_page Cur_page() {return cur_page;} public void Cur_page_(Xoae_page v) {cur_page = v;} private Xoae_page cur_page;
+ public Xoae_page Page() {return cur_page;} public void Page_(Xoae_page v) {cur_page = v;} private Xoae_page cur_page;
public byte Parse_tid() {return parse_tid;} public Xop_ctx Parse_tid_(byte v) {parse_tid = v; xnde_names_tid = v; return this;} private byte parse_tid = Xop_parser_.Parse_tid_null;
public byte Xnde_names_tid() {return xnde_names_tid;} public Xop_ctx Xnde_names_tid_(byte v) {xnde_names_tid = v; return this;} private byte xnde_names_tid = Xop_parser_.Parse_tid_null;
public Xop_amp_wkr Amp() {return amp;} private final Xop_amp_wkr amp = new Xop_amp_wkr();
@@ -88,12 +88,12 @@ public class Xop_ctx {
try {return cur_page.Url().To_str();}
catch (Exception e) {Err_.Noop(e); return "page_url shouldn't fail";}
}
- public void Page_bgn(Xop_root_tkn root, byte[] src) {
+ public void Parser__page_init(Xop_root_tkn root, byte[] src) {
this.Msg_log().Clear(); cur_tkn_tid = Xop_tkn_itm_.Tid_null;
empty_ignored = false;
for (Xop_ctx_wkr wkr : wkrs) wkr.Page_bgn(this, root);
}
- public void Page_end(Xop_root_tkn root, byte[] src, int src_len) {
+ public void Parser__page_term(Xop_root_tkn root, byte[] src, int src_len) {
Stack_pop_til(root, src, 0, true, src_len, src_len, Xop_tkn_itm_.Tid_txt);
for (Xop_ctx_wkr wkr : wkrs) wkr.Page_end(this, root, src, src_len);
}
@@ -320,7 +320,7 @@ public class Xop_ctx {
}
public static Xop_ctx New_sub_by_ctx(Xop_ctx ctx) {
Xowe_wiki wiki = ctx.Wiki();
- Xop_ctx rv = new Xop_ctx(wiki, Xoae_page.New(wiki, wiki.Ttl_parse(ctx.Cur_page().Ttl().Full_db())));
+ Xop_ctx rv = new Xop_ctx(wiki, Xoae_page.New(wiki, wiki.Ttl_parse(ctx.Page().Ttl().Full_db())));
new_copy(ctx, rv);
return rv;
}
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_ctx_.java b/400_xowa/src/gplx/xowa/parsers/Xop_ctx_.java
index cec9f9256..c2d8ecd12 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_ctx_.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_ctx_.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
public class Xop_ctx_ {
- public static String Page_as_str(Xop_ctx ctx) {return String_.new_u8(ctx.Cur_page().Ttl().Full_db());}
+ public static String Page_as_str(Xop_ctx ctx) {return String_.new_u8(ctx.Page().Ttl().Full_db());}
public static String Src_limit_and_escape_nl(byte[] src, int bgn, int limit) {
int end = bgn + limit;
int src_len = src.length;
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java
index 53f20053b..ec064d81e 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java
@@ -39,7 +39,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ
}
public byte[] Parse_text_to_html(Xop_ctx ctx, byte[] src) {
Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512();
- Parse_text_to_html(bfr, ctx.Cur_page(), false, src);
+ Parse_text_to_html(bfr, ctx.Page(), false, src);
return bfr.To_bry_and_rls();
}
public void Parse_text_to_html(Bry_bfr trg, Xoae_page page, boolean para_enabled, byte[] src) {Parse_text_to_html(trg, page, Xoh_wtr_ctx.Basic, para_enabled, src);}
@@ -70,7 +70,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ
tmpl.Init_by_new(ns, name, src, root, tmpl_props.OnlyInclude_exists);
} private Xot_compile_data tmpl_props = new Xot_compile_data();
public void Parse_page_all_clear(Xop_root_tkn root, Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, byte[] src) {
- ctx.Cur_page().Clear_all(); ctx.App().Msg_log().Clear();
+ ctx.Page().Clear_all(); ctx.App().Msg_log().Clear();
Parse_text_to_wdom(root, ctx, tkn_mkr, src, Xop_parser_.Doc_bgn_bos);
}
public Xop_root_tkn Parse_text_to_wdom_old_ctx(Xop_ctx old_ctx, byte[] src, boolean doc_bgn_pos) {return Parse_text_to_wdom(Xop_ctx.new_sub_(old_ctx.Wiki()), src, doc_bgn_pos);}
@@ -112,10 +112,10 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ
int len = src.length; if (len == 0) return; // nothing to parse;
byte parse_tid_old = ctx.Parse_tid(); // NOTE: must store parse_tid b/c ctx can be reused by other classes
ctx.Parse_tid_(parse_type);
- ctx.Page_bgn(root, src);
+ ctx.Parser__page_init(root, src);
ctx.App().Parser_mgr().Core__uniq_mgr().Clear();
Parse_to_src_end(root, ctx, tkn_mkr, src, trie, doc_bgn_pos, len);
- ctx.Page_end(root, src, len);
+ ctx.Parser__page_term(root, src, len);
ctx.Parse_tid_(parse_tid_old);
}
public int Parse_to_src_end(Xop_root_tkn root, Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, byte[] src, Btrie_fast_mgr trie, int pos, int len) {
diff --git a/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java
index aa06de173..2bad3a1a8 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java
@@ -38,7 +38,7 @@ public class Xow_parser_mgr {
public void Parse(Xoae_page page, boolean clear) {
if (!Env_.Mode_testing()) wiki.Init_assert();
gplx.xowa.xtns.scribunto.Scrib_core.Core_page_changed(page); // notify scribunto about page changed
- ctx.Cur_page_(page);
+ ctx.Page_(page);
Xop_root_tkn root = ctx.Tkn_mkr().Root(page.Data_raw());
if (clear) {page.Clear_all();}
Xoa_ttl ttl = page.Ttl();
diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java
index 5e0ea1b01..6347da269 100644
--- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java
@@ -77,7 +77,7 @@ public class Xop_hdr_wkr implements Xop_ctx_wkr {
hdr.Subs_move(root);
hdr.Src_end_(cur_pos);
if (ctx.Parse_tid() == Xop_parser_.Parse_tid_page_wiki)
- ctx.Cur_page().Hdr_mgr().Add(ctx, hdr, src);
+ ctx.Page().Hdr_mgr().Add(ctx, hdr, src);
return cur_pos;
}
private void Close_open_itms(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java
index be8f7fe9b..47e1d5dc5 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java
@@ -57,7 +57,7 @@ public class Xop_lnki_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
switch (lnki.Ns_id()) {
case Xow_ns_.Tid__file:
if ( Xop_lnki_type.Id_is_thumbable(lnki.Lnki_type()) // thumbs produce
cancels pre
- || lnki.Align_h() != Xop_lnki_align_h_.Null // halign (left, right, none) also produces
; DATE:2014-02-17
+ || lnki.Align_h() != Xop_lnki_align_h_.Null // halign (left, right, none) also produces
; DATE:2014-02-17
)
ctx.Para().Process_block_lnki_div();
lnki_is_file = true;
@@ -71,14 +71,14 @@ public class Xop_lnki_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
break;
}
if (lnki_is_file) {
- ctx.Cur_page().Lnki_list().Add(lnki);
+ ctx.Page().Lnki_list().Add(lnki);
if (file_wkr != null) file_wkr.Wkr_exec(ctx, src, lnki, gplx.xowa.bldrs.cmds.files.Xob_lnki_src_tid.Tid_file);
}
Xoa_ttl lnki_ttl = lnki.Ttl();
if ( lnki_ttl.Wik_bgn() != -1 // lnki is xwiki
&& sites_regy_mgr != null // relatedSites xtn is enabled
) {
- lnki.Xtn_sites_link_(sites_regy_mgr.Match(ctx.Cur_page(), lnki_ttl));
+ lnki.Xtn_sites_link_(sites_regy_mgr.Match(ctx.Page(), lnki_ttl));
}
return cur_pos;
}
@@ -174,7 +174,7 @@ public class Xop_lnki_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
}
return true;
} catch (Exception e) {
- ctx.App().Usr_dlg().Warn_many("", "", "fatal error in lnki: page=~{0} src=~{1} err=~{2}", String_.new_u8(ctx.Cur_page().Ttl().Full_db()), String_.new_u8(src, lnki.Src_bgn(), lnki.Src_end()), Err_.Message_gplx_full(e));
+ ctx.App().Usr_dlg().Warn_many("", "", "fatal error in lnki: page=~{0} src=~{1} err=~{2}", String_.new_u8(ctx.Page().Ttl().Full_db()), String_.new_u8(src, lnki.Src_bgn(), lnki.Src_end()), Err_.Message_gplx_full(e));
return false;
}
} private static final byte[] Const_pipe = Bry_.new_a7("|");
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java
index b03567829..5ab659fe0 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java
@@ -45,7 +45,7 @@ public class Xop_lnki_wkr_ {
byte[] ttl_bry = Bry_.Mid(src, ttl_bgn, ttl_end);
ttl_bry = gplx.langs.htmls.encoders.Gfo_url_encoder_.Http_url_ttl.Decode(ttl_bry);
int ttl_bry_len = ttl_bry.length;
- Xoa_ttl page_ttl = ctx.Cur_page().Ttl();
+ Xoa_ttl page_ttl = ctx.Page().Ttl();
if (page_ttl.Ns().Subpages_enabled()
&& Pfunc_rel2abs.Rel2abs_ttl(ttl_bry, 0, ttl_bry_len)) { // Linker.php|normalizeSubpageLink
Bry_bfr tmp_bfr = app.Utl__bfr_mkr().Get_b512();
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr.java
index e37793369..a7e3fbbec 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr.java
@@ -95,7 +95,7 @@ public class Xop_under_lxr implements Xop_lxr {
return rv;
}
public static void Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos, int kwd_id) {
- Xoae_page page = ctx.Cur_page();
+ Xoae_page page = ctx.Page();
Xow_hdr_mgr hdr_mgr = page.Hdr_mgr();
switch (kwd_id) {
case Xol_kwd_grp_.Id_toc:
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java
index 80c5ee84b..5d1b5e56a 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java
@@ -63,10 +63,10 @@ public class Xot_defn_tmpl implements Xot_defn {
public void Parse_tmpl(Xop_ctx ctx) {ctx.Wiki().Parser_mgr().Main().Parse_text_to_defn(this, ctx, ctx.Tkn_mkr(), ns, name, data_raw);} boolean onlyinclude_parsed = false;
public boolean Tmpl_evaluate(Xop_ctx ctx, Xot_invk caller, Bry_bfr bfr) {
if (root == null) Parse_tmpl(ctx);
- Xoae_page page = ctx.Cur_page();
+ Xoae_page page = ctx.Page();
if (!page.Tmpl_stack_add(full_name)) {
bfr.Add_str_a7("");
- Xoa_app_.Usr_dlg().Log_many("", "", "template loop detected: url=~{0} name=~{1}", ctx.Cur_page().Url().To_str(), name);
+ Xoa_app_.Usr_dlg().Log_many("", "", "template loop detected: url=~{0} name=~{1}", ctx.Page().Url().To_str(), name);
return false;
}
boolean rv = true;
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java
index 978055710..54206161d 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java
@@ -38,7 +38,7 @@ class Xot_defn_trace_fxt {
Xop_ctx ctx = fxt.Ctx();
ctx.Defn_trace().Clear();
byte[] src = Bry_.new_u8(raw);
- ctx.Cur_page().Ttl_(Xoa_ttl.parse(fxt.Wiki(), Bry_.new_a7("test")));
+ ctx.Page().Ttl_(Xoa_ttl.parse(fxt.Wiki(), Bry_.new_a7("test")));
Xop_root_tkn root = ctx.Tkn_mkr().Root(src);
fxt.Parser().Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), src);
ctx.Defn_trace().Print(src, tmp);
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java
index 052fcc29c..b606d93b2 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java
@@ -221,7 +221,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
if (ignore_hash.Get_by_bry(name_ary) == null) {
if (Pfunc_rel2abs.Rel2abs_ttl(name_ary, name_bgn, name_ary_len)) {// rel_path; EX: {{/../Peer page}}; DATE:2013-03-27
Bry_bfr tmp_bfr = ctx.App().Utl__bfr_mkr().Get_b512();
- name_ary = Pfunc_rel2abs.Rel2abs(tmp_bfr, Bry_.Mid(name_ary, name_bgn, name_ary_len), ctx.Cur_page().Ttl().Raw());
+ name_ary = Pfunc_rel2abs.Rel2abs(tmp_bfr, Bry_.Mid(name_ary, name_bgn, name_ary_len), ctx.Page().Ttl().Raw());
tmp_bfr.Mkr_rls();
return SubEval(ctx, wiki, bfr, name_ary, caller, src);
}
@@ -237,9 +237,9 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
rv = true;
} catch (Exception e) {
if (Env_.Mode_testing())
- throw Err_.new_exc(e, "xo", "failed to evaluate function", "page", ctx.Cur_page().Ttl().Full_txt(), "defn", defn.Name(), "src", String_.new_u8(src, this.Src_bgn(), this.Src_end()));
+ throw Err_.new_exc(e, "xo", "failed to evaluate function", "page", ctx.Page().Ttl().Full_txt(), "defn", defn.Name(), "src", String_.new_u8(src, this.Src_bgn(), this.Src_end()));
else {
- wiki.Appe().Usr_dlg().Warn_many("", "", "failed to evaluate function: page=~{0} defn=~{1} src=~{2} err=~{3}", ctx.Cur_page().Ttl().Full_txt(), defn.Name(), String_.new_u8(src, this.Src_bgn(), this.Src_end()), Err_.Message_gplx_log(e));
+ wiki.Appe().Usr_dlg().Warn_many("", "", "failed to evaluate function: page=~{0} defn=~{1} src=~{2} err=~{3}", ctx.Page().Ttl().Full_txt(), defn.Name(), String_.new_u8(src, this.Src_bgn(), this.Src_end()), Err_.Message_gplx_log(e));
rv = false;
}
}
@@ -256,7 +256,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
Bld_key(invk_tmpl, name_ary, rslt_bfr);
byte[] rslt_key = rslt_bfr.To_bry_and_clear();
Object o = wiki.Cache_mgr().Tmpl_result_cache().Get_by(rslt_key);
- Xopg_tmpl_prepend_mgr prepend_mgr = ctx.Cur_page().Tmpl_prepend_mgr().Bgn(bfr);
+ Xopg_tmpl_prepend_mgr prepend_mgr = ctx.Page().Tmpl_prepend_mgr().Bgn(bfr);
if (o != null) {
byte[] rslt = (byte[])o;
prepend_mgr.End(ctx, bfr, rslt, rslt.length, Bool_.Y);
@@ -316,7 +316,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
if (caller.Rslt_is_redirect()) // do not prepend if page is redirect; EX:"#REDIRECT" x> "\n#REDIRECT" DATE:2014-07-11
caller.Rslt_is_redirect_(false); // reset flag; needed for TEST; kludgy, but Rslt_is_redirect is intended for single use
else
- ctx.Cur_page().Tmpl_prepend_mgr().End(ctx, bfr, bfr_func.Bfr(), bfr_func.Len(), Bool_.N);
+ ctx.Page().Tmpl_prepend_mgr().End(ctx, bfr, bfr_func.Bfr(), bfr_func.Len(), Bool_.N);
bfr.Add_bfr_and_clear(bfr_func);
}
private static Hash_adp_bry ignore_hash;
@@ -345,7 +345,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
if (transclude_src == null && ctx.Tmpl_load_enabled()) { // ttl is template not in cache, or some other ns; do load
Xow_page_cache_itm cache_itm = wiki.Cache_mgr().Page_cache().Get_or_load_as_itm(page_ttl);
if ( cache_itm != null
-// && Bry_.Eq(cache_itm.Ttl().Full_db(), ctx.Cur_page().Page_ttl().Full_db()) // make sure that transcluded item is not same as page_ttl; DATE:2014-01-10
+// && Bry_.Eq(cache_itm.Ttl().Full_db(), ctx.Page().Page_ttl().Full_db()) // make sure that transcluded item is not same as page_ttl; DATE:2014-01-10
) {
transclude_src = cache_itm.Wtxt();
page_ttl = cache_itm.Ttl();
@@ -364,7 +364,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
boolean rv = false;
Xot_invk tmp_tmpl = Xot_defn_tmpl_.CopyNew(ctx, transclude_tmpl, this, caller, src, transclude_tmpl.Name());
Bry_bfr tmp_bfr = Bry_bfr.new_();
- Xopg_tmpl_prepend_mgr prepend_mgr = ctx.Cur_page().Tmpl_prepend_mgr().Bgn(doc);
+ Xopg_tmpl_prepend_mgr prepend_mgr = ctx.Page().Tmpl_prepend_mgr().Bgn(doc);
rv = transclude_tmpl.Tmpl_evaluate(ctx, tmp_tmpl, tmp_bfr);
prepend_mgr.End(ctx, doc, tmp_bfr.Bfr(), tmp_bfr.Len(), Bool_.Y);
doc.Add_bfr_and_clear(tmp_bfr);
@@ -408,7 +408,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
if (transclude_tmpl == null && ctx.Tmpl_load_enabled()) { // ttl is template not in cache, or some other ns; do load
Xow_page_cache_itm cache_itm = wiki.Cache_mgr().Page_cache().Get_or_load_as_itm(page_ttl);
if ( cache_itm != null) {
- if (!Bry_.Eq(cache_itm.Ttl().Full_db(), ctx.Cur_page().Ttl().Full_db())) { // make sure that transcluded item is not same as page_ttl; DATE:2014-01-10
+ if (!Bry_.Eq(cache_itm.Ttl().Full_db(), ctx.Page().Ttl().Full_db())) { // make sure that transcluded item is not same as page_ttl; DATE:2014-01-10
transclude_tmpl = ctx.Wiki().Parser_mgr().Main().Parse_text_to_defn_obj(ctx, ctx.Tkn_mkr(), page_ttl.Ns(), page_ttl.Page_db(), cache_itm.Wtxt());
page_ttl = cache_itm.Ttl();
}
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr.java
index 56e3f7562..bdb5e0b07 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr.java
@@ -72,7 +72,7 @@ public class Xot_invk_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
int subst_bgn = finder.Subst_bgn(), subst_end = finder.Subst_end();
invk.Tmpl_subst_props_(finder_typeId, subst_bgn, subst_end);
if ((ctx.Parse_tid() == Xop_parser_.Parse_tid_tmpl && finder_typeId == Xot_defn_.Tid_subst) // NOTE: if subst, but in tmpl stage, do not actually subst; PAGE:en.w:Unreferenced; DATE:2013-01-31
- || ctx.Cur_page().Ttl().Ns().Id_is_tmpl()) { // also, if on tmpl page, never evaluate (questionable, but seems to be needed)
+ || ctx.Page().Ttl().Ns().Id_is_tmpl()) { // also, if on tmpl page, never evaluate (questionable, but seems to be needed)
}
else {
key_tkn.Dat_rng_ary_(src, subst_end, txt_end); // redo txt_rng to ignore subst
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java
index 9b23ab40a..c7b962a2e 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java
@@ -104,7 +104,7 @@ public class Xot_tmpl_wtr {
if (Env_.Mode_testing())
throw Err_.new_exc(e, "xo", Err_string);
else
- ctx.App().Usr_dlg().Warn_many("", "", "failed to write tkn: page=~{0} err=~{1}", String_.new_u8(ctx.Cur_page().Ttl().Page_db()), Err_string);
+ ctx.App().Usr_dlg().Warn_many("", "", "failed to write tkn: page=~{0} err=~{1}", String_.new_u8(ctx.Page().Ttl().Page_db()), Err_string);
}
break;
}
diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java
index 62ff86e54..d6cb7f8f9 100644
--- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java
+++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java
@@ -96,9 +96,6 @@ public class Xop_sanitizer {
}
return dirty;
}
- public static byte[] Escape_cls(byte[] v) {
- return v;
- }
// static function escapeClass( $class ) {
// // Convert ugly stuff to underscores and kill underscores in ugly places
// return rtrim( preg_replace(
@@ -106,15 +103,8 @@ public class Xop_sanitizer {
// '_',
// $class ), '_' );
// }
+ public static byte[] Escape_cls(byte[] v) {
+ return v;
+ }
static final byte Tid_amp = 1, Tid_space = 2, Tid_colon = 3, Tid_percent = 4;
}
-/*
-NOTE: original escapeID does following
-1: ' ' -> _
-2: decode_html_ent();
-3: '%3A' -> :
-4: % -> .
-for performance
-. combine 1,2,3,4: this will fail in cases like which will become " " instead of "_".
-. if that happens, go to 2 passes and move 2: to 1 (this should have no side-effect)
-*/
\ No newline at end of file
diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java
index 5aa740331..295bff70b 100644
--- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java
@@ -309,7 +309,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr {
return Make_xnde_xtn(ctx, tkn_mkr, root, src, src_len, tag, bgn_pos, gtPos + 1, name_bgn, name_end, atrs_bgn, atrs_end, atrs, inline, pre2_hack); // find end tag and do not parse anything inbetween
}
if (tag.Restricted()) {
- Xoae_page page = ctx.Cur_page();
+ Xoae_page page = ctx.Page();
if ( page.Html_data().Html_restricted()
&& page.Wiki().Domain_tid() != Xow_domain_tid_.Int__home) {
int end_pos = gtPos + 1;
@@ -557,7 +557,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr {
else {
byte[] close_bry = tag.Xtn_end_tag_tmp(); // get tmp bry (so as not to new)
if (tag.Langs() != null) { // cur tag has langs; EX:
; DATE:2014-07-18
- Xop_xnde_tag_lang tag_lang = tag.Langs_get(ctx.Lang().Case_mgr(), ctx.Cur_page().Lang().Lang_id(), src, name_bgn, name_end);
+ Xop_xnde_tag_lang tag_lang = tag.Langs_get(ctx.Lang().Case_mgr(), ctx.Page().Lang().Lang_id(), src, name_bgn, name_end);
if (tag_lang == null) // tag does not match lang; EX: and lang=de;
return ctx.Lxr_make_txt_(open_end);
if (tag_lang != Xop_xnde_tag_lang.Instance) // tag matches; note Xop_xnde_tag_lang._ is a wildcard match; EX:
@@ -647,8 +647,8 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr {
case Xop_xnde_tag_.Tid_listing_see:
case Xop_xnde_tag_.Tid_listing_sleep: xnde_xtn = tkn_mkr.Xnde_listing(tag_id); break;
case Xop_xnde_tag_.Tid_timeline:
- boolean log_wkr_enabled = Timeline_log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Timeline_log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_timeline, src, xnde);
- ctx.Cur_page().Html_data().Head_mgr().Itm__timeline().Enabled_y_();
+ boolean log_wkr_enabled = Timeline_log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Timeline_log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_timeline, src, xnde);
+ ctx.Page().Html_data().Head_mgr().Itm__timeline().Enabled_y_();
break;
case Xop_xnde_tag_.Tid_xowa_tag_bgn:
case Xop_xnde_tag_.Tid_xowa_tag_end:
@@ -670,7 +670,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr {
xnde_xtn.Xtn_parse(ctx.Wiki(), ctx, root, src, xnde);
}
catch (Exception e) {
- String err_msg = String_.Format("failed to render extension: title={0} excerpt={1} err={2}", ctx.Cur_page().Ttl().Full_txt()
+ String err_msg = String_.Format("failed to render extension: title={0} excerpt={1} err={2}", ctx.Page().Ttl().Full_txt()
, Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn())
, Err_.Message_gplx_log(e));
if (Env_.Mode_testing())
diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr_.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr_.java
index a0b7a0c19..f05552cbd 100644
--- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr_.java
+++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr_.java
@@ -47,7 +47,7 @@ class Xop_xnde_wkr_ {
int tid = ((Int_obj_ref)o).Val();
switch (tid) {
case Find_xtn_end__tid__bgn: // handle nested refs; PAGE:en.w:UK; DATE:2015-12-26
- int angle_end_pos = Bry_find_.Find_fwd(src, Byte_ascii.Angle_end, i, src_end); if (angle_end_pos == Bry_find_.Not_found) {Xoa_app_.Usr_dlg().Warn_many("", "", "parser.xtn: could not find angle_end: page=~{0}", ctx.Cur_page().Url().To_str()); return Bry_find_.Not_found;}
+ int angle_end_pos = Bry_find_.Find_fwd(src, Byte_ascii.Angle_end, i, src_end); if (angle_end_pos == Bry_find_.Not_found) {Xoa_app_.Usr_dlg().Warn_many("", "", "parser.xtn: could not find angle_end: page=~{0}", ctx.Page().Url().To_str()); return Bry_find_.Not_found;}
if (src[angle_end_pos -1] == Byte_ascii.Slash) {}
else
++depth;
@@ -70,11 +70,11 @@ class Xop_xnde_wkr_ {
}
public static int Find_xtag_end(Xop_ctx ctx, byte[] src, int pos, int src_end) {
int xtag_bgn = pos + Pfunc_tag.Xtag_bgn_lhs.length;
- int tag_id = Bry_.To_int_or(src, xtag_bgn, xtag_bgn + Pfunc_tag.Id_len, -1); if (tag_id == -1) {Xoa_app_.Usr_dlg().Warn_many("", "", "parser.xtn: could not extract id from xtag_bgn: page=~{0}", ctx.Cur_page().Url().To_str()); return Bry_find_.Not_found;}
+ int tag_id = Bry_.To_int_or(src, xtag_bgn, xtag_bgn + Pfunc_tag.Id_len, -1); if (tag_id == -1) {Xoa_app_.Usr_dlg().Warn_many("", "", "parser.xtn: could not extract id from xtag_bgn: page=~{0}", ctx.Page().Url().To_str()); return Bry_find_.Not_found;}
Find_xtag_end__bfr.Add(Pfunc_tag.Xtag_end_lhs).Add_int_pad_bgn(Byte_ascii.Num_0, Pfunc_tag.Id_len, tag_id).Add(Pfunc_tag.Xtag_rhs);
byte[] tag_end = Find_xtag_end__bfr.To_bry_and_clear();
- int rv = Bry_find_.Find_fwd(src, tag_end, pos + Pfunc_tag.Xtag_rhs.length); if (rv == Bry_find_.Not_found) {ctx.App().Usr_dlg().Warn_many("", "", "parser.xtn: could not find xtag end: page=~{0}", ctx.Cur_page().Url().To_str()); return Bry_find_.Not_found;}
- rv = Bry_find_.Find_bwd(src, Byte_ascii.Lt, rv - 1); if (rv == Bry_find_.Not_found) {ctx.App().Usr_dlg().Warn_many("", "", "parser.xtn: could not find <: page=~{0}", ctx.Cur_page().Url().To_str()); return Bry_find_.Not_found;}
+ int rv = Bry_find_.Find_fwd(src, tag_end, pos + Pfunc_tag.Xtag_rhs.length); if (rv == Bry_find_.Not_found) {ctx.App().Usr_dlg().Warn_many("", "", "parser.xtn: could not find xtag end: page=~{0}", ctx.Page().Url().To_str()); return Bry_find_.Not_found;}
+ rv = Bry_find_.Find_bwd(src, Byte_ascii.Lt, rv - 1); if (rv == Bry_find_.Not_found) {ctx.App().Usr_dlg().Warn_many("", "", "parser.xtn: could not find <: page=~{0}", ctx.Page().Url().To_str()); return Bry_find_.Not_found;}
return rv;
}
}
diff --git a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java
index 86338eae6..869394e62 100644
--- a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java
+++ b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java
@@ -73,7 +73,7 @@ public class Xows_page_allpages implements gplx.core.brys.Bfr_arg, GfoInvkAble,
public int Rslt_list_len() {return rslt_list_len;} public void Rslt_list_len_(int v) {rslt_list_len = v;} private int rslt_list_len;
public Xowd_page_itm[] Rslt_list_ttls() {return rslt_list_ttls;} private Xowd_page_itm[] rslt_list_ttls;
public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) {
- wiki.Parser_mgr().Ctx().Cur_page().Html_data().Display_ttl_(wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_sp_allpages_hdr));
+ wiki.Parser_mgr().Ctx().Page().Html_data().Display_ttl_(wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_sp_allpages_hdr));
url.Page_bry_(Bry_.Add(Bry_.new_a7("Special:"), ttl.Page_txt_wo_qargs())); // HACK: need to re-set Page b/c href_wtr does not eliminate qargs; DATE:2013-02-08
if (wiki.Domain_tid() == Xow_domain_tid_.Int__home) {wiki.Appe().Usr_dlg().Prog_many(GRP_KEY, "home.invalid", "AllPages not implemented for home wiki"); return;}
if (rslt_list_ttls == null) this.Itms_per_page_(itms_per_page);
diff --git a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java
index 9422cafcc..7c69fa93b 100644
--- a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java
+++ b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java
@@ -173,8 +173,8 @@ class Xows_page_allpages_fxt {
public Xows_page_allpages_fxt Test_special_gen() {
init_url = app.User().Wikii().Utl__url_parser().Parse(Xows_special_meta_.Itm__all_pages.Ttl_bry());
Xoa_ttl init_ttl = Make_init_ttl();
- allpages.Special_gen(wiki, wiki.Parser_mgr().Ctx().Cur_page(), init_url, init_ttl);
- if (expd_display_ttl != null) Tfds.Eq(expd_display_ttl, String_.new_u8(wiki.Parser_mgr().Ctx().Cur_page().Html_data().Display_ttl()));
+ allpages.Special_gen(wiki, wiki.Parser_mgr().Ctx().Page(), init_url, init_ttl);
+ if (expd_display_ttl != null) Tfds.Eq(expd_display_ttl, String_.new_u8(wiki.Parser_mgr().Ctx().Page().Html_data().Display_ttl()));
if (expd_address_page != null) Tfds.Eq(expd_address_page, String_.new_u8(init_url.Page_bry()));
return this;
}
@@ -191,8 +191,8 @@ class Xows_page_allpages_fxt {
} private Xoa_url init_url = Xoa_url.blank();
public Xows_page_allpages_fxt Test_build_html(String expd) {
Exec_build();
- allpages.Build_html(wiki.Parser_mgr().Ctx().Cur_page());
- Tfds.Eq_str_lines(expd, String_.new_a7(wiki.Parser_mgr().Ctx().Cur_page().Data_raw()));
+ allpages.Build_html(wiki.Parser_mgr().Ctx().Page());
+ Tfds.Eq_str_lines(expd, String_.new_a7(wiki.Parser_mgr().Ctx().Page().Data_raw()));
return this;
}
private void Exec_build() {
diff --git a/400_xowa/src/gplx/xowa/specials/randoms/Rndm_core_row.java b/400_xowa/src/gplx/xowa/specials/randoms/Rndm_core_row.java
new file mode 100644
index 000000000..f2e67587f
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/specials/randoms/Rndm_core_row.java
@@ -0,0 +1,24 @@
+/*
+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 .
+*/
+package gplx.xowa.specials.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*;
+public class Rndm_core_row {
+ public Rndm_core_row(int type, int total, int interval) {this.type = type; this.total = total; this.interval = interval;}
+ public final int type;
+ public final int total;
+ public final int interval;
+}
diff --git a/400_xowa/src/gplx/xowa/specials/randoms/Rndm_core_tbl.java b/400_xowa/src/gplx/xowa/specials/randoms/Rndm_core_tbl.java
new file mode 100644
index 000000000..f8bd41f44
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/specials/randoms/Rndm_core_tbl.java
@@ -0,0 +1,49 @@
+/*
+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 .
+*/
+package gplx.xowa.specials.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*;
+import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*;
+public class Rndm_core_tbl implements Rls_able {
+ private final String tbl_name = "rndm_core"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
+ private final String fld_rndm_uid, fld_rndm_total, fld_rndm_interval;
+ private final Db_conn conn; private Db_stmt stmt_select, stmt_insert;
+ public Rndm_core_tbl(Db_conn conn) {
+ this.conn = conn;
+ fld_rndm_uid = flds.Add_int("rndm_uid");
+ fld_rndm_total = flds.Add_int("rndm_total");
+ fld_rndm_interval = flds.Add_int("rndm_interval");
+ conn.Rls_reg(this);
+ }
+ public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, "core", fld_rndm_uid)));}
+ public void Insert(int uid, int total, int interval) {
+ if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds);
+ stmt_insert.Clear().Val_int(fld_rndm_uid, uid).Val_int(fld_rndm_total, total).Val_int(interval).Exec_insert();
+ }
+ public Rndm_core_row Select(int uid) {
+ if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_rndm_uid);
+ Db_rdr rdr = stmt_select.Clear().Val_int(fld_rndm_uid, uid).Exec_select__rls_manual();
+ try {
+ int total = rdr.Read_int(fld_rndm_total);
+ int interval = rdr.Read_int(fld_rndm_interval);
+ return new Rndm_core_row(uid, total, interval);
+ } finally {rdr.Rls();}
+ }
+ public void Rls() {
+ stmt_select = Db_stmt_.Rls(stmt_select);
+ stmt_insert = Db_stmt_.Rls(stmt_insert);
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/specials/randoms/Rndm_range_tbl.java b/400_xowa/src/gplx/xowa/specials/randoms/Rndm_range_tbl.java
new file mode 100644
index 000000000..2d72dbbf9
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/specials/randoms/Rndm_range_tbl.java
@@ -0,0 +1,57 @@
+/*
+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 .
+*/
+package gplx.xowa.specials.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*;
+import gplx.core.ios.*; import gplx.dbs.*; import gplx.dbs.utls.*;
+public class Rndm_range_tbl implements Rls_able {
+ private final String tbl_name = "rng_range"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
+ private final String fld_rng_uid, fld_rng_idx, fld_rng_page_id;
+ private final Db_conn conn; private Db_stmt stmt_select, stmt_insert;
+ public Rndm_range_tbl(Db_conn conn) {
+ this.conn = conn;
+ fld_rng_uid = flds.Add_int("rng_uid");
+ fld_rng_idx = flds.Add_int("rng_idx");
+ fld_rng_page_id = flds.Add_int("rng_page_id");
+ conn.Rls_reg(this);
+ }
+ public void Create_tbl() {conn.Ddl_create_tbl(Dbmeta_tbl_itm.New(tbl_name, flds, Dbmeta_idx_itm.new_unique_by_name(tbl_name, "core", fld_rng_uid, fld_rng_idx)));}
+ public void Insert(int uid, int idx, int page_id) {
+ if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds);
+ stmt_insert.Clear().Val_int(fld_rng_uid, uid).Val_int(fld_rng_idx, idx).Val_int(fld_rng_page_id, page_id).Exec_insert();
+ }
+ public void Select(int type) {
+// if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_rng_uid);
+// Db_rdr rdr = stmt_select.Clear().Val_int(fld_rng_type, type).Exec_select__rls_manual();
+// try {
+// int total = rdr.Read_int(fld_rng_total);
+// int interval = rdr.Read_int(fld_rng_interval);
+// return new Rndm_core_row(type, total, interval);
+// } finally {rdr.Rls();}
+ }
+ public void Rls() {
+ stmt_select = Db_stmt_.Rls(stmt_select);
+ stmt_insert = Db_stmt_.Rls(stmt_insert);
+ }
+ public void Get_random(int uid) {
+// Rndm_core_row core_row = core_tbl.Get(uid);
+// int rnd = RandomAdp_.new_().Next(core_row.total);
+// int idx = rnd / core_row.interval;
+// int off = rnd % core_row.interval;
+// Rndm_rng_row rng_row = rng_tbl.Get(uid, idx);
+// Xowd_page page = page_tbl.Get_by_page_offset(rng_row.page_id_bgn, off);
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page_tst.java b/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page_tst.java
index 36d9ea9da..87758231c 100644
--- a/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page_tst.java
+++ b/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page_tst.java
@@ -44,7 +44,7 @@ class Xop_randomRootPage_page_fxt {
Tfds.Eq(expd, String_.new_a7(page.Data_raw()));
}
public static Xoae_page Test_special_open(Xowe_wiki wiki, Xows_page special_page, String special_url) {
- Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page();
+ Xoae_page page = wiki.Parser_mgr().Ctx().Page();
Xoa_url url = wiki.Utl__url_parser().Parse(Bry_.new_u8(special_url));
page.Url_(url);
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.new_a7(special_url));
diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_core_tst.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_core_tst.java
index db2dc1a7b..be91a82e4 100644
--- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_core_tst.java
+++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_core_tst.java
@@ -201,7 +201,7 @@ public class Xosrh_core_tst {
// byte[] url_raw = Bry_.new_a7("Special:Search/" + ttl_str + ((match_tid == Xows_page__search.Match_tid_all) ? "" : "*") + "?fulltext=y" + Xosrh_rslt_itm_sorter.Xto_url_arg(sort_tid) + "&xowa_page_size=1&xowa_page_index=" + page_idx);
// Xoa_url url = url_parser.Parse(url_raw);
// Xoa_ttl ttl = Xoa_ttl.parse(wiki, url_raw);
-// Xoae_page page = wiki.Ctx().Cur_page();
+// Xoae_page page = wiki.Ctx().Page();
// search_mgr.Special_gen(url, page, wiki, ttl);
// Xosrh_rslt_grp cur_grp = search_mgr.Cur_grp();
// bfr.Mkr_rls();
diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java
index de9590a37..d8ae415f1 100644
--- a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java
+++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java
@@ -17,6 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.langs.htmls.*; import gplx.xowa.htmls.heads.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.xtns.indicators.*;
+import gplx.xowa.xtns.pagebanners.*;
public class Xopg_html_data {
private Ordered_hash ctg_hash;
public boolean Html_restricted() {return html_restricted;} private boolean html_restricted = true;
@@ -50,6 +51,7 @@ public class Xopg_html_data {
public int Xtn_imap_next_id() {return ++xtn_imap_next_id;} private int xtn_imap_next_id; // NOTE: must keep separate imap_id b/c html_elem_id is not always set;
public byte[] Xtn_search_text() {return xtn_search_txt;} public void Xtn_search_text_(byte[] v) {xtn_search_txt = v;} private byte[] xtn_search_txt = Bry_.Empty;
public byte[] Xtn_scribunto_dbg() {return xtn_scribunto_dbg;} public void Xtn_scribunto_dbg_(byte[] v) {xtn_scribunto_dbg = Bry_.Add(xtn_scribunto_dbg, v);} private byte[] xtn_scribunto_dbg = Bry_.Empty;
+ public Pgbnr_itm Xtn__pgbnr() {return xtn__pgbnr;} public void Xtn__pgbnr_(Pgbnr_itm v) {xtn__pgbnr = v;} private Pgbnr_itm xtn__pgbnr;
public Xoh_head_mgr Head_mgr() {return module_mgr;} private Xoh_head_mgr module_mgr = new Xoh_head_mgr();
public byte[] Custom_html() {return custom_html;} public Xopg_html_data Custom_html_(byte[] v) {custom_html = v; return this;} private byte[] custom_html;
public byte[] Custom_tab_name() {return custom_tab_name;} public Xopg_html_data Custom_tab_name_(byte[] v) {custom_tab_name = v; return this;} private byte[] custom_tab_name;
@@ -79,6 +81,7 @@ public class Xopg_html_data {
xtn_imap_exists = false;
xtn_search_txt = Bry_.Empty;
xtn_scribunto_dbg = Bry_.Empty;
+ xtn__pgbnr = null;
module_mgr.Clear();
custom_html = custom_html_end = custom_head_end = custom_tab_name = null;
if (ctg_hash != null) ctg_hash.Clear();
diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_revision_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_revision_data.java
index 7976a08b1..50c237f7b 100644
--- a/400_xowa/src/gplx/xowa/wikis/pages/Xopg_revision_data.java
+++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_revision_data.java
@@ -21,6 +21,8 @@ public class Xopg_revision_data {
public DateAdp Modified_on() {return modified_on;} public Xopg_revision_data Modified_on_(DateAdp v) {modified_on = v; return this;} private DateAdp modified_on = DateAdp_.MinValue;
public byte[] User() {return user;} public Xopg_revision_data User_(byte[] v) {user = v; return this;} private byte[] user = Bry_.Empty;
public byte[] Protection_level() {return protection_level;} public Xopg_revision_data Protection_level_(byte[] v) {protection_level = v; return this;} private byte[] protection_level = Bry_.Empty;
+ public byte[] Protection_expiry() {return protection_expiry;} private byte[] protection_expiry = Bry__protection_expiry__infinite;
public int Html_db_id() {return html_db_id;} public void Html_db_id_(int v) {html_db_id = v;} private int html_db_id = -1;
public void Clear() {}// NOTE: do not clear data b/c saving in Edit will call clear and id will be reset to 0
+ public static final byte[] Bry__protection_expiry__infinite = Bry_.new_a7("infinite");
}
diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java
index a1ba0d0cd..b49fd0c79 100644
--- a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java
+++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java
@@ -46,7 +46,7 @@ public class Xoa_sitelink_div_wtr {
byte[] ttl_bry = ttl.Page_txt_w_anchor();
boolean ttl_is_empty = false;
if (Bry_.Len_eq_0(ttl_bry)) { // NOTE: handles ttls like [[fr:]] and [[:fr;]] which have an empty Page_txt, but a valued Full_txt_raw
- ttl_bry = wiki.Parser_mgr().Ctx().Cur_page().Ttl().Page_txt();
+ ttl_bry = wiki.Parser_mgr().Ctx().Page().Ttl().Page_txt();
ttl_is_empty = true;
}
itm.Init_by_page(slink.Domain_info(), ttl_bry, ttl_is_empty, slink.Badges());
diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java
index e3eea0753..fbebd663e 100644
--- a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java
+++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java
@@ -48,7 +48,7 @@ class Xoa_sitelink_div_wtr_fxt {
Xoae_app app;
public void tst(String raw, String expd) {
Xop_ctx ctx = wiki.Parser_mgr().Ctx();
- ctx.Cur_page().Ttl_(Xoa_ttl.parse(wiki, Bry_.new_a7("test_page")));
+ ctx.Page().Ttl_(Xoa_ttl.parse(wiki, Bry_.new_a7("test_page")));
byte[] raw_bry = Bry_.new_u8(raw);
Bry_bfr bfr = Bry_bfr.new_();
Xop_root_tkn root = ctx.Tkn_mkr().Root(raw_bry);
@@ -56,7 +56,7 @@ class Xoa_sitelink_div_wtr_fxt {
wiki.Html_mgr().Html_wtr().Write_all(bfr, ctx, raw_bry, root);
Bry_bfr html_bfr = Bry_bfr.new_();
- wiki.App().Xwiki_mgr__sitelink_mgr().Write_html(html_bfr, wiki, ctx.Cur_page().Slink_list(), gplx.xowa.xtns.wdatas.Wdata_xwiki_link_wtr.Qid_null);
+ wiki.App().Xwiki_mgr__sitelink_mgr().Write_html(html_bfr, wiki, ctx.Page().Slink_list(), gplx.xowa.xtns.wdatas.Wdata_xwiki_link_wtr.Qid_null);
Tfds.Eq_str_lines(expd, html_bfr.To_str_and_clear());
}
}
diff --git a/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java
index 0e18bafef..281457070 100644
--- a/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java
+++ b/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java
@@ -18,7 +18,7 @@ along with this program. If not, see .
package gplx.xowa.xtns; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*; import gplx.core.btries.*;
import gplx.xowa.xtns.cites.*; import gplx.xowa.xtns.imaps.*; import gplx.xowa.xtns.relatedSites.*; import gplx.xowa.xtns.proofreadPage.*; import gplx.xowa.xtns.wdatas.*;
-import gplx.xowa.xtns.insiders.*; import gplx.xowa.xtns.indicators.*;
+import gplx.xowa.xtns.insiders.*; import gplx.xowa.xtns.indicators.*; import gplx.xowa.xtns.pagebanners.*;
public class Xow_xtn_mgr implements GfoInvkAble {
private Ordered_hash regy = Ordered_hash_.New_bry();
public int Count() {return regy.Count();}
@@ -29,6 +29,7 @@ public class Xow_xtn_mgr implements GfoInvkAble {
public Indicator_xtn_mgr Xtn_indicator() {return xtn_indicator;} private Indicator_xtn_mgr xtn_indicator;
public Pp_xtn_mgr Xtn_proofread() {return xtn_proofread;} private Pp_xtn_mgr xtn_proofread;
public Wdata_xtn_mgr Xtn_wikibase() {return xtn_wikibase;} private Wdata_xtn_mgr xtn_wikibase;
+ public Pgbnr_xtn_mgr Xtn_pgbnr() {return xtn_pgbnr;} private Pgbnr_xtn_mgr xtn_pgbnr;
public Xow_xtn_mgr Ctor_by_app(Xoae_app app) { // NOTE: needed for options
Add(app, new Cite_xtn_mgr());
Add(app, new Imap_xtn_mgr());
@@ -37,6 +38,7 @@ public class Xow_xtn_mgr implements GfoInvkAble {
Add(app, new Indicator_xtn_mgr());
Add(app, new Pp_xtn_mgr());
Add(app, new Wdata_xtn_mgr());
+ Add(app, new Pgbnr_xtn_mgr());
Add(app, new gplx.xowa.xtns.scribunto.Scrib_xtn_mgr());
Add(app, new gplx.xowa.xtns.gallery.Gallery_xtn_mgr());
Add(app, new gplx.xowa.xtns.poems.Poem_xtn_mgr());
@@ -45,7 +47,7 @@ public class Xow_xtn_mgr implements GfoInvkAble {
Add(app, new gplx.xowa.xtns.listings.Listing_xtn_mgr());
Add(app, new gplx.xowa.xtns.titleBlacklists.Blacklist_xtn_mgr());
Add(app, new gplx.xowa.xtns.pfuncs.scribunto.Pfunc_xtn_mgr());
-// Add(app, new gplx.xowa.xtns.graphs.Graph_xtn());
+ Add(app, new gplx.xowa.xtns.flaggedRevs.Flagged_revs_xtn_mgr());
return this;
}
public Xow_xtn_mgr Ctor_by_wiki(Xowe_wiki wiki) {
@@ -95,17 +97,19 @@ public class Xow_xtn_mgr implements GfoInvkAble {
case Tid_imap: xtn_imap = (Imap_xtn_mgr)mgr; break;
case Tid_proofread: xtn_proofread = (Pp_xtn_mgr)mgr; break;
case Tid_wikibase: xtn_wikibase = (Wdata_xtn_mgr)mgr; break;
+ case Tid_pgbnr: xtn_pgbnr = (Pgbnr_xtn_mgr)mgr; break;
}
}
- private static final byte Tid_cite = 0, Tid_sites = 1, Tid_insider = 2, Tid_imap = 3, Tid_proofread = 4, Tid_wikibase = 5, Tid_indicator = 6;
+ private static final byte Tid_cite = 0, Tid_sites = 1, Tid_insider = 2, Tid_imap = 3, Tid_proofread = 4, Tid_wikibase = 5, Tid_indicator = 6, Tid_pgbnr = 7;
private static final Btrie_slim_mgr xtn_tid_trie = Btrie_slim_mgr.cs()
- .Add_bry_byte(Cite_xtn_mgr.XTN_KEY , Tid_cite)
- .Add_bry_byte(Sites_xtn_mgr.XTN_KEY , Tid_sites)
- .Add_bry_byte(Insider_xtn_mgr.XTN_KEY , Tid_insider)
- .Add_bry_byte(Indicator_xtn_mgr.XTN_KEY , Tid_indicator)
- .Add_bry_byte(Imap_xtn_mgr.XTN_KEY , Tid_imap)
- .Add_bry_byte(Pp_xtn_mgr.XTN_KEY , Tid_proofread)
- .Add_bry_byte(Wdata_xtn_mgr.XTN_KEY , Tid_wikibase)
+ .Add_bry_byte(Cite_xtn_mgr.XTN_KEY , Tid_cite)
+ .Add_bry_byte(Sites_xtn_mgr.XTN_KEY , Tid_sites)
+ .Add_bry_byte(Insider_xtn_mgr.XTN_KEY , Tid_insider)
+ .Add_bry_byte(Indicator_xtn_mgr.XTN_KEY , Tid_indicator)
+ .Add_bry_byte(Imap_xtn_mgr.XTN_KEY , Tid_imap)
+ .Add_bry_byte(Pp_xtn_mgr.XTN_KEY , Tid_proofread)
+ .Add_bry_byte(Wdata_xtn_mgr.XTN_KEY , Tid_wikibase)
+ .Add_bry_byte(Pgbnr_xtn_mgr.Xtn_key_static , Tid_pgbnr)
;
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_get)) return Get_or_fail(m.ReadBry("v"));
diff --git a/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr.java
index 36e611f7f..1f2c3bf38 100644
--- a/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr.java
+++ b/400_xowa/src/gplx/xowa/xtns/cites/Ref_html_wtr.java
@@ -67,7 +67,7 @@ public class Ref_html_wtr {
}
public void Xnde_references(Xoh_html_wtr wtr, Xop_ctx ctx, Xoh_wtr_ctx opts, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) {
References_nde references = (References_nde)xnde.Xnde_xtn();
- Ref_itm_lst lst = ctx.Cur_page().Ref_mgr().Lst_get(references.Group(), references.List_idx()); // get group; EX:
+ Ref_itm_lst lst = ctx.Page().Ref_mgr().Lst_get(references.Group(), references.List_idx()); // get group; EX:
if (lst == null) return; // NOTE: possible to have a grouped references without references; EX: Infobox planet; in sidebar, but no refs
if (lst.Itms_len() == 0) return;
bfr.Add(cfg.Grp_bgn());
diff --git a/400_xowa/src/gplx/xowa/xtns/cites/Ref_nde.java b/400_xowa/src/gplx/xowa/xtns/cites/Ref_nde.java
index 7124c3b7a..a70e028cb 100644
--- a/400_xowa/src/gplx/xowa/xtns/cites/Ref_nde.java
+++ b/400_xowa/src/gplx/xowa/xtns/cites/Ref_nde.java
@@ -53,7 +53,7 @@ public class Ref_nde implements Xox_xnde, Mwh_atr_itm_owner {
nested = true; // refs nested in references don't show entry in
}
if (!ctx.Ref_ignore()) // sub_ctx may be marked to ignore [; EX: ,{{#lst}}; DATE:2014-04-24
- ctx.Cur_page().Ref_mgr().Grps_add(group, name, follow, this);
+ ctx.Page().Ref_mgr().Grps_add(group, name, follow, this);
this.xnde = xnde;
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
diff --git a/400_xowa/src/gplx/xowa/xtns/cites/References_nde.java b/400_xowa/src/gplx/xowa/xtns/cites/References_nde.java
index 99d5bd50f..0497f352d 100644
--- a/400_xowa/src/gplx/xowa/xtns/cites/References_nde.java
+++ b/400_xowa/src/gplx/xowa/xtns/cites/References_nde.java
@@ -31,7 +31,7 @@ public class References_nde implements Xox_xnde, Mwh_atr_itm_owner {
}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
if (ctx.Tid_is_popup()) return;
- Ref_itm_mgr ref_mgr = ctx.Cur_page().Ref_mgr();
+ Ref_itm_mgr ref_mgr = ctx.Page().Ref_mgr();
if (ref_mgr.References__recursing()) return; // skip nested else refs will be lost; EX:""; PAGE:en.w:Hwair; DATE:2014-06-27
ctx.Para().Process_block__bgn_n__end_y(Xop_xnde_tag_.Tag_div); // xnde generates ; -> ]; close any blocks; PAGE:fr.w:Heidi_(roman); DATE:2014-02-17
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);
diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java
index 6830a1241..4828be2ab 100644
--- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java
@@ -24,7 +24,7 @@ public class Dpl_xnde implements Xox_xnde {
private Dpl_itm itm = new Dpl_itm(); private List_adp pages = List_adp_.new_();
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} // NOTE: has no attributes
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
- itm.Parse(wiki, ctx, ctx.Cur_page().Ttl().Full_txt(), src, xnde);
+ itm.Parse(wiki, ctx, ctx.Page().Ttl().Full_txt(), src, xnde);
Dpl_page_finder.Find_pages(pages, wiki, itm);
if (itm.Sort_ascending() != Bool_.__byte)
pages.Sort_by(new Dpl_page_sorter(itm));
diff --git a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Flagged_revs_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Flagged_revs_xtn_mgr.java
new file mode 100644
index 000000000..3f1f98032
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Flagged_revs_xtn_mgr.java
@@ -0,0 +1,27 @@
+/*
+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 .
+*/
+package gplx.xowa.xtns.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
+import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.flaggedRevs.scribunto.*;
+public class Flagged_revs_xtn_mgr extends Xox_mgr_base {
+ @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("FlaggedRevs");
+ @Override public Xox_mgr Clone_new() {return new Flagged_revs_xtn_mgr();}
+ @Override public void Xtn_init_by_app(Xoae_app app) {
+ Scrib_xtn_mgr scrib_xtn = (Scrib_xtn_mgr)app.Xtn_mgr().Get_or_fail(Scrib_xtn_mgr.XTN_KEY);
+ scrib_xtn.Lib_mgr().Add(new Flagged_revs_lib());
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/scribunto/Flagged_revs_lib.java b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/scribunto/Flagged_revs_lib.java
new file mode 100644
index 000000000..3d2114618
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/scribunto/Flagged_revs_lib.java
@@ -0,0 +1,61 @@
+/*
+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 .
+*/
+package gplx.xowa.xtns.flaggedRevs.scribunto; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.flaggedRevs.*;
+import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.libs.*;
+import gplx.xowa.xtns.pfuncs.exprs.*;
+public class Flagged_revs_lib implements Scrib_lib {
+ private Scrib_core core;
+ public Scrib_lua_mod Mod() {return mod;} private Scrib_lua_mod mod;
+ public Scrib_lib Init() {procs.Init_by_lib(this, Proc_names); return this;}
+ public Scrib_lib Core_(Scrib_core v) {this.core = v; return this;} // TEST:
+ public Scrib_lua_mod Register(Scrib_core core, Io_url script_dir) {
+ this.core = core;
+ Init();
+ mod = core.RegisterInterface(this, core.App().Fsys_mgr().Bin_xtns_dir().GenSubFil_nest("FlaggedRevs", "scribunto", "mw.ext.FlaggedRevs.lua"));
+ return mod;
+ }
+ public Scrib_proc_mgr Procs() {return procs;} private final Scrib_proc_mgr procs = new Scrib_proc_mgr();
+ public boolean Procs_exec(int key, Scrib_proc_args args, Scrib_proc_rslt rslt) {
+ switch (key) {
+ case Proc_getStabilitySettings: return GetStabilitySettings(args, rslt);
+ default: throw Err_.new_unhandled(key);
+ }
+ }
+ private static final int Proc_getStabilitySettings = 0;
+ public static final String Invk_getStabilitySettings = "getStabilitySettings";
+ private static final String[] Proc_names = String_.Ary(Invk_getStabilitySettings);
+ public boolean GetStabilitySettings(Scrib_proc_args args, Scrib_proc_rslt rslt) {
+ byte[] page_name = args.Cast_bry_or_null(0);
+ Xoa_ttl page_ttl = null;
+ if (page_name == null)
+ page_ttl = core.Ctx().Page().Ttl();
+ else {
+ page_ttl = core.Wiki().Ttl_parse(page_name);
+ if (page_ttl == null) return rslt.Init_null();
+ }
+ // if ( !FlaggedRevs::inReviewNamespace( $title ) ) return rslt.Init_null();
+ return rslt.Init_obj(getDefaultVisibilitySettings());
+ }
+ private static KeyVal[] getDefaultVisibilitySettings() {
+ KeyVal[] rv = new KeyVal[3];
+ rv[0] = KeyVal_.new_("over"+"ride", 0); // FlaggedRevs::isStableShownByDefault() ? 1 : 0,
+ rv[1] = KeyVal_.new_("autoreview", "");
+ rv[2] = KeyVal_.new_("expiry", "infinity");
+ return rv;
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/scribunto/Flagged_revs_lib_tst.java b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/scribunto/Flagged_revs_lib_tst.java
new file mode 100644
index 000000000..2d802172e
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/scribunto/Flagged_revs_lib_tst.java
@@ -0,0 +1,37 @@
+/*
+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 .
+*/
+package gplx.xowa.xtns.flaggedRevs.scribunto; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.flaggedRevs.*;
+import org.junit.*;
+import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.libs.*; import gplx.xowa.xtns.scribunto.engines.mocks.*;
+public class Flagged_revs_lib_tst {
+ private final Mock_scrib_fxt fxt = new Mock_scrib_fxt(); private Flagged_revs_lib lib;
+ @Before public void init() {
+ fxt.Clear();
+ lib = new Flagged_revs_lib();
+ lib.Init();
+ lib.Core_(fxt.Core());
+ }
+ @Test public void GetStabilitySettings() {
+ fxt.Test__proc__objs__nest(lib, Flagged_revs_lib.Invk_getStabilitySettings, Object_.Ary("Page1"), String_.Concat_lines_nl_skip_last
+ ( "1="
+ , " over"+"ride=0"
+ , " autoreview="
+ , " expiry=infinity"
+ ));
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java
index e591ae148..0ad708dda 100644
--- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java
+++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java
@@ -50,7 +50,7 @@ public class Gallery_itm implements Js_img_wkr {
Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_k004(), tmp_bfr = wiki.Utl__bfr_mkr().Get_k004();
try {
xfer_itm.Init_at_gallery_end(html_w, html_h, html_view_url, html_orig_url);
- gallery_mgr.Write_html_itm(bfr, tmp_bfr, wiki.Appe(), wiki, ctx.Cur_page(), ctx, wiki.Html_mgr().Html_wtr(), Xoh_wtr_ctx.Basic, src, xnde, Bry_.Empty, gallery_itm_idx, xfer_itm, false);
+ gallery_mgr.Write_html_itm(bfr, tmp_bfr, wiki.Appe(), wiki, ctx.Page(), ctx, wiki.Html_mgr().Html_wtr(), Xoh_wtr_ctx.Basic, src, xnde, Bry_.Empty, gallery_itm_idx, xfer_itm, false);
String itm_html = bfr.To_str_and_clear();
js_wkr.Html_elem_replace_html(String_.new_u8(gallery_li_id_bry), itm_html);
if (gallery_itm_idx == xnde.Itms_len() - 1 && Gallery_mgr_base_.Mode_is_packed(xnde.Mode()))
diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java
index c62c4eda5..43f4aadab 100644
--- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java
+++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java
@@ -69,7 +69,7 @@ public class Gallery_itm_parser {
cur_itm.Lnki_tkn_(lnki_tkn);
if (cur_itm.Page_bgn() != -1) {
int page_val = Bry_.To_int_or(src, cur_itm.Page_bgn(), cur_itm.Page_end(), -1);
- if (page_val == -1) Xoa_app_.Usr_dlg().Warn_many("", "", "page is not an int: wiki=~{0} ttl=~{1} page=~{2}", wiki.Domain_str(), ctx.Cur_page().Ttl().Page_db(), String_.new_u8(src, cur_itm.Page_bgn(), cur_itm.Page_end()));
+ if (page_val == -1) Xoa_app_.Usr_dlg().Warn_many("", "", "page is not an int: wiki=~{0} ttl=~{1} page=~{2}", wiki.Domain_str(), ctx.Page().Ttl().Page_db(), String_.new_u8(src, cur_itm.Page_bgn(), cur_itm.Page_end()));
lnki_tkn.Page_(page_val);
}
byte[] lnki_caption = cur_itm.Caption_bry();
@@ -78,8 +78,8 @@ public class Gallery_itm_parser {
cur_itm.Caption_tkn_(caption_tkn);
}
Xopg_redlink_logger file_wkr = ctx.Lnki().File_wkr(); // NOTE: do not set file_wkr ref early (as member var); parse_all sets late
- ctx.Cur_page().Lnki_list().Add(lnki_tkn);
- mgr.Get_thumb_size(lnki_tkn, cur_itm.Ext()); // NOTE: set thumb size, so that lnki.temp parse picks it up
+ ctx.Page().Lnki_list().Add(lnki_tkn);
+ mgr.Get_thumb_size(lnki_tkn, cur_itm.Ext()); // NOTE: set thumb size, so that lnki.temp parse picks it up
if (file_wkr != null) file_wkr.Wkr_exec(ctx, src, lnki_tkn, gplx.xowa.bldrs.cmds.files.Xob_lnki_src_tid.Tid_gallery);
lnki_tkn.W_(-1).H_(-1); // NOTE: reset lnki back to defaults, else itm will show as large missing caption
}
diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java
index 4830f4167..830a60bac 100644
--- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java
@@ -63,11 +63,11 @@ public class Gallery_xnde implements Xox_xnde, Mwh_atr_itm_owner {
Xox_xnde_.Xatr__set(wiki, this, Gallery_xnde_atrs.Key_hash, src, xnde);
xtn_mgr = (Gallery_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Gallery_xtn_mgr.XTN_KEY);
Init_atrs(wiki);
- gallery_mgr.Get_modules(ctx.Cur_page());
+ gallery_mgr.Get_modules(ctx.Page());
Gallery_itm_parser parser = xtn_mgr.Parser();
if (parser.Parse_in_progress()) parser = new Gallery_itm_parser().Init_by_wiki(wiki); // handle nested galleries; EX: [; PAGE:es.w:Arquitectura_medieval DATE:2015-07-10
parser.Parse_all(itms, gallery_mgr, this, src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
- boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_gallery, src, xnde);
+ boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_gallery, src, xnde);
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end); // cancel pre for ; DATE:2014-03-11
} catch (Exception exc) {
wiki.Appe().Usr_dlg().Warn_many("", "", "failed to write gallery; src=~{0} err=~{1}", String_.new_u8(src, xnde.Src_bgn(), xnde.Src_end()), Err_.Message_gplx_full(exc));
@@ -77,9 +77,9 @@ public class Gallery_xnde implements Xox_xnde, Mwh_atr_itm_owner {
Xowe_wiki wiki = ctx.Wiki();
try {
if (html_wtr_v1)
- xtn_mgr.Html_wtr().Write_html(bfr, app, wiki, ctx, html_wtr, hctx, ctx.Cur_page(), this, src);
+ xtn_mgr.Html_wtr().Write_html(bfr, app, wiki, ctx, html_wtr, hctx, ctx.Page(), this, src);
else {
- gallery_mgr.Write_html(bfr, wiki, ctx.Cur_page(), ctx, hctx, src, this);
+ gallery_mgr.Write_html(bfr, wiki, ctx.Page(), ctx, hctx, src, this);
}
} catch (Exception exc) {
wiki.Appe().Usr_dlg().Warn_many("", "", "failed to write gallery; src=~{0} err=~{1}", String_.new_u8(src, xnde.Src_bgn(), xnde.Src_end()), Err_.Message_gplx_full(exc));
diff --git a/400_xowa/src/gplx/xowa/xtns/geoCrumbs/Geoc_isin_func.java b/400_xowa/src/gplx/xowa/xtns/geoCrumbs/Geoc_isin_func.java
index cdb675a17..841f15849 100644
--- a/400_xowa/src/gplx/xowa/xtns/geoCrumbs/Geoc_isin_func.java
+++ b/400_xowa/src/gplx/xowa/xtns/geoCrumbs/Geoc_isin_func.java
@@ -28,8 +28,8 @@ public class Geoc_isin_func extends Pf_func_base {
Xoa_ttl ttl = Xoa_ttl.parse(wiki, ttl_bry); if (ttl == null) return;
byte[] lnki_ttl = Bry_.Add(Xop_tkn_.Lnki_bgn, ttl_bry, Xop_tkn_.Lnki_end); // make "[[ttl]]"
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128();
- wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, ctx.Cur_page(), false, lnki_ttl);
- ctx.Cur_page().Html_data().Content_sub_(tmp_bfr.To_bry_and_rls());
+ wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, ctx.Page(), false, lnki_ttl);
+ ctx.Page().Html_data().Content_sub_(tmp_bfr.To_bry_and_rls());
}
public static final Geoc_isin_func Instance = new Geoc_isin_func();
}
diff --git a/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java b/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java
index 8f797b9e4..00ed3c449 100644
--- a/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java
@@ -22,8 +22,8 @@ public class Graph_xnde implements Xox_xnde {
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_bgn);
- ctx.Cur_page().Html_data().Head_mgr().Itm__graph().Enabled_y_();
- boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_graph, src, xnde);
+ ctx.Page().Html_data().Head_mgr().Itm__graph().Enabled_y_();
+ boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_graph, src, xnde);
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java
index 12fb4857f..41576f951 100644
--- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java
@@ -26,9 +26,9 @@ public class Hiero_xnde implements Xox_xnde {
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_bgn);
xtn_mgr = (Hiero_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Hiero_xtn_mgr.Xtn_key_static);
xtn_mgr.Xtn_init_assert(wiki);
- ctx.Cur_page().Html_data().Head_mgr().Itm__hiero().Enabled_y_();
+ ctx.Page().Html_data().Head_mgr().Itm__hiero().Enabled_y_();
blocks = xtn_mgr.Parser().Parse(src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
- boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_hiero, src, xnde);
+ boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_hiero, src, xnde);
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end);
switch (ctx.Cur_tkn_tid()) {
case Xop_tkn_itm_.Tid_list: // NOTE: if inside list, do not reenable para mode; questionable logic; PAGE:de.d:Damascus;DATE:2014-06-06
diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java
index 0669f45bb..6d1dae326 100644
--- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java
+++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java
@@ -41,8 +41,8 @@ class Imap_parser {
shapes.Clear(); pts.Clear(); errs.Clear();
}
public Imap_map Parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
- Imap_map rv = new Imap_map(ctx.Cur_page().Html_data().Xtn_imap_next_id());
- Init(wiki, ctx.Cur_page(), wiki.Appe().Usr_dlg());
+ Imap_map rv = new Imap_map(ctx.Page().Html_data().Xtn_imap_next_id());
+ Init(wiki, ctx.Page(), wiki.Appe().Usr_dlg());
this.Parse(rv, src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
return rv;
}
@@ -197,7 +197,7 @@ class Imap_parser {
Xop_lnki_tkn lnki_tkn = (Xop_lnki_tkn)tkn_itm;
imap_img = new Imap_itm_img(lnki_tkn);
lnki_tkn.Lnki_file_wkr_(imap);
- wiki_ctx.Cur_page().Lnki_list().Add(lnki_tkn);
+ wiki_ctx.Page().Lnki_list().Add(lnki_tkn);
if (file_wkr != null) file_wkr.Wkr_exec(wiki_ctx, src, lnki_tkn, gplx.xowa.bldrs.cmds.files.Xob_lnki_src_tid.Tid_imageMap);
}
return img_end;
diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java
index c947489f1..09b232923 100644
--- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java
@@ -24,13 +24,13 @@ public class Imap_xnde implements Xox_xnde {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
xtn_mgr = wiki.Xtn_mgr().Xtn_imap();
xtn_mgr.Xtn_assert();
- Xoae_page page = ctx.Cur_page();
+ Xoae_page page = ctx.Page();
page.Html_data().Head_mgr().Itm__popups().Bind_hover_area_(true);
page.Html_data().Xtn_imap_exists_y_();
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end);
imap_data = xtn_mgr.Parser().Parse(wiki, ctx, root, src, xnde);
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end);
- boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_imageMap, src, xnde);
+ boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_imageMap, src, xnde);
} public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null;
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
if (imap_data.Invalid()) return;
diff --git a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java
index 83f11a336..e5c399cdc 100644
--- a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java
@@ -50,7 +50,7 @@ class Indicator_html_bldr_fxt {
this.xtn_mgr = wiki.Xtn_mgr().Xtn_indicator();
xtn_mgr.Enabled_y_();
xtn_mgr.Xtn_init_by_wiki(wiki);
- this.page = wiki.Parser_mgr().Ctx().Cur_page();
+ this.page = wiki.Parser_mgr().Ctx().Page();
}
public void Init_indicator(String name, String html) {
Indicator_xnde xnde = new Indicator_xnde();
diff --git a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java
index bbadadc30..4269a51cb 100644
--- a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java
@@ -31,8 +31,8 @@ public class Indicator_xnde implements Xox_xnde, Mwh_atr_itm_owner {
}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);
- this.html = Xop_parser_.Parse_text_to_html(wiki, ctx.Cur_page(), ctx.Cur_page().Ttl(), Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()), false);
- Indicator_html_bldr html_bldr = ctx.Cur_page().Html_data().Indicators();
+ this.html = Xop_parser_.Parse_text_to_html(wiki, ctx.Page(), ctx.Page().Ttl(), Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()), false);
+ Indicator_html_bldr html_bldr = ctx.Page().Html_data().Indicators();
if (this.name != null) html_bldr.Add(this); // NOTE: must do null-check b/c Add will use Name as key for hashtable
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
diff --git a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_func.java b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_func.java
index b74fbf908..771271163 100644
--- a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_func.java
+++ b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_func.java
@@ -24,7 +24,7 @@ public class Insider_func extends Pf_func_base {
@Override public Pf_func New(int id, byte[] name) {return new Insider_func().Name_(name);}
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
byte[] val = Eval_argx(ctx, src, caller, self);
- Xopg_xtn_skin_mgr skin_mgr = ctx.Cur_page().Html_data().Xtn_skin_mgr();
+ Xopg_xtn_skin_mgr skin_mgr = ctx.Page().Html_data().Xtn_skin_mgr();
Insider_xtn_skin_itm skin_itm = (Insider_xtn_skin_itm)skin_mgr.Get_or_null(Insider_xtn_skin_itm.KEY);
if (skin_itm == null) {
skin_itm = new Insider_xtn_skin_itm(ctx.Wiki().Xtn_mgr().Xtn_insider().Html_bldr());
diff --git a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr_tst.java b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr_tst.java
index 4c89cf1e3..92636fb72 100644
--- a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr_tst.java
@@ -47,7 +47,7 @@ class Insider_html_bldr_fxt {
this.xtn_mgr = wiki.Xtn_mgr().Xtn_insider();
xtn_mgr.Enabled_y_();
xtn_mgr.Xtn_init_by_wiki(wiki);
- this.page = wiki.Parser_mgr().Ctx().Cur_page();
+ this.page = wiki.Parser_mgr().Ctx().Page();
skin_itm = new Insider_xtn_skin_itm(xtn_mgr.Html_bldr());
page.Html_data().Xtn_skin_mgr().Add(skin_itm);
}
diff --git a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java
index 6b76c92d8..213efa9ff 100644
--- a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java
+++ b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java
@@ -40,7 +40,7 @@ public class Lst_pfunc_wkr {
sub_ctx = Xop_ctx.new_sub_(wiki).Ref_ignore_(true);
byte[] src_page_bry = wiki.Cache_mgr().Page_cache().Get_or_load_as_src(src_ttl);
if (src_page_bry == null) return; // {{#lst:missing}} -> ""
- Xoae_page page = ctx.Cur_page();
+ Xoae_page page = ctx.Page();
if (!page.Tmpl_stack_add(src_ttl.Full_db())) return;
defn_tmpl = wiki.Parser_mgr().Main().Parse_text_to_defn_obj(sub_ctx, sub_ctx.Tkn_mkr(), src_ttl.Ns(), src_ttl_bry, src_page_bry); // NOTE: parse as tmpl to ignore
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();
diff --git a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java
index ef4d90965..869e6de4d 100644
--- a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java
+++ b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java
@@ -44,7 +44,7 @@ class Map_math {// REF.MW:MapSources_math.php
return error == 0;
}
public void Fail(Xop_ctx ctx, byte[] src, Xot_invk self, Bry_bfr bfr, byte[] pfunc_name) {
- String page_str = ctx.Cur_page().Url().To_str();
+ String page_str = ctx.Page().Url().To_str();
String pfunc_name_str = String_.new_u8(pfunc_name);
String self_str = String_.new_u8(src, self.Src_bgn(), self.Src_end());
switch (error) {
diff --git a/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java b/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java
index 561eda7bc..14b3779e3 100644
--- a/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java
+++ b/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java
@@ -23,9 +23,9 @@ public class Math_nde implements Xox_xnde {
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
Xof_math_mgr math_mgr = wiki.Appe().File_mgr().Math_mgr();
- boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_math, src, xnde);
+ boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_math, src, xnde);
if (math_mgr.Enabled() && math_mgr.Renderer_is_mathjax())
- ctx.Cur_page().Html_data().Head_mgr().Itm__mathjax().Enabled_y_();
+ ctx.Page().Html_data().Head_mgr().Itm__mathjax().Enabled_y_();
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
app.File_mgr().Math_mgr().Html_wtr().Write(html_wtr, ctx, hctx, bfr, src, xnde);
diff --git a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java
index 84bcd9ba7..5b5729ac0 100644
--- a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java
+++ b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java
@@ -24,7 +24,7 @@ public class Xof_math_html_wtr {
private Bry_fmtr math_fmtr_latex = Bry_fmtr.new_("]
~{math_text}", "math_idx", "math_text");
private Bry_fmtr math_fmtr_mathjax = Bry_fmtr.new_("~{math_text}", "math_idx", "math_text");
public void Write(Xoh_html_wtr wtr, Xop_ctx ctx, Xoh_wtr_ctx opts, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) {
- Xoae_app app = ctx.App(); Xowe_wiki wiki = ctx.Wiki(); Xoae_page page = ctx.Cur_page();
+ Xoae_app app = ctx.App(); Xowe_wiki wiki = ctx.Wiki(); Xoae_page page = ctx.Page();
boolean renderer_is_latex = !app.File_mgr().Math_mgr().Renderer_is_mathjax();
byte[] math_bry = Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
Bry_bfr tmp_bfr = app.Utl__bfr_mkr().Get_b512().Mkr_rls();
diff --git a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_cfg.java b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_cfg.java
index 3684568be..0ef92e7e7 100644
--- a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_cfg.java
+++ b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_cfg.java
@@ -16,135 +16,16 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.xtns.pagebanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
-import gplx.xowa.parsers.*;
-class Pgbnr_cfg {
+public class Pgbnr_cfg {
+ private static final int[] wpb_standard_sizes = new int[] {640, 1280, 2560};
public byte[] Default_file() {return null;}
public boolean Enabled_in_ns(int ns_id) {return false;}
-}
-class Pgbnr_icon {
- public byte[] Name;
- public byte[] Title;
- public byte[] Url;
- public Pgbnr_icon(byte[] name, byte[] title, byte[] url) {
- this.Name = name; this.Title = title; this.Url = url;
+ public boolean Get__wpb_enable_default_banner() {return false;}
+ public boolean Get__wpb_enable_heading_override() {return false;}
+ public byte[] Get__wpb_image() {return null;}
+ public int[] Get__wpb_standard_sizes() {return wpb_standard_sizes;}
+ public boolean Chk_pgbnr_allowed(Xoa_ttl ttl, Xowe_wiki wiki) {
+ return this.Enabled_in_ns(ttl.Ns().Id()) // chk if ns allows banner
+ && !Bry_.Eq(ttl.Page_db(), wiki.Props().Main_page()); // never show on main page
}
- public static final Pgbnr_icon[] Ary_empty = new Pgbnr_icon[0];
-}
-class Pgbnr_itm {
- public byte[] Name;
- public byte[] Tooltip;
- public byte[] Title;
- public boolean Bottomtoc;
- public boolean Toc;
- public Xoa_ttl File_ttl;
- public Pgbnr_icon[] Icons;
- public Pgbnr_itm(byte[] name, byte[] tooltip, byte[] title, boolean bottomtoc, boolean toc, Xoa_ttl file_ttl, Pgbnr_icon[] icons) {
- this.Name = name;
- this.Tooltip = tooltip; this.Title = title; this.Bottomtoc = bottomtoc; this.Toc = toc; this.File_ttl = file_ttl; this.Icons = icons;
- }
-// public static void Do(Bry_bfr bfr, Xop_ctx ctx, Pgbnr_cfg cfg, Pgbnr_itm itm) {
-// if (itm != null) {
-// byte[] name = itm.Name;
-//// if ( isset( $params['icons'] ) ){
-//// $out->enableOOUI();
-//// $params['icons'] = self::expandIconTemplateOptions( $params['icons'] );
-//// }
-// // $banner = $wpbFunctionsClass::getBannerHtml( $bannername, $params );
-// }
-// else {}
-// }
- public static void Get_banner_html(Bry_bfr bfr, byte[] banner_name, Pgbnr_itm itm, Pgbnr_cfg cfg) {
- byte[][] urls = Bry_.Ary(Bry_.Empty); // $urls = static::getStandardSizeUrls( $bannername );
- if (urls.length == 0) return;
- }
-// public static function getBannerHtml( $bannername, $options = array() ) {
-// // @var int index variable
-// $i = 0;
-// foreach ( $urls as $url ) {
-// $size = $config->get( 'WPBStandardSizes' );
-// $size = $size[$i];
-// // add url with width and a comma if not adding the last url
-// if ( $i < count( $urls ) ) {
-// $srcset[] = "$url {$size}w";
-// }
-// $i++;
-// }
-// // create full src set from individual urls, separated by comma
-// $srcset = implode( ',', $srcset );
-// // use largest image url as src attribute
-// $bannerurl = $urls[count( $urls ) - 1];
-// $bannerfile = Title::newFromText( "File:$bannername" );
-// $templateParser = new TemplateParser( __DIR__ . '/../templates' );
-// $options['bannerfile'] = $bannerfile->getLocalUrl();
-// $options['banner'] = $bannerurl;
-// $options['srcset'] = $srcset;
-// $file = wfFindFile( $bannerfile );
-// $options['maxWidth'] = $file->getWidth();
-// $options['isHeadingOverrideEnabled'] = $config->get( 'WPBEnableHeadingOverride' );
-// $banner = $templateParser->processTemplate(
-// 'banner',
-// $options
-// );
-// }
-
-// public static function addBanner( OutputPage $out, Skin $skin ) {
-// $config = WikidataPageBannerFunctions::getWPBConfig();
-// $title = $out->getTitle();
-// $isDiff = $out->getRequest()->getVal( 'diff' );
-// $wpbFunctionsClass = self::$wpbFunctionsClass;
-//
-// // if banner-options are set and not a diff page, add banner anyway
-// if ( $out->getProperty( 'wpb-banner-options' ) !== null && !$isDiff ) {
-// $params = $out->getProperty( 'wpb-banner-options' );
-// $bannername = $params['name'];
-// $banner = $wpbFunctionsClass::getBannerHtml( $bannername, $params );
-// // attempt to get WikidataBanner
-// if ( $banner === null ) {
-// $bannername = $wpbFunctionsClass::getWikidataBanner( $title );
-// $banner = $wpbFunctionsClass::getBannerHtml( $bannername, $params );
-// }
-// // only add banner and styling if valid banner generated
-// if ( $banner !== null ) {
-// if ( isset( $params['toc'] ) ) {
-// $out->addModuleStyles( 'ext.WikidataPageBanner.toc.styles' );
-// }
-// $wpbFunctionsClass::insertBannerIntoOutputPage( $out, $banner );
-//
-// // FIXME: This is currently only needed to support testing
-// $out->setProperty( 'articlebanner-name', $bannername );
-// }
-// }
-// // if the page uses no 'PAGEBANNER' invocation and if article page, insert default banner
-// elseif (
-// $title->isKnown() &&
-// $out->isArticle() &&
-// $config->get( 'WPBEnableDefaultBanner' ) &&
-// !$isDiff
-// ) {
-// $ns = $title->getNamespace();
-// // banner only on specified namespaces, and not Main Page of wiki
-// if ( in_array( $ns, $config->get( 'WPBNamespaces' ) )
-// && !$title->isMainPage() ) {
-// // first try to obtain bannername from Wikidata
-// $bannername = $wpbFunctionsClass::getWikidataBanner( $title );
-// if ( $bannername === null ) {
-// // if Wikidata banner not found, set bannername to default banner
-// $bannername = $config->get( 'WPBImage' );
-// }
-// // add title to template parameters
-// $paramsForBannerTemplate = array( 'title' => $title );
-// $banner = $wpbFunctionsClass::
-// getBannerHtml( $bannername, $paramsForBannerTemplate );
-// // only add banner and styling if valid banner generated
-// if ( $banner !== null ) {
-// $wpbFunctionsClass::insertBannerIntoOutputPage( $out, $banner );
-//
-// // set articlebanner property on OutputPage
-// // FIXME: This is currently only needed to support testing
-// $out->setProperty( 'articlebanner-name', $bannername );
-// }
-// }
-// }
-// return true;
-// }
}
diff --git a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_func.java b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_func.java
index ed40cccb2..3e9e47564 100644
--- a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_func.java
+++ b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_func.java
@@ -16,25 +16,24 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.xtns.pagebanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.langs.mustaches.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.utils.*;
public class Pgbnr_func extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_pagebanner;}
@Override public Pf_func New(int id, byte[] name) {return new Pgbnr_func().Name_(name);}
- @Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) { // WikidataPageBanner.hooks.php|addCustomBanner
+ @Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) { // {{PAGEBANNER}} appears on page; WikidataPageBanner.hooks.php|addCustomBanner
Xowe_wiki wiki = ctx.Wiki();
- Pgbnr_cfg cfg = new Pgbnr_cfg(); // ctx.Wiki().Xtn_mgr().Xtn_pgbnr();
- Xoa_ttl ttl = ctx.Cur_page().Ttl();
- if ( !cfg.Enabled_in_ns(ttl.Ns().Id()) // chk if ns allows banner
- || Bry_.Eq(ttl.Page_db(), wiki.Props().Main_page())) // never show on main page
- return;
- Bry_bfr tmp_bfr = Bry_bfr.new_();
- boolean bottomtoc = false, toc = false;
- byte[] tooltip = ttl.Page_txt();
- byte[] title = ttl.Page_txt();
- int args_len = self.Args_len();
+ Pgbnr_xtn_mgr xtn_mgr = wiki.Xtn_mgr().Xtn_pgbnr();
+ Pgbnr_cfg cfg = xtn_mgr.Cfg();
+ Xoa_ttl ttl = ctx.Page().Ttl();
+ if (!cfg.Chk_pgbnr_allowed(ttl, wiki)) return;
+ byte[] tooltip = ttl.Page_txt(), title = ttl.Page_txt(), toc = Bry_.Empty, origin_x = Bry_.Empty;
+ boolean bottomtoc = false;;
+ double data_pos_x = 0, data_pos_y = 0;
List_adp icons_list = null;
+ Bry_bfr tmp_bfr = Bry_bfr.new_();
+ int args_len = self.Args_len();
for (int i = 0; i < args_len; ++i) {
Arg_nde_tkn arg = self.Args_get_by_idx(i);
byte[] key = Pf_func_.Eval_tkn(tmp_bfr, ctx, src, caller, arg.Key_tkn());
@@ -46,34 +45,141 @@ public class Pgbnr_func extends Pf_func_base {
tooltip = val;
if (tid == Arg__bottomtoc && Bry_.Eq(val, Bry__yes))
bottomtoc = true;
- if (tid == Arg__toc && Bry_.Eq(val, Bry__yes))
- toc = true;
- if (tid == -1 && Bry_.Has_at_bgn(key, Bry__icon) && Bry_.Len_gt_0(val)) {
+ if (tid == Arg__toc && Bry_.Eq(val, Bry__yes)) // REF.MW:addToc
+ toc = Bry_.Empty; // note that "" will be overwritten later by actual toc html
+ if ( tid == -1 // handle "icon-*";
+ && Bry_.Has_at_bgn(key, Bry__icon) // if (substr($key, 0, 5) === 'icon-')
+ && Bry_.Len(Bry__icon) > 5 // if ( !isset( $iconname) )
+ && Bry_.Len_gt_0(val) // if ( !isset( $$value ) )
+ ) { // REF.MW:addIcons
+ tid = Arg__icon;
if (icons_list == null) icons_list = List_adp_.new_();
- byte[] icon_name = Xop_sanitizer.Escape_cls(val);
+ byte[] icon_key = Bry_.Mid(key, 5);
+ byte[] icon_name = Xop_sanitizer.Escape_cls(icon_key);
byte[] icon_title = icon_name;
Xoa_ttl icon_url_ttl = wiki.Ttl_parse(val);
+// TODO: get icon_url
byte[] icon_url_bry = Bry_.Empty;
- if (icon_url_ttl == null) icon_url_bry = Bry__url_dflt;
+ if (icon_url_ttl == null)
+ icon_url_bry = Bry__url_dflt; // $iconUrl = Title::newFromText( $value ); if ( $iconUrl )
else {
- icon_url_bry = Bry_.Empty;// $iconUrl->getLocalUrl();
+ icon_url_bry = Bry_.Empty; // $iconUrl->getLocalUrl();
icon_title = ttl.Page_txt();
}
icons_list.Add(new Pgbnr_icon(icon_name, icon_title, icon_url_bry));
- tid = Arg__icon;
}
- if (tid == -1) Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown arg type; page=~{0} key=~{1} val=~{2}", "page", ctx.Cur_page().Url_bry_safe(), key, val);
- // WikidataPageBannerFunctions::addFocus( $paramsForBannerTemplate, $argumentsFromParserFunction );
+ if (tid == Arg__origin) { // REF.MW:addFocus
+ double tmp_data_pos_x = Double_.NaN, tmp_data_pos_y = Double_.NaN;
+ int comma_pos = Bry_find_.Find_fwd(val, Byte_ascii.Comma);
+ if (comma_pos != Bry_find_.Not_found) {
+ tmp_data_pos_x = Bry_.To_double_or(val, 0, comma_pos, Double_.NaN);
+ if (!Double_.IsNaN(tmp_data_pos_x)) {
+ if (tmp_data_pos_x >= -1 && tmp_data_pos_x <= 1) {
+ data_pos_x = tmp_data_pos_x;
+ origin_x = tmp_data_pos_x <= .25d ? Bry__origin_x__left : Bry__origin_x__right;
+ }
+ }
+ if (!Double_.IsNaN(tmp_data_pos_y)) {
+ if (tmp_data_pos_y >= -1 && tmp_data_pos_y <= 1)
+ data_pos_y = tmp_data_pos_y;
+ }
+ }
+ }
+ if (tid == -1) Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown arg type; page=~{0} key=~{1} val=~{2}", "page", ctx.Page().Url_bry_safe(), key, val);
}
byte[] name = Eval_argx(ctx, src, caller, self);
- if (Bry_.Len_eq_0(name))
- name = cfg.Default_file();
- Xoa_ttl file_ttl = wiki.Ttl_parse(name);
- Pgbnr_itm itm = new Pgbnr_itm(name, tooltip, title, bottomtoc, toc, file_ttl, icons_list == null ? Pgbnr_icon.Ary_empty : (Pgbnr_icon[])icons_list.To_ary_and_clear(Pgbnr_icon.class));
- Tfds.Write(itm);
+ // Xoa_ttl file_ttl = wiki.Ttl_parse(name); SKIP?: MW creates title to auto-register page and image in imagelinks
+ Pgbnr_itm itm = new Pgbnr_itm();
+ ctx.Page().Html_data().Xtn__pgbnr_(itm);
+ itm.Init_from_wtxt(name, tooltip, title, bottomtoc, toc, data_pos_x, data_pos_y, origin_x, icons_list == null ? Pgbnr_icon.Ary_empty : (Pgbnr_icon[])icons_list.To_ary_and_clear(Pgbnr_icon.class));
}
- private static final byte[] Bry__yes = Bry_.new_a7("yes"), Bry__icon = Bry_.new_a7("icon-"), Bry__url_dflt = Bry_.new_a7("#");
- private static final int Arg__pgname = 0, Arg__tooltip = 1, Arg__bottomtoc = 2, Arg__toc = 3, Arg__icon = 4;
+ public static void Add_banner(Bry_bfr bfr, Xop_ctx ctx) {
+ Xowe_wiki wiki = ctx.Wiki();
+ Pgbnr_cfg cfg = wiki.Xtn_mgr().Xtn_pgbnr().Cfg();
+ Xoa_ttl ttl = ctx.Page().Ttl();
+ Pgbnr_itm itm = ctx.Page().Html_data().Xtn__pgbnr();
+ byte[] banner_name = null, banner_html = null;
+ if (itm != null) { // {{PAGEBANNER}} exists in wikitext
+ banner_name = itm.name;
+ banner_html = Get_banner_html(wiki, cfg, banner_name, itm);
+ if (banner_html == null) { // no banner; try again using title from wikidata;
+ banner_name = Get_wikidata_banner(ttl);
+ banner_html = Get_banner_html(wiki, cfg, banner_name, itm);
+ }
+ if (banner_html != null) { // only add banner and styling if valid banner generated
+ if (itm.toc != null) {
+ // $out->addModuleStyles( 'ext.WikidataPageBanner.toc.styles' );
+ }
+ bfr.Add(banner_html);
+ }
+ }
+ else if ( ttl.Ns().Id_is_main() // if the page uses no 'PAGEBANNER' invocation and if article page, insert default banner
+ && cfg.Get__wpb_enable_default_banner()
+ ) {
+ if (cfg.Chk_pgbnr_allowed(ttl, wiki)) {
+ banner_name = Get_wikidata_banner(ttl);
+ if (banner_name == null) {
+ banner_name = cfg.Get__wpb_image();
+ }
+ itm = new Pgbnr_itm();
+ itm.name = banner_name;
+ banner_html = Get_banner_html(wiki, cfg, banner_name, itm);
+ if (banner_html != null) { // NOTE: same as above
+ bfr.Add(banner_html);
+ }
+ }
+ }
+ }
+ public static byte[] Get_banner_html(Xowe_wiki wiki, Pgbnr_cfg cfg, byte[] banner_name, Pgbnr_itm itm) {
+ byte[][] urls = Get_standard_size_urls(wiki, cfg, banner_name);
+ if (urls == null) return null;
+ Bry_bfr tmp_bfr = Bry_bfr.new_();
+ int urls_len = urls.length;
+ int[] sizes = cfg.Get__wpb_standard_sizes();
+ for (int i = 0; i < urls_len; ++i) {
+ int size = sizes[i];
+ if (i != 0) tmp_bfr.Add_byte_comma();
+ tmp_bfr.Add(urls[i]).Add_byte_space().Add_int_variable(size).Add_byte(Byte_ascii.Ltr_w); // $srcset[] = "$url {$size}w";
+ }
+ byte[] srcset = tmp_bfr.To_bry_and_clear();
+ byte[] banner_url = urls.length == 0 ? Bry_.Empty : urls[urls_len - 1]; // gets largest url
+ // Xoa_ttl banner_file = wiki.Ttl_parse(tmp_bfr.Add(wiki.Ns_mgr().Ns_file().Name_db_w_colon()).Add(banner_name).To_bry_and_clear());
+ int maxWidth = 1; // $file = wfFindFile( banner_file ); $options['maxWidth'] = $file->getWidth();
+ byte[] banner_file = null; // $bannerfile->getLocalUrl();
+ itm.Init_from_html(maxWidth, banner_file, banner_url, srcset, cfg.Get__wpb_enable_heading_override());
+
+ Mustache_render_ctx mctx = new Mustache_render_ctx().Init(itm);
+ wiki.Xtn_mgr().Xtn_pgbnr().Template_root().Render(tmp_bfr, mctx);
+ return tmp_bfr.To_bry_and_clear();
+ }
+ private static byte[][] Get_standard_size_urls(Xow_wiki wiki, Pgbnr_cfg cfg, byte[] file_name) {
+ Ordered_hash hash = Ordered_hash_.New_bry();
+ int[] sizes = cfg.Get__wpb_standard_sizes();
+ int sizes_len = sizes.length;
+ for (int i = 0; i < sizes_len; ++i) {
+ byte[] url = Get_image_url(wiki, file_name, sizes[i]);
+ if (url != null)
+ hash.Add_if_dupe_use_1st(url, url);
+ }
+ return (byte[][])hash.To_ary_and_clear(byte[].class);
+ }
+ private static byte[] Get_image_url(Xow_wiki wiki, byte[] file_name, int width) {
+ // Xoa_ttl file_ttl = wiki.Ttl_parse(file_name);
+ // Object file = new Object(); // $file = wfFindFile( file_ttl );
+ // if (file == null) return null;
+ if (width >= 0 && width <= 3000) {
+ // $mto = $file->transform( array( 'width' => $imagewidth ) );
+ byte[] url = new byte[0]; // $url = wfExpandUrl( $mto->getUrl(), PROTO_CURRENT );
+ return url;
+ }
+ else
+ return new byte[0]; // $file->getFullUrl();
+ }
+ private static byte[] Get_wikidata_banner(Xoa_ttl ttl) {
+ return null;
+ }
+ private static final byte[] Bry__yes = Bry_.new_a7("yes"), Bry__icon = Bry_.new_a7("icon-"), Bry__url_dflt = Bry_.new_a7("#"), Bry__origin_x__left = Bry_.new_a7("wpb-left"), Bry__origin_x__right = Bry_.new_a7("wpb-right");
+ private static final int Arg__pgname = 0, Arg__tooltip = 1, Arg__bottomtoc = 2, Arg__toc = 3, Arg__icon = 4, Arg__origin = 5;
private static final Hash_adp_bry arg_hash = Hash_adp_bry.cs().Add_str_int("pgname", Arg__pgname)
- .Add_str_int("tooltip", Arg__tooltip).Add_str_int("bottomtoc", Arg__bottomtoc).Add_str_int("toc", Arg__toc);
+ .Add_str_int("tooltip", Arg__tooltip).Add_str_int("bottomtoc", Arg__bottomtoc).Add_str_int("toc", Arg__toc).Add_str_int("origin", Arg__origin);
}
diff --git a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_func_tst.java b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_func_tst.java
index 7b2d5b3fd..62e65f606 100644
--- a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_func_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_func_tst.java
@@ -16,10 +16,28 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.xtns.pagebanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
-import org.junit.*; import gplx.xowa.wikis.pages.skins.*;
+import org.junit.*; import gplx.core.brys.*; import gplx.xowa.wikis.pages.skins.*;
public class Pgbnr_func_tst {
- @Before public void init() {fxt.Reset();} private final Xop_fxt fxt = new Xop_fxt();
- @Test public void Basic() {
- fxt.Test_html_full_str("{{PAGEBANNER}}", "");
+// private final Pgbnr_func_fxt fxt = new Pgbnr_func_fxt();
+ @Test public void Basic() {
+// fxt.Test__parse__eq("{{PAGEBANNER:A.png}}", String_.Concat_lines_nl_apos_skip_last
+// ( ""
+// , "
"
+// , "
Test page
"
+// , "
![]()
"
+// , "
"
+// , "
"
+// , "
"
+// ));
+ }
+}
+class Pgbnr_func_fxt {
+ private final Xop_fxt fxt = new Xop_fxt();
+ public void Test__parse__eq(String raw, String expd) {
+ fxt.Exec_parse_page_all_as_str("{{PAGEBANNER:A.png}}");
+ Bfr_arg arg = fxt.Wiki().Xtn_mgr().Xtn_pgbnr().Write_html(fxt.Ctx(), fxt.Page());
+ Bry_bfr bfr = Bry_bfr.new_();
+ arg.Bfr_arg__add(bfr);
+ Tfds.Eq_str_lines(expd, bfr.To_str_and_clear());
}
}
diff --git a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_icon.java b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_icon.java
new file mode 100644
index 000000000..b381e66f9
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_icon.java
@@ -0,0 +1,34 @@
+/*
+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 .
+*/
+package gplx.xowa.xtns.pagebanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
+import gplx.langs.mustaches.*;
+public class Pgbnr_icon implements Mustache_doc_itm {
+ public byte[] name;
+ public byte[] title;
+ public byte[] url;
+ public Pgbnr_icon(byte[] name, byte[] title, byte[] url) {this.name = name; this.title = title; this.url = url;}
+ public byte[] Get_prop(String key) {
+ if (String_.Eq(key, "name")) return name;
+ else if (String_.Eq(key, "title")) return title;
+ else if (String_.Eq(key, "url")) return url;
+ else if (String_.Eq(key, "html")) return Mustache_doc_itm_.Null_val;
+ return Mustache_doc_itm_.Null_val;
+ }
+ public Mustache_doc_itm[] Get_subs(String key) {return Mustache_doc_itm_.Ary__empty;}
+ public static final Pgbnr_icon[] Ary_empty = new Pgbnr_icon[0];
+}
diff --git a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_itm.java b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_itm.java
new file mode 100644
index 000000000..68191157b
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_itm.java
@@ -0,0 +1,59 @@
+/*
+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 .
+*/
+package gplx.xowa.xtns.pagebanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
+import gplx.langs.mustaches.*;
+public class Pgbnr_itm implements Mustache_doc_itm {
+ public byte[] name, toc;
+ private byte[] tooltip, title, originx, bannerfile, banner, srcset;
+ private double data_pos_x, data_pos_y;
+ private int maxWidth;
+ private boolean bottomtoc, isHeadingOverrideEnabled;
+ private Pgbnr_icon[] icons;
+ public void Init_from_wtxt(byte[] name, byte[] tooltip, byte[] title, boolean bottomtoc, byte[] toc, double data_pos_x, double data_pos_y, byte[] originx, Pgbnr_icon[] icons) {
+ this.name = name;
+ this.tooltip = tooltip; this.title = title; this.bottomtoc = bottomtoc; this.toc = toc; this.icons = icons;
+ this.data_pos_x = data_pos_x; this.data_pos_y = data_pos_y; this.originx = originx;
+ }
+ public void Init_from_html(int maxWidth, byte[] bannerfile, byte[] banner, byte[] srcset, boolean isHeadingOverrideEnabled) {
+ this.maxWidth = maxWidth;
+ this.bannerfile = bannerfile;
+ this.banner = banner;
+ this.srcset = srcset;
+ this.isHeadingOverrideEnabled = isHeadingOverrideEnabled;
+ }
+ public byte[] Get_prop(String key) {
+ if (String_.Eq(key, "title")) return title;
+ else if (String_.Eq(key, "tooltip")) return tooltip;
+ else if (String_.Eq(key, "bannerfile")) return bannerfile;
+ else if (String_.Eq(key, "banner")) return banner;
+ else if (String_.Eq(key, "srcset")) return srcset;
+ else if (String_.Eq(key, "originx")) return originx;
+ else if (String_.Eq(key, "data-pos-x")) return Bry_.new_a7(Double_.To_str(data_pos_x));
+ else if (String_.Eq(key, "data-pos-y")) return Bry_.new_a7(Double_.To_str(data_pos_y));
+ else if (String_.Eq(key, "maxWidth")) return Int_.To_bry(maxWidth);
+ else if (String_.Eq(key, "toc")) return toc;
+ return Mustache_doc_itm_.Null_val;
+ }
+ public Mustache_doc_itm[] Get_subs(String key) {
+ if (String_.Eq(key, "icons")) return icons;
+ else if (String_.Eq(key, "hasIcons")) return Mustache_doc_itm_.Ary__bool(icons.length > 0);
+ else if (String_.Eq(key, "bottomtoc")) return Mustache_doc_itm_.Ary__bool(bottomtoc);
+ else if (String_.Eq(key, "isHeadingOverrideEnabled")) return Mustache_doc_itm_.Ary__bool(isHeadingOverrideEnabled);
+ return Mustache_doc_itm_.Ary__empty;
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java
new file mode 100644
index 000000000..9889126d0
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java
@@ -0,0 +1,58 @@
+/*
+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 .
+*/
+package gplx.xowa.xtns.pagebanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
+import gplx.core.brys.*; import gplx.langs.mustaches.*; import gplx.xowa.parsers.*;
+public class Pgbnr_xtn_mgr extends Xox_mgr_base implements Bfr_arg {
+ @Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("pagebanner");
+ @Override public Xox_mgr Clone_new() {return new Pgbnr_xtn_mgr();}
+ public Pgbnr_cfg Cfg() {return cfg;} private final Pgbnr_cfg cfg = new Pgbnr_cfg();
+ public Mustache_tkn_itm Template_root() {
+ if (template_root == null) {
+ Mustache_tkn_parser parser = new Mustache_tkn_parser();
+ template_root = parser.Parse(Template_dflt, 0, Template_dflt.length);
+ }
+ return template_root;
+ } private Mustache_tkn_itm template_root;
+ @Override public void Xtn_init_by_app(Xoae_app app) {
+ }
+ public Bfr_arg Write_html(Xop_ctx pctx, Xoae_page page) {
+ this.pctx = pctx; this.page = page;
+ return this;
+ } private Xop_ctx pctx; private Xoae_page page;
+ public void Bfr_arg__add(Bry_bfr bfr) {
+ Pgbnr_itm itm = page.Html_data().Xtn__pgbnr();
+ if (itm == null) return;
+ Pgbnr_func.Add_banner(bfr, pctx);
+ }
+ private static final byte[] Template_dflt = Bry_.New_u8_nl_apos
+ ( ""
+ , "
"
+ , " {{#isHeadingOverrideEnabled}}
{{title}}
{{/isHeadingOverrideEnabled}}"
+ , "

"
+ , " {{#hasIcons}}"
+ , "
"
+ , " {{#icons}}"
+ , "
{{{html}}}"
+ , " {{/icons}}"
+ , "
"
+ , " {{/hasIcons}}"
+ , "
"
+ , "
"
+ , "
"
+ );
+}
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java
index efe336db8..4f2f99037 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java
@@ -239,6 +239,7 @@ public class Pf_func_ {
, Xol_kwd_grp_.Id_bang
, Xol_kwd_grp_.Id_rev_revisionsize
, Xol_kwd_grp_.Id_pagebanner
+ , Xol_kwd_grp_.Id_rev_protectionexpiry
};
public static Xot_defn Get_prototype(int id) {
switch (id) {
@@ -323,6 +324,7 @@ public class Pf_func_ {
case Xol_kwd_grp_.Id_rev_pagesize:
case Xol_kwd_grp_.Id_rev_revisionsize:
case Xol_kwd_grp_.Id_rev_user:
+ case Xol_kwd_grp_.Id_rev_protectionexpiry:
case Xol_kwd_grp_.Id_rev_protectionlevel: return Pfunc_rev_props.Instance;
case Xol_kwd_grp_.Id_page_displaytitle: return Pfunc_displaytitle.Instance;
case Xol_kwd_grp_.Id_page_defaultsort: return Pfunc_defaultsort.Instance;
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_gender.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_gender.java
index fbe0369bd..4bf15116b 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_gender.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_gender.java
@@ -41,7 +41,7 @@ public class Pfunc_gender extends Pf_func_base {
}
if (self_args_len == 1) {bfr.Add(when_m); return;} // per MW: EX: {{gender:name|a}} -> "a"
int gender = Get_gender(ctx.App().User(), user_name);
- Xol_lang_itm lang = ctx.Cur_page().Lang();
+ Xol_lang_itm lang = ctx.Page().Lang();
bfr.Add(lang.Gender().Gender_eval(gender, when_m, when_f, when_u));
}
private static int Get_gender(Xou_user user, byte[] user_name) {
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar.java
index 26c935d21..344e826dc 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar.java
@@ -25,7 +25,7 @@ public class Pfunc_grammar extends Pf_func_base {
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
byte[] argx = Eval_argx(ctx, src, caller, self);
byte[] word = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self.Args_len(), 0);
- Xol_lang_itm lang = ctx.Cur_page().Lang();
+ Xol_lang_itm lang = ctx.Page().Lang();
boolean pass = false;
try {pass = lang.Grammar().Grammar_eval(bfr, lang, word, argx);}
catch (Exception e) {Err_.Noop(e);}
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int.java
index 3a5264841..bc96a7b9f 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int.java
@@ -25,7 +25,7 @@ public class Pfunc_int extends Pf_func_base {
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
byte[] msg_key = Eval_argx(ctx, src, caller, self);
Xowe_wiki wiki = ctx.Wiki();
- Xol_lang_itm page_lang = ctx.Cur_page().Lang();
+ Xol_lang_itm page_lang = ctx.Page().Lang();
byte[][] args_ary = Bry_.Ary_empty;
int args_len = self.Args_len();
if (args_len > 0) {
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java
index 670aedbaf..f4b607f36 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java
@@ -33,7 +33,7 @@ public class Pfunc_displaytitle extends Pf_func_base {
wiki.Html_mgr().Html_wtr().Write_tkn(tmp_bfr, display_ttl_ctx, hctx, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root);
byte[] val_html = tmp_bfr.To_bry_and_clear();
if (restrict) { // restrict only allows displayTitles which have text similar to the pageTitle; PAGE:de.b:Kochbuch/_Druckversion; DATE:2014-08-18
- Xoae_page page = ctx.Cur_page();
+ Xoae_page page = ctx.Page();
wiki.Html_mgr().Html_wtr().Write_tkn(tmp_bfr, display_ttl_ctx, Xoh_wtr_ctx.Alt, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root);
byte[] val_html_lc = tmp_bfr.To_bry_and_clear();
Xol_case_mgr case_mgr = wiki.Lang().Case_mgr();
@@ -42,7 +42,7 @@ public class Pfunc_displaytitle extends Pf_func_base {
if (!Bry_.Eq(val_html_lc, page_ttl_lc))
val_html = null;
}
- ctx.Cur_page().Html_data().Display_ttl_(val_html);
+ ctx.Page().Html_data().Display_ttl_(val_html);
tmp_bfr.Mkr_rls();
}
private static byte[] Standardize_displaytitle_text(Xol_case_mgr case_mgr, byte[] val) {
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props.java
index 86b29c60e..c4cb9f36b 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props.java
@@ -24,14 +24,15 @@ public class Pfunc_rev_props extends Pf_func_base {
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_rev_props(id).Name_(name);}
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
byte[] argx = Eval_argx(ctx, src, caller, self);
- Xopg_revision_data rev_data = ctx.Cur_page().Revision_data();
+ Xopg_revision_data rev_data = ctx.Page().Revision_data();
switch (id) {
case Xol_kwd_grp_.Id_page_id:
- case Xol_kwd_grp_.Id_rev_id: bfr.Add_int_variable(ctx.Cur_page().Revision_data().Id()); break; // NOTE: making rev_id and page_id interchangeable; XOWA does not store rev_id
+ case Xol_kwd_grp_.Id_rev_id: bfr.Add_int_variable(ctx.Page().Revision_data().Id()); break; // NOTE: making rev_id and page_id interchangeable; XOWA does not store rev_id
case Xol_kwd_grp_.Id_rev_user: bfr.Add(rev_data.User()); break;
case Xol_kwd_grp_.Id_rev_protectionlevel: bfr.Add(rev_data.Protection_level()); break;
+ case Xol_kwd_grp_.Id_rev_protectionexpiry: bfr.Add(rev_data.Protection_expiry()); break;
case Xol_kwd_grp_.Id_rev_revisionsize: // default revsize to pagesize; MW has additional logic for subst which should not apply to XO; https://gerrit.wikimedia.org/r/#/c/82650/
- bfr.Add_int_variable(ctx.Cur_page().Data_raw().length);
+ bfr.Add_int_variable(ctx.Page().Data_raw().length);
break;
case Xol_kwd_grp_.Id_rev_pagesize:
if (argx.length > 0) {
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props_tst.java
index a3ecc3b50..16d00ea76 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props_tst.java
@@ -26,6 +26,7 @@ public class Pfunc_rev_props_tst {
@Test public void Page_size() {fxt.Test_parse_tmpl_str_test("{{PAGESIZE:Test page}}" , "{{test}}", "0");}
@Test public void Revision_size() {fxt.Test_parse_tmpl_str_test("{{REVISIONSIZE}}" , "{{test}}", "8");}
@Test public void Protection_level() {fxt.Test_parse_tmpl_str_test("{{PROTECTIONLEVEL}}" , "{{test}}", "normal");}
+ @Test public void Protection_expiry() {fxt.Test_parse_tmpl_str_test("{{PROTECTIONEXPIRY}}" , "{{test}}", "infinite");}
@Test public void PageSize_invalid_ttl() {
fxt.Init_log_(Xop_ttl_log.Invalid_char);
fxt.Test_parse_tmpl_str_test("{{PAGESIZE:{{{100}}}|R}}" , "{{test}}", "0");
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java
index f8f5123e2..bdc257e71 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java
@@ -28,7 +28,7 @@ public class Pft_func_date_int extends Pf_func_base {
switch (date_tid) {
case Date_tid_lcl: date = DateAdp_.Now(); break;
case Date_tid_utc: date = DateAdp_.Now().XtoUtc(); break;
- case Date_tid_rev: date = ctx.Cur_page().Revision_data().Modified_on(); break;
+ case Date_tid_rev: date = ctx.Page().Revision_data().Modified_on(); break;
default: throw Err_.new_unhandled(date_tid);
}
switch (id) {
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_name.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_name.java
index faf0b50aa..58b7043c5 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_name.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_name.java
@@ -26,7 +26,7 @@ public class Pft_func_date_name extends Pf_func_base {
switch (date_tid) {
case Pft_func_date_int.Date_tid_lcl: date = DateAdp_.Now(); break;
case Pft_func_date_int.Date_tid_utc: date = DateAdp_.Now().XtoUtc(); break;
- case Pft_func_date_int.Date_tid_rev: date = ctx.Cur_page().Revision_data().Modified_on(); break;
+ case Pft_func_date_int.Date_tid_rev: date = ctx.Page().Revision_data().Modified_on(); break;
default: throw Err_.new_unhandled(date_tid);
}
byte[] val = ctx.Wiki().Msg_mgr().Val_by_id(base_idx + date.Segment(seg_idx));
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java
index 49cccfc24..d3f74c8c9 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java
@@ -33,7 +33,7 @@ public class Pfunc_rel2abs extends Pf_func_base {
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {// REF.MW:ParserFunctions_body.php
byte[] qry = Eval_argx(ctx, src, caller, self);
byte[] orig = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self.Args_len(), 0);
- if (orig.length == 0) orig = ctx.Cur_page().Ttl().Full_txt();
+ if (orig.length == 0) orig = ctx.Page().Ttl().Full_txt();
bfr.Add(Rel2abs(ctx.App().Utl__bfr_mkr().Get_b512().Mkr_rls(), qry, orig));
}
public static boolean Rel2abs_ttl(byte[] ttl, int bgn, int end) {
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java
index 4ab2eb43b..cc8a46542 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java
@@ -22,7 +22,7 @@ public class Pfunc_ttl extends Pf_func_base {
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
byte[] val_dat_ary = Eval_argx_or_null(ctx, src, caller, self, this.Name());
if (val_dat_ary == Bry_.Empty) return; // if argx is empty, return EX: {{PAGENAME:}}; DATE:2013-02-20
- Xoa_ttl ttl = val_dat_ary == null ? ctx.Cur_page().Ttl() : Xoa_ttl.parse(ctx.Wiki(), val_dat_ary);
+ Xoa_ttl ttl = val_dat_ary == null ? ctx.Page().Ttl() : Xoa_ttl.parse(ctx.Wiki(), val_dat_ary);
if (ttl == null) return;
switch (id) {
case Xol_kwd_grp_.Id_ttl_page_txt: bfr.Add(ttl.Page_txt()); break;
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props.java
index a7b497ad8..02422340f 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props.java
@@ -33,7 +33,7 @@ public class Pfunc_wiki_props extends Pf_func_base {
case Xol_kwd_grp_.Id_site_stylepath: bfr.Add(props.StylePath()); break;
case Xol_kwd_grp_.Id_site_directionmark: bfr.Add(props.DirectionMark()); break;
case Xol_kwd_grp_.Id_site_currentversion: bfr.Add(props.Current_version()); break;
- case Xol_kwd_grp_.Id_site_contentlanguage: bfr.Add(ctx.Cur_page().Lang().Key_bry()); break;
+ case Xol_kwd_grp_.Id_site_contentlanguage: bfr.Add(ctx.Page().Lang().Key_bry()); break;
default: throw Err_.new_unhandled(id);
}
}
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_stats.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_stats.java
index d6d739cc4..778c0c82a 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_stats.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_stats.java
@@ -43,7 +43,7 @@ public class Pfunc_wiki_stats extends Pf_func_base {
if (raw)
bfr.Add_int_variable(v);
else
- bfr.Add(ctx.Cur_page().Lang().Num_mgr().Format_num(v));
+ bfr.Add(ctx.Page().Lang().Num_mgr().Format_num(v));
}
public Pfunc_wiki_stats(int id) {this.id = id;}
@Override public int Id() {return id;} private int id;
diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java
index 41c278bad..966fccc08 100644
--- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java
+++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java
@@ -21,7 +21,7 @@ import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.pa
public class Pp_pagelist_nde implements Xox_xnde { // TODO:
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
- boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_hiero, src, xnde);
+ boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_hiero, src, xnde);
} public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null;
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {}
}
diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java
index e7ce8751f..0f66e3923 100644
--- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java
+++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java
@@ -58,7 +58,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
// if (!wiki.Xtn_mgr().Xtn_proofread().Enabled()) return;
if (!Init_vars(wiki, ctx, src, xnde)) return;
- Xoae_page page = ctx.Cur_page();
+ Xoae_page page = ctx.Page();
if (page.Pages_recursed()) return; // moved from Pp_index_parser; DATE:2014-05-21s
page.Pages_recursed_(true);
Bry_bfr full_bfr = app.Utl__bfr_mkr().Get_m001();
@@ -81,7 +81,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner {
}
private boolean Init_vars(Xowe_wiki wiki, Xop_ctx ctx, byte[] src, Xop_xnde_tkn xnde) {
this.wiki = wiki; this.ctx = ctx; app = wiki.Appe(); usr_dlg = app.Usr_dlg();
- this.src = src; this.xnde_tkn = xnde; cur_page_ttl = ctx.Cur_page().Ttl();
+ this.src = src; this.xnde_tkn = xnde; cur_page_ttl = ctx.Page().Ttl();
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);
Xop_amp_mgr amp_mgr = wiki.Appe().Parser_amp_mgr();
index_ttl_bry = amp_mgr.Decode_as_bry(index_ttl_bry);
@@ -143,7 +143,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner {
rv = full_bfr.To_bry_and_clear();
}
catch (Exception e) {
- wiki.Appe().Usr_dlg().Warn_many("", "", "failed to write caption: page=~{0} lnki=~{1} err=~{2}", ctx.Cur_page().Ttl().Full_db(), String_.new_u8(index_page_src, lnki.Src_bgn(), lnki.Src_end()), Err_.Message_gplx_full(e));
+ wiki.Appe().Usr_dlg().Warn_many("", "", "failed to write caption: page=~{0} lnki=~{1} err=~{2}", ctx.Page().Ttl().Full_db(), String_.new_u8(index_page_src, lnki.Src_bgn(), lnki.Src_end()), Err_.Message_gplx_full(e));
rv = lnki.Ttl().Page_txt();
}
return rv;
@@ -162,12 +162,12 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner {
int main_lnkis_len = main_lnkis.Count();
byte[] index_page_src = index_page.Src();
if (main_lnkis_len > 0) {
- Xoa_ttl page_ttl = ctx.Cur_page().Ttl();
+ Xoa_ttl page_ttl = ctx.Page().Ttl();
for (int i = 0; i < main_lnkis_len; i++) {
Xop_lnki_tkn main_lnki = (Xop_lnki_tkn)main_lnkis.Get_at(i);
if (page_ttl.Eq_full_db(main_lnki.Ttl())) {
- Xoae_page old_page = ctx.Cur_page();
- wiki.Html_mgr().Html_wtr().Init_by_page(ctx, Xoh_wtr_ctx.Basic, index_page_src, ctx.Cur_page()); // HACK: should not reuse html_wtr, but should be safe to use during parse (not html_gen)
+ Xoae_page old_page = ctx.Page();
+ wiki.Html_mgr().Html_wtr().Init_by_page(ctx, Xoh_wtr_ctx.Basic, index_page_src, ctx.Page()); // HACK: should not reuse html_wtr, but should be safe to use during parse (not html_gen)
if (toc_cur == null) // do not set if "current" is specified, even if "blank" specified; EX: current=''
toc_cur = Make_lnki(full_bfr, index_page_src, main_lnki);
if (toc_prv == null // do not set if "prev" is specified
@@ -351,7 +351,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner {
if (end_sect_bry != null)
cur_sect_end = end_sect_bry;
}
- Xopg_tmpl_prepend_mgr prepend_mgr = ctx.Cur_page().Tmpl_prepend_mgr().Bgn(full_bfr);
+ Xopg_tmpl_prepend_mgr prepend_mgr = ctx.Page().Tmpl_prepend_mgr().Bgn(full_bfr);
lst_pfunc_wkr.Init_include(ttl.Full_db(), cur_sect_bgn, cur_sect_end).Exec(page_bfr, ctx);
prepend_mgr.End(ctx, full_bfr, page_bfr.Bfr(), page_bfr.Len(), Bool_.Y);
full_bfr.Add_bfr_and_clear(page_bfr);
@@ -363,7 +363,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner {
}
private Xop_root_tkn Bld_root_nde(Bry_bfr page_bfr, Hash_adp_bry lst_page_regy, byte[] wikitext) {
Xop_ctx tmp_ctx = Xop_ctx.new_sub_page_(wiki, ctx, lst_page_regy);
- tmp_ctx.Cur_page().Ttl_(ctx.Cur_page().Ttl()); // NOTE: must set tmp_ctx.Ttl to ctx.Ttl; EX: Flatland and First World; DATE:2013-04-29
+ tmp_ctx.Page().Ttl_(ctx.Page().Ttl()); // NOTE: must set tmp_ctx.Ttl to ctx.Ttl; EX: Flatland and First World; DATE:2013-04-29
tmp_ctx.Lnki().File_wkr_(null); // NOTE: set file_wkr to null, else items will be double-counted
tmp_ctx.Parse_tid_(Xop_parser_.Parse_tid_tmpl);
Xop_parser tmp_parser = Xop_parser.new_(wiki, wiki.Parser_mgr().Main().Tmpl_lxr_mgr(), wiki.Parser_mgr().Main().Wtxt_lxr_mgr());
diff --git a/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func.java b/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func.java
index 17d878321..9134a8dd5 100644
--- a/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func.java
+++ b/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func.java
@@ -25,10 +25,10 @@ public class Articles_func extends Pf_func_base {
@Override public Pf_func New(int id, byte[] name) {return new Articles_func().Name_(name);}
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
byte[] argx = this.Eval_argx(ctx, src, caller, self);
- Articles_xtn_skin_itm xtn_itm = (Articles_xtn_skin_itm)ctx.Cur_page().Html_data().Xtn_skin_mgr().Get_or_null(Articles_xtn_skin_itm.KEY);
+ Articles_xtn_skin_itm xtn_itm = (Articles_xtn_skin_itm)ctx.Page().Html_data().Xtn_skin_mgr().Get_or_null(Articles_xtn_skin_itm.KEY);
if (xtn_itm == null) {
xtn_itm = new Articles_xtn_skin_itm();
- ctx.Cur_page().Html_data().Xtn_skin_mgr().Add(xtn_itm);
+ ctx.Page().Html_data().Xtn_skin_mgr().Add(xtn_itm);
}
Parse(xtn_itm, argx);
}
diff --git a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr_tst.java b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr_tst.java
index 090d6f094..0ea37250d 100644
--- a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr_tst.java
@@ -53,7 +53,7 @@ class Sites_html_bldr_fxt {
, "0|dmoz|http://www.dmoz.org/~{0}|DMOZ"
)));
Init_regy_mgr("commons", "dmoz");
- this.page = wiki.Parser_mgr().Ctx().Cur_page();
+ this.page = wiki.Parser_mgr().Ctx().Page();
}
private void Init_regy_mgr(String... ary) {xtn_mgr.Regy_mgr().Set_many(ary);}
public void Init_ttl(String lnki_ttl) {
diff --git a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java
index 04e479e78..4f844ba52 100644
--- a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java
@@ -47,7 +47,7 @@ public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm {
this.xnde = xnde;
code = Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
code = Bry_.Replace(code, gplx.xowa.bldrs.xmls.Xob_xml_parser_.Bry_tab_ent, gplx.xowa.bldrs.xmls.Xob_xml_parser_.Bry_tab);
- boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_score, src, xnde);
+ boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_score, src, xnde);
} public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null;
private byte[] code;
public String Hcmd_id() {return hcmd_id;} private String hcmd_id;
@@ -57,7 +57,7 @@ public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm {
bfr.Add(Xoh_consts.Pre_end);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
- Xowe_wiki wiki = ctx.Wiki(); Xoae_page page = ctx.Cur_page();
+ Xowe_wiki wiki = ctx.Wiki(); Xoae_page page = ctx.Page();
Score_xtn_mgr score_xtn = (Score_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Score_xtn_mgr.XTN_KEY);
if (!score_xtn.Enabled()) {Html_write_code_as_pre(bfr, app); return;}
Process_adp ly_process = app.Prog_mgr().App_lilypond();
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java
index 475a4fbd1..b515d9f4f 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java
@@ -24,7 +24,7 @@ public class Scrib_core {
private Hash_adp_bry mods = Hash_adp_bry.cs();
public Scrib_core(Xoae_app app, Xop_ctx ctx) {// NOTE: ctx needed for language reg
this.app = app; this.ctx = ctx;
- this.wiki = ctx.Wiki(); this.page = ctx.Cur_page(); // NOTE: wiki / page needed for title reg; DATE:2014-02-05
+ this.wiki = ctx.Wiki(); this.page = ctx.Page(); // NOTE: wiki / page needed for title reg; DATE:2014-02-05
this.lang = wiki.Lang();
this.Engine_(Scrib_engine_type.Type_lua, false); // TEST: default to lua
fsys_mgr.Root_dir_(app.Fsys_mgr().Bin_xtns_dir().GenSubDir_nest("Scribunto"));
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core_fxt.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core_fxt.java
index 2a4f800e3..fdeb23de0 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core_fxt.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core_fxt.java
@@ -35,7 +35,7 @@ public class Scrib_core_fxt {
server.Clear();
core.Proc_mgr().Clear();
core.Frame_parent_(null);
- core.When_page_changed(wiki.Parser_mgr().Ctx().Cur_page());
+ core.When_page_changed(wiki.Parser_mgr().Ctx().Page());
expd_server_rcvd_list.Clear();
return this;
} private Xoae_app app; Xowe_wiki wiki; Bry_bfr tmp_bfr = Bry_bfr.reset_(255);
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java
index 92c3e8492..9e2dfb8a7 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java
@@ -36,12 +36,12 @@ public class Scrib_invoke_func extends Pf_func_base {
long log_time_bgn = 0;
if (invoke_wkr != null) {
log_time_bgn = Env_.TickCount();
- if (!invoke_wkr.Eval_bgn(ctx.Cur_page(), mod_name, fnc_name)) return;
+ if (!invoke_wkr.Eval_bgn(ctx.Page(), mod_name, fnc_name)) return;
}
Scrib_core core = Scrib_core.Core();
if (core == null) {
core = Scrib_core.Core_new_(ctx.App(), ctx).Init();
- core.When_page_changed(ctx.Cur_page());
+ core.When_page_changed(ctx.Page());
}
byte[] mod_raw = null;
Scrib_lua_mod mod = core.Mods_get(mod_name);
@@ -57,7 +57,7 @@ public class Scrib_invoke_func extends Pf_func_base {
try {
core.Invoke(wiki, ctx, src, caller, self, bfr, mod_name, mod_raw, fnc_name);
if (invoke_wkr != null)
- invoke_wkr.Eval_end(ctx.Cur_page(), mod_name, fnc_name, log_time_bgn);
+ invoke_wkr.Eval_end(ctx.Page(), mod_name, fnc_name, log_time_bgn);
}
catch (Throwable e) {
Err err = Err_.cast_or_make(e);
@@ -67,7 +67,7 @@ public class Scrib_invoke_func extends Pf_func_base {
if ( err_filter_mgr == null // no err_filter_mgr defined;
|| err_filter_mgr.Count_eq_0( ) // err_filter_mgr exists, but no definitions
|| !err_filter_mgr.Match(String_.new_u8(mod_name), String_.new_u8(fnc_name), err.To_str__msg_only())) // NOTE: must be To_str__msg_only; err_filter_mgr has defintion and it doesn't match current; print warn; DATE:2015-07-24
- ctx.App().Usr_dlg().Warn_many("", "", "invoke failed: ~{0} ~{1} ~{2}", ctx.Cur_page().Ttl().Raw(), String_.new_u8(src, self.Src_bgn(), self.Src_end()), err.To_str__log());
+ ctx.App().Usr_dlg().Warn_many("", "", "invoke failed: ~{0} ~{1} ~{2}", ctx.Page().Ttl().Raw(), String_.new_u8(src, self.Src_bgn(), self.Src_end()), err.To_str__log());
Scrib_core.Core_invalidate_when_page_changes(); // NOTE: invalidate core when page changes, not for rest of page, else page with many errors will be very slow due to multiple invalidations; PAGE:th.d:all; DATE:2014-10-03
}
}
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_rslt.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_rslt.java
index f6fe469db..742a16828 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_rslt.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_rslt.java
@@ -21,7 +21,7 @@ public class Scrib_proc_rslt {
public KeyVal[] Ary() {return ary;}
public String Fail_msg() {return fail_msg;} private String fail_msg;
public boolean Init_fail(String v) {fail_msg = v; return false;}
- public boolean Init_null() {Init_obj(null); return true;}
+ public boolean Init_null() {Init_obj(null); return true;} // return array(null);
public boolean Init_str_empty() {Init_obj(""); return true;}
public boolean Init_ary_empty() {ary = KeyVal_.Ary_empty; return true;}
public boolean Init_obj(Object val) {
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java
index 3b79aa6e3..bf23c3d46 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java
@@ -81,7 +81,7 @@ public class Process_engine implements Scrib_engine {
}
else {
bfr.Mkr_rls();
-// app.Usr_dlg().Warn_many("", "", "invalid dispatch: op=~{0} page=~{1}", op, String_.new_u8(core.Ctx().Cur_page().Page_ttl().Page_db()));
+// app.Usr_dlg().Warn_many("", "", "invalid dispatch: op=~{0} page=~{1}", op, String_.new_u8(core.Ctx().Page().Page_ttl().Page_db()));
return KeyVal_.Ary_empty;
}
}
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message.java
index 31aff817f..892d6df6a 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message.java
@@ -97,7 +97,7 @@ class Scrib_lib_message_data {
if (exec_params) {
byte[] data_ttl = title_bry;
if (data_ttl == null)
- ttl = ctx.Cur_page().Ttl();
+ ttl = ctx.Page().Ttl();
else
ttl = Xoa_ttl.parse(wiki, data_ttl);
}
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__invoke_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__invoke_tst.java
index 08cb3fc9b..3cb0a0863 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__invoke_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__invoke_tst.java
@@ -83,7 +83,7 @@ public class Scrib_lib_mw__invoke_tst {
@Test public void CallParserFunction_displayTitle() { // PURPOSE: DISPLAYTITLE not being set when called through CallParserFunction; DATE:2013-08-05
fxt.Init_page("{{#invoke:Mod_0|Prc_0}}");
fxt.Test_lib_proc_kv(lib, Scrib_lib_mw.Invk_callParserFunction, Scrib_kv_utl_.base1_many_ary_("current", "DISPLAYTITLE", "''a''"), "");
- Tfds.Eq("a", String_.new_a7(fxt.Parser_fxt().Ctx().Cur_page().Html_data().Display_ttl()));
+ Tfds.Eq("a", String_.new_a7(fxt.Parser_fxt().Ctx().Page().Html_data().Display_ttl()));
}
@Test public void ExpandTemplate_tmpl() {
fxt.Init_page("{{#invoke:Mod_0|Prc_0}}");
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_uri.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_uri.java
index 2b3c4ca6d..9cfc02b61 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_uri.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_uri.java
@@ -70,7 +70,7 @@ public class Scrib_lib_uri implements Scrib_lib {
}
private boolean Init_uri_for_page(Scrib_proc_args args, Scrib_proc_rslt rslt) {
Xop_ctx ctx = core.Ctx();
- byte[] ttl_bry = ctx.Cur_page().Ttl().Raw();
+ byte[] ttl_bry = ctx.Page().Ttl().Raw();
Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512();
Pfunc_urlfunc.UrlString(ctx, Pfunc_urlfunc.Tid_full, false, ttl_bry, tmp_bfr, Bry_.Empty);
return rslt.Init_obj(tmp_bfr.To_bry_and_rls());
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java
index 9df58d25d..4021a782e 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java
@@ -178,7 +178,7 @@ public class Scrib_lib_ustring implements Scrib_lib {
public static Regx_adp RegxAdp_new_(Xop_ctx ctx, String regx) {
Regx_adp rv = Regx_adp_.new_(regx);
if (rv.Pattern_is_invalid()) {
- ctx.App().Usr_dlg().Warn_many("", "", "regx is invalid: regx=~{0} page=~{1}", regx, String_.new_u8(ctx.Cur_page().Ttl().Page_db()));
+ ctx.App().Usr_dlg().Warn_many("", "", "regx is invalid: regx=~{0} page=~{1}", regx, String_.new_u8(ctx.Page().Ttl().Page_db()));
}
return rv;
}
diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java
index 22b1a863d..5f2f200be 100644
--- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java
@@ -36,7 +36,7 @@ public class Xop_languages_xnde implements Xox_xnde {
return Xoa_ttl.parse(wiki, ttl.Ns().Id(), root_bry);
}
private List_adp Find_lang_pages(Xop_ctx ctx, Xowe_wiki wiki) {
- this.root_ttl = Root_ttl_of(wiki, ctx.Cur_page().Ttl());
+ this.root_ttl = Root_ttl_of(wiki, ctx.Page().Ttl());
List_adp rslts = List_adp_.new_();
Int_obj_ref rslt_count = Int_obj_ref.new_(0);
Xow_ns page_ns = root_ttl.Ns();
@@ -71,7 +71,7 @@ public class Xop_languages_xnde implements Xox_xnde {
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
if (langs.Count() == 0) return; // no langs; don't write anything;
- fmtr_mgr_itms.Init(langs, ctx.Wiki(), root_ttl, ctx.Cur_page().Lang().Key_bry());
+ fmtr_mgr_itms.Init(langs, ctx.Wiki(), root_ttl, ctx.Page().Lang().Key_bry());
fmtr_all.Bld_bfr_many(bfr, "Other languages", fmtr_mgr_itms);
}
private static final Xop_languages_fmtr fmtr_mgr_itms = new Xop_languages_fmtr();
diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_mylanguage_page_tst.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_mylanguage_page_tst.java
index 3ab059fe2..344057529 100644
--- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_mylanguage_page_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_mylanguage_page_tst.java
@@ -46,7 +46,7 @@ class Xop_mylanguage_page_fxt {
public void Init_create_page(String page) {parser_fxt.Init_page_create(page, page);}
public void Init_cur_lang(String lang) {app.Sys_cfg().Lang_(Bry_.new_a7(lang));}
public void Test_open(String link, String expd) {
- Xoae_page page = parser_fxt.Ctx().Cur_page();
+ Xoae_page page = parser_fxt.Ctx().Page();
Xoa_url url = app.User().Wikii().Utl__url_parser().Parse(Bry_.new_u8(link));
page.Url_(url);
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.new_a7(link));
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java
index 5eb7c5690..c3f172a87 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java
@@ -245,6 +245,6 @@ public class Wdata_wiki_mgr implements GfoEvObj, GfoInvkAble {
return false;
}
public static void Log_missing_qid(Xop_ctx ctx, byte[] qid) {
- ctx.Wiki().Appe().Usr_dlg().Log_many("", "", "qid not found in wikidata; qid=~{0} page=~{1}", String_.new_u8(qid), String_.new_u8(ctx.Cur_page().Ttl().Page_db()));
+ ctx.Wiki().Appe().Usr_dlg().Log_many("", "", "qid not found in wikidata; qid=~{0} page=~{1}", String_.new_u8(qid), String_.new_u8(ctx.Page().Ttl().Page_db()));
}
}
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java
index 891e3c97c..6ac969d47 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java
@@ -101,9 +101,9 @@ public class Wdata_wiki_mgr_fxt {
Io_url file_orig = Xob_wdata_qid_base_tst.ttl_(app.Wiki_mgr().Wdata_mgr().Wdata_wiki(), wiki, ns_num, 0);
xdat_file.Save(file_orig);
}
- public void Init_external_links_mgr_clear() {wiki.Parser_mgr().Ctx().Cur_page().Wdata_external_lang_links().Reset();}
+ public void Init_external_links_mgr_clear() {wiki.Parser_mgr().Ctx().Page().Wdata_external_lang_links().Reset();}
public void Init_external_links_mgr_add(String... langs) {
- Wdata_external_lang_links_data external_lang_links = wiki.Parser_mgr().Ctx().Cur_page().Wdata_external_lang_links();
+ Wdata_external_lang_links_data external_lang_links = wiki.Parser_mgr().Ctx().Page().Wdata_external_lang_links();
external_lang_links.Enabled_(true);
int len = langs.length;
for (int i = 0; i < len; i++) {
@@ -130,7 +130,7 @@ public class Wdata_wiki_mgr_fxt {
}
public void Test_parse_langs(String raw, String expd) {
// setup langs
- Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page();
+ Xoae_page page = wiki.Parser_mgr().Ctx().Page();
app.Xwiki_mgr__sitelink_mgr().Parse(Bry_.new_u8(String_.Concat_lines_nl
( "0|grp1"
, "1|en|English"
@@ -155,7 +155,7 @@ public class Wdata_wiki_mgr_fxt {
}
public void Test_xwiki_links(String ttl, String... expd) {
tmp_langs.Clear();
- Wdata_xwiki_link_wtr.Write_wdata_links(tmp_langs, wiki, Xoa_ttl.parse(wiki, Bry_.new_u8(ttl)), wiki.Parser_mgr().Ctx().Cur_page().Wdata_external_lang_links());
+ Wdata_xwiki_link_wtr.Write_wdata_links(tmp_langs, wiki, Xoa_ttl.parse(wiki, Bry_.new_u8(ttl)), wiki.Parser_mgr().Ctx().Page().Wdata_external_lang_links());
Tfds.Eq_ary_str(expd, Test_xwiki_links_xto_str_ary(tmp_langs));
} List_adp tmp_langs = List_adp_.new_();
String[] Test_xwiki_links_xto_str_ary(List_adp list) {
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java
index b73785a6d..7ab057fc2 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java
@@ -24,7 +24,7 @@ public class Wdata_pf_noExternalLangLinks extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_noexternallanglinks;}
@Override public Pf_func New(int id, byte[] name) {return new Wdata_pf_noExternalLangLinks().Name_(name);}
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
- ctx.Cur_page().Wdata_external_lang_links().Parse(ctx, src, caller, self, this);
+ ctx.Page().Wdata_external_lang_links().Parse(ctx, src, caller, self, this);
}
public static void Print_self(Gfo_usr_dlg usr_dlg, Bry_bfr bfr, byte[] src, Xot_invk self, String warn_cls, String warn_fmt, Object... args) {
bfr.Add_mid(src, self.Src_bgn(), self.Src_end());
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks_tst.java
index 9cd29d3ef..3bdaa32bb 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks_tst.java
@@ -36,7 +36,7 @@ class Wdata_pf_noExternalLangLinks_fxt {
parser_fxt = new Xop_fxt();
app = parser_fxt.App();
wiki = parser_fxt.Wiki();
- data = wiki.Parser_mgr().Ctx().Cur_page().Wdata_external_lang_links();
+ data = wiki.Parser_mgr().Ctx().Page().Wdata_external_lang_links();
}
expd_sort = expd_enabled = Bool_.__byte;
expd_langs = null;
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java
index 10cb978ef..2b507fe6d 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java
@@ -30,14 +30,14 @@ public class Wdata_pf_property extends Pf_func_base {
long log_time_bgn = 0;
if (property_wkr != null) {
log_time_bgn = Env_.TickCount();
- if (!property_wkr.Eval_bgn(ctx.Cur_page(), id)) return;
+ if (!property_wkr.Eval_bgn(ctx.Page(), id)) return;
}
Xoae_app app = ctx.App();
Wdata_wiki_mgr wdata_mgr = app.Wiki_mgr().Wdata_mgr();
if (!wdata_mgr.Enabled()) return;
Xowe_wiki wiki = ctx.Wiki();
- Xoa_ttl ttl = ctx.Cur_page().Ttl();
+ Xoa_ttl ttl = ctx.Page().Ttl();
Wdata_pf_property_data data = new Wdata_pf_property_data();
data.Init_by_parse(ctx, src, caller, self, this, id);
@@ -47,9 +47,9 @@ public class Wdata_pf_property extends Pf_func_base {
pid = wdata_mgr.Pids__get_by_name(wiki.Wdata_wiki_lang(), data.Id());
if (pid == Wdata_wiki_mgr.Pid_null) {Print_self(app.Usr_dlg(), bfr, src, self, "prop_not_found", "prop id not found: ~{0} ~{1} ~{2}", wiki.Domain_str(), ttl.Page_db_as_str(), data.Id()); return;}
Wdata_claim_grp prop_grp = prop_doc.Claim_list_get(pid); if (prop_grp == null) return;// NOTE: some props may not exist; EX: {{#property:P345}} for "Unknown_movie" may have a qid, but doesn't have a defined pid
- wdata_mgr.Resolve_to_bfr(bfr, prop_grp, wiki.Wdata_wiki_lang()); // NOTE: was ctx.Cur_page().Lang().Key_bry(), but fails in simplewiki; DATE:2013-12-02
+ wdata_mgr.Resolve_to_bfr(bfr, prop_grp, wiki.Wdata_wiki_lang()); // NOTE: was ctx.Page().Lang().Key_bry(), but fails in simplewiki; DATE:2013-12-02
if (property_wkr != null)
- property_wkr.Eval_end(ctx.Cur_page(), id, log_time_bgn);
+ property_wkr.Eval_end(ctx.Page(), id, log_time_bgn);
}
public static int Parse_pid(Number_parser num_parser, byte[] bry) {
int bry_len = bry.length;
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java
index 515334c94..92b23b38e 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java
@@ -40,7 +40,7 @@ public class Wdata_pf_property_data {
if (nde_key_bgn == nde_key_end && nde_key_bgn == -1) continue; // null arg; ignore, else will throw warning below; EX: {{#property:p1|}}; DATE:2013-11-15
Object o = Atr_keys.Get_by_mid(src, nde_key_bgn, nde_key_end);
if (o == null) {
- ctx.App().Usr_dlg().Warn_many("", "", "unknown key for property: ~{0} ~{1}", String_.new_u8(ctx.Cur_page().Ttl().Full_txt()), String_.new_u8(src, self.Src_bgn(), self.Src_end()));
+ ctx.App().Usr_dlg().Warn_many("", "", "unknown key for property: ~{0} ~{1}", String_.new_u8(ctx.Page().Ttl().Full_txt()), String_.new_u8(src, self.Src_bgn(), self.Src_end()));
continue;
}
nde.Val_tkn().Tmpl_evaluate(ctx, src, self, tmp_bfr);
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java
index 9f62d2937..db6d5dcf1 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java
@@ -60,7 +60,7 @@ class Wdata_itemByTitle_page_fxt {
wdata_fxt.Init_qids_add("en", Xow_domain_tid_.Int__wikipedia, wdata_label, qid);
}
public void Test_open(String link, String expd) {
- Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page();
+ Xoae_page page = wiki.Parser_mgr().Ctx().Page();
Xoa_url url = app.User().Wikii().Utl__url_parser().Parse(Bry_.new_u8(link));
page.Url_(url);
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.new_a7(link));
diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java
index 59f716330..2fc69e90f 100644
--- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java
+++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java
@@ -41,9 +41,9 @@ public class Xox_xowa_html_cmd implements Xox_xnde, Mwh_atr_itm_owner {
// if (src[itm_end - 1] == Byte_ascii.Nl) --itm_end; // ignore last \n;
byte[] raw = Bry_.Mid(src, itm_bgn, itm_end);
if (pos_val == Pos_head_end)
- ctx.Cur_page().Html_data().Custom_head_end_concat(raw);
+ ctx.Page().Html_data().Custom_head_end_concat(raw);
else
- ctx.Cur_page().Html_data().Custom_html_end_concat(raw);
+ ctx.Page().Html_data().Custom_html_end_concat(raw);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {}
private static byte Pos_val(byte[] bry) {
diff --git a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file-user.xowa b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file-user.xowa
deleted file mode 100644
index fab91334b..000000000
Binary files a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file-user.xowa and /dev/null differ
diff --git a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file.xowa b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file.xowa
deleted file mode 100644
index 1906386dc..000000000
Binary files a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file.xowa and /dev/null differ
diff --git a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa
index 3ec98d90b..4d02f463a 100644
Binary files a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa and b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa differ