Add dynamic slug to module route

This commit is contained in:
Ramon Wenger 2018-10-04 10:49:35 +02:00
parent 35201e6986
commit d379bfcc10
6 changed files with 45 additions and 20 deletions

View File

@ -12,16 +12,16 @@
<router-link tag="h3" to="/module/submissions" class="module-navigation__heading">Ergebnisse: Modul 1 <router-link tag="h3" to="/module/submissions" class="module-navigation__heading">Ergebnisse: Modul 1
</router-link> </router-link>
<div class="module-navigation__anchors"> <div class="module-navigation__anchors">
<router-link to="/module/submissions" class="module-navigation__anchor">Tauschvorgänge</router-link> <router-link to="/module/geld/submissions" class="module-navigation__anchor">Tauschvorgänge</router-link>
<router-link to="/module/submissions" class="module-navigation__anchor">Schwierigkeiten von Tauschvorgängen <router-link to="/module/geld/submissions" class="module-navigation__anchor">Schwierigkeiten von Tauschvorgängen
</router-link> </router-link>
<router-link to="/module/submissions" class="module-navigation__anchor">Vorteile von Geld</router-link> <router-link to="/module/geld/submissions" class="module-navigation__anchor">Vorteile von Geld</router-link>
<router-link to="/module/submissions" class="module-navigation__anchor">Aufgaben von Geld</router-link> <router-link to="/module/geld/submissions" class="module-navigation__anchor">Aufgaben von Geld</router-link>
<router-link to="/module/submissions" class="module-navigation__anchor">Notizen zum Video «Funktionen der <router-link to="/module/geld/submissions" class="module-navigation__anchor">Notizen zum Video «Funktionen der
Bank» Bank»
</router-link> </router-link>
<router-link to="/module/submissions" class="module-navigation__anchor">Anlageberatung</router-link> <router-link to="/module/geld/submissions" class="module-navigation__anchor">Anlageberatung</router-link>
<router-link to="/module/submissions" class="module-navigation__anchor">Welche Geldanlage ist sinnvoll? <router-link to="/module/geld/submissions" class="module-navigation__anchor">Welche Geldanlage ist sinnvoll?
</router-link> </router-link>
</div> </div>
</nav> </nav>

View File

@ -1,17 +1,28 @@
<template> <template>
<router-link to="/module" tag="div" class="module-teaser"> <router-link :to="moduleLink" tag="div" class="module-teaser">
<img :src="'https://picsum.photos/300/150?random='+id" alt="" class="module-teaser__image"> <img :src="'https://picsum.photos/300/150?random='+id" alt="" class="module-teaser__image">
<div class="module-teaser__body"> <div class="module-teaser__body">
<h3 class="module-teaser__meta-title">{{metaTitle}}</h3> <h3 class="module-teaser__meta-title">{{metaTitle}}</h3>
<h3 class="module-teaser__title">{{title}}</h3> <h3 class="module-teaser__title">{{title}}</h3>
<p class="module-teaser__description">{{description}}</p> <p class="module-teaser__description">{{teaser}}</p>
</div> </div>
</router-link> </router-link>
</template> </template>
<script> <script>
export default { export default {
props: ['metaTitle', 'title', 'description', 'id'] props: ['metaTitle', 'title', 'teaser', 'id', 'slug'],
computed: {
moduleLink() {
return {
name: 'module',
params: {
slug: this.slug
}
}
}
}
} }
</script> </script>

View File

@ -4,6 +4,8 @@ query ModulesQuery {
node { node {
id id
title title
metaTitle
teaser
slug slug
} }
} }

View File

@ -16,14 +16,16 @@
}, },
apollo: { apollo: {
module: { module() {
query: MODULE_DETAILS_QUERY, return {
variables: { query: MODULE_DETAILS_QUERY,
slug: store.state.moduleSlug variables: {
}, slug: this.$route.params.slug
update(data) { },
const cleanedData = this.$getRidOfEdges(data); update(data) {
return cleanedData.module || {}; const cleanedData = this.$getRidOfEdges(data);
return cleanedData.module || {};
}
} }
}, },
assignments: { assignments: {

View File

@ -15,12 +15,22 @@
<script> <script>
import ModuleTeaser from '@/components/modules/ModuleTeaser.vue'; import ModuleTeaser from '@/components/modules/ModuleTeaser.vue';
import MODULES_QUERY from '@/graphql/gql/allModules.gql';
export default { export default {
components: { components: {
ModuleTeaser ModuleTeaser
}, },
apollo: {
modules: {
query: MODULES_QUERY,
update(data) {
return this.$getRidOfEdges(data).modules || {};
}
}
},
data() { data() {
return { return {
modules: [ modules: [

View File

@ -15,9 +15,9 @@ import submissions from '@/pages/submissions'
import p404 from '@/pages/p404' import p404 from '@/pages/p404'
const routes = [ const routes = [
{path: '/', redirect: '/module'}, {path: '/', redirect: '/book/topic'},
{ {
path: '/module', path: '/module/:slug',
name: 'moduleBase', name: 'moduleBase',
component: moduleBase, component: moduleBase,
children: [ children: [