mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Hdump: Serialize / deserialize top-icon [#721]
This commit is contained in:
@@ -1,20 +1,32 @@
|
||||
/*
|
||||
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.addons; import gplx.*; import gplx.xowa.*;
|
||||
import gplx.xowa.addons.wikis.searchs.gui.urlbars.*; import gplx.xowa.addons.wikis.searchs.gui.htmlbars.*; import gplx.xowa.addons.wikis.searchs.specials.*;
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
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.
|
||||
|
||||
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.addons;
|
||||
|
||||
import gplx.List_adp;
|
||||
import gplx.List_adp_;
|
||||
import gplx.Ordered_hash;
|
||||
import gplx.Ordered_hash_;
|
||||
import gplx.Type_;
|
||||
import gplx.xowa.Xoa_app;
|
||||
import gplx.xowa.Xoae_app;
|
||||
import gplx.xowa.Xow_wiki;
|
||||
import gplx.xowa.addons.wikis.searchs.gui.htmlbars.Srch_htmlbar_mgr;
|
||||
import gplx.xowa.addons.wikis.searchs.gui.urlbars.Srch_urlbar_mgr;
|
||||
import gplx.xowa.addons.wikis.searchs.specials.Srch_special_cfg;
|
||||
|
||||
public class Xoax_addon_mgr {
|
||||
private final Ordered_hash hash = Ordered_hash_.New(); // LOCK: must synchronized else two search tabs will fail on startup
|
||||
public Xoax_addon_itm Itms__get_or_null(String key) {synchronized (hash) {return (Xoax_addon_itm)hash.Get_by(key);}}
|
||||
@@ -63,6 +75,7 @@ public class Xoax_addon_mgr {
|
||||
, new gplx.xowa.xtns.hieros .Hiero_addon()
|
||||
, new gplx.xowa.xtns.imaps .Imap_addon()
|
||||
, new gplx.xowa.xtns.graphs .Graph_addon()
|
||||
, new gplx.xowa.xtns.indicators .Indicator_addon()
|
||||
|
||||
// specials
|
||||
, new gplx.xowa.addons.wikis.registrys .Wiki_registry_addon()
|
||||
|
||||
@@ -1,24 +1,44 @@
|
||||
/*
|
||||
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.htmls; import gplx.*; import gplx.xowa.*;
|
||||
import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.wikis.pages.lnkis.*; import gplx.xowa.wikis.pages.redirects.*;
|
||||
import gplx.xowa.files.*;
|
||||
import gplx.xowa.langs.*;
|
||||
import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.sections.*; import gplx.xowa.addons.htmls.tocs.*;
|
||||
import gplx.xowa.wikis.pages.dbs.*; import gplx.xowa.wikis.pages.hdumps.*; import gplx.xowa.wikis.pages.htmls.*; import gplx.xowa.wikis.pages.wtxts.*;
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
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.
|
||||
|
||||
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.htmls;
|
||||
|
||||
import gplx.Bry_;
|
||||
import gplx.Bry_bfr;
|
||||
import gplx.Guid_adp;
|
||||
import gplx.Guid_adp_;
|
||||
import gplx.Hash_adp;
|
||||
import gplx.Hash_adp_;
|
||||
import gplx.xowa.Xoa_page;
|
||||
import gplx.xowa.Xoa_page_;
|
||||
import gplx.xowa.Xoa_ttl;
|
||||
import gplx.xowa.Xoa_url;
|
||||
import gplx.xowa.Xoae_page;
|
||||
import gplx.xowa.Xow_wiki;
|
||||
import gplx.xowa.files.Xof_exec_tid;
|
||||
import gplx.xowa.htmls.heads.Xoh_head_mgr;
|
||||
import gplx.xowa.htmls.sections.Xoh_section_mgr;
|
||||
import gplx.xowa.langs.Xol_lang_itm;
|
||||
import gplx.xowa.wikis.pages.Xoa_page__commons_mgr;
|
||||
import gplx.xowa.wikis.pages.Xopg_module_mgr;
|
||||
import gplx.xowa.wikis.pages.dbs.Xopg_db_data;
|
||||
import gplx.xowa.wikis.pages.hdumps.Xopg_hdump_data;
|
||||
import gplx.xowa.wikis.pages.htmls.Xopg_html_data;
|
||||
import gplx.xowa.wikis.pages.redirects.Xopg_redirect_mgr;
|
||||
import gplx.xowa.wikis.pages.wtxts.Xopg_wtxt_data;
|
||||
|
||||
public class Xoh_page implements Xoa_page {
|
||||
// core
|
||||
public Xow_wiki Wiki() {return wiki;} private Xow_wiki wiki;
|
||||
@@ -49,6 +69,7 @@ public class Xoh_page implements Xoa_page {
|
||||
public Xoh_section_mgr Section_mgr() {return section_mgr;} private final Xoh_section_mgr section_mgr = new Xoh_section_mgr();
|
||||
public Xoh_img_mgr Img_mgr() {return img_mgr;} private Xoh_img_mgr img_mgr = new Xoh_img_mgr();
|
||||
public Xopg_module_mgr Head_mgr() {return head_mgr;} private Xopg_module_mgr head_mgr = new Xopg_module_mgr();
|
||||
public Hash_adp Props() {return props;} private final Hash_adp props = Hash_adp_.New();
|
||||
|
||||
// util
|
||||
public Xoa_page__commons_mgr Commons_mgr() {return commons_mgr;} private final Xoa_page__commons_mgr commons_mgr = new Xoa_page__commons_mgr();
|
||||
@@ -95,6 +116,7 @@ public class Xoh_page implements Xoa_page {
|
||||
display_ttl = content_sub = sidebar_div = Bry_.Empty;
|
||||
head_mgr.Clear(); commons_mgr.Clear();
|
||||
section_mgr.Clear(); img_mgr.Clear();
|
||||
props.Clear();
|
||||
}
|
||||
public static Xoh_page New_missing() {
|
||||
Xoh_page rv = new Xoh_page();
|
||||
|
||||
@@ -33,6 +33,8 @@ import gplx.xowa.apps.gfs.Gfs_php_converter;
|
||||
import gplx.xowa.htmls.core.Xow_hdump_mode;
|
||||
import gplx.xowa.htmls.core.htmls.Xoh_html_wtr_escaper;
|
||||
import gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx;
|
||||
import gplx.xowa.htmls.hxtns.blobs.Hxtn_blob_tbl;
|
||||
import gplx.xowa.htmls.hxtns.pages.Hxtn_page_mgr;
|
||||
import gplx.xowa.htmls.portal.Xoh_page_body_cls;
|
||||
import gplx.xowa.htmls.portal.Xow_portal_mgr;
|
||||
import gplx.xowa.langs.vnts.Xol_vnt_mgr;
|
||||
@@ -166,6 +168,12 @@ public class Xoh_page_wtr_wkr {
|
||||
if (wpg.Html_data().Xtn_pgbnr() != null) {
|
||||
ctx.Wiki().Xtn_mgr().Xtn_pgbnr().Write_html(wpg, ctx, hctx).Bfr_arg__add(bfr); // if pgbnr exists, write to top of html
|
||||
}
|
||||
|
||||
int page_id = wpg.Db().Page().Id();
|
||||
Hxtn_page_mgr html_data_mgr = wpg.Wikie().Hxtn_mgr();
|
||||
|
||||
wpg.Html_data().Indicators().HxtnSave(wpg.Wikie(), html_data_mgr, wpg, page_id);
|
||||
|
||||
this.Write_body(bfr, ctx, hctx, wpg);
|
||||
}
|
||||
public void Write_body(Bry_bfr bfr, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoae_page page) {
|
||||
|
||||
@@ -42,6 +42,7 @@ import gplx.xowa.wikis.pages.Xopg_module_mgr;
|
||||
import gplx.xowa.wikis.pages.htmls.Xopg_html_data;
|
||||
import gplx.xowa.wikis.pages.lnkis.Xopg_lnki_list;
|
||||
import gplx.xowa.wikis.pages.skins.Xopg_xtn_skin_itm_stub;
|
||||
import gplx.xowa.xtns.indicators.Indicator_hxtn_page_wkr;
|
||||
|
||||
public class Xow_hdump_mgr__load implements Gfo_invk {
|
||||
private final Xow_wiki wiki; private final Xoh_hzip_mgr hzip_mgr; private final Io_stream_zip_mgr zip_mgr;
|
||||
@@ -123,10 +124,12 @@ public class Xow_hdump_mgr__load implements Gfo_invk {
|
||||
}
|
||||
public void Fill_page(Xoae_page wpg, Xoh_page hpg) {
|
||||
Xopg_html_data html_data = wpg.Html_data();
|
||||
|
||||
html_data.Display_ttl_(tmp_hpg.Display_ttl());
|
||||
html_data.Content_sub_(tmp_hpg.Content_sub());
|
||||
html_data.Xtn_skin_mgr().Add(new Xopg_xtn_skin_itm_stub(tmp_hpg.Sidebar_div()));
|
||||
html_data.Custom_head_tags().Add(hpg.Html_data().Custom_head_tags().To_ary());
|
||||
html_data.Indicators().Deserialise(wiki, hpg, (byte[])tmp_hpg.Props().Get_by(Indicator_hxtn_page_wkr.KEY));
|
||||
|
||||
Xoh_head_mgr wpg_head = html_data.Head_mgr();
|
||||
Xopg_module_mgr hpg_head = hpg.Head_mgr();
|
||||
|
||||
@@ -1,23 +1,36 @@
|
||||
/*
|
||||
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.htmls.hxtns.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hxtns.*;
|
||||
import gplx.dbs.*;
|
||||
import gplx.core.lists.*; import gplx.core.lists.hashs.*;
|
||||
import gplx.xowa.htmls.hxtns.pages.*; import gplx.xowa.htmls.hxtns.blobs.*; import gplx.xowa.htmls.hxtns.wkrs.*; import gplx.xowa.htmls.hxtns.wikis.*;
|
||||
import gplx.xowa.wikis.*;
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
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.
|
||||
|
||||
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.htmls.hxtns.pages;
|
||||
|
||||
import gplx.Bry_bfr;
|
||||
import gplx.Bry_bfr_;
|
||||
import gplx.Gfo_usr_dlg_;
|
||||
import gplx.Hash_adp_bry;
|
||||
import gplx.Io_mgr;
|
||||
import gplx.Io_url;
|
||||
import gplx.List_adp;
|
||||
import gplx.core.lists.hashs.Hash_adp__int;
|
||||
import gplx.dbs.Db_conn;
|
||||
import gplx.dbs.Db_conn_bldr;
|
||||
import gplx.xowa.Xoa_ttl;
|
||||
import gplx.xowa.Xow_wiki;
|
||||
import gplx.xowa.htmls.Xoh_page;
|
||||
import gplx.xowa.htmls.hxtns.blobs.Hxtn_blob_tbl;
|
||||
import gplx.xowa.htmls.hxtns.wikis.Hxtn_wiki_mgr;
|
||||
import gplx.xowa.htmls.hxtns.wkrs.Hxtn_wkr_mgr;
|
||||
public class Hxtn_page_mgr {
|
||||
private Hxtn_page_tbl page_tbl;
|
||||
private Hxtn_blob_tbl blob_tbl;
|
||||
@@ -102,5 +115,8 @@ public class Hxtn_page_mgr {
|
||||
}
|
||||
}
|
||||
private static Io_url Make_url(Xow_wiki wiki, String file_name) {return wiki.Fsys_mgr().Root_dir().GenSubFil(wiki.Domain_str() + file_name);}
|
||||
public static final int Id__template_styles = 0;
|
||||
public static final int
|
||||
Id__template_styles = 0
|
||||
, Id__indicators = 2
|
||||
;
|
||||
}
|
||||
|
||||
@@ -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,29 +13,36 @@ 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.parsers; import gplx.*; import gplx.xowa.*;
|
||||
import gplx.xowa.htmls.core.htmls.*;
|
||||
import gplx.xowa.langs.vnts.*;
|
||||
public class Xop_parser_ {
|
||||
public static final int Doc_bgn_bos = -1, Doc_bgn_char_0 = 0;
|
||||
public static byte[] Parse_text_to_html(Xowe_wiki wiki, Xop_ctx owner_ctx, Xoae_page page, byte[] src, boolean para_enabled) { // NOTE: must pass in same page instance; do not do Xoa_page_.new_(), else img_idx will get reset to 0; DATE:2015-02-08
|
||||
// init
|
||||
Xop_ctx ctx = Xop_ctx.New__sub(wiki, owner_ctx, page);
|
||||
Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr();
|
||||
Xop_root_tkn root = tkn_mkr.Root(src);
|
||||
Xop_parser parser = wiki.Parser_mgr().Main();
|
||||
|
||||
// expand template; EX: {{A}} -> wikitext
|
||||
byte[] wtxt = parser.Expand_tmpl(root, ctx, tkn_mkr, src);
|
||||
|
||||
// parse wikitext
|
||||
root.Reset();
|
||||
ctx.Para().Enabled_(para_enabled);
|
||||
parser.Parse_wtxt_to_wdom(root, ctx, ctx.Tkn_mkr(), wtxt, Xop_parser_.Doc_bgn_bos);
|
||||
|
||||
// write html
|
||||
Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512();
|
||||
wiki.Html_mgr().Html_wtr().Write_doc(bfr, ctx, Xoh_wtr_ctx.Basic, wtxt, root);
|
||||
return bfr.To_bry_and_rls();
|
||||
}
|
||||
}
|
||||
package gplx.xowa.parsers;
|
||||
|
||||
import gplx.Bry_bfr;
|
||||
import gplx.xowa.Xoae_page;
|
||||
import gplx.xowa.Xowe_wiki;
|
||||
import gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx;
|
||||
|
||||
public class Xop_parser_ {
|
||||
public static final int Doc_bgn_bos = -1, Doc_bgn_char_0 = 0;
|
||||
public static byte[] Parse_text_to_html(Xowe_wiki wiki, Xop_ctx owner_ctx, Xoae_page page, byte[] src, boolean para_enabled) {
|
||||
return Parse_text_to_html(wiki, owner_ctx, Xoh_wtr_ctx.Basic, page, src, para_enabled);
|
||||
}
|
||||
public static byte[] Parse_text_to_html(Xowe_wiki wiki, Xop_ctx owner_ctx, Xoh_wtr_ctx hctx, Xoae_page page, byte[] src, boolean para_enabled) { // NOTE: must pass in same page instance; do not do Xoa_page_.new_(), else img_idx will get reset to 0; DATE:2015-02-08
|
||||
// init
|
||||
Xop_ctx ctx = Xop_ctx.New__sub(wiki, owner_ctx, page);
|
||||
Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr();
|
||||
Xop_root_tkn root = tkn_mkr.Root(src);
|
||||
Xop_parser parser = wiki.Parser_mgr().Main();
|
||||
|
||||
// expand template; EX: {{A}} -> wikitext
|
||||
byte[] wtxt = parser.Expand_tmpl(root, ctx, tkn_mkr, src);
|
||||
|
||||
// parse wikitext
|
||||
root.Reset();
|
||||
ctx.Para().Enabled_(para_enabled);
|
||||
parser.Parse_wtxt_to_wdom(root, ctx, ctx.Tkn_mkr(), wtxt, Xop_parser_.Doc_bgn_bos);
|
||||
|
||||
// write html
|
||||
Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512();
|
||||
wiki.Html_mgr().Html_wtr().Write_doc(bfr, ctx, hctx, wtxt, root);
|
||||
return bfr.To_bry_and_rls();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package gplx.xowa.xtns.indicators;
|
||||
|
||||
import gplx.Ordered_hash;
|
||||
import gplx.Ordered_hash_;
|
||||
import gplx.core.serials.binarys.BinaryLoadMgr;
|
||||
import gplx.core.serials.core.SerialCoreFactory;
|
||||
import gplx.core.serials.core.SerialLoadMgr;
|
||||
import gplx.core.serials.core.SerialLoadWkr;
|
||||
import gplx.core.serials.core.SerialSaveMgr;
|
||||
import gplx.core.serials.core.SerialSaveWkr;
|
||||
|
||||
public class IndicatorSerialCore {
|
||||
private static final int DATA_VERSION = 0;
|
||||
|
||||
public static byte[] Save(Ordered_hash list) {
|
||||
// get wkr
|
||||
SerialSaveMgr mgr = SerialCoreFactory.NewSaveMgr(BinaryLoadMgr.CORE_VERSION);
|
||||
SerialSaveWkr wkr = mgr.NewSaveWkr();
|
||||
|
||||
// save header
|
||||
wkr.SaveHdr(DATA_VERSION);
|
||||
|
||||
// save items
|
||||
int len = list.Len();
|
||||
wkr.SaveInt(len);
|
||||
for (int i = 0; i < len; i++) {
|
||||
Indicator_xnde xnde = (Indicator_xnde)list.Get_at(i);
|
||||
wkr.SaveStr(xnde.Name());
|
||||
wkr.SaveBry(xnde.Html());
|
||||
}
|
||||
return wkr.ToBry();
|
||||
}
|
||||
|
||||
public static Ordered_hash Load(byte[] data) {
|
||||
// get wkr
|
||||
SerialLoadMgr mgr = SerialCoreFactory.NewLoadMgr(data);
|
||||
SerialLoadWkr wkr = mgr.NewLoadWkr();
|
||||
|
||||
// init
|
||||
wkr.Init(mgr.Data(), mgr.HeaderEnd());
|
||||
|
||||
// load items
|
||||
int len = wkr.LoadInt();
|
||||
Ordered_hash list = Ordered_hash_.New();
|
||||
for (int i = 0; i < len; i++) {
|
||||
Indicator_xnde xnde = new Indicator_xnde();
|
||||
xnde.Name_(wkr.LoadStr());
|
||||
xnde.Html_(wkr.LoadBry());
|
||||
list.Add_if_dupe_use_nth(xnde.Name(), xnde);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
30
400_xowa/src/gplx/xowa/xtns/indicators/Indicator_addon.java
Normal file
30
400_xowa/src/gplx/xowa/xtns/indicators/Indicator_addon.java
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
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.
|
||||
|
||||
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.xtns.indicators;
|
||||
|
||||
import gplx.xowa.Xoa_app;
|
||||
import gplx.xowa.Xow_wiki;
|
||||
import gplx.xowa.addons.Xoax_addon_itm;
|
||||
import gplx.xowa.addons.Xoax_addon_itm__init;
|
||||
|
||||
public class Indicator_addon implements Xoax_addon_itm, Xoax_addon_itm__init {
|
||||
public void Init_addon_by_app(Xoa_app app) {}
|
||||
public void Init_addon_by_wiki(Xow_wiki wiki) {
|
||||
wiki.Hxtn_mgr().Reg_wkr(new Indicator_hxtn_page_wkr(wiki.Hxtn_mgr().Blob_tbl()));
|
||||
}
|
||||
|
||||
public String Addon__key() {return "xowa.indicators";}
|
||||
}
|
||||
@@ -1,20 +1,38 @@
|
||||
/*
|
||||
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.xtns.indicators; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
|
||||
import gplx.core.brys.fmtrs.*;
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
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.
|
||||
|
||||
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.xtns.indicators;
|
||||
|
||||
import gplx.Bool_;
|
||||
import gplx.Bry_;
|
||||
import gplx.Bry_bfr;
|
||||
import gplx.Bry_bfr_;
|
||||
import gplx.Int_;
|
||||
import gplx.Ordered_hash;
|
||||
import gplx.Ordered_hash_;
|
||||
import gplx.String_;
|
||||
import gplx.core.brys.fmtrs.Bry_fmtr;
|
||||
import gplx.xowa.Xoae_page;
|
||||
import gplx.xowa.Xow_wiki;
|
||||
import gplx.xowa.Xowe_wiki;
|
||||
import gplx.xowa.htmls.Xoh_page;
|
||||
import gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx;
|
||||
import gplx.xowa.htmls.hxtns.blobs.Hxtn_blob_tbl;
|
||||
import gplx.xowa.htmls.hxtns.pages.Hxtn_page_mgr;
|
||||
import gplx.xowa.parsers.Xop_parser_;
|
||||
|
||||
public class Indicator_html_bldr implements gplx.core.brys.Bfr_arg {
|
||||
private Indicator_html_bldr_itm bldr_itm = new Indicator_html_bldr_itm();
|
||||
private Ordered_hash list = Ordered_hash_.New();
|
||||
@@ -41,6 +59,40 @@ public class Indicator_html_bldr implements gplx.core.brys.Bfr_arg {
|
||||
, " </div>"
|
||||
), "itms")
|
||||
;
|
||||
|
||||
public void HxtnSave(Xowe_wiki wiki, Hxtn_page_mgr hxtnPageMgr, Xoae_page page, int pageId) {
|
||||
// exit if empty
|
||||
int len = list.Count();
|
||||
if (len == 0) return;
|
||||
|
||||
// reparse html to generate xoimg attribute b/c indicators are parsed differently due to location above the "mw-content-text" div
|
||||
for (int i = 0; i < len; i++) {
|
||||
Indicator_xnde xnde = (Indicator_xnde)list.Get_at(i);
|
||||
byte[] html = Xop_parser_.Parse_text_to_html(wiki, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Hdump, page, xnde.GetHdumpSrc(), true);
|
||||
xnde.Html_(html);
|
||||
}
|
||||
|
||||
// serialize and save to db
|
||||
byte[] indicators = IndicatorSerialCore.Save(list);
|
||||
hxtnPageMgr.Page_tbl__insert(pageId, Hxtn_page_mgr.Id__indicators, pageId);
|
||||
hxtnPageMgr.Blob_tbl__insert(Hxtn_blob_tbl.Blob_tid__wtxt, Hxtn_page_mgr.Id__indicators, pageId, indicators);
|
||||
}
|
||||
|
||||
public void Deserialise(Xow_wiki wiki, Xoh_page hpg, byte[] data) {
|
||||
// exit if empty
|
||||
if (Bry_.Len_eq_0(data)) return;
|
||||
|
||||
// deserialize data
|
||||
this.list = IndicatorSerialCore.Load(data);
|
||||
|
||||
// reparse html to convert xoimg attribute to file
|
||||
int len = list.Count();
|
||||
for (int i = 0; i < len; i++) {
|
||||
Indicator_xnde xnde = (Indicator_xnde)list.Get_at(i);
|
||||
byte[] html = wiki.Html__hdump_mgr().Load_mgr().Make_mgr().Parse(xnde.Html(), wiki, hpg);
|
||||
xnde.Html_(html);
|
||||
}
|
||||
}
|
||||
}
|
||||
class Indicator_html_bldr_itm implements gplx.core.brys.Bfr_arg {
|
||||
private Ordered_hash list;
|
||||
@@ -52,8 +104,7 @@ class Indicator_html_bldr_itm implements gplx.core.brys.Bfr_arg {
|
||||
fmtr_itm.Bld_bfr_many(bfr, xnde.Name(), xnde.Html());
|
||||
}
|
||||
}
|
||||
private static final Bry_fmtr
|
||||
fmtr_itm = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last
|
||||
private static final Bry_fmtr fmtr_itm = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last
|
||||
( ""
|
||||
, " <div id='mw-indicator-~{name}' class='mw-indicator'>~{html}</div>"
|
||||
), "name", "html")
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
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.
|
||||
|
||||
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.xtns.indicators;
|
||||
|
||||
import gplx.xowa.Xoa_ttl;
|
||||
import gplx.xowa.htmls.Xoh_page;
|
||||
import gplx.xowa.htmls.hxtns.blobs.Hxtn_blob_tbl;
|
||||
import gplx.xowa.htmls.hxtns.pages.Hxtn_page_mgr;
|
||||
import gplx.xowa.htmls.hxtns.pages.Hxtn_page_wkr;
|
||||
|
||||
public class Indicator_hxtn_page_wkr implements Hxtn_page_wkr {
|
||||
private final Hxtn_blob_tbl page_text_tbl;
|
||||
public int Id() {return Hxtn_page_mgr.Id__indicators;}
|
||||
public String Key() {return KEY;}
|
||||
public Indicator_hxtn_page_wkr(Hxtn_blob_tbl page_text_tbl) {
|
||||
this.page_text_tbl = page_text_tbl;
|
||||
}
|
||||
public void Load_by_page(Xoh_page hpg, Xoa_ttl ttl, int page_id) {
|
||||
byte[] data = page_text_tbl.Select_text(Hxtn_blob_tbl.Blob_tid__wtxt, Hxtn_page_mgr.Id__indicators, page_id);
|
||||
hpg.Props().Add(KEY, data);
|
||||
}
|
||||
public static final String KEY = "xowa.xtns.indicators";
|
||||
}
|
||||
@@ -1,25 +1,46 @@
|
||||
/*
|
||||
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.xtns.indicators; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
|
||||
import gplx.core.primitives.*; import gplx.xowa.htmls.core.htmls.*; import gplx.xowa.wikis.pages.skins.*;
|
||||
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
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.
|
||||
|
||||
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.xtns.indicators;
|
||||
|
||||
import gplx.Bry_;
|
||||
import gplx.Bry_bfr;
|
||||
import gplx.Hash_adp_bry;
|
||||
import gplx.core.primitives.Byte_obj_val;
|
||||
import gplx.xowa.Xoae_app;
|
||||
import gplx.xowa.Xoae_page;
|
||||
import gplx.xowa.Xowe_wiki;
|
||||
import gplx.xowa.htmls.core.htmls.Xoh_html_wtr;
|
||||
import gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx;
|
||||
import gplx.xowa.parsers.Xop_ctx;
|
||||
import gplx.xowa.parsers.Xop_parser_;
|
||||
import gplx.xowa.parsers.Xop_root_tkn;
|
||||
import gplx.xowa.parsers.htmls.Mwh_atr_itm;
|
||||
import gplx.xowa.parsers.htmls.Mwh_atr_itm_owner1;
|
||||
import gplx.xowa.parsers.xndes.Xop_xnde_tkn;
|
||||
import gplx.xowa.xtns.Xox_xnde;
|
||||
import gplx.xowa.xtns.Xox_xnde_;
|
||||
public class Indicator_xnde implements Xox_xnde, Mwh_atr_itm_owner1 {
|
||||
public String Name() {return name;} private String name;
|
||||
public byte[] Html() {return html;} private byte[] html;
|
||||
private byte[] src;
|
||||
private Xop_xnde_tkn xnde;
|
||||
public String Name() {return name;} public void Name_(String v) {this.name = v;} private String name;
|
||||
public byte[] Html() {return html;} public void Html_(byte[] v) {this.html = v;} private byte[] html;
|
||||
public void Init_for_test(String name, byte[] html) {this.name = name; this.html = html;} // TEST
|
||||
public byte[] GetHdumpSrc() {
|
||||
return Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
|
||||
}
|
||||
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {
|
||||
if (xatr_id_obj == null) return;
|
||||
Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj;
|
||||
@@ -28,13 +49,15 @@ public class Indicator_xnde implements Xox_xnde, Mwh_atr_itm_owner1 {
|
||||
}
|
||||
}
|
||||
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
|
||||
this.xnde = xnde;
|
||||
this.src = src;
|
||||
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);
|
||||
this.html = Xop_parser_.Parse_text_to_html(wiki, ctx, ctx.Page(), Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()), false);
|
||||
Indicator_html_bldr html_bldr = ctx.Page().Html_data().Indicators();
|
||||
if (this.name != null) html_bldr.Add(this); // NOTE: must do null-check b/c Add will use Name as key for hashtable
|
||||
}
|
||||
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
|
||||
if (this.name == null) bfr.Add_str_a7("Error: Page status indicators' name attribute must not be empty.");
|
||||
if (this.name == null) bfr.Add_str_a7("Error: Page status indicators' name attribute must not be empty.");
|
||||
}
|
||||
private static final byte Xatr_name = 0;
|
||||
private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7()
|
||||
|
||||
Reference in New Issue
Block a user