Nuovo modulo gestione documentale

This commit is contained in:
Luca 2018-04-19 15:16:58 +02:00
parent f4c11ca495
commit 84ad3d16a2
9 changed files with 433 additions and 0 deletions

View File

@ -0,0 +1,80 @@
<?php
if( $docroot == '' ){
die( _("Accesso negato!") );
}
include_once("../../core.php");
include_once($docroot."/config.inc.php");
include_once($docroot."/lib/user_check.php");
include_once($docroot."/lib/permissions_check.php");
switch( post('op') ){
case "update":
if( $permessi[$module_name] == 'rw' ){
$id_record = $_POST['id_record'];
$descrizione = save($_POST['descrizione']);
//Verifico che il nome non sia duplicato
$q = "SELECT descrizione FROM zz_documenti_categorie WHERE descrizione=\"".$descrizione."\" AND deleted = 0 ";
$rs = $dbo->fetchArray($q);
if( sizeof($rs)>0 ){
array_push( $_SESSION['errors'], "Categoria '".$descrizione."' già esistente!" );
}
//Nome ok
else{
$query = "UPDATE zz_documenti_categorie SET descrizione=\"$descrizione\" WHERE id = $id_record";
$rs = $dbo->query( $query );
array_push( $_SESSION['infos'], "Informazioni salvate correttamente!" );
}
}
break;
case "add":
if( $permessi[$module_name] == 'rw' ){
$descrizione = save( $_POST['descrizione'] );
if( isset( $_POST['descrizione'] ) ){
//Verifico che il nome non sia duplicato
$q = "SELECT descrizione FROM zz_documenti_categorie WHERE descrizione=\"".$descrizione."\" AND deleted = 0 ";
$rs = $dbo->fetchArray($q);
if( sizeof($rs)>0 ){
array_push( $_SESSION['errors'], "Categoria '".$descrizione."' già esistente!" );
}else{
$query = "INSERT INTO zz_documenti_categorie(descrizione) VALUES (\"$descrizione\")";
$rs = $dbo->query($query);
$id_record = $dbo->last_inserted_id();
array_push( $_SESSION['infos'], "Nuova categoria documenti aggiunta!" );
}
}
}
break;
case "delete":
if( $permessi[$module_name] == 'rw' ){
//$query="DELETE FROM zz_documenti_categorie WHERE id = \"$id_record\"";
//$rs = $dbo->query($query);
$dbo->query( "UPDATE zz_documenti_categorie SET deleted=1 WHERE id = $id_record");
array_push( $_SESSION['infos'], "Categoria docimenti eliminata!" );
}
break;
}
?>

View File

@ -0,0 +1,20 @@
<form action="editor.php?id_module=$id_module$" method="post" id="add-form">
<input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit">
<div class="row">
<div class="col-md-12">
{[ "type": "text", "label": "Descrizione", "name": "descrizione", "required": 1, "class": "", "value": "", "extra": "" ]}
</div>
</div>
<!-- PULSANTI -->
<div class="row">
<div class="col-md-12 text-right">
<button type="submit" class="btn btn-primary"><i class="fa fa-plus"></i> Aggiungi</button>
</div>
</div>
</form>

View File

@ -0,0 +1,54 @@
<?php
//Se lo stato intervento è uno di quelli di default, non lo lascio modificare
if( $records[0]['doc_associati'] > 0 ){
$warning_text = "<div class='alert alert-warning'>Non puoi eliminare questo categoria documento! Ci sono ".$records[0]['doc_associati']." documenti associati!</div>";
}
else{
$attr = "";
$warning_text = "";
}
echo $warning_text;
?>
<form action="" method="post" id="add-form">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="update">
<input type="hidden" name="id_record" value="<?php echo $id_record ?>">
<?php
//Se il tipo di anagrafica è uno di quelli di default, non lo lascio modificare
if( !$records[0]['default'] ){
?>
<div class="clearfix"></div>
<?php
}
?>
<div class="row">
<div class="col-md-12">
{[ "type": "text", "label": "Descrizione", "name": "descrizione", "required": 1, "class": "", "value": "$descrizione$", "extra": "" ]}
</div>
</div>
</form>
<?php
//Se il tipo di anagrafica è uno di quelli di default, non lo lascio modificare
if( $records[0]['doc_associati'] == 0 ){
?>
<form action="" method="post" role="form" id="form-delete">
<input type="hidden" name="backto" value="record-list">
<input type="hidden" name="op" value="delete">
<button type="button" class="btn-link" onclick="if( confirm('Eliminare questo tipo di documento?') ){ $('#form-delete').submit(); }">
<span class="text-danger"><i class="fa fa-trash-o"></i> Elimina tipo di documento</span></button>
</form>
<?php
}
?>

View File

@ -0,0 +1,7 @@
<?php
if( $docroot == '' ){
die( _("Accesso negato!") );
}
$records = $dbo->fetchArray("SELECT *, (SELECT COUNT(id) FROM zz_documenti WHERE idcategoria = '".$id_record."' ) AS doc_associati FROM zz_documenti_categorie WHERE id=\"".$id_record."\"");
?>

View File

@ -0,0 +1,136 @@
<?php
if( $docroot == '' ){
die( _("Accesso negato!") );
}
switch( post('op') ){
case "add":
$nome = save( $_POST['nome'] );
$idcategoria = save( $_POST['idcategoria'] );
$data = saveDate( $_POST['data'] );
$dir_ok = true;
$nome_modulo = 'Gestione documentale';
$nome_allegato = save( $_POST['nome_allegato'] );
$filename = $_FILES['blob']['name'];
$src = $_FILES['blob']['tmp_name'];
$f = pathinfo( $filename );
//$q="SELECT idanagrafica FROM zz_utenti WHERE idutente=".$_SESSION['idutente'];
//$rs=$dbo->fetchArray($q);
//$idutente=$rs[0]['idanagrafica'];
$dst_file = sanitizeFilename( $f['filename'].".".$f['extension'] );
$dst_dir = $docroot."/files/gestione_documentale/";
$dst_dir = strtolower($dst_dir);
//Rinomino il file se non esiste già
$f = pathinfo($dst_file);
$i = 1;
while( file_exists($dst_dir."/".$dst_file) ){
$dst_file = sanitizeFilename($f['filename']."_".$i.".".$f['extension']);
$i++;
}
//Se la destinazione non esiste la creo
if( !is_dir($dst_dir) ){
if( !mkdir($dst_dir) ){
$dir_ok = false;
array_push( $_SESSION['errors'], "Non hai i permessi per creare directory!" );
header( "Location: ".$rootdir."/controller.php?id_module=".Modules::get('Gestione documentale')['id'] );
exit;
}
}
//Creazione file fisico
if( $dir_ok ){
if( move_uploaded_file( $src, $dst_dir."/".$dst_file) ){
$rs = $dbo->query("INSERT INTO `zz_documenti`( nome, idcategoria, data ) VALUES( '".$nome."','".$idcategoria."','".$data."' )");
$id_record = $dbo->last_inserted_id();
$rs = $dbo->query("INSERT INTO `zz_files`( nome, filename, id_module, id_record ) VALUES( \"".$nome_allegato."\", \"".$dst_file."\", \"".Modules::get('Gestione documentale')['id']."\", \"".$id_record."\" )");
array_push( $_SESSION['infos'], "File caricato correttamente!" );
//header( "Location: ".$rootdir."/controller.php?id_module=".$modules_info[$modulo_permessi]['id'] );
//exit;
}
else{
array_push( $_SESSION['errors'], "Errore durante il caricamento del file!" );
header( "Location: ".$rootdir."/controller.php?id_module=".Modules::get('Gestione documentale')['id'] );
exit;
}
}
break;
case "update":
if( $permessi[$module_name] == 'rw' ){
//leggo tutti i valori passati dal POST e li salvo in un array
$html_post = array();
foreach ($_POST as $key => $value) {
$html_post[$key] = save($value);
}
if( isset($_POST['id_record']) ){
$query = "UPDATE zz_documenti SET ".
"idcategoria=\"".$html_post['idcategoria']."\",".
"nome=\"".$html_post['nome']."\",".
"data=\"".saveDate($html_post['data'])."\"".
"WHERE id = '$id_record' ".$additional_where['Gestione documenti'];
$rs = $dbo->query( $query );
array_push( $_SESSION['infos'], "Informazioni per la scheda ''".$html_post['id']."'' salvate correttamente!");
}
}
break;
case "delete":
if( $permessi[$module_name] == 'rw' ){
$rs = $dbo->fetchArray("SELECT id FROM zz_files WHERE externalid = \"".$id_record."\" AND module = '".$module_name."' " );
$n = sizeof($rs);
//Per tutte le sessioni di lavoro trovate
for($i=0; $i<$n; $i++){
//Elimino fisicamente il file...
$rs2 = $dbo->fetchArray("SELECT filename FROM zz_files WHERE id = \"".$rs[$i]['id']."\" ");
unlink( $docroot."/files/".strtolower($module_name)."/".$rs2[0]['filename'] );
//array_push( $_SESSION['warnings'], $rs2[0]['filename']." eliminato!");
}
//...e da db
$dbo->query("DELETE FROM zz_files WHERE externalid = \"".$id_record."\" AND module = '".$module_name."' ");
$dbo->query("DELETE FROM zz_documenti WHERE id = \"".$id_record."\" ");
array_push( $_SESSION['infos'], "Scheda e relativi files eliminati!" );
}
break;
}
?>

View File

@ -0,0 +1,37 @@
<form id="upload_form" action="editor.php?id_module=$id_module$" method="post" enctype="multipart/form-data" onsubmit="if( $('input[name=nome_allegato]').val()=='' || $('input[name=nome_allegato]').val()=='Inserisci un nome...' ){ alert('Devi inserire un nome per il file!'); return false; } if( $('#blob').val()=='' ){ alert('Devi selezionare un file con il tasto Sfoglia...'); return false; }">
<input type="hidden" name="op" value="add">
<input type="hidden" name="backto" value="record-edit">
<div class='row'>
<div class="col-md-6">
{[ "type": "text", "label": "Nome", "name": "nome", "required": 1, "class": "", "value": "", "extra": "" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "Categoria", "name": "idcategoria", "required": 1, "class": "", "values": "query=SELECT id, descrizione FROM zz_documenti_categorie WHERE deleted = 0", "value": "", "extra": "" ]}
</div>
<div class="col-md-3">
{[ "type": "text", "label": "Data", "name": "data", "required": 1, "class": "datepicker text-center", "value": "", "extra": "" ]}
</div>
</div>
<div class='row'>
<div class='col-md-6'>
{[ "type": "text", "label": "Nome allegato", "name": "nome_allegato", "required": 1, "class": "", "value": "", "extra": " placeholder=\"Inserisci un nome...\" " ]}
</div>
<div class='col-md-3'>
<input type="file" class="inputtext" id="blob" name="blob"><br><br>
</div>
</div>
<div class='row'>
<div class='col-md-12'>
<button type='submit' class='btn btn-primary pull-right' id="upload_button"><i class='fa fa-upload'></i> Carica</button>
</div>
</div>
</form>

View File

@ -0,0 +1,65 @@
<?php
//$q='SELECT filename FROM zz_files WHERE id='.$id_record;
//$rs=$dbo->fetchArray($q);
//$filename=$rs[0]['filename'];
?>
<form action="" method="post" id="add-form">
<input type="hidden" name="op" value="update">
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="id_record" value="<?php echo $id_record ?>">
<!-- SCHEDA FILE -->
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title"> Scheda file</h3>
</div>
<div class="panel-body">
<div class="pull-right">
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> Salva modifiche</button>
</div>
<div class="clearfix"></div>
<div class="row">
<div class="col-md-6">
{[ "type": "text", "label": "Nome", "name": "nome", "required": 1, "class": "", "value": "$nome$", "extra": "" ]}
</div>
<div class="col-md-3">
{[ "type": "select", "label": "Categoria", "name": "idcategoria", "required": 1, "class": "", "values": "query=SELECT id, descrizione FROM zz_documenti_categorie WHERE deleted = 0", "value": "$idcategoria$", "extra": "" ]}
</div>
<div class="col-md-3">
{[ "type": "text", "label": "Data", "name": "data", "required": 1, "class": "datepicker text-center", "value": "<?php echo date('d/m/Y', strtotime($records[0]['data'])) ?>", "extra": "" ]}
</div>
</div>
</div>
</div>
</form>
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module; ?>", "id_record": "<?php echo $id_record; ?>" )}
<form action="" method="post" role="form" id="form-delete">
<input type="hidden" name="backto" value="record-list">
<input type="hidden" name="op" value="delete">
<button type="button" class="btn-link" onclick="if( confirm('Eliminare scheda e relativi allegati?') ){ $('#form-delete').submit(); }"><span class="text-danger"><i class="fa fa-trash-o"></i> Elimina scheda file e allegati</span></button>
</form>
<script>
$(document).ready( function(){
});
</script>

View File

@ -0,0 +1,7 @@
<?php
if( $docroot == '' ){
die( _("Accesso negato!") );
}
/* LEFT OUTER JOIN zz_files ON idfile = zz_files.id */
$records = $dbo->fetchArray("SELECT *, zz_documenti.`id`as id, zz_documenti.nome AS nome, zz_documenti.`data` AS `data` FROM zz_documenti WHERE zz_documenti.id = '".$id_record."' ");
?>

27
update/2_4_2.sql Normal file
View File

@ -0,0 +1,27 @@
-- Gestione documentale
CREATE TABLE IF NOT EXISTS `zz_documenti_categorie` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`descrizione` varchar(255) NOT NULL,
`deleted` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `zz_documenti` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`idcategoria` int(11) NOT NULL,
`nome` varchar(255) NOT NULL,
`data` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
INSERT INTO `zz_documenti_categorie` (`id`, `descrizione`, `deleted`) VALUES
(NULL, 'Documenti societ&agrave;', 0),
(NULL, 'Contratti assunzione personale', 0);
-- Innesto modulo gestione documentale
INSERT INTO `zz_modules` (`id`, `name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES (NULL, 'Gestione documentale', 'Gestione documentale', 'gestione_documentale', '{ "main_query": [ { "type": "table", "fields": "Categoria, Nome, Data", "query": "SELECT id,(SELECT descrizione FROM zz_documenti_categorie WHERE zz_documenti_categorie.id = idcategoria) AS Categoria, zz_documenti.nome AS Nome, DATE_FORMAT( zz_documenti.`data`, ''%d/%m/%Y'' ) AS `Data` FROM zz_documenti WHERE `data` >= ''|period_start|'' AND `data` <= ''|period_end|'' HAVING 1=1"} ]}', '', 'fa fa-file-text-o', '2.4', '2.4', '1', NULL, '1', '1');
-- Innesto modulo categorie documenti
INSERT INTO `zz_modules` (`id`, `name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES (NULL, 'Categorie documenti', 'Categorie documenti', 'categorie_documenti', '{ "main_query": [ { "type": "table", "fields": "Descrizione", "query": "SELECT zz_documenti_categorie.`descrizione`as Descrizione, zz_documenti_categorie.`id`as id FROM zz_documenti_categorie WHERE deleted = 0 HAVING 1=1"} ]}', '', 'fa fa-file-text-o', '2.4', '2.4', '1', (SELECT `id` FROM `zz_modules` m WHERE `name` = 'Gestione documentale'), '1', '1');