Merge pull request #5953 from christianbeeznest/storm-22243

Platform: Add visibility settings for main menu and topbar entries - refs BT#22243
pull/5954/head
Nicolas Ducoulombier 9 months ago committed by GitHub
commit 7a938e6ff0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 65
      assets/vue/components/layout/TopbarLoggedIn.vue
  2. 172
      assets/vue/composables/sidebarMenu.js
  3. 20
      src/CoreBundle/Settings/PlatformSettingsSchema.php

@ -97,33 +97,44 @@ const ticketUrl = computed(() => {
}) })
const elUserSubmenu = ref(null) const elUserSubmenu = ref(null)
const userSubmenuItems = computed(() => [ const userSubmenuItems = computed(() => {
{ const items = [
label: props.currentUser.fullName, {
items: [ label: props.currentUser.fullName,
{ items: [
label: t("My profile"), {
url: router.resolve({ name: "AccountHome" }).href, label: t("My profile"),
}, url: router.resolve({ name: "AccountHome" }).href,
{ },
label: t("My General Certificate"), ],
url: "/main/social/my_skills_report.php?a=generate_custom_skill", },
}, ]
{
label: t("My skills"), if (platformConfigStore.getSetting("platform.show_tabs").indexOf("topbar_certificate") > -1) {
url: "/main/social/my_skills_report.php", items[0].items.push({
}, label: t("My General Certificate"),
{ url: "/main/social/my_skills_report.php?a=generate_custom_skill",
separator: true, })
}, }
{
label: t("Sign out"), if (platformConfigStore.getSetting("platform.show_tabs").indexOf("topbar_skills") > -1) {
url: "/logout", items[0].items.push({
icon: "mdi mdi-logout-variant", label: t("My skills"),
}, url: "/main/social/my_skills_report.php",
], })
}, }
])
items[0].items.push(
{ separator: true },
{
label: t("Sign out"),
url: "/logout",
icon: "mdi mdi-logout-variant",
}
)
return items
})
function toggleUserMenu(event) { function toggleUserMenu(event) {
elUserSubmenu.value.toggle(event) elUserSubmenu.value.toggle(event)

@ -25,24 +25,29 @@ export function useSidebarMenu() {
return false return false
} }
const menuItemsBeforeMyCourse = computed(() => { const createMenuItem = (key, icon, label, routeName, subItems = null) => {
const items = [] if (showTabsSetting.indexOf(key) > -1) {
const item = {
if (showTabsSetting.indexOf("campus_homepage") > -1) { icon: `mdi ${icon}`,
items.push({ label: t(label),
icon: "mdi mdi-home", }
label: t("Home"), if (routeName) item.route = { name: routeName }
route: { name: "Home" }, if (subItems) item.items = subItems
}) return item
} }
return null
}
return items const menuItemsBeforeMyCourse = computed(() => {
const items = []
items.push(createMenuItem("campus_homepage", "mdi-home", "Home", "Home"))
return items.filter(Boolean)
}) })
const menuItemMyCourse = computed(() => { const menuItemMyCourse = computed(() => {
const items = [] const items = []
if (securityStore.isAuthenticated) { if (securityStore.isAuthenticated && showTabsSetting.indexOf("my_courses") > -1) {
const courseItems = [] const courseItems = []
if (enrolledStore.isEnrolledInCourses) { if (enrolledStore.isEnrolledInCourses) {
@ -76,33 +81,33 @@ export function useSidebarMenu() {
const menuItemsAfterMyCourse = computed(() => { const menuItemsAfterMyCourse = computed(() => {
const items = [] const items = []
if (showCatalogue > -1) { if (showTabsSetting.indexOf("catalogue") > -1) {
if (showCatalogue == 0 || showCatalogue == 2) { if (showCatalogue == 0 || showCatalogue == 2) {
items.push({ items.push(
icon: "mdi mdi-bookmark-multiple", createMenuItem(
label: t("Explore more courses"), "catalogue",
route: { name: "CatalogueCourses" }, "mdi-bookmark-multiple",
}) "Explore more courses",
"CatalogueCourses"
)
)
} }
if (showCatalogue > 0) { if (showCatalogue > 0) {
items.push({ items.push(
icon: "mdi mdi-bookmark-multiple-outline", createMenuItem(
label: t("Sessions catalogue"), "catalogue",
route: { name: "CatalogueSessions" }, "mdi-bookmark-multiple-outline",
}) "Sessions catalogue",
"CatalogueSessions"
)
)
} }
} }
if (showTabsSetting.indexOf("my_agenda") > -1) { items.push(createMenuItem("my_agenda", "mdi-calendar-text", "Events", "CCalendarEventList"))
items.push({
icon: "mdi mdi-calendar-text",
label: t("Events"),
route: { name: "CCalendarEventList" },
})
}
if (showTabsSetting.indexOf("reporting") > -1) { if (showTabsSetting.indexOf("reporting") > -1) {
let subItems = [] const subItems = []
if (securityStore.isTeacher || securityStore.isHRM || securityStore.isSessionAdmin) { if (securityStore.isTeacher || securityStore.isHRM || securityStore.isSessionAdmin) {
subItems.push({ subItems.push({
@ -155,75 +160,58 @@ export function useSidebarMenu() {
}) })
} }
if (platformConfigStore.plugins?.bbb?.show_global_conference_link) { items.push(
items.push({ createMenuItem(
icon: "mdi mdi-video", "videoconference",
label: t("Videoconference"), "mdi-video",
url: platformConfigStore.plugins.bbb.listingURL, "Videoconference",
}) null,
} platformConfigStore.plugins?.bbb?.show_global_conference_link
? [
if (securityStore.isStudentBoss || securityStore.isStudent) { {
items.push({ label: t("Conference Room"),
icon: "mdi mdi-text-box-search", url: platformConfigStore.plugins.bbb.listingURL,
items: [ },
{ ]
label: t("Diagnosis Management"), : null
url: "/main/search/load_search.php", )
visible: securityStore.isStudentBoss, )
},
{ items.push(
label: t("Diagnostic Form"), createMenuItem("diagnostics", "mdi-text-box-search", "Diagnosis Management", null, [
url: "/main/search/search.php",
},
],
label: t("Diagnosis"),
})
}
if (securityStore.isAdmin || securityStore.isSessionAdmin) {
const adminItems = [
{ {
label: t("Administration"), label: t("Diagnosis Management"),
route: { name: "AdminIndex" }, url: "/main/search/load_search.php",
visible: securityStore.isStudentBoss,
}, },
] {
label: t("Diagnostic Form"),
if ( url: "/main/search/search.php",
securityStore.isSessionAdmin && },
"true" === platformConfigStore.getSetting("session.limit_session_admin_list_users") ])
) { )
adminItems.push({
label: t("Add user"), if (showTabsSetting.indexOf("platform_administration") > -1) {
url: "/main/admin/user_add.php", if (securityStore.isAdmin || securityStore.isSessionAdmin) {
}) const adminItems = [
} else { { label: t("Administration"), route: { name: "AdminIndex" } },
adminItems.push({ ...(securityStore.isSessionAdmin &&
label: t("Users"), "true" === platformConfigStore.getSetting("session.limit_session_admin_list_users")
url: "/main/admin/user_list.php", ? [{ label: t("Add user"), url: "/main/admin/user_add.php" }]
}) : [{ label: t("Users"), url: "/main/admin/user_list.php" }]),
} { label: t("Courses"), url: "/main/admin/course_list.php" },
{ label: t("Sessions"), url: "/main/session/session_list.php" },
]
if (securityStore.isAdmin) { items.push({
adminItems.push({ icon: "mdi mdi-cog",
label: t("Courses"), items: adminItems,
url: "/main/admin/course_list.php", label: t("Administration"),
}) })
} }
adminItems.push({
label: t("Sessions"),
url: "/main/session/session_list.php",
})
items.push({
icon: "mdi mdi-cog",
items: adminItems,
label: t("Administration"),
})
} }
return items return items.filter(Boolean)
}) })
async function initialize() { async function initialize() {

@ -19,15 +19,17 @@ use Symfony\Component\Form\FormBuilderInterface;
class PlatformSettingsSchema extends AbstractSettingsSchema class PlatformSettingsSchema extends AbstractSettingsSchema
{ {
private static array $tabs = [ private static array $tabs = [
'TabsCampusHomepage' => 'campus_homepage', 'MenuCampusHomepage' => 'campus_homepage',
'TabsMyCourses' => 'my_courses', 'MenuMyCourses' => 'my_courses',
'TabsReporting' => 'reporting', 'MenuReporting' => 'reporting',
'TabsPlatformAdministration' => 'platform_administration', 'MenuPlatformAdministration' => 'platform_administration',
'mypersonalopenarea' => 'my_agenda', 'MenuMyAgenda' => 'my_agenda',
'TabsMyAgenda' => 'my_profile', 'MenuSocial' => 'social',
'TabsMyGradebook' => 'my_gradebook', 'MenuVideoConference' => 'videoconference',
'TabsSocial' => 'social', 'MenuDiagnostics' => 'diagnostics',
'TabsDashboard' => 'dashboard', 'MenuCatalogue' => 'catalogue',
'TopbarCertificate' => 'topbar_certificate',
'TopbarSkills' => 'topbar_skills',
]; ];
public function buildSettings(AbstractSettingsBuilder $builder): void public function buildSettings(AbstractSettingsBuilder $builder): void

Loading…
Cancel
Save