class Admin::CategoriesController

Controlador para la gestión de categorías de los menús

Public Instance Methods

create() click to toggle source

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
destroy() click to toggle source

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
edit() click to toggle source

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
edit_tags() click to toggle source

Modificación de tags de una categoría

# File app/controllers/admin/categories_controller.rb, line 190
def edit_tags
  @category= @tree.categories.find(params[:id])
  render :update do |page|
    page.replace_html "tags_#{@category.id}", :partial => "tags_form", :locals => { :category => @category}
    page[:category_tag_list].focus
  end
end
index() click to toggle source

Listado de categorías

# File app/controllers/admin/categories_controller.rb, line 32
def index
end
new() click to toggle source

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
sort() click to toggle source

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
update() click to toggle source

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