diff --git a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java index 0bb8fc117..8a26cf572 100644 --- a/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java @@ -1,6 +1,6 @@ /* XOWA: the XOWA Offline Wiki Application -Copyright (C) 2012-2017 gnosygnu@gmail.com +Copyright (C) 2012-2020 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. @@ -13,89 +13,107 @@ 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.xtns.pagebanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.brys.*; import gplx.langs.mustaches.*; import gplx.xowa.parsers.*; -import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.nss.*; -import gplx.xowa.htmls.core.htmls.*; -public class Pgbnr_xtn_mgr extends Xox_mgr_base implements Bfr_arg { - @Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("pagebanner"); - @Override public Xox_mgr Xtn_clone_new() {return new Pgbnr_xtn_mgr();} - public Pgbnr_cfg Cfg() {return cfg;} private Pgbnr_cfg cfg; - public Mustache_tkn_itm Template_root() {return template_root;} private Mustache_tkn_itm template_root; - @Override public void Xtn_init_by_app(Xoae_app app) {} - @Override public void Xtn_init_by_wiki(Xowe_wiki wiki) { - // load config; TODO_OLD: load by file - boolean enabled = false, enable_heading_override = true, enable_default_banner = false; - int[] ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user); - int[] standard_sizes = new int[] {640, 1280, 2560}; - int dflt_img_wdata_prop = 948; byte[] dflt_img_title = Bry_.new_a7("Pagebanner_default.jpg"); // www.wikidata.org/wiki/Property:P948 - switch (wiki.Domain_tid()) { - case Xow_domain_tid_.Tid__home: - enabled = true; - ns_ary = Int_ary_.New(Xow_ns_.Tid__main); - break; - case Xow_domain_tid_.Tid__wikivoyage: - switch (wiki.Lang().Lang_id()) { - case Xol_lang_stub_.Id_en: - case Xol_lang_stub_.Id_fr: - case Xol_lang_stub_.Id_zh: - enabled = true; - break; - case Xol_lang_stub_.Id_ru: - ns_ary = Int_ary_.New(0, 1, 10, 11, 12, 13, 14, 15, 2, 2300, 2301, 2302, 2303, 2600, 3, 4, 5, 6, 7, 8, 828, 829, 9); - enabled = true; - break; - case Xol_lang_stub_.Id_uk: - ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user, Xow_ns_.Tid__project); - enabled = true; - break; - } - break; - case Xow_domain_tid_.Tid__wikipedia: - switch (wiki.Lang().Lang_id()) { - case Xol_lang_stub_.Id_ca: - // enabled = enable_default_banner = true; - ns_ary = Int_ary_.New(102, Xow_ns_.Tid__user); - break; - case Xol_lang_stub_.Id_en: - // enabled = enable_default_banner = true; - enable_heading_override = false; - break; - } - break; - } - cfg = new Pgbnr_cfg(enabled, enable_heading_override, enable_default_banner, ns_ary, dflt_img_wdata_prop, dflt_img_title, standard_sizes); - - if (!enabled) return; - // load template file; - byte[] template_data = Io_mgr.Instance.LoadFilBryOr(wiki.Appe().Fsys_mgr().Bin_any_dir().GenSubDir_nest("xowa", "xtns", "WikidataPageBanner", "templates", "banner.mustache"), Template_dflt); - Mustache_tkn_parser parser = new Mustache_tkn_parser(); - template_root = parser.Parse(template_data, 0, template_data.length); - } - public Bfr_arg Write_html(Xoae_page wpg, Xop_ctx pctx, Xoh_wtr_ctx hctx) { - this.wpg = wpg; this.pctx = pctx; this.hctx = hctx; - return this; - } private Xoae_page wpg; private Xop_ctx pctx; private Xoh_wtr_ctx hctx; - public void Bfr_arg__add(Bry_bfr bfr) { - Pgbnr_itm itm = wpg.Html_data().Xtn_pgbnr(); if (itm == null) return; - Pgbnr_func.Add_banner(bfr, wpg, pctx, hctx, itm); - } - - public static final byte[] Bry__cls__wpb_banner_image = Bry_.new_a7("wpb-banner-image"); - private static final byte[] Template_dflt = Bry_.New_u8_nl_apos - ( "
" - , "
" - , " {{#isHeadingOverrideEnabled}}

{{title}}

{{/isHeadingOverrideEnabled}}" - , " " - , " {{#hasIcons}}" - , "
" - , " {{#icons}}" - , " {{{html}}}" - , " {{/icons}}" - , "
" - , " {{/hasIcons}}" - , "
" - , "
{{{toc}}}
" - , "
" - ); -} +package gplx.xowa.xtns.pagebanners; + +import gplx.Bry_; +import gplx.Bry_bfr; +import gplx.Int_ary_; +import gplx.Io_mgr; +import gplx.core.brys.Bfr_arg; +import gplx.langs.mustaches.Mustache_tkn_itm; +import gplx.langs.mustaches.Mustache_tkn_parser; +import gplx.xowa.Xoae_app; +import gplx.xowa.Xoae_page; +import gplx.xowa.Xowe_wiki; +import gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx; +import gplx.xowa.langs.Xol_lang_stub_; +import gplx.xowa.parsers.Xop_ctx; +import gplx.xowa.wikis.domains.Xow_domain_tid_; +import gplx.xowa.wikis.nss.Xow_ns_; +import gplx.xowa.xtns.Xox_mgr; +import gplx.xowa.xtns.Xox_mgr_base; + +public class Pgbnr_xtn_mgr extends Xox_mgr_base implements Bfr_arg { + @Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("pagebanner"); + @Override public Xox_mgr Xtn_clone_new() {return new Pgbnr_xtn_mgr();} + public Pgbnr_cfg Cfg() {return cfg;} private Pgbnr_cfg cfg; + public Mustache_tkn_itm Template_root() {return template_root;} private Mustache_tkn_itm template_root; + @Override public void Xtn_init_by_app(Xoae_app app) {} + @Override public void Xtn_init_by_wiki(Xowe_wiki wiki) { + // load config; TODO_OLD: load by file + boolean enabled = false, enable_heading_override = true, enable_default_banner = false; + int[] ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user, Xow_ns_.Tid__main); // default list; overriden by home/ wikivoyage below + int[] standard_sizes = new int[] {640, 1280, 2560}; + int dflt_img_wdata_prop = 948; byte[] dflt_img_title = Bry_.new_a7("Pagebanner_default.jpg"); // www.wikidata.org/wiki/Property:P948 + switch (wiki.Domain_tid()) { + case Xow_domain_tid_.Tid__home: + ns_ary = Int_ary_.New(Xow_ns_.Tid__main); + enabled = true; + break; + case Xow_domain_tid_.Tid__wikivoyage: + // 2020-08-16|#748:include project for en.v; PAGE:en.v:Wikivoyage:Past_events/World_Cup_2010 + ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user, Xow_ns_.Tid__main, Xow_ns_.Tid__project); + switch (wiki.Lang().Lang_id()) { + case Xol_lang_stub_.Id_en: + case Xol_lang_stub_.Id_fr: + case Xol_lang_stub_.Id_zh: + enabled = true; + break; + case Xol_lang_stub_.Id_ru: + ns_ary = Int_ary_.New(0, 1, 10, 11, 12, 13, 14, 15, 2, 2300, 2301, 2302, 2303, 2600, 3, 4, 5, 6, 7, 8, 828, 829, 9); + enabled = true; + break; + case Xol_lang_stub_.Id_uk: + ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user, Xow_ns_.Tid__project); + enabled = true; + break; + } + break; + case Xow_domain_tid_.Tid__wikipedia: + switch (wiki.Lang().Lang_id()) { + case Xol_lang_stub_.Id_ca: + // enabled = enable_default_banner = true; + ns_ary = Int_ary_.New(102, Xow_ns_.Tid__user); + break; + case Xol_lang_stub_.Id_en: + // enabled = enable_default_banner = true; + enable_heading_override = false; + break; + } + break; + } + cfg = new Pgbnr_cfg(enabled, enable_heading_override, enable_default_banner, ns_ary, dflt_img_wdata_prop, dflt_img_title, standard_sizes); + + if (!enabled) return; + // load template file; + byte[] template_data = Io_mgr.Instance.LoadFilBryOr(wiki.Appe().Fsys_mgr().Bin_any_dir().GenSubDir_nest("xowa", "xtns", "WikidataPageBanner", "templates", "banner.mustache"), Template_dflt); + Mustache_tkn_parser parser = new Mustache_tkn_parser(); + template_root = parser.Parse(template_data, 0, template_data.length); + } + public Bfr_arg Write_html(Xoae_page wpg, Xop_ctx pctx, Xoh_wtr_ctx hctx) { + this.wpg = wpg; this.pctx = pctx; this.hctx = hctx; + return this; + } private Xoae_page wpg; private Xop_ctx pctx; private Xoh_wtr_ctx hctx; + public void Bfr_arg__add(Bry_bfr bfr) { + Pgbnr_itm itm = wpg.Html_data().Xtn_pgbnr(); if (itm == null) return; + Pgbnr_func.Add_banner(bfr, wpg, pctx, hctx, itm); + } + + public static final byte[] Bry__cls__wpb_banner_image = Bry_.new_a7("wpb-banner-image"); + private static final byte[] Template_dflt = Bry_.New_u8_nl_apos + ( "
" + , "
" + , " {{#isHeadingOverrideEnabled}}

{{title}}

{{/isHeadingOverrideEnabled}}" + , " " + , " {{#hasIcons}}" + , "
" + , " {{#icons}}" + , " {{{html}}}" + , " {{/icons}}" + , "
" + , " {{/hasIcons}}" + , "
" + , "
{{{toc}}}
" + , "
" + ); +}