function generar_layout() { //El archivo original esta en formato Windows CR/LF $nombre = toba::proyecto()->get_path_php() . '/varios/line_endings/archivo_windows.php'; //Verifico que el archivo original tiene el CR assert(strrchr(file_get_contents($nombre), 13) !== false); $archivo = new toba_archivo_php($nombre); $archivo->edicion_inicio(); $codigo_actual = $archivo->contenido(); //Verifico que el codigo original no tiene CR al ser cargado en toba_archivo_php assert(strrchr($codigo_actual, 13) === false); $metodo = new toba_codigo_metodo_php('extender_objeto_js'); $metodo->set_contenido("alert('soy un alert nuevo'); \n alert(4);"); $nuevo_codigo = $archivo->codigo_agregar_metodo($codigo_actual, $metodo->get_codigo()); $archivo->insertar($nuevo_codigo); $archivo->insertar_al_final("function cargo_algo(\$id) \n { echo 'Ingrese \$id'; \n}"); //Verifico que el nuevo codigo que obtuve tampoco tiene CR antes de ser grabado assert(strrchr($archivo->contenido(), 13) === false); //Aca grabe el archivo $archivo->edicion_fin(); assert(strrchr(file_get_contents($nombre), 13) === false); assert(strrchr(file_get_contents($nombre), PHP_EOL) !== false); echo 'El test parece que funco!, revirtiendo archivo....'; $tsvn = new toba_svn(); $tsvn->revert($nombre); }
function extender_objeto_js() { if ($this->existe_evento('trac_ver')) { $path = $this->controlador()->get_path_archivo(); $svn = new toba_svn(); $url = $svn->get_url($path); $proyecto = toba_editor::get_proyecto_cargado(); $url = preg_replace('/svn\\/(\\w+)/i', 'trac/$1/browser', $url); echo "\n\t\t\t\t{$this->objeto_js}.evt__trac_ver = function() {\n\t\t\t\t\tvar opciones = {'scrollbars' : 1, 'resizable': 1};\n\t\t\t\t\tabrir_popup('trac', '{$url}', opciones);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t"; } }
function resolver_tipo() { if (is_dir($this->dir) && toba_svn::es_copia_trabajo($this->dir)) { return 'svn'; } else { return 'fs'; } }
/** * Permite modificar la forma en que se grafica la pantalla, por defecto un componente sobre el otro */ function generar_layout() { $nombre = toba::proyecto()->get_path_php() . '/varios/line_endings/archivo_linux.php'; //Verifico que no tiene el CHR 13 de movida assert(strrchr(file_get_contents($nombre), 13) === false); $archivo = new toba_archivo_php($nombre); $archivo->edicion_inicio(); $codigo_actual = $archivo->contenido(); assert(strrchr($codigo_actual, 13) === false); $metodo = new toba_codigo_metodo_php('extender_objeto_js'); $metodo->set_contenido("echo \"alert('soy un alert nuevo');" . "\n" . "alert(4);\""); $nuevo_codigo = $archivo->codigo_agregar_metodo($codigo_actual, $metodo->get_codigo()); $archivo->insertar(toba_archivo_php::codigo_sacar_tags_php($nuevo_codigo)); //Verifico que el nuevo codigo que obtuve tampoco tiene CR antes de ser grabado assert(strrchr($archivo->contenido(), 13) === false); //Aca grabe el archivo $archivo->edicion_fin(); assert(strrchr(file_get_contents($nombre), 13) === false); assert(strrchr(file_get_contents($nombre), PHP_EOL) !== false); $archivo->mostrar(); echo 'El test parece que funco!, revirtiendo archivo....'; $tsvn = new toba_svn(); $tsvn->revert($nombre); }
function conf__pant_vista_previa() { $path = $this->s__path_archivo; $svn = new toba_svn(); if (!isset($this->comando_svn)) { $codigo = $this->get_codigo_vista_previa(); } else { switch ($this->comando_svn) { case 'blame': $codigo = $svn->blame($path); if ($codigo == '') { toba::notificacion()->error('No se pudo realizar el blame, posiblemente porque el repositorio tiene restricciones de permisos y el usuario de apache no tiene cargadas las credenciales'); } break; case 'diff': $codigo = $svn->diff($path); break; case 'revert': $svn->revert($path); $codigo = $this->get_codigo_vista_previa(); break; case 'add': $svn->add($path); $codigo = $this->get_codigo_vista_previa(); break; } } //-- Info del archivo $estado = $svn->get_estado($path); $svn_blame = true; $svn_diff = false; $svn_add = false; switch ($estado) { case 'unversioned': $svn_blame = false; $svn_add = true; $nombre = 'sin versionar'; $img = toba_recurso::imagen_proyecto('svn/unversioned.png', true, 16, 16, $nombre); break; case 'modified': case 'missing': $svn_diff = true; $nombre = 'modificado'; $img = toba_recurso::imagen_proyecto('svn/modified.png', true, 16, 16, $nombre); break; case 'added': $svn_blame = false; $nombre = 'agregado'; $img = toba_recurso::imagen_proyecto('svn/added.png', true, 16, 16, $nombre); break; case 'normal': $nombre = 'sin modificar'; $img = toba_recurso::imagen_proyecto('svn/normal.png', true, 16, 16, $nombre); break; case 'conflicted': $nombre = 'En Conflicto'; $img = toba_recurso::imagen_proyecto('svn/conflict.png', true, 16, 16, $nombre); break; case 'deleted': $nombre = 'borrado'; $img = toba_recurso::imagen_proyecto('svn/deleted.png', true, 16, 16, $nombre); break; case 'locked': $nombre = 'locked'; $img = toba_recurso::imagen_proyecto('svn/locked.png', true, 16, 16, $nombre); break; case 'ignored': $svn_add = true; $svn_blame = false; $nombre = 'ignorado'; $img = toba_recurso::imagen_proyecto('svn/ignored.png', true, 16, 16, $nombre); break; } $this->info_archivo = "{$path} <span style='font-size: 9px; color:gray'>({$nombre})</span>"; $this->previsualizacion = $codigo; $existe_archivo = file_exists($path); $ver_comandos_svn = $svn->hay_cliente_svn(); if (!$svn->hay_cliente_svn()) { $ver_comandos_svn = false; } //-- Oculta boton eliminar if (!$existe_archivo) { $this->pantalla()->eliminar_evento('eliminar'); $this->pantalla()->eliminar_evento('abrir'); } if (!$ver_comandos_svn || !$svn_blame) { $this->pantalla()->eliminar_evento('svn_blame'); } if (!$ver_comandos_svn || !$svn_diff) { $this->pantalla()->eliminar_evento('svn_diff'); $this->pantalla()->eliminar_evento('svn_revert'); } if (!$ver_comandos_svn || !$svn_add || !$existe_archivo) { $this->pantalla()->eliminar_evento('svn_add'); } if (!$ver_comandos_svn || !$existe_archivo || $svn_add) { $this->pantalla()->eliminar_evento('trac_ver'); } }
private function recuperar_revision_recursos() { $svn = new toba_svn(); if (!toba::memoria()->existe_dato_instancia('toba_revision_recursos_cliente')) { $path_recursos = $this->toba_dir() . '/www'; if (toba::instalacion()->es_produccion() || !$svn->hay_cliente_svn() || !$svn->es_copia_trabajo($path_recursos)) { $version = toba::instalacion()->get_version()->__toString(); } else { $version = $svn->get_revision($path_recursos); } toba::memoria()->set_dato_instancia('toba_revision_recursos_cliente', $version); } if (!toba::memoria()->existe_dato_instancia('proyecto_revision_recursos_cliente')) { $path_recursos = toba::proyecto()->get_path() . '/www'; if (toba::instalacion()->es_produccion() || !$svn->hay_cliente_svn() || !$svn->es_copia_trabajo($path_recursos)) { $version = toba::proyecto()->get_version()->__toString(); } else { $version = $svn->get_revision($path_recursos); } toba::memoria()->set_dato_instancia('proyecto_revision_recursos_cliente', $version); } }
function generar_estado_codigo() { //Se cambia el chequeo de propiedades svn a checksum de archivos $this->manejador_interface->mensaje("Calculando revisiones {$this->identificador} ", false); $this->generar_checksum(); //Esto simplemente se calcula para darle una idea al pobre chango de cual //fue la ultima revision que cargo en la base,util para el revert $svn = new toba_svn(); if ($svn->hay_cliente_svn()) { $max_rev = 0; $revisiones = $svn->get_revisiones_dir_recursivos($this->get_dir_dump()); $max_rev = 0; if (!empty($revisiones)) { foreach ($revisiones as $revision) { if (isset($revision['error'])) { throw new toba_error_def($revision['error']); } if ($max_rev < intval($revision['revision'])) { $max_rev = intval($revision['revision']); } } } $this->manejador_interface->progreso_avanzar(); $this->instancia->set_revision_proyecto($this->identificador, $max_rev); } $this->manejador_interface->progreso_fin(); }