2017-02-07 03:14:55 +00:00
/ *
XOWA : the XOWA Offline Wiki Application
2017-02-21 20:45:17 +00:00
Copyright ( C ) 2012 - 2017 gnosygnu @gmail.com
2017-02-07 03:14:55 +00:00
2017-02-21 20:45:17 +00:00
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 .
2017-02-07 03:14:55 +00:00
2017-02-21 20:45:17 +00:00
You may use XOWA according to either of these licenses as is most appropriate
for your project on a case - by - case basis .
2017-02-07 03:14:55 +00:00
2017-02-21 20:45:17 +00:00
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
2017-02-07 03:14:55 +00:00
* /
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.* ;
public class Xoh_page implements Xoa_page {
// core
public Xow_wiki Wiki ( ) { return wiki ; } private Xow_wiki wiki ;
public Xoa_url Url ( ) { return page_url ; } private Xoa_url page_url ;
public Xoa_ttl Ttl ( ) { return page_ttl ; } private Xoa_ttl page_ttl ;
public Xopg_db_data Db ( ) { return db ; } private final Xopg_db_data db = new Xopg_db_data ( ) ;
public Xopg_redirect_mgr Redirect_trail ( ) { return redirect ; } private final Xopg_redirect_mgr redirect = new Xopg_redirect_mgr ( ) ;
public Xopg_html_data Html_data ( ) { return html ; } private final Xopg_html_data html = new Xopg_html_data ( ) ;
public Xopg_wtxt_data Wtxt ( ) { return wtxt ; } private final Xopg_wtxt_data wtxt = new Xopg_wtxt_data ( ) ;
public Xopg_hdump_data Hdump_mgr ( ) { return hdump ; } private final Xopg_hdump_data hdump = new Xopg_hdump_data ( ) ;
public Xol_lang_itm Lang ( ) { return lang ; } private Xol_lang_itm lang ;
2017-03-19 07:08:57 +00:00
private Guid_adp page_guid ;
public Guid_adp Page_guid ( ) {
if ( page_guid = = null ) {
page_guid = Guid_adp_ . New ( ) ;
}
return page_guid ;
}
2017-02-07 03:14:55 +00:00
public boolean Xtn__timeline_exists ( ) { return xtn__timeline_exists ; } private boolean xtn__timeline_exists ; public void Xtn__timeline_exists_y_ ( ) { xtn__timeline_exists = true ; }
public boolean Xtn__gallery_exists ( ) { return xtn__gallery_exists ; } private boolean xtn__gallery_exists ; public void Xtn__gallery_exists_y_ ( ) { xtn__gallery_exists = true ; }
// props
public int Page_id ( ) { return page_id ; } private int page_id ;
public byte [ ] Display_ttl ( ) { return display_ttl ; } private byte [ ] display_ttl ;
public byte [ ] Content_sub ( ) { return content_sub ; } private byte [ ] content_sub ;
public byte [ ] Sidebar_div ( ) { return sidebar_div ; } private byte [ ] sidebar_div ;
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 ( ) ;
// util
public Xoa_page__commons_mgr Commons_mgr ( ) { return commons_mgr ; } private final Xoa_page__commons_mgr commons_mgr = new Xoa_page__commons_mgr ( ) ;
public int Exec_tid ( ) { return exec_tid ; } private int exec_tid = Xof_exec_tid . Tid_wiki_page ;
public byte [ ] Html_head_xtn ( ) { return html_head_xtn ; } public void Html_head_xtn_ ( byte [ ] v ) { html_head_xtn = v ; } private byte [ ] html_head_xtn = Bry_ . Empty ; // drd:web_browser
public byte [ ] Url_bry_safe ( ) { return Xoa_page_ . Url_bry_safe ( page_url , wiki , page_ttl ) ; }
public void Ctor_by_hview ( Xow_wiki wiki , Xoa_url page_url , Xoa_ttl page_ttl , int page_id ) {
this . wiki = wiki ; this . page_url = page_url ; this . page_ttl = page_ttl ; this . page_id = page_id ;
this . lang = wiki . Lang ( ) ;
this . Clear ( ) ;
html . Redlink_list ( ) . Disabled_ ( page_ttl . Ns ( ) . Id_is_module ( ) ) ; // never redlink in Module ns; particularly since Lua has multi-line comments for [[ ]]
html . Toc_mgr ( ) . Init ( gplx . xowa . htmls . core . htmls . tidy . Xow_tidy_mgr_interface_ . Noop , wiki . Lang ( ) . Msg_mgr ( ) . Itm_by_id_or_null ( gplx . xowa . langs . msgs . Xol_msg_itm_ . Id_toc ) . Val ( ) , page_url . Raw ( ) ) ;
}
public Xoh_page Ctor_by_hdiff ( Bry_bfr tmp_bfr , Xoae_page page , byte [ ] toc_label ) {
this . wiki = page . Wiki ( ) ; this . page_url = page . Url ( ) ; this . page_ttl = page . Ttl ( ) ; this . page_id = page . Db ( ) . Page ( ) . Id ( ) ;
this . lang = wiki . Lang ( ) ;
db . Html ( ) . Html_bry_ ( page . Db ( ) . Html ( ) . Html_bry ( ) ) ;
Xopg_html_data html = page . Html_data ( ) ;
html . Init_by_page ( page . Ttl ( ) ) ;
Xoh_head_mgr mod_mgr = html . Head_mgr ( ) ;
head_mgr . Init ( mod_mgr . Itm__mathjax ( ) . Enabled ( ) , mod_mgr . Itm__popups ( ) . Bind_hover_area ( ) , mod_mgr . Itm__gallery ( ) . Enabled ( ) , mod_mgr . Itm__hiero ( ) . Enabled ( ) ) ;
this . display_ttl = html . Display_ttl ( ) ;
this . content_sub = html . Content_sub ( ) ;
this . sidebar_div = Xoh_page_ . Save_sidebars ( tmp_bfr , page , html ) ;
html . Toc_mgr ( ) . Init ( page . Wikie ( ) . Html_mgr ( ) . Tidy_mgr ( ) , toc_label , page_url . Page_bry ( ) ) ; // NOTE: do not pass in noop tidy_mgr, else broken TOC html will never get corrected during hdump; DATE:2016-08-14
return this ;
}
public void Ctor_by_db ( int head_flag , byte [ ] display_ttl , byte [ ] content_sub , byte [ ] sidebar_div , int zip_tid , int hzip_tid , byte [ ] body ) {
head_mgr . Flag_ ( head_flag ) ;
this . display_ttl = display_ttl ; this . content_sub = content_sub ; this . sidebar_div = sidebar_div ;
db . Html ( ) . Html_bry_ ( body ) ;
db . Html ( ) . Zip_tids_ ( zip_tid , hzip_tid ) ;
}
public void Clear ( ) {
redirect . Clear ( ) ;
html . Clear ( ) ;
wtxt . Clear ( ) ;
hdump . Clear ( ) ;
db . Clear ( ) ;
display_ttl = content_sub = sidebar_div = Bry_ . Empty ;
head_mgr . Clear ( ) ; commons_mgr . Clear ( ) ;
section_mgr . Clear ( ) ; img_mgr . Clear ( ) ;
}
public static Xoh_page New_missing ( ) {
Xoh_page rv = new Xoh_page ( ) ;
rv . Db ( ) . Page ( ) . Exists_n_ ( ) ;
return rv ;
}
}