X-Git-Url: https://git.llucax.com/mecon/samurai.git/blobdiff_plain/94983fa84d06dc5e6f99f6b570245bcf08b96a75..3f60841680d8a7c6396a4cbc7d70a043770ec172:/sistema/www/perfiles/perfiles-abm.php?ds=sidebyside diff --git a/sistema/www/perfiles/perfiles-abm.php b/sistema/www/perfiles/perfiles-abm.php index fdc25fc..bb8d0bb 100644 --- a/sistema/www/perfiles/perfiles-abm.php +++ b/sistema/www/perfiles/perfiles-abm.php @@ -19,94 +19,174 @@ // // $Id$ // - +//VERIFICO SI SE TIENE ACCESO A LA PAGINA{{{ +$SAMURAI_PERM->chequear(SAMURAI_PERM_PERFIL_ALTA,SAMURAI_PERM_PERFIL_BAJA,SAMURAI_PERM_PERFIL_MODIF, SAMURAI_PERM_DEVELOPER); +//}}} + +// REQUIRE_ONCE {{{ require_once 'MECON/HTML/QuickForm.php'; require_once 'MECON/HTML/Tabla.php'; - -//CREO LOS OBJETO NECESARIOS {{{ - $SAMURAI = new Samurai($DB); - $FORM = new MECON_HTML_QuickForm ('perfiles_abm','post','perfiles-abm'); + require_once 'MECON/HTML/Error.php'; + require_once 'SAMURAI/Perfil.php'; + require_once 'SAMURAI/Permiso.php'; + require_once 'SAMURAI/Sistema.php'; + require_once 'MECON/HTML/Image.php'; // }}} -//AGREGO LOS ELEMENTOS DEL FORM {{{ - $FORM->addElement ('header', 'cabecera', 'ABM Permisos'); - $FORM->addElement ('hidden', 'id_perfil'); - $FORM->addElement ('text' , 'desc_permiso', 'Descripcion', array('size'=>'50')); - $FORM->addElement ('static', 'responsable' , 'Responsable', $_SESSION['samurai']['login']); - $group[] = HTML_QuickForm::createElement('submit', 'aceptar' , 'Grabar'); - $FORM->addGroup($group,'botones'); +//CREO LOS OBJETO NECESARIOS {{{ + if (@$_GET['id_perfil']) { + $id_perfil = $_GET['id_perfil']; + } + elseif (@$_POST['id_perfil']) { + $id_perfil = $_POST['id_perfil']; + } + else { + $id_perfil = null; + } + $FORM = new MECON_HTML_QuickForm ('perfiles_abm','post','perfiles-abm'); + $SISTEMA = new SAMURAI_Sistema ($DB, $_SESSION['samurai']['id_sistema']); + $PERFIL = new SAMURAI_Perfil ($DB, $id_perfil, + $_SESSION['samurai']['id_sistema']); + + if ($PERFIL->getResponsable()) { + $responsable = $PERFIL->getResponsable(); + } + else { + $responsable = $_SESSION['usuario']; + } + + if (!@$_GET['id_perfil']) { + if (@$_GET['desc_perfil']) { + $PERFIL->setDescripcion(@$_GET['desc_perfil']); + } + else { + $PERFIL->setDescripcion(@$_POST['desc_ant']); + } + } + $descripcion = $PERFIL->getDescripcion(); // }}} -//AGREGO LAS REGLAS DE VALIDACION DE LOS ELEMENTOS {{{ - $FORM->addRule('desc_permiso', 'El campo descripcion es obligatorio', 'required', '', 'client'); +//OBTENGO LOS PERMISOS DEL SISTEMA {{{ + $ASOCIACIONES = $SISTEMA->getAsociaciones(); + $PERMISOS = array (); + foreach ($ASOCIACIONES as $as) { + $clave = $as['id'].'##'.$as['obs']; + $texto = ($as['obs'] != '') ? $as['desc'].' - '.$as['obs']: $as['desc']; + $PERMISOS[$clave] = $texto; + } // }}} -//CREO EL OBJETO PERMISO {{{ - //Obtengo el id del permiso. - $idPermiso =& $FORM->getElement('id_permiso'); - if (isset($_GET['accion']) && $_GET['accion'] != '') { - //Viene en el get es -> modificar o eliminar, me ocupo yo. - $id_permiso = $_GET['idPermiso']; - $idPermiso->setValue($id_permiso); +//AGREGO LOS ELEMENTOS DEL FORM {{{ + if (@$PERMISOS) { + $FORM->addElement ('header', 'cabecera', 'ABM Perfiles'); + $FORM->addElement ('hidden', 'id_perfil', $id_perfil); + $FORM->addElement ('hidden', 'desc_ant' , $descripcion); + $FORM->addElement ('static', 'desc_perfil', 'Descripcion', $descripcion); + $FORM->addElement ('select', 'permisos' , 'Permisos' , $PERMISOS, array('size' => '5', 'multiple' => 'true')); + if ($SAMURAI_PERM->tiene(SAMURAI_PERM_PERFIL_TIPO)) { + $FORM->addElement ('select', 'tipo_perfil', 'Tipo Perfil', array('E' => 'Externo', 'I' => 'Interno', 'D' => 'Dios'), array ('size' => '1')); + } + $FORM->addElement ('hidden', 'responsable', $responsable); + $group[] = HTML_QuickForm::createElement('submit', 'aceptar' , 'Grabar'); + $group[] = HTML_QuickForm::createElement('submit', 'cancelar', 'Cancelar', array ('onClick' => 'javascript:window.location=\'perfiles\';return false;')); + $FORM->addGroup($group,'botones'); } else { - //Viene en el post, no me ocupo yo. - $id_permiso = $idPermiso->getValue(); + $ERROR = new MECON_HTML_Error('El sistema no posee permisos asociados.'); } - $PERMISO = new Permiso ($DB, $id_permiso); // }}} -//SETEO LOS VALORES DE LOS ELEMENTOS DEL OBJETO FORM {{{ +//AGREGO LAS REGLAS DE VALIDACION {{{ + $FORM->addRule ('permisos', 'Se debe seleccionar al menos un permiso', 'required'); +// }}} +//CARGO LOS DATOS SI YA EXISTEN EN BASE {{{ if (isset($_GET['accion']) && $_GET['accion'] != '') { - //MODIFICACION -> agrego la info a los elementos - $desc_permiso =& $FORM->getElement ('desc_permiso'); - $responsable =& $FORM->getElement ('responsable' ); - $group =& $FORM->getElement ('botones' ); - $group =& $group->getElements('aceptar' ); + //MODIFICACION + $id_perfil =& $FORM->getElement ('id_perfil' ); + $desc_perfil =& $FORM->getElement ('desc_perfil'); + $permisos =& $FORM->getElement ('permisos' ); + + if ($SAMURAI_PERM->tiene(SAMURAI_PERM_PERFIL_TIPO)) { + $tipo_perfil =& $FORM->getElement ('tipo_perfil'); + } + $responsable =& $FORM->getElement ('responsable'); + $group =& $FORM->getElement ('botones' ); + $group =& $group->getElements('aceptar' ); $aceptar =& $group[0]; - $desc_permiso->setValue ($PERMISO->getDescripcion()); + $permisos->setSelected($PERFIL->getPermisos()); - if ($PERMISO->getResponsable() != '') { - $responsable->setValue($PERMISO->getResponsable()); + if ($SAMURAI_PERM->tiene(SAMURAI_PERM_PERFIL_TIPO)) { + $tipo_perfil->setSelected($PERFIL->getTipo()); } - + + if ($PERFIL->getResponsable() != '') { + $responsable->setValue($PERFIL->getResponsable()); + } + + //Modifico el valor del boton $aceptar->setValue('Modificar'); - + //ELIMINACION -> modifico el valor del boton if ($_GET['accion'] == 'e') { $aceptar->setValue('Eliminar'); + $aceptar->updateAttributes(array ('onClick' => 'javascript:if (confirm(\'¿Esta Seguro?\')) return true;return false;')); $FORM->freeze(); } } // }}} //VALIDO EL FORMULARIO {{{ if ($FORM->validate()) { - $desc_permiso =& $FORM->getElement ('desc_permiso'); - $responsable =& $FORM->getElement ('responsable' ); - $group =& $FORM->getElement ('botones' ); - $group =& $group->getElements('aceptar' ); - $aceptar =& $group[0]; - - $PERMISO->setDescripcion($desc_permiso->getValue()); - $PERMISO->setResponsable($responsable->_text); //TODO URGENTE Modificar esto. No tiene metodo static::getValue() - - //Verifico si se produjo algun error - $res = $PERMISO->guardarDatos($aceptar->getValue()); - - if (PEAR::isError($res)) { - $TABLA = new Tabla ('cellspacing=0'); - $row = array (''.$res->getMessage().''); - $TABLA->addRow($row,'align=left'); + // VEO SI SE CANCELO {{{ + $botones = $FORM->getSubmitValue('botones'); + if (@$botones['cancelar']) { + header('Location: perfiles'); } + // }}} else { - $FORM->freeze(); - header('Location: permisos'); + $id_perfil =& $FORM->getElement ('id_perfil' ); + $desc_perfil =& $FORM->getElement ('desc_perfil'); + $permisos =& $FORM->getElement ('permisos' ); + + if ($SAMURAI_PERM->tiene(SAMURAI_PERM_PERFIL_TIPO)) { + $tipo_perfil =& $FORM->getElement ('tipo_perfil'); + $tipo_perfil_tmp = $tipo_perfil->getSelected(); + } + $responsable =& $FORM->getElement ('responsable'); + $group =& $FORM->getElement ('botones' ); + $group =& $group->getElements('aceptar' ); + $aceptar =& $group[0]; + + $PERFIL->setDescripcion($desc_perfil->_text ); + $PERFIL->setResponsable($responsable->getValue()); + $PERFIL->setPermisos ($permisos->getSelected()); //Le asigno al perfil los permisos seleccionados + + if ($SAMURAI_PERM->tiene(SAMURAI_PERM_PERFIL_TIPO)) { + $PERFIL->setTipo ($tipo_perfil_tmp['0'] ); + } + + //Grabo y verifico si se produjo algun error + $res = $PERFIL->guardarDatos($aceptar->getValue()); + + if (PEAR::isError($res)) { + $ERROR = new MECON_HTML_Error($res->getMessage()); + if ($aceptar->getValue() == 'Eliminar') { + $FORM->freeze(); + } + } + else { + $FORM->freeze(); + header('Location: perfiles'); + } } } // }}} - //DIBUJO LA PAGINA {{{ - $MARCO = new Marco ('../../conf/confSecciones.php'); - $MARCO->addTitle('ABM Permisos'); - if (isset($TABLA)) { - $MARCO->addBody($TABLA->toHtml(1)); + $imagen = new MECON_HTML_Image('/MECON/images/vinetas_flecha_doble.gif'); + $row = array ($imagen->toHtml().' SISTEMA: '.$SISTEMA->getNombre().''); + $TABLA3 = new MECON_HTML_Tabla ('cellspacing=0'); + $TABLA3->addRow($row,'align=left'); + + $MARCO->addTitle('ABM Perfil'); + $MARCO->addBody($TABLA3); + if (isset($ERROR)) { + $MARCO->addBody($ERROR); } $MARCO->addBody($FORM); $MARCO->display();