1
0
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:
gnosygnu
2018-11-02 09:58:55 -04:00
parent a672fd8340
commit 5721913241
6057 changed files with 1156950 additions and 0 deletions

View 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);
}
}

View File

@@ -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'>&nbsp;</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 &quot;{{{dflt}}}&quot;">&nbsp;</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>

View 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);
//}

View File

@@ -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'>&nbsp;</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'>&nbsp;</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 &quot;{{{dflt}}}&quot;">&nbsp;</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>

View 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;
}

View 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);

View File

@@ -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")'>&nbsp;</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>

Binary file not shown.

View 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;
}

View 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 || {}));

View 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'>&nbsp;</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'>&nbsp;</span><span class='xohelp_row_text'>Delete the current log</span></div>
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_fsys_trash'>&nbsp;</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}}&#9660;</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}}'>&nbsp;</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);'>&nbsp;</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);'>&nbsp;</a>
<a class='xoimg_btn_x24 xoimg_help_tip' title='view help' href='javascript:void(0)' onclick='return xo.help.toggle("cur")'>&nbsp;</a>
</div>
</div>
<div class="xotbl_data_row">
<pre class='log_div'>{{{log_data}}}</pre>
</div>
</div>

View 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>

View 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);
}

View 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 || {}));

View File

@@ -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'>&nbsp;</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'>&nbsp;</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'>&nbsp;</span><span class='xohelp_row_text'><b>SQL</b>: SQL to run</span></div>
<div class='xohelp_row'><span class='xohelp_bullet'>&nbsp;</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'>&nbsp;</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();'>&nbsp;</a>
<!-- <a class='xoimg_btn_x24 xoimg_help_tip' title='view help' href='javascript:void(0)' onclick='return xo.help.toggle("cur")'>&nbsp;</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>

View 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;
}

View 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 || {}));

View File

@@ -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' >&nbsp;</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' >&nbsp;</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' >&nbsp;</span><span class='xohelp_row_text'>Install latest XOWA update</span></div>
<div class='xohelp_row'><span class='xoimg_help_x24 xoimg_misc_skip' >&nbsp;</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'>&nbsp;</a>
<a class='xoimg_btn_x24 xoimg_help_doc' title='go to docs' href='/wiki/App/Setup/Update/In-app'>&nbsp;</a>
<a class='xoimg_btn_x24 xoimg_help_tip' title='view help' href='javascript:void(0)' onclick='return xo.help.toggle("cur")'>&nbsp;</a>
</div>
</div>
{{#web_access_enabled}}
{{#itms_exist}}
<div class="xotbl_data_row cur_data_row">
<span class='cur_data_cell0'>&nbsp;</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' />&nbsp;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' />&nbsp;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'>&nbsp;</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'>&nbsp;</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>

Binary file not shown.