* @author Vero: * @author Raquel: * @author Toni: * * @package gvHIDRA */ class gvHidraMainWindow extends Action { /** * variable de error * * @var object obj_errorNegocio */ var $obj_errorNegocio; /** * Variable que contendrá el posible mensaje a enviar al panel. Tiene que ser de la clase IgepMensaje * * @var object $obj_mensaje */ var $obj_mensaje; /** * Objeto que permite manejar/registrar el javascript de esta clase * @access private * @var object 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; } /** * Método que se ejecuta tras el constructor y que permite seleccionar la acción a realizar. * En esta clase se encuentran las siguientes acciones genéricas: *
    * camposDependientes: recalcula listas dependientes y dispara acciones de interfaz. * abrirVentanaSeleccion: abre la ventana de Selección. * buscarVentanaSeleccion: realiza la busqueda en la ventana de Selección. *
*/ 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); switch ($str_accion) { case 'abrirAplicacion': //Comprobamos el navegador $navegador = $_SERVER['HTTP_USER_AGENT']; $compatible = true; switch($navegador) { case (strpos($navegador,'Firefox')!==false): case (strpos($navegador,'Chrome')!==false): $compatible = true; break; case (strpos($navegador,'MSIE')!==false): case (strpos($navegador,'Safari')!==false): case (strpos($navegador,'Opera')!==false): $compatible = false; break; default: $compatible = false; break; } if(!$compatible) $this->showMessage('IGEP-22'); $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); //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(); if(is_object($res)) $actionForward = $res; elseif($res == -1) { $actionForward = new ActionForward('gvHidraNoAction'); } else $actionForward = $actionMapping->get('gvHidraCloseApp'); 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 $idMensaje string Cadena que contiene el id del mensaje. Ver mensaje.php * @param $mDatos Array Array que contiene parámetros del mensaje. * @return none */ public function showMessage($idMensaje,$params=null) { $this->obj_mensaje = new IgepMensaje($idMensaje,$params); } /** * Método virtual que se sobrescribe en los hijos para poder cambiar el comportamiento en la apertura de la aplicación * @return int */ public function openApp($objDatos) { return 0; } /** * Método virtual que se sobrescribe en los hijos para poder cambiar el comportamiento del cierre de la aplicación * @return int */ public function closeApp() { return 0; } }//Fin clase gvHidraMainWindow ?>