mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v2.7.3.1
This commit is contained in:
@@ -51,10 +51,10 @@ public class Xouc_setup_mgr implements GfoInvkAble {
|
||||
boolean pass = false; String fail = "";
|
||||
try {pass = new ProcessAdp().Exe_url_(Io_url_.new_fil_(exe)).Args_str_(arg).Run_wait_sync().Exit_code_pass();}
|
||||
catch (Exception e) {
|
||||
fail = Err_.Message_gplx_brief(e);
|
||||
fail = Err_.Message_gplx_full(e);
|
||||
}
|
||||
if (!pass)
|
||||
user.Appe().Usr_dlg().Prog_many("xowa.setup_mgr", "run.fail", "process exec failed: ~{0} ~{1} ~{2}", exe, arg, fail);
|
||||
user.Appe().Usr_dlg().Prog_many("", "", "process exec failed: ~{0} ~{1} ~{2}", exe, arg, fail);
|
||||
return pass;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ public class Xouc_startup_mgr implements GfoInvkAble {
|
||||
case Page_home: return config.Pages_mgr().Home();
|
||||
case Page_last: return String_.new_u8(config.User().Appe().Gui_mgr().Browser_win().Active_page().Ttl().Raw());
|
||||
case Page_xowa: return Xouc_pages_mgr.Page_xowa;
|
||||
default: throw Exc_.new_unhandled(page);
|
||||
default: throw Err_.new_unhandled(page);
|
||||
}
|
||||
}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
|
||||
@@ -79,7 +79,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble {
|
||||
Xoae_page bookmarks_page = wiki.Data_mgr().Get_page(bookmarks_ttl, false);
|
||||
byte[] new_data = Bry_.Add(bookmarks_page.Data_raw(), new_entry);
|
||||
wiki.Db_mgr().Save_mgr().Data_update(bookmarks_page, new_data);
|
||||
} private Bry_fmtr bookmarks_add_fmtr = Bry_fmtr.new_("* [[~{wiki_key}:~{page_name}]]\n", "wiki_key", "page_name"); byte[] Bry_data_bookmarks = Bry_.new_u8("Data:Bookmarks");
|
||||
} private Bry_fmtr bookmarks_add_fmtr = Bry_fmtr.new_("* [[~{wiki_key}:~{page_name}]]\n", "wiki_key", "page_name"); byte[] Bry_data_bookmarks = Bry_.new_a7("Data:Bookmarks");
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_available_from_bulk)) Available_from_bulk(m.ReadBry("v"));
|
||||
else if (ctx.Match(k, Invk_available_from_fsys)) Available_from_fsys();
|
||||
@@ -92,7 +92,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble {
|
||||
else if (ctx.Match(k, Invk_prefs)) return prefs_mgr;
|
||||
else if (ctx.Match(k, Invk_cfg)) return cfg_mgr;
|
||||
else if (ctx.Match(k, Invk_session)) return session_mgr;
|
||||
else if (ctx.Match(k, "name")) return key; //throw Exc_.new_unhandled(k); // OBSOLETE: used to return key
|
||||
else if (ctx.Match(k, "name")) return key; //throw Err_.new_unhandled(k); // OBSOLETE: used to return key
|
||||
else return GfoInvkAble_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -20,15 +20,16 @@ import gplx.dbs.*; import gplx.dbs.qrys.*;
|
||||
public class Xoud_bmk_itm_tbl implements RlsAble {
|
||||
private final String tbl_name = "bmk_itm"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
|
||||
private final String fld_id, fld_owner, fld_sort, fld_name, fld_wiki, fld_url, fld_comment;
|
||||
private Db_stmt stmt_update_sort;
|
||||
public Xoud_bmk_itm_tbl(Db_conn conn) {
|
||||
this.conn = conn;
|
||||
fld_id = flds.Add_int_pkey_autonum("itm_id");
|
||||
fld_owner = flds.Add_int("itm_owner");
|
||||
fld_sort = flds.Add_int("itm_sort");
|
||||
fld_name = flds.Add_str("itm_name", 255);
|
||||
fld_wiki = flds.Add_str("itm_wiki", 255);
|
||||
fld_url = flds.Add_str("itm_url", 255);
|
||||
fld_comment = flds.Add_str("itm_comment", 255);
|
||||
fld_name = flds.Add_str("itm_name" , 255);
|
||||
fld_wiki = flds.Add_str("itm_wiki" , 255);
|
||||
fld_url = flds.Add_str("itm_url" , 1024);
|
||||
fld_comment = flds.Add_str("itm_comment" , 4096);
|
||||
conn.Rls_reg(this);
|
||||
}
|
||||
public Db_conn Conn() {return conn;} private final Db_conn conn;
|
||||
@@ -49,6 +50,10 @@ public class Xoud_bmk_itm_tbl implements RlsAble {
|
||||
.Crt_int(fld_id, id)
|
||||
.Exec_update();
|
||||
}
|
||||
public void Update_sort(int id, int sort) {
|
||||
if (stmt_update_sort == null) stmt_update_sort = conn.Stmt_update(tbl_name, String_.Ary(fld_id), fld_sort);
|
||||
stmt_update_sort.Clear().Val_int(fld_sort, sort).Crt_int(fld_id, id).Exec_update();;
|
||||
}
|
||||
public void Delete(int id) {
|
||||
Db_stmt stmt_delete = conn.Stmt_delete(tbl_name, fld_id);
|
||||
stmt_delete.Clear().Crt_int(fld_id, id).Exec_delete();
|
||||
@@ -77,6 +82,13 @@ public class Xoud_bmk_itm_tbl implements RlsAble {
|
||||
}
|
||||
finally {rdr.Rls();}
|
||||
}
|
||||
public Xoud_bmk_itm_row Select_or_null(int id) {
|
||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_id).Crt_int(fld_id, id).Exec_select__rls_manual();
|
||||
try {
|
||||
return rdr.Move_next() ? new_row(rdr) : null;
|
||||
}
|
||||
finally {rdr.Rls();}
|
||||
}
|
||||
private Xoud_bmk_itm_row new_row(Db_rdr rdr) {
|
||||
return new Xoud_bmk_itm_row
|
||||
( rdr.Read_int(fld_id)
|
||||
@@ -88,5 +100,7 @@ public class Xoud_bmk_itm_tbl implements RlsAble {
|
||||
, rdr.Read_bry_by_str(fld_comment)
|
||||
);
|
||||
}
|
||||
public void Rls() {}
|
||||
public void Rls() {
|
||||
stmt_update_sort = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,12 +23,11 @@ public class Xoud_bmk_mgr {
|
||||
public void Conn_(Db_conn conn, boolean created) {
|
||||
this.tbl__dir = new Xoud_bmk_dir_tbl(conn);
|
||||
this.tbl__itm = new Xoud_bmk_itm_tbl(conn);
|
||||
// if (!conn.Meta_tbl_exists(tbl__dir.Tbl_name())) tbl__dir.Create_tbl(); // bmk_v2
|
||||
// if (!conn.Meta_tbl_exists(tbl__itm.Tbl_name())) tbl__itm.Create_tbl();
|
||||
// if (!conn.Meta_tbl_exists(tbl__dir.Tbl_name())) tbl__dir.Create_tbl(); // bmk_v2
|
||||
if (!conn.Meta_tbl_exists(tbl__itm.Tbl_name())) tbl__itm.Create_tbl();
|
||||
}
|
||||
public void Itms__add(int owner, Xoa_url url) {
|
||||
tbl__itm.Insert(owner, tbl__itm.Select_sort_next(owner), Xoa_ttl.Replace_unders(url.Page_bry()), url.Wiki_bry(), url.Raw(), Bry_.Empty);
|
||||
}
|
||||
public Xoud_bmk_itm_row[] Itms__get(int owner) {return tbl__itm.Select_grp(owner);}
|
||||
public static final int Owner_root = -1;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ public class Xou_history_itm {
|
||||
case Fld_view_count : return view_count;
|
||||
case Fld_view_bgn : return view_bgn;
|
||||
case Fld_view_end : return view_end;
|
||||
default : throw Exc_.new_unhandled(idx);
|
||||
default : throw Err_.new_unhandled(idx);
|
||||
}
|
||||
}
|
||||
public void Tally() {
|
||||
|
||||
@@ -131,7 +131,7 @@ class Xou_history_itm_srl {
|
||||
existing.Merge(itm);
|
||||
}
|
||||
}
|
||||
catch (Exception e) {throw Exc_.new_parse_exc(e, Xou_history_itm.class, String_.new_u8(ary));}
|
||||
catch (Exception e) {throw Err_.new_parse_exc(e, Xou_history_itm.class, String_.new_u8(ary));}
|
||||
}
|
||||
public static byte[] Save(Ordered_hash list) {
|
||||
Bry_bfr bb = Bry_bfr.new_();
|
||||
|
||||
@@ -42,9 +42,9 @@ class Prefs_converter_fxt {
|
||||
public void Parse(String raw_str) {
|
||||
byte[] raw_bry = Bry_.new_u8(raw_str);
|
||||
int bgn_pos = Bry_finder.Find_fwd(raw_bry, Byte_ascii.Paren_bgn);
|
||||
if (bgn_pos == Bry_.NotFound) throw Exc_.new_("unable to find paren_bgn", "raw", raw_str);
|
||||
if (bgn_pos == Bry_.NotFound) throw Err_.new_wo_type("unable to find paren_bgn", "raw", raw_str);
|
||||
int end_pos = Bry_finder.Find_fwd(raw_bry, Byte_ascii.Paren_end, bgn_pos);
|
||||
if (end_pos == Bry_.NotFound) throw Exc_.new_("unable to find paren_end", "raw", raw_str);
|
||||
if (end_pos == Bry_.NotFound) throw Err_.new_wo_type("unable to find paren_end", "raw", raw_str);
|
||||
raw_bry = Bry_.Mid(raw_bry, bgn_pos, end_pos);
|
||||
int len = raw_bry.length;
|
||||
for (int i = 0; i < len; i++) {
|
||||
|
||||
@@ -97,13 +97,13 @@ class Prefs_html_wtr {
|
||||
cmd = hnde.Atrs_val_by_key_bry(Prefs_mgr.Bry_prop_get);
|
||||
tmp_bfr.Add(cmd).Add_byte(Byte_ascii.Semic);
|
||||
try {return prefs_mgr.Eval(tmp_bfr.Xto_bry_and_clear());}
|
||||
catch (Exception e) {return Err_.Message_gplx_brief(e);}
|
||||
catch (Exception e) {return Err_.Message_gplx_full(e);}
|
||||
}
|
||||
KeyVal[] Get_select_options(Html_nde hnde) {
|
||||
byte[] options_list_key = hnde.Atrs_val_by_key_bry(Atr_key_xowa_prop_list);
|
||||
tmp_bfr.Add(options_list_key).Add_byte(Byte_ascii.Semic);
|
||||
try {return (KeyVal[])prefs_mgr.Eval(tmp_bfr.Xto_bry_and_clear());}
|
||||
catch (Exception e) {Exc_.Noop(e); return KeyVal_.Ary_empty;}
|
||||
catch (Exception e) {Err_.Noop(e); return KeyVal_.Ary_empty;}
|
||||
}
|
||||
private void Write__nde_end(Bry_bfr bfr) {bfr.Add_byte(Byte_ascii.Gt);}
|
||||
private void Write__id(Bry_bfr bfr, int prop_idx) {
|
||||
|
||||
@@ -36,7 +36,7 @@ public class Prefs_mgr implements GfoInvkAble {
|
||||
props_get_fmtr.Fmt_(src);
|
||||
Bry_bfr bfr = Bry_bfr.new_();
|
||||
try {src = props_get_fmtr.Fmt_(src).Bld_bry_none(bfr);}
|
||||
catch (Exception e) {src = Bry_.Add(src, Bry_.new_u8(Err_.Message_gplx_brief(e)));}
|
||||
catch (Exception e) {src = Bry_.Add(src, Bry_.new_u8(Err_.Message_gplx_full(e)));}
|
||||
Html_nde[] hndes = html_rdr.Parse_as_ary(src);
|
||||
hndes = Html_selecter.Select(src, hndes, atrs_hash);
|
||||
int pos = 0;
|
||||
@@ -93,11 +93,11 @@ public class Prefs_mgr implements GfoInvkAble {
|
||||
get_str = Scrub_tidy_trailing_nl_in_textarea(tidy_enabled, elem_tid, get_str);
|
||||
if (String_.Eq(get_str, hnde_val)) return;
|
||||
try {app.Cfg_mgr().Set_by_app(String_.new_u8(get_cmd), hnde_val);}
|
||||
catch (Exception e) {app.Usr_dlg().Warn_many("", "", "pref update failed: code=~{0} err=~{1}", String_.new_u8(eval_code), Err_.Message_gplx_brief(e));}
|
||||
catch (Exception e) {app.Usr_dlg().Warn_many("", "", "pref update failed: code=~{0} err=~{1}", eval_code, Err_.Message_gplx_full(e));}
|
||||
}
|
||||
private Object Eval_run(byte[] cmd) {
|
||||
try {return Eval(cmd);}
|
||||
catch (Exception e) {Exc_.Noop(e); return null;}
|
||||
catch (Exception e) {Err_.Noop(e); return null;}
|
||||
}
|
||||
private byte[] Parse_wikitext_to_html(byte[] src) {
|
||||
Xowe_wiki wiki = app.Usere().Wiki(); // NOTE: this limits prefs to home_wiki only
|
||||
@@ -122,10 +122,10 @@ public class Prefs_mgr implements GfoInvkAble {
|
||||
else if (Bry_.Eq(elem_name, Nde_input)) {
|
||||
byte[] input_type = hnde.Atrs_val_by_key_bry(Input_type);
|
||||
if (input_type == null) return Elem_tid_input_text;// treat <input /> as <input type='text'/>
|
||||
if (Bry_.Eq(input_type, Type_text)) return Elem_tid_input_text;
|
||||
else if (Bry_.Eq(input_type, Type_checkbox)) return Elem_tid_input_checkbox;
|
||||
else if (Bry_.Eq(input_type, Type_combo)) return Elem_tid_input_combo;
|
||||
else if (Bry_.Eq(input_type, Type_xowa_io)) return Elem_tid_input_xowa_io;
|
||||
if (Bry_.Eq(input_type, Type_text)) return Elem_tid_input_text;
|
||||
else if (Bry_.Eq(input_type, Type_checkbox)) return Elem_tid_input_checkbox;
|
||||
else if (Bry_.Eq(input_type, Type_combo)) return Elem_tid_input_combo;
|
||||
else if (Bry_.Eq(input_type, Type_xowa_io)) return Elem_tid_input_xowa_io;
|
||||
else return Elem_tid_null;
|
||||
}
|
||||
else return Elem_tid_null;
|
||||
|
||||
@@ -32,7 +32,7 @@ public class Prefs_mgr_tst {
|
||||
fxt.Exec_get("~{<>app.user.name;<>}", "test_user");
|
||||
}
|
||||
@Test public void Get_eval_fail() {
|
||||
fxt.Exec_get_has("~{<>fail.prop;<>}", "~{<>fail.prop;<>}[err 0] key not found: key=fail");
|
||||
fxt.Exec_get_has("~{<>fail.prop;<>}", "~{<>fail.prop;<>}[err 0] <gplx> key not found: key=fail");
|
||||
}
|
||||
@Test public void Set() {
|
||||
fxt.Init_elem_atr_val("xowa_prop_0", "abc");
|
||||
@@ -161,7 +161,7 @@ class Prefs_mgr_fxt {
|
||||
}
|
||||
public Prefs_mgr_fxt Exec_get_has(String src_str, String expd) {
|
||||
String actl = String_.new_u8(prefs_mgr.Props_get(Bry_.new_u8(src_str)));
|
||||
Tfds.Eq_true(String_.Has_at_bgn(actl, expd));
|
||||
Tfds.Eq_true(String_.Has(actl, expd));
|
||||
return this;
|
||||
}
|
||||
public Prefs_mgr_fxt Test_set(String src_str) {
|
||||
|
||||
@@ -60,7 +60,7 @@ class Xofs_url_itm_parser {
|
||||
int name_bgn = i + 2; // skip "~{"
|
||||
int name_end = Bry_finder.Find_fwd(raw, Byte_ascii.Curly_end, name_bgn);
|
||||
byte[] name = (byte[])names.Get_by_mid(raw, name_bgn, name_end);
|
||||
if (name == null) throw Exc_.new_("name not found", "raw", raw_str, "name", String_.new_u8(raw, name_bgn, name_end));
|
||||
if (name == null) throw Err_.new_wo_type("name not found", "raw", raw_str, "name", String_.new_u8(raw, name_bgn, name_end));
|
||||
url_bfr.Add(name);
|
||||
i = name_end;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user