diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_app.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_app.js index 059117b3..addd73e5 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_app.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_app.js @@ -45,7 +45,7 @@ Vue.filter('date', (value) => { }); // Store -import store from './_store'; +import store from './store'; // Initialize vue app new Vue({ @@ -65,7 +65,7 @@ new Vue({ Watchlist, HotelList, BackLink, - MyEp: () => import('./myep/components/App.vue'), + MyEp: () => import('./myep/App.vue'), FacebookPixel }, data () { @@ -355,8 +355,7 @@ new Vue({ } }, created () { - this.$store.commit('initConfig'); - this.$store.commit('initWatchlist'); + this.$store.dispatch('init'); EventBus.$on('ajaxContentLoaded', () => { Vue.nextTick(() => { this.initContentsliders(); diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_store.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_store.js deleted file mode 100644 index e04e000a..00000000 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_store.js +++ /dev/null @@ -1,249 +0,0 @@ -import Vue from 'vue' -import Vuex from 'vuex' -import axios from 'axios' - -import AddressStore from './myep/stores/address' -import CrmDataStore from './myep/stores/crmdata' -import TeamerStore from './myep/stores/teamer' -import EventsStore from './myep/stores/events' -import NewsletterStore from './myep/stores/newsletter' - -Vue.use(Vuex); - -export default new Vuex.Store({ - modules: { - address: AddressStore, - crmdata: CrmDataStore, - teamer: TeamerStore, - events: EventsStore, - newsletter: NewsletterStore - }, - state: { - config: {}, - watchlist: [], - loading: false, - authToken: sessionStorage.getItem('token'), - loggedIn: !!sessionStorage.getItem('token'), - isTeamer: JSON.parse(sessionStorage.getItem('isTeamer')), - memberId: JSON.parse(sessionStorage.getItem('memberId')), - memberName: sessionStorage.getItem('memberName'), - countries: [], - abilities: [], - timeFrames: [], - jobProfiles: [], - message: { - text: '', - class: '' - } - }, - mutations: { - initConfig (state) { - const configElement = document.getElementById('appconfig'); - state.config = JSON.parse(configElement.innerHTML); - axios.defaults.baseURL = state.config.myEpApiBaseUrl; - }, - initWatchlist (state, list = null) { - if (list) { - sessionStorage.setItem('watchlist', JSON.stringify(list)); - } else if (!sessionStorage.getItem('watchlist')) { - sessionStorage.setItem('watchlist', JSON.stringify({ id: null, items: [] })); - } - state.watchlist = JSON.parse(sessionStorage.getItem('watchlist')); - }, - watchlistToggle (state, uid) { - let list = state.watchlist.items; - let watchlistIndex = list.indexOf(uid); - if (watchlistIndex === -1) { - list.push(uid) - } else { - list.splice(watchlistIndex, 1) - } - state.watchlist.items = list; - sessionStorage.setItem('watchlist', JSON.stringify(state.watchlist)); - - if (state.loggedIn) { - const client = axios.create({ - headers: { - 'X-Auth-Token': state.authToken - } - }); - client.put('/api/watchlists/' + state.watchlist.id, state.watchlist); - } - }, - loginSuccess (state, token) { - state.loggedIn = true; - state.authToken = token; - sessionStorage.setItem('token', token); - }, - loginFailure (state) { - state.loggedIn = false; - }, - logout (state) { - state.loggedIn = false; - state.isTeamer = false; - state.teamerId = null; - state.authToken = null; - state.watchlist = { id: null, items: [] }; - sessionStorage.removeItem('token'); - sessionStorage.removeItem('isTeamer'); - sessionStorage.removeItem('memberId'); - sessionStorage.removeItem('memberName'); - sessionStorage.removeItem('watchlist'); - }, - alert (state, payload) { - state.message.text = payload.message; - state.message.class = payload.class; - }, - isTeamer (state) { - state.isTeamer = true; - sessionStorage.setItem('isTeamer', JSON.stringify(true)); - }, - setMember (state, member) { - state.memberId = member.id; - state.memberName = member.name; - sessionStorage.setItem('memberId', member.id); - sessionStorage.setItem('memberName', member.name); - }, - loadingBegin (state) { - state.loading = true; - state.message.text = ''; - state.message.class = ''; - }, - loadingFinish (state) { - state.loading = false; - }, - setCountries (state, countries) { - state.countries = countries; - }, - setAbilities (state, abilities) { - state.abilities = abilities; - }, - setTimeFrames (state, timeFrames) { - state.timeFrames = timeFrames; - }, - setJobProfiles (state, jobProfiles) { - state.jobProfiles = jobProfiles; - } - }, - actions: { - login({ commit }, credentials) { - commit('loadingBegin'); - const formData = new FormData(); - formData.append('_username', credentials.email); - formData.append('_password', credentials.password); - return axios({ - url: '/api/login', - data: formData, - method: 'post', - withCredentials: true - }).then((response) => { - let memberId = parseInt(response.data.member_id); - commit('setMember', { id: memberId, name: response.data.member_name }); - if (response.data.watchlist) { - commit('initWatchlist', response.data.watchlist); - } - if (response.data.is_teamer) { - commit('isTeamer'); - } - commit('loginSuccess', response.data.token); - commit('loadingFinish'); - }).catch((error) => { - commit('loginFailure'); - commit('alert', { - message: 'Der Login ist fehlgeschlagen :(', - class: 'alert-danger' - }); - commit('loadingFinish'); - throw error; - }); - }, - logout({ commit, state }) { - commit('loadingBegin'); - return axios({ - url: '/api/logout', - headers: { - 'x-auth-token': state.authToken - } - }).then(() => { - commit('logout'); - commit('loadingFinish'); - }).catch((error) => { - commit('alert', { - message: 'Der Logout ist fehlgeschlagen :(', - class: 'alert-danger' - }); - commit('loadingFinish'); - throw error; - }); - }, - resetPassword({ commit }, email) { - commit('loadingBegin'); - const formData = new FormData(); - formData.append('email', email); - return axios({ - url: '/api/reset-password', - data: formData, - method: 'post' - }).then((response) => { - commit('loadingFinish'); - return response; - }).catch((error) => { - commit('loadingFinish'); - throw error; - }); - }, - register({ commit }, userData) { - commit('loadingBegin'); - return axios({ - url: '/api/addresses', - data: userData, - method: 'post' - }).then((response) => { - commit('loadingFinish'); - return response; - }).catch((error) => { - commit('loadingFinish'); - throw error; - }); - }, - loadSelectableValues ({ commit }) { - axios({ - url: '/api/countries', - }).then((response) => { - commit('setCountries', response.data['hydra:member']); - }); - axios({ - url: '/api/teamer-abilities', - }).then((response) => { - commit('setAbilities', response.data['hydra:member']); - }); - axios({ - url: '/api/timeframes', - }).then((response) => { - commit('setTimeFrames', response.data['hydra:member']); - }); - axios({ - url: '/api/teamer-job-profiles', - }).then((response) => { - commit('setJobProfiles', response.data['hydra:member']); - }); - } - }, - getters: { - watchlistCount: state => { - return state.watchlist.items.length; - }, - onWatchlist: (state) => (uid) => { - return state.watchlist.items.indexOf(uid) !== -1; - }, - authToken: state => { - return state.authToken; - }, - isTeamer: state => { - return state.isTeamer; - }, - teamerId: state => { - return state.teamerId; - } - } -}); diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/WatchlistToggle.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/WatchlistToggle.vue index de6056ef..20911cd3 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/WatchlistToggle.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/WatchlistToggle.vue @@ -24,7 +24,7 @@ }, methods: { toggleWatchlist () { - this.$store.commit('watchlistToggle', this.uid); + this.$store.dispatch('watchlistToggle', this.uid); EventBus.$emit('watchlistToggle'); } }, diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Address.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Address.vue similarity index 73% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Address.vue rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Address.vue index 1d3faefb..3eab91b2 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Address.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Address.vue @@ -8,30 +8,30 @@ - + + +
- +
-
+
- - {{ formErrors.name }} + + {{ formErrors.lastName }}
- + {{ formErrors.firstName }}
@@ -46,28 +46,28 @@ - + {{ formErrors.street }}
- + {{ formErrors.zipCode }}
- + {{ formErrors.city }}
- @@ -77,20 +77,20 @@ - + {{ formErrors.email }}
- +
- +
@@ -107,22 +107,24 @@ diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/App.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/App.vue similarity index 65% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/App.vue rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/App.vue index cc1f19c3..629f45b4 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/App.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/App.vue @@ -16,36 +16,34 @@ Newsletter Mein Profil Reise-Historie - Teamer + Teamer
-
+
-
+
- {{ $store.state.message.text }} + {{ alert.message }}
-
-
- -
+
+
- diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/CrmData.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/CrmData.vue similarity index 91% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/CrmData.vue rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/CrmData.vue index ddaa56ba..a071fdd4 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/CrmData.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/CrmData.vue @@ -44,7 +44,7 @@ diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Events.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Events.vue similarity index 91% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Events.vue rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Events.vue index 86994402..47cfd443 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Events.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Events.vue @@ -42,9 +42,9 @@ diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Login.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Login.vue similarity index 93% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Login.vue rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Login.vue index 5f98f635..a0df5c7f 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Login.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Login.vue @@ -42,7 +42,7 @@ diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Registration.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Registration.vue similarity index 95% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Registration.vue rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Registration.vue index 45936343..efba99d0 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Registration.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Registration.vue @@ -65,7 +65,7 @@ diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Teamer.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Teamer.vue similarity index 78% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Teamer.vue rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Teamer.vue index f70e7f36..2cd40715 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/components/Teamer.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/Teamer.vue @@ -6,10 +6,10 @@

Fährst du Ski oder Board?

-
+
@@ -17,10 +17,10 @@

Mögliche Jobprofile

-
+
@@ -30,7 +30,7 @@
@@ -40,7 +40,7 @@ -
@@ -48,7 +48,7 @@ -
@@ -56,22 +56,22 @@ - +

Verfügbarkeiten

-
+
@@ -92,7 +92,7 @@ diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/teamer.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/teamer.js deleted file mode 100644 index 63e1ebd9..00000000 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/teamer.js +++ /dev/null @@ -1,60 +0,0 @@ -import EventBus from '../../_bus'; -import axios from 'axios'; - -export default { - namespaced: true, - state: {}, - actions: { - load ({ commit, rootState }) { - commit('loadingBegin', null, { root: true }); - - const client = axios.create({ - headers: { - 'X-Auth-Token': rootState.authToken - } - }); - - return client.get('/api/teamers/' + rootState.memberId) - .then((response) => { - commit('loadingFinish', null, { root: true }); - return response.data; - }).catch((error) => { - commit('loadingFinish', null, { root: true }); - commit('alert', { - message: 'Es ist ein Fehler aufgetreten :(', - class: 'alert-danger' - }, { root: true }); - commit('logout', null, { root: true }); - EventBus.$emit('forcedLogout'); - throw error; - }); - }, - save ({ commit, rootState }, data) { - commit('loadingBegin', null, { root: true }); - - const client = axios.create({ - headers: { - 'X-Auth-Token': rootState.authToken - } - }); - - return client.put('/api/teamers/' + rootState.memberId, data) - .then(() => { - commit('loadingFinish', null, { root: true }); - commit('alert', { - message: 'Die Änderungen wurden gespeichert', - class: 'alert-success' - }, { root: true }); - }).catch((error) => { - commit('loadingFinish', null, { root: true }); - commit('alert', { - message: 'Es ist ein Fehler aufgetreten :(', - class: 'alert-danger' - }, { root: true }); - commit('logout', null, { root: true }); - EventBus.$emit('forcedLogout'); - throw error; - }); - } - } -} diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/_router.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/router/index.js similarity index 70% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/_router.js rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/router/index.js index 5db0b8ff..64777b52 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/_router.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/router/index.js @@ -1,30 +1,28 @@ import Vue from 'vue'; import VueRouter from 'vue-router'; -import store from './../_store'; +import store from '../store'; Vue.use(VueRouter); const guard = (to, from, next) => { if (store.state.loading) { next(false); - } else if (store.state.loggedIn) { - if (to.meta.requiresTeamer && !store.getters.isTeamer) { - next(false); - } else { - next(); - } - } else { + } else if (store.getters.isLoggedIn === false) { next({ name: 'login' }); + } else if (to.meta.requiresTeamer && store.getters.isTeamer === false) { + next(false); + } else { + next(); } }; -import Address from './components/Address.vue' -import Events from './components/Events.vue' -import Login from './components/Login.vue' -import CrmData from './components/CrmData.vue' -import Teamer from './components/Teamer.vue' -import Newsletter from './components/Newsletter.vue' -import Registration from './components/Registration' +import Address from '../myep/Address' +import Events from '../myep/Events' +import Login from '../myep/Login' +import CrmData from '../myep/CrmData' +import Teamer from '../myep/Teamer' +import Newsletter from '../myep/Newsletter' +import Registration from '../myep/Registration' export default new VueRouter({ routes: [ @@ -33,7 +31,7 @@ export default new VueRouter({ path: '/', component: Login, beforeEnter (from, to, next) { - if (!store.state.loggedIn) { + if (store.getters.isLoggedIn === false) { next(); } else { next({ name: 'address' }); @@ -45,7 +43,7 @@ export default new VueRouter({ path: '/register', component: Registration, beforeEnter (from, to, next) { - if (!store.state.loggedIn) { + if (store.getters.isLoggedIn === false) { next(); } else { next({ name: 'address' }); @@ -87,5 +85,8 @@ export default new VueRouter({ path: '*', redirect: { name: 'login' } } - ] + ], + scrollBehavior (to, from, savedPosition) { + return { selector: '#myep-main', offset: { x: 0, y: 160 } } + } }); diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/index.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/index.js new file mode 100644 index 00000000..2b4b6eb9 --- /dev/null +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/index.js @@ -0,0 +1,208 @@ +import Vue from 'vue' +import Vuex from 'vuex' +import axios from 'axios' + +import AddressStore from './modules/address' +import CrmDataStore from './modules/crmdata' +import TeamerStore from './modules/teamer' +import EventsStore from './modules/events' +import NewsletterStore from './modules/newsletter' + +Vue.use(Vuex); + +const defaultUserData = { + isTeamer: false, + email: '', + firstName: '', + lastName: '', + gender: '', + dateOfBirth: null, + street: '', + zipCode: '', + city: '', + phoneMobile: '', + phonePrivate: '', + newsletter: false +}; + +export default new Vuex.Store({ + modules: { + address: AddressStore, + crmdata: CrmDataStore, + teamer: TeamerStore, + events: EventsStore, + newsletter: NewsletterStore + }, + state: { + config: {}, + watchlist: [], + loading: false, + authToken: null, + userData: defaultUserData, + countries: [], + alert: { + message: '', + class: '' + } + }, + mutations: { + initSession (state) { + const authToken = sessionStorage.getItem('token'); + if (authToken) { + state.authToken = authToken; + } + }, + initConfig (state) { + const configElement = document.getElementById('appconfig'); + state.config = JSON.parse(configElement.innerHTML); + axios.defaults.baseURL = state.config.myEpApiBaseUrl; + }, + initWatchlist (state) { + if (!sessionStorage.getItem('watchlist')) { + sessionStorage.setItem('watchlist', JSON.stringify([])); + } + state.watchlist = JSON.parse(sessionStorage.getItem('watchlist')); + }, + setWatchlist (state, list) { + state.watchlist = list; + sessionStorage.setItem('watchlist', JSON.stringify(state.watchlist)); + }, + setUserData (state, data) { + state.userData = data; + }, + login (state, token) { + state.authToken = token; + sessionStorage.setItem('token', token); + }, + logout (state) { + state.authToken = null; + state.watchlist = []; + state.userData = defaultUserData; + sessionStorage.removeItem('token'); + sessionStorage.removeItem('watchlist'); + }, + alert (state, payload) { + state.alert = payload; + }, + loadingBegin (state) { + state.loading = true; + state.alert = { message: '', class: ''}; + }, + loadingFinish (state) { + state.loading = false; + }, + setCountries (state, countries) { + state.countries = countries; + } + }, + actions: { + init({ commit }) { + commit('initConfig'); + commit('initWatchlist'); + }, + initSession({ commit, dispatch }) { + commit('initSession'); + return dispatch('loadSelectableValues') + }, + login({ commit, dispatch }, credentials) { + commit('loadingBegin'); + return axios({ + url: '/api/login_check', + method: 'post', + data: { + username: credentials.email, + password: credentials.password + } + }).then(response => { + commit('login', response.data.token); + }).catch(error => { + commit('logout'); + commit('alert', { + message: 'Der Login ist fehlgeschlagen :(', + class: 'alert-danger' + }); + throw error; + }).finally(() => { + commit('loadingFinish'); + }); + }, + logout({ commit, state }) { + commit('loadingBegin'); + const client = axios.create({ + headers: { + 'Authorization': 'Bearer ' + state.authToken, + } + }); + return client({ + url: '/api/logout' + }).then(() => { + commit('logout'); + }).catch(error => { + commit('alert', { + message: 'Der Logout ist fehlgeschlagen :(', + class: 'alert-danger' + }); + throw error; + }).finally(() => { + commit('loadingFinish'); + }); + }, + resetPassword({ commit }, email) { + commit('loadingBegin'); + return axios({ + url: '/api/reset-password', + data: { email: email }, + method: 'post' + }).then(response => { + return response; + }).catch(error => { + throw error; + }).finally(() => { + commit('loadingFinish'); + }); + }, + register({ commit }, userData) { + commit('loadingBegin'); + return axios({ + url: '/api/register', + data: userData, + method: 'post' + }).then(response => { + return response; + }).catch(error => { + throw error; + }).finally(() => { + commit('loadingFinish'); + }); + }, + loadSelectableValues ({ commit }) { + commit('loadingBegin'); + return axios({ + url: '/api/countries', + }).then(response => { + commit('setCountries', response.data); + }).finally(() => { + commit('loadingFinish'); + }); + }, + watchlistToggle ({ commit, state }, uid) { + let list = state.watchlist; + let watchlistIndex = list.indexOf(uid); + if (watchlistIndex === -1) { + list.push(uid) + } else { + list.splice(watchlistIndex, 1) + } + commit('setWatchlist', list); + if (!!state.authToken) { + axios.put('/api/watchlist', list) + } + }, + }, + getters: { + watchlistCount: state => state.watchlist.length, + onWatchlist: (state) => (uid) => state.watchlist.indexOf(uid) !== -1, + isLoggedIn: state => !!state.authToken, + isTeamer: state => state.userData.isTeamer, + } +}); diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/address.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/address.js similarity index 68% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/address.js rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/address.js index 3ca0b8f7..6aaba9f2 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/address.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/address.js @@ -1,4 +1,3 @@ -import EventBus from '../../_bus'; import axios from 'axios'; export default { @@ -10,23 +9,24 @@ export default { const client = axios.create({ headers: { - 'X-Auth-Token': rootState.authToken + 'Authorization': 'Bearer ' + rootState.authToken, } }); - return client.get('/api/addresses') - .then((response) => { - commit('loadingFinish', null, { root: true }); - return response.data['hydra:member'][0]; - }).catch((error) => { - commit('loadingFinish', null, { root: true }); + return client.get('/api/address') + .then(response => { + commit('setUserData', response.data, { root: true }); + if (response.data.watchlist) { + commit('setWatchlist', response.data.watchlist, { root: true }); + } + }).catch(() => { commit('alert', { message: 'Es ist ein Fehler aufgetreten :(', class: 'alert-danger' }, { root: true }); commit('logout', null, { root: true }); - EventBus.$emit('forcedLogout'); - throw error; + }).finally(() => { + commit('loadingFinish', null, { root: true }); }); }, save ({ commit, rootState }, data) { @@ -34,25 +34,25 @@ export default { const client = axios.create({ headers: { - 'X-Auth-Token': rootState.authToken + 'Authorization': 'Bearer ' + rootState.authToken, } }); - return client.put('/api/addresses/' + data.id, data) + return client.put('/api/address', data) .then(() => { - commit('loadingFinish', null, { root: true }); commit('alert', { message: 'Die Änderungen wurden gespeichert', class: 'alert-success' }, { root: true }); }) - .catch((error) => { - commit('loadingFinish', null, { root: true }); + .catch(error => { commit('alert', { message: 'Es ist ein Fehler aufgetreten :(', class: 'alert-danger' }, { root: true }); throw error; + }).finally(() => { + commit('loadingFinish', null, { root: true }); }); } } diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/crmdata.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/crmdata.js similarity index 85% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/crmdata.js rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/crmdata.js index 5d394dd8..fae24675 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/crmdata.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/crmdata.js @@ -1,4 +1,3 @@ -import EventBus from '../../_bus'; import axios from 'axios'; export default { @@ -10,14 +9,14 @@ export default { const client = axios.create({ headers: { - 'X-Auth-Token': rootState.authToken + 'Authorization': 'Bearer ' + rootState.authToken } }); return client.get('/api/crm-selections') .then((response) => { commit('loadingFinish', null, { root: true }); - return response.data['hydra:member'][0]; + return response.data; }).catch((error) => { commit('loadingFinish', null, { root: true }); commit('alert', { @@ -25,7 +24,6 @@ export default { class: 'alert-danger' }, { root: true }); commit('logout', null, { root: true }); - EventBus.$emit('forcedLogout'); throw error; }); }, @@ -34,7 +32,7 @@ export default { const client = axios.create({ headers: { - 'X-Auth-Token': rootState.authToken + 'Authorization': 'Bearer ' + rootState.authToken } }); @@ -52,7 +50,6 @@ export default { class: 'alert-danger' }, { root: true }); commit('logout', null, { root: true }); - EventBus.$emit('forcedLogout'); throw error; }); } diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/events.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/events.js similarity index 89% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/events.js rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/events.js index d55f97f4..5232859f 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/events.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/events.js @@ -10,14 +10,14 @@ export default { const client = axios.create({ headers: { - 'X-Auth-Token': rootState.authToken + 'Authorization': 'Bearer ' + rootState.authToken } }); return client.get('/api/events') .then((response) => { commit('loadingFinish', null, { root: true }); - return response.data['hydra:member']; + return response.data; }).catch((error) => { commit('loadingFinish', null, { root: true }); commit('alert', { diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/newsletter.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/newsletter.js similarity index 84% rename from public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/newsletter.js rename to public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/newsletter.js index a134f6f6..5cf3c614 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/myep/stores/newsletter.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/newsletter.js @@ -10,20 +10,18 @@ export default { const client = axios.create({ headers: { - 'X-Auth-Token': rootState.authToken + 'Authorization': 'Bearer ' + rootState.authToken } }); - return client.put('/api/newsletters/' + data.id, data) + return client.put('/api/newsletter', data) .then(() => { - commit('loadingFinish', null, { root: true }); commit('alert', { message: 'Die Änderungen wurden gespeichert', class: 'alert-success' }, { root: true }); }) .catch((error) => { - commit('loadingFinish', null, { root: true }); commit('alert', { message: 'Es ist ein Fehler aufgetreten :(', class: 'alert-danger' @@ -31,6 +29,8 @@ export default { commit('logout', null, { root: true }); EventBus.$emit('forcedLogout'); throw error; + }).finally(() => { + commit('loadingFinish', null, { root: true }); }); } } diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/teamer.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/teamer.js new file mode 100644 index 00000000..496b9676 --- /dev/null +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/modules/teamer.js @@ -0,0 +1,75 @@ +import EventBus from '../../_bus'; +import axios from 'axios'; + +export default { + namespaced: true, + state: { + abilities: [], + timeFrames: [], + jobProfiles: [] + }, + mutations: { + setAbilities (state, abilities) { + state.abilities = abilities; + }, + setTimeFrames (state, timeFrames) { + state.timeFrames = timeFrames; + }, + setJobProfiles (state, jobProfiles) { + state.jobProfiles = jobProfiles; + } + }, + actions: { + save ({ commit, rootState }, data) { + commit('loadingBegin', null, { root: true }); + + const client = axios.create({ + headers: { + 'Authorization': 'Bearer ' + rootState.authToken + } + }); + + return client.put('/api/teamer/', data) + .then(() => { + commit('alert', { + message: 'Die Änderungen wurden gespeichert', + class: 'alert-success' + }, { root: true }); + }).catch(error => { + commit('alert', { + message: 'Es ist ein Fehler aufgetreten :(', + class: 'alert-danger' + }, { root: true }); + commit('logout', null, { root: true }); + EventBus.$emit('forcedLogout'); + throw error; + }).finally(() => { + commit('loadingFinish', null, { root: true }); + }); + }, + loadSelectableValues ({ commit, rootState }) { + commit('loadingBegin', null, { root: true }); + + const client = axios.create({ + headers: { + 'Authorization': 'Bearer ' + rootState.authToken + } + }); + + return client.get('/api/teamer-data') + .then(response => { + commit('setAbilities', response.data.abilities); + commit('setTimeFrames', response.data.timeFrames); + commit('setJobProfiles', response.data.jobProfiles); + }).catch(error => { + }).finally(() => { + commit('loadingFinish', null, { root: true }); + }); + } + }, + getters: { + abilities: state => state.abilities, + jobProfiles: state => state.jobProfiles, + timeFrames: state => state.timeFrames + } +}