mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-09-29 06:50:50 +00:00
Cfg: Show items
This commit is contained in:
parent
21102d846f
commit
bc04443812
@ -25,6 +25,7 @@ public class Mustache_bfr {
|
|||||||
public void Add_long (long v) {bfr.Add_long_variable(v);}
|
public void Add_long (long v) {bfr.Add_long_variable(v);}
|
||||||
public void Add_double (double v) {bfr.Add_double(v);}
|
public void Add_double (double v) {bfr.Add_double(v);}
|
||||||
public void Add_str_u8 (String v) {bfr.Add_str_u8(v);}
|
public void Add_str_u8 (String v) {bfr.Add_str_u8(v);}
|
||||||
|
public void Add_str_u8_safe (String v) {if (v != null) bfr.Add_str_u8(v);}
|
||||||
public void Add_mid (byte[] src, int bgn, int end) {bfr.Add_mid(src, bgn, end);}
|
public void Add_mid (byte[] src, int bgn, int end) {bfr.Add_mid(src, bgn, end);}
|
||||||
public void Add_bry (byte[] v) {
|
public void Add_bry (byte[] v) {
|
||||||
if (v == null) return; // allow items to have null props
|
if (v == null) return; // allow items to have null props
|
||||||
|
@ -32,7 +32,7 @@ public class Xoa_app_ {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static final String Name = "xowa";
|
public static final String Name = "xowa";
|
||||||
public static final String Version = "3.11.2.1";
|
public static final String Version = "3.11.2.2";
|
||||||
public static String Build_date = "2012-12-30 00:00:00";
|
public static String Build_date = "2012-12-30 00:00:00";
|
||||||
public static String Op_sys_str;
|
public static String Op_sys_str;
|
||||||
public static String User_agent = "";
|
public static String User_agent = "";
|
||||||
|
@ -32,14 +32,14 @@ public class Xogrp_map_tbl implements Db_tbl {
|
|||||||
public String Tbl_name() {return tbl_name;} private final String tbl_name;
|
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));}
|
||||||
public void Upsert(int map_src, int map_trg, int map_sort) {
|
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), map_src, map_trg, 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) {
|
public int Select_next_sort(int owner_id) {
|
||||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__map_src).Crt_int(fld__map_src, owner_id).Exec_select__rls_auto();
|
Db_rdr rdr = conn.Stmt_sql("SELECT Max(map_sort) AS map_sort FROM cfg_grp_map WHERE map_src = ?").Crt_int(fld__map_src, owner_id).Exec_select__rls_auto();
|
||||||
try {
|
try {
|
||||||
return rdr.Move_next()
|
if (!rdr.Move_next()) return 0;
|
||||||
? rdr.Read_int(fld__map_sort) + 1
|
Object max = rdr.Read_obj(fld__map_sort);
|
||||||
: 0;
|
return max == null ? 0 : Int_.cast(max) + 1;
|
||||||
}
|
}
|
||||||
finally {rdr.Rls();}
|
finally {rdr.Rls();}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public class Xonde_i18n_tbl implements Db_tbl {
|
|||||||
public String Tbl_name() {return tbl_name;} private final String tbl_name;
|
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));}
|
||||||
public void Upsert(int nde_tid, int nde_id, String nde_lang, String nde_name, String nde_help) {
|
public void Upsert(int nde_tid, int nde_id, String nde_lang, String nde_name, String nde_help) {
|
||||||
Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__nde_tid, fld__nde_id, fld__nde_lang), nde_tid, nde_id, nde_lang, nde_name, nde_help);
|
Db_tbl__crud_.Upsert(conn, tbl_name, flds, String_.Ary(fld__nde_id, fld__nde_tid, fld__nde_lang), nde_id, nde_tid, nde_lang, nde_name, nde_help);
|
||||||
}
|
}
|
||||||
public Xonde_i18n_itm Select_by_id_or_null(int id) {
|
public Xonde_i18n_itm Select_by_id_or_null(int id) {
|
||||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__nde_id).Crt_int(fld__nde_id, id).Exec_select__rls_auto();
|
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__nde_id).Crt_int(fld__nde_id, id).Exec_select__rls_auto();
|
||||||
|
@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
package gplx.xowa.addons.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
|
package gplx.xowa.addons.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
|
||||||
import gplx.langs.mustaches.*;
|
import gplx.langs.mustaches.*;
|
||||||
public class Xogui_grp implements Xogui_nde, Mustache_doc_itm {
|
public class Xogui_grp implements Xogui_nde, Mustache_doc_itm {
|
||||||
|
private Xogui_itm[] itms = new Xogui_itm[0];
|
||||||
public Xogui_grp(int id, int sort, String key) {
|
public Xogui_grp(int id, int sort, String key) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.sort = sort;
|
this.sort = sort;
|
||||||
@ -39,14 +40,17 @@ public class Xogui_grp implements Xogui_nde, Mustache_doc_itm {
|
|||||||
|
|
||||||
public void Grps__add(Xogui_grp grp) {
|
public void Grps__add(Xogui_grp grp) {
|
||||||
}
|
}
|
||||||
public void Itms__add(Xogui_itm itm) {
|
public void Itms_(Xogui_itm[] v) {
|
||||||
|
this.itms = v;
|
||||||
}
|
}
|
||||||
public boolean Mustache__write(String key, Mustache_bfr bfr) {
|
public boolean Mustache__write(String k, Mustache_bfr bfr) {
|
||||||
if (String_.Eq(key, "id")) bfr.Add_int(id);
|
if (String_.Eq(k, "id")) bfr.Add_int(id);
|
||||||
else if (String_.Eq(key, "key")) bfr.Add_str_u8(key);
|
else if (String_.Eq(k, "key")) bfr.Add_str_u8(key);
|
||||||
|
else if (String_.Eq(k, "name")) bfr.Add_str_u8_safe(name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public Mustache_doc_itm[] Mustache__subs(String key) {
|
public Mustache_doc_itm[] Mustache__subs(String key) {
|
||||||
|
if (String_.Eq(key, "itms")) return itms;
|
||||||
return Mustache_doc_itm_.Ary__empty;
|
return Mustache_doc_itm_.Ary__empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package gplx.xowa.addons.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
|
package gplx.xowa.addons.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.cfgs.*;
|
||||||
public class Xogui_itm implements Xogui_nde {
|
import gplx.langs.mustaches.*;
|
||||||
|
public class Xogui_itm implements Xogui_nde, Mustache_doc_itm {
|
||||||
public Xogui_itm(int id, int sort) {
|
public Xogui_itm(int id, int sort) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.sort = sort;
|
this.sort = sort;
|
||||||
@ -59,4 +60,12 @@ public class Xogui_itm implements Xogui_nde {
|
|||||||
this.val = dflt;
|
this.val = dflt;
|
||||||
this.date = String_.Empty;
|
this.date = String_.Empty;
|
||||||
}
|
}
|
||||||
|
public boolean Mustache__write(String key, Mustache_bfr bfr) {
|
||||||
|
if (String_.Eq(key, "name")) bfr.Add_str_u8(name);
|
||||||
|
else if (String_.Eq(key, "html")) new Xogui_itm_html().Build_html(bfr.Bfr(), name, gui_type, gui_args, val);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public Mustache_doc_itm[] Mustache__subs(String key) {
|
||||||
|
return Mustache_doc_itm_.Ary__empty;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package gplx.xowa.addons.apps.cfgs.gui; 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 Xogui_itm_html {
|
||||||
|
public void Build_html(Bry_bfr bfr, String name, int gui_type, String gui_args, String data) {
|
||||||
|
switch (gui_type) {
|
||||||
|
case Xoitm_gui_tid.Tid__checkbox:
|
||||||
|
bfr.Add_str_u8_fmt("<input type='checkbox' class='xocfg_checkbox'{0}></input>", String_.Eq(data, "true") ? " checked='checked'" : "");
|
||||||
|
break;
|
||||||
|
case Xoitm_gui_tid.Tid__numeric:
|
||||||
|
bfr.Add_str_u8_fmt("<input type='text' class='xocfg_numeric' value='{0}'></input>", data);
|
||||||
|
break;
|
||||||
|
case Xoitm_gui_tid.Tid__textbox:
|
||||||
|
bfr.Add_str_u8_fmt("<input type='text' class='xocfg_textbox' value='{0}'></input>", data);
|
||||||
|
break;
|
||||||
|
case Xoitm_gui_tid.Tid__memo:
|
||||||
|
bfr.Add_str_u8_fmt("<textarea type='text' class='xocfg_memo'>{0}</textarea>", data);
|
||||||
|
break;
|
||||||
|
case Xoitm_gui_tid.Tid__select:
|
||||||
|
bfr.Add_str_u8_fmt("<select type='text' class='xocfg_select' size='3'>");
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
bfr.Add_str_u8_fmt("<option value='{0}'{2}>{1}</option>", i, i, i == 2 ? " selected='selected'" : "");
|
||||||
|
}
|
||||||
|
bfr.Add_str_u8_fmt("</select>");
|
||||||
|
break;
|
||||||
|
case Xoitm_gui_tid.Tid__fs_file:
|
||||||
|
bfr.Add_str_u8_fmt("<input type='text' class='xocfg_fs_file' value='{0}'></input>", data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -34,6 +34,7 @@ public class Xogui_mgr {
|
|||||||
if (grp_meta == null) throw Err_.new_wo_type("cfg:grp not found", "grp", grp_key);
|
if (grp_meta == null) throw Err_.new_wo_type("cfg:grp not found", "grp", grp_key);
|
||||||
Xogui_grp owner = new Xogui_grp(grp_meta.Id(), 0, grp_meta.Key());
|
Xogui_grp owner = new Xogui_grp(grp_meta.Id(), 0, grp_meta.Key());
|
||||||
owner_hash.Add(grp_meta.Id(), owner);
|
owner_hash.Add(grp_meta.Id(), owner);
|
||||||
|
grp_regy.Add(owner);
|
||||||
|
|
||||||
// load tree by selecting subs until no more owners
|
// load tree by selecting subs until no more owners
|
||||||
while (owner_hash.Count() > 0) {
|
while (owner_hash.Count() > 0) {
|
||||||
@ -50,31 +51,33 @@ public class Xogui_mgr {
|
|||||||
}
|
}
|
||||||
private void Load_subs(Xogui_nde_hash grp_regy, Xogui_nde_hash itm_regy, Ordered_hash owner_hash, Xogui_grp owner) {
|
private void Load_subs(Xogui_nde_hash grp_regy, Xogui_nde_hash itm_regy, Ordered_hash owner_hash, Xogui_grp owner) {
|
||||||
String sql = Db_sql_.Make_by_fmt(String_.Ary
|
String sql = Db_sql_.Make_by_fmt(String_.Ary
|
||||||
( "SELECT m.trg_id"
|
( "SELECT m.map_trg"
|
||||||
, ", m.sort_id"
|
, ", m.map_sort"
|
||||||
, ", t.grp_key"
|
, ", t.grp_key"
|
||||||
, "FROM cfg_grp_map m"
|
, "FROM cfg_grp_map m"
|
||||||
, " LEFT JOIN cfg_grp_meta t ON m.trg_id = t.grp_id"
|
, " LEFT JOIN cfg_grp_meta t ON m.map_trg = t.grp_id"
|
||||||
, "WHERE m.src_id = {0}"
|
, "WHERE m.map_src = {0}"
|
||||||
), owner.Id()
|
), owner.Id()
|
||||||
);
|
);
|
||||||
Db_rdr rdr = db_mgr.Conn().Stmt_sql(sql).Exec_select__rls_auto();
|
Db_rdr rdr = db_mgr.Conn().Stmt_sql(sql).Exec_select__rls_auto();
|
||||||
|
List_adp itms_list = List_adp_.New();
|
||||||
while (rdr.Move_next()) {
|
while (rdr.Move_next()) {
|
||||||
String grp_key = rdr.Read_str("grp_key");
|
String grp_key = rdr.Read_str("grp_key");
|
||||||
// nde is grp
|
// nde is grp
|
||||||
if (grp_key == null) {
|
if (grp_key == null) {
|
||||||
Xogui_itm gui_itm = new Xogui_itm(rdr.Read_int("trg_id"), rdr.Read_int("sort_id"));
|
Xogui_itm gui_itm = new Xogui_itm(rdr.Read_int("map_trg"), rdr.Read_int("map_sort"));
|
||||||
owner.Itms__add(gui_itm);
|
itms_list.Add(gui_itm);
|
||||||
itm_regy.Add(gui_itm);
|
itm_regy.Add(gui_itm);
|
||||||
}
|
}
|
||||||
// nde is grp
|
// nde is grp
|
||||||
else {
|
else {
|
||||||
Xogui_grp gui_grp = new Xogui_grp(rdr.Read_int("trg_id"), rdr.Read_int("sort_id"), grp_key);
|
Xogui_grp gui_grp = new Xogui_grp(rdr.Read_int("map_trg"), rdr.Read_int("map_sort"), grp_key);
|
||||||
owner.Grps__add(gui_grp);
|
owner.Grps__add(gui_grp);
|
||||||
grp_regy.Add(gui_grp);
|
grp_regy.Add(gui_grp);
|
||||||
owner_hash.Add(gui_grp.Id(), gui_grp);
|
owner_hash.Add(gui_grp.Id(), gui_grp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
owner.Itms_((Xogui_itm[])itms_list.To_ary_and_clear(Xogui_itm.class));
|
||||||
}
|
}
|
||||||
private void Load_itm_meta(Xogui_nde_hash itm_regy) {
|
private void Load_itm_meta(Xogui_nde_hash itm_regy) {
|
||||||
Xogui_nde_iter iter = Xogui_nde_iter.New_sql(itm_regy);
|
Xogui_nde_iter iter = Xogui_nde_iter.New_sql(itm_regy);
|
||||||
@ -152,7 +155,7 @@ public class Xogui_mgr {
|
|||||||
, ", h.nde_name"
|
, ", h.nde_name"
|
||||||
, ", h.nde_help"
|
, ", h.nde_help"
|
||||||
, ", h.nde_lang"
|
, ", h.nde_lang"
|
||||||
, "FROM cfg_itm_meta t"
|
, "FROM cfg_nde_i18n h"
|
||||||
, "WHERE h.nde_id IN ({0})"
|
, "WHERE h.nde_id IN ({0})"
|
||||||
, "AND h.nde_lang = '{1}'"
|
, "AND h.nde_lang = '{1}'"
|
||||||
), cur_iter.To_sql_in()
|
), cur_iter.To_sql_in()
|
||||||
@ -162,7 +165,7 @@ public class Xogui_mgr {
|
|||||||
// read and set i18n
|
// read and set i18n
|
||||||
Db_rdr rdr = db_mgr.Conn().Stmt_sql(sql).Exec_select__rls_auto();
|
Db_rdr rdr = db_mgr.Conn().Stmt_sql(sql).Exec_select__rls_auto();
|
||||||
while (rdr.Move_next()) {
|
while (rdr.Move_next()) {
|
||||||
Xogui_nde gui_itm = (Xogui_itm)cur_regy.Get_at(rdr.Read_int("nde_id"));
|
Xogui_nde gui_itm = (Xogui_nde)cur_regy.Get_by_or_fail(rdr.Read_int("nde_id"));
|
||||||
gui_itm.Load_by_i18n(rdr.Read_str("nde_lang"), rdr.Read_str("nde_name"), rdr.Read_str("nde_help"));
|
gui_itm.Load_by_i18n(rdr.Read_str("nde_lang"), rdr.Read_str("nde_name"), rdr.Read_str("nde_help"));
|
||||||
cur_regy.Deleted__add(gui_itm);
|
cur_regy.Deleted__add(gui_itm);
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,7 @@ class Xogui_nde_iter {
|
|||||||
public String To_sql_in() {
|
public String To_sql_in() {
|
||||||
Bry_bfr bfr = Bry_bfr_.New();
|
Bry_bfr bfr = Bry_bfr_.New();
|
||||||
int end = bgn + max;
|
int end = bgn + max;
|
||||||
|
if (end > hash.Len()) end = hash.Len();
|
||||||
for (int i = bgn; i < end; i++) {
|
for (int i = bgn; i < end; i++) {
|
||||||
Xogui_nde nde = hash.Get_at(i);
|
Xogui_nde nde = hash.Get_at(i);
|
||||||
if (i != bgn) bfr.Add_byte_comma();
|
if (i != bgn) bfr.Add_byte_comma();
|
||||||
|
@ -35,12 +35,16 @@ public class Xocfg_item_bridge implements gplx.xowa.htmls.bridges.Bridge_cmd_itm
|
|||||||
private void Save(Json_nde args) {
|
private void Save(Json_nde args) {
|
||||||
String data = args.Get_as_str("data");
|
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()));
|
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[] ary = String_.Split(data, "|");
|
String[] lines = String_.Split(data, "\n");
|
||||||
if (String_.Eq(ary[0], "grp")) {
|
for (String line : lines) {
|
||||||
itm_bldr.Create_grp(ary[1], ary[2], ary[3], ary[4]);
|
String[] ary = String_.Split(line, "|");
|
||||||
}
|
if (ary.length < 4) continue;
|
||||||
else {
|
if (String_.Eq(ary[0], "grp")) {
|
||||||
itm_bldr.Create_itm(ary[1], ary[2], ary[3], ary[4], ary[5], ary[6], ary[7], ary[8]);
|
itm_bldr.Create_grp(ary[1], ary[2], ary[3], ary[4]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
itm_bldr.Create_itm(ary[1], ary[2], ary[3], ary[4], ary[5], ary[6], ary[7], ary[8]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user