diff --git a/api/src/database/seeds/01-tables/07-files.yaml b/api/src/database/seeds/01-tables/07-files.yaml index b68f211774..c084a846eb 100644 --- a/api/src/database/seeds/01-tables/07-files.yaml +++ b/api/src/database/seeds/01-tables/07-files.yaml @@ -35,6 +35,13 @@ columns: type: timestamp nullable: false default: '$now' + modified_by: + type: uuid + references: + table: directus_users + column: id + modified_on: + type: timestamp charset: type: string length: 50 diff --git a/api/src/database/seeds/03-fields/05-files.yaml b/api/src/database/seeds/03-fields/05-files.yaml index 9cee1c2fa2..27554000c0 100644 --- a/api/src/database/seeds/03-fields/05-files.yaml +++ b/api/src/database/seeds/03-fields/05-files.yaml @@ -92,6 +92,20 @@ fields: - collection: directus_files field: filesize display: filesize + - collection: directus_files + field: modified_by + interface: user + locked: true + special: user-updated + width: half + display: user + - collection: directus_files + field: modified_on + interface: dateTime + locked: true + special: date-updated + width: half + display: datetime - collection: directus_files field: created_on display: datetime diff --git a/app/src/lang/en-US/index.json b/app/src/lang/en-US/index.json index 148263e861..6043af9607 100644 --- a/app/src/lang/en-US/index.json +++ b/app/src/lang/en-US/index.json @@ -424,6 +424,7 @@ "modified": "Modified", "checksum": "Checksum", "owner": "Owner", + "edited_by": "Edited by", "folder": "Folder", "set_to_now": "Set to Now", diff --git a/app/src/modules/files/components/file-info-drawer-detail.vue b/app/src/modules/files/components/file-info-drawer-detail.vue index 37ee114347..fe18f51c0d 100644 --- a/app/src/modules/files/components/file-info-drawer-detail.vue +++ b/app/src/modules/files/components/file-info-drawer-detail.vue @@ -41,11 +41,25 @@
{{ file.checksum }}
-
+
{{ $t('owner') }}
- - {{ user.name }} + + {{ user_created.name }} + +
+
+ +
+
{{ $t('modified') }}
+
{{ modificationDate }}
+
+ +
+
{{ $t('edited_by') }}
+
+ + {{ user_modified.name }}
@@ -123,14 +137,15 @@ export default defineComponent({ return bytes(props.file.filesize, { decimalPlaces: 2, unitSeparator: ' ' }); // { locale: i18n.locale.split('-')[0] } }); - const { creationDate } = useCreationDate(); - const { user } = useUser(); + const { creationDate, modificationDate } = useDates(); + const { userCreated, userModified } = useUser(); const { folder } = useFolder(); - return { readableMimeType, size, creationDate, user, folder, marked }; + return { readableMimeType, size, creationDate, modificationDate, userCreated, userModified, folder, marked }; - function useCreationDate() { + function useDates() { const creationDate = ref(null); + const modificationDate = ref(null); watch( () => props.file, @@ -141,11 +156,18 @@ export default defineComponent({ new Date(props.file.uploaded_on), String(i18n.t('date-fns_date_short')) ); + + if (props.file.modified_on) { + modificationDate.value = await localizedFormat( + new Date(props.file.modified_on), + String(i18n.t('date-fns_date_short')) + ); + } }, { immediate: true } ); - return { creationDate }; + return { creationDate, modificationDate }; } function useUser() { @@ -156,11 +178,12 @@ export default defineComponent({ }; const loading = ref(false); - const user = ref(null); + const userCreated = ref(null); + const userModified = ref(null); watch(() => props.file, fetchUser, { immediate: true }); - return { user }; + return { userCreated, userModified }; async function fetchUser() { if (!props.file) return null; @@ -177,11 +200,27 @@ export default defineComponent({ const { id, first_name, last_name, role } = response.data.data; - user.value = { + userCreated.value = { id: props.file.uploaded_by, name: first_name + ' ' + last_name, link: `/users/${id}`, }; + + if (props.file.modified_by) { + const response = await api.get(`/users/${props.file.modified_by}`, { + params: { + fields: ['id', 'first_name', 'last_name', 'role'], + }, + }); + + const { id, first_name, last_name, role } = response.data.data; + + userModified.value = { + id: props.file.modified_by, + name: first_name + ' ' + last_name, + link: `/users/${id}`, + }; + } } finally { loading.value = false; } diff --git a/app/src/modules/files/routes/detail.vue b/app/src/modules/files/routes/detail.vue index e36f2a3533..e749ac012e 100644 --- a/app/src/modules/files/routes/detail.vue +++ b/app/src/modules/files/routes/detail.vue @@ -274,6 +274,8 @@ export default defineComponent({ 'checksum', 'uploaded_by', 'uploaded_on', + 'modified_by', + 'modified_on', 'duration', 'folder', 'charset',