1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

v1.10.4.1

This commit is contained in:
gnosygnu
2014-10-26 22:13:39 -04:00
parent 7d8984f6a8
commit eddb6bebc7
71 changed files with 1265 additions and 366 deletions

View File

@@ -32,13 +32,13 @@ public class Xow_lang_grp implements GfoInvkAble {
Xow_lang_itm[] itms_ary = this.Itms();
int itms_len = itms_ary.length;
for (int i = 0; i < itms_len; i++)
itms_ary[i].Atrs_set(null, false); // clear out pre-existing page names; needed b/c this struct is a singleton for entire wiki
itms_ary[i].Atrs_set(null, false, null); // clear out pre-existing page names; needed b/c this struct is a singleton for entire wiki
itms_active_len = 0;
}
public Bry_fmtr Html_all() {return html_all;} Bry_fmtr html_all; public Xow_lang_grp Html_all_(String s) {html_all = Bry_fmtr.new_(s, "all_name", "grps"); return this;}
public byte[] Html_grp_bgn() {return html_grp_bgn;} private byte[] html_grp_bgn = Bry_.new_ascii_("\n <tr>");
public byte[] Html_grp_end() {return html_grp_end;} private byte[] html_grp_end = Bry_.new_ascii_("\n </tr>");
public Bry_fmtr Html_itm() {return html_itm;} Bry_fmtr html_itm; public Xow_lang_grp Html_itm_(String s) {html_itm = Bry_fmtr.new_(s, "lang_code", "lang_domain", "lang_name", "lang_href", "pagename_translation"); return this;}
public Bry_fmtr Html_itm() {return html_itm;} Bry_fmtr html_itm; public Xow_lang_grp Html_itm_(String s) {html_itm = Bry_fmtr.new_(s, "lang_code", "lang_domain", "lang_name", "lang_href", "pagename_translation", "page_badge"); return this;}
public void Html_bld(Bry_bfr bfr, Xow_wiki wiki) {
Xow_lang_itm[] itms_ary = this.Itms();
if (sort_mode == Xow_lang_grp.Sort_mode_page_name)
@@ -62,15 +62,15 @@ public class Xow_lang_grp implements GfoInvkAble {
Xow_lang_grp rv = new Xow_lang_grp();
rv.lang_mgr = lang_mgr; rv.id = id; rv.key = key; rv.name = key;
rv.Html_all_(String_.Concat_lines_nl_skip_last
( ""
, " <h4>~{all_name}</h4>"
, " <table style='width: 100%;'>~{grps}"
, " </table>"
));
( ""
, " <h4>~{all_name}</h4>"
, " <table style='width: 100%;'>~{grps}"
, " </table>"
));
rv.Html_itm_(String_.Concat_lines_nl_skip_last
( ""
, " <td style='width: 10%; padding-bottom: 5px;'>~{lang_name}</td><td style='width: 20%; padding-bottom: 5px;'><a hreflang=\"~{lang_code}\" title=\"~{pagename_translation}\" href=\"~{lang_href}\">~{pagename_translation}</a></td><td style='width: 3%; padding-bottom: 5px;'></td>"
));
( ""
, " <td style='width: 10%; padding-bottom: 5px;'>~{lang_name}</td><td style='width: 20%; padding-bottom: 5px;'><li~{page_badge}><a hreflang=\"~{lang_code}\" title=\"~{pagename_translation}\" href=\"~{lang_href}\">~{pagename_translation}</a></li></td><td style='width: 3%; padding-bottom: 5px;'></td>"
));
return rv;
} private Xow_lang_grp() {}
Xow_lang_mgr lang_mgr;

View File

@@ -27,11 +27,12 @@ public class Xow_lang_itm {
public byte[] Page_name() {return page_name;} private byte[] page_name;
public boolean Page_name_has() {return Bry_.Len_gt_0(page_name);}
public boolean Empty_xwiki() {return empty_xwiki;} private boolean empty_xwiki;
public byte[][] Page_badges() {return page_badges;} private byte[][] page_badges;
public void Html_bld(Bry_bfr bfr, Xow_wiki wiki) {
html_grp.Html_itm().Bld_bfr(bfr, lang.Key_bry(), xwiki.Domain(), lang.Local_name_bry(), page_name);
}
public void Atrs_set(byte[] page_name, boolean empty_xwiki) {
this.page_name = page_name; this.empty_xwiki = empty_xwiki;
public void Atrs_set(byte[] page_name, boolean empty_xwiki, byte[][] page_badges) {
this.page_name = page_name; this.empty_xwiki = empty_xwiki; this.page_badges = page_badges;
html_grp.Itms_active_len_add_one_();
}
}

View File

@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa; import gplx.*;
import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apis.xowa.html.*;
import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apis.xowa.html.*; import gplx.xowa.xtns.wdatas.core.*;
public class Xow_lang_mgr {
Xow_lang_mgr() {
int len = Xol_lang_itm_.Id__max;
@@ -67,15 +67,16 @@ public class Xow_lang_mgr {
else return GfoInvkAble_.Rv_unhandled;
return this;
} private static final String Invk_get = "get", Invk_sort = "sort";
public void Html_bld(Bry_bfr bfr, Xow_wiki wiki, ListAdp ttl_list, byte[] qid) {
public void Html_bld(Bry_bfr bfr, Xow_wiki wiki, ListAdp slink_list, byte[] qid) {
int grp_len = hash.Count();
for (int i = 0; i < grp_len; i++) {
Xow_lang_grp grp = (Xow_lang_grp)hash.FetchAt(i);
grp.Itms_reset();
}
int ttl_list_len = ttl_list.Count();
for (int i = 0; i < ttl_list_len; i++) {
Xoa_ttl ttl = (Xoa_ttl)ttl_list.FetchAt(i);
int slink_len = slink_list.Count();
for (int i = 0; i < slink_len; i++) {
Wdata_sitelink_itm slink = (Wdata_sitelink_itm)slink_list.FetchAt(i);
Xoa_ttl ttl = slink.Page_ttl();
Xow_xwiki_itm xwiki = ttl.Wik_itm();
int lang_id = xwiki.Lang_id();
Xow_lang_itm itm = itms[lang_id]; // NOTE: handles ttls like [[fr:]] and [[:fr;]] which have an empty Page_txt, but a valued Full_txt_raw
@@ -85,9 +86,9 @@ public class Xow_lang_mgr {
ttl_bry = wiki.Ctx().Cur_page().Ttl().Page_txt();
empty_xwiki = true;
}
itm.Atrs_set(ttl_bry, empty_xwiki);
itm.Atrs_set(ttl_bry, empty_xwiki, slink.Badges());
}
html_bldr.Init(this, wiki, ttl_list, ttl_list_len, qid);
html_bldr.Init(this, wiki, slink_list, slink_len, qid);
html_bldr.XferAry(bfr, -1);
} private Xow_lang_itm[] itms = null; Xow_lang_html html_bldr = new Xow_lang_html();
public static Xow_lang_mgr dflt_() {
@@ -139,12 +140,13 @@ class Xow_lang_html implements Bry_fmtr_arg {
byte[] domain = itm.Lang_domain();
byte[] page_name = itm.Page_name();
byte[] local_name = itm.Lang_name();
byte[] badge_cls = Badge_cls(tmp_bfr, itm.Page_badges());
if (wiki.App().User().Wiki().Xwiki_mgr().Get_by_key(domain) == null)
tmp_bfr.Add(Xoh_href_parser.Href_http_bry).Add(domain).Add(Xoh_href_parser.Href_wiki_bry);
else
tmp_bfr.Add(Xoh_href_parser.Href_site_bry).Add(domain).Add(Xoh_href_parser.Href_wiki_bry);
if (!itm.Empty_xwiki()) tmp_bfr.Add(page_name);
grp.Html_itm().Bld_bfr_many(bfr, lang_key, domain, local_name, tmp_bfr.Xto_bry_and_clear(), page_name);
grp.Html_itm().Bld_bfr_many(bfr, lang_key, domain, local_name, tmp_bfr.Xto_bry_and_clear(), page_name, badge_cls);
++grp_counter;
if (grp_counter == 3) {
row_opened = false;
@@ -160,4 +162,30 @@ class Xow_lang_html implements Bry_fmtr_arg {
break;
}
} private Xow_lang_grp grp; Bry_bfr tmp_bfr = Bry_bfr.reset_(255);
private static byte[] Badge_cls(Bry_bfr bfr, byte[][] badges) {
if (badges == null) badges = Bry_.Ary_empty;
int badges_len = badges.length;
bfr.Add(Cls_bgn);
if (badges_len == 0)
bfr.Add(Badge_none_cls);
else {
for (int i = 0; i < badges_len; ++i) {
if (i != 0) bfr.Add_byte_comma();
byte[] badge = badges[i];
if (Bry_.Eq(badge, Badge_good_qid)) bfr.Add(Badge_good_cls);
else if (Bry_.Eq(badge, Badge_feat_qid)) bfr.Add(Badge_feat_cls);
else Gfo_usr_dlg_._.Warn_many("", "", "unknown badge: badge~{0}", String_.new_utf8_(badge));
}
}
bfr.Add_byte_apos();
return bfr.Xto_bry_and_clear();
}
private static final byte[]
Badge_good_qid = Bry_.new_ascii_("Q17437798")
, Badge_good_cls = Bry_.new_ascii_("badge-goodarticle")
, Badge_feat_qid = Bry_.new_ascii_("Q17437796")
, Badge_feat_cls = Bry_.new_ascii_("badge-featuredarticle")
, Badge_none_cls = Bry_.new_ascii_("badge-none")
, Cls_bgn = Bry_.new_ascii_(" class='")
;
}

View File

@@ -59,7 +59,7 @@ public class Xow_lang_mgr_fxt {
wiki.Html_mgr().Html_wtr().Write_all(bfr, ctx, raw_bry, root);
Bry_bfr html_bfr = Bry_bfr.new_();
wiki.Xwiki_mgr().Lang_mgr().Html_bld(html_bfr, wiki, ctx.Cur_page().Xwiki_langs(), gplx.xowa.xtns.wdatas.Wdata_xwiki_link_wtr.Qid_null);
wiki.Xwiki_mgr().Lang_mgr().Html_bld(html_bfr, wiki, ctx.Cur_page().Slink_list(), gplx.xowa.xtns.wdatas.Wdata_xwiki_link_wtr.Qid_null);
Tfds.Eq_str_lines(expd, html_bfr.Xto_str_and_clear());
}
}

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa; import gplx.*;
import org.junit.*;
public class Xow_lang_mgr_tst {
Xow_lang_mgr_fxt fxt = new Xow_lang_mgr_fxt();
private Xow_lang_mgr_fxt fxt = new Xow_lang_mgr_fxt();
@Before public void init() {fxt.Clear();}
@Test public void Basic() {
fxt.tst("[[simple:Earth]] [[fr:Terre]] [[es:Tierra]] [[de:Erde]] [[it:Terre]]", String_.Concat_lines_nl_skip_last
@@ -28,16 +28,16 @@ public class Xow_lang_mgr_tst {
, " <h4>grp1</h4>"
, " <table style='width: 100%;'>"
, " <tr>"
, " <td style='width: 10%; padding-bottom: 5px;'>Simple</td><td style='width: 20%; padding-bottom: 5px;'><a hreflang=\"simple\" title=\"Earth\" href=\"/site/simple.wikipedia.org/wiki/Earth\">Earth</a></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>Spanish</td><td style='width: 20%; padding-bottom: 5px;'><a hreflang=\"es\" title=\"Tierra\" href=\"/site/es.wikipedia.org/wiki/Tierra\">Tierra</a></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>Italian</td><td style='width: 20%; padding-bottom: 5px;'><a hreflang=\"it\" title=\"Terre\" href=\"/site/it.wikipedia.org/wiki/Terre\">Terre</a></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>Simple</td><td style='width: 20%; padding-bottom: 5px;'><li class='badge-none'><a hreflang=\"simple\" title=\"Earth\" href=\"/site/simple.wikipedia.org/wiki/Earth\">Earth</a></li></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>Spanish</td><td style='width: 20%; padding-bottom: 5px;'><li class='badge-none'><a hreflang=\"es\" title=\"Tierra\" href=\"/site/es.wikipedia.org/wiki/Tierra\">Tierra</a></li></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>Italian</td><td style='width: 20%; padding-bottom: 5px;'><li class='badge-none'><a hreflang=\"it\" title=\"Terre\" href=\"/site/it.wikipedia.org/wiki/Terre\">Terre</a></li></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " </tr>"
, " </table>"
, " <h4>grp2</h4>"
, " <table style='width: 100%;'>"
, " <tr>"
, " <td style='width: 10%; padding-bottom: 5px;'>French</td><td style='width: 20%; padding-bottom: 5px;'><a hreflang=\"fr\" title=\"Terre\" href=\"/site/fr.wikipedia.org/wiki/Terre\">Terre</a></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>German</td><td style='width: 20%; padding-bottom: 5px;'><a hreflang=\"de\" title=\"Erde\" href=\"/site/de.wikipedia.org/wiki/Erde\">Erde</a></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>French</td><td style='width: 20%; padding-bottom: 5px;'><li class='badge-none'><a hreflang=\"fr\" title=\"Terre\" href=\"/site/fr.wikipedia.org/wiki/Terre\">Terre</a></li></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>German</td><td style='width: 20%; padding-bottom: 5px;'><li class='badge-none'><a hreflang=\"de\" title=\"Erde\" href=\"/site/de.wikipedia.org/wiki/Erde\">Erde</a></li></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " </tr>"
, " </table>"
, " </div>"
@@ -52,7 +52,7 @@ public class Xow_lang_mgr_tst {
, " <h4>grp1</h4>"
, " <table style='width: 100%;'>"
, " <tr>"
, " <td style='width: 10%; padding-bottom: 5px;'>Simple</td><td style='width: 20%; padding-bottom: 5px;'><a hreflang=\"simple\" title=\"Test page\" href=\"/site/simple.wikipedia.org/wiki/\">Test page</a></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>Simple</td><td style='width: 20%; padding-bottom: 5px;'><li class='badge-none'><a hreflang=\"simple\" title=\"Test page\" href=\"/site/simple.wikipedia.org/wiki/\">Test page</a></li></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " </tr>"
, " </table>"
, " </div>"
@@ -68,7 +68,7 @@ public class Xow_lang_mgr_tst {
, " <h4>grp1</h4>"
, " <table style='width: 100%;'>"
, " <tr>"
, " <td style='width: 10%; padding-bottom: 5px;'>Chinese</td><td style='width: 20%; padding-bottom: 5px;'><a hreflang=\"zh\" title=\"Earth\" href=\"http://zh.wikipedia.org/wiki/Earth\">Earth</a></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>Chinese</td><td style='width: 20%; padding-bottom: 5px;'><li class='badge-none'><a hreflang=\"zh\" title=\"Earth\" href=\"http://zh.wikipedia.org/wiki/Earth\">Earth</a></li></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " </tr>"
, " </table>"
, " </div>"
@@ -83,7 +83,7 @@ public class Xow_lang_mgr_tst {
, " <h4>grp1</h4>"
, " <table style='width: 100%;'>"
, " <tr>"
, " <td style='width: 10%; padding-bottom: 5px;'>Simple</td><td style='width: 20%; padding-bottom: 5px;'><a hreflang=\"simple\" title=\"A#b\" href=\"/site/simple.wikipedia.org/wiki/A#b\">A#b</a></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " <td style='width: 10%; padding-bottom: 5px;'>Simple</td><td style='width: 20%; padding-bottom: 5px;'><li class='badge-none'><a hreflang=\"simple\" title=\"A#b\" href=\"/site/simple.wikipedia.org/wiki/A#b\">A#b</a></li></td><td style='width: 3%; padding-bottom: 5px;'></td>"
, " </tr>"
, " </table>"
, " </div>"