From 354d1c8b36e1803f1190ba9d8c5c0ac121c6fc48 Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Tue, 31 Dec 2019 00:45:06 +0100 Subject: [PATCH] - DashBoard, Profile, Order Menu --- config/webpack.config.base.js | 1 + config/webpack.config.dev.js | 1 + src/db/i18n_website.js | 48 +- src/db/static_data.ts | 73 ++- src/root/home/home.ts | 69 +-- src/root/home/home.vue | 114 +---- src/root/mypage/mypage.ts | 9 +- src/root/testimonianze/testimonianze.scss | 470 +++++++++++++++++++ src/root/testimonianze/testimonianze.ts | 116 +++++ src/root/testimonianze/testimonianze.vue | 126 +++++ src/router/index.ts | 9 +- src/statics/icons/.directory | 3 +- src/statics/icons/android-chrome-144x144.png | Bin 8296 -> 0 bytes src/statics/icons/android-chrome-192x192.png | Bin 11787 -> 0 bytes src/statics/icons/android-chrome-36x36.png | Bin 1561 -> 0 bytes src/statics/icons/android-chrome-48x48.png | Bin 2929 -> 0 bytes src/statics/icons/android-chrome-512x512.png | Bin 40805 -> 0 bytes src/statics/icons/android-chrome-72x72.png | Bin 4597 -> 0 bytes src/statics/icons/android-chrome-96x96.png | Bin 6691 -> 0 bytes src/statics/icons/apple-icon-114x114.png | Bin 8090 -> 0 bytes src/statics/icons/apple-icon-120x120.png | Bin 8598 -> 0 bytes src/statics/icons/apple-icon-144x144.png | Bin 11530 -> 0 bytes src/statics/icons/apple-icon-152x152.png | Bin 12481 -> 0 bytes src/statics/icons/apple-icon-180x180.png | Bin 16279 -> 0 bytes src/statics/icons/apple-icon-57x57.png | Bin 3575 -> 0 bytes src/statics/icons/apple-icon-60x60.png | Bin 3796 -> 0 bytes src/statics/icons/apple-icon-72x72.png | Bin 4597 -> 0 bytes src/statics/icons/apple-icon-76x76.png | Bin 4986 -> 0 bytes src/statics/icons/apple-icon.png | Bin 17247 -> 0 bytes src/statics/icons/apple-touch-icon.png | Bin 10783 -> 0 bytes src/statics/icons/favicon-16x16.png | Bin 1197 -> 0 bytes src/statics/icons/favicon-32x32.png | Bin 1918 -> 0 bytes src/statics/icons/favicon-96x96.png | Bin 6691 -> 0 bytes src/statics/icons/favicon.ico | Bin 1150 -> 0 bytes src/statics/icons/ms-icon-144x144.png | Bin 11530 -> 0 bytes src/statics/icons/ms-icon-150x150.png | Bin 12139 -> 0 bytes src/statics/icons/ms-icon-310x310.png | Bin 36758 -> 0 bytes src/statics/icons/ms-icon-70x70.png | Bin 4520 -> 0 bytes 38 files changed, 846 insertions(+), 193 deletions(-) create mode 100644 src/root/testimonianze/testimonianze.scss create mode 100644 src/root/testimonianze/testimonianze.ts create mode 100644 src/root/testimonianze/testimonianze.vue delete mode 100644 src/statics/icons/android-chrome-144x144.png delete mode 100644 src/statics/icons/android-chrome-192x192.png delete mode 100644 src/statics/icons/android-chrome-36x36.png delete mode 100644 src/statics/icons/android-chrome-48x48.png delete mode 100644 src/statics/icons/android-chrome-512x512.png delete mode 100644 src/statics/icons/android-chrome-72x72.png delete mode 100644 src/statics/icons/android-chrome-96x96.png delete mode 100644 src/statics/icons/apple-icon-114x114.png delete mode 100644 src/statics/icons/apple-icon-120x120.png delete mode 100644 src/statics/icons/apple-icon-144x144.png delete mode 100644 src/statics/icons/apple-icon-152x152.png delete mode 100644 src/statics/icons/apple-icon-180x180.png delete mode 100644 src/statics/icons/apple-icon-57x57.png delete mode 100644 src/statics/icons/apple-icon-60x60.png delete mode 100644 src/statics/icons/apple-icon-72x72.png delete mode 100644 src/statics/icons/apple-icon-76x76.png delete mode 100644 src/statics/icons/apple-icon.png delete mode 100644 src/statics/icons/apple-touch-icon.png delete mode 100644 src/statics/icons/favicon-16x16.png delete mode 100644 src/statics/icons/favicon-32x32.png delete mode 100644 src/statics/icons/favicon-96x96.png delete mode 100644 src/statics/icons/favicon.ico delete mode 100644 src/statics/icons/ms-icon-144x144.png delete mode 100644 src/statics/icons/ms-icon-150x150.png delete mode 100644 src/statics/icons/ms-icon-310x310.png delete mode 100644 src/statics/icons/ms-icon-70x70.png diff --git a/config/webpack.config.base.js b/config/webpack.config.base.js index 7616f5e..dd5123a 100644 --- a/config/webpack.config.base.js +++ b/config/webpack.config.base.js @@ -45,6 +45,7 @@ const baseConfig = { } }, module: { + exprContextCritical: false, rules: [{ test: /\.vue$/, use: { diff --git a/config/webpack.config.dev.js b/config/webpack.config.dev.js index 086e96c..93b4724 100644 --- a/config/webpack.config.dev.js +++ b/config/webpack.config.dev.js @@ -13,6 +13,7 @@ const PrerenderSPAPlugin = require('prerender-spa-plugin') const webpackDevConfig = { module: { + exprContextCritical: false, rules: [{ test: /\.s?css$/, use: [{ diff --git a/src/db/i18n_website.js b/src/db/i18n_website.js index 2682a9d..5660f05 100644 --- a/src/db/i18n_website.js +++ b/src/db/i18n_website.js @@ -2,12 +2,14 @@ const msg_website = { it: { pages: { home: 'Home', - profile: 'Profilo', + profile: 'Il tuo Profilo', + payment: 'Pagamenti', SignUp: 'Registrazione', SignUp2: 'Registrazione', SignIn: 'Login', vreg: 'Verifica Reg', - dashboard:'Lavagna', + dashboard:'La tua Lavagna', + testimonial: 'Testimonianze', Test: 'Test', Category: 'Categorie', Admin: 'Admin', @@ -47,17 +49,22 @@ const msg_website = { faq: 'DOMANDE FREQUENTI (FAQ)', advise: 'SUGGERIMENTI', download: 'MATERIALE DISPONIBILE', + dashboard: { + madegift: 'Hai fatto il tuo dono?' + }, }, }, es: { pages: { home: 'Home', - profile: 'Perfil', + profile: 'Tu Perfil', + payment: 'Paiements', SignUp: 'Registro', SignUp2: 'Registro', SignIn: 'Login', vreg: 'Verifica Reg', - dashboard:'Tablero', + dashboard:'Tu Tablero', + testimonial: 'Opiniones', Test: 'Test', Category: 'Categorie', Admin: 'Admin', @@ -87,17 +94,33 @@ const msg_website = { faq: 'PREGUNTAS FRECUENTES (FAQ)', advise: 'CONSEJOS', download: 'MATERIAL DISPONIBLES', + dashboard: { + madegift: '¿Hiciste tu regalo?' + }, }, }, + fr: { + homepage: {}, + pages: {}, + msg: {}, + text: { + dashboard: { + madegift: 'Avez-vous fait votre cadeau?' + }, + + } + }, enUs: { pages: { home: 'Home', - profile: 'Profile', + profile: 'Your Profile', + payment: 'Payments', SignUp: 'Registration', SignUp2: 'Registration', SignIn: 'Login', vreg: 'Check Registration', - dashboard:'Dashboard', + dashboard:'Your Dashboard', + testimonial: 'Reviews', Test: 'Test', Category: 'Categorie', Admin: 'Admin', @@ -127,17 +150,18 @@ const msg_website = { faq: 'FREQUENTLY ASKED QUESTIONS (FAQ)', advise: 'ADVISE', download: 'AVAILABLE DOCUMENTS', + dashboard: { + madegift: 'Did you make your gift?' + }, }, }, - fr: { - homepage: {}, - pages: {}, - msg: {} - }, de: { homepage: {}, pages: {}, - msg: {} + msg: {}, + text: { + + } } } diff --git a/src/db/static_data.ts b/src/db/static_data.ts index 49665f7..86c3a22 100644 --- a/src/db/static_data.ts +++ b/src/db/static_data.ts @@ -5,6 +5,7 @@ import { date, Screen } from 'quasar' import { IListRoutes, ILang, IOperators, IPreloadImages } from '../model/index' import { IFunctionality } from '@src/model/GlobalStore' +import firebase from '@src/error-handler/firebase' const functionality: IFunctionality = { PWA: false, @@ -23,6 +24,7 @@ const functionality: IFunctionality = { const routes_admin: IListRoutes[] = [ { active: true, + order: 1000, path: '/admin/cfgserv', materialIcon: 'event_seat', name: 'pages.Admin', @@ -38,48 +40,56 @@ const routes_admin: IListRoutes[] = [ const routes_newsletter: IListRoutes[] = [ { active: true, + order: 10, name: 'newsletter.template', path: '/admin/newsletter/templemail', materialIcon: 'fas fa-users', component: () => import('@/rootgen/admin/newsletter/newsletter.vue'), inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true }, { active: true, + order: 20, name: 'newsletter.sendemail', path: '/admin/newsletter/newnewsletter', materialIcon: 'fas fa-users', component: () => import('@/rootgen/admin/newsletter/newsletter.vue'), inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true }, { active: true, + order: 30, name: 'newsletter.check', path: '/admin/newsletter/check', materialIcon: 'fas fa-users', component: () => import('@/rootgen/admin/newsletter/newsletter.vue'), inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true }, { active: true, + order: 40, name: 'newsletter.sent', path: '/admin/newsletter/newslist', materialIcon: 'fas fa-users', component: () => import('@/rootgen/admin/newsletter/newsletter.vue'), inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true }, { active: true, + order: 50, name: 'newsletter.mailinglist', path: '/admin/newsletter/mailinglist', materialIcon: 'fas fa-users', component: () => import('@/rootgen/admin/newsletter/newsletter.vue'), inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true }, { active: true, + order: 60, name: 'newsletter.settings', path: '/admin/newsletter/settings', materialIcon: 'fas fa-users', component: () => import('@/rootgen/admin/newsletter/newsletter.vue'), inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true }, { active: true, + order: 70, name: 'newsletter.serversettings', path: '/admin/newsletter/main_settings', materialIcon: 'fas fa-users', component: () => import('@/rootgen/admin/newsletter/newsletter.vue'), inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true }, { active: true, + order: 80, name: 'newsletter.others', path: '/admin/newsletter/events', materialIcon: 'fas fa-users', component: () => import('@/rootgen/admin/newsletter/newsletter.vue'), inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true @@ -89,6 +99,7 @@ const routes_newsletter: IListRoutes[] = [ const routes_manager: IListRoutes[] = [ { active: true, + order: 10, path: '/admin/userlist', materialIcon: 'fas fa-users', name: 'otherpages.admin.userlist', @@ -101,6 +112,7 @@ const routes_manager: IListRoutes[] = [ }, { active: true, + order: 20, path: '/admin/tableslist', materialIcon: 'fas fa-users', name: 'otherpages.admin.tableslist', @@ -113,6 +125,7 @@ const routes_manager: IListRoutes[] = [ }, { active: true, + order: 30, path: '/admin/pages', materialIcon: 'fas fa-file-alt', name: 'otherpages.admin.pages', @@ -125,6 +138,7 @@ const routes_manager: IListRoutes[] = [ }, { active: true, + order: 40, path: '/admin/gallery', materialIcon: 'fas fa-file-alt', name: 'otherpages.admin.gallery', @@ -137,6 +151,7 @@ const routes_manager: IListRoutes[] = [ }, { active: true, + order: 50, path: '/admin/media', materialIcon: 'fas fa-file-alt', name: 'otherpages.admin.media', @@ -149,6 +164,7 @@ const routes_manager: IListRoutes[] = [ }, { active: true, + order: 60, path: '/admin/newsletter', materialIcon: 'fas fa-users', name: 'otherpages.admin.newsletter', @@ -162,6 +178,7 @@ const routes_manager: IListRoutes[] = [ }, { active: functionality.BOOKING_EVENTS, + order: 70, path: '/admin/usereventlist', materialIcon: 'edit', name: 'otherpages.admin.usereventlist', @@ -175,39 +192,60 @@ const routes_manager: IListRoutes[] = [ } ] -const routes: IListRoutes[] = [ +const baseroutes: IListRoutes[] = [ { active: true, + order: 10, path: '/', materialIcon: 'home', name: 'pages.home', component: () => import('@/root/home/home.vue'), - reqauth: false, inmenu: true, infooter: true }, { active: true, - path: '/profile', - materialIcon: 'user', - name: 'pages.profile', - component: () => import('@/views/user/profile/profile.vue'), - reqauth: false, + order: 30, + path: '/testimonial', + materialIcon: 'fas fa-comments', + name: 'pages.testimonial', + component: () => import('@/root/testimonianze/testimonianze.vue'), inmenu: true, infooter: true }, { active: true, + path: '/separator', + name: 'separator', + order: 99, + isseparator: true, + inmenu: true, + }, + { + active: true, + order: 100, path: '/dashboard', - materialIcon: 'chalkboard', + materialIcon: 'fas fa-chalkboard', name: 'pages.dashboard', component: () => import('@/views/user/dashboard/dashboard.vue'), - reqauth: false, + meta: {requiresAuth: true}, inmenu: true, infooter: true }, { active: true, + order: 110, + path: '/profile', + materialIcon: 'fas fa-user', + name: 'pages.profile', + component: () => import('@/views/user/profile/profile.vue'), + meta: {requiresAuth: true}, + inmenu: true, + infooter: true + }, + { + active: true, + order: 1000, path: '/admin/newsletter/:idparam', materialIcon: 'event', name: 'pages.newsletter.menu', @@ -217,6 +255,7 @@ const routes: IListRoutes[] = [ }, { active: true, + order: 1000, path: '/404error', materialIcon: 'fas fa-calendar-plus', name: 'otherpages.error404', @@ -226,6 +265,7 @@ const routes: IListRoutes[] = [ }, { active: true, + order: 2000, path: '/admin', materialIcon: 'fas fa-user-shield', name: 'otherpages.admin.menu', @@ -238,6 +278,7 @@ const routes: IListRoutes[] = [ ...routes_admin, { active: true, + order: 2110, path: '/manage', materialIcon: 'fas fa-users-cog', name: 'otherpages.manage.menu', @@ -250,19 +291,22 @@ const routes: IListRoutes[] = [ ...routes_manager, { active: functionality.SHOW_MESSAGES, + order: 2150, path: '/messages/:un', materialIcon: 'fas fa-comment', name: 'otherpages.messages.menu', component: () => import('@/views/messages/messages.vue'), inmenu: functionality.SHOW_MESSAGES, infooter: functionality.SHOW_MESSAGES, - reqauth: true + meta: {requiresAuth: true}, }, // --- NOT IN MENU: --- { active: true, + order: 1000, path: '/policy', name: 'pages.policy', component: () => import('@/root/policy/policy.vue') }, { active: functionality.ENABLE_REGISTRATION, + order: 1000, path: '/signup', materialIcon: 'how_to_reg', name: 'pages.SignUp', @@ -273,6 +317,7 @@ const routes: IListRoutes[] = [ }, { active: functionality.ENABLE_REGISTRATION, + order: 1000, path: '/signup/:invited', materialIcon: 'how_to_reg', name: 'pages.SignUp2', @@ -283,6 +328,7 @@ const routes: IListRoutes[] = [ }, { active: true, + order: 1000, path: '/signin', materialIcon: 'account_circle', name: 'pages.SignIn', @@ -290,10 +336,12 @@ const routes: IListRoutes[] = [ inmenu: false, infooter: true }, - { active: true, path: '/vreg', name: 'Verify Reg', component: () => import('@/views/login/vreg/vreg.vue') }, - { active: true, path: '/offline', name: 'Offline', component: () => import('@/views/offline/offline.vue') }, + { active: true, order: 1000, path: '/vreg', name: 'Verify Reg', component: () => import('@/views/login/vreg/vreg.vue') }, + { active: true, order: 1000, path: '/offline', name: 'Offline', component: () => import('@/views/offline/offline.vue') }, ] +export const routes = baseroutes + const preLoadImages: IPreloadImages[] = [ { imgname: '../../statics/images/logo.png', alt: 'logo', mobile: false }, { imgname: '../../statics/images/gb.png', alt: 'flag gb', mobile: false }, @@ -327,6 +375,7 @@ const lang_available: ILang[] = [ export const static_data = { functionality, + baseroutes, routes, lang_available, preLoadImages, diff --git a/src/root/home/home.ts b/src/root/home/home.ts index c1a90b4..413a499 100644 --- a/src/root/home/home.ts +++ b/src/root/home/home.ts @@ -12,7 +12,7 @@ import { tools } from '@src/store/Modules/tools' import { func_tools, toolsext } from '@src/store/Modules/toolsext' import { Screen } from 'quasar' import MixinMetaTags from '@src/mixins/mixin-metatags' -import { CCardCarousel, CEventsCalendar, CImgText, COpenStreetMap, CTitleBanner } from '@components' +import { CCardCarousel, CImgText, CTitleBanner } from '@components' import MixinBase from '@src/mixins/mixin-base' Vue.use(VueScrollReveal, { @@ -30,7 +30,7 @@ Vue.use(VueScrollReveal, { @Component({ mixins: [MixinBase], - components: { Logo, Footer, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap, CTitleBanner, CImgText } + components: { Logo, Footer, CMyPage, CCardCarousel, CTitleBanner, CImgText } }) export default class Home extends MixinBase { public text: string = '' @@ -59,7 +59,7 @@ export default class Home extends MixinBase { label: '1', value: 0, title: { - it: 'Giorno 1 - Contributore Finanziario

' + + it: 'Passo 1 - Contributore Finanziario

' + 'Entro nella chat, dono 33€ e ho già trovato 2 persone che vogliono partecipare al gioco.', es: '', enUs: '' @@ -70,8 +70,8 @@ export default class Home extends MixinBase { label: '2', value: 1, title: { - it: 'Giorno 2 - Contributore solidale

' + - 'Inserisco nella chat le mie 2 persone che verseranno i 33€.', + it: 'Passo 2 - Contributore solidale

' + + 'Invio il link per registrarsi alle mie 2 persone, che cosí verseranno i 33€.', es: '', enUs: '' }, @@ -82,7 +82,7 @@ export default class Home extends MixinBase { label: '3', value: 2, title: { - it: 'Giorno 3 - Tesoriere/segretario

' + + it: 'Passo 3 - Tesoriere/segretario

' + 'Collaborare, aggiornare doni, fornire informazioni, ma anche conoscersi, condividere esperienze, passioni e sogni.', es: '', enUs: '' @@ -95,8 +95,8 @@ export default class Home extends MixinBase { label: '4', value: 3, title: { - it: 'Giorno 4 - Apertura tua Billettera
' + - 'Creo il mio gruppo Whatsapp nel quale entrano i miei 2 ospiti, i 2 ospiti dei miei 2 ospiti, che porteranno altre 8 persone (4x2).
' + + it: 'Passo 4 - Apertura tua Billettera
' + + 'Creo il mio gruppo Telegram nel quale entrano i miei 2 ospiti, i 2 ospiti dei miei 2 ospiti, che porteranno altre 8 persone (4x2).
' + '
Ricevuti i 33€ da queste 8 persone (264€), mi tengo i mei iniziali 33€ e dono 231 € alla Billettera "Mas Antigua".', es: '', enUs: '' @@ -105,10 +105,10 @@ export default class Home extends MixinBase { myicon2: 'fas fa-wallet' }, { - label: '5-6-7-8', + label: '5', value: 4, title: { - it: 'Giorno 5-6-7-8
' + + it: 'Passo 5
' + 'Aspetto, da parte delle 8 nuove Billettere, le donazioni di 231€, per un totale di 1848€.
' + '
Ringrazio l\'Universo per il dono ricevuto e fornisco aiuto a chi ne ha bisogno.
' + 'Se desidero, posso ricominciare il gioco!', @@ -146,18 +146,11 @@ export default class Home extends MixinBase { public audiofiles = { it: [ { - title: 'Elisa (1)', + title: 'Elisa (Audio 1)', label: '1', value: 0, src: 'statics/audio/it/spiegazione_Billettera.mp3', type: 'audio/mp3' - }, - { - title: 'Altro', - label: '2', - value: 1, - src: 'statics/audio/it/spiegazione_Billettera_2.mp3', - type: 'audio/mp3' } ] } @@ -200,7 +193,7 @@ export default class Home extends MixinBase { public advise = [ { title: { - it: 'La forza di questo gioco sono le Persone e la Collaborazione. Non siate timidi e scrivete agli amici su whatsapp, facebook, Telegram', + it: 'La forza di questo gioco sono le Persone e la Collaborazione.
Vincete la timidezza e scrivete agli amici su whatsapp, facebook, Telegram.', es: '', enUs: '' }, @@ -209,9 +202,7 @@ export default class Home extends MixinBase { }, { title: { - it: 'È un lavoro di squadra ma in cui ognuno deve assolutamente fare la sua parte
' + - 'La parte di ognuno in questo gioco è fare il dono e portare due persone
' + - 'Se manca una di queste due parti il gioco si ferma', + it: 'È un lavoro di squadra, dove ognuno fa la sua parte.', es: '', enUs: '' }, @@ -221,44 +212,16 @@ export default class Home extends MixinBase { }, { title: { - it: 'Per me personalmente la sto vivendo anche come una bellissima opportunità di risentire ' + - 'vecchi amici che non sento da tempo, ed avere un intento comune, anche solo un giochino, ci ' + - 'da di nuovo la possibilità di sentirci e di riconnetterci.
', + it: 'E\' un\'opportunità di risentire vecchi amici, ed avere un intento comune, per risentirci e di riconnetterci.
', es: '', enUs: '' }, color: 'white', icon: 'fas fa-hand-holding-heart', textcolor: 'black' - }, - { - title: { - it: 'Dietro ogni amico che anche non sentire da un bel pò, c\'è la possibilità di ' + - 'riscoprire la gioia ed il motivo che vi ha fatti essere amici, anche molto tempo fa', - es: '', - enUs: '' - }, - color: 'white', - icon: 'far fa-smile-beam', - textcolor: 'black' - }, - { - title: { - it: 'Ieri sera sono entrati nella mia Billettera 1 persona, che ne ha portate subito altre 2, che ' + - 'non sentivo da secoli, portando una gran gioia ed energia ed entusiasmo.
' + - 'E\' stato molto bello risentirli 😊
' + - 'Se non gli avessi scritto, non sarebbe mai successo.
', - es: '', - enUs: '' - }, - color: 'white', - icon: 'far fa-sun', - textcolor: 'black' - }, - + } ] - constructor() { super() // console.log('Home constructor...') @@ -308,7 +271,7 @@ export default class Home extends MixinBase { this.arrvideo_mp4.push(this.getvideomp4src(index)) } - console.log(this.arrvideo_mp4) + // console.log(this.arrvideo_mp4) GlobalStore.actions.prova() diff --git a/src/root/home/home.vue b/src/root/home/home.vue index c9a8e30..70eecb9 100644 --- a/src/root/home/home.vue +++ b/src/root/home/home.vue @@ -256,11 +256,12 @@
1) Voglia di giocare, e desiderio di Donare 33 € per aiutare un'altra persona a realizzare i propri sogni.

-
+ + + 2) L'impegno di seguire delle indicazioni nei tempi stabiliti all' interno di una chat, dove ogni passaggio è spiegato e guidato.

3) Parlare e condividere ai tuoi amici un messaggio dove spieghi questo sistema, impegnandoti così a trovare 2 persone interessate ad entrare. @@ -289,113 +290,6 @@
- - - - - -
{{ recaudio.title }}
- -
-
-
- -
- - - - -
{{ rec.title }}
-
-
-
-
- -
- - -
- - - -
- -
- -