540 lines
23 KiB
PHP
540 lines
23 KiB
PHP
<?php include('../include/headscript.php'); ?>
|
|
<?php include("../class/company.php"); ?>
|
|
<?php
|
|
|
|
$idstandards = isset($_GET['id']) ? intval($_GET['id']) : 0;
|
|
|
|
$conn = new mysqli($servername, $username, $password, $database);
|
|
|
|
|
|
if ($idstandards <= 0) {
|
|
die("ID non valido.");
|
|
}
|
|
|
|
$data = [];
|
|
if ($idstandards > 0) {
|
|
$query = $conn->prepare("SELECT * FROM `standards` WHERE idstandards = ?");
|
|
$query->bind_param("i", $idstandards);
|
|
$query->execute();
|
|
$result = $query->get_result();
|
|
if ($result->num_rows > 0) {
|
|
$data = $result->fetch_assoc();
|
|
} else {
|
|
die("Record non trovato.");
|
|
}
|
|
$query->close();
|
|
}
|
|
|
|
// Controlla se ci sono dati da mostrare nel form
|
|
$titlestandards = $data['titlestandards'] ?? '';
|
|
$numberstandards = $data['numberstandards'] ?? '';
|
|
$yearstandards = $data['yearstandards'] ?? '';
|
|
$status = $data['status'] ?? '';
|
|
$activefrom = $data['activefrom'] ?? date('Y-m-d');
|
|
$activeto = $data['activeto'] ?? '';
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimal-ui">
|
|
<?php include('../include/seo.php'); ?>
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
|
|
<link rel="shortcut icon" href="../assets/images/favicon.ico">
|
|
|
|
<link href="../assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
|
|
<link href="../assets/css/icons.css" rel="stylesheet" type="text/css">
|
|
<link href="../assets/css/style.css" rel="stylesheet" type="text/css">
|
|
<link href="https://cdn.jsdelivr.net/npm/boxicons@2.0.7/css/boxicons.min.css" rel="stylesheet">
|
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@10/dist/sweetalert2.min.js"></script>
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@10/dist/sweetalert2.min.css">
|
|
<!-- Includi il CSS di Dropzone -->
|
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.2/min/dropzone.min.css" rel="stylesheet">
|
|
|
|
<!-- Includi il JavaScript di Dropzone -->
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.2/min/dropzone.min.js"></script>
|
|
|
|
<style>
|
|
.updated-field {
|
|
background-color: #c9e2c9 !important;
|
|
/* Colore verde chiaro */
|
|
transition: background-color 2s ease-out;
|
|
/* Transizione lenta per una migliore visibilità */
|
|
}
|
|
|
|
.form-check-input {
|
|
position: relative;
|
|
/* Posizionamento relativo per il contenitore del checkbox */
|
|
}
|
|
|
|
.update-message {
|
|
position: absolute;
|
|
/* Posizionamento assoluto per il messaggio */
|
|
left: 100%;
|
|
/* Posiziona a destra del checkbox */
|
|
margin-left: 10px;
|
|
/* Spazio tra il checkbox e il messaggio */
|
|
color: green;
|
|
/* Colore del testo */
|
|
}
|
|
|
|
.updated-label {
|
|
background-color: #c9e2c9 !important;
|
|
/* Colore verde chiaro */
|
|
transition: background-color 2s ease-out;
|
|
/* Transizione lenta per una migliore visibilità */
|
|
}
|
|
|
|
.dropzone {
|
|
border: 2px dashed #0087F7;
|
|
/* bordo tratteggiato azzurro */
|
|
border-radius: 5px;
|
|
/* bordi arrotondati */
|
|
background: rgba(0, 135, 247, 0.1);
|
|
/* sfondo leggermente azzurrino */
|
|
min-height: 100px;
|
|
/* altezza ridotta */
|
|
display: flex;
|
|
align-items: center;
|
|
/* allinea verticalmente l'icona e il testo */
|
|
justify-content: center;
|
|
/* allinea orizzontalmente l'icona e il testo */
|
|
padding: 20px;
|
|
}
|
|
|
|
.dropzone .dz-message {
|
|
text-align: center;
|
|
margin: 0;
|
|
font-size: 16px;
|
|
color: #333;
|
|
}
|
|
|
|
.dropzone .dz-message:before {
|
|
content: '\2601';
|
|
/* Codice Unicode per l'icona della nuvola */
|
|
font-size: 48px;
|
|
color: #0087F7;
|
|
display: block;
|
|
}
|
|
</style>
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<body class="fixed-left">
|
|
|
|
<!-- Loader -->
|
|
<div id="preloader">
|
|
<div id="status">
|
|
<div class="spinner"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Begin page -->
|
|
<div id="wrapper">
|
|
|
|
<?php include('../include/navigationbar.php'); ?>
|
|
|
|
<!-- Start right Content here -->
|
|
|
|
<div class="content-page">
|
|
<!-- Start content -->
|
|
<div class="content">
|
|
|
|
<?php include('../include/topbar.php'); ?>
|
|
|
|
<div class="page-content-wrapper ">
|
|
|
|
<div class="container-fluid">
|
|
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<div class="page-title-box">
|
|
<div class="btn-group float-right">
|
|
<ol class="breadcrumb hide-phone p-0 m-0">
|
|
<li class="breadcrumb-item"><a href="#">Reportify</a></li>
|
|
<li class="breadcrumb-item active">EasySpec</li>
|
|
</ol>
|
|
</div>
|
|
<h4 class="page-title">EasySpec</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- end page title end breadcrumb -->
|
|
|
|
<div class="row">
|
|
<div class="col-xl-12">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h5 class="header-title pb-3 mt-0">EasySpec: Update Standard</h5>
|
|
|
|
<div>
|
|
<form method="post" class="form-horizontal p-t-20" id="updatebeach">
|
|
|
|
<div class="mb-3 row">
|
|
<label for="titlestandards" class="col-sm-3 control-label">Title Standard</label>
|
|
<div class="col-sm-9">
|
|
<input name="titlestandards" type="text" class="form-control" id="titlestandards" value="<?php echo htmlspecialchars($titlestandards ?? ''); ?>">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label for="numberstandards" class="col-sm-3 control-label">Number Standard</label>
|
|
<div class="col-sm-9">
|
|
<input name="numberstandards" type="text" class="form-control" id="numberstandards" value="<?php echo htmlspecialchars($numberstandards ?? ''); ?>">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label for="yearstandards" class="col-sm-3 control-label">Year Standard</label>
|
|
<div class="col-sm-9">
|
|
<select name="yearstandards" class="form-control" id="yearstandards">
|
|
<option value="">Select</option>
|
|
<?php
|
|
$currentYear = date('Y');
|
|
for ($year = $currentYear; $year >= 1900; $year--) {
|
|
echo "<option value='$year'" . (($yearstandards ?? '') == $year ? " selected" : "") . ">$year</option>";
|
|
}
|
|
?>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label for="status" class="col-sm-3 control-label">Status</label>
|
|
<div class="col-sm-2">
|
|
<input type="hidden" name="status" value="I"> <!-- Campo nascosto con valore "I" -->
|
|
<input name="status" type="checkbox" class="form-check-input" id="status" value="A" style="width: 20px; height: 20px;" <?php echo (($status ?? '') == 'A' ? 'checked' : ''); ?>>
|
|
<label class="form-check-label" for="status">Active</label>
|
|
</div>
|
|
</div>
|
|
|
|
<input type="hidden" name="idstandards" value="<?php echo htmlspecialchars($idstandards ?? ''); ?>">
|
|
|
|
<div class="form-group row">
|
|
<label for="description" class="col-sm-3 control-label">Description</label>
|
|
<div class="col-sm-9">
|
|
<textarea name="description" class="form-control" id="description" rows="4"><?php echo htmlspecialchars($description ?? ''); ?></textarea>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label for="activefrom" class="col-sm-3 control-label">Active From</label>
|
|
<div class="col-sm-9">
|
|
<input name="activefrom" type="date" class="form-control" id="activefrom" value="<?php echo htmlspecialchars($activefrom ?? date('Y-m-d')); ?>">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group row">
|
|
<label for="activeto" class="col-sm-3 control-label">Active To</label>
|
|
<div class="col-sm-9">
|
|
<input name="activeto" type="date" class="form-control" id="activeto" value="<?php echo htmlspecialchars($activeto ?? ''); ?>">
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</form>
|
|
</div><!--end table-responsive-->
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- end row -->
|
|
|
|
|
|
</div><!-- container -->
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h5 class="header-title pb-3 mt-0">Documenti Caricati</h5>
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th>Filename</th>
|
|
<th>Action</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="fileList">
|
|
<!-- I file caricati verranno aggiunti qui dinamicamente -->
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- Dropzone Area -->
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<form action="stdupload.php" class="dropzone" id="file-upload"></form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-12 text-center">
|
|
<a href="standards.php" class="btn btn-primary mt-3">
|
|
<i class="bx bx-arrow-back"></i> Back to Standards
|
|
</a>
|
|
</div>
|
|
</div><br>
|
|
|
|
|
|
<script>
|
|
Dropzone.options.fileUpload = {
|
|
url: "stdupload.php",
|
|
paramName: "file", // I file saranno disponibili in $_FILES['file']
|
|
maxFilesize: 20, // Dimensione massima del file in MB
|
|
acceptedFiles: "application/pdf",
|
|
dictDefaultMessage: "Trascina qui i file o clicca per caricare",
|
|
sending: function(file, xhr, formData) {
|
|
// Aggiungi l'idstandards come parte del formData
|
|
formData.append("idstandards", '<?php echo $idstandards; ?>');
|
|
},
|
|
init: function() {
|
|
this.on("success", function(file, responseText) {
|
|
var response = JSON.parse(responseText);
|
|
if (response.status === 'ok') {
|
|
fetchFiles();
|
|
} else {
|
|
alert(response.message);
|
|
}
|
|
});
|
|
}
|
|
};
|
|
</script>
|
|
|
|
|
|
|
|
</div> <!-- Page content Wrapper -->
|
|
|
|
</div> <!-- content -->
|
|
|
|
<?php include('../include/footer.php'); ?>
|
|
|
|
</div>
|
|
<!-- End Right content here -->
|
|
|
|
</div>
|
|
<!-- END wrapper -->
|
|
<script>
|
|
$(document).ready(function() {
|
|
$('[data-toggle="tooltip"]').tooltip();
|
|
});
|
|
</script>
|
|
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
|
<script>
|
|
$(document).ready(function() {
|
|
$('#updatebeach input[type="checkbox"]').change(function() {
|
|
// Quando lo stato del checkbox cambia
|
|
if (this.checked) {
|
|
// Se il checkbox è selezionato, imposta il valore "A"
|
|
$(this).val('A');
|
|
} else {
|
|
// Se il checkbox non è selezionato, imposta il valore del campo nascosto su "I"
|
|
$(this).prev('input[type="hidden"]').val('I');
|
|
}
|
|
});
|
|
|
|
$('#updatebeach').on('submit', function() {
|
|
// Prima del submit, verifica lo stato del checkbox e aggiorna i valori di conseguenza
|
|
var checkbox = $('#status');
|
|
if (checkbox.is(':checked')) {
|
|
checkbox.val('A');
|
|
} else {
|
|
checkbox.prev('input[type="hidden"]').val('I');
|
|
}
|
|
});
|
|
$('#updatebeach input, #updatebeach select, #updatebeach textarea').on('change blur', function() {
|
|
var field = $(this);
|
|
var formData = $(this).closest('form').serialize();
|
|
|
|
updateData(formData, field);
|
|
});
|
|
|
|
function updateData(formData, field) {
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: 'updatestd.php',
|
|
data: formData,
|
|
dataType: 'json',
|
|
|
|
success: function(data) {
|
|
if (data.success) {
|
|
if (field.is(':checkbox')) {
|
|
// Applica la classe al label che segue il checkbox
|
|
var label = field.next('label');
|
|
label.addClass('updated-label');
|
|
setTimeout(function() {
|
|
label.removeClass('updated-label');
|
|
}, 2000); // Mantiene il colore verde per 2 secondi
|
|
} else {
|
|
// Applica la classe per il colore verde
|
|
field.addClass('updated-field');
|
|
setTimeout(function() {
|
|
field.removeClass('updated-field');
|
|
}, 2000);
|
|
}
|
|
} else {
|
|
alert(data.message || "Errore sconosciuto.");
|
|
}
|
|
},
|
|
error: function(xhr, status, error) {
|
|
alert('Errore di connessione al server: ' + error);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<script>
|
|
function fetchFiles() {
|
|
$.ajax({
|
|
url: 'stdlistquery.php',
|
|
type: 'GET',
|
|
data: {
|
|
idstandards: '<?php echo $idstandards; ?>'
|
|
},
|
|
dataType: 'json',
|
|
success: function(data) {
|
|
console.log(data); // Debugging: stampa i dati ricevuti
|
|
var tableRef = document.getElementById('fileList');
|
|
tableRef.innerHTML = ''; // Pulisci la tabella
|
|
data.files.forEach(function(file) {
|
|
var newRow = tableRef.insertRow();
|
|
var nameCell = newRow.insertCell(0);
|
|
var link = document.createElement('a');
|
|
link.setAttribute('href', "../pdfstandards/" + file.filename);
|
|
link.setAttribute('target', '_blank');
|
|
link.textContent = file.filename;
|
|
nameCell.appendChild(link);
|
|
|
|
var deleteCell = newRow.insertCell(1);
|
|
var deleteIcon = document.createElement('i');
|
|
deleteIcon.className = 'fa fa-trash';
|
|
deleteIcon.style.color = 'red';
|
|
deleteIcon.style.cursor = 'pointer';
|
|
deleteIcon.onclick = function() {
|
|
deleteFile(file.filename, '<?php echo $idstandards; ?>');
|
|
};
|
|
deleteCell.appendChild(deleteIcon);
|
|
});
|
|
},
|
|
error: function(xhr, status, error) {
|
|
console.error("Errore durante il recupero dei file: " + error);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
fetchFiles(); // Chiamata iniziale al caricamento della pagina
|
|
|
|
// Configurazione di Dropzone
|
|
Dropzone.options.fileUpload = {
|
|
url: "stdupload.php",
|
|
init: function() {
|
|
this.on("success", function(file, responseText) {
|
|
var response = JSON.parse(responseText);
|
|
if (response.status === 'ok') {
|
|
fetchFiles(); // Aggiorna la tabella solo se il file è caricato con successo
|
|
} else {
|
|
console.error("Errore: " + response.message); // Utilizza console.error per gli errori
|
|
}
|
|
});
|
|
this.on("error", function(file, response) {
|
|
console.error("Errore durante il caricamento del file: " + response); // Mostra gli errori in console
|
|
});
|
|
}
|
|
};
|
|
|
|
|
|
|
|
});
|
|
</script>
|
|
<script>
|
|
function deleteFile(filename, idstandards) {
|
|
// Mostra un dialogo di conferma prima di procedere con la cancellazione
|
|
Swal.fire({
|
|
title: 'Do you want to cancel the file?',
|
|
text: "You won't be able to revert this!",
|
|
icon: 'warning',
|
|
showCancelButton: true,
|
|
confirmButtonColor: '#3085d6',
|
|
cancelButtonColor: '#d33',
|
|
confirmButtonText: 'Yes, delete it!'
|
|
}).then((result) => {
|
|
if (result.isConfirmed) {
|
|
// Se l'utente conferma, procedi con la cancellazione
|
|
$.ajax({
|
|
url: 'deleteFile.php',
|
|
type: 'POST',
|
|
data: {
|
|
filename: filename,
|
|
idstandards: idstandards
|
|
},
|
|
dataType: 'json',
|
|
success: function(response) {
|
|
if (response.status === 'success') {
|
|
Swal.fire(
|
|
'Deleted!',
|
|
'Your file has been deleted.',
|
|
'success'
|
|
);
|
|
fetchFiles(); // Aggiorna la lista dopo la cancellazione
|
|
} else {
|
|
Swal.fire(
|
|
'Error!',
|
|
'An error occurred while deleting the file.',
|
|
'error'
|
|
);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- plugin JS -->
|
|
<script src="../assets/js/jquery.min.js"></script>
|
|
<script src="../assets/js/popper.min.js"></script>
|
|
<script src="../assets/js/bootstrap.min.js"></script>
|
|
<script src="../assets/js/modernizr.min.js"></script>
|
|
<script src="../assets/js/detect.js"></script>
|
|
<script src="../assets/js/fastclick.js"></script>
|
|
<script src="../assets/js/jquery.slimscroll.js"></script>
|
|
<script src="../assets/js/jquery.blockUI.js"></script>
|
|
<script src="../assets/js/waves.js"></script>
|
|
<script src="../assets/js/jquery.nicescroll.js"></script>
|
|
<script src="../assets/js/jquery.scrollTo.min.js"></script>
|
|
|
|
<script src="../assets/plugins/chart.js/chart.min.js"></script>
|
|
<script src="../assets/pages/dashboard.js"></script>
|
|
|
|
<!-- App js -->
|
|
<script src="../assets/js/app.js"></script>
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|