* @author Vero Navarro * @author Raquel Borjabad * @author Toni Felix * * @package gvHIDRA */ class gvHidraMainWindow extends Action { /** * Variable de error * @access public * @var IgepError $obj_errorNegocio */ var $obj_errorNegocio; /** * Variable que contendrá el posible mensaje a enviar al panel. Tiene que ser de la clase IgepMensaje * @access public * @var IgepMensaje $obj_mensaje */ var $obj_mensaje; /** * Objeto que permite manejar/registrar el javascript de esta clase * @access public * @var object $obj_IgSmarty IgepArbol. */ var $obj_IgSmarty; /** * constructor. Generará a partir de los parámetros que se le pasen una conexión a al base de datos y un * array de manejadores de tablas (una por cada una de las que mantenga el panel hijo). */ public function __construct() { global $g_error; if(!isset($g_error)) $g_error = new IgepError(); $this->obj_errorNegocio = & $g_error; } // Fin del constructor /** * {@inheritDoc} * @see Action::perform() */ public function perform( $actionMapping, $actionForm ) { //Recogemos la accion y le quitamos el prefijo que nos viene de la ventana $str_accion = $actionForm->get('action'); //Debug:Indicamos que entramos en Negocio y la accion a ejecutar IgepDebug::setDebug(5,'gvHidraMainWindow: ejecutamos acción '.$str_accion); $comunica = new IgepComunicacion(null); //Cargamos los posibles Forwards $comunica->setMapping($actionMapping); //Parseamos el REQUEST $comunica->setOperation('iniciarVentana'); $comunica->construirArrayIniciarVentana(); //Parametros no utilizados a null $vacio= null; $comunicaUsuario = new IgepComunicaUsuario($comunica,$vacio,$vacio); switch ($str_accion) { case 'abrirAplicacion': //Parseamos el menú y lo guardamos en Sesión $vMenuEstructuraPHP = gvHidraMenuParser::parseaMenus(); IgepSession::guardaVariable( "global", "menuPHP", $vMenuEstructuraPHP); //llamamos a un método para que los sobreescriban si quieren añadir comportamiento. $res = $this->openApp($comunicaUsuario); //Permite redirigir la entrada a un actionForward definido por el usuario if(is_object($res)) $actionForward = $res; elseif($res == -1) $actionForward = $actionMapping->get('gvHidraCloseApp'); else $actionForward = $actionMapping->get('gvHidraOpenApp'); break; case 'cerrarAplicacion': $res = $this->closeApp($comunicaUsuario); if(is_object($res)) $actionForward = $res; elseif($res == -1){ $actionForward = new ActionForward('gvHidraNoAction'); } else $actionForward = $actionMapping->get('gvHidraCloseApp'); break; case 'volverPrincipal': //llamamos a un método para que los sobreescriban si quieren añadir comportamiento. $res = $this->returnHome($comunicaUsuario); //Permite redirigir la entrada a un actionForward definido por el usuario if(is_object($res)) $actionForward = $res; elseif($res == -1) $actionForward = $actionMapping->get('gvHidraCloseApp'); else $actionForward = $actionMapping->get('gvHidraPrincipal'); break; case 'gvhKeepAliveSession'; $actionForward = $actionMapping->get('gvHidraCloseApp'); $destinoSalida = $actionForward->getPath(); if (IgepSession::keepAliveSession()) { echo gvHidraUTF8::toUTF8('1'); } else { echo gvHidraUTF8::toUTF8($destinoSalida); } die; break; default: throw new Exception('Error: La acción '.$str_accion.' no se reconoce.'); break; }//Fin switch IgepSession::_guardaPanelIgep('principal',$this); return $actionForward; } // Fin de perform /** * Este método crea un IgepMensaje y se lo asigna al panel. El primer parámetro corresponde * con el id del mensaje (ver mensaje.php) y el segundo, que es opcional, permite parametrizar * el mensaje pasando en un array los campos que se sustituirán en la cadena del mensaje. * * @param string $idMensaje Cadena que contiene el id del mensaje ({@see mensages.php}). * @param array $params Array que contiene parámetros del mensaje. */ public function showMessage( $idMensaje, $params=null ) { $this->obj_mensaje = new IgepMensaje( $idMensaje, $params ); } //Fin de showMessage /** * Método virtual que se sobrescribe en los hijos para poder cambiar el comportamiento en la apertura de la aplicación * * @param IgepComunicaUsuario $objDatos Datos que intervienen en la operación. * @return int */ public function openApp( $objDatos ) { return 0; } //Fin de openApp /** * Método virtual que se sobrescribe en los hijos para poder cambiar el comportamiento del cierre de la aplicación * * @param IgepComunicaUsuario $objDatos Datos que intervienen en la operación. * @return int */ public function closeApp( $objDatos ) { return 0; } //Fin de closeApp /** * Método virtual que se sobrescribe en los hijos para poder cambiar el comportamiento al ir a la página de inicio (home) * * @param IgepComunicaUsuario $objDatos Datos que intervienen en la operación. * @return int */ public function returnHome( $objDatos ) { return 0; } //Fin de returnHome /** * Método virtual que se sobrescribe en los hijos para poder indicar si es la ventana es modal * * @final * @return boolean */ public final function isModal() { return false; } //Fin de isModal } //End gvHidraMainWindow