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

'v3.9.4.1'

This commit is contained in:
gnosygnu
2016-09-25 22:05:47 -04:00
parent 35d78f6106
commit e3b393650d
211 changed files with 3148 additions and 2197 deletions

View File

@@ -514,7 +514,7 @@ case Xol_msg_itm_.Id_xowa_wikidata_links_special: return new_(Xol_msg_itm_.Id_xo
}
public static byte[] eval_(Bry_bfr bfr, Xol_msg_itm tmp_msg_itm, byte[] val, Object... args) {
synchronized (tmp_fmtr) { // LOCK:static-objs; DATE:2016-07-07
val = gplx.xowa.apps.gfs.Xoa_gfs_php_mgr.Xto_gfs(bfr, val);
val = gplx.xowa.apps.gfs.Gfs_php_converter.To_gfs(bfr, val);
update_val_(tmp_msg_itm, val);
return tmp_fmtr.Bld_bry_many(bfr, args);
}

View File

@@ -22,10 +22,6 @@ import gplx.xowa.apps.gfs.*;
import gplx.xowa.htmls.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.dbs.*;
public class Xol_msg_mgr_ {
// public static String Get_msg_val_gui_or_null(Xol_lang_itm lang, byte[] pre, byte[] key, byte[] suf) {
// String rv = Get_msg_val_gui_or_null(lang, pre, key, suf);
// return rv == null ? "<" + String_.new_u8(Bry_.Add(pre, key, suf)) + ">" : rv;
// }
public static String Get_msg_val_gui_or_empty(Xoa_lang_mgr lang_mgr, Xol_lang_itm lang, byte[] pre, byte[] key, byte[] suf) { // get from lang, else get from en; does not use get_msg_val to skip db lookups; should only be used for gui; DATE:2014-05-28
String rv = Get_msg_val_gui_or_null(lang_mgr, lang, pre, key, suf);
return rv == null ? "" : rv;
@@ -102,45 +98,12 @@ public class Xol_msg_mgr_ {
}
}
else { // page found; dump entire contents
msg_val = Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, msg_db); // note that MediaWiki msg's use php arg format ($1); xowa.gfs msgs are already converted
msg_val = Gfs_php_converter.To_gfs(tmp_bfr, msg_db); // note that MediaWiki msg's use php arg format ($1); xowa.gfs msgs are already converted
msg_in_wiki.Defined_in_(Xol_msg_itm.Defined_in__wiki);
}
// Xoa_page msg_page = Get_msg_itm_from_db(wiki, lang, msg_key, msg_key_sub_root);
// byte[] msg_val = Bry_.Empty;
// if (msg_page.Db().Page().Exists_n()) { // [[MediaWiki:key/fallback]] still not found; search "lang.gfs";
// Xol_msg_itm msg_in_lang = Get_msg_itm_from_gfs(wiki, lang, msg_key_sub_root);
// if (msg_in_lang == null) {
// msg_val = tmp_bfr.Add_byte(Byte_ascii.Lt).Add(msg_key).Add_byte(Byte_ascii.Gt).To_bry_and_clear(); // set val to <msg_key>
// msg_in_wiki.Defined_in_(Xol_msg_itm.Defined_in__none);
// }
// else {
// msg_val = msg_in_lang.Val();
// msg_in_wiki.Defined_in_(Xol_msg_itm.Defined_in__lang);
// }
// }
// else { // page found; dump entire contents
// msg_val = Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, msg_page.Db().Text().Text_bry()); // note that MediaWiki msg's use php arg format ($1); xowa.gfs msgs are already converted
// msg_in_wiki.Defined_in_(Xol_msg_itm.Defined_in__wiki);
// }
Xol_msg_itm_.update_val_(msg_in_wiki, msg_val);
return msg_in_wiki;
}
// private static Xoa_page Get_msg_itm_from_db(Xowe_wiki wiki, Xol_lang_itm lang, byte[] msg_key, byte[] msg_key_sub_root) {
// byte[] ns_bry = wiki.Ns_mgr().Ns_mediawiki().Name_db_w_colon();
// Xoa_ttl ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key)); // ttl="MediaWiki:msg_key"; note that there may be "/lang"; EX:pl.d:Wikislownik:Bar/Archiwum_6 and newarticletext/pl
// Xoae_page rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Load_page_by_ttl_for_msg(ttl);
// if (rv.Db().Page().Exists_n()) { // [[MediaWiki:key]] not found; search for [[MediaWiki:key/fallback]]
// byte[][] fallback_ary = lang.Fallback_bry_ary();
// int fallback_ary_len = fallback_ary.length;
// for (int i = 0; i < fallback_ary_len; i++) {
// byte[] fallback = fallback_ary[i];
// ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key_sub_root, Slash_bry, fallback)); // ttl="MediaWiki:msg_key/fallback"
// rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Load_page_by_ttl_for_msg(ttl);
// if (rv.Db().Page().Exists()) break;
// }
// }
// return rv;
// }
private static byte[] Get_msg_from_db_or_null(Xow_wiki wiki, Xol_lang_itm lang, byte[] msg_key, byte[] msg_key_sub_root) {
byte[] ns_bry = wiki.Ns_mgr().Ns_mediawiki().Name_db_w_colon();
Xoa_ttl ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key)); // ttl="MediaWiki:msg_key"; note that there may be "/lang"; EX:pl.d:Wikislownik:Bar/Archiwum_6 and newarticletext/pl
@@ -162,14 +125,20 @@ public class Xol_msg_mgr_ {
}
private static byte[] Load_msg_from_db_or_null(Xow_wiki wiki, Xoa_ttl ttl) {
Xoa_page pg = null;
if (wiki.Type_is_edit()) {
if (wiki.Type_is_edit()) // NOTE: this check only works when loading pages directly (EX:en.wikipedia.org/wiki/MediaWiki:Sidebar); however, due to way msgs load, wiki is always edit, even if html_dump; DATE:2016-09-17
pg = ((Xowe_wiki)wiki).Data_mgr().Load_page_by_ttl_for_msg(ttl);
}
else {
// HACK: handle htmp_dump wikis when loading messages such as sidebar; DATE:2016-09-17
if ( !wiki.Type_is_edit() // app is drd; DATE:2016-09-23
|| ( pg.Db().Page().Exists() // page exists
&& Bry_.Len_eq_0(pg.Db().Text().Text_bry()) // but text is empty -> check html_dump
)
) {
Xoh_page hpg = new Xoh_page();
pg = hpg;
hpg.Ctor_by_hview(wiki, Xoa_url.New(wiki, ttl), ttl, -1);
((Xowv_wiki)wiki).Pages_get(hpg, gplx.core.net.Gfo_url.Empty, ttl); // NOTE: url is only for "Special:" pages
wiki.Html__hdump_mgr().Load_mgr().Load(hpg, ttl);
pg.Db().Text().Text_bry_(pg.Db().Html().Html_bry());
}
return pg.Db().Page().Exists() ? pg.Db().Text().Text_bry() : null;
}