1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-27 00:06:14 +01:00
openstamanager/editor.php
Thomas Zilio 78484220fe Bugfix generale
Risoluzione delle problematiche incontate con l'installazione del software su Aruba con versione di MySQL non aggiornata.
Aggiunto sistema automatico di completamento dei campi per l'API, con disattivazione del severzio automatica per MySQL < 5.6.5.
2017-08-31 10:09:06 +02:00

221 lines
6.7 KiB
PHP
Executable File

<?php
include_once __DIR__.'/core.php';
if (empty($id_record) && !empty($id_module)) {
redirect(ROOTDIR.'/controller.php?id_module='.$id_module);
} elseif (empty($id_record) && empty($id_module)) {
redirect(ROOTDIR.'/index.php');
}
if (file_exists($docroot.'/include/custom/top.php')) {
include $docroot.'/include/custom/top.php';
} else {
include $docroot.'/include/top.php';
}
// Lettura parametri iniziali del modulo
$module = Modules::getModule($id_module);
if (empty($module) || empty($module['enabled'])) {
die(_('Accesso negato'));
}
$module_dir = $module['directory'];
// Inclusione elementi fondamentali del modulo
include $docroot.'/actions.php';
$advanced_sessions = get_var('Attiva notifica di presenza utenti sul record');
if ($advanced_sessions) {
$dbo->query('DELETE FROM zz_semaphores WHERE id_utente='.prepare($_SESSION['idutente']).' AND posizione='.prepare($id_module.', '.$id_record));
$dbo->query('INSERT INTO zz_semaphores (id_utente, posizione, updated) VALUES ('.prepare($_SESSION['idutente']).', '.prepare($id_module.', '.$id_record).', NOW())');
echo '
<div class="box box-warning box-solid text-center info-active hide">
<div class="box-header with-border">
<h3 class="box-title"><i class="fa fa-warning"></i> '._('Attenzione!').'</h3>
</div>
<div class="box-body">
<p>'._('I seguenti utenti stanno visualizzando questa pagina').':</p>
<ul class="list">
</ul>
<p>'._('Prestare attenzione prima di effettuare modifiche, poichè queste potrebbero essere perse a causa di multipli salvataggi contemporanei').'.</p>
</div>
</div>';
}
if (empty($records)) {
echo '
<p>'._('Record non trovato').'.</p>';
} else {
/*
* Lettura eventuali plugins modulo da inserire come tab
*/
echo '
<div class="nav-tabs-custom">
<ul class="nav nav-tabs pull-right" role="tablist">
<li class="pull-left active header">';
// Verifico se ho impostato un nome modulo personalizzato
$name = $module['title'];
echo '
<a data-toggle="tab" href="#tab_0">
<i class="'.$module['icon'].'"></i> '.$name;
// Pulsante "Aggiungi" solo se il modulo è di tipo "table" e se esiste il template per la popup
if (file_exists($docroot.'/modules/'.$module_dir.'/add.php') && $module['permessi'] == 'rw') {
echo '
<button type="button" class="btn btn-primary" data-toggle="modal" data-title="'._('Aggiungi').'..." data-target="#bs-popup" data-href="add.php?id_module='.$id_module.'"><i class="fa fa-plus"></i></button>';
}
echo '
</a>
<a class="back-btn" href="controller.php?id_module='.$id_module.'"><i class="fa fa-chevron-left"></i> '._("Torna all'elenco").'</a>
</li>';
$plugins = $dbo->fetchArray('SELECT id, title FROM zz_plugins WHERE idmodule_to='.prepare($id_module)." AND position='tab' AND enabled = 1");
foreach ($plugins as $plugin) {
echo '
<li>
<a data-toggle="tab" href="#tab_'.$plugin['id'].'" id="link-tab_'.$plugin['id'].'">'.$plugin['title'].'</a>
</li>';
}
echo '
</ul>
<div class="tab-content">
<div id="tab_0" class="tab-pane active">';
// Lettura template modulo (verifico se ci sono template personalizzati, altrimenti uso quello base)
if (file_exists($docroot.'/modules/'.$module_dir.'/custom/edit.php')) {
include $docroot.'/modules/'.$module_dir.'/custom/edit.php';
} elseif (file_exists($docroot.'/modules/'.$module_dir.'/custom/edit.html')) {
include $docroot.'/modules/'.$module_dir.'/custom/edit.html';
} elseif (file_exists($docroot.'/modules/'.$module_dir.'/edit.php')) {
include $docroot.'/modules/'.$module_dir.'/edit.php';
} elseif (file_exists($docroot.'/modules/'.$module_dir.'/edit.html')) {
include $docroot.'/modules/'.$module_dir.'/edit.html';
}
echo '
</div>';
foreach ($plugins as $plugin) {
echo '
<div id="tab_'.$plugin['id'].'" class="tab-pane">';
$id_plugin = $plugin['id'];
include $docroot.'/include/manager.php';
echo '
</div>';
}
echo '
</div>
</div>';
}
$backto = filter('backto');
// Scelta del redirect dopo un submit
if (!empty($backto)) {
$hash = filter('hash');
if ($backto == 'record-edit') {
redirect(ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.$hash);
exit();
} elseif ($backto == 'record-list') {
redirect(ROOTDIR.'/controller.php?id_module='.$id_module.$hash);
exit();
}
}
echo '
<hr>
<a href="controller.php?id_module='.$id_module.'"><i class="fa fa-chevron-left"></i> '._('Indietro').'</a>';
/*
* Widget laterali
*/
echo '
</div>
<div class="col-xs-12 col-md-12">';
echo Widgets::addModuleWidgets($id_module, 'editor_right');
echo '
</div>';
?>
<script>
<?php
// Se l'utente ha i permessi in sola lettura per il modulo, converto tutti i campi di testo in span
if ($module['permessi'] == 'r') {
?>
$(document).ready( function(){
$('input, textarea, select', 'section.content').attr('readonly', 'true');
$('select, input[type="checkbox"]').prop('disabled', true);
$('a.btn, button, input[type=button], input[type=submit]', 'section.content').hide();
$('a.btn-info, button.btn-info, input[type=button].btn-info', 'section.content').show();
});
<?php
} ?>
var content_was_modified = false;
//controllo se digito qualche valore o cambio qualche select
$("input, textarea, select").bind("change paste keyup", function(event) {
if( event.keyCode >= 32 ){
content_was_modified = true;
}
});
//tolgo il controllo se sto salvando
$(".btn-success, button[type=submit]").bind("click", function() {
content_was_modified = false;
});
// questo controllo blocca il modulo vendita al banco, dopo la lettura con barcode, appare il messaggio di conferma
window.onbeforeunload = function(){
if(content_was_modified) {
return 'Uscire senza salvare?';
}
};
<?php
if ($advanced_sessions) {
?>
function getActiveUsers(){
$.getJSON('<?php echo ROOTDIR; ?>/call.php', {
id_module: <?php echo $id_module; ?>,
id_record: <?php echo $id_record; ?>
},
function(data) {
if (data.length != 0) {
$(".info-active").removeClass("hide");
$(".info-active .list").html("");
$.each( data, function( key, val ) {
$(".info-active .list").append("<li>"+val.username+"</li>");
});
}
else $(".info-active").addClass("hide");
});
}
getActiveUsers();
setInterval(getActiveUsers, <?php echo get_var('Timeout notifica di presenza (minuti)') * 1000; ?>);
<?php
}
?>
</script>
<?php
if (file_exists($docroot.'/include/custom/bottom.php')) {
include $docroot.'/include/custom/bottom.php';
} else {
include $docroot.'/include/bottom.php';
}