1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00
This commit is contained in:
gnosygnu
2015-07-19 23:16:49 -04:00
parent 794b5a232f
commit 8e041d6e06
834 changed files with 4749 additions and 4461 deletions

View File

@@ -38,7 +38,7 @@ public class Move_page implements Xows_page {
private void Exec_rename(Xowe_wiki wiki, Xoae_page page) {
gplx.xowa.dbs.Xodb_save_mgr save_mgr = wiki.Db_mgr().Save_mgr();
int trg_ns_id = args.Trg_ns();
Xow_ns trg_ns = wiki.Ns_mgr().Ids_get_or_null(trg_ns_id); if (trg_ns == null) throw Exc_.new_("unknown ns", "ns", trg_ns_id);
Xow_ns trg_ns = wiki.Ns_mgr().Ids_get_or_null(trg_ns_id); if (trg_ns == null) throw Err_.new_wo_type("unknown ns", "ns", trg_ns_id);
byte[] trg_ttl_bry = args.Trg_ttl();
Xoa_ttl trg_ttl = Xoa_ttl.parse_(wiki, trg_ns_id, trg_ttl_bry);
Xowd_page_itm src_page = new Xowd_page_itm();

View File

@@ -49,7 +49,7 @@ class Xog_search_suggest_cmd implements GfoInvkAble, Cancelable {
working = false;
}
catch(Exception e) {
app.Usr_dlg().Prog_many("", "", "error during search: ~{0}", Err_.Message_gplx_brief(e));
app.Usr_dlg().Prog_many("", "", "error during search: err=~{0}", Err_.Message_gplx_full(e));
}
}
private boolean Search_by_all_pages_v2() {

View File

@@ -33,7 +33,7 @@ public class Xog_search_suggest_mgr implements GfoInvkAble {
public Gfo_url_arg[] Args_default() {return args_default;} private Gfo_url_arg[] args_default = Gfo_url_arg.Ary_empty;
public void Args_default_str_(String v) {
this.args_default_str = v;
byte[] bry = Bry_.new_u8("http://x.org/a?" + v);
byte[] bry = Bry_.new_a7("http://x.org/a?" + v);
Gfo_url tmp_url = new Gfo_url();
app.Utl__url_parser().Url_parser().Parse(tmp_url, bry, 0, bry.length);
args_default = tmp_url.Args();
@@ -133,14 +133,14 @@ public class Xog_search_suggest_mgr implements GfoInvkAble {
if (String_.Eq(v, Str_search_mode_search)) return Tid_search_mode_search;
else if (String_.Eq(v, Str_search_mode_all_pages_v1)) return Tid_search_mode_all_pages_v1;
else if (String_.Eq(v, Str_search_mode_all_pages_v2)) return Tid_search_mode_all_pages_v2;
else throw Exc_.new_unhandled(v);
else throw Err_.new_unhandled(v);
}
private static String Search_mode_str(byte v) {
switch (v) {
case Tid_search_mode_search: return Str_search_mode_search;
case Tid_search_mode_all_pages_v1: return Str_search_mode_all_pages_v1;
case Tid_search_mode_all_pages_v2: return Str_search_mode_all_pages_v2;
default: throw Exc_.new_unhandled(v);
default: throw Err_.new_unhandled(v);
}
}
}

View File

@@ -190,7 +190,7 @@ public class Xosrh_core_tst {
// byte[] ttl_bry = Bry_.new_a7(ttl_str);
// Xoa_ttl ttl = Xoa_ttl.parse_(wiki, ttl_bry);
// Xoae_page page = Xoae_page.test_(wiki, ttl);
// byte[] url_bry = Bry_.new_u8("http://en.wikipedia.org/wiki/Special:Search/" + ttl_str + args_str);
// byte[] url_bry = Bry_.new_a7("http://en.wikipedia.org/wiki/Special:Search/" + ttl_str + args_str);
// Xoa_url url = wiki.Appe().Url_parser().Parse(url_bry);
// search_mgr.Special_gen(url, page, wiki, ttl);
// Tfds.Eq_str_lines(expd_html, String_.new_u8(page.Root().Data_htm()));

View File

@@ -42,7 +42,7 @@ class Xosrh_qry_itm {
List_adp merged = Evaluate(src, tid == Xosrh_qry_itm.Tid_and, lhs, rhs);
return new Xosrh_qry_ids(false, merged);
case Xosrh_qry_itm.Tid_null: return Xosrh_qry_ids.Null;
default: throw Exc_.new_unhandled(tid);
default: throw Err_.new_unhandled(tid);
}
}
private static List_adp Search_word(Xowe_wiki wiki, Cancelable cancelable, Bry_bfr tmp_bfr, Xows_ns_mgr ns_mgr, byte[] search_word, int results_max) {
@@ -159,7 +159,7 @@ class Xosrh_qry_itm {
Xowd_page_itm id = (Xowd_page_itm)list_to_hash.Get_at(i);
try {
if (!tmp_hash.Has(id.Id_val())) tmp_hash.Add(id.Id_val(), id);
} catch (Exception e) {Exc_.Noop(e); tmp_hash.Clear(); return List_adp_.Noop;} // handle error in case of threading issues; must clear tmp_hash else will accumulate;
} catch (Exception e) {Err_.Noop(e); tmp_hash.Clear(); return List_adp_.Noop;} // handle error in case of threading issues; must clear tmp_hash else will accumulate;
if (tid == Evaluate_tid_or)
rv.Add(id);
}
@@ -177,7 +177,7 @@ class Xosrh_qry_itm {
rv.Add(id);
break;
case Evaluate_tid_null: default:
throw Exc_.new_unhandled(tid);
throw Err_.new_unhandled(tid);
}
}
tmp_hash.Clear();
@@ -199,7 +199,7 @@ class Xosrh_qry_itm {
bfr.Add_byte(Byte_ascii.Paren_end);
break;
case Xosrh_qry_itm.Tid_null: break;
default: throw Exc_.new_unhandled(tid);
default: throw Err_.new_unhandled(tid);
}
}
public static final byte Tid_null = 0, Tid_root = 1, Tid_word = 2, Tid_word_quote = 3, Tid_not = 4, Tid_or = 5, Tid_and = 6;

View File

@@ -30,7 +30,7 @@ public class Xosrh_rslt_itm_sorter implements gplx.lists.ComparerAble {
case Tid_len_dsc: return Int_.Compare(lhs.Text_len(), rhs.Text_len()) * -1;
case Tid_ttl_asc: return Bry_.Compare(lhs.Ttl_page_db(), rhs.Ttl_page_db());
case Tid_id: return Int_.Compare(lhs.Id(), rhs.Id());
default: throw Exc_.new_unhandled(tid);
default: throw Err_.new_unhandled(tid);
}
}
}
@@ -39,14 +39,14 @@ public class Xosrh_rslt_itm_sorter implements gplx.lists.ComparerAble {
if (String_.Eq(v, "none")) return Tid_none;
else if (String_.Eq(v, "len_desc")) return Tid_len_dsc;
else if (String_.Eq(v, "title_asc")) return Tid_ttl_asc;
else throw Exc_.new_unhandled(v);
else throw Err_.new_unhandled(v);
}
public static String Xto_url_arg(byte v) {
switch (v) {
case Tid_none: return "";
case Tid_len_dsc: return "&xowa_sort=len_desc";
case Tid_ttl_asc: return "&xowa_sort=title_asc";
default: throw Exc_.new_unhandled(v);
default: throw Err_.new_unhandled(v);
}
}
}

View File

@@ -44,7 +44,7 @@ class Xosrh_scanner {
case Xosrh_qry_tkn.Tid_quote: // find end quote and add as word
int quote_bgn = pos + 1;
int quote_end = Bry_finder.Find_fwd(src, Byte_ascii.Quote, quote_bgn, src_len);
if (quote_end == Bry_.NotFound) throw Exc_.new_("could not find end quote", "src", String_.new_u8(src));
if (quote_end == Bry_.NotFound) throw Err_.new_wo_type("could not find end quote", "src", String_.new_u8(src));
Tkns_add_word(Xosrh_qry_tkn.Tid_word_quoted, quote_bgn, quote_end);
pos = quote_end + 1; // +1 to place after quote
break;
@@ -57,7 +57,7 @@ class Xosrh_scanner {
tkns.Add(new_tkn_(cur_tid, pos, pos_end));
pos = pos_end;
break;
default: throw Exc_.new_unhandled(cur_tid);
default: throw Err_.new_unhandled(cur_tid);
}
}
}
@@ -76,7 +76,7 @@ class Xosrh_scanner {
boolean join_is_word = true;
if (txt_bgn == -1) { // no pending word;
if (cur_tid == Xosrh_qry_tkn.Tid_not) return false; // NOT is only operator if no pending tkn; EX: -abc -> NOT abc; a-b -> a-b
byte nxt_b = pos_end < src_len ? src[pos_end] : Byte_ascii.Nil;
byte nxt_b = pos_end < src_len ? src[pos_end] : Byte_ascii.Null;
Object nxt_obj = trie.Match_bgn_w_byte(nxt_b, src, pos_end, src_len);
if (nxt_obj == null) // next tkn is text; join must be word
join_is_word = true;
@@ -90,7 +90,7 @@ class Xosrh_scanner {
case Xosrh_qry_tkn.Tid_not: case Xosrh_qry_tkn.Tid_and: case Xosrh_qry_tkn.Tid_or:
join_is_word = true; // next tkn is and or not; and/or is word; EX: andor; oror; or-abc;
break;
default: throw Exc_.new_unhandled(cur_tid);
default: throw Err_.new_unhandled(cur_tid);
}
}
}

View File

@@ -52,7 +52,7 @@ public class Xows_db_matcher {
case Xows_db_matcher.Tid_and:
return lhs.Matches(page_ttl_lc, page_ttl_words) && rhs.Matches(page_ttl_lc, page_ttl_words);
case Xows_db_matcher.Tid_null: return false;
default: throw Exc_.new_unhandled(tid);
default: throw Err_.new_unhandled(tid);
}
}
public static final Xows_db_matcher Null = new Xows_db_matcher(Xows_db_matcher.Tid_null, null, null, null);

View File

@@ -57,7 +57,7 @@ class Xows_db_matcher_bldr {
break;
case Xows_db_matcher.Tid_not: break; // never add "NOT" to db_search
case Xows_db_matcher.Tid_null: break; // should not happen
default: throw Exc_.new_unhandled(matcher.Tid());
default: throw Err_.new_unhandled(matcher.Tid());
}
}
private List_adp Calc_lowest(List_adp lhs, List_adp rhs) {

View File

@@ -45,7 +45,7 @@ class Xow_search_scanner {
case Xow_search_tkn.Tid_quote: // find end quote and add as word
int quote_bgn = pos + 1;
int quote_end = Bry_finder.Find_fwd(src, Byte_ascii.Quote, quote_bgn, src_len);
if (quote_end == Bry_.NotFound) throw Exc_.new_("could not find end quote", "src", String_.new_u8(src));
if (quote_end == Bry_.NotFound) throw Err_.new_wo_type("could not find end quote", "src", String_.new_u8(src));
Tkns_add_word(Xow_search_tkn.Tid_word_quoted, quote_bgn, quote_end);
pos = quote_end + 1; // +1 to place after quote
break;
@@ -58,7 +58,7 @@ class Xow_search_scanner {
tkns.Add(new_tkn(cur_tid, pos, pos_end));
pos = pos_end;
break;
default: throw Exc_.new_unhandled(cur_tid);
default: throw Err_.new_unhandled(cur_tid);
}
}
}
@@ -77,7 +77,7 @@ class Xow_search_scanner {
boolean join_is_word = true;
if (txt_bgn == -1) { // no pending word;
if (cur_tid == Xow_search_tkn.Tid_not) return false; // NOT is only operator if no pending tkn; EX: -abc -> NOT abc; a-b -> a-b
byte nxt_b = pos_end < src_len ? src[pos_end] : Byte_ascii.Nil;
byte nxt_b = pos_end < src_len ? src[pos_end] : Byte_ascii.Null;
Object nxt_obj = trie.Match_bgn_w_byte(nxt_b, src, pos_end, src_len);
if (nxt_obj == null) // next tkn is text; join must be word
join_is_word = true;
@@ -91,7 +91,7 @@ class Xow_search_scanner {
case Xow_search_tkn.Tid_not: case Xow_search_tkn.Tid_and: case Xow_search_tkn.Tid_or:
join_is_word = true; // next tkn is and or not; and/or is word; EX: andor; oror; or-abc;
break;
default: throw Exc_.new_unhandled(cur_tid);
default: throw Err_.new_unhandled(cur_tid);
}
}
}

View File

@@ -0,0 +1,125 @@
/*
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.specials.xowa.bookmarks; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*;
import gplx.core.json.*; import gplx.html.*;
import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*;
import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; import gplx.xowa.html.bridges.dbuis.tbls.*; import gplx.xowa.html.bridges.dbuis.fmtrs.*;
public class Dbui_tbl_itm__bmk implements Dbui_tbl_itm {
private final Xoa_app app; private final Xoud_bmk_itm_tbl tbl;
private final Dbui_cells_fmtr cells_fmtr = new Dbui_cells_fmtr(); private final Dbui_val_fmtr edit_val_fmtr = Dbui_val_fmtr_.new_edit(); private final Dbui_val_fmtr view_val_fmtr = Dbui_val_fmtr_.new_view();
private final Bry_bfr tmp_bfr = Bry_bfr.new_(255);
private final Bridge_msg_bldr msg_bldr;
public Dbui_tbl_itm__bmk(Xoa_app app, Xoud_bmk_itm_tbl tbl) {this.app = app; this.tbl = tbl; this.msg_bldr = app.Html__bridge_mgr().Msg_bldr();}
public byte[] Key() {return key;} private static final byte[] key = Bry_.new_a7("bmk");
public Dbui_btn_itm[] View_btns() {return view_btns;}
public Dbui_btn_itm[] Edit_btns() {return edit_btns;}
public Dbui_col_itm[] Cols() {return cols;}
private final Dbui_tbl_fmtr tbl_fmtr = new Dbui_tbl_fmtr();
public void Reg(Bridge_cmd_mgr bridge_mgr) {
Dbui_cmd_mgr dbui_mgr = Dbui_cmd_mgr.I;
dbui_mgr.Init_by_bridge(bridge_mgr);
dbui_mgr.Add(this);
}
public void Select(Bry_bfr bfr, int owner) {
Xoud_bmk_itm_row[] db_rows = tbl.Select_grp(owner);
byte[] option_link = app.Html__lnki_bldr().Href_(Bry_.new_a7("home"), app.User().Wikii().Ttl_parse(Bry_.new_a7("Help:Options/Bookmarks"))).Img_16x16(gplx.xowa.html.wtrs.Xoh_img_path.Img_option).Bld_to_bry();
byte[] delete_confirm_msg = app.Api_root().Usr().Bookmarks().Delete_confirm() ? Msg__delete_confirm : Bry_.Empty;
tbl_fmtr.Write(bfr, this, option_link, delete_confirm_msg, To_ui_rows(db_rows));
} private static final byte[] Msg__delete_confirm = Bry_.new_a7(" data-dbui-delete_confirm_msg='Are you sure you want to delete this bookmark?'");
public String Del(byte[] row_id, byte[] row_pkey) {
Xoud_bmk_itm_row db_row = Get_db_row(row_pkey); if (db_row == null) return Fail_missing_row(row_pkey);
tbl.Delete(db_row.Id());
return msg_bldr.To_json_str__empty();
}
public String Edit(byte[] row_id, byte[] row_pkey) {
Xoud_bmk_itm_row db_row = Get_db_row(row_pkey); if (db_row == null) return Fail_missing_row(row_pkey);
Dbui_row_itm ui_row = Get_ui_row(db_row);
return Write_cells(edit_val_fmtr, edit_btns, row_id, ui_row);
}
public String Save(byte[] row_id, byte[] row_pkey, Dbui_val_hash vals) {
Xoud_bmk_itm_row db_row = Get_db_row(row_pkey); if (db_row == null) return Fail_missing_row(row_pkey);
byte[] new_name = vals.Get_val_as_bry("name");
byte[] new_url_bry = vals.Get_val_as_bry("url");
byte[] new_comment = vals.Get_val_as_bry("comment");
Xoa_url new_url = app.Utl__url_parser().Parse(new_url_bry);
if (new_url.Page_bry() == null) return msg_bldr.Clear().Notify_fail_(Err_msg.To_str("Url is invalid", "url", new_url.Raw())).To_json_str();
tbl.Update(db_row.Id(), db_row.Owner(), db_row.Sort(), new_name, new_url.Wiki_bry(), new_url_bry, new_comment);
Dbui_row_itm ui_row = Get_ui_row(row_pkey, new_name, new_url_bry, new_comment);
return Write_cells(view_val_fmtr, view_btns, row_id, ui_row);
}
public String Reorder(byte[][] pkeys, int owner) {
Xoud_bmk_itm_row[] db_rows = tbl.Select_grp(Xoud_bmk_mgr.Owner_root);
int len = db_rows.length; if (len != pkeys.length) return msg_bldr.Clear().Notify_fail_(Err_msg.To_str("Rows have changed")).Notify_hint_("Please reload the page").To_json_str();
for (int i = 0; i < len; ++i) {
int old_pkey = db_rows[i].Id();
int new_pkey = Bry_.Xto_int(pkeys[i]);
if (old_pkey == new_pkey) continue; // order hasn't changed; EX: 5 in list; 4th moved to 5th; 1 through 3 will have same sort order;
tbl.Update_sort(new_pkey, i);
}
return msg_bldr.To_json_str__empty();
}
public Dbui_row_itm[] To_ui_rows(Xoud_bmk_itm_row[] db_rows) {
int len = db_rows.length;
Dbui_row_itm[] rv = new Dbui_row_itm[len];
for (int i = 0; i < len; ++i)
rv[i] = Get_ui_row(db_rows[i]);
return rv;
}
private String Write_cells(Dbui_val_fmtr val_fmtr, Dbui_btn_itm[] btns, byte[] row_id, Dbui_row_itm row) {
cells_fmtr.Ctor(val_fmtr, btns);
cells_fmtr.Init(row_id, row);
cells_fmtr.XferAry(tmp_bfr, 0);
return app.Html__bridge_mgr().Msg_bldr().Clear().Data("html", tmp_bfr.Xto_bry_and_clear()).To_json_str();
}
private Xoud_bmk_itm_row Get_db_row(byte[] pkey) {
int bmk_id = Bry_.Xto_int_or_fail(pkey);
return tbl.Select_or_null(bmk_id);
}
private Dbui_row_itm Get_ui_row(Xoud_bmk_itm_row row) {return Get_ui_row(Int_.Xto_bry(row.Id()), row.Name(), row.Url(), row.Comment());}
private Dbui_row_itm Get_ui_row(byte[] pkey, byte[] name, byte[] url, byte[] comment) {
Dbui_val_itm[] vals = new Dbui_val_itm[3];
vals[0] = new Dbui_val_itm(name, Html_utl.Escape_html_as_bry(tmp_bfr, name));
vals[1] = new Dbui_val_itm(url, url_fmtr.Bld_bry_many(tmp_bfr, Html_utl.Escape_for_atr_val_as_bry(tmp_bfr, Byte_ascii.Apos, url)));
vals[2] = new Dbui_val_itm(comment, Html_utl.Escape_html_as_bry(comment));
return new Dbui_row_itm(this, pkey, vals);
}
private String Fail_missing_row(byte[] row_pkey) {
return msg_bldr.Clear().Notify_fail_(Err_msg.To_str("Item has been deleted", "key", row_pkey)).Notify_hint_("Please reload the page").To_json_str();
}
private static final Dbui_col_itm[] cols = new Dbui_col_itm[]
{ new Dbui_col_itm(Dbui_col_itm.Type_id_str , 150, "name" , "Name")
, new Dbui_col_itm(Dbui_col_itm.Type_id_str , 300, "url" , "Url")
, new Dbui_col_itm(Dbui_col_itm.Type_id_text , 300, "comment" , "Comment")
};
private static final Dbui_btn_itm[] view_btns = new Dbui_btn_itm[]
{ new Dbui_btn_itm("rows__edit" , "edit.png" , "edit")
, new Dbui_btn_itm("rows__delete" , "delete.png" , "delete")
};
private static final Dbui_btn_itm[] edit_btns = new Dbui_btn_itm[]
{ new Dbui_btn_itm("rows__save" , "save.png" , "save")
, new Dbui_btn_itm("rows__cancel" , "cancel.png" , "cancel")
};
private static final Bry_fmtr url_fmtr = Bry_fmtr.new_("<a href='/site/~{url}'>~{url}</a>", "url");
public static Dbui_tbl_itm__bmk get_or_new(Xoa_app app, Xoud_bmk_itm_tbl db_tbl) {
if (I == null) {
I = new Dbui_tbl_itm__bmk(app, db_tbl);
I.Reg(app.Html__bridge_mgr().Cmd_mgr());
}
return I;
} private static Dbui_tbl_itm__bmk I;
}

View File

@@ -1,107 +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 <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.specials.xowa.bookmarks; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*;
import gplx.json.*;
import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*;
import gplx.xowa.html.xouis.tbls.*; import gplx.xowa.html.xouis.fmtrs.*;
public class Xoui_tbl_itm__bmk implements Xoui_tbl_itm {
private final Xoud_bmk_itm_tbl tbl;
private final Json_wtr json_wtr = new Json_wtr();
private final Xoui_cells_fmtr cells_fmtr = new Xoui_cells_fmtr();
private final Xoui_val_fmtr edit_val_fmtr = Xoui_val_fmtr_.new_edit();
private final Xoui_val_fmtr view_val_fmtr = Xoui_val_fmtr_.new_view();
private final Bry_bfr tmp_bfr = Bry_bfr.new_(255);
public Xoui_tbl_itm__bmk(Xoud_bmk_itm_tbl tbl) {this.tbl = tbl;}
public byte[] Key() {return key;} private static final byte[] key = Bry_.new_a7("bmk");
public Xoui_btn_itm[] View_btns() {return view_btns;}
public Xoui_btn_itm[] Edit_btns() {return edit_btns;}
public Xoui_col_itm[] Cols() {return cols;}
public Xoui_row_itm[] Rows() {return rows;} public void Rows_(Xoui_row_itm[] v) {this.rows = v;} private Xoui_row_itm[] rows;
public void Del(byte[] row_pkey_bry) {
int bmk_id = To_bmk_id(row_pkey_bry);
tbl.Delete(bmk_id);
}
public String Edit(byte[] row_id, byte[] row_pkey_bry) {
return Write_cells(edit_val_fmtr, edit_btns, row_id, Get_row_by_pkey(row_pkey_bry));
}
public String Save(Xow_wiki wiki, byte[] row_id, byte[] row_pkey_bry, Xoui_val_hash hash) {
int bmk_id = To_bmk_id(row_pkey_bry);
byte[] name = hash.Get_val_as_bry_or_fail(Key_name);
byte[] url_bry = hash.Get_val_as_bry_or_fail(Key_url);
Xoa_url_parser url_parser = wiki.App().Utl__url_parser();
Xoa_url url = url_parser.Parse(url_bry);
Xoui_row_itm row_itm = Get_row_by_pkey(row_pkey_bry);
Set_vals(tmp_bfr, row_itm.Vals(), name, url_bry);
tbl.Update(bmk_id, -1, -1, name, url.Wiki_bry(), url_bry, Bry_.Empty);
return Write_cells(view_val_fmtr, view_btns, row_id, row_itm);
}
public void Set_order_adj(byte[] row_pkey, boolean adj_down) {throw Exc_.new_unimplemented();}
private int To_bmk_id(byte[] row_pkey_bry) {return Bry_.Xto_int_or_fail(row_pkey_bry);}
private Xoui_row_itm Get_row_by_pkey(byte[] row_pkey_bry) {
int len = rows.length;
for (int i = 0; i < len; ++i) {
Xoui_row_itm row = rows[i];
if (Bry_.Eq(row.Pkey(), row_pkey_bry)) return row;
}
return null;
}
private String Write_cells(Xoui_val_fmtr val_fmtr, Xoui_btn_itm[] btns, byte[] row_id, Xoui_row_itm row) {
cells_fmtr.Ctor(val_fmtr, btns);
cells_fmtr.Init(row_id, row);
cells_fmtr.XferAry(tmp_bfr, 0);
json_wtr.Doc_bgn();
json_wtr.Kv_bfr("html", tmp_bfr);
json_wtr.Doc_end();
return json_wtr.To_str_and_clear();
}
private static final byte[] Key_name = Bry_.new_a7("name"), Key_url = Bry_.new_a7("url");
private static final Xoui_col_itm[] cols = new Xoui_col_itm[]
{ new Xoui_col_itm(Xoui_col_itm.Type_id_str, 150, "name" , "Name")
, new Xoui_col_itm(Xoui_col_itm.Type_id_str, 350, "url" , "Url")
};
private static final Xoui_btn_itm[] view_btns = new Xoui_btn_itm[]
{ new Xoui_btn_itm("rows__edit" , "edit.png" , "edit")
, new Xoui_btn_itm("rows__delete" , "delete.png" , "delete")
};
private static final Xoui_btn_itm[] edit_btns = new Xoui_btn_itm[]
{ new Xoui_btn_itm("rows__save" , "save.png" , "save")
, new Xoui_btn_itm("rows__cancel" , "cancel.png" , "cancel")
};
private static final Bry_fmtr url_fmtr = Bry_fmtr.new_("<a href='/site/~{url}'>~{url}</a>", "url");
public static Xoui_tbl_itm new_(Xoud_bmk_itm_tbl dom_tbl, Xoud_bmk_itm_row[] dom_rows) {
Xoui_tbl_itm rv = new Xoui_tbl_itm__bmk(dom_tbl);
int len = dom_rows.length;
Xoui_row_itm[] gui_rows = new Xoui_row_itm[len];
Bry_bfr tmp_bfr = Bry_bfr.new_(255);
for (int i = 0; i < len; ++i) {
Xoud_bmk_itm_row dom_row = dom_rows[i];
Xoui_val_itm[] vals = new Xoui_val_itm[2];
Set_vals(tmp_bfr, vals, dom_row.Name(), dom_row.Url());
Xoui_row_itm gui_row = new Xoui_row_itm(rv, Int_.Xto_bry(dom_row.Id()), vals);
gui_rows[i] = gui_row;
}
rv.Rows_(gui_rows);
return rv;
}
private static void Set_vals(Bry_bfr tmp_bfr, Xoui_val_itm[] vals, byte[] name, byte[] url) {
vals[0] = new Xoui_val_itm(name, name);
url_fmtr.Bld_bfr_many(tmp_bfr, url);
vals[1] = new Xoui_val_itm(url, tmp_bfr.Xto_bry_and_clear());
}
}

View File

@@ -17,17 +17,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.specials.xowa.bookmarks; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*;
import gplx.core.primitives.*;
import gplx.xowa.html.xouis.tbls.*;
import gplx.xowa.html.bridges.dbuis.tbls.*;
import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*;
public class Xows_bmk_page implements Xows_page {
public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__bookmarks;}
public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) {
Xoud_bmk_mgr bmk_mgr = wiki.App().User().User_db_mgr().Bmk_mgr();
page.Html_data().Module_mgr().Itm__xoui().Init(wiki.Appe()).Enabled_y_();
Xoa_app app = wiki.App();
Dbui_tbl_itm__bmk ui_tbl = Dbui_tbl_itm__bmk.get_or_new(app, app.User().User_db_mgr().Bmk_mgr().Tbl__itm());
page.Html_data().Head_mgr().Itm__dbui().Init(app).Enabled_y_();
Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_m001();
Xoud_bmk_itm_row[] rows = bmk_mgr.Itms__get(Xoud_bmk_mgr.Owner_root);
Xoui_tbl_itm hui_tbl = Xoui_tbl_itm__bmk.new_(bmk_mgr.Tbl__itm(), rows);
wiki.Html__xoui_tbl_mgr().Write(bfr, hui_tbl);
ui_tbl.Select(bfr, Xoud_bmk_mgr.Owner_root);
page.Hdump_data().Body_(bfr.To_bry_and_rls());
}
}

View File

@@ -27,17 +27,17 @@ class Xows_cmd__file_check {
tmp_dir = wiki.Fsys_mgr().Tmp_dir();
boolean schema_1 = wiki.File__fsdb_core().File__schema_is_1();
Fsdb_db_file atr_main = null;
try {Write_kv(bfr, "machine.op_sys", Op_sys.Cur().Os_name());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
try {Write_kv(bfr, "app.version", Xoa_app_.Version);} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
try {Write_kv(bfr, "cfg_file_retrieve", ((Xoae_app)app).File_mgr().Wmf_mgr().Enabled());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
try {Write_kv(bfr, "fsdb.schema_is_1", schema_1);} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
try {Write_kv(bfr, "fsdb.mnt_file", wiki.File__fsdb_core().File__mnt_file().Url());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
try {Write_kv(bfr, "fsdb.abc_file", wiki.File__fsdb_core().File__abc_file__at(Fsm_mnt_mgr.Mnt_idx_main).Url());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
try {Write_kv(bfr, "machine.op_sys", Op_sys.Cur().Os_name());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
try {Write_kv(bfr, "app.version", Xoa_app_.Version);} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
try {Write_kv(bfr, "cfg_file_retrieve", ((Xoae_app)app).File_mgr().Wmf_mgr().Enabled());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
try {Write_kv(bfr, "fsdb.schema_is_1", schema_1);} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
try {Write_kv(bfr, "fsdb.mnt_file", wiki.File__fsdb_core().File__mnt_file().Url());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
try {Write_kv(bfr, "fsdb.abc_file", wiki.File__fsdb_core().File__abc_file__at(Fsm_mnt_mgr.Mnt_idx_main).Url());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
try {
atr_main = wiki.File__fsdb_core().File__atr_file__at(Fsm_mnt_mgr.Mnt_idx_main);
Write_kv(bfr, "fsdb.atr_file", atr_main.Url());
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
try {Write_kv(bfr, "fsdb.orig", wiki.File__fsdb_core().File__orig_tbl_ary()[0].Conn().Conn_info().Xto_raw());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
try {Write_kv(bfr, "fsdb.orig", wiki.File__fsdb_core().File__orig_tbl_ary()[0].Conn().Conn_info().Xto_raw());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
Fsdb_sql_mkr sql_mkr = schema_1 ? Fsdb_sql_mkr__v1.I : Fsdb_sql_mkr__v2.I;
String sql = "";
try {
@@ -45,7 +45,7 @@ class Xows_cmd__file_check {
sql = sql_mkr.Orig_by_ttl(file_bry);
Write_sect(bfr, "fsdb.orig.select", sql);
Db_rdr_utl.Load_and_write(orig_tbl.Conn(), sql, bfr);
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
Object[][] rows = null;
try {
sql = sql_mkr.Fil_by_ttl(file_bry);
@@ -53,7 +53,7 @@ class Xows_cmd__file_check {
rows = Db_rdr_utl.Load(atr_main.Conn(), sql);
Db_rdr_utl.Write_to_bfr(bfr, rows);
Write_thms(bfr, file_bry, sql_mkr, wiki.File__mnt_mgr().Mnts__get_main(), atr_main, rows);
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
}
private void Write_thms(Bry_bfr bfr, byte[] file_bry, Fsdb_sql_mkr sql_mkr, Fsm_mnt_itm mnt_itm, Fsdb_db_file atr_main, Object[][] rows) {
int rows_len = rows.length;

View File

@@ -44,14 +44,14 @@ class Xows_cmd__fs_check {
try {
IoItmDir sub_itm = (IoItmDir)sub_itms.Get_at(i);
bfr.Add_str_a7("dir").Add_byte_pipe().Add_str_u8(sub_itm.Name()).Add_byte_nl();
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
}
sub_itms = dir_itm.SubFils(); len = sub_itms.Count();
for (int i = 0; i < len; ++i) {
try {
IoItmFil sub_itm = (IoItmFil)sub_itms.Get_at(i);
bfr.Add_str_a7("fil").Add_byte_pipe().Add_str_u8(sub_itm.Name()).Add_byte_pipe().Add_long_variable(sub_itm.Size()).Add_byte_pipe().Add_dte(sub_itm.ModifiedTime()).Add_byte_nl();
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx(e));}
} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));}
}
}
public static final Xows_cmd__fs_check I = new Xows_cmd__fs_check(); Xows_cmd__fs_check() {}

View File

@@ -174,7 +174,7 @@ class Xosp_fbrow_html implements Bry_fmtr_arg {
class Xosp_fbrow_cmd__err implements Xosp_fbrow_cmd {
public Xosp_fbrow_cmd Make_new() {return this;}
public Xosp_fbrow_rslt Write_html(Xoa_url_arg_mgr arg_mgr, GfoInvkAble select_invkable) {return Rslt;}
private static final Xosp_fbrow_rslt Rslt = new Xosp_fbrow_rslt(Bry_.Empty, Bry_.new_u8("url has unknown cmd"));
private static final Xosp_fbrow_rslt Rslt = new Xosp_fbrow_rslt(Bry_.Empty, Bry_.new_a7("url has unknown cmd"));
public static final Xosp_fbrow_cmd__err I = new Xosp_fbrow_cmd__err(); Xosp_fbrow_cmd__err() {}
}
class Xosp_fbrow_cmd__wiki_add extends Xosp_fbrow_cmd__base {