1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-25 23:33:02 +01:00
openstamanager/modules/aggiornamenti/edit.php
Thomas Zilio 9c5625c3bb Completo utilizzo delle funzionalità di Symfony Translator
Miglioramento nella gestione delle sostituzioni inline per le traduzioni, con aggiunta di alcune opzioni integrate per modificare l'output (tutto maiuscolo o tutto minuscolo).
Aggiunta della libreria danielstjules/stringy per migliorare la gestione delle stringhe con supporto completo alla codifica UTF-8.
2017-09-10 14:35:41 +02:00

295 lines
14 KiB
PHP

<?php
include_once __DIR__.'/../../core.php';
if (get_var('Attiva aggiornamenti')) {
$alerts = [];
if (!extension_loaded('zip')) {
$alerts[tr('Estensione ZIP')] = tr('da abilitare');
}
$upload_max_filesize = ini_get('upload_max_filesize');
$upload_max_filesize = str_replace(['k', 'M'], ['000', '000000'], $upload_max_filesize);
// Dimensione minima: 16MB
if ($upload_max_filesize < 16000000) {
$alerts['upload_max_filesize'] = '16MB';
}
$post_max_size = ini_get('post_max_size');
$post_max_size = str_replace(['k', 'M'], ['000', '000000'], $post_max_size);
// Dimensione minima: 16MB
if ($post_max_size < 16000000) {
$alerts['post_max_size'] = '16MB';
}
if (!empty($alerts)) {
echo '
<div class="alert alert-warning">
<p>'.tr('Devi modificare il seguenti parametri del file di configurazione PHP (_FILE_) per poter caricare gli aggiornamenti', [
'_FILE_' => '<b>php.ini</b>',
]).':<ul>';
foreach ($alerts as $key => $value) {
echo '
<li><b>'.$key.'</b> = '.$value.'</li>';
}
echo '
</ul></p>
</div>';
}
echo '
<div class="row">';
// Aggiornamento
echo '
<div class="col-xs-12 col-md-6">
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Carica un aggiornamento').'</h3>
</div>
<div class="box-body">
<form action="'.$rootdir.'/controller.php?id_module='.$id_module.'" method="post" enctype="multipart/form-data" class="form-inline" id="update">
<input type="hidden" name="op" value="upload">
<input type="hidden" name="type" value="update">
<label><input type="file" name="blob"></label>
<button type="button" class="btn btn-primary" onclick="if( confirm(\''.tr('Avviare la procedura?').'\') ){ $(\'#update\').submit(); }">
<i class="fa fa-upload"></i> '.tr('Carica').'...
</button>
</form>
</div>
</div>
</div>';
// Nuovo modulo
echo '
<div class="col-xs-12 col-md-6">
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title">'.tr('Carica un nuovo modulo').'</h3>
</div>
<div class="box-body">
<form action="'.$rootdir.'/controller.php?id_module='.$id_module.'" method="post" enctype="multipart/form-data" class="form-inline" id="module">
<input type="hidden" name="op" value="upload">
<input type="hidden" name="type" value="new">
<label><input type="file" name="blob"></label>
<button type="button" class="btn btn-primary" onclick="if( confirm(\''.tr('Avviare la procedura?').'\') ){ $(\'#module\').submit(); }">
<i class="fa fa-upload"></i> '.tr('Carica').'...
</button>
</form>
</div>
</div>
</div>';
echo '
</div>';
}
// Elenco moduli installati
echo '
<div class="row">
<div class="col-md-12 col-lg-6">
<h3>'.tr('Moduli installati').'</h3>
<table class="table table-hover table-bordered table-condensed">
<tr>
<th>'.tr('Nome').'</th>
<th width="50">'.tr('Versione').'</th>
<th width="30">'.tr('Stato').'</th>
<th width="30">'.tr('Compatibilità').'</th>
<th width="20"></th>
</tr>';
$modules = $dbo->fetchArray('SELECT * FROM zz_modules WHERE parent IS NULL ORDER BY `order` ASC');
$osm_version = Update::getVersion();
foreach ($modules as $module) {
// STATO
if (!empty($module['enabled'])) {
$text = tr('Abilitato');
$text .= ($module['id'] != $id_module) ? '. '.tr('Clicca per disabilitarlo').'...' : '';
$stato = '<i class="fa fa-cog fa-spin text-success" data-toggle="tooltip" title="'.$text.'"></i>';
} else {
$stato = '<i class="fa fa-cog text-warning" data-toggle="tooltip" title="'.tr('Non abilitato').'"></i>';
$class = 'warning';
}
// Possibilità di disabilitare o abilitare i moduli tranne quello degli aggiornamenti
if ($module['id'] != $id_module) {
if ($module['enabled']) {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Disabilitare questo modulo?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'disable', id: '".$module['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\">".$stato."</a>\n";
} else {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Abilitare questo modulo?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'enable', id: '".$module['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$stato."</a>\n";
}
}
// COMPATIBILITA'
$compatibilities = explode(',', $module['compatibility']);
// Controllo per ogni versione se la regexp combacia per dire che è compatibile o meno
$comp = false;
foreach ($compatibilities as $compatibility) {
$comp = (preg_match('/'.$compatibility.'/', $osm_version)) ? true : $comp;
}
if ($comp) {
$compatible = '<i class="fa fa-check-circle text-success" data-toggle="tooltip" title="'.tr('Compatibile').'"></i>';
$class = 'success';
} else {
$compatible = '<i class="fa fa-warning text-danger" data-toggle="tooltip" title="'.tr('Non compabitile!').tr('Questo modulo è compatibile solo con le versioni').': '.$module['compatibility'].'"></i>';
$class = 'danger';
}
echo '
<tr class="'.$class.'">
<td>'.$module['name'].'</td>
<td align="right">'.$module['version'].'</td>
<td align="center">'.$stato.'</td>
<td align="center">'.$compatible.'</td>';
echo '
<td>';
// Possibilità di disinstallare solo se il modulo non è tra quelli predefiniti
if (empty($module['default'])) {
echo "
<a href=\"javascript:;\" data-toggle='tooltip' title=\"".tr('Disinstalla')."...\" onclick=\"if( confirm('".tr('Vuoi disinstallare questo modulo?').' '.tr('Tutti i dati salvati andranno persi!')."') ){ if( confirm('".tr('Sei veramente sicuro?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'uninstall', id: '".$module['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); } }\"><i class='fa fa-trash'></i></a>";
}
echo '
</td>
</tr>';
// Prima di cambiare modulo verifico se ci sono sottomoduli
$submodules = $dbo->fetchArray('SELECT * FROM zz_modules WHERE parent='.prepare($module['id']).' ORDER BY `order` ASC');
foreach ($submodules as $sub) {
// STATO
if (!empty($sub['enabled'])) {
$text = tr('Abilitato');
$text .= ($sub['id'] != $id_module) ? '. '.tr('Clicca per disabilitarlo').'...' : '';
$stato = '<i class="fa fa-cog fa-spin text-success" data-toggle="tooltip" title="'.$text.'"></i>';
} else {
$stato = '<i class="fa fa-cog text-warning" data-toggle="tooltip" title="'.tr('Non abilitato').'"></i>';
$class = 'warning';
}
// Possibilità di disabilitare o abilitare i moduli tranne quello degli aggiornamenti
if ($sub['id'] != $id_module) {
if ($sub['enabled']) {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Disabilitare questo modulo?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'disable', id: '".$sub['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\">".$stato."</a>\n";
} else {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Abilitare questo modulo?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'enable', id: '".$sub['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$stato."</a>\n";
}
}
// COMPATIBILITA'
$compatibilities = explode(',', $sub['compatibility']);
// Controllo per ogni versione se la regexp combacia per dire che è compatibile o meno
$comp = false;
foreach ($compatibilities as $compatibility) {
$comp = (preg_match('/'.$compatibility.'/', $osm_version)) ? true : $comp;
}
if ($comp) {
$compatible = '<i class="fa fa-check-circle text-success" data-toggle="tooltip" title="'.tr('Compatibile').'"></i>';
$class = 'success';
} else {
$compatible = '<i class="fa fa-warning text-danger" data-toggle="tooltip" title="'.tr('Non compabitile!').tr('Questo modulo è compatibile solo con le versioni').': '.$sub['compatibility'].'"></i>';
$class = 'danger';
}
echo '
<tr class="'.$class.'">
<td><small>&nbsp;&nbsp;- '.$sub['name'].'</small></td>
<td align="right">'.$sub['version'].'</td>
<td align="center">'.$stato.'</td>
<td align="center">'.$compatible.'</td>';
echo '
<td>';
// Possibilità di disinstallare solo se il modulo non è tra quelli predefiniti
if (empty($sub['default'])) {
echo "
<a href=\"javascript:;\" data-toggle='tooltip' title=\"".tr('Disinstalla')."...\" onclick=\"if( confirm('".tr('Vuoi disinstallare questo modulo?').' '.tr('Tutti i dati salvati andranno persi!')."') ){ if( confirm('".tr('Sei veramente sicuro?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'uninstall', id: '".$sub['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); } }\"><i class='fa fa-trash'></i></a>";
}
echo '
</td>
</tr>';
}
}
echo '
</table>
</div>';
// Widgets
echo '
<div class="col-md-12 col-lg-6">
<h3>'.tr('Widgets').'</h3>
<table class="table table-hover table-bordered table-condensed">
<tr>
<th>'.tr('Nome').'</th>
<th width="200">'.tr('Posizione').'</th>
<th width="30">'.tr('Stato').'</th>
<th width="30">'.tr('Posizione').'</th>
</tr>';
$widgets = $dbo->fetchArray('SELECT zz_widgets.id, zz_widgets.name AS widget_name, zz_modules.name AS module_name, zz_widgets.enabled AS enabled, location FROM zz_widgets INNER JOIN zz_modules ON zz_widgets.id_module=zz_modules.id ORDER BY `id_module` ASC, `zz_widgets`.`order` ASC');
$previous = '';
foreach ($widgets as $widget) {
// Nome modulo come titolo sezione
if ($widget['module_name'] != $previous) {
echo '
<tr>
<th colspan="4">'.$widget['module_name'].'</th>
</tr>';
}
// STATO
if ($widget['enabled']) {
$stato = '<i class="fa fa-cog fa-spin text-success" data-toggle="tooltip" title="'.tr('Abilitato').'. '.tr('Clicca per disabilitarlo').'..."></i>';
$class = 'success';
} else {
$stato = '<i class="fa fa-cog text-warning" data-toggle="tooltip" title="'.tr('Non abilitato').'"></i>';
$class = 'warning';
}
// Possibilità di disabilitare o abilitare i moduli tranne quello degli aggiornamenti
if ($widget['enabled']) {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Disabilitare questo widget?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'disable_widget', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\">".$stato."</a>\n";
} else {
$stato = "<a href='javascript:;' onclick=\"if( confirm('".tr('Abilitare questo widget?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'enable_widget', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$stato."</a>\n";
}
// POSIZIONE
if ($widget['location'] == 'controller_top') {
$location = tr('Schermata modulo in alto');
} elseif ($widget['location'] == 'controller_right') {
$location = tr('Schermata modulo a destra');
}
if ($widget['location'] == 'controller_right') {
$posizione = "<i class='fa fa-arrow-up text-warning' data-toggle='tooltip' title=\"".tr('Clicca per cambiare la posizione...')."\"></i>&nbsp;<i class='fa fa-arrow-right text-success' data-toggle='tooltip' title=\"\"></i>";
$posizione = "<a href='javascript:;' onclick=\"if( confirm('".tr('Cambiare la posizione di questo widget?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'change_position_widget_top', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$posizione."</a>\n";
} elseif ($widget['location'] == 'controller_top') {
$posizione = "<i class='fa fa-arrow-up text-success' data-toggle='tooltip' title=\"\"></i>&nbsp;<i class='fa fa-arrow-right text-warning' data-toggle='tooltip' title=\"".tr('Clicca per cambiare la posizione...').'"></i></i>';
$posizione = "<a href='javascript:;' onclick=\"if( confirm('".tr('Cambiare la posizione di questo widget?')."') ){ $.post( '".$rootdir.'/editor.php?id_module='.$id_module."', { op: 'change_position_widget_right', id: '".$widget['id']."' }, function(response){ location.href='".$rootdir.'/controller.php?id_module='.$id_module."'; }); }\"\">".$posizione."</a>\n";
}
echo '
<tr class="'.$class.'">
<td>'.$widget['widget_name'].'</td>
<td align="right"><small>'.$location.'</small></td>
<td align="center">'.$stato.'</td>
<td align="center">'.$posizione.'</td>
</tr>';
$previous = $widget['module_name'];
}
echo '
</table>
</div>
</div>';