Display: Allow reset breadcrumb from legacy tools

pull/5209/head
Angel Fernando Quiroz Campos 2 years ago
parent 2ea04beee3
commit 62637c82a2
  1. 62
      assets/vue/components/Breadcrumb.vue
  2. 23
      assets/vue/components/layout/DashboardLayout.vue
  3. 30
      var/vue_templates/components/layout/DashboardLayout.vue

@ -28,7 +28,7 @@
</router-link> </router-link>
<a <a
v-else v-else
:href="item.url" :href="item.url !== '#' ? item.url : undefined"
v-bind="props.action" v-bind="props.action"
> >
<span>{{ item.label }}</span> <span>{{ item.label }}</span>
@ -46,24 +46,14 @@
</template> </template>
<script setup> <script setup>
import { computed } from "vue" import { ref, watch } from "vue"
import { useRoute } from "vue-router" import { useRoute } from "vue-router"
import { useI18n } from "vue-i18n" import { useI18n } from "vue-i18n"
import Breadcrumb from "primevue/breadcrumb" import Breadcrumb from "primevue/breadcrumb"
import { useCidReqStore } from "../store/cidReq" import { useCidReqStore } from "../store/cidReq"
import { storeToRefs } from "pinia" import { storeToRefs } from "pinia"
// eslint-disable-next-line no-undef const legacyItems = ref(window.breadcrumb)
const componentProps = defineProps({
layoutClass: {
type: String,
default: null,
},
legacy: {
type: Array,
default: () => [],
},
})
const cidReqStore = useCidReqStore() const cidReqStore = useCidReqStore()
const route = useRoute() const route = useRoute()
@ -71,8 +61,7 @@ const { t } = useI18n()
const { course, session } = storeToRefs(cidReqStore) const { course, session } = storeToRefs(cidReqStore)
const itemList = computed(() => { const specialRouteNames = [
const list = [
"MyCourses", "MyCourses",
"MySessions", "MySessions",
"MySessionsUpcoming", "MySessionsUpcoming",
@ -82,48 +71,57 @@ const itemList = computed(() => {
"MessageNew", "MessageNew",
"MessageShow", "MessageShow",
"MessageCreate", "MessageCreate",
] ]
const itemList = ref([])
watch(
route,
() => {
if ("/" === route.fullPath) {
return
}
const items = [] itemList.value = []
if (route.name && route.name.includes("Page")) { if (route.name && route.name.includes("Page")) {
items.push({ itemList.value.push({
label: t("Pages"), label: t("Pages"),
to: "/resources/pages", to: "/resources/pages",
}) })
} }
if (route.name && route.name.includes("Message")) { if (route.name && route.name.includes("Message")) {
items.push({ itemList.value.push({
label: t("Messages"), label: t("Messages"),
//disabled: route.path === path || lastItem.path === route.path, //disabled: route.path === path || lastItem.path === route.path,
to: "/resources/messages", to: "/resources/messages",
}) })
} }
if (list.includes(route.name)) { if (specialRouteNames.includes(route.name)) {
return items return
} }
if (course.value) { if (course.value) {
if (session.value) { if (session.value) {
items.push({ itemList.value.push({
label: t("My sessions"), label: t("My sessions"),
route: { name: "MySessions" }, route: { name: "MySessions" },
}) })
} else { } else {
items.push({ itemList.value.push({
label: t("My courses"), label: t("My courses"),
route: { name: "MyCourses" }, route: { name: "MyCourses" },
}) })
} }
} }
if (componentProps.legacy.length > 0) { if (legacyItems.value.length > 0) {
const mainUrl = window.location.href const mainUrl = window.location.href
const mainPath = mainUrl.indexOf("main/") const mainPath = mainUrl.indexOf("main/")
componentProps.legacy.forEach((item) => { legacyItems.value.forEach((item) => {
let url = item.url.toString() let url = item.url.toString()
let newUrl = url let newUrl = url
@ -135,20 +133,24 @@ const itemList = computed(() => {
newUrl = "#" newUrl = "#"
} }
items.push({ itemList.value.push({
label: item["name"], label: item["name"],
url: newUrl, url: newUrl,
}) })
}) })
legacyItems.value = []
} else { } else {
if (course.value) { if (course.value) {
items.push({ itemList.value.push({
label: course.value.title, label: course.value.title,
route: { name: "CourseHome", params: { id: course.value.id }, query: route.query }, route: { name: "CourseHome", params: { id: course.value.id }, query: route.query },
}) })
} }
} }
},
return items {
}) immediate: true,
},
)
</script> </script>

@ -5,19 +5,16 @@
class="app-main" class="app-main"
:class="{ 'app-main--no-sidebar': !securityStore.isAuthenticated }" :class="{ 'app-main--no-sidebar': !securityStore.isAuthenticated }"
> >
<Breadcrumb <Breadcrumb v-if="showBreadcrumb" />
v-if="showBreadcrumb"
:legacy="breadcrumb"
/>
<slot /> <slot />
<router-view /> <router-view />
</div> </div>
</template> </template>
<script setup> <script setup>
import Breadcrumb from '../../components/Breadcrumb.vue'; import Breadcrumb from "../../components/Breadcrumb.vue"
import Topbar from '../../components/layout/Topbar.vue'; import Topbar from "../../components/layout/Topbar.vue"
import Sidebar from '../../components/layout/Sidebar.vue'; import Sidebar from "../../components/layout/Sidebar.vue"
import { useSecurityStore } from "../../store/securityStore" import { useSecurityStore } from "../../store/securityStore"
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
@ -26,17 +23,7 @@ defineProps({
type: Boolean, type: Boolean,
default: true, default: true,
}, },
}); })
const securityStore = useSecurityStore() const securityStore = useSecurityStore()
let breadcrumb = [];
try {
if (window.breadcrumb) {
breadcrumb = window.breadcrumb;
}
} catch (e) {
console.log(e.message);
}
</script> </script>

@ -10,37 +10,23 @@ defineProps({
type: Boolean, type: Boolean,
default: true, default: true,
}, },
}); })
const securityStore = useSecurityStore() const securityStore = useSecurityStore()
let breadcrumb = [];
try {
if (window.breadcrumb) {
breadcrumb = window.breadcrumb;
}
} catch (e) {
console.log(e.message);
}
</script> </script>
<template> <template>
<Topbar /> <Topbar />
<Sidebar <Sidebar v-if="securityStore.isAuthenticated" />
v-if="securityStore.isAuthenticated" <SidebarNotLoggedIn v-else />
/>
<SidebarNotLoggedIn
v-else
/>
<div <div
class="app-main" class="app-main"
:class="{ 'app-main--no-sidebar': !securityStore.isAuthenticated, 'app-main--no-loggedin': !securityStore.isAuthenticated }" :class="{
'app-main--no-sidebar': !securityStore.isAuthenticated,
'app-main--no-loggedin': !securityStore.isAuthenticated,
}"
> >
<Breadcrumb <Breadcrumb v-if="showBreadcrumb" />
v-if="showBreadcrumb"
:legacy="breadcrumb"
/>
<slot /> <slot />
<router-view /> <router-view />
</div> </div>

Loading…
Cancel
Save