sito Terra Della Visione...3

Pagina Operatori
This commit is contained in:
Paolo Arena
2022-05-27 01:33:39 +02:00
parent 5db16e441e
commit bb2604d430
100 changed files with 1725 additions and 843 deletions

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.19"
APP_VERSION="0.3.21"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="14"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.19"
APP_VERSION="0.3.21"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.19"
APP_VERSION="0.3.21"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.19"
APP_VERSION="0.3.21"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="12"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.19"
APP_VERSION="0.3.21"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.19"
APP_VERSION="0.3.21"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -2,6 +2,8 @@ const msg_website_it = {
ws: {
sitename: 'Riso',
siteshortname: 'RISO',
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
},
products: {
quantity: 'Quantità',
@@ -27,6 +29,7 @@ const msg_website_it = {
myservice2: 'myservice2',
myhosps2: 'myhosps2',
mygood2: 'mygood2',
fundraising: 'Sostieni il Progetto',
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',
@@ -198,14 +201,25 @@ const msg_website_it = {
+ '</ul>',
},
freesostieni: {
title: 'Come Sostenere il progetto?',
title: 'Come Sostenere il progetto <strong>Riso.app</strong>?',
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li>📱<strong>Condividendo la APP</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li>'
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>'
+ '<li>👨🏻‍💻 Tramite una piccola donazione per le spese dei Server.<br>'
+ '</ul><br>'
+ 'Vediamo un <strong>futuro</strong> dove non si utilizzerà più denaro. Dove le persone si <strong>aiuteranno</strong> a vicenda e non avranno bisogno di "possedere" cose, ma le <strong>condivideranno e scambieranno</strong> con gli altri.<br>',
+ '<li>👨🏻‍💻 Con una <strong>piccola donazione</strong> per le spese dei Server</li></ul>' +
'<strong>Tramite Paypal:</strong><br><em>clicca sull\'importo per fare una donazione. </em><br>' +
'<div style="font-size: 1.5rem; background-color: white; color: blue; border: solid 2px #f00; margin: 10px; padding: 10px; border-radius: 10px; " ' +
'class="row justify-around">' +
'<span><a href="https://paypal.me/paoloarena/1" target="_blank">1€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/2" target="_blank">2€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/5" target="_blank">5€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/10" target="_blank">10€</a></span>' +
'<span><a href="https://paypal.me/paoloarena" target="_blank">scegli</a></span>' +
'</div><br>' +
'In alternativa inventati una forma di scambio da donare a Paolo (soprannome <a href="https://t.me/surya1977" target="_blank">Surya</a>)<br />' +
'<span style="color: red; font-size: 2rem;">❤</span> Sono graditi messaggi sia di suggerimenti che di apprezzamenti.<br>' +
'Grazie Mille per l\'Aiuto' +
'<br>',
},
multiplatform: {
title: 'Multi-piattaforma',

View File

@@ -22,6 +22,9 @@ const functionality: IFunctionality = {
ENABLE_REG_ISP: true,
ENABLE_GROUPS: true,
SHOW_COMPETENZE: true,
ENABLE_VIEW_GROUPS: true,
ENABLE_VIEW_USERS: true,
ENABLE_VIEW_PROFILE: true,
}
// const SHOW_PROJINTHEMENU = false
@@ -623,6 +626,16 @@ const baseroutes: IListRoutes[] = [
inmenu: false,
infooter: false,
},
{
active: true,
order: 150,
path: '/fundraising',
materialIcon: 'fas fa-hand-holding',
name: 'pages.fundraising',
component: () => import('@src/root/fundraising/fundraising.vue'),
inmenu: true,
infooter: true,
},
{
active: true,
order: 400,

View File

@@ -1,7 +1,7 @@
{
"name": "riso",
"version": "0.3.19",
"description": "Riso",
"version": "0.3.21",
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "Riso",
"author": "Paolo Arena",
"private": true,

View File

@@ -288,12 +288,17 @@ module.exports = configure((ctx) => ({
manifest: {
name: 'Riso',
short_name: 'Riso',
description: 'Riso',
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [
{
src: 'images/riso-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
{
src: 'images/riso-android-icon-96x96.png',
sizes: '96x96',
@@ -314,11 +319,6 @@ module.exports = configure((ctx) => ({
sizes: '384x384',
type: 'image/png',
},
{
src: 'images/riso-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
],
},
},

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.19"
APP_VERSION="0.3.21"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="14"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.19"
APP_VERSION="0.3.21"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="14"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,7 +1,7 @@
const msg_website_it = {
ws: {
sitename: 'TerraDellaVisione',
siteshortname: 'TerraDellaVisione',
sitename: 'Terra Della Visione',
siteshortname: 'TDV',
},
products: {
quantity: 'Quantità',
@@ -136,89 +136,19 @@ const msg_website_it = {
color: 'Colore',
},
msg: {
myAppName: 'TerraDellaVisione',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
myAppName: 'Terra Della Visione',
myAppDescription: '',
underconstruction: 'App in costruzione...',
myDescriz: '',
sottoTitoloApp: 'Il primo Vero Social',
sottoTitoloApp2: 'Libero, Equo e Solidale',
sottoTitoloApp3: 'dove Vive Consapevolezza e Aiuto Comunitario',
sottoTitoloApp4: 'Gratuito e senza Pubblicità',
sottoTitoloApp: 'Centro per ritiri CurArte',
sottoTitoloApp2: 'un viaggio nella Natura',
sottoTitoloApp3: 'per incontrare il tuo essere potrai partecipare a sessioni di yoga, meditazione, massaggi, danze, eventi musicali, cibo naturale vegetariano/vegano, laboratori artigianali',
sottoTitoloApp4: '',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana di Scambio Orizzontale</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
'Valori semplici e profondi che ci aiutano a ritrovare il <strong>Senso della Vita</strong>, perduto in questa società consumista, e riporti quei <strong>Sani Pricìpi Naturali</strong> ed Umani di <strong>Fratellanza</strong>'
+ ' che intere popolazioni antiche conoscevano bene.',
descrapp_pag2: 'E\' giunta l\'ora di utilizzare i nuovi strumenti <strong>Tecnologici</strong> a nostro <strong>favore</strong>, per <strong>Liberarci</strong> '
+ 'così piano piano dalla <strong>schiavitù</strong> del <strong>"Lavoro per generare Denaro"</strong> e trasformando le nostre <strong>Capacitá</strong> in '
+ '<strong>Risorse Umane</strong> per poterci sostenere e vivere in <strong>Armonia</strong> con gli altri.',
freesocial: {
title: 'Social',
descr: 'Una Community organizzata per <strong>Categorie</strong>, dove potrai unirti a <strong>Gruppi Tematici</strong>, '
+ 'Condividere <strong>Esperienze</strong> e unire Competenze per organizzare e sostenere <strong>Progetti Innovativi</strong> per il Popolo.<br><br>'
+ 'Verranno evidenziati sviluppi <strong>Etici</strong> come l\'<strong>Auto-Produzione</strong>, la <strong>Sostenibilitá</strong>, '
+ 'la Buona <strong>Salute Naturale</strong> e il <strong>Rispetto per l\'Ambiente</strong> e per tutti gli <strong>Esseri Viventi</strong> di questo '
+ '<strong>Pianeta</strong>. Chiunque potrá esprimere il proprio <strong>Consenso o Dissenso</strong> partecipando a <strong>Sondaggi Interattivi</strong>'
+ ' e realizzare insieme i <strong>Cambiamenti</strong> necessari alla nostra Società.',
},
freetalent: {
title: 'Beni e Servizi',
descr: 'Condividi i tuoi <strong>Talenti</strong> e <strong>Abilità</strong>, '
+ 'Nel Dare e Ricevere, si creeranno così legami di <strong>Amicizia, Solidarietà, Cooperazione e Divertimento</strong><br><br>' +
'Favoriamo lo scambio locale di <strong>Beni e Servizi</strong> grazie ad un sistema di baratto organizzato, in cui la comunità stessa si pone come garante.'
},
coin: {
title: 'RIS - Credito Alternativo',
descr: '<strong>Stiamo lavorando</strong> anche per creare una sorta di "moneta alternativa" per conteggiare gli scambi che avvengono tra di noi, quando il semplice baratto risulta non applicabile.<br>' +
'Partendo dalle basi del <strong>Si.Cre.Na.C.C - Sistema di Credito Naturale a Copertura Certa</strong>.<br>' +
'<em>Ciascun operatore potrà creare moneta all\'occorrenza, se il saldo del suo conto non sarà sufficiente a coprire la spesa. Potrà quindi mandare il suo conto in "scoperto", accollandosi il conseguente' +
' Debito, accreditando l\'equivalente somma all\'operatore ricevente, il quale la annovera nel suo conto in qualità di Credito. ' +
'L\'equilibrio tra il credito dell\'uno ed il debito dell\'altro ha come conseguenza che il debitore dovrà lavorare per rifondere il debito, mentre il ricevente potrà usare il credito come moneta.</em><br>' +
'Per maggiori informazioni consultare il libro gratuito <a href="https://sicrenacc.info/" target="_blank">cliccando qui</a>.'
},
freeliving: {
title: 'Gruppi Territoriali',
descr: 'Questo progetto vuole diffondere la creazione di Gruppi Territoriali Provinciali,'
+ 'per poter favorire progetti condivisi in ambito territoriale e creare così una <strong>Rete di Fiducia</strong> fino al vicinato, come giá viene praticato in piccolo, in numerosi <strong>Ecovillaggi</strong> e Comunità del mondo.',
},
freecollabora: {
title: 'Chi può Collaborare?',
descr: 'Tutti coloro che sono in linea con <strong>Princìpi Etici</strong> e ricerca del <strong>Benessere Globale del Pianeta</strong><br>'
+ 'Pertanto sono i benvenuti:'
+ '<ul class="mylist" style="padding-left: 20px;">'
+ '<li><strong>Associazioni no-profit, Ecovillaggi, Comunità</strong></li>'
+ '<li>Gruppi che intendono promuovere <strong>Progetti Sociali Innovativi</strong> per una <strong>Decrescita Felice</strong></li>'
+ '<li>Chi gestisce un <strong>Gruppo di Acquisto Solidale (G.A.S.)</strong></li>'
+ '<li><strong>Produttori Locali Etici</strong></li>'
+ '<li><strong>Chiunque voglia partecipare</strong>, nella forma che ritiene più opportuna.</li>'
+ '</ul>',
},
freesostieni: {
title: 'Come Sostenere il progetto?',
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li>📱<strong>Condividendo la APP</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li>'
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>'
+ '<li>👨🏻‍💻 Tramite una piccola donazione per le spese dei Server.<br>'
+ '</ul><br>'
+ 'Vediamo un <strong>futuro</strong> dove non si utilizzerà più denaro. Dove le persone si <strong>aiuteranno</strong> a vicenda e non avranno bisogno di "possedere" cose, ma le <strong>condivideranno e scambieranno</strong> con gli altri.<br>',
},
multiplatform: {
title: 'Multi-piattaforma',
descr: 'E\' compatibile con Google Chrome, Firefox, Opera, Safari, iPhone, Android e PC. L\'Applicazione s\'installa facilmente, senza passare dallo store. '
+ 'basta entrare sul sito <strong>www.terradellavisione.app</strong>.<br>'
+ 'Dopo la registrazione chiederà di aggiungerlo allo schermo (o cliccare sul menu del browser "Installa APP")',
},
free: {
title: 'Gratuita, Open Source e Niente Pubblicità',
descr: 'Questa App <strong>non è in vendita</strong>, non ha scopi commerciali, quindi <strong>non ha prezzo</strong> e nessun dato contenuto in esso verrà mai venduto, in quanto appartiene a <strong>Tutti Noi</strong> ed a nessuno in particolare.<br>Chiunque potrá utilizzarla e beneficiarne da essa.<br>' +
'<em>Progetto Open Source su <a href="https://github.com/paoloar77/newfreeplanet" target="_blank">GitHub</a>.</em><br><br>'
+ '<strong>Grazie a Tutti per il sostegno</strong>. ',
},
descrapp_title1: '',
descrapp_pag1: '',
descrapp_pag2: '',
titlecontatti: 'Contatti',
contacts: '',
},

View File

@@ -1,8 +1,8 @@
const msg_website_si = {
ws: {
sitename: 'TerraDellaVisione',
siteshortname: 'TerraDellaVisione',
botname: 'TerraDellaVisione BOT',
sitename: 'Terra Della Visione',
siteshortname: 'Terra Della Visione',
botname: 'Terra Della Visione BOT',
},
pages: {
home: 'Domača stran',

View File

@@ -9,7 +9,7 @@ const functionality: IFunctionality = {
PWA: true,
SHOW_USER_MENU: true, // Cambiare con true
SHOW_PROFILE: true,
SHOW_REG_BUTTON: false,
SHOW_REG_BUTTON: true,
ENABLE_REGISTRATION: true, // Cambiare con true
SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: true,
@@ -20,7 +20,12 @@ const functionality: IFunctionality = {
BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true,
ENABLE_GROUPS: true,
ENABLE_GROUPS: false,
SHOW_COMPETENZE: false,
ENABLE_VIEW_GROUPS: false,
ENABLE_VIEW_USERS: false,
ENABLE_VIEW_PROFILE: false,
ENABLE_VIEW_BOOKINGS: true,
}
// const SHOW_PROJINTHEMENU = false
@@ -321,6 +326,34 @@ const routes_manager: IListRoutes[] = [
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
path: '/admin/operators',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.operators',
component: () => import('@/rootgen/admin/operators/operators.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
path: '/admin/disciplines',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.disciplines',
component: () => import('@/rootgen/admin/disciplines/disciplines.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
@@ -542,21 +575,10 @@ const baseroutes: IListRoutes[] = [
{
active: functionality.ENABLE_REGISTRATION,
order: 1000,
path: '/signup/:invited/:usernameteleg/:idteleg',
path: '/signup',
materialIcon: 'how_to_reg',
name: 'pages.SignUp',
component: () => import('@/views/login/signup/signup.vue'),
inmenu: false,
infooter: false,
separator: false
},
{
active: true,
order: 1001,
path: '/signup/:invited',
materialIcon: 'how_to_reg',
name: 'pages.SignUp2',
component: () => import('@/views/login/signup/signup.vue'),
component: () => import('@/views/login/signup_noteleg/signup_noteleg.vue'),
inmenu: false,
infooter: false,
separator: false
@@ -615,10 +637,20 @@ const baseroutes: IListRoutes[] = [
active: true,
path: '/separator',
name: 'separator',
order: 35,
order: 1010,
isseparator: true,
inmenu: true,
},
{
active: true,
order: 70,
path: '/chisiamo',
materialIcon: 'event',
name: 'pages.chisiamo',
component: () => import('@/rootgen/operators/operators.vue'),
inmenu: true,
infooter: true
},
{
active: true,
order: 80,
@@ -627,8 +659,8 @@ const baseroutes: IListRoutes[] = [
name: 'pages.calendarioeventi',
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
extraclass: 'isCalendar',
inmenu: false,
infooter: false
inmenu: true,
infooter: true
},
{
active: true,
@@ -660,11 +692,21 @@ const baseroutes: IListRoutes[] = [
inmenu: false,
infooter: false
},
{
active: true,
order: 130,
path: '/admin/eventlist',
materialIcon: 'fas fa-calendar-plus',
name: 'otherpages.admin.eventlist',
component: () => import('@/rootgen/admin/eventlist/eventlist.vue'),
inmenu: true,
infooter: true
},
]
export function firstimagehome() {
let img = 'statics/images/background.jpg'
let img = 'images/foto1.jpg'
return img
}

View File

@@ -1,6 +1,6 @@
{
"name": "terradellavisione",
"version": "0.3.19",
"version": "0.3.21",
"description": "TerraDellaVisione",
"productName": "TerraDellaVisione",
"author": "Paolo Arena",

View File

@@ -286,14 +286,19 @@ module.exports = configure((ctx) => ({
},
manifest: {
name: 'TerraDellaVisione',
short_name: 'TerraDellaVisione',
description: 'TerraDellaVisione',
name: 'Terra Della Visione',
short_name: 'Terra della Visione',
description: 'Centro per ritiri CurArte: un viaggio nella Natura per incontrare il tuo essere potrai partecipare a sessioni di yoga, meditazione, massaggi, danze, eventi musicali, cibo naturale vegetariano/vegano, laboratori artigianali',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [
{
src: 'images/tdv-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
{
src: 'images/tdv-android-icon-96x96.png',
sizes: '96x96',
@@ -314,11 +319,6 @@ module.exports = configure((ctx) => ({
sizes: '384x384',
type: 'image/png',
},
{
src: 'images/tdv-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
],
},
},

View File

@@ -328,12 +328,6 @@ body.mobile .landing:before {
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE

View File

@@ -17,6 +17,7 @@ import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
import { IGallery } from 'model'
export default defineComponent({
name: 'Home_tdv',
@@ -25,13 +26,13 @@ export default defineComponent({
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const slide2 = ref(0)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Elisa e Cristina insieme',
img: '../../statics/images/eventi_esterni/IMG_6035.jpg'
alt: 'Noi insieme',
img: 'images/terradellavisione_noi.jpg'
},
])
@@ -56,6 +57,26 @@ export default defineComponent({
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
function getGall(): any {
return globalStore.gallery.find((rec: any) => rec.title === 'slidehome')
}
function getArrImgSlideHome() {
const mygall: any = getGall()
if (!!mygall) {
return mygall.list
}
return []
}
function getdirectory() {
const mygall: any = getGall()
if (!!mygall) {
return 'upload/' + mygall.directory
}
return []
}
created()
return {
@@ -67,7 +88,9 @@ export default defineComponent({
slide2,
getheightgallery,
getArrDisciplines,
getArrImgSlideHome,
getImmagini,
getdirectory,
getValDb,
firstimagehome,
getsrcbyimg,

View File

@@ -17,114 +17,65 @@
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
:img-src="getsrcbyimg(firstimagehome())" class="carousel_img">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
<h1 class="text-h1 shadow-max">{{ tools.getappname() }}</h1>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
:img-src="getsrcbyimg('images/foto2.jpg')" alt="" class="carousel_img">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{getappname}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
<h1 class="text-h1 shadow-max">{{ tools.getappname() }}</h1>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
:img-src="getsrcbyimg('images/foto3.jpg')" class="carousel_img">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{getappname}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
<div class="text-h1 shadow-max">{{ tools.getappname() }}</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
<div class="text-grey-9">
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{ $t('msg.sottoTitoloApp') }}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{ $t('msg.sottoTitoloApp2') }}</strong>
</h2>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm bg-home ">
{{ $t('msg.sottoTitoloApp3') }}
</h2>
</div>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="tools.isLogged() && !tools.isVerified()" class="text-verified">{{
<!--<div v-if="tools.isLogged() && !tools.isVerified()" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>-->
</div>
<CCardCarousel :myarr="getArrDisciplines()">
<CCardCarousel :myarr="getArrDisciplines()" directory="upload/disciplines/">
</CCardCarousel>
@@ -174,7 +125,7 @@
</div>
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center" >
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center">
<q-carousel
swipeable
@@ -185,23 +136,21 @@
thumbnails
infinite
:height="tools.heightgallery()">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
<q-carousel-slide v-for="(rec, index) in getArrImgSlideHome()" :key="index" :name="index"
:img-src="getdirectory() + '/' + rec.imagefile"
:alt="rec.description"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
class="text-h6 text-grey-1 shadow-max">{{ index + 1 }}. </span><span
class="text-h6 text-grey-2 shadow">{{ rec.description }}</span></div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
<COpenStreetMap v-if="false" :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
@@ -216,5 +165,5 @@
</script>
<style lang="scss" scoped>
@import './home_tdv.scss';
@import './home_tdv.scss';
</style>

View File

@@ -1,6 +1,6 @@
{
"name": "terradellavisione",
"version": "0.3.19",
"version": "0.3.21",
"description": "TerraDellaVisione",
"productName": "TerraDellaVisione",
"author": "Paolo Arena",

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
public/images/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 165 KiB

BIN
public/images/logo-full.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
public/images/noi4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@@ -0,0 +1,5 @@
[Dolphin]
PreviewsShown=true
Timestamp=2022,5,21,3,32,0
Version=4
ViewMode=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

BIN
public/images/tdv/sasha.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
public/images/tdv/surya.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -286,14 +286,19 @@ module.exports = configure((ctx) => ({
},
manifest: {
name: 'TerraDellaVisione',
short_name: 'TerraDellaVisione',
description: 'TerraDellaVisione',
name: 'Terra Della Visione',
short_name: 'Terra della Visione',
description: 'Centro per ritiri CurArte: un viaggio nella Natura per incontrare il tuo essere potrai partecipare a sessioni di yoga, meditazione, massaggi, danze, eventi musicali, cibo naturale vegetariano/vegano, laboratori artigianali',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [
{
src: 'images/tdv-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
{
src: 'images/tdv-android-icon-96x96.png',
sizes: '96x96',
@@ -314,11 +319,6 @@ module.exports = configure((ctx) => ({
sizes: '384x384',
type: 'image/png',
},
{
src: 'images/tdv-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
],
},
},

View File

@@ -1,324 +0,0 @@
body {
font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #373737;
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;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */
{
opacity: 0;
}
.slide-enter {
}
.slide-enter-active {
animation: slide-in 0.2s ease-out forwards;
}
.slide-leave {
}
.slide-leave-active {
animation: slide-out 0.5s ease-out forwards;
}
@keyframes slide-in {
from {
transform: translateX(-500px);
}
to {
transform: translateX(0);
}
}
@keyframes slide-out {
from {
transform: translateX(0);
}
to {
transform: translateX(1600px);
}
}
.my-notif-class{
font-weight: bold;
}
.mybanner {
font-weight: bold;
font-size: 1.1rem;
text-align: center;
}
.lowperc {
color: red;
}
.medperc {
color: blue;
}
.highperc {
color: green;
}
.hide-if-small {
@media (max-width: 600px) {
display: none;
}
}
.thiny-if-small {
@media (max-width: 600px) {
max-width: 22px;
}
}
.links, .links a {
text-shadow: 1px 1px 1px #555 !important;
// font-weight: bold;
color: cornflowerblue !important;
}
.links:hover {
color: white !important;
}
.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;
}
.text-shadow-2 {
text-shadow: .07rem .07rem .07rem $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;
}
}
.bg-home {
background: fuchsia !important;
opacity: 0.5;
}

View File

@@ -28,6 +28,3 @@
</template>
<script lang="ts" src="./App.ts">
</script>
<style lang="scss">
@import './App.scss';
</style>

View File

@@ -2,6 +2,7 @@ import { defineComponent, ref } from 'vue'
import { CCardDiscipline } from '../CCardDiscipline'
import { useGlobalStore } from '@store/globalStore'
import { tools } from '@store/Modules/tools'
export default defineComponent({
name: 'CCardCarousel',
@@ -11,15 +12,26 @@ export default defineComponent({
type: Array,
required: true,
},
directory: {
type: String,
required: false,
default: '',
}
},
setup() {
setup(props, { emit }) {
const globalStore = useGlobalStore()
const slidedisc = ref(0)
function getimgdisc(disc: any) {
return props.directory + tools.getimgev(disc)
}
return {
slidedisc,
globalStore,
tools,
getimgdisc,
}
},
})

View File

@@ -12,9 +12,9 @@
<q-item
clickable v-ripple
:to="disc.linkpage">
<q-item-section avatar v-if="tools.getimgev(disc)">
<q-item-section avatar v-if="getimgdisc(disc)">
<q-avatar>
<img :src="tools.getimgev(disc)" :alt="disc.label">
<img :src="getimgdisc(disc)" :alt="disc.label">
</q-avatar>
</q-item-section>
<q-item-section>{{ disc.label }}</q-item-section>
@@ -71,11 +71,11 @@
<q-carousel-slide
v-for="(myrec, index) in myarr"
:key="index"
:img-src="myrec.img_small"
:img-src="directory + myrec.img_small"
:alt="myrec.label"
:name="index">
<div class="row q-ma-xs">
<CCardDiscipline :discipline="myrec" mystyle="height: 500px" autoplay.sync="globalStore.autoplaydisc">
<CCardDiscipline :directory=directory :discipline="myrec" mystyle="height: 500px" autoplay.sync="globalStore.autoplaydisc">
</CCardDiscipline>
</div>

View File

@@ -19,6 +19,11 @@ export default defineComponent({
Type: Object as PropType<IDiscipline>,
required: true,
},
directory: {
type: String,
required: false,
default: '',
},
mystyle: {
type: String,
required: false,

View File

@@ -1,7 +1,7 @@
<template>
<div class="my-card-shadow yes_shadow" style="opacity: 1 !important;">
<q-card class="my-card-discipline text-center inset-shadow" :style="mystyle">
<q-img :src="`public/` + discipline.img_small" class="myimg" :alt="discipline.label">
<q-img :src="directory + discipline.img_small" class="myimg" :alt="discipline.label">
<div class="absolute-bottom text-spacetrans">
<q-btn rounded :to="discipline.linkpage">
<div class="text-h5 disc__title shadow-max">{{ discipline.label }}</div>
@@ -32,6 +32,7 @@
</q-card-section>
<q-btn
v-if="discipline.linkpage"
class="q-mb-md" rounded size="md" color="primary" :to="discipline.linkpage"
:label="$t('cal.readall')"></q-btn>
</q-card>

View File

@@ -10,7 +10,7 @@
</div>-->
<div>
<!-- display an myevent -->
<q-dialog v-model="displayEvent">
<q-dialog v-model="displayEvent" :maximized="$q.screen.lt.sm">
<q-card v-if="myevent" class="dialog_card">
<q-toolbar class="bg-primary text-white">
<!--<q-toolbar :class="tools.displayClasses(myevent)"-->

View File

@@ -0,0 +1,463 @@
li {
color: darkgreen !important;
}
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
//background: rgba(0, 0, 0, .6)
}
$grayshadow: #555;
$textcol: blue;
$textcol_scuro: darkblue;
p {
margin: 0 0 1.25rem;
//text-shadow: .125rem .125rem .25rem $grayshadow;
}
h4 {
font-size: 1.25rem;
}
.mycard {
visibility: hidden;
}
.landing {
}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
//padding: 0 16px
}
.intro {
display: flex;
justify-content: space-between;
align-items: stretch;
/* flex-flow: row nowrap; */
padding: 1.25rem 0 1.25rem 0;
margin: .125rem;
* {
width: 100%;
flex: 1;
margin-left: auto;
margin-right: auto;
}
&__associazione {
min-width: 350px;
}
&__comeassociarsi{
min-width: 350px;
}
}
.subtitle {
font-weight: 600;
text-align: center;
letter-spacing: 0.125rem;
text-transform: uppercase;
font-size: 1rem;
}
.landing > section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
position: relative;
max-width: 1240px;
width: 100%
}
.landing__toolbar {
background: -webkit-gradient(linear, left top, left bottom, from(#000), to(transparent));
background: linear-gradient(180deg, #000, transparent);
padding: 0 !important
}
.landing__toolbar .q-btn {
border-radius: 0 0 .315rem .315rem;
-ms-flex-item-align: stretch;
align-self: stretch
}
.landing__hero {
min-height: 50vh
}
.landing__header {
height: 18vh
}
.landing__arrow {
bottom: 1.5rem;
opacity: .4
}
.landing__front {
background: -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(15%, rgba(0, 0, 0, .6)));
background: linear-gradient(180deg, transparent, rgba(0, 0, 0, .6) 15%)
}
.landing__logo {
width: 9.40rem;
height: 9.40rem;
margin-top: 1.315rem;
//-webkit-animation: logo-rotate 240s linear infinite;
//animation: logo-rotate 240s linear infinite
}
.landing__features .q-icon {
font-size: 4rem
}
h4 {
line-height: 1.5;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
margin: 1rem 0
}
.landing__features p {
opacity: .7;
font-size: 1rem;
line-height: 1.5;
}
.landing__footer {
//background: -webkit-gradient(linear, left top, left bottom, color-stop(65%, rgba(0, 0, 0, .1)), to(#000));
background: linear-gradient(180deg, rgba(0, 0, 0, .8) 95%, #FFF);
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
padding-left: 1.25rem;
padding-right: 1.25rem;
color: #9f9f9f;
}
.icon_contact:hover {
color: blue;
border-color: white;
border-width: .0625rem;
}
.landing__footer .doc-link {
color: $textcol;
}
.landing__footer .doc-link:hover {
opacity: .8
}
.landing__swirl-bg {
background-repeat: no-repeat !important;
background-position: top;
background-size: contain !important;
background-image: url(../../../public/images/landing_first_section.png) !important
}
.feat-descr {
font-size: 1.15rem;
}
.feat-descr:hover {
transition: opacity 0.5s ease-in-out;
opacity: 0.9;
}
.q-col-gutter-sm {
padding: 3.125rem 3.125rem;
//margin-left: -48px
}
body.mobile .landing {
//background: unset
}
body.mobile .landing:before {
content: "";
position: fixed;
top: 0;
height: 100vh;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
//background: #000 url(../../public/images/cover.jpg) 50%;
background-size: cover
}
/*
@-webkit-keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
@keyframes logo-rotate {
to {
-webkit-transform: rotate(-1turn);
transform: rotate(-1turn)
}
}
*/
.home {
//background-color: rgb(250, 250, 250);
padding: 3.125rem;
display: flex;
//flex-wrap: nowrap;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.btn-start {
margin: 3.125rem;
}
.shadow {
//color: white;
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.shadow-max {
//color: white;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.text-h1 {
font-size: 6rem;
font-weight: 300;
line-height: 6rem;
letter-spacing: -.01562em;
}
.text-h2 {
font-size: 3.75rem;
font-weight: 300;
line-height: 3.75rem;
letter-spacing: -.00833em;
}
.text-weight-bold {
font-weight: 700;
}
.text-vers{
font-size: 0.75rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.homep-cover-img-1 {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-2 {
background: #000 url(../../../public/images/foto2.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img-3 {
background: #000 url(../../../public/images/foto3.jpg) no-repeat 50% fixed;
//transition: background-image 1s ease-in-out;
}
.homep-cover-img.hide-filter:before {
opacity: 0
}
.landing__footer-icons {
font-size: 1.75rem
}
.landing__footer-icons a {
margin: 0 .5rem .5rem;
text-decoration: none;
outline: 0;
color: $textcol;
transition: color .28s
}
.landing__footer-icons a:hover {
color: $textcol_scuro;
}
.doc-img {
max-width: 100%;
}
.mylist {
padding: 0.75rem;
border-radius: 16px; border: 2px solid #00f7ff;
}
.clgutter {
margin-top: 1.25rem;
padding: .62rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.landing__hero {
text-align: center
}
.landing__header {
height: 2vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1 {
font-size: 3rem;
line-height: 3.05rem;
margin-bottom: 1.5rem
}
.landing > section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
margin: 1.25rem 0
}
h4 {
line-height: 1.4;
text-shadow: 0.25rem 0.25rem 0.5rem $grayshadow;
}
.landing .feature-item {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 3.5rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.q-col-gutter-sm {
padding: .625rem .315rem;
}
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers{
font-size: 0.6rem;
}
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: 620px 620px !important;
background-position: 50% top !important;
background-repeat: no-repeat !important;
}
}
.custom-caption {
text-align: center;
padding: .75rem;
color: $textcol;
background-color: rgba(0, 0, 0, .3);
}
.mycontacts {
color: gray;
letter-spacing: 0.078rem;
}
.mycontacts_title {
text-shadow: 0.125rem 0.125rem 0.125rem #555;
font-weight: bold;
color: #999;
letter-spacing: 0.125rem;
}
.mycontacts_text {
color: #999;
letter-spacing: 0.093rem;
}
li {
color: white !important;
font-size: 18px;
@media (max-width: 600px) {
font-size: 1rem;
}
}
ul li::before {
content: '\2713';
color: #aefff5 !important;
display: inline-block;
width: 1em;
margin-left: 20px;
margin-right: 5px;
@media (max-width: 600px) {
margin-left: 5px;
}
}

View File

@@ -0,0 +1,137 @@
import { defineComponent, ref, computed, PropType, toRef, onMounted, onBeforeUnmount } from 'vue'
import { useUserStore } from '@store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import { tools } from '@store/Modules/tools'
import { Footer, Logo } from '@components'
export default defineComponent({
name: 'CFundRaising',
components: {Logo, Footer},
props: {},
setup() {
const { t } = useI18n();
const $router = useRouter()
const visibile = ref(false)
const cardvisible = ref('hidden')
const displaycard = ref('block')
const firstClassSection = ref('fade homep-cover-img animate-fade homep-cover-img-1')
const polling: any = ref()
const slide = ref('first')
const animare = ref(0)
function initprompt() {
window.addEventListener('beforeinstallprompt', (event) => {
// console.log('******************************** beforeinstallprompt fired')
event.preventDefault()
// console.log('§§§§§§§§§§§§§§§§§§§§ IMPOSTA DEFERRED PROMPT !!!!!!!!!!!!!!!!! ')
// #Todo++ IMPOSTA DEFERRED PROMPT
return false
})
}
function created() {
initprompt()
animare.value = process.env.DEV ? 0 : 8000
}
onMounted(() => {
let primo = true
const mytime = 10000
polling.value = setInterval(() => {
firstClassSection.value = `landing_background fade homep-cover-img ${primo ? 'homep-cover-img-2' : 'homep-cover-img-1'}`
primo = !primo
// console.log('this.firstClassSection', this.firstClassSection)
}, mytime)
})
function appname() {
return t('msg.myAppName')
}
onBeforeUnmount(() => {
console.log('beforeDestroy')
clearInterval(polling.value)
})
function meta() {
return {
keywords: { name: 'keywords', content: 'Quasar website' },
// meta tags
meta: {
mykey: { name: 'mykey', content: 'Key 1' },
description: { name: 'description', content: 'Page 1' },
keywords: { name: 'keywords', content: 'Quasar website' },
equiv: { 'http-equiv': 'Content-Type', content: 'text/html; charset=UTF-8' },
},
}
}
function mystilecard() {
return {
visibility: cardvisible.value,
display: displaycard.value,
}
}
function getenv(myvar: any) {
try {
return process.env[myvar]
} catch (e) {
return ''
}
}
function getPermission() {
return Notification.permission
}
function NotServiceWorker() {
return (!('serviceWorker' in navigator))
}
function PagLogin() {
$router.replace('/signin')
}
function PagReg() {
$router.replace('/signup')
}
function openCreatePostModal() {
console.log('APERTO ! openCreatePostModal')
visibile.value = !visibile.value
if (visibile.value) {
displaycard.value = 'block'
cardvisible.value = 'visible'
} else {
displaycard.value = 'block'
cardvisible.value = 'hidden'
}
}
created()
return {
t,
appname,
meta,
mystilecard,
getenv,
getPermission,
NotServiceWorker,
PagLogin,
PagReg,
openCreatePostModal,
slide,
tools,
animare,
}
},
})

View File

@@ -0,0 +1,28 @@
<template>
<q-page class="text-white">
<div class="landing">
<section class="bg-primary">
<div class=" row justify-between items-start q-col-gutter-sm">
<div class="col-12">
<div class="feature-item"><i
aria-hidden="true"
class="q-icon fas fa-hands-holding"> </i>
<div class="text-big" v-html="t('homepage.freesostieni.title')"></div>
<p class="feat-descr" v-html="t('homepage.freesostieni.descr')"></p></div>
</div>
</div>
</section>
<Footer></Footer>
</div>
</q-page>
</template>
<script lang="ts" src="./CFundRaising.ts">
</script>
<style lang="scss" scoped>
@import './CFundRaising.scss';
</style>

View File

@@ -0,0 +1 @@
export {default as CFundRaising} from './CFundRaising.vue'

View File

@@ -461,7 +461,6 @@
<div class="tdclass">
<div :class="getclrow(props.row)">
<CMyPopupEdit
:table="mytable"
:canEdit="canEdit"
@@ -529,6 +528,7 @@
:canEdit="true"
:canModify="tools.canModifyThisRec(rowclicksel, tablesel)"
:disable="disabilita()"
:isInModif="mycol.isInModif"
view="field"
:mycol="mycol"
:showall="true"

View File

@@ -1,6 +1,7 @@
<template>
<div>
<div v-if="mypath && !!rec">
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<div v-if="!!rec.img1" class="text-center">
<q-img :src="``+ rec.img1" class="img"></q-img>
@@ -29,6 +30,7 @@
</div>
<div v-else>
<div v-if="!!title">
<CTitle
v-if="imgbackground" :imgbackground="imgbackground"

View File

@@ -191,7 +191,13 @@ export default defineComponent({
const myImgGall = ref(<IImgGallery[]>[{}])
const col = ref(<IColGridTable> { name: 'test', fieldtype: 0, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView, visible: true, maxlength: props.mycol ? props.mycol.maxlength : 0 })
const col = ref(<IColGridTable>{
name: 'test',
fieldtype: 0,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView,
visible: true,
maxlength: props.mycol ? props.mycol.maxlength : 0
})
const { setValDb, getValDb } = MixinBase()
const { getMyUsername } = MixinUsers()
@@ -253,7 +259,7 @@ export default defineComponent({
})
function isFieldDb(){
function isFieldDb() {
return props.type !== 0
}
@@ -369,7 +375,7 @@ export default defineComponent({
list: []
}
}
}else if (col.value.fieldtype === costanti.FieldType.listobj) {
} else if (col.value.fieldtype === costanti.FieldType.listobj) {
if (myvalue.value === '' || myvalue.value === undefined) {
// console.log('set default myvalue.value ')
myvalue.value = [{
@@ -426,7 +432,7 @@ export default defineComponent({
// console.log('SaveValueInt', newVal, valinitial)
if (isFieldDb()) {
savefield(newVal, valinitial, $q);
savefield(newVal, valinitial, $q)
} else {
// Update value in table memory
if (props.subfield !== '') {
@@ -581,7 +587,7 @@ export default defineComponent({
if (col.link)
mylink = col.link.replace(col.name, val)
if (col.tipovisu === costanti.TipoVisu.LINK && col.link) {
return "<a href='"+mylink+"'>" + val + '</a>'
return "<a href='" + mylink + "'>" + val + '</a>'
} else if (col.tipovisu === costanti.TipoVisu.BUTTON && col.link) {
return ''
}
@@ -642,9 +648,10 @@ export default defineComponent({
if (fieldsTable.tableForUsers.includes(props.table)) {
return 'Profilo'
} else {
return fieldsTable.getTitleImgByTable(props.table);
return fieldsTable.getTitleImgByTable(props.table)
}
}
function getDirectoryGall() {
let ris = ''
let username = myrow.value.hasOwnProperty('username') ? myrow.value['username'] : ''
@@ -659,11 +666,13 @@ export default defineComponent({
}
if (fieldsTable.tableForUsers.includes(props.table)) {
ris = 'profile/' + username + '/' + props.table
}else if (props.table === 'users') {
} else if (props.table === 'users') {
ris = 'profile/' + userStore.my.username
}else if (props.table === 'mygroups') {
} else if (props.table === 'mygroups') {
if (myrow.value.hasOwnProperty('groupname'))
ris = 'mygroups/' + myrow.value['groupname']
} else if (!!myrow.value && !!myrow.value.directory) {
ris = myrow.value.directory
} else {
ris = props.table
}
@@ -674,7 +683,7 @@ export default defineComponent({
function uploaded(info: any) {
if (info.files) {
myvalue.value = tools.geturlrelativeprofile()+ '/' + getMyUsername() + '/' + info.files[0].name
myvalue.value = tools.geturlrelativeprofile() + '/' + getMyUsername() + '/' + info.files[0].name
console.log('uploaded', myvalue.value)
savefield(myvalue.value, '', $q)
}
@@ -702,7 +711,8 @@ export default defineComponent({
if (!!col.field_extra1) {
try {
title = tools.getValue(row, col.field_extra1, col.subfield_extra1!)
}catch (e){}
} catch (e) {
}
}
return title

View File

@@ -1,20 +1,20 @@
<template>
<span>
<q-dialog v-model="showuserdetails" v-if="myop">
<q-dialog v-model="showuserdetails" v-if="myop" :maximized="$q.screen.lt.sm">
<q-card class="dialog_card">
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ myop.name }} {{ myop.surname }}
{{ myop.name }} {{ myop.surname ? myop.surname : '' }}
</q-toolbar-title>
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
</q-toolbar>
<q-card-section class="text-center inset-shadow">
<div style="width: 200px; float: left;">
<q-img :src="`images/` + myop.img" class="myimg" :alt="`${myop.name} ${myop.surname}`">
<div class="column justify-center" style="min-width: 280px">
<q-img
:src="`images/` + myop.img" class="img_effetto_3d" :alt="`${myop.name} ${myop.surname}`">
</q-img>
</div>
<div class="text-h6 text-trans">{{ myop.name }} {{ myop.surname }}</div>
<div class="title_shadow">{{ myop.name }} {{ myop.surname ? myop.surname : '' }}</div>
<div class="text-subtitle-carica text-trans">{{ myop.qualification }}</div>
<div class="text-subtitle-carica">{{ myop.disciplines }}</div>
<div v-if="myop.certifications" class="text-subtitle-certificato">{{ myop.certifications }}</div>
@@ -59,6 +59,7 @@
<br>
<div class="op__storia" v-html="myop.info"></div>
</div>
</q-card-section>
<q-card-actions align="center">

View File

@@ -0,0 +1,95 @@
$heightBtn: 100%;
$grayshadow: #555;
.text-subtitle-carica {
font-size: 1rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .1rem .1rem .1rem $grayshadow;
}
.text-subtitle-certificato {
font-size: 0.75rem;
line-height: 1rem;
}
@media (max-width: 718px) {
// PER VERSIONE MOBILE
.text-subtitle-carica {
font-size: 1rem;
}
}
.op {
text-align: center !important;
font-size: 1rem;
font-weight: 400;
line-height: 1.75rem;
letter-spacing: .00937em;
text-shadow: .1rem .1rem .1rem $grayshadow;
&__cell {
font-size: 1rem;
color: red;
}
&__email {
font-size: 1rem;
color: #3b5998;
}
&__email a {
text-decoration: none;
}
&__facebook a {
font-size: 1rem;
text-decoration: none;
}
&__storia {
margin-top: 1rem;
margin-bottom: 1rem;
text-align: justify;
}
}
.myimg {
border-radius: 300px !important;
}
.q-img {
&__image {
border-radius: 300px !important;
}
}
.myflex {
display: flex;
flex: 1;
}
.mybase {
color: black;
font-size: 0.75rem;
font-weight: 400;
line-height: 1.25rem;
letter-spacing: 0.03333em;
&__teacher {
margin-top: 5px;
&-content {
color: darkblue;
}
&-content:hover {
}
}
}

View File

@@ -0,0 +1,49 @@
import { computed, defineComponent, ref, watch } from 'vue'
import { tools } from '@store/Modules/tools'
import { CMyAvatar } from '../CMyAvatar'
import MixinOperator from '../../mixins/mixin-operator'
import MixinUsers from '../../mixins/mixin-users'
import { useGlobalStore } from '@store/globalStore'
export default defineComponent({
name: 'CMyTeacher',
components: { CMyAvatar },
props: {
myop: {
type: Object,
required: true,
},
},
setup(props) {
const globalStore = useGlobalStore()
const showuserdetails = ref(false)
const autoplaydiscsaved = ref(0)
const tab = ref('one')
const mydir = ref('images/')
watch(() => showuserdetails, (value: any, old: any) => {
if (!showuserdetails.value) {
globalStore.autoplaydisc = autoplaydiscsaved.value
}
})
function executeclick(event: any) {
console.log('executeclick')
showuserdetails.value = true
autoplaydiscsaved.value = globalStore.autoplaydisc
globalStore.autoplaydisc = 0
}
return {
tab,
executeclick,
showuserdetails,
tools,
mydir,
}
},
})

View File

@@ -0,0 +1,63 @@
<template>
<div v-if="myop">
<div class="q-pa-md">
<div class="column justify-center" style="min-width: 300px">
<q-img
:src="mydir + myop.img" class="img_effetto_3d" :alt="`${myop.name} ${myop.surname}`">
</q-img>
<div class="q-ma-sm title_shadow">{{ myop.name }} {{ myop.surname ? myop.surname : '' }}</div>
<div v-if="myop.qualification" class="text-subtitle-carica text-trans">{{ myop.qualification }}</div>
<div v-if="myop.disciplines" class="text-subtitle-carica">{{ myop.disciplines }}</div>
<div v-if="myop.cell" class="op__cell">
<q-icon v-if="myop.cell" class="flex-icon" name="mobile_friendly"></q-icon>
<span v-if="myop.cell" class="q-mx-sm">{{ myop.cell }}</span>
</div>
<div class="row justify-center margin_buttons">
<q-btn
v-if="myop.email" fab-mini icon="fas fa-envelope"
color="blue-grey-6" type="a"
size="sm"
:href="tools.getemailto(myop.email)" target="__blank">
</q-btn>
<q-btn
v-if="tools.getHttpForWhatsapp(myop.cell)" fab-mini icon="fab fa-whatsapp"
color="green" type="a"
size="sm"
:href="tools.getHttpForWhatsapp(myop.cell)" target="__blank">
</q-btn>
<q-btn
v-if="tools.getHttpForTelegram(myop.usertelegram)" fab-mini icon="fab fa-telegram"
color="blue" type="a"
size="sm"
:href="tools.getHttpForTelegram(myop.usertelegram)" target="__blank">
</q-btn>
</div>
<div v-if="myop.email" class="op__email">
<q-icon class="flex-icon" name="contact_mail"></q-icon>&nbsp;
<a :href="tools.getemailto(myop.email)" target="_blank">{{ myop.email }}
</a>
</div>
<div class="op__facebook" v-if="myop.paginafb">
<a :href="myop.paginafb" target="_blank">
<i aria-hidden="true" class="q-icon fab fa-facebook-f icon_contact links"></i> Pagina
Facebook
</a>
</div>
<div v-if="myop.info" class="text-normal op__storia" v-html="myop.info"></div>
<br>
</div>
</div>
</div>
</template>
<script lang="ts" src="./COperators.ts">
</script>
<style lang="scss" scoped>
@import './COperators.scss';
</style>

View File

@@ -0,0 +1 @@
export {default as COperators} from './COperators.vue'

View File

@@ -334,7 +334,7 @@ body.mobile .landing:before {
.carousel_img_3 {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: cover !important;
background-size: contain !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}

View File

@@ -16,7 +16,7 @@
height="100%"
width="100%"
>
<q-carousel-slide name="first" img-src="images/cover.jpg">
<q-carousel-slide name="first" img-src="images/cover.jpg" class="carousel_img_3">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
@@ -87,7 +87,7 @@
</div>
</div>
</q-carousel-slide>
<q-carousel-slide name="second" img-src="images/hand_people.jpg">
<q-carousel-slide name="second" img-src="images/hand_people.jpg" class="carousel_img_3">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
@@ -337,6 +337,6 @@
<script lang="ts" src="./CPresentazione.ts">
</script>
<style lang="scss">
<style lang="scss" scoped>
@import './CPresentazione.scss';
</style>

View File

@@ -1,6 +1,6 @@
<template>
<div>
<div v-if="tools.isLogged() && tools.getUsername()" class="text-center">
<div v-if="need_Telegram && tools.isLogged() && tools.getUsername()" class="text-center">
<q-banner
rounded
class="bg-green text-white"
@@ -29,6 +29,7 @@
<q-btn class="q-ma-sm" color="positive" icon="fas fa-home" label="Se sei già Registrato CLICCA QUI" to="/"></q-btn>
<q-banner
v-if="need_Telegram"
rounded
class="bg-warning text-black"
style="text-align: center;"
@@ -44,7 +45,7 @@
</div>
</div>
<div v-if="visubuttBOT" class="q-gutter-md">
<div v-if="visubuttBOT && need_Telegram" class="q-gutter-md">
<q-banner
rounded
class="bg-green-5 text-white"

View File

@@ -94,11 +94,11 @@
:href="tools.getemailto(rec.email)" target="__blank">
</q-btn>
<q-btn
v-if="tools.getHttpForWhatsapp(rec.phone)" fab-mini
v-if="!!rec.wa && tools.getHttpForWhatsapp(rec.wa)" fab-mini
icon="fab fa-whatsapp"
color="green" type="a"
size="sm"
:href="tools.getHttpForWhatsapp(rec.phone)" target="__blank">
:href="tools.getHttpForWhatsapp(rec.wa)" target="__blank">
</q-btn>
<q-btn

View File

@@ -14,14 +14,22 @@
icon="fas fa-home"
/>
<q-route-tab
v-if="static_data.functionality.ENABLE_VIEW_GROUPS"
to="/groups"
icon="fas fa-users"
/>
<q-route-tab
v-if="static_data.functionality.ENABLE_VIEW_USERS"
to="/friends"
icon="fas fa-user-friends"
/>
<q-route-tab
v-if="static_data.functionality.ENABLE_VIEW_BOOKINGS"
to="/admin/eventlist"
icon="fas fa-calendar-plus"
/>
<q-route-tab
v-if="static_data.functionality.ENABLE_VIEW_PROFILE"
:to="`/my/`+getMyUsername()"
icon="person"
/>

View File

@@ -52,4 +52,6 @@ export * from './CMyRecGrpCard'
export * from './CPresentazione'
export * from './CAccomodation'
export * from './COpenStreetMap'
export * from './COperators'
export * from './CFundRaising'
// export * from './CPreloadImages'

View File

@@ -996,3 +996,39 @@ $heightBtn: 100%;
.accom_maxosp {
background-color: blue !important;
}
.img_effetto_3d{
border-radius: 10px !important;
height: 300px;
max-width:300px;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.6);
}
@font-face {
font-family: WalterTurncoat;
src: url(./fonts/walterturncoat.woff);
}
.title_shadow{
font-family: WalterTurncoat,handwriting, Arial, sans-serif;
font-size: 1.25rem;
color: #8300e9!important;
font-weight: 500;
text-shadow: .1rem .1rem .1rem $grayshadow;
}
.text-normal {
font-family: 'Open Sans', Arial, sans-serif;
font-size: 1rem;
color: #666;
line-height: 1.7em;
font-weight: 500;
-webkit-font-smoothing: antialiased;
}
.carousel_img {
//background-image: url(../../public/images/cibo_sano.jpg);
background-size: contain !important;
background-position: 50% center !important;
background-repeat: no-repeat !important;
}

Binary file not shown.

View File

@@ -1,7 +1,7 @@
const msg_website_it = {
ws: {
sitename: 'TerraDellaVisione',
siteshortname: 'TerraDellaVisione',
sitename: 'Terra Della Visione',
siteshortname: 'TDV',
},
products: {
quantity: 'Quantità',

View File

@@ -9,7 +9,7 @@ const functionality: IFunctionality = {
PWA: true,
SHOW_USER_MENU: true, // Cambiare con true
SHOW_PROFILE: true,
SHOW_REG_BUTTON: false,
SHOW_REG_BUTTON: true,
ENABLE_REGISTRATION: true, // Cambiare con true
SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: true,
@@ -20,8 +20,12 @@ const functionality: IFunctionality = {
BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true,
ENABLE_GROUPS: true,
ENABLE_GROUPS: false,
SHOW_COMPETENZE: false,
ENABLE_VIEW_GROUPS: false,
ENABLE_VIEW_USERS: false,
ENABLE_VIEW_PROFILE: false,
ENABLE_VIEW_BOOKINGS: true,
}
// const SHOW_PROJINTHEMENU = false
@@ -322,6 +326,34 @@ const routes_manager: IListRoutes[] = [
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
path: '/admin/operators',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.operators',
component: () => import('@/rootgen/admin/operators/operators.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
path: '/admin/disciplines',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.disciplines',
component: () => import('@/rootgen/admin/disciplines/disciplines.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
@@ -543,21 +575,10 @@ const baseroutes: IListRoutes[] = [
{
active: functionality.ENABLE_REGISTRATION,
order: 1000,
path: '/signup/:invited/:usernameteleg/:idteleg',
path: '/signup',
materialIcon: 'how_to_reg',
name: 'pages.SignUp',
component: () => import('@/views/login/signup/signup.vue'),
inmenu: false,
infooter: false,
separator: false
},
{
active: true,
order: 1001,
path: '/signup/:invited',
materialIcon: 'how_to_reg',
name: 'pages.SignUp2',
component: () => import('@/views/login/signup/signup.vue'),
component: () => import('@/views/login/signup_noteleg/signup_noteleg.vue'),
inmenu: false,
infooter: false,
separator: false
@@ -616,10 +637,20 @@ const baseroutes: IListRoutes[] = [
active: true,
path: '/separator',
name: 'separator',
order: 35,
order: 1010,
isseparator: true,
inmenu: true,
},
{
active: true,
order: 70,
path: '/chisiamo',
materialIcon: 'event',
name: 'pages.chisiamo',
component: () => import('@/rootgen/operators/operators.vue'),
inmenu: true,
infooter: true
},
{
active: true,
order: 80,
@@ -628,8 +659,8 @@ const baseroutes: IListRoutes[] = [
name: 'pages.calendarioeventi',
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
extraclass: 'isCalendar',
inmenu: false,
infooter: false
inmenu: true,
infooter: true
},
{
active: true,
@@ -661,6 +692,16 @@ const baseroutes: IListRoutes[] = [
inmenu: false,
infooter: false
},
{
active: true,
order: 130,
path: '/admin/eventlist',
materialIcon: 'fas fa-calendar-plus',
name: 'otherpages.admin.eventlist',
component: () => import('@/rootgen/admin/eventlist/eventlist.vue'),
inmenu: true,
infooter: true
},
]
export function firstimagehome() {

View File

@@ -16,6 +16,11 @@ export default function () {
return calendarStore.operators
}
function getOperatorsInHome() {
const calendarStore = useCalendarStore()
return calendarStore.operators.filter((rec: any) => rec.showInTeam)
}
function getOperatorByUsername(username: string) {
const calendarStore = useCalendarStore()
return calendarStore.getOperatorByUsername(username)
@@ -29,7 +34,7 @@ export default function () {
function getTeacherByUsername(username: string) {
const op = getOperatorByUsername(username)
if (!!op) {
return op.name + ' ' + op.surname
return op.name ? op.name : '' + ' ' + op.surname ? op.surname : ''
} else {
return ''
}
@@ -42,5 +47,6 @@ export default function () {
getOperatorByUsername,
getImgTeacherByUsername,
getTeacherByUsername,
getOperatorsInHome,
}
}

View File

@@ -495,6 +495,10 @@ export interface IFunctionality {
SHOW_NAMESURNAME?: boolean
ENABLE_GROUPS?: boolean
SHOW_COMPETENZE?: boolean
ENABLE_VIEW_GROUPS?: boolean
ENABLE_VIEW_USERS?: boolean
ENABLE_VIEW_PROFILE?: boolean
ENABLE_VIEW_BOOKINGS?: boolean
}
export interface IParLookup {
@@ -552,6 +556,7 @@ export interface IColGridTable {
action?: any
askaction?: string
foredit?: boolean
isInModif?: boolean
fieldtype?: number
fieldtype_real?: number
field_outtype?: number

View File

@@ -1,17 +1,5 @@
<template>
<div>
<CMyPage
imgbackground="images/calendario_eventi.jpg" :title="gettitle()" sizes="max-height: 110px;"
styleadd="bottom: -36px !important;">
<span>{{
setmeta({
title: gettitle(),
description: '',
keywords: '',
})
}}
</span>
<CEventsCalendar :mysingleevent="myevent" v-if="myevent">
@@ -55,7 +43,6 @@
</div>
</CMyPage>
</div>
</template>
<script lang="ts" src="./evento.ts">

View File

View File

@@ -0,0 +1,22 @@
import { useUserStore } from '@store/UserStore'
import { useI18n } from '@src/boot/i18n'
import {
defineComponent, ref, onBeforeUnmount, onMounted,
} from 'vue'
import { useRouter } from 'vue-router'
import { CFundRaising } from '@/components'
import { tools } from '@src/store/Modules/tools'
export default defineComponent({
name: 'FundRaising',
components: { CFundRaising },
setup() {
const { t } = useI18n();
return {
t,
tools,
}
},
})

View File

@@ -0,0 +1,9 @@
<template>
<CFundRaising></CFundRaising>
</template>
<script lang="ts" src="./fundraising.ts">
</script>
<style lang="scss" scoped>
@import './fundraising.scss';
</style>

View File

@@ -20,6 +20,7 @@ import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
import { shared_consts } from '@/common/shared_vuejs'
import { CPresentazione } from '@/components'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'mainview',
@@ -29,6 +30,8 @@ export default defineComponent({
const userStore = useUserStore()
const { getValDb } = MixinBase()
const { setmeta } = MixinMetaTags()
const { getRefLink } = MixinUsers()
return {
@@ -38,6 +41,7 @@ export default defineComponent({
userStore,
shared_consts,
globalStore,
setmeta,
}
},
})

View File

@@ -1,6 +1,15 @@
<template>
<q-page class="">
<span>{{
setmeta({
title: $t('ws.sitename'),
description: $t('ws.siteshortname'),
keywords: $t('ws.keywords'),
})
}}
</span>
<!--<CChartMap
title="Mappa"
subtitle="cartina..."

View File

View File

@@ -0,0 +1,26 @@
import { defineComponent, ref, onMounted } from 'vue'
import { CImgText } from '../../../components/CImgText/index'
import { CCard } from '@/components/CCard'
import { CMyPage } from '@/components/CMyPage'
import { CTitleBanner } from '@/components/CTitleBanner'
import { CGridTableRec } from '@/components/CGridTableRec'
import { colmypage } from '@src/store/Modules/fieldsTable'
import { fieldsTable } from '@store/Modules/fieldsTable'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'Disciplines',
components: { CImgText, CCard, CMyPage, CTitleBanner, CGridTableRec },
setup() {
const { setmeta } = MixinMetaTags()
return {
colmypage,
setmeta,
fieldsTable,
}
}
})

View File

@@ -0,0 +1,31 @@
<template>
<CMyPage title="Discipline" imgbackground="images/calendario_eventi.jpg" sizes="max-height: 120px">
<span>{{
setmeta({
title: 'disciplines',
description: '',
keywords: '',
})
}}
</span>
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<CTitleBanner title="Discipline"></CTitleBanner>
<CGridTableRec
prop_mytable="disciplines"
prop_mytitle="Lista Discipline"
:prop_mycolumns="fieldsTable.colDisciplines()"
prop_colkey="_id"
nodataLabel="Nessuna Disciplina"
noresultLabel="Il filtro selezionato non ha trovato nessun risultato">
</CGridTableRec>
</div>
</CMyPage>
</template>
<script lang="ts" src="./disciplines.ts">
</script>
<style lang="scss" scoped>
@import 'disciplines.scss';
</style>

View File

@@ -63,7 +63,7 @@ export default defineComponent({
let add = true
if (!showall) {
if (!showall()) {
add = calendarStore.getNumParticipants(myevent, showall(), tools.peopleWhere.participants) > 0
}
@@ -108,7 +108,7 @@ export default defineComponent({
let add = true
if (!showall) {
if (!showall()) {
add = calendarStore.getNumParticipants(myevent, showall(), tools.peopleWhere.participants) > 0
}
@@ -167,7 +167,7 @@ export default defineComponent({
isValidUsername,
gettitle,
change_rec,
$q,
showPrev,
}
}
})

View File

@@ -1,10 +1,10 @@
<template>
<CMyPage
title="Events" keywords="" description="" imgbackground="images/calendario_eventi.jpg"
:title="gettitle()" keywords="" description="" imgbackground="images/calendario_eventi.jpg"
sizes="max-height: 120px">
<div class="q-ma-sm q-pa-xs">
<div v-if="!showall" class="text-h6 bg-red text-white text-center q-pa-xs shadow-max">Lista delle tue
<div v-if="!showall()" class="text-h6 bg-red text-white text-center q-pa-xs shadow-max">Lista delle tue
prenotazioni agli Eventi:
</div>
@@ -20,17 +20,17 @@
<th>{{ $t('cal.data') }}</th>
<th>{{ $t('cal.event') }}</th>
<th v-if="!tools.isMobile()">{{ $t('cal.teachertitle') }}</th>
<th v-if="showall">
<th v-if="showall()">
<span v-if="!tools.isMobile()">{{ $t('cal.selnumpeople') }}</span>
<span v-else>{{ $t('cal.selnumpeople_short') }}</span>
</th>
<th v-if="showall">
<th v-if="showall()">
{{ $t('cal.selnumpeopleLunch') }}
</th>
<th v-if="showall">
<th v-if="showall()">
{{ $t('cal.selnumpeopleDinner') }}
</th>
<th v-if="showall">
<th v-if="showall()">
{{ $t('cal.selnumpeopleDinnerShared') }}
</th>
<th>{{ $t('cal.peoplebooked') }}</th>
@@ -51,25 +51,25 @@
<span v-if="isValidUsername(event.teacher4)"> - {{ getTeacherByUsername(event.teacher4) }}</span>
</div>
</td>
<td v-if="showall">
<td v-if="showall()">
<div class="text-center">{{
calendarStore.getNumParticipants(event, showall, tools.peopleWhere.participants)
}}
</div>
</td>
<td v-if="showall">
<td v-if="showall()">
<div class="text-center">{{
calendarStore.getNumParticipants(event, showall, tools.peopleWhere.lunch)
}}
</div>
</td>
<td v-if="showall">
<td v-if="showall()">
<div class="text-center">{{
calendarStore.getNumParticipants(event, showall, tools.peopleWhere.dinner)
}}
</div>
</td>
<td v-if="showall">
<td v-if="showall()">
<div class="text-center">{{
calendarStore.getNumParticipants(event, showall, tools.peopleWhere.dinnerShared)
}}

View File

View File

@@ -0,0 +1,26 @@
import { defineComponent, ref, onMounted } from 'vue'
import { CImgText } from '@/components/CImgText'
import { CCard } from '@/components/CCard'
import { CMyPage } from '@/components/CMyPage'
import { CTitleBanner } from '@/components/CTitleBanner'
import { CGridTableRec } from '@/components/CGridTableRec'
import { colmypage } from '@src/store/Modules/fieldsTable'
import { fieldsTable } from '@store/Modules/fieldsTable'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'Operators',
components: { CImgText, CCard, CMyPage, CTitleBanner, CGridTableRec },
setup() {
const { setmeta } = MixinMetaTags()
return {
colmypage,
setmeta,
fieldsTable,
}
}
})

View File

@@ -0,0 +1,31 @@
<template>
<CMyPage title="Operatori" imgbackground="images/calendario_eventi.jpg" sizes="max-height: 120px">
<span>{{
setmeta({
title: 'operators',
description: '',
keywords: '',
})
}}
</span>
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<CTitleBanner title="Operatori"></CTitleBanner>
<CGridTableRec
prop_mytable="operators"
prop_mytitle="Lista Operatori"
:prop_mycolumns="fieldsTable.colOperators()"
prop_colkey="_id"
nodataLabel="Nessun Operatore"
noresultLabel="Il filtro selezionato non ha trovato nessun risultato">
</CGridTableRec>
</div>
</CMyPage>
</template>
<script lang="ts" src="./operators.ts">
</script>
<style lang="scss" scoped>
@import 'operators.scss';
</style>

View File

View File

@@ -0,0 +1,22 @@
import { defineComponent, ref, onMounted } from 'vue'
import { CMyPage } from '@/components/CMyPage'
import { CTitleBanner } from '@/components/CTitleBanner'
import { COperators } from '@/components/COperators'
import { fieldsTable } from '@store/Modules/fieldsTable'
import MixinOperator from '../../mixins/mixin-operator'
export default defineComponent({
name: 'PageOperators',
components: { CMyPage, CTitleBanner, COperators },
setup() {
const { getOperatorsInHome } = MixinOperator()
return {
fieldsTable,
getOperatorsInHome,
}
}
})

View File

@@ -0,0 +1,20 @@
<template>
<CMyPage title="Operatori" imgbackground="images/calendario_eventi.jpg" sizes="max-height: 120px">
<div class="q-ma-xs q-gutter-xs q-pa-xs">
<q-card-section class="row justify-center">
<div
v-for="(myop, index) in getOperatorsInHome()" :key="index">
<COperators :myop="myop" />
</div>
</q-card-section>
</div>
</CMyPage>
</template>
<script lang="ts" src="./operators.ts">
</script>
<style lang="scss" scoped>
@import 'operators.scss';
</style>

View File

@@ -60,6 +60,8 @@ const msg_it = {
newsletter: 'Newsletter',
monete: 'Monete',
pages: 'Pagine',
operators: 'Operatori',
disciplines: 'Discipline',
media: 'Media',
gallery: 'Gallerie',
listaflotte: 'Flotte',
@@ -572,6 +574,8 @@ const msg_it = {
certifications: 'Certificazioni',
intro: 'Introduzione',
info: 'Biografia',
showInTeam: 'Mostra in Team',
arrDisciplines: 'Discipline',
webpage: 'Pagina Web',
days_working: 'Giorni Lavorativi',
facebook: 'Pagina Facebook',

View File

@@ -105,7 +105,7 @@ export const costanti = {
small: false,
},
{
visible: true,
visible: false,
strsingolo: 'Idea',
title: 'Tue&nbsp;Idee',
to: '/ideas',
@@ -118,16 +118,16 @@ export const costanti = {
},
{
visible: true,
title: 'Help',
to: '/help',
title: 'Help (Faq)',
to: '/faq',
icon: 'fas fa-users',
color: 'green-6',
hint: '',
disable: true,
disable: false,
small: true,
},
{
visible: true,
visible: false,
title: 'Social',
to: '/socialising',
icon: 'fas fa-users',
@@ -136,6 +136,16 @@ export const costanti = {
disable: true,
small: true,
},
{
visible: true,
title: 'Per sostienere il Progetto?',
to: '/fundraising',
icon: 'fas fa-hand-holding',
color: 'blue-6',
hint: '',
disable: false,
small: false,
},
{
visible: false,
title: 'Gruppi',

View File

@@ -68,6 +68,7 @@ function AddCol(params: IColGridTable) {
icon: (params.icon === undefined) ? '' : params.icon,
action: (params.action === undefined) ? '' : params.action,
foredit: (params.foredit === undefined) ? true : params.foredit,
isInModif: (params.isInModif === undefined) ? false : params.isInModif,
fieldtype: (params.fieldtype === undefined) ? costanti.FieldType.string : params.fieldtype,
fieldtype_real: (params.fieldtype_real === undefined) ? ((params.fieldtype === undefined) ? costanti.FieldType.string : params.fieldtype) : params.fieldtype_real,
field_outtype: (params.field_outtype === undefined) ? costanti.FieldType.string : params.field_outtype,
@@ -112,6 +113,8 @@ export const colgallery = [
label_trans: 'gallery.list',
fieldtype: costanti.FieldType.listimages,
jointable: '',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
isInModif: true,
}),
AddCol(DeleteRec),
AddCol(DuplicateRec),
@@ -1558,10 +1561,17 @@ const colTableGeneric = [
AddCol({ name: 'label', label_trans: 'proj.longdescr' }),
]
const colTableOperator = [
export const colTableOperator = [
AddCol({ name: 'username', label_trans: 'reg.username_short' }),
AddCol({ name: 'name', label_trans: 'reg.name' }),
AddCol({ name: 'surname', label_trans: 'reg.surname' }),
AddCol({ name: 'showInTeam', label_trans: 'op.showInTeam', fieldtype: costanti.FieldType.boolean }),
AddCol({
name: 'arrDisciplines',
label_trans: 'op.arrDisciplines',
fieldtype: costanti.FieldType.multiselect,
jointable: 'disciplines',
}),
AddCol({ name: 'email', label_trans: 'reg.email' }),
AddCol({ name: 'img', label_trans: 'event.img' }),
AddCol({ name: 'cell', label_trans: 'reg.cell' }),
@@ -2485,6 +2495,14 @@ export const fieldsTable = {
return colTableMovement
},
colOperators() {
return colTableOperator
},
colDisciplines() {
return coldisciplines
},
userlist() {
if (static_data.functionality.ENABLE_REG_AYNI) {
return colTableUsers
@@ -2582,34 +2600,6 @@ export const fieldsTable = {
colkey: '_id',
collabel: (rec: any) => `${rec.name} ${rec.surname}`,
},
{
value: 'navi',
label: 'Navi',
columns: colnavi,
colkey: '_id',
collabel: (rec: any) => `${rec.riga}.${rec.col}`,
},
{
value: 'flotte',
label: 'Flotte',
columns: colflotte,
colkey: '_id',
collabel: (rec: any) => `${rec.riga}.${rec.col_prima} ${rec.riga}.${rec.col_ultima}`,
},
{
value: 'navepersistente',
label: 'Navi Persistenti',
columns: colnavepersistente,
colkey: '_id',
collabel: (rec: any) => `${rec.riga}.${rec.col}`,
},
{
value: 'listaingressos',
label: 'Lista Ingresso',
columns: collistaingresso,
colkey: '_id',
collabel: 'ind_order',
},
{
value: 'graduatorias',
label: 'Graduatoria',
@@ -2927,7 +2917,7 @@ export const fieldsTable = {
},
{
value: 'friendsandme',
label: 'Amici',
label: 'Amici_and_me',
columns: colTableUsersGeneric,
colkey: 'username',
collabel: 'username',

View File

@@ -2953,14 +2953,18 @@ export const tools = {
},
getimgev(ev: IEvents) {
if (!!ev) {
if (!!ev.img_small)
return '' + ev.img_small
else if (!!ev.img)
return '' + ev.img
else
return ''
}
return ''
},
convertHTMLtoText(myhtml: string) {
let msg = myhtml
msg = msg.replace('&quot;', '"')

View File

@@ -210,9 +210,16 @@ export const useUserStore = defineStore('UserStore', {
// Check if is this User!
if (this.my.username === username) return this.my
let trovato = null
let trovato:any = null
if (this.usersList) trovato = this.usersList.find((item: any) => item.username === username)
if (trovato) {
if (trovato.surname === 'undefined')
trovato.surname = ''
if (trovato.name === 'undefined')
trovato.name = ''
}
return (trovato) || null
},
@@ -280,13 +287,13 @@ export const useUserStore = defineStore('UserStore', {
getNameSurnameByUserId(userId: string): string {
const user = this.getUserByUserId(userId)
if (user) return `${user.name} ${user.surname}`
if (user) return `${user.name} ` + !!user.surname ? user.surname : ''
return `(${userId})`
},
getNameSurnameByUsername(username: string): string {
const user = this.getUserByUsername(username)
if (user) return `${user.name} ${user.surname}`
let user = this.getUserByUsername(username)
if (user) return `${user.name} ` + !!user.surname ? user.surname : ''
return `(${username})`
},
@@ -294,10 +301,17 @@ export const useUserStore = defineStore('UserStore', {
// Check if is this User!
if (this.my._id === userId) return this.my
let trovato = null
let trovato:any = null
if (this.usersList) trovato = this.usersList.find((item: any) => item._id === userId)
if (trovato) {
if (trovato.surname === undefined)
trovato.surname = ''
if (trovato.name === undefined)
trovato.name = ''
}
return (trovato) || null
},

View File

@@ -750,8 +750,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
this.networkDataReceived = true
// console.log('******* checkUpdates RES :', res.data.cfgServer)
if (res.data.cfgServer) {
this.cfgServer = [...res.data.cfgServer]
if (res.data.CfgServer) {
this.cfgServer = [...res.data.CfgServer]
// console.log('res.data.cfgServer', res.data.cfgServer)
}

View File

@@ -80,6 +80,7 @@ export default defineComponent({
columns,
filter,
provaval,
globalStore,
}
},
})

View File

@@ -0,0 +1,12 @@
.signup {
width: 100%;
margin: 0 auto;
max-width: 450px;
}
.wrapper {
display: flex;
align-items: center;
justify-content: center;
}

View File

@@ -0,0 +1,36 @@
import { computed, defineComponent, ref, watch } from 'vue'
import { CSignUp } from '../../../components/CSignUp'
import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { useUserStore } from '@store/UserStore'
import { useRoute } from 'vue-router'
import { tools } from '@store/Modules/tools'
export default defineComponent({
name: 'SignUp',
components: { CSignUp },
props: {},
setup() {
const $route = useRoute()
const adult = ref(false)
const invited = computed(() => $route.params.invited)
// @ts-ignore
watch(() => invited, (newval, oldval) => {
console.log('$route.params.invited')
adult.value = !!$route.params.invited
})
function created() {
if (!tools.getCookie(tools.APORTADOR_SOLIDARIO, '')) {
// @ts-ignore
tools.setCookie(tools.APORTADOR_SOLIDARIO, $route.params.invited ? $route.params.invited : '')
}
}
created()
return {}
},
})

View File

@@ -0,0 +1,14 @@
<template>
<q-page padding class="signup">
<CSignUp :showcell="false" :showaportador="false" :show_namesurname="true" :need_Telegram="false">
</CSignUp>
</q-page>
</template>
<script lang="ts" src="./signup_noteleg.ts">
</script>
<style lang="scss" scoped>
@import './signup_noteleg.scss';
</style>