Files
webgui/plugins/dynamix.plugin.manager/Plugins.page
2021-05-22 09:20:49 +02:00

110 lines
4.7 KiB
Plaintext

Menu="Tasks:50"
Type="xmenu"
Title="Installed Plugins"
Tag="icon-plugins"
Tabs="true"
Code="e944"
---
<?PHP
/* Copyright 2005-2021, Lime Technology
* Copyright 2012-2021, Bergware International.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*/
?>
<?
// Remove stale /tmp/plugin/*.plg entries
foreach (glob("/tmp/plugins/*.{plg,txt}", GLOB_NOSORT+GLOB_BRACE) as $entry) if (!file_exists("/var/log/plugins/".basename($entry))) @unlink($entry);
$check = $notify['version'] ? 0 : 1;
?>
<link type="text/css" rel="stylesheet" href="<?autov('/webGui/styles/jquery.filetree.css')?>">
<style>
#plugin_tree{width:33%;height:200px;overflow-y:scroll}
table tbody td{line-height:normal}
</style>
<script src="<?autov('/webGui/javascript/jquery.filetree.js')?>"></script>
<script>
<?if ($display['resize']):?>
function resize(bind) {
var width = [];
var h = $('#plugin_list').height();
var s = Math.max(window.innerHeight-340,330);
if (h>s || bind) {
$('#plugin_list').height(s);
$('#plugin_table tbody tr:first-child td').each(function(){width.push($(this).width());});
$('#plugin_table thead tr th').each(function(i){$(this).width(width[i]);});
if (!bind) $('#plugin_table thead,#plugin_table tbody').addClass('fixed');
}
}
<?endif;?>
function updateInfo(data) {
var updates = data.split('\n');
for (var n=0,update; update=updates[n]; n++) {
var fields = update.split('\r');
for (var i=0,field; field=fields[i]; i++) {
var row = field.split('::');
$('#'+row[0]).attr('data',row[1]).html(row[2]);
}
}
}
function disableButton() {
$('#plugin_list').find('input[type=button]').prop('disabled',true);
}
function initlist() {
timers.plugins = setTimeout(function(){$('div.spinner.fixed').show('slow');},500);
$.get('/plugins/dynamix.plugin.manager/include/ShowPlugins.php',{init:true,check:<?=$check?>},function(data) {
clearTimeout(timers.plugins);
$('#plugin_list').html(data);
<?if ($display['resize']):?>
resize();
$(window).bind('resize',function(){resize(true);});
<?endif;?>
if (data.search("colspan='6'")==-1) {
$('#plugin_table').tablesorter({sortList:[[4,0],[1,0]],sortAppend:[[1,0]],headers:{0:{sorter:false},5:{sorter:false}},textAttribute:'data'});
$('.desc_readmore').readmore({maxHeight:80,moreLink:"<a href='#'><i class='fa fa-chevron-down'></i></a>",lessLink:"<a href='#'><i class='fa fa-chevron-up'></i></a>"});
$('div.spinner.fixed').hide('slow');
loadlist();
}
});
}
function loadlist(id,check) {
if (id) timers.plugins = setTimeout(function(){$('div.spinner.fixed').show('slow');},500);
$.get('/plugins/dynamix.plugin.manager/include/ShowPlugins.php',{audit:id,check:check||<?=$check?>},function(d) {
var data = d.split(/\0/);
var list = $('#plugin_list');
if (id) {
clearTimeout(timers.plugins);
$('div.spinner.fixed').hide('slow');
var cmd = id.split(':');
var tr = 'tr#'+cmd[0].replace(/[\. _]/g,'');
switch (cmd[1]) {
case 'update' :
case 'return' : updateInfo(data[0]); break;
case 'remove' : list.find(tr).remove(); break;
case 'install': if (!list.find(tr).length) list.append(data[0]); loadlist(null,1); break;
}
} else {
updateInfo(data[0]);
}
$('#plugin_table').trigger('update');
if (data[1]>1) $('#updateall').show(); else $('#updateall').hide();
$('#checkall').find('input').prop('disabled',false);
});
}
$(function() {
initlist();
$('#plugin_tree').fileTree({root:'/boot/',filter:'plg'}, function(file) {$('#plugin_file').val(file);});
$('.tabs').append("<span id='updateall' class='status vhshift' style='display:none;margin-left:12px'><input type='button' value='<?=_('Update All Plugins')?>' onclick='disableButton();openBox(\"/plugins/dynamix.plugin.manager/scripts/plugin&arg1=updateall\",\"<?=_('Update All Plugins')?>\",600,600,true,\"loadlist\",\":return\")'></span>");
$('.tabs').append("<span id='checkall' class='status vhshift'><input type='button' value='<?=_('Check For Updates')?>' onclick='openBox(\"/plugins/dynamix.plugin.manager/scripts/checkall\",\"<?=_('Plugin Update Check')?>\",600,600,true,\"loadlist\",\":return\")' disabled></span>");
});
</script>
<table class='tablesorter plugins shift' id='plugin_table'>
<thead><tr><th></th><th>_(Plugin)_</th><th>_(Author)_</th><th>_(Version)_</th><th>_(Status)_</th><th>_(Uninstall)_</th></tr></thead>
<tbody id="plugin_list"><tr><td colspan="6"></td><tr></tbody>
</table>