From a72ef244cdd8844f6ec155f1264e3d3118657a9d Mon Sep 17 00:00:00 2001 From: rmontanana Date: Sun, 29 Jun 2014 09:40:36 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20#40=20Crear=20la=20opci=C3=B3n=20de=20clo?= =?UTF-8?q?nar=20registro=20en=20Mantenimiento.=20-Crear=20iconos=20de=20c?= =?UTF-8?q?lonado=20en=20todos=20los=20estilos.=20-Corregido=20determinaAc?= =?UTF-8?q?cion=20en=20Imagen=20para=20aceptar=20el=20clonado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG | 4 +++ Imagen.php | 15 +++++++++- Mantenimiento.php | 61 ++++++++++++++++++++++++++++++++++----- img/bluecurve/clonar.png | Bin 0 -> 560 bytes img/clonar.png | Bin 0 -> 3852 bytes img/cristal/clonar.png | Bin 0 -> 635 bytes img/personal/clonar.png | Bin 0 -> 642 bytes 7 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 img/bluecurve/clonar.png create mode 100644 img/clonar.png create mode 100644 img/cristal/clonar.png create mode 100644 img/personal/clonar.png diff --git a/CHANGELOG b/CHANGELOG index a42d6a6..620e549 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +Versión 1.15 28-06-2014 +-Crear la opción de clonar registro en Mantenimiento. +-Crear iconos de clonado en todos los estilos. +-Corregido determinaAccion en Imagen para aceptar el clonado Versión 1.14.1 02-06-2014 -Añadidos enlaces a manual y a aplicación de ejemplo en readme.md -Arreglado que los créditos salgan centrados en lugar de alineados a la derecha diff --git a/Imagen.php b/Imagen.php index fa268b9..1b18ffb 100644 --- a/Imagen.php +++ b/Imagen.php @@ -29,6 +29,7 @@ class Imagen { public $archivoComprimido; private $extension; private $dirData; + public $archivoCopiado; public function __construct() { @@ -39,7 +40,7 @@ class Imagen { { if (isset($_POST[$campo]) && $_POST[$campo] == "") { return HAYQUEBORRAR; //Hay que borrar el archivo de imagen - } elseif ($_FILES[$campo]['error'] == 0) { + } elseif (isset($_FILES[$campo]['error']) && $_FILES[$campo]['error'] == 0) { return HAYQUEGRABAR; //Hay que guardar el archivo de imagen enviado } else { return NOHACERNADA; //No hay que hacer nada @@ -111,6 +112,18 @@ class Imagen { } } } + public function copiaImagenId($valorImagen, $tabla, $id, &$mensaje) + { + $extension = strrchr($valorImagen, "."); + $nombre = $this->dirData . "/" . $tabla . "_" . $id . $extension; + if (!@copy($valorImagen, $nombre)) { + $errors= error_get_last(); + $mensaje = "No pudo copiar el archivo " . $valorImagen . " en " . $nombre . " Error = [" . $errors['message'] . "]"; + return false; + } + $this->archivoCopiado = $nombre; + return true; + } public function mueveImagenId($tabla, $id, &$mensaje) { diff --git a/Mantenimiento.php b/Mantenimiento.php index ee20ba5..af71703 100644 --- a/Mantenimiento.php +++ b/Mantenimiento.php @@ -23,6 +23,7 @@ define('EDICION', 'Edición'); define('BORRADO', 'Borrado'); define('ANADIR', 'Inserción'); +define('CLONAR', 'Clonar'); class Mantenimiento { @@ -109,10 +110,15 @@ class Mantenimiento { case 'insertar':return $this->insertar(); case 'modificar':return $this->modificar(); case 'borrar':return $this->borrar(); + case 'clonar': return $this->muestra(CLONAR); default: return "La clase Mantenimiento No entiende lo solicitado [" . $this->datosURL['opc'] . "]"; } } + private function clonar() + { + + } protected function obtieneClavesForaneas() { $salida = null; @@ -244,6 +250,18 @@ class Mantenimiento { } //Añade los botones de acciones $salida .= ''; + //Añade el icono de clonar + if ($this->perfil['Alta']) { + //$salida.='datosURL['id'] = $id; + if (ESTILO == 'bootstrap') { + $salida.='  '; + } else { + $salida.='clonar  '; + } + $this->restoreURL(); + } //Añade el icono de editar if ($this->perfil['Modificacion']) { //$salida.='montaURL()."'".'">'; + $anadir = ''; } else { $anadir = '' . 'nuevo'; @@ -412,7 +430,7 @@ class Mantenimiento { //procesa el envío de la imagen $imagen = new Imagen(); $accion = $imagen->determinaAccion($campo); - if ($accion != NOHACERNADA) { + if ($accion != NOHACERNADA) { // && $_POST['tipoOperacion'] != CLONAR) { $mensaje = ""; if (!$imagen->procesaEnvio($campo, $mensaje)) { return $this->panelMensaje($mensaje, "danger", "ERROR PROCESANDO IMAGEN"); @@ -420,7 +438,16 @@ class Mantenimiento { $hayImagen = true; $campoImagen = $campo; } else { - $valor = "null"; + //Comprobamos si hay clonación y hay imagen a clonar. + $valor = $_POST[$campo]; + if ($_POST['tipoOperacion'] == CLONAR && file_exists($valor)) { + $hayImagen = true; + $campoImagen = $campo; + $valorImagen = $valor; + $valor = "null"; + } else { + $valor = "null"; + } } } else { $valor = $_POST[$campo] == "" ? "null" : '"' . $this->bdd->filtra($_POST[$campo]) . '"'; @@ -434,11 +461,22 @@ class Mantenimiento { } $id = $this->bdd->ultimoId(); if ($hayImagen) { + $mensaje = " "; //Tiene que recuperar el id del registro insertado y actualizar el archivo de imagen - if (!$imagen->mueveImagenId($this->tabla, $id, $mensaje)) { - return $this->panelMensaje($mensaje, "danger", "ERROR COMPRIMIENDO IMAGEN"); + if ($_POST['tipoOperacion'] == CLONAR) { + //Tiene que copiar el archivo original. + if (!$imagen->copiaImagenId($valorImagen, $this->tabla, $id, $mensaje)) { + return $this->panelMensaje($mensaje, "danger", "ERROR COPIANDO IMAGEN"); + } + $archivoImagen = $imagen->archivoCopiado; + } else { + //Crea el archivo de imagen + if (!$imagen->mueveImagenId($this->tabla, $id, $mensaje)) { + return $this->panelMensaje($mensaje, "danger", "ERROR COMPRIMIENDO IMAGEN"); + } + $archivoImagen = $imagen->archivoComprimido; } - $comando = "update " . $this->tabla . " set " . $campoImagen . "='" . $imagen->archivoComprimido . "' where id='" . $id ."';"; + $comando = "update " . $this->tabla . " set " . $campoImagen . "='" . $archivoImagen . "' where id='" . $id ."';"; if (!$this->bdd->ejecuta($comando)) { return $this->errorBD($comando); } @@ -657,7 +695,7 @@ class Mantenimiento { /** * - * @param string $tipo ANADIR,EDICION,BORRADO + * @param string $tipo ANADIR,EDICION,BORRADO,CLONAR * @param array $datos Vector con los datos del registro * @return array lista de campos y formulario de entrada */ @@ -666,6 +704,7 @@ class Mantenimiento { $modo = $tipo == BORRADO ? "readonly" : ""; $nfechas = 0; switch ($tipo) { + case CLONAR: case ANADIR: $this->datosURL['opc'] = "insertar"; $this->datosURL['id'] = null; break; @@ -695,7 +734,7 @@ class Mantenimiento { //Se asegura que el id no se pueda modificar. $modoEfectivo = $clave == 'id' ? "readonly" : $modo; $valorDato = $datos == null ? "" : $datos[$campo]; - if ($clave == 'id' && $tipo == ANADIR) { + if ($clave == 'id' && ($tipo == ANADIR || $tipo == CLONAR)) { $valorDato = null; } if (!isset($this->foraneas[$valor['Campo']])) { @@ -744,6 +783,10 @@ class Mantenimiento { continue; } if (stristr($this->campos[$campo]['Comment'], "imagen")) { + /*if ($tipo == CLONAR) { + // De momento no deja clonar las imágenes + $valorDato = null; + }*/ $salida .= $this->creaCampoImagen($campo, $valorDato, $tipo); continue; } @@ -762,6 +805,8 @@ class Mantenimiento { } //genera un campo oculto con la lista de campos a modificar. $salida .= '\n"; + //genera un campo oculto con el tipo de operación asociado al formulario + $salida .= '\n"; $salida .= "

"; $salida .= '

'; $this->datosURL['opc'] = 'inicial'; diff --git a/img/bluecurve/clonar.png b/img/bluecurve/clonar.png new file mode 100644 index 0000000000000000000000000000000000000000..9569ec7d6e0e1d9eb5c8c681311b54ca7f7e05a8 GIT binary patch literal 560 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 V15vPi;pG4T002ovPDHLkV1oCy9V-9; literal 0 HcmV?d00001 diff --git a/img/personal/clonar.png b/img/personal/clonar.png new file mode 100644 index 0000000000000000000000000000000000000000..ddaeffdd9c6f3b52e63c337eb1710681a9521f0d GIT binary patch literal 642 zcmV-|0)737P)xd<)pisHhh2!0h;{sn14)P)Nd>Y|J8 zx^S)kK#MdB7b;lO(hBjTF*jCgiAbcWrsAFBBFXjE20SnfbC`MNyziM2nlU{+eI_1{ z9|f@1Vy#70C6TB){exfAsm`^X$)3u}{_b~kK@ckfi(mt30rL60W-=K>8YvM$;y;MR z3KR~GkxnanMn`#FdHUI1slGq_=+G^Z7qdhG#bQxQrIPx-uOG`FbZPvGmO;y)RnJqM zpVv}jZ3}5xRUOH?Er6;bA{b*35!~($D);U)boTU8WiQ9$dk zF$QA-6mTXU!t-Y|bphab9uIrTSie3IW#I$YH@4L4G;(jZaZOb(-3f8H76aXBUH$lia*9^=)Ilj!Pt> zfWM#^iQ%&(N6vvXI$?u2B7r1QOSG+EI}D7`<}HMK0JeDmgx!d)TRCfOv}jB_6IHd1 zsj}svwFRi^wi{Zx=I07$Rh2CgeBWPF)!k7k|3>t!l*{E!pi2O<*{m!tFDHRs!1Dia cfI9Hy4`F!su}Ug2MgRZ+07*qoM6N<$f{)e{u>b%7 literal 0 HcmV?d00001