diff --git a/app/controllers/assets_controller.rb b/app/controllers/assets_controller.rb index 3497dfbfa..382b5ed86 100644 --- a/app/controllers/assets_controller.rb +++ b/app/controllers/assets_controller.rb @@ -404,7 +404,8 @@ class AssetsController < ApplicationController render( json: ActiveModel::SerializableResource.new( blobs, - each_serializer: ActiveStorage::BlobSerializer + each_serializer: ActiveStorage::BlobSerializer, + user: current_user ).as_json.merge( enabled: VersionedAttachments.enabled?, enable_url: ENV.fetch('SCINOTE_FILE_VERSIONING_ENABLE_URL', nil) diff --git a/app/javascript/vue/shared/content/attachments/context_menu.vue b/app/javascript/vue/shared/content/attachments/context_menu.vue index 8d7d67c6d..49135586b 100644 --- a/app/javascript/vue/shared/content/attachments/context_menu.vue +++ b/app/javascript/vue/shared/content/attachments/context_menu.vue @@ -135,6 +135,12 @@ export default { data_e2e: 'e2e-BT-attachmentOptions-delete' }); } + if (this.attachment.attributes.urls.versions) { + menu.push({ + text: this.i18n.t('assets.context_menu.versions'), + emit: 'fileVersionsModal' + }); + } if (this.attachment.attributes.urls.toggle_view_mode) { this.viewModeOptions.forEach((viewMode, i) => { menu.push({ @@ -147,12 +153,6 @@ export default { }); }); } - if (this.attachment.attributes.urls.versions) { - menu.push({ - text: this.i18n.t('assets.context_menu.versions'), - emit: 'fileVersionsModal' - }); - } return menu; } }, diff --git a/app/javascript/vue/shared/file_versions_modal.vue b/app/javascript/vue/shared/file_versions_modal.vue index d1c893c4b..767592321 100644 --- a/app/javascript/vue/shared/file_versions_modal.vue +++ b/app/javascript/vue/shared/file_versions_modal.vue @@ -12,26 +12,33 @@
-
+
{{ i18n.t("assets.file_versions_modal.original_file") }} v{{ fileVersion.attributes.version }} - {{ fileVersion.attributes.filename }} + + {{ fileVersion.attributes.basename }}.{{ fileVersion.attributes.extension }} + ({{ i18n.t("assets.file_versions_modal.restored_from_version", { version: fileVersion.attributes.restored_from_version }) }})
{{ fileVersion.attributes.created_at }}
-
{{ fileVersion.attributes.created_by.full_name }}
-
{{ Math.round(fileVersion.attributes.byte_size/1024) }}KB
+
{{ fileVersion.attributes.created_by.full_name }}
+
{{ i18n.t("assets.file_versions_modal.size") }}: {{ Math.round(fileVersion.attributes.byte_size/1024) }}KB
- diff --git a/app/serializers/active_storage/blob_serializer.rb b/app/serializers/active_storage/blob_serializer.rb index c667bdced..a758badd7 100644 --- a/app/serializers/active_storage/blob_serializer.rb +++ b/app/serializers/active_storage/blob_serializer.rb @@ -4,7 +4,15 @@ module ActiveStorage class BlobSerializer < ActiveModel::Serializer include Rails.application.routes.url_helpers - attributes :filename, :url, :created_at, :byte_size, :version, :restored_from_version, :created_by + attributes :filename, :extension, :basename, :url, :created_at, :byte_size, :version, :restored_from_version, :created_by + + def basename + object.filename.base + end + + def extension + object.filename.extension_without_delimiter + end def version object.metadata['version'] || 1 @@ -15,7 +23,9 @@ module ActiveStorage end def created_at - object.created_at.strftime('%B %d, %Y at %H:%M') + return object.created_at unless @instance_options[:user] + + object.created_at.strftime("#{@instance_options[:user].date_format}, %H:%M") end def created_by