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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -302,16 +302,16 @@ public class Xoh_thm_hzip_tst {
, "</div>"
));
}
// @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);
}
}

View File

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

View File

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