mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Cfg: Auto-load previous section; better upsert behavior for items
This commit is contained in:
parent
5e159233ab
commit
f6b4d5f153
@ -39,9 +39,11 @@ public class Xocfg_mgr {
|
||||
cache_mgr.Sub(sub, ctx, key, key);
|
||||
return cache_mgr.Get(ctx, key);
|
||||
}
|
||||
public String Get_str_app(String key) {return Get_str(gplx.xowa.addons.apps.cfgs.specials.edits.objs.Xoedit_itm.Ctx__app, key);}
|
||||
public String Get_str(String ctx, String key) {
|
||||
return cache_mgr.Get(ctx, key);
|
||||
}
|
||||
public void Set_str_app(String key, String val) {Set_str(gplx.xowa.addons.apps.cfgs.specials.edits.objs.Xoedit_itm.Ctx__app, key, val);}
|
||||
public void Set_str(String ctx, String key, String val) {
|
||||
cache_mgr.Set(ctx, key, val);
|
||||
}
|
||||
|
@ -41,6 +41,11 @@ public class Xocfg_itm_tbl implements Db_tbl {
|
||||
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 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();
|
||||
try {return rdr.Move_next() ? rdr.Read_int(fld__itm_id) : or;}
|
||||
finally {rdr.Rls();}
|
||||
}
|
||||
public Xocfg_itm_row Select_by_key_or_null(String key) {
|
||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__itm_key).Crt_str(fld__itm_key, key).Exec_select__rls_auto();
|
||||
try {return rdr.Move_next() ? Load(rdr) : null;}
|
||||
|
@ -19,12 +19,25 @@ package gplx.xowa.addons.apps.cfgs.mgrs.types; import gplx.*; import gplx.xowa.*
|
||||
public class Xocfg_type_mgr {
|
||||
private final Ordered_hash list_hash = Ordered_hash_.New();
|
||||
public Xocfg_type_mgr() {
|
||||
this.Lists__add("list:Xo_load_html_type", Keyval_.new_("mem"), Keyval_.new_("url"));
|
||||
this.Lists__add("list:xowa.app.security.privacy.load_mode", "mem", "url");
|
||||
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", "absolute", "previous", "custom");
|
||||
this.Lists__add("list:xowa.gui.window.html_box.adj_type", "none", "absolute", "relative");
|
||||
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", "bz2", "xz");
|
||||
}
|
||||
public void Lists__add(String key, Keyval... itms) {
|
||||
public void Lists__add(String key, String... vals) {
|
||||
int len = vals.length;
|
||||
Keyval[] itms = new Keyval[len];
|
||||
for (int i = 0; i < len; i++) {
|
||||
itms[i] = Keyval_.new_(vals[i]);
|
||||
}
|
||||
Lists__add(key, itms);
|
||||
}
|
||||
public void Lists__add(String key, Keyval... itms) {
|
||||
list_hash.Add(key, itms);
|
||||
}
|
||||
public Keyval[] Lists__get(String key) {
|
||||
public Keyval[] Lists__get(String key) {
|
||||
return (Keyval[])list_hash.Get_by_or_fail(key);
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,9 @@ public class Xocfg_edit_special implements Xow_special_page {
|
||||
String ctx = url_args.Read_str_or("ctx", "app");
|
||||
String lang = url_args.Read_str_or("lang", wiki.App().User().Wikii().Lang().Key_str());
|
||||
|
||||
if (String_.Eq(grp, "")) {
|
||||
grp = wiki.App().Cfg().Get_str_app("xowa.app.cfg.general.previous_section");
|
||||
}
|
||||
new Xocfg_edit_html(grp, ctx, lang).Bld_page_by_mustache(wiki.App(), page, this);
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,7 @@ public class Xocfg_edit_svc {
|
||||
String key = args.Get_as_str("key");
|
||||
if (edit_loader == null) edit_loader = Xocfg_edit_loader.New(app);
|
||||
Xoedit_root root = edit_loader.Load_root(key, ctx, "en");
|
||||
app.Cfg().Set_str_app("xowa.app.cfg.general.previous_section", key);
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.cfg_edit.load__recv", root.To_nde());
|
||||
}
|
||||
}
|
||||
|
@ -63,9 +63,11 @@ public class Xocfg_maint_svc {
|
||||
public static void Create_itm(Xocfg_db_app db_app, String key, String owner, String name, String help, String scope, String db_type, String dflt, String gui_type, String gui_args) {
|
||||
// insert itm_meta
|
||||
int grp_id = db_app.Tbl__grp().Select_id_by_key_or_fail(owner);
|
||||
int itm_id = db_app.Conn().Sys_mgr().Autonum_next("cfg_itm_meta.itm_id");
|
||||
int scope_id = Xoitm_scope_tid.To_int(scope);
|
||||
int gui_type_id = Xoitm_gui_tid.To_tid(gui_type);
|
||||
int itm_id = db_app.Tbl__itm().Select_id_or(key, -1);
|
||||
if (itm_id == -1)
|
||||
itm_id = db_app.Conn().Sys_mgr().Autonum_next("cfg_itm_meta.itm_id");
|
||||
db_app.Tbl__itm().Upsert(itm_id, scope_id, db_type, gui_type_id, gui_args, key, dflt);
|
||||
|
||||
// insert grp_map
|
||||
|
Loading…
Reference in New Issue
Block a user