diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xoa_cfg_addon.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xoa_cfg_addon.java index dbd8601d8..362a0b17c 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xoa_cfg_addon.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/Xoa_cfg_addon.java @@ -17,18 +17,19 @@ along with this program. If not, see . */ package gplx.xowa.addons.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.specials.*; import gplx.xowa.htmls.bridges.*; -import gplx.xowa.addons.apps.cfgs.specials.lists.*; import gplx.xowa.addons.apps.cfgs.specials.items.*; +import gplx.xowa.addons.apps.cfgs.specials.edits.pages.*; import gplx.xowa.addons.apps.cfgs.specials.edits.services.*; +import gplx.xowa.addons.apps.cfgs.specials.maints.pages.*; import gplx.xowa.addons.apps.cfgs.specials.maints.services.*; public class Xoa_cfg_addon implements Xoax_addon_itm, Xoax_addon_itm__special, Xoax_addon_itm__json { public Xow_special_page[] Special_pages() { return new Xow_special_page[] - { Xocfg_item_special.Prototype - , Xocfg_list_special.Prototype + { Xocfg_maint_special.Prototype + , Xocfg_edit_special.Prototype }; } public Bridge_cmd_itm[] Json_cmds() { return new Bridge_cmd_itm[] - { Xocfg_item_bridge.Prototype - , Xocfg_list_bridge.Prototype + { Xocfg_maint_bridge.Prototype + , Xocfg_edit_bridge.Prototype }; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xogrp_map_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xogrp_map_tbl.java index d64997639..f230d6a1a 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xogrp_map_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xogrp_map_tbl.java @@ -30,7 +30,11 @@ public class Xogrp_map_tbl implements Db_tbl { conn.Rls_reg(this); } public String Tbl_name() {return tbl_name;} private final String tbl_name; - public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public void Create_tbl() { + conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds + , Dbmeta_idx_itm.new_unique_by_tbl(tbl_name, "core", fld__map_src, fld__map_trg) + )); + } 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); } @@ -48,9 +52,3 @@ public class Xogrp_map_tbl implements Db_tbl { } public void Rls() {} } -/* -grp_0 -> Name of page -grp_1 -> H2 -grp_2 -> H3 -... -*/ diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xogrp_meta_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xogrp_meta_tbl.java index bb97d60fb..80801f837 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xogrp_meta_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xogrp_meta_tbl.java @@ -23,12 +23,16 @@ public class Xogrp_meta_tbl implements Db_tbl { private final Db_conn conn; public Xogrp_meta_tbl(Db_conn conn) { this.conn = conn; - this.fld__grp_id = flds.Add_int("grp_id"); + this.fld__grp_id = flds.Add_int_pkey("grp_id"); this.fld__grp_key = flds.Add_str("grp_key", 255); conn.Rls_reg(this); } public String Tbl_name() {return tbl_name;} private final String tbl_name = TBL_NAME; - public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public void Create_tbl() { + conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds + , Dbmeta_idx_itm.new_unique_by_tbl(tbl_name, fld__grp_key, fld__grp_key) + )); + } public void Upsert(int grp_id, String grp_key) { Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__grp_id), grp_id, grp_key); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xoitm_data_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xoitm_data_tbl.java index 85dce1b1f..28713c2a8 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xoitm_data_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xoitm_data_tbl.java @@ -33,7 +33,7 @@ public class Xoitm_data_tbl implements Db_tbl { public String Tbl_name() {return tbl_name;} private final String tbl_name; public void Create_tbl() { conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds - , Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "", fld__itm_id, fld__itm_ctx) + , Dbmeta_idx_itm.new_normal_by_tbl(tbl_name, "core", fld__itm_id, fld__itm_ctx) )); } public void Upsert(int itm_id, String ctx, String itm_val, String itm_date) { diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xoitm_meta_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xoitm_meta_tbl.java index aa4341dad..9b4d8cdc1 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xoitm_meta_tbl.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xoitm_meta_tbl.java @@ -24,7 +24,7 @@ public class Xoitm_meta_tbl implements Db_tbl { public Xoitm_meta_tbl(Db_conn conn) { this.conn = conn; this.tbl_name = "cfg_itm_meta"; - this.fld__itm_id = flds.Add_int("itm_id"); // EX: '2' + this.fld__itm_id = flds.Add_int_pkey("itm_id"); // EX: '2' this.fld__itm_key = flds.Add_str("itm_key", 255); // EX: 'cfg_1' this.fld__itm_scope_id = flds.Add_int("itm_scope_id"); // EX: '1'; ENUM: Xoitm_scope_tid this.fld__itm_db_type = flds.Add_int("itm_db_type"); // EX: '1'; ENUM: Type_adp_ @@ -34,7 +34,10 @@ public class Xoitm_meta_tbl implements Db_tbl { conn.Rls_reg(this); } public String Tbl_name() {return tbl_name;} private final String tbl_name; - public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));} + public void Create_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, int 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); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xonde_i18n_itm.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xonde_i18n_itm.java index 62f894fdb..b228ee2b2 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xonde_i18n_itm.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xonde_i18n_itm.java @@ -27,4 +27,6 @@ public class Xonde_i18n_itm { public String Lang() {return lang;} private final String lang; public String Name() {return name;} private final String name; public String Help() {return help;} private final String help; + + public static final int Tid__grp = 1, Tid__itm = 2; } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xonde_i18n_nde_tid.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xonde_i18n_nde_tid.java deleted file mode 100644 index 7b54eb392..000000000 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/dbs/Xonde_i18n_nde_tid.java +++ /dev/null @@ -1,21 +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.addons.apps.cfgs.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*; -public class Xonde_i18n_nde_tid { - public static final int Tid__grp = 1, Tid__itm = 2; -} diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_html.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_html.java similarity index 72% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_html.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_html.java index 132e69ee4..73df8b36a 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_html.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_html.java @@ -15,21 +15,21 @@ 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.addons.apps.cfgs.specials.lists; 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.specials.*; +package gplx.xowa.addons.apps.cfgs.specials.edits.pages; 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.specials.*; import gplx.xowa.addons.apps.cfgs.specials.edits.*; import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; import gplx.xowa.addons.apps.cfgs.gui.*; -class Xocfg_list_html extends Xow_special_wtr__base { - private final String grp_key, ctx, lang; - public Xocfg_list_html(String grp_key, String ctx, String lang) { - this.grp_key = grp_key; +class Xocfg_edit_html extends Xow_special_wtr__base { + private final String grp, ctx, lang; + public Xocfg_edit_html(String grp, String ctx, String lang) { + this.grp = grp; this.ctx = ctx; this.lang = lang; } - @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "app", "cfg", "list");} - @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xocfg_list.core.mustache.html");} + @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "app", "cfg", "edit");} + @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xo.cfg_edit.page.mustache.html");} @Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) { Xogui_mgr mgr = Xogui_mgr.New(app); - return mgr.Get_root(grp_key, ctx, lang); + return mgr.Get_root(grp, ctx, lang); } @Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) { Xopg_tag_mgr head_tags = page_data.Head_tags(); @@ -41,8 +41,8 @@ class Xocfg_list_html extends Xow_special_wtr__base { Xopg_tag_wtr_.Add__xotmpl (head_tags, app.Fsys_mgr().Http_root()); Xopg_tag_wtr_.Add__xoajax (head_tags, app.Fsys_mgr().Http_root(), app); - head_tags.Add(Xopg_tag_itm.New_htm_frag(addon_dir.GenSubFil_nest("bin", "xocfg_list.grps.mustache.html"), "xocfg.grps")); - head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xocfg_list.css"))); - head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xocfg_list.js"))); + head_tags.Add(Xopg_tag_itm.New_htm_frag(addon_dir.GenSubFil_nest("bin", "xo.cfg_edit.grps.mustache.html"), "xocfg.grps")); + head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xo.cfg_edit.css"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xo.cfg_edit.js"))); } } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_special.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_special.java similarity index 68% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_special.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_special.java index 55219c359..b0e60e5d6 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_special.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/pages/Xocfg_edit_special.java @@ -15,9 +15,9 @@ 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.addons.apps.cfgs.specials.lists; 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.specials.*; +package gplx.xowa.addons.apps.cfgs.specials.edits.pages; 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.specials.*; import gplx.xowa.addons.apps.cfgs.specials.edits.*; import gplx.xowa.specials.*; import gplx.core.net.qargs.*; -public class Xocfg_list_special implements Xow_special_page { +public class Xocfg_edit_special implements Xow_special_page { public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary()); @@ -25,10 +25,11 @@ public class Xocfg_list_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()); - new Xocfg_list_html(grp, ctx, lang).Bld_page_by_mustache(wiki.App(), page, this); + new Xocfg_edit_html(grp, ctx, lang).Bld_page_by_mustache(wiki.App(), page, this); } - Xocfg_list_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} + + Xocfg_edit_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta; public Xow_special_page Special__clone() {return this;} - public static final Xow_special_page Prototype = new Xocfg_list_special(Xow_special_meta.New_xo("XowaCfgList", "Options")); + public static final Xow_special_page Prototype = new Xocfg_edit_special(Xow_special_meta.New_xo("XowaCfg", "Options")); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_bridge.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_bridge.java similarity index 66% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_bridge.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_bridge.java index 1ce0d0907..e30e133a5 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_bridge.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_bridge.java @@ -15,23 +15,21 @@ 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.addons.apps.cfgs.specials.lists; 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.specials.*; +package gplx.xowa.addons.apps.cfgs.specials.edits.services; 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.specials.*; import gplx.xowa.addons.apps.cfgs.specials.edits.*; import gplx.langs.jsons.*; import gplx.xowa.htmls.bridges.*; -public class Xocfg_list_bridge implements Bridge_cmd_itm { - private Xoa_app app; - private Xocfg_list_bridge_mgr mgr; +public class Xocfg_edit_bridge implements Bridge_cmd_itm { + private Xocfg_edit_service svc; public void Init_by_app(Xoa_app app) { - this.app = app; + this.svc = new Xocfg_edit_service(app); } public String Exec(Json_nde data) { - if (mgr == null) this.mgr = new Xocfg_list_bridge_mgr(app); byte proc_id = proc_hash.Get_as_byte_or(data.Get_as_bry_or(Bridge_cmd_mgr.Msg__proc, null), Byte_ascii.Max_7_bit); Json_nde args = data.Get_kv(Bridge_cmd_mgr.Msg__args).Val_as_nde(); switch (proc_id) { - case Proc__upsert: mgr.Upsert(args); break; - case Proc__revert: mgr.Revert(args); break; - case Proc__load: mgr.Load(args); break; + case Proc__upsert: svc.Upsert(args); break; + case Proc__revert: svc.Revert(args); break; + case Proc__load: svc.Load(args); break; default: throw Err_.new_unhandled_default(proc_id); } return Bridge_cmd_mgr.Msg__ok; @@ -44,6 +42,6 @@ public class Xocfg_list_bridge implements Bridge_cmd_itm { .Add_str_byte("load" , Proc__load) ; - public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("cfg.item.exec"); - public static final Xocfg_list_bridge Prototype = new Xocfg_list_bridge(); Xocfg_list_bridge() {} + public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("xo.cfg_edit"); + public static final Xocfg_edit_bridge Prototype = new Xocfg_edit_bridge(); Xocfg_edit_bridge() {} } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_bridge_mgr.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_service.java similarity index 70% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_bridge_mgr.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_service.java index 35eaf4287..1094432e5 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/lists/Xocfg_list_bridge_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/edits/services/Xocfg_edit_service.java @@ -15,13 +15,14 @@ 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.addons.apps.cfgs.specials.lists; 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.specials.*; +package gplx.xowa.addons.apps.cfgs.specials.edits.services; 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.specials.*; import gplx.xowa.addons.apps.cfgs.specials.edits.*; import gplx.langs.jsons.*; import gplx.xowa.guis.cbks.*; import gplx.xowa.addons.apps.cfgs.dbs.*; import gplx.xowa.addons.apps.cfgs.gui.*; -public class Xocfg_list_bridge_mgr { +import gplx.xowa.addons.apps.cfgs.specials.edits.pages.*; +public class Xocfg_edit_service { private final Xoa_app app; - private final Xog_cbk_trg cbk_trg = Xog_cbk_trg.New(Xocfg_list_special.Prototype.Special__meta().Ttl_bry()); - public Xocfg_list_bridge_mgr(Xoa_app app) { + private final Xog_cbk_trg cbk_trg = Xog_cbk_trg.New(Xocfg_edit_special.Prototype.Special__meta().Ttl_bry()); + public Xocfg_edit_service(Xoa_app app) { this.app = app; } public void Upsert(Json_nde args) { @@ -40,6 +41,6 @@ public class Xocfg_list_bridge_mgr { String key = args.Get_as_str("key"); Xogui_mgr gui_mgr = new Xogui_mgr(new Xocfg_db_mgr(app.User().User_db_mgr().Conn())); Xogui_root gui_root = gui_mgr.Get_root(key, ctx, "en"); - app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.cfg_list.load__recv", gui_root.To_nde()); + app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.cfg_edit.load__recv", gui_root.To_nde()); } } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/items/Xocfg_item_html.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/pages/Xocfg_maint_html.java similarity index 75% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/items/Xocfg_item_html.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/pages/Xocfg_maint_html.java index 00f971f95..041a6960f 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/items/Xocfg_item_html.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/pages/Xocfg_maint_html.java @@ -15,13 +15,13 @@ 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.addons.apps.cfgs.specials.items; 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.specials.*; +package gplx.xowa.addons.apps.cfgs.specials.maints.pages; 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.specials.*; import gplx.xowa.addons.apps.cfgs.specials.maints.*; import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*; import gplx.xowa.addons.apps.cfgs.gui.*; -class Xocfg_item_html extends Xow_special_wtr__base { - public Xocfg_item_html() {} - @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "app", "cfg", "item");} - @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xocfg_item.mustache.html");} +class Xocfg_maint_html extends Xow_special_wtr__base { + public Xocfg_maint_html() {} + @Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "app", "cfg", "maint");} + @Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xo.cfg_maint.mustache.html");} @Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) { return new Xogui_grp(0, 1, "test"); } @@ -32,7 +32,7 @@ class Xocfg_item_html extends Xow_special_wtr__base { Xopg_tag_wtr_.Add__xolog (head_tags, app.Fsys_mgr().Http_root()); Xopg_tag_wtr_.Add__xoajax (head_tags, app.Fsys_mgr().Http_root(), app); - head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xocfg_item.css"))); - head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xocfg_item.js"))); + head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xo.cfg_maint.css"))); + head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xo.cfg_maint.js"))); } } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/items/Xocfg_item_special.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/pages/Xocfg_maint_special.java similarity index 60% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/items/Xocfg_item_special.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/pages/Xocfg_maint_special.java index 3b62932bb..f42b75b09 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/items/Xocfg_item_special.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/pages/Xocfg_maint_special.java @@ -15,14 +15,15 @@ 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.addons.apps.cfgs.specials.items; 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.specials.*; +package gplx.xowa.addons.apps.cfgs.specials.maints.pages; 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.specials.*; import gplx.xowa.addons.apps.cfgs.specials.maints.*; import gplx.xowa.specials.*; import gplx.core.net.qargs.*; -public class Xocfg_item_special implements Xow_special_page { +public class Xocfg_maint_special implements Xow_special_page { public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) { - new Xocfg_item_html().Bld_page_by_mustache(wiki.App(), page, this); + new Xocfg_maint_html().Bld_page_by_mustache(wiki.App(), page, this); } - Xocfg_item_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} + + Xocfg_maint_special(Xow_special_meta special__meta) {this.special__meta = special__meta;} public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta; public Xow_special_page Special__clone() {return this;} - public static final Xow_special_page Prototype = new Xocfg_item_special(Xow_special_meta.New_xo("XowaCfgItem", "Option Admin")); + public static final Xow_special_page Prototype = new Xocfg_maint_special(Xow_special_meta.New_xo("XowaCfgMaint", "Option Maintenance")); } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/items/Xocfg_item_bridge.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_bridge.java similarity index 50% rename from 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/items/Xocfg_item_bridge.java rename to 400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_bridge.java index cdf3afaca..95aec57f7 100644 --- a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/items/Xocfg_item_bridge.java +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_bridge.java @@ -15,44 +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.addons.apps.cfgs.specials.items; 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.specials.*; +package gplx.xowa.addons.apps.cfgs.specials.maints.services; 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.specials.*; import gplx.xowa.addons.apps.cfgs.specials.maints.*; import gplx.langs.jsons.*; import gplx.xowa.htmls.bridges.*; -public class Xocfg_item_bridge implements Bridge_cmd_itm { - private Xoa_app app; +public class Xocfg_maint_bridge implements Bridge_cmd_itm { + private Xocfg_maint_service svc; public void Init_by_app(Xoa_app app) { - this.app = app; + this.svc = new Xocfg_maint_service(app); } public String Exec(Json_nde data) { byte proc_id = proc_hash.Get_as_byte_or(data.Get_as_bry_or(Bridge_cmd_mgr.Msg__proc, null), Byte_ascii.Max_7_bit); Json_nde args = data.Get_kv(Bridge_cmd_mgr.Msg__args).Val_as_nde(); switch (proc_id) { - case Proc__upsert: Save(args); break; - default: throw Err_.new_unhandled_default(proc_id); + case Proc__upsert: svc.Upsert(args.Get_as_str("data")); break; + default: throw Err_.new_unhandled_default(proc_id); } return ""; } - private void Save(Json_nde args) { - String data = args.Get_as_str("data"); - gplx.xowa.addons.apps.cfgs.dbs.Xocfg_itm_bldr itm_bldr = new gplx.xowa.addons.apps.cfgs.dbs.Xocfg_itm_bldr(new gplx.xowa.addons.apps.cfgs.dbs.Xocfg_db_mgr(app.User().User_db_mgr().Conn())); - String[] lines = String_.Split(data, "\n"); - for (String line : lines) { - String[] ary = String_.Split(line, "|"); - if (ary.length < 4) continue; - if (String_.Eq(ary[0], "grp")) { - itm_bldr.Create_grp(ary[1], ary[2], ary[3], ary[4]); - } - else { - itm_bldr.Create_itm(ary[1], ary[2], ary[3], Type_adp_.To_tid(ary[4]), ary[5], ary[6], ary[7], ary[8], ary[9]); - } - } - } private static final byte Proc__upsert = 0; private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs() .Add_str_byte("upsert" , Proc__upsert) ; - public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("cfg.maint"); - public static final Xocfg_item_bridge Prototype = new Xocfg_item_bridge(); Xocfg_item_bridge() {} + public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("xo.cfg_maint"); + public static final Xocfg_maint_bridge Prototype = new Xocfg_maint_bridge(); Xocfg_maint_bridge() {} } diff --git a/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_service.java b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_service.java new file mode 100644 index 000000000..8cd130052 --- /dev/null +++ b/400_xowa/src/gplx/xowa/addons/apps/cfgs/specials/maints/services/Xocfg_maint_service.java @@ -0,0 +1,40 @@ +/* +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.addons.apps.cfgs.specials.maints.services; 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.specials.*; import gplx.xowa.addons.apps.cfgs.specials.maints.*; +import gplx.xowa.addons.apps.cfgs.dbs.*; +class Xocfg_maint_service { + private Xoa_app app; + public Xocfg_maint_service(Xoa_app app) { + this.app = app; + } + public void Upsert(String data) { + Xocfg_itm_bldr itm_bldr = new Xocfg_itm_bldr(new Xocfg_db_mgr(app.User().User_db_mgr().Conn())); + String[] lines = String_.Split(data, "\n"); + for (String line : lines) { + String[] ary = String_.Split(line, "|"); + if (ary.length < 4) continue; // ignore blank lines + String type = String_.Trim(ary[0]); // get 1st arg and ignore leading space + if (String_.Eq(type, "grp")) { + itm_bldr.Create_grp(ary[1], ary[2], ary[3], ary[4]); + } + else { + itm_bldr.Create_itm(ary[1], ary[2], ary[3], Type_adp_.To_tid(ary[4]), ary[5], ary[6], ary[7], ary[8], ary[9]); + } + } + } +}