Beispiel #1
0
 /**
  * Carga la lista de eventos definidos desde el administrador 
  * La redefinicion filtra solo aquellos utilizados en esta pantalla
  * y agrega los tabs como eventos
  * @ignore 
  */
 protected function cargar_lista_eventos()
 {
     //--- Filtra los eventos definidos por el usuario segun la asignacion a pantallas
     parent::cargar_lista_eventos();
     if (isset($this->_evento_implicito)) {
         //Si el evento implicito no esta en esta pantalla, no usarlo
         $id = $this->_evento_implicito->get_id();
         if (!isset($this->_eventos_usuario_utilizados[$id])) {
             unset($this->_evento_implicito);
         }
     }
     //Como los eventos de pantalla vienen indexados por identificador (al igual que los utilizados por el usuario) podemos usar eso a nuestro favor
     // en lugar de hacer el tipico ciclo, asi obtenemos los eventos usados por el usuario en una linea.
     $this->_eventos_usuario_utilizados = array_intersect_key($this->_eventos_usuario_utilizados, $this->_eventos_pantalla);
     //-- Agrega los eventos internos relacionados con la navegacion tabs
     switch ($this->_info_ci['tipo_navegacion']) {
         case self::NAVEGACION_TAB_HORIZONTAL:
         case self::NAVEGACION_TAB_VERTICAL:
             foreach ($this->_lista_tabs as $id => $tab) {
                 $this->registrar_evento_cambio_tab($id);
             }
             break;
         case self::NAVEGACION_WIZARD:
             list($anterior, $siguiente) = array_elem_limitrofes(array_keys($this->get_lista_tabs()), $this->_info_pantalla['identificador']);
             if ($anterior !== false) {
                 $e = new toba_evento_usuario();
                 $e->set_id('cambiar_tab__anterior');
                 $e->set_etiqueta('< &Anterior');
                 $e->set_estilo_css('ei-boton-izq');
                 $e->set_maneja_datos(false);
                 $this->_eventos_usuario[$e->get_id()] = $e;
                 //Lista de eventos
                 $nuevo[$e->get_id()] = $e;
                 $this->_eventos_usuario_utilizados = array_merge($nuevo, $this->_eventos_usuario_utilizados);
                 //$this->_eventos_usuario_utilizados[ $e->get_id() ] = $e;	//Lista de utilizados
             }
             if ($siguiente !== false) {
                 $e = new toba_evento_usuario();
                 $e->set_id('cambiar_tab__siguiente');
                 $e->set_etiqueta('&Siguiente >');
                 $this->_eventos_usuario[$e->get_id()] = $e;
                 //Lista de eventos
                 $this->_eventos_usuario_utilizados[$e->get_id()] = $e;
                 //Lista de utilizados
             }
             break;
     }
 }
Beispiel #2
0
 /**
  * Recorre las pantallas en el sentido actual buscando una válida para mostrar
  */
 protected function ir_a_limitrofe()
 {
     if (!isset($this->_pantalla_id_eventos)) {
         toba::logger()->crit("No se pudo determinar la pantalla anterior, no se encuentra en la memoria sincronizada");
         return $this->get_pantalla_inicial();
     }
     $limitrofes = array_elem_limitrofes($this->_memoria['tabs'], $this->_pantalla_id_eventos);
     return $limitrofes[$this->_wizard_sentido_navegacion];
 }