1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-09-28 14:30:51 +00:00

Night-mode: Allow global user-overrides for night-mode css / logo

This commit is contained in:
gnosygnu 2017-06-25 15:47:30 -04:00
parent 67fc90d43f
commit f1da174c5c
16 changed files with 160 additions and 36 deletions

View File

@ -39,7 +39,11 @@ public class Xoae_app implements Xoa_app, Gfo_invk {
fsys_mgr = new Xoa_fsys_mgr(bin_dir_name, root_dir, wiki_dir, file_dir, css_dir, root_dir);
log_wtr = usr_dlg.Log_wkr();
api_root = new Xoapi_root(this);
// user
user = new Xoue_user(this, user_dir);
this.fsys_mgr.Url_finder().Init_by_user(user.Fsys_mgr());
this.meta_mgr = new Xoa_meta_mgr(this);
url_cmd_eval = new Xoa_fsys_eval(fsys_mgr, user.Fsys_mgr());
fsys_mgr.Init_by_app(prog_mgr);

View File

@ -16,7 +16,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
package gplx.xowa; import gplx.*;
import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.ios.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.cases.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.addons.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.addons.*; import gplx.xowa.wikis.fsys.*;
import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*; import gplx.fsdb.*;
import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.addons.wikis.ctgs.htmls.pageboxs.*; import gplx.xowa.addons.wikis.ctgs.htmls.catpages.*;
import gplx.xowa.parsers.*;

View File

@ -17,7 +17,7 @@ package gplx.xowa; import gplx.*;
import gplx.core.brys.*; import gplx.core.primitives.*; import gplx.core.brys.fmtrs.*; import gplx.core.ios.*;
import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.apps.urls.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.cases.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.caches.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.wikis.fsys.*;
import gplx.xowa.users.*; import gplx.xowa.htmls.*; import gplx.xowa.users.history.*; import gplx.xowa.specials.*; import gplx.xowa.xtns.*; import gplx.xowa.wikis.dbs.*;
import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.exts.*;
import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.htmls.hrefs.*;
@ -33,8 +33,15 @@ public class Xowe_wiki implements Xow_wiki, Gfo_invk, Gfo_evt_itm {
public Xowe_wiki(Xoae_app app, Xol_lang_itm lang, Xow_ns_mgr ns_mgr, Xow_domain_itm domain_itm, Io_url wiki_dir) {
this.ev_mgr = new Gfo_evt_mgr(this);
this.app = app; this.lang = lang; this.ns_mgr = ns_mgr;
this.domain_itm = domain_itm; this.domain_str = domain_itm.Domain_str(); this.domain_bry = domain_itm.Domain_bry(); this.domain_tid = domain_itm.Domain_type_id(); this.domain_abrv = Xow_abrv_wm_.To_abrv(domain_itm);
this.domain_itm = domain_itm;
this.domain_bry = domain_itm.Domain_bry();
this.domain_str = domain_itm.Domain_str();
this.domain_tid = domain_itm.Domain_type_id();
this.domain_abrv = Xow_abrv_wm_.To_abrv(domain_itm);
this.fsys_mgr = new Xow_fsys_mgr(wiki_dir, app.Fsys_mgr().File_dir().GenSubDir(domain_str));
this.url__parser = new Xow_url_parser(this);
this.xwiki_mgr = new Xow_xwiki_mgr(this);
this.html__hdump_mgr = new Xow_hdump_mgr(this);

View File

@ -43,7 +43,11 @@ public class Xoav_app implements Xoa_app, Gfo_invk {
this.utl_msg_log = Gfo_msg_log.Test();
this.html__bridge_mgr = new Xoh_bridge_mgr(utl__json_parser);
this.gui__tab_mgr = tab_mgr;
// user
this.user = new Xouv_user(this, "anonymous", root_dir.GenSubDir_nest("user", "anonymous"));
this.fsys_mgr.Url_finder().Init_by_user(user.Fsys_mgr());
this.api_root = null;
this.site_cfg_mgr = new Xoa_site_cfg_mgr(this);
this.bldr = new Xob_bldr(null);

View File

@ -30,6 +30,7 @@ public class Xoa_fsys_mgr implements Gfo_invk {
this.cfg_wiki_core_dir = bin_xowa_dir.GenSubDir_nest("cfg", "wiki", "core");
this.cfg_site_meta_fil = bin_xowa_dir.GenSubFil_nest("cfg", "wiki", "site_meta.sqlite3");
this.home_wiki_dir = bin_xowa_dir.GenSubDir_nest("wiki", Xow_domain_itm_.Str__home);
this.url_finder = new Xoa_url_finder(this);
}
public Io_url Root_dir() {return root_dir;} private final Io_url root_dir; // EX: /xowa/
public Io_url Wiki_dir() {return wiki_dir;} private final Io_url wiki_dir; // EX: /xowa/wiki/
@ -37,7 +38,7 @@ public class Xoa_fsys_mgr implements Gfo_invk {
public Io_url Css_dir() {return css_dir;} private final Io_url css_dir; // EX: /xowa/user/anonymous/wiki/
public Io_url Bin_plat_dir() {return bin_plat_dir;} private final Io_url bin_plat_dir; // EX: /xowa/bin/lnx_64/
public Io_url Bin_any_dir() {return bin_any_dir;} private final Io_url bin_any_dir; // EX: /xowa/bin/any
public Io_url Bin_xowa_dir() {return bin_xowa_dir;} private final Io_url bin_xowa_dir;
public Io_url Bin_xowa_dir() {return bin_xowa_dir;} private final Io_url bin_xowa_dir; // EX: /xowa/bin/any/xowa
public Io_url Bin_xowa_file_dir() {return bin_xowa_file_dir;} private final Io_url bin_xowa_file_dir;
public Io_url Bin_xtns_dir() {return bin_xtns_dir;} private final Io_url bin_xtns_dir;
public Io_url Bin_addon_dir() {return bin_addon_dir;} private final Io_url bin_addon_dir;
@ -49,6 +50,7 @@ public class Xoa_fsys_mgr implements Gfo_invk {
public Io_url Home_wiki_dir() {return home_wiki_dir;} private final Io_url home_wiki_dir;
public Io_url Cfg_app_fil() {return cfg_app_fil;} private final Io_url cfg_app_fil;
public Io_url Http_root() {return http_root;} private final Io_url http_root; // EX: file:///xowa/ or file:///android_asset/xowa/
public Xoa_url_finder Url_finder() {return url_finder;} private final Xoa_url_finder url_finder;
public void Init_by_app(Gfo_invk app_mgr_invk) {this.app_mgr_invk = app_mgr_invk;} private Gfo_invk app_mgr_invk; // for gfs and app.launcher
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_apps)) return app_mgr_invk;
@ -56,4 +58,7 @@ public class Xoa_fsys_mgr implements Gfo_invk {
else return Gfo_invk_.Rv_unhandled;
}
private static final String Invk_apps = "apps", Invk_root_dir = "root_dir";
public static Xoa_fsys_mgr New_by_plat(String plat_name, Io_url root_dir) { // TEST:
return new Xoa_fsys_mgr(plat_name, root_dir, root_dir.GenSubDir("wiki"), root_dir.GenSubDir("file"), root_dir.GenSubDir("css"), root_dir.GenSubDir("html"));
}
}

View File

@ -0,0 +1,47 @@
/*
XOWA: the XOWA Offline Wiki Application
Copyright (C) 2012-2017 gnosygnu@gmail.com
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
or alternatively under the terms of the Apache License Version 2.0.
You may use XOWA according to either of these licenses as is most appropriate
for your project on a case-by-case basis.
The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.apps.fsys; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
import gplx.xowa.users.*;
public class Xoa_url_finder {
private final Xoa_fsys_mgr app_fsys_mgr;
private Xou_fsys_mgr usr_fsys_mgr;
public Xoa_url_finder(Xoa_fsys_mgr app_fsys_mgr) {
this.app_fsys_mgr = app_fsys_mgr;
}
public void Init_by_user(Xou_fsys_mgr usr_fsys_mgr) {
this.usr_fsys_mgr = usr_fsys_mgr;
}
public Io_url Find_by_css_or_app_bin(String wiki, String file, String[] app_dir_parts) {return Find_by_css_or(wiki, file, app_dir_parts, true);}
public Io_url Find_by_css_or(String wiki, String file, String[] app_dir_parts, boolean app_bin_if_missing) {
// check wiki_css dir; EX: /xowa/user/anonymous/wiki/en.wikipedia.org/html/logo.png
Io_url usr_css_fil = usr_fsys_mgr.Wiki_html_dir(wiki).GenSubFil(file);
if (Io_mgr.Instance.ExistsFil(usr_css_fil))
return usr_css_fil;
// check usr_bin dir; EX: /xowa/user/app/overrides/bin/any/xowa/html/css/nightmode/logo.png
Io_url usr_bin_fil = usr_fsys_mgr.App_root_dir().GenSubDir("overrides").GenSubDir_nest(app_dir_parts).GenSubFil(file);
if (Io_mgr.Instance.ExistsFil(usr_bin_fil))
return usr_bin_fil;
// check app_bin dir; EX: /xowa/bin/any/xowa/html/css/nightmode/logo.png
Io_url app_bin_fil = app_fsys_mgr.Root_dir().GenSubDir_nest(app_dir_parts).GenSubFil(file);
if (Io_mgr.Instance.ExistsFil(app_bin_fil))
return app_bin_fil;
// nothing found
return app_bin_if_missing ? app_bin_fil : null;
}
}

View File

@ -0,0 +1,64 @@
/*
XOWA: the XOWA Offline Wiki Application
Copyright (C) 2012-2017 gnosygnu@gmail.com
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
or alternatively under the terms of the Apache License Version 2.0.
You may use XOWA according to either of these licenses as is most appropriate
for your project on a case-by-case basis.
The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.apps.fsys; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
import org.junit.*; import gplx.core.tests.*;
import gplx.xowa.users.*;
public class Xoa_url_finder_tst {
private final Xoa_url_finder_fxt fxt = new Xoa_url_finder_fxt();
@Test public void Find_by_css_or_null() {
// init
String wiki = "en.wikipedia.org";
String file = "logo_night.png";
String[] subs = String_.Ary("bin", "any", "xowa", "html", "css", "nightmode");
String expd = null;
// null case
expd = null;
fxt.Test__Find_by_css_or_null(expd, wiki, file, subs);
// app_bin
expd = "mem/xowa/bin/any/xowa/html/css/nightmode/logo_night.png";
fxt.Init__Fsys__save(expd);
fxt.Test__Find_by_css_or_null(expd, wiki, file, subs);
// usr_bin
expd = "mem/xowa/user/anonymous/app/overrides/bin/any/xowa/html/css/nightmode/logo_night.png";
fxt.Init__Fsys__save(expd);
fxt.Test__Find_by_css_or_null(expd, wiki, file, subs);
// wiki_css
expd = "mem/xowa/user/anonymous/wiki/en.wikipedia.org/html/logo_night.png";
fxt.Init__Fsys__save(expd);
fxt.Test__Find_by_css_or_null(expd, wiki, file, subs);
}
}
class Xoa_url_finder_fxt {
private final Xoa_url_finder finder;
public Xoa_url_finder_fxt() {
Io_url root_dir = Io_url_.mem_dir_("mem/xowa/");
Xoa_fsys_mgr app_fsys_mgr = Xoa_fsys_mgr.New_by_plat("lnx", root_dir);
Xou_fsys_mgr usr_fsys_mgr = new Xou_fsys_mgr(root_dir.GenSubDir_nest("user", "anonymous"));
this.finder = new Xoa_url_finder(app_fsys_mgr);
finder.Init_by_user(usr_fsys_mgr);
}
public void Init__Fsys__save(String url) {
Io_mgr.Instance.SaveFilStr(url, "");
}
public void Test__Find_by_css_or_null(String expd, String wiki, String file, String[] dir_parts) {
Io_url actl = finder.Find_by_css_or(wiki, file, dir_parts, false);
Gftest.Eq__str(expd, actl == null ? null : actl.Raw());
}
}

View File

@ -52,7 +52,7 @@ public class Xoa_css_extractor {
this.wiki_html_dir = wiki.App().Fsys_mgr().Wiki_css_dir(wiki.Domain_str()); // EX: /xowa/user/anonymous/wiki/en.wikipedia.org
Io_url css_comm_fil = wiki_html_dir.GenSubFil(Css_common_name);
Io_url css_wiki_fil = wiki_html_dir.GenSubFil(Css_wiki_name);
wiki.Html__wtr_mgr().Init_css_urls(wiki.App(), css_comm_fil, css_wiki_fil);
wiki.Html__wtr_mgr().Init_css_urls(wiki.App(), wiki.Domain_str(), css_comm_fil, css_wiki_fil);
if (wiki.Domain_tid() == Xow_domain_tid_.Tid__home || Env_.Mode_testing()) return; // NOTE: do not download if home_wiki; also needed for TEST
if (Io_mgr.Instance.ExistsFil(css_wiki_fil)) return; // css file exists; nothing to generate
if (wiki.Html__css_installing()) return;

View File

@ -43,7 +43,7 @@ class Xof_repo_itm__fxt {
public Xof_repo_itm Make__repo(String plat_name, String root_dir_str, String wiki_domain) {
String key = "test_repo";
Io_url root_dir = Io_url_.new_dir_(root_dir_str);
Xoa_fsys_mgr fsys_mgr = new Xoa_fsys_mgr(plat_name, root_dir, root_dir.GenSubDir("wiki"), root_dir.GenSubDir("file"), root_dir.GenSubDir("css"), root_dir.GenSubDir("html"));
Xoa_fsys_mgr fsys_mgr = Xoa_fsys_mgr.New_by_plat(plat_name, root_dir);
Xof_repo_itm repo = new Xof_repo_itm(Bry_.new_u8(key), fsys_mgr, new Xof_rule_mgr(), Bry_.new_u8(wiki_domain));
repo.Root_str_(root_dir.Raw());
return repo;

View File

@ -34,20 +34,13 @@ public class Xoh_page_wtr_mgr implements Gfo_invk {
public Bry_fmtr Page_edit_fmtr() {return page_edit_fmtr;} private Bry_fmtr page_edit_fmtr = Bry_fmtr.new_("", Fmtr_keys);
public Bry_fmtr Page_html_fmtr() {return page_html_fmtr;} private Bry_fmtr page_html_fmtr = Bry_fmtr.new_("", Fmtr_keys);
public byte[] Edit_rename_div_bry(Xoa_ttl ttl) {return div_edit_rename_fmtr.Bld_bry_many(tmp_bfr, ttl.Full_db());}
public void Init_css_urls(Xoa_app app, Io_url css_common_url, Io_url css_wiki_url) {
public void Init_css_urls(Xoa_app app, String wiki_domain, Io_url css_common_url, Io_url css_wiki_url) {
this.css_common_bry = css_common_url.To_http_file_bry();
this.css_wiki_bry = css_wiki_url.To_http_file_bry();
// set css_night_url to /xowa/user/ root
Io_url css_night_url = css_wiki_url.OwnerDir().GenSubFil("xowa_night.css");
// if it doesn't exist, use bin root
if (!Io_mgr.Instance.ExistsFil(css_night_url)) {
css_night_url = app.Fsys_mgr().Bin_xowa_dir().GenSubFil_nest("html", "css", "nightmode", "xowa_night.css");
}
// make night_bry
this.css_night_bry = Bry_.new_u8("<link rel=\"stylesheet\" href=\"" + css_night_url.To_http_file_str() + "\" type=\"text/css\">");;
// xowa_night.css;
Io_url css_night_url = app.Fsys_mgr().Url_finder().Find_by_css_or(wiki_domain, "xowa_night.css", String_.Ary("bin", "any", "xowa", "html", "css", "nightmode"), true);
this.css_night_bry = Bry_.new_u8("<link rel=\"stylesheet\" href=\"" + css_night_url.To_http_file_str() + "\" type=\"text/css\">");
}
public void Init_(boolean v) {init = v;} private boolean init = true;
public void Init_by_wiki(Xow_wiki wiki) {

View File

@ -72,18 +72,9 @@ public class Xow_portal_mgr implements Gfo_invk {
div_logo_day = Init_fmtr(tmp_bfr, eval_mgr, div_logo_fmtr, main_page_href_bry, fsys_lnx_encoder.Encode_to_file_protocol(wiki_css_dir.GenSubFil_nest("logo.png")));
// night-mode logo; check if wiki-version exists, else use app-version
Io_url night_logo = null;
Io_url night_logo_wiki = wiki_css_dir.GenSubFil("logo_night.png");
if (Io_mgr.Instance.Exists(night_logo_wiki)) {
night_logo = night_logo_wiki;
}
else {
night_logo = wiki.Appe().Fsys_mgr().Bin_xowa_dir().GenSubFil_nest("html", "css", "nightmode", "logo.png");
}
Io_url night_logo = wiki.App().Fsys_mgr().Url_finder().Find_by_css_or(wiki.Domain_str(), "logo_night.png", String_.Ary("bin", "any", "xowa", "html", "css", "nightmode"), true);
div_logo_night = Init_fmtr(tmp_bfr, eval_mgr, div_logo_fmtr, main_page_href_bry, fsys_lnx_encoder.Encode_to_file_protocol(night_logo));
// div_logo_day = Init_fmtr(tmp_bfr, eval_mgr, div_logo_fmtr, main_page_href_bry, fsys_lnx_encoder.Encode_to_file_protocol(wiki.Appe().Usere().Fsys_mgr().Wiki_root_dir().GenSubFil_nest(wiki.Domain_str(), "html", "logo.png")));
// div_logo_night = Init_fmtr(tmp_bfr, eval_mgr, div_logo_fmtr, main_page_href_bry, fsys_lnx_encoder.Encode_to_file_protocol(wiki.Appe().Fsys_mgr().Bin_xowa_dir().GenSubFil_nest("html", "css", "nightmode", "logo.png")));
div_home_bry = Init_fmtr(tmp_bfr, eval_mgr, div_home_fmtr);
div_wikis_fmtr.Eval_mgr_(eval_mgr);
Xow_msg_mgr msg_mgr = wiki.Msg_mgr();

View File

@ -35,7 +35,7 @@ public class Xow_portal_mgr_tst {
fxt.Test_logo_frag(Bool_.N, "file:///mem/xowa/user/test_user/wiki/en.wikipedia.org/html/logo.png");
// night-mode: app
fxt.Test_logo_frag(Bool_.Y, "file:///mem/xowa/bin/any/xowa/html/css/nightmode/logo.png");
fxt.Test_logo_frag(Bool_.Y, "file:///mem/xowa/bin/any/xowa/html/css/nightmode/logo_night.png");
// night-mode: wiki
Io_mgr.Instance.SaveFilStr("mem/xowa/user/test_user/wiki/en.wikipedia.org/html/logo_night.png", "");

View File

@ -16,7 +16,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
package gplx.xowa.users; import gplx.*; import gplx.xowa.*;
import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.*;
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;
private Io_url wiki_root_dir; private Io_url cur_root;
public Xou_fsys_mgr(Io_url user_dir) {
this.cur_root = user_dir;
app_root_dir = cur_root.GenSubDir("app");
@ -28,6 +28,7 @@ public class Xou_fsys_mgr implements Gfo_invk {
public Io_url Root_dir() {return cur_root;}
public Io_url Wiki_root_dir() {return wiki_root_dir;}
public Io_url Wiki_html_dir(String wiki) {return wiki_root_dir.GenSubDir_nest(wiki, "html");}
public Io_url App_root_dir() {return app_root_dir;} private Io_url app_root_dir;
public Io_url App_data_history_fil() {return app_data_history_fil;} private Io_url app_data_history_fil;
public Io_url App_temp_dir() {return app_temp_dir;} private Io_url app_temp_dir;
public Io_url App_temp_html_dir() {return app_temp_html_dir;} private Io_url app_temp_html_dir;

View File

@ -20,6 +20,7 @@ import gplx.xowa.files.caches.*;
public interface Xou_user {
String Key();
int Gender();
Xou_fsys_mgr Fsys_mgr();
Xou_db_mgr User_db_mgr();
Xou_history_mgr History_mgr();
Xow_wiki Wikii();

View File

@ -22,7 +22,7 @@ import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.
import gplx.xowa.files.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*;
import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.addons.*;
import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.utls.*; import gplx.xowa.htmls.core.*; import gplx.xowa.htmls.core.hzips.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.htmls.hrefs.*;
import gplx.xowa.wikis.nss.*;
import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.fsys.*;
import gplx.xowa.parsers.*;
import gplx.xowa.apps.urls.*;
import gplx.fsdb.*; import gplx.fsdb.meta.*;
@ -33,16 +33,21 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, Gfo_invk {
private boolean init_needed = true;
public Xowv_wiki(Xoav_app app, byte[] domain_bry, Io_url wiki_root_dir) {
this.app = app;
this.domain_bry = domain_bry; this.domain_str = String_.new_u8(domain_bry);
// domain vars
this.domain_bry = domain_bry;
this.domain_str = String_.new_u8(domain_bry);
this.domain_itm = Xow_domain_itm_.parse(domain_bry);
this.domain_tid = domain_itm.Domain_type_id();
this.domain_abrv = Xow_abrv_wm_.To_abrv(Xow_domain_itm_.parse(domain_bry));
this.domain_abrv = Xow_abrv_wm_.To_abrv(domain_itm);
this.fsys_mgr = new Xow_fsys_mgr(wiki_root_dir, app.Fsys_mgr().File_dir().GenSubDir(domain_str));
this.ns_mgr = Xow_ns_mgr_.default_(app.Utl_case_mgr());
this.lang = app.Lang_mgr().Get_by_or_en(domain_itm.Lang_actl_key()); // NOTE: must not be null, or causes null ref exception on redlinks in drd; DATE:2016-06-28
this.msg_mgr = new Xow_msg_mgr(this, lang);
this.html__hdump_mgr = new Xow_hdump_mgr(this);
this.special_mgr = new Xosp_special_mgr(this);
this.fsys_mgr = new Xow_fsys_mgr(wiki_root_dir, app.Fsys_mgr().File_dir().GenSubDir(domain_str));
this.fsdb_mgr = new Xof_fsdb_mgr__sql();
this.url__parser = new Xow_url_parser(this);
this.xwiki_mgr = new Xow_xwiki_mgr(this);

View File

@ -13,10 +13,12 @@ The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.wikis; import gplx.*; import gplx.xowa.*;
public class Xow_fsys_mgr {
package gplx.xowa.wikis.fsys; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*;
import gplx.xowa.apps.fsys.*;
import gplx.xowa.users.*;
public class Xow_fsys_mgr {
public Xow_fsys_mgr(Io_url root_dir, Io_url file_dir) {
this.root_dir = root_dir; this.file_dir = file_dir; this.tmp_dir = root_dir.GenSubDir("tmp");
this.root_dir = root_dir; this.file_dir = file_dir; this.tmp_dir = root_dir.GenSubDir("tmp");
}
public Io_url Root_dir() {return root_dir;} private final Io_url root_dir;
public Io_url File_dir() {return file_dir;} private final Io_url file_dir;