From ff47f29dc22795b924bdb7ea418dcd2424f1e1ec Mon Sep 17 00:00:00 2001 From: Jure Grabnar Date: Thu, 29 Sep 2016 15:30:55 +0200 Subject: [PATCH] Add wopi file activity SCI-393 #close --- app/controllers/assets_controller.rb | 3 +++ app/controllers/wopi_controller.rb | 2 ++ app/models/activity.rb | 4 ++- app/utilities/wopi_util.rb | 38 ++++++++++++++++++++++++++++ config/locales/en.yml | 4 +++ 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/app/controllers/assets_controller.rb b/app/controllers/assets_controller.rb index 94492948c..87e084eac 100644 --- a/app/controllers/assets_controller.rb +++ b/app/controllers/assets_controller.rb @@ -1,4 +1,6 @@ class AssetsController < ApplicationController + include WopiUtil + before_action :load_vars, except: [:signature] before_action :check_read_permission, except: [:signature, :file_present] before_action :check_edit_permission, only: [ :edit ] @@ -71,6 +73,7 @@ class AssetsController < ApplicationController @favicon_url = @asset.favicon_url('edit') @token = current_user.get_wopi_token @ttl = (current_user.wopi_token_ttl * 1000).to_s + create_wopi_file_activity(current_user, true) end def view diff --git a/app/controllers/wopi_controller.rb b/app/controllers/wopi_controller.rb index 348b314a3..edc6c6359 100644 --- a/app/controllers/wopi_controller.rb +++ b/app/controllers/wopi_controller.rb @@ -143,6 +143,8 @@ class WopiController < ActionController::Base if @asset.lock == lock @asset.unlock @asset.post_process_file # Space is already taken in put_file + create_wopi_file_activity(@user, false) + response.headers['X-WOPI-ItemVersion'] = @asset.version render nothing: :true, status: 200 and return else diff --git a/app/models/activity.rb b/app/models/activity.rb index bc2c91212..3a52b5d24 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -39,7 +39,9 @@ class Activity < ActiveRecord::Base :delete_step_comment, :edit_result_comment, :delete_result_comment, - :destroy_result + :destroy_result, + :start_edit_wopi_file, + :unlock_wopi_file ] validates :type_of, presence: true diff --git a/app/utilities/wopi_util.rb b/app/utilities/wopi_util.rb index 01b4fa272..844936efa 100644 --- a/app/utilities/wopi_util.rb +++ b/app/utilities/wopi_util.rb @@ -70,4 +70,42 @@ module WopiUtil discovery = WopiDiscovery.first discovery.destroy if discovery end + + def create_wopi_file_activity(current_user, started_editing) + if @assoc.class == Step + activity = Activity.new( + type_of: :start_edit_wopi_file, + user: current_user, + message: t( + started_editing ? 'activities.start_edit_wopi_file_step' : + 'activities.unlock_wopi_file_step', + user: current_user.full_name, + file: @asset.file_file_name, + step: @asset.step.position + 1, + step_name: @asset.step.name + ) + ) + + if @protocol.in_module? + activity.my_module = @protocol.my_module + activity.project = @protocol.my_module.experiment.project + end + + activity.save + else + Activity.create( + type_of: :start_edit_wopi_file, + user: current_user, + project: @my_module.experiment.project, + my_module: @my_module, + message: t( + started_editing ? 'activities.start_edit_wopi_file_result' : + 'activities.unlock_wopi_file_result', + user: current_user.full_name, + file: @asset.file_file_name, + result: @asset.result.name + ) + ) + end + end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 2a91459c1..5eaf22013 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1052,6 +1052,10 @@ en: 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}." + start_edit_wopi_file_step: "%{user} started editing File %{file} on Step %{step} %{step_name}." + start_edit_wopi_file_result: "%{user} started editing File %{file} on Result %{result}." + unlock_wopi_file_step: "%{user} closed File %{file} for editing on Step %{step} %{step_name}." + unlock_wopi_file_result: "%{user} started editing File %{file} on Result %{result}." user_my_modules: new: