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"