1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

'v3.6.3.1'

This commit is contained in:
gnosygnu
2016-06-19 23:58:10 -04:00
parent 96636f3161
commit d4e8590345
1960 changed files with 20790 additions and 9272 deletions

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.users; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*; import gplx.core.envs.*; import gplx.gfui.*;
public class Xoc_layout_mgr implements GfoInvkAble {
public class Xoc_layout_mgr implements Gfo_invk {
public Xoc_layout_mgr(Xoae_app app) {
this.app = app;
Ctor_by_os();
@@ -35,11 +35,11 @@ public class Xoc_layout_mgr implements GfoInvkAble {
private void Refresh_window() {
app.Gui_mgr().Browser_win().Refresh_win_size();
}
public static final String
public static final String
Invk_html_box_adj_type = "html_box_adj_type", Invk_html_box_adj_type_ = "html_box_adj_type_", Invk_html_box_adj_type_list = "html_box_adj_type_list"
, Invk_html_box_adj_rect = "html_box_adj_rect", Invk_html_box_adj_rect_ = "html_box_adj_rect_";
public static final byte Html_box_adj_type_none_byte = 0, Html_box_adj_type_rel_byte = 1, Html_box_adj_type_abs_byte = 2;
private static final Enm_mgr html_box_adj_type_enm = new Enm_mgr().Add(Html_box_adj_type_none_byte, "none").Add(Html_box_adj_type_rel_byte, "relative").Add(Html_box_adj_type_abs_byte, "absolute");
private static final Enm_mgr html_box_adj_type_enm = new Enm_mgr().Add(Html_box_adj_type_none_byte, "none").Add(Html_box_adj_type_rel_byte, "relative").Add(Html_box_adj_type_abs_byte, "absolute");
private void Ctor_by_os() {
if (Op_sys.Cur().Tid_is_osx()) {
html_box_adj_type = Html_box_adj_type_rel_byte;
@@ -48,10 +48,10 @@ public class Xoc_layout_mgr implements GfoInvkAble {
}
}
class Enm_mgr {
private Ordered_hash str_hash = Ordered_hash_.New(); private Hash_adp val_hash = Hash_adp_.new_();
private Int_obj_ref tmp_val_ref = Int_obj_ref.zero_();
private Ordered_hash str_hash = Ordered_hash_.New(); private Hash_adp val_hash = Hash_adp_.New();
private Int_obj_ref tmp_val_ref = Int_obj_ref.New_zero();
public Enm_mgr Add(byte val, String str) {
Int_obj_ref val_ref = Int_obj_ref.new_(val);
Int_obj_ref val_ref = Int_obj_ref.New(val);
Keyval kv = Keyval_.new_(str, val_ref);
str_hash.Add(str, kv);
val_hash.Add(val_ref, kv);

View File

@@ -16,7 +16,7 @@ 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.users; import gplx.*; import gplx.xowa.*;
public class Xou_cfg implements GfoInvkAble {
public class Xou_cfg implements Gfo_invk {
public Xou_cfg(Xoue_user user) {
this.user = user;
pages_mgr = new Xouc_pages_mgr(this); startup_mgr = new Xouc_startup_mgr(this); setup_mgr = new Xouc_setup_mgr(user);
@@ -29,7 +29,7 @@ public class Xou_cfg implements GfoInvkAble {
public Xouc_setup_mgr Setup_mgr() {return setup_mgr;} private Xouc_setup_mgr setup_mgr;
public Xoc_layout_mgr Layout_mgr() {return layout_mgr;} private Xoc_layout_mgr layout_mgr;
public Xou_security_mgr Security_mgr() {return security_mgr;} private Xou_security_mgr security_mgr;
public Xou_log_mgr Log_mgr() {return log_mgr;} private final Xou_log_mgr log_mgr = new Xou_log_mgr();
public Xou_log_mgr Log_mgr() {return log_mgr;} private final Xou_log_mgr log_mgr = new Xou_log_mgr();
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_pages)) return pages_mgr;
else if (ctx.Match(k, Invk_startup)) return startup_mgr;
@@ -39,7 +39,7 @@ public class Xou_cfg implements GfoInvkAble {
else if (ctx.Match(k, Invk_log)) return log_mgr;
return this;
}
public static final String
public static final String
Invk_pages = "pages", Invk_startup = "startup", Invk_setup = "setup", Invk_layout = "layout", Invk_security = "security", Invk_log = "log"
;
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.users; import gplx.*; import gplx.xowa.*;
import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.*;
public class Xou_fsys_mgr implements GfoInvkAble {
public class Xou_fsys_mgr implements Gfo_invk {
private Io_url app_root_dir; private Io_url wiki_root_dir; private Io_url cur_root;
public Xou_fsys_mgr(Xoae_app app, Xoue_user usr, Io_url user_dir) {
this.cur_root = user_dir;
@@ -40,6 +40,6 @@ public class Xou_fsys_mgr implements GfoInvkAble {
public static final String Name_user_system_cfg = "user_system_cfg.gfs";
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_root_dir)) return cur_root;
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
} private static final String Invk_root_dir = "root_dir";
}

View File

@@ -16,14 +16,14 @@ 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.users; import gplx.*; import gplx.xowa.*;
public class Xou_log_mgr implements GfoInvkAble {
public class Xou_log_mgr implements Gfo_invk {
public boolean Log_redlinks() {return log_redlinks;} private boolean log_redlinks;
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_log_redlinks)) return Yn.To_str(log_redlinks);
else if (ctx.Match(k, Invk_log_redlinks_)) log_redlinks = m.ReadYn("v");
return this;
}
public static final String
public static final String
Invk_log_redlinks = "log_redlinks", Invk_log_redlinks_ = "log_redlinks_"
;
}

View File

@@ -16,7 +16,7 @@ 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.users; import gplx.*; import gplx.xowa.*;
public class Xou_security_mgr implements GfoInvkAble {
public class Xou_security_mgr implements Gfo_invk {
public Xou_security_mgr(Xoae_app app) {this.app = app;} private Xoae_app app;
public boolean Web_access_enabled() {return app.Api_root().Net().Enabled();}
public void Web_access_enabled_(boolean v) {app.Api_root().Net().Enabled_(v);}
@@ -25,6 +25,6 @@ public class Xou_security_mgr implements GfoInvkAble {
else if (ctx.Match(k, Invk_web_access_enabled_)) Web_access_enabled_(m.ReadYn("v"));
return this;
}
public static final String
public static final String
Invk_web_access_enabled = "web_access_enabled", Invk_web_access_enabled_ = "web_access_enabled_";
}

View File

@@ -16,7 +16,7 @@ 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.users; import gplx.*; import gplx.xowa.*;
public class Xou_session implements GfoInvkAble {
public class Xou_session implements Gfo_invk {
public Xou_session(Xoue_user user) {this.user = user; window_mgr = new Xous_window_mgr(user);}
public Xoue_user User() {return user;} private Xoue_user user;
public Xous_window_mgr Window_mgr() {return window_mgr;} private Xous_window_mgr window_mgr;

View File

@@ -16,7 +16,7 @@ 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.users; import gplx.*; import gplx.xowa.*;
public class Xou_user_mgr implements GfoInvkAble {
public class Xou_user_mgr implements Gfo_invk {
public Xou_user_mgr(Xoae_app app, Xoue_user user) {this.app = app; this.Add(user);} private Xoae_app app;
public void Add(Xoue_user itm) {regy.Add(itm.Key(), itm);}
Xoue_user GetByKey(String key) {return (Xoue_user)regy.Get_by(key);}
@@ -32,7 +32,7 @@ public class Xou_user_mgr implements GfoInvkAble {
}
return user;
}
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
// return this;
} private static final String Invk_get = "get";
}

View File

@@ -16,7 +16,7 @@ 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.users; import gplx.*; import gplx.xowa.*;
public class Xouc_pages_mgr implements GfoInvkAble {
public class Xouc_pages_mgr implements Gfo_invk {
public Xouc_pages_mgr(Xou_cfg config) {}
public String Home() {return home;} public Xouc_pages_mgr Home_(String v) {home = v; return this;} private String home = Page_xowa;
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.users; import gplx.*; import gplx.xowa.*;
import gplx.core.envs.*;
public class Xouc_setup_mgr implements GfoInvkAble {
public class Xouc_setup_mgr implements Gfo_invk {
public Xouc_setup_mgr(Xoue_user user) {this.user = user;}
public Xoue_user User() {return user;} private Xoue_user user;
private String setup_completed = "";

View File

@@ -16,7 +16,7 @@ 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.users; import gplx.*; import gplx.xowa.*;
public class Xouc_startup_mgr implements GfoInvkAble {
public class Xouc_startup_mgr implements Gfo_invk {
public Xouc_startup_mgr(Xou_cfg config) {this.config = config; window_mgr = new Xouc_window_mgr(config.User());} private Xou_cfg config;
public Xouc_window_mgr Window_mgr() {return window_mgr;} private Xouc_window_mgr window_mgr;
public String Page() {return page;} public Xouc_startup_mgr Page_(String v) {page = v; return this;} private String page = "xowa";
@@ -54,7 +54,7 @@ public class Xouc_startup_mgr implements GfoInvkAble {
private void Custom_config_(String v) {
Xoae_app app = config.User().Appe();
Object rslt = app.Gfs_mgr().Run_str(v);
if (rslt == GfoInvkAble_.Rv_error) {
if (rslt == Gfo_invk_.Rv_error) {
app.Usr_dlg().Warn_many("", "", "custom script failed: ~{0}", v);
return;
}

View File

@@ -17,8 +17,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.users; import gplx.*; import gplx.xowa.*;
import gplx.core.envs.*;
import gplx.gfui.*; import gplx.xowa.guis.views.*;
public class Xouc_window_mgr implements GfoInvkAble {
import gplx.gfui.*; import gplx.gfui.envs.*; import gplx.gfui.controls.windows.*;
import gplx.xowa.guis.views.*;
public class Xouc_window_mgr implements Gfo_invk {
public Xouc_window_mgr(Xoue_user user) {this.user = user;} private Xoue_user user;
public byte Mode_tid() {return mode_tid;} private byte mode_tid = Mode_tid_previous;
public String Mode_str() {return mode_str;} private String mode_str = "previous";

View File

@@ -22,10 +22,10 @@ import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.users.history.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.users.data.*;
import gplx.xowa.files.*; import gplx.xowa.files.caches.*;
import gplx.xowa.langs.genders.*;
public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble {
public class Xoue_user implements Xou_user, Gfo_evt_mgr_owner, Gfo_invk {
public Xoue_user(Xoae_app app, Io_url user_dir) {
this.app = app; this.key = user_dir.NameOnly();
this.ev_mgr = GfoEvMgr.new_(this);
this.ev_mgr = new Gfo_evt_mgr(this);
this.fsys_mgr = new Xou_fsys_mgr(app, this, user_dir);
this.user_db_mgr = new Xou_db_mgr(app);
this.history_mgr = new Xou_history_mgr(fsys_mgr.App_data_history_fil());
@@ -33,7 +33,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble {
this.cfg_mgr = new Xou_cfg(this);
this.session_mgr = new Xou_session(this);
}
public GfoEvMgr EvMgr() {return ev_mgr;} private final GfoEvMgr ev_mgr;
public Gfo_evt_mgr Evt_mgr() {return ev_mgr;} private final Gfo_evt_mgr ev_mgr;
public String Key() {return key;} private String key;
public Xou_db_mgr User_db_mgr() {return user_db_mgr;} private final Xou_db_mgr user_db_mgr;
public Xow_wiki Wikii() {return this.Wiki();}
@@ -44,7 +44,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble {
lang = v;
this.Msg_mgr().Lang_(v);
wiki.Msg_mgr().Clear(); // clear home wiki msgs whenever lang changes; else messages cached from old lang will not be replaced; EX:Read/Edit; DATE:2014-05-26
GfoEvMgr_.PubVal(this, Evt_lang_changed, lang);
Gfo_evt_mgr_.Pub_val(this, Evt_lang_changed, lang);
}
public Xou_fsys_mgr Fsys_mgr() {return fsys_mgr;} private Xou_fsys_mgr fsys_mgr;
public Xowe_wiki Wiki() {if (wiki == null) wiki = Xou_user_.new_or_create_(this, app); return wiki;} private Xowe_wiki wiki;
@@ -78,7 +78,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble {
bookmarks_add_fmtr.Bld_bfr_many(tmp_bfr, wiki_domain, ttl_full_txt);
byte[] new_entry = tmp_bfr.To_bry_and_rls();
Xoa_ttl bookmarks_ttl = Xoa_ttl.parse(wiki, Bry_data_bookmarks);
Xoae_page bookmarks_page = wiki.Data_mgr().Get_page(bookmarks_ttl, false);
Xoae_page bookmarks_page = wiki.Data_mgr().Load_page_by_ttl(bookmarks_ttl);
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_a7("Data:Bookmarks");
@@ -95,7 +95,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble {
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 Err_.new_unhandled(k); // OBSOLETE: used to return key
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
}
public static final String Invk_available_from_fsys = "available_from_fsys", Invk_available_from_bulk = "available_from_bulk", Invk_bookmarks_add_fmt_ = "bookmarks_add_fmt_"

View File

@@ -16,16 +16,17 @@ 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.users; import gplx.*; import gplx.xowa.*;
import gplx.gfui.controls.windows.*;
import gplx.xowa.guis.views.*;
import gplx.xowa.apps.apis.xowa.startups.tabs.*;
public class Xous_window_mgr implements GfoInvkAble {
public class Xous_window_mgr implements Gfo_invk {
public Xous_window_mgr(Xoue_user user) {
this.user = user;
}
public Xoue_user User() {return user;} private Xoue_user user;
public Rect_ref Rect() {if (rect == null) rect = Rect_new(); return rect;} Rect_ref rect;
public boolean Maximized() {return maximized;} private boolean maximized = false;
public void Save_window(gplx.gfui.GfuiWin win) {
public void Save_window(GfuiWin win) {
Xoae_app app = user.Appe();
gplx.xowa.apps.cfgs.Xoa_cfg_mgr cfg_mgr = app.Cfg_mgr();
if (user.Cfg_mgr().Startup_mgr().Window_mgr().Mode_tid() == Xouc_window_mgr.Mode_tid_previous) {
@@ -41,7 +42,7 @@ public class Xous_window_mgr implements GfoInvkAble {
cfg_mgr.Db_save_txt();
}
private String Calc_previous_tabs(Xog_tab_mgr tab_mgr) {
Bry_bfr bfr = Bry_bfr.new_();
Bry_bfr bfr = Bry_bfr_.New();
int len = tab_mgr.Tabs_len();
for (int i = 0; i < len; ++i) {
if (i != 0) bfr.Add_byte_nl();

View File

@@ -24,7 +24,7 @@ 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_tbl_fmtr tbl_fmtr = new Dbui_tbl_fmtr();
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 Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(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");

View File

@@ -18,8 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.users.bmks; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.dbs.*; import gplx.dbs.qrys.*;
public class Xoud_bmk_dir_tbl implements Rls_able {
private final String tbl_name = "bmk_dir"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private final String fld_id, fld_owner, fld_sort, fld_name;
private final String tbl_name = "bmk_dir"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld_id, fld_owner, fld_sort, fld_name;
public Xoud_bmk_dir_tbl(Db_conn conn) {
this.conn = conn;
fld_id = flds.Add_int_pkey_autonum("dir_id");
@@ -28,7 +28,7 @@ public class Xoud_bmk_dir_tbl implements Rls_able {
fld_name = flds.Add_str("dir_name", 255);
conn.Rls_reg(this);
}
public Db_conn Conn() {return conn;} private final Db_conn conn;
public Db_conn Conn() {return conn;} private final Db_conn conn;
public String Tbl_name() {return tbl_name;}
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds.To_fld_ary()));}
public void Insert(int owner, int sort, byte[] name) {

View File

@@ -18,8 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.users.bmks; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.dbs.*; import gplx.dbs.qrys.*;
public class Xoud_bmk_itm_tbl implements Rls_able {
private final String tbl_name = "bmk_itm"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private final String fld_id, fld_owner, fld_sort, fld_name, fld_wiki, fld_url, fld_comment;
private final String tbl_name = "bmk_itm"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
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;
@@ -32,7 +32,7 @@ public class Xoud_bmk_itm_tbl implements Rls_able {
fld_comment = flds.Add_str("itm_comment" , 4096);
conn.Rls_reg(this);
}
public Db_conn Conn() {return conn;} private final Db_conn conn;
public Db_conn Conn() {return conn;} private final Db_conn conn;
public String Tbl_name() {return tbl_name;}
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds.To_fld_ary()));}
public void Insert(int owner, int sort, byte[] name, byte[] wiki, byte[] url, byte[] comment) {
@@ -59,7 +59,7 @@ public class Xoud_bmk_itm_tbl implements Rls_able {
stmt_delete.Clear().Crt_int(fld_id, id).Exec_delete();
}
public Xoud_bmk_itm_row[] Select_grp(int owner) {
List_adp list = List_adp_.new_();
List_adp list = List_adp_.New();
Db_rdr rdr = conn.Stmt_select_order(tbl_name, flds, String_.Ary(fld_owner), fld_sort)
.Crt_int(fld_owner, owner)
.Exec_select__rls_auto();

View File

@@ -19,8 +19,8 @@ package gplx.xowa.users.bmks; import gplx.*; import gplx.xowa.*; import gplx.xow
import gplx.core.primitives.*;
import gplx.xowa.htmls.bridges.dbuis.tbls.*;
import gplx.xowa.users.data.*; import gplx.xowa.specials.*;
public class Xows_bmk_page implements Xows_page {
public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__bookmarks;}
public class Xows_bmk_page implements Xow_special_page {
public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__bookmarks;}
public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) {
Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei;
Xoa_app app = wiki.App();
@@ -31,5 +31,5 @@ public class Xows_bmk_page implements Xows_page {
page.Hdump_data().Body_(bfr.To_bry_and_rls());
}
public Xows_page Special__clone() {return this;}
public Xow_special_page Special__clone() {return this;}
}

View File

@@ -21,13 +21,13 @@ import gplx.xowa.files.caches.*;
import gplx.xowa.users.bmks.*; import gplx.xowa.users.history.*;
public class Xou_db_mgr {
private final Xoa_app app;
private final Xoud_id_mgr id_mgr;
private Db_conn conn;
private final Xoud_id_mgr id_mgr;
public Xou_db_mgr(Xoa_app app) {
this.app = app;
this.id_mgr = new Xoud_id_mgr(cfg_mgr);
this.site_mgr = new Xoud_site_mgr(id_mgr);
}
public Db_conn Conn() {return conn;} private Db_conn conn;
public Xou_db_file Db_file() {return db_file;} private Xou_db_file db_file;
public Xoud_cfg_mgr Cfg_mgr() {return cfg_mgr;} private final Xoud_cfg_mgr cfg_mgr = new Xoud_cfg_mgr();
public Xoud_site_mgr Site_mgr() {return site_mgr;} private final Xoud_site_mgr site_mgr;

View File

@@ -54,9 +54,18 @@ public class Xoud_cfg_mgr {
else
Update_int(grp, key, val);
}
public void Upsert_str(String grp, String key, String val) {
String exists = Select_str_or(grp, key, null);
if (exists == null)
Insert_str(grp, key, val);
else
Update_str(grp, key, val);
}
public void Update_str(String grp, String key, String val) {Update_bry(grp, key, Bry_.new_u8(val));}
public void Update_bry(String key, byte[] val) {Update_bry("", key, val);}
public void Update_bry(String grp, String key, byte[] val) {tbl.Update_bry(grp, key, val);}
public void Update_int(String grp, String key, int val) {tbl.Update_int(grp, key, val);}
public void Insert_str(String grp, String key, String val) {Insert_bry(grp, key, Bry_.new_u8(val));}
public void Insert_bry(String key, byte[] val) {Insert_bry("", key, val);}
public void Insert_bry(String grp, String key, byte[] val) {tbl.Insert_bry(grp, key, val);}
public void Insert_int(String grp, String key, int val) {tbl.Insert_int(grp, key, val);}

View File

@@ -21,18 +21,18 @@ import gplx.xowa.langs.*;
import gplx.xowa.wikis.domains.*;
class Xoud_opt_scope {
public Xoud_opt_scope(int lang_id, int type_id) {this.lang_id = lang_id; this.type_id = type_id;}
public int Lang_id() {return lang_id;} private final int lang_id;
public int Type_id() {return type_id;} private final int type_id;
public int Lang_id() {return lang_id;} private final int lang_id;
public int Type_id() {return type_id;} private final int type_id;
public String To_str() {
String lang_str = lang_id == Lang_id_wildcard ? "*" : String_.new_u8(Xol_lang_stub_.Get_by_id(lang_id).Key());
String type_str = type_id == Lang_id_wildcard ? "*" : String_.new_u8(Xow_domain_tid_.Get_type_as_bry(type_id));
return lang_str + "." + type_str;
}
public static final int Lang_id_wildcard = -1, Type_id_wildcard = -1;
public static final Xoud_opt_scope App = new Xoud_opt_scope(Lang_id_wildcard, Type_id_wildcard);
public static final Xoud_opt_scope App = new Xoud_opt_scope(Lang_id_wildcard, Type_id_wildcard);
}
class Xoud_opt_scope_parser {
private Gfo_usr_dlg usr_dlg; private final List_adp list = List_adp_.new_();
private Gfo_usr_dlg usr_dlg; private final List_adp list = List_adp_.New();
public Xoud_opt_scope[] Parse(byte[] src) {
usr_dlg = Gfo_usr_dlg_.Instance;
list.Clear();
@@ -63,7 +63,7 @@ class Xoud_opt_scope_parser {
usr_dlg.Warn_many("", "", fmt, String_.new_u8(src, bgn, end));
return Xoud_opt_scope.App;
}
private static final Btrie_slim_mgr btrie_by_type = Btrie_slim_mgr.cs()
private static final Btrie_slim_mgr btrie_by_type = Btrie_slim_mgr.cs()
.Add_str_int("w" , Xow_domain_tid_.Int__wikipedia)
.Add_str_int("d" , Xow_domain_tid_.Int__wiktionary)
.Add_str_int("s" , Xow_domain_tid_.Int__wikisource)
@@ -81,5 +81,5 @@ class Xoud_opt_scope_parser {
.Add_str_int("mw" , Xow_domain_tid_.Int__mediawiki)
.Add_str_int("wmf" , Xow_domain_tid_.Int__wmfblog)
;
private static final Xoud_opt_scope[] Ary_app = new Xoud_opt_scope[] {Xoud_opt_scope.App};
private static final Xoud_opt_scope[] Ary_app = new Xoud_opt_scope[] {Xoud_opt_scope.App};
}

View File

@@ -30,7 +30,7 @@ public class Xoud_opt_scope_tst {
}
}
class Xoud_opt_scope_fxt {
private final Xoud_opt_scope_parser parser = new Xoud_opt_scope_parser();
private final Xoud_opt_scope_parser parser = new Xoud_opt_scope_parser();
public void Clear() {
// Gfo_usr_dlg_.I = Xoa_app_.usr_dlg_console_();
}
@@ -40,7 +40,7 @@ class Xoud_opt_scope_fxt {
Tfds.Eq(To_str(expd), To_str(actl));
}
private static String To_str(Xoud_opt_scope[] ary) {
Bry_bfr bfr = Bry_bfr.new_();
Bry_bfr bfr = Bry_bfr_.New();
int len = ary.length;
for (int i = 0; i < len; ++i) {
Xoud_opt_scope itm = ary[i];

View File

@@ -25,21 +25,17 @@ public class Xoud_site_mgr {
tbl = new Xoud_site_tbl(conn);
if (created) tbl.Create_tbl();
}
public Xoud_site_row[] Get_all() {return tbl.Select_all();}
public void Import(String domain, String name, String path, String xtn) { // insert or update wiki
Xoud_site_row[] ary = tbl.Select_by_domain(domain);
int len = ary.length, update_id = -1, priority = 0;
for (int i = 0; i < len; ++i) {
Xoud_site_row itm = ary[i];
if (priority <= itm.Priority()) priority = itm.Priority() + 1;
if (String_.Eq(path, itm.Path())) { // same domain and same path; change insert to update;
update_id = itm.Id();
break;
}
}
if (update_id == -1)
tbl.Insert(id_mgr.Get_next_and_save("xowa.user.site"), priority, domain, name, path, xtn);
public Xoud_site_row[] Get_all() {return tbl.Select_all();}
public Xoud_site_row Select_by_domain(byte[] domain) {return tbl.Select_by_domain(domain);}
public void Delete_by_domain(byte[] domain) {tbl.Delete_by_domain(domain);}
public void Import(String domain, String name, String path, String date, String xtn) { // insert or update wiki
Xoud_site_row itm = tbl.Select_by_domain(Bry_.new_u8(domain));
if (itm == null)
tbl.Insert(id_mgr.Get_next_and_save("xowa.user.site"), 0, domain, name, path, date, xtn);
else
tbl.Update(update_id, priority, domain, name, path, xtn);
tbl.Update(itm.Id(), 0, domain, name, path, date, xtn);
}
public void Update(Xoud_site_row row) {
tbl.Update(row.Id(), row.Priority(), row.Domain(), row.Name(), row.Path(), row.Date(), row.Xtn());
}
}

View File

@@ -17,13 +17,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.users.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
public class Xoud_site_row {
public Xoud_site_row(int id, int priority, String domain, String name, String path, String xtn) {
this.id = id; this.priority = priority; this.domain = domain; this.name = name; this.path = path; this.xtn = xtn;
public Xoud_site_row(int id, int priority, String domain, String name, String path, String date, String xtn) {
this.id = id; this.priority = priority; this.domain = domain; this.name = name; this.path = path; this.date = date; this.xtn = xtn;
}
public int Id() {return id;} private final int id;
public int Priority() {return priority;} private final int priority;
public String Domain() {return domain;} private final String domain;
public String Name() {return name;} private final String name;
public String Path() {return path;} private final String path;
public int Id() {return id;} private final int id;
public int Priority() {return priority;} private final int priority;
public String Domain() {return domain;} private final String domain;
public String Name() {return name;} private final String name;
public String Path() {return path;} private final String path;
public String Date() {return date;} private String date; public void Date_(String v) {this.date = v;}
public String Xtn() {return xtn;} private String xtn;
}

View File

@@ -19,8 +19,8 @@ package gplx.xowa.users.data; import gplx.*; import gplx.xowa.*; import gplx.xow
import gplx.dbs.*;
public class Xoud_site_tbl implements Rls_able {
public static final String Tbl_name = "user_site";
private final String tbl_name = Tbl_name; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private final String fld_site_id, fld_site_priority, fld_site_domain, fld_site_name, fld_site_path, fld_site_xtn;
private final String tbl_name = Tbl_name; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld_site_id, fld_site_priority, fld_site_domain, fld_site_name, fld_site_path, fld_site_xtn, fld_site_date;
private final Db_conn conn;
public Xoud_site_tbl(Db_conn conn) {
this.conn = conn;
@@ -29,54 +29,62 @@ public class Xoud_site_tbl implements Rls_able {
fld_site_domain = flds.Add_str("site_domain", 255); // EX: en.wikipedia.org; NOTE: no protocol (https:)
fld_site_name = flds.Add_str("site_name", 255); // EX: English Wikipedia
fld_site_path = flds.Add_str("site_path", 255); // EX: ~{xowa_root}/wiki/en.wikipedia.org/
fld_site_date = conn.Meta_fld_append_if_missing(tbl_name, flds, Dbmeta_fld_itm.new_str("site_date", 255).Default_("")); // EX: 2016-06-10
fld_site_xtn = flds.Add_text("site_xtn");
conn.Rls_reg(this);
}
public void Create_tbl() {conn.Meta_tbl_create(Dbmeta_tbl_itm.New(tbl_name, flds));}
public void Rls() {}
public void Insert(int site_id, int priority, String domain, String name, String path, String xtn) {
Db_stmt stmt = conn.Stmt_insert(tbl_name, flds);
stmt.Val_int(fld_site_id, site_id)
.Val_int(fld_site_priority, priority).Val_str(fld_site_domain, domain).Val_str(fld_site_name, name).Val_str(fld_site_path, path).Val_str(fld_site_xtn, xtn)
.Exec_insert();
public void Insert(int site_id, int priority, String domain, String name, String path, String date, String xtn) {
Db_stmt stmt = conn.Stmt_insert(tbl_name, flds);
Exec_stmt(stmt, Bool_.N, site_id, priority, domain, name, path, date, xtn);
}
public void Update(int site_id, int priority, String domain, String name, String path, String xtn) {
public void Update(int site_id, int priority, String domain, String name, String path, String date, String xtn) {
Db_stmt stmt = conn.Stmt_update_exclude(tbl_name, flds, fld_site_id);
stmt.Val_int(fld_site_priority, priority).Val_str(fld_site_domain, domain).Val_str(fld_site_name, name).Val_str(fld_site_path, path).Val_str(fld_site_xtn, xtn)
.Crt_int(fld_site_id, site_id)
.Exec_update();
Exec_stmt(stmt, Bool_.Y, site_id, priority, domain, name, path, date, xtn);
}
public void Delete(int site_id) {
Db_stmt stmt = conn.Stmt_delete(tbl_name, fld_site_id);
stmt.Crt_int(fld_site_id, site_id).Exec_delete();
}
public void Delete_by_domain(byte[] domain) {
conn.Stmt_delete(tbl_name, fld_site_domain).Crt_bry_as_str(fld_site_domain, domain).Exec_delete();
}
public Xoud_site_row[] Select_all() {
List_adp rv = List_adp_.new_();
List_adp rv = List_adp_.New();
Db_rdr rdr = conn.Stmt_select(tbl_name, flds).Exec_select__rls_auto();
try {
while (rdr.Move_next())
rv.Add(new_row(rdr));
rv.Add(New_site(rdr));
return (Xoud_site_row[])rv.To_ary_and_clear(Xoud_site_row.class);
}
finally {rdr.Rls();}
}
public Xoud_site_row[] Select_by_domain(String domain) {
List_adp rv = List_adp_.new_();
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_site_domain).Crt_str(fld_site_domain, domain).Exec_select__rls_auto();
try {
while (rdr.Move_next())
rv.Add(new_row(rdr));
return (Xoud_site_row[])rv.To_ary_and_clear(Xoud_site_row.class);
}
public Xoud_site_row Select_by_domain(byte[] domain) {
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_site_domain).Crt_bry_as_str(fld_site_domain, domain).Exec_select__rls_auto();
try {return rdr.Move_next() ? New_site(rdr) : null;} // NOTE: old versions allowed multiple wikis with same domain; only return 1st
finally {rdr.Rls();}
}
private Xoud_site_row new_row(Db_rdr rdr) {
private void Exec_stmt(Db_stmt stmt, boolean update, int site_id, int priority, String domain, String name, String path, String date, String xtn) {
if (!update)
stmt.Val_int(fld_site_id, site_id);
stmt.Val_int(fld_site_priority, priority).Val_str(fld_site_domain, domain).Val_str(fld_site_name, name).Val_str(fld_site_path, path)
.Val_str(fld_site_date, date).Val_str(fld_site_xtn, xtn);
if (update)
stmt.Crt_int(fld_site_id, site_id);
if (update)
stmt.Exec_update();
else
stmt.Exec_insert();
}
private Xoud_site_row New_site(Db_rdr rdr) {
return new Xoud_site_row
( rdr.Read_int(fld_site_id)
, rdr.Read_int(fld_site_priority)
, rdr.Read_str(fld_site_domain)
, rdr.Read_str(fld_site_name)
, rdr.Read_str(fld_site_path)
, rdr.Read_str(fld_site_date)
, rdr.Read_str(fld_site_xtn)
);
}

View File

@@ -30,7 +30,7 @@ class Xoud_user_mgr {
}
}
class Xoud_user_tbl {
private String tbl_name = "user_user_regy"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private String tbl_name = "user_user_regy"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private String fld_id, fld_name;
private Db_conn conn;
public void Conn_(Db_conn new_conn, boolean created) {

View File

@@ -23,7 +23,7 @@ import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; import
public class Dbui_tbl_itm__history implements Dbui_tbl_itm {
private final Xoa_app app; private final Xoud_history_tbl tbl;
private final Dbui_tbl_fmtr tbl_fmtr = new Dbui_tbl_fmtr();
private final Bry_bfr tmp_bfr = Bry_bfr.new_(255);
private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255);
private final Bridge_msg_bldr msg_bldr;
public Dbui_tbl_itm__history(Xoa_app app, Xoud_history_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("history");
@@ -35,7 +35,7 @@ public class Dbui_tbl_itm__history implements Dbui_tbl_itm {
dbui_mgr.Init_by_bridge(bridge_mgr);
dbui_mgr.Add(this);
}
private final List_adp select_list = List_adp_.new_();
private final List_adp select_list = List_adp_.New();
public void Select(Bry_bfr bfr, int top) {
tbl.Select_by_top(select_list, 100);
Xoud_history_row[] db_rows = (Xoud_history_row[])select_list.To_ary_and_clear(Xoud_history_row.class);

View File

@@ -16,14 +16,14 @@ 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.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
public class Xou_history_cfg implements GfoInvkAble {
public class Xou_history_cfg implements Gfo_invk {
public Xou_history_cfg() {
this.enabled = true; // CFG: default to true for general user; privacy-conscious users must disable
}
public boolean Enabled() {return enabled;} private boolean enabled;
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadBool("v");
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_enabled_ = "enabled_";
}

View File

@@ -18,8 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.core.brys.fmtrs.*;
import gplx.xowa.specials.*;
public class Xou_history_html implements gplx.core.brys.Bfr_arg, Xows_page {
public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__page_history;}
public class Xou_history_html implements gplx.core.brys.Bfr_arg, Xow_special_page {
public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__page_history;}
public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) {
Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei;
this.app = wiki.Appe(); this.mgr = app.Usere().History_mgr();
@@ -55,5 +55,5 @@ public class Xou_history_html implements gplx.core.brys.Bfr_arg, Xows_page {
, " </tr>"
), "itm_wiki", "itm_page", "itm_count", "itm_last");
public Xows_page Special__clone() {return this;}
public Xow_special_page Special__clone() {return this;}
}

View File

@@ -16,13 +16,13 @@ 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.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.core.primitives.*; import gplx.core.net.*; import gplx.xowa.htmls.hrefs.*;
public class Xou_history_mgr implements GfoInvkAble {
private final Xou_history_html html_mgr = new Xou_history_html(); private Xou_history_sorter sorter = new Xou_history_sorter().Sort_fld_(Xou_history_itm.Fld_view_end).Ascending_(false);
private final Io_url history_fil;
import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.xowa.htmls.hrefs.*;
public class Xou_history_mgr implements Gfo_invk {
private final Xou_history_html html_mgr = new Xou_history_html(); private Xou_history_sorter sorter = new Xou_history_sorter().Sort_fld_(Xou_history_itm.Fld_view_end).Ascending_(false);
private final Io_url history_fil;
private Ordered_hash itms = Ordered_hash_.New_bry();
private boolean load_chk = false;
private final Bry_bfr tmp_bfr = Bry_bfr.new_();
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
public Xou_history_mgr(Io_url history_fil) {this.history_fil = history_fil;}
public int Len() {return itms.Count();}
public void Clear() {itms.Clear();}
@@ -71,7 +71,7 @@ public class Xou_history_mgr implements GfoInvkAble {
private byte[] To_full_db_w_qargs(Xoa_url url, Xoa_ttl ttl) {
byte[] page = Xoa_ttl.Replace_spaces(ttl.Full_txt_wo_qarg());
tmp_bfr.Add(page);
Gfo_qarg_mgr qarg_mgr = url.Qargs_mgr();
Gfo_qarg_mgr_old qarg_mgr = url.Qargs_mgr();
qarg_mgr.To_bry(tmp_bfr, gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, Bool_.N);
return tmp_bfr.To_bry_and_clear();
}
@@ -114,12 +114,12 @@ public class Xou_history_mgr implements GfoInvkAble {
else if (ctx.Match(k, Invk_html_itm_)) html_mgr.Html_itm().Fmt_(m.ReadBry("v"));
else if (ctx.Match(k, Invk_current_itms_max_)) current_itms_max = m.ReadInt("v");
else if (ctx.Match(k, Invk_current_itms_reset_)) current_itms_reset = m.ReadInt("v");
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
}
public static final String Invk_html_grp = "html_grp", Invk_html_grp_ = "html_grp_", Invk_html_itm = "html_itm", Invk_html_itm_ = "html_itm_", Invk_current_itms_max_ = "current_itms_max_", Invk_current_itms_reset_ = "current_itms_reset_";
public static final byte[] Ttl_name = Bry_.new_a7("XowaPageHistory");
public static final byte[] Ttl_full = Bry_.new_a7("Special:XowaPageHistory");
public static final byte[] Ttl_name = Bry_.new_a7("XowaPageHistory");
public static final byte[] Ttl_full = Bry_.new_a7("Special:XowaPageHistory");
}
class Xou_history_itm_srl {
public static void Load(byte[] ary, Ordered_hash list) {
@@ -127,7 +127,7 @@ class Xou_history_itm_srl {
list.Clear();
int aryLen = ary.length;
if (aryLen == 0) return; // no file
Int_obj_ref pos = Int_obj_ref.zero_();
Int_obj_ref pos = Int_obj_ref.New_zero();
while (true) {
if (pos.Val() == aryLen) break;
Xou_history_itm itm = Xou_history_itm.csv_(ary, pos);
@@ -142,7 +142,7 @@ class Xou_history_itm_srl {
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_();
Bry_bfr bb = Bry_bfr_.New();
int listLen = list.Count();
for (int i = 0; i < listLen; i++)
((Xou_history_itm)list.Get_at(i)).Save(bb);

View File

@@ -85,7 +85,7 @@ class Xou_history_mgr_fxt {
Tfds.Eq_ary_str(expd, actl);
return this;
}
public Xou_history_mgr_fxt Invk(String key, Object v) {GfoInvkAble_.InvkCmd_val(under, key, v); return this;}
public Xou_history_mgr_fxt Invk(String key, Object v) {Gfo_invk_.Invk_by_val(under, key, v); return this;}
public Xou_history_mgr_fxt Save() {under.Save(app); return this;}
public Xou_history_mgr_fxt Fil_tst(String expd_url, String expd) {
String actl = Io_mgr.Instance.LoadFilStr(expd_url);

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.core.threads.*; import gplx.dbs.*;
import gplx.xowa.specials.*;
public class Xoud_history_mgr implements GfoInvkAble {
public class Xoud_history_mgr implements Gfo_invk {
private Xoud_history_tbl history_tbl;
public void Conn_(Db_conn conn, boolean created) {
this.history_tbl = new Xoud_history_tbl(conn);
@@ -41,16 +41,16 @@ public class Xoud_history_mgr implements GfoInvkAble {
}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_update)) Update(m.ReadStr("wiki"), m.ReadStr("page"), m.ReadStr("qarg"));
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_update = "update";
public static boolean Skip_history(Xoa_ttl ttl) {
byte[] page_db = ttl.Page_db();
return ( ttl.Ns().Id_is_special()
&& ( Bry_.Eq(page_db, gplx.xowa.users.history.Xou_history_mgr.Ttl_name) // do not add XowaPageHistory to history
|| Bry_.Eq(page_db, Xows_special_meta_.Itm__popup_history.Key_bry())
|| Bry_.Eq(page_db, Xows_special_meta_.Itm__default_tab.Key_bry())
|| Bry_.Eq(page_db, Xows_special_meta_.Itm__page_history.Key_bry())
|| Bry_.Eq(page_db, Xow_special_meta_.Itm__popup_history.Key_bry())
|| Bry_.Eq(page_db, Xow_special_meta_.Itm__default_tab.Key_bry())
|| Bry_.Eq(page_db, Xow_special_meta_.Itm__page_history.Key_bry())
)
);
}

View File

@@ -17,8 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.xowa.specials.*;
public class Xoud_history_special implements Xows_page {
public Xows_special_meta Special__meta() {return Xows_special_meta_.Itm__page_history;}
public class Xoud_history_special implements Xow_special_page {
public Xow_special_meta Special__meta() {return Xow_special_meta_.Itm__page_history;}
public void Special__gen(Xow_wiki wikii, Xoa_page pagei, Xoa_url url, Xoa_ttl ttl) {
Xowe_wiki wiki = (Xowe_wiki)wikii; Xoae_page page = (Xoae_page)pagei;
Xoa_app app = wiki.App();
@@ -29,5 +29,5 @@ public class Xoud_history_special implements Xows_page {
page.Hdump_data().Body_(bfr.To_bry_and_rls());
}
public Xows_page Special__clone() {return this;}
public Xow_special_page Special__clone() {return this;}
}

View File

@@ -18,9 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.metas.*; import gplx.dbs.metas.updates.*;
public class Xoud_history_tbl implements Rls_able {
private final String tbl_name = "user_history"; private final Dbmeta_fld_list flds = Dbmeta_fld_list.new_();
private final String fld_id, fld_wiki, fld_url, fld_time, fld_count;
private final Db_conn conn; private Db_stmt stmt_select_by_page, stmt_select_by_top, stmt_insert, stmt_update, stmt_delete;
private final String tbl_name = "user_history"; private final Dbmeta_fld_list flds = new Dbmeta_fld_list();
private final String fld_id, fld_wiki, fld_url, fld_time, fld_count;
private final Db_conn conn; private Db_stmt stmt_select_by_page, stmt_select_by_top, stmt_insert, stmt_update, stmt_delete;
public Xoud_history_tbl(Db_conn conn) {
this.conn = conn;
fld_id = flds.Add_int_pkey_autonum("hist_id");

View File

@@ -18,8 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.xowa.apps.cfgs.*;
public class Prefs_converter {
private Bry_bfr bfr = Bry_bfr.new_();
private List_adp list = List_adp_.new_();
private Bry_bfr bfr = Bry_bfr_.New();
private List_adp list = List_adp_.New();
public void Check(Xoae_app app) {
int options_version = app.Sys_cfg().Options_version();
if (options_version == 1) {
@@ -105,7 +105,7 @@ public class Prefs_converter {
Convert_msg(m.Subs_getAt(0), depth + 1);
}
}
public static final Prefs_converter Instance = new Prefs_converter(); Prefs_converter() {}
public static final Prefs_converter Instance = new Prefs_converter(); Prefs_converter() {}
}
class Prefs_converter_itm {
public String Key() {return key;} public void Key_(String v) {this.key = v;} private String key;

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.langs.htmls.*;
class Prefs_html_wtr {
public Prefs_html_wtr(Prefs_mgr prefs_mgr) {this.prefs_mgr = prefs_mgr;} Prefs_mgr prefs_mgr; Bry_bfr tmp_bfr = Bry_bfr.reset_(255);
public Prefs_html_wtr(Prefs_mgr prefs_mgr) {this.prefs_mgr = prefs_mgr;} Prefs_mgr prefs_mgr; Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
public void Write(Bry_bfr bfr, byte[] src, Gfh_nde hnde, int prop_idx, byte[] trg_type, byte[] trg_val) {
Object prop_val = Eval_prop_get(hnde);
byte elem_type = Prefs_mgr.Elem_tid_tid_of(hnde);
@@ -84,7 +84,7 @@ class Prefs_html_wtr {
bfr.Add_str_a7("\", \"").Add(xowa_io_msg).Add_str_a7("\");'>");
bfr.Add_str_a7("...</button>").Add_byte_nl();
}
private static final byte[] Atr_key_xowa_prop_list = Bry_.new_a7("xowa_prop_list")
private static final byte[] Atr_key_xowa_prop_list = Bry_.new_a7("xowa_prop_list")
, Atr_stub_id = Bry_.new_a7(" id='xowa_prop_")
, Atr_stub_value = Bry_.new_a7(" value='")
, Atr_stub_checked = Bry_.new_a7(" checked='checked'")

View File

@@ -16,11 +16,12 @@ 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.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.net.*; import gplx.langs.htmls.*; import gplx.gfui.*;
import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.net.*; import gplx.core.net.qargs.*; import gplx.langs.htmls.*;
import gplx.gfui.*; import gplx.gfui.controls.standards.*;
import gplx.xowa.guis.views.*;
import gplx.xowa.apps.urls.*;
import gplx.xowa.parsers.*;
public class Prefs_mgr implements GfoInvkAble {
public class Prefs_mgr implements Gfo_invk {
public Prefs_mgr(Xoae_app app) {
this.app = app;
atrs_hash = Hash_adp_bry.cs();
@@ -36,7 +37,7 @@ public class Prefs_mgr implements GfoInvkAble {
if (props_get_fmtr == null) props_get_fmtr = Bry_fmtr.keys_().Eval_mgr_(app.Gfs_mgr().Eval_mgr());
src = this.Parse_wikitext_to_html(src);
props_get_fmtr.Fmt_(src);
Bry_bfr bfr = Bry_bfr.new_();
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_full(e)));}
Gfh_nde[] hndes = html_rdr.Parse_as_ary(src);
@@ -67,7 +68,7 @@ public class Prefs_mgr implements GfoInvkAble {
hndes = Gfh_selecter.Select(src, hndes, atrs_hash);
int len = hndes.length;
boolean tidy_enabled = app.Html_mgr().Tidy_mgr().Enabled();
Bry_bfr cmd_bfr = Bry_bfr.reset_(255);
Bry_bfr cmd_bfr = Bry_bfr_.Reset(255);
for (int i = 0; i < len; i++) {
Gfh_nde hnde = hndes[i];
Props_set_by_hnde(cmd_bfr, src, hnde, i, tidy_enabled);
@@ -84,8 +85,8 @@ public class Prefs_mgr implements GfoInvkAble {
switch (elem_tid) {
case Elem_tid_input_text:
case Elem_tid_input_xowa_io:
case Elem_tid_select: hnde_val = html_itm.Html_elem_atr_get_str(hnde_key, gplx.gfui.Gfui_html.Atr_value); break;
case Elem_tid_textarea: hnde_val = Gfh_utl.Unescape_as_str(html_itm.Html_elem_atr_get_str(hnde_key, gplx.gfui.Gfui_html.Atr_value)); break;
case Elem_tid_select: hnde_val = html_itm.Html_elem_atr_get_str(hnde_key, Gfui_html.Atr_value); break;
case Elem_tid_textarea: hnde_val = Gfh_utl.Unescape_as_str(html_itm.Html_elem_atr_get_str(hnde_key, Gfui_html.Atr_value)); break;
case Elem_tid_input_checkbox: hnde_val = html_itm.Html_elem_atr_get_bool(hnde_key, "checked") ? "y" : "n"; break;
}
byte[] get_cmd = Props_get(eval_code);
@@ -112,11 +113,11 @@ public class Prefs_mgr implements GfoInvkAble {
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_exec_get)) return Props_get(m.ReadBry("v"));
else if (ctx.Match(k, Invk_save)) Props_set_and_reload();
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_exec_get = "exec_get", Invk_save = "save";
private static final byte Tid_prop = 0, Tid_prop_get = 1, Tid_prop_set = 2;
public static final byte[] Bry_prop = Bry_.new_a7("xowa_prop"), Bry_prop_get = Bry_.new_a7("xowa_prop_get"), Bry_prop_set = Bry_.new_a7("xowa_prop_set"), Bry_id = Bry_.new_a7("id");
public static final byte[] Bry_prop = Bry_.new_a7("xowa_prop"), Bry_prop_get = Bry_.new_a7("xowa_prop_get"), Bry_prop_set = Bry_.new_a7("xowa_prop_set"), Bry_id = Bry_.new_a7("id");
public static byte Elem_tid_tid_of(Gfh_nde hnde) {
byte[] elem_name = Bry_.Mid(hnde.Src(), hnde.Name_bgn(), hnde.Name_end());
if (Bry_.Eq(elem_name, Nde_textarea)) return Elem_tid_textarea;
@@ -131,7 +132,7 @@ public class Prefs_mgr implements GfoInvkAble {
else return Elem_tid_null;
}
else return Elem_tid_null;
} static final byte[] Input_type = Bry_.new_a7("type"), Nde_input = Bry_.new_a7("input"), Nde_textarea = Bry_.new_a7("textarea"), Nde_select = Bry_.new_a7("select"), Type_text = Bry_.new_a7("text"), Type_checkbox = Bry_.new_a7("checkbox"), Type_combo = Bry_.new_a7("xowa_combo"), Type_xowa_io = Bry_.new_a7("xowa_io");
} static final byte[] Input_type = Bry_.new_a7("type"), Nde_input = Bry_.new_a7("input"), Nde_textarea = Bry_.new_a7("textarea"), Nde_select = Bry_.new_a7("select"), Type_text = Bry_.new_a7("text"), Type_checkbox = Bry_.new_a7("checkbox"), Type_combo = Bry_.new_a7("xowa_combo"), Type_xowa_io = Bry_.new_a7("xowa_io");
public static String Scrub_tidy_trailing_nl_in_textarea(boolean tidy_enabled, byte elem_tid, String val) {
return // if tidy_enabled and text_area and ends with \n, then remove \n; DATE:2014-06-21
( tidy_enabled
@@ -145,7 +146,7 @@ public class Prefs_mgr implements GfoInvkAble {
public static final byte Elem_tid_null = 0, Elem_tid_input_text = 1, Elem_tid_textarea = 2, Elem_tid_input_checkbox = 3, Elem_tid_select = 4, Elem_tid_input_combo = 5, Elem_tid_input_xowa_io = 6;
}
class Prefs_trg_mgr {
private Gfo_qarg_mgr arg_hash = new Gfo_qarg_mgr();
private Gfo_qarg_mgr_old arg_hash = new Gfo_qarg_mgr_old();
public byte[] Trg_type() {return trg_type;} private byte[] trg_type;
public byte[] Trg_val() {return trg_val;} private byte[] trg_val;
public void Init(Xoa_url url) {
@@ -153,5 +154,5 @@ class Prefs_trg_mgr {
trg_type = arg_hash.Get_val_bry_or(Prefs_trg_mgr.Arg_option_trg_type_bry, null);
trg_val = arg_hash.Get_val_bry_or(Prefs_trg_mgr.Arg_option_trg_val_bry, null);
}
public static final byte[] Arg_option_trg_type_bry = Bry_.new_a7("option_trg_type"), Arg_option_trg_val_bry = Bry_.new_a7("option_trg_val");
public static final byte[] Arg_option_trg_type_bry = Bry_.new_a7("option_trg_type"), Arg_option_trg_val_bry = Bry_.new_a7("option_trg_val");
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
import org.junit.*;
import gplx.gfui.*; import gplx.xowa.apps.gfs.*; import gplx.langs.gfs.*;
import gplx.gfui.*; import gplx.gfui.controls.standards.*; import gplx.xowa.apps.gfs.*; import gplx.langs.gfs.*;
import gplx.xowa.guis.views.*;
public class Prefs_mgr_tst {
private Prefs_mgr_fxt fxt = new Prefs_mgr_fxt();
@@ -143,7 +143,7 @@ class Prefs_mgr_fxt {
}
public Xop_fxt Parser_fxt() {return new Xop_fxt(app, app.Usere().Wiki());}
public Prefs_mgr_fxt Init_elem_atr_val(String elem_id, String atr_val) {
html_box.Html_elem_atr_add(elem_id, gplx.gfui.Gfui_html.Atr_value, atr_val);
html_box.Html_elem_atr_add(elem_id, Gfui_html.Atr_value, atr_val);
return this;
}
public Prefs_mgr_fxt Init_elem_atr_checked(String elem_id, String v) {
@@ -151,7 +151,7 @@ class Prefs_mgr_fxt {
return this;
}
public Prefs_mgr_fxt Init_elem_atr_innerHtml(String elem_id, String v) {
html_box.Html_elem_atr_add(elem_id, gplx.gfui.Gfui_html.Atr_innerHTML, v);
html_box.Html_elem_atr_add(elem_id, Gfui_html.Atr_innerHTML, v);
return this;
}
public Prefs_mgr_fxt Exec_get(String src_str, String expd) {
@@ -173,7 +173,7 @@ class Prefs_mgr_fxt {
Tfds.Eq(expd, actl);
}
}
class Gfui_html_mok extends Xog_html_itm { private Hash_adp elem_atrs = Hash_adp_.new_();
class Gfui_html_mok extends Xog_html_itm { private Hash_adp elem_atrs = Hash_adp_.New();
public void Html_elem_atr_add(String elem_id, String atr_key, Object atr_val) {elem_atrs.Add_if_dupe_use_nth(elem_id + "." + atr_key, atr_val);}
@Override public String Html_elem_atr_get_str(String id, String atr_key) {
return (String)elem_atrs.Get_by(id + "." + atr_key);

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*;
public class Prefs_rename_mgr {
private List_adp list = List_adp_.new_();
private List_adp list = List_adp_.New();
public Prefs_rename_mgr() {
List_add(list, "app.cfgs.get('app.gui.html.portal.wikis.visible', 'app').val", "app.cfgs.get('xowa.api.html.page.toggles.get(''offline-wikis'').visible', 'app').val");
}
@@ -38,7 +38,7 @@ public class Prefs_rename_mgr {
return cur_str_changed;
}
private static void List_add(List_adp list, String src, String trg) {list.Add(new Prefs_rename_itm(src, trg));}
public static final Prefs_rename_mgr Instance = new Prefs_rename_mgr();
public static final Prefs_rename_mgr Instance = new Prefs_rename_mgr();
}
class Prefs_rename_itm {
public Prefs_rename_itm(String src, String trg) {this.src = src; this.trg = trg;}

View File

@@ -23,9 +23,9 @@ class Xofs_url_itm {
public String Url() {return url;} public void Url_(String v) {url = v;} private String url;
}
class Xofs_url_itm_parser {
private static final byte[] Xowa_fs_protocol = Bry_.new_a7("xowa-fs://");
private static final int Xowa_fa_protocol_len = Xowa_fs_protocol.length;
private Bry_bfr url_bfr = Bry_bfr.reset_(16);
private static final byte[] Xowa_fs_protocol = Bry_.new_a7("xowa-fs://");
private static final int Xowa_fa_protocol_len = Xowa_fs_protocol.length;
private Bry_bfr url_bfr = Bry_bfr_.Reset(16);
private Hash_adp_bry names = Hash_adp_bry.cs();
public byte Dir_spr() {return dir_spr;} public void Dir_spr_(byte v) {dir_spr = v;} private byte dir_spr = Op_sys.Cur().Fsys_dir_spr_byte();
public void Names_add(String key_str, String val_str) {