| 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
Creación de categoría
# 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
# 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
# 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
# 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
# File app/controllers/admin/categories_controller.rb, line 11
11: def index
12: end
Formulario de creación de categoría
# 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
# 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
# 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