Files
neutrino/data/y-web/Y_Ext_Update.js
Thilo Graf 4518361d3d Revert "yWeb: rework for basic functionality"
Your reaction to this commit were remarkable. You demanded with an
imperious kind to revert this commit. You spoke about any rules only,
and I didn't hear evidencing explanations from you.
Admittedly, my commit wasn't very pretty and not the best style because
everything was squashed in a single commit with some customizations,
but which is ultimately just a formality... that's about it, and was quite
compliant with license conditions. In additional, your name was noted on
the commit. I'm just reminding you, until a few years ago, you didn't care
about licenses. The general copyright mainly lies with yjogol and a lot of
changes of the origin yweb code has been coming in by several committers
since yweb exists. I won't judge, whether any unique selling points play a
role, but such restrictions are exactly what the license should prevent.
Especially as, many creeped in brandings in some code parts (not only yweb)
do suggest that. Besides neutralizing such things, mainly it was the
purpose to get more compatibility, even though some functionalities
were removed or switched off.

Related to yweb I have decided to take back this commit for the sake of
peace, and I hope you are happy with it. However, I still reserve to
continue using and adopting yweb.
2023-01-05 16:05:18 +01:00

244 lines
8.8 KiB
JavaScript

function do_submit()
{
show_waitbox(true);
document.f.submit();
}
/*sLog*/
var sLog_body;
var sLog_line_number;
function sLog_init(){
sLog_line_number = 0;
sLog_body=$("slog_list");
}
function sLog_clear(){
sLog_body.update();
sLog_line_number = 0;
}
function sLog_addRow(_body, state, action_text, state_text){
sLog_line_number++;
var mycurrent_row = y_add_row_to_table(_body, ((sLog_line_number % 2) ==0)?"a":"b" );
var __img ="/images/info.png";
switch (state)
{
case "green": __img = "/images/accept.png"; break;
case "yellow": __img = "/images/alert.gif"; break;
case "ok": __img = "/images/info.png"; break;
case "red": __img = "/images/remove.png"; break;
}
y_add_html_cell_to_row(mycurrent_row, "icon", "<img src='"+__img+"'>");
y_add_html_cell_to_row(mycurrent_row, "action_text", action_text);
y_add_text_cell_to_row(mycurrent_row, "state_text", state_text);
}
/*update_list*/
var update_body;
/*<upd_site>,<type=n|m>,<link text>,<link helptext>,<url>,<unique tag>,<version>,<url of installer>*/
/*<type=n|m>,<link text>,<link helptext>,<url>,<unique tag>,<version>*/
/*<type=u>,<update site name>,<update site helptext>,<url of extention list>*/
function list_init(){
update_body=$("update_list");
}
function list_clear(){
update_body.update();
}
function update_list_addRow(_body, i, your_version, ext_item)
{
var mycurrent_row = y_add_row_to_table(_body, ((i % 2) ==0)?"a":"b" );
var check='<input type="checkbox" name="setupdate" id="ch'+i+'" ysize="'+ext_item.get('size')+'" onchange="changeitem(ch'+i+')">';
var info="&nbsp;";
var etype="";
switch (ext.upd_version){
case "1":
yweb_version = "%";
break;
case "2":
var yweb_version=ext_item.get('yweb_version');
if (!yweb.require(yweb_version))
check = "";
if (typeof(ext_item.get('info_url')) != 'undefined')
info="<a href=\""+ext_item.get('info_url')+"\" target=\"_blank\"><img src=\"/images/info.png\"/></a>";
break;
}
switch(ext_item.get('type')){
case "m": etype="<img src=\"/images/ext_mgr.png\" alt=\"m\" title=\"Extension: Management\"/>";break;
case "n": etype="<img src=\"/images/ext_normal.png\" alt=\"n\" title=\"Extension: Normal\"/>";break;
case "s": etype="<img src=\"/images/ext_script.png\" alt=\"s\" title=\"Script\"/>";break;
case "p": etype="<img src=\"/images/ext_plugin.png\" alt=\"p\" title=\"Plugin\"/>";break;
case "x": etype="<img src=\"/images/ext_menu.png\" alt=\"x\" title=\"Menu Extension\"/>";break;
case "o": etype="<img src=\"/images/ext_ex.png\" alt=\"o\" title=\"One Time Run\"/>";break;
}
var upd_version = ext_item.get('version');
if(version_str_less(your_version,upd_version))
upd_version="<b>"+upd_version+"</b>";
y_add_html_cell_to_row(mycurrent_row, "setupdate", check);
y_add_text_cell_to_row(mycurrent_row, "site", ext_item.get('site'));
y_add_html_cell_to_row(mycurrent_row, "type", etype);
y_add_text_cell_to_row(mycurrent_row, "menu", ext_item.get('menuitem'));
y_add_text_cell_to_row(mycurrent_row, "tag", ext_item.get('tag'));
y_add_text_cell_to_row(mycurrent_row, "your_version", your_version);
y_add_html_cell_to_row(mycurrent_row, "update_version", upd_version);
y_add_html_cell_to_row(mycurrent_row, "yweb_version", yweb_version);
y_add_html_cell_to_row(mycurrent_row, "size", ext_item.get('size'));
y_add_html_cell_to_row(mycurrent_row, "info", info);
}
function changeitem(e){
var avail=0;
try{
var a=$('avaiable').innerHTML;
avail=parseInt(a,10);
var siz=parseInt($(e).readAttribute('ysize'),10);
if($(e).checked)
avail-=siz;
else
avail+=siz;
$('avaiable').update(avail);
}
catch(e){};
}
function build_list(){
$('statusline').show();
window.setTimeout("build_list2()",300);
}
function build_list2()
{
show_free();
sLog_init();
list_init();
list_clear();
ext.read_items();
sLog_addRow(sLog_body, "green", "installed Extensions: "+ext.installed_extensions.length, "ok");
ext.on_get_updates=function(site,isError){
if(isError)
sLog_addRow(sLog_body, "red", "cannot get list from: "+site, "error");
else
sLog_addRow(sLog_body, "green", "get list from: "+site, "ok");
};
ext.get_updates();
/*build_list*/
i=0;
ext.upd_extensions.each(function(e){
var your_version="%";
var have=ext.installed_extensions.find(function(ex){
try { return ex.get('tag')==e.get('tag');}
catch(e){return false;}
});
if(have)
your_version = have.get('version');
update_list_addRow(update_body,++i,your_version,e);
});
$('statusline').hide();
}
function do_set_updates(){
show_waitbox(true);
window.setTimeout("do_set_updates2()",300);
}
function do_set_updates2(){
var _rows = update_body.getElementsByTagName("tr");
for(var i=0; i< _rows.length; i++){
var rowNode = _rows.item(i);
if(rowNode.firstChild.firstChild && rowNode.firstChild.firstChild.checked == true){
var res=ext.install(ext.upd_extensions[i]);
res=res.gsub("\n","<br/>");
if(res.search(/error/)!=-1)
sLog_addRow(sLog_body, "red", "update error: "+res, "error");
else
sLog_addRow(sLog_body, "green", "installed/updates: "+ext.upd_extensions[i].get('tag')+" "+ext.upd_extensions[i].get('version')+"<br>"+res, "ok");
}
}
sLog_addRow(sLog_body, "green", "updating local extension list. Starting ...", "ok");
var extfile=ext.build_extension_file();
document.f.extentions.value=extfile;
show_waitbox(false);
alert("Update finished. Menue reload.");
do_submit();
}
var avaiable=0;
function show_free(){
var res=stb_exec_tools("mtd_space");
var Ausdruck = /([^ ]*)[ ]*([^ ]*)[ ]*([^ ]*)[ ]*([^ ]*)[ ]*([^ ]*)[ ]*([^ ]*).*$/;
Ausdruck.exec(res);
var mtd = RegExp.$1;
var total = RegExp.$2;
var used = RegExp.$3;
avaiable = RegExp.$4;
var percentage = RegExp.$5;
var mtpt = RegExp.$6;
if (total != "") {
str = "Space in " + mtd + " (mounted on " + mtpt + ") Total: " + total + "kB; Used: " + used + "kB; Free: " + avaiable + "kB (" + percentage + ")";
$('avaiable').update(avaiable);
}
else
str = "Can not determine free space.";
$("free").update(str);
}
/*uninstall*/
function uninstall_list_addRow(_body, i, ext_item, has_uninstall)
{
var mycurrent_row = y_add_row_to_table(_body, ((i % 2) ==0)?"a":"b" );
// var check='<input type="checkbox" name="setupdate" id="ch'+i+'" ysize="'+ext_item.get('size')+'" onchange="changeitem(ch'+i+')">';
var etype="";
var info="&nbsp;";
if (typeof(ext_item.get('info_url')) != 'undefined')
info="<a href=\""+ext_item.get('info_url')+"\" target=\"_blank\"><img src=\"/images/info.png\"/></a>";
var uninst="<a href=\'javascript:do_uninstall(\""+ext_item.get('tag')+"\")\' title=\"uninstall\"><img src=\"/images/cross.png\"/></a>";
if(!has_uninstall) uninst="&nbsp;";
switch(ext_item.get('type')){
case "m": etype="<img src=\"/images/ext_mgr.png\" alt=\"m\" title=\"Extension: Management\"/>";break;
case "n": etype="<img src=\"/images/ext_normal.png\" alt=\"n\" title=\"Extension: Normal\"/>";break;
case "s": etype="<img src=\"/images/ext_script.png\" alt=\"s\" title=\"Script\"/>";break;
case "p": etype="<img src=\"/images/ext_plugin.png\" alt=\"p\" title=\"Plugin\"/>";break;
case "x": etype="<img src=\"/images/ext_menu.png\" alt=\"x\" title=\"Menu Extension\"/>";break;
case "o": etype="<img src=\"/images/ext_ex.png\" alt=\"o\" title=\"One Time Run\"/>";break;
}
y_add_html_cell_to_row(mycurrent_row, "type", etype);
y_add_text_cell_to_row(mycurrent_row, "menu", ext_item.get('menuitem'));
y_add_text_cell_to_row(mycurrent_row, "tag", ext_item.get('tag'));
y_add_text_cell_to_row(mycurrent_row, "version", ext_item.get('version'));
y_add_html_cell_to_row(mycurrent_row, "size", ext_item.get('size'));
y_add_html_cell_to_row(mycurrent_row, "uninstall", uninst);
y_add_html_cell_to_row(mycurrent_row, "info", info);
}
function do_uninstall(tag){
if (confirm("Delete " + tag)) {
show_waitbox(true);
window.setTimeout("do_uninstall2(\"" + tag + "\")", 300);
}
}
function do_uninstall2(tag){
var res=ext.uninstall(tag);
res=res.gsub("\n","<br/>");
if(res.search(/error/)!=-1)
sLog_addRow(sLog_body, "red", "uninstall error: "+res, "error");
else
sLog_addRow(sLog_body, "green", "uninstalled: "+tag+"<br/>"+res, "ok");
sLog_addRow(sLog_body, "green", "updating local extension list. Starting ...", "ok");
var extfile=ext.build_extension_file();
document.f.extentions.value=extfile;
show_waitbox(false);
alert("Update finished. Menue reload.");
do_submit();
}
function uninstall_build_list(){
$('statusline').show();
window.setTimeout("uninstall_build_list2()",300);
}
function uninstall_build_list2(){
show_free();
sLog_init();
list_init();
list_clear();
sLog_addRow(sLog_body, "green", "installed Extensions: "+ext.installed_extensions.length, "ok");
/*build_list*/
i=0;
ext.installed_extensions.sortBy(function(e){return e.get('tag');}).each(function(e){
res=loadSyncURL("/y/cgi?execute=if-file-exists:%(CONFIGDIR)/ext/"+e.get('tag')+"_uninstall.inc~1~0");
uninstall_list_addRow(update_body,++i,e,res=="1");
});
$('statusline').hide();
}