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

Night-mode: Allow custom night-mode logos per wiki

This commit is contained in:
gnosygnu 2017-06-25 09:19:29 -04:00
parent 31bc573a29
commit 67fc90d43f
3 changed files with 46 additions and 7 deletions

View File

@ -30,8 +30,8 @@ public class Xoa_app_ {
}
}
public static final String Name = "xowa";
public static final int Version_id = 528;
public static final String Version = "4.5.6.1706";
public static final int Version_id = 529;
public static final String Version = "4.5.7.1706";
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;

View File

@ -66,8 +66,24 @@ public class Xow_portal_mgr implements Gfo_invk {
byte[] wiki_user_name = wiki.User().Name();
div_personal_bry = Init_fmtr(tmp_bfr, eval_mgr, div_personal_fmtr, Bry_.Add(Xoh_href_.Bry__wiki, wiki.Ns_mgr().Ids_get_or_null(Xow_ns_.Tid__user).Name_db_w_colon(), wiki_user_name), wiki_user_name, Ns_cls_by_id(wiki.Ns_mgr(), Xow_ns_.Tid__user), Bry_.Add(Xoh_href_.Bry__wiki, wiki.Ns_mgr().Ids_get_or_null(Xow_ns_.Tid__user_talk).Name_db_w_colon(), wiki_user_name), Ns_cls_by_id(wiki.Ns_mgr(), Xow_ns_.Tid__user_talk));
byte[] main_page_href_bry = tmp_bfr.Add(Xoh_href_.Bry__site).Add(wiki.Domain_bry()).Add(Xoh_href_.Bry__wiki).To_bry_and_clear(); // NOTE: build /site/en.wikipedia.org/wiki/ href; no Main_Page, as that will be inserted by Xoh_href_parser
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")));
// logo
Io_url wiki_css_dir = wiki.Appe().Usere().Fsys_mgr().Wiki_root_dir().GenSubDir_nest(wiki.Domain_str(), "html");
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");
}
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();
@ -143,6 +159,7 @@ public class Xow_portal_mgr implements Gfo_invk {
, div_sync_fmtr = Bry_fmtr.new_("", "page_url")
, div_wikis_fmtr = Bry_fmtr.new_("", "toggle_btn", "toggle_hdr")
;
public Bry_fmtr Div_logo_fmtr() {return div_logo_fmtr;} // TEST:
private byte[] Reverse_li(byte[] bry) {
return lang_is_rtl ? Xoh_rtl_utl.Reverse_li(bry) : bry;
}

View File

@ -14,7 +14,7 @@ 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.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*;
import org.junit.*;
import org.junit.*; import gplx.core.tests.*;
public class Xow_portal_mgr_tst {
@Before public void init() {fxt.Init();} private Xowh_portal_mgr_fxt fxt = new Xowh_portal_mgr_fxt();
@Test public void Div_ns_bry() {
@ -27,15 +27,32 @@ public class Xow_portal_mgr_tst {
@Test public void Missing_ns_cls() {
fxt.Test_missing_ns_cls("xowa_display_none");
}
@Test public void Logo() {
fxt.Portal_mgr().Div_logo_fmtr().Fmt_("~{portal_logo_url}");
// day-mode
fxt.Portal_mgr().Init();
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");
// night-mode: wiki
Io_mgr.Instance.SaveFilStr("mem/xowa/user/test_user/wiki/en.wikipedia.org/html/logo_night.png", "");
fxt.Portal_mgr().Init();
fxt.Test_logo_frag(Bool_.Y, "file:///mem/xowa/user/test_user/wiki/en.wikipedia.org/html/logo_night.png");
}
}
class Xowh_portal_mgr_fxt {
private Xow_portal_mgr portal_mgr;
public void Init() {
if (app == null) {
app = Xoa_app_fxt.Make__app__edit();
wiki = Xoa_app_fxt.Make__wiki__edit(app);
wiki.Ns_mgr().Ns_main().Exists_(true); // needed for ns
wiki.Html_mgr().Portal_mgr().Init_assert(); // needed for personal
wiki.Html_mgr().Portal_mgr().Missing_ns_cls_(Bry_.new_a7("xowa_display_none"));
this.portal_mgr = wiki.Html_mgr().Portal_mgr();
portal_mgr.Init_assert(); // needed for personal
portal_mgr.Missing_ns_cls_(Bry_.new_a7("xowa_display_none"));
}
} private Xoae_app app; Xowe_wiki wiki;
public void Test_div_ns_bry(String ttl, String expd) {
@ -47,4 +64,9 @@ class Xowh_portal_mgr_fxt {
public void Test_missing_ns_cls(String expd) {
Tfds.Eq(expd, String_.new_a7(wiki.Html_mgr().Portal_mgr().Missing_ns_cls()));
}
public Xow_portal_mgr Portal_mgr() {return wiki.Html_mgr().Portal_mgr();}
public void Test_logo_frag(boolean nightmode, String expd) {
String actl = String_.new_a7(wiki.Html_mgr().Portal_mgr().Div_logo_bry(nightmode));
Gftest.Eq__str(expd, actl);
}
}