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',