mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Gui: Fix Read / Edit / HTML not working by keyboard shortcuts / in personal wikis [#392]
This commit is contained in:
@@ -21,9 +21,9 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
|
||||
private Xoh_page_wtr_wkr edit_wtr, html_wtr, read_wtr;
|
||||
public Xoh_page_wtr_mgr(boolean html_capable) {
|
||||
this.html_capable = html_capable;
|
||||
this.read_wtr = new Xoh_page_wtr_wkr(this, Xopg_page_.Tid_read);
|
||||
this.edit_wtr = new Xoh_page_wtr_wkr(this, Xopg_page_.Tid_edit);
|
||||
this.html_wtr = new Xoh_page_wtr_wkr(this, Xopg_page_.Tid_html);
|
||||
this.read_wtr = new Xoh_page_wtr_wkr(this, Xopg_view_mode_.Tid__read);
|
||||
this.edit_wtr = new Xoh_page_wtr_wkr(this, Xopg_view_mode_.Tid__edit);
|
||||
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 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) {
|
||||
switch (output_tid) {
|
||||
case Xopg_page_.Tid_edit: return edit_wtr;
|
||||
case Xopg_page_.Tid_html: return html_wtr;
|
||||
case Xopg_page_.Tid_read: return read_wtr;
|
||||
case Xopg_view_mode_.Tid__edit: return edit_wtr;
|
||||
case Xopg_view_mode_.Tid__html: return html_wtr;
|
||||
case Xopg_view_mode_.Tid__read: return read_wtr;
|
||||
default: throw Err_.new_unhandled(output_tid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}"));
|
||||
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().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/");
|
||||
}
|
||||
@Test public void Skip__math__basic() {
|
||||
|
||||
@@ -41,16 +41,16 @@ public class Xoh_page_wtr_wkr {
|
||||
wdata_lang_wtr.Page_(page);
|
||||
byte view_mode = page_mode;
|
||||
switch (page_mode) {
|
||||
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();
|
||||
case Xopg_view_mode_.Tid__edit: fmtr = mgr.Page_edit_fmtr(); break;
|
||||
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_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
|
||||
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
|
||||
try {
|
||||
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()) {
|
||||
hctx = Xoh_wtr_ctx.Hdump;
|
||||
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_page_by_tid(ctx, hctx, view_mode, rv, fmtr, page_bfr.To_bry_and_rls());
|
||||
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()));
|
||||
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 = Bry_.Empty;
|
||||
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();
|
||||
if (vnt_mgr.Enabled()) {
|
||||
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
|
||||
, root_dir_bry, Xoa_app_.Version, Xoa_app_.Build_date, app.Tcp_server().Running_str()
|
||||
, 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
|
||||
, mgr.Css_common_bry(), mgr.Css_wiki_bry()
|
||||
, mgr.Css_night_bry(nightmode_enabled)
|
||||
@@ -146,7 +146,7 @@ public class Xoh_page_wtr_wkr {
|
||||
byte[] data_raw = page.Db().Text().Text_bry();
|
||||
int bfr_page_bgn = bfr.Len();
|
||||
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);
|
||||
else {
|
||||
switch (page_tid) {
|
||||
|
||||
@@ -57,7 +57,7 @@ class Xoh_page_wtr_fxt {
|
||||
Xoae_page page = wiki.Parser_mgr().Ctx().Page();
|
||||
page.Db().Text().Text_bry_(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);
|
||||
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);
|
||||
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.Db().Text().Text_bry_(Bry_.new_u8(page_text));
|
||||
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);
|
||||
Tfds.Eq(expd, tmp_bfr.To_str_and_clear());
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class Xow_hdump_mgr__save {
|
||||
public void Bld_hdump(Xoae_page page) {
|
||||
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);
|
||||
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());
|
||||
}
|
||||
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) {
|
||||
|
||||
@@ -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;
|
||||
byte[] orig_bry = Bry_.Empty;
|
||||
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();
|
||||
wpg.Db().Html().Html_bry_(orig_bry);
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ public class Xoh_head_mgr implements gplx.core.brys.Bfr_arg {
|
||||
itm__xo_elem.Enabled_y_();
|
||||
itm__collapsible.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);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -133,9 +133,9 @@ public class Xow_portal_mgr implements Gfo_invk {
|
||||
Bry_bfr tmp_bfr = bfr_mkr.Get_k004();
|
||||
byte[] read_cls = Bry_.Empty, edit_cls = Bry_.Empty, html_cls = Bry_.Empty;
|
||||
switch (output_tid) {
|
||||
case Xopg_page_.Tid_read: read_cls = Cls_selected_y; break;
|
||||
case Xopg_page_.Tid_edit: edit_cls = Cls_selected_y; break;
|
||||
case Xopg_page_.Tid_html: html_cls = Cls_selected_y; break;
|
||||
case Xopg_view_mode_.Tid__read: read_cls = Cls_selected_y; break;
|
||||
case Xopg_view_mode_.Tid__edit: edit_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="
|
||||
|
||||
Reference in New Issue
Block a user