function __construct($definicion) { //--- Compatibilidad con el metodo anterior de mantener cosas en sesion $this->definir_propiedades_sesion(); // Compatibilidad hacia atras en el ID $this->_id[0] = $definicion['_info']['proyecto']; $this->_id[1] = $definicion['_info']['objeto']; //Cargo las variables internas que forman la definicion foreach (array_keys($definicion) as $parte) { $this->_definicion_partes[] = $parte; $this->{$parte} = $definicion[$parte]; } $this->_solicitud = toba::solicitud(); $this->_log = toba::logger(); //Recibi datos por el CANAL? $this->_canal = apex_hilo_qs_canal_obj . $this->_id[1]; $this->_canal_recibidos = toba::memoria()->get_parametro($this->_canal); $this->_id_ses_g = "obj_" . $this->_id[1]; $this->_id_ses_grec = "obj_" . $this->_id[1] . "_rec"; if (!self::$_modo_memoria_compatible) { $this->_id_ses_g .= $definicion['_const_instancia_numero']; $this->_id_ses_grec .= $definicion['_const_instancia_numero']; } $this->set_controlador($this); //Hasta que nadie lo explicite, yo me controlo solo //Manejo transparente de memoria $this->cargar_memoria(); //RECUPERO Memoria sincronizada $this->cargar_info_dependencias(); //$this->_log->debug("CONSTRUCCION: {$this->_info['clase']}({$this->_id[1]}): {$this->get_nombre()}", 'toba'); }
function evt__eliminar() { $this->dependencia('datos')->eliminar_todo(); toba::solicitud()->zona()->resetear(); $this->s__carga_ok = false; admin_util::refrescar_barra_lateral(); }
function ini() { $editable = toba::solicitud()->zona()->get_editable(); if ($editable && !$this->dependencia('datos')->esta_cargada()) { list($proyecto, $grupo) = $editable; $this->dependencia('datos')->cargar(array('usuario_grupo_acc' => $grupo, 'proyecto' => $proyecto)); } }
function evt__eliminar() { $this->get_entidad()->eliminar(); $this->elemento_eliminado = true; $zona = toba::solicitud()->zona(); $zona->resetear(); toba::notificacion()->agregar('El elemento ha sido eliminado.', 'info'); admin_util::refrescar_editor_item(); }
function es_autovinculo() { //No se mira la carpeta porque es un dato cosmetico (esta de mas en realidad) $hay_item = isset($this->datos['accion_vinculo_item']) && !is_null($this->datos['accion_vinculo_item']); if ($hay_item) { $es_autovinculo = toba::solicitud()->get_id_operacion() == $this->datos['accion_vinculo_item']; } else { $es_autovinculo = isset($this->datos['es_autovinculo']) && $this->datos['es_autovinculo'] == '1'; } return $es_autovinculo; }
function ini() { $zona = toba::solicitud()->zona(); if ($editable = $zona->get_editable()) { $componente['proyecto'] = $editable[0]; $componente['componente'] = $editable[1]; } else { throw new toba_error('Este item se utiliza desde la zona de objetos'); } toba_editor::iniciar_contexto_proyecto_cargado(); $this->agregar_dependencia('componente', $componente['proyecto'], $componente['componente']); }
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"; }
function titulo_item() { if (!isset($this->titulo)) { $info['basica'] = toba::solicitud()->get_datos_item(); $item = new toba_item_info($info); $item->cargar_rama(); //Se recorre la rama $camino = $item->get_nombre(); while ($item->get_padre() != null) { $item = $item->get_padre(); if (!$item->es_raiz()) { $camino = '<span style="font-weight:normal;">' . $item->get_nombre() . ' > </span>' . $camino; } } $this->titulo = $camino; } return $this->titulo; }
function generar_html_barra_vinculos() { $salida = " "; $id_actual = toba::solicitud()->get_datos_item('item'); $i = 1; $anterior = null; $siguiente = null; foreach ($this->items_vecinos as $item) { $es_el_ultimo = count($this->items_vecinos) == $i; $es_el_actual = false; if ($item['item'] == $id_actual) { $es_el_actual = true; } if ($es_el_actual) { $vinculo = null; } else { $vinculo = toba::vinculador()->get_url($item['item_proyecto'], $item['item'], array(), array('zona' => true, 'validar' => false)); } if (isset($vinculo)) { $salida .= "<a href='{$vinculo}'>"; $salida .= $item['nombre']; $salida .= "</a>"; } else { $salida .= "<strong>" . $item['nombre'] . "</strong>"; } if (!$es_el_ultimo) { $salida .= " | "; } $i++; if ($i % 5 == 0) { $salida = substr($salida, 0, -2); $salida .= "<br>"; } } echo $salida; }
function ei_arbol($arbol, $identificador = "DUMPEO de VALORES", $ancho = "50%", $colapsado = false) { //Me estan llamando por consola?? if (toba::solicitud() != null && toba::solicitud()->get_tipo() == 'consola') { //echo "<pre>"; print_r($arbol); //echo "</pre>"; return; } //Javascript de colapsado de niveles (esto no es bello, pero funciona) static $js = 0; // Para que entre una sola vez if ($js == 0) { echo "<script language='javascript'>function ei_arbol_colapsar_nivel(id, img){\n\t\t\t\t\tnodo = document.getElementById(id);\n\t\t\t\t\tif(nodo.style.display == 'none'){\n\t\t\t\t\t\t//Abrir\n\t\t\t\t\t\tnodo.style.display = '';\n\t\t\t\t\t\timg.src = '" . toba_recurso::imagen_toba('nucleo/contraer.gif', false) . "';\n\t\t\t\t\t}else{\n\t\t\t\t\t\t//Cerrar\n\t\t\t\t\t\tnodo.style.display = 'none';\n\t\t\t\t\t\timg.src = '" . toba_recurso::imagen_toba('nucleo/expandir.gif', false) . "';\n\t\t\t\t\t}\n\t\t\t\t}</script>"; } $js++; //Es un array? if (is_array($arbol)) { echo "<div align='center'><br>"; echo "<table class='tabla-0' width='{$ancho}'>"; echo "<tr><td class='arbol-titulo'><b>{$identificador}</b></td></tr>\n"; echo "<tr><td class='arbol-valor-array'>\n"; ei_arbol_nivel($arbol, $colapsado); echo "</td></tr>\n"; echo "</table>\n"; echo "</div><br>"; } elseif (is_object($arbol)) { echo ei_mensaje("CLASE <b>" . get_class($arbol) . "</b>", null, $identificador); } else { echo ei_mensaje($arbol, null, $identificador); } }
function agregar_opcion($datos) { if (!isset($datos['carpeta'])) { $datos['carpeta'] = false; } if (!isset($datos['es_primer_nivel'])) { $datos['es_primer_nivel'] = false; } if (!isset($datos['padre'])) { $datos['es_primer_nivel'] = true; $datos['padre'] = null; } if (!isset($datos['proyecto'])) { $datos['proyecto'] = toba::proyecto()->get_id(); } if (!isset($datos['item'])) { $datos['item'] = toba::solicitud()->get_datos_item('item'); } $this->items[] = $datos; }
/** * Retorna el querystring propagando la zona actual (si es que hay y está cargada) * @return string */ function get_qs_zona() { $qs = ''; $solicitud_actual = toba::solicitud(); if ($solicitud_actual->hay_zona() && toba::zona()->cargada()) { if (toba::zona()->get_modo_url()) { $editable = $this->variable_a_url(toba::zona()->get_editable()); $qs .= '&' . apex_hilo_qs_zona . "=" . $editable; } else { $qs .= '&' . apex_hilo_qs_zona . '=1'; toba::zona()->propagar_id(); } } return $qs; }
/** * Rutea WSF hacia la extensión */ function __call($nombre, $argumentos) { $srv_name = $this->_solicitud->get_id_operacion(); if (!self::esta_activo($srv_name)) { toba::logger_ws()->debug('Se intento acceder a un servicio web inactivo: ' . $srv_name); toba::logger_ws()->set_checkpoint(); throw new WSFault('Receiver', ' El servicio no esta activo'); } //trac/toba/wiki/Referencia/ServiciosWeb/Seguridad if (!isset(self::$opciones['securityToken']) && self::servicio_con_firma()) { if (toba::instalacion()->es_produccion()) { throw new toba_error_seguridad("El servicio web esta configurado para requerir firma, sin embargo no se esta encriptando/firmando la conexion"); } else { throw new toba_error_servicio_web("El servicio web esta configurado para requerir firma, sin embargo no se <a target='_blank' href='http://repositorio.siu.edu.ar/trac/toba/wiki/Referencia/ServiciosWeb/Seguridad#configuracion'>configuro correctamente</a> el servicio importando los certificados de los clientes."); } } //Elimina el guion bajo inicial y llama al metodo op__X toba::logger_ws()->debug("Metodo invocado: {$nombre}"); toba::logger_ws()->debug('Argumentos recibidos'); toba::logger_ws()->var_dump($argumentos); toba::logger_ws()->set_checkpoint(); if (substr($nombre, 0, 1) != '_') { throw new BadMethodCallException('Call to undefined method ' . __CLASS__ . '::' . $nombre); } $metodo = substr($nombre, 1); toba::solicitud()->set_metodo_invocado($metodo); $this->mensaje_entrada = new toba_servicio_web_mensaje($argumentos[0]); try { if ($this->servicio_con_firma()) { $this->validar_certificado_cliente(); } $mensaje_salida = $this->{$metodo}($this->mensaje_entrada); if (isset($mensaje_salida)) { $mensaje = $mensaje_salida->wsf(); return $mensaje; } else { toba::logger_ws()->debug("Respuesta de retorno vacía"); toba::logger_ws()->set_checkpoint(); return; } } catch (toba_error_servicio_web $e) { toba::logger_ws()->error("Excepción lanzada: " . $e->get_mensaje() . ". Más detalles: " . $e->get_mensaje_log()); toba::logger_ws()->set_checkpoint(); toba::logger()->error("Excepción lanzada: " . $e->get_mensaje() . ". Más detalles: " . $e->get_mensaje_log()); toba::solicitud()->registrar(); throw new WSFault("Sender", utf8_e_seguro($e->get_mensaje()), null, $e->get_codigo()); } }
protected function titulo_pagina() { $item = toba::solicitud()->get_datos_item('item_nombre'); return toba::proyecto()->get_parametro('descripcion_corta') . ' - ' . $item; }
function ini() { toba::solicitud()->set_autocomplete(false); //Evita que el browser quiera guardar la clave de usuario }
protected function get_nombre_archivo() { if (!isset($this->nombre_archivo)) { $id_sol = toba::solicitud()->get_id(); $ip = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : 'sin_ip'; $this->nombre_archivo = 'web_services_' . $ip . "_{$id_sol}.log"; } return $this->nombre_archivo; }
function ini() { //Cambio el nombre del item en Runtime, para esto chequee 'Retrasar Headers' en el editor del item. $datos = array('item_nombre' => 'Este item antes se llamaba ABM de Juegos, pero yo lo cambie en runtime!'); toba::solicitud()->set_datos_item($datos); }
/** * Incluye los consumos globales básicos para utilizar el framework */ static function cargar_consumos_basicos() { if (!self::$basicos_cargados) { self::$consumos_basicos[] = 'basicos/jquery-1.9.1.min'; if (toba::proyecto()->get_parametro('es_css3')) { self::$consumos_basicos[] = 'formalize/javascripts/jquery.formalize.min'; } $imagenes = array('error' => toba_recurso::imagen_toba('error.gif', false), 'info' => toba_recurso::imagen_toba('info_chico.gif', false), 'warning' => toba_recurso::imagen_toba('warning.gif', false), 'maximizar' => toba_recurso::imagen_toba('nucleo/sentido_des_sel.gif', false), 'minimizar' => toba_recurso::imagen_toba('nucleo/sentido_asc_sel.gif', false), 'expandir' => toba_recurso::imagen_skin('expandir_vert.gif', false), 'contraer' => toba_recurso::imagen_skin('contraer_vert.gif', false), 'expandir_nodo' => toba_recurso::imagen_toba('nucleo/expandir.gif', false), 'contraer_nodo' => toba_recurso::imagen_toba('nucleo/contraer.gif', false), 'esperar' => toba_recurso::imagen_toba('wait.gif', false), 'cerrar' => toba_recurso::imagen_toba('nucleo/cerrar_ventana.gif', false)); echo toba_js::abrir(); echo "var toba_alias='" . toba_recurso::url_toba() . "';\n"; echo "var toba_proyecto_alias='" . toba_recurso::url_proyecto() . "';\n"; if (toba_editor::activado()) { echo 'var toba_proyecto_editado_alias = "' . toba_editor::get_url_previsualizacion() . "\";\n"; } echo "var toba_prefijo_vinculo = \"" . toba::vinculador()->get_url() . "\";\n"; echo "var toba_hilo_qs='" . apex_hilo_qs_item . "'\n"; echo "var toba_hilo_separador='" . apex_qs_separador . "'\n"; echo "var toba_hilo_separador_interno='" . apex_qs_sep_interno . "'\n"; echo "var toba_hilo_qs_servicio='" . apex_hilo_qs_servicio . "'\n"; echo "var toba_hilo_qs_menu='" . apex_hilo_qs_menu . "'\n"; echo "var apex_hilo_qs_celda_memoria='" . apex_hilo_qs_celda_memoria . "'\n"; echo "var toba_hilo_qs_objetos_destino='" . apex_hilo_qs_objetos_destino . "'\n"; echo "var lista_imagenes=" . toba_js::arreglo($imagenes, true) . ";"; echo "var apex_solicitud_tipo='" . toba::solicitud()->get_tipo() . "'\n"; $espera = toba::proyecto()->get_parametro('tiempo_espera_ms'); if (!isset($espera)) { $espera = 0; //No hay espera } echo "var toba_espera={$espera};\n"; //-------------- Incluyo funcionalidad para la respuesta del popup --------------- $ef_popup = toba::memoria()->get_parametro('ef_popup'); if (is_null($ef_popup)) { $ef_popup = toba::memoria()->get_dato_sincronizado('ef_popup'); } if (!is_null($ef_popup)) { toba::memoria()->set_dato_sincronizado('ef_popup', $ef_popup); echo "\n\t\t\t\tfunction seleccionar(clave, descripcion) {\n\t\t\t\t\twindow.opener.popup_callback('" . $ef_popup . "', clave, descripcion);\n\t\t\t\t\twindow.close();\n\t\t\t\t}\n\t\t\t\tfunction respuesta_ef_popup(parametros) {\n\t\t\t\t\tvar seleccion = parametros.split('||');\n\t\t\t\t\tseleccionar(seleccion[0], seleccion[1]);\n\t\t\t\t}\n\n\t\t\t\tfunction iniciar_respuesta_popup(objeto, parametros)\n\t\t\t\t{\t\t\t\t\t\n\t\t\t\t\tvar posicion = objeto.id.ultima_ocurrencia('_');\n\t\t\t\t\tvar nombre = objeto.id.substr(0, posicion) + '_descripcion';\n\t\t\t\t\tvar descripcion = \$\$(nombre).value;\n\t\t\t\t\tseleccionar(parametros, descripcion);\n\t\t\t\t}"; } //----------------------------------------------------------------------------------------------------- echo toba_js::cerrar(); //Incluyo el javascript STANDART self::cargar_consumos_globales(self::$consumos_basicos); if (toba::instalacion()->arreglo_png_ie()) { ///---Arreglo PNGs IE $url = toba_recurso::js("utilidades/pngbehavior.htc"); echo "<!--[if lt IE 7]>\n\t\t\t\t\t<style type='text/css'>\n\t\t\t\t\t\timg {\n\t\t\t\t\t\t\tbehavior: url('{$url}');\n\t\t\t\t\t\t}\n\t\t\t\t\t</style>\n\t\t\t\t\t<![endif]-->\n"; } $url = toba_recurso::js('basicos/html5shiv.js'); echo "\t<!--[if lt IE 9]>\n\t\t\t\t\t\t<script src='{$url}'></script>\n\t\t\t\t\t<![endif]-->\n"; self::$basicos_cargados = true; } }
protected function armar_encabezado() { $salto = "\r\n"; $texto = self::separador . $salto; $texto .= "Fecha: " . date("d-m-Y H:i:s") . $salto; if (class_exists('toba') && is_object(toba::solicitud())) { $texto .= "Operacion: " . toba::solicitud()->get_datos_item('item_nombre') . $salto; } $usuario = self::get_usuario_actual(); if (isset($usuario)) { $texto .= "Usuario: " . $usuario . $salto; } $texto .= "Version-PHP: " . phpversion() . $salto; if (isset($_SERVER['SERVER_NAME'])) { $texto .= "Servidor: " . $_SERVER['SERVER_NAME'] . $salto; } if (isset($_SERVER['REQUEST_URI'])) { $texto .= "URI: " . $_SERVER['REQUEST_URI'] . $salto; } if (isset($_SERVER["HTTP_REFERER"])) { $texto .= "Referrer: " . $_SERVER["HTTP_REFERER"] . $salto; } if (isset($_SERVER["REMOTE_ADDR"])) { $texto .= "Host: " . $_SERVER["REMOTE_ADDR"] . $salto; } if (php_sapi_name() === 'cli') { global $argv; $texto .= 'Ruta: ' . getcwd() . $salto; $texto .= 'Argumentos: ' . implode(' ', $argv) . $salto; } return $texto; }
static function generar_zona_vinculos_item($item, $accion, $enviar_div_wrapper = true) { if (!self::acceso_recursivo()) { toba::solicitud()->set_cronometrar(true); } toba_js::cargar_consumos_globales(array('utilidades/toba_editor')); $html_ayuda_editor = toba_recurso::ayuda(null, 'Presionando la tecla CTRL se pueden ver los enlaces hacia los editores de los distintos componentes de esta página'); $html_ayuda_cronometro = toba_recurso::ayuda(null, 'Ver los tiempos de ejecución en la generación de esta página'); $html_ayuda_ajax = toba_recurso::ayuda(null, 'Activar/Desactivar navegación interna de la operación via AJAX'); $html_ayuda_editor = toba_recurso::ayuda(null, 'Volver al editor de toba'); $solicitud = toba::solicitud()->get_id(); $link_cronometro = toba::vinculador()->get_url('toba_editor', '1000263', null, array('prefijo' => toba_editor::get_punto_acceso_editor())); $link_analizador_sql = toba::vinculador()->get_url('toba_editor', '30000030', null, array('prefijo' => toba_editor::get_punto_acceso_editor())); $link_logger = toba::vinculador()->get_url('toba_editor', '1000003', null, array('prefijo' => toba_editor::get_punto_acceso_editor())); $link_archivos = toba::vinculador()->get_url('toba_editor', '30000029', null, array('prefijo' => toba_editor::get_punto_acceso_editor())); $estilo = toba::proyecto()->get_parametro('estilo'); if ($enviar_div_wrapper) { echo "<div id='editor_previsualizacion'>"; /*echo "<div id='editor_previsualizacion_colap'><img style='cursor:pointer;_cursor:hand;' title='Ocultar la barra' src='".toba_recurso::imagen_toba('nucleo/expandir_izq.gif', false)."' onclick='toggle_nodo(\$\$(\"editor_previsualizacion_cont\"))'/></div>";*/ } echo "<span id='editor_previsualizacion_cont'>"; echo "<span id='editor_previsualizacion_vis'>"; //Logger list($log_nivel, $log_cant) = toba::logger()->get_mensajes_minimo_nivel(); $niveles = toba::logger()->get_niveles(); $niveles[0] = 'INFO'; $img = self::imagen_editor('logger/' . strtolower($niveles[$log_nivel]) . '.gif', true); $html_ayuda_logger = toba_recurso::ayuda(null, 'Visor de logs'); echo "<a href='{$link_logger}' target='logger' {$html_ayuda_logger} >" . $img . " {$log_cant}</a>\n"; //Cronometro toba::cronometro()->marcar('Resumen toba_editor'); echo "<a href='{$link_cronometro}' target='logger' {$html_ayuda_cronometro} >\n" . toba_recurso::imagen_toba('clock.png', true) . ' ' . round(toba::cronometro()->tiempo_acumulado(), 2) . ' seg' . "</a> "; //Memoria if (function_exists('memory_get_peak_usage')) { $memoria_pico = memory_get_peak_usage(); echo toba_recurso::imagen_toba('memory.png', true, 16, 16, 'Pico máximo de memoria que ha consumido el script actual'); echo ' ' . file_size($memoria_pico, 0) . ' '; } //Base de datos $fuente = toba_admin_fuentes::instancia()->get_fuente_predeterminada(false, toba_editor::get_proyecto_cargado()); if ($fuente) { try { $base = toba_admin_fuentes::instancia()->get_fuente($fuente, toba_editor::get_proyecto_cargado())->get_db(); $info_db = $base->get_info_debug(); $total = 0; foreach ($info_db as $info) { if (isset($info['fin'])) { $total += $info['fin'] - $info['inicio']; } } $rol = toba::db()->get_rol_actual(); toba::memoria()->set_dato_instancia('previsualizacion_consultas', array('fuente' => $fuente, 'datos' => $info_db)); echo "<a href='{$link_analizador_sql}' target='logger'>" . toba_recurso::imagen_toba('objetos/datos_relacion.gif', true, 16, 16, 'Ver detalles de las consultas y comandos ejecutados en este pedido de página') . count($info_db) . " ({$rol})</a>"; } catch (toba_error $e) { //Si no se tiene acceso a la base no se hace nada } } //Archivos $archivos = self::get_archivos_incluidos(); $total = 0; foreach ($archivos as $arch) { $total += filesize($arch); } toba::memoria()->set_dato_instancia('previsualizacion_archivos', $archivos); echo "<a href='{$link_archivos}' target='logger'>" . toba_recurso::imagen_toba('nucleo/php.gif', true, 16, 16, 'Ver detalle de archivos .php del proyecto incluidos en este pedido de página') . ' ' . count($archivos) . " arch. (" . file_size($total, 0) . ')</a>'; //Session $tamano = file_size(strlen(serialize($_SESSION)), 0); echo toba_recurso::imagen_toba('sesion.png', true, 16, 16, 'Tamaño de la sesión') . " {$tamano} "; echo "</span>"; //-- ACCIONES echo "<span id='editor_previsualizacion_acc'>"; $perfiles = array(apex_ef_no_seteado => '-- Todos --'); foreach (toba::manejador_sesiones()->get_perfiles_funcionales() as $perfil) { $perfiles[$perfil] = $perfil; } $actuales = toba::manejador_sesiones()->get_perfiles_funcionales_activos(); $actual = null; if (count($actuales) == 1) { $actual = current($actuales); } $js = "title='Cambia el perfil actual del usuario' onchange=\"location.href = toba_prefijo_vinculo + '&perfil_activo=' + this.value\""; echo "Perfiles: " . toba_form::select('cambiar_perfiles', $actual, $perfiles, 'ef-combo', $js); //Usuario de la base $hay_limitado = false; if (!isset(self::$fuentes)) { self::$fuentes = toba_info_editores::get_fuentes_datos(toba_editor::get_proyecto_cargado()); } foreach (self::$fuentes as $fuente) { if ($fuente['permisos_por_tabla']) { $hay_limitado = true; } } if ($hay_limitado) { $actual = self::$memoria['conexion_limitada'] ? 'limitado' : 'normal'; $datos = array("normal" => "Normal", "limitado" => "Limitados"); $js = "title='Cambia temporalmente el usuario de conexión a la base' onchange=\"location.href = toba_prefijo_vinculo + '&usuario_conexion=' + this.value\""; echo "Permisos DB: " . toba_form::select('cambiar_rol', $actual, $datos, 'ef-combo', $js); } //Skin $skins = rs_convertir_asociativo(toba_info_editores::get_lista_skins(), array('estilo', 'proyecto'), 'descripcion'); $js = "title='Cambia temporalmente el skin de la aplicación' onchange=\"location.href = toba_prefijo_vinculo + '&skin=' + this.value\""; $defecto = toba::proyecto()->get_parametro('estilo') . apex_qs_separador . toba::proyecto()->get_parametro('estilo_proyecto'); echo "Skin: " . toba_form::select('cambiar_skin', $defecto, $skins, 'ef-combo', $js); //AJAX echo "<a id='editor_ajax' href='javascript: editor_cambiar_ajax()' {$html_ayuda_ajax}>" . toba_recurso::imagen_toba('objetos/ajax_off.png', true) . "</a>\n"; //Edicion echo "<a href='javascript: editor_cambiar_vinculos()' {$html_ayuda_editor} >" . toba_recurso::imagen_toba('edicion_chico.png', true) . "</a>\n"; //Arbol $vinculos = self::get_vinculos_item($item, $accion); if (isset($vinculos[1])) { self::mostrar_vinculo($vinculos[1]); } //Editor echo "<a href='#' onclick='return toba_invocar_editor()' {$html_ayuda_editor}>" . toba_recurso::imagen_toba('icono_16.png', true) . "</a>\n"; echo "</span>"; echo "</span>"; echo "<div class='div-editor' style='position:fixed; top: 85px; left: 1px;'>"; foreach (self::get_vinculos_item($item, $accion) as $vinculo) { self::mostrar_vinculo($vinculo); } echo "</div>"; if ($enviar_div_wrapper) { echo "</div>"; } }
/** * Retorna el titulo de la opreacion actual, utilizado en la barra superior */ protected function titulo_item() { return toba::solicitud()->get_datos_item('item_nombre'); }
function evt__cancelar() { $this->dependencia('datos')->resetear(); unset($this->usuario_actual); toba::solicitud()->zona()->resetear(); }
/** * Retorna el mensaje de ayuda de la operación actual */ function get_operacion_actual() { $info = toba::solicitud()->get_datos_item(); if (isset($this->mensajes['operaciones'][$info['item']])) { $mensaje = $this->mensajes['operaciones'][$info['item']]; return $mensaje; } if (trim($info['item_descripcion']) != '') { return $info['item_descripcion']; } }
/** * Agrega una estampilla con el id de solicitud a las consultas * @param string $sql * @return string * @ignore */ protected function pegar_estampilla_log($sql) { if (method_exists(new toba(), 'solicitud')) { $sol = toba::solicitud(); if (!is_null($sol)) { $id = $sol->get_id(); $sql .= " -- toba_log: {$id} "; //El espacio es para que sea compatible con Mysql } } return $sql; }
/** * Retorna el html y js localizado de un componente y sus dependencias. * Pensado como respuesta a una solicitud AJAX */ protected function servicio__html_parcial($objetos) { echo "[--toba--]"; //-- Se reenvia el encabezado $this->tipo_pagina()->barra_superior(); echo "</div>"; //--- Parte superior de la zona if (toba::solicitud()->hay_zona() && toba::zona()->cargada()) { toba::zona()->generar_html_barra_superior(); } //--- Se incluyen botones en la botonera de la operacion $this->generar_html_botonera_sup($objetos); echo "[--toba--]"; $ok = true; try { //--- Se envia el HTML foreach ($objetos as $objeto) { $objeto->generar_html(); } } catch (toba_error $e) { $ok = false; toba::logger()->error($e, 'toba'); $mensaje = $e->get_mensaje(); $mensaje_debug = null; if (toba::logger()->modo_debug()) { $mensaje_debug = $e->get_mensaje_log(); } toba::notificacion()->error($mensaje, $mensaje_debug); } echo "[--toba--]"; //-- Se envia info de debug if (toba_editor::modo_prueba()) { $item = toba::solicitud()->get_datos_item('item'); $accion = toba::solicitud()->get_datos_item('item_act_accion_script'); toba_editor::generar_zona_vinculos_item($item, $accion, false); } echo "[--toba--]"; //--- Se envian los consumos js $consumos = array(); foreach ($objetos as $objeto) { $consumos = array_merge($consumos, $objeto->get_consumo_javascript()); } echo "toba.incluir(" . toba_js::arreglo($consumos, false) . ");\n"; echo "[--toba--]"; //--- Se envia el javascript //Se actualiza el vinculo del form $autovinculo = toba::vinculador()->get_url(); echo "document.formulario_toba.action='{$autovinculo}'\n"; toba::vinculador()->generar_js(); toba_js::cargar_definiciones_runtime(); if ($ok) { try { foreach ($objetos as $objeto) { //$objeto->servicio__html_parcial(); $objeto_js = $objeto->generar_js(); echo "\nwindow.{$objeto_js}.iniciar();\n"; } } catch (toba_error $e) { toba::logger()->error($e, 'toba'); $mensaje_debug = null; if (toba::logger()->modo_debug()) { $mensaje_debug = $e->get_mensaje_log(); } toba::notificacion()->error($e->get_mensaje(), $mensaje_debug); } } toba::notificacion()->mostrar(false); toba::acciones_js()->generar_js(); $this->generar_analizador_estadistico(); }