From 24bf3af50ddd3736e0dc17ca712e8230db9332f1 Mon Sep 17 00:00:00 2001 From: AntonioTerceiro Date: Sat, 12 Jul 2008 14:07:30 +0000 Subject: [PATCH] ActionItem514: caching the categories menu --- app/controllers/admin/categories_controller.rb | 12 ++++++++++++ app/views/layouts/application.rhtml | 4 +++- config/routes.rb | 8 ++------ test/functional/categories_controller_test.rb | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 7 deletions(-) diff --git a/app/controllers/admin/categories_controller.rb b/app/controllers/admin/categories_controller.rb index 304145e..9c5cac0 100644 --- a/app/controllers/admin/categories_controller.rb +++ b/app/controllers/admin/categories_controller.rb @@ -23,6 +23,7 @@ class CategoriesController < AdminController if request.post? begin @category.save! + @saved = true redirect_to :action => 'index' rescue Exception => e render :action => 'new' @@ -36,6 +37,7 @@ class CategoriesController < AdminController @category = environment.categories.find(params[:id]) if request.post? @category.update_attributes!(params[:category]) + @saved = true redirect_to :action => 'index' end rescue Exception => e @@ -43,10 +45,20 @@ class CategoriesController < AdminController end end + after_filter :manage_categories_menu_cache, :only => [:edit, :new] + post_only :remove def remove environment.categories.find(params[:id]).destroy redirect_to :action => 'index' end + protected + + def manage_categories_menu_cache + if @saved && request.post? && @category.display_in_menu? + expire_fragment(:controller => 'public', :action => 'categories_menu') + end + end + end diff --git a/app/views/layouts/application.rhtml b/app/views/layouts/application.rhtml index 3c023d8..1ed30d4 100644 --- a/app/views/layouts/application.rhtml +++ b/app/views/layouts/application.rhtml @@ -94,7 +94,9 @@ { :controller=>"home" }, :id=>"menu_link_to_envhome", :title=>@environment.name %> - <%= render :file => 'shared/categories_menu' %> + <% cache(:controller => 'public', :action => 'categories_menu') do %> + <%= render :file => 'shared/categories_menu' %> + <% end %>