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:
parent
6b1ec09296
commit
1342a16269
@ -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.*;
|
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 class Xoscript_page_doc {
|
||||||
public void Test() {
|
public void Test() {
|
||||||
Tfds.Write("hi");
|
// Tfds.Write("hi");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ public class Xoctg_catpage_mgr implements Gfo_invk {
|
|||||||
}
|
}
|
||||||
return ctg;
|
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 {
|
try {
|
||||||
// get catpage_url
|
// get catpage_url
|
||||||
Xoctg_catpage_url catpage_url = Xoctg_catpage_url_parser.Parse(page.Url());
|
Xoctg_catpage_url catpage_url = Xoctg_catpage_url_parser.Parse(page.Url());
|
||||||
|
@ -24,7 +24,7 @@ class Xoctg_fmt_itm_subc extends Xoctg_fmt_itm_base {
|
|||||||
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
|
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) {
|
@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) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
byte[] itm_href = wiki.Html__href_wtr().Build_to_bry(wiki, ttl);
|
byte[] itm_href = wiki.Html__href_wtr().Build_to_bry(wiki, ttl);
|
||||||
|
@ -157,15 +157,19 @@ public class Xoh_page_wtr_wkr {
|
|||||||
bfr.Add(hdump_data);
|
bfr.Add(hdump_data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// dump and exit if MediaWiki message;
|
// 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
|
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));
|
bfr.Add(Gfs_php_converter.Xto_php(tmp_bfr, Bool_.N, data_raw));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if [[File]], add boilerplate header; note that html is XOWA-generated so does not need to be tidied
|
// 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());
|
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
|
// 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();
|
Bry_bfr tidy_bfr = wiki.Utl__bfr_mkr().Get_m001();
|
||||||
|
|
||||||
// write wikitext
|
// write wikitext
|
||||||
if (page.Html_data().Skip_parse()) {
|
if (page.Html_data().Skip_parse()) {
|
||||||
tidy_bfr.Add(page.Html_data().Custom_body());
|
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 [[Category]], add catpage data
|
||||||
if (ns_id == Xow_ns_.Tid__category) wiki.Ctg__catpage_mgr().Write_catpage(tidy_bfr, page, hctx);
|
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
|
// tidy html
|
||||||
wiki.Html_mgr().Tidy_mgr().Exec_tidy(tidy_bfr, !hctx.Mode_is_hdump(), page.Url_bry_safe());
|
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
|
if ( ctgs_enabled
|
||||||
&& ctgs_len > 0 // skip if no categories found while parsing wikitext
|
&& 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
|
&& !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);
|
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);
|
Xoctg_pagebox_itm[] pagebox_itms = wiki.Ctg__pagebox_wtr().Get_catlinks_by_page(wiki, page);
|
||||||
|
@ -19,6 +19,7 @@ package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xo
|
|||||||
import gplx.xowa.guis.views.*;
|
import gplx.xowa.guis.views.*;
|
||||||
public class Xowe_page_mgr {
|
public class Xowe_page_mgr {
|
||||||
private final Xowe_wiki wiki;
|
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 Xowe_page_mgr(Xowe_wiki wiki) {this.wiki = wiki;}
|
||||||
public Xoae_page Load_page(Xoa_url url, Xoa_ttl ttl, Xog_tab_itm tab) {
|
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());
|
Xoa_app_.Usr_dlg().Log_many("", "", "page.load: url=~{0}", url.To_str());
|
||||||
@ -43,6 +44,16 @@ public class Xowe_page_mgr {
|
|||||||
}
|
}
|
||||||
if (parse)
|
if (parse)
|
||||||
wiki.Parser_mgr().Parse(page, false);
|
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;
|
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
|
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
|
||||||
|
@ -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 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 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 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 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();
|
public Xoh_toc_mgr Toc_mgr() {return toc_mgr;} private final Xoh_toc_mgr toc_mgr = new Xoh_toc_mgr();
|
||||||
|
Loading…
Reference in New Issue
Block a user