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-08-17 02:09:16 -04:00
parent 34c34f227c
commit df10db140c
421 changed files with 4867 additions and 2429 deletions

View File

@@ -26,7 +26,6 @@ public class Xou_fsys_mgr implements GfoInvkAble {
app_temp_html_dir = app_temp_dir.GenSubDir("html");
app_data_history_fil = app_root_dir.GenSubFil_nest("data", "history", "page_history.csv");
wiki_root_dir = cur_root.GenSubDir("wiki");
home_wiki_dir = wiki_root_dir.GenSubDir_nest(Xow_domain_type_.Key_str_home);
}
public Io_url Root_dir() {return cur_root;}
public Io_url Wiki_root_dir() {return wiki_root_dir;}
@@ -39,7 +38,6 @@ public class Xou_fsys_mgr implements GfoInvkAble {
public Io_url App_data_cfg_dir() {return app_root_dir.GenSubDir_nest("data", "cfg");}
public Io_url App_data_cfg_user_fil() {return app_root_dir.GenSubFil_nest("data", "cfg", Xoa_gfs_mgr.Cfg_user_file);}
public Io_url App_data_cfg_custom_fil() {return app_root_dir.GenSubFil_nest("data", "cfg", Xoa_gfs_mgr.Cfg_user_custom_file);}
public Io_url Home_wiki_dir() {return home_wiki_dir;} private Io_url home_wiki_dir;
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;

View File

@@ -20,7 +20,8 @@ import gplx.xowa.langs.cases.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.
import gplx.xowa.wikis.domains.*;
class Xou_user_ {
public static Xowe_wiki new_or_create_(Xoue_user user, Xoae_app app) {
Io_url wiki_dir = user.Fsys_mgr().Home_wiki_dir().GenSubDir_nest("wiki", Xow_domain_type_.Key_str_home);
// Io_url wiki_dir = user.Fsys_mgr().Home_wiki_dir().GenSubDir_nest("wiki", Xow_domain_type_.Key_str_home);
Io_url wiki_dir = app.Fsys_mgr().Home_wiki_dir();
Xol_lang lang = app.Lang_mgr().Get_by_key_or_new(app.Lang_mgr().Default_lang());
lang.Init_by_load(); // NOTE: lang.Load() must occur before Xowe_wiki.new() b/c wiki will create parsers based on lang
Xowe_wiki rv = new Xowe_wiki(app, lang, ns_home_(lang.Case_mgr()), Xow_domain_uid_.To_domain(Xow_domain_uid_.Tid_xowa), wiki_dir);

View File

@@ -31,17 +31,13 @@ public class Xouc_setup_mgr implements GfoInvkAble {
case Op_sys.Tid_drd:
case Op_sys.Tid_wnt: return;
}
String op_sys_name = Xoa_app_.Op_sys;
String op_sys_name = Xoa_app_.Op_sys_str;
String[] plats_ary = String_.Split(setup_completed, ";");
int plats_ary_len = plats_ary.length;
for (int i = 0; i < plats_ary_len; i++) {
if (String_.Eq(plats_ary[i], op_sys_name)) return;
}
// Io_url lua_url = app.Fsys_mgr().Bin_plat_dir().GenSubFil_nest("lua", "lua");
// Io_url lua_install_url = app.Fsys_mgr().Bin_plat_dir().GenSubFil_nest("lua", "lua_install");
// Run(String_.Format("mv -f \"{0}\" \"{1}\"", lua_install_url.Raw(), lua_url.Raw()));
// Run(String_.Format("chmod 774 \"{0}\"", lua_url.Raw()));
Io_url setup_url = app.Fsys_mgr().Root_dir().GenSubFil_ary("setup_", op_sys_name, ".sh");
Io_url setup_url = app.Fsys_mgr().Root_dir().GenSubFil_nest("bin", op_sys_name, "xowa", "script", "setup_lua.sh");
Run("sh", String_.Format("\"{0}\"", setup_url.Raw()));
setup_completed += op_sys_name + ";";
app.Cfg_mgr().Set_by_all("app.user.cfg.setup.setup_completed", setup_completed);

View File

@@ -101,9 +101,6 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble {
public static final String Key_xowa_user = "anonymous";
public static final String Evt_lang_changed = "lang_changed";
public void Available_from_fsys() {
Io_url bookmarks_dir = fsys_mgr.Home_wiki_dir().GenSubDir_nest("wiki", "home", "ns", "730"); // NOTE: putting bookmark check here (instead of at init) b/c Init runs before xowa.gfs, and Bookmarks needs xowa.gfs to run first
if (!Io_mgr.I.ExistsDir(bookmarks_dir)) Xou_user_.Bookmarks_make(app, this.Wiki());
Io_url[] dirs = Io_mgr.I.QueryDir_args(app.Fsys_mgr().Wiki_dir()).Recur_(false).DirOnly_().ExecAsUrlAry();
Xowe_wiki usr_wiki = Wiki();
int dirs_len = dirs.length;

View File

@@ -27,20 +27,15 @@ public class Xou_db_file {
this.tbl__site = new Xoud_site_tbl(conn);
this.tbl__history = new Xoud_history_tbl(conn);
this.tbl__cache = new Xou_cache_tbl(conn);
// this.tbl__bmk = new Xoud_bmk_tbl(conn);
}
public Db_cfg_tbl Tbl__cfg() {return tbl__cfg;} private final Db_cfg_tbl tbl__cfg;
public Xoud_site_tbl Tbl__site() {return tbl__site;} private final Xoud_site_tbl tbl__site;
public Xoud_history_tbl Tbl__history() {return tbl__history;} private final Xoud_history_tbl tbl__history;
public Xou_cache_tbl Tbl__cache() {return tbl__cache;} private final Xou_cache_tbl tbl__cache;
// public Xoud_bmk_tbl Tbl__bmk() {return tbl__bmk;} private final Xoud_bmk_tbl tbl__bmk;
public void Init_assert() {
if (!conn.Meta_tbl_exists(tbl__cache.Tbl_name())) {
tbl__cfg.Create_tbl();
tbl__cache.Create_tbl();
}
// if (!conn.Meta_tbl_exists(tbl__bmk.Tbl_name())) {
// tbl__bmk.Create_tbl();
// }
}
}

View File

@@ -29,12 +29,12 @@ public class Xoud_history_mgr implements GfoInvkAble {
// async_mgr.Queue(this, Invk_update, "wiki", String_.new_u8(url.Wiki_bry()), "page", String_.new_u8(url.Page_bry()), "qarg", String_.new_u8(url.Args_all_as_bry()));
}
private void Update(String wiki, String page, String qarg) {
Xoud_history_row row = history_tbl.Select_by_page(wiki, page, qarg);
DateAdp time = DateAdp_.Now();
if (row == null)
history_tbl.Insert(wiki, page, qarg, time, 1);
else
history_tbl.Update(wiki, page, qarg, time, row.History_count() + 1);
// Xoud_history_row row = history_tbl.Select_by_page(wiki, page, qarg);
// DateAdp time = DateAdp_.Now();
// if (row == null)
// history_tbl.Insert(wiki, page, qarg, time, 1);
// else
// history_tbl.Update(wiki, page, qarg, time, row.Count() + 1);
}
public void Select(List_adp rv, int top) {
history_tbl.Select_by_top(rv, top);

View File

@@ -17,17 +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_history_row {
public Xoud_history_row(String history_wiki, String history_page, String history_qarg, DateAdp history_time, int history_count) {
this.history_wiki = history_wiki;
this.history_page = history_page;
this.history_qarg = history_qarg;
this.history_time = history_time;
this.history_count = history_count;
public Xoud_history_row(int id, byte[] wiki, byte[] url, DateAdp time, int count) {
this.id = id;
this.wiki = wiki; this.url = url;
this.time = time; this.count = count;
}
public String History_wiki() {return history_wiki;} private final String history_wiki;
public String History_page() {return history_page;} private final String history_page;
public String History_qarg() {return history_qarg;} private final String history_qarg;
public DateAdp History_time() {return history_time;} private final DateAdp history_time;
public int History_count() {return history_count;} private final int history_count;
public static final Xoud_history_row Null = null;
public int Id() {return id;} private final int id;
public byte[] Wiki() {return wiki;} private final byte[] wiki;
public byte[] Url() {return url;} private final byte[] url;
public DateAdp Time() {return time;} private final DateAdp time;
public int Count() {return count;} private final int count;
}

View File

@@ -17,43 +17,15 @@ 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.*;
import gplx.xowa.specials.*;
public class Xoud_history_special implements Bry_fmtr_arg, Xows_page {
private List_adp rows = List_adp_.new_();
import gplx.xowa.specials.xowa.bookmarks.*;
public class Xoud_history_special implements Xows_page {
public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__page_history;}
public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) {
Xoae_app app = wiki.Appe();
Xoud_history_mgr mgr = app.User().User_db_mgr().History_mgr();
mgr.Select(rows, 100);
Bry_bfr bfr = app.Utl__bfr_mkr().Get_m001();
html_grp.Bld_bfr_many(bfr, this);
page.Data_raw_(bfr.To_bry_and_rls());
Xoa_app app = wiki.App();
Dbui_tbl_itm__history ui_tbl = Dbui_tbl_itm__history.get_or_new(app, app.User().User_db_mgr().Db_file().Tbl__history());
page.Html_data().Head_mgr().Itm__dbui().Init(app).Enabled_y_();
Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_m001();
ui_tbl.Select(bfr, 100);
page.Hdump_data().Body_(bfr.To_bry_and_rls());
}
public void XferAry(Bry_bfr bfr, int idx) {
int len = rows.Count();
for (int i = 0; i < len; i++) {
Xoud_history_row row = (Xoud_history_row)rows.Get_at(i);
html_itm.Bld_bfr_many(bfr, row.History_wiki(), row.History_page(), row.History_count(), row.History_time().XtoStr_fmt_yyyy_MM_dd_HH_mm());
}
}
private static Bry_fmtr html_grp = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last
( "<table class='sortable'>"
, " <tr>"
, " <th>page</th>"
, " <th>wiki</th>"
, " <th>views</th>"
, " <th>time</th>"
, " </tr>~{itms}"
, "</table>"
), "itms"
);
private static Bry_fmtr html_itm = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last
( ""
, " <tr>"
, " <td>[[~{itm_wiki}:~{itm_page}|~{itm_page}]]</td>"
, " <td>~{itm_wiki}</td>"
, " <td>~{itm_count}</td>"
, " <td>~{itm_last}</td>"
, " </tr>"
), "itm_wiki", "itm_page", "itm_count", "itm_last"
);
}

View File

@@ -19,19 +19,19 @@ package gplx.xowa.users.data; import gplx.*; import gplx.xowa.*; import gplx.xow
import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.metas.*; import gplx.dbs.metas.updates.*;
public class Xoud_history_tbl implements RlsAble {
private final String tbl_name = "user_history"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private final String fld_wiki, fld_page, fld_qarg, fld_time, fld_count;
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) {
public Xoud_history_tbl(Db_conn conn) {
this.conn = conn;
fld_id = flds.Add_int_pkey_autonum("hist_id");
fld_wiki = flds.Add_str("hist_wiki", 255);
fld_page = flds.Add_str("hist_page", 255);
fld_qarg = flds.Add_str("hist_qarg", 255);
fld_url = flds.Add_str("hist_url", 255);
fld_time = flds.Add_str("hist_time", 20);
fld_count = flds.Add_int("hist_count");
stmt_insert = stmt_update = stmt_delete = stmt_select_by_page = stmt_select_by_top = null;
conn.Rls_reg(this);
}
public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_tbl(tbl_name, "pkey", fld_wiki, fld_page, fld_qarg)));}
public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_tbl(tbl_name, "pkey", fld_wiki, fld_url)));}
public void Rls() {
stmt_insert = Db_stmt_.Rls(stmt_insert);
stmt_update = Db_stmt_.Rls(stmt_update);
@@ -39,31 +39,32 @@ public class Xoud_history_tbl implements RlsAble {
stmt_select_by_page = Db_stmt_.Rls(stmt_select_by_page);
stmt_select_by_top = Db_stmt_.Rls(stmt_select_by_top);
}
public void Insert(String wiki, String page, String qarg, DateAdp time, int count) {
public void Insert(byte[] wiki, byte[] url, DateAdp time, int count) {
if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds);
stmt_insert.Clear()
.Val_str(fld_wiki, wiki).Val_str(fld_page, page).Val_str(fld_qarg, qarg)
.Val_str(fld_time, time.XtoStr_fmt_iso_8561()).Val_int(fld_count, count)
.Val_bry_as_str(fld_wiki, wiki)
.Val_bry_as_str(fld_url , url)
.Val_str(fld_time, time.XtoStr_fmt_iso_8561())
.Val_int(fld_count, count)
.Exec_insert();
}
public void Update(String wiki, String page, String qarg, DateAdp time, int count) {
if (stmt_update == null) stmt_update = conn.Stmt_update(tbl_name, String_.Ary(fld_wiki, fld_page, fld_qarg), fld_time, fld_count);
public void Update(int id, DateAdp time, int count) {
if (stmt_update == null) stmt_update = conn.Stmt_update(tbl_name, String_.Ary(fld_id), fld_time, fld_count);
stmt_update.Clear()
.Val_str(fld_time, time.XtoStr_fmt_iso_8561()).Val_int(fld_count, count)
.Crt_str(fld_wiki, wiki).Crt_str(fld_page, page).Crt_str(fld_qarg, qarg)
.Val_str(fld_time, time.XtoStr_fmt_iso_8561())
.Val_int(fld_count, count)
.Crt_int(fld_id, id)
.Exec_update();
}
public void Delete(String wiki, String page, String qarg) {
if (stmt_delete == null) stmt_delete = conn.Stmt_delete(tbl_name, fld_wiki, fld_page, fld_qarg);
stmt_delete.Clear()
.Crt_str(fld_wiki, wiki).Crt_str(fld_page, page).Crt_str(fld_qarg, qarg)
.Exec_delete();
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();
}
public Xoud_history_row Select_by_page(String wiki, String page, String qarg) {
if (stmt_select_by_page == null) stmt_select_by_page = conn.Stmt_select(tbl_name, flds, fld_wiki, fld_page, fld_qarg);
Db_rdr rdr = stmt_select_by_page.Clear().Crt_str(fld_wiki, wiki).Crt_str(fld_page, page).Crt_str(fld_qarg, qarg).Exec_select__rls_manual();
public Xoud_history_row Select_or_null(int id) {
if (stmt_select_by_page == null) stmt_select_by_page = conn.Stmt_select(tbl_name, flds, fld_id);
Db_rdr rdr = stmt_select_by_page.Clear().Crt_int(fld_id, id).Exec_select__rls_manual();
try {
return rdr.Move_next() ? new_row(rdr) : Xoud_history_row.Null;
return rdr.Move_next() ? new_row(rdr) : null;
}
finally {rdr.Rls();}
}
@@ -84,9 +85,9 @@ public class Xoud_history_tbl implements RlsAble {
}
private Xoud_history_row new_row(Db_rdr rdr) {
return new Xoud_history_row
( rdr.Read_str(fld_wiki)
, rdr.Read_str(fld_page)
, rdr.Read_str(fld_qarg)
( rdr.Read_int(fld_id)
, rdr.Read_bry_by_str(fld_wiki)
, rdr.Read_bry_by_str(fld_url)
, rdr.Read_date_by_str(fld_time)
, rdr.Read_int(fld_count)
);

View File

@@ -55,8 +55,8 @@ public class Prefs_mgr implements GfoInvkAble {
Xoae_page page = app.Gui_mgr().Browser_win().Active_page();
Props_set(page.Data_raw());
page.Wikie().ParsePage_root(page, true); // reparse in order to save new values to root; needed for history and going back / fwd; DATE:2014-02-07
app.Api_root().Gui().Page().View().Reload(); // force reload to update page; needed for language; DATE:2014-05-26
app.Usr_dlg().Prog_direct("options saved (" + DateAdp_.Now().XtoStr_fmt("HH:mm:ss") + ")");
// app.Api_root().Gui().Page().View().Reload(); // force reload to update page; needed for language; DATE:2014-05-26; NOTE: deactivate on 2015-08-13; refreshing page causes options to not show
Xog_tab_itm tab = app.Gui_mgr().Browser_win().Active_tab(); if (tab != null) tab.Exec_notify(Bool_.Y, "options saved");
}
public void Props_set(byte[] src) {
src = Bry_.Replace(src, Bry_.new_a7("<xowa_cmd>"), Bry_.new_a7("&lt;xowa_cmd>"));