diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 49e627f..8a994fb 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -1,5 +1,7 @@ class AccountController < ApplicationController before_filter :login_required, :except => [:login, :logout] + + cache_sweeper :user_sweeper, :only => [:details,:profile] def profile @user = self.current_user if logged_in? diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 76b8471..8a9a796 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -3,6 +3,8 @@ class AdminController < ApplicationController before_filter :signup_first_user, :except => [:signup] before_filter :no_more_than_one_signup, :only => [:signup] + cache_sweeper :post_sweeper, :only => [:new_post] + def signup @admin = Admin.new diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index d67cebd..492663c 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -1,6 +1,8 @@ class CommentsController < ApplicationController before_filter :login_required + cache_sweeper :comment_sweeper, :only => [:create] + def create @comment = Comment.new(params[:comment]) @comment.talk_id = params[:id] diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index c3fefc8..2d0f607 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -1,18 +1,27 @@ class EventsController < ApplicationController + caches_page :feed def index - @users = User.find :all, :order => "id DESC", :limit => 10 - @user_count = User.count - @talks = Talk.find :all, :order => "id DESC", :limit => 5 - @talk_count = Talk.count - @posts = Post.find :all, :order => "id DESC" + unless fragment_exist?("home_users") + @users = User.find :all, :order => "id DESC", :limit => 10 + @user_count = User.count + end + + unless fragment_exist?("home_talks") + @talks = Talk.find :all, :order => "id DESC", :limit => 5 + @talk_count = Talk.count + end + + unless fragment_exist?("home_intro") + @posts = Post.find :all, :order => "id DESC" + end end def feed it = [] it << Post.find(:all, :limit => 20) it << Talk.find(:all, :limit => 20) - it << Comment.find(:all, :limit => 20) + it << Comment.find(:all, :limit => 20, :include => [:talk]) it.flatten! it.sort!{|a,b| a.created_at <=> b.created_at} diff --git a/app/controllers/talks_controller.rb b/app/controllers/talks_controller.rb index 77a2e32..f3f29b9 100644 --- a/app/controllers/talks_controller.rb +++ b/app/controllers/talks_controller.rb @@ -1,5 +1,7 @@ class TalksController < ApplicationController before_filter :login_required, :except => [:show, :index] + + cache_sweeper :talk_sweeper, :only => [:create] def create @talk = Talk.new(params[:talk]) @@ -11,6 +13,7 @@ def create @talk.save! flash[:message] = "Talk adicionada :)" + redirect_to root_path rescue ActiveRecord::RecordInvalid @@ -33,12 +36,4 @@ def show def new render :layout => "textile_help" end - - def destroy - @talk = Talk.find_by_id_and_user_id(params[:id],current_user.id) - @talk.destroy - - flash[:message] = "Talk apagada :)" - redirect_to root_path - end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 98ff8cb..b70e70a 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,6 +1,8 @@ class UsersController < ApplicationController before_filter :login_required, :only => [:show] + cache_sweeper :user_sweeper, :only => [:create] + # shows the signup form def new end @@ -10,7 +12,10 @@ def show end def index - @users = User.find :all, :order => "id DESC" + unless fragment_exist?("users_page") + @users = User.find :all, :order => "id DESC" + @openid_count = User.count :conditions => "identity_url is not null" + end end # receives the new user form post diff --git a/app/sweepers/comment_sweeper.rb b/app/sweepers/comment_sweeper.rb new file mode 100644 index 0000000..bd1b8c4 --- /dev/null +++ b/app/sweepers/comment_sweeper.rb @@ -0,0 +1,15 @@ +class CommentSweeper < ActionController::Caching::Sweeper + observe Comment + + def after_create(comment) + expire_page("/feed.xml") + end + + def after_destroy(comment) + expire_page("/feed.xml") + end + + def after_update(comment) + #expire_page("/feed.xml") + end +end \ No newline at end of file diff --git a/app/sweepers/post_sweeper.rb b/app/sweepers/post_sweeper.rb new file mode 100644 index 0000000..f865703 --- /dev/null +++ b/app/sweepers/post_sweeper.rb @@ -0,0 +1,18 @@ +class PostSweeper < ActionController::Caching::Sweeper + observe Post + + def after_create(post) + expire_page("/feed.xml") + expire_fragment("home_intro") + end + + def after_destroy(post) + expire_page("/feed.xml") + expire_fragment("home_intro") + end + + def after_update(post) + expire_page("/feed.xml") + expire_fragment("home_intro") + end +end \ No newline at end of file diff --git a/app/sweepers/talk_sweeper.rb b/app/sweepers/talk_sweeper.rb new file mode 100644 index 0000000..559d6d1 --- /dev/null +++ b/app/sweepers/talk_sweeper.rb @@ -0,0 +1,18 @@ +class TalkSweeper < ActionController::Caching::Sweeper + observe Talk + + def after_create(talk) + expire_page("/feed.xml") + expire_fragment("home_talks") + end + + def after_destroy(talk) + expire_page("/feed.xml") + expire_fragment("home_talks") + end + + def after_update(talk) + expire_page("/feed.xml") + expire_fragment("home_talks") + end +end \ No newline at end of file diff --git a/app/sweepers/user_sweeper.rb b/app/sweepers/user_sweeper.rb new file mode 100644 index 0000000..022ba10 --- /dev/null +++ b/app/sweepers/user_sweeper.rb @@ -0,0 +1,20 @@ +class UserSweeper < ActionController::Caching::Sweeper + observe User + + def after_create(user) + #expire_page("/index.xml") + expire_fragment("home_users") + expire_fragment("users_page") + end + + def after_destroy(user) + #expire_page("/index.xml") + expire_fragment("home_users") + expire_fragment("users_page") + end + + def after_update(talk) + #expire_page("/index.xml") + expire_fragment("home_users") + end +end \ No newline at end of file diff --git a/app/views/events/feed.xml.builder b/app/views/events/feed.xml.builder index 2c3c85b..aea7bc2 100644 --- a/app/views/events/feed.xml.builder +++ b/app/views/events/feed.xml.builder @@ -12,18 +12,18 @@ xml.rss "version" => "2.0" do when "Comment" xml.title "Comentário à sessão '#{item.talk.title}'" xml.link "http://barcamp.webreakstuff.com/talks/#{item.talk_id}" - xml.description item.body + xml.description item.body_html xml.guid "#{item.class.to_s.downcase}-#{item.id}-#{item.created_at.strftime("%d%m%Y%H%M%S")}" when "Talk" xml.title "Nova sessão proposta '#{item.title}'" xml.link "http://barcamp.webreakstuff.com/talks/#{item.id}" - xml.description item.description + xml.description item.description_html xml.guid "#{item.class.to_s.downcase}-#{item.id}-#{item.created_at.strftime("%d%m%Y%H%M%S")}" when "Post" xml.title "Novidades! - #{item.title}" xml.link "http://barcamp.webreakstuff.com/" - xml.description item.body - xml.guid "#{item.class.to_s.downcase}-#{item.id}-#{item.updated_at.strftime("%d%m%Y%H%M%S")}" + xml.description item.body_html + xml.guid "#{item.class.to_s.downcase}-#{item.id}-#{item.created_at.strftime("%d%m%Y%H%M%S")}" end xml.pubDate(item.updated_at) end diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb index 36bbdad..5f79e70 100644 --- a/app/views/events/index.html.erb +++ b/app/views/events/index.html.erb @@ -1,41 +1,47 @@ <% content_for :intro do %> -
O Barcamp Portugal nasceu em 2006 e pretende ser um ponto de encontro de gente que se junta para falar nos mais variados temas que, normalmente, gravitam em torno de Inovação, Empreendorismo e Web.
-Este ano, optámos por usar este site em vez da tradicional wiki por permitir uma gestão mais rigorosa dos inscritos (no evento e nas refeições, mais tarde) e esperemos que facilite a comunicação entre as pessoas.
- -<script>alert('test');</script>