1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00
This commit is contained in:
gnosygnu
2016-01-28 11:29:27 -05:00
parent 686d56fdab
commit 52c36aa4f8
138 changed files with 1415 additions and 646 deletions

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
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"));

View File

@@ -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: <references group="note"/>
Ref_itm_lst lst = ctx.Page().Ref_mgr().Lst_get(references.Group(), references.List_idx()); // get group; EX: <references group="note"/>
if (lst == null) return; // NOTE: possible to have a grouped references without references; EX: Infobox planet; <references group=note> in sidebar, but no refs
if (lst.Itms_len() == 0) return;
bfr.Add(cfg.Grp_bgn());

View File

@@ -53,7 +53,7 @@ public class Ref_nde implements Xox_xnde, Mwh_atr_itm_owner {
nested = true; // refs nested in references don't show <a> entry in <references>
}
if (!ctx.Ref_ignore()) // sub_ctx may be marked to ignore <ref>; EX: <pages>,{{#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) {

View File

@@ -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 <references> else refs will be lost; EX:"<references><references/></references>"; PAGE:en.w:Hwair; DATE:2014-06-27
ctx.Para().Process_block__bgn_n__end_y(Xop_xnde_tag_.Tag_div); // xnde generates <block_node>; <references> -> <ol>; close any blocks; PAGE:fr.w:Heidi_(roman); DATE:2014-02-17
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);

View File

@@ -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: <dynamicPageList> 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));

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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());
}
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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;
}
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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"
));
}
}

View File

@@ -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()))

View File

@@ -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
}

View File

@@ -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: <gallery><ref><gallery>; 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 <gallery>; 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));

View File

@@ -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();
}

View File

@@ -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) {

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();

View File

@@ -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) {

View File

@@ -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());

View File

@@ -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);
}

View File

@@ -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 <noinclude>
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();

View File

@@ -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) {

View File

@@ -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);

View File

@@ -24,7 +24,7 @@ public class Xof_math_html_wtr {
private Bry_fmtr math_fmtr_latex = Bry_fmtr.new_("<img id='xowa_math_img_~{math_idx}' src='' width='' height=''/><span id='xowa_math_txt_~{math_idx}'>~{math_text}</span>", "math_idx", "math_text");
private Bry_fmtr math_fmtr_mathjax = Bry_fmtr.new_("<span id='xowa_math_txt_~{math_idx}'>~{math_text}</span>", "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();

View File

@@ -16,135 +16,16 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.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;
// }
}

View File

@@ -16,25 +16,24 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.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);
}

View File

@@ -16,10 +16,28 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.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
// ( "<div class='ext-wpb-pagebanner noprint pre-content'>"
// , " <div class='wpb-topbanner'>"
// , " <h1 class='wpb-name'>Test page</h1>"
// , " <a class='image' title='Test page' href=''><img src='' srcset=' 640w' class='wpb-banner-image ' data-pos-x='0' data-pos-y='0' style='max-width:1px'></a>"
// , " </div>"
// , " <div class='wpb-topbanner-toc '><div class='wpb-banner-toc'></div></div>"
// , "</div>"
// ));
}
}
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());
}
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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];
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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;
}
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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
( "<div class='ext-wpb-pagebanner noprint pre-content'>"
, " <div class='wpb-topbanner'>"
, " {{#isHeadingOverrideEnabled}}<h1 class='wpb-name'>{{title}}</h1>{{/isHeadingOverrideEnabled}}"
, " <a class='image' title='{{tooltip}}' href='{{bannerfile}}'><img src='{{banner}}' srcset='{{srcset}}' class='wpb-banner-image {{originx}}' data-pos-x='{{data-pos-x}}' data-pos-y='{{data-pos-y}}' style='max-width:{{maxWidth}}px'></a>"
, " {{#hasIcons}}"
, " <div class='wpb-iconbox'>"
, " {{#icons}}"
, " <a href='{{url}}'>{{{html}}}</a>"
, " {{/icons}}"
, " </div>"
, " {{/hasIcons}}"
, " </div>"
, " <div class='wpb-topbanner-toc {{#bottomtoc}}wpb-bottomtoc{{/bottomtoc}}'><div class='wpb-banner-toc'>{{{toc}}}</div></div>"
, "</div>"
);
}

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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);}

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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");

View File

@@ -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) {

View File

@@ -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));

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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) {}
}

View File

@@ -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());

View File

@@ -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);
}

View File

@@ -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) {

View File

@@ -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();

View File

@@ -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"));

View File

@@ -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);

View File

@@ -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
}
}

View File

@@ -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) {

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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("<i>a</i>", String_.new_a7(fxt.Parser_fxt().Ctx().Cur_page().Html_data().Display_ttl()));
Tfds.Eq("<i>a</i>", 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}}");

View File

@@ -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());

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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));

View File

@@ -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()));
}
}

View File

@@ -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) {

View File

@@ -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());

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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));

View File

@@ -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) {