Class Admin::CategoriesController
In: app/controllers/admin/categories_controller.rb
Parent: Admin::BaseController

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

Methods

create   destroy   edit   edit_tags   index   new   sort   update  

Public Instance methods

Creación de categoría

[Source]

    # File app/controllers/admin/categories_controller.rb, line 30
30:   def create
31:     @page_title = "Nueva categoría"
32:     @category = @tree.categories.new(params[:category])
33:     if @category.parent
34:       @category.position = @category.parent.position + 1
35:     end
36:     
37:     respond_to do |format|
38:       if @category.save
39:         format.html { 
40:           flash[:notice] = 'category was successfully created.'
41:           redirect_to admin_tree_category_url(@tree, @category) 
42:         }
43:         format.js { 
44:           render :update do |page|
45:             if @category.parent
46:               page.replace_html "cat_#{@category.parent.id}", :partial => "category", :locals => {:category => @category.parent, :tree => @category.tree}
47:               page.replace_html "new_container#{@category.parent.id}", ""
48:             else
49:               page.insert_html :bottom, "categories", :partial => "category", :locals => {:category => @category, :tree => @category.tree}
50:               page.replace_html "new_container", ""
51:             end
52:             
53:             page.visual_effect :highlight, "cat_#{@category.id}"
54:             
55:           end
56:         }
57:       else
58:         format.html { render :action => "new" }
59:         format.js {
60:           render :update do |page|
61:             page.replace_html "new_container#{@category.parent_id}", :partial => "new", :object => @category
62:             page[:name_es].focus
63:           end
64:         }
65:       end
66:     end
67:   end

Eliminación de categoría

[Source]

     # File app/controllers/admin/categories_controller.rb, line 121
121:   def destroy
122:     @page_title = "Eliminar categoría"
123:     @category = Category.find(params[:id])
124:     if @category.destroy
125:       respond_to do |format|
126:         format.html { 
127:           flash[:notice] = 'La categoría se ha eliminado correctamente'
128:           redirect_to admin_tree_url(@tree) 
129:         }
130:         format.js {
131:           render :update do |page|
132:             page.visual_effect :fade, "cat_#{@category.id}"
133:           end
134:         }
135:       end
136:     else
137:       respond_to do |format|
138:         format.html { 
139:           flash[:error] = 'La categoría NO se ha eliminado correctamente'
140:           redirect_to admin_tree_url(@tree) 
141:         }
142:         format.js {
143:           render :update do |page|
144:             page.alert 'La categoría NO se ha eliminado correctamente'
145:           end
146:         }
147:       end
148:     end
149:   end

Modificación de categoría

[Source]

    # File app/controllers/admin/categories_controller.rb, line 70
70:   def edit
71:     @category = @tree.categories.find(params[:id])
72:     respond_to do |format|
73:       format.html {
74:         
75:       }
76:       format.js {
77:         render :update do |page| 
78:           page.replace_html "cat_#{params[:id].to_i}", :partial => 'edit'
79:           page[:name_es].focus
80:         end
81:       }
82:     end
83:   end

Modificación de tags de una categoría

[Source]

     # File app/controllers/admin/categories_controller.rb, line 169
169:   def edit_tags
170:     @category= @tree.categories.find(params[:id])
171:     render :update do |page|
172:       page.replace_html "tags_#{@category.id}", :partial => "tags_form", :locals => { :category => @category}
173:       page[:category_tag_list].focus
174:     end
175:   end

Listado de categorías

[Source]

    # File app/controllers/admin/categories_controller.rb, line 11
11:   def index
12:   end

Formulario de creación de categoría

[Source]

    # File app/controllers/admin/categories_controller.rb, line 15
15:   def new
16:     @category = @tree.categories.new
17:     @page_title = "Nueva categoría"
18:     respond_to do |format|
19:       format.html # show.rhtml
20:       format.js {
21:         render :update do |page| 
22:           page.replace_html "new_container#{params[:parent_id]}", :partial => 'new'
23:           page[:name_es].focus
24:         end
25:       }
26:     end
27:   end

Reordenación de categorías

[Source]

     # File app/controllers/admin/categories_controller.rb, line 153
153:   def sort
154:     @page_title = "Reordenar categorías"
155:     @categories = Category.find(:all, :conditions => {:tree_id => params[:tree_id], :parent_id => params[:parent_id]})
156:     # The parameter containing the items to be ordered has different name depending on the sublist
157:     # we are ordering. Its name always starts with "categories"
158:     order_param = params.keys.select {|k| k =~ /categories/}[0]
159:     Category.transaction do 
160:       @categories.each do |cat|
161:         cat.position = params[order_param].index(cat.id.to_s) + 1
162:         cat.save
163:       end
164:     end
165:     render :nothing => true
166:   end

Actualización de categoría

[Source]

     # File app/controllers/admin/categories_controller.rb, line 86
 86:   def update
 87:     @category = @tree.categories.find(params[:id])
 88:     if @category.update_attributes(params[:category])
 89:       respond_to do |format|
 90:         format.html {
 91:           flash[:notice] = "La sección se ha actualizado correctamente"
 92:           redirect_to admin_tree_path(@tree)
 93:         }
 94:         format.js {
 95:           render :update do |page| 
 96:             if params[:category][:tag_list]
 97:               page.replace_html "tags_#{@category.id}", :partial => 'tags', :locals => { :category => @category}
 98:               page.visual_effect :highlight, "tags_#{@category.id}"
 99:             else
100:               page.replace "cat_#{@category.id}", :partial => 'category', :object => @category
101:               page.visual_effect :highlight, "cat_#{@category.id}"
102:             end
103:           end
104:         }
105:       end
106:     else
107:       respond_to do |format|
108:         format.html {
109:           render :action => "edit"
110:         }
111:         format.js {
112:           render :update do |page| 
113:             page.insert_html :top, "cat_#{@category.id}", "<div class='flash_error'>la categoria no se ha actualizado</div>"
114:           end
115:         }
116:       end
117:     end
118:   end

[Validate]