Merge pull request #7624 from aignatov-bio/ai-sci-10766-update-file-renaming

Remove extension from file renaming [SCI-10766]
This commit is contained in:
aignatov-bio 2024-06-04 12:28:22 +02:00 committed by GitHub
commit 1c70e34d55
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 21 additions and 18 deletions

View file

@ -323,7 +323,7 @@ class AssetsController < ApplicationController
end end
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
old_name = @asset.name old_name = @asset.file_name
@asset.last_modified_by = current_user @asset.last_modified_by = current_user
@asset.rename_file(new_name) @asset.rename_file(new_name)
@asset.save! @asset.save!

View file

@ -44,8 +44,7 @@
<Teleport to="body"> <Teleport to="body">
<RenameAttachmentModal <RenameAttachmentModal
v-if="renameModal" v-if="renameModal"
:url_path="attachment.attributes.urls.rename" :attachment="attachment"
:fileName="attachment.attributes.file_name"
@attachment:update="$emit('attachment:update', $event)" @attachment:update="$emit('attachment:update', $event)"
@close="renameModal = false" @close="renameModal = false"
/> />

View file

@ -1,6 +1,6 @@
<template> <template>
<div ref="modal" @keydown.esc="close" class="modal" id="renameAttachmentModal" tabindex="-1" role="dialog"> <div ref="modal" @keydown.esc="close" class="modal" id="renameAttachmentModal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-md" role="document"> <div class="modal-dialog modal-sm" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="sn-icon sn-icon-close"></i></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="sn-icon sn-icon-close"></i></button>
@ -9,9 +9,14 @@
</h4> </h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<p>{{ i18n.t('assets.from_clipboard.file_name')}}</p> <label class="sci-label">
<div class="sci-input-container" :class="{ 'error': error }" :data-error-text="error"> {{ i18n.t('assets.from_clipboard.file_name')}}
<input ref="input" v-model="name" type="text" class="sci-input-field" @keyup.enter="renameAttachment(name)" required="true" /> </label>
<div class="flex gap-1 items-center">
<div class="sci-input-container" :class="{ 'error': error }" :data-error-text="error">
<input ref="input" v-model="name" type="text" class="sci-input-field" @keyup.enter="renameAttachment(name)" required="true" />
</div>
<div class="shrink-0">.{{ this.attachment.attributes.file_extension }}</div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
@ -31,14 +36,10 @@ export default {
name: 'RenameAttachmentModal', name: 'RenameAttachmentModal',
mixins: [modalMixin], mixins: [modalMixin],
props: { props: {
url_path: { attachment: {
type: String, type: Object,
required: true required: true
}, },
fileName: {
type: String,
required: true
}
}, },
data() { data() {
return { return {
@ -47,7 +48,7 @@ export default {
}; };
}, },
created() { created() {
this.name = this.fileName; this.name = this.attachment.attributes.file_name_without_extension;
}, },
watch: { watch: {
name() { name() {
@ -71,10 +72,9 @@ export default {
return; return;
} }
const payload = { asset: { name: newName } }; const payload = { asset: { name: `${newName}.${this.attachment.attributes.file_extension}` } };
try { try {
const response = await axios.patch(this.url_path, payload); const response = await axios.patch(this.attachment.attributes.urls.rename, payload);
this.$emit('attachment:update', response.data.data); this.$emit('attachment:update', response.data.data);
this.close(); this.close();
} catch (error) { } catch (error) {

View file

@ -9,7 +9,7 @@ class AssetSerializer < ActiveModel::Serializer
include ApplicationHelper include ApplicationHelper
attributes :file_name, :file_extension, :view_mode, :icon, :urls, :updated_at_formatted, attributes :file_name, :file_extension, :view_mode, :icon, :urls, :updated_at_formatted,
:file_size, :medium_preview, :large_preview, :asset_type, :wopi, :file_size, :medium_preview, :large_preview, :asset_type, :wopi, :file_name_without_extension,
:wopi_context, :pdf_previewable, :file_size_formatted, :asset_order, :wopi_context, :pdf_previewable, :file_size_formatted, :asset_order,
:updated_at, :metadata, :image_editable, :image_context, :pdf, :attached, :parent_type, :updated_at, :metadata, :image_editable, :image_context, :pdf, :attached, :parent_type,
:edit_version_range :edit_version_range
@ -23,6 +23,10 @@ class AssetSerializer < ActiveModel::Serializer
object.render_file_name object.render_file_name
end end
def file_name_without_extension
File.basename(object.file_name, '.*')
end
def file_extension def file_extension
File.extname(object.file_name)[1..] File.extname(object.file_name)[1..]
end end