]> git.openstreetmap.org Git - rails.git/blob - app/models/diary_sweeper.rb
Only show each note once is the user notes view
[rails.git] / app / models / diary_sweeper.rb
1 class DiarySweeper < ActionController::Caching::Sweeper
2   observe DiaryComment, DiaryEntry
3
4   def after_create(record)
5     expire_cache_for(record)
6   end
7
8   def after_update(record)
9     expire_cache_for(record)
10   end
11
12   def after_destroy(record)
13     expire_cache_for(record)
14   end  
15
16 private 
17
18   def expire_cache_for(record)
19     case
20     when record.is_a?(DiaryEntry) then entry = record
21     when record.is_a?(DiaryComment) then entry = record.diary_entry
22     end
23
24     expire_action(:controller => 'diary_entry', :action => 'view', :display_name => entry.user.display_name, :id => entry.id)
25
26     expire_action(:controller => 'diary_entry', :action => 'list', :language => nil, :display_name => nil)
27     expire_action(:controller => 'diary_entry', :action => 'list', :language => entry.language_code, :display_name => nil)
28     expire_action(:controller => 'diary_entry', :action => 'list', :language => nil, :display_name => entry.user.display_name)
29
30     expire_action(:controller => 'diary_entry', :action => 'rss', :format => :rss, :language => nil, :display_name => nil)
31     expire_action(:controller => 'diary_entry', :action => 'rss', :format => :rss, :language => entry.language_code, :display_name => nil)
32     expire_action(:controller => 'diary_entry', :action => 'rss', :format => :rss, :language => nil, :display_name => entry.user.display_name)
33
34     if record.is_a?(DiaryEntry)
35       expire_fragment(:controller => 'diary_entry', :action => 'view', :display_name => entry.user.display_name, :id => entry.id, :part => "location")
36     end
37   end
38 end