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

load catpage header from html database and merge catpage data; also, load catpage async

This commit is contained in:
gnosygnu 2016-10-12 15:42:06 -04:00
parent 6b1ec09296
commit 1342a16269
6 changed files with 23 additions and 5 deletions

View File

@ -18,6 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.addons.htmls.includes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.htmls.*;
public class Xoscript_page_doc {
public void Test() {
Tfds.Write("hi");
// Tfds.Write("hi");
}
}

View File

@ -54,7 +54,7 @@ public class Xoctg_catpage_mgr implements Gfo_invk {
}
return ctg;
}
public void Write_catpage(Bry_bfr bfr, Xoa_page page, Xoh_wtr_ctx hctx) {
public void Write_catpage(Bry_bfr bfr, Xoa_page page) {
try {
// get catpage_url
Xoctg_catpage_url catpage_url = Xoctg_catpage_url_parser.Parse(page.Url());

View File

@ -24,7 +24,7 @@ class Xoctg_fmt_itm_subc extends Xoctg_fmt_itm_base {
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
@Override public void Bld_html(Bry_bfr bfr, Xow_wiki wiki, Xou_history_mgr history_mgr, Xoh_href_parser href_parser, Xoctg_catpage_itm itm, Xoa_ttl ttl) {
if (ttl == Xoa_ttl.Null) {
Fmt__missing.Bld_many(bfr, itm.Page_id(), itm.Sortkey_handle());
Fmt__missing.Bld_many(bfr, itm.Page_id());
return;
}
byte[] itm_href = wiki.Html__href_wtr().Build_to_bry(wiki, ttl);

View File

@ -157,15 +157,19 @@ public class Xoh_page_wtr_wkr {
bfr.Add(hdump_data);
return;
}
// dump and exit if MediaWiki message;
if (ns_id == Xow_ns_.Tid__mediawiki) { // if MediaWiki and wikitext, must be a message; convert args back to php; DATE:2014-06-13
bfr.Add(Gfs_php_converter.Xto_php(tmp_bfr, Bool_.N, data_raw));
return;
}
// if [[File]], add boilerplate header; note that html is XOWA-generated so does not need to be tidied
if (ns_id == Xow_ns_.Tid__file) app.Ns_file_page_mgr().Bld_html(wiki, ctx, page, bfr, page.Ttl(), wiki.Cfg_file_page(), page.File_queue());
// get separate bfr; note that bfr already has <html> and <head> written to it, so this can't be passed to tidy; DATE:2014-06-11
Bry_bfr tidy_bfr = wiki.Utl__bfr_mkr().Get_m001();
// write wikitext
if (page.Html_data().Skip_parse()) {
tidy_bfr.Add(page.Html_data().Custom_body());
@ -179,8 +183,9 @@ public class Xoh_page_wtr_wkr {
}
}
// if [[Category]], render rest of html (Subcategories; Pages; Files); note that a category may have other html which requires wikitext processing
if (ns_id == Xow_ns_.Tid__category) wiki.Ctg__catpage_mgr().Write_catpage(tidy_bfr, page, hctx);
// if [[Category]], add catpage data
if (ns_id == Xow_ns_.Tid__category) tidy_bfr.Add_safe(page.Html_data().Catpage_data());
// if (ns_id == Xow_ns_.Tid__category) wiki.Ctg__catpage_mgr().Write_catpage(tidy_bfr, page, hctx);
// tidy html
wiki.Html_mgr().Tidy_mgr().Exec_tidy(tidy_bfr, !hctx.Mode_is_hdump(), page.Url_bry_safe());
@ -194,6 +199,7 @@ public class Xoh_page_wtr_wkr {
if ( ctgs_enabled
&& ctgs_len > 0 // skip if no categories found while parsing wikitext
&& !wiki.Html_mgr().Importing_ctgs() // do not show categories if importing categories, page will wait for category import to be done; DATE:2014-10-15
&& !hctx.Mode_is_hdump() // do not dump categories during hdump; DATE:2016-10-12
) {
if (app.Mode().Tid_is_gui()) app.Usr_dlg().Prog_many("", "", "loading categories: count=~{0}", ctgs_len);
Xoctg_pagebox_itm[] pagebox_itms = wiki.Ctg__pagebox_wtr().Get_catlinks_by_page(wiki, page);

View File

@ -19,6 +19,7 @@ package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xo
import gplx.xowa.guis.views.*;
public class Xowe_page_mgr {
private final Xowe_wiki wiki;
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
public Xowe_page_mgr(Xowe_wiki wiki) {this.wiki = wiki;}
public Xoae_page Load_page(Xoa_url url, Xoa_ttl ttl, Xog_tab_itm tab) {
Xoa_app_.Usr_dlg().Log_many("", "", "page.load: url=~{0}", url.To_str());
@ -43,6 +44,16 @@ public class Xowe_page_mgr {
}
if (parse)
wiki.Parser_mgr().Parse(page, false);
// if [[Category]], generate catlinks (subc; page; file)
if (ttl.Ns().Id_is_ctg()) {
wiki.Ctg__catpage_mgr().Write_catpage(tmp_bfr, page);
if (parse)
page.Html_data().Catpage_data_(tmp_bfr.To_bry_and_clear());
else
page.Db().Html().Html_bry_(Bry_.Add(page.Db().Html().Html_bry(), tmp_bfr.To_bry_and_clear()));
}
return page;
}
private static void Wait_for_popups(Xoa_app app) {// HACK: wait for popups to finish, else thread errors due to popups and loader mutating cached items

View File

@ -46,6 +46,7 @@ public class Xopg_html_data {
public int Sect_uid() {return sect_uid;} private int sect_uid = -1; public int Sect_uid_next() {return ++sect_uid;}
public boolean Cbk_enabled() {return cbk_enabled;} private boolean cbk_enabled; public void Cbk_enabled_(boolean v) {this.cbk_enabled = v;}
public boolean Hdump_exists() {return hdump_exists;} private boolean hdump_exists; public void Hdump_exists_(boolean v) {this.hdump_exists = v;}
public byte[] Catpage_data() {return catpage_data;} private byte[] catpage_data; public void Catpage_data_(byte[] v) {this.catpage_data = v;}
public boolean Writing_hdr_for_toc() {return writing_hdr_for_toc;} private boolean writing_hdr_for_toc; public void Writing_hdr_for_toc_y_() {writing_hdr_for_toc = Bool_.Y;} public void Writing_hdr_for_toc_n_() {writing_hdr_for_toc = Bool_.N;}
public Xoh_toc_mgr Toc_mgr() {return toc_mgr;} private final Xoh_toc_mgr toc_mgr = new Xoh_toc_mgr();