diff --git a/cfg_locale b/cfg_locale deleted file mode 120000 index 73cc88f..0000000 --- a/cfg_locale +++ /dev/null @@ -1 +0,0 @@ -cfg_freeplanet.app/ \ No newline at end of file diff --git a/src/App.scss b/src/App.scss index 1e94840..11310ea 100644 --- a/src/App.scss +++ b/src/App.scss @@ -1,3 +1,44 @@ +body { + font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #a7a7a7; + line-height: 1.5; + //font-size: 1rem; +} + +html { + font-size: 100%; // default font size (browser 16) -> (10 62.5%) +} + +p { + font-size: 125%; // default font size (browser 16) -> (10 62.5%) + margin: 0 0 8px; +} + +$grayshadow: #555; + +$graytext: #555; + +$textcol: blue; +$textcol_scuro: darkblue; +$heightBtn: 100%; + +.flex-item { + // background-color: #d5e2eb; + display: flex; + padding: 2px; + margin: 2px; + margin-left: 3px; + margin-right: 3px; + color: #000; + font-size: 1rem; + height: $heightBtn; + line-height: $heightBtn; + vertical-align: middle; + //flex: 0 0 100%; +} + .fade-enter-active, .fade-leave-active { transition: opacity .2s; } @@ -40,7 +81,8 @@ } } -.my-notif-class { + +.my-notif-class{ font-weight: bold; } @@ -53,15 +95,14 @@ .lowperc { color: red; } - .medperc { color: blue; } - .highperc { color: green; } + .hide-if-small { @media (max-width: 600px) { display: none; @@ -74,24 +115,200 @@ } } -.tothebottomfixed { - left: 0; - right: 0; - position: fixed; - z-index: 9999; - box-sizing: border-box; - overflow: hidden; - margin: 0 auto; - bottom: 10px; +.links, .links a { + text-shadow: 1px 1px 1px #555 !important; + // font-weight: bold; + color: cornflowerblue !important; +} +.links:hover { + color: white !important; } -.tothetop { - left: 0; - right: 0; - position: fixed; - z-index: 9999; - box-sizing: border-box; - overflow: hidden; - margin: 0 auto; - top: 20px; +.text-subtitle1 { + font-size: 1.35rem; + font-weight: 400; + line-height: 1.75rem; + text-shadow: .25 .25rem .5rem $grayshadow; + letter-spacing: .00937em; + &.big { + font-size: 1.5rem; + } +} + +.text-subtitle2 { + font-size: 1.15rem; + font-weight: 400; + line-height: 1.75rem; + letter-spacing: .00937em; + text-shadow: .25rem .25rem .5rem $grayshadow; +} + +.text-subtitle3 { + font-size: 1rem; + font-weight: 400; + line-height: 1.75rem; + letter-spacing: .00937em; +} + + +@media (max-width: 718px) { + // PER VERSIONE MOBILE + + p { + font-size: 100%; // default font size (browser 16) -> (10 62.5%) + font-family: "Abyssinica SIL", serif; + text-justify: auto; + margin: 0 0 4px; + } + + .text-subtitle1 { + font-size: 1.25rem; + } + .text-subtitle2 { + font-size: 1rem; + } + .text-subtitle3 { + font-size: 0.75rem; + } + + .cltexth3 { + font-size: 1.25rem; + } + + .text-big{ + font-size: 1.25rem; + } + +} + +.my-card { + width: 100%; + max-width: 350px; + min-width: 300px; + padding: 1rem 1rem; + + box-shadow: none; +} + +.text-trans { + opacity: 0.9; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; + filter: alpha(opacity=90); +} + +.text-spacetrans { + padding: 0 !important; + background: rgba(0,0,0,0.3) !important; + border-radius: 30px !important; +} + +.text-shadow { + text-shadow: .15rem .15rem .15rem $grayshadow; +} + +.citazione{ + font-size: 0.75rem; + font-family: "Lucida Calligraphy", serif; +} + +.cltexth3, .cltexth2, .cltexth4 { + font-size: 1.25rem; + font-weight: 400; + line-height: 1.75rem; + letter-spacing: .01em; + text-align: center !important; +} + +.cltexth4 { + font-size: 1rem; +} + +.cltexth2 { + font-size: 1.5rem; +} + +.boldhigh, .boldop, .text-big{ + font-weight: 500; + text-shadow: .05rem .05rem .05rem $grayshadow; +} +.boldop{ + color: darkblue; +} + +.text-big{ + font-size: 1.5rem; +} + + + +.center_to_image{ + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + width: 100%; + text-align: center; +} + + +.center_img { + display: block; + margin-left: auto; + margin-right: auto; +} + +.padding_cell { + padding: 0.75rem 0.5rem; +} + +@media (max-width: 3000px) { + .q-parallax__media > img { + max-height: 550px !important; + min-width:inherit !important; + min-height: inherit !important; + } +} + +@media (max-width: 1000px) { + .q-parallax__media > img { + max-height: 500px !important; + min-width:inherit !important; + min-height: inherit !important; + } +} + +@media (max-width: 800px) { + .q-parallax__media > img { + max-height: 450px !important; + min-width:inherit !important; + min-height: inherit !important; + } +} + + +@media (max-width: 718px) { + .q-parallax__media > img { + max-height: 450px !important; + min-height: inherit !important; + min-width:100% !important; + } +} + +// preloading images: +@media screen { + div#preloader { + position: absolute; + left: -9999px; + top: -9999px; + } + div#preloader img { + display: block; + } +} +@media print { + div#preloader, + div#preloader img { + visibility: hidden; + display: none; + } } diff --git a/src/App.ts b/src/App.ts index 6602178..479254e 100644 --- a/src/App.ts +++ b/src/App.ts @@ -7,10 +7,14 @@ import { Header } from './components/Header' import globalroutines from './globalroutines/index' import { GlobalStore } from './store/Modules' +import { toolsext } from '@src/store/Modules/toolsext' +import { BannerCookies, CPreloadImages } from '@components' +import { static_data } from '@src/db/static_data' @Component({ components: { - appHeader: Header + appHeader: Header, + BannerCookies, CPreloadImages }, router }) @@ -47,7 +51,7 @@ export default class App extends Vue { // console.log('window.location.href', window.location.href) let chiamaautologin = true - this.listaRoutingNoLogin.forEach(mystr => { + this.listaRoutingNoLogin.forEach((mystr) => { if (window.location.href.includes(mystr)) { chiamaautologin = false } @@ -59,9 +63,9 @@ export default class App extends Vue { .then((loadstorage) => { if (loadstorage) { - if (UserStore.state.lang !== '') { + if (toolsext.getLocale() !== '') { // console.log('SETLOCALE :', this.$i18n.locale) - this.$i18n.locale = UserStore.state.lang // Set Lang + this.$i18n.locale = toolsext.getLocale() // Set Lang } else { UserStore.mutations.setlang(this.$i18n.locale) } @@ -81,5 +85,7 @@ export default class App extends Vue { } - + get static_data() { + return static_data + } } diff --git a/src/components/CImgText/CImgText.ts b/src/components/CImgText/CImgText.ts index cc7dd65..81926c6 100644 --- a/src/components/CImgText/CImgText.ts +++ b/src/components/CImgText/CImgText.ts @@ -25,6 +25,7 @@ import { Screen } from 'quasar' }) export default class CImgText extends Vue { @Prop({ required: false, default: '' }) public src: string + @Prop({ required: false, default: '' }) public src2: string @Prop({ required: false, default: 'myclimg' }) public class1: string @Prop({ required: false, default: '' }) public style1: string } diff --git a/src/components/CImgText/CImgText.vue b/src/components/CImgText/CImgText.vue index bffb077..5d81384 100644 --- a/src/components/CImgText/CImgText.vue +++ b/src/components/CImgText/CImgText.vue @@ -4,6 +4,7 @@
+
diff --git a/src/components/Footer/Footer.vue b/src/components/Footer/Footer.vue index 00effad..f1810d0 100644 --- a/src/components/Footer/Footer.vue +++ b/src/components/Footer/Footer.vue @@ -10,7 +10,7 @@ - @@ -52,7 +52,7 @@

- {{$t('privacy_policy')}} + {{$t('privacy_policy')}}

diff --git a/src/components/FormNewsletter/FormNewsletter.vue b/src/components/FormNewsletter/FormNewsletter.vue index cb6bec1..8fbcc2c 100644 --- a/src/components/FormNewsletter/FormNewsletter.vue +++ b/src/components/FormNewsletter/FormNewsletter.vue @@ -41,7 +41,7 @@ - $t('newsletter.acceptlicense') + {{$t('privacy_policy')}} diff --git a/src/components/Header/Header.scss b/src/components/Header/Header.scss index 7adbb8e..c067d83 100644 --- a/src/components/Header/Header.scss +++ b/src/components/Header/Header.scss @@ -286,3 +286,12 @@ canvas { display: inline-block; padding: 4px 2px; } + +.text-user { + text-shadow: .05rem .05rem .15rem #fff; + background-color: limegreen; + border-radius: 1rem !important; + text-align: center; + margin: 1px; + margin-bottom: 5px; +} diff --git a/src/components/Header/Header.ts b/src/components/Header/Header.ts index b446300..ac24d5e 100644 --- a/src/components/Header/Header.ts +++ b/src/components/Header/Header.ts @@ -68,12 +68,12 @@ export default class Header extends Vue { } // ------------------------------------------------------------------------- - // QUASAR Example using event to open drawer from another component or page + // QUASAR Example using myevent to open drawer from another component or page // ------------------------------------------------------------------------- // (1) This code is inside layout file that have a drawer // if this.leftDrawerOpen is true, drawer is displayed - // (2) Listen for an event in created + // (2) Listen for an myevent in created /* created(){ this.$root.$on("openLeftDrawer", this.openLeftDrawercb); }, @@ -85,7 +85,7 @@ export default class Header extends Vue { } } - // (4) In another component or page, emit the event! + // (4) In another component or page, emit the myevent! // Call the method when clicking button etc. methods: { openLeftDrawer() { @@ -160,7 +160,7 @@ export default class Header extends Vue { const color = (value === 'online') ? 'positive' : 'warning' - if (this.static_data.SHOW_IF_IS_SERVER_CONNECTION) { + if (this.static_data.functionality.SHOW_IF_IS_SERVER_CONNECTION) { if (!!oldValue) { tools.showNotif(this.$q, this.$t('connection') + ` ${value}`, { @@ -314,6 +314,12 @@ export default class Header extends Vue { get Username() { return UserStore.state.username } + get myName() { + return UserStore.state.name + } + get mySurname() { + return UserStore.state.surname + } get Verificato() { return UserStore.state.verified_email @@ -339,4 +345,8 @@ export default class Header extends Vue { get static_data(){ return static_data } + + get isLogged() { + return UserStore.state.isLogged + } } diff --git a/src/components/Header/Header.vue b/src/components/Header/Header.vue index 89e8016..cf005c8 100644 --- a/src/components/Header/Header.vue +++ b/src/components/Header/Header.vue @@ -58,7 +58,7 @@ --> {{ $t('msg.hello') }} ! --> - + @@ -121,7 +121,7 @@ - +
diff --git a/src/db/db_data.js b/src/db/db_data.js index fd813d6..0a7b509 100644 --- a/src/db/db_data.js +++ b/src/db/db_data.js @@ -3,6 +3,12 @@ import { IEvents } from "../model"; export const db_data = { URL_FACEBOOK: "https://www.facebook.com/associazioneshen", + + userdata : { + calendar_editable: false, + + }, + events: [ { title: 'Scambi Reiki', diff --git a/src/db/i18n_website.js b/src/db/i18n_website.js index 04268e0..d37277f 100644 --- a/src/db/i18n_website.js +++ b/src/db/i18n_website.js @@ -16,10 +16,10 @@ const msg_website = { Test2: 'Test2', projects: 'Progetti', favproj: 'Favoriti', - projall: 'Tutti', - projectsShared: 'Miei Condivisi', - myprojects: 'Miei Personali' }, + projall: 'Tutti', + projectsShared: 'Miei Condivisi', + myprojects: 'Miei Personali', msg: { hello: 'Buongiorno', myAppName: 'FreePlanet', @@ -136,11 +136,11 @@ const msg_website = { Test1: 'Test1', Test2: 'Test2', projects: 'Proyectos', - favproj: 'Favoritos', - projall: 'Todos', - projectsShared: 'Mis Compartidos', - myprojects: 'Mis Personales', }, + favproj: 'Favoritos', + projall: 'Todos', + projectsShared: 'Mis Compartidos', + myprojects: 'Mis Personales', msg: { hello: 'Buenos Días', myAppName: 'FreePlanet', @@ -258,11 +258,11 @@ const msg_website = { Test1: 'Test1', Test2: 'Test2', projects: 'Projects', - favproj: 'Favorite', - projall: 'All', - projectsShared: 'My Shared', - myprojects: 'My Personals', }, + favproj: 'Favorite', + projall: 'All', + projectsShared: 'My Shared', + myprojects: 'My Personals', msg: { hello: 'Hello!', myAppName: 'FreePlanet', @@ -363,6 +363,24 @@ const msg_website = { }, contacts: 'Contacts' }, + }, + fr: { + pages: { + + }, + msg: { + + }, + + }, + de: { + pages: { + + }, + msg: { + + }, + } } diff --git a/src/db/static_data.ts b/src/db/static_data.ts index b000865..0dfc350 100644 --- a/src/db/static_data.ts +++ b/src/db/static_data.ts @@ -1,9 +1,225 @@ -import { Todos, Projects, UserStore } from '@store' +import { Todos, Projects, UserStore, GlobalStore } from '@store' import globalroutines from '../globalroutines/index' import Quasar, { date, Screen } from 'quasar' -import { IListRoutes, ILang, IMenuList, IProject, ITodo, Privacy, IPerson } from '../model/index' +import { + IListRoutes, + ILang, + IMenuList, + IProject, + ITodo, + Privacy, + IPerson, + IFunctionality, + IPreloadImages +} from '../model/index' import { RouteNames } from '../router/route-names' +import { tools } from '@src/store/Modules/tools' + +// const SHOW_PROJINTHEMENU = false +// +// let arrlistafavourite = [] +// let arrlistaprojtutti = [] +// let arrlistaprojmiei = [] +// if (SHOW_PROJINTHEMENU) { +// arrlistaprojtutti = Projects.getters.listaprojects(RouteNames.projectsall) +// arrlistaprojmiei = Projects.getters.listaprojects(RouteNames.myprojects) +// arrlistafavourite = Projects.getters.listaprojects(RouteNames.favouriteprojects) +// } +// PROGETTI -> FAVORITI : + +// if (arrlistafavourite.length > 0) { +// arrMenu.push({ +// icon: 'favorite_border', +// nametranslate: 'pages.' + RouteNames.favouriteprojects, +// urlroute: RouteNames.favouriteprojects, +// level_parent: 0.0, +// level_child: 0.5, +// routes2: arrlistafavourite, +// idelem: '' +// }) +// } + +const routes_todo: IListRoutes[] = [] +const arrlista = [ + { nametranslate: 'personal', description: 'personal' }, + { nametranslate: 'work', description: 'work' }, + { nametranslate: 'shopping', description: 'shopping' } +] + +arrlista.forEach((elem: IMenuList) => { + routes_todo.push( + { + path: '/todo/:category', + materialIcon: 'todo', + urlroute: 'todo', + name: elem.description, + component: () => import('@/views/todo-list/todo-list.vue'), + level_parent: 0, + level_child: 0.5, + inmenu: true, + submenu: true, + infooter: true, + meta: { + requiresAuth: true, + async asyncData() { + await Todos.actions.dbLoad({ checkPending: false }) + } + // middleware: [auth] + }, + idelem: elem.nametranslate, + } + ) +}) + +const routes_projects: IListRoutes[] = [ + { + // PROGETTI -> TUTTI : + path: '/' + RouteNames.projectsall + '/:idProj', + materialIcon: 'accessibility_new', + name: RouteNames.projectsall, + urlroute: RouteNames.projectsall, + component: () => import('@/views/projects/proj-list/proj-list.vue'), + inmenu: true, + submenu: true, + level_parent: 0.0, + level_child: 0.5, + infooter: true, + meta: { + requiresAuth: false, + async asyncData() { + // await Todos.actions.dbLoad({ checkPending: false }) + await Projects.actions.dbLoad({ checkPending: false, onlyiffirsttime: true }) + } + }, + idelem: process.env.PROJECT_ID_MAIN + }, + { + // PROGETTI -> TUTTI : + path: '/' + RouteNames.myprojects + '/:idProj', + materialIcon: 'accessibility_new', + name: RouteNames.myprojects, + urlroute: RouteNames.myprojects, + component: () => import('@/views/projects/proj-list/proj-list.vue'), + inmenu: true, + submenu: true, + level_parent: 0.0, + level_child: 0.5, + infooter: true, + meta: { + requiresAuth: false, + async asyncData() { + // await Todos.actions.dbLoad({ checkPending: false }) + await Projects.actions.dbLoad({ checkPending: false, onlyiffirsttime: true }) + } + }, + idelem: process.env.PROJECT_ID_MAIN + }, + { + // PROGETTI -> TUTTI : + path: '/' + RouteNames.projectsshared + '/:idProj', + materialIcon: 'accessibility_new', + name: RouteNames.projectsshared, + urlroute: RouteNames.projectsshared, + component: () => import('@/views/projects/proj-list/proj-list.vue'), + inmenu: true, + submenu: true, + level_parent: 0.0, + level_child: 0.5, + infooter: true, + meta: { + requiresAuth: false, + async asyncData() { + // await Todos.actions.dbLoad({ checkPending: false }) + await Projects.actions.dbLoad({ checkPending: false, onlyiffirsttime: true }) + } + }, + idelem: process.env.PROJECT_ID_MAIN + } +] + +const routes: IListRoutes[] = [ + { + path: '/', + materialIcon: 'home', + name: 'pages.home', + component: () => import('@/root/home/home.vue'), + reqauth: false, + inmenu: true, + infooter: true + }, + { + path: '', + faIcon: 'fa fa-list-alt', + materialIcon: 'format_list_numbered', + name: 'pages.Todo', + routes2: routes_todo, + level_parent: 0, + level_child: 0.5, + inmenu: true, + solotitle: true, + infooter: true + }, + ...routes_todo, + { + path: '', + faIcon: 'fa fa-list-alt', + materialIcon: 'next_week', + name: 'pages.projects', + routes2: routes_projects, + level_parent: 0, + level_child: 0.5, + inmenu: true, + solotitle: true, + infooter: true + }, + ...routes_projects, + { + path: '/category', + materialIcon: 'list', + name: 'pages.Category', + component: () => import('@/views/categories/category/category.vue'), + inmenu: true, + infooter: true + }, + { + path: '/admin/testp1/:category', + materialIcon: 'restore', + name: 'pages.Test1', + component: () => import('@/views/admin/testp1/testp1.vue'), + inmenu: true, + infooter: false, + reqauth: true + }, + + // --- NOT IN MENU: --- + { path: '/policy', name: 'pages.policy', component: () => import('@/root/policy/policy.vue') }, + { + path: '/signup', + materialIcon: 'how_to_reg', + name: 'pages.SignUp', + component: () => import('@/views/login/signup/signup.vue'), + inmenu: true, + infooter: true + }, + { + path: '/signin', + materialIcon: 'account_circle', + name: 'pages.SignIn', + component: () => import('@/views/login/signin/signin.vue'), + inmenu: true, + infooter: true + }, + { path: '/vreg', name: 'Verify Reg', component: () => import('@/views/login/vreg/vreg.vue') }, + { + path: '/admin/cfgserv', + name: 'cfgserv', + component: () => import('@/views/admin/cfgServer/cfgServer.vue'), + reqauth: true + }, + { path: '/offline', name: 'Offline', component: () => import('@/views/offline/offline.vue') } + +] const ds_operatori: IPerson[] = [ { @@ -23,7 +239,7 @@ const ds_operatori: IPerson[] = [ 'Grazie a delle meravigliose sincronicità ho incontrato persone con cui condividere il percorso, partecipare attivamente alla conduzione di un’associazione culturale per la divulgazione delle discipline olistiche e questo percorso che sempre più chiaramente si è mostrato essere “ciò che volevo fare da grande”. Gli interessi si sono così trasformati in percorsi formativi professionali per diventare Operatrice Olistica e Naturopata.

' + 'Insieme a Cristina e Kathryna nel 2019 abbiamo deciso di fondare L’associazione SHEN per creare un centro di formazione sia per chi desidera intraprendere una professione in ambito olistico sia per chi desidera fare un percorso di crescita personale.

' + 'E di certo il cammino non è ancora finito c’è così tanto da conoscere e sperimentare...

' + - 'I due giorni più importanti della vita sono quello in cui sei nato e quello in capisci perché. (Mark Twain)', + 'I due giorni più importanti della vita sono quello in cui sei nato e quello in capisci perché. (Mark Twain)' }] const arrLangUsed = [ @@ -40,15 +256,24 @@ const lang_available: ILang[] = [ // { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../statics/images/de.png', short: 'DE' }, ] -export const static_data = { +const preLoadImages: IPreloadImages[] = [] + +const functionality: IFunctionality = { SHOW_USER_MENU: true, SHOW_IF_IS_SERVER_CONNECTION: false, ENABLE_TODOS_LOADING: true, ENABLE_PROJECTS_LOADING: true, SHOW_NEWSLETTER: false, SHOW_ONLY_POLICY: false, + BOOKING_EVENTS: false +} + +export const static_data = { + routes, + functionality, ds_operatori, lang_available, + preLoadImages, arrLangUsed } diff --git a/src/layouts/menuone/menuOne.ts b/src/layouts/menuone/menuOne.ts index acbc6b0..abcdf52 100644 --- a/src/layouts/menuone/menuOne.ts +++ b/src/layouts/menuone/menuOne.ts @@ -4,6 +4,8 @@ import { GlobalStore } from '../../store/Modules' import Component from 'vue-class-component' import { static_data } from '../../db/static_data' import { tools } from '../../store/Modules/tools' +import { IListRoutes } from '@src/model' +import { UserStore } from '@modules' export default class MenuOne extends Vue { @@ -30,6 +32,10 @@ export default class MenuOne extends Vue { return GlobalStore.getters.getmenu } + public visumenu(elem) { // : IListRoutes + return (elem.onlyAdmin && UserStore.state.isAdmin) || (!elem.onlyAdmin) + } + public setParentVisibilityBasedOnRoute(parent) { parent.routes.forEach((item) => { if (this.$route.path === item.path) { @@ -50,4 +56,13 @@ export default class MenuOne extends Vue { return static_data } + public getroute(elem) { + if (elem.idelem) { + return tools.getUrlByTipoProj(elem.urlroute) + elem.idelem + } else { + return elem.path + } + + } + } diff --git a/src/layouts/menuone/menuOne.vue b/src/layouts/menuone/menuOne.vue index c92adbb..aba8b69 100644 --- a/src/layouts/menuone/menuOne.vue +++ b/src/layouts/menuone/menuOne.vue @@ -4,7 +4,7 @@