diff --git a/app/javascript/vue/protocol/protocolOptions.vue b/app/javascript/vue/protocol/protocolOptions.vue
index a70418d6b..05f4d55fc 100644
--- a/app/javascript/vue/protocol/protocolOptions.vue
+++ b/app/javascript/vue/protocol/protocolOptions.vue
@@ -36,22 +36,12 @@
@click="saveProtocol"
:class="{ disabled: !protocol.attributes.urls.save_to_repo_url }"
>
-
+
{{
i18n.t("my_modules.protocol.options_dropdown.save_to_repo")
}}
-
-
-
- {{ i18n.t("my_modules.protocol.options_dropdown.import") }}
-
-
-
+
+
+
+ {{
+ i18n.t("my_modules.protocol.options_dropdown.update_protocol")
+ }}
+
+
+
+
+
+ {{
+ i18n.t("my_modules.protocol.options_dropdown.unlink")
+ }}
+
+
+
+
+
+ {{
+ i18n.t("my_modules.protocol.options_dropdown.revert_protocol")
+ }}
+
+
{
+ $(this.$refs.unlinkProtocol).trigger("ajax:success", data);
+ });
+ },
+ updateProtocol() {
+ $.get(this.protocol.attributes.urls.update_protocol_url).success((data) => {
+ $(this.$refs.updateProtocol).trigger("ajax:success", data);
+ });
+ },
+ revertProtocol() {
+ $.get(this.protocol.attributes.urls.revert_protocol_url).success((data) => {
+ $(this.$refs.revertProtocol).trigger("ajax:success", data);
+ });
+ },
deleteSteps() {
this.$emit('protocol:delete_steps')
}
diff --git a/app/serializers/protocol_serializer.rb b/app/serializers/protocol_serializer.rb
index 7acf4a80e..0f3a5d73e 100644
--- a/app/serializers/protocol_serializer.rb
+++ b/app/serializers/protocol_serializer.rb
@@ -49,7 +49,9 @@ class ProtocolSerializer < ActiveModel::Serializer
load_from_repo_url: load_from_repo_url,
save_to_repo_url: save_to_repo_url,
export_url: export_url,
- import_url: import_url,
+ unlink_url: unlink_url,
+ revert_protocol_url: revert_protocol_url,
+ update_protocol_url: update_protocol_url,
steps_url: steps_url,
reorder_steps_url: reorder_steps_url,
add_step_url: add_step_url,
@@ -79,12 +81,6 @@ class ProtocolSerializer < ActiveModel::Serializer
copy_to_repository_modal_protocol_path(object, format: :json)
end
- def import_url
- return unless can_manage_protocol_in_module?(object)
-
- load_from_file_protocol_path(object, format: :json)
- end
-
def export_url
return unless can_read_protocol_in_module?(object)
@@ -109,6 +105,25 @@ class ProtocolSerializer < ActiveModel::Serializer
protocol_steps_path(protocol_id: object.id)
end
+ def unlink_url
+ return unless can_manage_protocol_in_module?(object) && object.linked?
+
+ unlink_modal_protocol_path(object, format: :json)
+ end
+
+ def revert_protocol_url
+ return unless can_read_protocol_in_module?(object) && object.linked? && object.newer_than_parent?
+
+ revert_modal_protocol_path(object, format: :json)
+ end
+
+ def update_protocol_url
+ return unless can_read_protocol_in_module?(object) && object.linked? &&
+ (object.parent_newer? || object.parent_and_self_newer?)
+
+ update_from_parent_modal_protocol_path(object, format: :json)
+ end
+
def update_protocol_name_url
if in_repository && can_manage_protocol_in_repository?(object)
name_protocol_path(object)
diff --git a/config/locales/en.yml b/config/locales/en.yml
index eb65c1f75..fe2b6d798 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -984,11 +984,14 @@ en:
protocol:
title: "Protocol"
options_dropdown:
- title: "Protocol options"
+ title: "Protocol actions"
load_from_repo: "Load from templates"
import: "Import protocol"
export: "Export protocol"
- save_to_repo: "Save to templates"
+ unlink: "Unlink protocol"
+ revert_protocol: "Revert protocol"
+ update_protocol: "New version update"
+ save_to_repo: "Save as new template"
delete_steps: "Delete all steps"
description:
title: "Edit task %{module} description"