コード例 #1
0
ファイル: ci_proyecto.php プロジェクト: emma5021/toba
 function conf__nucleo(toba_ei_formulario $form)
 {
     $parametros_edicion = array();
     $datos = $this->dependencia('datos')->get();
     if (isset($datos['item_set_sesion'])) {
         $datos['carpeta_set_sesion'] = toba_info_editores::get_carpeta_de_item($datos['item_set_sesion'], $datos['proyecto']);
     }
     //Cargo los datos basicos para el vinculo
     $parametros_edicion['proyecto_extension'] = $datos['proyecto'];
     $parametros_edicion['id_extension'] = $datos['proyecto'];
     // Coloco los iconos para el contexto de ejecucion
     $parametros_edicion['elemento_tipo'] = 'contexto_ejecucion';
     $parametros_edicion[apex_hilo_qs_menu] = '1';
     $iconos = admin_util::get_ef_popup_utileria_extension_php($parametros_edicion);
     if (isset($datos['contexto_ejecucion_subclase_archivo']) && admin_util::existe_archivo_subclase($datos['contexto_ejecucion_subclase_archivo'])) {
         array_push($iconos, current(admin_util::get_ef_popup_utileria_abrir_php()));
     }
     $form->ef('ce_subclase_archivo')->set_iconos_utilerias($iconos);
     //Coloco los iconos para el campo sesion
     $parametros_edicion['elemento_tipo'] = 'sesion';
     $iconos = admin_util::get_ef_popup_utileria_extension_php($parametros_edicion);
     if (isset($datos['sesion_subclase_archivo']) && admin_util::existe_archivo_subclase($datos['sesion_subclase_archivo'])) {
         array_push($iconos, current(admin_util::get_ef_popup_utileria_abrir_php()));
     }
     $form->ef('sesion_subclase_archivo')->set_iconos_utilerias($iconos);
     //Coloco los iconos para el campo usuario
     $parametros_edicion['elemento_tipo'] = 'usuario';
     $iconos = admin_util::get_ef_popup_utileria_extension_php($parametros_edicion);
     if (isset($datos['usuario_subclase_archivo']) && admin_util::existe_archivo_subclase($datos['usuario_subclase_archivo'])) {
         array_push($iconos, current(admin_util::get_ef_popup_utileria_abrir_php()));
     }
     $form->ef('usuario_subclase_archivo')->set_iconos_utilerias($iconos);
     $form->ef('salida_impr_html_a')->set_iconos_utilerias(admin_util::get_ef_popup_utileria_php());
     $form->set_datos($datos);
 }
コード例 #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
 /**
  * Genera la documentacion de los servicios web provistos por el proyecto (requiere tener publicado el proyecto en localhost)
  *        -r 0|1 reemplaza la documentacion existente
  */
 function opcion__serv_generar_doc()
 {
     if (!extension_loaded('wsf')) {
         throw new toba_error('La extensión wsf no se encuentra cargada, verifique la instalación.');
     }
     $param = $this->get_parametros();
     $forzar_reemplazo = isset($param["-r"]) ? $param["-r"] == 1 : false;
     $proyecto = $this->get_proyecto();
     $servicios = toba_info_editores::get_items_servicios_web();
     $carpeta_doc = $proyecto->get_dir() . "/doc/servicios_web";
     if (!file_exists($carpeta_doc)) {
         mkdir($carpeta_doc, 0777, true);
     }
     $this->consola->mensaje("Generando documentacion...");
     $index_page = "<html><head>\n\t\t<link href='wsdl-viewer.css' rel='stylesheet' type='text/css' media='screen'/>\n\t\t</head>\n\t\t<body>\n\t\t<div id='header'>\n\t\t<h1>{$proyecto->get_id()}</h1><h2>Documentación Servicios Web</h2>\n\t\t</div>\n\t\t<div id='inner_box'><div class='page'>\n\t\t<ul>";
     foreach ($servicios as $serv_datos) {
         $servicio = toba_modelo_catalogo::get_servicio_web($proyecto, $serv_datos['item'], $this->consola);
         $file = $servicio->generar_documentacion($carpeta_doc, $forzar_reemplazo);
         $index_page .= "<li><a href='{$file}'>{$serv_datos['item']}</a></li>";
         unset($servicio);
     }
     $index_page .= "</ul></div></div></body></html>";
     file_put_contents($carpeta_doc . "/index.html", $index_page);
     $this->consola->mensaje("Listo. Navegar hacia file://" . $carpeta_doc . "/index.html");
 }
コード例 #4
0
ファイル: ci_auditoria.php プロジェクト: emma5021/toba
 function get_db($proyecto = null)
 {
     if (!isset($proyecto)) {
         $proyecto = $this->s__filtro['proyecto'];
     }
     $id = toba_info_editores::get_fuente_datos_defecto($proyecto);
     $fuente_datos = toba_admin_fuentes::instancia()->get_fuente($id, $proyecto);
     return $fuente_datos->get_db();
 }
コード例 #5
0
ファイル: toba_item_molde.php プロジェクト: emma5021/toba
 function ini()
 {
     $this->datos->tabla('base')->set_fila_columna_valor(0, 'padre_proyecto', $this->proyecto);
     $this->set_tipo_solicitud('web');
     $this->set_tipo_pagina('titulo');
     $tipo_pagina = toba_info_editores::get_tipo_pagina_defecto($this->proyecto);
     $this->set_tipo_pagina($tipo_pagina['pagina_tipo'], $tipo_pagina['proyecto']);
     $this->set_acceso_menu();
 }
コード例 #6
0
ファイル: ci_mensajes.php プロジェクト: emma5021/toba
 function get_datos_listado()
 {
     $clausulas = array();
     if (isset($this->s__filtro)) {
         $clausulas = $this->dep('filtro')->get_sql_clausulas();
     }
     $clausulas[] = 'proyecto = ' . toba::db()->quote(toba_contexto_info::get_proyecto());
     return toba_info_editores::get_mensajes_filtrados($clausulas);
 }
コード例 #7
0
ファイル: toba_catalogo_items.php プロジェクト: emma5021/toba
 function cargar($opciones, $id_item_inicial = null, $incluidos_forzados = array())
 {
     if (!isset($id_item_inicial)) {
         $id_item_inicial = toba_info_editores::get_item_raiz($this->proyecto);
     }
     $en_profundidad = $this->debe_cargar_en_profundidad($id_item_inicial, $opciones);
     $filtro_items = "";
     if (!$this->debe_cargar_todo($opciones) || $en_profundidad) {
         //--- Se dejan solo los items del primer nivel, excepto que este en las excepciones
         if (isset($id_item_inicial)) {
             $id_item_sano = toba_contexto_info::get_db()->quote($id_item_inicial);
             $filtro_padre = "(i.padre = {$id_item_sano} OR i.item= {$id_item_sano})";
             //OR i.padre IN (SELECT item FROM apex_item WHERE padre='$id_item_inicial'))";
         }
         if (!empty($incluidos_forzados) && !$en_profundidad) {
             $forzados = implode("', '", $incluidos_forzados);
             $filtro_incluidos = "( i.padre IN ('" . $forzados . "')";
             $filtro_incluidos .= " OR i.item IN ('" . $forzados . "') )";
         }
         if (isset($filtro_padre) && isset($filtro_incluidos)) {
             $filtro_items = "\tAND ({$filtro_padre} \n\t\t\t\t\t\t\t\t\t\tOR \n\t\t\t\t\t\t\t\t\t{$filtro_incluidos})\n\t\t\t\t\t";
         } elseif (isset($filtro_padre)) {
             $filtro_items = "\tAND {$filtro_padre} ";
         } elseif (isset($filtro_incluidos)) {
             $filtro_items = "\tAND {$filtro_incluidos} ";
         }
     }
     if (isset($opciones['solo_carpetas']) && $opciones['solo_carpetas'] == 1) {
         $filtro_items .= "\tAND i.carpeta = 1";
     }
     //-- Se utiliza como sql básica aquella que brinda la definición de un componente
     toba_item_def::set_db(toba_contexto_info::get_db());
     $sql_base = toba_item_def::get_vista_extendida($this->proyecto);
     $sql = sql_concatenar_where($sql_base['basica']['sql'], array(" (i.solicitud_tipo IS NULL OR i.solicitud_tipo <> 'fantasma')" . $filtro_items));
     $sql = sql_agregar_ordenamiento($sql, array(array('i.carpeta', 'asc'), array('i.orden', 'asc'), array('i.nombre', 'asc')));
     $rs = toba_contexto_info::get_db()->consultar($sql);
     $this->items = array();
     if (!empty($rs)) {
         foreach ($rs as $fila) {
             $id = array();
             $id['componente'] = $fila['item'];
             $id['proyecto'] = $fila['item_proyecto'];
             $datos = array('basica' => $fila);
             if ($en_profundidad) {
                 $info = toba_constructor::get_info($id, 'toba_item', true, null, true, true);
             } else {
                 $info = toba_constructor::get_info($id, 'toba_item', false, $datos);
             }
             $this->items[$fila['item']] = $info;
         }
         $this->carpeta_inicial = $id_item_inicial;
         $this->mensaje = "";
         $this->ordenar();
         $this->filtrar($opciones);
     }
 }
コード例 #8
0
ファイル: ci_catalogo_objetos.php プロジェクト: emma5021/toba
 function get_info_tipos_componente()
 {
     $datos = toba_info_editores::get_info_tipos_componente();
     /*foreach (array_keys($datos) as $id) {
     			if ($datos[$id]['clase_tipo'] == 9) {
     				//unset($datos[$id]);
     			}
     		}*/
     return $datos;
 }
コード例 #9
0
ファイル: ci_abms_principal.php プロジェクト: emma5021/toba
 function conf__form_basico(toba_ei_formulario $form)
 {
     $datos = $this->dep('datos')->tabla('base')->get();
     $datos_molde = $this->dep('datos')->tabla('molde')->get();
     if (!isset($datos_molde['fuente'])) {
         $datos['fuente'] = toba_info_editores::get_fuente_datos_defecto(toba_editor::get_proyecto_cargado());
     } else {
         $datos['fuente'] = $datos_molde['fuente'];
     }
     return $datos;
 }
コード例 #10
0
ファイル: ci_tipo_componentes.php プロジェクト: emma5021/toba
 function conf__form_clase($componente)
 {
     if ($this->dep('datos')->esta_cargada()) {
         $componente->ef('clase')->set_solo_lectura();
     }
     $datos = $this->dep('datos')->tabla('clase')->get();
     if (isset($datos['editor_item'])) {
         $datos['editor_item_carpeta'] = toba_info_editores::get_carpeta_de_item($datos['editor_item'], $datos['editor_proyecto']);
     }
     $componente->set_datos($datos);
 }
コード例 #11
0
ファイル: ci_principal.php プロジェクト: emma5021/toba
 function get_lista_objetos_toba()
 {
     $datos = toba_info_editores::get_lista_objetos_toba(',toba_cn');
     // Elimino de la lista el objeto actual
     $objeto_editado = $this->get_entidad()->tabla('base')->get_columna('objeto');
     foreach (array_keys($datos) as $id) {
         if ($datos[$id]['objeto'] == $objeto_editado) {
             unset($datos[$id]);
         }
     }
     return $datos;
 }
コード例 #12
0
 function __construct($asistente)
 {
     $this->id = $this->asistente->get_id_elemento();
     $this->proyecto = $this->asistente->get_proyecto();
     //Busco el datos relacion correspondientes al componente
     $id = toba_info_editores::get_dr_de_clase($this->clase);
     $componente = array('proyecto' => $id[0], 'componente' => $id[1]);
     $this->datos = toba_constructor::get_runtime($componente);
     $this->datos->inicializar();
     $datos = array('nombre' => $this->clase . ' generado automaticamente', 'proyecto' => $this->proyecto);
     $this->ini();
 }
コード例 #13
0
ファイル: ci_clonador_objetos.php プロジェクト: emma5021/toba
 static function get_objetos_destino($clase = null)
 {
     if (isset($clase)) {
         switch ($clase) {
             case 'toba_item':
                 return toba_info_editores::get_lista_items();
                 break;
             default:
                 $tipo = 'componente,' . $clase;
                 return toba_info_editores::get_lista_objetos_toba($tipo);
         }
     }
 }
コード例 #14
0
ファイル: ci_editor.php プロジェクト: emma5021/toba
 function conf__pant_dimensiones($pantalla)
 {
     $this->datos_dimension = toba_info_editores::get_datos_dimension($this->s__proyecto, $this->s__dimension);
     //Saco los botones del CI de afuera
     $pantalla_externa = $this->controlador->pantalla();
     $pantalla_externa->eliminar_evento('guardar');
     $pantalla_externa->eliminar_evento('cancelar');
     $pantalla_externa->eliminar_evento('eliminar');
     $perfil = $this->datos()->tabla('perfil')->get();
     $txt = "Perfil de datos: <strong>{$perfil['nombre']}</strong>.<br>";
     $txt .= "Dimensión: <strong>{$this->datos_dimension['nombre']}</strong>.<br>";
     $txt .= 'Seleccione los elementos que desea habilitar para el perfil.';
     $this->pantalla()->set_descripcion($txt);
 }
コード例 #15
0
ファイル: ci_admin_asistentes.php プロジェクト: emma5021/toba
 function evt__form_tipo_operacion__modificacion($datos)
 {
     $this->s__formulario_tipo = $datos;
     $this->s__datos_asistente = toba_info_editores::get_lista_tipo_molde($this->s__formulario_tipo['tipo']);
     $this->cargar_editor_molde(true);
     //-- Si no hay zona, hay que crear el item y cargarla
     if (!toba::zona()->cargada()) {
         $id_item = $this->asistente()->crear_item($this->s__formulario_tipo['nombre'], $datos['carpeta']);
         if (isset($id_item)) {
             toba::zona()->cargar(array($id_item['proyecto'], $id_item['clave']));
             admin_util::refrescar_editor_item();
         }
     }
 }
コード例 #16
0
 static function mostrar_servicios()
 {
     $id_proyecto = toba::proyecto()->get_id();
     echo "<h2>{$id_proyecto} - servicios web publicados</h2>";
     $items = toba_info_editores::get_items_servicios_web($id_proyecto);
     echo "<ul>";
     foreach ($items as $item) {
         $url_servicio = toba::vinculador()->get_url_ws($id_proyecto, $item['item']);
         $url_wsdl1 = toba::vinculador()->get_url_ws($id_proyecto, $item['item'], null, array('wsdl' => true));
         $url_wsdl2 = toba::vinculador()->get_url_ws($id_proyecto, $item['item'], null, array('wsdl2' => true));
         echo "<li><a href='{$url_servicio}'>{$item['item']}</a>: {$item['nombre']}. \n\t\t\t\t\t<a href='{$url_wsdl1}'>wsdl 1.1</a> -  <a href='{$url_wsdl2}'>wsdl 2.0</a></li>";
     }
     echo "</ul>";
 }
コード例 #17
0
 /**
  *	Declara la extension del archivo, despues de su invocacion se puede usar
  *	el metodo php() para acceder al molde de la clase
  */
 function extender($subclase, $archivo)
 {
     if (!isset($this->molde_php)) {
         $this->subclase = $subclase;
         $this->archivo = $archivo;
         $extensiones = toba_info_editores::get_clases_extendidas_proyecto($this->proyecto);
         $nombre_clase = get_nombre_clase_extendida($this->clase, $this->proyecto, $extensiones);
         $this->molde_php = new toba_codigo_clase($this->subclase, $nombre_clase);
         //Dejo la marca
         if (file_exists($this->archivo_absoluto())) {
             /*$txt = "Reemplazar archivo: " . $this->archivo_relativo();
             		$ayuda = "Si no desea reemplazar el archivo, modifique el molde especificando otra carpeta de destino u otro prefijo para la generacion de clases.";
             		$this->asistente->agregar_opcion_generacion( $this->get_id_opcion_archivo(), $txt, $ayuda );*/
         }
     }
 }
コード例 #18
0
 function cargar($opciones, $id_item_inicial = null, $incluidos_forzados = array())
 {
     $nodos = array();
     $items = $this->get_lista_items();
     foreach ($items as $item) {
         if ($item['carpeta']) {
             $obj = new toba_rf_carpeta($this->restriccion, $item['proyecto'], $item['item'], $item['padre']);
         } else {
             $obj = new toba_rf_item($this->restriccion, $item['proyecto'], $item['item'], $item['padre'], $this->expande_dependencias_sueltas);
         }
         $this->items[$item['item']] = $obj;
     }
     $this->carpeta_inicial = 'item_' . toba_info_editores::get_item_raiz($this->proyecto);
     $this->mensaje = "";
     $this->ordenar();
     //filtrar???
 }
コード例 #19
0
ファイル: pant_tipo_operacion.php プロジェクト: emma5021/toba
 function generar_layout()
 {
     $tipos_rs = toba_info_editores::get_lista_tipo_molde();
     $tipos = array();
     foreach ($tipos_rs as $tipo) {
         $tipos[$tipo['operacion_tipo']] = array('descripcion' => $tipo['descripcion'], 'vista_previa' => toba_recurso::imagen_proyecto($tipo['vista_previa'], false));
     }
     echo toba_js::abrir();
     echo 'var tipos_operacion = ' . toba_js::arreglo($tipos, true, true) . "\n";
     echo toba_js::cerrar();
     $this->dep('form_tipo_operacion')->generar_html();
     //$this->generar_botones();
     //$this->generar_boton('siguiente_editar');
     echo "<div style='background-color: #808080;padding-bottom: 15px;margin-top: 5px; color: white; text-align:center; font-size:12px; font-weight: bold;'><hr>";
     echo "<div id='operacion_descripcion'></div>";
     echo "<div id='operacion_vista_previa' style='display:none; padding-top:10px;'></div>";
     echo '</div>';
 }
コード例 #20
0
ファイル: toba_molde_elemento.php プロジェクト: emma5021/toba
 function __construct($asistente)
 {
     $this->asistente = $asistente;
     $this->asistente->registrar_molde($this);
     $this->id = $this->asistente->get_id_elemento();
     $this->proyecto = $this->asistente->get_proyecto();
     //Busco el datos relacion correspondientes al componente
     $id = toba_info_editores::get_dr_de_clase($this->clase);
     $componente = array('proyecto' => $id[0], 'componente' => $id[1]);
     $this->datos = toba_constructor::get_runtime($componente);
     $this->datos->inicializar();
     $datos = array('nombre' => $this->clase . ' generado automaticamente', 'proyecto' => $this->proyecto);
     if ($this->asistente->tiene_fuente_definida()) {
         $datos['fuente_datos_proyecto'] = $this->proyecto;
         $datos['fuente_datos'] = $this->asistente->get_fuente();
     }
     $this->datos->tabla('base')->set($datos);
     $this->ini();
 }
コード例 #21
0
 function actualizar_script_roles($eliminados = array())
 {
     $usa_permisos_por_tabla = false;
     foreach (toba_info_editores::get_fuentes_datos($this->dep('editor_perfiles')->get_proyecto()) as $fuente) {
         //Miro si al menos una fuente usa permisos por tablas.
         $usa_permisos_por_tabla = $usa_permisos_por_tabla || $fuente['permisos_por_tabla'] == '1';
     }
     if ($usa_permisos_por_tabla) {
         $modelo = toba_modelo_catalogo::instanciacion();
         $modelo->set_db(toba::db());
         $proyecto = $modelo->get_proyecto(toba::instancia()->get_id(), $this->s__filtro['proyecto']);
         $dir = $proyecto->get_dir() . '/';
         try {
             $proyecto->crear_script_generacion_roles_db($dir, $eliminados);
             toba::notificacion()->agregar('Se han generado los scripts de actualización de roles de base de datos.\\n Los mismos se encuentran en el directorio raiz del proyecto, recuerde ejecutarlos', 'info');
         } catch (toba_error $e) {
             toba::logger()->debug('Falló la generacion del script' . $e->getMessage());
             toba::notificacion()->agregar('No se ha podido generar los scripts de actualización de roles de base de datos, por favor utilice el comando toba proyecto roles_script', 'error');
         }
     }
 }
コード例 #22
0
 function cargar_todo($opciones = array())
 {
     $this->carpeta_inicial = toba_info_editores::get_item_raiz($this->proyecto);
     $grupo = '';
     $proyecto = toba_contexto_info::get_db()->quote($this->proyecto);
     $sql = "\tSELECT \ti.item as item,\n\t\t\t\t\t\t\ti.proyecto as proyecto,\n\t\t\t\t\t\t\ti.imagen_recurso_origen,\n\t\t\t\t\t\t\ti.imagen,\n\t\t\t\t\t\t\tnombre,\n\t\t\t\t\t\t\tcarpeta,\n\t\t\t\t\t\t\tpadre,\n\t\t\t\t\t\t\tdescripcion,\n\t\t\t\t\t\t\tia.usuario_grupo_acc as acceso\n\t\t\t\t\tFROM apex_item i\n\t\t\t\t\t\tLEFT OUTER JOIN apex_usuario_grupo_acc_item ia\n\t\t\t\t\t\t\tON i.item = ia.item AND i.proyecto = ia.proyecto\n\t\t\t\t\tWHERE \t\n\t\t\t\t\t\t\ti.proyecto = {$proyecto}\n\t\t\t\t\t\tAND\ti.menu = 1\n\t\t\t\t\t\tAND\t(publico IS NULL OR publico = 0)\n\t\t\t\t\t\tOR i.item =" . quote($this->carpeta_inicial) . "\n\t\t\t\t\tORDER BY i.carpeta, i.orden, i.nombre";
     toba::logger()->debug($sql);
     $rs = toba_contexto_info::get_db()->consultar($sql);
     $this->items = array();
     if (!empty($rs)) {
         foreach ($rs as $fila) {
             if ($fila['carpeta']) {
                 $obj = new toba_carpeta_menu($fila['nombre'], null, $fila['item'], $fila['padre']);
             } else {
                 $obj = new toba_item_menu($fila['nombre'], null, $fila['item'], $fila['padre']);
             }
             $this->items[$fila['item']] = $obj;
         }
         $this->carpeta_inicial = toba_info_editores::get_item_raiz($this->proyecto);
         $this->mensaje = "";
         $this->ordenar();
     }
 }
コード例 #23
0
 function cargar($opciones, $id_item_inicial = null, $incluidos_forzados = array())
 {
     $grupo = toba_contexto_info::get_db()->quote($this->grupo_acceso);
     $proyecto = toba_contexto_info::get_db()->quote($this->proyecto);
     $sql = "\tSELECT \ti.item as item,\n\t\t\t\t\t\t\ti.proyecto as proyecto,\n\t\t\t\t\t\t\ti.imagen_recurso_origen,\n\t\t\t\t\t\t\ti.imagen,\n\t\t\t\t\t\t\tnombre,\n\t\t\t\t\t\t\tcarpeta,\n\t\t\t\t\t\t\tpadre,\n\t\t\t\t\t\t\tdescripcion,\n\t\t\t\t\t\t\tia.usuario_grupo_acc as acceso\n\t\t\t\t\tFROM apex_item i\n\t\t\t\t\t\tLEFT OUTER JOIN apex_usuario_grupo_acc_item ia\n\t\t\t\t\t\t\tON i.item = ia.item AND i.proyecto = ia.proyecto\n\t\t\t\t\t\t\tAND ia.usuario_grupo_acc = {$grupo}\n\t\t\t\t\tWHERE \t\n\t\t\t\t\t\t\ti.proyecto = {$proyecto}\n\t\t\t\t\t\tAND\t(publico IS NULL OR publico = 0)\t\t\t\t\n\t\t\t\t\tORDER BY i.carpeta, i.orden, i.nombre";
     $rs = toba_contexto_info::get_db()->consultar($sql);
     $this->items = array();
     if (!empty($rs)) {
         foreach ($rs as $fila) {
             if ($fila['carpeta']) {
                 $obj = new toba_carpeta_perfil($fila, $this->grupo_acceso);
             } else {
                 $obj = new toba_item_perfil($fila, $this->grupo_acceso);
             }
             $this->items[$fila['item']] = $obj;
         }
         $this->carpeta_inicial = toba_info_editores::get_item_raiz($this->proyecto);
         $this->mensaje = "";
         $this->ordenar();
         /* Deberia mostrar nodos abiertos para aquellas 
         			carpetas en las que se aplica una restriccion*/
         //$this->filtrar();
     }
 }
コード例 #24
0
 /**
  * Elimina opcionalmente un conjunto de componentes pertencientes a la operación
  *
  * @param boolean $borrar_item Debe borrar el item una vez borradas sus dependencias
  * @param array $opciones Arreglo 'id_componente' => array('eliminar'=>true/false, 'eliminar_archivo'=>true/false)
  * @param boolean $con_transaccion Debe enmarcar la eliminación en una transaccion
  */
 function eliminar($borrar_item, $opciones, $con_transaccion = true)
 {
     $item = toba::zona()->get_info();
     $db = toba_contexto_info::get_db();
     $arbol_componentes = array_slice($this->arbol, 1);
     //--- Se eliminan metadatos
     if ($con_transaccion) {
         $db->abrir_transaccion();
     }
     foreach ($arbol_componentes as $comp) {
         $opcion = $opciones[$comp['componente']];
         if ($opcion['eliminar']) {
             //--- Elimina metadatos
             $id_dr = toba_info_editores::get_dr_de_clase($comp['tipo']);
             $componente = array('proyecto' => $id_dr[0], 'componente' => $id_dr[1]);
             $dr = toba_constructor::get_runtime($componente, 'toba_datos_relacion', false);
             $dr->inicializar();
             $dr->persistidor()->desactivar_transaccion();
             $dr->resetear();
             $dr->cargar(array('proyecto' => $this->id_proyecto, 'objeto' => $comp['componente']));
             $dr->eliminar_todo();
         }
     }
     //--Borro el item
     if ($borrar_item) {
         $id_dr = toba_info_editores::get_dr_de_clase('toba_item');
         $componente = array('proyecto' => $id_dr[0], 'componente' => $id_dr[1]);
         $dr = toba_constructor::get_runtime($componente, 'toba_datos_relacion', false);
         $dr->inicializar();
         $dr->persistidor()->desactivar_transaccion();
         $dr->resetear();
         $dr->cargar(array('proyecto' => $this->id_proyecto, 'item' => $this->id_item));
         $dr->eliminar_todo();
     }
     if ($con_transaccion) {
         $db->cerrar_transaccion();
     }
     //--- Se eliminan subclases
     foreach ($arbol_componentes as $comp) {
         $opcion = $opciones[$comp['componente']];
         if ($opcion['eliminar'] && $opcion['eliminar_archivo']) {
             $archivo = $this->get_path_archivo($comp);
             unlink($archivo);
         }
     }
 }
コード例 #25
0
ファイル: toba_editor.php プロジェクト: emma5021/toba
 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>";
     }
 }
コード例 #26
0
ファイル: ci_principal.php プロジェクト: emma5021/toba
 function conf__columnas()
 {
     $this->s__seleccion_columna_anterior = $this->s__seleccion_columna;
     $datos = $this->get_entidad()->tabla('columnas')->get_fila($this->s__seleccion_columna_anterior);
     if (isset($datos['estilo'])) {
         $datos['estilo_precarga'] = apex_ef_no_seteado;
         $en_base = toba_info_editores::get_lista_estilos_columnas();
         //Busco la inversa del texto para setear el combo si existe
         foreach ($en_base as $estilo) {
             if ($estilo['css'] == $datos['estilo']) {
                 $datos['estilo_precarga'] = $estilo['columna_estilo'];
             }
         }
     }
     //Aqui comienza el engendro malefico
     $posibles = $this->get_eventos_vinculo_cargados();
     if (is_array($posibles)) {
         foreach ($posibles as $evento) {
             //Si encuentro match con el evento
             if (isset($evento['evento_id']) && isset($datos['evento_asociado']) && $datos['evento_asociado'] == $evento['evento_id']) {
                 $datos['evento_asociado'] = $evento['identificador'];
                 //Uso el nombre del evento
             }
         }
     }
     return $datos;
 }
コード例 #27
0
ファイル: ci_creador_objeto.php プロジェクト: emma5021/toba
 function cargar_editor()
 {
     if (!isset($this->datos_editor)) {
         $this->datos_editor = toba_info_editores::get_ci_editor_clase($this->clase_actual['proyecto'], $this->clase_actual['clase']);
     }
     $this->agregar_dependencia('editor', $this->datos_editor['proyecto'], $this->datos_editor['objeto']);
 }
コード例 #28
0
ファイル: ci_efs.php プロジェクト: emma5021/toba
 protected function get_sql_carga_tabla($dt)
 {
     $datos = toba_info_editores::get_tabla_fuente_de_dt($dt);
     if (!empty($datos)) {
         $db = toba::db($datos['fuente_datos'], toba_editor::get_proyecto_cargado());
         $sql = $db->get_sql_carga_descripciones($datos['tabla']);
         return $sql;
     }
 }
コード例 #29
0
ファイル: ci_principal.php プロジェクト: emma5021/toba
 function conf__prop_basicas(toba_ei_formulario $form)
 {
     $datos = $this->get_entidad()->tabla('base')->get();
     if (!isset($datos['carpeta']) || $datos['carpeta'] != 1) {
         if (!$this->get_entidad()->esta_cargada()) {
             $form->ef('item')->set_iconos_utilerias(array(new utileria_identificador_nuevo()));
         } else {
             $form->ef('item')->set_iconos_utilerias(array(new utileria_identificador_actual()));
         }
     }
     //Transfiere los campos accion, buffer y patron a uno comportamiento
     if (isset($datos['actividad_accion']) && $datos['actividad_accion'] != '') {
         $datos['comportamiento'] = 'accion';
     }
     if (isset($datos['actividad_buffer']) && $datos['actividad_buffer'] != 0) {
         $datos['comportamiento'] = 'buffer';
     }
     if (isset($datos['actividad_patron']) && $datos['actividad_patron'] != 'especifico') {
         $datos['comportamiento'] = 'patron';
     }
     if (!isset($datos['pagina_tipo'])) {
         $pagina = toba_info_editores::get_tipo_pagina_defecto();
         $datos['pagina_tipo'] = $pagina['pagina_tipo'];
         $datos['pagina_tipo_proyecto'] = $pagina['proyecto'];
     }
     if ($form->existe_ef('accion')) {
         $form->ef('accion')->set_iconos_utilerias(admin_util::get_ef_popup_utileria_php());
     }
     $form->set_datos($datos);
 }
コード例 #30
0
ファイル: ci_dimensiones.php プロジェクト: emma5021/toba
 /**
  *	Lista de tablas que pueden usarse como gatillos
  *		No puede utilizarse dos veces la misma tabla como gatillo, por eso las utilizadas se excluyen
  */
 function get_tablas_gatillos()
 {
     $temp = $this->dependencia('datos')->tabla('dimension')->get();
     $datos = toba_info_editores::get_schemas_fuente(toba_editor::get_proyecto_cargado(), $temp['fuente_datos']);
     $schemas = !empty($datos) ? aplanar_matriz($datos, 'schema') : null;
     $tablas = toba::db($temp['fuente_datos'], toba_editor::get_proyecto_cargado())->get_lista_tablas(true, $schemas);
     return $tablas;
 }