X-Git-Url: https://git.llucax.com/mecon/samurai.git/blobdiff_plain/38d0d26cbb40a662e0676e14d848ab76a976aeeb..52ec6b73aae5937cd9c04e150e6b261b8be98b01:/lib/SAMURAI/HTML/Perfil.php diff --git a/lib/SAMURAI/HTML/Perfil.php b/lib/SAMURAI/HTML/Perfil.php index 931d707..372abf8 100644 --- a/lib/SAMURAI/HTML/Perfil.php +++ b/lib/SAMURAI/HTML/Perfil.php @@ -20,10 +20,60 @@ // $Id$ // -//require_once 'MECON/general.php'; -//prepend_include_path('/home/mmarrese/public_html/meconlib/lib/'); +/** \page page_samurai_html_perfil Perfil Embebido -//REQUIRE ONCE GENERALES {{{ +\section page_samurai_html_perfil_descripcion Descripcion + Funcion que sirve para embeber la funcionalidad de los perfiles dentro de + los sistemas que asi lo requieran (Es una copia de la funcionalidad de la + seccion). + Necesita para funcionar que se le pase como parametro la referencia al + objeto MECON_Marco que se este utilizando, ademas del identificador del + sistema del sistema en el cual se esta trabajando. + El funcionamiento es completamente independiente del sistema en el cual se + trabaje, no es necesario que se ingrese como seccion o subseccion. De hecho + como se ve en el ejemplo solo se embebe una tabla o formulario pero se + pueden agregar cosas particulares antes y despues de el. + + \note Trabaja con variables de sesion asi que es necesario que antes de llamar a + esta funcion se haya realizado un session_start() (Por ejemplo en el prepend). + +\section page_samurai_html_perfil_funcionamiento Funcionamiento + Al ser una copia de la seccion de Samurai, los permisos y validaciones que + se realizan en esta funcion son las mismas que se realizan en Samurai. + + \subsection page_samurai_html_perfil_funcionamiento_validaciones Validaciones + Se realizan las siguientes validaciones: + - Los nombres de los perfiles nuevos deben ser distintos. + - Los espacios entre las palabras que componen el nombre de un + perfil son eliminados. Ej: Agregar    Usuario + se cambia por Agregar Usuario. + - Es obligatorio que los perfiles contengan al menos un permiso. + - No puede haber dos perfiles con los mismos permisos. + - No se pueden borrar perfiles que esten asociados a usuarios. + +\section page_samurai_html_perfil_ejemplo Ejemplo + La utilizacion de perfiles embebido no genera condiciones, queda a criterio + del desarrollador incluir esta funcionalidad en el lugar que quiera. + + De esta manera se agrega la funcionalidad: + \code + include 'SAMURAI/HTML/Perfil.php'; + + SAMURAI_HTML_Perfil($MARCO, $ID_SISTEMA); + \endcode + + En donde $MARCO es el objeto MECON_Marco que utiliza el sistema y + $ID_SISTEMA es el identificador numerico del sistema en el cual se esta + trabajando. + + Antes o despues de esto se pueden agregar componentes pertenecientes al + sistema. + + \note Es necesario para ver el contenido de la pagina hacer + $MARCO->display() al final de la misma. +*/ + +//REQUIRE ONCE {{{ require_once 'SAMURAI/DB.php'; require_once 'SAMURAI/Perm.php'; require_once 'SAMURAI/constantes.php'; @@ -37,24 +87,16 @@ require_once 'MECON/HTML/Image.php'; require_once 'PEAR.php'; // }}} -// Funciones para agregar la seccion SAMURAI_Perfil en los sistemas. -// Con esto se pueden embeber el abm de perfiles como una seccion/subseccion mas -// de un sistema cualquiera. -// Es necesario para que funcione que se haya realizado un session_start() -// antes, por ejemplo en el prepend. - - /** - * Funcion que se encarga agregar los componentes necesarios al sistema para que - * se pueda realizar un abm de perfiles. - * Sin los parametros no funciona - * - * @param MECON_Marco &$MARCO Referencia al objeto MECON_Marco que se este utilizando en la pagina - * @param int $id_sistema Identificador del sistema en el cual se esta trabajando - * - * @return void - */ -//SAMURAI_Perfil_Html {{{ -function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { +/** Funcion que se encarga agregar los componentes necesarios al sistema para + * que se pueda realizar un abm de perfiles. Sin los parametros no funciona + * + * @param MECON_Marco &$MARCO Referencia al objeto MECON_Marco que se este utilizando en la pagina + * @param int $id_sistema Identificador del sistema en el cual se esta trabajando + * + * @return void + */ +//SAMURAI_HTML_Perfil {{{ +function SAMURAI_HTML_Perfil(&$MARCO, $id_sistema) { //INICIALIZO OBJETOS GENERALES {{{ //REALIZO CONEXION @@ -64,13 +106,23 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { $SAMURAI_PERM = new SAMURAI_Perm ($_SESSION['usuario'], $id_sistema, $DB); //}}} + if (@$_POST['samurai_accion'] == 'abm' || @$_GET['samurai_perfiles'] == 'abm') { + $OPCION = 'abm'; + } + elseif (@$_POST['samurai_accion'] == 'nuevo' || @$_GET['samurai_perfiles'] == 'nuevo') { + $OPCION = 'nuevo'; + } + else { + $OPCION = 'listado'; + } + //POSIBLES ACCIONES // listado -> Listado de los perfiles ya creados en el sistema. // nuevo -> Pantalla de seleccion o de ingreso de un nuevo nombre. // abm -> Formulario para la carga de la info del perfil. //LISTADO {{{ - if ((!@$_GET['samurai_perfiles'] && !@$_POST['samurai_accion'])|| @$_GET['samurai_perfiles'] == 'listado') { + if ($OPCION == 'listado') { //VEO SI PUEDE ACCEDER{{{ $SAMURAI_PERM->chequear(SAMURAI_ALTA_PERFIL,SAMURAI_BAJA_PERFIL,SAMURAI_MODI_PERFIL); //}}} @@ -139,7 +191,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { } //}}} //NUEVO {{{ - elseif (@$_GET['samurai_perfiles'] == 'nuevo' || @$_POST['samurai_accion'] == 'nuevo') { + elseif ($OPCION == 'nuevo') { //VEO SI PUEDE ACCEDER{{{ $SAMURAI_PERM->chequear(SAMURAI_ALTA_PERFIL); //}}} @@ -150,7 +202,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { //AGREGO LOS ELEMENTOS DEL FORM {{{ $FORM->addElement ('hidden', 'samurai_accion', 'nuevo'); $FORM->addElement ('header', 'cabecera' , 'Nuevo Perfil'); - $FORM->addElement ('select', 'perfiles' , 'Perfiles', '', array('size' => '1')); + $FORM->addElement ('select', 'perfiles' , 'Perfiles', null, array('size' => '1')); $FORM->addElement ('text' , 'filtro' , 'Filtrar' , array('size' => '50')); $FORM->addElement ('text' , 'descripcion', 'Nombre' , array('size' => '50')); $group[] = HTML_QuickForm::createElement('submit', 'continuar', 'Continuar'); @@ -166,7 +218,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { $perfiles =& $FORM->getElement('perfiles'); $descripcion =& $FORM->getElement('descripcion'); if (@$botones['cancelar']) { - header('Location: '.$_SERVER['PHP_SELF']); + header('Location: '.$_SERVER['PHP_SELF'].'/'); } if (!isset($botones['filtrar'])) { $PERFILES = SAMURAI_Perfil::getArrayPerfiles($DB); @@ -245,7 +297,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { } //}}} //ABM {{{ - elseif (@$_GET['samurai_perfiles'] == 'abm' || @$_POST['samurai_accion'] == 'abm') { + elseif ($OPCION == 'abm') { //VEO SI PUEDE ACCEDER{{{ $SAMURAI_PERM->chequear(SAMURAI_ALTA_PERFIL,SAMURAI_BAJA_PERFIL,SAMURAI_MODI_PERFIL); //}}} @@ -261,7 +313,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { } $FORM =& new MECON_HTML_QuickForm ('samurai_perfiles','post',$_SERVER['PHP_SELF']); $SISTEMA =& new SAMURAI_Sistema ($DB, $id_sistema); - $PERFIL =& new SAMURAI_Perfil ($DB, $id_perfil); + $PERFIL =& new SAMURAI_Perfil ($DB, $id_perfil, $id_sistema); if ($PERFIL->getResponsable()) { $responsable = $PERFIL->getResponsable(); @@ -357,6 +409,8 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { } // }}} else { + $samurai_accion =& $FORM->getElement('samurai_accion'); + $samurai_accion->setValue('listado'); $id_perfil =& $FORM->getElement ('id_perfil' ); $desc_perfil =& $FORM->getElement ('desc_perfil'); $permisos =& $FORM->getElement ('permisos' ); @@ -375,7 +429,7 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { $PERFIL->setPermisos ($permisos->getSelected()); //Le asigno al perfil los permisos seleccionados if ($SAMURAI_PERM->tiene(SAMURAI_TIPO_PERFIL)) { - $PERFIL->setTipo ($tipo_perfil_tmp['0'] ); + $PERFIL->setTipo($tipo_perfil_tmp['0']); } //Grabo y verifico si se produjo algun error @@ -389,7 +443,8 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { } else { $FORM->freeze(); - header('Location: '.$_SERVER['PHP_SELF']); + header('Location: '.$_SERVER ['PHP_SELF'].'/'); + exit; } } } @@ -400,7 +455,6 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { $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); @@ -410,4 +464,5 @@ function SAMURAI_Perfil_Html(&$MARCO, $id_sistema) { } //}}} } +//}}} ?>