mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Wiki: Support renamed folders
This commit is contained in:
parent
9c700e4b34
commit
cf30fd140e
@ -31,7 +31,19 @@ public class Fsdb_db_mgr_ {
|
||||
);
|
||||
return new Fsdb_db_mgr__v1(file_dir);
|
||||
}
|
||||
|
||||
// FOLDER.RENAME: handle renamed folders; EX:"/wiki/en.wikipedia.org-2016-12" DATE:2017-02-01
|
||||
String domain_str = wiki.Domain_str();
|
||||
try {
|
||||
String cfg_domain_str = wiki.Data__core_mgr().Db__core().Tbl__cfg().Select_str("xowa.bldr.session", "wiki_domain");
|
||||
if (!String_.Eq(domain_str, cfg_domain_str)) {
|
||||
domain_str = cfg_domain_str;
|
||||
Gfo_usr_dlg_.Instance.Note_many("", "", "fsdb.db_core.init: fsys.domain doesn't match db.domain; import db.*; fsys=~{0} db=~{1}", domain_str, cfg_domain_str);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Gfo_usr_dlg_.Instance.Warn_many("", "", "fsdb.db_core.init: failed to get domain from config; err=~{0}", Err_.Message_gplx_log(e));
|
||||
}
|
||||
|
||||
Fsdb_db_mgr rv = null;
|
||||
rv = load_or_null(Xow_db_layout.Itm_few, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv;
|
||||
rv = load_or_null(Xow_db_layout.Itm_lot, usr_dlg, wiki_dir, wiki, domain_str); if (rv != null) return rv;
|
||||
|
@ -33,7 +33,7 @@ public class Xoa_app_ {
|
||||
}
|
||||
public static final String Name = "xowa";
|
||||
public static final int Version_id = 512;
|
||||
public static final String Version = "4.0.2.1701"; // RELEASE:2017-01-03 20:30
|
||||
public static final String Version = "4.0.3.1702"; // RELEASE:2017-01-03 20:30
|
||||
public static String Build_date = "2012-12-30 00:00:00";
|
||||
public static String Build_date_fmt = "yyyy-MM-dd HH:mm:ss";
|
||||
public static String Op_sys_str;
|
||||
|
@ -185,6 +185,21 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
|
||||
db_mgr_sql.Core_data_mgr().Init_by_load(core_db_url);
|
||||
file_mgr.Init_file_mgr_by_load(this);
|
||||
db_mgr_sql.Core_data_mgr().Tbl__page().Flds__assert(); // NOTE: must go above html_mgr.Init_by_wiki b/c Page_load will be done via messages
|
||||
|
||||
// FOLDER.RENAME: handle renamed folders; EX:"/wiki/en.wikipedia.org-2016-12" DATE:2017-02-01
|
||||
try {
|
||||
byte[] cfg_domain_bry = db_mgr_sql.Core_data_mgr().Db__core().Tbl__cfg().Select_bry("xowa.bldr.session", "wiki_domain");
|
||||
if (!Bry_.Eq(cfg_domain_bry, domain_bry)) {
|
||||
Xow_domain_itm cfg_domain_itm = Xow_domain_itm_.parse(cfg_domain_bry);
|
||||
this.wdata_wiki_tid = cfg_domain_itm.Domain_type_id();
|
||||
this.wdata_wiki_lang = cfg_domain_itm.Lang_orig_key();
|
||||
Bry_bfr bfr = Bry_bfr_.New();
|
||||
Xow_abrv_wm_.To_abrv(bfr, wdata_wiki_lang, Int_obj_ref.New(wdata_wiki_tid));
|
||||
this.wdata_wiki_abrv = bfr.To_bry_and_rls();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Gfo_usr_dlg_.Instance.Warn_many("", "", "db.init: failed to get domain from config; err=~{0}", Err_.Message_gplx_log(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
private void Init_wiki(Xoue_user user) { // NOTE: (a) one-time initialization for all wikis; (b) not called by tests
|
||||
|
@ -28,7 +28,7 @@ class Xof_wkr_mgr implements Gfo_invk {
|
||||
private static final String Invk_get = "get";
|
||||
private Xof_fsdb_mgr Get_or_new(String key) {
|
||||
if (String_.Eq(key, "fs.dir")) {
|
||||
return Fs_root_core.New(file_mgr, file_mgr.Wiki());
|
||||
return Fs_root_core.Set_fsdb_mgr(file_mgr, file_mgr.Wiki());
|
||||
}
|
||||
else
|
||||
throw Err_.new_unhandled(key);
|
||||
|
@ -72,6 +72,12 @@ public class Xow_file_mgr implements Gfo_invk {
|
||||
public Xof_cfg_download Cfg_download() {return cfg_download;} private Xof_cfg_download cfg_download = new Xof_cfg_download();
|
||||
public void Init_by_wiki(Xow_wiki wiki) {
|
||||
cfg_download.Init_by_wiki(wiki);
|
||||
|
||||
// if non-wmf, set fsdb_mgr to fs.dir; DATE:2017-02-01
|
||||
if (wiki.Domain_tid() == gplx.xowa.wikis.domains.Xow_domain_tid_.Tid__other) {
|
||||
gplx.xowa.files.fsdb.fs_roots.Fs_root_core fsdir_core = gplx.xowa.files.fsdb.fs_roots.Fs_root_core.Set_fsdb_mgr(this, this.wiki);
|
||||
fsdir_core.Orig_dir_(wiki.Fsys_mgr().Root_dir().GenSubDir_nest("file", "orig"));
|
||||
}
|
||||
}
|
||||
public void Cfg_set(String grp, String key, String val) { // TEST: should only be called by tests
|
||||
if (test_grps == null) test_grps = Hash_adp_.New();
|
||||
|
@ -34,6 +34,7 @@ public class Fs_root_core implements Xof_fsdb_mgr, Gfo_invk { // reads images fr
|
||||
Orig_fil_row rv = mgr.Wkr().Get_by_ttl(lnki_ttl);
|
||||
return rv == null ? null : rv.Url();
|
||||
}
|
||||
public void Orig_dir_(Io_url v) {mgr.Orig_dir_(v);}
|
||||
public void Fsdb_search_by_list(List_adp itms, Xow_wiki wiki, Xoa_page page, Xog_js_wkr js_wkr) {
|
||||
int itms_len = itms.Count();
|
||||
|
||||
@ -63,7 +64,7 @@ public class Fs_root_core implements Xof_fsdb_mgr, Gfo_invk { // reads images fr
|
||||
v = Bry_.Replace(v, Byte_ascii.Slash, Byte_ascii.Backslash);
|
||||
return gplx.core.brys.fmtrs.Bry_fmtr_eval_mgr_.Eval_url(wiki.Appe().Url_cmd_eval(), v);
|
||||
}
|
||||
public static Fs_root_core New(Xow_file_mgr file_mgr, Xowe_wiki wiki) {
|
||||
public static Fs_root_core Set_fsdb_mgr(Xow_file_mgr file_mgr, Xowe_wiki wiki) {
|
||||
Fs_root_core rv = new Fs_root_core(wiki);
|
||||
file_mgr.Fsdb_mgr_(rv);
|
||||
|
||||
|
1
xowa.home.version
Normal file
1
xowa.home.version
Normal file
@ -0,0 +1 @@
|
||||
custom_wikis
|
Loading…
Reference in New Issue
Block a user