Browse Source

added 404 notfound behavior

Bachir Soussi Chiadmi 3 years ago
parent
commit
aebc2c28da
6 changed files with 76 additions and 2 deletions
  1. 13 2
      src/pages/Edition.vue
  2. 4 0
      src/pages/Locorum.vue
  3. 4 0
      src/pages/Nominum.vue
  4. 44 0
      src/pages/NotFound.vue
  5. 4 0
      src/pages/Operum.vue
  6. 7 0
      src/router/index.js

+ 13 - 2
src/pages/Edition.vue

@@ -160,7 +160,7 @@ export default {
         console.log('texts/toc REST: data', data)
         this.meta = data.meta
         this.author = data.meta.author
-        if (data.content) {
+        if (data.content && data.content !== 'vide') {
           if (Array.isArray(data.content)) {
             this.toc = data.content
           } else {
@@ -171,10 +171,16 @@ export default {
             // console.log('toc', this.toc)
             this.textid = this.toc[0].children[1].uuid
           }
+        } else {
+          console.warn('Bad edition uuid', this.$route.params.id, this.$route)
+          this.$router.replace({
+            name: 'notfound',
+            query: { fullpath: this.$route.path }
+          })
         }
       })
       .catch((error) => {
-        console.warn('Issue with locorum', error)
+        console.warn('Issue with text toc', error)
         Promise.reject(error)
       })
   },
@@ -240,7 +246,12 @@ export default {
         })
         .catch((error) => {
           console.warn('Issue with getTextContent', error)
+          console.warn('Bad edition uuid', this.$route.params.id, this.$route)
           Promise.reject(error)
+          this.$router.replace({
+            name: 'notfound',
+            query: { fullpath: this.$route.path }
+          })
         })
     },
     onCenterScrolled (e) {

+ 4 - 0
src/pages/Locorum.vue

@@ -51,6 +51,10 @@ export default {
       .catch((error) => {
         console.warn('Issue with locorum', error)
         Promise.reject(error)
+        this.$router.replace({
+          name: 'notfound',
+          query: { fullpath: this.$route.path }
+        })
       })
   }
 }

+ 4 - 0
src/pages/Nominum.vue

@@ -55,6 +55,10 @@ export default {
       .catch((error) => {
         console.warn('Issue with nominum', error)
         Promise.reject(error)
+        this.$router.replace({
+          name: 'notfound',
+          query: { fullpath: this.$route.path }
+        })
       })
   }
 }

+ 44 - 0
src/pages/NotFound.vue

@@ -0,0 +1,44 @@
+<template>
+  <MainContentLayout id="not-found" class="">
+    <template v-slot:header>
+      <h1>404 - Contenu non trouvé</h1>
+      <code v-if="path">{{ path }}</code>
+    </template>
+  </MainContentLayout>
+</template>
+
+<script>
+
+import MainContentLayout from '../components/Layouts/MainContentLayout'
+
+export default {
+  name: 'NotFound',
+  components: {
+    MainContentLayout
+  },
+  // data: () => ({
+  // }),
+  computed: {
+    path () {
+      if (this.$route.query.fullpath) {
+        return this.$route.query.fullpath
+      } else if (this.$route.params.pathMatch) {
+        return this.$route.params.pathMatch
+      } else {
+        return null
+      }
+    }
+  },
+  created () {
+    console.log('NotFound created', this.$route)
+  },
+  metaInfo () {
+    return {
+      title: `Not Found`
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 4 - 0
src/pages/Operum.vue

@@ -46,6 +46,10 @@ export default {
       .catch((error) => {
         console.warn('Issue with operum', error)
         Promise.reject(error)
+        this.$router.replace({
+          name: 'notfound',
+          query: { fullpath: this.$route.path }
+        })
       })
   }
 }

+ 7 - 0
src/router/index.js

@@ -13,6 +13,7 @@ import Nominum from 'pages/Nominum'
 import Locorum from 'pages/Locorum'
 import Operum from 'pages/Operum'
 import Bibliographie from 'pages/Bibliographie'
+import NotFound from 'pages/NotFound'
 
 Vue.use(Router)
 
@@ -82,6 +83,12 @@ const routes = [
     name: 'bibliographie',
     path: '/bibliographie',
     component: Bibliographie
+  },
+  {
+    name: 'notfound',
+    path: '/404',
+    alias: '*',
+    component: NotFound
   }
 ]