Controlador para la gestión de categorías de los menús
Creación de categoría
# File app/controllers/admin/categories_controller.rb, line 51 def create @page_title = "Nueva categoría" @category = @tree.categories.new(params[:category]) if @category.parent @category.position = @category.parent.position + 1 end respond_to do |format| if @category.save format.html { flash[:notice] = 'category was successfully created.' redirect_to admin_tree_category_url(@tree, @category) } format.js { render :update do |page| if @category.parent page.replace_html "cat_#{@category.parent.id}", :partial => "category", :locals => {:category => @category.parent, :tree => @category.tree} page.replace_html "new_container#{@category.parent.id}", "" else page.insert_html :bottom, "categories", :partial => "category", :locals => {:category => @category, :tree => @category.tree} page.replace_html "new_container", "" end page.visual_effect :highlight, "cat_#{@category.id}" end } else format.html { render :action => "new" } format.js { render :update do |page| page.replace_html "new_container#{@category.parent_id}", :partial => "new", :object => @category page[:name_es].focus end } end end end
Eliminación de categoría
# File app/controllers/admin/categories_controller.rb, line 142 def destroy @page_title = "Eliminar categoría" @category = Category.find(params[:id]) if @category.destroy respond_to do |format| format.html { flash[:notice] = 'La categoría se ha eliminado correctamente' redirect_to admin_tree_url(@tree) } format.js { render :update do |page| page.visual_effect :fade, "cat_#{@category.id}" end } end else respond_to do |format| format.html { flash[:error] = 'La categoría NO se ha eliminado correctamente' redirect_to admin_tree_url(@tree) } format.js { render :update do |page| page.alert 'La categoría NO se ha eliminado correctamente' end } end end end
Modificación de categoría
# File app/controllers/admin/categories_controller.rb, line 91 def edit @category = @tree.categories.find(params[:id]) respond_to do |format| format.html { } format.js { render :update do |page| page.replace_html "cat_#{params[:id].to_i}", :partial => 'edit' page[:name_es].focus end } end end
Listado de categorías
# File app/controllers/admin/categories_controller.rb, line 32 def index end
Formulario de creación de categoría
# File app/controllers/admin/categories_controller.rb, line 36 def new @category = @tree.categories.new @page_title = "Nueva categoría" respond_to do |format| format.html # show.rhtml format.js { render :update do |page| page.replace_html "new_container#{params[:parent_id]}", :partial => 'new' page[:name_es].focus end } end end
Reordenación de categorías
# File app/controllers/admin/categories_controller.rb, line 174 def sort @page_title = "Reordenar categorías" @categories = Category.find(:all, :conditions => {:tree_id => params[:tree_id], :parent_id => params[:parent_id]}) # The parameter containing the items to be ordered has different name depending on the sublist # we are ordering. Its name always starts with "categories" order_param = params.keys.select {|k| k =~ /categories/}[0] Category.transaction do @categories.each do |cat| cat.position = params[order_param].index(cat.id.to_s) + 1 cat.save end end render :nothing => true end
Actualización de categoría
# File app/controllers/admin/categories_controller.rb, line 107 def update @category = @tree.categories.find(params[:id]) if @category.update_attributes(params[:category]) respond_to do |format| format.html { flash[:notice] = "La sección se ha actualizado correctamente" redirect_to admin_tree_path(@tree) } format.js { render :update do |page| if params[:category][:tag_list] page.replace_html "tags_#{@category.id}", :partial => 'tags', :locals => { :category => @category} page.visual_effect :highlight, "tags_#{@category.id}" else page.replace "cat_#{@category.id}", :partial => 'category', :object => @category page.visual_effect :highlight, "cat_#{@category.id}" end end } end else respond_to do |format| format.html { render :action => "edit" } format.js { render :update do |page| page.insert_html :top, "cat_#{@category.id}", "<div class='flash_error'>la categoria no se ha actualizado</div>" end } end end end