mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v3.1.3.1
This commit is contained in:
@@ -62,10 +62,10 @@ public class Xoav_app implements Xoa_app, GfoInvkAble {
|
||||
public Xoh_lnki_bldr Html__lnki_bldr() {return html__lnki_bldr;} private final Xoh_lnki_bldr html__lnki_bldr;
|
||||
public Xoa_css_extractor Html__css_installer() {return html__css_installer;} private final Xoa_css_extractor html__css_installer = new Xoa_css_extractor();
|
||||
public Xoh_bridge_mgr Html__bridge_mgr() {return html__bridge_mgr;} private final Xoh_bridge_mgr html__bridge_mgr;
|
||||
public Xoa_meta_mgr Meta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr;
|
||||
public Xoa_meta_mgr Dbmeta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr;
|
||||
public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} private final Gfo_inet_conn inet_conn = Gfo_inet_conn_.new_();
|
||||
public Xoa_site_cfg_mgr Site_cfg_mgr() {return site_cfg_mgr;} private final Xoa_site_cfg_mgr site_cfg_mgr;
|
||||
public boolean Xwiki_mgr__missing(byte[] domain) {return wiki_mgr.Get_by_domain(domain) == null;}
|
||||
public boolean Xwiki_mgr__missing(byte[] domain) {return wiki_mgr.Get_by_or_null(domain) == null;}
|
||||
public Xoa_sitelink_mgr Xwiki_mgr__sitelink_mgr() {return xwiki_mgr__sitelink_mgr;} private final Xoa_sitelink_mgr xwiki_mgr__sitelink_mgr = new Xoa_sitelink_mgr();
|
||||
public Xow_xwiki_itm_parser Xwiki_mgr__itm_parser() {return xwiki_mgr__itm_parser;} private final Xow_xwiki_itm_parser xwiki_mgr__itm_parser = new Xow_xwiki_itm_parser();
|
||||
|
||||
|
||||
@@ -21,16 +21,24 @@ import gplx.xowa.wikis.*;
|
||||
public class Xoav_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble {
|
||||
private final Xoav_app app; private final Ordered_hash hash = Ordered_hash_.New_bry();
|
||||
public Xoav_wiki_mgr(Xoav_app app, Xol_case_mgr case_mgr) {this.app = app;}
|
||||
public int Count() {return hash.Count();}
|
||||
public Xow_wiki Get_at_i(int i) {return (Xow_wiki)hash.Get_at(i);}
|
||||
public Xowv_wiki Get_by_domain(byte[] domain) {return (Xowv_wiki)hash.Get_by(domain);}
|
||||
public Xowv_wiki Import_by_fil(Io_url fil) {
|
||||
public int Count() {return hash.Count();}
|
||||
public boolean Has(byte[] key) {return hash.Has(key);}
|
||||
public Xow_wiki Get_at(int idx) {return (Xow_wiki)hash.Get_at(idx);}
|
||||
public Xow_wiki Get_by_or_null(byte[] key) {return (Xow_wiki)hash.Get_by(key);}
|
||||
public Xow_wiki Get_by_or_make_init_y(byte[] key) {
|
||||
Xow_wiki rv = this.Get_by_or_null(key);
|
||||
// if (rv == null) rv = New_wiki(key); // TODO: must init wiki, but need wiki_url; DATE:2015-05-23
|
||||
return rv;
|
||||
}
|
||||
public Xow_wiki Get_by_or_make_init_n(byte[] key) {return Get_by_or_make_init_y(key);}
|
||||
public void Add(Xow_wiki wiki) {hash.Add_if_dupe_use_nth(wiki.Domain_bry(), wiki);}
|
||||
public Xow_wiki Load_by_fil(Io_url fil) {
|
||||
Io_url wiki_dir = fil.OwnerDir();
|
||||
Xowv_wiki rv = Load(Gen_domain_str(fil.NameOnly()), wiki_dir);
|
||||
Xow_wiki rv = Load(Gen_domain_str(fil.NameOnly()), wiki_dir);
|
||||
app.User().User_db_mgr().Site_mgr().Import(rv.Domain_str(), rv.Domain_str(), wiki_dir.Raw(), "");
|
||||
return rv;
|
||||
}
|
||||
public void Load_by_user_data() {
|
||||
public void Load_by_user_data() {
|
||||
Xoud_site_row[] ary = app.User().User_db_mgr().Site_mgr().Get_all();
|
||||
int len = ary.length;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
@@ -38,34 +46,14 @@ public class Xoav_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble {
|
||||
Load(itm.Domain(), Io_url_.new_dir_(itm.Path()));
|
||||
}
|
||||
}
|
||||
public Xowv_wiki Load_by_fil(Io_url fil) {
|
||||
return Load(Gen_domain_str(fil.NameOnly()), fil.OwnerDir());
|
||||
}
|
||||
public boolean Has(byte[] key) {return hash.Has(key);}
|
||||
public Xow_wiki Get_by_key_or_null_i(byte[] key) {return (Xowv_wiki)hash.Get_by(key);}
|
||||
public Xow_wiki Get_by_key_or_make_init_y(byte[] key) {
|
||||
Xow_wiki rv = this.Get_by_domain(key);
|
||||
// if (rv == null) rv = New_wiki(key); // TODO: must init wiki, but need wiki_url; DATE:2015-05-23
|
||||
return rv;
|
||||
}
|
||||
public Xow_wiki Get_by_key_or_make_init_n(byte[] key) {return Get_by_key_or_make_init_y(key);}
|
||||
public void Load_by_dir(Io_url wiki_root_dir) {
|
||||
Io_url[] wiki_dirs = Io_mgr.Instance.QueryDir_args(wiki_root_dir).DirOnly_().ExecAsUrlAry();
|
||||
for (Io_url wiki_dir : wiki_dirs) {
|
||||
String wiki_dir_url = wiki_dir.Raw();
|
||||
if (String_.Has_at_bgn(wiki_dir_url, "#")) continue;
|
||||
Load(wiki_dir.NameOnly(), wiki_dir);
|
||||
}
|
||||
}
|
||||
private Xowv_wiki Load(String domain_str, Io_url wiki_dir) {
|
||||
private Xow_wiki Load(String domain_str, Io_url wiki_dir) {
|
||||
byte[] domain_bry = Bry_.new_u8(domain_str);
|
||||
Xowv_wiki rv = new Xowv_wiki(app, domain_bry, wiki_dir);
|
||||
Xow_wiki rv = new Xowv_wiki(app, domain_bry, wiki_dir);
|
||||
hash.Add_if_dupe_use_nth(domain_bry, rv);
|
||||
return rv;
|
||||
}
|
||||
public void Add(Xow_wiki wiki) {hash.Add_if_dupe_use_nth(wiki.Domain_bry(), wiki);}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk_import_by_fil)) return Import_by_fil(Io_url_.new_fil_(m.ReadStr("v")));
|
||||
if (ctx.Match(k, Invk_import_by_fil)) return Load_by_fil(Io_url_.new_fil_(m.ReadStr("v")));
|
||||
else return GfoInvkAble_.Rv_unhandled;
|
||||
}
|
||||
public static final String Invk_import_by_fil = "import_by_fil";
|
||||
|
||||
@@ -63,7 +63,7 @@ public class Xoa_cfg_mgr implements GfoInvkAble {
|
||||
int wiki_count = app.Wiki_mgri().Count();
|
||||
boolean rv = true;
|
||||
for (int i = 0; i < wiki_count; i++) {
|
||||
Xow_wiki wiki = app.Wiki_mgri().Get_at_i(i);
|
||||
Xow_wiki wiki = app.Wiki_mgri().Get_at(i);
|
||||
if (all || wiki.Domain_tid() == grp_tid.Wiki_tid()) {
|
||||
if (!Eval_set(wiki, grp.Key_str(), itm.Val()))
|
||||
rv = false;
|
||||
@@ -71,7 +71,7 @@ public class Xoa_cfg_mgr implements GfoInvkAble {
|
||||
}
|
||||
return rv;
|
||||
case Xoa_cfg_grp_tid.Tid_wiki: {
|
||||
Xow_wiki wiki = app.Wiki_mgri().Get_by_key_or_null_i(itm.Key());
|
||||
Xow_wiki wiki = app.Wiki_mgri().Get_by_or_null(itm.Key());
|
||||
if (wiki == null) return true; // wiki not installed; return true (no error)
|
||||
return Eval_set(wiki, grp.Key_str(), itm.Val());
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ class Xoa_cfg_mgr_fxt {
|
||||
itm.Val_(val);
|
||||
}
|
||||
public Xowe_wiki Exec_make_wiki(String wiki_key_str) {return Exec_make_wiki(Bry_.new_a7(wiki_key_str));}
|
||||
public Xowe_wiki Exec_make_wiki(byte[] wiki_key_bry) {return app.Wiki_mgr().Get_by_key_or_make(wiki_key_bry);}
|
||||
public Xowe_wiki Exec_make_wiki(byte[] wiki_key_bry) {return app.Wiki_mgr().Get_by_or_make(wiki_key_bry);}
|
||||
public void Test_init_wiki(String wiki_key_str, String itm_key_str, String expd_val) {
|
||||
byte[] wiki_key_bry = Bry_.new_a7(wiki_key_str);
|
||||
Xowe_wiki wiki = Exec_make_wiki(wiki_key_bry);
|
||||
|
||||
@@ -92,7 +92,7 @@ public class Http_server_mgr implements GfoInvkAble {
|
||||
public String Parse_page_to_html(Http_data__client data__client, byte[] wiki_domain, byte[] page_ttl) {
|
||||
synchronized (thread_lock) {
|
||||
Init_gui();
|
||||
Xowe_wiki wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_key_or_make_init_y(wiki_domain); // get the wiki; assert init for Main_Page; EX:click zh.w on wiki sidebar; DATE:2015-07-19
|
||||
Xowe_wiki wiki = (Xowe_wiki)app.Wiki_mgr().Get_by_or_make_init_y(wiki_domain); // get the wiki; assert init for Main_Page; EX:click zh.w on wiki sidebar; DATE:2015-07-19
|
||||
if (Env_.System_memory_total() > Io_mgr.Len_gb) Xow_wiki_.Rls_mem(wiki, true); // release memory at 1 GB; DATE:2015-09-11
|
||||
if (Bry_.Len_eq_0(page_ttl)) page_ttl = wiki.Props().Main_page();
|
||||
Xoa_url page_url = wiki.Utl__url_parser().Parse(page_ttl); // get the url (needed for query args)
|
||||
|
||||
@@ -29,7 +29,7 @@ class Http_server_wkr_ {
|
||||
byte[] wiki_domain = Bry_.new_u8(req_array[1]);
|
||||
Xow_domain_itm domain_itm = Xow_domain_itm_.parse(wiki_domain);
|
||||
if (domain_itm.Domain_type_id() == Xow_domain_tid_.Int__other && domain_itm.Lang_actl_itm().Id() == Xol_lang_stub_.Id__intl) return req;
|
||||
Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_make(wiki_domain);
|
||||
Xowe_wiki wiki = app.Wiki_mgr().Get_by_or_make(wiki_domain);
|
||||
wiki.Init_assert();
|
||||
String main_page = String_.new_u8(wiki.Props().Main_page());
|
||||
if (mode == 1) main_page = "/" + main_page;
|
||||
|
||||
@@ -33,7 +33,7 @@ class Http_server_wkr__fxt {
|
||||
this.app = Xoa_app_fxt.app_();
|
||||
}
|
||||
public void Init_wiki_main_page(String domain, String main_page) {
|
||||
Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_make(Bry_.new_u8(domain));
|
||||
Xowe_wiki wiki = app.Wiki_mgr().Get_by_or_make(Bry_.new_u8(domain));
|
||||
wiki.Props().Main_page_(Bry_.new_u8(main_page));
|
||||
}
|
||||
public void Test_assert_main_page(String url, String expd) {
|
||||
|
||||
@@ -50,7 +50,7 @@ public class Xoa_url_parser {
|
||||
Xow_xwiki_itm xwiki_itm = app.User().Wikii().Xwiki_mgr().Get_by_key(wiki_bry);
|
||||
if (xwiki_itm == null) {Xoa_url_.Invalid_warn(str); return null;} // if wiki doesn't exist, warn and return nothing; DATE:2015-08-25
|
||||
if (rv.Page_is_main()) { // Main_Page requested; EX: "zh.wikipedia.org"; "zh.wikipedia.org/wiki/"; DATE:2014-02-16
|
||||
Xow_wiki wiki_itm = app.Wiki_mgri().Get_by_key_or_make_init_y(wiki_bry); // NOTE: must call Init to load Main_Page; only call if from url_bar, else all sister wikis will be loaded when parsing Sister_wikis panel
|
||||
Xow_wiki wiki_itm = app.Wiki_mgri().Get_by_or_make_init_y(wiki_bry); // NOTE: must call Init to load Main_Page; only call if from url_bar, else all sister wikis will be loaded when parsing Sister_wikis panel
|
||||
rv.Page_bry_(wiki_itm.Props().Main_page());
|
||||
}
|
||||
return rv;
|
||||
@@ -241,10 +241,10 @@ public class Xoa_url_parser {
|
||||
if (colon_pos == Bry_find_.Not_found) return null; // no colon
|
||||
Xow_wiki alias_wiki = wiki; // default alias_wiki to cur_wiki
|
||||
if (!tmp_wiki_is_missing) // tmp_wiki exists; use it for alias wikis; DATE:2015-09-17
|
||||
alias_wiki = wiki.App().Wiki_mgri().Get_by_key_or_make_init_n(tmp_wiki);
|
||||
alias_wiki = wiki.App().Wiki_mgri().Get_by_or_make_init_n(tmp_wiki);
|
||||
Xow_xwiki_itm alias_itm = alias_wiki.Xwiki_mgr().Get_by_mid(bry, 0, colon_pos); // check for alias;
|
||||
if (alias_itm == null) return null; // colon-word is not alias; EX:A:B
|
||||
Xow_ns_mgr ns_mgr = tmp_wiki_is_missing ? wiki.Ns_mgr() : wiki.App().Meta_mgr().Ns__get_or_load(tmp_wiki);
|
||||
Xow_ns_mgr ns_mgr = tmp_wiki_is_missing ? wiki.Ns_mgr() : wiki.App().Dbmeta_mgr().Ns__get_or_load(tmp_wiki);
|
||||
if (ns_mgr.Names_get_or_null(alias_itm.Key_bry()) != null) // special case to handle collision between "wikipedia" alias and "Wikipedia" namespace; if alias exists as ns, ignore it; EX:sv.wikipedia.org/wiki/Wikipedia:Main_Page DATE:2015-07-31
|
||||
return null;
|
||||
byte[] rv = Bry_.Mid(bry, colon_pos + 1);
|
||||
|
||||
@@ -44,7 +44,7 @@ public class Xoa_url_parser_fxt {
|
||||
return this;
|
||||
}
|
||||
public Xow_ns_mgr Prep_get_ns_mgr_from_meta(String wiki) {
|
||||
return app.Meta_mgr().Ns__get_or_load(Bry_.new_u8(wiki));
|
||||
return app.Dbmeta_mgr().Ns__get_or_load(Bry_.new_u8(wiki));
|
||||
}
|
||||
public Xoa_url_parser_fxt Run_parse(String actl_str) {return Run_parse(cur_wiki, actl_str);}
|
||||
public Xoa_url_parser_fxt Run_parse(Xow_wiki wiki, String actl_str) {
|
||||
|
||||
Reference in New Issue
Block a user