From 661590c630f022fc678c4d5664b497db13de6eec Mon Sep 17 00:00:00 2001 From: Kir Date: Wed, 16 Nov 2011 14:41:29 +0400 Subject: Faye integration, resources under module --- app/controllers/discussions_controller.rb | 67 ----------------------- app/controllers/inboxes/base_controller.rb | 3 + app/controllers/inboxes/discussions_controller.rb | 67 +++++++++++++++++++++++ app/controllers/inboxes/messages_controller.rb | 18 ++++++ app/controllers/inboxes/speakers_controller.rb | 26 +++++++++ app/controllers/messages_controller.rb | 18 ------ app/controllers/speakers_controller.rb | 26 --------- 7 files changed, 114 insertions(+), 111 deletions(-) delete mode 100644 app/controllers/discussions_controller.rb create mode 100644 app/controllers/inboxes/base_controller.rb create mode 100644 app/controllers/inboxes/discussions_controller.rb create mode 100644 app/controllers/inboxes/messages_controller.rb create mode 100644 app/controllers/inboxes/speakers_controller.rb delete mode 100644 app/controllers/messages_controller.rb delete mode 100644 app/controllers/speakers_controller.rb (limited to 'app/controllers') diff --git a/app/controllers/discussions_controller.rb b/app/controllers/discussions_controller.rb deleted file mode 100644 index 5e769fb..0000000 --- a/app/controllers/discussions_controller.rb +++ /dev/null @@ -1,67 +0,0 @@ -class DiscussionsController < ApplicationController - before_filter :authenticate_user! - # before_filter :check_permissions, :only => :show - - before_filter :load_and_check_discussion_recipient, :only => [:create, :new] - - def index - @discussions = current_user.discussions - end - - # GET /discussions/1 - # GET /discussions/1.json - def show - @discussion = Discussion.includes(:messages, :speakers).find(params[:id]) - redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user) - - # @discussion.mark_as_read_for(current_user) - end - - # GET /discussions/new - # GET /discussions/new.json - def new - # @discussion = Discussion.new - @discussion.messages.build - end - - # POST /discussions - # POST /discussions.json - def create - # @discussion = Discussion.new(params[:discussion]) - @discussion.add_recipient_token current_user.id - - @discussion.messages.each do |m| - m.discussion = @discussion - m.user = current_user - end - - if @discussion.save - redirect_to @discussion, :notice => t("inboxes.discussions.started") - else - render :action => "new" - end - end - - private - - def load_and_check_discussion_recipient - # initializing model fir new and create actions - @discussion = Discussion.new((params[:discussion] ? params[:discussion] : {})) - # @discussion.recipient_tokens = params[:recipients] if params[:recipients] # pre-population - - # checking if discussion with this user already exists - if @discussion.recipient_ids && @discussion.recipient_ids.size == 1 - user = User.find(@discussion.recipient_ids.first) - discussion = Discussion.find_between_users(current_user, user) - if discussion - # it exists, let's add message and redirect current user - @discussion.messages.each do |message| - Message.create(:discussion => discussion, :user => current_user, :body => message.body) if message.body - end - # перекидываем на нее - redirect_to discussion_url(discussion), :notice => t("inboxes.discussions.exists", :user => user[Inboxes::config.user_name]) - end - end - end - -end diff --git a/app/controllers/inboxes/base_controller.rb b/app/controllers/inboxes/base_controller.rb new file mode 100644 index 0000000..54767d2 --- /dev/null +++ b/app/controllers/inboxes/base_controller.rb @@ -0,0 +1,3 @@ +class Inboxes::BaseController < ApplicationController + +end \ No newline at end of file diff --git a/app/controllers/inboxes/discussions_controller.rb b/app/controllers/inboxes/discussions_controller.rb new file mode 100644 index 0000000..d901a80 --- /dev/null +++ b/app/controllers/inboxes/discussions_controller.rb @@ -0,0 +1,67 @@ +class Inboxes::DiscussionsController < Inboxes::BaseController + before_filter :authenticate_user! + before_filter :init_and_check_permissions, :only => :show + before_filter :load_and_check_discussion_recipient, :only => [:create, :new] + + def index + @discussions = current_user.discussions + end + + # GET /discussions/1 + # GET /discussions/1.json + def show + @discussion.mark_as_read_for(current_user) + end + + # GET /discussions/new + # GET /discussions/new.json + def new + # @discussion = Discussion.new + @discussion.messages.build + end + + # POST /discussions + # POST /discussions.json + def create + # @discussion = Discussion.new(params[:discussion]) + @discussion.add_recipient_token current_user.id + + @discussion.messages.each do |m| + m.discussion = @discussion + m.user = current_user + end + + if @discussion.save + redirect_to @discussion, :notice => t("inboxes.discussions.started") + else + render :action => "new" + end + end + + private + + def init_and_check_permissions + @discussion = Discussion.includes(:messages, :speakers).find(params[:id]) + redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user) + end + + def load_and_check_discussion_recipient + # initializing model fir new and create actions + @discussion = Discussion.new((params[:discussion] ? params[:discussion] : {})) + # @discussion.recipient_tokens = params[:recipients] if params[:recipients] # pre-population + + # checking if discussion with this user already exists + if @discussion.recipient_ids && @discussion.recipient_ids.size == 1 + user = User.find(@discussion.recipient_ids.first) + discussion = Discussion.find_between_users(current_user, user) + if discussion + # it exists, let's add message and redirect current user + @discussion.messages.each do |message| + Message.create(:discussion => discussion, :user => current_user, :body => message.body) if message.body + end + # перекидываем на нее + redirect_to discussion_url(discussion), :notice => t("inboxes.discussions.exists", :user => user[Inboxes::config.user_name]) + end + end + end +end \ No newline at end of file diff --git a/app/controllers/inboxes/messages_controller.rb b/app/controllers/inboxes/messages_controller.rb new file mode 100644 index 0000000..1c63221 --- /dev/null +++ b/app/controllers/inboxes/messages_controller.rb @@ -0,0 +1,18 @@ +class Inboxes::MessagesController < Inboxes::BaseController + + def create + @discussion = Discussion.find(params[:discussion_id]) + redirect_to root_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user) + + @message = Message.new(params[:message]) + @message.user = current_user + @message.discussion = @discussion + @message.save + + respond_to do |format| + format.html { redirect_to @message.discussion } + format.js + end + end + +end diff --git a/app/controllers/inboxes/speakers_controller.rb b/app/controllers/inboxes/speakers_controller.rb new file mode 100644 index 0000000..035df98 --- /dev/null +++ b/app/controllers/inboxes/speakers_controller.rb @@ -0,0 +1,26 @@ +class Inboxes::SpeakersController < Inboxes::BaseController + before_filter :init_and_check_permissions + + def create + # check permissions + raise ActiveRecord::RecordNotFound unless params[:speaker] && params[:speaker][:user_id] + @user = User.find(params[:speaker][:user_id]) + + flash[:notice] = t("views.speakers.added") if @discussion.add_speaker(@user) + redirect_to @discussion + end + + def destroy + @speaker = Speaker.find(params[:id]) + @speaker.destroy + flash[:notice] = @speaker.user == current_user ? t("inboxes.discussions.leaved") : t("inboxes.speakers.removed") + redirect_to @discussion.speakers.any? && @discussion.can_participate?(current_user) ? @discussion : discussions_url + end + + private + + def init_and_check_permissions + @discussion = Discussion.find(params[:discussion_id]) + redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user) + end +end diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb deleted file mode 100644 index 7baf8df..0000000 --- a/app/controllers/messages_controller.rb +++ /dev/null @@ -1,18 +0,0 @@ -class MessagesController < ApplicationController - - def create - @discussion = Discussion.find(params[:discussion_id]) - redirect_to root_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user) - - @message = Message.new(params[:message]) - @message.user = current_user - @message.discussion = @discussion - @message.save - - respond_to do |format| - format.html { redirect_to @message.discussion } - format.js - end - end - -end diff --git a/app/controllers/speakers_controller.rb b/app/controllers/speakers_controller.rb deleted file mode 100644 index db90dbe..0000000 --- a/app/controllers/speakers_controller.rb +++ /dev/null @@ -1,26 +0,0 @@ -class SpeakersController < ApplicationController - before_filter :init_and_check_permissions - - def create - # check permissions - raise ActiveRecord::RecordNotFound unless params[:speaker] && params[:speaker][:user_id] - @user = User.find(params[:speaker][:user_id]) - - flash[:notice] = t("views.speakers.added") if @discussion.add_speaker(@user) - redirect_to @discussion - end - - def destroy - @speaker = Speaker.find(params[:id]) - @speaker.destroy - flash[:notice] = @speaker.user == current_user ? t("inboxes.discussions.leaved") : t("inboxes.speakers.removed") - redirect_to @discussion.speakers.any? && @discussion.can_participate?(current_user) ? @discussion : discussions_url - end - - private - - def init_and_check_permissions - @discussion = Discussion.find(params[:discussion_id]) - redirect_to discussions_url, :notice => t("inboxes.discussions.can_not_participate") unless @discussion.can_participate?(current_user) - end -end -- cgit v1.2.3