示例#1
0
 function get_molde_subclase()
 {
     $molde = $this->get_molde_vacio();
     $molde->agregar_bloque($this->get_molde_eventos_js());
     $molde->agregar_bloque($this->get_molde_eventos_sobre_fila());
     // Cortes de control
     $molde->agregar(new toba_codigo_separador_php('Configuracion de cortes de control', 'Pantallas'));
     $datos_cortes = rs_ordenar_por_columna($this->datos['_info_cuadro_cortes'], 'orden');
     foreach ($datos_cortes as $corte) {
         //-- Sumarizar cc
         $comentario_param = 'Reemplazar esta línea para cambiar el titulo de la sumarizacion!';
         $comentario = 'Ventana que dado un conjunto de filas de un corte de control permite sumarizarlas de forma personalizada';
         $extra = 'Reemplazar "propia" con algún otro identificador, para distinguir la sumarizacion y poder realizar una por método ';
         $parametros = '@param $filas Arreglo de filas tipo recordset';
         $metodo = new toba_codigo_metodo_php('sumarizar_cc__' . $corte['identificador'] . '__propia', array('$filas'), array($comentario_param, $comentario, $extra, $parametros));
         $metodo->set_doc($comentario);
         $molde->agregar($metodo);
         $molde->ultimo_elemento()->set_contenido('return 0;');
         //-- Cabecera de corte
         $comentario = 'Ventana que permite determinar el titulo cabecera de un corte de control';
         $metodo = new toba_codigo_metodo_php('html_cabecera_cc_contenido__' . $corte['identificador'], array('&$nodo'), array($comentario));
         $metodo->set_doc($comentario);
         $molde->agregar($metodo);
         $molde->ultimo_elemento()->set_contenido('echo \'descripcion\';');
         $molde->agregar(new toba_codigo_metodo_php('html_pie_cc_contenido__' . $corte['identificador'], array('&$nodo')));
         $molde->ultimo_elemento()->set_contenido('echo \'descripcion\';');
         $molde->agregar(new toba_codigo_metodo_php('html_pie_cc_cabecera__' . $corte['identificador'], array('&$nodo')));
         $molde->ultimo_elemento()->set_contenido('return \'descripcion\';');
     }
     return $molde;
 }
示例#2
0
 function evt__items__alfabeticamente($datos)
 {
     $this->evt__items__modificacion($datos);
     $filas = $this->dep('datos')->get_filas();
     $ordenadas = rs_ordenar_por_columna($filas, 'nombre');
     $orden = 1;
     foreach (array_keys($ordenadas) as $id) {
         $ordenadas[$id]['orden'] = $orden;
         $ordenadas[$id][apex_ei_analisis_fila] = 'M';
         $orden++;
     }
     $this->dep('datos')->procesar_filas($ordenadas);
 }
示例#3
0
 function conf__cuadro(toba_ei_cuadro $cuadro)
 {
     if (!isset($this->s__datos) || $this->filtrar) {
         $carpeta = toba::instancia()->get_path_proyecto(toba_editor::get_proyecto_cargado()) . '/php';
         $carpeta = toba_manejador_archivos::path_a_plataforma($carpeta);
         $extra = '';
         if (isset($this->s__filtro['nombre'])) {
             $extra = "{$this->s__filtro['nombre']}.*";
         }
         $archivos = toba_manejador_archivos::get_archivos_directorio($carpeta, "/{$extra}\\.php\$/", true);
         $modelo = toba_editor::get_modelo_proyecto();
         $estandar = $modelo->get_estandar_convenciones();
         $datos = array();
         foreach ($archivos as $archivo) {
             $path_relativo = substr($archivo, strlen($carpeta) + 1);
             $nombre = basename($archivo);
             if (strlen($nombre) > 30) {
                 $nombre = substr($nombre, 0, 30) . '...';
             }
             $info = array('archivo' => $nombre, 'path' => $path_relativo);
             if (isset($this->s__filtro['convenciones']) && $this->s__filtro['convenciones']) {
                 $errores = $estandar->validar(array($archivo));
                 $info['errores'] = $errores['totals']['errors'];
                 $info['warnings'] = $errores['totals']['warnings'];
             }
             $datos[] = $info;
         }
         $this->s__datos = rs_ordenar_por_columna($datos, 'archivo');
     }
     if (isset($this->s__filtro['convenciones']) && $this->s__filtro['convenciones']) {
         $columnas = array();
         $columnas[0]['clave'] = 'errores';
         $columnas[0]['titulo'] = toba_recurso::imagen_toba('error.gif', true);
         $columnas[0]['estilo'] = 'col-num-p1';
         $columnas[1]['clave'] = 'warnings';
         $columnas[1]['titulo'] = toba_recurso::imagen_toba('warning.gif', true);
         $columnas[1]['estilo'] = 'col-num-p1';
         $cuadro->agregar_columnas($columnas);
     }
     $cuadro->desactivar_modo_clave_segura();
     $cuadro->set_datos($this->s__datos);
 }
示例#4
0
 function conf__form_paleta(toba_ei_formulario_ml $form)
 {
     //-- Busca patrones existentes en el template
     $template = file_get_contents($this->template);
     $inicio = '{$';
     $fin = '}';
     $patron = '/' . preg_quote($inicio) . '(.*)' . $fin . '/';
     preg_match_all($patron, $template, $salida);
     $existentes = $salida[1];
     $datos = $this->dep('datos')->get();
     if (isset($datos['paleta'])) {
         $arreglo = unserialize($datos['paleta']);
         foreach ($existentes as $clave) {
             if (!isset($arreglo[$clave])) {
                 $arreglo[$clave] = '';
             }
         }
         $filas = array();
         foreach ($arreglo as $clave => $valor) {
             $pos = strpos($clave, '_');
             $tipo = substr($clave, 0, $pos);
             $clase = substr($clave, $pos + 1);
             $filas[$clase][$tipo] = $valor;
         }
         $paletas = array();
         foreach ($filas as $clase => $valores) {
             $valores['clave'] = $clase;
             $valores['nombre'] = ucfirst(str_replace('_', ' ', $clase));
             foreach ($this->colores as $color) {
                 if (!isset($valores[$color])) {
                     $valores[$color] = apex_ef_no_seteado;
                 }
             }
             $paletas[] = $valores;
         }
         $paletas = rs_ordenar_por_columna($paletas, 'nombre');
         $form->set_datos($paletas);
     }
 }
示例#5
0
 protected function get_template_lineal()
 {
     $salida = '';
     $efs = $this->get_dbr_efs()->get_filas();
     $efs = rs_ordenar_por_columna($efs, 'orden');
     $i = 0;
     $total = count($efs);
     foreach ($efs as $ef) {
         if (!isset($ef['desactivado']) || !$ef['desactivado']) {
             $salida .= '[ef id=' . $ef['identificador'] . ']';
         }
     }
     return $salida;
 }
示例#6
0
文件: ci_efs.php 项目: emma5021/toba
 function get_posibles_maestros()
 {
     $filas = $this->get_tabla()->get_filas(null, true);
     $posibles = array();
     foreach ($filas as $clave => $datos) {
         if ($clave != $this->s__seleccion_efs) {
             $posibles[] = array($datos[$this->campo_clave], $datos[$this->campo_clave], $datos['orden']);
         }
     }
     $posibles = rs_ordenar_por_columna($posibles, 2, SORT_ASC);
     //Ordena posteriormente, sino rompe las claves
     return $posibles;
 }
示例#7
0
    function get_molde_subclase()
    {
        $molde = $this->get_molde_vacio();
        //************** Elementos PROPIOS *************
        //-- Ini operacion
        $doc = array();
        $doc[] = "Se ejecuta por única vez cuando el componente entra en la operación.";
        $doc[] = "Es útil por ejemplo para inicializar un conjunto de variables de sesion y evitar el chequeo continuo de las mismas";
        $doc[] = "Hay situaciones en las que su ejecución no coincide con el instante inicial de operación:";
        $doc[] = " - Si el componente es un ci dentro de otro ci, recién se ejecuta cuando entra a la operacion que no necesariamente es al inicio, si por ejemplo se encuentra en la 3er pantalla del ci principal.";
        $doc[] = " - Si se ejecuta una limpieza de memoria (comportamiento por defecto del evt__cancelar)";
        $metodo = new toba_codigo_metodo_php('ini__operacion', array(), $doc);
        $metodo->set_doc('[api:Componentes/Eis/toba_ci#ini__operacion Ver doc]');
        $molde->agregar($metodo);
        //-- Final
        $doc = "Ventana de extensión previa a la destrucción del componente, al final de la atención de los servicios";
        $metodo = new toba_codigo_metodo_php('fin', array(), array($doc));
        $metodo->set_doc($doc);
        $molde->agregar($metodo);
        $molde->agregar(new toba_codigo_separador_php('Configuraciones', 'Configuracion', 'grande'));
        //-- Conf
        $doc = array();
        $doc[] = "Ventana que se ejecuta al inicio de la etapa de configuración. Antes de la configuración de la pantalla y sus componentes";
        $doc[] = "Se utiliza por ejemplo para determinar qué pantalla mostrar, eliminar tabs, etc.";
        $metodo = new toba_codigo_metodo_php('conf', array(), $doc);
        $metodo->set_doc('[api:Componentes/Eis/toba_ci#conf Ver doc]');
        $molde->agregar($metodo);
        //-- Configuracion de pantallas -----------
        $datos_pantallas = rs_ordenar_por_columna($this->datos['_info_ci_me_pantalla'], 'orden');
        foreach ($datos_pantallas as $pantalla) {
            $doc = array();
            $doc[] = 'Ventana de extensión para configurar la pantalla. Se ejecuta previo a la configuración de los componentes pertenecientes a la pantalla ';
            $doc[] = 'por lo que es ideal por ejemplo para ocultarlos en base a una condición dinámica, ej. $pant->eliminar_dep("tal") ';
            $doc[] = '@param toba_ei_pantalla $pantalla';
            $metodo = new toba_codigo_metodo_php('conf__' . $pantalla['identificador'], array('toba_ei_pantalla $pantalla'), $doc);
            $metodo->set_doc(implode("\n", $doc));
            $molde->agregar($metodo);
            //Aca incluyo los metodos de entrada y salida de pantallas.
            $doc = array();
            $doc[] = 'Ventana de extension para ejecutar controles antes de entrar a la pagina.';
            $doc[] = 'Se ejecuta luego de lanzar los eventos del ci.';
            $doc[] = 'Si se lanza una excepcion se evita el cambio de pantalla.';
            $doc[] = '[wiki:Referencia/Objetos/ci#Controlandolaentradaylasalida Ver más]';
            $nombre_metodo_entrada = 'evt__' . $pantalla['identificador'] . '__entrada';
            $metodo = new toba_codigo_metodo_php($nombre_metodo_entrada, array(), $doc);
            $metodo->set_doc(implode("\n", $doc));
            $molde->agregar($metodo);
            $doc = array();
            $doc[] = 'Ventana de extension para ejecutar controles antes de salir de la pagina.';
            $doc[] = 'Se ejecuta luego de lanzar los eventos del ci.';
            $doc[] = 'Si se lanza una excepcion se evita el cambio de pantalla.';
            $doc[] = '[wiki:Referencia/Objetos/ci#Controlandolaentradaylasalida Ver más]';
            $nombre_metodo_salida = 'evt__' . $pantalla['identificador'] . '__salida';
            $metodo = new toba_codigo_metodo_php($nombre_metodo_salida, array(), $doc);
            $metodo->set_doc(implode("\n", $doc));
            $molde->agregar($metodo);
        }
        //-- Post Configurar
        $doc = "Ventana para insertar lógica de la configuración del ci y sus dependencias";
        $metodo = new toba_codigo_metodo_php('post_configurar', array(), array($doc));
        $metodo->set_doc($doc);
        $molde->agregar($metodo);
        //-- Eventos propios ----------------------
        if (count($this->eventos_predefinidos()) > 0) {
            $molde->agregar(new toba_codigo_separador_php('Eventos', null, 'grande'));
            foreach ($this->eventos_predefinidos() as $evento => $info) {
                if ($info['info']['accion'] != 'V') {
                    //No es Vinculo
                    if ($evento == 'cancelar') {
                        $doc = array("Originalmente este método limpia las variables y definiciones del componente, y en caso de exisitr un CN asociado ejecuta su cancelar. Para mantener este comportamiento llamar a parent::evt__cancelar");
                    } elseif ($evento == 'procesar') {
                        $doc = array("Originalmente este método si existe un CN asociado ejecuta su procesar. Para mantener este comportamiento llamar a parent::evt__procesar");
                    } else {
                        $doc = array("Atrapa la interacción del usuario a través del botón asociado. El método no recibe parámetros");
                    }
                    $metodo = new toba_codigo_metodo_php('evt__' . $evento, array(), $doc);
                    $metodo->set_doc(implode("\n", $doc));
                    $molde->agregar($metodo);
                }
            }
        }
        //-- Post Eventos
        $doc = "Ventana que se ejecuta una vez que todos los eventos se han disparado para este objeto";
        $metodo = new toba_codigo_metodo_php('post_eventos', array(), array($doc));
        $metodo->set_doc($doc);
        $molde->agregar($metodo);
        //**************** DEPENDENCIAS ***************
        if (count($this->subelementos) > 0) {
            foreach ($this->subelementos as $id => $elemento) {
                $es_ei = $elemento instanceof toba_ei_info && !$elemento instanceof toba_ci_info;
                $rol = $elemento->rol_en_consumidor();
                if ($es_ei) {
                    $molde->agregar(new toba_codigo_separador_php($rol, null, 'grande'));
                    //Metodo de CONFIGURACION
                    $tipo = $elemento->get_clase_nombre_final();
                    $nombre_instancia = $elemento->get_nombre_instancia_abreviado();
                    $metodo = new toba_codigo_metodo_php('conf__' . $rol, array($tipo . ' $' . $nombre_instancia), $elemento->get_comentario_carga());
                    $metodo->set_grupo($rol);
                    $ei = get_class($elemento);
                    $ei = substr($ei, 5, strlen($ei) - 10);
                    $metodo->set_doc("Ventana para configurar al componente. Por lo general se le brindan datos a través del método <pre>set_datos(\$datos)</pre>. \n\t\t\t\t\t\t\t\t\t\t[wiki:Referencia/Objetos/{$ei}#Configuraci%C3%B3n Ver más]");
                    $molde->agregar($metodo);
                    //Eventos predefinidos del elemento
                    if (count($elemento->eventos_predefinidos()) > 0) {
                        foreach ($elemento->eventos_predefinidos() as $evento => $info) {
                            $metodo = new toba_codigo_metodo_php('evt__' . $rol . '__' . $evento, $info['parametros'], $info['comentarios']);
                            $metodo->set_grupo($rol);
                            $metodo->set_doc('Atrapa la interacción del usuario con el botón asociado a la dependencia. 
												Recibe por parámetro los datos que acarrea el evento, por ejemplo si es un formulario los datos del mismo.
												[wiki:Referencia/Eventos#Listeners Ver más]');
                            $molde->agregar($metodo);
                            //Si es evento sobre fila brindo la oportunidad de configurarlo (caso ML y Cuadro)
                            if (isset($info['info']['sobre_fila']) && $info['info']['sobre_fila'] == 1) {
                                $nombre = 'conf_evt__' . $rol . '__' . $evento;
                                $parametros = array('toba_evento_usuario $evento', '$fila');
                                $doc = array();
                                $doc[] = 'Permite configurar el evento por fila.';
                                $doc[] = 'Útil para decidir si el evento debe estar disponible o no de acuerdo a los datos de la fila';
                                $doc[] = "[wiki:Referencia/Objetos/{$ei}#Filtradodeeventosporfila Ver más]";
                                //Agrego el metodo correspondiente para la configuracion del evento
                                $metodo = new toba_codigo_metodo_php($nombre, $parametros, $doc);
                                $metodo->set_doc(implode("\n", $doc));
                                $metodo->set_grupo($rol);
                                $molde->agregar($metodo);
                            }
                        }
                    }
                }
            }
        }
        //***************** JAVASCRIPT *****************
        $molde->agregar_bloque($this->get_molde_eventos_js());
        return $molde;
    }
示例#8
0
 protected function get_template_columnas($columnas)
 {
     $salida = '<table>';
     $busqueda = $this->get_entidad()->tabla('objetos_pantalla')->nueva_busqueda();
     $busqueda->set_padre('pantallas', $this->get_pant_actual());
     $deps = $busqueda->buscar_filas();
     $deps = rs_ordenar_por_columna($deps, 'orden');
     $i = 0;
     $total = count($deps);
     foreach ($deps as $dep) {
         if ($i % $columnas == 0) {
             $salida .= '<tr>';
         }
         $salida .= '<td>[dep id=' . $dep['dependencia'] . ']</td>';
         $i++;
         if ($i % $columnas == 0) {
             $salida .= '</tr>';
         }
     }
     $salida .= '</table>';
     return $salida;
 }