mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-01-27 14:09:41 +01:00
459f75cab8
Aggiunto supporto al logo stampe caricabile come allegato. Miglioramento della gestione dei dati di input. Completata gestione AJAX degli allegati.
304 lines
10 KiB
PHP
Executable File
304 lines
10 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');
|
|
}
|
|
|
|
include_once App::filepath('include|custom|', 'top.php');
|
|
|
|
// Lettura parametri iniziali del modulo
|
|
$module = Modules::get($id_module);
|
|
|
|
if (empty($module) || empty($module['enabled'])) {
|
|
die(tr('Accesso negato'));
|
|
}
|
|
|
|
$module_dir = $module['directory'];
|
|
|
|
// Inclusione elementi fondamentali del modulo
|
|
include $docroot.'/actions.php';
|
|
|
|
// Widget in alto
|
|
echo '{( "name": "widgets", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'", "position": "top", "place": "editor" )}';
|
|
|
|
$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['id_utente']).' AND posizione='.prepare($id_module.', '.$id_record));
|
|
$dbo->query('INSERT INTO zz_semaphores (id_utente, posizione, updated) VALUES ('.prepare($_SESSION['id_utente']).', '.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> '.tr('Attenzione!').'</h3>
|
|
</div>
|
|
<div class="box-body">
|
|
<p>'.tr('I seguenti utenti stanno visualizzando questa pagina').':</p>
|
|
<ul class="list">
|
|
</ul>
|
|
<p>'.tr('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>'.tr('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" id="tabs" 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="'.tr('Aggiungi').'..." data-target="#bs-popup" data-href="add.php?id_module='.$id_module.'"><i class="fa fa-plus"></i></button>';
|
|
}
|
|
echo '
|
|
</a>
|
|
</li>';
|
|
|
|
$plugins = $dbo->fetchArray('SELECT id, title FROM zz_plugins WHERE idmodule_to='.prepare($id_module)." AND position='tab' AND enabled = 1 ORDER BY zz_plugins.order DESC");
|
|
|
|
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">';
|
|
|
|
// Pulsanti di default
|
|
echo '
|
|
<div id="pulsanti">
|
|
<a class="btn btn-warning" href="'.ROOTDIR.'/controller.php?id_module='.$id_module.'">
|
|
<i class="fa fa-chevron-left"></i> '.tr("Torna all'elenco").'
|
|
</a>
|
|
|
|
<div class="pull-right">
|
|
{( "name": "button", "type": "print", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'" )}
|
|
|
|
{( "name": "button", "type": "email", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'" )}
|
|
|
|
<a class="btn btn-success" id="save">
|
|
<i class="fa fa-check"></i> '.tr('Salva').'
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
$(document).ready(function(){
|
|
var form = $("#module-edit").find("form").first();
|
|
|
|
// Aggiunta del submit
|
|
form.prepend(\'<button type="submit" id="submit" class="hide"></button>\');
|
|
|
|
$("#save").click(function(){
|
|
$("#submit").trigger("click");
|
|
});';
|
|
|
|
// Pulsanti dinamici
|
|
if (!isMobile()) {
|
|
echo '
|
|
$("#pulsanti").affix({
|
|
offset: {
|
|
top: 200
|
|
}
|
|
});
|
|
|
|
if ($("#pulsanti").hasClass("affix")) {
|
|
$("#pulsanti").css("width", $("#tab_0").css("width"));
|
|
}
|
|
|
|
$("#pulsanti").on("affix.bs.affix", function(){
|
|
$("#pulsanti").css("width", $("#tab_0").css("width"));
|
|
});
|
|
|
|
$("#pulsanti").on("affix-top.bs.affix", function(){
|
|
$("#pulsanti").css("width", "100%");
|
|
});';
|
|
}
|
|
|
|
echo '
|
|
});
|
|
</script>
|
|
|
|
<div class="clearfix"></div>
|
|
<br>';
|
|
|
|
// Pulsanti personalizzati
|
|
ob_start();
|
|
include Modules::filepath($id_module, 'buttons.php');
|
|
$buttons = ob_get_clean();
|
|
|
|
if (!empty($buttons)) {
|
|
echo '
|
|
<div class="pull-right" id="pulsanti-modulo">
|
|
'.$buttons.'
|
|
</div>
|
|
|
|
<div class="clearfix"></div>
|
|
<br>';
|
|
}
|
|
|
|
// Contenuti del modulo
|
|
echo '
|
|
|
|
<div id="module-edit">';
|
|
|
|
// 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>
|
|
</div>';
|
|
|
|
// Campi personalizzati
|
|
echo '
|
|
|
|
<div class="hide" id="custom_fields_top-edit">
|
|
{( "name": "custom_fields", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'", "position": "top" )}
|
|
</div>
|
|
|
|
<div class="hide" id="custom_fields_bottom-edit">
|
|
{( "name": "custom_fields", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'" )}
|
|
</div>
|
|
|
|
<script>
|
|
$(document).ready(function(){
|
|
var form = $("#custom_fields_top-edit").parent().find("form").first();
|
|
|
|
// Campi a inizio form
|
|
form.prepend($("#custom_fields_top-edit").html());
|
|
|
|
// Campi a fine form
|
|
var last = form.find(".panel").last();
|
|
if (!last.length) {
|
|
last = form.find(".row").eq(-2);
|
|
}
|
|
|
|
last.after($("#custom_fields_bottom-edit").html());
|
|
});
|
|
</script>';
|
|
|
|
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>';
|
|
}
|
|
|
|
redirectOperation($id_module, $id_record);
|
|
|
|
// Widget in basso
|
|
echo '{( "name": "widgets", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'", "position": "right", "place": "editor" )}';
|
|
|
|
echo '
|
|
<hr>
|
|
<a href="'.ROOTDIR.'/controller.php?id_module='.$id_module.'">
|
|
<i class="fa fa-chevron-left"></i> '.tr('Indietro').'
|
|
</a>';
|
|
|
|
echo '
|
|
<script>';
|
|
|
|
// 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
|
|
|
|
include_once App::filepath('include|custom|', 'bottom.php');
|