diff --git a/app/controllers/protocols_controller.rb b/app/controllers/protocols_controller.rb index 14a65cbbe..f0fb425da 100644 --- a/app/controllers/protocols_controller.rb +++ b/app/controllers/protocols_controller.rb @@ -1074,7 +1074,7 @@ class ProtocolsController < ApplicationController def set_inline_name_editing return unless @protocol.initial_draft? - return unless can_manage_protocol_in_repository?(@protocol) + return unless can_manage_protocol_draft_in_repository?(@protocol) @inline_editable_title_config = { name: 'title', diff --git a/app/controllers/steps_controller.rb b/app/controllers/steps_controller.rb index f9dbe66c5..649960bf3 100644 --- a/app/controllers/steps_controller.rb +++ b/app/controllers/steps_controller.rb @@ -295,7 +295,7 @@ class StepsController < ApplicationController end def check_protocol_manage_permissions - render_403 unless can_manage_protocol_in_module?(@protocol) || can_manage_protocol_in_repository?(@protocol) + render_403 unless can_manage_protocol_in_module?(@protocol) || can_manage_protocol_draft_in_repository?(@protocol) end def check_manage_permissions @@ -306,7 +306,7 @@ class StepsController < ApplicationController if @my_module render_403 unless can_manage_my_module_steps?(@my_module) else - render_403 unless can_manage_protocol_in_repository?(@protocol) + render_403 unless can_manage_protocol_draft_in_repository?(@protocol) end end diff --git a/app/controllers/tiny_mce_assets_controller.rb b/app/controllers/tiny_mce_assets_controller.rb index 7c1d2bb40..42873fdc4 100644 --- a/app/controllers/tiny_mce_assets_controller.rb +++ b/app/controllers/tiny_mce_assets_controller.rb @@ -133,7 +133,7 @@ class TinyMceAssetsController < ApplicationController return render_403 unless can_manage_step?(@assoc.step) when Protocol return render_403 unless can_manage_protocol_in_module?(@protocol) || - can_manage_protocol_in_repository?(@protocol) + can_manage_protocol_draft_in_repository?(@protocol) when ResultText, MyModule return render_403 unless can_manage_my_module?(@my_module) else diff --git a/app/javascript/vue/protocol/protocolMetadata.vue b/app/javascript/vue/protocol/protocolMetadata.vue index 50354b0ef..4ccdac5d5 100644 --- a/app/javascript/vue/protocol/protocolMetadata.vue +++ b/app/javascript/vue/protocol/protocolMetadata.vue @@ -19,6 +19,7 @@ +
diff --git a/app/permissions/step.rb b/app/permissions/step.rb index aef73030a..777747a7e 100644 --- a/app/permissions/step.rb +++ b/app/permissions/step.rb @@ -5,7 +5,7 @@ Canaid::Permissions.register_for(Step) do if step.my_module can_manage_my_module_steps?(user, step.my_module) else - can_manage_protocol_in_repository?(user, step.protocol) + can_manage_protocol_draft_in_repository?(user, step.protocol) end end end diff --git a/app/serializers/protocol_serializer.rb b/app/serializers/protocol_serializer.rb index 167ff01f7..18e86055a 100644 --- a/app/serializers/protocol_serializer.rb +++ b/app/serializers/protocol_serializer.rb @@ -8,7 +8,7 @@ class ProtocolSerializer < ActiveModel::Serializer attributes :name, :id, :urls, :description, :description_view, :updated_at, :in_repository, :created_at_formatted, :updated_at_formatted, :added_by, :authors, :keywords, :version, :code, - :published, :version_comment, :archived + :published, :version_comment, :archived, :disabled_drafting def updated_at object.updated_at.to_i @@ -84,6 +84,14 @@ class ProtocolSerializer < ActiveModel::Serializer !object.in_module? end + def disabled_drafting + protocol_types = Protocol.where(name: object.name).pluck(:protocol_type) + object.protocol_type != 'in_repository_draft' && + !object.archived && + protocol_types.length > 1 && + protocol_types.include?('in_repository_draft') + end + private def load_from_repo_url @@ -123,13 +131,13 @@ class ProtocolSerializer < ActiveModel::Serializer end def reorder_steps_url - return unless can_manage_protocol_in_module?(object) || can_manage_protocol_in_repository?(object) + return unless can_manage_protocol_in_module?(object) || can_manage_protocol_draft_in_repository?(object) reorder_protocol_steps_url(protocol_id: object.id) end def add_step_url - return unless can_manage_protocol_in_module?(object) || can_manage_protocol_in_repository?(object) + return unless can_manage_protocol_in_module?(object) || can_manage_protocol_draft_in_repository?(object) protocol_steps_path(protocol_id: object.id) end @@ -153,7 +161,7 @@ class ProtocolSerializer < ActiveModel::Serializer end def update_protocol_name_url - if in_repository && can_manage_protocol_in_repository?(object) + if in_repository && can_manage_protocol_draft_in_repository?(object) name_protocol_path(object) elsif can_manage_protocol_in_module?(object) protocol_my_module_path(object.my_module) @@ -161,7 +169,7 @@ class ProtocolSerializer < ActiveModel::Serializer end def update_protocol_description_url - if in_repository && can_manage_protocol_in_repository?(object) + if in_repository && can_manage_protocol_draft_in_repository?(object) description_protocol_path(object) elsif can_manage_protocol_in_module?(object) protocol_my_module_path(object.my_module) @@ -169,15 +177,15 @@ class ProtocolSerializer < ActiveModel::Serializer end def update_protocol_authors_url - authors_protocol_path(object) if in_repository && can_manage_protocol_in_repository?(object) + authors_protocol_path(object) if in_repository && can_manage_protocol_draft_in_repository?(object) end def update_protocol_keywords_url - keywords_protocol_path(object) if in_repository && can_manage_protocol_in_repository?(object) + keywords_protocol_path(object) if in_repository && can_manage_protocol_draft_in_repository?(object) end def delete_steps_url - return unless can_manage_protocol_in_module?(object) || can_manage_protocol_in_repository?(object) + return unless can_manage_protocol_in_module?(object) || can_manage_protocol_draft_in_repository?(object) delete_steps_protocol_path(object) end diff --git a/app/serializers/step_serializer.rb b/app/serializers/step_serializer.rb index 57911feef..e587c5063 100644 --- a/app/serializers/step_serializer.rb +++ b/app/serializers/step_serializer.rb @@ -79,7 +79,7 @@ class StepSerializer < ActiveModel::Serializer urls_list[:state_url] = toggle_step_state_step_path(object) end - if can_manage_protocol_in_module?(object.protocol) || can_manage_protocol_in_repository?(object.protocol) + if can_manage_protocol_in_module?(object.protocol) || can_manage_protocol_draft_in_repository?(object.protocol) urls_list[:duplicate_step_url] = duplicate_step_path(object) end diff --git a/app/views/protocols/index/_general_toolbar.html.erb b/app/views/protocols/index/_general_toolbar.html.erb index 2fb992f1f..d006a4e23 100644 --- a/app/views/protocols/index/_general_toolbar.html.erb +++ b/app/views/protocols/index/_general_toolbar.html.erb @@ -1,36 +1,35 @@ diff --git a/app/views/protocols/index/_protocol_versions_modal.html.erb b/app/views/protocols/index/_protocol_versions_modal.html.erb index aef8738c8..7ef19f6f8 100644 --- a/app/views/protocols/index/_protocol_versions_modal.html.erb +++ b/app/views/protocols/index/_protocol_versions_modal.html.erb @@ -56,7 +56,7 @@ >
<%= draft.version_comment %>
- <%= text_area_tag 'version_comment', draft.version_comment, disabled: true, class: 'smart-text-area hidden' %> + <%= text_area_tag 'version_comment', draft.version_comment, disabled: can_publish_protocol_in_repository?(@protocol), class: 'smart-text-area hidden' %>
<%= t('general.cancel') %> diff --git a/app/views/steps/attachments/_list.html.erb b/app/views/steps/attachments/_list.html.erb index 20712b30f..6d29085df 100644 --- a/app/views/steps/attachments/_list.html.erb +++ b/app/views/steps/attachments/_list.html.erb @@ -11,7 +11,7 @@
<% if !(preview) && (can_manage_protocol_in_module?(@protocol) || - can_manage_protocol_in_repository?(@protocol)) %> + can_manage_protocol_draft_in_repository?(@protocol)) %>