mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
'v3.6.3.3'
This commit is contained in:
@@ -40,7 +40,7 @@ public class Xoh_page_wtr_wkr {
|
||||
case Xopg_page_.Tid_edit: fmtr = mgr.Page_edit_fmtr(); break;
|
||||
case Xopg_page_.Tid_html: fmtr = mgr.Page_read_fmtr(); view_mode = Xopg_page_.Tid_read; break; // set view_mode to read, so that "read" is highlighted in HTML
|
||||
case Xopg_page_.Tid_read: fmtr = mgr.Page_read_fmtr();
|
||||
ctx.Page().Redlink_list().Clear(); // not sure if this is the best place to put it, but redlinks (a) must only fire once; (b) must fire before html generation; (c) cannot fire during edit (preview will handle separately)
|
||||
// ctx.Page().Redlink_list().Clear(); // not sure if this is the best place to put it, but redlinks (a) must only fire once; (b) must fire before html generation; (c) cannot fire during edit (preview will handle separately); NOTE: probably put in to handle reusable redlink lists; redlink lists are now instantiated per page, so clear is not useful
|
||||
break;
|
||||
}
|
||||
Bry_bfr page_bfr = Xoa_app_.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page bfr to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do
|
||||
|
||||
@@ -19,7 +19,7 @@ package gplx.xowa.htmls.core; import gplx.*; import gplx.xowa.*; import gplx.xow
|
||||
import gplx.core.ios.*;
|
||||
import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.core.makes.*; import gplx.xowa.htmls.core.hzips.*;
|
||||
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*;
|
||||
import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.wikis.pages.lnkis.*;
|
||||
public class Xow_hdump_mgr__load {
|
||||
private final Xow_wiki wiki; private final Xoh_hzip_mgr hzip_mgr; private final Io_stream_zip_mgr zip_mgr;
|
||||
private final Xoh_page tmp_hpg; private final Bry_bfr tmp_bfr; private final Xowd_page_itm tmp_dbpg = new Xowd_page_itm();
|
||||
@@ -92,6 +92,14 @@ public class Xow_hdump_mgr__load {
|
||||
wpg.Hdump_data().Imgs().Add(itm);
|
||||
wpg.File_queue().Add(itm); // add to file_queue for http_server
|
||||
}
|
||||
|
||||
// transfer redlinks
|
||||
Xopg_lnki_list src_list = hpg.Redlink_list();
|
||||
Xopg_lnki_list trg_list = wpg.Redlink_list();
|
||||
len = src_list.Len();
|
||||
for (int i = 0; i < len; ++i) {
|
||||
trg_list.Add_direct(src_list.Get_at(i));
|
||||
}
|
||||
}
|
||||
private static boolean Load__fail(Xoh_page hpg) {hpg.Exists_n_(); return false;}
|
||||
private static boolean Load__dbpg(Xow_wiki wiki, Xowd_page_itm dbpg, Xoh_page hpg, Xoa_ttl ttl) {
|
||||
|
||||
@@ -89,6 +89,7 @@ public class Xoh_lnki_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm {
|
||||
byte[] href_bry = text_type == Xoh_anch_capt_itm.Tid__less
|
||||
? tmp_bfr.Add_mid(src, text_0_bgn, text_0_end).Add_mid(src, text_1_bgn, text_1_end).To_bry_and_clear()
|
||||
: Bry_.Mid(src, text_0_bgn, text_0_end);
|
||||
int html_uid = -1;
|
||||
byte[] ns_bry = null;
|
||||
switch (href_type) {
|
||||
case Xoh_anch_href_data.Tid__anch: break;
|
||||
@@ -121,6 +122,14 @@ public class Xoh_lnki_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm {
|
||||
if (cls_tid == Xoh_anch_cls_.Tid__ctg_xnav && href_end != -1)
|
||||
tmp_bfr.Add_mid(href_bry, href_end, href_bry.length);
|
||||
href_bry = tmp_bfr.To_bry_and_clear();
|
||||
|
||||
// generate stub for redlink
|
||||
try {
|
||||
Xoa_ttl ttl = hpg.Wiki().Ttl_parse(Gfo_url_encoder_.Href.Decode(href_bry));
|
||||
Xopg_lnki_itm__hdump lnki_itm = new Xopg_lnki_itm__hdump(ttl);
|
||||
hpg.Redlink_list().Add(lnki_itm);
|
||||
html_uid = lnki_itm.Html_uid();
|
||||
} catch (Exception e) {Gfo_log_.Instance.Warn("failed to add lnki to redlinks", "page", hpg.Url_bry_safe(), "href_bry", href_bry, "e", Err_.Message_gplx_log(e));}
|
||||
break;
|
||||
}
|
||||
byte[] capt_bry = Xoh_lnki_hzip_.Bld_capt(tmp_bfr, href_type, text_type, capt_has_ns, capt_cs0_tid, ns_bry, src, text_0_bgn, text_0_end, src, text_1_bgn, text_1_end);
|
||||
@@ -141,10 +150,6 @@ public class Xoh_lnki_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm {
|
||||
}
|
||||
}
|
||||
|
||||
// generate stub for redlink
|
||||
// Xopg_lnki_itm__hdump lnki_itm = new Xopg_lnki_itm__hdump(null);
|
||||
// hpg.Redlink_list().Add(lnki_itm);
|
||||
|
||||
// gen html
|
||||
bfr.Add(Gfh_bldr_.Bry__a_lhs_w_href);
|
||||
switch (href_type) {
|
||||
@@ -170,8 +175,10 @@ public class Xoh_lnki_hzip implements Xoh_hzip_wkr, Gfo_poolable_itm {
|
||||
case Xoh_anch_cls_.Tid__voyage__email: cls_bry = Xoh_anch_cls_.Bry__voyage_email; break;
|
||||
}
|
||||
if (cls_bry != null) bfr.Add(Gfh_bldr_.Bry__cls__nth).Add(cls_bry);
|
||||
if (!hctx.Mode_is_diff())
|
||||
bfr.Add(Gfh_bldr_.Bry__id__nth).Add_str_a7(gplx.xowa.wikis.pages.lnkis.Xopg_lnki_list.Lnki_id_prefix).Add_int_variable(hctx.Uid__lnki_nxt());
|
||||
if (!hctx.Mode_is_diff()) {
|
||||
if (html_uid == -1) html_uid = hctx.Uid__lnki_nxt(); // html_uid == -1 for non-lnkis
|
||||
bfr.Add(Gfh_bldr_.Bry__id__nth).Add_str_a7(gplx.xowa.wikis.pages.lnkis.Xopg_lnki_list.Lnki_id_prefix).Add_int_variable(html_uid);
|
||||
}
|
||||
if ( href_type != Xoh_anch_href_data.Tid__anch) { // anchs never have title;
|
||||
if (title_bry != null) {
|
||||
bfr.Add(Gfh_bldr_.Bry__title__nth);
|
||||
|
||||
@@ -298,7 +298,7 @@ class Load_popup_wkr implements Gfo_thread_wkr {
|
||||
Rslt_(null);
|
||||
}
|
||||
finally {
|
||||
app.Thread_mgr().Page_load_mgr().Resume();
|
||||
app.Thread_mgr_old().Page_load_mgr().Resume();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user