small update

This commit is contained in:
2025-02-18 09:13:50 +01:00
parent 2045c5e5a7
commit 0ec2b29861
3 changed files with 112 additions and 43 deletions
+101 -35
View File
@@ -326,13 +326,20 @@ while ($row = $queryPages->fetch_assoc()) {
<!-- Area Drag & Drop per il caricamento -->
<div class="dropzone-container collapse" id="dropzone-<?php echo $document['document_id']; ?>">
<div class="dropzone mb-3">
<div class="dropzone mb-3" id="dropzone-area-<?php echo $document['document_id']; ?>">
<div class="dz-message">
<i class="fas fa-cloud-upload-alt"></i><br>
Trascina qui i documenti o clicca per caricare
Trascina qui i documenti o clicca per caricarli
</div>
</div>
<div class="text-center mt-3">
<label class="btn btn-outline-primary btn-sm">
<i class="fas fa-camera"></i> Scatta una foto
<input type="file" accept="image/*" capture="camera" id="cameraInput-<?php echo $document['document_id']; ?>" class="d-none" onchange="uploadFromCamera(this, '<?php echo $document['document_id']; ?>')">
</label>
</div>
</div>
<!-- Tabella dei documenti già caricati -->
<h6 class="mt-4">Documenti già caricati:</h6>
<?php if (isset($loadedDocuments[$document['document_id']]) && count($loadedDocuments[$document['document_id']]) > 0) { ?>
@@ -386,54 +393,52 @@ while ($row = $queryPages->fetch_assoc()) {
<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.2/dropzone.min.js"></script>
<script>
// Disabilita l'auto-discover di Dropzone
Dropzone.autoDiscover = false;
// Inizializza Dropzone per ciascun documento
<?php foreach ($documents as $section => $sectionDocuments) { ?>
<?php foreach ($sectionDocuments as $document) { ?>
new Dropzone("#dropzone-<?php echo $document['document_id']; ?>", {
url: "upload-document.php", // URL per il caricamento
paramName: "file", // Nome del campo per il file
maxFiles: <?php echo $document['max_documents']; ?>, // Numero massimo di file
maxFilesize: 5, // Dimensione massima del file in MB
addRemoveLinks: true, // Permette di rimuovere i file
acceptedFiles: "image/*,application/pdf", // Tipi di file accettati
let dropzone_<?php echo $document['document_id']; ?> = new Dropzone("#dropzone-area-<?php echo $document['document_id']; ?>", {
url: "upload-document.php",
paramName: "file",
maxFiles: <?php echo $document['max_documents']; ?>,
maxFilesize: 5,
addRemoveLinks: true,
acceptedFiles: "image/*,application/pdf",
dictDefaultMessage: "Trascina qui i file o clicca per caricarli",
dictRemoveFile: "Rimuovi",
previewTemplate: `
<div class="dz-preview dz-file-preview">
<div class="dz-image"><img data-dz-thumbnail /></div>
<div class="dz-details">
<div class="dz-filename"><span data-dz-name></span></div>
<div class="dz-size"><span data-dz-size></span></div>
</div>
<div class="dz-progress">
<span class="dz-upload" data-dz-uploadprogress></span>
</div>
<div class="dz-error-message"><span data-dz-errormessage></span></div>
<div class="dz-success-mark">
<i class="fas fa-check-circle"></i>
</div>
<div class="dz-error-mark">
<i class="fas fa-times-circle"></i>
</div>
</div>
`,
<div class="dz-preview dz-file-preview">
<div class="dz-image"><img data-dz-thumbnail /></div>
<div class="dz-details">
<div class="dz-filename"><span data-dz-name></span></div>
<div class="dz-size"><span data-dz-size></span></div>
</div>
<div class="dz-progress">
<span class="dz-upload" data-dz-uploadprogress></span>
</div>
<div class="dz-error-message"><span data-dz-errormessage></span></div>
<div class="dz-success-mark">
<i class="fas fa-check-circle"></i>
</div>
<div class="dz-error-mark">
<i class="fas fa-times-circle"></i>
</div>
</div>
`,
init: function() {
this.on("success", function(file, response) {
try {
let parsedResponse = typeof response === "string" ? JSON.parse(response) : response;
if (parsedResponse.success) {
// Aggiungi il file alla tabella
let tableId = "#table-<?php echo $document['document_id']; ?> tbody";
let row = `
<tr>
<td><a href="homedocuments/${parsedResponse.fileName}" target="_blank">${parsedResponse.fileName}</a></td>
<td>${parsedResponse.uploadDate}</td>
<td><button class="btn btn-danger btn-sm delete-document" data-id="${parsedResponse.documentId}" data-file="${parsedResponse.fileName}">Elimina</button></td>
</tr>`;
<tr>
<td><a href="homedocuments/${parsedResponse.fileName}" target="_blank">${parsedResponse.fileName}</a></td>
<td>${parsedResponse.uploadDate}</td>
<td><button class="btn btn-danger btn-sm delete-document" data-id="${parsedResponse.documentId}" data-file="${parsedResponse.fileName}">Elimina</button></td>
</tr>`;
$(tableId).append(row);
} else {
Swal.fire({
@@ -458,7 +463,7 @@ while ($row = $queryPages->fetch_assoc()) {
title: "Errore",
text: errorMessage || "Si è verificato un problema.",
});
this.removeFile(file); // Rimuovi il file in caso di errore
this.removeFile(file);
});
},
sending: function(file, xhr, formData) {
@@ -468,6 +473,67 @@ while ($row = $queryPages->fetch_assoc()) {
});
<?php } ?>
<?php } ?>
// Funzione per caricare un file dalla fotocamera
function uploadFromCamera(input, documentId) {
if (input.files && input.files[0]) {
let formData = new FormData();
formData.append("file", input.files[0]);
formData.append("idhome", "<?php echo $idhome; ?>");
formData.append("document_id", documentId);
$.ajax({
url: "upload-document.php",
type: "POST",
data: formData,
processData: false,
contentType: false,
success: function(response) {
try {
let parsedResponse = typeof response === "string" ? JSON.parse(response) : response;
if (parsedResponse.success) {
let tableId = "#table-" + documentId + " tbody";
let row = `
<tr>
<td><a href="homedocuments/${parsedResponse.fileName}" target="_blank">${parsedResponse.fileName}</a></td>
<td>${parsedResponse.uploadDate}</td>
<td><button class="btn btn-danger btn-sm delete-document" data-id="${parsedResponse.documentId}" data-file="${parsedResponse.fileName}">Elimina</button></td>
</tr>`;
$(tableId).append(row);
Swal.fire({
icon: "success",
title: "Caricamento completato",
text: "La foto è stata caricata con successo.",
timer: 1500,
showConfirmButton: false
});
} else {
Swal.fire({
icon: "error",
title: "Errore",
text: parsedResponse.message || "Errore nel caricamento",
});
}
} catch (error) {
console.error("Errore nel parsing della risposta:", error);
Swal.fire({
icon: "error",
title: "Errore",
text: "Risposta dal server non valida.",
});
}
},
error: function() {
Swal.fire({
icon: "error",
title: "Errore",
text: "Si è verificato un problema con il caricamento.",
});
}
});
}
}
</script>
<script>
Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB