Example #1
0
 function test_tag_sin_desc()
 {
     $texto = "[test:Referencia/PaginaWiki]";
     $this->assertFalse(toba_parser_ayuda::es_texto_plano($texto));
     $salida = toba_parser_ayuda::parsear($texto, true);
     $esperado = "<test>Referencia/PaginaWiki</test>";
     $this->assertEqual($salida, $esperado);
 }
Example #2
0
 function barra_superior()
 {
     echo "<div id='barra-superior' class='barra-superior barra-superior-tit barra-popup'>\n";
     $info = toba::solicitud()->get_datos_item();
     echo "<div class='item-barra'>";
     if (trim($info['item_descripcion']) != '') {
         $desc = toba_parser_ayuda::parsear(trim($info['item_descripcion']));
         $ayuda = toba_recurso::ayuda(null, $desc, 'item-barra-ayuda', 0);
         echo "<div {$ayuda}>";
         echo toba_recurso::imagen_toba("ayuda_grande.gif", true);
         echo "</div>";
     }
     echo "<div class='item-barra-tit'>" . $this->titulo_item() . "</div>";
     echo "</div>\n\n";
 }
Example #3
0
 protected function generar_ayuda()
 {
     $mensaje = toba::mensajes()->get_operacion_actual();
     if (isset($mensaje)) {
         if (strpos($mensaje, ' ') !== false) {
             //Detecta si es una url o un mensaje completo
             $desc = toba_parser_ayuda::parsear($mensaje);
             $ayuda = toba_recurso::ayuda(null, $desc, 'item-barra-ayuda', 0);
             echo "<div {$ayuda}>";
             echo toba_recurso::imagen_toba("ayuda_grande.gif", true);
             echo "</div>";
         } else {
             if (!toba_parser_ayuda::es_texto_plano($mensaje)) {
                 $mensaje = toba_parser_ayuda::parsear($mensaje, true);
                 //Version resumida
             }
             $js = "abrir_popup('ayuda', '{$mensaje}', {width: 800, height: 600, scrollbars: 1})";
             echo "<a class='barra-superior-ayuda' href='#' onclick=\"{$js}\" title='Abrir ayuda'>" . toba_recurso::imagen_toba("ayuda_grande.gif", true) . "</a>";
         }
     }
 }
Example #4
0
    function generar_layout()
    {
        $api = toba_parser_ayuda::parsear_api_js('index', 'documentación javascript', 'toba_editor');
        $codigo_ej = '<?php
class ci_X extends toba_ci
{		
	    function extender_objeto_js()
	    {
	    	echo "
	    		{$this->objeto_js}.evt__guardar = function() {
	    			return prompt(\\"Desea Guardar?\\");
	    		}
	    	";
	    }
}
?>
';
        echo "\n\t\t\t<p>\n\t\t\t\tEn el capítulo de componentes se utilizó la extensión PHP\n\t\t\t\tpara personalizar su comportamiento. Dentro de la extensión en PHP\n\t\t\t\tes posible modificar el comportamiento del componente en el cliente utilizando \n\t\t\t\tjavascript. En este capítulo se va trabajar exclusivamente con la parte Javascript\n\t\t\t\tde los componentes, para esto Toba cuenta con una jerarquía de clases\n\t\t\t\tsimilar a la que existe en PHP, para profundizar sobre la API está disponible la {$api}.\n\t\t\t</p>\n\t\t\t\n\t\t\t<p>\n\t\t\t\tEs importante tener en cuenta la forma en la cual se extiende un componente en javascript.\n\t\t\t\tA continuación se muestra un código muy simple que agrega una confirmación en el cliente \n\t\t\t\tcuando el usuario clickea Guardar: \n\t\t\t</p>\n\t\t";
        echo mostrar_php($codigo_ej);
        echo "\n\t\t\t<p>\n\t\t\t\tEl código muestra que el método PHP a extender es <strong>extender_objeto_js()</strong>\n\t\t\t\tdentro del cual es necesario insertar el código Javascript. Este lenguaje no\n\t\t\t\tsoporta clases en la forma convencional de los lenguajes Java o PHP, por lo cual\n\t\t\t\tno se <em>hereda</em> del componente sino que directamente se lo cambia, esto es \n\t\t\t\tpor ejemplo si se quiere agregar un método a un objeto <em>mi_componente</em>\n\t\t\t\tse hace definiendo <em>mi_componente.tal_metodo = function() { var i = 20; ...}</em>.\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\tEntonces en la extensión PHP, se extiende la <strong>clase</strong> (por ejemplo\n\t\t\t\ttoba_ei_formulario) mientras que en la de Javascript se extiende el <strong>\n\t\t\t\tobjeto</strong> puntual. El nombre de este objeto es desconocido al programador\n\t\t\t\t(se compone del id del componente) por lo que es necesario pedirselo a la clase PHP\n\t\t\t\tpor eso se hace\t<em>{\$this->objeto_js}.metodo = ...</em>.\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\tFinalmente cabe recalcar que las extensiones javascript se hacen dentro del mismo\n\t\t\t\tcomponente por motivos de orden y modularidad, pero no es necesariamente la única forma\n\t\t\t\tya que el javascript en definitiva forma parte del HTML resultante de la operación, si\n\t\t\t\tse mira el código fuente de la página HTML se podrá ver la extensión y su entorno.\n\t\t\t</p>\n\t\t";
    }
Example #5
0
 /**
  * Retorna el html de la etiqueta de un ef especifico
  * @param string $ef Id. del ef
  * @param string $ancho_etiqueta Ancho de la etiqueta del ef. Si no se setea, usa la definida en el editor.
  * Recordar incluír las medidas (px, %, etc.). 
  */
 protected function get_etiqueta_ef($ef, $ancho_etiqueta = null)
 {
     $estilo = $this->_elemento_formulario[$ef]->get_estilo_etiqueta();
     $marca = '';
     if ($estilo == '') {
         if ($this->_elemento_formulario[$ef]->es_obligatorio()) {
             $estilo = 'ei-form-etiq-oblig';
             $marca = '(*)';
         } else {
             $estilo = 'ei-form-etiq';
         }
     }
     $desc = '';
     if (!isset($this->_info_formulario['expandir_descripcion']) || !$this->_info_formulario['expandir_descripcion']) {
         $desc = $this->_elemento_formulario[$ef]->get_descripcion();
         if ($desc != "") {
             $desc = toba_parser_ayuda::parsear($desc);
             $desc = toba_recurso::imagen_toba("descripcion.gif", true, null, null, $desc);
         }
     }
     $id_ef = $this->_elemento_formulario[$ef]->get_id_form();
     $editor = $this->generar_vinculo_editor($ef);
     $etiqueta = $this->_elemento_formulario[$ef]->get_etiqueta();
     //--- El _width es para evitar el 'bug de los 3px'  del IE
     $ancho = isset($ancho_etiqueta) ? $ancho_etiqueta : $this->_ancho_etiqueta;
     return "<label style='width:{$ancho};' for='{$id_ef}' class='{$estilo}'>{$editor} {$desc} {$etiqueta} {$marca}</label>\n";
 }
Example #6
0
 function generar_layout()
 {
     $wiki1 = toba_parser_ayuda::parsear_wiki('Referencia/Operacion', 'Documentación de una operación', 'toba_editor');
     echo "\n\t\t\t<ul>\n\t\t\t\t<li>{$wiki1}\n\t\t\t</ul>\n\t\t";
 }
Example #7
0
 /**
  * Genera el grafico utilizando el comando graphviz y lo almacena en un archivo temporal
  *
  * @param string $contenido Grafico graphviz
  * @param string $formato Parametro -T del comando graphviz
  * @param boolean $es_dirigido
  * @return string Nombre del archivo temporal generado
  */
 static function generar_archivo($contenido, $formato, $es_dirigido = true)
 {
     $nombre_archivo = mt_rand() . '.' . $formato;
     $dir_temp = toba::instalacion()->get_path_temp();
     $grafico = toba_manejador_archivos::path_a_unix($dir_temp . "/" . mt_rand() . '.dot');
     $salida = toba_manejador_archivos::path_a_unix($dir_temp . "/" . $nombre_archivo);
     if (!file_put_contents($grafico, $contenido)) {
         toba::logger()->error("No se tiene permiso de escritura sobre el archivo {$grafico}");
     }
     $comando = $es_dirigido ? "dot" : "neato";
     $llamada = $comando . " -Gcharset=latin1 -T" . $formato . " -o{$salida} {$grafico}";
     //Se analiza la salida
     $salida = array();
     $status = 0;
     exec($llamada . " 2>&1 ", $salida, $status);
     if ($status !== 0) {
         $ayuda = toba_parser_ayuda::parsear("[wiki:Referencia/Objetos/ei_esquema esquema]");
         echo "Recuerde que para poder visualizar el {$ayuda} debe instalar\n\t\t\t\t\t<a href='http://www.graphviz.org/Download.php' target='_blank'>GraphViz</a> en el servidor.";
         echo "<pre>";
         echo implode("\n", $salida);
         echo "</pre>";
         toba::logger()->error(implode("\n", $salida));
     }
     //Se elimina el archivo .dot
     unlink($grafico);
     return $nombre_archivo;
 }
Example #8
0
 function generar_layout()
 {
     $img = toba_recurso::imagen_proyecto('tutorial/administracion.png');
     $wiki = toba_parser_ayuda::parsear_wiki('Referencia/Deployment', 'Casos de Uso de Deployment', 'toba_editor');
     echo "\n\t\t\t<p>\n\t\t\t\tCuando utilizamos el <strong>editor web</strong> de Toba, estamos definiendo un proyecto en base a <strong>metadatos</strong>, almacenados\n\t\t\t\ten una base de datos definida durante la instalación.\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\tLo positivo de esto es que, al estar centralizada, es posible que un grupo de desarrollo localizado en \n\t\t\t\tla misma red pueda desarrollar sobre esta base en forma simultánea. Además se puede utilizar SQL tanto para manipular \n\t\t\t\tcomo para obtener los metadatos.\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\tLo negativo es que mientras estos metadatos no sean exportados al sistema de archivos no podrán ser compartidos\n\t\t\t\tcon otros grupos de trabajo o dentro de un mismo grupo geográficamente distante. Esta necesidad de \n\t\t\t\timportar - exportar metadatos se cubre usando los <strong>comandos de consola</strong>.\n\t\t\t\tComo introducción a estos comandos necesitamos presentar dos:\n\t\t\t\t<ul>\n\t\t\t\t <li><em>toba instancia exportar</em>: Exporta desde la base hacia el sistema de archivos\n\t\t\t\t <li><em>toba instancia regenerar</em>: Importa desde el sistema de archivos hacia la base\n\t\t\t\t</ul>\n\t\t\t</p>\n\t\t\t<div style='text-align:center; margin-top:10px;'>\n\t\t\t<img src='{$img}'>\t\t\n\t\t\t</div>\t\t\t\n\t\t\t<p>\n\t\t\t\tPara analizar en más profundidad estas y otras situaciones puede ver los <strong>{$wiki}</strong>\n\t\t\t</p>\t\t\t\n\t\t";
 }
Example #9
0
    function generar_layout()
    {
        $api1 = toba_parser_ayuda::parsear_api('Fuentes/toba_mensajes', 'toba_mensajes', 'toba_editor');
        $api2 = toba_parser_ayuda::parsear_api('SalidaGrafica/toba_notificacion', 'toba_notificacion', 'toba_editor');
        $img = toba_recurso::imagen_proyecto('tutorial/notificacion.png', true);
        $wiki = toba_parser_ayuda::parsear_wiki('Referencia/Mensajes', 'Mensajes y Notificaciones', 'toba_editor');
        $ejemplo = toba::vinculador()->get_url(null, 1000204, array(), array('celda_memoria' => 'ejemplo'));
        $codigo1 = '<?php
//Suponiendo que el mensaje ingresado es: \'Esta es la %1% instancia de un mensaje global de Toba. Fecha de hoy: %2%.\'
$mensaje = toba::mensajes()->get("indice", array("primera", date("d/M/Y"));
echo $mensaje;
//La salida es: \'Esta es la primera instancia de un mensaje global de Toba. Fecha de hoy: 01/02/2007.\'
?>
';
        $codigo2 = '<?php
toba::notificacion()->agregar($mensaje);
toba::notificacion()->agregar($mensaje, "info");
?>
';
        echo "<p>\n\t\t\tPara centralizar el manejo de mensajes y permitir su posterior personalización\n\t\t\tToba brinda la posibilidad de definir los mensajes en el mismo editor web y\n\t\t\tposteriormente instanciarlos y notificarlos usando la API.\n\t\t</p>\n\t\t<p>Una vez creados los mensajes en el editor es posible recuperarlos en ejecución\n\t\tusando la clase {$api1}:\n\t\t</p>\n\t\t";
        echo mostrar_php($codigo1);
        echo "<p>\n\t\t\tEn lugar de mostrar el mensaje con un simple <em>echo</em> es posible notificarlo\n\t\t\tutilizando la clase {$api2}: \n\t\t</p>";
        echo mostrar_php($codigo2);
        echo $img;
        echo "<h2>Más info</h2>\n\t\t <ul><li>{$wiki}\n\t\t\t<li><a href='{$ejemplo}' target='_blank'>Ejemplo</a>\n\t\t</ul>\n\t\t";
    }
Example #10
0
 /**
  * @ignore
  */
 protected function mostrar_utilerias($nodo)
 {
     $salida = '';
     if ($nodo instanceof toba_nodo_arbol_form) {
         $id = $this->_submit . '_' . $nodo->get_id();
         $salida .= '<span style=\'float:right;\'>' . $nodo->get_input($id) . '</span>';
     }
     $utilerias = $nodo->get_utilerias();
     if ($this->_mostrar_utilerias && count($utilerias) > 0) {
         $plegados = '';
         $despl = '';
         $salida .= '<span style=\'float:right;\'>';
         $cant_plegados = 0;
         foreach ($utilerias as $utileria) {
             $ayuda = toba_parser_ayuda::parsear($utileria['ayuda']);
             $js = isset($utileria['javascript']) ? $utileria['javascript'] : '';
             $img = toba_recurso::imagen($utileria['imagen'], null, null, $ayuda, null, $js);
             if (isset($utileria['vinculo'])) {
                 $target = isset($utileria['target']) ? $utileria['target'] : $this->_frame_destino;
                 $html = "<a href=\"{$utileria['vinculo']}\" target='{$target}'>{$img}</a>\n";
             } else {
                 $html = $img;
             }
             if (isset($utileria['plegado']) && $utileria['plegado']) {
                 $cant_plegados++;
                 $plegados .= $html;
             } else {
                 $despl .= $html;
             }
         }
         if ($cant_plegados > 0) {
             $img = toba_recurso::imagen_toba('nucleo/expandir_izq.gif', true);
             $salida .= "<a href='#' style='padding-right:2px' onclick='toggle_nodo(this.nextSibling);return false'>{$img}</a>";
             $salida .= "<span style='display:none'>{$plegados}</span>";
         }
         $salida .= $despl;
         $salida .= '</span>';
     }
     return $salida;
 }
Example #11
0
 function get_string_iconos($iconos)
 {
     $salida = '';
     foreach ($iconos as $icono) {
         $ayuda = toba_parser_ayuda::parsear($icono['ayuda']);
         $img = toba_recurso::imagen($icono['imagen'], null, null, $ayuda);
         if (isset($icono['vinculo'])) {
             $salida .= "<a target='" . apex_frame_centro . "' href=\"" . $icono['vinculo'] . "\">{$img}</a>\n";
         } else {
             $salida .= $img . "\n";
         }
     }
     return $salida;
 }
Example #12
0
 function get_html_etiqueta()
 {
     $html = '';
     $marca = '';
     if ($this->_ef->es_obligatorio()) {
         $estilo = 'ei-filtro-etiq-oblig';
         $marca = '(*)';
     } else {
         $estilo = 'ei-filtro-etiq';
     }
     $desc = '';
     $desc = $this->_datos['descripcion'];
     if ($desc != "") {
         $desc = toba_parser_ayuda::parsear($desc);
         $desc = toba_recurso::imagen_toba("descripcion.gif", true, null, null, $desc);
     }
     $id_ef = $this->_ef->get_id_form();
     $editor = '';
     //$editor = $this->generar_vinculo_editor($ef);
     $etiqueta = $this->get_etiqueta();
     $html .= "<label for='{$id_ef}' class='{$estilo}'>{$editor} {$desc} {$etiqueta} {$marca}</label>\n";
     return $html;
 }
Example #13
0
 /**
  * Genera una descripcion HTML para informar la ocurrencia de algun evento
  * @ignore
  */
 protected function generar_html_descripcion($mensaje, $tipo = null)
 {
     if (!isset($tipo) || $tipo == 'info') {
         $imagen = toba_recurso::imagen_toba("info_chico.gif", true);
         $clase = 'ei-barra-sup-desc-info';
     } elseif ($tipo == 'warning') {
         $imagen = toba_recurso::imagen_toba("warning.gif", true);
         $clase = 'ei-barra-sup-desc-warning';
     } elseif ($tipo == 'error') {
         $imagen = toba_recurso::imagen_toba("error.gif", true);
         $clase = 'ei-barra-sup-desc-error';
     }
     $descripcion = toba_parser_ayuda::parsear($mensaje);
     echo "<table class='tabla-0 {$clase}'><tr><td class='ei-barra-sup-desc-img'>{$imagen}</td><td>{$descripcion}</td></table>\n";
 }
Example #14
0
 function generar_layout()
 {
     $wiki1 = toba_parser_ayuda::parsear_wiki('Referencia/Objetos/Persistencia', 'Introducción a los componentes de persistencia', 'toba_editor');
     $wiki2 = toba_parser_ayuda::parsear_wiki('Referencia/Objetos/datos_tabla', 'Documentación del datos_tabla', 'toba_editor');
     $wiki3 = toba_parser_ayuda::parsear_wiki('Referencia/Objetos/datos_relacion', 'Documentación del datos_relacion', 'toba_editor');
     $api1 = toba_parser_ayuda::parsear_api('Componentes/Persistencia/toba_datos_tabla', 'Primitivas del datos_tabla', 'toba_editor');
     $api2 = toba_parser_ayuda::parsear_api('Componentes/Persistencia/toba_datos_relacion', 'Primitivas del datos_relacion', 'toba_editor');
     echo "\n\t\t\t<ul>\n\t\t\t\t<li>{$wiki1}\n\t\t\t\t<li>{$wiki2}\n\t\t\t\t<li>{$wiki3}\n\t\t\t\t<li>{$api1}\n\t\t\t\t<li>{$api2}\n\t\t\t</ul>\n\t\t";
 }
Example #15
0
 function generar_layout()
 {
     $wiki1 = toba_parser_ayuda::parsear_wiki('Referencia/Objetos/ei_formulario', 'Formulario simple', 'toba_editor');
     $wiki2 = toba_parser_ayuda::parsear_wiki('Referencia/Objetos/ei_formulario_ml', 'Formulario multilínea (ml)', 'toba_editor');
     $wiki3 = toba_parser_ayuda::parsear_wiki('Referencia/efs', 'Elementos de formularios (efs)', 'toba_editor');
     $api1 = toba_parser_ayuda::parsear_api('Componentes/Eis/toba_ei_formulario', 'Primitivas del ei_formulario', 'toba_editor');
     $api2 = toba_parser_ayuda::parsear_api('Componentes/Eis/toba_ei_formulario_ml', 'Primitivas del ei_formulario_ml', 'toba_editor');
     $api3 = toba_parser_ayuda::parsear_api('Componentes/Efs/toba_ef', 'Primitivas de los efs', 'toba_editor');
     echo "\n\t\t\t<ul>\n\t\t\t\t<li>{$wiki1}\n\t\t\t\t<li>{$wiki2}\n\t\t\t\t<li>{$wiki3}\n\t\t\t\t<li style='padding-top: 10px'>{$api1}\n\t\t\t\t<li>{$api2}\t\n\t\t\t\t<li>{$api3}\n\t\t\t</ul>\n\t\t";
 }
Example #16
0
 /**
  * Muestra toda la lista de notificaciones almacenadas
  * Esto tiene que hacerse una única vez por página, y por lo generar el framework 
  * es el encargado de hacerlo
  */
 function mostrar($incluir_comsumos = true)
 {
     if ($incluir_comsumos) {
         toba_js::cargar_consumos_basicos();
         //Por si no se cargaron antes
         toba_js::cargar_consumos_globales(array("basicos/notificacion"));
         echo toba_js::abrir();
     }
     foreach ($this->mensajes as $mensaje) {
         $texto = toba_parser_ayuda::parsear($mensaje[0]);
         $texto = str_replace("'", '"', $texto);
         $texto = toba_js::string($texto);
         //Mensaje para debug
         if (isset($mensaje[2]) && trim($mensaje[2]) != '') {
             $texto_debug = toba_parser_ayuda::parsear($mensaje[2]);
             $texto_debug = str_replace("'", '"', $texto_debug);
             $texto_debug = toba_js::string($texto_debug);
             echo "notificacion.agregar('{$texto}' + '\\n', '{$mensaje[1]}', undefined, '{$texto_debug}');\n";
         } else {
             echo "notificacion.agregar('{$texto}' + '\\n', '{$mensaje[1]}');\n";
         }
     }
     if (isset($this->titulo)) {
         echo "notificacion.set_titulo_ventana('{$this->titulo}');\n";
     }
     echo "notificacion.mostrar();\n";
     if ($incluir_comsumos) {
         echo toba_js::cerrar();
     }
 }
Example #17
0
 function generar_layout()
 {
     $wiki1 = toba_parser_ayuda::parsear_wiki('Referencia/Objetos', 'Documentación de Componentes', 'toba_editor');
     echo "\n\t\t\t<ul>\n\t\t\t\t<li>{$wiki1}\n\t\t\t</ul>\n\t\t";
 }