Exemple #1
0
        public static void WriteFiles(XmlModel model)
        {
            int i = 1;

            foreach (var elemento in model.Elementos)
            {
                WriteControllerFile(model, elemento, i);
                WriteValidatorFile(model, elemento);
                WriteModelFile(model, elemento);
                WriteEditViewFile(model, elemento);
                if (elemento.Elementos.Count > 0)
                {
                    int e = 1;
                    foreach (var elementoHijo in elemento.Elementos)
                    {
                        WriteControllerFile(model, elementoHijo, e, elemento);
                        WriteValidatorFile(model, elementoHijo);
                        WriteModelFile(model, elementoHijo);
                        WriteEditViewFile(model, elementoHijo, elemento);
                        WriteCreateViewFile(model, elementoHijo, elemento);
                    }
                    e++;
                }
                i++;
            }
        }
Exemple #2
0
        //Individual para cada elemento, modifica el routing
        public static int ModifyRoute(XmlModel model, Elemento elemento, int linea = 31, bool first = false)
        {
            string textToAppend = "";

            if (first)
            {
                textToAppend += String.Format(
                    @"    Route::get('/',                'App\Controllers\Admin\{0}Controller@edit');
                          Route::post('/',                'App\Controllers\Admin\{0}Controller@update');"
                    , elemento.Nombre);
            }
            if (elemento.Singular)
            {
                textToAppend += String.Format(@"
                    Route::get('{0}', array('as' => 'admin.{0}.edit', 'uses' => 'App\Controllers\Admin\{1}Controller@edit'));
	                Route::post('{0}', array('as' => 'admin.{0}.update', 'uses' => 'App\Controllers\Admin\{1}Controller@update'));"
                                              , elemento.Nombre.ToLower(), elemento.Nombre);
            }
            else
            {
                if (elemento.Elementos.Count > 0)
                {
                    textToAppend += String.Format(@"
                        Route::get('{0}', array('as' => 'admin.{0}.edit', 'uses' => 'App\Controllers\Admin\{1}Controller@edit'));
                        Route::post('{0}', array('as' => 'admin.{0}.update', 'uses' => 'App\Controllers\Admin\{1}Controller@update'));
                    ", elemento.Nombre.ToLower(), elemento.Nombre);

                    foreach (var hijo in elemento.Elementos)
                    {
                        textToAppend += String.Format(@"
                            Route::resource('{0}',       'App\Controllers\Admin\{1}Controller');
	                        Route::get('{0}/publicar/{{id_{0}}}', array('as' => 'admin.{0}.publicar', 'uses' => 'App\Controllers\Admin\{1}Controller@publicar'));
	                        Route::get('{0}/ordenarArriba/{{id_{0}}}', array('as' => 'admin.{0}.ordenarArriba', 'uses' => 'App\Controllers\Admin\{1}Controller@ordenarArriba'));
	                        Route::get('{0}/ordenarAbajo/{{id_{0}}}', array('as' => 'admin.{0}.ordenarAbajo', 'uses' => 'App\Controllers\Admin\{1}Controller@ordenarAbajo'));
                        ", hijo.Nombre.ToLower(), hijo.Nombre);
                    }
                }
                else
                {
                    textToAppend += String.Format(@"
                        Route::resource('{0}',       'App\Controllers\Admin\{1}Controller');
	                    Route::get('{0}/publicar/{{id_{0}}}', array('as' => 'admin.{0}.publicar', 'uses' => 'App\Controllers\Admin\{1}Controller@publicar'));
	                    Route::get('{0}/ordenarArriba/{{id_{0}}}', array('as' => 'admin.{0}.ordenarArriba', 'uses' => 'App\Controllers\Admin\{1}Controller@ordenarArriba'));
	                    Route::get('{0}/ordenarAbajo/{{id_{0}}}', array('as' => 'admin.{0}.ordenarAbajo', 'uses' => 'App\Controllers\Admin\{1}Controller@ordenarAbajo'));
                    ", elemento.Nombre.ToLower(), elemento.Nombre);
                }
            }

            AppendLines(model.Ruta + model.Nombre + '\\' + rutaRoutes, textToAppend, linea);
            return(linea + textToAppend.Count(x => x == '\n') + 1);
        }
Exemple #3
0
        //Si es multidioma configura los idiomas
        public static void ModifyApp(XmlModel model)
        {
            string idiomaText = "";

            if (model.Idiomas.Count() > 0)
            {
                foreach (Idioma idioma in model.Idiomas)
                {
                    idiomaText += "'" + idioma.Nombre + "', ";
                }

                ModifyLine(model.Ruta + model.Nombre + '\\' + rutaApp, String.Format(@"	'languages' => array({0}),", idiomaText), 190);
            }
        }
Exemple #4
0
        //Cargar todo el menu
        public static void AppendMenu(XmlModel model)
        {
            string codeMenu     = "";
            string textToAppend = "";
            int    posicion     = 1;

            foreach (var menu in model.Menus)
            {
                if (menu.Submenu.Count > 0)
                {
                    string codigoSubmenu = "";
                    foreach (SubMenu submenu in menu.Submenu)
                    {
                        codigoSubmenu += String.Format(@"       <li><a href=""{{{{ URL::route('admin.{0}.edit') }}}}"">{1}</a></li>" + Environment.NewLine, submenu.Nombre.ToLower(), submenu.Descripcion);
                    }
                    codeMenu = String.Format(@"
                    <a data-toggle=""dropdown"" class='dropdown-toggle' href=""#"">
				        <span>{0}</span>
				        <span class=""caret""></span>
				    </a>
				    <ul class=""dropdown-menu"">
					  {1}
				    </ul>
                    ", menu.Descripcion, codigoSubmenu);
                }
                else
                {
                    codeMenu = String.Format(@"<a href=""{{{{ URL::route('admin.{0}.edit') }}}}"">{1}</a>", menu.Nombre.ToLower(), menu.Descripcion);
                }

                textToAppend += String.Format(@"
	                <li @if($navegador_active == {0}) {1} @endif>
				        {2}
			        </li>
                    ", posicion, posicion == 1 ? "class='active'" : "", codeMenu);

                posicion++;
            }

            AppendLines(model.Ruta + model.Nombre + '\\' + rutaLayoutInside, textToAppend, 13);
        }
        //Cargar todo el menu
        public static void AppendMenu(XmlModel model)
        {
            string codeMenu = "";
            string textToAppend = "";
            int posicion = 1;
            foreach (var menu in model.Menus)
            {
                if (menu.Submenu.Count > 0)
                {
                    string codigoSubmenu = "";
                    foreach (SubMenu submenu in menu.Submenu)
                    {
                        codigoSubmenu += String.Format(@"       <li><a href=""{{{{ URL::route('admin.{0}.edit') }}}}"">{1}</a></li>" + Environment.NewLine, submenu.Nombre.ToLower(), submenu.Descripcion);
                    }
                    codeMenu = String.Format(@"
                    <a data-toggle=""dropdown"" class='dropdown-toggle' href=""#"">
                        <span>{0}</span>
                        <span class=""caret""></span>
                    </a>
                    <ul class=""dropdown-menu"">
                      {1}
                    </ul>
                    ", menu.Descripcion, codigoSubmenu);
                }
                else
                {
                    codeMenu = String.Format(@"<a href=""{{{{ URL::route('admin.{0}.edit') }}}}"">{1}</a>", menu.Nombre.ToLower(), menu.Descripcion);
                }

                textToAppend += String.Format(@"
                    <li @if($navegador_active == {0}) {1} @endif>
                        {2}
                    </li>
                    ", posicion, posicion == 1 ? "class='active'" : "", codeMenu);

                posicion++;
            }

            AppendLines(model.Ruta + model.Nombre + '\\' + rutaLayoutInside, textToAppend, 13);
        }
 public static void ModifyAllFiles(XmlModel model)
 {
     ModifyDatabase(model);
     ModifyTitulo(model);
     ModifyApp(model);
     AppendMenu(model);
     int i = 1;
     int linea = 31;
     foreach (var elemento in model.Elementos)
     {
         //Si es el primer elemento sera el elemento por defecto del administrador
         if (i == 1)
         {
             linea = ModifyRoute(model, elemento, linea, true);
             ModifyAuthController(model, elemento);
         }
         else
         {
             linea = ModifyRoute(model, elemento, linea);
         }
         i++;
     }
 }
Exemple #7
0
        public static void ModifyAllFiles(XmlModel model)
        {
            ModifyDatabase(model);
            ModifyTitulo(model);
            ModifyApp(model);
            AppendMenu(model);
            int i     = 1;
            int linea = 31;

            foreach (var elemento in model.Elementos)
            {
                //Si es el primer elemento sera el elemento por defecto del administrador
                if (i == 1)
                {
                    linea = ModifyRoute(model, elemento, linea, true);
                    ModifyAuthController(model, elemento);
                }
                else
                {
                    linea = ModifyRoute(model, elemento, linea);
                }
                i++;
            }
        }
Exemple #8
0
 public static void ModifyDatabase(XmlModel model)
 {
     ModifyLine(model.Ruta + model.Nombre + '\\' + rutaDatabase, String.Format(@"            'database'  => '{0}',", model.Nombre.ToLower()), 58);
 }
Exemple #9
0
 //Ubicación donde el administrador redirigira namás entrar
 public static void ModifyAuthController(XmlModel model, Elemento elemento)
 {
     ModifyLine(model.Ruta + model.Nombre + '\\' + rutaAuthController, String.Format(@"                               return Redirect::route('admin.{0}.edit');", elemento.Nombre.ToLower()), 33);
 }
        //Individual para cada elemento, modifica el routing
        public static int ModifyRoute(XmlModel model, Elemento elemento, int linea = 31, bool first = false )
        {
            string textToAppend = "";
            if (first)
            {
                textToAppend += String.Format(
                    @"    Route::get('/',                'App\Controllers\Admin\{0}Controller@edit');
                          Route::post('/',                'App\Controllers\Admin\{0}Controller@update');"
                    , elemento.Nombre);
            }
            if (elemento.Singular)
            {
                textToAppend += String.Format(@"
                    Route::get('{0}', array('as' => 'admin.{0}.edit', 'uses' => 'App\Controllers\Admin\{1}Controller@edit'));
                    Route::post('{0}', array('as' => 'admin.{0}.update', 'uses' => 'App\Controllers\Admin\{1}Controller@update'));"
                    , elemento.Nombre.ToLower(), elemento.Nombre);
            }
            else
            {
                if(elemento.Elementos.Count > 0)
                {
                    textToAppend += String.Format(@"
                        Route::get('{0}', array('as' => 'admin.{0}.edit', 'uses' => 'App\Controllers\Admin\{1}Controller@edit'));
                        Route::post('{0}', array('as' => 'admin.{0}.update', 'uses' => 'App\Controllers\Admin\{1}Controller@update'));
                    ", elemento.Nombre.ToLower(), elemento.Nombre);

                    foreach(var hijo in elemento.Elementos)
                    {
                        textToAppend += String.Format(@"
                            Route::resource('{0}',       'App\Controllers\Admin\{1}Controller');
                            Route::get('{0}/publicar/{{id_{0}}}', array('as' => 'admin.{0}.publicar', 'uses' => 'App\Controllers\Admin\{1}Controller@publicar'));
                            Route::get('{0}/ordenarArriba/{{id_{0}}}', array('as' => 'admin.{0}.ordenarArriba', 'uses' => 'App\Controllers\Admin\{1}Controller@ordenarArriba'));
                            Route::get('{0}/ordenarAbajo/{{id_{0}}}', array('as' => 'admin.{0}.ordenarAbajo', 'uses' => 'App\Controllers\Admin\{1}Controller@ordenarAbajo'));
                        ", hijo.Nombre.ToLower(), hijo.Nombre);
                    }
                }
                else
                {
                    textToAppend += String.Format(@"
                        Route::resource('{0}',       'App\Controllers\Admin\{1}Controller');
                        Route::get('{0}/publicar/{{id_{0}}}', array('as' => 'admin.{0}.publicar', 'uses' => 'App\Controllers\Admin\{1}Controller@publicar'));
                        Route::get('{0}/ordenarArriba/{{id_{0}}}', array('as' => 'admin.{0}.ordenarArriba', 'uses' => 'App\Controllers\Admin\{1}Controller@ordenarArriba'));
                        Route::get('{0}/ordenarAbajo/{{id_{0}}}', array('as' => 'admin.{0}.ordenarAbajo', 'uses' => 'App\Controllers\Admin\{1}Controller@ordenarAbajo'));
                    ", elemento.Nombre.ToLower(), elemento.Nombre);
                }

            }

            AppendLines(model.Ruta + model.Nombre + '\\' + rutaRoutes, textToAppend, linea);
            return linea + textToAppend.Count(x => x == '\n') + 1;
        }
 public static void ModifyDatabase(XmlModel model)
 {
     ModifyLine(model.Ruta + model.Nombre + '\\' + rutaDatabase, String.Format(@"            'database'  => '{0}',", model.Nombre.ToLower()), 58);
 }
Exemple #12
0
 public static void WriteIndexViewFile(XmlModel model, Elemento elemento, Elemento elementoPadre)
 {
     System.IO.Directory.CreateDirectory(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower());
     Write(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower() + "/index.blade.php", String.Format(LaravelCodeStrings.PlantillaViewAdminIndex, elementoPadre.Nombre.ToLower(), elementoPadre.Descripcion, elemento.Nombre.ToLower(), elemento.Descripcion));
 }
 public static void ModifyTitulo(XmlModel model)
 {
     ModifyLine(model.Ruta + model.Nombre + '\\' + rutaLayoutInside, String.Format(@"		<a href=""#"" id""brand"">{0}</a>", model.Descripcion.ToUpper()), 9);
 }
Exemple #14
0
 public static void WriteValidatorFile(XmlModel model, Elemento elemento)
 {
     Write(model.Ruta + model.Nombre + rutaValidator + elemento.Nombre + "Validator.php", String.Format(LaravelCodeStrings.PlantillaValidator, elemento.Nombre));
 }
        public static void WriteModelFile(XmlModel model, Elemento elemento)
        {
            string codigoModelo = "";

            if (model.Idiomas.Count() > 0)
            {
                codigoModelo += @"public function idiomas()
                    {{
                         return $this->hasMany('Idioma');
                    }}
                    public function idioma()
                    {{
                        return $this->hasOne('Idioma')
                            ->codigo(Session::get('locale'));
                    }}";
            }

            if (elemento.Campos.Select(x => new { Tipo = x.Tipo }).Where(x => x.Tipo == "imagen").Count() > 0)
            {
                codigoModelo += @"
                    public function imagenes()
                    {{
                         return $this->hasOne('Imagen');
                    }}

                    public function imagen(){{
                         return $this->hasOne('Imagen','que_hacemos_id');
                    }}";
            }
            if (!elemento.Singular)
            {
                codigoModelo += @"public function scopeOrdenar($query, $orden = 'ASC')
                     {{
                         return $query->orderby('orden', $orden);
                     }}

                     public function scopeActivo($query)
                     {{
                         return $query->where('activo', '=' , 1);
                     }}

                     public function scopeWhereOrden($query,$orden)
                     {{
                         return $query->where('orden', '=' , $orden);
                     }}

                     public function scopeWhereOrdenMayor($query,$orden)
                     {{
                         return $query->where('orden', '>' , $orden);
                     }}

                     public function scopeWhereOrdenMenor($query,$orden)
                     {{
                         return $query->where('orden', '<' , $orden);
                     }}
                     //Funciones de comprobacion
                     public function isActivo()
                     {{
                         if($this->activo == 1)
                             return true;
                         else
                             return false;
                     }}

                     public function isFirst()
                     {{
                         if($this->orden == $this->min('orden'))
                             return true;
                         else
                             return false;
                     }}
                     public function isLast()
                     {{
                         if($this->orden == $this->max('orden'))
                             return true;
                         else
                             return false;
                     }}
                     public function isAlone()
                     {{
                         if($this->count() <= 1)
                             return true;
                         else
                             return false;

                     }}";
            }
            Write(model.Ruta + model.Nombre + rutaModel + elemento.Nombre + ".php", String.Format( LaravelCodeStrings.PlantillaModel, elemento.Nombre, elemento.Nombre.ToLower(), codigoModelo));
        }
 public static void WriteIndexViewFile(XmlModel model, Elemento elemento, Elemento elementoPadre )
 {
     System.IO.Directory.CreateDirectory(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower());
     Write(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower() + "/index.blade.php", String.Format( LaravelCodeStrings.PlantillaViewAdminIndex, elementoPadre.Nombre.ToLower(), elementoPadre.Descripcion, elemento.Nombre.ToLower(), elemento.Descripcion  ) );
 }
 public static void WriteFiles(XmlModel model)
 {
     int i = 1;
     foreach( var elemento in model.Elementos )
     {
         WriteControllerFile(model, elemento, i);
         WriteValidatorFile(model, elemento);
         WriteModelFile(model, elemento);
         WriteEditViewFile( model, elemento);
         if( elemento.Elementos.Count > 0 )
         {
             int e = 1;
             foreach ( var elementoHijo in elemento.Elementos )
             {
                 WriteControllerFile( model, elementoHijo, e, elemento );
                 WriteValidatorFile( model, elementoHijo );
                 WriteModelFile( model, elementoHijo );
                 WriteEditViewFile( model, elementoHijo, elemento );
                 WriteCreateViewFile( model, elementoHijo, elemento );
             }
             e++;
         }
         i++;
     }
 }
 public static void WriteEditViewFile( XmlModel model, Elemento elemento, Elemento elementoPadre = null )
 {
     WriteCreateEditViewFile( model, elemento, false, elementoPadre );
 }
        //Si es multidioma configura los idiomas
        public static void ModifyApp(XmlModel model)
        {
            string idiomaText = "";

            if (model.Idiomas.Count() > 0)
            {
                foreach (Idioma idioma in model.Idiomas)
                {
                    idiomaText += "'" + idioma.Nombre + "', ";
                }

                ModifyLine(model.Ruta + model.Nombre + '\\' + rutaApp, String.Format(@"	'languages' => array({0}),", idiomaText), 190);
            }
        }
Exemple #20
0
 public static void ModifyTitulo(XmlModel model)
 {
     ModifyLine(model.Ruta + model.Nombre + '\\' + rutaLayoutInside, String.Format(@"		<a href=""#"" id""brand"">{0}</a>", model.Descripcion.ToUpper()), 9);
 }
        public static void WriteControllerFile(XmlModel model, Elemento elemento, int posicion, Elemento elementoPadre = null)
        {
            string programacionCampo = "";
            string programacionCampoTexto = "";
            List<Campo> listaText = new List<Campo>();
            List<Campo> listaTextArea = new List<Campo>();
            List<Campo> listaFile = new List<Campo>();
            List<Campo> listaData = new List<Campo>();
            foreach (var campo in elemento.Campos)
            {
                switch (campo.Tipo)
                {
                    case "textarea":
                    case "text": listaText.Add(campo);
                        break;
                    case "pdf":
                    case "image": listaFile.Add(campo);
                        break;
                    case "data": listaData.Add(campo);
                        break;
                }
            }
            if(elementoPadre != null)
            {
                programacionCampo += String.Format(
                @"${0} = new \{1};
                ${0}->orden = \DB::table('{1}')->max('orden') + 1;
                ${0}->activo = 1;
                $idiomas = array();
                ", elemento.Nombre.ToLower(), elemento.Nombre);

            }
            if ( listaFile.Count > 0 )
            {

                foreach ( Campo campo in listaFile )
                {
                    programacionCampoTexto += String.Format(
                    @"if(Input::hasFile('_{0}'))
                    {{
                        ${1}->src = Image::upload(Input::file('_{0}'), ${1}->id, '{1}');
                        ${1}->save();
                    }}", campo.Nombre.ToLower(), elemento.Nombre.ToLower() );
                }
            }
            else
            {
                programacionCampoTexto += String.Format( @"${0}->save();", elemento.Nombre.ToLower() );
            }

            if ( listaText.Count > 0)
            {

                if(model.Idiomas.Count > 0)
                {
                    if ( elementoPadre == null )
                    {
                        foreach ( Campo text in listaText )
                        {
                            programacionCampoTexto += String.Format(
                                @"case '{0}':
                                ${1} = \Idioma::find($idIdioma[1]);
                                ${1}->{2} = $input_valor;
                                ${1}->save();
                            break;", text.Nombre.ToLower(), model.Nombre.ToLower(), text.Nombre.ToLower() + '_' + elemento.Nombre.ToLower() );
                        }

                        programacionCampo += String.Format(
                            @"foreach (Input::all() as $input => $input_valor ) {{
                            if(preg_match(""/^[^_]/"",$input)){{
                                //Si el texto no esta vacio le hacemos update
                                if(trim($input_valor) != """"){{
                                    $idIdioma = explode('_', $input);
                                    switch($idIdioma[0]){{
                                        {0}
                                    }}
                                }}
                            }}
                        }}", programacionCampoTexto );
                    }
                    else
                    {
                        string programacionCampoIdioma = "";
                        foreach ( Campo text in listaText )
                        {
                            programacionCampoTexto += String.Format(
                                @"case '{0}':
                                ${1} =  $idiomas[$idIdioma[1]]['{1}'] = $input_valor;
                                break;", text.Nombre.ToLower(), model.Nombre.ToLower(), text.Nombre.ToLower() + '_' + elemento.Nombre.ToLower() );
                            programacionCampoTexto += String.Format(
                                @"'{0}' => $idioma['{0}'],
                                ", text.Nombre.ToLower() );
                        }

                        programacionCampo += String.Format(
                            @"foreach (Input::all() as $input => $input_valor ) {{
                                if(preg_match(""/^[^_]/"",$input)){{
                                    $idIdioma = explode('_', $input);
                                    $idiomas[$idIdioma[1]]['id'] = $idIdioma[1];
                                    switch($idIdioma[0]){{
                                        {1}
                                    }}
                                }}
                            }}
                            foreach($idiomas as $idioma){{
                                ${0}->idiomas()->attach(  $idioma['id'], array( {2} ));
                            }}
                            ", elemento.Nombre.ToLower(), programacionCampoTexto, programacionCampoIdioma );
                    }
                }

            }

            Write(model.Ruta + model.Nombre + '\\' + rutaControllerAdmin + elemento.Nombre + "Controller.php", String.Format( LaravelCodeStrings.PlantillaController, elemento.Nombre, elemento.Nombre.ToLower(), posicion, programacionCampo));
        }
Exemple #22
0
 public static void WriteCreateViewFile(XmlModel model, Elemento elemento, Elemento elementoPadre = null)
 {
     WriteCreateEditViewFile(model, elemento, true, elementoPadre);
 }
Exemple #23
0
        public static void WriteModelFile(XmlModel model, Elemento elemento)
        {
            string codigoModelo = "";

            if (model.Idiomas.Count() > 0)
            {
                codigoModelo += @"public function idiomas()
	                {{
		                 return $this->hasMany('Idioma');
	                }}
	                public function idioma()
                    {{
                        return $this->hasOne('Idioma')
                            ->codigo(Session::get('locale'));
                    }}";
            }

            if (elemento.Campos.Select(x => new { Tipo = x.Tipo }).Where(x => x.Tipo == "imagen").Count() > 0)
            {
                codigoModelo += @"
	                public function imagenes()
	                {{
		                 return $this->hasOne('Imagen');
	                }}
	              
                    public function imagen(){{
                         return $this->hasOne('Imagen','que_hacemos_id');
                    }}";
            }
            if (!elemento.Singular)
            {
                codigoModelo += @"public function scopeOrdenar($query, $orden = 'ASC')
                     {{
                         return $query->orderby('orden', $orden);
                     }}

                     public function scopeActivo($query)
                     {{
                         return $query->where('activo', '=' , 1);
                     }}

                     public function scopeWhereOrden($query,$orden)
                     {{
                         return $query->where('orden', '=' , $orden);
                     }}
    
                     public function scopeWhereOrdenMayor($query,$orden)
                     {{
                         return $query->where('orden', '>' , $orden);
                     }}
    
                     public function scopeWhereOrdenMenor($query,$orden)
                     {{
                         return $query->where('orden', '<' , $orden);
                     }}
                     //Funciones de comprobacion
                     public function isActivo()
                     {{
                         if($this->activo == 1)
                             return true;
                         else
                             return false;
                     }}

                     public function isFirst()
                     {{
                         if($this->orden == $this->min('orden'))
                             return true;
                         else
                             return false;
                     }}
                     public function isLast()
                     {{
                         if($this->orden == $this->max('orden'))
                             return true;
                         else
                             return false;
                     }}
                     public function isAlone()
                     {{
                         if($this->count() <= 1)
                             return true;
                         else
                             return false;

                     }}";
            }
            Write(model.Ruta + model.Nombre + rutaModel + elemento.Nombre + ".php", String.Format(LaravelCodeStrings.PlantillaModel, elemento.Nombre, elemento.Nombre.ToLower(), codigoModelo));
        }
 public static void WriteShowViewFile(XmlModel model, Elemento elemento)
 {
     System.IO.Directory.CreateDirectory(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower());
     Write(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower() + "/show.blade.php", String.Format( LaravelCodeStrings.PlantillaViewAdminShow, elemento.Nombre.ToLower(), elemento.Descripcion, ));
 }
Exemple #25
0
        private static void WriteCreateEditViewFile(XmlModel model, Elemento elemento, bool crear, Elemento elementoPadre = null)
        {
            string textoEditarCrear = "Crear ";
            string nombreArchivo    = "create.php";

            if (!crear)
            {
                textoEditarCrear = "Editar ";
                nombreArchivo    = "edit.php";
            }
            string scriptCode = "", tabCode = "", textCode = "";

            if (model.Idiomas.Count > 0)
            {
                scriptCode = @"
                    $("".tab"").each(function(i) {
                        idTextarea = $(this).find('.ckeditor_textarea').attr('id');
                        CKEDITOR.replace(idTextarea, {
                                forcePasteAsPlainText: true,
                                enterMode : CKEDITOR.ENTER_BR,
                                height: '400px',
                                 stylesSet: [
                                                { name: 'Subtitulo',  element: 'h2' }
                                            ],
                            } );
                        if(i!=0) $(this).hide();
                    });

                    ";
                tabCode    = @"
                    <ul class=""nav nav-tabs"">
                        @for( $i=0; $i < sizeof($idiomas); $i++)
                        <li id=""nav_tab_{{ $i }}"" @if ($i==0) class=""active"" @endif>
                            <a href=""javascript:cambiarPestanya('{{ $i }}')"">{{$idiomas[$i]->nombre}}</a>
                        </li>
                        @endfor
                    </ul>
                    ";
            }

            List <Campo> listaCamposMultiIdioma = elemento.Campos.Select(x => new Campo {
                Descripcion = x.Descripcion, Nombre = x.Nombre, Editable = x.Editable, Tipo = x.Tipo, MultiIdioma = x.MultiIdioma
            }).Where(x => x.MultiIdioma == true && x.Editable == true).ToList();
            List <Campo> listaCamposNoMultiIdioma = elemento.Campos.Select(x => new Campo {
                Descripcion = x.Descripcion, Nombre = x.Nombre, Editable = x.Editable, Tipo = x.Tipo, MultiIdioma = x.MultiIdioma
            }).Where(x => !x.MultiIdioma && x.Editable).ToList();

            foreach (var campo in listaCamposMultiIdioma)
            {
                switch (campo.Tipo)
                {
                case "textarea":
                    textCode = String.Format(@"
                                     @for( $i=0; $i < sizeof($idiomas); $i++)
                                        <div class=""tab control-group"" id=""tab_{{{{ $i }}}}"">
                                            {{{{ Form::label('{0}', '{1}: ') }}}}
                                            <div class=""controls"">
                                                {{{{ Form::textarea('{0}_'.$idiomas[$i]->id, $idiomas[$i]->{2}, array('class' => 'ckeditor_textarea', 'id' => '{0}_'.$idiomas[$i]->id) ) }}}}
                                            </div>
                                        </div>
                                    @endfor
                                    ", campo.Nombre.ToLower(), campo.Descripcion, campo.Nombre.ToLower() + '_' + elemento.Nombre.ToLower());
                    break;

                case "int":
                case "text":
                    string valorInput = String.Format(@"$idiomas[$i]->{0}", campo.Nombre.ToLower() + '_' + elemento.Nombre.ToLower());

                    if (elementoPadre != null)
                    {
                        valorInput = String.Format(@"${0}->idiomas()->id($idiomas[$i]->id )->get()->first()->pivot->{1}", elemento.Nombre.ToLower(), campo.Nombre.ToLower());
                    }

                    if (crear)
                    {
                        valorInput = @"''";
                    }

                    textCode = String.Format(@"
                                    @for( $i=0; $i < sizeof($idiomas); $i++)
                                    <div class=""tab control-group"" id=""tab_{{ $i }}}}"">
                                        {{{{ Form::label('{0}', '{1}: ') }}
                                        <div class=""controls"">
                                            {{{{ Form::text('{0}_'.$idiomas[$i]->id, {2}, array('class' => 'ckeditor_textarea', 'id' => '{0}_'.$idiomas[$i]->id) ) }}}}
                                        </div>
                                    </div>
                                @endfor
                                ", campo.Nombre.ToLower(), campo.Descripcion, valorInput);

                    break;
                }
            }
            foreach (var campo in listaCamposNoMultiIdioma)
            {
                switch (campo.Tipo)
                {
                case "int":
                case "text":
                    textCode = String.Format(@"{{{{ Form::label('{0}', '{1}: ') }}}}
                            <div class=""controls"">
                                    {{{{ Form::text('_{0}',${2}->{0}, array( 'class' => 'input', 'id' => '{0}') ) }}}}
                            </div>", campo.Nombre.ToLower(), campo.Descripcion, elemento.Nombre.ToLower());
                    break;

                //Falta acabar
                case "imagen":
                    textCode = String.Format(@"
                                    <div class=""controls"">   
                                        {{{{ Form::label('{0}', '{1}: ') }}}}
                                        <div class=""fileupload2 fileupload2-new"" data-provides=""fileupload2"">
                                           <div class=""fileupload2-preview thumbnail"" style=""width: 200px; height: 150px;"">
                                                @if (count(${2}->imagen()->first())>0)
                                                    <a href=""{{{{ ${2}->imagen()->first()->src; }}}}""><img src=""{{{{ Image::resize(${2}->imagen()->first()->src, 200, 150); }}}}"" ></a>
                                                @else
                                                    <img src=""http://www.placehold.it/200x150/EFEFEF/AAAAAA&amp;text=sin+imagen"">
                                                @endif
                                            </div>
                                            <div>
                                                <span class=""btn btn-file""><span class=""fileupload2-new"">Selecciona una imagen</span><span class=""fileupload2-exists"">Cambiar</span>{{{{ Form::file('_{0}') }}}}</span>
                                                <a href=""#"" class=""btn fileupload2-exists"" data-dismiss=""fileupload2"">Quitar</a>
                                            </div>
                                        </div>
                                     </div>", campo.Nombre.ToLower(), campo.Descripcion, elemento.Nombre.ToLower());
                    break;

                case "pdf":
                    string urlTexto = String.Format(@"<a href="">${0}->{1}</a>", elemento.Nombre.ToLower(), campo.Nombre.ToLower());
                    if (crear)
                    {
                        urlTexto = "";
                    }

                    textCode = String.Format(@"
                                    <div class=""controls"">   
                                        {{{{ Form::label('{0}', '{1}: ') }}}}
                                        <div class=""fileupload2 fileupload2-new"" data-provides=""fileupload2"">
                                            <div style=""width: 200px; height: 150px;"">
                                                {2}
                                            </div>
                                            <div>
                                                <span class=""btn btn-file""><span class=""fileupload2-new"">Selecciona un pdf</span><span class=""fileupload2-exists"">Cambiar</span>{{{{ Form::file('_{0}') }}}}</span>
                                                <a href=""#"" class=""btn fileupload2-exists"" data-dismiss=""fileupload2"">Quitar</a>
                                            </div>
                                        </div>
                                        </div>", campo.Nombre.ToLower(), campo.Descripcion, elemento.Nombre.ToLower(), urlTexto);
                    break;

                case "data":
                    textCode = String.Format(@"
                                {{{{ Form::label('{0}', '{1}: ') }}}}
                                <div class=""controls"">
                                   {{{{ Form::text('{0}',\Helper::mostrarFechaEditar(${2}->{0}), array( 'class' => 'input-medium datepick', 'id' => '{0}') ) }}}}
                                </div>", campo.Nombre.ToLower(), campo.Descripcion, elemento.Nombre.ToLower());
                    break;
                }
            }

            // Falta generar todas las migas de pan
            string rutaControlador = (elemento.Singular) ? "edit" : "index";
            string breadcumb       = "";

            //El boton debe mostrar si este elemento contiene hijos
            if (elementoPadre != null)
            {
                breadcumb = String.Format(
                    @"<ul class=""breadcrumb"">
                    <li><a href = ""{{{{ \URL::route('admin.{0}.edit') }}}}"" > {1} </a><span class=""divider"">/</span></li>
                    <li class=""active"">{2}</li>
                </ul>", elementoPadre.Nombre.ToLower(), elementoPadre.Descripcion, elemento.Descripcion);
            }

            System.IO.Directory.CreateDirectory(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower());
            Write(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower() + nombreArchivo, String.Format(LaravelCodeStrings.PlantillaViewAdminEditCreate, elemento.Nombre.ToLower(), textoEditarCrear + elemento.Descripcion, scriptCode, breadcumb, tabCode, textCode, breadcumb));
        }
 public static void WriteValidatorFile(XmlModel model, Elemento elemento )
 {
     Write(model.Ruta + model.Nombre + rutaValidator + elemento.Nombre + "Validator.php", String.Format( LaravelCodeStrings.PlantillaValidator, elemento.Nombre));
 }
Exemple #27
0
 public static void WriteShowViewFile(XmlModel model, Elemento elemento)
 {
     System.IO.Directory.CreateDirectory(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower());
     Write(model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower() + "/show.blade.php", String.Format(LaravelCodeStrings.PlantillaViewAdminShow, elemento.Nombre.ToLower(), elemento.Descripcion, ));
 }
        private static void WriteCreateEditViewFile( XmlModel model, Elemento elemento, bool crear, Elemento elementoPadre = null )
        {
            string textoEditarCrear = "Crear ";
            string nombreArchivo = "create.php";
            if ( !crear )
            {
                textoEditarCrear = "Editar ";
                nombreArchivo = "edit.php";
            }
            string scriptCode = "", tabCode = "", textCode = "";
            if ( model.Idiomas.Count > 0 )
            {
                scriptCode = @"
                    $("".tab"").each(function(i) {
                        idTextarea = $(this).find('.ckeditor_textarea').attr('id');
                        CKEDITOR.replace(idTextarea, {
                                forcePasteAsPlainText: true,
                                enterMode : CKEDITOR.ENTER_BR,
                                height: '400px',
                                 stylesSet: [
                                                { name: 'Subtitulo',  element: 'h2' }
                                            ],
                            } );
                        if(i!=0) $(this).hide();
                    });

                    ";
                tabCode = @"
                    <ul class=""nav nav-tabs"">
                        @for( $i=0; $i < sizeof($idiomas); $i++)
                        <li id=""nav_tab_{{ $i }}"" @if ($i==0) class=""active"" @endif>
                            <a href=""javascript:cambiarPestanya('{{ $i }}')"">{{$idiomas[$i]->nombre}}</a>
                        </li>
                        @endfor
                    </ul>
                    ";
            }

            List<Campo> listaCamposMultiIdioma = elemento.Campos.Select( x => new Campo { Descripcion = x.Descripcion, Nombre = x.Nombre, Editable = x.Editable, Tipo = x.Tipo, MultiIdioma = x.MultiIdioma } ).Where( x => x.MultiIdioma == true && x.Editable == true ).ToList();
            List<Campo> listaCamposNoMultiIdioma = elemento.Campos.Select( x => new Campo { Descripcion = x.Descripcion, Nombre = x.Nombre, Editable = x.Editable, Tipo = x.Tipo, MultiIdioma = x.MultiIdioma } ).Where( x => !x.MultiIdioma && x.Editable ).ToList();
            foreach ( var campo in listaCamposMultiIdioma )
            {
                switch ( campo.Tipo )
                {
                    case "textarea":
                        textCode = String.Format( @"
                                     @for( $i=0; $i < sizeof($idiomas); $i++)
                                        <div class=""tab control-group"" id=""tab_{{{{ $i }}}}"">
                                            {{{{ Form::label('{0}', '{1}: ') }}}}
                                            <div class=""controls"">
                                                {{{{ Form::textarea('{0}_'.$idiomas[$i]->id, $idiomas[$i]->{2}, array('class' => 'ckeditor_textarea', 'id' => '{0}_'.$idiomas[$i]->id) ) }}}}
                                            </div>
                                        </div>
                                    @endfor
                                    ", campo.Nombre.ToLower(), campo.Descripcion, campo.Nombre.ToLower() + '_' + elemento.Nombre.ToLower() );
                        break;
                    case "int":
                    case "text":
                        string valorInput = String.Format( @"$idiomas[$i]->{0}",campo.Nombre.ToLower() + '_' + elemento.Nombre.ToLower());

                        if ( elementoPadre != null )
                            valorInput = String.Format( @"${0}->idiomas()->id($idiomas[$i]->id )->get()->first()->pivot->{1}", elemento.Nombre.ToLower(), campo.Nombre.ToLower() );

                        if ( crear )
                            valorInput = @"''";

                        textCode = String.Format( @"
                                    @for( $i=0; $i < sizeof($idiomas); $i++)
                                    <div class=""tab control-group"" id=""tab_{{ $i }}}}"">
                                        {{{{ Form::label('{0}', '{1}: ') }}
                                        <div class=""controls"">
                                            {{{{ Form::text('{0}_'.$idiomas[$i]->id, {2}, array('class' => 'ckeditor_textarea', 'id' => '{0}_'.$idiomas[$i]->id) ) }}}}
                                        </div>
                                    </div>
                                @endfor
                                ", campo.Nombre.ToLower(), campo.Descripcion, valorInput );

                        break;
                }

            }
            foreach ( var campo in listaCamposNoMultiIdioma )
            {
                switch ( campo.Tipo )
                {
                    case "int":
                    case "text":
                        textCode = String.Format( @"{{{{ Form::label('{0}', '{1}: ') }}}}
                            <div class=""controls"">
                                    {{{{ Form::text('_{0}',${2}->{0}, array( 'class' => 'input', 'id' => '{0}') ) }}}}
                            </div>", campo.Nombre.ToLower(), campo.Descripcion, elemento.Nombre.ToLower() );
                        break;
                    //Falta acabar
                    case "imagen":
                        textCode = String.Format( @"
                                    <div class=""controls"">
                                        {{{{ Form::label('{0}', '{1}: ') }}}}
                                        <div class=""fileupload2 fileupload2-new"" data-provides=""fileupload2"">
                                           <div class=""fileupload2-preview thumbnail"" style=""width: 200px; height: 150px;"">
                                                @if (count(${2}->imagen()->first())>0)
                                                    <a href=""{{{{ ${2}->imagen()->first()->src; }}}}""><img src=""{{{{ Image::resize(${2}->imagen()->first()->src, 200, 150); }}}}"" ></a>
                                                @else
                                                    <img src=""http://www.placehold.it/200x150/EFEFEF/AAAAAA&amp;text=sin+imagen"">
                                                @endif
                                            </div>
                                            <div>
                                                <span class=""btn btn-file""><span class=""fileupload2-new"">Selecciona una imagen</span><span class=""fileupload2-exists"">Cambiar</span>{{{{ Form::file('_{0}') }}}}</span>
                                                <a href=""#"" class=""btn fileupload2-exists"" data-dismiss=""fileupload2"">Quitar</a>
                                            </div>
                                        </div>
                                     </div>", campo.Nombre.ToLower(), campo.Descripcion, elemento.Nombre.ToLower() );
                        break;
                    case "pdf":
                        string urlTexto = String.Format(@"<a href="">${0}->{1}</a>",elemento.Nombre.ToLower() ,campo.Nombre.ToLower());
                        if ( crear )
                            urlTexto = "";

                        textCode = String.Format( @"
                                    <div class=""controls"">
                                        {{{{ Form::label('{0}', '{1}: ') }}}}
                                        <div class=""fileupload2 fileupload2-new"" data-provides=""fileupload2"">
                                            <div style=""width: 200px; height: 150px;"">
                                                {2}
                                            </div>
                                            <div>
                                                <span class=""btn btn-file""><span class=""fileupload2-new"">Selecciona un pdf</span><span class=""fileupload2-exists"">Cambiar</span>{{{{ Form::file('_{0}') }}}}</span>
                                                <a href=""#"" class=""btn fileupload2-exists"" data-dismiss=""fileupload2"">Quitar</a>
                                            </div>
                                        </div>
                                        </div>", campo.Nombre.ToLower(), campo.Descripcion, elemento.Nombre.ToLower(), urlTexto );
                        break;
                    case "data":
                        textCode = String.Format( @"
                                {{{{ Form::label('{0}', '{1}: ') }}}}
                                <div class=""controls"">
                                   {{{{ Form::text('{0}',\Helper::mostrarFechaEditar(${2}->{0}), array( 'class' => 'input-medium datepick', 'id' => '{0}') ) }}}}
                                </div>", campo.Nombre.ToLower(), campo.Descripcion, elemento.Nombre.ToLower() );
                        break;

                }
            }

            // Falta generar todas las migas de pan
            string rutaControlador = ( elemento.Singular ) ? "edit" : "index";
            string breadcumb = "";
            //El boton debe mostrar si este elemento contiene hijos
            if ( elementoPadre != null )
            {
                breadcumb = String.Format(
                @"<ul class=""breadcrumb"">
                    <li><a href = ""{{{{ \URL::route('admin.{0}.edit') }}}}"" > {1} </a><span class=""divider"">/</span></li>
                    <li class=""active"">{2}</li>
                </ul>", elementoPadre.Nombre.ToLower(), elementoPadre.Descripcion, elemento.Descripcion );
            }

            System.IO.Directory.CreateDirectory( model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower() );
            Write( model.Ruta + model.Nombre + rutaViewAdmin + elemento.Nombre.ToLower() + nombreArchivo, String.Format( LaravelCodeStrings.PlantillaViewAdminEditCreate, elemento.Nombre.ToLower(), textoEditarCrear + elemento.Descripcion, scriptCode, breadcumb, tabCode, textCode, breadcumb ) );
        }
Exemple #29
0
        public static void WriteControllerFile(XmlModel model, Elemento elemento, int posicion, Elemento elementoPadre = null)
        {
            string       programacionCampo      = "";
            string       programacionCampoTexto = "";
            List <Campo> listaText     = new List <Campo>();
            List <Campo> listaTextArea = new List <Campo>();
            List <Campo> listaFile     = new List <Campo>();
            List <Campo> listaData     = new List <Campo>();

            foreach (var campo in elemento.Campos)
            {
                switch (campo.Tipo)
                {
                case "textarea":
                case "text": listaText.Add(campo);
                    break;

                case "pdf":
                case "image": listaFile.Add(campo);
                    break;

                case "data": listaData.Add(campo);
                    break;
                }
            }
            if (elementoPadre != null)
            {
                programacionCampo += String.Format(
                    @"${0} = new \{1};
				${0}->orden = \DB::table('{1}')->max('orden') + 1;
				${0}->activo = 1;
                $idiomas = array();  
                ", elemento.Nombre.ToLower(), elemento.Nombre);
            }
            if (listaFile.Count > 0)
            {
                foreach (Campo campo in listaFile)
                {
                    programacionCampoTexto += String.Format(
                        @"if(Input::hasFile('_{0}'))
				    {{
		                ${1}->src = Image::upload(Input::file('_{0}'), ${1}->id, '{1}');
			            ${1}->save();
		            }}"        , campo.Nombre.ToLower(), elemento.Nombre.ToLower());
                }
            }
            else
            {
                programacionCampoTexto += String.Format(@"${0}->save();", elemento.Nombre.ToLower());
            }

            if (listaText.Count > 0)
            {
                if (model.Idiomas.Count > 0)
                {
                    if (elementoPadre == null)
                    {
                        foreach (Campo text in listaText)
                        {
                            programacionCampoTexto += String.Format(
                                @"case '{0}':
								${1} = \Idioma::find($idIdioma[1]);
								${1}->{2} = $input_valor;
								${1}->save();	
							break;"                            , text.Nombre.ToLower(), model.Nombre.ToLower(), text.Nombre.ToLower() + '_' + elemento.Nombre.ToLower());
                        }

                        programacionCampo += String.Format(
                            @"foreach (Input::all() as $input => $input_valor ) {{
				            if(preg_match(""/^[^_]/"",$input)){{
					            //Si el texto no esta vacio le hacemos update
					            if(trim($input_valor) != """"){{
						            $idIdioma = explode('_', $input);
						            switch($idIdioma[0]){{
                                        {0}
                                    }}
                                }}
                            }}
                        }}", programacionCampoTexto);
                    }
                    else
                    {
                        string programacionCampoIdioma = "";
                        foreach (Campo text in listaText)
                        {
                            programacionCampoTexto += String.Format(
                                @"case '{0}':
								${1} =  $idiomas[$idIdioma[1]]['{1}'] = $input_valor;
							    break;"                            , text.Nombre.ToLower(), model.Nombre.ToLower(), text.Nombre.ToLower() + '_' + elemento.Nombre.ToLower());
                            programacionCampoTexto += String.Format(
                                @"'{0}' => $idioma['{0}'],
							    "                            , text.Nombre.ToLower());
                        }

                        programacionCampo += String.Format(
                            @"foreach (Input::all() as $input => $input_valor ) {{
				                if(preg_match(""/^[^_]/"",$input)){{
                                    $idIdioma = explode('_', $input);
                                    $idiomas[$idIdioma[1]]['id'] = $idIdioma[1];
						            switch($idIdioma[0]){{
                                        {1}
                                    }}
                                }}
                            }}
                            foreach($idiomas as $idioma){{
					            ${0}->idiomas()->attach(  $idioma['id'], array( {2} ));
				            }}
                            ", elemento.Nombre.ToLower(), programacionCampoTexto, programacionCampoIdioma);
                    }
                }
            }

            Write(model.Ruta + model.Nombre + '\\' + rutaControllerAdmin + elemento.Nombre + "Controller.php", String.Format(LaravelCodeStrings.PlantillaController, elemento.Nombre, elemento.Nombre.ToLower(), posicion, programacionCampo));
        }
 //Ubicación donde el administrador redirigira namás entrar
 public static void ModifyAuthController(XmlModel model, Elemento elemento)
 {
     ModifyLine(model.Ruta + model.Nombre + '\\' + rutaAuthController, String.Format(@"                               return Redirect::route('admin.{0}.edit');", elemento.Nombre.ToLower()), 33);
 }