/** * Crea un proyecto NUEVO. * @consola_parametros Opcional: [-x] Si se utiliza esta opción el proyecto creado será personalizable * @gtk_icono nucleo/agregar.gif * @gtk_no_mostrar 1 */ function opcion__crear() { $id_instancia = $this->get_id_instancia_actual(); $id_proyecto = $this->get_id_proyecto_actual(); $instancia = $this->get_instancia($id_instancia); $params = $this->get_parametros(); // -- Creo el proyecto $this->consola->mensaje("Creando el proyecto '{$id_proyecto}' en la instancia '{$id_instancia}'...", false); $usuarios = $this->seleccionar_usuarios($instancia); toba_modelo_proyecto::crear($instancia, $id_proyecto, $usuarios); $this->consola->progreso_fin(); // Extendemos las clases de toba a clases del proyecto $proyecto = $this->get_proyecto($id_proyecto); $pms = $proyecto->get_pms(); util_modelo_proyecto::extender_clases($proyecto, $this->consola, 'toba'); $pms->crear_pm_proyecto(); // -- Modifica el proyecto para que sea apto para personalizaciones if (isset($params['-x'])) { $this->hacer_personalizable(false); } $proyecto->generar_autoload($this->consola); // -- Asigno un nuevo item de login $proyecto->actualizar_login(); // -- Exporto el proyecto creado $proyecto->exportar(); if (isset($params['-d'])) { //Como necesita si o si, ser creado en el dir proyectos.. luego de creado lo muevo $origen = $proyecto->get_dir(); // lo revinculo con el directorio nuevo y re-instancio el proyecto para que arme bien el alias $path = $params['-d']; $instancia->vincular_proyecto($id_proyecto, $path); toba_manejador_archivos::copiar_directorio($origen, $path); toba_manejador_archivos::eliminar_directorio($origen); $proyecto = $this->get_proyecto($id_proyecto); } $instancia->exportar_local(); if (!$proyecto->esta_publicado()) { $this->consola->separador(); $agregar = $this->consola->dialogo_simple("El proyecto ha sido creado. ¿Desea agregar el alias de apache al archivo toba.conf?", true); if ($agregar) { $proyecto->publicar(); $this->consola->mensaje('OK. Debe reiniciar el servidor web para que los cambios tengan efecto'); } } }
static function extender_clases(toba_modelo_proyecto $proyecto, $consola, $de) { $seguir = true; if ($proyecto->tiene_clases_extendidas($de)) { $mensaje = "Las clases ya están extendidas. Si las reextiende se "; $mensaje .= "perderán todos los cambios que se introdujeron en las "; $mensaje .= "mismas. Desea reextender de cualquier manera?"; $seguir = $consola->dialogo_simple($mensaje); } if ($seguir) { $prefijo = $de == 'proyecto' ? '/personalizacion' : ''; $path = $proyecto->get_dir() . $prefijo . '/php/extension_toba/componentes'; util_modelo_proyecto::extender_componentes($proyecto, $path, $de); util_modelo_proyecto::marcar_clases_extendidas($proyecto, $de); } return $seguir; }
protected function get_clases_componentes_toba() { return util_modelo_proyecto::get_clases_componentes_toba($this); }