mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
terminado dropzone
This commit is contained in:
@ -812,10 +812,14 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
|||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
|
|
||||||
$size = filesize($file->file_path);
|
$size = filesize($file->file_path);
|
||||||
|
$splitPath = explode("presupuestos/", $file->file_path);
|
||||||
|
|
||||||
// se crea un objeto con el nombre del fichero y el tamaño
|
// se crea un objeto con el nombre del fichero y el tamaño
|
||||||
$obj = (object) array(
|
$obj = (object) array(
|
||||||
'name' => $file->nombre,
|
'name' => $file->nombre,
|
||||||
'size' => $size);
|
'size' => $size,
|
||||||
|
'hash' => $splitPath[1] ?? $file->file_path);
|
||||||
|
|
||||||
|
|
||||||
// se añade el objeto al array
|
// se añade el objeto al array
|
||||||
array_push($result, $obj);
|
array_push($result, $obj);
|
||||||
@ -832,30 +836,36 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
|||||||
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
|
||||||
$presupuesto_id = $_POST['presupuesto_id'];
|
$presupuesto_id = $_POST['presupuesto_id'];
|
||||||
|
$old_files = json_decode($_POST['oldFiles']);
|
||||||
|
|
||||||
// Comprobar si se han subido archivos
|
// Comprobar si se han subido archivos
|
||||||
if (!empty($_FILES['file'])) {
|
if (!empty($_FILES['file']) || !empty($old_files)) {
|
||||||
$files = $_FILES['file'];
|
|
||||||
|
|
||||||
// Borrar los archivos existentes del presupuesto
|
// Borrar los archivos existentes del presupuesto
|
||||||
$model->deleteFiles($presupuesto_id);
|
$model->deleteFiles($presupuesto_id, $old_files);
|
||||||
|
|
||||||
// Iterar sobre los archivos
|
if (!empty($_FILES['file'])){
|
||||||
for ($i = 0; $i < count($files['name']); $i++) {
|
$files = $_FILES['file'];
|
||||||
// Aquí puedes acceder a las propiedades del archivo
|
|
||||||
$name = $files['name'][$i];
|
|
||||||
$tmp_name = $files['tmp_name'][$i];
|
|
||||||
|
|
||||||
$new_name = $model->saveFileInBBDD($presupuesto_id, $name, auth()->id());
|
// Iterar sobre los archivos
|
||||||
|
for ($i = 0; $i < count($files['name']); $i++) {
|
||||||
|
// Aquí puedes acceder a las propiedades del archivo
|
||||||
|
$name = $files['name'][$i];
|
||||||
|
$extension = explode('.', $files['name'][$i])[1];
|
||||||
|
$tmp_name = $files['tmp_name'][$i];
|
||||||
|
|
||||||
// Se sube el fichero
|
$new_name = $model->saveFileInBBDD($presupuesto_id, $name, $extension, auth()->id());
|
||||||
// Pero primero se comprueba que la carpeta presupuestos exista
|
|
||||||
if (!is_dir(WRITEPATH . 'uploads/presupuestos')) {
|
|
||||||
mkdir(WRITEPATH . 'uploads/presupuestos', 0777, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!is_null($new_name)){
|
// Se sube el fichero
|
||||||
move_uploaded_file($tmp_name, WRITEPATH . 'uploads/presupuestos/' . $new_name);
|
// Pero primero se comprueba que la carpeta presupuestos exista
|
||||||
|
if (!is_dir(WRITEPATH . 'uploads/presupuestos')) {
|
||||||
|
mkdir(WRITEPATH . 'uploads/presupuestos', 0777, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!is_null($new_name)){
|
||||||
|
move_uploaded_file($tmp_name, WRITEPATH . 'uploads/presupuestos/' . $new_name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,9 +24,9 @@ class PresupuestoFicheroModel extends \App\Models\BaseModel
|
|||||||
public static $labelField = "nombre";
|
public static $labelField = "nombre";
|
||||||
|
|
||||||
|
|
||||||
public function saveFileInBBDD($presupuesto_id, $filename, $user_id) {
|
public function saveFileInBBDD($presupuesto_id, $filename, $extension ,$user_id) {
|
||||||
try{
|
try{
|
||||||
$new_filename = $this->generateFileHash($filename);
|
$new_filename = $this->generateFileHash($filename) . '.' . $extension;
|
||||||
|
|
||||||
$this->db->table($this->table . " t1")
|
$this->db->table($this->table . " t1")
|
||||||
->set('presupuesto_id', $presupuesto_id)
|
->set('presupuesto_id', $presupuesto_id)
|
||||||
@ -42,21 +42,28 @@ class PresupuestoFicheroModel extends \App\Models\BaseModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteFiles($presupuesto_id){
|
public function deleteFiles($presupuesto_id, $old_files = []){
|
||||||
|
|
||||||
$files = $this->db
|
$files = $this->db
|
||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
->where('presupuesto_id', $presupuesto_id)->get()->getResult();
|
->where('presupuesto_id', $presupuesto_id)->get()->getResult();
|
||||||
if($files){
|
if($files){
|
||||||
foreach($files as $file){
|
foreach($files as $file){
|
||||||
if(file_exists($file->file_path)){
|
|
||||||
unlink($file->file_path);
|
// se comprueba que el $file->nombre no sea igual a ninguno de los elementos del array $old_files
|
||||||
|
if (!in_array($file->nombre, $old_files)) {
|
||||||
|
if (file_exists($file->file_path)) {
|
||||||
|
unlink($file->file_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->db
|
||||||
|
->table($this->table . " t1")
|
||||||
|
->where('presupuesto_id', $presupuesto_id)
|
||||||
|
->where('nombre', $file->nombre)
|
||||||
|
->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->db
|
|
||||||
->table($this->table . " t1")
|
|
||||||
->where('presupuesto_id', $presupuesto_id)->delete();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -206,8 +206,8 @@ if(<?php echo $presupuestoEntity->estado_id?>==2){
|
|||||||
const previewTemplate = `<div class="dz-preview dz-file-preview">
|
const previewTemplate = `<div class="dz-preview dz-file-preview">
|
||||||
<div class="dz-details">
|
<div class="dz-details">
|
||||||
<div class="dz-thumbnail">
|
<div class="dz-thumbnail">
|
||||||
<img data-dz-thumbnail>
|
<!---<img data-dz-thumbnail>
|
||||||
<span class="dz-nopreview">No preview</span>
|
<span class="dz-nopreview">No preview</span> --->
|
||||||
<div class="dz-success-mark"></div>
|
<div class="dz-success-mark"></div>
|
||||||
<div class="dz-error-mark"></div>
|
<div class="dz-error-mark"></div>
|
||||||
<div class="dz-error-message"><span data-dz-errormessage></span></div>
|
<div class="dz-error-message"><span data-dz-errormessage></span></div>
|
||||||
@ -231,10 +231,12 @@ if(<?php echo $presupuestoEntity->estado_id?>==2){
|
|||||||
parallelUploads: 4, // Ajusta este número al máximo número de archivos que esperas subir a la vez
|
parallelUploads: 4, // Ajusta este número al máximo número de archivos que esperas subir a la vez
|
||||||
maxFiles: 5, // Ajusta este número al máximo número de archivos que esperas subir a la vez
|
maxFiles: 5, // Ajusta este número al máximo número de archivos que esperas subir a la vez
|
||||||
autoProcessQueue: true,
|
autoProcessQueue: true,
|
||||||
|
dictRemoveFile: "Eliminar",
|
||||||
acceptedFiles: 'image/*, application/pdf',
|
acceptedFiles: 'image/*, application/pdf',
|
||||||
maxFilesize: 5e+7, // Bytes
|
maxFilesize: 5e+7, // Bytes
|
||||||
init: function() {
|
init: function() {
|
||||||
thisDropzone = this;
|
thisDropzone = this;
|
||||||
|
$('#loader').show();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "<?= site_url('presupuestos/presupuestocliente/get_files') ?>",
|
url: "<?= site_url('presupuestos/presupuestocliente/get_files') ?>",
|
||||||
@ -247,12 +249,28 @@ if(<?php echo $presupuestoEntity->estado_id?>==2){
|
|||||||
}
|
}
|
||||||
values = JSON.parse(response);
|
values = JSON.parse(response);
|
||||||
for(var i = 0; i < values.length; i++){
|
for(var i = 0; i < values.length; i++){
|
||||||
var mockFile = { name: values[i].name, size: values[i].size };
|
var mockFile = { name: values[i].name, size: values[i].size, hash: values[i].hash};
|
||||||
thisDropzone.options.addedfile.call(thisDropzone, mockFile);
|
|
||||||
thisDropzone.options.thumbnail.call(thisDropzone, mockFile, "uploads/"+values[i].name);
|
thisDropzone.files.push(mockFile); // add to files array
|
||||||
thisDropzone.options.complete.call(thisDropzone, mockFile);
|
thisDropzone.emit("addedfile", mockFile);
|
||||||
|
thisDropzone.emit("thumbnail", mockFile, window.location.host + "/sistema/intranet/presupuestos/"+values[i].hash);
|
||||||
|
thisDropzone.emit("complete", mockFile);
|
||||||
thisDropzone.options.success.call(thisDropzone, mockFile);
|
thisDropzone.options.success.call(thisDropzone, mockFile);
|
||||||
};
|
};
|
||||||
|
}).always(function() {
|
||||||
|
$('#loader').hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
this.on("addedfile", function (file) {
|
||||||
|
if(file.hash){
|
||||||
|
var viewButton = Dropzone.createElement("<span class='dz-remove'>Ver</span>");
|
||||||
|
file.previewElement.appendChild(viewButton);
|
||||||
|
// Listen to the view button click event
|
||||||
|
viewButton.addEventListener("click", function (e) {
|
||||||
|
|
||||||
|
window.open(window.location.protocol + "//" + window.location.host + "/sistema/intranet/presupuestos/"+file.hash, '_blank');
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -260,12 +278,23 @@ if(<?php echo $presupuestoEntity->estado_id?>==2){
|
|||||||
$('#presupuesto-cliente-form').submit(function(e){
|
$('#presupuesto-cliente-form').submit(function(e){
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var files = dropzoneMulti.files;
|
var files = dropzoneMulti.files;
|
||||||
|
$('#loader').show();
|
||||||
|
|
||||||
var formData = new FormData();
|
var formData = new FormData();
|
||||||
|
var oldFiles = [];
|
||||||
|
var counter = 0;
|
||||||
for (var i = 0; i < files.length; i++) {
|
for (var i = 0; i < files.length; i++) {
|
||||||
var file = files[i];
|
|
||||||
formData.append('file[' + i + ']', file);
|
if(files[i].upload){
|
||||||
|
var file = files[i];
|
||||||
|
formData.append('file[' + counter + ']', file);
|
||||||
|
counter += 1;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
oldFiles.push(files[i].name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
formData.append('oldFiles', JSON.stringify(oldFiles));
|
||||||
|
|
||||||
formData.append('presupuesto_id', <?= $presupuestoEntity->id ?>);
|
formData.append('presupuesto_id', <?= $presupuestoEntity->id ?>);
|
||||||
|
|
||||||
@ -277,7 +306,9 @@ if(<?php echo $presupuestoEntity->estado_id?>==2){
|
|||||||
contentType: false // Indicar a jQuery que no establezca el tipo de contenido
|
contentType: false // Indicar a jQuery que no establezca el tipo de contenido
|
||||||
}).done(function(response) {
|
}).done(function(response) {
|
||||||
// Aquí puedes manejar la respuesta del servidor
|
// Aquí puedes manejar la respuesta del servidor
|
||||||
});
|
}).always(function() {
|
||||||
|
$('#loader').hide();
|
||||||
|
})
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|||||||
27053
xdebug.log
27053
xdebug.log
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user