") // NOTE: The newline after
is needed to accommodate htmltidy
, Wrap_gallery_text_end = Bry_.new_ascii_("\n
") // NOTE: prepend "\n"; will cause extra \n when caption exists, but needed when caption doesn't exists; EX: "
"; \n puts
;
@gplx.Virtual public void Get_thumb_size(Xop_lnki_tkn lnki, Xof_ext ext) { // REF.MW: getThumbParams; Get the transform parameters for a thumbnail.
- lnki.Lnki_w_(itm_default_w);
- lnki.Lnki_h_(itm_default_h);
+ lnki.W_(itm_default_w);
+ lnki.H_(itm_default_h);
}
@gplx.Virtual public void Adjust_image_parameters(Xof_xfer_itm xfer_itm) { // REF.MW: Adjust the image parameters for a thumbnail. Used by a subclass to insert extra high resolution images.
}
diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_packed_base.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_packed_base.java
index cd6a6de2a..9d527fcd1 100644
--- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_packed_base.java
+++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_packed_base.java
@@ -59,8 +59,8 @@ public class Gallery_mgr_packed_base extends Gallery_mgr_base {
w = itm_default_w;
else
w = (itm_default_h) * 10 + 100; // We want the width not to be the constraining factor, so use random big number.
- lnki.Lnki_w_((int)(Scale_factor * w));
- lnki.Lnki_h_((int)(Scale_factor * itm_default_h));
+ lnki.W_((int)(Scale_factor * w));
+ lnki.H_((int)(Scale_factor * itm_default_h));
}
}
class Gallery_mgr_packed_overlay extends Gallery_mgr_packed_base {
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java
index 811fd9166..7adeb0b7b 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java
@@ -18,7 +18,7 @@ along with this program. If not, see
.
package gplx.xowa.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.wmfs.apis.*;
public class Pfunc_ifexist_mgr {
- private Xodb_page db_page = Xodb_page.tmp_();
+ private Xodb_page db_page = Xodb_page.new_tmp();
private HashAdp regy = HashAdp_.new_bry_();
public void Clear() {regy.Clear();}
public boolean Exists(Xowe_wiki wiki, byte[] raw_bry) {
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java
index e32cf6a29..1633bee63 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java
@@ -33,7 +33,7 @@ public class Pfunc_filepath extends Pf_func_base {
if (tmp_rslt .Repo_idx() == Byte_.Max_value_127) return;
Xof_repo_itm trg_repo = wiki.File_mgr().Repo_mgr().Repos_get_at(tmp_rslt.Repo_idx()).Trg();
xfer_itm.Set__ttl(ttl_bry, Bry_.Empty); // redirect is empty b/c Get_page does all redirect lookups
- byte[] url = url_bldr.Init_for_trg_html(Xof_repo_itm.Mode_orig, trg_repo, ttl_bry, xfer_itm.Lnki_md5(), xfer_itm.Lnki_ext(), Xof_img_size.Size_null_deprecated, Xof_doc_thumb.Null, Xof_doc_page.Null).Xto_bry();
+ byte[] url = url_bldr.Init_for_trg_html(Xof_repo_itm.Mode_orig, trg_repo, ttl_bry, xfer_itm.Lnki_md5(), xfer_itm.Lnki_ext(), Xof_img_size.Size_null_deprecated, Xof_lnki_time.Null, Xof_lnki_page.Null).Xto_bry();
bb.Add(url);
} private static final byte[] Bry_file = Bry_.new_ascii_("File:");
private static final Xof_xfer_itm xfer_itm = new Xof_xfer_itm();
diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java
index ad1ad6acb..f798a8c94 100644
--- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java
+++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java
@@ -264,7 +264,7 @@ public class Pp_pages_nde implements Xox_xnde, Xop_xnde_atr_parser {
int page_leaf_max = 0;
for (int i = 0; i < len; i++) {
Xodb_page page = (Xodb_page)rslt.FetchAt(i);
- Xoa_ttl page_ttl = Xoa_ttl.parse_(wiki, ns_page_id, page.Ttl_wo_ns()); if (page_ttl == null) continue; // page_ttl is not valid; should never happen;
+ Xoa_ttl page_ttl = Xoa_ttl.parse_(wiki, ns_page_id, page.Ttl_page_db()); if (page_ttl == null) continue; // page_ttl is not valid; should never happen;
byte[] page_ttl_leaf = page_ttl.Leaf_txt(); if (page_ttl_leaf == null) continue; // page is not leaf; should not happen
int page_leaf_val = Bry_.Xto_int_or(page_ttl_leaf, Int_.MinValue); if (page_leaf_val == Int_.MinValue) continue; // leaf is not int; ignore
if (page_leaf_val > page_leaf_max) page_leaf_max = page_leaf_val;
diff --git a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java
index 226b3e654..9dc71c469 100644
--- a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java
@@ -103,8 +103,8 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm {
score_xtn.Html_img().Bld_bfr_many(bfr, html_id_a, html_a_href_tmp, html_a_xowa_ttl, html_id_img, html_img_src_tmp, html_img_alt_tmp);
} private byte[] sha1; private String sha1_prefix; private Io_url output_dir, png_file, aud_file; private String html_id_pre, html_id_img, html_id_a, html_a_href, html_img_src, html_img_alt;
private String Fill_xfer(Xowe_wiki wiki, Xop_ctx ctx, Xoae_page page, byte[] ttl) {
- Xof_xfer_itm xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(ctx, page.File_queue(), ttl, Xop_lnki_type.Id_none, -1, -1, -1, Xof_doc_thumb.Null, Xof_doc_page.Null, false, Fill_xfer_ref);
- return String_.new_utf8_(xfer_itm.Html_orig_src());
+ Xof_xfer_itm xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(ctx, page.File_queue(), ttl, Xop_lnki_type.Id_none, -1, -1, -1, Xof_lnki_time.Null, Xof_lnki_page.Null, false, Fill_xfer_ref);
+ return String_.new_utf8_(xfer_itm.Html_orig_url());
} private Bool_obj_ref Fill_xfer_ref = Bool_obj_ref.n_();
public void Hcmd_exec(Xoae_app app, Gfo_usr_dlg usr_dlg, Xoae_page page) {
fail_msg = "unknown failure";
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java
index 10c33bb4e..6ef739a0e 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java
@@ -56,6 +56,7 @@ public class Scrib_lib_title implements Scrib_lib {
;
private static final String[] Proc_names = String_.Ary(Invk_newTitle, Invk_makeTitle, Invk_getExpensiveData, Invk_getUrl, Invk_getContent, Invk_getFileInfo, Invk_getCurrentTitle, Invk_protectionLevels, Invk_cascadingProtection);
public boolean NewTitle(Scrib_proc_args args, Scrib_proc_rslt rslt) {
+ if (args.Len() == 0) return rslt.Init_obj(null); // invalid title, return null; EX:{{#invoke:Message box|fmbox}} DATE:2015-03-04
byte[] ttl_bry = args.Pull_bry(0);
Object ns_obj = args.Cast_obj_or_null(1);
Xowe_wiki wiki = core.Wiki();
@@ -136,7 +137,7 @@ public class Scrib_lib_title implements Scrib_lib {
ttl_exists = core.Wiki().Db_mgr().Load_mgr().Load_by_ttl(tmp_db_page, ttl.Ns(), ttl.Page_db());
}
if (ttl_exists) {
- ttl_redirect = tmp_db_page.Type_redirect();
+ ttl_redirect = tmp_db_page.Redirected();
ttl_id = tmp_db_page.Id();
}
KeyVal[] rv = new KeyVal[4];
@@ -224,6 +225,6 @@ public class Scrib_lib_title implements Scrib_lib {
if (!ns_file_or_media)
rv[rv_idx++] = KeyVal_.new_("file" , false); // REF.MW: if ( $ns !== NS_FILE && $ns !== NS_MEDIA ) $ret['file'] = false;
return rv;
- } private static final Xodb_page tmp_db_page = Xodb_page.tmp_();
+ } private static final Xodb_page tmp_db_page = Xodb_page.new_tmp();
public static final String Key_wikitexet = "wikitext";
}
diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title_tst.java
index b177ed06d..e9431be17 100644
--- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title_tst.java
@@ -100,7 +100,7 @@ public class Scrib_lib_title_tst {
}
private static void Wiki_orig_tbl__insert(Xowe_wiki wiki, String ttl_str, int w, int h) {
byte[] ttl_bry = Bry_.new_utf8_(ttl_str);
- wiki.File_mgr().Fsdb_mgr().Orig_mgr().Insert(Xof_repo_itm.Repo_remote, ttl_bry, Xof_ext_.new_by_ttl_(ttl_bry).Id(), w, h, Bry_.Empty, Xof_orig_wkr_.Status_found);
+ wiki.File_mgr().Fsdb_mgr().Orig_mgr().Insert(Xof_repo_itm.Repo_remote, ttl_bry, Xof_ext_.new_by_ttl_(ttl_bry).Id(), w, h, Bry_.Empty);
}
// private static void Init_page_regy(Xowe_wiki wiki, String ttl, int id, boolean is_redirect) {
// String url_str = "test/en.wikipedia.org/wiki_page_regy";
diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java
index 0dc05d0e3..a9f427d8d 100644
--- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java
+++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java
@@ -48,7 +48,7 @@ public class Xop_languages_xnde implements Xox_xnde {
boolean english_needed = true;
for (int i = 0; i < len; i++) {
Xodb_page page = (Xodb_page)rslts.FetchAt(i);
- byte[] page_ttl_bry = page.Ttl_wo_ns();
+ byte[] page_ttl_bry = page.Ttl_page_db();
int page_ttl_bry_len = page_ttl_bry.length;
if (Bry_.Eq(root_ttl_bry, page_ttl_bry)) continue; // ignore self; EX: "page"
if (lang_bgn < page_ttl_bry_len // guard against out of bounds
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java
index a9a50d1df..3eed37a58 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java
@@ -34,7 +34,7 @@ public class Wdata_xwiki_link_wtr_tst {
fxt.Init_external_links_mgr_clear();
fxt.Test_parse_langs("{{noexternallanglinks:de}}", String_.Concat_lines_nl
( "
"
- , "
In other languages (wikidata)
"
+ , "
"
, "
"
, "
grp1
"
, "
"
@@ -89,7 +89,7 @@ public class Wdata_xwiki_link_wtr_tst {
.Xto_wdoc());
fxt.Test_parse_langs("", String_.Concat_lines_nl
( ""
- , "
In other languages (wikidata)
"
+ , "
"
, "
"
, "
grp1
"
, "
"
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java
index edb199969..f5696143a 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java
@@ -43,7 +43,7 @@ public class Xob_wdata_db_cmd extends Xob_dump_mgr_base implements Xob_cmd {
}
@Override public void Exec_pg_itm_hook(Xow_ns ns, Xodb_page page, byte[] page_src) {
Json_doc jdoc = json_parser.Parse(page_src); if (jdoc == null) return; // not a json document
- Wdata_doc wdoc = new Wdata_doc(page.Ttl_wo_ns(), wdata_mgr, jdoc);
+ Wdata_doc wdoc = new Wdata_doc(page.Ttl_page_db(), wdata_mgr, jdoc);
tbl_mgr.Exec_insert_by_wdoc(lang_key, wdata_mgr, page.Id(), wdoc);
}
@Override public void Exec_commit_hook() {
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base.java
index 0cd90ec5c..6eb4bbc01 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base.java
@@ -31,9 +31,9 @@ public abstract class Xob_wdata_pid_base extends Xob_itm_dump_base implements Xo
} Json_parser parser;
public void Wkr_run(Xodb_page page) {
if (page.Ns_id() != Wdata_wiki_mgr.Ns_property) return;
- Json_doc jdoc = parser.Parse(page.Text());
+ Json_doc jdoc = parser.Parse(page.Wtxt());
if (jdoc == null) {
- bldr.Usr_dlg().Warn_many(GRP_KEY, "json.invalid", "json is invalid: ns=~{0} id=~{1}", page.Ns_id(), String_.new_utf8_(page.Ttl_wo_ns()));
+ bldr.Usr_dlg().Warn_many(GRP_KEY, "json.invalid", "json is invalid: ns=~{0} id=~{1}", page.Ns_id(), String_.new_utf8_(page.Ttl_page_db()));
return;
}
Wdata_doc_parser wdoc_parser = app.Wiki_mgr().Wdata_mgr().Wdoc_parser(jdoc);
diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java
index e98559b55..869181e92 100644
--- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java
+++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java
@@ -31,9 +31,9 @@ public abstract class Xob_wdata_qid_base extends Xob_itm_dump_base implements Xo
} private Json_parser parser;
public void Wkr_run(Xodb_page page) {
if (page.Ns_id() != Xow_ns_.Id_main) return; // qid pages are only in the Main namespace
- Json_doc jdoc = parser.Parse(page.Text());
+ Json_doc jdoc = parser.Parse(page.Wtxt());
if (jdoc == null) {
- bldr.Usr_dlg().Warn_many(GRP_KEY, "json.invalid", "json is invalid: ns=~{0} id=~{1}", page.Ns_id(), String_.new_utf8_(page.Ttl_wo_ns()));
+ bldr.Usr_dlg().Warn_many(GRP_KEY, "json.invalid", "json is invalid: ns=~{0} id=~{1}", page.Ns_id(), String_.new_utf8_(page.Ttl_page_db()));
return;
}
Wdata_doc_parser wdoc_parser = app.Wiki_mgr().Wdata_mgr().Wdoc_parser(jdoc);
diff --git a/400_xowa/src/gplx/xowa2/apps/urls/Xoav_url_parser.java b/400_xowa/src/gplx/xowa2/apps/urls/Xoav_url_parser.java
index 52429a05a..94cc79de5 100644
--- a/400_xowa/src/gplx/xowa2/apps/urls/Xoav_url_parser.java
+++ b/400_xowa/src/gplx/xowa2/apps/urls/Xoav_url_parser.java
@@ -20,7 +20,7 @@ public class Xoav_url_parser {
private static final byte[] Bry_site = Bry_.new_ascii_("/site/"), Bry_wiki = Bry_.new_ascii_("/wiki/");
public void Parse_xo_href(Xoav_url rv, byte[] src, byte[] cur_wiki_bry) {
rv.Clear();
- int pos = 0;
+ int pos = 5; // remove "http:"
int src_len = src.length;
if (Bry_.HasAtBgn(src, Bry_site, pos, src_len))
pos = Parse_wiki(rv, src, src_len, pos);
diff --git a/400_xowa/src/gplx/xowa2/apps/urls/Xoav_url_parser_tst.java b/400_xowa/src/gplx/xowa2/apps/urls/Xoav_url_parser_tst.java
index 6e770093a..da8223386 100644
--- a/400_xowa/src/gplx/xowa2/apps/urls/Xoav_url_parser_tst.java
+++ b/400_xowa/src/gplx/xowa2/apps/urls/Xoav_url_parser_tst.java
@@ -20,10 +20,10 @@ import org.junit.*;
public class Xoav_url_parser_tst {
@Before public void init() {fxt.Clear();} private final Xoav_url_parser_fxt fxt = new Xoav_url_parser_fxt();
@Test public void Page() {
- fxt.Exec_parse_xo_href("/wiki/Earth").Test_wiki("en.wikipedia.org").Test_page("Earth");
+ fxt.Exec_parse_xo_href("http:/wiki/Earth").Test_wiki("en.wikipedia.org").Test_page("Earth");
}
@Test public void Site() {
- fxt.Exec_parse_xo_href("/site/en.wikipedia.org/wiki/Earth").Test_wiki("en.wikipedia.org").Test_page("Earth");
+ fxt.Exec_parse_xo_href("http:/site/en.wikipedia.org/wiki/Earth").Test_wiki("en.wikipedia.org").Test_page("Earth");
}
}
class Xoav_url_parser_fxt {
diff --git a/400_xowa/src/gplx/xowa2/files/Xofv_file_mgr_tst.java b/400_xowa/src/gplx/xowa2/files/Xofv_file_mgr_tst.java
index 861bf7996..a01ed9c19 100644
--- a/400_xowa/src/gplx/xowa2/files/Xofv_file_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa2/files/Xofv_file_mgr_tst.java
@@ -160,8 +160,8 @@ class Xof_xfer_mkr {
private void Reset() {
redirect_bry = Bry_.Empty;
upright = Xop_lnki_tkn.Upright_null;
- thumbtime = Xof_doc_thumb.Null;
- page = Xof_doc_page.Null;
+ thumbtime = Xof_lnki_time.Null;
+ page = Xof_lnki_page.Null;
}
public Xof_xfer_mkr Init_thumb(int uid, String ttl_str, int xfer_w, int xfer_h) {
this.lnki_type = Xop_lnki_type.Id_thumb;
@@ -207,30 +207,28 @@ class Xof_orig_itm_mkr {
}
class Xof_fsdb_mkr {
private byte[] repo_comm, repo_wiki, repo;
- private boolean file_is_orig;
- private byte[] ttl_bry; private byte lnki_type; private Xof_ext ext; private byte[] md5; private int file_w, file_h;
+ private byte[] ttl_bry; private byte lnki_type; private int file_w, file_h;
private double upright, thumbtime; private int page;
public Xof_fsdb_mkr() {this.Reset();}
public void Setup_repos(byte[] repo_comm, byte[] repo_wiki) {this.repo_comm = repo_comm; this.repo_wiki = repo_wiki;}
private void Reset() {
upright = Xop_lnki_tkn.Upright_null;
- thumbtime = Xof_doc_thumb.Null;
- page = Xof_doc_page.Null;
+ thumbtime = Xof_lnki_time.Null;
+ page = Xof_lnki_page.Null;
}
public Xof_fsdb_mkr Init_comm_thum(String ttl_str, int file_w, int file_h) {return Init(Bool_.Y, Bool_.N, ttl_str, file_w, file_h);}
public Xof_fsdb_mkr Init_comm_orig(String ttl_str, int file_w, int file_h) {return Init(Bool_.Y, Bool_.Y, ttl_str, file_w, file_h);}
public Xof_fsdb_mkr Init(boolean repo_is_commons, boolean file_is_orig, String ttl_str, int file_w, int file_h) {
- this.file_is_orig = file_is_orig; this.lnki_type = file_is_orig ? Xop_lnki_type.Id_none : Xop_lnki_type.Id_thumb;
+ this.lnki_type = file_is_orig ? Xop_lnki_type.Id_none : Xop_lnki_type.Id_thumb;
this.repo = repo_is_commons ? repo_comm : repo_wiki;
- this.ttl_bry = Bry_.new_utf8_(ttl_str); this.ext = Xof_ext_.new_by_ttl_(ttl_bry); this.md5 = Xof_xfer_itm_.Md5_(ttl_bry);
+ this.ttl_bry = Bry_.new_utf8_(ttl_str);
this.file_w = file_w; this.file_h = file_h;
return this;
}
public Xof_fsdb_itm Make() {
Xof_fsdb_itm rv = new Xof_fsdb_itm();
- rv.Ctor_by_lnki(ttl_bry, ext, md5, lnki_type, file_w, file_h, Xof_patch_upright_tid_.Tid_all, upright, thumbtime, page);
+ rv.Ctor_by_lnki(ttl_bry, lnki_type, file_w, file_h, Xof_patch_upright_tid_.Tid_all, upright, thumbtime, page);
rv.Orig_repo_name_(repo);
- rv.File_is_orig_(file_is_orig);
this.Reset();
return rv;
}
@@ -239,8 +237,8 @@ class Xou_cache_itm_mkr {
private byte[] dir; private byte[] ttl; private boolean is_orig; private int w, h; private double time; private int page; private long size;
public Xou_cache_itm_mkr() {this.Reset();}
private void Reset() {
- this.time = Xof_doc_thumb.Null;
- this.page = Xof_doc_page.Null;
+ this.time = Xof_lnki_time.Null;
+ this.page = Xof_lnki_page.Null;
this.h = 200;
this.size = 1;
}
@@ -263,7 +261,7 @@ class Xof_fsdb_mgr__test implements Xof_fsdb_mgr {
public Xof_fsdb_mgr__test() {this.Clear();}
public int Download_count() {return download_count;}
public void Add(Xof_fsdb_itm itm) {
- byte[] key = Bld_key_to_bry(tmp_bfr, itm.Orig_repo_name(), itm.Lnki_ttl(), itm.File_is_orig(), itm.Lnki_w(), itm.Lnki_time(), itm.Lnki_page());
+ byte[] key = Bld_key_to_bry(tmp_bfr, itm.Orig_repo_name(), itm.Lnki_ttl(), itm.Lnki_w(), itm.Lnki_time(), itm.Lnki_page());
// Tfds.Write("add:" + String_.new_utf8_(key));
hash.Add(key, itm);
}
@@ -273,7 +271,7 @@ class Xof_fsdb_mgr__test implements Xof_fsdb_mgr {
hash.Clear();
}
public boolean Download(Xofv_file_itm itm) {
- byte[] key = Bld_key_to_bry(tmp_bfr, itm.File_repo(), itm.File_ttl(), itm.Lnki_is_orig(), itm.Html_w(), itm.Lnki_time(), itm.Lnki_page());
+ byte[] key = Bld_key_to_bry(tmp_bfr, itm.File_repo(), itm.File_ttl(), itm.Html_w(), itm.Lnki_time(), itm.Lnki_page());
// Tfds.Write("down:" + String_.new_utf8_(key));
if (!hash.Has(key)) {
return false;
@@ -282,10 +280,9 @@ class Xof_fsdb_mgr__test implements Xof_fsdb_mgr {
++download_count;
return true;
}
- private static byte[] Bld_key_to_bry(Bry_bfr bfr, byte[] dir, byte[] name, boolean is_orig, int w, double time, int page) {
+ private static byte[] Bld_key_to_bry(Bry_bfr bfr, byte[] dir, byte[] name, int w, double time, int page) {
bfr .Add(dir).Add_byte_pipe()
.Add(name).Add_byte_pipe()
- .Add_int_bool(is_orig).Add_byte_pipe()
.Add_int_variable(w).Add_byte_pipe()
.Add_double(time).Add_byte_pipe()
.Add_int_variable(page).Add_byte_pipe()
diff --git a/400_xowa/src/gplx/xowa2/files/commons/Xof_commons_image_tbl.java b/400_xowa/src/gplx/xowa2/files/commons/Xof_commons_image_tbl.java
index 878b845ee..91484b1d6 100644
--- a/400_xowa/src/gplx/xowa2/files/commons/Xof_commons_image_tbl.java
+++ b/400_xowa/src/gplx/xowa2/files/commons/Xof_commons_image_tbl.java
@@ -50,8 +50,7 @@ public class Xof_commons_image_tbl {
);
} finally {rdr.Rls();}
}
- private static final String tbl_name = "image";
- private static final Db_meta_fld_list flds = Db_meta_fld_list.new_();
+ private static final String tbl_name = "image"; private static final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private static final String
fld_img_name = flds.Add_str("img_name", 255) // varbinary(255)
, fld_img_media_type = flds.Add_str("img_media_type", 255) // enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE')"
diff --git a/400_xowa/src/gplx/xowa2/gui/Xogv_img_wkr.java b/400_xowa/src/gplx/xowa2/gui/Xogv_img_wkr.java
deleted file mode 100644
index 720ca35b2..000000000
--- a/400_xowa/src/gplx/xowa2/gui/Xogv_img_wkr.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa2.gui; import gplx.*; import gplx.xowa2.*;
-import gplx.threads.*;
-import gplx.xowa.*;
-import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*;
-import gplx.xowa.html.hdumps.core.*;
-public class Xogv_img_wkr implements Gfo_thread_wkr {
- private final Xof_orig_mgr orig_mgr; private final Xof_bin_mgr bin_mgr; private final Xof_cache_mgr cache_mgr;
- private final Gfo_usr_dlg usr_dlg; private final Xow_repo_mgr repo_mgr; private final Xog_js_wkr js_wkr;
- private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2_(); private final Xof_img_size img_size = new Xof_img_size();
- private final Xoa_page hpg; private final ListAdp imgs; private final byte exec_tid;
- public Xogv_img_wkr(Xof_orig_mgr orig_mgr, Xof_bin_mgr bin_mgr, Xof_cache_mgr cache_mgr, Xow_repo_mgr repo_mgr, Xog_js_wkr js_wkr, Xoa_page hpg, ListAdp imgs, byte exec_tid) {
- this.usr_dlg = Gfo_usr_dlg_._;
- this.orig_mgr = orig_mgr; this.bin_mgr = bin_mgr; this.cache_mgr = cache_mgr; this.repo_mgr = repo_mgr; this.js_wkr = js_wkr;
- this.hpg = hpg; this.imgs = imgs; this.exec_tid = exec_tid;
- }
- public String Name() {return "xowa.load_imgs.wkr";}
- public boolean Resume() {return true;}
- public void Exec() {
- Show_imgs();
- }
- public void Show_imgs() {
- int len = imgs.Count();
- for (int i = 0; i < len; ++i)
- Show_img(exec_tid, hpg, (Xohd_data_itm__base)imgs.FetchAt(i));
- }
- private void Show_img(byte exec_tid, Xoa_page hpg, Xohd_data_itm__base hdump) {
- Xof_fsdb_itm fsdb = new Xof_fsdb_itm();
- fsdb.Ctor_by_lnki(hdump.Lnki_ttl(), Xof_ext_.new_by_id_(hdump.Lnki_ext()), Xof_xfer_itm_.Md5_(hdump.Lnki_ttl()), hdump.Lnki_type(), hdump.Lnki_w(), hdump.Lnki_h(), Xof_patch_upright_tid_.Tid_all, hdump.Lnki_upright(), hdump.Lnki_time(), hdump.Lnki_page());
- fsdb.Html_uid_(hdump.Html_uid());
- if (!Ctor_by_orig(exec_tid, fsdb)) return;
- if (fsdb.Lnki_ext().Is_not_viewable(exec_tid)) return; // file not viewable; exit; EX: exec_tid = page and fsdb is audio
- if (!Io_mgr._.ExistsFil(fsdb.Html_view_url())) {
- if (bin_mgr.Find_to_url_as_bool(exec_tid, fsdb)) {
- // if (fsdb.Insert()) Save_itm(fsdb);
- }
- else {
- usr_dlg.Warn_many("", "", "file not found: page=~{0} file=~{1} width=~{2}", hpg.Url().Xto_full_str_safe(), String_.new_utf8_(fsdb.Lnki_ttl()), fsdb.Lnki_w());
- fsdb.Rslt_bin_(Xof_bin_wkr_.Tid_not_found);
- // gplx.xowa.files.gui.Js_img_mgr.Update_img_missing(usr_dlg, fsdb.Html_uid()); // TODO: update caption with "" if image is missing
- return;
- }
- }
- Js_img_mgr.Update_img(hpg, js_wkr, fsdb);
- cache_mgr.Reg_and_check_for_size_0(fsdb);
- }
- private boolean Ctor_by_orig(byte exec_tid, Xof_fsdb_itm fsdb) {
- fsdb.Orig_status_(Xof_orig_wkr_.Status_missing_orig);
- Xof_orig_itm orig = orig_mgr.Find_by_ttl_or_null(fsdb.Lnki_ttl()); if (orig == Xof_orig_itm.Null) return false;
- // if (orig.Insert()) // set by wmf
- // orig_mgr.Insert(repo_tid, fsdb.Orig_ttl(), fsdb.Lnki_ext().Id(), fsdb.Orig_w(), fsdb.Orig_h(), fsdb.Orig_redirect(), Xof_orig_wkr_.Status_found);
- fsdb.Orig_status_(Xof_orig_wkr_.Status_found);
- byte repo_id = orig.Repo();
- Xof_repo_pair repo_pair = repo_mgr.Repos_get_by_id(repo_id);
- fsdb.Orig_repo_id_(repo_id);
- fsdb.Orig_repo_name_(repo_pair.Wiki_domain());
- fsdb.Orig_size_(orig.W(), orig.H());
- fsdb.Lnki_ext_(Xof_ext_.new_by_id_(orig.Ext())); // overwrite ext with whatever's in file_orig; needed for ogg -> oga / ogv
- if (Bry_.Len_gt_0(orig.Redirect())) // redirect exists; EX: A.png redirected to B.png
- fsdb.Ctor_by_orig_redirect(orig.Redirect()); // update fsdb with atrs of B.png
- fsdb.Html_size_calc(img_size, exec_tid);
- fsdb.Html_view_url_(url_bldr.To_url(repo_pair, fsdb, Bool_.N));
- fsdb.Html_orig_url_(url_bldr.To_url(repo_pair, fsdb, Bool_.Y));
- return true;
- }
-}
diff --git a/400_xowa/src/gplx/xowa2/gui/Xogv_tab_base.java b/400_xowa/src/gplx/xowa2/gui/Xogv_tab_base.java
index 24cded611..5db746179 100644
--- a/400_xowa/src/gplx/xowa2/gui/Xogv_tab_base.java
+++ b/400_xowa/src/gplx/xowa2/gui/Xogv_tab_base.java
@@ -29,8 +29,10 @@ public abstract class Xogv_tab_base {
public Xog_page Go_to(byte[] wiki, byte[] page, byte[] anch, byte[] qarg, boolean redirect_force, String bmk_pos) {
Xog_history_itm old_itm = this.Cur_itm();
Xog_history_itm new_itm = new Xog_history_itm(wiki, page, anch, qarg, redirect_force, bmk_pos);
- history_stack.Add(new_itm);
- return Fetch_page_and_show(old_itm, new_itm);
+ Xog_page rv = Fetch_page_and_show(old_itm, new_itm);
+ if (rv.Exists())
+ history_stack.Add(new_itm);
+ return rv;
}
public Xog_page Go_bwd() {return Go_by_dir(Bool_.Y);}
public Xog_page Go_fwd() {return Go_by_dir(Bool_.N);}
@@ -42,7 +44,8 @@ public abstract class Xogv_tab_base {
private Xog_page Fetch_page_and_show(Xog_history_itm old_itm, Xog_history_itm new_itm) {
if (new_itm == Xog_history_itm.Null) return new Xog_page().Exists_n_();
Xog_page new_hpg = Fetch_page(new_itm.Wiki(), new_itm.Page(), new_itm.Qarg());
- Show_page(old_itm, new_itm, new_hpg);
+ if (new_hpg.Exists())
+ Show_page(old_itm, new_itm, new_hpg);
return new_hpg;
}
private Xog_page Fetch_page(byte[] wiki_domain, byte[] page_bry, byte[] qarg_bry) {
diff --git a/400_xowa/src/gplx/xowa2/wikis/Xowv_repo_mgr.java b/400_xowa/src/gplx/xowa2/wikis/Xowv_repo_mgr.java
index 8a203c6b1..1a206c315 100644
--- a/400_xowa/src/gplx/xowa2/wikis/Xowv_repo_mgr.java
+++ b/400_xowa/src/gplx/xowa2/wikis/Xowv_repo_mgr.java
@@ -38,19 +38,19 @@ public class Xowv_repo_mgr implements Xow_repo_mgr {
}
return null;
}
- public Xof_repo_pair Add_repo(Xoa_app app, byte[] src_repo_key, byte[] trg_repo_key) {
- Xof_repo_itm src_repo = Add(app, src_repo_key), trg_repo = Add(app, trg_repo_key);
+ public Xof_repo_pair Add_repo(Xoa_app app, Io_url wiki_root, byte[] src_repo_key, byte[] trg_repo_key) {
+ Xof_repo_itm src_repo = Add(app, wiki_root, src_repo_key), trg_repo = Add(app, wiki_root, trg_repo_key);
byte[] src_wiki_key = src_repo.Wiki_key();//, trg_wiki_key = trg_repo.Wiki_key();
// if (!Bry_.Eq(src_wiki_key, trg_wiki_key) && !Bry_.Eq(src_wiki_key, Xow_domain_.Tid_bry_home)) throw Err_mgr._.fmt_(GRP_KEY, "add_repo", "wiki keys do not match: ~{0} ~{1}", String_.new_utf8_(src_wiki_key), String_.new_utf8_(trg_wiki_key));
Xof_repo_pair pair = new Xof_repo_pair((byte)repos.Count(), src_wiki_key, src_repo, trg_repo);
repos.Add(pair);
return pair;
}
- private Xof_repo_itm Add(Xoa_app app, byte[] key) {
+ private Xof_repo_itm Add(Xoa_app app, Io_url wiki_root, byte[] key) {
// Xof_repo_itm itm = (Xof_repo_itm)hash.Fetch(key_bry);
// if (itm == null) {
Xof_repo_itm itm = new Xof_repo_itm(key, app.Fsys_mgr(), null);
- String url_str = app.Fsys_mgr().File_dir().GenSubDir(String_.new_utf8_(key)).Raw();
+ String url_str = wiki_root.Raw();
// this.Add(itm);
// }
itm.Root_str_(url_str).Wiki_key_(key);
diff --git a/400_xowa/src/gplx/xowa2/wikis/Xowv_wiki.java b/400_xowa/src/gplx/xowa2/wikis/Xowv_wiki.java
index 0646b0fdc..f4e3fe28f 100644
--- a/400_xowa/src/gplx/xowa2/wikis/Xowv_wiki.java
+++ b/400_xowa/src/gplx/xowa2/wikis/Xowv_wiki.java
@@ -19,7 +19,7 @@ package gplx.xowa2.wikis; import gplx.*; import gplx.xowa2.*;
import gplx.core.primitives.*;
import gplx.xowa.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.langs.cases.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.html.hzips.*;
import gplx.xowa.wikis.data.*;
-import gplx.xowa.files.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*;
+import gplx.xowa.files.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*;
import gplx.xowa.dbs.tbls.*; import gplx.dbs.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.wikis.*; import gplx.xowa.files.repos.*;
import gplx.xowa2.apps.*; import gplx.xowa2.wikis.specials.*; import gplx.xowa2.gui.*;
public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser {
@@ -30,13 +30,14 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser {
this.domain_itm = Xow_domain_.parse(domain_bry);
this.domain_tid = domain_itm.Domain_tid();
this.domain_abrv = Xow_wiki_alias.Build_alias(Xow_domain_.parse(domain_bry));
- this.ns_mgr = Xow_ns_mgr_.default_(app.Utl_case_mgr()); // new Xow_ns_mgr(app.Utl_case_mgr()); // FIXME
+ this.ns_mgr = Xow_ns_mgr_.default_(app.Utl_case_mgr());
this.data_mgr__core_mgr = new Xowv_core_data_mgr(domain_str, wiki_root_dir);
this.html_mgr__hzip_mgr = new Xow_hzip_mgr(app.Usr_dlg(), this);
this.html_mgr__hdump_rdr = new Xohd_hdump_rdr(app, this);
this.xwiki_mgr = new Xow_xwiki_mgr();
this.special_mgr = new Xosp_special_mgr(this);
- this.fsys_mgr = new Xow_fsys_mgr(wiki_root_dir, wiki_root_dir.OwnerDir().OwnerDir().GenSubDir_nest("file", domain_str));
+ Io_url wiki_file_dir = domain_tid == Xow_domain_.Tid_int_home ? wiki_root_dir : wiki_root_dir.OwnerDir().OwnerDir().GenSubDir_nest("file", domain_str);
+ this.fsys_mgr = new Xow_fsys_mgr(wiki_root_dir, wiki_file_dir);
}
public Xoa_app App() {return app;}
public byte[] Domain_bry() {return domain_bry;} private final byte[] domain_bry;
@@ -51,6 +52,7 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser {
public Xof_fsdb_mode File_mgr__fsdb_mode() {return file_mgr__fsdb_mode;} private final Xof_fsdb_mode file_mgr__fsdb_mode = Xof_fsdb_mode.new_view();
public Xof_orig_mgr File_mgr__orig_mgr() {return fsdb_mgr.Orig_mgr();}
public Xof_bin_mgr File_mgr__bin_mgr() {return fsdb_mgr.Bin_mgr();}
+ public Fsm_mnt_mgr File_mgr__mnt_mgr() {return fsdb_mgr.Mnt_mgr();}
public boolean Html_mgr__hdump_enabled() {return Bool_.Y;}
public Xow_hzip_mgr Html_mgr__hzip_mgr() {return html_mgr__hzip_mgr;} private final Xow_hzip_mgr html_mgr__hzip_mgr;
public Xohd_hdump_rdr Html_mgr__hdump_rdr() {return html_mgr__hdump_rdr;} private final Xohd_hdump_rdr html_mgr__hdump_rdr;
@@ -61,7 +63,8 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser {
public Xoav_app Appv() {return app;} private final Xoav_app app;
public void Pages_get(Xog_page rv, Gfo_url url, Xoa_ttl ttl) {
if (data_mgr__core_mgr.Init()) {
- file_mgr__repo_mgr.Add_repo(app, Bry_.new_utf8_("commons.wikimedia.org"), Bry_.new_utf8_("simple.wikipedia.org"));
+ file_mgr__repo_mgr.Add_repo(app, fsys_mgr.File_dir(), Bry_.new_utf8_("commons.wikimedia.org"), Bry_.new_utf8_("simple.wikipedia.org"));
+ file_mgr__repo_mgr.Add_repo(app, fsys_mgr.File_dir(), Bry_.new_utf8_("simple.wikipedia.org"), Bry_.new_utf8_("commons.wikimedia.org"));
fsdb_mgr.Init_by_wiki(this);
data_mgr__core_mgr.Tbl__ns().Select_all(0, ns_mgr);
html_mgr__hdump_rdr.Init_by_db(data_mgr__core_mgr);
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_wiki.java b/400_xowa/src_120_wiki/gplx/xowa/Xow_wiki.java
index 3a01dd9a8..1cf0d51e4 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_wiki.java
+++ b/400_xowa/src_120_wiki/gplx/xowa/Xow_wiki.java
@@ -19,7 +19,7 @@ package gplx.xowa; import gplx.*;
import gplx.core.primitives.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.ttls.*;
import gplx.xowa.wikis.data.*;
-import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*;
+import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*;
import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.*;
public interface Xow_wiki extends Xow_ttl_parser {
byte[] Domain_bry(); // EX: en.wikipedia.org
@@ -34,6 +34,7 @@ public interface Xow_wiki extends Xow_ttl_parser {
Xow_repo_mgr File_mgr__repo_mgr();
Xof_orig_mgr File_mgr__orig_mgr();
Xof_bin_mgr File_mgr__bin_mgr();
+ Fsm_mnt_mgr File_mgr__mnt_mgr();
Xow_core_data_mgr Data_mgr__core_mgr();
boolean Html_mgr__hdump_enabled();
Xow_hzip_mgr Html_mgr__hzip_mgr();
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xowe_wiki.java b/400_xowa/src_120_wiki/gplx/xowa/Xowe_wiki.java
index 15f6bcda2..6ec549a61 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xowe_wiki.java
+++ b/400_xowa/src_120_wiki/gplx/xowa/Xowe_wiki.java
@@ -19,7 +19,7 @@ package gplx.xowa; import gplx.*;
import gplx.core.primitives.*; import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.files.exts.*;
import gplx.xowa.wikis.*; import gplx.xowa.users.*; import gplx.xowa.html.*; import gplx.xowa.users.history.*; import gplx.xowa.specials.*; import gplx.xowa.xtns.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.ttls.*;
import gplx.xowa.wikis.data.*;
-import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*;
+import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*;
import gplx.xowa.langs.vnts.*; import gplx.xowa.gui.views.*; import gplx.xowa.wikis.xwikis.*;
import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.*;
import gplx.xowa.setup.maints.*; import gplx.xowa.wikis.caches.*;
@@ -91,6 +91,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble {
public Xow_repo_mgr File_mgr__repo_mgr() {return file_mgr.Repo_mgr();}
public Xof_orig_mgr File_mgr__orig_mgr() {return file_mgr.Fsdb_mgr().Orig_mgr();}
public Xof_bin_mgr File_mgr__bin_mgr() {return file_mgr.Fsdb_mgr().Bin_mgr();}
+ public Fsm_mnt_mgr File_mgr__mnt_mgr() {return file_mgr.Fsdb_mgr().Mnt_mgr();}
public Xof_fsdb_mode File_mgr__fsdb_mode() {return file_mgr.Fsdb_mode();}
public boolean Html_mgr__hdump_enabled() {return html_mgr__hdump_enabled;} private boolean html_mgr__hdump_enabled = Bool_.N;
public Xow_hzip_mgr Html_mgr__hzip_mgr() {return html_mgr.Hzip_mgr();}
@@ -203,9 +204,9 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble {
app.Cfg_mgr().Init(this);
file_mgr.Cfg_download().Enabled_(app.File_mgr().Wmf_mgr().Enabled()); // default download to app global; can be overriden below
Io_url sqlite_url = Xodb_mgr_sql.Find_core_url(this);
+ app.Gfs_mgr().Run_url_for(this, tdb_fsys_mgr.Cfg_wiki_stats_fil());
+ app.Gfs_mgr().Run_url_for(this, app.Fsys_mgr().Cfg_wiki_core_dir().GenSubFil(domain_str + ".gfs")); // run cfg for wiki by user ; EX: /xowa/user/anonymous/wiki/en.wikipedia.org/cfg/user_wiki.gfs
if (sqlite_url == null) {
- app.Gfs_mgr().Run_url_for(this, tdb_fsys_mgr.Cfg_wiki_stats_fil());
- app.Gfs_mgr().Run_url_for(this, app.Fsys_mgr().Cfg_wiki_core_dir().GenSubFil(domain_str + ".gfs")); // run cfg for wiki by user ; EX: /xowa/user/anonymous/wiki/en.wikipedia.org/cfg/user_wiki.gfs
tdb_fsys_mgr.Scan_dirs();
}
else {
@@ -231,6 +232,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble {
Bry_fmtr.Null.Eval_mgr().Enabled_(true);
app.Wiki_mgr().Css_installer().Install_assert(this, user.Fsys_mgr().Wiki_html_dir(domain_str));
if (html_mgr__hdump_enabled) {
+ // if (db_mgr.Tid() == Xodb_mgr_txt.Tid_txt) this.Db_mgr_create_as_sql();
this.Db_mgr_as_sql().Html_db_enabled_(html_mgr__hdump_enabled);
Xowd_db_init_wkr__html.I.Assert_col__page_html_db_id(Db_mgr_as_sql().Core_data_mgr()); // NOTE: must go above html_mgr.Init_by_wiki b/c Page_load will be done via messages
html_mgr__hdump_rdr.Init_by_db(this.Data_mgr__core_mgr());
diff --git a/400_xowa/src_121_wiki_data/gplx/xowa/Xob_hive_mgr.java b/400_xowa/src_121_wiki_data/gplx/xowa/Xob_hive_mgr.java
index f756d8bae..4644d4975 100644
--- a/400_xowa/src_121_wiki_data/gplx/xowa/Xob_hive_mgr.java
+++ b/400_xowa/src_121_wiki_data/gplx/xowa/Xob_hive_mgr.java
@@ -53,7 +53,7 @@ public class Xob_hive_mgr {
for (; row_idx < rows_len; row_idx++) {
xdat_file.GetAt(xdat_itm, row_idx);
Xodb_page ttl_itm = Xodb_page_.Txt_ttl_load(Bry_.Mid(xdat_itm.Src(), xdat_itm.Itm_bgn(), xdat_itm.Itm_end()));
- if (!include_redirects && ttl_itm.Type_redirect()) continue;
+ if (!include_redirects && ttl_itm.Redirected()) continue;
++count;
nxt_itm = ttl_itm;
if (count == total) {
@@ -88,7 +88,7 @@ public class Xob_hive_mgr {
for (; row_idx > -1; row_idx--) {
xdat_file.GetAt(xdat_itm, row_idx);
Xodb_page ttl_itm = Xodb_page_.Txt_ttl_load(Bry_.Mid(xdat_itm.Src(), xdat_itm.Itm_bgn(), xdat_itm.Itm_end()));
- if (!include_redirects && ttl_itm.Type_redirect()) continue;
+ if (!include_redirects && ttl_itm.Redirected()) continue;
// list.Add(ttl_itm);
++count;
prv_itm = ttl_itm;
@@ -158,7 +158,7 @@ public class Xob_hive_mgr {
for (; row_idx < rows_len; row_idx++) {
xdat.GetAt(xdat_itm, row_idx);
Xodb_page ttl_itm = Xodb_page_.Txt_ttl_load(Bry_.Mid(xdat_itm.Src(), xdat_itm.Itm_bgn(), xdat_itm.Itm_end()));
- if (!include_redirects && ttl_itm.Type_redirect()) continue;
+ if (!include_redirects && ttl_itm.Redirected()) continue;
list.Add(ttl_itm);
if (++count == total) {loop = false; break;}
}
diff --git a/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page.java b/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page.java
index 59afa7d78..9ce22eb28 100644
--- a/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page.java
+++ b/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page.java
@@ -22,54 +22,80 @@ public class Xodb_page implements Xobl_data_itm {
public int Id() {return id;} public Xodb_page Id_(int v) {id = v; id_val = null; return this;} private int id;
public Int_obj_val Id_val() {if (id_val == null) id_val = Int_obj_val.new_(id); return id_val;} private Int_obj_val id_val;
public int Ns_id() {return ns_id;} public Xodb_page Ns_id_(int v) {ns_id = v; return this;} private int ns_id;
- public byte[] Ttl_wo_ns() {return ttl_wo_ns;} public Xodb_page Ttl_wo_ns_(byte[] v) {ttl_wo_ns = v; return this;} private byte[] ttl_wo_ns;
- public boolean Type_redirect() {return type_redirect;} public Xodb_page Type_redirect_(boolean v) {type_redirect = v; return this;} private boolean type_redirect;
- public DateAdp Modified_on() {return modified_on;} public Xodb_page Modified_on_(DateAdp v) {modified_on = v; return this;} DateAdp modified_on;
- public int Text_len() {return text_len;} public Xodb_page Text_len_(int v) {text_len = v; return this;} private int text_len;
- public int Text_db_id() {return text_db_id;} public Xodb_page Text_db_id_(int v) {text_db_id = v; return this;} private int text_db_id;
- public int Html_db_id() {return html_db_id;} public Xodb_page Html_db_id_(int v) {html_db_id = v; return this;} private int html_db_id;
- public int Redirect_id() {return redirect_id;} public void Redirect_id_(int v) {redirect_id = v;} private int redirect_id;
- public byte[] Text() {return text;} public Xodb_page Text_(byte[] v) {text = v; if (v != null) text_len = v.length; return this;} private byte[] text;
+ public byte[] Ttl_page_db() {return ttl_page_db;} public Xodb_page Ttl_page_db_(byte[] v) {ttl_page_db = v; return this;} private byte[] ttl_page_db; // EX: Category1
+ public byte[] Ttl_full_db() {return ttl_full_db;} private byte[] ttl_full_db; // EX: Category:Category1
+ public boolean Redirected() {return redirected;} public Xodb_page Redirected_(boolean v) {redirected = v; return this;} private boolean redirected;
+ public int Wtxt_len() {return wtxt_len;} public Xodb_page Wtxt_len_(int v) {wtxt_len = v; return this;} private int wtxt_len;
+ public int Wtxt_db_id() {return wtxt_db_id;} public Xodb_page Wtxt_db_id_(int v) {wtxt_db_id = v; return this;} private int wtxt_db_id;
+ public byte[] Wtxt() {return wtxt;} public Xodb_page Wtxt_(byte[] v) {wtxt = v; if (v != null) wtxt_len = v.length; return this;} private byte[] wtxt;
+ public int Html_db_id() {return html_db_id;} private int html_db_id;
+ public int Redirect_id() {return redirect_id;} private int redirect_id;
+ public DateAdp Modified_on() {return modified_on;} public Xodb_page Modified_on_(DateAdp v) {modified_on = v; return this;} private DateAdp modified_on;
public boolean Exists() {return exists;} public Xodb_page Exists_(boolean v) {exists = v; return this;} private boolean exists;
- public int Db_row_idx() {return db_row_idx;} public Xodb_page Db_row_idx_(int v) {db_row_idx = v; return this;} private int db_row_idx;
public Xow_ns Ns() {return ns;} private Xow_ns ns;
- public Object Xtn() {return xtn;} public Xodb_page Xtn_(Object v) {this.xtn = v; return this;} Object xtn;
- public byte[] Ttl_w_ns() {return ttl_w_ns;} private byte[] ttl_w_ns;
- public Xodb_page Ttl_(Xow_ns ns, byte[] ttl_wo_ns) {
+ public Object Xtn() {return xtn;} public Xodb_page Xtn_(Object v) {this.xtn = v; return this;} private Object xtn;
+ public int Tdb_row_idx() {return tdb_row_idx;} public void Tdb_row_idx_(int v) {tdb_row_idx = v;} private int tdb_row_idx;
+ public Xodb_page Init(int id, byte[] ttl_page_db, boolean redirected, int wtxt_len, int wtxt_db_id, int tdb_row_idx) {
+ this.id = id; this.ttl_page_db = ttl_page_db; this.redirected = redirected;
+ this.wtxt_len = wtxt_len; this.wtxt_db_id = wtxt_db_id; this.tdb_row_idx = tdb_row_idx;
+ id_val = null;
+ return this;
+ }
+ public void Init_by_sql(int id, int ns_id, byte[] ttl_page_db, DateAdp modified_on, boolean redirected, int wtxt_len, int wtxt_db_id, int html_db_id, int redirect_id) {
+ this.id = id;
+ this.ns_id = ns_id;
+ this.ttl_page_db = ttl_page_db;
+ this.modified_on = modified_on;
+ this.redirected = redirected;
+ this.wtxt_len = wtxt_len;
+ this.wtxt_db_id = wtxt_db_id;
+ this.html_db_id = html_db_id;
+ this.redirect_id = redirect_id;
+ }
+ public void Init_by_tdb(int id, int wtxt_db_id, int tdb_row_idx, boolean redirected, int wtxt_len, int ns_id, byte[] ttl_page_db) {
+ this.id = id;
+ this.wtxt_db_id = wtxt_db_id;
+ this.tdb_row_idx = tdb_row_idx;
+ this.redirected = redirected;
+ this.wtxt_len = wtxt_len;
+ this.ns_id = ns_id;
+ this.ttl_page_db = ttl_page_db;
+ }
+ public Xodb_page Ttl_(Xow_ns ns, byte[] ttl_page_db) {
this.ns = ns;
ns_id = ns.Id();
- this.ttl_wo_ns = ttl_wo_ns;
- this.ttl_w_ns = ns.Gen_ttl(ttl_wo_ns);
+ this.ttl_page_db = ttl_page_db;
+ this.ttl_full_db = ns.Gen_ttl(ttl_page_db);
return this;
}
public Xodb_page Ttl_(Xoa_ttl ttl) {
- ttl_w_ns = ttl.Full_txt();
- ttl_wo_ns = ttl.Page_db();
+ ttl_full_db = ttl.Full_txt();
+ ttl_page_db = ttl.Page_db();
ns = ttl.Ns();
ns_id = ns.Id();
return this;
}
public Xodb_page Ttl_(byte[] v, Xow_ns_mgr ns_mgr) {
- ttl_w_ns = v;
+ ttl_full_db = v;
Object o = ns_mgr.Names_get_w_colon(v, 0, v.length);
if (o == null) {
ns = ns_mgr.Ns_main();
- ttl_wo_ns = v;
+ ttl_page_db = v;
}
else {
ns = (Xow_ns)o;
- ttl_wo_ns = Bry_.Mid(v, ns.Name_txt_w_colon().length, v.length); // EX: "Template:A" -> "Template:" + "A"
+ ttl_page_db = Bry_.Mid(v, ns.Name_txt_w_colon().length, v.length); // EX: "Template:A" -> "Template:" + "A"
}
ns_id = ns.Id();
return this;
}
public void Clear() {
- id = Id_null; text_len = 0; // text_len should be 0 b/c text defaults to 0;
- text_db_id = db_row_idx = 0; // default to 0, b/c some tests do not set and will fail at -1
+ id = Id_null; wtxt_len = 0; // wtxt_len should be 0 b/c wtxt defaults to 0;
+ wtxt_db_id = tdb_row_idx = 0; // default to 0, b/c some tests do not set and will fail at -1
ns_id = Int_.MinValue;
- ttl_w_ns = ttl_wo_ns = null; text = Bry_.Empty; // default to Ary_empty for entries that have
+ ttl_full_db = ttl_page_db = null; wtxt = Bry_.Empty; // default to Ary_empty for entries that have
ns = null;
- type_redirect = exists = false;
+ redirected = exists = false;
modified_on = DateAdp_.MinValue;
id_val = null;
html_db_id = -1;
@@ -77,30 +103,24 @@ public class Xodb_page implements Xobl_data_itm {
}
public void Copy(Xodb_page orig) {
this.id = orig.id;
- this.text_len = orig.text_len;
- this.text_db_id = orig.text_db_id;
- this.db_row_idx = orig.db_row_idx;
+ this.wtxt_len = orig.wtxt_len;
+ this.wtxt_db_id = orig.wtxt_db_id;
+ this.tdb_row_idx = orig.tdb_row_idx;
this.ns_id = orig.ns_id;
- this.ttl_w_ns = orig.ttl_w_ns;
- this.ttl_wo_ns = orig.ttl_wo_ns;
- this.text = orig.text;
+ this.ttl_full_db = orig.ttl_full_db;
+ this.ttl_page_db = orig.ttl_page_db;
+ this.wtxt = orig.wtxt;
this.ns = orig.ns;
- this.type_redirect = orig.type_redirect;
+ this.redirected = orig.redirected;
this.exists = orig.exists;
this.modified_on = orig.modified_on;
this.id_val = null;
this.html_db_id = orig.html_db_id;
}
- public Xodb_page Set_all_(int id, int text_db_id, int db_row_idx, boolean redirect, int text_len, byte[] ttl_wo_ns) {
- this.id = id; this.text_db_id = text_db_id; this.db_row_idx = db_row_idx; this.type_redirect = redirect; this.text_len = text_len; this.ttl_wo_ns = ttl_wo_ns;
- id_val = null;
- return this;
- }
public void Srl_save(Bry_bfr bfr) {Xodb_page_.Txt_id_save(bfr, this);}
- public static Xodb_page tmp_() {return new Xodb_page();}
- public static Xodb_page srch_(int id, int text_len) {return new Xodb_page().Id_(id).Text_len_(text_len);}
+ public static final int Id_null = -1, Modified_on_null_int = 0;
public static final Xodb_page[] Ary_empty = new Xodb_page[0];
- public static final int Timestamp_null = 0;
- public static final int Id_null = -1;
public static final Xodb_page Null = null;
+ public static Xodb_page new_tmp() {return new Xodb_page();}
+ public static Xodb_page new_srch(int id, int wtxt_len) {return new Xodb_page().Id_(id).Wtxt_len_(wtxt_len);}
}
diff --git a/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_.java b/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_.java
index dddb025a3..c9a1fb562 100644
--- a/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_.java
+++ b/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_.java
@@ -29,15 +29,18 @@ public class Xodb_page_ {
public static void Txt_ttl_load(Xodb_page page, byte[] bry) {Txt_ttl_load(page, bry, 0, bry.length);}
private static void Txt_ttl_load(Xodb_page page, byte[] bry, int bgn, int end) {
try {
- page.Id_ (Base85_utl.XtoIntByAry (bry, bgn + 0, bgn + 4));
- page.Text_db_id_ (Base85_utl.XtoIntByAry (bry, bgn + 6, bgn + 10));
- page.Db_row_idx_ (Base85_utl.XtoIntByAry (bry, bgn + 12, bgn + 16));
- page.Type_redirect_ (bry[18] == Byte_ascii.Num_1);
- page.Text_len_ (Base85_utl.XtoIntByAry (bry, bgn + 20, bgn + 24));
- page.Ttl_wo_ns_ (Bry_.Mid (bry, bgn + 26, end));
+ page.Init_by_tdb
+ ( Base85_utl.XtoIntByAry (bry, bgn + 0, bgn + 4)
+ , Base85_utl.XtoIntByAry (bry, bgn + 6, bgn + 10)
+ , Base85_utl.XtoIntByAry (bry, bgn + 12, bgn + 16)
+ , bry[18] == Byte_ascii.Num_1
+ , Base85_utl.XtoIntByAry (bry, bgn + 20, bgn + 24)
+ , page.Ns_id()
+ , Bry_.Mid (bry, bgn + 26, end)
+ );
} catch (Exception e) {throw Err_.err_(e, "parse_by_ttl failed: {0}", String_.new_utf8_(bry, bgn, end));}
}
- public static void Txt_ttl_save(Bry_bfr bfr, Xodb_page page) {Txt_ttl_save(bfr, page.Id(), page.Text_db_id(), page.Db_row_idx(), page.Type_redirect(), page.Text_len(), page.Ttl_wo_ns());}
+ public static void Txt_ttl_save(Bry_bfr bfr, Xodb_page page) {Txt_ttl_save(bfr, page.Id(), page.Wtxt_db_id(), page.Tdb_row_idx(), page.Redirected(), page.Wtxt_len(), page.Ttl_page_db());}
public static void Txt_ttl_save(Bry_bfr bfr, int id, int file_idx, int row_idx, boolean redirect, int text_len, byte[] ttl_wo_ns) {
bfr .Add_base85_len_5(id) .Add_byte_pipe()
.Add_base85_len_5(file_idx) .Add_byte_pipe()
@@ -51,23 +54,25 @@ public class Xodb_page_ {
private static void Txt_id_load(Xodb_page page, byte[] bry, int bgn, int end) {
try {
page.Clear();
- page.Id_ (Base85_utl.XtoIntByAry (bry, bgn + 0, bgn + 4));
- page.Text_db_id_ (Base85_utl.XtoIntByAry (bry, bgn + 6, bgn + 10));
- page.Db_row_idx_ (Base85_utl.XtoIntByAry (bry, bgn + 12, bgn + 16));
- page.Type_redirect_ (bry[18] == Byte_ascii.Num_1);
- page.Text_len_ (Base85_utl.XtoIntByAry (bry, bgn + 20, bgn + 24));
- page.Ns_id_ (Base85_utl.XtoIntByAry (bry, bgn + 26, bgn + 30));
- page.Ttl_wo_ns_ (Bry_.Mid (bry, bgn + 32, end));
+ page.Init_by_tdb
+ ( Base85_utl.XtoIntByAry (bry, bgn + 0, bgn + 4)
+ , Base85_utl.XtoIntByAry (bry, bgn + 6, bgn + 10)
+ , Base85_utl.XtoIntByAry (bry, bgn + 12, bgn + 16)
+ , bry[18] == Byte_ascii.Num_1
+ , Base85_utl.XtoIntByAry (bry, bgn + 20, bgn + 24)
+ , Base85_utl.XtoIntByAry (bry, bgn + 26, bgn + 30)
+ , Bry_.Mid (bry, bgn + 32, end)
+ );
} catch (Exception e) {throw Err_.err_(e, "parse_by_id failed: {0}", String_.new_utf8_(bry, bgn, end));}
}
public static void Txt_id_save(Bry_bfr bfr, Xodb_page page) {
bfr .Add_base85_len_5(page.Id()) .Add_byte_pipe()
- .Add_base85_len_5(page.Text_db_id()) .Add_byte_pipe()
- .Add_base85_len_5(page.Db_row_idx()) .Add_byte_pipe()
- .Add_byte(page.Type_redirect() ? Byte_ascii.Num_1 : Byte_ascii.Num_0).Add_byte_pipe()
- .Add_base85_len_5(page.Text_len()) .Add_byte_pipe()
+ .Add_base85_len_5(page.Wtxt_db_id()) .Add_byte_pipe()
+ .Add_base85_len_5(page.Tdb_row_idx()) .Add_byte_pipe()
+ .Add_byte(page.Redirected() ? Byte_ascii.Num_1 : Byte_ascii.Num_0).Add_byte_pipe()
+ .Add_base85_len_5(page.Wtxt_len()) .Add_byte_pipe()
.Add_base85_len_5(page.Ns_id()) .Add_byte_pipe()
- .Add(page.Ttl_wo_ns()) .Add_byte_nl();
+ .Add(page.Ttl_page_db()) .Add_byte_nl();
}
public static void Txt_page_save(Bry_bfr bfr, int id, DateAdp modified_on, byte[] title, byte[] text, boolean add_nl) {
int ts = Bit_.Xto_int_date_short(modified_on.XtoSegAry());
diff --git a/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_sorter.java b/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_sorter.java
index abee77075..6e7dbcb12 100644
--- a/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_sorter.java
+++ b/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_sorter.java
@@ -26,11 +26,11 @@ public class Xodb_page_sorter implements ComparerAble {
switch (compareType) {
case Tid_ns_ttl: {
int rv = Int_.Compare(lhs.Ns_id(), rhs.Ns_id());
- return rv == CompareAble_.Same ? Bry_.Compare(lhs.Ttl_wo_ns(), rhs.Ttl_wo_ns()) : rv;
+ return rv == CompareAble_.Same ? Bry_.Compare(lhs.Ttl_page_db(), rhs.Ttl_page_db()) : rv;
}
- case Tid_itm_len: return Int_.Compare(lhs.Text_len(), rhs.Text_len());
+ case Tid_itm_len: return Int_.Compare(lhs.Wtxt_len(), rhs.Wtxt_len());
case Tid_id: return Int_.Compare(lhs.Id(), rhs.Id());
- case Tid_ttl: return Bry_.Compare(lhs.Ttl_wo_ns(), rhs.Ttl_wo_ns());
+ case Tid_ttl: return Bry_.Compare(lhs.Ttl_page_db(), rhs.Ttl_page_db());
case Tid_ctg_tid_sortkey:
gplx.xowa.ctgs.Xoctg_page_xtn lhs_xtn = (gplx.xowa.ctgs.Xoctg_page_xtn)lhs.Xtn();
gplx.xowa.ctgs.Xoctg_page_xtn rhs_xtn = (gplx.xowa.ctgs.Xoctg_page_xtn)rhs.Xtn();
diff --git a/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_tst.java b/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_tst.java
index f1a8de0bb..22794e331 100644
--- a/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_tst.java
+++ b/400_xowa/src_121_wiki_data/gplx/xowa/Xodb_page_tst.java
@@ -37,6 +37,6 @@ class Xodb_page_fxt {
public void Test_ttl_(String ttl, int expd_ns, String expd_ttl) {
tmp_page.Ttl_(Bry_.new_ascii_(ttl), ns_mgr);
Tfds.Eq(expd_ns, tmp_page.Ns_id());
- Tfds.Eq(expd_ttl, String_.new_ascii_(tmp_page.Ttl_wo_ns()));
+ Tfds.Eq(expd_ttl, String_.new_ascii_(tmp_page.Ttl_page_db()));
}
}
diff --git a/400_xowa/src_121_wiki_data/gplx/xowa/Xow_data_mgr.java b/400_xowa/src_121_wiki_data/gplx/xowa/Xow_data_mgr.java
index 89842d189..23f71026b 100644
--- a/400_xowa/src_121_wiki_data/gplx/xowa/Xow_data_mgr.java
+++ b/400_xowa/src_121_wiki_data/gplx/xowa/Xow_data_mgr.java
@@ -52,14 +52,14 @@ public class Xow_data_mgr implements GfoInvkAble {
}
public Xoae_page Get_page(Xoae_page rv, Xow_ns ns, Xoa_ttl ttl, boolean called_from_tmpl, boolean redirect_force) {
int redirects = 0;
- Xodb_page db_page = Xodb_page.tmp_();
+ Xodb_page db_page = Xodb_page.new_tmp();
while (true) {
boolean exists = wiki.Db_mgr().Load_mgr().Load_by_ttl(db_page, ns, ttl.Page_db());
if (!exists) return rv.Missing_();
if (wiki.Appe().Mode() == Xoa_app_.Mode_gui) // NOTE: must check if gui, else will write during mass build; DATE:2014-05-03
wiki.Appe().Usr_dlg().Prog_many(GRP_KEY, "file_load", "loading page for ~{0}", String_.new_utf8_(ttl.Raw()));
wiki.Db_mgr().Load_mgr().Load_page(db_page, ns, !called_from_tmpl);
- byte[] bry = db_page.Text();
+ byte[] bry = db_page.Wtxt();
rv.Data_raw_(bry).Revision_data().Modified_on_(db_page.Modified_on()).Id_(db_page.Id()).Html_db_id_(db_page.Html_db_id());
if (redirect_force) return rv;
Xoa_ttl redirect_ttl = redirect_mgr.Extract_redirect(bry, bry.length);
diff --git a/400_xowa/src_121_wiki_data/gplx/xowa/Xow_hive_mgr_fxt.java b/400_xowa/src_121_wiki_data/gplx/xowa/Xow_hive_mgr_fxt.java
index fdb0ca506..8e81db31f 100644
--- a/400_xowa/src_121_wiki_data/gplx/xowa/Xow_hive_mgr_fxt.java
+++ b/400_xowa/src_121_wiki_data/gplx/xowa/Xow_hive_mgr_fxt.java
@@ -35,7 +35,7 @@ public class Xow_hive_mgr_fxt {
String[] actl = new String[actl_len];
for (int i = 0; i < actl_len; i++) {
Xodb_page itm = (Xodb_page)list.FetchAt(i);
- actl[i] = String_.new_ascii_(itm.Ttl_wo_ns());
+ actl[i] = String_.new_ascii_(itm.Ttl_page_db());
}
Tfds.Eq_ary_str(expd, actl);
}
diff --git a/400_xowa/src_160_file/gplx/xowa/Xofo_lnki.java b/400_xowa/src_160_file/gplx/xowa/Xofo_lnki.java
index 3854a9268..e032dfc04 100644
--- a/400_xowa/src_160_file/gplx/xowa/Xofo_lnki.java
+++ b/400_xowa/src_160_file/gplx/xowa/Xofo_lnki.java
@@ -24,7 +24,7 @@ class Xofo_lnki {
public int Lnki_w() {return lnki_w;} public Xofo_lnki Lnki_w_(int v) {lnki_w = v; return this;} private int lnki_w;
public int Lnki_h() {return lnki_h;} public Xofo_lnki Lnki_h_(int v) {lnki_h = v; return this;} private int lnki_h;
public double Lnki_upright() {return lnki_upright;} public Xofo_lnki Lnki_upright_(double v) {lnki_upright = v; return this;} double lnki_upright = Xop_lnki_tkn.Upright_null;
- public double Lnki_thumbtime() {return lnki_thumbtime;} public Xofo_lnki Lnki_thumbtime_(double v) {lnki_thumbtime = v; return this;} private double lnki_thumbtime = Xof_doc_thumb.Null;
+ public double Lnki_thumbtime() {return lnki_thumbtime;} public Xofo_lnki Lnki_thumbtime_(double v) {lnki_thumbtime = v; return this;} private double lnki_thumbtime = Xof_lnki_time.Null;
public byte Xfer_status() {return xfer_status;} public Xofo_lnki Xfer_status_(byte v) {xfer_status = v; return this;} private byte xfer_status; public static final byte Xfer_status_none = 0, Xfer_status_xfer_pass = 1, Xfer_status_xfer_fail = 2, Xfer_status_convert_pass = 3, Xfer_status_convert_fail = 4;
public Xofo_lnki Xfer_status_(boolean v) {return Xfer_status_(v ? Xfer_status_xfer_pass : Xfer_status_xfer_fail);}
public boolean Orig() {return !thumb;}
@@ -47,8 +47,8 @@ class Xofo_lnki {
wtr.Write_bry_escape_fld(ttl);
wtr.Bfr()
.Add_int_variable(lnki.Lnki_type()).Add_byte(Byte_ascii.Comma)
- .Add_int_variable(lnki.Lnki_w()).Add_byte(Byte_ascii.Comma)
- .Add_int_variable(lnki.Lnki_h())
+ .Add_int_variable(lnki.W()).Add_byte(Byte_ascii.Comma)
+ .Add_int_variable(lnki.H())
;
boolean upright_exists = lnki.Upright() != Xop_lnki_tkn.Upright_null;
if (upright_exists) {
diff --git a/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser.java b/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser.java
index 8a4c5a935..b1ab9bcbd 100644
--- a/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser.java
+++ b/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser.java
@@ -68,7 +68,7 @@ class Xofo_lnki_parser extends Obj_ary_parser_base {
else if (Bry_.Match(bry, fld_bgn, eq_pos, Xop_lnki_arg_parser.Bry_thumbtime)) {
fld_val = Bry_.Xto_int_or(bry, eq_pos + 1, i, Int_.MinValue); // +1 to position after eq
if (fld_val == Int_.MinValue) throw Err_.new_fmt_("invalid int: {0}", String_.new_utf8_(bry, eq_pos + 1, i));
- lnki.Lnki_thumbtime_(Xof_doc_thumb.X_int(fld_val));
+ lnki.Lnki_thumbtime_(Xof_lnki_time.X_int(fld_val));
}
}
}
diff --git a/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser_tst.java b/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser_tst.java
index 0b5552ea5..ab912e1ac 100644
--- a/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser_tst.java
+++ b/400_xowa/src_160_file/gplx/xowa/Xofo_lnki_parser_tst.java
@@ -62,7 +62,7 @@ class Xofo_lnki_chkr implements Tst_chkr {
rv += mgr.Tst_val(lnki_w == -1, path, "lnki_w", lnki_w, actl.Lnki_w());
rv += mgr.Tst_val(lnki_h == -1, path, "lnki_h", lnki_h, actl.Lnki_h());
rv += mgr.Tst_val(lnki_upright == -1, path, "lnki_upright", lnki_upright, actl.Lnki_upright());
- rv += mgr.Tst_val(lnki_thumbtime == -1, path, "lnki_thumbtime", lnki_thumbtime, Xof_doc_thumb.X_int(actl.Lnki_thumbtime()));
+ rv += mgr.Tst_val(lnki_thumbtime == -1, path, "lnki_thumbtime", lnki_thumbtime, Xof_lnki_time.X_int(actl.Lnki_thumbtime()));
return rv;
}
}
diff --git a/400_xowa/src_160_file/gplx/xowa/Xofw_wiki_wkr_base.java b/400_xowa/src_160_file/gplx/xowa/Xofw_wiki_wkr_base.java
index 14e087e8b..8f1f10c16 100644
--- a/400_xowa/src_160_file/gplx/xowa/Xofw_wiki_wkr_base.java
+++ b/400_xowa/src_160_file/gplx/xowa/Xofw_wiki_wkr_base.java
@@ -57,11 +57,11 @@ public class Xofw_wiki_wkr_base implements Xofw_wiki_finder {
return true;
}
return false;
- } static final Xodb_page tmp_db_page = Xodb_page.tmp_();
+ } static final Xodb_page tmp_db_page = Xodb_page.new_tmp();
byte[] Get_redirect(Xowe_wiki wiki, Xow_ns file_ns, Xodb_page db_page) {
- if (db_page.Type_redirect()) {
+ if (db_page.Redirected()) {
wiki.Db_mgr().Load_mgr().Load_page(db_page, file_ns, false);
- byte[] src = db_page.Text();
+ byte[] src = db_page.Wtxt();
Xoa_ttl redirect_ttl = wiki.Redirect_mgr().Extract_redirect(src, src.length);
return redirect_ttl == Xop_redirect_mgr.Redirect_null_ttl ? Xop_redirect_mgr.Redirect_null_bry : redirect_ttl.Page_db();
}
diff --git a/400_xowa/src_161_meta/gplx/xowa/Xof_meta_itm.java b/400_xowa/src_161_meta/gplx/xowa/Xof_meta_itm.java
index aa9bbc755..a9a447271 100644
--- a/400_xowa/src_161_meta/gplx/xowa/Xof_meta_itm.java
+++ b/400_xowa/src_161_meta/gplx/xowa/Xof_meta_itm.java
@@ -45,7 +45,7 @@ public class Xof_meta_itm {
public byte Orig_exists() {return orig_exists;} private byte orig_exists = Exists_unknown;
public void Orig_exists_(byte v) {if (this.orig_exists == v) return; this.orig_exists = v; Dirty();}
public Xof_meta_thumb[] Thumbs() {return thumbs;} private Xof_meta_thumb[] thumbs = Xof_meta_thumb.Ary_empty;
- public boolean Thumbs_indicates_oga() {return Thumbs_get_by_w(0, 0, Xof_doc_thumb.Null_as_int) != null;} // if 0,0 exists, then assume no thumbs; needed for oga/ogg
+ public boolean Thumbs_indicates_oga() {return Thumbs_get_by_w(0, 0, Xof_lnki_time.Null_as_int) != null;} // if 0,0 exists, then assume no thumbs; needed for oga/ogg
public boolean Thumbs_del(int w) {
int del_idx = -1;
int thumbs_len = thumbs.length;
@@ -64,17 +64,17 @@ public class Xof_meta_itm {
thumbs = thumbs_new;
return true;
}
- public Xof_meta_thumb Thumbs_get_img(int w, int w_adj) {return Thumbs_get_by_w(w, w_adj, Xof_doc_thumb.Null_as_int);}
+ public Xof_meta_thumb Thumbs_get_img(int w, int w_adj) {return Thumbs_get_by_w(w, w_adj, Xof_lnki_time.Null_as_int);}
public Xof_meta_thumb Thumbs_get_vid(int s) {return Thumbs_get_by_w(Xop_lnki_tkn.Width_null, 0, s);}
Xof_meta_thumb Thumbs_get_by_w(int w, int w_adj, int seek) {
int thumbs_len = thumbs.length;
for (int i = 0; i < thumbs_len; i++) {
Xof_meta_thumb thumb = thumbs[i];
int tmp_adj = w_adj;// thumb.Width() < 50 ? 0 : w_adj;
- if ( (Xof_doc_thumb.Null_y(seek)
+ if ( (Xof_lnki_time.Null_y(seek)
&& Int_.Between(thumb.Width(), w - tmp_adj, w + tmp_adj))
|| (w == Xop_lnki_tkn.Width_null
- && (Xof_doc_thumb.Null_y(seek) || Int_.In(seek, thumb.Seeks()))))
+ && (Xof_lnki_time.Null_y(seek) || Int_.In(seek, thumb.Seeks()))))
return thumb;
}
return null;
diff --git a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_mgr.java b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_mgr.java
index 062ec6422..c07054e9e 100644
--- a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_mgr.java
+++ b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_mgr.java
@@ -36,9 +36,9 @@ public class Xof_xfer_mgr {
ext_rule = src_repo.Ext_rules().Get_or_null(ext.Ext());
orig_w = 0; orig_h = 0; file_w = 0; file_h = 0;
} private byte lnki_type;
- private Xof_xfer_itm xfer_itm; private double lnki_thumbtime = Xof_doc_thumb.Null; private boolean lnki_thumbable; private int lnki_w, lnki_h, file_w, file_h; private double lnki_upright;
+ private Xof_xfer_itm xfer_itm; private double lnki_thumbtime = Xof_lnki_time.Null; private boolean lnki_thumbable; private int lnki_w, lnki_h, file_w, file_h; private double lnki_upright;
private Xof_ext ext; private Xof_rule_itm ext_rule; private Xof_repo_itm src_repo, trg_repo; private boolean src_repo_is_wmf; private byte[] ttl, md5; private int orig_w, orig_h, orig_file_len;
- private int lnki_page = Xof_doc_page.Null;
+ private int lnki_page = Xof_lnki_page.Null;
public Xof_meta_itm Meta_itm() {return meta_itm;} private Xof_meta_itm meta_itm;
public boolean Download_allowed_by_ext() {return orig_file_len < ext_rule.Make_max();}
public Xof_xfer_mgr Check_file_exists_before_xfer_n_() {check_file_exists_before_xfer = false; return this;} private boolean check_file_exists_before_xfer = true;
@@ -240,8 +240,8 @@ public class Xof_xfer_mgr {
thumb_pass = Img_rename_by_size(trg_url); // NOTE: lnki cites view_w which will rarely match file_w; PAGE:en.w:Earth;Northwest coast of United States to Central South America at Night.ogv|250px; which is atually 640
if (thumb_pass) {
Xof_meta_thumb thumb = meta_itm.Update_thumb_add(file_w, file_h); // NOTE: only store 1 width; depend on browser to resize to other widths; this matches MW's behavior
- if (Xof_doc_thumb.Null_n(lnki_thumbtime)) { // lnki specified seek
- thumb.Seeks_add(Xof_doc_thumb.X_int(lnki_thumbtime));
+ if (Xof_lnki_time.Null_n(lnki_thumbtime)) { // lnki specified seek
+ thumb.Seeks_add(Xof_lnki_time.X_int(lnki_thumbtime));
meta_itm.Owner_fil().Dirty_();
}
rslt.Clear();
@@ -308,7 +308,7 @@ public class Xof_xfer_mgr {
private boolean Img_rename_by_size(Io_url trg_url) {
if (!Cmd_query_size(trg_url)) return false;
if (file_w != lnki_w) { // NOTE: only rename if file_w is different; this proc can be called if file_w is same, but file_h < 1; EX: A.svg|thumb|30px will call this proc to get size of thumb
- String new_name = Xof_doc_thumb.Null_y(lnki_thumbtime) ? file_w + "px" : file_w + "px" + Xof_meta_thumb_parser.Dlm_seek_str + Xof_doc_thumb.X_str(lnki_thumbtime);
+ String new_name = Xof_lnki_time.Null_y(lnki_thumbtime) ? file_w + "px" : file_w + "px" + Xof_meta_thumb_parser.Dlm_seek_str + Xof_lnki_time.X_str(lnki_thumbtime);
Io_url new_trg = trg_url.GenNewNameOnly(new_name);
if (trg_url.Eq(new_trg)) return true; // HACK: io will delete file if moving unto itself; (i.e.: mv A.png A.png is same as del A.png); problem is that this proc is being called too many times
try {Io_mgr._.MoveFil_args(trg_url, new_trg, true).Exec();}
diff --git a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue.java b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue.java
index 5558e414d..dc3be7b69 100644
--- a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue.java
+++ b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue.java
@@ -20,20 +20,15 @@ import gplx.core.primitives.*;
import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*;
import gplx.xowa.files.gui.*;
public class Xof_xfer_queue {
- private ListAdp list = ListAdp_.new_(); private OrderedHash dirty = OrderedHash_.new_(); private Bry_obj_ref dirty_key = Bry_obj_ref.null_();
- public Int_obj_ref Elem_id() {return elem_id;} private Int_obj_ref elem_id = Int_obj_ref.neg1_();
- public int Count() {return list.Count();}
+ private final ListAdp xfer_list = ListAdp_.new_(); private final OrderedHash dirty_meta_mgrs = OrderedHash_.new_bry_();
+ public Int_obj_ref Html_uid() {return html_uid;} private Int_obj_ref html_uid = Int_obj_ref.neg1_();
+ public int Count() {return xfer_list.Count();}
public void Clear() {
- dirty.Clear();
- list.Clear();
- elem_id.Val_neg1_();
- }
- public void Add(Xof_xfer_itm xfer_itm) {list.Add(xfer_itm);}
- public void Add_dirty_if_new(Xof_meta_mgr meta_mgr) {
- byte[] meta_mgr_key = meta_mgr.Wiki().Domain_bry();
- if (!dirty.Has(dirty_key.Val_(meta_mgr_key)))
- dirty.AddReplace(meta_mgr_key, meta_mgr); // only add if new
+ dirty_meta_mgrs.Clear();
+ xfer_list.Clear();
+ html_uid.Val_neg1_();
}
+ public void Add(Xof_xfer_itm xfer_itm) {xfer_list.Add(xfer_itm);}
public void Exec(byte exec_tid, Gfo_usr_dlg wtr, Xowe_wiki wiki, Xoae_page page) {
if (wiki.File_mgr().Version() == Xow_file_mgr.Version_2)
Exec_v2(exec_tid, wtr, wiki, page);
@@ -42,45 +37,50 @@ public class Xof_xfer_queue {
}
private void Exec_v1(byte exec_tid, Gfo_usr_dlg wtr, Xowe_wiki wiki, Xoae_page page) {
Xof_meta_mgr meta_mgr = null;
- int xfer_len = list.Count();
+ int xfer_len = xfer_list.Count();
for (int i = 0; i < xfer_len; i++) {
if (wiki.Appe().Usr_dlg().Canceled()) break;
- Xof_xfer_itm xfer_itm = (Xof_xfer_itm)list.FetchAt(i);
+ Xof_xfer_itm xfer_itm = (Xof_xfer_itm)xfer_list.FetchAt(i);
meta_mgr = xfer_itm.Meta_itm().Owner_fil().Owner_mgr();
- Add_dirty_if_new(meta_mgr); // only add if new
+ byte[] meta_mgr_key = meta_mgr.Wiki().Domain_bry();
+ if (!dirty_meta_mgrs.Has(meta_mgr_key)) dirty_meta_mgrs.Add(meta_mgr_key, meta_mgr); // only add if new
String queue_msg = wtr.Prog_many(GRP_KEY, "download.bgn", "downloading ~{0} of ~{1}: ~{2};", i + ListAdp_.Base1, xfer_len, xfer_itm.Lnki_ttl());
wiki.App().Wmf_mgr().Download_wkr().Download_xrg().Prog_fmt_hdr_(queue_msg);
wiki.File_mgr().Repo_mgr().Xfer_by_meta(xfer_itm, this);
xfer_itm.Set__meta(xfer_itm.Meta_itm(), xfer_itm.Meta_itm().Repo_itm(wiki), wiki.Html_mgr().Img_thumb_width());
xfer_itm.Calc_by_meta();
if (!xfer_itm.Html_pass()) continue; // file not found; don't call Update_img, else invalid src will be passed and caption box will be incorrectly resized; EX:ar.d:جَبَّارَة; DATE:2014-04-13
- if (Bry_.Len_gt_0(xfer_itm.Html_view_src()) // only update images that have been found; otherwise "Undefined" shows up in image box
+ if (Bry_.Len_gt_0(xfer_itm.Html_view_url()) // only update images that have been found; otherwise "Undefined" shows up in image box
&& xfer_itm.Html_elem_tid() != Xof_html_elem.Tid_none) { // skip updates when downloading orig on File page (there won't be any frame to update)
Js_img_mgr.Update_img(page, xfer_itm);
}
}
- for (int i = 0; i < dirty.Count(); i++) {
- meta_mgr = (Xof_meta_mgr)dirty.FetchAt(i);
+ for (int i = 0; i < dirty_meta_mgrs.Count(); i++) {
+ meta_mgr = (Xof_meta_mgr)dirty_meta_mgrs.FetchAt(i);
meta_mgr.Save(true);
}
this.Clear();
}
private void Exec_v2(byte exec_tid, Gfo_usr_dlg wtr, Xowe_wiki wiki, Xoae_page page) {
wiki.File_mgr().Fsdb_mgr().Init_by_wiki(wiki);
- wiki.File_mgr().Fsdb_mgr().Fsdb_search_by_list(exec_tid, Xfer_itms_to_fsdb_itms(list, wiki.File_mgr().Patch_upright()), page, page.Tab().Html_itm());
+ wiki.File_mgr().Fsdb_mgr().Fsdb_search_by_list(exec_tid, Xfer_itms_to_fsdb_itms(xfer_list, wiki.File_mgr().Patch_upright()), page, page.Tab().Html_itm());
}
- private ListAdp Xfer_itms_to_fsdb_itms(ListAdp list, int upright_patch) {
+ private ListAdp Xfer_itms_to_fsdb_itms(ListAdp xfer_list, int upright_patch) {
ListAdp rv = ListAdp_.new_();
- int list_len = list.Count();
+ int list_len = xfer_list.Count();
for (int i = 0; i < list_len; i++) {
- Xof_xfer_itm xfer_itm = (Xof_xfer_itm)list.FetchAt(i);
- Xof_fsdb_itm fsdb_itm = new Xof_fsdb_itm();
- fsdb_itm.Ctor_by_lnki(xfer_itm.Lnki_ttl(), xfer_itm.Lnki_ext(), xfer_itm.Lnki_md5(), xfer_itm.Lnki_type(), xfer_itm.Lnki_w(), xfer_itm.Lnki_h(), upright_patch, xfer_itm.Lnki_upright(), xfer_itm.Lnki_time(), xfer_itm.Lnki_page());
- fsdb_itm.Html_uid_(xfer_itm.Html_uid());
- fsdb_itm.Html_elem_tid_(xfer_itm.Html_elem_tid());
- fsdb_itm.Gallery_mgr_h_(xfer_itm.Gallery_mgr_h());
- fsdb_itm.Html_img_wkr_(xfer_itm.Html_img_wkr());
- rv.Add(fsdb_itm);
+ Xof_xfer_itm xfer = (Xof_xfer_itm)xfer_list.FetchAt(i);
+ Xof_fsdb_itm fsdb = new Xof_fsdb_itm();
+ fsdb.Ctor_by_lnki(xfer.Lnki_ttl(), xfer.Lnki_type(), xfer.Lnki_w(), xfer.Lnki_h(), upright_patch, xfer.Lnki_upright(), xfer.Lnki_time(), xfer.Lnki_page());
+ fsdb.Lnki_ext_(xfer.Lnki_ext());
+ if (xfer.Orig_ext() > 0)
+ fsdb.Ctor_by_orig(xfer.Orig_repo_id(), xfer.Orig_repo_name(), xfer.Orig_ttl(), xfer.Orig_ext(), xfer.Orig_w(), xfer.Orig_h(), xfer.Orig_redirect());
+ fsdb.Html_uid_(xfer.Html_uid());
+ fsdb.Html_elem_tid_(xfer.Html_elem_tid());
+ fsdb.Gallery_mgr_h_(xfer.Gallery_mgr_h());
+ fsdb.Html_img_wkr_(xfer.Html_img_wkr());
+ fsdb.File_exists_(xfer.File_exists());
+ rv.Add(fsdb);
}
this.Clear();
return rv;
diff --git a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_cases_tst.java b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_cases_tst.java
index ea2083a66..56a8b7042 100644
--- a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_cases_tst.java
+++ b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_cases_tst.java
@@ -191,7 +191,7 @@ public class Xof_xfer_queue_html_cases_tst {
}
@Test public void Upright_size_incorrect() {// PURPOSE.fix: incorrect image size being brought down; EX: w:ASCII; [[Image:ASCII Code Chart.svg|thumb|right|upright=1.6]]; 264, but should be 350
fxt .ini_page_create_en_wiki ("File:A.png");
- fxt .Lnki_("A.png", true, -1, -1, 1.6, Xof_doc_thumb.Null_as_int) // upright
+ fxt .Lnki_("A.png", true, -1, -1, 1.6, Xof_lnki_time.Null_as_int) // upright
.Src( fxt.img_("mem/src/en.wikipedia.org/7/70/A.png", 830, 328)
, fxt.img_("mem/src/en.wikipedia.org/thumb/7/70/A.png/350px-A.png", 350, 138)
)
diff --git a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_fxt.java b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_fxt.java
index 5ccebf962..bc3cc44d7 100644
--- a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_fxt.java
+++ b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_fxt.java
@@ -19,20 +19,20 @@ package gplx.xowa; import gplx.*;
import gplx.core.primitives.*; import gplx.dbs.*;
import gplx.ios.*; import gplx.xowa.wikis.*; import gplx.xowa.files.*;
public class Xof_xfer_queue_html_fxt extends Xof_xfer_queue_base_fxt {
+ private final Xof_xfer_queue queue = new Xof_xfer_queue();
@Override public void Clear(boolean src_repo_is_wmf) {
Db_conn_bldr.I.Reg_default_mem();
super.Clear(src_repo_is_wmf);
this.Api_size().Clear();
}
- public Xof_xfer_queue_html_fxt Lnki_orig_ (String lnki_ttl) {return Lnki_(lnki_ttl, Bool_.N, Xof_img_size.Size_null_deprecated, Xof_img_size.Size_null_deprecated, Xop_lnki_tkn.Upright_null, Xof_doc_thumb.Null_as_int);}
- public Xof_xfer_queue_html_fxt Lnki_thumb_(String lnki_ttl, int lnki_w) {return Lnki_(lnki_ttl, Bool_.Y, lnki_w, Xof_img_size.Size_null_deprecated, Xop_lnki_tkn.Upright_null, Xof_doc_thumb.Null_as_int);}
- public Xof_xfer_queue_html_fxt Lnki_thumb_(String lnki_ttl, int lnki_w, int lnki_h) {return Lnki_(lnki_ttl, Bool_.Y, lnki_w, lnki_h, Xop_lnki_tkn.Upright_null, Xof_doc_thumb.Null_as_int);}
+ public Xof_xfer_queue_html_fxt Lnki_orig_ (String lnki_ttl) {return Lnki_(lnki_ttl, Bool_.N, Xof_img_size.Size_null_deprecated, Xof_img_size.Size_null_deprecated, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null_as_int);}
+ public Xof_xfer_queue_html_fxt Lnki_thumb_(String lnki_ttl, int lnki_w) {return Lnki_(lnki_ttl, Bool_.Y, lnki_w, Xof_img_size.Size_null_deprecated, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null_as_int);}
+ public Xof_xfer_queue_html_fxt Lnki_thumb_(String lnki_ttl, int lnki_w, int lnki_h) {return Lnki_(lnki_ttl, Bool_.Y, lnki_w, lnki_h, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null_as_int);}
public Xof_xfer_queue_html_fxt Lnki_(String lnki_ttl, boolean thumb, int lnki_w, int lnki_h, double upright, int seek_time) { // NOTE: only one xfer_itm; supports one Lnki_ per test only
Xowe_wiki wiki = this.En_wiki();
- xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(wiki.Ctx(), queue, Bry_.new_utf8_(lnki_ttl), thumb ? Xop_lnki_type.Id_thumb : Xop_lnki_type.Id_null, lnki_w, lnki_h, upright, Xof_doc_thumb.X_int(seek_time), Xof_doc_page.Null, false, queue_add_ref);
+ xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(wiki.Ctx(), queue, Bry_.new_utf8_(lnki_ttl), thumb ? Xop_lnki_type.Id_thumb : Xop_lnki_type.Id_null, lnki_w, lnki_h, upright, Xof_lnki_time.X_int(seek_time), Xof_lnki_page.Null, false, queue_add_ref);
return this;
} private Xof_xfer_itm xfer_itm = new Xof_xfer_itm(); Bool_obj_ref queue_add_ref = Bool_obj_ref.n_();
- Xof_xfer_queue queue = new Xof_xfer_queue();
public Xof_xfer_itm Xfer_itm() {return xfer_itm;}
public Xof_xfer_queue_html_fxt Src(Io_fil... v) {return (Xof_xfer_queue_html_fxt)Src_base(v);}
public Xof_xfer_queue_html_fxt Trg(Io_fil... v) {return (Xof_xfer_queue_html_fxt)Trg_base(v);}
@@ -52,8 +52,8 @@ public class Xof_xfer_queue_html_fxt extends Xof_xfer_queue_base_fxt {
wiki.File_mgr().Cfg_download().Enabled_(true);
queue.Exec(Xof_exec_tid.Tid_wiki_page, usr_dlg, wiki, Xoae_page.Empty);
tst_trg_fils();
- if (this.html_orig_src != null) Tfds.Eq(this.html_orig_src , String_.new_utf8_(xfer_itm.Html_orig_src()));
- if (this.Html_view_src() != null) Tfds.Eq(this.Html_view_src(), String_.new_utf8_(xfer_itm.Html_view_src()));
+ if (this.html_orig_src != null) Tfds.Eq(this.html_orig_src , String_.new_utf8_(xfer_itm.Html_orig_url()));
+ if (this.Html_view_src() != null) Tfds.Eq(this.Html_view_src(), String_.new_utf8_(xfer_itm.Html_view_url()));
if (this.Html_w() != -1) Tfds.Eq(this.Html_w(), xfer_itm.Html_w());
if (this.Html_h() != -1) Tfds.Eq(this.Html_h(), xfer_itm.Html_h());
queue.Clear();
diff --git a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_offline_tst.java b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_offline_tst.java
index ec5ac0a75..8bd28ee0e 100644
--- a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_offline_tst.java
+++ b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_offline_tst.java
@@ -22,7 +22,7 @@ public class Xof_xfer_queue_html_offline_tst {
Xof_xfer_queue_html_fxt fxt = new Xof_xfer_queue_html_fxt();
@Before public void init() {fxt.Clear(true); fxt.Src_commons_repo().Tarball_(true); fxt.Src_en_wiki_repo().Tarball_(true);}
@Test public void Missing() { // PURPOSE.fix: missing image was not being marked as missing; DATE:20121227
- fxt .Lnki_("A.png", true, 220, -1, Xop_lnki_tkn.Upright_null, Xof_doc_thumb.Null_as_int)
+ fxt .Lnki_("A.png", true, 220, -1, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null_as_int)
.Src()
.Trg( fxt.reg_("mem/xowa/file/#meta/en.wikipedia.org/7/70.csv" , "A.png|x||0?0,0|")
)
diff --git a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_wmf_api_tst.java b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_wmf_api_tst.java
index 4911b753f..1b662cfcd 100644
--- a/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_wmf_api_tst.java
+++ b/400_xowa/src_162_xfer/gplx/xowa/Xof_xfer_queue_html_wmf_api_tst.java
@@ -71,7 +71,7 @@ public class Xof_xfer_queue_html_wmf_api_tst {
}
@Test public void Upright_defect() { // PURPOSE.fix: upright not working; PAGE:en.w:Beethoven; [[File:Rudolf-habsburg-olmuetz.jpg|thumb|upright|]]; changed upright to = Upright_default; DATE:2014-05-23
fxt .ini_page_api("en_wiki", "A.png", "", 1378, 1829);
- fxt .Lnki_("A.png", true, -1, -1, Xof_img_size.Upright_default_marker, Xof_doc_thumb.Null_as_int)
+ fxt .Lnki_("A.png", true, -1, -1, Xof_img_size.Upright_default_marker, Xof_lnki_time.Null_as_int)
.Src( fxt.img_("mem/src/en.wikipedia.org/thumb/7/70/A.png/170px-A.png", 170, 226))
.Trg( fxt.img_("mem/trg/en.wikipedia.org/fit/7/0/A.png/170px.png", 170, 226)
, fxt.reg_("mem/xowa/file/#meta/en.wikipedia.org/7/70.csv" , "A.png|y||2?1378,1829|1?170,226")
@@ -80,7 +80,7 @@ public class Xof_xfer_queue_html_wmf_api_tst {
}
@Test public void Height_only() { // PURPOSE.fix: height only was still using old infer-size code; EX:w:[[File:Upper and Middle Manhattan.jpg|x120px]]; DATE:2012-12-27
fxt .ini_page_api("en_wiki", "A.png", "", 12591, 1847);
- fxt .Lnki_("A.png", false, -1, 130, Xop_lnki_tkn.Upright_null, Xof_doc_thumb.Null_as_int)
+ fxt .Lnki_("A.png", false, -1, 130, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null_as_int)
.Src( fxt.img_("mem/src/en.wikipedia.org/thumb/7/70/A.png/887px-A.png", 887, 130))
.Trg( fxt.img_("mem/trg/en.wikipedia.org/fit/7/0/A.png/887px.png", 887, 130)
, fxt.reg_("mem/xowa/file/#meta/en.wikipedia.org/7/70.csv" , "A.png|y||2?12591,1847|1?887,130")
@@ -89,7 +89,7 @@ public class Xof_xfer_queue_html_wmf_api_tst {
}
@Test public void Width_only_height_ignored() {// PURPOSE.fix: if height is not specified, do not recalc; needed when true scaled height is 150x151 but WM has 150x158; defect would discard 150x158; EX:[[File:Tokage_2011-07-15.jpg|150px]] simple.wikipedia.org/wiki/2011_Pacific_typhoon_season; DATE:2013-06-03
fxt .ini_page_api("en_wiki", "A.png", "", 4884, 4932);
- fxt .Lnki_("A.png", true, 150, -1, Xop_lnki_tkn.Upright_null, Xof_doc_thumb.Null_as_int)
+ fxt .Lnki_("A.png", true, 150, -1, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null_as_int)
.Src( fxt.img_("mem/src/en.wikipedia.org/thumb/7/70/A.png/150px-A.png", 150, 158))
.Trg( fxt.img_("mem/trg/en.wikipedia.org/fit/7/0/A.png/150px.png", 150, 158)
, fxt.reg_("mem/xowa/file/#meta/en.wikipedia.org/7/70.csv" , "A.png|y||2?4884,4932|1?150,158")
@@ -97,7 +97,7 @@ public class Xof_xfer_queue_html_wmf_api_tst {
.tst();
}
@Test public void Missing_was_not_being_marked() { // PURPOSE.fix: missing image was not showing up as repo=x in meta; DATE:2013-01-10
- fxt .Lnki_("A.png", false, -1, 130, Xop_lnki_tkn.Upright_null, Xof_doc_thumb.Null_as_int)
+ fxt .Lnki_("A.png", false, -1, 130, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null_as_int)
.Src()
.Trg( fxt.reg_("mem/xowa/file/#meta/en.wikipedia.org/7/70.csv" , "A.png|x||0?0,0|")
)
@@ -142,7 +142,7 @@ public class Xof_xfer_queue_html_wmf_api_tst {
@Test public void Ogg_audio() { // PURPOSE: ogg is audio; (a) do not download thumb; (b) get from correct wiki; DATE:2013-08-03
fxt .ini_page_create_commons("File:A.ogg");
fxt .ini_page_api("commons", "A.ogg", "", 0, 0);
- fxt .Lnki_("A.ogg", false, -1, -1, 1, Xof_doc_thumb.Null_as_int)
+ fxt .Lnki_("A.ogg", false, -1, -1, 1, Xof_lnki_time.Null_as_int)
.Src( fxt.img_("mem/src/commons.wikimedia.org/4/42/A.ogg", 0, 0))
.Trg( fxt.img_("mem/trg/commons.wikimedia.org/raw/4/2/A.ogg", 0, 0)
, fxt.reg_("mem/xowa/file/#meta/en.wikipedia.org/4/42.csv" , "A.ogg|0||1?0,0|0?0,0")
@@ -159,7 +159,7 @@ public class Xof_xfer_queue_html_wmf_api_tst {
@Test public void Imap() { // PURPOSE: check that imap downloads orig, even when thumb is requested; DATE:2014-08-08
fxt .ini_page_create_commons("File:A.png");
fxt .ini_page_api("commons", "A.png", "", 180, 160);
- fxt .Lnki_("A.png", true, 90, Xof_img_size.Size_null_deprecated, Xof_img_size.Size_null_deprecated, Xof_doc_thumb.Null_as_int); // thumbtime of 2 specified; will be ignored below
+ fxt .Lnki_("A.png", true, 90, Xof_img_size.Size_null_deprecated, Xof_img_size.Size_null_deprecated, Xof_lnki_time.Null_as_int); // thumbtime of 2 specified; will be ignored below
fxt .Xfer_itm().Html_elem_tid_(Xof_html_elem.Tid_imap);
fxt .Src( fxt.img_("mem/src/commons.wikimedia.org/thumb/7/70/A.png/90px-A.png", 90, 80))
.Trg( fxt.img_("mem/trg/commons.wikimedia.org/fit/7/0/A.png/90px.png", 90, 80)
diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xobd_parser.java b/400_xowa/src_200_bldr/gplx/xowa/Xobd_parser.java
index 659ba1e93..ddc9a3bfb 100644
--- a/400_xowa/src_200_bldr/gplx/xowa/Xobd_parser.java
+++ b/400_xowa/src_200_bldr/gplx/xowa/Xobd_parser.java
@@ -36,7 +36,7 @@ public class Xobd_parser implements Xobd_wkr {
}
}
public void Wkr_run(Xodb_page page) {
- byte[] src = page.Text(); int src_len = src.length;
+ byte[] src = page.Wtxt(); int src_len = src.length;
int pos = 0;
while (true) {
if (pos == src_len) break;
diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xobd_rdr.java b/400_xowa/src_200_bldr/gplx/xowa/Xobd_rdr.java
index dc8a5f900..80a4af3b2 100644
--- a/400_xowa/src_200_bldr/gplx/xowa/Xobd_rdr.java
+++ b/400_xowa/src_200_bldr/gplx/xowa/Xobd_rdr.java
@@ -45,7 +45,7 @@ public class Xobd_rdr implements Xob_cmd {
while (true) {
int cur_pos = parser.Parse_page(page, usr_dlg, fil, fil.Bfr(), prv_pos, ns_mgr); if (cur_pos == Bry_.NotFound) break;
if (cur_pos < prv_pos)
- bldr.StatusMgr_prog_fmt(fil.Fil_pos(), fil_len, 1, optRdrFillFmt, Int_.Xto_str_pad_bgn((int)(fil.Fil_pos() / Io_mgr.Len_mb), Int_.DigitCount((int)(fil.Fil_len() / Io_mgr.Len_mb))), "", String_.new_utf8_(page.Ttl_w_ns())); // ;
+ bldr.StatusMgr_prog_fmt(fil.Fil_pos(), fil_len, 1, optRdrFillFmt, Int_.Xto_str_pad_bgn((int)(fil.Fil_pos() / Io_mgr.Len_mb), Int_.DigitCount((int)(fil.Fil_len() / Io_mgr.Len_mb))), "", String_.new_utf8_(page.Ttl_full_db()));
prv_pos = cur_pos;
try {
for (int i = 0; i < wkr_ary_len; i++)
@@ -55,7 +55,7 @@ public class Xobd_rdr implements Xob_cmd {
Err_.Noop(e);
long dividend = fil.Fil_pos();
if (dividend >= fil_len) dividend = fil_len - 1; // prevent % from going over 100
- String msg = DecimalAdp_.CalcPctStr(dividend, fil_len, "00.00") + "|" + String_.new_utf8_(page.Ttl_w_ns()) + "|" + Err_.Message_lang(e) + "|" + Xot_tmpl_wtr.Err_string; Xot_tmpl_wtr.Err_string = "";
+ String msg = DecimalAdp_.CalcPctStr(dividend, fil_len, "00.00") + "|" + String_.new_utf8_(page.Ttl_full_db()) + "|" + Err_.Message_lang(e) + "|" + Xot_tmpl_wtr.Err_string; Xot_tmpl_wtr.Err_string = "";
bldr.Usr_dlg().Log_wtr().Log_msg_to_session(msg);
ConsoleAdp._.WriteLine(msg);
}
diff --git a/400_xowa/src_200_bldr/gplx/xowa/Xodb_page_raw_parser.java b/400_xowa/src_200_bldr/gplx/xowa/Xodb_page_raw_parser.java
index 98f98574e..224755fa1 100644
--- a/400_xowa/src_200_bldr/gplx/xowa/Xodb_page_raw_parser.java
+++ b/400_xowa/src_200_bldr/gplx/xowa/Xodb_page_raw_parser.java
@@ -51,7 +51,7 @@ public class Xodb_page_raw_parser {
page.Ttl_(ttl, ns_mgr);
read = rdr.Read_next(); if (!read) throw Err_.new_("could not read text");
byte[] text = Bry_.Mid(rdr.Bfr(), rdr.Key_pos_bgn(), rdr.Key_pos_end() - 1);
- page.Text_(text);
+ page.Wtxt_(text);
rdr.Bfr_last_read_add(1);
return true;
}
diff --git a/400_xowa/src_210_bldr_core/gplx/xowa/Xobc_parse_dump_templates.java b/400_xowa/src_210_bldr_core/gplx/xowa/Xobc_parse_dump_templates.java
index 1e9c84e20..767fce043 100644
--- a/400_xowa/src_210_bldr_core/gplx/xowa/Xobc_parse_dump_templates.java
+++ b/400_xowa/src_210_bldr_core/gplx/xowa/Xobc_parse_dump_templates.java
@@ -27,7 +27,7 @@ public class Xobc_parse_dump_templates extends Xob_itm_dump_base implements Xobd
}
public void Wkr_run(Xodb_page page) {
if (page.Ns_id() != Xow_ns_.Id_template) return;
- int id = page.Id(); byte[] title = page.Ttl_wo_ns(), text = page.Text(); int title_len = title.length, text_len = text.length;
+ int id = page.Id(); byte[] title = page.Ttl_page_db(), text = page.Wtxt(); int title_len = title.length, text_len = text.length;
if (FixedLen_page + title_len + text_len + dump_bfr.Len() > dump_fil_len) super.Flush_dump();
Xodb_page_.Txt_page_save(dump_bfr, id, page.Modified_on(), title, text, true);
}
diff --git a/400_xowa/src_240_install/gplx/xowa/Xoa_css_img_downloader.java b/400_xowa/src_240_install/gplx/xowa/Xoa_css_img_downloader.java
index dbd836c87..44560ca1c 100644
--- a/400_xowa/src_240_install/gplx/xowa/Xoa_css_img_downloader.java
+++ b/400_xowa/src_240_install/gplx/xowa/Xoa_css_img_downloader.java
@@ -114,6 +114,7 @@ public class Xoa_css_img_downloader {
if (css_url_len > 1 && css_url[1] != Byte_ascii.Slash) // skip if css_url starts with "//"; EX: "//site/page"
css_url = Bry_.Add(rel_url_prefix, css_url); // "/w/a.css" -> "//en.wikipedia.org/w/a.css"
}
+ css_url = Bry_.Replace(css_url, Byte_ascii.Space, Byte_ascii.Underline); // NOTE: must replace spaces with underlines else download will fail; EX:https://it.wikivoyage.org/w/index.php?title=MediaWiki:Container e Infobox.css&action=raw&ctype=text/css; DATE:2015-03-08
byte[] css_src_bry = Import_url_build(stylesheet_prefix, rel_url_prefix, css_url);
String css_src_str = String_.new_utf8_(css_src_bry);
download_wkr.Download_xrg().Prog_fmt_hdr_(usr_dlg.Log_many(GRP_KEY, "logo.download", "downloading import for '~{0}'", css_src_str));
diff --git a/400_xowa/src_240_install/gplx/xowa/Xoa_css_img_downloader_tst.java b/400_xowa/src_240_install/gplx/xowa/Xoa_css_img_downloader_tst.java
index c605cee25..758271416 100644
--- a/400_xowa/src_240_install/gplx/xowa/Xoa_css_img_downloader_tst.java
+++ b/400_xowa/src_240_install/gplx/xowa/Xoa_css_img_downloader_tst.java
@@ -129,6 +129,20 @@ public class Xoa_css_img_downloader_tst {
)
);
}
+ @Test public void Import_url_space() { // PURPOSE: some css has spaces; replace with underlines else fails when downloaded; EX: https://it.wikivoyage.org/w/index.php?title=MediaWiki:Container e Infobox.css&action=raw&ctype=text/css; DATE:2015-03-08
+ Io_mgr._.InitEngine_mem();
+ Io_mgr._.SaveFilStr("mem/www/b_c.css", "imported_css");
+ fxt.Test_css_convert
+ ( "x @import url(\"mem/www/b c.css\") screen; z"
+ , String_.Concat_lines_nl
+ ( "x "
+ , "/*XOWA:mem/www/b_c.css*/"
+ , "imported_css"
+ , ""
+ , " z"
+ )
+ );
+ }
@Test public void Wikisource_freedimg() { // PURPOSE: check that "wikimedia" is replaced for FreedImg hack; PAGE:en.s:Page:Notes_on_Osteology_of_Baptanodon._With_a_Description_of_a_New_Species.pdf/3 DATE:2014-09-06
fxt.Downloader().Stylesheet_prefix_(Bry_.new_utf8_("mem")); // stylesheet prefix prefix defaults to ""; set to "mem", else test will try to retrieve "//url" which will fail
Io_mgr._.InitEngine_mem();
diff --git a/400_xowa/src_240_install/gplx/xowa/Xoi_cmd_wiki_tst.java b/400_xowa/src_240_install/gplx/xowa/Xoi_cmd_wiki_tst.java
index a24b3b5a3..9dea2c680 100644
--- a/400_xowa/src_240_install/gplx/xowa/Xoi_cmd_wiki_tst.java
+++ b/400_xowa/src_240_install/gplx/xowa/Xoi_cmd_wiki_tst.java
@@ -127,164 +127,431 @@ public class Xoi_cmd_wiki_tst {
public static String[] Wikis = new String[]
//{ "simple.wikipedia.org"
//};
-{ "aa.wikibooks.org"
+{ "commons.wikimedia.org"
+, "species.wikimedia.org"
+, "meta.wikimedia.org"
+, "incubator.wikimedia.org"
+, "www.wikidata.org"
+, "www.mediawiki.org"
+, "wikimediafoundation.org"
+, "en.wikipedia.org"
+, "en.wiktionary.org"
+, "en.wikisource.org"
+, "en.wikibooks.org"
+, "en.wikiversity.org"
+, "en.wikiquote.org"
+, "en.wikinews.org"
+, "en.wikivoyage.org"
+, "de.wikipedia.org"
+, "de.wiktionary.org"
+, "de.wikisource.org"
+, "de.wikibooks.org"
+, "de.wikiversity.org"
+, "de.wikiquote.org"
+, "de.wikinews.org"
+, "de.wikivoyage.org"
+, "es.wikipedia.org"
+, "es.wiktionary.org"
+, "es.wikisource.org"
+, "es.wikibooks.org"
+, "es.wikiversity.org"
+, "es.wikiquote.org"
+, "es.wikinews.org"
+, "es.wikivoyage.org"
+, "fr.wikipedia.org"
+, "fr.wiktionary.org"
+, "fr.wikisource.org"
+, "fr.wikibooks.org"
+, "fr.wikiversity.org"
+, "fr.wikiquote.org"
+, "fr.wikinews.org"
+, "fr.wikivoyage.org"
+, "it.wikipedia.org"
+, "it.wiktionary.org"
+, "it.wikisource.org"
+, "it.wikibooks.org"
+, "it.wikiversity.org"
+, "it.wikiquote.org"
+, "it.wikinews.org"
+, "it.wikivoyage.org"
+, "ja.wikipedia.org"
+, "ja.wiktionary.org"
+, "ja.wikisource.org"
+, "ja.wikibooks.org"
+, "ja.wikiversity.org"
+, "ja.wikiquote.org"
+, "ja.wikinews.org"
+, "nl.wikipedia.org"
+, "nl.wiktionary.org"
+, "nl.wikisource.org"
+, "nl.wikibooks.org"
+, "nl.wikiquote.org"
+, "nl.wikinews.org"
+, "nl.wikivoyage.org"
+, "nl.wikimedia.org"
+, "pl.wikipedia.org"
+, "pl.wiktionary.org"
+, "pl.wikisource.org"
+, "pl.wikibooks.org"
+, "pl.wikiquote.org"
+, "pl.wikinews.org"
+, "pl.wikivoyage.org"
+, "pl.wikimedia.org"
+, "pt.wikipedia.org"
+, "pt.wiktionary.org"
+, "pt.wikisource.org"
+, "pt.wikibooks.org"
+, "pt.wikiversity.org"
+, "pt.wikiquote.org"
+, "pt.wikinews.org"
+, "pt.wikivoyage.org"
+, "ru.wikipedia.org"
+, "ru.wiktionary.org"
+, "ru.wikisource.org"
+, "ru.wikibooks.org"
+, "ru.wikiversity.org"
+, "ru.wikiquote.org"
+, "ru.wikinews.org"
+, "ru.wikivoyage.org"
+, "ru.wikimedia.org"
+, "ar.wikipedia.org"
+, "ar.wiktionary.org"
+, "ar.wikisource.org"
+, "ar.wikibooks.org"
+, "ar.wikiversity.org"
+, "ar.wikiquote.org"
+, "ar.wikinews.org"
+, "ar.wikimedia.org"
+, "ca.wikipedia.org"
+, "ca.wiktionary.org"
+, "ca.wikisource.org"
+, "ca.wikibooks.org"
+, "ca.wikiquote.org"
+, "ca.wikinews.org"
+, "ca.wikimedia.org"
+, "cs.wikipedia.org"
+, "cs.wiktionary.org"
+, "cs.wikisource.org"
+, "cs.wikibooks.org"
+, "cs.wikiversity.org"
+, "cs.wikiquote.org"
+, "cs.wikinews.org"
+, "da.wikipedia.org"
+, "da.wiktionary.org"
+, "da.wikisource.org"
+, "da.wikibooks.org"
+, "da.wikiquote.org"
+, "eo.wikipedia.org"
+, "eo.wiktionary.org"
+, "eo.wikisource.org"
+, "eo.wikibooks.org"
+, "eo.wikiquote.org"
+, "eo.wikinews.org"
+, "fa.wikipedia.org"
+, "fa.wiktionary.org"
+, "fa.wikisource.org"
+, "fa.wikibooks.org"
+, "fa.wikiquote.org"
+, "fa.wikinews.org"
+, "fa.wikivoyage.org"
+, "fi.wikipedia.org"
+, "fi.wiktionary.org"
+, "fi.wikisource.org"
+, "fi.wikibooks.org"
+, "fi.wikiversity.org"
+, "fi.wikiquote.org"
+, "fi.wikinews.org"
+, "fi.wikimedia.org"
+, "hu.wikipedia.org"
+, "hu.wiktionary.org"
+, "hu.wikisource.org"
+, "hu.wikibooks.org"
+, "hu.wikiquote.org"
+, "hu.wikinews.org"
+, "id.wikipedia.org"
+, "id.wiktionary.org"
+, "id.wikisource.org"
+, "id.wikibooks.org"
+, "id.wikiquote.org"
+, "kk.wikipedia.org"
+, "kk.wiktionary.org"
+, "kk.wikibooks.org"
+, "kk.wikiquote.org"
+, "ko.wikipedia.org"
+, "ko.wiktionary.org"
+, "ko.wikisource.org"
+, "ko.wikibooks.org"
+, "ko.wikiversity.org"
+, "ko.wikiquote.org"
+, "ko.wikinews.org"
+, "lt.wikipedia.org"
+, "lt.wiktionary.org"
+, "lt.wikisource.org"
+, "lt.wikibooks.org"
+, "lt.wikiquote.org"
+, "no.wikipedia.org"
+, "no.wiktionary.org"
+, "no.wikisource.org"
+, "no.wikibooks.org"
+, "no.wikiquote.org"
+, "no.wikinews.org"
+, "no.wikimedia.org"
+, "ro.wikipedia.org"
+, "ro.wiktionary.org"
+, "ro.wikisource.org"
+, "ro.wikibooks.org"
+, "ro.wikiquote.org"
+, "ro.wikinews.org"
+, "ro.wikivoyage.org"
+, "sk.wikipedia.org"
+, "sk.wiktionary.org"
+, "sk.wikisource.org"
+, "sk.wikibooks.org"
+, "sk.wikiquote.org"
+, "sr.wikipedia.org"
+, "sr.wiktionary.org"
+, "sr.wikisource.org"
+, "sr.wikibooks.org"
+, "sr.wikiquote.org"
+, "sr.wikinews.org"
+, "sv.wikipedia.org"
+, "sv.wiktionary.org"
+, "sv.wikisource.org"
+, "sv.wikibooks.org"
+, "sv.wikiversity.org"
+, "sv.wikiquote.org"
+, "sv.wikinews.org"
+, "sv.wikivoyage.org"
+, "tr.wikipedia.org"
+, "tr.wiktionary.org"
+, "tr.wikisource.org"
+, "tr.wikibooks.org"
+, "tr.wikiquote.org"
+, "tr.wikinews.org"
+, "tr.wikimedia.org"
+, "uk.wikipedia.org"
+, "uk.wiktionary.org"
+, "uk.wikisource.org"
+, "uk.wikibooks.org"
+, "uk.wikiquote.org"
+, "uk.wikinews.org"
+, "uk.wikivoyage.org"
+, "uk.wikimedia.org"
+, "vi.wikipedia.org"
+, "vi.wiktionary.org"
+, "vi.wikisource.org"
+, "vi.wikibooks.org"
+, "vi.wikiquote.org"
+, "vi.wikivoyage.org"
+, "zh.wikipedia.org"
+, "zh.wiktionary.org"
+, "zh.wikisource.org"
+, "zh.wikibooks.org"
+, "zh.wikiquote.org"
+, "zh.wikinews.org"
+, "zh.wikivoyage.org"
+, "bg.wikipedia.org"
+, "bg.wiktionary.org"
+, "bg.wikisource.org"
+, "bg.wikibooks.org"
+, "bg.wikiquote.org"
+, "bg.wikinews.org"
+, "el.wikipedia.org"
+, "el.wiktionary.org"
+, "el.wikisource.org"
+, "el.wikibooks.org"
+, "el.wikiversity.org"
+, "el.wikiquote.org"
+, "el.wikinews.org"
+, "el.wikivoyage.org"
+, "et.wikipedia.org"
+, "et.wiktionary.org"
+, "et.wikisource.org"
+, "et.wikibooks.org"
+, "et.wikiquote.org"
+, "et.wikimedia.org"
+, "eu.wikipedia.org"
+, "eu.wiktionary.org"
+, "eu.wikibooks.org"
+, "eu.wikiquote.org"
+, "gl.wikipedia.org"
+, "gl.wiktionary.org"
+, "gl.wikisource.org"
+, "gl.wikibooks.org"
+, "gl.wikiquote.org"
+, "he.wikipedia.org"
+, "he.wiktionary.org"
+, "he.wikisource.org"
+, "he.wikibooks.org"
+, "he.wikiquote.org"
+, "he.wikinews.org"
+, "he.wikivoyage.org"
+, "hr.wikipedia.org"
+, "hr.wiktionary.org"
+, "hr.wikisource.org"
+, "hr.wikibooks.org"
+, "hr.wikiquote.org"
+, "ms.wikipedia.org"
+, "ms.wiktionary.org"
+, "ms.wikibooks.org"
+, "nn.wikipedia.org"
+, "nn.wiktionary.org"
+, "nn.wikiquote.org"
+, "sh.wikipedia.org"
+, "sh.wiktionary.org"
+, "simple.wikipedia.org"
+, "simple.wiktionary.org"
+, "simple.wikibooks.org"
+, "simple.wikiquote.org"
+, "sl.wikipedia.org"
+, "sl.wiktionary.org"
+, "sl.wikisource.org"
+, "sl.wikibooks.org"
+, "sl.wikiversity.org"
+, "sl.wikiquote.org"
+, "th.wikipedia.org"
+, "th.wiktionary.org"
+, "th.wikisource.org"
+, "th.wikibooks.org"
+, "th.wikiquote.org"
+, "th.wikinews.org"
+, "vo.wikipedia.org"
+, "vo.wiktionary.org"
+, "vo.wikibooks.org"
+, "vo.wikiquote.org"
+, "hi.wikipedia.org"
+, "hi.wiktionary.org"
+, "hi.wikibooks.org"
+, "hi.wikiquote.org"
+, "ia.wikipedia.org"
+, "ia.wiktionary.org"
+, "ia.wikibooks.org"
+, "la.wikipedia.org"
+, "la.wiktionary.org"
+, "la.wikisource.org"
+, "la.wikibooks.org"
+, "la.wikiquote.org"
, "aa.wikipedia.org"
, "aa.wiktionary.org"
+, "aa.wikibooks.org"
, "ab.wikipedia.org"
, "ab.wiktionary.org"
, "ace.wikipedia.org"
-, "af.wikibooks.org"
, "af.wikipedia.org"
-, "af.wikiquote.org"
, "af.wiktionary.org"
-, "ak.wikibooks.org"
+, "af.wikibooks.org"
+, "af.wikiquote.org"
, "ak.wikipedia.org"
, "ak.wiktionary.org"
-, "als.wikibooks.org"
+, "ak.wikibooks.org"
, "als.wikipedia.org"
-, "als.wikiquote.org"
, "als.wiktionary.org"
+, "als.wikibooks.org"
+, "als.wikiquote.org"
, "am.wikipedia.org"
-, "am.wikiquote.org"
, "am.wiktionary.org"
+, "am.wikiquote.org"
, "an.wikipedia.org"
, "an.wiktionary.org"
-, "ang.wikibooks.org"
, "ang.wikipedia.org"
-, "ang.wikiquote.org"
-, "ang.wikisource.org"
, "ang.wiktionary.org"
-, "ar.wikibooks.org"
-, "ar.wikinews.org"
-, "ar.wikipedia.org"
-, "ar.wikiquote.org"
-, "ar.wikisource.org"
-, "ar.wikiversity.org"
-, "ar.wiktionary.org"
+, "ang.wikisource.org"
+, "ang.wikibooks.org"
+, "ang.wikiquote.org"
, "arc.wikipedia.org"
, "arz.wikipedia.org"
-, "as.wikibooks.org"
, "as.wikipedia.org"
-, "as.wikisource.org"
, "as.wiktionary.org"
-, "ast.wikibooks.org"
+, "as.wikisource.org"
+, "as.wikibooks.org"
, "ast.wikipedia.org"
-, "ast.wikiquote.org"
, "ast.wiktionary.org"
+, "ast.wikibooks.org"
+, "ast.wikiquote.org"
, "av.wikipedia.org"
, "av.wiktionary.org"
-, "ay.wikibooks.org"
, "ay.wikipedia.org"
, "ay.wiktionary.org"
-, "az.wikibooks.org"
+, "ay.wikibooks.org"
, "az.wikipedia.org"
-, "az.wikiquote.org"
-, "az.wikisource.org"
, "az.wiktionary.org"
-, "ba.wikibooks.org"
+, "az.wikisource.org"
+, "az.wikibooks.org"
+, "az.wikiquote.org"
, "ba.wikipedia.org"
+, "ba.wikibooks.org"
, "bar.wikipedia.org"
, "bat-smg.wikipedia.org"
, "bcl.wikipedia.org"
-, "be-x-old.wikipedia.org"
-, "be.wikibooks.org"
, "be.wikipedia.org"
-, "be.wikiquote.org"
-, "be.wikisource.org"
, "be.wiktionary.org"
-, "bg.wikibooks.org"
-, "bg.wikinews.org"
-, "bg.wikipedia.org"
-, "bg.wikiquote.org"
-, "bg.wikisource.org"
-, "bg.wiktionary.org"
+, "be.wikisource.org"
+, "be.wikibooks.org"
+, "be.wikiquote.org"
+, "be.wikimedia.org"
+, "be-x-old.wikipedia.org"
, "bh.wikipedia.org"
, "bh.wiktionary.org"
-, "bi.wikibooks.org"
, "bi.wikipedia.org"
, "bi.wiktionary.org"
+, "bi.wikibooks.org"
, "bjn.wikipedia.org"
-, "bm.wikibooks.org"
, "bm.wikipedia.org"
-, "bm.wikiquote.org"
, "bm.wiktionary.org"
-, "bn.wikibooks.org"
+, "bm.wikibooks.org"
+, "bm.wikiquote.org"
, "bn.wikipedia.org"
-, "bn.wikisource.org"
, "bn.wiktionary.org"
-, "bo.wikibooks.org"
+, "bn.wikisource.org"
+, "bn.wikibooks.org"
, "bo.wikipedia.org"
, "bo.wiktionary.org"
+, "bo.wikibooks.org"
, "bpy.wikipedia.org"
, "br.wikipedia.org"
-, "br.wikiquote.org"
-, "br.wikisource.org"
, "br.wiktionary.org"
-, "bs.wikibooks.org"
-, "bs.wikinews.org"
+, "br.wikisource.org"
+, "br.wikiquote.org"
+, "br.wikimedia.org"
, "bs.wikipedia.org"
-, "bs.wikiquote.org"
-, "bs.wikisource.org"
, "bs.wiktionary.org"
+, "bs.wikisource.org"
+, "bs.wikibooks.org"
+, "bs.wikiquote.org"
+, "bs.wikinews.org"
, "bug.wikipedia.org"
, "bxr.wikipedia.org"
-, "ca.wikibooks.org"
-, "ca.wikinews.org"
-, "ca.wikipedia.org"
-, "ca.wikiquote.org"
-, "ca.wikisource.org"
-, "ca.wiktionary.org"
, "cbk-zam.wikipedia.org"
, "cdo.wikipedia.org"
, "ce.wikipedia.org"
, "ceb.wikipedia.org"
-, "ch.wikibooks.org"
, "ch.wikipedia.org"
, "ch.wiktionary.org"
+, "ch.wikibooks.org"
, "cho.wikipedia.org"
, "chr.wikipedia.org"
, "chr.wiktionary.org"
, "chy.wikipedia.org"
, "ckb.wikipedia.org"
-, "co.wikibooks.org"
, "co.wikipedia.org"
-, "co.wikiquote.org"
, "co.wiktionary.org"
-, "commons.wikimedia.org"
+, "co.wikibooks.org"
+, "co.wikiquote.org"
+, "co.wikimedia.org"
, "cr.wikipedia.org"
-, "cr.wikiquote.org"
, "cr.wiktionary.org"
+, "cr.wikiquote.org"
, "crh.wikipedia.org"
-, "cs.wikibooks.org"
-, "cs.wikinews.org"
-, "cs.wikipedia.org"
-, "cs.wikiquote.org"
-, "cs.wikisource.org"
-, "cs.wikiversity.org"
-, "cs.wiktionary.org"
, "csb.wikipedia.org"
, "csb.wiktionary.org"
, "cu.wikipedia.org"
-, "cv.wikibooks.org"
, "cv.wikipedia.org"
-, "cy.wikibooks.org"
+, "cv.wikibooks.org"
, "cy.wikipedia.org"
-, "cy.wikiquote.org"
-, "cy.wikisource.org"
, "cy.wiktionary.org"
-, "da.wikibooks.org"
-, "da.wikipedia.org"
-, "da.wikiquote.org"
-, "da.wikisource.org"
-, "da.wiktionary.org"
-, "de.wikibooks.org"
-, "de.wikinews.org"
-, "de.wikipedia.org"
-, "de.wikiquote.org"
-, "de.wikisource.org"
-, "de.wikiversity.org"
-, "de.wikivoyage.org"
-, "de.wiktionary.org"
+, "cy.wikisource.org"
+, "cy.wikibooks.org"
+, "cy.wikiquote.org"
, "diq.wikipedia.org"
, "dsb.wikipedia.org"
, "dv.wikipedia.org"
@@ -292,374 +559,222 @@ public class Xoi_cmd_wiki_tst {
, "dz.wikipedia.org"
, "dz.wiktionary.org"
, "ee.wikipedia.org"
-, "el.wikibooks.org"
-, "el.wikinews.org"
-, "el.wikipedia.org"
-, "el.wikiquote.org"
-, "el.wikisource.org"
-, "el.wikiversity.org"
-, "el.wikivoyage.org"
-, "el.wiktionary.org"
, "eml.wikipedia.org"
-, "en.wikibooks.org"
-, "en.wikinews.org"
-, "en.wikipedia.org"
-, "en.wikiquote.org"
-, "en.wikisource.org"
-, "en.wikiversity.org"
-, "en.wikivoyage.org"
-, "en.wiktionary.org"
-, "eo.wikibooks.org"
-, "eo.wikinews.org"
-, "eo.wikipedia.org"
-, "eo.wikiquote.org"
-, "eo.wikisource.org"
-, "eo.wiktionary.org"
-, "es.wikibooks.org"
-, "es.wikinews.org"
-, "es.wikipedia.org"
-, "es.wikiquote.org"
-, "es.wikisource.org"
-, "es.wikiversity.org"
-, "es.wikivoyage.org"
-, "es.wiktionary.org"
-, "et.wikibooks.org"
-, "et.wikipedia.org"
-, "et.wikiquote.org"
-, "et.wikisource.org"
-, "et.wiktionary.org"
-, "eu.wikibooks.org"
-, "eu.wikipedia.org"
-, "eu.wikiquote.org"
-, "eu.wiktionary.org"
, "ext.wikipedia.org"
-, "fa.wikibooks.org"
-, "fa.wikinews.org"
-, "fa.wikipedia.org"
-, "fa.wikiquote.org"
-, "fa.wikisource.org"
-, "fa.wikivoyage.org"
-, "fa.wiktionary.org"
, "ff.wikipedia.org"
-, "fi.wikibooks.org"
-, "fi.wikinews.org"
-, "fi.wikipedia.org"
-, "fi.wikiquote.org"
-, "fi.wikisource.org"
-, "fi.wikiversity.org"
-, "fi.wiktionary.org"
, "fiu-vro.wikipedia.org"
, "fj.wikipedia.org"
, "fj.wiktionary.org"
, "fo.wikipedia.org"
-, "fo.wikisource.org"
, "fo.wiktionary.org"
-, "fr.wikibooks.org"
-, "fr.wikinews.org"
-, "fr.wikipedia.org"
-, "fr.wikiquote.org"
-, "fr.wikisource.org"
-, "fr.wikiversity.org"
-, "fr.wikivoyage.org"
-, "fr.wiktionary.org"
+, "fo.wikisource.org"
, "frp.wikipedia.org"
, "frr.wikipedia.org"
, "fur.wikipedia.org"
-, "fy.wikibooks.org"
, "fy.wikipedia.org"
, "fy.wiktionary.org"
-, "ga.wikibooks.org"
+, "fy.wikibooks.org"
, "ga.wikipedia.org"
-, "ga.wikiquote.org"
, "ga.wiktionary.org"
+, "ga.wikibooks.org"
+, "ga.wikiquote.org"
, "gag.wikipedia.org"
, "gan.wikipedia.org"
, "gd.wikipedia.org"
, "gd.wiktionary.org"
-, "gl.wikibooks.org"
-, "gl.wikipedia.org"
-, "gl.wikiquote.org"
-, "gl.wikisource.org"
-, "gl.wiktionary.org"
, "glk.wikipedia.org"
-, "gn.wikibooks.org"
, "gn.wikipedia.org"
, "gn.wiktionary.org"
-, "got.wikibooks.org"
+, "gn.wikibooks.org"
, "got.wikipedia.org"
-, "gu.wikibooks.org"
+, "got.wikibooks.org"
, "gu.wikipedia.org"
-, "gu.wikiquote.org"
-, "gu.wikisource.org"
, "gu.wiktionary.org"
+, "gu.wikisource.org"
+, "gu.wikibooks.org"
+, "gu.wikiquote.org"
, "gv.wikipedia.org"
, "gv.wiktionary.org"
, "ha.wikipedia.org"
, "ha.wiktionary.org"
, "hak.wikipedia.org"
, "haw.wikipedia.org"
-, "he.wikibooks.org"
-, "he.wikinews.org"
-, "he.wikipedia.org"
-, "he.wikiquote.org"
-, "he.wikisource.org"
-, "he.wikivoyage.org"
-, "he.wiktionary.org"
-, "hi.wikibooks.org"
-, "hi.wikipedia.org"
-, "hi.wikiquote.org"
-, "hi.wiktionary.org"
, "hif.wikipedia.org"
, "ho.wikipedia.org"
-, "hr.wikibooks.org"
-, "hr.wikipedia.org"
-, "hr.wikiquote.org"
-, "hr.wikisource.org"
-, "hr.wiktionary.org"
, "hsb.wikipedia.org"
, "hsb.wiktionary.org"
, "ht.wikipedia.org"
, "ht.wikisource.org"
-, "hu.wikibooks.org"
-, "hu.wikinews.org"
-, "hu.wikipedia.org"
-, "hu.wikiquote.org"
-, "hu.wikisource.org"
-, "hu.wiktionary.org"
-, "hy.wikibooks.org"
, "hy.wikipedia.org"
-, "hy.wikiquote.org"
-, "hy.wikisource.org"
, "hy.wiktionary.org"
+, "hy.wikisource.org"
+, "hy.wikibooks.org"
+, "hy.wikiquote.org"
, "hz.wikipedia.org"
-, "ia.wikibooks.org"
-, "ia.wikipedia.org"
-, "ia.wiktionary.org"
-, "id.wikibooks.org"
-, "id.wikipedia.org"
-, "id.wikiquote.org"
-, "id.wikisource.org"
-, "id.wiktionary.org"
-, "ie.wikibooks.org"
, "ie.wikipedia.org"
, "ie.wiktionary.org"
+, "ie.wikibooks.org"
, "ig.wikipedia.org"
, "ii.wikipedia.org"
, "ik.wikipedia.org"
, "ik.wiktionary.org"
, "ilo.wikipedia.org"
-, "incubator.wikimedia.org"
, "io.wikipedia.org"
, "io.wiktionary.org"
-, "is.wikibooks.org"
, "is.wikipedia.org"
-, "is.wikiquote.org"
-, "is.wikisource.org"
, "is.wiktionary.org"
-, "it.wikibooks.org"
-, "it.wikinews.org"
-, "it.wikipedia.org"
-, "it.wikiquote.org"
-, "it.wikisource.org"
-, "it.wikiversity.org"
-, "it.wikivoyage.org"
-, "it.wiktionary.org"
+, "is.wikisource.org"
+, "is.wikibooks.org"
+, "is.wikiquote.org"
, "iu.wikipedia.org"
, "iu.wiktionary.org"
-, "ja.wikibooks.org"
-, "ja.wikinews.org"
-, "ja.wikipedia.org"
-, "ja.wikiquote.org"
-, "ja.wikisource.org"
-, "ja.wikiversity.org"
-, "ja.wiktionary.org"
, "jbo.wikipedia.org"
, "jbo.wiktionary.org"
, "jv.wikipedia.org"
, "jv.wiktionary.org"
-, "ka.wikibooks.org"
, "ka.wikipedia.org"
-, "ka.wikiquote.org"
, "ka.wiktionary.org"
+, "ka.wikibooks.org"
+, "ka.wikiquote.org"
, "kaa.wikipedia.org"
, "kab.wikipedia.org"
, "kbd.wikipedia.org"
, "kg.wikipedia.org"
, "ki.wikipedia.org"
, "kj.wikipedia.org"
-, "kk.wikibooks.org"
-, "kk.wikipedia.org"
-, "kk.wikiquote.org"
-, "kk.wiktionary.org"
, "kl.wikipedia.org"
, "kl.wiktionary.org"
-, "km.wikibooks.org"
, "km.wikipedia.org"
, "km.wiktionary.org"
-, "kn.wikibooks.org"
+, "km.wikibooks.org"
, "kn.wikipedia.org"
-, "kn.wikiquote.org"
-, "kn.wikisource.org"
, "kn.wiktionary.org"
-, "ko.wikibooks.org"
-, "ko.wikinews.org"
-, "ko.wikipedia.org"
-, "ko.wikiquote.org"
-, "ko.wikisource.org"
-, "ko.wikiversity.org"
-, "ko.wiktionary.org"
+, "kn.wikisource.org"
+, "kn.wikibooks.org"
+, "kn.wikiquote.org"
, "koi.wikipedia.org"
, "kr.wikipedia.org"
, "kr.wikiquote.org"
, "krc.wikipedia.org"
-, "ks.wikibooks.org"
, "ks.wikipedia.org"
-, "ks.wikiquote.org"
, "ks.wiktionary.org"
+, "ks.wikibooks.org"
+, "ks.wikiquote.org"
, "ksh.wikipedia.org"
-, "ku.wikibooks.org"
, "ku.wikipedia.org"
-, "ku.wikiquote.org"
, "ku.wiktionary.org"
+, "ku.wikibooks.org"
+, "ku.wikiquote.org"
, "kv.wikipedia.org"
, "kw.wikipedia.org"
-, "kw.wikiquote.org"
, "kw.wiktionary.org"
-, "ky.wikibooks.org"
+, "kw.wikiquote.org"
, "ky.wikipedia.org"
-, "ky.wikiquote.org"
, "ky.wiktionary.org"
-, "la.wikibooks.org"
-, "la.wikipedia.org"
-, "la.wikiquote.org"
-, "la.wikisource.org"
-, "la.wiktionary.org"
+, "ky.wikibooks.org"
+, "ky.wikiquote.org"
, "lad.wikipedia.org"
-, "lb.wikibooks.org"
, "lb.wikipedia.org"
-, "lb.wikiquote.org"
, "lb.wiktionary.org"
+, "lb.wikibooks.org"
+, "lb.wikiquote.org"
, "lbe.wikipedia.org"
, "lez.wikipedia.org"
, "lg.wikipedia.org"
-, "li.wikibooks.org"
, "li.wikipedia.org"
-, "li.wikiquote.org"
-, "li.wikisource.org"
, "li.wiktionary.org"
+, "li.wikisource.org"
+, "li.wikibooks.org"
+, "li.wikiquote.org"
, "lij.wikipedia.org"
, "lmo.wikipedia.org"
-, "ln.wikibooks.org"
, "ln.wikipedia.org"
, "ln.wiktionary.org"
+, "ln.wikibooks.org"
, "lo.wikipedia.org"
, "lo.wiktionary.org"
-, "lt.wikibooks.org"
-, "lt.wikipedia.org"
-, "lt.wikiquote.org"
-, "lt.wikisource.org"
-, "lt.wiktionary.org"
, "ltg.wikipedia.org"
-, "lv.wikibooks.org"
, "lv.wikipedia.org"
, "lv.wiktionary.org"
+, "lv.wikibooks.org"
, "mai.wikipedia.org"
, "map-bms.wikipedia.org"
, "mdf.wikipedia.org"
-, "meta.wikimedia.org"
-, "mg.wikibooks.org"
, "mg.wikipedia.org"
, "mg.wiktionary.org"
+, "mg.wikibooks.org"
, "mh.wikipedia.org"
, "mh.wiktionary.org"
, "mhr.wikipedia.org"
-, "mi.wikibooks.org"
, "mi.wikipedia.org"
, "mi.wiktionary.org"
+, "mi.wikibooks.org"
, "min.wikipedia.org"
-, "mk.wikibooks.org"
, "mk.wikipedia.org"
-, "mk.wikisource.org"
, "mk.wiktionary.org"
-, "ml.wikibooks.org"
+, "mk.wikisource.org"
+, "mk.wikibooks.org"
+, "mk.wikimedia.org"
, "ml.wikipedia.org"
-, "ml.wikiquote.org"
-, "ml.wikisource.org"
, "ml.wiktionary.org"
-, "mn.wikibooks.org"
+, "ml.wikisource.org"
+, "ml.wikibooks.org"
+, "ml.wikiquote.org"
, "mn.wikipedia.org"
, "mn.wiktionary.org"
+, "mn.wikibooks.org"
, "mo.wikipedia.org"
, "mo.wiktionary.org"
-, "mr.wikibooks.org"
, "mr.wikipedia.org"
-, "mr.wikiquote.org"
-, "mr.wikisource.org"
, "mr.wiktionary.org"
+, "mr.wikisource.org"
+, "mr.wikibooks.org"
+, "mr.wikiquote.org"
, "mrj.wikipedia.org"
-, "ms.wikibooks.org"
-, "ms.wikipedia.org"
-, "ms.wiktionary.org"
, "mt.wikipedia.org"
, "mt.wiktionary.org"
, "mus.wikipedia.org"
, "mwl.wikipedia.org"
-, "my.wikibooks.org"
, "my.wikipedia.org"
, "my.wiktionary.org"
+, "my.wikibooks.org"
, "myv.wikipedia.org"
, "mzn.wikipedia.org"
-, "na.wikibooks.org"
, "na.wikipedia.org"
-, "na.wikiquote.org"
, "na.wiktionary.org"
-, "nah.wikibooks.org"
+, "na.wikibooks.org"
+, "na.wikiquote.org"
, "nah.wikipedia.org"
, "nah.wiktionary.org"
+, "nah.wikibooks.org"
, "nap.wikipedia.org"
-, "nds-nl.wikipedia.org"
-, "nds.wikibooks.org"
, "nds.wikipedia.org"
-, "nds.wikiquote.org"
, "nds.wiktionary.org"
-, "ne.wikibooks.org"
+, "nds.wikibooks.org"
+, "nds.wikiquote.org"
+, "nds-nl.wikipedia.org"
, "ne.wikipedia.org"
, "ne.wiktionary.org"
+, "ne.wikibooks.org"
, "new.wikipedia.org"
, "ng.wikipedia.org"
-, "nl.wikibooks.org"
-, "nl.wikinews.org"
-, "nl.wikipedia.org"
-, "nl.wikiquote.org"
-, "nl.wikisource.org"
-, "nl.wikivoyage.org"
-, "nl.wiktionary.org"
-, "nn.wikipedia.org"
-, "nn.wikiquote.org"
-, "nn.wiktionary.org"
-, "no.wikibooks.org"
-, "no.wikinews.org"
-, "no.wikipedia.org"
-, "no.wikiquote.org"
-, "no.wikisource.org"
-, "no.wiktionary.org"
, "nov.wikipedia.org"
, "nrm.wikipedia.org"
, "nso.wikipedia.org"
, "nv.wikipedia.org"
, "ny.wikipedia.org"
-, "oc.wikibooks.org"
, "oc.wikipedia.org"
, "oc.wiktionary.org"
+, "oc.wikibooks.org"
, "om.wikipedia.org"
, "om.wiktionary.org"
, "or.wikipedia.org"
-, "or.wikisource.org"
, "or.wiktionary.org"
+, "or.wikisource.org"
, "os.wikipedia.org"
-, "pa.wikibooks.org"
, "pa.wikipedia.org"
, "pa.wiktionary.org"
+, "pa.wikibooks.org"
, "pag.wikipedia.org"
, "pam.wikipedia.org"
, "pap.wikipedia.org"
@@ -669,64 +784,34 @@ public class Xoi_cmd_wiki_tst {
, "pi.wikipedia.org"
, "pi.wiktionary.org"
, "pih.wikipedia.org"
-, "pl.wikibooks.org"
-, "pl.wikinews.org"
-, "pl.wikipedia.org"
-, "pl.wikiquote.org"
-, "pl.wikisource.org"
-, "pl.wikivoyage.org"
-, "pl.wiktionary.org"
, "pms.wikipedia.org"
, "pnb.wikipedia.org"
, "pnb.wiktionary.org"
, "pnt.wikipedia.org"
-, "ps.wikibooks.org"
, "ps.wikipedia.org"
, "ps.wiktionary.org"
-, "pt.wikibooks.org"
-, "pt.wikinews.org"
-, "pt.wikipedia.org"
-, "pt.wikiquote.org"
-, "pt.wikisource.org"
-, "pt.wikiversity.org"
-, "pt.wikivoyage.org"
-, "pt.wiktionary.org"
-, "qu.wikibooks.org"
+, "ps.wikibooks.org"
, "qu.wikipedia.org"
-, "qu.wikiquote.org"
, "qu.wiktionary.org"
-, "rm.wikibooks.org"
+, "qu.wikibooks.org"
+, "qu.wikiquote.org"
, "rm.wikipedia.org"
, "rm.wiktionary.org"
+, "rm.wikibooks.org"
, "rmy.wikipedia.org"
, "rn.wikipedia.org"
, "rn.wiktionary.org"
-, "ro.wikibooks.org"
-, "ro.wikinews.org"
-, "ro.wikipedia.org"
-, "ro.wikiquote.org"
-, "ro.wikisource.org"
-, "ro.wikivoyage.org"
-, "ro.wiktionary.org"
, "roa-rup.wikipedia.org"
, "roa-rup.wiktionary.org"
, "roa-tara.wikipedia.org"
-, "ru.wikibooks.org"
-, "ru.wikinews.org"
-, "ru.wikipedia.org"
-, "ru.wikiquote.org"
-, "ru.wikisource.org"
-, "ru.wikiversity.org"
-, "ru.wikivoyage.org"
-, "ru.wiktionary.org"
, "rue.wikipedia.org"
, "rw.wikipedia.org"
, "rw.wiktionary.org"
-, "sa.wikibooks.org"
, "sa.wikipedia.org"
-, "sa.wikiquote.org"
-, "sa.wikisource.org"
, "sa.wiktionary.org"
+, "sa.wikisource.org"
+, "sa.wikibooks.org"
+, "sa.wikiquote.org"
, "sah.wikipedia.org"
, "sah.wikisource.org"
, "sc.wikipedia.org"
@@ -734,206 +819,137 @@ public class Xoi_cmd_wiki_tst {
, "scn.wikipedia.org"
, "scn.wiktionary.org"
, "sco.wikipedia.org"
-, "sd.wikinews.org"
, "sd.wikipedia.org"
, "sd.wiktionary.org"
-, "se.wikibooks.org"
+, "sd.wikinews.org"
, "se.wikipedia.org"
+, "se.wikibooks.org"
+, "se.wikimedia.org"
, "sg.wikipedia.org"
, "sg.wiktionary.org"
-, "sh.wikipedia.org"
-, "sh.wiktionary.org"
-, "si.wikibooks.org"
, "si.wikipedia.org"
, "si.wiktionary.org"
-, "simple.wikibooks.org"
-, "simple.wikipedia.org"
-, "simple.wikiquote.org"
-, "simple.wiktionary.org"
-, "sk.wikibooks.org"
-, "sk.wikipedia.org"
-, "sk.wikiquote.org"
-, "sk.wikisource.org"
-, "sk.wiktionary.org"
-, "sl.wikibooks.org"
-, "sl.wikipedia.org"
-, "sl.wikiquote.org"
-, "sl.wikisource.org"
-, "sl.wikiversity.org"
-, "sl.wiktionary.org"
+, "si.wikibooks.org"
, "sm.wikipedia.org"
, "sm.wiktionary.org"
, "sn.wikipedia.org"
, "sn.wiktionary.org"
, "so.wikipedia.org"
, "so.wiktionary.org"
-, "species.wikimedia.org"
-, "sq.wikibooks.org"
-, "sq.wikinews.org"
, "sq.wikipedia.org"
-, "sq.wikiquote.org"
, "sq.wiktionary.org"
-, "sr.wikibooks.org"
-, "sr.wikinews.org"
-, "sr.wikipedia.org"
-, "sr.wikiquote.org"
-, "sr.wikisource.org"
-, "sr.wiktionary.org"
+, "sq.wikibooks.org"
+, "sq.wikiquote.org"
+, "sq.wikinews.org"
, "srn.wikipedia.org"
, "ss.wikipedia.org"
, "ss.wiktionary.org"
, "st.wikipedia.org"
, "st.wiktionary.org"
, "stq.wikipedia.org"
-, "su.wikibooks.org"
, "su.wikipedia.org"
-, "su.wikiquote.org"
, "su.wiktionary.org"
-, "sv.wikibooks.org"
-, "sv.wikinews.org"
-, "sv.wikipedia.org"
-, "sv.wikiquote.org"
-, "sv.wikisource.org"
-, "sv.wikiversity.org"
-, "sv.wikivoyage.org"
-, "sv.wiktionary.org"
-, "sw.wikibooks.org"
+, "su.wikibooks.org"
+, "su.wikiquote.org"
, "sw.wikipedia.org"
, "sw.wiktionary.org"
+, "sw.wikibooks.org"
, "szl.wikipedia.org"
-, "ta.wikibooks.org"
-, "ta.wikinews.org"
, "ta.wikipedia.org"
-, "ta.wikiquote.org"
-, "ta.wikisource.org"
, "ta.wiktionary.org"
-, "te.wikibooks.org"
+, "ta.wikisource.org"
+, "ta.wikibooks.org"
+, "ta.wikiquote.org"
+, "ta.wikinews.org"
, "te.wikipedia.org"
-, "te.wikiquote.org"
-, "te.wikisource.org"
, "te.wiktionary.org"
+, "te.wikisource.org"
+, "te.wikibooks.org"
+, "te.wikiquote.org"
, "tet.wikipedia.org"
-, "tg.wikibooks.org"
, "tg.wikipedia.org"
, "tg.wiktionary.org"
-, "th.wikibooks.org"
-, "th.wikinews.org"
-, "th.wikipedia.org"
-, "th.wikiquote.org"
-, "th.wikisource.org"
-, "th.wiktionary.org"
+, "tg.wikibooks.org"
, "ti.wikipedia.org"
, "ti.wiktionary.org"
-, "tk.wikibooks.org"
, "tk.wikipedia.org"
-, "tk.wikiquote.org"
, "tk.wiktionary.org"
-, "tl.wikibooks.org"
+, "tk.wikibooks.org"
+, "tk.wikiquote.org"
, "tl.wikipedia.org"
, "tl.wiktionary.org"
+, "tl.wikibooks.org"
, "tn.wikipedia.org"
, "tn.wiktionary.org"
, "to.wikipedia.org"
, "to.wiktionary.org"
, "tpi.wikipedia.org"
, "tpi.wiktionary.org"
-, "tr.wikibooks.org"
-, "tr.wikinews.org"
-, "tr.wikipedia.org"
-, "tr.wikiquote.org"
-, "tr.wikisource.org"
-, "tr.wiktionary.org"
, "ts.wikipedia.org"
, "ts.wiktionary.org"
-, "tt.wikibooks.org"
, "tt.wikipedia.org"
-, "tt.wikiquote.org"
, "tt.wiktionary.org"
+, "tt.wikibooks.org"
+, "tt.wikiquote.org"
, "tum.wikipedia.org"
, "tw.wikipedia.org"
, "tw.wiktionary.org"
, "ty.wikipedia.org"
, "tyv.wikipedia.org"
, "udm.wikipedia.org"
-, "ug.wikibooks.org"
, "ug.wikipedia.org"
-, "ug.wikiquote.org"
, "ug.wiktionary.org"
-, "uk.wikibooks.org"
-, "uk.wikinews.org"
-, "uk.wikipedia.org"
-, "uk.wikiquote.org"
-, "uk.wikisource.org"
-, "uk.wikivoyage.org"
-, "uk.wiktionary.org"
-, "ur.wikibooks.org"
+, "ug.wikibooks.org"
+, "ug.wikiquote.org"
, "ur.wikipedia.org"
-, "ur.wikiquote.org"
, "ur.wiktionary.org"
-, "uz.wikibooks.org"
+, "ur.wikibooks.org"
+, "ur.wikiquote.org"
, "uz.wikipedia.org"
-, "uz.wikiquote.org"
, "uz.wiktionary.org"
+, "uz.wikibooks.org"
+, "uz.wikiquote.org"
, "ve.wikipedia.org"
+, "ve.wikimedia.org"
, "vec.wikipedia.org"
-, "vec.wikisource.org"
, "vec.wiktionary.org"
+, "vec.wikisource.org"
, "vep.wikipedia.org"
-, "vi.wikibooks.org"
-, "vi.wikipedia.org"
-, "vi.wikiquote.org"
-, "vi.wikisource.org"
-, "vi.wikivoyage.org"
-, "vi.wiktionary.org"
, "vls.wikipedia.org"
-, "vo.wikibooks.org"
-, "vo.wikipedia.org"
-, "vo.wikiquote.org"
-, "vo.wiktionary.org"
-, "wa.wikibooks.org"
, "wa.wikipedia.org"
, "wa.wiktionary.org"
+, "wa.wikibooks.org"
, "war.wikipedia.org"
-, "wikimediafoundation.org"
, "wo.wikipedia.org"
-, "wo.wikiquote.org"
, "wo.wiktionary.org"
+, "wo.wikiquote.org"
, "wuu.wikipedia.org"
-, "www.mediawiki.org"
-, "www.wikidata.org"
, "xal.wikipedia.org"
-, "xh.wikibooks.org"
, "xh.wikipedia.org"
, "xh.wiktionary.org"
+, "xh.wikibooks.org"
, "xmf.wikipedia.org"
, "yi.wikipedia.org"
-, "yi.wikisource.org"
, "yi.wiktionary.org"
-, "yo.wikibooks.org"
+, "yi.wikisource.org"
, "yo.wikipedia.org"
, "yo.wiktionary.org"
-, "za.wikibooks.org"
+, "yo.wikibooks.org"
, "za.wikipedia.org"
-, "za.wikiquote.org"
, "za.wiktionary.org"
+, "za.wikibooks.org"
+, "za.wikiquote.org"
, "zea.wikipedia.org"
, "zh-classical.wikipedia.org"
-, "zh-min-nan.wikibooks.org"
, "zh-min-nan.wikipedia.org"
-, "zh-min-nan.wikiquote.org"
-, "zh-min-nan.wikisource.org"
, "zh-min-nan.wiktionary.org"
+, "zh-min-nan.wikisource.org"
+, "zh-min-nan.wikibooks.org"
+, "zh-min-nan.wikiquote.org"
, "zh-yue.wikipedia.org"
-, "zh.wikibooks.org"
-, "zh.wikinews.org"
-, "zh.wikipedia.org"
-, "zh.wikiquote.org"
-, "zh.wikisource.org"
-, "zh.wikivoyage.org"
-, "zh.wiktionary.org"
-, "zu.wikibooks.org"
, "zu.wikipedia.org"
, "zu.wiktionary.org"
+, "zu.wikibooks.org"
};
}
//, "als.wikisource.org"
diff --git a/400_xowa/src_240_install/gplx/xowa/Xow_page_fetcher.java b/400_xowa/src_240_install/gplx/xowa/Xow_page_fetcher.java
index d956bbba5..d8bbc486e 100644
--- a/400_xowa/src_240_install/gplx/xowa/Xow_page_fetcher.java
+++ b/400_xowa/src_240_install/gplx/xowa/Xow_page_fetcher.java
@@ -32,12 +32,12 @@ class Xow_page_fetcher_mok implements Xow_page_fetcher {
public Xow_page_fetcher Wiki_(Xowe_wiki v) {return this;}
public void Clear() {pages.Clear();} private HashAdp pages = HashAdp_.new_();
public void Add(int ns_id, byte[] ttl, byte[] text) {
- Xodb_page page = new Xodb_page().Ns_id_(ns_id).Ttl_wo_ns_(ttl).Text_(text);
+ Xodb_page page = new Xodb_page().Ns_id_(ns_id).Ttl_page_db_(ttl).Wtxt_(text);
pages.Add(Make_key(ns_id, ttl), page);
}
public byte[] Fetch(int ns_id, byte[] ttl) {
Xodb_page rv = (Xodb_page)pages.Fetch(Make_key(ns_id, ttl));
- return rv == null ? null : rv.Text();
+ return rv == null ? null : rv.Wtxt();
}
String Make_key(int ns_id, byte[] ttl) {return Int_.Xto_str(ns_id) + "|" + String_.new_utf8_(ttl);}
}
diff --git a/400_xowa/src_300_html/gplx/xowa/Xoa_page.java b/400_xowa/src_300_html/gplx/xowa/Xoa_page.java
index ab794507e..bce2e5870 100644
--- a/400_xowa/src_300_html/gplx/xowa/Xoa_page.java
+++ b/400_xowa/src_300_html/gplx/xowa/Xoa_page.java
@@ -20,4 +20,5 @@ public interface Xoa_page {
Xoa_ttl Ttl();
Xoa_url Url();
void Xtn_gallery_packed_exists_y_();
+ boolean Exists();
}
diff --git a/400_xowa/src_300_html/gplx/xowa/Xoae_page.java b/400_xowa/src_300_html/gplx/xowa/Xoae_page.java
index 43dcb0bfc..82490e366 100644
--- a/400_xowa/src_300_html/gplx/xowa/Xoae_page.java
+++ b/400_xowa/src_300_html/gplx/xowa/Xoae_page.java
@@ -27,14 +27,16 @@ public class Xoae_page implements Xoa_page {
redlink_lnki_list = new Xopg_redlink_lnki_list(ttl.Ns().Id_module());
Ttl_(ttl);
} Xoae_page() {} // called by Null
- public void Xtn_gallery_packed_exists_y_() {html_data.Xtn_imap_exists_y_();}
public Xow_wiki Wiki() {return wiki;}
public Xoa_ttl Ttl() {return ttl;} public Xoae_page Ttl_(Xoa_ttl v) {ttl = v; url.Wiki_bry_(wiki.Domain_bry()).Page_bry_(v.Full_url()); return this;} private Xoa_ttl ttl;
public Xoa_url Url() {return url;} public Xoae_page Url_(Xoa_url v) {url = v; return this;} private Xoa_url url = Xoa_url.blank_();
+ public void Xtn_gallery_packed_exists_y_() {html_data.Xtn_imap_exists_y_();}
+ public boolean Exists() {return !Missing();}
+
+ public Xopg_revision_data Revision_data() {return revision_data;} private Xopg_revision_data revision_data = new Xopg_revision_data();
public Xowe_wiki Wikie() {return wiki;} private Xowe_wiki wiki;
public Xopg_redlink_lnki_list Redlink_lnki_list() {return redlink_lnki_list;} private Xopg_redlink_lnki_list redlink_lnki_list;
public Xol_lang Lang() {return lang;} public Xoae_page Lang_(Xol_lang v) {lang = v; return this;} private Xol_lang lang;
- public Xopg_revision_data Revision_data() {return rev_data;} private Xopg_revision_data rev_data = new Xopg_revision_data();
public Xopg_html_data Html_data() {return html_data;} private Xopg_html_data html_data = new Xopg_html_data();
public Xog_tab_itm Tab() {return tab;} public void Tab_(Xog_tab_itm v) {tab = v;} private Xog_tab_itm tab;
public Xopg_hdump_data Hdump_data() {return hdump_data;} private final Xopg_hdump_data hdump_data = new Xopg_hdump_data();
@@ -90,7 +92,7 @@ public class Xoae_page implements Xoa_page {
tmpl_stack_ary = Bry_.Ary_empty;
tmpl_stack_ary_len = tmpl_stack_ary_max = 0;
popup_mgr.Clear();
- rev_data.Clear();
+ revision_data.Clear();
tmpl_prepend_mgr.Clear();
}
public static final Xoae_page Null = null;
diff --git a/400_xowa/src_300_html/gplx/xowa/Xoh_file_main.java b/400_xowa/src_300_html/gplx/xowa/Xoh_file_main.java
index fb22b9091..3f3cfc005 100644
--- a/400_xowa/src_300_html/gplx/xowa/Xoh_file_main.java
+++ b/400_xowa/src_300_html/gplx/xowa/Xoh_file_main.java
@@ -28,9 +28,9 @@ class Xoh_file_main_alts implements Bry_fmtr_arg {
for (int i = 0; i < len; i++) {
Int_2_ref size = size_alts[i];
if (xfer_itm.Html_w() < size.Val_0()) continue;
- xfer_itm.Init_by_lnki(orig_itm.Lnki_ttl(), orig_itm.Lnki_redirect(), Xop_lnki_type.Id_none, size.Val_0(), size.Val_1(), Xop_lnki_tkn.Upright_null, Xof_doc_thumb.Null, Xof_doc_page.Null);
+ xfer_itm.Init_by_lnki(orig_itm.Lnki_ttl(), orig_itm.Orig_redirect(), Xop_lnki_type.Id_none, size.Val_0(), size.Val_1(), Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null, Xof_lnki_page.Null);
xfer_itm.Calc_by_meta();
- opt.Html_alts().Bld_bfr_many(bfr, xfer_itm.Html_w(), xfer_itm.Html_h(), xfer_itm.Html_view_src(), i == len - 1 ? opt.Html_alt_dlm_last() : opt.Html_alt_dlm_default());
+ opt.Html_alts().Bld_bfr_many(bfr, xfer_itm.Html_w(), xfer_itm.Html_h(), xfer_itm.Html_view_url(), i == len - 1 ? opt.Html_alt_dlm_last() : opt.Html_alt_dlm_default());
}
}
}
diff --git a/400_xowa/src_300_html/gplx/xowa/Xoh_file_main_wkr.java b/400_xowa/src_300_html/gplx/xowa/Xoh_file_main_wkr.java
index a3297d687..7ab98fa56 100644
--- a/400_xowa/src_300_html/gplx/xowa/Xoh_file_main_wkr.java
+++ b/400_xowa/src_300_html/gplx/xowa/Xoh_file_main_wkr.java
@@ -27,13 +27,13 @@ public class Xoh_file_main_wkr implements Bry_fmtr_arg {
Int_2_ref size_main = opt.Size_main();
int main_w = size_main.Val_0();
int main_h = size_main.Val_1();
- this.xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(ctx, queue, ttl.Page_txt(), Xop_lnki_type.Id_thumb, main_w, main_h, Xop_lnki_tkn.Upright_null, Xof_doc_thumb.Null, Xof_doc_page.Null, false, queue_add_ref);
+ this.xfer_itm = wiki.Html_mgr().Html_wtr().Lnki_wtr().File_wtr().Lnki_eval(ctx, queue, ttl.Page_txt(), Xop_lnki_type.Id_thumb, main_w, main_h, Xop_lnki_tkn.Upright_null, Xof_lnki_time.Null, Xof_lnki_page.Null, false, queue_add_ref);
Xof_meta_itm meta_itm = wiki.File_mgr().Meta_mgr().Get_itm_or_new(ttl.Page_db(), Xof_xfer_itm_.Md5_(ttl.Page_db())); // NOTE: can't use Md5 of xfer_itm, b/c xfer_itm.Ttl() b/c may be redirected; EX:w:[[Image:Alcott-L.jpg]]
Xof_repo_itm trg_repo = null;
trg_repo = meta_itm.Repo_itm(wiki);
if (trg_repo == null) trg_repo = wiki.File_mgr().Repo_mgr().Repos_get_at(0).Trg();
xfer_itm.Set__meta(meta_itm, trg_repo, Xof_repo_itm.Thumb_default_null);
- xfer_itm.Set__orig(meta_itm.Orig_w(), meta_itm.Orig_h(), Xof_img_size.Size_null);
+ xfer_itm.Init_by_orig_old(meta_itm.Orig_w(), meta_itm.Orig_h(), Xof_img_size.Size_null);
xfer_itm.Trg_repo_idx_(meta_itm.Vrtl_repo());
play_btn_icon = wiki.Html_mgr().Img_media_play_btn();
@@ -57,11 +57,11 @@ public class Xoh_file_main_wkr implements Bry_fmtr_arg {
alts.Ctor(xfer_itm, opt);
Xof_ext ext = xfer_itm.Lnki_ext();
if (ext.Id_is_thumbable_img())
- opt.Html_main_img().Bld_bfr_many(bfr, xfer_itm.Orig_w(), xfer_itm.Orig_h(), xfer_itm.Html_orig_src(), file_size_bry, ext.Mime_type(), elem_id_val, xfer_itm.Html_w(), xfer_itm.Html_h(), xfer_itm.Html_view_src(), ttl.Full_txt(), Xoa_app_.Utl__encoder_mgr().Url().Encode(ttl.Page_url()), alts);
+ opt.Html_main_img().Bld_bfr_many(bfr, xfer_itm.Orig_w(), xfer_itm.Orig_h(), xfer_itm.Html_orig_url(), file_size_bry, ext.Mime_type(), elem_id_val, xfer_itm.Html_w(), xfer_itm.Html_h(), xfer_itm.Html_view_url(), ttl.Full_txt(), Xoa_app_.Utl__encoder_mgr().Url().Encode(ttl.Page_url()), alts);
else if (ext.Id_is_video()) // NOTE: video must precede audio else File:***.ogg will not show thumbs
- opt.Html_main_vid().Bld_bfr_many(bfr, elem_id_val, xfer_itm.Html_view_src(), Atr_class_image, ttl.Page_db(), xfer_itm.Html_view_src(), xfer_itm.Html_w(), xfer_itm.Html_h(), Bry_.Empty, xfer_itm.Html_orig_src(), xfer_itm.Html_w(), xfer_itm.Html_w(), play_btn_icon);
+ opt.Html_main_vid().Bld_bfr_many(bfr, elem_id_val, xfer_itm.Html_view_url(), Atr_class_image, ttl.Page_db(), xfer_itm.Html_view_url(), xfer_itm.Html_w(), xfer_itm.Html_h(), Bry_.Empty, xfer_itm.Html_orig_url(), xfer_itm.Html_w(), xfer_itm.Html_w(), play_btn_icon);
else if (ext.Id_is_audio())
- opt.Html_main_aud().Bld_bfr_many(bfr, xfer_itm.Html_orig_src(), ttl.Page_db(), xfer_itm.Html_w(), xfer_itm.Html_w(), play_btn_icon);
+ opt.Html_main_aud().Bld_bfr_many(bfr, xfer_itm.Html_orig_url(), ttl.Page_db(), xfer_itm.Html_w(), xfer_itm.Html_w(), play_btn_icon);
}
private static final byte[] Atr_class_image = Bry_.new_ascii_("image");
}
diff --git a/400_xowa/src_310_url/gplx/xowa/Xoa_url.java b/400_xowa/src_310_url/gplx/xowa/Xoa_url.java
index addf9ab0c..01156c511 100644
--- a/400_xowa/src_310_url/gplx/xowa/Xoa_url.java
+++ b/400_xowa/src_310_url/gplx/xowa/Xoa_url.java
@@ -28,6 +28,7 @@ public class Xoa_url {
public boolean Protocol_is_relative() {return protocol_is_relative;} public Xoa_url Protocol_is_relative_(boolean v) {protocol_is_relative = v; return this;} private boolean protocol_is_relative;
public byte[] Use_lang() {return use_lang;} public Xoa_url Use_lang_(byte[] v) {use_lang = v; return this;} private byte[] use_lang;
public byte[] Lang_bry() {return lang_bry;} public Xoa_url Lang_bry_(byte[] v) {lang_bry = v; return this;} private byte[] lang_bry;
+ public byte[] Xowa_vnt() {return xowa_vnt;} public void Xowa_vnt_(byte[] v) {xowa_vnt = v;} private byte[] xowa_vnt;
public boolean Redirect_force() {return redirect_force;} public Xoa_url Redirect_force_(boolean v) {redirect_force = v; return this;} private boolean redirect_force;
public boolean Search_fulltext() {return search_fulltext;} public Xoa_url Search_fulltext_(boolean v) {search_fulltext = v; return this;} private boolean search_fulltext;
public boolean Action_is_edit() {return action_is_edit;} public Xoa_url Action_is_edit_(boolean v) {action_is_edit = v; return this;} private boolean action_is_edit;
@@ -44,7 +45,7 @@ public class Xoa_url {
public void Init(byte[] raw) {
this.raw = raw;
segs_ary = null;
- lang_bry = wiki_bry = page_bry = anchor_bry = use_lang = null;
+ lang_bry = wiki_bry = page_bry = anchor_bry = use_lang = xowa_vnt = null;
err = 0;
protocol_is_relative = false;
redirect_force = false;
diff --git a/400_xowa/src_310_url/gplx/xowa/Xoa_url_parser.java b/400_xowa/src_310_url/gplx/xowa/Xoa_url_parser.java
index 38905ee44..58c479b7f 100644
--- a/400_xowa/src_310_url/gplx/xowa/Xoa_url_parser.java
+++ b/400_xowa/src_310_url/gplx/xowa/Xoa_url_parser.java
@@ -66,7 +66,7 @@ public class Xoa_url_parser {
byte[] sub_bry = segs_ary[1]; // lang/type seems to be 2nd seg; EX: "en", "fr"; "commons"
byte[] lang_bry = sub_bry;
if (upload_segs_hash.Has(sub_bry)) { // wikimedia links will have fmt of "/wikipedia/commons"; must change to wikimedia
- domain_bry = Xow_domain_.Seg_bry_wikimedia;
+ domain_bry = Xow_domain_.Tid_bry_wikimedia;
lang_bry = Xol_lang_itm_.Key__unknown;
}
tmp_bfr.Clear().Add(sub_bry).Add_byte(Byte_ascii.Dot) // add lang/type + .; EX: "en."; "fr."; "commons."
@@ -105,6 +105,7 @@ public class Xoa_url_parser {
case Id_arg_action: if (Bry_.Eq(arg.Val_bry(), Bry_arg_action_edit)) url.Action_is_edit_(true); break;
case Id_arg_title: url.Page_bry_(arg.Val_bry()); url.Segs_ary_(Segs_ary_remove_w(url.Segs_ary())); break; // handle /w/index.php?title=Earth
case Id_arg_fulltext: url.Search_fulltext_(true); break;
+ case Id_arg_xowa_vnt: url.Xowa_vnt_(arg.Val_bry()); ; break;
}
}
}
@@ -281,7 +282,7 @@ public class Xoa_url_parser {
return Bry_.Add(Bry_.Mid(v, 0, pos), Bry_.Mid(v, pos + 2)); // skip ".m"
}
// private static final byte Tid_xowa = (byte)Gfo_url_parser.Protocol_file_tid + 1;
- private static final byte Id_arg_redirect = 0, Id_arg_uselang = 1, Id_arg_title = 2, Id_arg_action = 3, Id_arg_fulltext = 4;
+ private static final byte Id_arg_redirect = 0, Id_arg_uselang = 1, Id_arg_title = 2, Id_arg_action = 3, Id_arg_fulltext = 4, Id_arg_xowa_vnt = 5;
private static final byte[] Bry_arg_redirect = Bry_.new_ascii_("redirect"), Bry_arg_uselang = Bry_.new_ascii_("uselang"), Bry_arg_title = Bry_.new_ascii_("title"), Bry_arg_fulltext = Bry_.new_ascii_("fulltext");
private static final byte[] Bry_upload_wikimedia_org = Bry_.new_ascii_("upload.wikimedia.org"), Bry_dot_org = Bry_.new_ascii_(".org")
, Bry_file = Bry_.new_ascii_("File:"); // NOTE: File does not need i18n; is a canonical namespace
@@ -290,6 +291,7 @@ public class Xoa_url_parser {
public static final byte[] Bry_arg_action_eq_edit = Bry_.new_ascii_("action=edit")
, Bry_arg_action = Bry_.new_ascii_("action")
, Bry_arg_action_edit = Bry_.new_ascii_("edit")
+ , Bry_arg_xowa_vnt = Bry_.new_ascii_("xowa_vnt")
;
private static final Hash_adp_bry qry_args_hash = Hash_adp_bry.ci_ascii_()
.Add_bry_byte(Bry_arg_redirect, Id_arg_redirect)
@@ -297,6 +299,7 @@ public class Xoa_url_parser {
.Add_bry_byte(Bry_arg_title, Id_arg_title)
.Add_bry_byte(Bry_arg_action, Id_arg_action)
.Add_bry_byte(Bry_arg_fulltext, Id_arg_fulltext)
+ .Add_bry_byte(Bry_arg_xowa_vnt, Id_arg_xowa_vnt)
;
private static final Hash_adp_bry upload_segs_hash = Hash_adp_bry.ci_ascii_()
.Add_bry_bry(Xow_domain_.Tid_bry_commons);//.Add_bry_bry(Xow_domain_.Tid_bry_species_bry).Add_bry_bry(Xow_domain_.Tid_bry_meta_bry);
diff --git a/400_xowa/src_400_parser/gplx/xowa/Xop_lnki_tkn_chkr.java b/400_xowa/src_400_parser/gplx/xowa/Xop_lnki_tkn_chkr.java
index 0df0752c5..6fdeff507 100644
--- a/400_xowa/src_400_parser/gplx/xowa/Xop_lnki_tkn_chkr.java
+++ b/400_xowa/src_400_parser/gplx/xowa/Xop_lnki_tkn_chkr.java
@@ -28,8 +28,8 @@ public class Xop_lnki_tkn_chkr extends Xop_tkn_chkr_base {
public byte VAlign() {return vAlign;} public Xop_lnki_tkn_chkr VAlign_(byte v) {vAlign = v; return this;} private byte vAlign = Byte_.Max_value_127;
public byte Border() {return border;} public Xop_lnki_tkn_chkr Border_(byte v) {border = v; return this;} private byte border = Bool_.__byte;
public double Upright() {return upright;} public Xop_lnki_tkn_chkr Upright_(double v) {upright = v; return this;} double upright = Xop_lnki_tkn.Upright_null;
- public int Thumbtime() {return thumbtime;} public Xop_lnki_tkn_chkr Thumbtime_(int v) {thumbtime = v; return this;} int thumbtime = Xof_doc_thumb.Null_as_int;
- public int Page() {return page;} public Xop_lnki_tkn_chkr Page_(int v) {page = v; return this;} int page = Xof_doc_page.Null;
+ public int Thumbtime() {return thumbtime;} public Xop_lnki_tkn_chkr Thumbtime_(int v) {thumbtime = v; return this;} int thumbtime = Xof_lnki_time.Null_as_int;
+ public int Page() {return page;} public Xop_lnki_tkn_chkr Page_(int v) {page = v; return this;} int page = Xof_lnki_page.Null;
public int Tail_bgn() {return tail_bgn;} public Xop_lnki_tkn_chkr Tail_bgn_(int v) {tail_bgn = v; return this;} private int tail_bgn = String_.Pos_neg1;
public int Tail_end() {return tail_end;} public Xop_lnki_tkn_chkr Tail_end_(int v) {tail_end = v; return this;} private int tail_end = String_.Pos_neg1;
public Xop_tkn_chkr_base Trg_tkn() {return trg_tkn;} public Xop_lnki_tkn_chkr Trg_tkn_(Xop_tkn_chkr_base v) {trg_tkn = v; return this;} private Xop_tkn_chkr_base trg_tkn;
@@ -40,16 +40,16 @@ public class Xop_lnki_tkn_chkr extends Xop_tkn_chkr_base {
Xop_lnki_tkn actl = (Xop_lnki_tkn)actl_obj;
err += mgr.Tst_val(nsId == Int_.MinValue, path, "nsId", nsId, actl.Ns_id());
err += mgr.Tst_val(imgType == Byte_.Max_value_127, path, "imgType", imgType, actl.Lnki_type());
- err += mgr.Tst_val(width == Int_.MinValue, path, "width", width, actl.Lnki_w());
- err += mgr.Tst_val(height == Int_.MinValue, path, "height", height, actl.Lnki_h());
+ err += mgr.Tst_val(width == Int_.MinValue, path, "width", width, actl.W());
+ err += mgr.Tst_val(height == Int_.MinValue, path, "height", height, actl.H());
err += mgr.Tst_val(hAlign == Byte_.Max_value_127, path, "halign", hAlign, actl.Align_h());
err += mgr.Tst_val(vAlign == Byte_.Max_value_127, path, "valign", vAlign, actl.Align_v());
err += mgr.Tst_val(border == Bool_.__byte, path, "border", border, actl.Border());
err += mgr.Tst_val(tail_bgn == String_.Pos_neg1, path, "tail_bgn", tail_bgn, actl.Tail_bgn());
err += mgr.Tst_val(tail_end == String_.Pos_neg1, path, "tail_end", tail_end, actl.Tail_end());
err += mgr.Tst_val(upright == Xop_lnki_tkn.Upright_null, path, "upright", upright, actl.Upright());
- err += mgr.Tst_val(thumbtime == Xof_doc_thumb.Null, path, "thumbtime", thumbtime, Xof_doc_thumb.X_int(actl.Thumbtime()));
- err += mgr.Tst_val(page == Xof_doc_page.Null, path, "page", page, actl.Page());
+ err += mgr.Tst_val(thumbtime == Xof_lnki_time.Null, path, "thumbtime", thumbtime, Xof_lnki_time.X_int(actl.Time()));
+ err += mgr.Tst_val(page == Xof_lnki_page.Null, path, "page", page, actl.Page());
if (trg_tkn != null) err += mgr.Tst_sub_obj(trg_tkn, actl.Trg_tkn(), path + "." + "trg", err);
if (caption_tkn != null) err += mgr.Tst_sub_obj(caption_tkn, actl.Caption_tkn(), path + "." + "caption", err);
if (alt_tkn != null) err += mgr.Tst_sub_obj(alt_tkn, actl.Alt_tkn(), path + "." + "alt", err);
diff --git a/400_xowa/src_400_parser/gplx/xowa/Xop_parser_.java b/400_xowa/src_400_parser/gplx/xowa/Xop_parser_.java
index 13fc65c31..776c3ed55 100644
--- a/400_xowa/src_400_parser/gplx/xowa/Xop_parser_.java
+++ b/400_xowa/src_400_parser/gplx/xowa/Xop_parser_.java
@@ -31,6 +31,7 @@ public class Xop_parser_ {
ctx.Para().Enabled_(para_enabled);
parser.Parse_wtxt_to_wdom(root, ctx, ctx.Tkn_mkr(), wtxt, Xop_parser_.Doc_bgn_bos);
wiki.Html_mgr().Html_wtr().Write_all(bfr, ctx, wtxt, root);
+ page.Lnki_file_mgr().Clear(); // NOTE: reset lnki_file_mgr else indicator will stop page from loading; DATE:2015-03-08
return bfr.Mkr_rls().Xto_bry_and_clear();
}
}
diff --git a/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_arg_parser.java b/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_arg_parser.java
index b04ae9493..e36502a9c 100644
--- a/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_arg_parser.java
+++ b/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_arg_parser.java
@@ -54,8 +54,8 @@ public class Xop_lnki_arg_parser {
lnki_w = Xop_lnki_tkn.Width_null;
lnki_h = Xop_lnki_tkn.Height_null;
byte rv = Identify_tid(src, bgn, end);
- if (lnki_w != Xop_lnki_tkn.Width_null) lnki.Lnki_w_(lnki_w);
- if (lnki_h != Xop_lnki_tkn.Height_null)lnki.Lnki_h_(lnki_h);
+ if (lnki_w != Xop_lnki_tkn.Width_null) lnki.W_(lnki_w);
+ if (lnki_h != Xop_lnki_tkn.Height_null)lnki.H_(lnki_h);
return rv;
}
public byte Identify_tid(byte[] src, int bgn, int end) {
diff --git a/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_tkn.java b/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_tkn.java
index 3242e95f1..59a687eee 100644
--- a/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_tkn.java
+++ b/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_tkn.java
@@ -20,20 +20,21 @@ import gplx.xowa.files.*; import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*
public class Xop_lnki_tkn extends Xop_tkn_itm_base {
@Override public byte Tkn_tid() {return tkn_tid;} private byte tkn_tid = Xop_tkn_itm_.Tid_lnki;
public void Tkn_tid_to_txt() {tkn_tid = Xop_tkn_itm_.Tid_txt;}
- public int Ns_id() {return nsId;} public Xop_lnki_tkn Ns_id_(int v) {nsId = v; return this;} private int nsId;
+ public int Ns_id() {return ns_id;} public Xop_lnki_tkn Ns_id_(int v) {ns_id = v; return this;} private int ns_id;
+ public Xoa_ttl Ttl() {return ttl;} public Xop_lnki_tkn Ttl_(Xoa_ttl v) {ttl = v; return this;} private Xoa_ttl ttl;
public byte Lnki_type() {return lnki_type;} public Xop_lnki_tkn Lnki_type_(byte v) {lnki_type = (byte)Enm_.AddInt(lnki_type, v); return this;} private byte lnki_type = Xop_lnki_type.Id_null;
public int Tail_bgn() {return tail_bgn;} public Xop_lnki_tkn Tail_bgn_(int v) {tail_bgn = v; return this;} private int tail_bgn = -1;
public int Tail_end() {return tail_end;} public Xop_lnki_tkn Tail_end_(int v) {tail_end = v; return this;} private int tail_end = -1;
public byte Border() {return border;} public Xop_lnki_tkn Border_(byte v) {border = v; return this;} private byte border = Bool_.__byte;
public byte Align_h() {return align_h;} public Xop_lnki_tkn Align_h_(byte v) {if (align_h == Xop_lnki_align_h.Null) align_h = v; return this;} private byte align_h = Xop_lnki_align_h.Null;
public byte Align_v() {return align_v;} public Xop_lnki_tkn Align_v_(byte v) {align_v = v; return this;} private byte align_v = Byte_.Max_value_127;
- public int Lnki_w() {return lnki_w;} public Xop_lnki_tkn Lnki_w_(int v) {lnki_w = v; return this;} int lnki_w = Width_null;
- public int Lnki_h() {return lnki_h;} public Xop_lnki_tkn Lnki_h_(int v) {lnki_h = v; return this;} int lnki_h = Height_null;
+ public int W() {return w;} public Xop_lnki_tkn W_(int v) {w = v; return this;} private int w = Width_null;
+ public int H() {return h;} public Xop_lnki_tkn H_(int v) {h = v; return this;} private int h = Height_null;
public byte[] Lnki_cls() {return lnki_cls;} public void Lnki_cls_(byte[] v) {lnki_cls = v;} private byte[] lnki_cls;
public boolean Media_icon() {return media_icon;} public Xop_lnki_tkn Media_icon_n_() {media_icon = false; return this;} private boolean media_icon = true;
- public double Upright() {return upright;} public Xop_lnki_tkn Upright_(double v) {upright = v; return this;} double upright = Upright_null;
- public double Thumbtime() {return thumbtime;} public Xop_lnki_tkn Thumbtime_(double v) {thumbtime = v; return this;} private double thumbtime = Xof_doc_thumb.Null;
- public int Page() {return page;} public Xop_lnki_tkn Page_(int v) {page = v; return this;} private int page = Xof_doc_page.Null;
+ public double Upright() {return upright;} public Xop_lnki_tkn Upright_(double v) {upright = v; return this;} private double upright = Upright_null;
+ public double Time() {return time;} public Xop_lnki_tkn Time_(double v) {time = v; return this;} private double time = Xof_lnki_time.Null;
+ public int Page() {return page;} public Xop_lnki_tkn Page_(int v) {page = v; return this;} private int page = Xof_lnki_page.Null;
public Xop_tkn_itm Trg_tkn() {return trg_tkn;} public Xop_lnki_tkn Trg_tkn_(Xop_tkn_itm v) {trg_tkn = v; return this;} private Xop_tkn_itm trg_tkn = Xop_tkn_null.Null_tkn;
public Xop_tkn_itm Caption_tkn() {return caption_tkn;} public Xop_lnki_tkn Caption_tkn_(Xop_tkn_itm v) {caption_tkn = v; return this;} private Xop_tkn_itm caption_tkn = Xop_tkn_null.Null_tkn;
public boolean Caption_tkn_pipe_trick() {return caption_tkn_pipe_trick;} public Xop_lnki_tkn Caption_tkn_pipe_trick_(boolean v) {caption_tkn_pipe_trick = v; return this;} private boolean caption_tkn_pipe_trick;
@@ -43,20 +44,19 @@ public class Xop_lnki_tkn extends Xop_tkn_itm_base {
public boolean Alt_exists() {return alt_tkn != Arg_nde_tkn.Null;}
public int Subpage_tid() {return subpage_tid;} public Xop_lnki_tkn Subpage_tid_(int v) {subpage_tid = v; return this;} private int subpage_tid = Pfunc_rel2abs.Id_null;
public boolean Subpage_slash_at_end() {return subpage_slash_at_end;} public Xop_lnki_tkn Subpage_slash_at_end_(boolean v) {subpage_slash_at_end = v; return this;} private boolean subpage_slash_at_end;
- public Xoa_ttl Ttl() {return ttl;} public Xop_lnki_tkn Ttl_(Xoa_ttl v) {ttl = v; return this;} private Xoa_ttl ttl;
public int Html_id() {return html_id;} public Xop_lnki_tkn Html_id_(int v) {html_id = v; return this;} private int html_id;
public int Pipe_count() {return pipe_count;} private int pipe_count;
public boolean Pipe_count_is_zero() {return pipe_count++ == 0;}
public boolean Xtn_sites_link() {return xtn_sites_link;} public void Xtn_sites_link_(boolean v) {xtn_sites_link = v;} private boolean xtn_sites_link;
public Xoh_file_img_wkr Lnki_file_wkr() {return lnki_file_wkr;} public void Lnki_file_wkr_(Xoh_file_img_wkr v) {lnki_file_wkr = v;} private Xoh_file_img_wkr lnki_file_wkr;
public byte[] Ttl_ary() {
- return ttl.ForceLiteralLink() || nsId != Xow_ns_.Id_main // if [[:]] or non-main (Category, Template)
+ return ttl.ForceLiteralLink() || ns_id != Xow_ns_.Id_main // if [[:]] or non-main (Category, Template)
? ttl.Full_txt() // use full_txt (no initial colon; capitalize first)
: ttl.Raw(); // use raw (preserve case, white-spaces)
}
public boolean Caption_exists() {
return !((caption_tkn == Xop_tkn_null.Null_tkn) // trg only; no caption: EX: [[a]] vs. [[a|b]] which has a trg of a and a caption of b
- || (nsId == Xow_ns_.Id_category // a Category only has a target; any caption is ignored; EX: [[Category:a|b], b is ignored
+ || (ns_id == Xow_ns_.Id_category // a Category only has a target; any caption is ignored; EX: [[Category:a|b], b is ignored
&& !ttl.ForceLiteralLink()));
}
public static final double Upright_null = -1;
diff --git a/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_wkr_.java b/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_wkr_.java
index ef89a1835..de126d788 100644
--- a/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_wkr_.java
+++ b/400_xowa/src_440_lnki/gplx/xowa/Xop_lnki_wkr_.java
@@ -110,7 +110,7 @@ public class Xop_lnki_wkr_ {
ctx.Msg_log().Add_itm_none(Xop_lnki_log.Upright_val_is_invalid, src, val_tkn_bgn, val_tkn_end);
}
else
- lnki.Thumbtime_(fracs / TimeSpanAdp_.Ratio_f_to_s);
+ lnki.Time_(fracs / TimeSpanAdp_.Ratio_f_to_s);
}
public static boolean Adjust_for_brack_end_len_of_3(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int cur_pos, Xop_lnki_tkn lnki) {
if ( cur_pos < src_len // bounds check
diff --git a/400_xowa/src_500_tmpl/gplx/xowa/Xot_invk_tkn.java b/400_xowa/src_500_tmpl/gplx/xowa/Xot_invk_tkn.java
index a0cbb34c0..4c24578fc 100644
--- a/400_xowa/src_500_tmpl/gplx/xowa/Xot_invk_tkn.java
+++ b/400_xowa/src_500_tmpl/gplx/xowa/Xot_invk_tkn.java
@@ -194,7 +194,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
&& lang.Vnt_mgr().Enabled()) { // lang has vnts
Xodb_page page = lang.Vnt_mgr().Convert_ttl(wiki, wiki.Ns_mgr().Ns_template(), name_ary);
if (page != Xodb_page.Null) {
- name_ary = page.Ttl_wo_ns();
+ name_ary = page.Ttl_page_db();
Xoa_ttl ttl = Xoa_ttl.parse_(wiki, Bry_.Add(wiki.Ns_mgr().Ns_template().Name_db_w_colon(), name_ary));
if (ttl == null) { // ttl is not valid; just output orig; REF.MW:Parser.php|braceSubstitution|if ( !$found ) $text = $frame->virtualBracketedImplode( '{{', '|', '}}', $titleWithSpaces, $args );
bfr.Add(Xop_curly_bgn_lxr.Hook).Add(name_ary).Add(Xop_curly_end_lxr.Hook);
diff --git a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org.000.sqlite3 b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org.000.sqlite3
index 1773729cd..d94b70397 100644
Binary files a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org.000.sqlite3 and b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org.000.sqlite3 differ
diff --git a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org.001.sqlite3 b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org.001.sqlite3
index 6284dc4fe..79dd157d4 100644
Binary files a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org.001.sqlite3 and b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org.001.sqlite3 differ