Document: Restoring logic to show toolbar buttons - refs BT#21538

pull/5432/head
Angel Fernando Quiroz Campos 1 year ago
parent 1c5284d372
commit dc7dc2bdf3
  1. 65
      assets/vue/composables/document/documentActionButtons.js
  2. 196
      assets/vue/views/documents/DocumentsList.vue
  3. 2
      src/CoreBundle/Controller/PlatformConfigurationController.php

@ -0,0 +1,65 @@
import { computed, ref } from "vue"
import { useRoute } from "vue-router"
import { usePlatformConfig } from "../../store/platformConfig"
import { checkIsAllowedToEdit } from "../userPermissions"
export function useDocumentActionButtons() {
const route = useRoute()
const platformConfigStore = usePlatformConfig()
const isCertificateMode = computed(() => {
return route.query.filetype === "certificate"
})
const showNewDocumentButton = ref(false)
const showUploadButton = ref(false)
const showNewFolderButton = ref(false)
const showNewDrawingButton = ref(false)
const showRecordAudioButton = ref(false)
const showNewCloudFileButton = ref(false)
const showSlideshowButton = ref(false)
const showUsageButton = ref(false)
const showDownloadAllButton = ref(false)
const showNewCertificateButton = ref(false)
const showUploadCertificateButton = ref(false)
checkIsAllowedToEdit(false, true).then((isAllowedToEdit) => {
if (isAllowedToEdit) {
if (!isCertificateMode.value) {
showNewDocumentButton.value = true
showRecordAudioButton.value = "true" === platformConfigStore.getSetting("course.enable_record_audio")
showUploadButton.value = true
showNewFolderButton.value = true
showNewCloudFileButton.value = true // enable_add_file_link ?
showSlideshowButton.value = true // disable_slideshow_documents ?
showUsageButton.value = true
} else {
showNewCertificateButton.value = true
showUploadCertificateButton.value = true
}
}
if (
!isCertificateMode.value &&
("true" === platformConfigStore.getSetting("document.students_download_folders") || isAllowedToEdit.value)
) {
showDownloadAllButton.value = true
}
})
return {
showNewDocumentButton,
showUploadButton,
showNewFolderButton,
showNewDrawingButton,
showRecordAudioButton,
showNewCloudFileButton,
showSlideshowButton,
showUsageButton,
showDownloadAllButton,
showNewCertificateButton,
showUploadCertificateButton,
}
}

@ -1,84 +1,104 @@
<template>
<BaseToolbar v-if="securityStore.isAuthenticated && isCurrentTeacher">
<template v-if="isCertificateMode">
<BaseButton
:label="t('Create certificate')"
icon="file-add"
type="black"
@click="goToNewDocument"
/>
<BaseButton
:label="t('Upload')"
icon="file-upload"
type="black"
@click="goToUploadFile"
/>
</template>
<template v-else>
<BaseButton
v-if="showBackButtonIfNotRootFolder"
:label="t('Back')"
icon="back"
type="gray"
@click="back"
/>
<BaseButton
:label="t('New document')"
icon="file-add"
type="success"
@click="goToNewDocument"
/>
<BaseButton
:label="t('Upload')"
icon="file-upload"
type="success"
@click="goToUploadFile"
/>
<BaseButton
:label="t('New folder')"
icon="folder-plus"
type="success"
@click="openNew"
/>
<BaseButton
:disabled="true"
:label="t('New drawing')"
icon="drawing"
type="success"
/>
<BaseButton
:label="t('Record audio')"
icon="record-add"
type="success"
@click="showRecordAudioDialog"
/>
<BaseButton
:disabled="true"
:label="t('New cloud file')"
icon="file-cloud-add"
type="success"
/>
<BaseButton
:disabled="!hasImageInDocumentEntries"
:label="t('Slideshow')"
icon="view-gallery"
type="black"
@click="showSlideShowWithFirstImage"
/>
<BaseButton
:label="t('Usage')"
icon="usage"
type="black"
@click="showUsageDialog"
/>
<BaseButton
:disabled="true"
:label="t('Download all')"
icon="download"
type="primary"
/>
</template>
</BaseToolbar>
<SectionHeader
v-if="securityStore.isAuthenticated"
:title="t('Documents')"
>
<BaseButton
v-if="showNewCertificateButton"
:label="t('Create certificate')"
icon="file-add"
only-icon
type="black"
@click="goToNewDocument"
/>
<BaseButton
v-if="showUploadCertificateButton"
:label="t('Upload')"
icon="file-upload"
only-icon
type="black"
@click="goToUploadFile"
/>
<BaseButton
v-if="showBackButtonIfNotRootFolder"
:label="t('Back')"
icon="back"
only-icon
type="gray"
@click="back"
/>
<BaseButton
v-if="showNewDocumentButton"
:label="t('New document')"
icon="file-add"
only-icon
type="success"
@click="goToNewDocument"
/>
<BaseButton
v-if="showUploadButton"
:label="t('Upload')"
icon="file-upload"
only-icon
type="success"
@click="goToUploadFile"
/>
<BaseButton
v-if="showNewFolderButton"
:label="t('New folder')"
icon="folder-plus"
only-icon
type="success"
@click="openNew"
/>
<BaseButton
v-if="showNewDrawingButton"
:label="t('New drawing')"
icon="drawing"
only-icon
type="success"
/>
<BaseButton
v-if="showRecordAudioButton"
:label="t('Record audio')"
icon="record-add"
only-icon
type="success"
@click="showRecordAudioDialog"
/>
<BaseButton
v-if="showNewCloudFileButton"
:label="t('New cloud file')"
icon="file-cloud-add"
only-icon
type="success"
/>
<BaseButton
v-if="showSlideshowButton"
:disabled="!hasImageInDocumentEntries"
:label="t('Slideshow')"
icon="view-gallery"
only-icon
type="black"
@click="showSlideShowWithFirstImage"
/>
<BaseButton
v-if="showUsageButton"
:label="t('Usage')"
icon="usage"
only-icon
type="black"
@click="showUsageDialog"
/>
<BaseButton
v-if="showDownloadAllButton"
:label="t('Download all')"
icon="download"
only-icon
type="primary"
/>
</SectionHeader>
<DataTable
v-model:filters="filters"
@ -372,6 +392,8 @@ import { useNotification } from "../../composables/notification"
import { useSecurityStore } from "../../store/securityStore"
import prettyBytes from "pretty-bytes"
import BaseFileUpload from "../../components/basecomponents/BaseFileUpload.vue"
import { useDocumentActionButtons } from "../../composables/document/documentActionButtons"
import SectionHeader from "../../components/layout/SectionHeader.vue"
const store = useStore()
const route = useRoute()
@ -386,6 +408,20 @@ const { isImage, isHtml } = useFileUtils()
const { relativeDatetime } = useFormatDate()
const {
showNewDocumentButton,
showUploadButton,
showNewFolderButton,
showNewDrawingButton,
showRecordAudioButton,
showNewCloudFileButton,
showSlideshowButton,
showUsageButton,
showDownloadAllButton,
showNewCertificateButton,
showUploadCertificateButton,
} = useDocumentActionButtons()
const item = ref({})
const usageData = ref({})

@ -65,6 +65,7 @@ class PlatformConfigurationController extends AbstractController
'course.course_validation',
'course.student_view_enabled',
'course.allow_edit_tool_visibility_in_session',
'course.enable_record_audio',
'session.limit_session_admin_role',
'session.allow_session_admin_read_careers',
'session.limit_session_admin_list_users',
@ -76,6 +77,7 @@ class PlatformConfigurationController extends AbstractController
'language.language_priority_4',
'profile.allow_social_map_fields',
'forum.global_forums_course_id',
'document.students_download_folders',
];
$user = $this->userHelper->getCurrent();

Loading…
Cancel
Save