1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

Gui: Fix Read / Edit / HTML not working by keyboard shortcuts / in personal wikis [#392]

This commit is contained in:
gnosygnu 2019-03-20 08:33:30 -04:00
parent ab4cbbd3c1
commit 71232e4402
27 changed files with 100 additions and 76 deletions

View File

@ -14,6 +14,7 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/ */
package gplx.xowa; import gplx.*; package gplx.xowa; import gplx.*;
import gplx.xowa.wikis.pages.*;
public class Xoa_url_ { public class Xoa_url_ {
public static final int Tid_unknown = 0, Tid_page = 1, Tid_anch = 2, Tid_inet = 3, Tid_file = 4, Tid_xcmd = 5; public static final int Tid_unknown = 0, Tid_page = 1, Tid_anch = 2, Tid_inet = 3, Tid_file = 4, Tid_xcmd = 5;
public static boolean Tid_is_pagelike(int tid) { public static boolean Tid_is_pagelike(int tid) {
@ -28,9 +29,9 @@ public class Xoa_url_ {
Qarg__redirect = Bry_.new_a7("redirect") Qarg__redirect = Bry_.new_a7("redirect")
, Qarg__redirect__no = Bry_.new_a7("no") , Qarg__redirect__no = Bry_.new_a7("no")
, Qarg__action = Bry_.new_a7("action") , Qarg__action = Bry_.new_a7("action")
, Qarg__action__read = Bry_.new_a7("read") , Qarg__action__read = Xopg_view_mode_.Bry__read
, Qarg__action__edit = Bry_.new_a7("edit") , Qarg__action__edit = Xopg_view_mode_.Bry__edit
, Qarg__action__html = Bry_.new_a7("html") , Qarg__action__html = Xopg_view_mode_.Bry__html
, Qarg__curid = Bry_.new_a7("curid") , Qarg__curid = Bry_.new_a7("curid")
; ;
} }

View File

@ -464,7 +464,7 @@ public class Xop_fxt {
Xop_root_tkn root = Exec_parse_page_all_as_root(src_bry); Xop_root_tkn root = Exec_parse_page_all_as_root(src_bry);
Xoae_page page = this.Page(); Xoae_page page = this.Page();
page.Root_(root); page.Root_(root);
byte[] actl = wiki.Html_mgr().Page_wtr_mgr().Gen(page, gplx.xowa.wikis.pages.Xopg_page_.Tid_read); byte[] actl = wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_view_mode_.Tid__read);
Tfds.Eq_str_lines(expd, String_.new_u8(actl)); Tfds.Eq_str_lines(expd, String_.new_u8(actl));
} }
public String Exec__parse_to_html_w_skin(String raw) { public String Exec__parse_to_html_w_skin(String raw) {
@ -476,7 +476,7 @@ public class Xop_fxt {
Xop_root_tkn root = this.Exec_parse_page_all_as_root(raw_bry); Xop_root_tkn root = this.Exec_parse_page_all_as_root(raw_bry);
this.Page().Root_(root); this.Page().Root_(root);
html_mgr.Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_page(bfr, this.Page(), this.Ctx(), Xoh_page_html_source_.Wtr); html_mgr.Page_wtr_mgr().Wkr(Xopg_view_mode_.Tid__read).Write_page(bfr, this.Page(), this.Ctx(), Xoh_page_html_source_.Wtr);
return bfr.To_str_and_clear(); return bfr.To_str_and_clear();
} }
public void Test__parse_to_html_w_skin(String raw, String expd) { public void Test__parse_to_html_w_skin(String raw, String expd) {

View File

@ -55,7 +55,7 @@ public class Xobldr__lnki_temp__create extends Xob_dump_mgr_base implements gplx
} }
@Override protected void Cmd_bgn_end() { @Override protected void Cmd_bgn_end() {
ns_file_is_case_match_all = Ns_file_is_case_match_all(wiki); // NOTE: must call after wiki.init ns_file_is_case_match_all = Ns_file_is_case_match_all(wiki); // NOTE: must call after wiki.init
wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Ctgs_enabled_(false); // disable categories else progress messages written (also for PERF) wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode_.Tid__read).Ctgs_enabled_(false); // disable categories else progress messages written (also for PERF)
if (wiki.File__bin_mgr() != null) if (wiki.File__bin_mgr() != null)
wiki.File__bin_mgr().Wkrs__del(gplx.xowa.files.bins.Xof_bin_wkr_.Key_http_wmf); // remove wmf wkr, else will try to download images during parsing wiki.File__bin_mgr().Wkrs__del(gplx.xowa.files.bins.Xof_bin_wkr_.Key_http_wmf); // remove wmf wkr, else will try to download images during parsing
commons_wiki = app.Wiki_mgr().Get_by_or_make(Xow_domain_itm_.Bry__commons); commons_wiki = app.Wiki_mgr().Get_by_or_make(Xow_domain_itm_.Bry__commons);
@ -119,7 +119,7 @@ public class Xobldr__lnki_temp__create extends Xob_dump_mgr_base implements gplx
parser.Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), page_src); parser.Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), page_src);
if ( gen_html if ( gen_html
&& page.Redirect_trail().Itms__len() == 0) // don't generate html for redirected pages && page.Redirect_trail().Itms__len() == 0) // don't generate html for redirected pages
wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Page().Root_(root), Xopg_page_.Tid_read); wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Page().Root_(root), Xopg_view_mode_.Tid__read);
if (gen_hdump) if (gen_hdump)
hdump_bldr.Insert(ctx, page.Root_(root)); hdump_bldr.Insert(ctx, page.Root_(root));
root.Clear(); root.Clear();

View File

@ -52,8 +52,8 @@ public class Html__dump_to_fsys__cmd extends Xob_cmd__base {
Xoae_page page = wiki.Data_mgr().Load_page_and_parse(wiki.Utl__url_parser().Parse(page_ttl.Page_db()), page_ttl); Xoae_page page = wiki.Data_mgr().Load_page_and_parse(wiki.Utl__url_parser().Parse(page_ttl.Page_db()), page_ttl);
wiki.Parser_mgr().Parse(page, true); wiki.Parser_mgr().Parse(page, true);
page.Wikie().Html_mgr().Page_wtr_mgr().Page_read_fmtr().Fmt_("~{page_data}"); page.Wikie().Html_mgr().Page_wtr_mgr().Page_read_fmtr().Fmt_("~{page_data}");
page.Wikie().Html_mgr().Page_wtr_mgr().Wkr(gplx.xowa.wikis.pages.Xopg_page_.Tid_read).Write_body(bfr, wiki.Parser_mgr().Ctx(), hctx, page); page.Wikie().Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode_.Tid__read).Write_body(bfr, wiki.Parser_mgr().Ctx(), hctx, page);
byte[] html_src = bfr.To_bry_and_clear();//page.Wikie().Html_mgr().Page_wtr_mgr().Gen(page, gplx.xowa.wikis.pages.Xopg_page_.Tid_read); // NOTE: must use wiki of page, not of owner tab; DATE:2015-03-05 byte[] html_src = bfr.To_bry_and_clear();//page.Wikie().Html_mgr().Page_wtr_mgr().Gen(page, gplx.xowa.wikis.pages.Xopg_view_mode_.Tid__read); // NOTE: must use wiki of page, not of owner tab; DATE:2015-03-05
byte[] html_head = page.Html_data().Custom_head_tags().To_html__style(bfr); byte[] html_head = page.Html_data().Custom_head_tags().To_html__style(bfr);
// fmt with mustache; write to file // fmt with mustache; write to file

View File

@ -17,6 +17,7 @@ package gplx.xowa.addons.bldrs.mass_parses.parses.wkrs; import gplx.*; import gp
import gplx.dbs.*; import gplx.xowa.addons.bldrs.mass_parses.dbs.*; import gplx.dbs.*; import gplx.xowa.addons.bldrs.mass_parses.dbs.*;
import gplx.xowa.files.origs.*; import gplx.xowa.files.origs.*;
import gplx.xowa.htmls.core.bldrs.*; import gplx.xowa.htmls.core.bldrs.*;
import gplx.xowa.wikis.pages.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*;
import gplx.xowa.addons.bldrs.mass_parses.parses.mgrs.*; import gplx.xowa.addons.bldrs.mass_parses.parses.utls.*; import gplx.xowa.addons.bldrs.mass_parses.parses.*; import gplx.xowa.addons.bldrs.mass_parses.parses.pools.*; import gplx.xowa.addons.bldrs.mass_parses.parses.mgrs.*; import gplx.xowa.addons.bldrs.mass_parses.parses.utls.*; import gplx.xowa.addons.bldrs.mass_parses.parses.*; import gplx.xowa.addons.bldrs.mass_parses.parses.pools.*;
import gplx.xowa.addons.wikis.fulltexts.indexers.bldrs.*; import gplx.xowa.addons.wikis.fulltexts.indexers.bldrs.*;
@ -75,7 +76,7 @@ public class Xomp_parse_wkr implements Gfo_invk {
wiki.File_mgr().Fsdb_mode().Tid__v2__mp__y_(); wiki.File_mgr().Fsdb_mode().Tid__v2__mp__y_();
// enable disable categories according to flag // enable disable categories according to flag
wiki.Html_mgr().Page_wtr_mgr().Wkr(gplx.xowa.wikis.pages.Xopg_page_.Tid_read).Ctgs_enabled_(cfg.Hdump_catboxs()); wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode_.Tid__read).Ctgs_enabled_(cfg.Hdump_catboxs());
// enable lnki_temp // enable lnki_temp
Xomp_lnki_temp_wkr logger = null; Xomp_lnki_temp_wkr logger = null;

View File

@ -56,7 +56,7 @@ public class Xop_mediawiki_wkr {
boolean is_wikitext = Xow_page_tid.Identify(wpg.Wiki().Domain_tid(), ttl.Ns().Id(), ttl.Page_db()) == Xow_page_tid.Tid_wikitext; boolean is_wikitext = Xow_page_tid.Identify(wpg.Wiki().Domain_tid(), ttl.Ns().Id(), ttl.Page_db()) == Xow_page_tid.Tid_wikitext;
byte[] orig_bry = Bry_.Empty; byte[] orig_bry = Bry_.Empty;
if (is_wikitext) { if (is_wikitext) {
wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_hdump(tmp_bfr, pctx, Xoh_wtr_ctx.Hdump, wpg); wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode_.Tid__read).Write_hdump(tmp_bfr, pctx, Xoh_wtr_ctx.Hdump, wpg);
// write categories // write categories
int ctgs_len = wpg.Wtxt().Ctgs__len(); int ctgs_len = wpg.Wtxt().Ctgs__len();

View File

@ -50,7 +50,7 @@ class Xog_find_box {
public void Hide() { public void Hide() {
app.Gui_mgr().Layout().Find_close(); app.Gui_mgr().Layout().Find_close();
Xog_tab_itm tab = win.Tab_mgr().Active_tab(); if (tab == Xog_tab_itm_.Null) return; Xog_tab_itm tab = win.Tab_mgr().Active_tab(); if (tab == Xog_tab_itm_.Null) return;
if (tab.View_mode() == Xopg_page_.Tid_read) // do not fire find("") for edit / html, else focus issues; DATE:2015-06-10 if (tab.View_mode() == Xopg_view_mode_.Tid__read) // do not fire find("") for edit / html, else focus issues; DATE:2015-06-10
Exec_find(prv_find_text, Bool_.N); Exec_find(prv_find_text, Bool_.N);
} }
public void Show_by_paste() { public void Show_by_paste() {
@ -72,7 +72,7 @@ class Xog_find_box {
private void Exec_find(String find, boolean highlight_matches) { private void Exec_find(String find, boolean highlight_matches) {
Xog_tab_itm tab = win.Tab_mgr().Active_tab(); if (tab == Xog_tab_itm_.Null) return; Xog_tab_itm tab = win.Tab_mgr().Active_tab(); if (tab == Xog_tab_itm_.Null) return;
find = String_.Replace(find, "\\", "\\\\"); // NOTE: backslashes are always literal, never escape codes; EX: "C:\new" "\n" means "\n", not (byte)10; DATE:2015-08-17 find = String_.Replace(find, "\\", "\\\\"); // NOTE: backslashes are always literal, never escape codes; EX: "C:\new" "\n" means "\n", not (byte)10; DATE:2015-08-17
boolean find_in_hdoc = tab.View_mode() == Xopg_page_.Tid_read; boolean find_in_hdoc = tab.View_mode() == Xopg_view_mode_.Tid__read;
if (find_in_hdoc) if (find_in_hdoc)
tab.Html_box().Html_js_eval_proc_as_str(Xog_js_procs.Win__find_in_hdoc , find, dir_fwd, case_match, wrap_search, highlight_matches); tab.Html_box().Html_js_eval_proc_as_str(Xog_js_procs.Win__find_in_hdoc , find, dir_fwd, case_match, wrap_search, highlight_matches);
else else

View File

@ -23,7 +23,7 @@ public class Xoapi_html_box implements Gfo_invk {
Xog_tab_itm tab = win.Active_tab(); if (tab == Xog_tab_itm_.Null) return; Xog_tab_itm tab = win.Active_tab(); if (tab == Xog_tab_itm_.Null) return;
Gfui_html html_box = tab.Html_itm().Html_box(); Gfui_html html_box = tab.Html_itm().Html_box();
html_box.Focus(); html_box.Focus();
if (tab.View_mode() != Xopg_page_.Tid_read) // if edit / html, place focus in edit box if (tab.View_mode() != Xopg_view_mode_.Tid__read) // if edit / html, place focus in edit box
html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box); html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box);
} }
public void Selection_focus() { public void Selection_focus() {

View File

@ -22,14 +22,14 @@ public class Xoapi_edit implements Gfo_invk {
win = app.Gui_mgr().Browser_win(); win = app.Gui_mgr().Browser_win();
} }
private boolean Active_tab_is_null() {return win.Tab_mgr().Active_tab_is_null();} private boolean Active_tab_is_null() {return win.Tab_mgr().Active_tab_is_null();}
private boolean Active_tab_is_edit() {return !win.Tab_mgr().Active_tab_is_null() && win.Tab_mgr().Active_tab().View_mode() == Xopg_page_.Tid_edit;} private boolean Active_tab_is_edit() {return !win.Tab_mgr().Active_tab_is_null() && win.Tab_mgr().Active_tab().View_mode() == Xopg_view_mode_.Tid__edit;}
public void Copy() {if (Active_tab_is_null()) return; win.Kit().Clipboard().Copy(win.Active_html_itm().Html_selected_get_text_or_href());} public void Copy() {if (Active_tab_is_null()) return; win.Kit().Clipboard().Copy(win.Active_html_itm().Html_selected_get_text_or_href());}
public void Select_all() {if (Active_tab_is_null()) return; Gfo_invk_.Invk_by_key(win.Win_box().Kit().Clipboard(), Gfui_clipboard_.Invk_select_all);} public void Select_all() {if (Active_tab_is_null()) return; Gfo_invk_.Invk_by_key(win.Win_box().Kit().Clipboard(), Gfui_clipboard_.Invk_select_all);}
public void Save() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Save(win.Active_tab(), false);} public void Save() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Save(win.Active_tab(), false);}
public void Save_draft() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Save(win.Active_tab(), true);} public void Save_draft() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Save(win.Active_tab(), true);}
public void Preview() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Preview(win.Active_tab());} public void Preview() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Preview(win.Active_tab());}
public void Dbg_tmpl() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Debug(win, Xopg_page_.Tid_edit);} public void Dbg_tmpl() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Debug(win, Xopg_view_mode_.Tid__edit);}
public void Dbg_html() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Debug(win, Xopg_page_.Tid_html);} public void Dbg_html() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Debug(win, Xopg_view_mode_.Tid__html);}
public void Focus_edit_box(){if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Focus(win, Xog_html_itm.Elem_id__xowa_edit_data_box);} public void Focus_edit_box(){if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Focus(win, Xog_html_itm.Elem_id__xowa_edit_data_box);}
public void Exec() { public void Exec() {
} }

View File

@ -23,9 +23,9 @@ public class Xoapi_view implements Gfo_invk {
this.app = app; this.win = app.Gui_mgr().Browser_win(); this.app = app; this.win = app.Gui_mgr().Browser_win();
} }
private boolean Active_tab_is_null() {return win.Tab_mgr().Active_tab_is_null();} private boolean Active_tab_is_null() {return win.Tab_mgr().Active_tab_is_null();}
public void Mode_read() {Mode(Xopg_page_.Tid_read);} public void Mode_read() {Mode(Xopg_view_mode_.Tid__read);}
public void Mode_edit() {Mode(Xopg_page_.Tid_edit);} public void Mode_edit() {Mode(Xopg_view_mode_.Tid__edit);}
public void Mode_html() {Mode(Xopg_page_.Tid_html);} public void Mode_html() {Mode(Xopg_view_mode_.Tid__html);}
private void Mode(byte v) {if (Active_tab_is_null()) return; win.Page__mode_(v);} private void Mode(byte v) {if (Active_tab_is_null()) return; win.Page__mode_(v);}
public void Reload() {if (Active_tab_is_null()) return; win.Page__reload();} public void Reload() {if (Active_tab_is_null()) return; win.Page__reload();}
public void Refresh() {if (Active_tab_is_null()) return; win.Page__refresh();} public void Refresh() {if (Active_tab_is_null()) return; win.Page__refresh();}

View File

@ -67,11 +67,11 @@ class Http_url_parser {
Gfo_qarg_mgr qarg_mgr = new Gfo_qarg_mgr().Init(url_obj.Qargs()); Gfo_qarg_mgr qarg_mgr = new Gfo_qarg_mgr().Init(url_obj.Qargs());
byte[] action_val = qarg_mgr.Read_bry_or("action", Bry_.Empty); byte[] action_val = qarg_mgr.Read_bry_or("action", Bry_.Empty);
if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__read)) if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__read))
this.action = Xopg_page_.Tid_read; this.action = Xopg_view_mode_.Tid__read;
else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__edit)) else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__edit))
this.action = Xopg_page_.Tid_edit; this.action = Xopg_view_mode_.Tid__edit;
else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__html)) else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__html))
this.action = Xopg_page_.Tid_html; this.action = Xopg_view_mode_.Tid__html;
else if (Bry_.Eq(action_val, Qarg__action__popup)) { else if (Bry_.Eq(action_val, Qarg__action__popup)) {
this.popup = true; this.popup = true;
this.popup_id = qarg_mgr.Read_str_or_null(Bry_.new_a7("popup_id")); this.popup_id = qarg_mgr.Read_str_or_null(Bry_.new_a7("popup_id"));

View File

@ -33,10 +33,10 @@ public class Http_url_parser_tst {
fxt.Test__parse("/en.wikipedia.org/wiki/Page_1/A/B/C", fxt.Make().Wiki_("en.wikipedia.org").Page_("Page_1/A/B/C")); fxt.Test__parse("/en.wikipedia.org/wiki/Page_1/A/B/C", fxt.Make().Wiki_("en.wikipedia.org").Page_("Page_1/A/B/C"));
// action=edit // action=edit
fxt.Test__parse("/en.wikipedia.org/wiki/Page_1?action=edit", fxt.Make().Wiki_("en.wikipedia.org").Page_("Page_1").Action_(Xopg_page_.Tid_edit)); fxt.Test__parse("/en.wikipedia.org/wiki/Page_1?action=edit", fxt.Make().Wiki_("en.wikipedia.org").Page_("Page_1").Action_(Xopg_view_mode_.Tid__edit));
// action=html // action=html
fxt.Test__parse("/en.wikipedia.org/wiki/Page_1?action=html", fxt.Make().Wiki_("en.wikipedia.org").Page_("Page_1").Action_(Xopg_page_.Tid_html)); fxt.Test__parse("/en.wikipedia.org/wiki/Page_1?action=html", fxt.Make().Wiki_("en.wikipedia.org").Page_("Page_1").Action_(Xopg_view_mode_.Tid__html));
// action=popup // action=popup
fxt.Test__parse("/en.wikipedia.org/wiki/Page_1?action=popup", fxt.Make().Wiki_("en.wikipedia.org").Page_("Page_1").Popup_(true)); fxt.Test__parse("/en.wikipedia.org/wiki/Page_1?action=popup", fxt.Make().Wiki_("en.wikipedia.org").Page_("Page_1").Popup_(true));

View File

@ -66,9 +66,10 @@ public class Xog_html_itm implements Xog_js_wkr, Gfo_invk, Gfo_evt_itm, Xoh_page
byte view_mode = owner_tab.View_mode(); byte view_mode = owner_tab.View_mode();
byte[] html_src = page.Wikie().Html_mgr().Page_wtr_mgr().Gen(page, this, view_mode); // NOTE: must use wiki of page, not of owner tab; DATE:2015-03-05 byte[] html_src = page.Wikie().Html_mgr().Page_wtr_mgr().Gen(page, this, view_mode); // NOTE: must use wiki of page, not of owner tab; DATE:2015-03-05
Html_src_(page, html_src); Html_src_(page, html_src);
if (view_mode == Xopg_page_.Tid_read){ // used only for Xosrh test; DATE:2014-01-29 if (view_mode == Xopg_view_mode_.Tid__read){ // used only for Xosrh test; DATE:2014-01-29
html_box.Html_js_eval_proc_as_str(Xog_js_procs.Win__focus_body); // NOTE: only focus if read so up / down will scroll box; edit / html should focus edit-box; DATE:2014-06-05 html_box.Html_js_eval_proc_as_str(Xog_js_procs.Win__focus_body); // NOTE: only focus if read so up / down will scroll box; edit / html should focus edit-box; DATE:2014-06-05
page.Root().Data_htm_(html_src); if (page.Root() != null) // NOTE:null when navigating to a new page in personal wikis; DATE:2019-03-20
page.Root().Data_htm_(html_src);
} }
} }
private void Html_src_(Xoae_page page, byte[] html_bry) { private void Html_src_(Xoae_page page, byte[] html_bry) {

View File

@ -109,7 +109,12 @@ public class Xog_tab_itm implements Gfo_invk {
tab_box.Tab_name_(tab_name); tab_box.Tab_name_(tab_name);
} }
public Xog_history_mgr History_mgr() {return history_mgr;} private Xog_history_mgr history_mgr = new Xog_history_mgr(); public Xog_history_mgr History_mgr() {return history_mgr;} private Xog_history_mgr history_mgr = new Xog_history_mgr();
public byte View_mode() {return view_mode;} public Xog_tab_itm View_mode_(byte v) {view_mode = v; return this;} private byte view_mode = Xopg_page_.Tid_read; public byte View_mode() {return view_mode;} private byte view_mode = Xopg_view_mode_.Tid__read;
public void View_mode_(byte v) {
view_mode = v;
if (view_mode != Xopg_view_mode_.Tid__read) // if read, don't bother adding "action=read"
page.Url().Qargs_mgr().Set_val_by_bry(Xoa_url_.Qarg__action, Xopg_view_mode_.To_bry(v));
}
public void Pin_toggle() {} public void Pin_toggle() {}
public void Show_url_bgn(Xoa_url url) { public void Show_url_bgn(Xoa_url url) {
this.tab_is_loading = true; this.tab_is_loading = true;
@ -161,7 +166,8 @@ public class Xog_tab_itm implements Gfo_invk {
if (wiki.Db_mgr().Save_mgr().Create_enabled() if (wiki.Db_mgr().Save_mgr().Create_enabled()
|| wiki.Page_mgr().Sync_mgr().Auto_enabled()) { || wiki.Page_mgr().Sync_mgr().Auto_enabled()) {
page = Xoae_page.New_edit(wiki, ttl); page = Xoae_page.New_edit(wiki, ttl);
view_mode = Xopg_page_.Tid_edit; page.Url_(url); // NOTE: need to set url else query args like action=edit will be lost; DATE:2019-03-20
view_mode = Xopg_view_mode_.Tid__edit;
history_mgr.Add(page); // NOTE: must put new_page on stack so that pressing back will pop new_page, not previous page history_mgr.Add(page); // NOTE: must put new_page on stack so that pressing back will pop new_page, not previous page
Xog_tab_itm_read_mgr.Show_page(this, page, false); Xog_tab_itm_read_mgr.Show_page(this, page, false);
} }

View File

@ -19,7 +19,7 @@ import gplx.xowa.wikis.nss.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Xog_tab_itm_edit_mgr { public class Xog_tab_itm_edit_mgr {
public static void Save(Xog_tab_itm tab, boolean quick_save) { public static void Save(Xog_tab_itm tab, boolean quick_save) {
if (tab.View_mode() != Xopg_page_.Tid_edit) return; // exit if not edit; handles ctrl+s being pressed in read/html modes if (tab.View_mode() != Xopg_view_mode_.Tid__edit) return; // exit if not edit; handles ctrl+s being pressed in read/html modes
// get text and save directly to text_db // get text and save directly to text_db
Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
@ -52,7 +52,7 @@ public class Xog_tab_itm_edit_mgr {
// update categories // update categories
try { try {
wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_page_.Tid_read); // NOTE: need to write html to fill Wtxt().Ctgs wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_view_mode_.Tid__read); // NOTE: need to write html to fill Wtxt().Ctgs
gplx.xowa.addons.wikis.ctgs.edits.Xoctg_edit_mgr.Update(wiki, page.Ttl().Page_db(), page_id, page.Wtxt().Ctgs__to_ary()); gplx.xowa.addons.wikis.ctgs.edits.Xoctg_edit_mgr.Update(wiki, page.Ttl().Page_db(), page_id, page.Wtxt().Ctgs__to_ary());
} catch (Exception e) { } catch (Exception e) {
Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to update categories; err=~{0}", Err_.Message_gplx_log(e)); Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to update categories; err=~{0}", Err_.Message_gplx_log(e));
@ -70,12 +70,12 @@ public class Xog_tab_itm_edit_mgr {
// force full reload of page; needed to refresh page_modified; DATE:2017-03-06 // force full reload of page; needed to refresh page_modified; DATE:2017-03-06
tab.Show_url_bgn(page.Url()); tab.Show_url_bgn(page.Url());
// win_itm.Page__mode_(Xopg_page_.Tid_read); // win_itm.Page__mode_(Xopg_view_mode_.Tid__read);
// win_itm.Page__async__bgn(tab); // win_itm.Page__async__bgn(tab);
} }
} }
public static void Preview(Xog_tab_itm tab) { public static void Preview(Xog_tab_itm tab) {
if (tab.View_mode() != Xopg_page_.Tid_edit) return; // exit if not edit; handles preview somehow being called? if (tab.View_mode() != Xopg_view_mode_.Tid__edit) return; // exit if not edit; handles preview somehow being called?
Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
Xog_html_itm html_itm = tab.Html_itm(); Xog_html_itm html_itm = tab.Html_itm();
@ -88,18 +88,18 @@ public class Xog_tab_itm_edit_mgr {
tab.Page_(new_page); new_page.Tab_data().Tab_(tab); // replace old page with new_page; DATE:2014-10-09 tab.Page_(new_page); new_page.Tab_data().Tab_(tab); // replace old page with new_page; DATE:2014-10-09
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001(); Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();
Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read); Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode_.Tid__read);
wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, new_page); wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, new_page);
byte[] new_html = tmp_bfr.To_bry_and_rls(); byte[] new_html = tmp_bfr.To_bry_and_rls();
new_page.Html_data().Edit_preview_(new_html); new_page.Html_data().Edit_preview_(new_html);
Invalidate(wiki); Invalidate(wiki);
win_itm.Page__mode_(Xopg_page_.Tid_edit); win_itm.Page__mode_(Xopg_view_mode_.Tid__edit);
html_itm.Scroll_page_by_id_gui(Xog_html_itm.Elem_id__first_heading);// NOTE: was originally directly; changed to call on thread; DATE:2014-05-03 html_itm.Scroll_page_by_id_gui(Xog_html_itm.Elem_id__first_heading);// NOTE: was originally directly; changed to call on thread; DATE:2014-05-03
win_itm.Page__async__bgn(tab); // NOTE: needed to show images during preview; DATE:2014-06-21 win_itm.Page__async__bgn(tab); // NOTE: needed to show images during preview; DATE:2014-06-21
} }
public static void Rename(Xog_tab_itm tab) { public static void Rename(Xog_tab_itm tab) {
if (tab.View_mode() != Xopg_page_.Tid_edit) return; // exit if not edit; handles ctrl+r being pressed if (tab.View_mode() != Xopg_view_mode_.Tid__edit) return; // exit if not edit; handles ctrl+r being pressed
Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
if (Bry_.Eq(page.Ttl().Page_db(), wiki.Props().Main_page())) { if (Bry_.Eq(page.Ttl().Page_db(), wiki.Props().Main_page())) {
win_itm.Usr_dlg().Warn_many("", "", "The Main Page cannot be renamed"); win_itm.Usr_dlg().Warn_many("", "", "The Main Page cannot be renamed");
@ -117,7 +117,7 @@ public class Xog_tab_itm_edit_mgr {
} }
wiki.Db_mgr().Save_mgr().Data_rename(page, new_ns_id, new_text); wiki.Db_mgr().Save_mgr().Data_rename(page, new_ns_id, new_text);
page.Ttl_(Xoa_ttl.Parse(wiki, Bry_.Add(page.Ttl().Ns().Name_db_w_colon(), new_text))); page.Ttl_(Xoa_ttl.Parse(wiki, Bry_.Add(page.Ttl().Ns().Name_db_w_colon(), new_text)));
win_itm.Page__mode_(Xopg_page_.Tid_read); win_itm.Page__mode_(Xopg_view_mode_.Tid__read);
win_itm.Usr_dlg().Prog_one("", "", "renamed page to {0}", String_.new_u8(page.Ttl().Full_txt_raw())); win_itm.Usr_dlg().Prog_one("", "", "renamed page to {0}", String_.new_u8(page.Ttl().Full_txt_raw()));
} }
public static void Focus(Xog_win_itm win, String elem_focus_id) { public static void Focus(Xog_win_itm win, String elem_focus_id) {

View File

@ -22,17 +22,17 @@ public class Xog_tab_itm_read_mgr {
public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read) {Show_page(tab, new_page, reset_to_read, false, false, Xog_history_stack.Nav_fwd);} public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read) {Show_page(tab, new_page, reset_to_read, false, false, Xog_history_stack.Nav_fwd);}
public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read, boolean new_page_is_same, boolean show_is_err, byte history_nav_type) { public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read, boolean new_page_is_same, boolean show_is_err, byte history_nav_type) {
if (reset_to_read) if (reset_to_read)
tab.View_mode_(Xopg_page_.Tid_read); tab.View_mode_(Xopg_view_mode_.Tid__read);
// set View_mode based on "action="; DATE:2018-11-03 // set View_mode based on "action="; DATE:2018-11-03
byte[] action_val = new_page.Url().Qargs_mgr().Get_val_bry_or(Xoa_url_.Qarg__action, Xoa_url_.Qarg__action__read); byte[] action_val = new_page.Url().Qargs_mgr().Get_val_bry_or(Xoa_url_.Qarg__action, Xoa_url_.Qarg__action__read);
byte view_mode = Xopg_page_.Tid_read; byte view_mode = Xopg_view_mode_.Tid__read;
if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__read)) if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__read))
view_mode = Xopg_page_.Tid_read; view_mode = Xopg_view_mode_.Tid__read;
else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__edit)) else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__edit))
view_mode = Xopg_page_.Tid_edit; view_mode = Xopg_view_mode_.Tid__edit;
else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__html)) else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__html))
view_mode = Xopg_page_.Tid_html; view_mode = Xopg_view_mode_.Tid__html;
tab.View_mode_(view_mode); tab.View_mode_(view_mode);
Xoae_page cur_page = tab.Page(); Xog_html_itm html_itm = tab.Html_itm(); Gfui_html html_box = html_itm.Html_box(); Xoae_page cur_page = tab.Page(); Xog_html_itm html_itm = tab.Html_itm(); Gfui_html html_box = html_itm.Html_box();
@ -63,7 +63,7 @@ public class Xog_tab_itm_read_mgr {
tab.Tab_mgr().Tab_mgr().Focus(); tab.Tab_mgr().Tab_mgr().Focus();
html_box.Focus(); html_box.Focus();
win.Usr_dlg().Prog_none("", "", ""); // blank out status bar win.Usr_dlg().Prog_none("", "", ""); // blank out status bar
if (tab.View_mode() == Xopg_page_.Tid_read) if (tab.View_mode() == Xopg_view_mode_.Tid__read)
html_itm.Scroll_page_by_bmk_gui(); html_itm.Scroll_page_by_bmk_gui();
else else
Gfo_invk_.Invk_by_val(tab.Html_itm().Cmd_async(), Xog_html_itm.Invk_html_elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box); // NOTE: must be async, else won't work; DATE:2014-06-05 Gfo_invk_.Invk_by_val(tab.Html_itm().Cmd_async(), Xog_html_itm.Invk_html_elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box); // NOTE: must be async, else won't work; DATE:2014-06-05
@ -90,7 +90,7 @@ public class Xog_tab_itm_read_mgr {
win.Usr_dlg().Warn_many("", "", err_msg); win.Usr_dlg().Warn_many("", "", err_msg);
win.App().Log_wtr().Queue_enabled_(false); win.App().Log_wtr().Queue_enabled_(false);
Xoae_page fail_page = wiki.Data_mgr().Load_page_by_ttl(ttl); Xoae_page fail_page = wiki.Data_mgr().Load_page_by_ttl(ttl);
tab.View_mode_(Xopg_page_.Tid_edit); tab.View_mode_(Xopg_view_mode_.Tid__edit);
Update_selected_tab(win, url, ttl); Update_selected_tab(win, url, ttl);
Show_page(tab, fail_page, false, false, true, Xog_history_stack.Nav_fwd); Show_page(tab, fail_page, false, false, true, Xog_history_stack.Nav_fwd);
win.Win_box().Text_(err_msg); win.Win_box().Text_(err_msg);

View File

@ -69,17 +69,17 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
else if (ctx.Match(k, Gfui_html.Evt_location_changing)) Page__navigate_by_href(tab_mgr.Active_tab(), Xoh_href_gui_utl.Standardize_xowa_link(m.ReadStr("v"))); else if (ctx.Match(k, Gfui_html.Evt_location_changing)) Page__navigate_by_href(tab_mgr.Active_tab(), Xoh_href_gui_utl.Standardize_xowa_link(m.ReadStr("v")));
else if (ctx.Match(k, Invk_page_refresh)) Page__refresh(); else if (ctx.Match(k, Invk_page_refresh)) Page__refresh();
else if (ctx.Match(k, Invk_page_async_exec)) Xog_async_wkr.Async(((Xog_tab_itm)m.ReadObj("v"))); else if (ctx.Match(k, Invk_page_async_exec)) Xog_async_wkr.Async(((Xog_tab_itm)m.ReadObj("v")));
else if (ctx.Match(k, Invk_page_view_read)) Page__mode_(Xopg_page_.Tid_read); else if (ctx.Match(k, Invk_page_view_read)) Page__mode_(Xopg_view_mode_.Tid__read);
else if (ctx.Match(k, Invk_page_view_edit)) Page__mode_edit_(); else if (ctx.Match(k, Invk_page_view_edit)) Page__mode_edit_();
else if (ctx.Match(k, Invk_page_view_html)) Page__mode_(Xopg_page_.Tid_html); else if (ctx.Match(k, Invk_page_view_html)) Page__mode_(Xopg_view_mode_.Tid__html);
else if (ctx.Match(k, Invk_page_edit_save)) Xog_tab_itm_edit_mgr.Save(tab_mgr.Active_tab(), Bool_.N); else if (ctx.Match(k, Invk_page_edit_save)) Xog_tab_itm_edit_mgr.Save(tab_mgr.Active_tab(), Bool_.N);
else if (ctx.Match(k, Invk_page_edit_save_draft)) Xog_tab_itm_edit_mgr.Save(tab_mgr.Active_tab(), Bool_.Y); else if (ctx.Match(k, Invk_page_edit_save_draft)) Xog_tab_itm_edit_mgr.Save(tab_mgr.Active_tab(), Bool_.Y);
else if (ctx.Match(k, Invk_page_edit_preview)) Xog_tab_itm_edit_mgr.Preview(tab_mgr.Active_tab()); else if (ctx.Match(k, Invk_page_edit_preview)) Xog_tab_itm_edit_mgr.Preview(tab_mgr.Active_tab());
else if (ctx.Match(k, Invk_page_edit_rename)) Xog_tab_itm_edit_mgr.Rename(tab_mgr.Active_tab()); else if (ctx.Match(k, Invk_page_edit_rename)) Xog_tab_itm_edit_mgr.Rename(tab_mgr.Active_tab());
else if (ctx.Match(k, Invk_page_edit_focus_box)) Xog_tab_itm_edit_mgr.Focus(this, Xog_html_itm.Elem_id__xowa_edit_data_box); else if (ctx.Match(k, Invk_page_edit_focus_box)) Xog_tab_itm_edit_mgr.Focus(this, Xog_html_itm.Elem_id__xowa_edit_data_box);
else if (ctx.Match(k, Invk_page_edit_focus_first)) Xog_tab_itm_edit_mgr.Focus(this, Xog_html_itm.Elem_id__first_heading); else if (ctx.Match(k, Invk_page_edit_focus_first)) Xog_tab_itm_edit_mgr.Focus(this, Xog_html_itm.Elem_id__first_heading);
else if (ctx.Match(k, Invk_page_dbg_html)) Xog_tab_itm_edit_mgr.Debug(this, Xopg_page_.Tid_html); else if (ctx.Match(k, Invk_page_dbg_html)) Xog_tab_itm_edit_mgr.Debug(this, Xopg_view_mode_.Tid__html);
else if (ctx.Match(k, Invk_page_dbg_wiki)) Xog_tab_itm_edit_mgr.Debug(this, Xopg_page_.Tid_edit); else if (ctx.Match(k, Invk_page_dbg_wiki)) Xog_tab_itm_edit_mgr.Debug(this, Xopg_view_mode_.Tid__edit);
else if (ctx.Match(k, Invk_page_goto)) Page__navigate_by_url_bar(m.ReadStr("v")); else if (ctx.Match(k, Invk_page_goto)) Page__navigate_by_url_bar(m.ReadStr("v"));
else if (ctx.Match(k, Invk_page_goto_recent)) Page__navigate_by_url_bar(app.Usere().History_mgr().Get_at_last()); else if (ctx.Match(k, Invk_page_goto_recent)) Page__navigate_by_url_bar(app.Usere().History_mgr().Get_at_last());
else if (ctx.Match(k, Invk_history_bwd)) {Page__navigate_by_history(Bool_.N);} else if (ctx.Match(k, Invk_history_bwd)) {Page__navigate_by_history(Bool_.N);}
@ -162,11 +162,11 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
// HACK: when "edit" is clicked, always reload page from database; handles rarely-reproducible issue of "edit-after-rename" causing older versions to show up // HACK: when "edit" is clicked, always reload page from database; handles rarely-reproducible issue of "edit-after-rename" causing older versions to show up
Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki();
page = wiki.Page_mgr().Load_page(page.Url(), page.Ttl(), tab); page = wiki.Page_mgr().Load_page(page.Url(), page.Ttl(), tab);
Page__mode_(Xopg_page_.Tid_edit); Page__mode_(Xopg_view_mode_.Tid__edit);
} }
public void Page__mode_(byte new_mode_tid) { public void Page__mode_(byte new_mode_tid) {
Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki();
if ( new_mode_tid == Xopg_page_.Tid_read // used to be && cur_view_tid == Edit; removed clause else redlinks wouldn't show when going form html to read (or clicking read multiple times) DATE: 2013-11-26; if ( new_mode_tid == Xopg_view_mode_.Tid__read // used to be && cur_view_tid == Edit; removed clause else redlinks wouldn't show when going form html to read (or clicking read multiple times) DATE: 2013-11-26;
&& page.Db().Page().Exists() // if new page, don't try to reload && page.Db().Page().Exists() // if new page, don't try to reload
) { ) {
// NOTE: if moving from "Edit" to "Read", reload page (else Preview changes will still show); NOTE: do not call Exec_page_reload / Exec_page_refresh, which will fire redlinks code // NOTE: if moving from "Edit" to "Read", reload page (else Preview changes will still show); NOTE: do not call Exec_page_reload / Exec_page_refresh, which will fire redlinks code

View File

@ -21,9 +21,9 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
private Xoh_page_wtr_wkr edit_wtr, html_wtr, read_wtr; private Xoh_page_wtr_wkr edit_wtr, html_wtr, read_wtr;
public Xoh_page_wtr_mgr(boolean html_capable) { public Xoh_page_wtr_mgr(boolean html_capable) {
this.html_capable = html_capable; this.html_capable = html_capable;
this.read_wtr = new Xoh_page_wtr_wkr(this, Xopg_page_.Tid_read); this.read_wtr = new Xoh_page_wtr_wkr(this, Xopg_view_mode_.Tid__read);
this.edit_wtr = new Xoh_page_wtr_wkr(this, Xopg_page_.Tid_edit); this.edit_wtr = new Xoh_page_wtr_wkr(this, Xopg_view_mode_.Tid__edit);
this.html_wtr = new Xoh_page_wtr_wkr(this, Xopg_page_.Tid_html); this.html_wtr = new Xoh_page_wtr_wkr(this, Xopg_view_mode_.Tid__html);
} }
public boolean Html_capable() {return html_capable;} public Xoh_page_wtr_mgr Html_capable_(boolean v) {html_capable = v; return this;} private boolean html_capable; public boolean Html_capable() {return html_capable;} public Xoh_page_wtr_mgr Html_capable_(boolean v) {html_capable = v; return this;} private boolean html_capable;
public byte[] Css_common_bry() {return css_common_bry;} private byte[] css_common_bry; public byte[] Css_common_bry() {return css_common_bry;} private byte[] css_common_bry;
@ -61,9 +61,9 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
} }
public Xoh_page_wtr_wkr Wkr(byte output_tid) { public Xoh_page_wtr_wkr Wkr(byte output_tid) {
switch (output_tid) { switch (output_tid) {
case Xopg_page_.Tid_edit: return edit_wtr; case Xopg_view_mode_.Tid__edit: return edit_wtr;
case Xopg_page_.Tid_html: return html_wtr; case Xopg_view_mode_.Tid__html: return html_wtr;
case Xopg_page_.Tid_read: return read_wtr; case Xopg_view_mode_.Tid__read: return read_wtr;
default: throw Err_.new_unhandled(output_tid); default: throw Err_.new_unhandled(output_tid);
} }
} }

View File

@ -25,7 +25,7 @@ public class Xoh_page_wtr_mgr_tst {
Gfo_invk_.Invk_by_val(portal_mgr, Xow_portal_mgr.Invk_div_logo_, Bry_.new_a7("~{portal_nav_main_href}")); Gfo_invk_.Invk_by_val(portal_mgr, Xow_portal_mgr.Invk_div_logo_, Bry_.new_a7("~{portal_nav_main_href}"));
portal_mgr.Init_assert(); portal_mgr.Init_assert();
Xoh_page_wtr_mgr page_wtr_mgr = new Xoh_page_wtr_mgr(true); Xoh_page_wtr_mgr page_wtr_mgr = new Xoh_page_wtr_mgr(true);
page_wtr_mgr.Gen(wiki.Parser_mgr().Ctx().Page(), Xopg_page_.Tid_read); page_wtr_mgr.Gen(wiki.Parser_mgr().Ctx().Page(), Xopg_view_mode_.Tid__read);
Tfds.Eq(String_.new_a7(portal_mgr.Div_logo_bry(true)), "/site/en.wikipedia.org/wiki/"); Tfds.Eq(String_.new_a7(portal_mgr.Div_logo_bry(true)), "/site/en.wikipedia.org/wiki/");
} }
@Test public void Skip__math__basic() { @Test public void Skip__math__basic() {

View File

@ -41,16 +41,16 @@ public class Xoh_page_wtr_wkr {
wdata_lang_wtr.Page_(page); wdata_lang_wtr.Page_(page);
byte view_mode = page_mode; byte view_mode = page_mode;
switch (page_mode) { switch (page_mode) {
case Xopg_page_.Tid_edit: fmtr = mgr.Page_edit_fmtr(); break; case Xopg_view_mode_.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_view_mode_.Tid__html: fmtr = mgr.Page_read_fmtr(); view_mode = Xopg_view_mode_.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(); case Xopg_view_mode_.Tid__read: fmtr = mgr.Page_read_fmtr();
// ctx.Page().Redlink_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); NOTE: probably put in to handle reusable redlink lists; redlink lists are now instantiated per page, so clear is not useful // ctx.Page().Redlink_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); NOTE: probably put in to handle reusable redlink lists; redlink lists are now instantiated per page, so clear is not useful
break; break;
} }
Bry_bfr page_bfr = wiki.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page rv to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do Bry_bfr page_bfr = wiki.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page rv to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do
try { try {
Xoh_wtr_ctx hctx = null; Xoh_wtr_ctx hctx = null;
if (page_mode == Xopg_page_.Tid_html if (page_mode == Xopg_view_mode_.Tid__html
&& wiki.Html__hdump_mgr().Load_mgr().Html_mode().Tid() == Xow_hdump_mode.Hdump_save.Tid()) { && wiki.Html__hdump_mgr().Load_mgr().Html_mode().Tid() == Xow_hdump_mode.Hdump_save.Tid()) {
hctx = Xoh_wtr_ctx.Hdump; hctx = Xoh_wtr_ctx.Hdump;
Write_body(page_bfr, ctx, hctx, page); Write_body(page_bfr, ctx, hctx, page);
@ -62,7 +62,7 @@ public class Xoh_page_wtr_wkr {
Write_body(page_bfr, ctx, hctx, page); Write_body(page_bfr, ctx, hctx, page);
Write_page_by_tid(ctx, hctx, view_mode, rv, fmtr, page_bfr.To_bry_and_rls()); Write_page_by_tid(ctx, hctx, view_mode, rv, fmtr, page_bfr.To_bry_and_rls());
scripting_mgr.Write(rv, wiki, page); scripting_mgr.Write(rv, wiki, page);
if (page_mode == Xopg_page_.Tid_html) // if html, write page again, but wrap it in html skin this time if (page_mode == Xopg_view_mode_.Tid__html) // if html, write page again, but wrap it in html skin this time
Write_page_by_tid(ctx, hctx, page_mode, rv, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(rv.To_bry_and_clear())); Write_page_by_tid(ctx, hctx, page_mode, rv, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(rv.To_bry_and_clear()));
wdata_lang_wtr.Page_(null); wdata_lang_wtr.Page_(null);
} }
@ -94,7 +94,7 @@ public class Xoh_page_wtr_wkr {
// byte[] html_content_editable = wiki.Gui_mgr().Cfg_browser().Content_editable() ? Content_editable_bry : Bry_.Empty; // byte[] html_content_editable = wiki.Gui_mgr().Cfg_browser().Content_editable() ? Content_editable_bry : Bry_.Empty;
byte[] html_content_editable = Bry_.Empty; byte[] html_content_editable = Bry_.Empty;
byte[] page_content_sub = Xoh_page_wtr_wkr_.Bld_page_content_sub(app, wiki, page, tmp_bfr); byte[] page_content_sub = Xoh_page_wtr_wkr_.Bld_page_content_sub(app, wiki, page, tmp_bfr);
byte[] js_edit_toolbar_bry = html_gen_tid == Xopg_page_.Tid_edit ? wiki.Fragment_mgr().Html_js_edit_toolbar() : Bry_.Empty; byte[] js_edit_toolbar_bry = html_gen_tid == Xopg_view_mode_.Tid__edit ? wiki.Fragment_mgr().Html_js_edit_toolbar() : Bry_.Empty;
Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr(); Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr();
if (vnt_mgr.Enabled()) { if (vnt_mgr.Enabled()) {
byte[] converted_title = vnt_mgr.Convert_lang().Converted_title(); // prefer converted title byte[] converted_title = vnt_mgr.Convert_lang().Converted_title(); // prefer converted title
@ -110,7 +110,7 @@ public class Xoh_page_wtr_wkr {
fmtr.Bld_bfr_many(bfr fmtr.Bld_bfr_many(bfr
, root_dir_bry, Xoa_app_.Version, Xoa_app_.Build_date, app.Tcp_server().Running_str() , root_dir_bry, Xoa_app_.Version, Xoa_app_.Build_date, app.Tcp_server().Running_str()
, page.Db().Page().Id(), page.Ttl().Full_db() , page.Db().Page().Id(), page.Ttl().Full_db()
, page_name, page.Html_data().Page_heading().Init(wiki, html_gen_tid == Xopg_page_.Tid_read, page.Html_data(), page.Ttl().Full_db(), page_display_title) , page_name, page.Html_data().Page_heading().Init(wiki, html_gen_tid == Xopg_view_mode_.Tid__read, page.Html_data(), page.Ttl().Full_db(), page_display_title)
, modified_on_msg , modified_on_msg
, mgr.Css_common_bry(), mgr.Css_wiki_bry() , mgr.Css_common_bry(), mgr.Css_wiki_bry()
, mgr.Css_night_bry(nightmode_enabled) , mgr.Css_night_bry(nightmode_enabled)
@ -146,7 +146,7 @@ public class Xoh_page_wtr_wkr {
byte[] data_raw = page.Db().Text().Text_bry(); byte[] data_raw = page.Db().Text().Text_bry();
int bfr_page_bgn = bfr.Len(); int bfr_page_bgn = bfr.Len();
boolean page_tid_uses_pre = false; boolean page_tid_uses_pre = false;
if (page_mode == Xopg_page_.Tid_edit) if (page_mode == Xopg_view_mode_.Tid__edit)
Write_body_edit(bfr, data_raw, page_ns_id, page_tid); Write_body_edit(bfr, data_raw, page_ns_id, page_tid);
else { else {
switch (page_tid) { switch (page_tid) {

View File

@ -57,7 +57,7 @@ class Xoh_page_wtr_fxt {
Xoae_page page = wiki.Parser_mgr().Ctx().Page(); Xoae_page page = wiki.Parser_mgr().Ctx().Page();
page.Db().Text().Text_bry_(Bry_.new_u8(raw)); page.Db().Text().Text_bry_(Bry_.new_u8(raw));
Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr(); Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr();
Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_page_.Tid_edit); Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_view_mode_.Tid__edit);
wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, page); wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, page);
Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); Tfds.Eq(expd, tmp_bfr.To_str_and_clear());
} }
@ -67,7 +67,7 @@ class Xoh_page_wtr_fxt {
page.Ttl_(Xoa_ttl.Parse(wiki, Bry_.new_a7(page_name))); page.Ttl_(Xoa_ttl.Parse(wiki, Bry_.new_a7(page_name)));
page.Db().Text().Text_bry_(Bry_.new_u8(page_text)); page.Db().Text().Text_bry_(Bry_.new_u8(page_text));
Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr(); Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr();
Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_page_.Tid_read); Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_view_mode_.Tid__read);
wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, page); wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, page);
Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); Tfds.Eq(expd, tmp_bfr.To_str_and_clear());
} }

View File

@ -46,7 +46,7 @@ public class Xow_hdump_mgr__save {
public void Bld_hdump(Xoae_page page) { public void Bld_hdump(Xoae_page page) {
page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will keep incrementing upwards page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will keep incrementing upwards
Xoh_wtr_ctx hctx = Xoh_wtr_ctx.Hdump_by_hzip_tid(dflt_hzip_tid); Xoh_wtr_ctx hctx = Xoh_wtr_ctx.Hdump_by_hzip_tid(dflt_hzip_tid);
wiki.Html__wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, page.Wikie().Parser_mgr().Ctx(), hctx, page); // save as hdump_fmt wiki.Html__wtr_mgr().Wkr(Xopg_view_mode_.Tid__read).Write_body(tmp_bfr, page.Wikie().Parser_mgr().Ctx(), hctx, page); // save as hdump_fmt
page.Db().Html().Html_bry_(tmp_bfr.To_bry_and_clear()); page.Db().Html().Html_bry_(tmp_bfr.To_bry_and_clear());
} }
private byte[] Write(Xoh_hzip_bfr bfr, Xow_wiki wiki, Xoae_page page, Xoh_page hpg, Xoh_hzip_mgr hzip_mgr, Io_stream_zip_mgr zip_mgr, int zip_tid, int hzip_tid, byte[] src) { private byte[] Write(Xoh_hzip_bfr bfr, Xow_wiki wiki, Xoae_page page, Xoh_page hpg, Xoh_hzip_mgr hzip_mgr, Io_stream_zip_mgr zip_mgr, int zip_tid, int hzip_tid, byte[] src) {

View File

@ -53,7 +53,7 @@ public class Xob_hdump_bldr implements Gfo_invk {
boolean is_wikitext = Xow_page_tid.Identify(wpg.Wiki().Domain_tid(), ttl.Ns().Id(), ttl.Page_db()) == Xow_page_tid.Tid_wikitext; boolean is_wikitext = Xow_page_tid.Identify(wpg.Wiki().Domain_tid(), ttl.Ns().Id(), ttl.Page_db()) == Xow_page_tid.Tid_wikitext;
byte[] orig_bry = Bry_.Empty; byte[] orig_bry = Bry_.Empty;
if (is_wikitext) { if (is_wikitext) {
wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_hdump(tmp_bfr, ctx, Xoh_wtr_ctx.Hdump, wpg); wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode_.Tid__read).Write_hdump(tmp_bfr, ctx, Xoh_wtr_ctx.Hdump, wpg);
orig_bry = tmp_bfr.To_bry_and_clear(); orig_bry = tmp_bfr.To_bry_and_clear();
wpg.Db().Html().Html_bry_(orig_bry); wpg.Db().Html().Html_bry_(orig_bry);
} }

View File

@ -72,7 +72,7 @@ public class Xoh_head_mgr implements gplx.core.brys.Bfr_arg {
itm__xo_elem.Enabled_y_(); itm__xo_elem.Enabled_y_();
itm__collapsible.Enabled_y_(); itm__collapsible.Enabled_y_();
itm__navframe.Enabled_y_(); itm__navframe.Enabled_y_();
boolean popups_enabled = html_gen_tid != Xopg_page_.Tid_edit && wiki.Html_mgr().Head_mgr().Popup_mgr().Enabled(); boolean popups_enabled = html_gen_tid != Xopg_view_mode_.Tid__edit && wiki.Html_mgr().Head_mgr().Popup_mgr().Enabled();
itm__popups.Enabled_(popups_enabled); itm__popups.Enabled_(popups_enabled);
return this; return this;
} }

View File

@ -133,9 +133,9 @@ public class Xow_portal_mgr implements Gfo_invk {
Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); Bry_bfr tmp_bfr = bfr_mkr.Get_k004();
byte[] read_cls = Bry_.Empty, edit_cls = Bry_.Empty, html_cls = Bry_.Empty; byte[] read_cls = Bry_.Empty, edit_cls = Bry_.Empty, html_cls = Bry_.Empty;
switch (output_tid) { switch (output_tid) {
case Xopg_page_.Tid_read: read_cls = Cls_selected_y; break; case Xopg_view_mode_.Tid__read: read_cls = Cls_selected_y; break;
case Xopg_page_.Tid_edit: edit_cls = Cls_selected_y; break; case Xopg_view_mode_.Tid__edit: edit_cls = Cls_selected_y; break;
case Xopg_page_.Tid_html: html_cls = Cls_selected_y; break; case Xopg_view_mode_.Tid__html: html_cls = Cls_selected_y; break;
} }
// build url_fragment with action query argument; EX: "/wiki/Page_name?action=" // build url_fragment with action query argument; EX: "/wiki/Page_name?action="

View File

@ -14,6 +14,21 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/ */
package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
public class Xopg_page_ { public class Xopg_view_mode_ {
public static final byte Tid_read = 0, Tid_edit = 1, Tid_html = 2; public static final byte
Tid__read = 0
, Tid__edit = 1
, Tid__html = 2;
public static final byte[]
Bry__read = Bry_.new_a7("read")
, Bry__edit = Bry_.new_a7("edit")
, Bry__html = Bry_.new_a7("html");
public static byte[] To_bry(byte tid) {
switch (tid) {
case Tid__read: return Bry__read;
case Tid__edit: return Bry__edit;
case Tid__html: return Bry__html;
default: throw Err_.new_unhandled_default(tid);
}
}
} }

View File

@ -49,7 +49,7 @@ class Xox_xowa_html_cmd_fxt {
Xop_root_tkn root = fxt.Exec_parse_page_all_as_root(raw_bry); Xop_root_tkn root = fxt.Exec_parse_page_all_as_root(raw_bry);
fxt.Page().Root_(root); fxt.Page().Root_(root);
html_mgr.Html_wtr().Write_doc(bfr, fxt.Ctx(), raw_bry, root); html_mgr.Html_wtr().Write_doc(bfr, fxt.Ctx(), raw_bry, root);
html_mgr.Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_page(bfr, fxt.Page(), fxt.Ctx(), Xoh_page_html_source_.Wtr); html_mgr.Page_wtr_mgr().Wkr(Xopg_view_mode_.Tid__read).Write_page(bfr, fxt.Page(), fxt.Ctx(), Xoh_page_html_source_.Wtr);
Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); Tfds.Eq_str_lines(expd, bfr.To_str_and_clear());
} }
} }