mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
App_update: Add replace worker; add db auto-update
This commit is contained in:
parent
103d005e62
commit
fc55d0e2f9
@ -32,6 +32,12 @@ class Io_zip_decompress_cmd__jre extends Io_zip_decompress_cmd__base {
|
||||
boolean resumed = resume_name != null;
|
||||
long file_cur_in_raw = resumed ? resume_file : 0;
|
||||
long file_max_in_raw = prog_ui.Prog_data_end();
|
||||
|
||||
// if no size provided, guess length as 5x orig
|
||||
if (file_max_in_raw == -1) {
|
||||
file_max_in_raw = 4 * Io_mgr.Instance.QueryFil(src_fil).Size();
|
||||
}
|
||||
|
||||
ZipEntry entry = null;
|
||||
byte[] buffer = new byte[4096];
|
||||
Io_mgr.Instance.CreateDirIfAbsent(trg_dir); // NOTE: assert that trg_dir exists
|
||||
|
@ -33,6 +33,12 @@ public class Xoa_app_version_itm {
|
||||
public String Url() {return url;} private final String url;
|
||||
public String Summary() {return summary;} private final String summary;
|
||||
public String Details() {return details;} private final String details;
|
||||
public String Package_url() {
|
||||
String folder = url;
|
||||
if (String_.Len_eq_0(folder))
|
||||
folder = "https://github.com/gnosygnu/xowa/releases/releases/tag";
|
||||
return String_.Format("{0}/v{1}/xowa_app_{2}_v{1}.zip", folder, name, Xoa_app_.Op_sys_str);
|
||||
}
|
||||
|
||||
public static final int Priority__major = 7, Priority__minor = 5, Priority__trivial = 3;
|
||||
public static String Priority__to_name(int v) {
|
||||
|
@ -55,6 +55,12 @@ public class Xoa_app_version_tbl implements Db_tbl {
|
||||
return (Xoa_app_version_itm[])list.To_ary_and_clear(Xoa_app_version_itm.class);
|
||||
} finally {rdr.Rls();}
|
||||
}
|
||||
public Xoa_app_version_itm Select_by_version_or_null(String name) {
|
||||
Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld__version_name).Crt_str(fld__version_name, name).Exec_select__rls_auto();
|
||||
try {
|
||||
return rdr.Move_next() ? Load(rdr) : null;
|
||||
} finally {rdr.Rls();}
|
||||
}
|
||||
private Xoa_app_version_itm Load(Db_rdr rdr) {
|
||||
return new Xoa_app_version_itm
|
||||
( rdr.Read_int(fld__version_id)
|
||||
|
@ -20,7 +20,7 @@ import gplx.dbs.*; import gplx.dbs.utls.*;
|
||||
public class Xoa_update_db_mgr {
|
||||
public Xoa_update_db_mgr(Io_url url) {
|
||||
this.url = url;
|
||||
this.conn = Db_conn_bldr.Instance.Get_or_fail(url);
|
||||
this.conn = Db_conn_bldr.Instance.Get_or_autocreate(true, url);
|
||||
this.tbl__app_version = new Xoa_app_version_tbl(conn);
|
||||
conn.Meta_tbl_assert(tbl__app_version);
|
||||
}
|
||||
|
@ -19,19 +19,19 @@ package gplx.xowa.addons.apps.updates.js; import gplx.*; import gplx.xowa.*; imp
|
||||
import gplx.core.gfobjs.*; import gplx.core.progs.*; import gplx.core.progs.rates.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
public class Xojs_wkr__base implements Gfo_prog_ui, Gfo_invk {
|
||||
private long time_prv;
|
||||
private double rate_cur;
|
||||
private final Gfo_invk_cmd done_cbk;
|
||||
private final Gfo_rate_list rate_list = new Gfo_rate_list(32);
|
||||
private final long notify_delay = 1000;
|
||||
private final double delta_threshold = .25d; // allow variance of up to 25% before updating rate
|
||||
private final String js_cbk;
|
||||
|
||||
private final Gfo_invk_cmd done_cbk;
|
||||
public Xojs_wkr__base(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg, String js_cbk, Gfo_invk_cmd done_cbk) {
|
||||
private final String js_cbk, task_type;
|
||||
private long time_prv;
|
||||
private double rate_cur;
|
||||
public Xojs_wkr__base(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg, String js_cbk, Gfo_invk_cmd done_cbk, String task_type) {
|
||||
this.cbk_mgr = cbk_mgr;
|
||||
this.cbk_trg = cbk_trg;
|
||||
this.js_cbk = js_cbk;
|
||||
this.done_cbk = done_cbk;
|
||||
this.task_type = task_type;
|
||||
rate_list.Add(1024 * 1024, 1); // add default rate of 1 MB per second;
|
||||
}
|
||||
public void Exec() {
|
||||
@ -79,7 +79,8 @@ public class Xojs_wkr__base implements Gfo_prog_ui, Gfo_invk {
|
||||
this.data_cur = new_data_cur;
|
||||
this.data_end = new_data_end;
|
||||
|
||||
cbk_mgr.Send_json(cbk_trg, js_cbk, Gfobj_nde.New().Add_long("prog_data_cur", data_cur).Add_long("prog_data_end", data_end).Add_int("prog_rate", (int)rate_cur));
|
||||
cbk_mgr.Send_json(cbk_trg, js_cbk
|
||||
, Gfobj_nde.New().Add_str("task_type", task_type).Add_long("prog_data_cur", data_cur).Add_long("prog_data_end", data_end).Add_int("prog_rate", (int)rate_cur));
|
||||
return false;
|
||||
}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
|
@ -19,7 +19,7 @@ package gplx.xowa.addons.apps.updates.js; import gplx.*; import gplx.xowa.*; imp
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
import gplx.core.net.downloads.*;
|
||||
public class Xojs_wkr__download extends Xojs_wkr__base {
|
||||
public Xojs_wkr__download(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg, String js_cbk, Gfo_invk_cmd done_cbk, String src, Io_url trg, long src_len) {super(cbk_mgr, cbk_trg, js_cbk, done_cbk);
|
||||
public Xojs_wkr__download(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg, String js_cbk, Gfo_invk_cmd done_cbk, String src, Io_url trg, long src_len) {super(cbk_mgr, cbk_trg, js_cbk, done_cbk, "downloading");
|
||||
this.src = src;
|
||||
this.src_len = src_len;
|
||||
this.trg = trg;
|
||||
|
@ -0,0 +1,45 @@
|
||||
/*
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.addons.apps.updates.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.updates.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
public class Xojs_wkr__replace extends Xojs_wkr__base {
|
||||
private final Io_url src_dir, trg_dir;
|
||||
private final Io_url[] src_fils;
|
||||
public Xojs_wkr__replace(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg, String js_cbk, Gfo_invk_cmd done_cbk, Io_url src_dir, Io_url trg_dir) {super(cbk_mgr, cbk_trg, js_cbk, done_cbk, "unzipping");
|
||||
this.src_dir = src_dir;
|
||||
this.trg_dir = trg_dir;
|
||||
this.src_fils = Io_mgr.Instance.QueryDir_args(src_dir).Recur_().ExecAsUrlAry();
|
||||
this.Prog_data_end_(src_fils.length);
|
||||
}
|
||||
@Override protected void Exec_run() {
|
||||
int len = src_fils.length;
|
||||
for (int i = 0; i < len; i++) {
|
||||
Io_url src_fil = src_fils[i];
|
||||
Io_url trg_fil = trg_dir.GenSubFil(src_fil.GenRelUrl_orEmpty(src_dir));
|
||||
// Io_url trg_fil_del = trg_fil.GenNewNameAndExt(trg_fil.NameAndExt() + ".del");
|
||||
try {
|
||||
// Io_mgr.Instance.DeleteFil(trg_fil);
|
||||
// Io_mgr.Instance.MoveFil_args(src_fil, trg_fil, true).Exec();
|
||||
|
||||
Io_mgr.Instance.CopyFil(src_fil, trg_fil, true);
|
||||
} catch (Exception exc) {
|
||||
Tfds.Write(src_fil, Err_.Message_lang(exc));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -19,11 +19,12 @@ package gplx.xowa.addons.apps.updates.js; import gplx.*; import gplx.xowa.*; imp
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
import gplx.core.ios.zips.*;
|
||||
public class Xojs_wkr__unzip extends Xojs_wkr__base {
|
||||
private final Io_url src, trg;
|
||||
public Xojs_wkr__unzip(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg, String js_cbk, Gfo_invk_cmd done_cbk, Io_url src, Io_url trg, long prog_data_end) {super(cbk_mgr, cbk_trg, js_cbk, done_cbk);
|
||||
public Xojs_wkr__unzip(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg, String js_cbk, Gfo_invk_cmd done_cbk, Io_url src, Io_url trg, long prog_data_end) {super(cbk_mgr, cbk_trg, js_cbk, done_cbk, "unzipping");
|
||||
this.src = src; this.trg = trg;
|
||||
this.Prog_data_end_(prog_data_end);
|
||||
}
|
||||
public Io_url Src() {return src;} private final Io_url src;
|
||||
public Io_url Trg() {return trg;} private final Io_url trg;
|
||||
@Override protected void Exec_run() {
|
||||
Io_zip_decompress_cmd decompress = Io_zip_decompress_cmd_.Proto.Make_new();
|
||||
List_adp unzip_urls = List_adp_.New();
|
||||
|
@ -28,7 +28,7 @@ public class Xoa_update_bridge implements Bridge_cmd_itm {
|
||||
switch (proc_id) {
|
||||
case Proc__download:
|
||||
Xoa_update_controller controller = new Xoa_update_controller();
|
||||
controller.Update_app(app, args.Get_as_str("src"), args.Get_as_str("trg"), args.Get_as_long("src_len"));
|
||||
controller.Update_app(app, args.Get_as_str("version"));
|
||||
break;
|
||||
default: throw Err_.new_unhandled_default(proc_id);
|
||||
}
|
||||
|
@ -17,27 +17,51 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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.xowa.guis.cbks.*;
|
||||
import gplx.xowa.addons.apps.updates.js.*;
|
||||
import gplx.core.gfobjs.*;
|
||||
import gplx.xowa.addons.apps.updates.dbs.*; import gplx.xowa.addons.apps.updates.js.*;
|
||||
class Xoa_update_controller implements Gfo_invk {
|
||||
public void Update_app(Xoa_app app, String src, String trg_str, long src_len) {
|
||||
Io_url trg = Io_url_.new_any_(trg_str);
|
||||
Xog_cbk_mgr cbk_mgr = app.Gui__cbk_mgr();
|
||||
Xog_cbk_trg cbk_trg = Xog_cbk_trg.New(Xoa_update_special.Prototype.Special__meta().Ttl_bry());
|
||||
Xojs_wkr__download download_wkr = new Xojs_wkr__download(cbk_mgr, cbk_trg, "xo.app_updater.download__prog", Gfo_invk_cmd.New_by_key(this, Invk__download_done), src, trg, src_len);
|
||||
public void Update_app(Xoa_app app, String version_name) {
|
||||
// get app_version from db
|
||||
Io_url update_dir = app.Fsys_mgr().Root_dir().GenSubDir_nest("user", "app", "update");
|
||||
Io_url update_db_fil = update_dir.GenSubFil_nest("xoa_update.sqlite3");
|
||||
Xoa_update_db_mgr db_mgr = new Xoa_update_db_mgr(update_db_fil);
|
||||
Xoa_app_version_itm version_itm = db_mgr.Tbl__app_version().Select_by_version_or_null(version_name);
|
||||
|
||||
// get src, trg, etc..
|
||||
String src = version_itm.Package_url();
|
||||
Io_url trg = update_dir.GenSubFil_nest("temp", version_itm.Name(), version_itm.Name() + ".zip");
|
||||
Io_mgr.Instance.DeleteDirDeep(trg.OwnerDir());
|
||||
long src_len = -1;
|
||||
|
||||
// start download
|
||||
Xojs_wkr__download download_wkr = new Xojs_wkr__download
|
||||
( app.Gui__cbk_mgr(), Xog_cbk_trg.New(Xoa_update_special.Prototype.Special__meta().Ttl_bry())
|
||||
, "xo.app_updater.download__prog", Gfo_invk_cmd.New_by_key(this, Invk__download_done), src, trg, src_len);
|
||||
download_wkr.Exec_async("app_updater");
|
||||
}
|
||||
private void On_download_done(GfoMsg m) {
|
||||
Xojs_wkr__download download_wkr = (Xojs_wkr__download)m.ReadObj("v");
|
||||
Io_url trg = download_wkr.Trg();
|
||||
Xojs_wkr__unzip unzip_wkr = new Xojs_wkr__unzip(download_wkr.Cbk_mgr(), download_wkr.Cbk_trg(), "xo.app_updater.download__prog", Gfo_invk_cmd.New_by_key(this, Invk__unzip_done), trg, trg.OwnerDir().GenSubDir(trg.NameOnly()), download_wkr.Prog_data_end());
|
||||
Io_url src = download_wkr.Trg();
|
||||
Io_url trg = src.OwnerDir().GenSubDir(src.NameOnly() + "_unzip");
|
||||
Xojs_wkr__unzip unzip_wkr = new Xojs_wkr__unzip(download_wkr.Cbk_mgr(), download_wkr.Cbk_trg(), "xo.app_updater.download__prog", Gfo_invk_cmd.New_by_key(this, Invk__unzip_done), src, trg, -1);
|
||||
unzip_wkr.Exec_async("app_updater");
|
||||
}
|
||||
private void On_unzip_done(GfoMsg m) {
|
||||
Xojs_wkr__unzip unzip_wkr = (Xojs_wkr__unzip)m.ReadObj("v");
|
||||
Io_url src = unzip_wkr.Trg();
|
||||
Io_url trg = Io_url_.new_dir_("D:\\xowa_temp\\");
|
||||
Xojs_wkr__replace replace_wkr = new Xojs_wkr__replace(unzip_wkr.Cbk_mgr(), unzip_wkr.Cbk_trg(), "xo.app_updater.download__prog", Gfo_invk_cmd.New_by_key(this, Invk__replace_done), src, trg);
|
||||
replace_wkr.Exec_async("app_updater");
|
||||
}
|
||||
private void On_replace_done(GfoMsg m) {
|
||||
Xojs_wkr__replace replace_wkr = (Xojs_wkr__replace)m.ReadObj("v");
|
||||
replace_wkr.Cbk_mgr().Send_json(replace_wkr.Cbk_trg(), "xo.app_updater.download__prog", Gfobj_nde.New().Add_bool("done", true));
|
||||
}
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk__download_done)) On_download_done(m);
|
||||
else if (ctx.Match(k, Invk__unzip_done)) On_unzip_done(m);
|
||||
else if (ctx.Match(k, Invk__replace_done)) On_replace_done(m);
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
} private static final String Invk__download_done = "download_done", Invk__unzip_done = "unzip_done";
|
||||
} private static final String Invk__download_done = "download_done", Invk__unzip_done = "unzip_done", Invk__replace_done = "replace_done";
|
||||
}
|
||||
|
@ -22,38 +22,44 @@ class Xoa_update_html extends Xow_special_wtr__base {
|
||||
@Override protected Io_url Get_addon_dir(Xoa_app app) {return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "app", "update");}
|
||||
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xoa_update.mustache.html");}
|
||||
@Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) {
|
||||
Io_url update_db_url = Get_addon_dir(app).GenSubFil("xoa_update.sqlite3");
|
||||
Xoa_update_db_mgr db_mgr = new Xoa_update_db_mgr(update_db_url);
|
||||
return Load(app, db_mgr);
|
||||
return Load(app);
|
||||
}
|
||||
private static Mustache_doc_itm Load(Xoa_app app, Xoa_update_db_mgr db_mgr) {
|
||||
private static Mustache_doc_itm Load(Xoa_app app) {
|
||||
Io_url update_db_url = app.Fsys_mgr().Root_dir().GenSubFil_nest("user", "app", "update", "xoa_update.sqlite3");
|
||||
|
||||
// get from internet
|
||||
if (gplx.core.ios.IoEngine_system.Web_access_enabled) {
|
||||
Io_url trg_url = db_mgr.Url();
|
||||
String src_url = "http://xowa.org/admin/app_update/xoa_update.sqlite3";
|
||||
Io_mgr.Instance.DownloadFil(src_url, trg_url);
|
||||
boolean web_access_enabled = gplx.core.ios.IoEngine_system.Web_access_enabled;
|
||||
if (web_access_enabled) {
|
||||
// check text file to see if version changed
|
||||
Io_url trg_summary_fil = update_db_url.OwnerDir().GenSubFil("xoa_update.txt");
|
||||
int trg_summary_version = Int_.parse_or(Io_mgr.Instance.LoadFilStr(trg_summary_fil), -1);
|
||||
// String src_summary_server = "http://xowa.org";
|
||||
String src_summary_server = "http://localhost/xowa.org";
|
||||
int src_summary_version = Bry_.To_int(Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty).Exec_as_bry(src_summary_server + "/admin/app_update/xoa_update.txt"));
|
||||
|
||||
// download database
|
||||
if (src_summary_version > trg_summary_version) {
|
||||
String src_details_url = src_summary_server + "/admin/app_update/xoa_update.sqlite3";
|
||||
Io_url trg_details_url = update_db_url;
|
||||
Io_mgr.Instance.DownloadFil(src_details_url, trg_details_url);
|
||||
Io_mgr.Instance.SaveFilStr(trg_summary_fil, Int_.To_str(src_summary_version));
|
||||
}
|
||||
}
|
||||
|
||||
// load from db
|
||||
Xoa_update_db_mgr db_mgr = new Xoa_update_db_mgr(update_db_url);
|
||||
String check_date = app.User().User_db_mgr().Cfg().Get_app_str_or("app.updater.last_check", null);
|
||||
if (check_date == null) check_date = Datetime_now.Get().XtoStr_fmt_yyyy_MM_dd_HH_mm_ss();
|
||||
Xoa_app_version_itm[] db_itms = db_mgr.Tbl__app_version().Select_by_date(Xoa_app_.Build_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, "", "");
|
||||
if (db_itms.length == 0) return new Xoa_update_itm__root(Xoa_app_.Version, build_date, "", check_date, web_access_enabled, "", "", Xoa_app_version_itm.Priority__trivial, "", "");
|
||||
|
||||
// convert to gui itm
|
||||
Xoa_app_version_itm db_itm = db_itms[0];
|
||||
String download_url = Gen_download_url(db_itm.Url(), db_itm.Name());
|
||||
Xoa_update_itm__root root = new Xoa_update_itm__root(Xoa_app_.Version, build_date, download_url, check_date, db_itm.Name(), db_itm.Date(), db_itm.Priority(), db_itm.Summary(), db_itm.Details());
|
||||
Xoa_update_itm__root root = new Xoa_update_itm__root(Xoa_app_.Version, build_date, db_itm.Package_url(), check_date, web_access_enabled, db_itm.Name(), db_itm.Date(), db_itm.Priority(), db_itm.Summary(), db_itm.Details());
|
||||
root.Itms_(To_gui_itm(db_itms));
|
||||
return root;
|
||||
}
|
||||
private static String Gen_download_url(String version_url, String version_name) {
|
||||
String folder = version_url;
|
||||
if (String_.Len_eq_0(folder))
|
||||
folder = "https://github.com/gnosygnu/xowa/releases/download/v"; // + 3.11.2.1/xowa_app_windows_64_v3.11.2.1.zip";
|
||||
return String_.Format("{0}{1}/xowa_app_{2}_v{2}.zip", folder, version_name, Xoa_app_.Op_sys_str);
|
||||
}
|
||||
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];
|
||||
@ -68,12 +74,13 @@ class Xoa_update_html extends Xow_special_wtr__base {
|
||||
|
||||
@Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) {
|
||||
Xopg_tag_mgr head_tags = page_data.Head_tags();
|
||||
Xopg_tag_wtr_.Add__xocss (head_tags, app.Fsys_mgr().Http_root());
|
||||
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());
|
||||
Xopg_tag_wtr_.Add__xoajax (head_tags, app.Fsys_mgr().Http_root(), app);
|
||||
Xopg_tag_wtr_.Add__core (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_tag_wtr_.Add__xocss (head_tags, app.Fsys_mgr().Http_root());
|
||||
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__gui__progbars (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")));
|
||||
|
@ -18,15 +18,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
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, download_url, check_date;
|
||||
private final boolean web_access_enabled;
|
||||
private Xoa_update_itm__leaf[] itms = Xoa_update_itm__leaf.Ary__empty;
|
||||
public Xoa_update_itm__root
|
||||
( String current_version, String current_date, String download_url, String check_date
|
||||
( String current_version, String current_date, String download_url, String check_date, boolean web_access_enabled
|
||||
, 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.download_url = download_url;
|
||||
this.check_date = check_date;
|
||||
this.web_access_enabled = web_access_enabled;
|
||||
}
|
||||
public void Itms_(Xoa_update_itm__leaf[] v) {
|
||||
this.itms = v;
|
||||
@ -38,9 +40,10 @@ class Xoa_update_itm__root extends Xoa_update_itm__leaf { private final Stri
|
||||
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);
|
||||
@Override public Mustache_doc_itm[] Mustache__subs(String k) {
|
||||
if (String_.Eq(k, "itms")) return itms;
|
||||
else if (String_.Eq(k, "itms_exist")) return Mustache_doc_itm_.Ary__bool(itms.length > 0);
|
||||
else if (String_.Eq(k, "web_access_enabled")) return Mustache_doc_itm_.Ary__bool(web_access_enabled);
|
||||
return super.Mustache__subs(k);
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,12 @@ You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.wikis.pages.tags; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*;
|
||||
public class Xopg_tag_wtr_{
|
||||
public class Xopg_tag_wtr_ {
|
||||
public static void Add__core(Xopg_tag_mgr head_tags, Io_url http_root) {
|
||||
Io_url css_dir = http_root.GenSubDir_nest("bin", "any", "xowa", "html", "res", "src", "xowa", "core");
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(css_dir.GenSubFil_nest("Namespace_.js")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(css_dir.GenSubFil_nest("String_.js")));
|
||||
}
|
||||
public static void Add__xocss(Xopg_tag_mgr head_tags, Io_url http_root) {
|
||||
Io_url css_dir = http_root.GenSubDir_nest("bin", "any", "xowa", "html", "res", "src", "xowa", "xocss", "core");
|
||||
head_tags.Add(Xopg_tag_itm.New_css_file(css_dir.GenSubFil_nest("xocss_core-0.0.1.css")));
|
||||
@ -38,6 +43,12 @@ public class Xopg_tag_wtr_{
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(dir.GenSubFil_nest(Get_app_js_file(app))));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(dir.GenSubFil_nest("xo.server.js")));
|
||||
}
|
||||
public static void Add__gui__progbars(Xopg_tag_mgr head_tags, Io_url http_root) {
|
||||
Io_url dir = http_root.GenSubDir_nest("bin", "any", "xowa", "html", "res", "src", "xowa", "gui", "progbars");
|
||||
head_tags.Add(Xopg_tag_itm.New_css_file(dir.GenSubFil_nest("Progbar.css")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(dir.GenSubFil_nest("Progbar.js")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(dir.GenSubFil_nest("Progbar_util.js")));
|
||||
}
|
||||
private static String Get_app_js_file(Xoa_app app) {
|
||||
if (app.Mode().Tid_is_http()) return "xo.app.http_server.js";
|
||||
return gplx.core.envs.Op_sys.Cur().Tid_is_drd() ? "xo.app.drd.js" : "xo.app.swt.js";
|
||||
|
Loading…
Reference in New Issue
Block a user