diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java
index 06f5579bc..a6250b9d4 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xocfg_mgr.java
@@ -33,7 +33,8 @@ public class Xocfg_mgr {
public void Clear() {
cache_mgr.Clear();
}
- public void Bind_many_app(Gfo_invk sub, String... keys) {Bind_many(sub, Xocfg_mgr.Ctx__app, keys);}
+ public void Bind_many_app (Gfo_invk sub, String... keys) {Bind_many(sub, Xocfg_mgr.Ctx__app, keys);}
+ public void Bind_many_wiki (Gfo_invk sub, Xow_wiki wiki, String... keys) {Bind_many(sub, wiki.Domain_itm().Abrv_xo_str(), keys);}
public void Bind_many(Gfo_invk sub, String ctx, String... keys) {
try {
for (String key : keys) {
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java
index 61833dfcf..8e58356e2 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_map_tbl.java
@@ -38,8 +38,18 @@ public class Xocfg_map_tbl implements Db_tbl {
public void Upsert(int map_src, int map_trg, int map_sort) {
Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__map_src, fld__map_trg), map_src, map_trg, map_sort);
}
- public int Select_next_sort(int owner_id) {
- Db_rdr rdr = conn.Stmt_select_max(tbl_name, fld__map_sort, fld__map_src).Crt_int(fld__map_src, owner_id).Exec_select__rls_auto();
+ public int Select_sort_or_next(int src_id, int trg_id) {
+ // select map_sort by map_src,map_trg
+ Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__map_src, fld__map_trg).Crt_int(fld__map_src, src_id).Crt_int(fld__map_trg, trg_id).Exec_select__rls_auto();
+ try {
+ if (rdr.Move_next()) {
+ return rdr.Read_int(fld__map_sort);
+ }
+ }
+ finally {rdr.Rls();}
+
+ // pairing doesn't exist; select max
+ rdr = conn.Stmt_select_max(tbl_name, fld__map_sort, fld__map_src).Crt_int(fld__map_src, src_id).Exec_select__rls_auto();
try {
if (!rdr.Move_next()) return 0;
Object max = rdr.Read_obj(fld__map_sort);
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java
index d1be289ee..e2bcf2c25 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/types/Xocfg_type_mgr.java
@@ -23,7 +23,6 @@ public class Xocfg_type_mgr {
this.Lists__add("list:xowa.app.startup.window.mode", "previous", "maximized", "absolute", "relative", "default");
this.Lists__add("list:xowa.app.startup.pages.type", "blank", "xowa", "previous", "custom");
this.Lists__add("list:xowa.gui.window.html_box.adj_type", "none", "relative", "absolute");
- this.Lists__add("list:xowa.wiki.dbs.html.basic.html_mode", Keyval_.new_("shown", "Shown"), Keyval_.new_("hdump_save", "Saved for HTML DB"), Keyval_.new_("hdump_load", "Loaded by HTML DB"));
this.Lists__add("list:xowa.wiki.database.general.zip_mode", "text", "gzip", "bzip2", "xz");
this.Lists__add("list:xowa.html.wiki.portal.missing_class", Keyval_.new_("", "Show as blue link"), Keyval_.new_("new", "Show as red link"), Keyval_.new_("xowa_display_none", "Hide"));
this.Lists__add("list:xowa.html.category.basic.missing_class", "normal", "hide", "red_link");
@@ -42,7 +41,8 @@ public class Xocfg_type_mgr {
Lists__add(key, itms);
}
public void Lists__add(String key, Keyval... itms) {
- list_hash.Add(key, itms);
+ if (!list_hash.Has(key)) // ignore multiple calls from Init_by_wiki; EX: Xow_hdump_mode
+ list_hash.Add(key, itms);
}
public Keyval[] Lists__get(String key) {
return (Keyval[])list_hash.Get_by_or_fail(key);
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java
index e684a92b9..dc6666bc3 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm_html.java
@@ -39,8 +39,9 @@ public class Xoedit_itm_html {
bfr.Add_str_u8_fmt("");
break;
diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java
index 0e76869b0..6ce5a6f75 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_svc.java
@@ -51,12 +51,13 @@ public class Xocfg_maint_svc {
}
public static void Create_grp(Xocfg_db_app db_app, String key, String owner, String name, String help) {
// insert grp_meta
- int grp_id = db_app.Conn().Sys_mgr().Autonum_next("cfg_grp_meta.grp_id");
+ Xocfg_grp_row grp = db_app.Tbl__grp().Select_by_key_or_null(key);
+ int grp_id = grp == null ? db_app.Conn().Sys_mgr().Autonum_next("cfg_grp_meta.grp_id") : grp.Id();
db_app.Tbl__grp().Upsert(grp_id, key);
// insert grp_map
int owner_id = String_.Len_eq_0(owner) ? Xocfg_grp_row.Id__root : db_app.Tbl__grp().Select_id_by_key_or_fail(owner);
- int map_sort = db_app.Tbl__map().Select_next_sort(owner_id);
+ int map_sort = db_app.Tbl__map().Select_sort_or_next(owner_id, grp_id);
db_app.Tbl__map().Upsert(owner_id, grp_id, map_sort);
// insert nde_i18n
@@ -73,7 +74,7 @@ public class Xocfg_maint_svc {
db_app.Tbl__itm().Upsert(itm_id, scope_id, db_type, gui_type_id, gui_args, key, dflt);
// insert grp_map
- int itm_sort = db_app.Tbl__map().Select_next_sort(grp_id);
+ int itm_sort = db_app.Tbl__map().Select_sort_or_next(grp_id, itm_id);
db_app.Tbl__map().Upsert(grp_id, itm_id, itm_sort);
// insert nde_i18n
diff --git a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java
index 9723c324e..0e6555e35 100644
--- a/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java
+++ b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java
@@ -50,7 +50,6 @@ public class Xoapi_root implements Gfo_invk {
public Xoapi_usr Usr() {return usr_api;} private final Xoapi_usr usr_api = new Xoapi_usr();
public Xoapi_special Special() {return special_api;} private final Xoapi_special special_api = new Xoapi_special();
public Xoapi_xtns Xtns() {return xtns_api;} private final Xoapi_xtns xtns_api = new Xoapi_xtns();
- public Xoapi_wiki Wiki() {return wiki;} private final Xoapi_wiki wiki = new Xoapi_wiki();
public Xoapi_app_wikis Wikis() {return app_wikis;} private final Xoapi_app_wikis app_wikis = new Xoapi_app_wikis();
public String Test_str() {return test_str;} public void Test_str_(String v) {test_str = v;} private String test_str; // TEST
private void Exec(String key) {
@@ -70,7 +69,6 @@ public class Xoapi_root implements Gfo_invk {
else if (ctx.Match(k, Invk_special)) return special_api;
else if (ctx.Match(k, Invk_xtns)) return xtns_api;
else if (ctx.Match(k, Invk_exec)) Exec(m.ReadStr("v"));
- else if (ctx.Match(k, Invk_wiki)) return wiki;
else if (ctx.Match(k, Invk_wikis)) return app_wikis;
else if (ctx.Match(k, Invk_test_str)) return test_str;
else if (ctx.Match(k, Invk_test_str_)) test_str = m.ReadStr("v");
@@ -81,6 +79,6 @@ public class Xoapi_root implements Gfo_invk {
, Invk_app = "app", Invk_addon = "addon"
, Invk_bldr = "bldr", Invk_nav = "nav", Invk_gui = "gui", Invk_html = "html", Invk_net = "net", Invk_usr = "usr", Invk_special = "special", Invk_xtns = "xtns"
, Invk_test_str = "test_str", Invk_test_str_ = "test_str_"
- , Invk_wiki = "wiki", Invk_wikis = "wikis"
+ , Invk_wikis = "wikis"
;
}
diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java
index b0baa0e21..31085aed8 100644
--- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java
+++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java
@@ -19,13 +19,11 @@ package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx
import gplx.xowa.apps.apis.xowa.wikis.*;
public class Xoapi_app_wiki implements Gfo_invk {
public Xoapi_wiki_lang Lang() {return lang;} private final Xoapi_wiki_lang lang = new Xoapi_wiki_lang();
- public Xoapi_hdump Hdump() {return hdump;} private final Xoapi_hdump hdump = new Xoapi_hdump();
public void Subscribe(Gfo_evt_itm sub) {lang.Subscribe(sub);}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_lang)) return lang;
- else if (ctx.Match(k, Invk_hdump)) return hdump;
else return Gfo_invk_.Rv_unhandled;
}
- private static final String Invk_lang = "lang", Invk_hdump = "hdump";
+ private static final String Invk_lang = "lang";
public static final Xoapi_app_wiki Dflt = new Xoapi_app_wiki();
}
diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java
deleted file mode 100644
index 2a93ddf63..000000000
--- a/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_wiki.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*;
-import gplx.xowa.apps.apis.xowa.wikis.*;
-public class Xoapi_wiki implements Gfo_invk {
- public Xoapi_hdump Hdump() {return hdump;} private final Xoapi_hdump hdump = new Xoapi_hdump();
- public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
- if (ctx.Match(k, Invk_hdump)) return hdump;
- else return Gfo_invk_.Rv_unhandled;
- }
- private static final String Invk_hdump = "hdump";
-}
diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java
deleted file mode 100644
index 4c7c0df1e..000000000
--- a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_hdump.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.apps.apis.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*;
-public class Xoapi_hdump implements Gfo_invk {
- public boolean Read_preferred() {return read_preferred;} private boolean read_preferred = true;
- public Hdump_html_mode Html_mode() {return html_mode;} private Hdump_html_mode html_mode = Hdump_html_mode.Shown;
- public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
- if (ctx.Match(k, Invk__read_preferred)) return Yn.To_str(read_preferred);
- else if (ctx.Match(k, Invk__read_preferred_)) read_preferred = m.ReadYn("v");
- else if (ctx.Match(k, Invk__html_mode)) return html_mode.Key();
- else if (ctx.Match(k, Invk__html_mode_)) html_mode = Hdump_html_mode.Parse(m.ReadStr("v"));
- else if (ctx.Match(k, Invk__html_mode_list)) return Hdump_html_mode.Opt_list();
- return this;
- }
- private static final String
- Invk__read_preferred = "read_preferred" , Invk__read_preferred_ = "read_preferred_"
- , Invk__html_mode = "html_mode" , Invk__html_mode_ = "html_mode_", Invk__html_mode_list = "html_mode_list"
- ;
-}
diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java
index 20ea00b2d..9abdb7191 100644
--- a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java
@@ -48,7 +48,7 @@ public class Xoh_page_wtr_wkr {
}
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
Xoh_wtr_ctx hctx = null;
- if (page_mode == Xopg_page_.Tid_html && wiki.App().Api_root().Wiki().Hdump().Html_mode().Tid_is_hdump_save()) {
+ if (page_mode == Xopg_page_.Tid_html && wiki.Html__hdump_mgr().Load_mgr().Html_mode().Tid_is_hdump_save()) {
hctx = Xoh_wtr_ctx.Hdump;
Write_body(page_bfr, ctx, hctx, page);
Write_page_by_tid(ctx, hctx, page_mode, rv, mgr.Page_html_fmtr(), Gfh_utl.Escape_html_as_bry(page_bfr.To_bry_and_clear()));
diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java
index 5b09d880c..1d1f81030 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr.java
@@ -40,6 +40,7 @@ public class Xow_hdump_mgr {
// mode_is_b256 = true;
}
Init_by_db(dflt_zip_tid, dflt_hzip_enable, mode_is_b256);
+ load_mgr.Init_by_wiki(wiki);
}
public void Init_by_db(byte dflt_zip_tid, boolean dflt_hzip_enable, boolean mode_is_b256) {
int dflt_hzip_tid = dflt_hzip_enable ? Xoh_hzip_dict_.Hzip__v1 : Xoh_hzip_dict_.Hzip__none;
diff --git a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java
index ac23068b9..2709c51e7 100644
--- a/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mgr__load.java
@@ -21,7 +21,7 @@ import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.core.makes.*; import gplx
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.wikis.pages.lnkis.*; import gplx.xowa.wikis.pages.htmls.*;
import gplx.xowa.addons.wikis.ctgs.htmls.pageboxs.*;
-public class Xow_hdump_mgr__load {
+public class Xow_hdump_mgr__load implements Gfo_invk {
private final Xow_wiki wiki; private final Xoh_hzip_mgr hzip_mgr; private final Io_stream_zip_mgr zip_mgr;
private final Xoh_page tmp_hpg; private final Bry_bfr tmp_bfr; private final Xowd_page_itm tmp_dbpg = new Xowd_page_itm();
private Xow_override_mgr override_mgr__html, override_mgr__page;
@@ -29,7 +29,14 @@ public class Xow_hdump_mgr__load {
this.wiki = wiki; this.hzip_mgr = hzip_mgr; this.zip_mgr = zip_mgr; this.tmp_hpg = tmp_hpg; this.tmp_bfr = tmp_bfr;
this.make_mgr = new Xoh_make_mgr();
}
+ public boolean Read_preferred() {return read_preferred;} private boolean read_preferred = true;
+ public Xow_hdump_mode Html_mode() {return html_mode;} private Xow_hdump_mode html_mode;
public Xoh_make_mgr Make_mgr() {return make_mgr;} private final Xoh_make_mgr make_mgr;
+ public void Init_by_wiki(Xow_wiki wiki) {
+ gplx.xowa.addons.apps.cfgs.Xocfg_mgr cfg_mgr = wiki.App().Cfg();
+ Xow_hdump_mode.Cfg__reg_type(cfg_mgr.Type_mgr());
+ cfg_mgr.Bind_many_wiki(this, wiki, Cfg__read_preferred, Cfg__html_mode);
+ }
public void Load_by_edit(Xoae_page wpg) {
tmp_hpg.Ctor_by_hview(wpg.Wiki(), wpg.Url(), wpg.Ttl(), wpg.Db().Page().Id());
Load(tmp_hpg, wpg.Ttl());
@@ -128,6 +135,16 @@ public class Xow_hdump_mgr__load {
trg_list.Add_direct(src_list.Get_at(i));
}
}
+ public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
+ if (ctx.Match(k, Cfg__read_preferred)) read_preferred = m.ReadYn("v");
+ else if (ctx.Match(k, Cfg__html_mode)) html_mode = Xow_hdump_mode.Parse(m.ReadStr("v"));
+ return this;
+ }
+ private static final String
+ Cfg__read_preferred = "xowa.wiki.hdumps.read_preferred"
+ , Cfg__html_mode = "xowa.wiki.hdumps.html_mode"
+ ;
+
private static boolean Load__fail(Xoh_page hpg) {hpg.Db().Page().Exists_n_(); return false;}
private static boolean Load__dbpg(Xow_wiki wiki, Xowd_page_itm dbpg, Xoh_page hpg, Xoa_ttl ttl) {
wiki.Data__core_mgr().Tbl__page().Select_by_ttl(dbpg, ttl.Ns(), ttl.Page_db());
diff --git a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Hdump_html_mode.java b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mode.java
similarity index 51%
rename from 400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Hdump_html_mode.java
rename to 400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mode.java
index 4c2257ce7..07e12cc80 100644
--- a/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Hdump_html_mode.java
+++ b/400_xowa/src/gplx/xowa/htmls/core/Xow_hdump_mode.java
@@ -15,27 +15,29 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.apps.apis.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*;
-public class Hdump_html_mode {
- public Hdump_html_mode(int tid, String key, String gui) {
- this.tid = (byte)tid; this.key = key; this.gui = gui;
+package gplx.xowa.htmls.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*;
+public class Xow_hdump_mode {
+ private final int tid;
+ private final String key;
+ private final String gui;
+
+ public Xow_hdump_mode(int tid, String key, String gui) {
+ this.tid = tid; this.key = key; this.gui = gui;
}
- public byte Tid() {return tid;} private final byte tid;
- public String Key() {return key;} private final String key;
- public String Gui() {return gui;} private final String gui;
- public Keyval Opt() {return Keyval_.new_(key, gui);}
public boolean Tid_is_hdump_save() {return tid == Hdump_save.tid;}
- public static final Hdump_html_mode
- Shown = new Hdump_html_mode(0, "shown" , "Shown")
- , Hdump_save = new Hdump_html_mode(1, "hdump_save" , "Saved for HTML DB")
- , Hdump_load = new Hdump_html_mode(2, "hdump_load" , "Loaded by HTML DB")
- ;
- public static Hdump_html_mode Parse(String v) {
+ private static final Xow_hdump_mode
+ Shown = new Xow_hdump_mode(0, "shown" , "Shown")
+ , Hdump_save = new Xow_hdump_mode(1, "hdump_save" , "Saved for HTML DB")
+ , Hdump_load = new Xow_hdump_mode(2, "hdump_load" , "Loaded by HTML DB");
+ public static void Cfg__reg_type(gplx.xowa.addons.apps.cfgs.mgrs.types.Xocfg_type_mgr type_mgr) {
+ type_mgr.Lists__add("list:xowa.wiki.hdumps.html_mode", To_kv(Shown), To_kv(Hdump_save), To_kv(Hdump_load));
+ }
+ private static Keyval To_kv(Xow_hdump_mode mode) {return Keyval_.new_(mode.key, mode.gui);}
+ public static Xow_hdump_mode Parse(String v) {
if (String_.Eq(v, Shown.key)) return Shown;
else if (String_.Eq(v, Hdump_save.key)) return Hdump_save;
else if (String_.Eq(v, Hdump_load.key)) return Hdump_load;
else throw Err_.new_unhandled(v);
}
- public static Keyval[] Opt_list() {return new Keyval[] {Shown.Opt(), Hdump_save.Opt()};}
}
diff --git a/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java
index 4c8c0d81b..c18ba4d49 100644
--- a/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java
+++ b/400_xowa/src/gplx/xowa/wikis/pages/Xowe_page_mgr.java
@@ -36,8 +36,9 @@ public class Xowe_page_mgr {
// load page from html_db
boolean from_html_db = page.Db().Page().Html_db_id() != -1;
+ boolean read_from_html_db_preferred = wiki.Html__hdump_mgr().Load_mgr().Read_preferred();
if (from_html_db) {
- if (wiki.Appe().Api_root().Wiki().Hdump().Read_preferred()) {
+ if (read_from_html_db_preferred) {
wiki.Html__hdump_mgr().Load_mgr().Load_by_edit(page);
from_html_db = Bry_.Len_gt_0(page.Db().Html().Html_bry()); // NOTE: archive.org has some wtxt_dbs which included page|html_db_id without actual html_dbs; DATE:2016-06-22
}
@@ -52,7 +53,7 @@ public class Xowe_page_mgr {
// load from html_dbs if no wtxt found and option just marked as not read_preferred
if ( Bry_.Len_eq_0(page.Db().Text().Text_bry()) // no wtxt found
&& !ttl.Ns().Id_is_special() // skip special
- && !wiki.Appe().Api_root().Wiki().Hdump().Read_preferred() // read preferred not marked
+ && !read_from_html_db_preferred // read preferred not marked
) {
wiki.Html__hdump_mgr().Load_mgr().Load_by_edit(page);
from_html_db = Bry_.Len_gt_0(page.Db().Html().Html_bry());