From b0d7b9dc75364f0f497589c151c8325059774650 Mon Sep 17 00:00:00 2001 From: Luka Murn Date: Thu, 25 Aug 2016 13:33:42 +0200 Subject: [PATCH] Generate activities when editing/deleting comments --- .../my_module_comments_controller.rb | 37 +++++++++++++++++++ .../project_comments_controller.rb | 34 +++++++++++++++++ app/controllers/result_comments_controller.rb | 24 ++++++++++++ app/controllers/step_comments_controller.rb | 30 +++++++++++++++ app/models/activity.rb | 12 +++++- config/locales/en.yml | 10 +++++ 6 files changed, 146 insertions(+), 1 deletion(-) diff --git a/app/controllers/my_module_comments_controller.rb b/app/controllers/my_module_comments_controller.rb index a5c8303b6..46c6342c0 100644 --- a/app/controllers/my_module_comments_controller.rb +++ b/app/controllers/my_module_comments_controller.rb @@ -50,6 +50,19 @@ class MyModuleCommentsController < ApplicationController respond_to do |format| if (@comment.valid? && @my_module.comments << @comment) + # Generate activity + Activity.create( + type_of: :add_comment_to_module, + user: current_user, + project: @my_module.experiment.project, + my_module: @my_module, + message: t( + 'activities.add_comment_to_module', + user: current_user.full_name, + module: @my_module.name + ) + ) + format.html { flash[:success] = t( "my_module_comments.create.success_flash", @@ -98,6 +111,18 @@ class MyModuleCommentsController < ApplicationController respond_to do |format| format.json do if @comment.save + # Generate activity + Activity.create( + type_of: :edit_module_comment, + user: current_user, + project: @my_module.experiment.project, + my_module: @my_module, + message: t( + 'activities.edit_module_comment', + user: current_user.full_name, + module: @my_module.name + ) + ) render json: {}, status: :ok else render json: { errors: @comment.errors.to_hash(true) }, @@ -111,6 +136,18 @@ class MyModuleCommentsController < ApplicationController respond_to do |format| format.json do if @comment.destroy + # Generate activity + Activity.create( + type_of: :delete_module_comment, + user: current_user, + project: @my_module.experiment.project, + my_module: @my_module, + message: t( + 'activities.delete_module_comment', + user: current_user.full_name, + module: @my_module.name + ) + ) render json: {}, status: :ok else render json: { message: I18n.t('comments.delete_error') }, diff --git a/app/controllers/project_comments_controller.rb b/app/controllers/project_comments_controller.rb index 86309229d..2d32abcab 100644 --- a/app/controllers/project_comments_controller.rb +++ b/app/controllers/project_comments_controller.rb @@ -50,6 +50,18 @@ class ProjectCommentsController < ApplicationController respond_to do |format| if (@comment.valid? && @project.comments << @comment) + # Generate activity + Activity.create( + type_of: :add_comment_to_project, + user: current_user, + project: @project, + message: t( + 'activities.add_comment_to_project', + user: current_user.full_name, + project: @project.name + ) + ) + format.html { flash[:success] = t( "project_comments.create.success_flash", @@ -97,6 +109,17 @@ class ProjectCommentsController < ApplicationController respond_to do |format| format.json do if @comment.save + # Generate activity + Activity.create( + type_of: :edit_project_comment, + user: current_user, + project: @project, + message: t( + 'activities.edit_project_comment', + user: current_user.full_name, + project: @project.name + ) + ) render json: {}, status: :ok else render json: { errors: @comment.errors.to_hash(true) }, @@ -110,6 +133,17 @@ class ProjectCommentsController < ApplicationController respond_to do |format| format.json do if @comment.destroy + # Generate activity + Activity.create( + type_of: :delete_project_comment, + user: current_user, + project: @project, + message: t( + 'activities.delete_project_comment', + user: current_user.full_name, + project: @project.name + ) + ) render json: {}, status: :ok else render json: { message: I18n.t('comments.delete_error') }, diff --git a/app/controllers/result_comments_controller.rb b/app/controllers/result_comments_controller.rb index 3453b78fe..ed59b3088 100644 --- a/app/controllers/result_comments_controller.rb +++ b/app/controllers/result_comments_controller.rb @@ -112,6 +112,18 @@ class ResultCommentsController < ApplicationController respond_to do |format| format.json do if @comment.save + # Generate activity + Activity.create( + type_of: :edit_result_comment, + user: current_user, + project: @result.my_module.experiment.project, + my_module: @result.my_module, + message: t( + 'activities.edit_result_comment', + user: current_user.full_name, + result: @result.name + ) + ) render json: {}, status: :ok else render json: { errors: @comment.errors.to_hash(true) }, @@ -125,6 +137,18 @@ class ResultCommentsController < ApplicationController respond_to do |format| format.json do if @comment.destroy + # Generate activity + Activity.create( + type_of: :delete_result_comment, + user: current_user, + project: @result.my_module.experiment.project, + my_module: @result.my_module, + message: t( + 'activities.delete_result_comment', + user: current_user.full_name, + result: @result.name + ) + ) render json: {}, status: :ok else render json: { message: I18n.t('comments.delete_error') }, diff --git a/app/controllers/step_comments_controller.rb b/app/controllers/step_comments_controller.rb index 26c6fe456..fad1c454d 100644 --- a/app/controllers/step_comments_controller.rb +++ b/app/controllers/step_comments_controller.rb @@ -116,6 +116,21 @@ class StepCommentsController < ApplicationController respond_to do |format| format.json do if @comment.save + # Generate activity + if @protocol.in_module? + Activity.create( + type_of: :edit_step_comment, + user: current_user, + project: @step.my_module.experiment.project, + my_module: @step.my_module, + message: t( + 'activities.edit_step_comment', + user: current_user.full_name, + step: @step.position + 1, + step_name: @step.name + ) + ) + end render json: {}, status: :ok else render json: { errors: @comment.errors.to_hash(true) }, @@ -129,6 +144,21 @@ class StepCommentsController < ApplicationController respond_to do |format| format.json do if @comment.destroy + # Generate activity + if @protocol.in_module? + Activity.create( + type_of: :delete_step_comment, + user: current_user, + project: @step.my_module.experiment.project, + my_module: @step.my_module, + message: t( + 'activities.delete_step_comment', + user: current_user.full_name, + step: @step.position + 1, + step_name: @step.name + ) + ) + end render json: {}, status: :ok else render json: { message: I18n.t('comments.delete_error') }, diff --git a/app/models/activity.rb b/app/models/activity.rb index 506fbb0bc..c0a088530 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -28,7 +28,17 @@ class Activity < ActiveRecord::Base :archive_result, :edit_result, :clone_experiment, - :move_experiment + :move_experiment, + :add_comment_to_project, + :edit_project_comment, + :delete_project_comment, + :add_comment_to_module, + :edit_module_comment, + :delete_module_comment, + :edit_step_comment, + :delete_step_comment, + :edit_result_comment, + :delete_result_comment ] validates :type_of, presence: true diff --git a/config/locales/en.yml b/config/locales/en.yml index 013039dd2..748eaf127 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1030,6 +1030,16 @@ en: edit_table_result: "%{user} edited table result %{result}." clone_experiment: "%{user} cloned %{experiment_new} from %{experiment_original}." move_experiment: "%{user} moved experiment %{experiment} from project %{project_original} to project %{project_new}." + add_comment_to_project: "%{user} commented on project %{project}." + edit_project_comment: "%{user} edited comment on project %{project}." + delete_project_comment: "%{user} deleted comment on project %{project}." + add_comment_to_module: "%{user} commented on module %{module}." + edit_module_comment: "%{user} edited comment on module %{module}." + delete_module_comment: "%{user} deleted comment on module %{module}." + edit_step_comment: "%{user} edited comment on Step %{step} %{step_name}." + delete_step_comment: "%{user} deleted comment on Step %{step} %{step_name}." + edit_result_comment: "%{user} edited comment on result %{result}." + delete_result_comment: "%{user} deleted comment on result %{result}." user_my_modules: new: