diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_itm.java b/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_itm.java
index 753ff6e70..6b8b4e465 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_itm.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_itm.java
@@ -29,13 +29,14 @@ public class Xoa_app_version_itm {
public int Priority() {return priority;} private final int priority;
public String Summary() {return summary;} private final String summary;
public String Details() {return details;} private final String details;
- public String Priority_str() {
- switch (priority) {
- case 3: return "trivial";
- case 5: return "minor";
+
+ public static final int Priority__major = 7, Priority__minor = 5, Priority__trivial = 3;
+ public static String Priority__to_name(int v) {
+ switch (v) {
+ case Priority__trivial: return "trivial";
+ case Priority__minor: return "minor";
case Priority__major: return "major";
- default: throw Err_.new_unhandled_default(priority);
+ default: throw Err_.new_unhandled_default(v);
}
}
- public static final int Priority__major = 7;
}
diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_tbl.java b/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_tbl.java
index a553d4d29..c916ddc1f 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_tbl.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/updates/dbs/Xoa_app_version_tbl.java
@@ -37,7 +37,7 @@ public class Xoa_app_version_tbl implements Db_tbl {
( "SELECT *"
, "FROM app_version"
, "WHERE version_date > '{0}'"
- , "ORDER BY version_date"
+ , "ORDER BY version_date DESC"
), date);
Db_rdr rdr = conn.Stmt_sql(sql).Exec_select__rls_auto();
diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_html.java b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_html.java
index 04cce5529..1d2dbf0a9 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_html.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_html.java
@@ -35,25 +35,17 @@ class Xoa_update_html extends Xow_special_wtr__base {
}
// load from db
+ String check_date = "2016-11-01 02:03:04";
Xoa_app_version_itm[] db_itms = db_mgr.Tbl__app_version().Select_by_date(Xoa_app_.Build_date);
- if (db_itms.length == 0) return new Xoa_update_itm__root(Xoa_app_.Version, Xoa_app_.Build_date, "", "up-to-date", "", "", "", "");
+ String build_date = String_.Mid(Xoa_app_.Build_date, 0, String_.FindFwd(Xoa_app_.Build_date, " "));
+ if (db_itms.length == 0) return new Xoa_update_itm__root(Xoa_app_.Version, build_date, check_date, "", "", Xoa_app_version_itm.Priority__trivial, "", "");
// convert to gui itm
Xoa_app_version_itm db_itm = db_itms[0];
- Xoa_update_itm__root root = new Xoa_update_itm__root(Xoa_app_.Version, Xoa_app_.Build_date, Find_major(db_itms), db_itm.Id(), db_itm.Date(), db_itm.Priority_str(), db_itm.Summary(), db_itm.Details());
+ Xoa_update_itm__root root = new Xoa_update_itm__root(Xoa_app_.Version, build_date, check_date, db_itm.Id(), db_itm.Date(), db_itm.Priority(), db_itm.Summary(), db_itm.Details());
root.Itms_(To_gui_itm(db_itms));
return root;
}
- private static String Find_major(Xoa_app_version_itm[] db_itms) {
- int len = db_itms.length;
- Xoa_app_version_itm major = null;
- for (int i = 0; i < len; i++) {
- Xoa_app_version_itm db_itm = db_itms[i];
- if (db_itm.Priority() >= Xoa_app_version_itm.Priority__major)
- major = db_itm;
- }
- return major == null ? "" : String_.Format("({0}) {1}: {2}", major.Priority_str(), major.Id(), major.Summary());
- }
private static Xoa_update_itm__leaf[] To_gui_itm(Xoa_app_version_itm[] db_itms) {
int len = db_itms.length;
Xoa_update_itm__leaf[] rv = new Xoa_update_itm__leaf[len];
@@ -63,7 +55,7 @@ class Xoa_update_html extends Xow_special_wtr__base {
return rv;
}
private static Xoa_update_itm__leaf To_gui_itm(Xoa_app_version_itm db_itm) {
- return new Xoa_update_itm__leaf(db_itm.Id(), db_itm.Date(), db_itm.Priority_str(), db_itm.Summary(), db_itm.Details());
+ return new Xoa_update_itm__leaf(db_itm.Id(), db_itm.Date(), db_itm.Priority(), db_itm.Summary(), db_itm.Details());
}
@Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) {
@@ -72,6 +64,7 @@ class Xoa_update_html extends Xow_special_wtr__base {
Xopg_tag_wtr_.Add__xohelp (head_tags, app.Fsys_mgr().Http_root());
Xopg_tag_wtr_.Add__xolog (head_tags, app.Fsys_mgr().Http_root());
Xopg_tag_wtr_.Add__xoajax (head_tags, app.Fsys_mgr().Http_root(), app);
+ Xopg_alertify_.Add_tags (head_tags, app.Fsys_mgr().Http_root());
head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xoa_update.css")));
head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xoa_update.js")));
diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_itm__leaf.java b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_itm__leaf.java
index 4238342c9..1374c7027 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_itm__leaf.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_itm__leaf.java
@@ -17,9 +17,11 @@ along with this program. If not, see .
*/
package gplx.xowa.addons.apps.updates.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.updates.*;
import gplx.langs.mustaches.*;
+import gplx.xowa.addons.apps.updates.dbs.*;
class Xoa_update_itm__leaf implements Mustache_doc_itm {
- private final String version, date, priority, summary, details;
- public Xoa_update_itm__leaf(String version, String date, String priority, String summary, String details) {
+ private final String version, date, summary, details;
+ private final int priority;
+ public Xoa_update_itm__leaf(String version, String date, int priority, String summary, String details) {
this.version = version;
this.date = date;
this.priority = priority;
@@ -29,12 +31,13 @@ class Xoa_update_itm__leaf implements Mustache_doc_itm {
@gplx.Virtual public boolean Mustache__write(String k, Mustache_bfr bfr) {
if (String_.Eq(k, "version")) bfr.Add_str_u8(version);
else if (String_.Eq(k, "date")) bfr.Add_str_u8(date);
- else if (String_.Eq(k, "priority")) bfr.Add_str_u8(priority);
+ else if (String_.Eq(k, "priority")) bfr.Add_str_u8(Xoa_app_version_itm.Priority__to_name(priority));
else if (String_.Eq(k, "summary")) bfr.Add_str_u8(summary);
else if (String_.Eq(k, "details")) bfr.Add_str_u8(details);
return true;
}
@gplx.Virtual public Mustache_doc_itm[] Mustache__subs(String key) {
+ if (String_.Eq(key, "priority_is_major")) return Mustache_doc_itm_.Ary__bool(priority >= Xoa_app_version_itm.Priority__major);
return Mustache_doc_itm_.Ary__empty;
}
diff --git a/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_itm__root.java b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_itm__root.java
index f23a410ab..34406c53a 100644
--- a/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_itm__root.java
+++ b/400_xowa/src/gplx/xowa/addons/apps/updates/specials/Xoa_update_itm__root.java
@@ -17,15 +17,15 @@ along with this program. If not, see .
*/
package gplx.xowa.addons.apps.updates.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.updates.*;
import gplx.langs.mustaches.*;
-class Xoa_update_itm__root extends Xoa_update_itm__leaf { private final String current_version, current_date, major;
+class Xoa_update_itm__root extends Xoa_update_itm__leaf { private final String current_version, current_date, check_date;
private Xoa_update_itm__leaf[] itms = Xoa_update_itm__leaf.Ary__empty;
public Xoa_update_itm__root
- ( String current_version, String current_date, String major
- , String version, String date, String priority, String summary, String details
+ ( String current_version, String current_date, String check_date
+ , String version, String date, int priority, String summary, String details
) {super(version, date, priority, summary, details);
this.current_version = current_version;
this.current_date = current_date;
- this.major = major;
+ this.check_date = check_date;
}
public void Itms_(Xoa_update_itm__leaf[] v) {
this.itms = v;
@@ -33,11 +33,12 @@ class Xoa_update_itm__root extends Xoa_update_itm__leaf { private final Stri
@Override public boolean Mustache__write(String k, Mustache_bfr bfr) {
if (String_.Eq(k, "current_version")) bfr.Add_str_u8(current_version);
else if (String_.Eq(k, "current_date")) bfr.Add_str_u8(current_date);
- else if (String_.Eq(k, "major")) bfr.Add_str_u8(major);
+ else if (String_.Eq(k, "check_date")) bfr.Add_str_u8(check_date);
return super.Mustache__write (k, bfr);
}
@Override public Mustache_doc_itm[] Mustache__subs(String key) {
if (String_.Eq(key, "itms")) return itms;
+ else if (String_.Eq(key, "itms_exist")) return Mustache_doc_itm_.Ary__bool(itms.length > 0);
return super.Mustache__subs(key);
}
}
diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java
index 19424af8f..fa537e009 100644
--- a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java
@@ -111,6 +111,8 @@ kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_talk_txt, "TALKPAGENAME");
kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_talk_url, "TALKPAGENAMEE");
kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_subj_txt, "SUBJECTPAGENAME", "ARTICLEPAGENAME");
kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_subj_url, "SUBJECTPAGENAMEE", "ARTICLEPAGENAMEE");
+kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_ttl_root_txt, "ROOTPAGENAME");
+kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_ttl_root_url, "ROOTPAGENAMEE");
kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_msg, "msg");
kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_subst, "subst:");
kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_safesubst, "safesubst:");
diff --git a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java
index 28e7fdb51..035c456d1 100644
--- a/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java
+++ b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java
@@ -235,8 +235,10 @@ public static final int
, Id_categorytree = 213
, Id_lsth = 214
, Id_assessment = 215
+, Id_ttl_root_txt = 216
+, Id_ttl_root_url = 217
;
-public static final int Id__max = 216;
+public static final int Id__max = 218;
private static byte[] ary_itm_(int id) {
switch (id) {
@@ -294,6 +296,8 @@ case Xol_kwd_grp_.Id_ttl_talk_txt: return Bry_.new_a7("talkpagename");
case Xol_kwd_grp_.Id_ttl_talk_url: return Bry_.new_a7("talkpagenamee");
case Xol_kwd_grp_.Id_ttl_subj_txt: return Bry_.new_a7("subjectpagename");
case Xol_kwd_grp_.Id_ttl_subj_url: return Bry_.new_a7("subjectpagenamee");
+case Xol_kwd_grp_.Id_ttl_root_txt: return Bry_.new_u8("rootpagename");
+case Xol_kwd_grp_.Id_ttl_root_url: return Bry_.new_u8("rootpagenamee");
case Xol_kwd_grp_.Id_msg: return Bry_.new_a7("msg");
case Xol_kwd_grp_.Id_subst: return Bry_.new_a7("subst");
case Xol_kwd_grp_.Id_safesubst: return Bry_.new_a7("safesubst");
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java
index 6097a698b..1d7ce19df 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java
@@ -150,6 +150,8 @@ public class Pf_func_ {
, Xol_kwd_grp_.Id_ttl_subj_txt
, Xol_kwd_grp_.Id_ttl_subj_url
, Xol_kwd_grp_.Id_ttl_talk_txt
+ , Xol_kwd_grp_.Id_ttl_root_url
+ , Xol_kwd_grp_.Id_ttl_root_txt
, Xol_kwd_grp_.Id_ttl_talk_url
, Xol_kwd_grp_.Id_site_sitename
, Xol_kwd_grp_.Id_site_servername
@@ -302,6 +304,8 @@ public class Pf_func_ {
case Xol_kwd_grp_.Id_ttl_leaf_url:
case Xol_kwd_grp_.Id_ttl_subj_txt:
case Xol_kwd_grp_.Id_ttl_subj_url:
+ case Xol_kwd_grp_.Id_ttl_root_txt:
+ case Xol_kwd_grp_.Id_ttl_root_url:
case Xol_kwd_grp_.Id_ttl_talk_txt:
case Xol_kwd_grp_.Id_ttl_talk_url: return Pfunc_ttl.Instance;
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java
index 4d367d590..c983c6d1a 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java
@@ -33,6 +33,8 @@ public class Pfunc_ttl extends Pf_func_base {
case Xol_kwd_grp_.Id_ttl_leaf_url: bfr.Add(ttl.Leaf_url()); break;
case Xol_kwd_grp_.Id_ttl_base_txt: bfr.Add(ttl.Base_txt()); break;
case Xol_kwd_grp_.Id_ttl_base_url: bfr.Add(ttl.Base_url()); break;
+ case Xol_kwd_grp_.Id_ttl_root_txt: bfr.Add(ttl.Root_txt()); break;
+ case Xol_kwd_grp_.Id_ttl_root_url: bfr.Add(Xoa_ttl.Replace_spaces(ttl.Root_txt())); break;
case Xol_kwd_grp_.Id_ttl_subj_txt: bfr.Add(ttl.Subj_txt()); break;
case Xol_kwd_grp_.Id_ttl_subj_url: bfr.Add(ttl.Subj_url()); break;
case Xol_kwd_grp_.Id_ttl_talk_txt: bfr.Add(ttl.Talk_txt()); break;
diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl_tst.java
index fef4bec8e..d5137fde5 100644
--- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl_tst.java
+++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl_tst.java
@@ -18,7 +18,7 @@ along with this program. If not, see .
package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import org.junit.*;
public class Pfunc_ttl_tst {
- private final Xop_fxt fxt = new Xop_fxt();
+ private final Xop_fxt fxt = new Xop_fxt();
@Before public void init() {fxt.Reset();}
@Test public void Ttl_page_txt() {fxt.Page_ttl_("a b"); fxt.Test_parse_tmpl_str_test("{{PAGENAME}}" , "{{test}}", "A b");}
@Test public void Ttl_page_txt_empty() {fxt.Page_ttl_("a b"); fxt.Test_parse_tmpl_str_test("{{PAGENAME:}}" , "{{test}}", "");}
@@ -32,6 +32,8 @@ public class Pfunc_ttl_tst {
@Test public void Ttl_leaf_url() {fxt.Page_ttl_("a b/c/d e"); fxt.Test_parse_tmpl_str_test("{{SUBPAGENAMEE}}" , "{{test}}", "d_e");}
@Test public void Ttl_base_txt() {fxt.Page_ttl_("a b/c/d e"); fxt.Test_parse_tmpl_str_test("{{BASEPAGENAME}}" , "{{test}}", "A b/c");}
@Test public void Ttl_base_url() {fxt.Page_ttl_("a b/c/d e"); fxt.Test_parse_tmpl_str_test("{{BASEPAGENAMEE}}" , "{{test}}", "A_b/c");}
+ @Test public void Rootpagename() {fxt.Page_ttl_("a b/c/d e"); fxt.Test_parse_tmpl_str_test("{{ROOTPAGENAME}}" , "{{test}}", "A b");}
+ @Test public void Rootpagenamee() {fxt.Page_ttl_("a b/c/d e"); fxt.Test_parse_tmpl_str_test("{{ROOTPAGENAMEE}}" , "{{test}}", "A_b");}
@Test public void Ttl_subj_txt() {fxt.Page_ttl_("Help talk:a b"); fxt.Test_parse_tmpl_str_test("{{SUBJECTPAGENAME}}" , "{{test}}", "Help:A b");}
@Test public void Ttl_subj_url() {fxt.Page_ttl_("Help talk:a b"); fxt.Test_parse_tmpl_str_test("{{SUBJECTPAGENAMEE}}" , "{{test}}", "Help:A_b");}
@Test public void Ttl_talk_txt() {fxt.Page_ttl_("Help:a b"); fxt.Test_parse_tmpl_str_test("{{TALKPAGENAME}}" , "{{test}}", "Help talk:A b");}
diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property.java b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property.java
index 67b8c33f8..7960e1be6 100644
--- a/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property.java
+++ b/400_xowa/src/gplx/xowa/xtns/wbases/pfuncs/Wdata_pf_property.java
@@ -69,9 +69,9 @@ public class Wdata_pf_property extends Pf_func_base {
num_parser.Parse(bry, 1, bry_len);
return num_parser.Has_err() ? Wdata_wiki_mgr.Pid_null : num_parser.Rv_as_int();
}
- public static void Print_self(Gfo_usr_dlg usr_dlg, Bry_bfr bfr, byte[] src, Xot_invk self, String warn_cls, String warn_fmt, Object... args) {
+ private static void Print_self(Gfo_usr_dlg usr_dlg, Bry_bfr bfr, byte[] src, Xot_invk self, String warn_cls, String warn_fmt, Object... args) {
bfr.Add_mid(src, self.Src_bgn(), self.Src_end());
- usr_dlg.Warn_many(GRP_KEY, warn_cls, warn_fmt, args);
+ usr_dlg.Log_many(GRP_KEY, warn_cls, warn_fmt, args);
}
public static void Print_empty(Gfo_usr_dlg usr_dlg, String warn_cls, String warn_fmt, Object... args) {
usr_dlg.Warn_many(GRP_KEY, warn_cls, warn_fmt, args);