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 @@
>
<%= 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)) %>