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

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

Loading…
Cancel
Save