示例#1
0
 function conf__tablas(toba_ei_cuadro $cuadro)
 {
     $proyecto = toba_contexto_info::get_proyecto();
     $catalogo = new toba_catalogo_objetos($proyecto);
     $objetos = $catalogo->get_objetos(array('clase' => 'toba_datos_tabla'));
     $tablas = toba_info_editores::get_tabla_fuente_de_dt();
     $tablas = rs_convertir_asociativo($tablas, array('id'), 'tabla');
     $datos = array();
     foreach ($objetos as $comp) {
         $tabla = $tablas[$comp->get_id()];
         $datos[$tabla]['editar'] = $this->get_string_iconos($comp->get_utilerias());
         $datos[$tabla]['proyecto'] = $proyecto;
         $datos[$tabla]['fuente'] = $comp->get_fuente_datos();
         $datos[$tabla]['objeto'] = $comp->get_id();
         $datos[$tabla]['tabla'] = $tabla;
         $datos[$tabla]['icono'] = $this->get_string_iconos($comp->get_iconos());
     }
     //Lo recorre de nuevo para que esten en orden
     $salida = array();
     foreach ($tablas as $tabla) {
         $salida[] = $datos[$tabla];
     }
     $cuadro->set_datos($salida);
     $cuadro->colapsar();
 }
示例#2
0
 function extender_objeto_js()
 {
     //--- Se insertan los css de cada estilo para hacer la visualización
     $estilos = rs_convertir_asociativo(toba_info_editores::get_lista_estilos_columnas(), array('columna_estilo'), 'css');
     echo 'var editor_col_css=' . toba_js::arreglo($estilos, true);
     echo "\n\t\t\t{$this->objeto_js}.evt__usar_vinculo__procesar = function(inicial) \n\t\t\t{\n\t\t\t\tvar se_muestra = (this.ef('usar_vinculo').valor() == '1');\n\t\t\t\tthis.ef('evento_asociado').mostrar(se_muestra, true);\n\t\t\t\tthis.ef('vinculo_indice').mostrar(se_muestra, true);\n\t\t\t}\n\t\t\t\t\t\n\t\t\t{$this->objeto_js}.es_estilo_manual = function()\n\t\t\t{\n\t\t\t\tvar estado = this.ef('estilo_precarga').get_estado();\t\t\t\t\t\n\t\t\t\treturn (estado == apex_ef_no_seteado);\n\t\t\t}\n\n\t\t\t{$this->objeto_js}.evt__estilo_precarga__procesar = function(inicial) \n\t\t\t{\t\t\t\t\t\n\t\t\t\tif (this.es_estilo_manual()) {\n\t\t\t\t\tthis.ef('estilo_editable').mostrar(true);\n\t\t\t\t} else {\n\t\t\t\t\tthis.ef('estilo_editable').mostrar(false, true);\t\t//Reseteo el valor del editable cuando lo oculto\n\t\t\t\t\tvar estado = this.ef('estilo_precarga').get_estado();\n\t\t\t\t\tvar input = this.ef('prueba_estilo').input();\t\t\t\t\t\t\t//Modifico el preview\n\t\t\t\t\tinput.className = editor_col_css[estado] + ' columna-preview';\t\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t{$this->objeto_js}.evt__estilo_editable__procesar = function(inicial)\n\t\t\t{\t\t\t\n\t\t\t\tif (this.es_estilo_manual()) {\n\t\t\t\t\tvar estilo = this.ef('estilo_editable').get_estado();\n\t\t\t\t\tvar input = this.ef('prueba_estilo').input();\n\t\t\t\t\tinput.className = estilo + ' columna-preview';\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t";
 }
示例#3
0
 static function get_mapeo_tabla_dt($proyecto, $id_fuente)
 {
     $db = self::get_db();
     $id_fuente = $db->quote($id_fuente);
     $proyecto = $db->quote($proyecto);
     $sql = "\n\t\t\tSELECT \n\t\t\t\tdt.objeto,\n\t\t\t\tdt.tabla\n\t\t\tFROM \n\t\t\t\tapex_objeto_db_registros as dt,\n\t\t\t\tapex_objeto as comp\n\t\t\tWHERE\n\t\t\t\t\tdt.objeto_proyecto = {$proyecto}\n\t\t\t\tAND dt.objeto = comp.objeto\n\t\t\t\tAND dt.objeto_proyecto = comp.proyecto\n\t\t\t\tAND comp.fuente_datos = {$id_fuente}\n\t\t\t\tORDER BY dt.objeto, dt.tabla";
     $rs = $db->consultar($sql);
     return rs_convertir_asociativo($rs, array('tabla'), 'objeto');
 }
示例#4
0
 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>";
     }
 }
示例#5
0
 function get_descripcion_items($datos)
 {
     $items = toba_info_editores::get_lista_items($this->get_id(), false);
     $items = rs_convertir_asociativo($items, array('id'), 'descripcion');
     $items_desc = array();
     $duplicados = array();
     foreach (array_keys($datos) as $key) {
         if (!in_array($datos[$key]['item'], $duplicados)) {
             $items_desc[] = array('item' => $datos[$key]['item'], 'nombre' => $items[$datos[$key]['item']]);
             $duplicados[] = $datos[$key]['item'];
         }
     }
     return $items_desc;
 }
示例#6
0
 function conf__form_permisos($componente)
 {
     $datos = $this->datos('permisos')->get_filas();
     $datos['permiso'] = rs_convertir_asociativo($datos, array('permiso'), 'permiso');
     $componente->set_datos($datos);
 }
示例#7
0
 /**
  * @ignore 
  */
 function ejecutar_metodo_carga_ef($id_ef, $maestros = array())
 {
     $parametros = $this->_parametros_carga_efs[$id_ef];
     $seleccionable = $this->_efs[$id_ef]->es_seleccionable();
     $es_posicional = true;
     if ($seleccionable) {
         //--- Se determinan cuales son los campos claves y el campo de valor
         $campos_clave = $this->_efs[$id_ef]->get_campos_clave();
         $campo_valor = $this->_efs[$id_ef]->get_campo_valor();
         $es_posicional = $this->_efs[$id_ef]->son_campos_posicionales();
     }
     if (isset($parametros['carga_lista'])) {
         //--- Carga a partir de una lista de valores
         $salida = $this->ef_metodo_carga_lista($id_ef, $parametros, $maestros);
     } elseif (isset($parametros['carga_sql'])) {
         //--- Carga a partir de un SQL
         $nuevos = $this->ef_metodo_carga_sql($id_ef, $parametros, $maestros, $es_posicional);
         if ($seleccionable) {
             $salida = rs_convertir_asociativo($nuevos, $campos_clave, $campo_valor);
         } else {
             if (!empty($nuevos)) {
                 return $nuevos[0][0];
             }
         }
     } elseif (isset($parametros['carga_metodo'])) {
         if (isset($parametros['carga_dt'])) {
             //--- Carga a partir de un Método datos_tabla
             $nuevos = $this->ef_metodo_carga_dt($id_ef, $parametros, $maestros);
         } elseif (isset($parametros['carga_consulta_php'])) {
             //--- Carga a partir de una Consulta PHP
             $nuevos = $this->ef_metodo_carga_consulta_php($id_ef, $parametros, $maestros);
         } else {
             //--- Carga a partir de un PHP
             $nuevos = $this->ef_metodo_carga_php($id_ef, $parametros, $maestros);
         }
         if ($seleccionable) {
             $salida = rs_convertir_asociativo($nuevos, $campos_clave, $campo_valor);
         } else {
             return $nuevos;
         }
     } else {
         throw new toba_error_def('No está definido un método de carga. Parámetros: ' . var_export($parametros, true));
     }
     if (!$this->_efs[$id_ef]->permite_seleccion_multiple()) {
         $salida = $this->ajustar_descripciones($id_ef, $salida);
     }
     if (!isset($parametros['carga_no_seteado_ocultar'])) {
         $parametros['carga_no_seteado_ocultar'] = false;
     }
     //--- Agrega el no-seteado en caso que existan elementos
     if ($parametros['carga_permite_no_seteado'] == '1' && !isset($salida[apex_ef_no_seteado]) && (!empty($salida) || !$parametros['carga_no_seteado_ocultar'])) {
         $lista = array();
         $lista[apex_ef_no_seteado] = isset($parametros['carga_no_seteado']) ? $parametros['carga_no_seteado'] : '';
         return $lista + $salida;
     } else {
         return $salida;
     }
 }
示例#8
0
 /**
  * Permite cambiar los grupos de acceso de un usuario 
  * @consola_parametros [-u usuario]
  * @gtk_icono usuarios/grupo.gif
  */
 function opcion__editar_acceso()
 {
     $instancia = $this->get_instancia();
     $param = $this->get_parametros();
     if (isset($param['-u']) && trim($param['-u']) != '') {
         $usuario = $param['-u'];
     } else {
         $usuarios = $instancia->get_lista_usuarios();
         $usuarios = rs_convertir_asociativo($usuarios, array('usuario'), 'nombre');
         $usuario = $this->consola->dialogo_lista_opciones($usuarios, 'Seleccionar Usuario', false, 'Nombre de usuario', true);
     }
     if (!isset($usuario)) {
         throw new toba_error("Es necesario indicar el usuario con '-u'");
     }
     $acceso = array();
     foreach ($instancia->get_lista_proyectos_vinculados() as $id_proyecto) {
         $this->consola->enter();
         $proyecto = $instancia->get_proyecto($id_proyecto);
         $grupos = $proyecto->get_lista_grupos_acceso();
         $grupos = rs_convertir_asociativo($grupos, array('id'), 'nombre');
         $grupos = $this->consola->dialogo_lista_opciones($grupos, "Proyecto {$id_proyecto}", true, 'Descripción', false);
         if (!isset($grupos)) {
             return;
         }
         $acceso[$id_proyecto] = $grupos;
     }
     $instancia->cambiar_acceso_usuario($usuario, $acceso);
 }
 /**
  * Dada una tabla retorna los valores por defecto de cada fila para utilizar en un abm
  */
 static function get_lista_filas_tabla($tabla, $fuente)
 {
     $db = toba::db($fuente, toba_editor::get_proyecto_cargado());
     $nuevas = $db->get_definicion_columnas($tabla);
     //-- Se busca un mapeo entre el tipo en la base y el tipo en el asistente
     $mapeo_tipos = rs_convertir_asociativo(self::get_lista_tipo_dato(true), array('dt_tipo_dato'), 'tipo_dato');
     $salida = array();
     foreach ($nuevas as $nueva) {
         $fila = array();
         if (!isset($nueva['fk_tabla'])) {
             $tipo = isset($mapeo_tipos[$nueva['tipo']]) ? $mapeo_tipos[$nueva['tipo']] : self::tipo_dato_caracter();
             $fila = self::get_fila_opciones_de_tipo($tipo);
         } else {
             $tipo = self::tipo_dato_referencia();
             $fila = self::get_fila_opciones_de_tipo($tipo);
             $datos_carga_sql = $db->get_opciones_sql_campo_externo($nueva);
             $fila['ef_carga_col_clave'] = $datos_carga_sql['clave'];
             $fila['ef_carga_col_desc'] = $datos_carga_sql['descripcion'];
             $fila['ef_carga_tabla'] = $datos_carga_sql['tabla'];
             $fila['ef_carga_sql'] = $datos_carga_sql['sql'];
             $fila['ef_carga_origen'] = 'datos_tabla';
         }
         $fila['dt_pk'] = $nueva['pk'];
         $fila['dt_secuencia'] = $nueva['secuencia'];
         $fila['columna'] = $nueva['nombre'];
         $fila['etiqueta'] = ucwords(str_replace(array('_', '_'), ' ', $nueva['nombre']));
         $fila['en_filtro'] = 0;
         $fila['en_form'] = 1;
         $fila['en_cuadro'] = 1;
         if ($nueva['secuencia'] != '') {
             $fila['en_form'] = 0;
             $fila['en_cuadro'] = 0;
         }
         $fila['ef_obligatorio'] = $fila['en_form'] && ($nueva['pk'] || $nueva['not_null']);
         if ($nueva['pk'] && $fila['en_form']) {
             $nueva['ef_desactivar_modificacion'] = 1;
         }
         $salida[] = $fila;
     }
     return $salida;
 }
示例#10
0
 function cambio_perfil()
 {
     $perfiles = toba::instancia()->get_datos_perfiles_funcionales_usuario_proyecto(toba::usuario()->get_id(), toba::proyecto()->get_id());
     if (count($perfiles) > 1) {
         //-- Si hay al menos dos perfiles funcionales
         echo '<div class="enc-cambio-proy">';
         $perfiles[] = array('grupo_acceso' => apex_ef_no_seteado, 'nombre' => ' Todos ');
         $datos = rs_convertir_asociativo($perfiles, array('grupo_acceso'), 'nombre');
         $actual = toba::memoria()->get_dato('usuario_perfil_funcional_seleccionado');
         if (is_null($actual)) {
             $actual = apex_ef_no_seteado;
         }
         echo toba_form::abrir('chng_profile', toba::vinculador()->get_url());
         echo toba_form::select(apex_sesion_qs_cambio_pf, $actual, $datos, 'ef-combo', 'onchange="submit();"');
         echo toba_form::cerrar();
         echo '</div>';
     }
 }