mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Res: Add resources from xowa_app_windows_64_v4.5.26.1810
This commit is contained in:
203
res/bin/any/xowa/addon/app/cfg/edit/bin/xo.cfg_edit.css
Normal file
203
res/bin/any/xowa/addon/app/cfg/edit/bin/xo.cfg_edit.css
Normal file
@@ -0,0 +1,203 @@
|
||||
/*----------------------------------
|
||||
user agent stylesheet overrides
|
||||
----------------------------------*/
|
||||
input, select, textarea {
|
||||
/* remove 3d border; also, use softer color */
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
input[type="text"] {
|
||||
/* add a little padding else text will be too close to borders */
|
||||
padding: 2px;
|
||||
}
|
||||
select{
|
||||
/* better vertical alignment (see Gui- Shortcuts) */
|
||||
box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box;
|
||||
}
|
||||
|
||||
/*----------------------------------
|
||||
page-level
|
||||
----------------------------------*/
|
||||
#xocfg_body {
|
||||
/* use entire width */
|
||||
width:100%;
|
||||
|
||||
/* auto-center */
|
||||
margin:0 auto;
|
||||
|
||||
/* reset line-height; mw-body-content sets line-height to 1.6 which throws off vertical centering */
|
||||
line-height: initial;
|
||||
}
|
||||
#xocfg_err {
|
||||
color:red;
|
||||
/* add v-space to give space for nav_select */
|
||||
margin: 10px 0px 10px;
|
||||
}
|
||||
#xocfg_nav_select {
|
||||
/* 28px to offset for help.toggle_all */
|
||||
width: calc(100% - 28px);
|
||||
}
|
||||
#xocfg_page_help {
|
||||
/* use same margin-top as h2 to symmetrically align vertically between dropdown above and h2 below */
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/*----------------------------------
|
||||
help row: note that this overrides the xohelp.css
|
||||
----------------------------------*/
|
||||
.xohelp_div {
|
||||
/*
|
||||
remove all borders except bottom for aesthetic reasons
|
||||
*/
|
||||
border: 0px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.xohelp_msg {
|
||||
/*
|
||||
add bottom-spacer to center vertically
|
||||
*/
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
/*----------------------------------
|
||||
cfg row
|
||||
----------------------------------*/
|
||||
.xoimg_btn_x16 {
|
||||
/*
|
||||
remove margins which only exist because other pages do not correct "line-height:1.6" and use manual-pixel nudging
|
||||
note that this overrides the xocss.css
|
||||
*/
|
||||
margin: initial;
|
||||
}
|
||||
|
||||
.xocfg_row {
|
||||
/* take up 100% */
|
||||
width: 100%;
|
||||
|
||||
/* add some v-space between rows */
|
||||
margin: 2px 0px 2px;
|
||||
|
||||
/* add bottom border */
|
||||
border-bottom: 1px solid rgb(230,230,230);
|
||||
|
||||
/* add padding to give space for bottom border */
|
||||
padding: 0px 0px 4px;
|
||||
}
|
||||
.xocfg_itm_help {}
|
||||
.xocfg_itm_name {
|
||||
/* set width; will be used by data below */
|
||||
width: 120px; /* DRD.narrow */
|
||||
|
||||
/* add margins to separate from buttons on either side */
|
||||
margin: 0px 8px 0px 8px;
|
||||
|
||||
/* make bold; align-right*/
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
}
|
||||
.xocfg_itm_delete {
|
||||
/* add right margin to give space from data */
|
||||
margin: 0px 4px 0px 0px;
|
||||
}
|
||||
.xocfg_itm_hide {
|
||||
/* marker class to hide delete button */
|
||||
visibility: hidden;
|
||||
}
|
||||
.xocfg_itm_data {
|
||||
/* set width to use rest of page; note +40 for two buttons */
|
||||
width: calc(100% - 200px); /* DRD.narrow */
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.xocfg_itm_name {
|
||||
/* set width; will be used by data below */
|
||||
width: 220px; /* DRD.narrow */
|
||||
}
|
||||
.xocfg_itm_data {
|
||||
/* set width to use rest of page; note +40 for two buttons */
|
||||
width: calc(100% - 300px); /* DRD.narrow */
|
||||
}
|
||||
}
|
||||
/*----------------------------------
|
||||
data
|
||||
----------------------------------*/
|
||||
.xocfg_data__str {
|
||||
width: 100%;
|
||||
}
|
||||
.xocfg_data__int {
|
||||
width: 75px;
|
||||
|
||||
text-align: right;
|
||||
}
|
||||
.xocfg_data__list {
|
||||
width: 200px;
|
||||
}
|
||||
.xocfg_data__memo {
|
||||
width: 100%;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
.xocfg_data__str {
|
||||
width: 40%;
|
||||
}
|
||||
.xocfg_data__memo {
|
||||
width: 40%;
|
||||
}
|
||||
}
|
||||
|
||||
.xocfg_data__io_cmd__exe__txt {
|
||||
width: 400px;
|
||||
/* add space to bottom to separate from arg_box */
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.xocfg_data__io_cmd__arg__txt {
|
||||
width: 400px;
|
||||
}
|
||||
.xocfg_data__io_cmd__exe__btn {}
|
||||
|
||||
.xocfg_data__gui_binding__box {
|
||||
width: 120px;
|
||||
/* add padding to make it same size as nearby text box */
|
||||
padding: 1px;
|
||||
}
|
||||
.xocfg_data__gui_binding__ipt {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.xocfg_data__readonly {
|
||||
background-color:#F9F9F9;
|
||||
}
|
||||
|
||||
/*----------------------------------
|
||||
xocfg_pulse effect for confirm icon
|
||||
----------------------------------*/
|
||||
.xocfg_pulse {
|
||||
display: block;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 0 rgba(0, 128, 0, 0.8);
|
||||
animation: xocfg_pulse 2s;
|
||||
}
|
||||
@-webkit-keyframes xocfg_pulse {
|
||||
0% {
|
||||
-webkit-box-shadow: 0 0 0 0 rgba(0, 128, 0, 0.8);
|
||||
}
|
||||
70% {
|
||||
-webkit-box-shadow: 0 0 0 2px rgba(0, 128, 0, 0);
|
||||
}
|
||||
100% {
|
||||
-webkit-box-shadow: 0 0 0 0 rgba(0, 128, 0, 0);
|
||||
}
|
||||
}
|
||||
@keyframes xocfg_pulse {
|
||||
0% {
|
||||
-moz-box-shadow: 0 0 0 0 rgba(0, 128, 0, 0.8);
|
||||
box-shadow: 0 0 0 0 rgba(0, 128, 0, 0.4);
|
||||
}
|
||||
70% {
|
||||
-moz-box-shadow: 0 0 0 2px rgba(0, 128, 0, 0);
|
||||
box-shadow: 0 0 0 2px rgba(0, 128, 0, 0);
|
||||
}
|
||||
100% {
|
||||
-moz-box-shadow: 0 0 0 0 rgba(0, 128, 0, 0);
|
||||
box-shadow: 0 0 0 0 rgba(0, 128, 0, 0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<div id='cfg_grps'>
|
||||
<div>
|
||||
<p id='page_help_para'>{{{page_help}}}</p>
|
||||
</div>
|
||||
{{#grps}}
|
||||
<h2>{{{name}}}</h2>
|
||||
|
||||
{{#itms}}
|
||||
<div class="xocfg_row flex_div">
|
||||
<div class='xocfg_itm_help'>
|
||||
<span class='xoimg_btn_x16 xoimg_help_tip' href='javascript:void(0)' onclick='return xo.help.toggle("{{key}}")' title='view more info'> </span>
|
||||
</div>
|
||||
<div id='{{key}}__name' class='xocfg_itm_name'>{{{name}}}</div>
|
||||
<div id='{{key}}__undo' data-xocfg-type='{{type}}' class='xocfg_itm_delete{{^edited}} xocfg_itm_hide{{/edited}}'>
|
||||
<span class='xoimg_btn_x16 xoimg_list_undo' onclick='return xo.cfg_edit.delete__send("{{key}}")' title="reset to "{{{dflt}}}""> </span>
|
||||
</div>
|
||||
<div class='xocfg_itm_data'>{{{html}}}</div>
|
||||
<input type='hidden' id='{{key}}__key_box' value='{{key}}'></input>
|
||||
<input type='hidden' id='{{key}}__ctx_box' value='{{{ctx}}}'></input>
|
||||
</div>
|
||||
<div id='{{key}}_help_div' class='xohelp_div'>
|
||||
<div id='{{key}}_help_msg' class='xohelp_msg'>{{{help}}}</div>
|
||||
</div>
|
||||
{{/itms}}
|
||||
{{/grps}}
|
||||
</div>
|
||||
277
res/bin/any/xowa/addon/app/cfg/edit/bin/xo.cfg_edit.js
Normal file
277
res/bin/any/xowa/addon/app/cfg/edit/bin/xo.cfg_edit.js
Normal file
@@ -0,0 +1,277 @@
|
||||
(function (xo) {
|
||||
xo.cfg_edit = new function() {
|
||||
this.debug = false;
|
||||
//{ util.elem
|
||||
this.elem__get = function(id) {
|
||||
var elem = document.getElementById(id);
|
||||
if (elem == null && xo.cfg_edit.debug) alert('elem__get failed: id=' + id);
|
||||
return elem;
|
||||
}
|
||||
this.elem__val = function(id) {
|
||||
var elem = document.getElementById(id);
|
||||
return elem == null ? null : elem.value;
|
||||
}
|
||||
this.elem__val_ = function(id, val) {
|
||||
var elem = document.getElementById(id);
|
||||
if (elem == null && xo.cfg_edit.debug) alert('elem__val failed: id=' + id);
|
||||
elem.value = val;
|
||||
}
|
||||
this.elems__get_by_atr = function(atr) {
|
||||
var rv = [];
|
||||
|
||||
// get all elems
|
||||
var elems = document.getElementsByTagName('*');
|
||||
var len = elems.length;
|
||||
|
||||
// loop all elems and add found to rv
|
||||
for (var i = 0; i < len; i++) {
|
||||
if (elems[i].getAttribute(atr) !== null) // elem has atr
|
||||
rv.push(elems[i]);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
//}
|
||||
|
||||
//{ util.xocfg
|
||||
this.err__clear = function() {xo.cfg_edit.err__write('');}
|
||||
this.err__write = function(s) {
|
||||
var elem = xo.elem.get('xocfg_err');
|
||||
if (elem)
|
||||
elem.innerHTML = s;
|
||||
}
|
||||
|
||||
this.cfg_val__set = function(type, key, val) {
|
||||
if (type === 'bool') {
|
||||
xo.cfg_edit.elem__get(key).checked = val == "y";
|
||||
}
|
||||
else if (type === 'io.cmd') {
|
||||
var flds = val.split("|");
|
||||
xo.cfg_edit.elem__val_(key + '-exe', flds[0]);
|
||||
xo.cfg_edit.elem__val_(key + '-arg', flds.length <= 1 ? "" : flds[1]);
|
||||
}
|
||||
else if (type === 'gui.binding') {
|
||||
var flds = val.split("|");
|
||||
// xo.cfg_edit.elem__val_(key + '-box', flds[0]);
|
||||
var box = xo.cfg_edit.elem__get(key + '-box');
|
||||
var len = box.options.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
var opt = box.options[i];
|
||||
if (opt.text === flds[0]) {
|
||||
box.selectedIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
xo.cfg_edit.elem__val_(key + '-ipt', flds.length <= 1 ? "" : flds[1]);
|
||||
}
|
||||
else {
|
||||
xo.cfg_edit.elem__get(key).value = val;
|
||||
}
|
||||
}
|
||||
this.cfg_val__bind_all = function() {
|
||||
var elems = xo.cfg_edit.elems__get_by_atr('data-xocfg-key');
|
||||
var len = elems.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
elems[i].addEventListener('change', xo.cfg_edit.update__send_by_event);
|
||||
if (elems[i].tagName === 'BUTTON') {
|
||||
elems[i].addEventListener('click', xo.cfg_edit.update__send_by_event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.io_cmd__select = function(io_type, elem_id, msg) {
|
||||
// call xowa to launch file_dialog
|
||||
var file_path = xowa_exec('scripts_exec', 'app.gui.kit.ask_file("' + msg + '");');
|
||||
if (file_path == null || file_path == '') return; // nothing selected; exit
|
||||
|
||||
// update val
|
||||
var elem = xo.cfg_edit.elem__get(elem_id);
|
||||
elem.value = file_path;
|
||||
xo.cfg_edit.update__send(elem);
|
||||
}
|
||||
|
||||
this.gui_binding__remap_send = function change_binding(key, name, bnd) {
|
||||
try {
|
||||
xowa_exec('scripts_exec', "app.cfg.run('app', 'xowa.gui.shortcuts.show_remap_win', '" + key + "\n" + name + "\n" + xo.cfg_edit.elem__val(key + '-ipt') + "');");
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.gui_binding__remap_recv = function(msg_str) {
|
||||
try {
|
||||
// err.write
|
||||
var msg = JSON.parse(msg_str);
|
||||
|
||||
// update
|
||||
var ipt_elem = xo.cfg_edit.elem__get(msg.key + '-ipt');
|
||||
ipt_elem.value = msg.bnd;
|
||||
xo.cfg_edit.update__send(ipt_elem);
|
||||
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
//}
|
||||
|
||||
//{ update
|
||||
this.update__send_by_event = function(e) {xo.cfg_edit.update__send(e.target);}
|
||||
this.update__send = function(elem) {
|
||||
try {
|
||||
// init vars
|
||||
var key = elem.getAttribute("data-xocfg-key");
|
||||
var type = elem.getAttribute("data-xocfg-type");
|
||||
|
||||
// read val from ui
|
||||
var val = '';
|
||||
if (type === 'bool') {val = elem.checked ? "y" : "n";}
|
||||
else if (type === 'io.cmd-exe') {val = elem.value + '|' + xo.cfg_edit.elem__val(key + '-arg');}
|
||||
else if (type === 'io.cmd-arg') {val = xo.cfg_edit.elem__val(key + '-exe') + '|' + elem.value;}
|
||||
// else if (type === 'gui.binding-box') {val = elem.value + '|' + xo.cfg_edit.elem__val(key + '-ipt');}
|
||||
else if (type === 'gui.binding-box') {var box = xo.cfg_edit.elem__get(key + '-box'); val = box_text = box.options[box.selectedIndex].text + '|' + xo.cfg_edit.elem__val(key + '-ipt');}
|
||||
else if (type === 'gui.binding-ipt') {var box = xo.cfg_edit.elem__get(key + '-box'); val = box_text = box.options[box.selectedIndex].text + '|' + elem.value;}
|
||||
else {val = elem.value;}
|
||||
|
||||
// send to server
|
||||
xo.server.send_by_bridge('xo.cfg_edit', 'update',
|
||||
{ ctx: xo.cfg_edit.elem__val(key + '__ctx_box')
|
||||
, key: key
|
||||
, val: val
|
||||
, type: type
|
||||
});
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.update__fail = function(msg_str) {
|
||||
try {
|
||||
// err.write
|
||||
var msg = JSON.parse(msg_str);
|
||||
var name = xo.cfg_edit.elem__get(msg.key + '__name');
|
||||
xo.cfg_edit.err__write('<b>' + msg.new_val + '</b> is invalid for <b>' + name.textContent.trim() + '</b><br/>Error: ' + msg.err);
|
||||
|
||||
// revert val
|
||||
xo.cfg_edit.elem__val_(msg.key, msg.old_val);
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.update__pass = function(msg_str) {
|
||||
try {
|
||||
// err.clear
|
||||
var msg = JSON.parse(msg_str);
|
||||
xo.cfg_edit.err__clear();
|
||||
if (msg.type === 'btn') return true; // if button, exit
|
||||
|
||||
// show undo button
|
||||
var undo_elem = xo.cfg_edit.elem__get(msg.key + '__undo');
|
||||
undo_elem.classList.remove("xocfg_itm_hide");
|
||||
|
||||
// show confirm icon briefly
|
||||
var img = undo_elem.children[0];
|
||||
img.className = 'xoimg_btn_x16 xoimg_misc_ok xocfg_pulse';
|
||||
setTimeout(function() {
|
||||
img.className = 'xoimg_btn_x16 xoimg_list_undo';
|
||||
}, 1200);
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
//}
|
||||
|
||||
//{ delete
|
||||
this.delete__send = function(key) {
|
||||
try {
|
||||
xo.cfg_edit.err__clear();
|
||||
|
||||
// get type
|
||||
var undo_elem = xo.cfg_edit.elem__get(key + '__undo');
|
||||
var type = undo_elem.getAttribute("data-xocfg-type");
|
||||
|
||||
// send to server
|
||||
xo.server.send_by_bridge('xo.cfg_edit', 'delete',
|
||||
{ ctx: xo.cfg_edit.elem__val(key + '__ctx_box')
|
||||
, key: key
|
||||
, type: type
|
||||
});
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.delete__recv = function(msg_str) {
|
||||
try {
|
||||
var msg = JSON.parse(msg_str);
|
||||
|
||||
// hide icon
|
||||
var undo_elem = xo.cfg_edit.elem__get(msg.key + '__undo');
|
||||
var undo_img = undo_elem.children[0];
|
||||
undo_elem.classList.add("xocfg_itm_hide");
|
||||
|
||||
// set value
|
||||
var type = undo_elem.getAttribute("data-xocfg-type");
|
||||
xo.cfg_edit.cfg_val__set(type, msg.key, msg.val);
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
//}
|
||||
|
||||
//{ select
|
||||
this.select__by_keypress = function(e, target) {
|
||||
switch (e.keyCode) {
|
||||
case 38: // up
|
||||
case 40: // down;
|
||||
if (!e.altKey) // do not fire for alt+down which drops down menu
|
||||
this.select__send(target);
|
||||
break;
|
||||
case 33: // page_up
|
||||
case 34: // page_down;
|
||||
this.select__send(target);
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.select__send = function(elem) {
|
||||
try {
|
||||
if (elem == null) // occurs when View HTML for SWT Browser
|
||||
return;
|
||||
xo.cfg_edit.err__clear();
|
||||
var key = elem.options[elem.selectedIndex].value;
|
||||
xo.server.send_by_bridge('xo.cfg_edit', 'select',
|
||||
{ ctx: 'app' //xo.cfg_edit.elem__val(key + '__ctx_box')
|
||||
, key: key
|
||||
});
|
||||
|
||||
var options_elem = xo.elem.get('options_lnk');
|
||||
if (options_elem) // null on DRD
|
||||
options_elem.href = '/wiki/Special:XowaCfg?grp=' + key;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
this.select__recv = function(msg_str) {
|
||||
try {
|
||||
// write grp via template
|
||||
var msg = JSON.parse(msg_str);
|
||||
var grp = xo.elem.get('cfg_grps');
|
||||
xo.tmpl.fmt('xocfg.grps', grp, msg);
|
||||
|
||||
// bind update and popups
|
||||
xo.cfg_edit.cfg_val__bind_all();
|
||||
try {
|
||||
xowa_popups_bind_to_owner(document);
|
||||
} catch (err) {}
|
||||
return true;
|
||||
} catch (err) {alert(err);}
|
||||
}
|
||||
//}
|
||||
|
||||
//{ help
|
||||
this.help__toggle_all = function() {
|
||||
var elems = document.getElementsByClassName('xohelp_div');
|
||||
var len = elems.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
var elem = elems[i] ;
|
||||
var id = elem.id.replace('_help_div', '');
|
||||
xo.help.toggle(id);
|
||||
}
|
||||
}
|
||||
//}
|
||||
}
|
||||
}(window.xo = window.xo || {}));
|
||||
|
||||
//{ onpageload
|
||||
xo.cfg_edit.cfg_val__bind_all();
|
||||
xo.help.add_bottom_margin = false;
|
||||
setTimeout(function() { // wait for mustache to load files async
|
||||
var elem = xo.cfg_edit.elem__get('xocfg_nav_select');
|
||||
// auto-load group; deactivated because first group comes preloaded to have HTML
|
||||
xo.cfg_edit.select__send(elem);
|
||||
elem.focus();
|
||||
}, 0);
|
||||
//}
|
||||
@@ -0,0 +1,64 @@
|
||||
<div id='xocfg_body'>
|
||||
<!-- TEXT:err_msg -->
|
||||
<div id='xocfg_err'></div>
|
||||
{{#nav_exists}}
|
||||
<div>
|
||||
<!-- BTN:info -->
|
||||
<span class='xoimg_btn_x16 xoimg_help_tip' href='javascript:void(0)' onclick='return xo.cfg_edit.help__toggle_all()' title='toggle all help'> </span>
|
||||
|
||||
<!-- COMBO:cfg_grps -->
|
||||
<select id='xocfg_nav_select' onchange='xo.cfg_edit.select__send(this);' onkeyup='xo.cfg_edit.select__by_keypress(event, this);' accesskey='l'>
|
||||
{{#itms}}
|
||||
<option value='{{key}}' {{#selected}} selected='selected'{{/selected}}>{{text}}</option>
|
||||
{{/itms}}
|
||||
</select>
|
||||
|
||||
<!-- LINK:cfg_link -->
|
||||
{{^app_is_drd}}
|
||||
<div style='float:right;margin:2px 7px;'>
|
||||
<a id='options_lnk'>options link</a>
|
||||
</div>
|
||||
{{/app_is_drd}}
|
||||
</div>
|
||||
{{/nav_exists}}
|
||||
|
||||
<div id='cfg_grps'>
|
||||
<!-- TEXT:page_help -->
|
||||
<div>
|
||||
<p id='page_help_para'>{{{page_help}}}</p>
|
||||
</div>
|
||||
{{#grps}}
|
||||
<h2>{{{name}}}</h2>
|
||||
|
||||
{{#itms}}
|
||||
<div class="xocfg_row flex_div">
|
||||
<!-- BTN:help_item -->
|
||||
<div class='xocfg_itm_help'>
|
||||
<span class='xoimg_btn_x16 xoimg_help_tip' href='javascript:void(0)' onclick='return xo.help.toggle("{{key}}")' title='view more info'> </span>
|
||||
</div>
|
||||
|
||||
<!-- TEXT:key -->
|
||||
<div id='{{key}}__name' class='xocfg_itm_name'>{{{name}}}</div>
|
||||
|
||||
<!-- BTN:undo -->
|
||||
<div id='{{key}}__undo' data-xocfg-type='{{type}}' class='xocfg_itm_delete{{^edited}} xocfg_itm_hide{{/edited}}'>
|
||||
<span class='xoimg_btn_x16 xoimg_list_undo' onclick='return xo.cfg_edit.delete__send("{{key}}")' title="reset to "{{{dflt}}}""> </span>
|
||||
</div>
|
||||
|
||||
<!-- TEXT:val -->
|
||||
<div class='xocfg_itm_data'>{{{html}}}</div>
|
||||
|
||||
<!-- HIDDEN:key,ctx -->
|
||||
<input type='hidden' id='{{key}}__key_box' value='{{key}}'></input>
|
||||
<input type='hidden' id='{{key}}__ctx_box' value='{{{ctx}}}'></input>
|
||||
</div>
|
||||
|
||||
<!-- DIV:help -->
|
||||
<div id='{{key}}_help_div' class='xohelp_div'>
|
||||
<div id='{{key}}_help_msg' class='xohelp_msg'>{{{help}}}</div>
|
||||
</div>
|
||||
{{/itms}}
|
||||
{{/grps}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
20
res/bin/any/xowa/addon/app/cfg/maint/bin/xo.cfg_maint.css
Normal file
20
res/bin/any/xowa/addon/app/cfg/maint/bin/xo.cfg_maint.css
Normal file
@@ -0,0 +1,20 @@
|
||||
.cur_head_text {
|
||||
width: calc(100% - 40px);
|
||||
}
|
||||
.cur_head_btns {
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
.label {
|
||||
display: inline-block;
|
||||
padding: 0px 0px 0px 10px;
|
||||
}
|
||||
.data {
|
||||
display: inline-block;
|
||||
width: calc(100% - 94px);
|
||||
padding: 0px 0px 0px 10px;
|
||||
}
|
||||
.button {
|
||||
display: inline-block;
|
||||
padding: 0px 10px 0px 10px;
|
||||
}
|
||||
16
res/bin/any/xowa/addon/app/cfg/maint/bin/xo.cfg_maint.js
Normal file
16
res/bin/any/xowa/addon/app/cfg/maint/bin/xo.cfg_maint.js
Normal file
@@ -0,0 +1,16 @@
|
||||
(function (xo) {
|
||||
xo.cfg_maint = new function() {
|
||||
this.get_elem_val = function(id) {
|
||||
var elem = document.getElementById(id);
|
||||
return elem == null ? null : elem.value;
|
||||
}
|
||||
this.itm__save = function(e) {
|
||||
var data = xo.cfg_maint.get_elem_val('data_box');
|
||||
xo.server.send_by_bridge('xo.cfg_maint', 'upsert',
|
||||
{ data: data
|
||||
});
|
||||
}
|
||||
}
|
||||
}(window.xo = window.xo || {}));
|
||||
document.getElementById('data_box').focus();
|
||||
document.getElementById('save_btn').addEventListener('click', xo.cfg_maint.itm__save);
|
||||
@@ -0,0 +1,25 @@
|
||||
<div id='cur_help_div' class='xohelp_div'>
|
||||
<div id='cur_help_msg' class='xohelp_msg'>
|
||||
Work in progress
|
||||
</div>
|
||||
</div>
|
||||
<div class='main_body' id='main_body'>
|
||||
<div class='list_tbl'>
|
||||
<div class='xotbl_head_row'>
|
||||
<div class='xotbl_head_text cur_head_text'>Option Maintenance</div>
|
||||
<div class='xotbl_head_btns cur_head_btns'>
|
||||
<a class='xoimg_btn_x24 xoimg_help_tip' title='view help' href='javascript:void(0)' onclick='return xo.help.toggle("cur")'> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="xotbl_data_row flex_div">
|
||||
<div class='label'>Data
|
||||
</div>
|
||||
<div class='data'>
|
||||
<textarea id='data_box' rows='40' accesskey=','></textarea>
|
||||
</div>
|
||||
<div class='button'>
|
||||
<button id='save_btn' accesskey='s'>Save</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
BIN
res/bin/any/xowa/addon/app/cfg/xo.cfg.sqlite3
Normal file
BIN
res/bin/any/xowa/addon/app/cfg/xo.cfg.sqlite3
Normal file
Binary file not shown.
53
res/bin/any/xowa/addon/app/help/log/bin/xolog.css
Normal file
53
res/bin/any/xowa/addon/app/help/log/bin/xolog.css
Normal file
@@ -0,0 +1,53 @@
|
||||
.cur_head_text {
|
||||
display: flex; align-items: center;
|
||||
width: calc(100% - 180px);
|
||||
font-size: 1.1em;
|
||||
height: 100%;
|
||||
margin-left: 10px; /* match img_btn padding */
|
||||
}
|
||||
.cur_head_btns {
|
||||
width: 180px;
|
||||
}
|
||||
.log_div {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
margin: 0px; border: 0px; /* turn off default pre styles*/
|
||||
|
||||
overflow: auto;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
.date_combo_div {
|
||||
display: inline-block;
|
||||
}
|
||||
.date_combo_btn {
|
||||
display: flex; align-items: center;
|
||||
width: 100%;
|
||||
padding: 4px 0px 4px 4px;
|
||||
border: solid 1px #ddd;
|
||||
|
||||
background-color: white;
|
||||
cursor: pointer;
|
||||
}
|
||||
.date_combo_btn:hover, .dropbtn:focus {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
.date_combo_content {
|
||||
display: none;
|
||||
padding: 4px 4px 4px 4px;
|
||||
position: absolute;
|
||||
|
||||
background-color: #f9f9f9;
|
||||
text-align: left;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
|
||||
}
|
||||
.date_combo_content a {
|
||||
display: block;
|
||||
color: black;
|
||||
}
|
||||
.date_combo_content a:hover {
|
||||
background-color: #f1f1f1
|
||||
}
|
||||
.date_combo_content_show {
|
||||
display:block;
|
||||
}
|
||||
19
res/bin/any/xowa/addon/app/help/log/bin/xolog.js
Normal file
19
res/bin/any/xowa/addon/app/help/log/bin/xolog.js
Normal file
@@ -0,0 +1,19 @@
|
||||
(function (xo) {
|
||||
xo.xolog = new function() {
|
||||
this.date_combo_show = function() {
|
||||
document.getElementById("date_combo_id").classList.toggle("date_combo_content_show");
|
||||
}
|
||||
window.onclick = function(event) {
|
||||
if (!event.target.matches('.date_combo_clicker')) {
|
||||
var dropdowns = document.getElementsByClassName("date_combo_content");
|
||||
var i;
|
||||
for (i = 0; i < dropdowns.length; i++) {
|
||||
var dropdown = dropdowns[i];
|
||||
if (dropdown.classList.contains('date_combo_content_show')) {
|
||||
dropdown.classList.remove('date_combo_content_show');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}(window.xo = window.xo || {}));
|
||||
44
res/bin/any/xowa/addon/app/help/log/bin/xolog.mustache.html
Normal file
44
res/bin/any/xowa/addon/app/help/log/bin/xolog.mustache.html
Normal file
@@ -0,0 +1,44 @@
|
||||
<div class='main_div'>
|
||||
<div id='cur_help_div' class='xohelp_div'>
|
||||
<div id='cur_help_msg' class='xohelp_msg'>
|
||||
<div>
|
||||
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_inet_email'> </span><span class='xohelp_row_text'>Email the current log to the XOWA developer</span></div>
|
||||
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_list_delete'> </span><span class='xohelp_row_text'>Delete the current log</span></div>
|
||||
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_fsys_trash'> </span><span class='xohelp_row_text'>Delete all logs</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='xotbl_head_row'>
|
||||
<div class='cur_head_text'>
|
||||
<div class="date_combo_div">
|
||||
<div class="date_combo_btn">
|
||||
<div class="date_combo_clicker" onclick="xo.xolog.date_combo_show()">{{log_name}}▼</div>
|
||||
</div>
|
||||
<div id="date_combo_id" class="date_combo_content">
|
||||
{{#log_files}}
|
||||
<a href="/wiki/Special:XowaLog?cmd=show&file={{file}}">{{name}}</a>
|
||||
{{/log_files}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='xotbl_head_btns cur_head_btns'>
|
||||
<a class='xoimg_btn_x24 xoimg_inet_email' title='email' href='/wiki/Special:XowaLog?cmd=email&file={{log_file}}'> </a>
|
||||
<a class='xoimg_btn_x24 xoimg_list_delete' title='delete current log' href='javascript:void(0)'
|
||||
data_alertify_msg='Are you sure you want to delete this log: {{log_name}}?'
|
||||
data_alertify_ok='Delete'
|
||||
data_alertify_cancel='Cancel'
|
||||
data_alertify_href='/wiki/Special:XowaLog?cmd=delete_one&file={{log_file}}'
|
||||
onclick='return xo.alertify.confirm_href(this);'> </a>
|
||||
<a class='xoimg_btn_x24 xoimg_fsys_trash' title='delete all logs' href='javascript:void(0)'
|
||||
data_alertify_msg='Are you sure you want to delete all logs?'
|
||||
data_alertify_ok='Delete All'
|
||||
data_alertify_cancel='Cancel'
|
||||
data_alertify_href='/wiki/Special:XowaLog?cmd=delete_all'
|
||||
onclick='return xo.alertify.confirm_href(this);'> </a>
|
||||
<a class='xoimg_btn_x24 xoimg_help_tip' title='view help' href='javascript:void(0)' onclick='return xo.help.toggle("cur")'> </a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="xotbl_data_row">
|
||||
<pre class='log_div'>{{{log_data}}}</pre>
|
||||
</div>
|
||||
</div>
|
||||
57
res/bin/any/xowa/addon/app/help/log/test/xolog.test.html
Normal file
57
res/bin/any/xowa/addon/app/help/log/test/xolog.test.html
Normal file
@@ -0,0 +1,57 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
|
||||
<!--
|
||||
NOTE: this page loads local files
|
||||
- Chrome is the easiest browser for local files; Use "chrome.exe --disable-web-security"
|
||||
- Change C:/xowa/ to wherever it is on your system
|
||||
-->
|
||||
<!-- base -->
|
||||
<base href="file:///C:/xowa/" target="_blank">
|
||||
|
||||
<!-- css -->
|
||||
<link type="text/css" rel="stylesheet" href="bin/any/xowa/html/res/lib/alertify/themes/alertify.core.css">
|
||||
<link type="text/css" rel="stylesheet" href="bin/any/xowa/html/res/lib/alertify/themes/alertify.bootstrap.css">
|
||||
<link type="text/css" rel="stylesheet" href="bin/any/xowa/html/res/src/xowa/xocss/core/xocss_core-0.0.1.css">
|
||||
<link type="text/css" rel="stylesheet" href="bin/any/xowa/html/res/src/xowa/xocss/core/xoimg_core-0.0.1.css">
|
||||
<link type="text/css" rel="stylesheet" href="bin/any/xowa/html/res/src/xowa/xocss/help/xohelp-0.0.1.css">
|
||||
<link type="text/css" rel="stylesheet" href="bin/any/xowa/addon/app/help/log/bin/xolog.css">
|
||||
|
||||
<!-- js -->
|
||||
<script type="text/javascript" src="bin/any/xowa/html/res/lib/alertify/lib/alertify-0.3.11.js"></script>
|
||||
<script type="text/javascript" src="bin/any/xowa/html/res/lib/alertify/lib/xo-alertify-0.0.1.js"></script>
|
||||
<script type="text/javascript" src="bin/any/xowa/html/res/lib/mustache/mustache-2.2.1.js"></script>
|
||||
<script type="text/javascript" src="bin/any/xowa/html/res/lib/jquery/jquery-1.11.3.js"></script>
|
||||
<script type="text/javascript" src="bin/any/xowa/html/res/src/xowa/xocss/help/xohelp-0.0.1.js"></script>
|
||||
<script type="text/javascript" src="bin/any/xowa/addon/app/help/log/bin/xolog.js"></script>
|
||||
|
||||
<!-- mustache -->
|
||||
<script type="text/html" id="templates"></script>
|
||||
<script type="text/javascript">
|
||||
window.view = {
|
||||
log_files:
|
||||
[
|
||||
{name:'2016-03-06 01:02:03', file:'20160306_010203'},
|
||||
{name:'2016-03-05 01:02:03', file:'20160305_010203'},
|
||||
],
|
||||
log_name:'2016-03-06 01:02:03',
|
||||
log_file:'20160306_010203',
|
||||
log_data:'test data',
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
$("#templates").load("bin/any/xowa/addon/app/help/log/bin/xolog.mustache.html", function(response_txt, status_txt, xhr){
|
||||
var template = response_txt;
|
||||
var output = Mustache.render(template, window.view);
|
||||
document.getElementById('main').innerHTML = output;
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="main"></div>
|
||||
</body>
|
||||
<script>
|
||||
xo.alertify.log_by_str('{"msg":"test", "type":"success", "wait":3000}');
|
||||
</script>
|
||||
</html>
|
||||
28
res/bin/any/xowa/addon/app/maint/sql_exec/bin/xosql_exec.css
Normal file
28
res/bin/any/xowa/addon/app/maint/sql_exec/bin/xosql_exec.css
Normal file
@@ -0,0 +1,28 @@
|
||||
.cur_head_text {
|
||||
width: calc(100% - 40px);
|
||||
}
|
||||
.cur_head_btns {
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
/* Detail Tbl */
|
||||
.cur_data_row {
|
||||
padding: 4px 0px 4px;
|
||||
}
|
||||
.cur_data_row label {
|
||||
display: inline-block;
|
||||
width: 90px;
|
||||
margin: 0px 4px 0px 10px;
|
||||
vertical-align: top;
|
||||
align-self: flex-start;
|
||||
-webkit-align-self: flex-start;
|
||||
|
||||
font-weight: bold;
|
||||
}
|
||||
.cur_data_row label::after {
|
||||
content: ":";
|
||||
}
|
||||
.cur_data_input {
|
||||
display: inline-block;
|
||||
width: calc(100% - 140px);
|
||||
}
|
||||
36
res/bin/any/xowa/addon/app/maint/sql_exec/bin/xosql_exec.js
Normal file
36
res/bin/any/xowa/addon/app/maint/sql_exec/bin/xosql_exec.js
Normal file
@@ -0,0 +1,36 @@
|
||||
(function (xo) {
|
||||
xo.sql_exec = new function() {
|
||||
this.send = function(proc, args) {
|
||||
try {xo.server.send_by_bridge('xowa.app.maint.sql_exec', proc, args);}
|
||||
catch (err) {alert(err);}
|
||||
}
|
||||
this.run_sql = function() {
|
||||
try {
|
||||
xo.sql_exec.results__set('running');
|
||||
var data =
|
||||
{ domain: xo.elem.get_val_or_null('domain_box')
|
||||
, db: xo.elem.get_val_or_null('db_box')
|
||||
, sql: xo.elem.get_val_or_null('sql_box')
|
||||
};
|
||||
xo.sql_exec.send('exec', data);
|
||||
} catch (err) {
|
||||
alert(err);
|
||||
}
|
||||
}
|
||||
|
||||
this.results__set = function(msg) {
|
||||
var elem = document.getElementById('results_div');
|
||||
elem.innerHTML = msg;
|
||||
}
|
||||
this.results__recv = function(msg_str) {
|
||||
try {
|
||||
var msg = JSON.parse(msg_str);
|
||||
this.results__set(msg.msg_text);
|
||||
return true;
|
||||
} catch (err) {
|
||||
alert(err);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}(window.xo = window.xo || {}));
|
||||
@@ -0,0 +1,59 @@
|
||||
<div id='xo_msg_box' style='width:100%; color:red'>
|
||||
</div>
|
||||
<!--
|
||||
<table class="metadata plainlinks ambox ambox-delete" style="">
|
||||
<tr>
|
||||
<td class="mbox-empty-cell">
|
||||
</td>
|
||||
<td class="mbox-text" style="">
|
||||
<span class="mbox-text-span">
|
||||
WARNING: THIS PAGE IS ONLY FOR DEVELOPER USE.<br/>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div id='cur_help_div' class='xohelp_div'>
|
||||
<div id='cur_help_msg' class='xohelp_msg'>
|
||||
<b>Info</b>
|
||||
<div>
|
||||
<div class='xohelp_row'><span class='xohelp_bullet'> </span><span class='xohelp_row_text'><b>Domain</b>: Domain of the wiki. Also supports <code>[xowa.app]</code> and <code>[file]</code></span></div>
|
||||
<div class='xohelp_row'><span class='xohelp_bullet'> </span><span class='xohelp_row_text'><b>Db</b>: Database. Currently, only <code>core</code> or <code>user</code>. Can use path if <code>[file]</code></span></div>
|
||||
<div class='xohelp_row'><span class='xohelp_bullet'> </span><span class='xohelp_row_text'><b>SQL</b>: SQL to run</span></div>
|
||||
<div class='xohelp_row'><span class='xohelp_bullet'> </span><span class='xohelp_row_text'><b>Results</b>: Results of SQL</div>
|
||||
For more info, see <a href='/site/home/wiki/App/Personal_wikis/New_wiki'>the new wiki help page</a>
|
||||
</div>
|
||||
<b>Buttons</b>
|
||||
<div>
|
||||
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_list_save'> </span><span class='xohelp_row_text'>Creates the wiki</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div class='main_body' id='main_body'>
|
||||
<div class='xotbl_head_row'>
|
||||
<div class='xotbl_head_text cur_head_text'>
|
||||
Run SQL
|
||||
</div>
|
||||
<a class='xoimg_btn_x24 xoimg_media_play' title='save changes' href='javascript:void(0)' accesskey='r'
|
||||
onclick='xo.sql_exec.run_sql();'> </a>
|
||||
<!-- <a class='xoimg_btn_x24 xoimg_help_tip' title='view help' href='javascript:void(0)' onclick='return xo.help.toggle("cur")'> </a> -->
|
||||
</div>
|
||||
<div class="xotbl_data_row cur_data_row">
|
||||
<label>Domain</label>
|
||||
<input id='domain_box' type='text' value='{{domain}}' class='cur_data_input' placeholder='Enter a domain (For example: wiki.me.org)'></input>
|
||||
</div>
|
||||
<div class="xotbl_data_row cur_data_row">
|
||||
<label>DB</label>
|
||||
<input id='db_box' type='text' value='{{db}}' class='cur_data_input' placeholder='Enter a db (For example: core)'></input>
|
||||
</div>
|
||||
<div class="xotbl_data_row cur_data_row" >
|
||||
<label>SQL</label>
|
||||
<textarea id='sql_box' class='cur_data_input' accesskey='d' placeholder='Enter SQL (For example: SELECT * FROM xowa_cfg).'>SELECT * FROM xowa_cfg;</textarea>
|
||||
</div>
|
||||
<div class="xotbl_data_row cur_data_row">
|
||||
<label>Results</label>
|
||||
<pre id='results_div' class='cur_data_input'>waiting
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
67
res/bin/any/xowa/addon/app/update/bin/xoa_update.css
Normal file
67
res/bin/any/xowa/addon/app/update/bin/xoa_update.css
Normal file
@@ -0,0 +1,67 @@
|
||||
.cur_head_text {
|
||||
width: calc(100% - 40px);
|
||||
}
|
||||
.cur_head_btns {
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
.cur_data_row {
|
||||
padding: 4px 0px 4px;
|
||||
}
|
||||
.cur_data_cell0 {
|
||||
display: inline-block;
|
||||
width: 220px;
|
||||
margin: 0px 4px 0px 10px;
|
||||
vertical-align: top;
|
||||
align-self: flex-start;
|
||||
-webkit-align-self: flex-start;
|
||||
|
||||
font-weight: bold;
|
||||
}
|
||||
.cur_data_cell1 {
|
||||
display: inline-block;
|
||||
width: calc(100% - 240px);
|
||||
}
|
||||
.release_is_major {
|
||||
color: red;
|
||||
}
|
||||
.update_status {
|
||||
margin: 10px 0px 10px;
|
||||
}
|
||||
.update_status_anch {
|
||||
font-weight: bold;
|
||||
font-size: 125%;
|
||||
}
|
||||
|
||||
/* buttons */
|
||||
.buttons a, .buttons button{
|
||||
display:block;
|
||||
float:left;
|
||||
margin:0 7px 0 0;
|
||||
background-color:#f5f5f5;
|
||||
border:1px solid #dedede;
|
||||
border-top:1px solid #eee;
|
||||
border-left:1px solid #eee; font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
|
||||
font-size:100%;
|
||||
line-height:130%;
|
||||
text-decoration:none;
|
||||
font-weight:bold;
|
||||
color:#565656;
|
||||
cursor:pointer;
|
||||
padding:5px 10px 6px 7px; /* Links */
|
||||
}
|
||||
.buttons button{
|
||||
width:auto;
|
||||
overflow:visible;
|
||||
padding:4px 10px 3px 7px; /* IE6 */
|
||||
}
|
||||
.buttons button[type]{
|
||||
padding:5px 10px 5px 7px; /* Firefox */
|
||||
line-height:17px; /* Safari */
|
||||
}
|
||||
*:first-child+html button[type]{
|
||||
padding:4px 10px 3px 7px; /* IE7 */
|
||||
}
|
||||
.buttons button img, .buttons a img{
|
||||
margin:-10px 0px;
|
||||
}
|
||||
45
res/bin/any/xowa/addon/app/update/bin/xoa_update.js
Normal file
45
res/bin/any/xowa/addon/app/update/bin/xoa_update.js
Normal file
@@ -0,0 +1,45 @@
|
||||
(function (xo) {
|
||||
xo.app_updater = new function() {
|
||||
var progbar = new xo.gui.progbars.Progbar('pbar-row', 'pbar-txt', 'pbar-bar');
|
||||
this.update = function(version_name) {
|
||||
try {
|
||||
xo.notify.elem_anchor = '#main_body';
|
||||
progbar.show();
|
||||
xo.server.send_by_bridge('app.updater', 'install', {version: version_name});
|
||||
} catch (e) {
|
||||
alert(e);
|
||||
}
|
||||
};
|
||||
this.skip = function(version_name) {
|
||||
try {
|
||||
xo.server.send_by_bridge('app.updater', 'skip', {version: version_name});
|
||||
} catch (e) {
|
||||
alert(e);
|
||||
}
|
||||
};
|
||||
this.download__prog = function(msg) {
|
||||
try {
|
||||
var args = JSON.parse(msg);
|
||||
if (args.done) {
|
||||
progbar.write('done', 100);
|
||||
return true;
|
||||
}
|
||||
|
||||
progbar.write_by_notify(args.task_type + ' app update', args.prog_data_cur, args.prog_data_end, args.prog_rate);
|
||||
|
||||
return true;
|
||||
} catch (e) {
|
||||
alert(e);
|
||||
}
|
||||
};
|
||||
this.write_status = function(msg) {
|
||||
try {
|
||||
var args = JSON.parse(msg);
|
||||
progbar.write_by_notify(args.msg);
|
||||
} catch (e) {
|
||||
alert(e);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
}
|
||||
}(window.xo = window.xo || {}));
|
||||
@@ -0,0 +1,82 @@
|
||||
<div id='cur_help_div' class='xohelp_div'>
|
||||
<div id='cur_help_msg' class='xohelp_msg'>
|
||||
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_app_system' > </span><span class='xohelp_row_text'>Go to the options page</span></div>
|
||||
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_help_doc' > </span><span class='xohelp_row_text'>Go to the docs page</span></div>
|
||||
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_app_install' > </span><span class='xohelp_row_text'>Install latest XOWA update</span></div>
|
||||
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_misc_skip' > </span><span class='xohelp_row_text'>Skip reminders for this update</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='main_body' id='main_body'>
|
||||
<div class='xotbl_head_row'>
|
||||
<div class='xotbl_head_text cur_head_text'>XOWA Version: {{current_version}} ({{current_date}})</div>
|
||||
<div class='xotbl_head_btns cur_head_btns'>
|
||||
<a class='xoimg_btn_x24 xoimg_app_system' title='go to options' href='/wiki/Special:XowaCfg?grp=xowa.app.update'> </a>
|
||||
<a class='xoimg_btn_x24 xoimg_help_doc' title='go to docs' href='/wiki/App/Setup/Update/In-app'> </a>
|
||||
<a class='xoimg_btn_x24 xoimg_help_tip' title='view help' href='javascript:void(0)' onclick='return xo.help.toggle("cur")'> </a>
|
||||
</div>
|
||||
</div>
|
||||
{{#web_access_enabled}}
|
||||
{{#itms_exist}}
|
||||
<div class="xotbl_data_row cur_data_row">
|
||||
<span class='cur_data_cell0'> </span>
|
||||
<div class='cur_data_cell1 update_status'>
|
||||
<div class='buttons'>
|
||||
<a class='update_status_anch' title='download latest update' href='javascript:void(0)'
|
||||
data_alertify_msg='Please confirm that you want to update to the latest XOWA version:<br/>{{version}} ({{date}}): {{summary}}'
|
||||
data_alertify_ok='Download and update'
|
||||
data_alertify_cancel='Cancel'
|
||||
data_alertify_func='xo.app_updater.update("{{version}}");'
|
||||
accesskey='d'
|
||||
onclick='return xo.alertify.confirm_func(this);'><img class='xoimg_btn_x16 xoimg_app_install' /> Install latest
|
||||
</a>
|
||||
</div>
|
||||
<div class='buttons'>
|
||||
<a class='update_status_anch' title='skip current update' href='javascript:void(0)'
|
||||
data_alertify_msg='Please confirm that you want to ignore this update.<br/><br/>You can always return to this page by going to Help -> Update XOWA or navigating to <code>Special:XowaAppUpdate</code>'
|
||||
data_alertify_ok='Skip update'
|
||||
data_alertify_cancel='Cancel'
|
||||
data_alertify_func='xo.app_updater.skip("{{version}}");'
|
||||
accesskey='d'
|
||||
onclick='return xo.alertify.confirm_func(this);'><img class='xoimg_btn_x16 xoimg_misc_skip' /> Skip this update
|
||||
</a>
|
||||
</div>
|
||||
<div class='pbar_row' id='pbar-row' style='float:right'>
|
||||
<div class='pbar_proc' id='pbar-txt'>downloading app update</div>
|
||||
<div class='pbar_div'>
|
||||
<div class="pbar_bar" id='pbar-bar'>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{#itms}}
|
||||
<div class="xotbl_data_row cur_data_row">
|
||||
<span class='cur_data_cell0'>{{date}}: {{version}}</span>
|
||||
<div class='cur_data_cell1'><span {{#priority_is_major}} class='release_is_major'{{/priority_is_major}}>({{priority}}) {{summary}}</span><br/>
|
||||
{{{details}}}
|
||||
</div>
|
||||
</div>
|
||||
{{/itms}}
|
||||
{{/itms_exist}}
|
||||
{{^itms_exist}}
|
||||
<div class="xotbl_data_row cur_data_row">
|
||||
<span class='cur_data_cell0'> </span>
|
||||
<span class='cur_data_cell1 update_status'>No updates available as of {{check_date}}</span>
|
||||
</div>
|
||||
{{/itms_exist}}
|
||||
{{/web_access_enabled}}
|
||||
{{^web_access_enabled}}
|
||||
<div class="xotbl_data_row cur_data_row">
|
||||
<span class='cur_data_cell0'> </span>
|
||||
<div class='cur_data_cell1'>
|
||||
<span style='color:red'>Web access disabled.</span><br/>
|
||||
In order to use this page, please do the following:
|
||||
<ul>
|
||||
<li>Enable web access at <a href='/site/home/wiki/Options/Security'>Options/Security</a></li>
|
||||
<li>Reload this page</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{/web_access_enabled}}
|
||||
</div>
|
||||
BIN
res/bin/any/xowa/addon/app/update/xoa_update.jar
Normal file
BIN
res/bin/any/xowa/addon/app/update/xoa_update.jar
Normal file
Binary file not shown.
Reference in New Issue
Block a user