mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
do not fail with null ref if subcategory does not exist in catpage
This commit is contained in:
parent
bc2c83fa8f
commit
6b1ec09296
@ -73,20 +73,20 @@ public abstract class Xoctg_fmt_itm_base implements gplx.core.brys.Bfr_arg {
|
|||||||
}
|
}
|
||||||
@gplx.Virtual 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) {
|
@gplx.Virtual 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());
|
||||||
else {
|
else {
|
||||||
byte[] itm_full_ttl = Gfh_utl.Escape_html_as_bry(tmp_bfr, ttl.Full_txt_w_ttl_case());// NOTE: ttl.Full_txt() to get full ns; EX: Template:A instead of just "A"
|
byte[] itm_full_ttl = Gfh_utl.Escape_html_as_bry(tmp_bfr, ttl.Full_txt_w_ttl_case());// NOTE: ttl.Full_txt() to get full ns; EX: Template:A instead of just "A"
|
||||||
byte[] itm_href = wiki.Html__href_wtr().Build_to_bry(wiki, ttl);
|
byte[] itm_href = wiki.Html__href_wtr().Build_to_bry(wiki, ttl);
|
||||||
byte[] itm_atr_cls = Xoh_lnki_wtr.Lnki_cls_visited(history_mgr, wiki.Domain_bry(), ttl.Page_txt()); // NOTE: must be ttl.Page_txt() in order to match Xou_history_mgr.Add
|
byte[] itm_atr_cls = Xoh_lnki_wtr.Lnki_cls_visited(history_mgr, wiki.Domain_bry(), ttl.Page_txt()); // NOTE: must be ttl.Page_txt() in order to match Xou_history_mgr.Add
|
||||||
fmt_exists.Bld_many(bfr, itm_href, itm_atr_cls, itm_full_ttl, itm_full_ttl, gplx.core.encoders.Hex_utl_.Encode_bry(itm.Sortkey_binary()));
|
Fmt__exists.Bld_many(bfr, itm_href, itm_atr_cls, itm_full_ttl, itm_full_ttl, gplx.core.encoders.Hex_utl_.Encode_bry(itm.Sortkey_binary()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private static final Bry_fmt
|
protected static final Bry_fmt
|
||||||
fmt_missing = Bry_fmt.Auto_nl_skip_last
|
Fmt__missing = Bry_fmt.Auto_nl_skip_last
|
||||||
( ""
|
( ""
|
||||||
, " <li class=\"xowa-missing-category-entry\"><span title=\"id not found: #~{itm_id} might be talk/user page\">~{itm_text} (missing)</li>"
|
, " <li class=\"xowa-missing-category-entry\"><span title=\"id not found: #~{itm_id} might be talk/user page\">~{itm_text} (missing)</li>"
|
||||||
)
|
)
|
||||||
, fmt_exists = Bry_fmt.Auto_nl_skip_last
|
, Fmt__exists = Bry_fmt.Auto_nl_skip_last
|
||||||
( ""
|
( ""
|
||||||
, " <li><a href=\"~{itm_href}\"~{itm_atr_cls} title=\"~{itm_title}\">~{itm_text}</a></li>" // <!--~{itm_sortkey}-->
|
, " <li><a href=\"~{itm_href}\"~{itm_atr_cls} title=\"~{itm_title}\">~{itm_text}</a></li>" // <!--~{itm_sortkey}-->
|
||||||
)
|
)
|
||||||
|
@ -23,6 +23,10 @@ import gplx.xowa.users.history.*;
|
|||||||
class Xoctg_fmt_itm_subc extends Xoctg_fmt_itm_base {
|
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) {
|
||||||
|
Fmt__missing.Bld_many(bfr, itm.Page_id(), itm.Sortkey_handle());
|
||||||
|
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);
|
||||||
int count_subcs = 0;
|
int count_subcs = 0;
|
||||||
int count_pages = 0;
|
int count_pages = 0;
|
||||||
@ -31,7 +35,7 @@ class Xoctg_fmt_itm_subc extends Xoctg_fmt_itm_base {
|
|||||||
byte[] contains_title = wiki.Msg_mgr().Val_by_id_args(Xol_msg_itm_.Id_ctgtree_subc_counts, count_subcs, count_pages, count_files);
|
byte[] contains_title = wiki.Msg_mgr().Val_by_id_args(Xol_msg_itm_.Id_ctgtree_subc_counts, count_subcs, count_pages, count_files);
|
||||||
byte[] contains_text = Bld_contains_text(msg_mgr, count_subcs, count_pages, count_files);
|
byte[] contains_text = Bld_contains_text(msg_mgr, count_subcs, count_pages, count_files);
|
||||||
byte[] ttl_page = ttl.Page_txt();
|
byte[] ttl_page = ttl.Page_txt();
|
||||||
fmt_exists.Bld_many(bfr, ttl.Page_db(), ttl_page, itm_href, ttl_page, contains_title, contains_text);
|
Fmt__exists__subc.Bld_many(bfr, ttl.Page_db(), ttl_page, itm_href, ttl_page, contains_title, contains_text);
|
||||||
}
|
}
|
||||||
private byte[] Bld_contains_text(Xow_msg_mgr msg_mgr, int count_subcs, int count_pages, int count_files) {
|
private byte[] Bld_contains_text(Xow_msg_mgr msg_mgr, int count_subcs, int count_pages, int count_files) {
|
||||||
if (count_subcs == 0 && count_pages == 0 && count_files == 0) return Bry_.Empty;
|
if (count_subcs == 0 && count_pages == 0 && count_files == 0) return Bry_.Empty;
|
||||||
@ -48,7 +52,7 @@ class Xoctg_fmt_itm_subc extends Xoctg_fmt_itm_base {
|
|||||||
bfr.Add(msg_mgr.Val_by_id_args(msg_id, val));
|
bfr.Add(msg_mgr.Val_by_id_args(msg_id, val));
|
||||||
} private static final byte[] Bld_contains_text_itm_dlm = Bry_.new_a7(", ");
|
} private static final byte[] Bld_contains_text_itm_dlm = Bry_.new_a7(", ");
|
||||||
private static final Bry_fmt
|
private static final Bry_fmt
|
||||||
fmt_exists = Bry_fmt.Auto_nl_skip_last
|
Fmt__exists__subc = Bry_fmt.Auto_nl_skip_last
|
||||||
( ""
|
( ""
|
||||||
, " <li>"
|
, " <li>"
|
||||||
, " <div class=\"CategoryTreeSection\">"
|
, " <div class=\"CategoryTreeSection\">"
|
||||||
|
Loading…
Reference in New Issue
Block a user