aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/discussions_controller.rb23
-rw-r--r--app/controllers/speakers_controller.rb26
2 files changed, 34 insertions, 15 deletions
diff --git a/app/controllers/discussions_controller.rb b/app/controllers/discussions_controller.rb
index eb91cfc..cf658b6 100644
--- a/app/controllers/discussions_controller.rb
+++ b/app/controllers/discussions_controller.rb
@@ -5,23 +5,16 @@ class DiscussionsController < ApplicationController
before_filter :load_and_check_discussion_recipient, :only => [:create, :new]
def index
- # показываем дискуссии юзера, и те куда его присоеденили
- # так как имеем массив дискуссий, его пагинация будет через хак
@discussions = current_user.discussions
-
- respond_to do |format|
- format.html # index.html.erb
- format.json { render :json => @discussions }
- end
end
# GET /discussions/1
# GET /discussions/1.json
def show
@discussion = Discussion.includes(:messages, :speakers).find(params[:id])
- redirect_to root_url, :notice => t("views.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
+ redirect_to discussions_url, :notice => t("views.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
- @discussion.mark_as_read_for(current_user) # сделаем прочтенной для пользователя
+ @discussion.mark_as_read_for(current_user)
end
# GET /discussions/new
@@ -42,7 +35,6 @@ class DiscussionsController < ApplicationController
m.user = current_user
end
-
if @discussion.save
redirect_to @discussion, :notice => t("views.discussions.started")
else
@@ -58,17 +50,18 @@ class DiscussionsController < ApplicationController
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]
+ # @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
- # дискуссия уже существует, добавим в нее написанное сообщение
- @discussion.messages.each do |m|
- Message.create!(:discussion => discussion, :user => current_user, :body => m.body) if m.body
+ # 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("views.discussions.exists", :user => user[Inboxes::config.user_name])
diff --git a/app/controllers/speakers_controller.rb b/app/controllers/speakers_controller.rb
new file mode 100644
index 0000000..7fd5f1e
--- /dev/null
+++ b/app/controllers/speakers_controller.rb
@@ -0,0 +1,26 @@
+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] = t("views.speakers.removed")
+ redirect_to @discussion.speakers.any? ? @discussion : discussions_url
+ end
+
+ private
+
+ def init_and_check_permissions
+ @discussion = Discussion.find(params[:discussion_id])
+ redirect_to discussions_url, :notice => t("views.discussions.can_not_participate") unless @discussion.can_participate?(current_user)
+ end
+end