// $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';
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
$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);
//}}}
}
//}}}
//NUEVO {{{
- elseif (@$_GET['samurai_perfiles'] == 'nuevo' || @$_POST['samurai_accion'] == 'nuevo') {
+ elseif ($OPCION == 'nuevo') {
//VEO SI PUEDE ACCEDER{{{
$SAMURAI_PERM->chequear(SAMURAI_ALTA_PERFIL);
//}}}
//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');
$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);
}
//}}}
//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);
//}}}
}
$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();
}
// }}}
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' );
$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
}
else {
$FORM->freeze();
- header('Location: '.$_SERVER['PHP_SELF']);
+ header('Location: '.$_SERVER ['PHP_SELF'].'/');
+ exit;
}
}
}
$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);
}
//}}}
}
+//}}}
?>