Display: Allow reset breadcrumb from legacy tools

pull/5209/head
Angel Fernando Quiroz Campos 2 years ago
parent 2ea04beee3
commit 62637c82a2
  1. 168
      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,84 +61,96 @@ 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", "MySessionsPast",
"MySessionsPast", "Home",
"Home", "MessageList",
"MessageList", "MessageNew",
"MessageNew", "MessageShow",
"MessageShow", "MessageCreate",
"MessageCreate", ]
]
const itemList = ref([])
const items = []
watch(
if (route.name && route.name.includes("Page")) { route,
items.push({ () => {
label: t("Pages"), if ("/" === route.fullPath) {
to: "/resources/pages", return
}) }
}
itemList.value = []
if (route.name && route.name.includes("Message")) {
items.push({ if (route.name && route.name.includes("Page")) {
label: t("Messages"), itemList.value.push({
//disabled: route.path === path || lastItem.path === route.path, label: t("Pages"),
to: "/resources/messages", to: "/resources/pages",
})
}
if (list.includes(route.name)) {
return items
}
if (course.value) {
if (session.value) {
items.push({
label: t("My sessions"),
route: { name: "MySessions" },
})
} else {
items.push({
label: t("My courses"),
route: { name: "MyCourses" },
}) })
} }
}
if (componentProps.legacy.length > 0) { if (route.name && route.name.includes("Message")) {
const mainUrl = window.location.href itemList.value.push({
const mainPath = mainUrl.indexOf("main/") label: t("Messages"),
//disabled: route.path === path || lastItem.path === route.path,
to: "/resources/messages",
})
}
componentProps.legacy.forEach((item) => { if (specialRouteNames.includes(route.name)) {
let url = item.url.toString() return
let newUrl = url }
if (url.indexOf("main/") > 0) { if (course.value) {
newUrl = "/" + url.substring(mainPath, url.length) if (session.value) {
itemList.value.push({
label: t("My sessions"),
route: { name: "MySessions" },
})
} else {
itemList.value.push({
label: t("My courses"),
route: { name: "MyCourses" },
})
} }
}
if (newUrl === "/") { if (legacyItems.value.length > 0) {
newUrl = "#" const mainUrl = window.location.href
} const mainPath = mainUrl.indexOf("main/")
items.push({ legacyItems.value.forEach((item) => {
label: item["name"], let url = item.url.toString()
url: newUrl, let newUrl = url
})
}) if (url.indexOf("main/") > 0) {
} else { newUrl = "/" + url.substring(mainPath, url.length)
if (course.value) { }
items.push({
label: course.value.title, if (newUrl === "/") {
route: { name: "CourseHome", params: { id: course.value.id }, query: route.query }, newUrl = "#"
}
itemList.value.push({
label: item["name"],
url: newUrl,
})
}) })
}
}
return items legacyItems.value = []
}) } else {
if (course.value) {
itemList.value.push({
label: course.value.title,
route: { name: "CourseHome", params: { id: course.value.id }, query: route.query },
})
}
}
},
{
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