diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_row.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_row.java index dd6fec89d..c606db7d6 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_row.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_row.java @@ -17,12 +17,13 @@ along with this program. If not, see . */ package gplx.xowa.addons.apps.cfgs.dbs.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.dbs.*; public class Xocfg_itm_row { - public Xocfg_itm_row(int id, int scope_id, String data_type, int gui_type, String gui_args, String key, String dflt) { + public Xocfg_itm_row(int id, int scope_id, String data_type, int gui_type, String gui_args, String gui_cls, String key, String dflt) { this.id = id; this.scope_id = scope_id; this.data_type = data_type; this.gui_type = gui_type; this.gui_args = gui_args; + this.gui_cls = gui_cls; this.key = key; this.dflt = dflt; } @@ -31,6 +32,7 @@ public class Xocfg_itm_row { public String Data_type() {return data_type;} private final String data_type; public int Gui_type() {return gui_type;} private final int gui_type; public String Gui_args() {return gui_args;} private final String gui_args; + public String Gui_cls() {return gui_cls;} private final String gui_cls; public String Key() {return key;} private final String key; public String Dflt() {return dflt;} private final String dflt; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_tbl.java index 145efd610..9d56557c9 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/tbls/Xocfg_itm_tbl.java @@ -19,7 +19,7 @@ package gplx.xowa.addons.apps.cfgs.dbs.tbls; import gplx.*; import gplx.xowa.*; import gplx.dbs.*; import gplx.dbs.utls.*; public class Xocfg_itm_tbl implements Db_tbl { private final Dbmeta_fld_list flds = new Dbmeta_fld_list(); - private final String fld__itm_id, fld__itm_key, fld__itm_scope_id, fld__itm_data_type, fld__itm_gui_type, fld__itm_gui_args, fld__itm_dflt; + private final String fld__itm_id, fld__itm_key, fld__itm_scope_id, fld__itm_data_type, fld__itm_gui_type, fld__itm_gui_cls, fld__itm_gui_args, fld__itm_dflt; private final Db_conn conn; public Xocfg_itm_tbl(Db_conn conn) { this.conn = conn; @@ -30,6 +30,7 @@ public class Xocfg_itm_tbl implements Db_tbl { this.fld__itm_data_type = flds.Add_str("itm_data_type", 255); // EX: '1'; ENUM: Type_adp_ this.fld__itm_gui_type = flds.Add_int("itm_gui_type"); // EX: '1'; ENUM: Xoitm_gui_tid this.fld__itm_gui_args = flds.Add_str("itm_gui_args", 255); // EX: '1,40' (numeric); '255' (textbox); 'enum_name' (combo); etc.. + this.fld__itm_gui_cls = flds.Add_str("itm_gui_cls", 255); // EX: 'xocfg_custom' this.fld__itm_dflt = flds.Add_str("itm_dflt", 4096); // EX: 'abc' conn.Rls_reg(this); } @@ -38,8 +39,8 @@ public class Xocfg_itm_tbl implements Db_tbl { conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds , Dbmeta_idx_itm.new_unique_by_tbl(tbl_name, fld__itm_key, fld__itm_key))); } - public void Upsert(int itm_id, int scope_id, String db_type, int gui_type, String gui_args, String itm_key, String itm_dflt) { - Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__itm_id), itm_id, itm_key, scope_id, db_type, gui_type, gui_args, itm_dflt); + public void Upsert(int itm_id, int scope_id, String db_type, int gui_type, String gui_args, String gui_cls, String itm_key, String itm_dflt) { + Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__itm_id), itm_id, itm_key, scope_id, db_type, gui_type, gui_args, gui_cls, itm_dflt); } public int Select_id_or(String key, int or) { Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__itm_key).Crt_str(fld__itm_key, key).Exec_select__rls_auto(); @@ -58,6 +59,7 @@ public class Xocfg_itm_tbl implements Db_tbl { , rdr.Read_str(fld__itm_data_type) , rdr.Read_int(fld__itm_gui_type) , rdr.Read_str(fld__itm_gui_args) + , rdr.Read_str(fld__itm_gui_cls) , rdr.Read_str(fld__itm_key) , rdr.Read_str(fld__itm_dflt) ); diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java index f66b796c3..42a3e93d3 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/mgrs/caches/Xocfg_cache_mgr__tst.java @@ -53,7 +53,7 @@ class Xocfg_cache_mgr__fxt { public Xocfg_cache_sub_mock Sub() {return sub;} private Xocfg_cache_sub_mock sub = new Xocfg_cache_sub_mock(); public void Init__db_add(String ctx, String key, Object val) { Xocfg_maint_svc.Create_grp(mgr.Db_app(), id++, "test_grp", "", "", ""); - Xocfg_maint_svc.Create_itm(mgr.Db_app(), id++, key, "test_grp", "", "", "wiki", "string", "dflt", "string", ""); + Xocfg_maint_svc.Create_itm(mgr.Db_app(), id++, key, "test_grp", "", "", "wiki", "string", "dflt", "string", "", ""); mgr.Db_usr().Set_str(ctx, key, Object_.Xto_str_strict_or_null(val)); } public void Init__sub(String ctx, String key, String evt) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java index 5c0a5ff52..e2f95c416 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/objs/Xoedit_itm.java @@ -23,7 +23,7 @@ import gplx.langs.htmls.*; public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm { private String gui_type; private boolean edited; - private String data_type, gui_args, lang, name, ctx, date; + private String data_type, gui_args, gui_cls, lang, name, ctx, date; private byte[] val, dflt; // NOTE: data is always escaped b/c it is only consumed by mustache; EX: "<'" not "<'" private Xocfg_type_mgr type_mgr; public Xoedit_itm(Xocfg_type_mgr type_mgr, int id, String key, int sort) { @@ -37,10 +37,11 @@ public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm { public String Help() {return help;} private String help; public int Sort() {return sort;} private final int sort; - public void Load_by_meta(Bry_bfr tmp_bfr, int scope_id, String data_type, String gui_type, String gui_args, String dflt_str) { + public void Load_by_meta(Bry_bfr tmp_bfr, int scope_id, String data_type, String gui_type, String gui_args, String gui_cls, String dflt_str) { this.data_type = data_type; this.gui_type = gui_type; this.gui_args = gui_args; + this.gui_cls = gui_cls; this.dflt = Gfh_utl.Escape_html_as_bry(tmp_bfr, Bry_.new_u8(dflt_str), Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.N); } public void Load_by_i18n(String lang, String name, String help) { @@ -53,7 +54,7 @@ public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm { this.val = Gfh_utl.Escape_html_as_bry(tmp_bfr, Bry_.new_u8(val_str), Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.N); this.date = date; this.edited = true; - if ( String_.Has(gui_args, "read"+"only=") || String_.Has(gui_args, "disabled=") + if ( String_.Has(gui_cls, "read"+"only") || String_.Eq(gui_type, gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_tid.Itm__btn.Key())) edited = false; } @@ -81,7 +82,7 @@ public class Xoedit_itm implements Xoedit_nde, Mustache_doc_itm { return rv; } private void To_html(Bry_bfr bfr, Xocfg_type_mgr type_mgr) { - Xoedit_itm_html.Build_html(bfr, type_mgr, key, name, data_type, gui_type, gui_args, val); + Xoedit_itm_html.Build_html(bfr, type_mgr, key, name, data_type, gui_type, gui_args, gui_cls, val); } public boolean Mustache__write(String k, Mustache_bfr bfr) { if (String_.Eq(k, "id")) bfr.Add_int(id); 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 b67fe8bc3..fb695c8e2 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 @@ -19,30 +19,31 @@ package gplx.xowa.addons.apps.cfgs.specials.edits.objs; import gplx.*; import gp import gplx.xowa.addons.apps.cfgs.enums.*; import gplx.xowa.addons.apps.cfgs.mgrs.types.*; public class Xoedit_itm_html { - public static void Build_html(Bry_bfr bfr, Xocfg_type_mgr type_mgr, String key, String name, String data_type, String gui_type_key, String gui_args, byte[] val) { + public static void Build_html(Bry_bfr bfr, Xocfg_type_mgr type_mgr, String key, String name, String data_type, String gui_type_key, String gui_args, String gui_cls, byte[] val) { // if gui_args exists, prepend space for html insertion; EX: "type='checkbox'{1}>" with "a=b" -> "type='checkbox' a='b'" x> "type='checkbox'a='b'" if (String_.Len_gt_0(gui_args)) gui_args = " " + gui_args; + if (String_.Len_gt_0(gui_cls)) gui_cls = " " + gui_cls; switch (Xoitm_gui_tid.To_uid(gui_type_key)) { case Xoitm_gui_tid.Tid__bool: bfr.Add_str_u8_fmt - ( "" - , gui_type_key, gui_args, key, Bry_.Eq(val, Bool_.Y_bry) ? " checked=\"checked\"" : ""); + ( "" + , gui_type_key, gui_args, gui_cls, key, Bry_.Eq(val, Bool_.Y_bry) ? " checked=\"checked\"" : ""); break; case Xoitm_gui_tid.Tid__int: bfr.Add_str_u8_fmt - ( "" - , gui_type_key, gui_args, key, val); + ( "" + , gui_type_key, gui_args, gui_cls, key, val); break; case Xoitm_gui_tid.Tid__str: bfr.Add_str_u8_fmt - ( "" - , gui_type_key, gui_args, key, val); + ( "" + , gui_type_key, gui_args, gui_cls, key, val); break; case Xoitm_gui_tid.Tid__memo: if (String_.Len_eq_0(gui_args)) gui_args = " rows=\"4\""; bfr.Add_str_u8_fmt - ( "" - , gui_type_key, gui_args, key, val); + ( "" + , gui_type_key, gui_args, gui_cls, key, val); break; case Xoitm_gui_tid.Tid__list: // get list of kvs by type @@ -52,8 +53,8 @@ public class Xoedit_itm_html { // build html bfr.Add_str_u8_fmt - ( "\n" + , gui_type_key, gui_args, gui_cls, key); String val_str = String_.new_u8(val); for (int i = 0; i < len; i++) { Keyval kv = kvs_ary[i]; @@ -68,26 +69,26 @@ public class Xoedit_itm_html { case Xoitm_gui_tid.Tid__io_cmd: String[] lines = Xocfg_mgr.Parse_io_cmd(String_.new_u8(val)); bfr.Add_str_u8_fmt - ( "\n" - + "
\n" - , gui_type_key, gui_args, key, lines[0]); + ( "\n" + + "
\n" + , gui_type_key, gui_args, gui_cls, key, lines[0]); bfr.Add_str_u8_fmt - ( "\n" - , gui_type_key, gui_args, key, lines[1]); + ( "\n" + , gui_type_key, gui_args, gui_cls, key, lines[1]); break; case Xoitm_gui_tid.Tid__gui_binding: String[] flds = Xoitm_gui_binding.To_gui(String_.new_u8(val)); bfr.Add_str_u8_fmt - ( "\n" - , gui_type_key, gui_args, key, flds[0]); + ( "\n" + , gui_type_key, gui_args, gui_cls, key, flds[0]); bfr.Add_str_u8_fmt - ( "\n" - , gui_type_key, gui_args, key, flds[1]); + ( "\n" + , gui_type_key, gui_args, gui_cls, key, flds[1]); break; case Xoitm_gui_tid.Tid__btn: bfr.Add_str_u8_fmt - ( "" - , gui_type_key, gui_args, key, name); + ( "" + , gui_type_key, gui_args, gui_cls, key, name); break; default: break; diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java index 4e81cba94..a50e2dd9f 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_loader.java @@ -157,6 +157,7 @@ public class Xocfg_edit_loader { , ", i.itm_data_type" , ", i.itm_gui_type" , ", i.itm_gui_args" + , ", i.itm_gui_cls" , ", i.itm_dflt" , "FROM cfg_itm i" , "WHERE i.itm_key IN ({0})" @@ -169,7 +170,7 @@ public class Xocfg_edit_loader { Xoedit_itm edit_itm = (Xoedit_itm)itm_list.Get_by_or_fail(key); String dflt = dflt_mgr.Get_or(key, rdr.Read_str("itm_dflt")); int gui_type = rdr.Read_int("itm_gui_type"); - edit_itm.Load_by_meta(tmp_bfr, rdr.Read_int("itm_scope_id"), rdr.Read_str("itm_data_type"), gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_tid.To_key(gui_type), rdr.Read_str("itm_gui_args"), dflt); + edit_itm.Load_by_meta(tmp_bfr, rdr.Read_int("itm_scope_id"), rdr.Read_str("itm_data_type"), gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_tid.To_key(gui_type), rdr.Read_str("itm_gui_args"), rdr.Read_str("itm_gui_cls"), dflt); } } } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_nde.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_nde.java index d2fbb1be2..1c208990c 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_nde.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_nde.java @@ -41,12 +41,13 @@ class Xocfg_maint_grp extends Xocfg_maint_nde { public Xocfg_maint_grp(int id, S @Override public boolean Type_is_grp() {return true;} @Override protected void To_bfr_hook(Bry_bfr bfr) {} } -class Xocfg_maint_itm extends Xocfg_maint_nde { public Xocfg_maint_itm(int id, String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args) {super(id, key, owner, name, help); +class Xocfg_maint_itm extends Xocfg_maint_nde { public Xocfg_maint_itm(int id, String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args, String gui_cls) {super(id, key, owner, name, help); this.scope = scope; this.db_type = db_type; this.dflt = dflt; this.gui_type = gui_type; this.gui_args = gui_args; + this.gui_cls = gui_cls; } @Override public boolean Type_is_grp() {return false;} public String Scope() {return scope;} private final String scope; @@ -54,7 +55,8 @@ class Xocfg_maint_itm extends Xocfg_maint_nde { public Xocfg_maint_itm(int id, S public String Dflt() {return dflt;} private final String dflt; public String Gui_type() {return gui_type;} private final String gui_type; public String Gui_args() {return gui_args;} private final String gui_args; + public String Gui_cls() {return gui_cls;} private final String gui_cls; @Override protected void To_bfr_hook(Bry_bfr bfr) { - bfr.Add_str_u8_fmt("|{0}|{1}|{2}|{3}|{4}", scope, db_type, dflt, gui_type, gui_args); + bfr.Add_str_u8_fmt("|{0}|{1}|{2}|{3}|{4}|{5}", scope, db_type, dflt, gui_type, gui_args, gui_cls); } } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser.java index 7aa377271..1ac49b9dc 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser.java @@ -49,11 +49,12 @@ class Xocfg_maint_parser { String dflt = Get_atr_as_str_or_fail(hash, "dflt_"); String gui_type = Get_atr_as_str_or(hash, "gui_type_", null); String gui_args = Get_atr_as_str_or(hash, "gui_args_", ""); + String gui_cls = Get_atr_as_str_or(hash, "gui_cls_", ""); if (gui_type == null) { gui_type = gplx.xowa.addons.apps.cfgs.enums.Xoitm_gui_tid.Infer_gui_type(db_type); } - return new Xocfg_maint_itm(id, key, owner, name, help, scope, db_type, dflt, gui_type, gui_args); + return new Xocfg_maint_itm(id, key, owner, name, help, scope, db_type, dflt, gui_type, gui_args, gui_cls); } else throw Err_.new_wo_type("xo.cfg_maint:unknown type", "type", nde_type); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser__tst.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser__tst.java index 7f4609132..f728e868a 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser__tst.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_parser__tst.java @@ -25,8 +25,8 @@ public class Xocfg_maint_parser__tst { ); } @Test public void Parse_itm() { - fxt.Exec__parse("itm {id='123'; key='key_1'; owner='owner_1'; name='name_1'; help='help_1'; scope='scope_1'; db_type='db_type_1'; dflt='dflt_1'; gui_type='gui_type_1'; gui_args='gui_args_1'}" - , fxt.Make__itm(123, "key_1", "owner_1", "name_1", "help_1", "scope_1", "db_type_1", "dflt_1", "gui_type_1", "gui_args_1") + fxt.Exec__parse("itm {id='123'; key='key_1'; owner='owner_1'; name='name_1'; help='help_1'; scope='scope_1'; db_type='db_type_1'; dflt='dflt_1'; gui_type='gui_type_1'; gui_args='gui_args_1'; gui_cls='gui_cls_1'}" + , fxt.Make__itm(123, "key_1", "owner_1", "name_1", "help_1", "scope_1", "db_type_1", "dflt_1", "gui_type_1", "gui_args_1", "gui_cls_1") ); } } @@ -39,7 +39,7 @@ class Xocfg_maint_parser__fxt { public Xocfg_maint_grp Make__grp(int id, String key, String owner, String name, String help) { return new Xocfg_maint_grp(id, key, owner, name, help); } - public Xocfg_maint_itm Make__itm(int id, String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args) { - return new Xocfg_maint_itm(id, key, owner, name, help, scope, db_type, dflt, gui_type, gui_args); + public Xocfg_maint_itm Make__itm(int id, String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args, String gui_cls) { + return new Xocfg_maint_itm(id, key, owner, name, help, scope, db_type, dflt, gui_type, gui_args, gui_cls); } } \ No newline at end of file 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 cb6d3d444..6902595c8 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 @@ -44,7 +44,7 @@ public class Xocfg_maint_svc { } else { Xocfg_maint_itm itm = (Xocfg_maint_itm)nde; - Xocfg_maint_svc.Create_itm(db_app, nde.Id(), nde.Key(), nde.Owner(), nde.Name(), String_.new_u8(help), itm.Scope(), itm.Db_type(), itm.Dflt(), itm.Gui_type(), itm.Gui_args()); + Xocfg_maint_svc.Create_itm(db_app, nde.Id(), nde.Key(), nde.Owner(), nde.Name(), String_.new_u8(help), itm.Scope(), itm.Db_type(), itm.Dflt(), itm.Gui_type(), itm.Gui_args(), itm.Gui_cls()); } } db_app.Conn().Txn_end(); @@ -61,12 +61,12 @@ public class Xocfg_maint_svc { // insert nde_i18n db_app.Tbl__txt().Upsert(grp_id, Xoitm_lang_tid.Lang__dflt, name, help); } - public static void Create_itm(Xocfg_db_app db_app, int itm_id, String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args) { + public static void Create_itm(Xocfg_db_app db_app, int itm_id, String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args, String gui_cls) { // insert itm_meta int grp_id = db_app.Tbl__grp().Select_id_by_key_or_fail(owner); int scope_id = Xoitm_scope_tid.To_int(scope); int gui_type_id = Xoitm_gui_tid.To_uid(gui_type); - db_app.Tbl__itm().Upsert(itm_id, scope_id, db_type, gui_type_id, gui_args, key, dflt); + db_app.Tbl__itm().Upsert(itm_id, scope_id, db_type, gui_type_id, gui_args, gui_cls, key, dflt); // insert grp_map int itm_sort = db_app.Tbl__map().Select_sort_or_next(grp_id, itm_id); diff --git a/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/catpages/Xoctg_catpage_mgr.java b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/catpages/Xoctg_catpage_mgr.java index 9e2e55ead..2b115af2e 100644 --- a/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/catpages/Xoctg_catpage_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/wikis/ctgs/htmls/catpages/Xoctg_catpage_mgr.java @@ -45,7 +45,7 @@ public class Xoctg_catpage_mgr implements Gfo_invk { if (String_.Eq(missing_cls, Str__missing_cls__normal)) return Css__missing_cls__normal; else if (String_.Eq(missing_cls, Str__missing_cls__hide)) return Css__missing_cls__hide; else if (String_.Eq(missing_cls, Str__missing_cls__red)) return Css__missing_cls__red; - else throw Err_.new_unhandled(missing_cls); + else return Bry_.Empty; // NOTE: do not throw error, else fatal error when regen'ing cfg db; DATE:2016-12-27 } public void Init_by_wiki(Xow_wiki wiki) { wiki.App().Cfg().Bind_many_wiki(this, wiki, Cfg__missing_class);