1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

Pagebanner: Show pageBanner for Wikivoyage namespace [#748]

This commit is contained in:
gnosygnu 2020-08-17 07:46:44 -04:00
parent 619d2f9844
commit 3c9fd50ddc

View File

@ -1,6 +1,6 @@
/* /*
XOWA: the XOWA Offline Wiki Application 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, 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. 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 GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.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.*; package gplx.xowa.xtns.pagebanners;
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.Bry_;
import gplx.xowa.htmls.core.htmls.*; import gplx.Bry_bfr;
public class Pgbnr_xtn_mgr extends Xox_mgr_base implements Bfr_arg { import gplx.Int_ary_;
@Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("pagebanner"); import gplx.Io_mgr;
@Override public Xox_mgr Xtn_clone_new() {return new Pgbnr_xtn_mgr();} import gplx.core.brys.Bfr_arg;
public Pgbnr_cfg Cfg() {return cfg;} private Pgbnr_cfg cfg; import gplx.langs.mustaches.Mustache_tkn_itm;
public Mustache_tkn_itm Template_root() {return template_root;} private Mustache_tkn_itm template_root; import gplx.langs.mustaches.Mustache_tkn_parser;
@Override public void Xtn_init_by_app(Xoae_app app) {} import gplx.xowa.Xoae_app;
@Override public void Xtn_init_by_wiki(Xowe_wiki wiki) { import gplx.xowa.Xoae_page;
// load config; TODO_OLD: load by file import gplx.xowa.Xowe_wiki;
boolean enabled = false, enable_heading_override = true, enable_default_banner = false; import gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx;
int[] ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user); import gplx.xowa.langs.Xol_lang_stub_;
int[] standard_sizes = new int[] {640, 1280, 2560}; import gplx.xowa.parsers.Xop_ctx;
int dflt_img_wdata_prop = 948; byte[] dflt_img_title = Bry_.new_a7("Pagebanner_default.jpg"); // www.wikidata.org/wiki/Property:P948 import gplx.xowa.wikis.domains.Xow_domain_tid_;
switch (wiki.Domain_tid()) { import gplx.xowa.wikis.nss.Xow_ns_;
case Xow_domain_tid_.Tid__home: import gplx.xowa.xtns.Xox_mgr;
enabled = true; import gplx.xowa.xtns.Xox_mgr_base;
ns_ary = Int_ary_.New(Xow_ns_.Tid__main);
break; public class Pgbnr_xtn_mgr extends Xox_mgr_base implements Bfr_arg {
case Xow_domain_tid_.Tid__wikivoyage: @Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("pagebanner");
switch (wiki.Lang().Lang_id()) { @Override public Xox_mgr Xtn_clone_new() {return new Pgbnr_xtn_mgr();}
case Xol_lang_stub_.Id_en: public Pgbnr_cfg Cfg() {return cfg;} private Pgbnr_cfg cfg;
case Xol_lang_stub_.Id_fr: public Mustache_tkn_itm Template_root() {return template_root;} private Mustache_tkn_itm template_root;
case Xol_lang_stub_.Id_zh: @Override public void Xtn_init_by_app(Xoae_app app) {}
enabled = true; @Override public void Xtn_init_by_wiki(Xowe_wiki wiki) {
break; // load config; TODO_OLD: load by file
case Xol_lang_stub_.Id_ru: boolean enabled = false, enable_heading_override = true, enable_default_banner = false;
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); 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
enabled = true; int[] standard_sizes = new int[] {640, 1280, 2560};
break; int dflt_img_wdata_prop = 948; byte[] dflt_img_title = Bry_.new_a7("Pagebanner_default.jpg"); // www.wikidata.org/wiki/Property:P948
case Xol_lang_stub_.Id_uk: switch (wiki.Domain_tid()) {
ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user, Xow_ns_.Tid__project); case Xow_domain_tid_.Tid__home:
enabled = true; ns_ary = Int_ary_.New(Xow_ns_.Tid__main);
break; enabled = true;
} break;
break; case Xow_domain_tid_.Tid__wikivoyage:
case Xow_domain_tid_.Tid__wikipedia: // 2020-08-16|#748:include project for en.v; PAGE:en.v:Wikivoyage:Past_events/World_Cup_2010
switch (wiki.Lang().Lang_id()) { ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user, Xow_ns_.Tid__main, Xow_ns_.Tid__project);
case Xol_lang_stub_.Id_ca: switch (wiki.Lang().Lang_id()) {
// enabled = enable_default_banner = true; case Xol_lang_stub_.Id_en:
ns_ary = Int_ary_.New(102, Xow_ns_.Tid__user); case Xol_lang_stub_.Id_fr:
break; case Xol_lang_stub_.Id_zh:
case Xol_lang_stub_.Id_en: enabled = true;
// enabled = enable_default_banner = true; break;
enable_heading_override = false; case Xol_lang_stub_.Id_ru:
break; 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; break;
} case Xol_lang_stub_.Id_uk:
cfg = new Pgbnr_cfg(enabled, enable_heading_override, enable_default_banner, ns_ary, dflt_img_wdata_prop, dflt_img_title, standard_sizes); ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user, Xow_ns_.Tid__project);
enabled = true;
if (!enabled) return; break;
// 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); break;
Mustache_tkn_parser parser = new Mustache_tkn_parser(); case Xow_domain_tid_.Tid__wikipedia:
template_root = parser.Parse(template_data, 0, template_data.length); switch (wiki.Lang().Lang_id()) {
} case Xol_lang_stub_.Id_ca:
public Bfr_arg Write_html(Xoae_page wpg, Xop_ctx pctx, Xoh_wtr_ctx hctx) { // enabled = enable_default_banner = true;
this.wpg = wpg; this.pctx = pctx; this.hctx = hctx; ns_ary = Int_ary_.New(102, Xow_ns_.Tid__user);
return this; break;
} private Xoae_page wpg; private Xop_ctx pctx; private Xoh_wtr_ctx hctx; case Xol_lang_stub_.Id_en:
public void Bfr_arg__add(Bry_bfr bfr) { // enabled = enable_default_banner = true;
Pgbnr_itm itm = wpg.Html_data().Xtn_pgbnr(); if (itm == null) return; enable_heading_override = false;
Pgbnr_func.Add_banner(bfr, wpg, pctx, hctx, itm); break;
} }
break;
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 cfg = new Pgbnr_cfg(enabled, enable_heading_override, enable_default_banner, ns_ary, dflt_img_wdata_prop, dflt_img_title, standard_sizes);
( "<div class='ext-wpb-pagebanner pre-content'>"
, " <div class=\"{{#isPanorama}}wpb-banner-image-panorama {{/isPanorama}}wpb-topbanner{{extraClass}}\">" if (!enabled) return;
, " {{#isHeadingOverrideEnabled}}<h1 class='wpb-name'>{{title}}</h1>{{/isHeadingOverrideEnabled}}" // load template file;
, " <a href='{{bannerfile}}' class='image' title='{{tooltip}}' xowa_title='{{file_ttl}}'><img{{{img_id_atr}}}{{{img_xottl}}}{{{img_xoimg}}} src='{{banner}}' width='0' height='0' class='wpb-banner-image {{originx}}' alt='' srcset='{{srcset}}' data-pos-x='{{data-pos-x}}' data-pos-y='{{data-pos-y}}' style='max-width:{{maxWidth}}px'></a>" byte[] template_data = Io_mgr.Instance.LoadFilBryOr(wiki.Appe().Fsys_mgr().Bin_any_dir().GenSubDir_nest("xowa", "xtns", "WikidataPageBanner", "templates", "banner.mustache"), Template_dflt);
, " {{#hasIcons}}" Mustache_tkn_parser parser = new Mustache_tkn_parser();
, " <div class='wpb-iconbox'>" template_root = parser.Parse(template_data, 0, template_data.length);
, " {{#icons}}" }
, " <a href='{{url}}'>{{{html}}}</a>" public Bfr_arg Write_html(Xoae_page wpg, Xop_ctx pctx, Xoh_wtr_ctx hctx) {
, " {{/icons}}" this.wpg = wpg; this.pctx = pctx; this.hctx = hctx;
, " </div>" return this;
, " {{/hasIcons}}" } private Xoae_page wpg; private Xop_ctx pctx; private Xoh_wtr_ctx hctx;
, " </div>" public void Bfr_arg__add(Bry_bfr bfr) {
, " <div class='wpb-topbanner-toc{{#bottomtoc}} wpb-bottomtoc{{/bottomtoc}}'><div class='wpb-banner-toc'>{{{toc}}}</div></div>" Pgbnr_itm itm = wpg.Html_data().Xtn_pgbnr(); if (itm == null) return;
, "</div>" 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
( "<div class='ext-wpb-pagebanner pre-content'>"
, " <div class=\"{{#isPanorama}}wpb-banner-image-panorama {{/isPanorama}}wpb-topbanner{{extraClass}}\">"
, " {{#isHeadingOverrideEnabled}}<h1 class='wpb-name'>{{title}}</h1>{{/isHeadingOverrideEnabled}}"
, " <a href='{{bannerfile}}' class='image' title='{{tooltip}}' xowa_title='{{file_ttl}}'><img{{{img_id_atr}}}{{{img_xottl}}}{{{img_xoimg}}} src='{{banner}}' width='0' height='0' class='wpb-banner-image {{originx}}' alt='' srcset='{{srcset}}' data-pos-x='{{data-pos-x}}' data-pos-y='{{data-pos-y}}' style='max-width:{{maxWidth}}px'></a>"
, " {{#hasIcons}}"
, " <div class='wpb-iconbox'>"
, " {{#icons}}"
, " <a href='{{url}}'>{{{html}}}</a>"
, " {{/icons}}"
, " </div>"
, " {{/hasIcons}}"
, " </div>"
, " <div class='wpb-topbanner-toc{{#bottomtoc}} wpb-bottomtoc{{/bottomtoc}}'><div class='wpb-banner-toc'>{{{toc}}}</div></div>"
, "</div>"
);
}