Site Configuration by Server Params (confsites and confpages)

This commit is contained in:
Surya Paolo
2022-11-28 14:00:15 +01:00
parent fab0dbbb72
commit 58dc1dfdcc
76 changed files with 2504 additions and 5004 deletions

View File

@@ -868,17 +868,18 @@ const baseroutes: IListRoutes[] = [
]
export function firstimagehome() {
let img = 'statics/images/background.jpg'
return img
}
const arrLangUsed = [
'it',
// 'enUs',
// 'es',
]
export function firstimagehome() {
let img = 'statics/images/background.jpg'
return img
}
const lang_available: ILang[] = [
{

View File

@@ -1,28 +0,0 @@
APP_VERSION="0.5.27"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="12"
DIRECTORY_LOCAL="newfreeplanet"
DIRECTORY_SERVER="freeplanet_serverside"
SERVERDIR_WEBSITE=""
SERVERPW_WEBSITE=""
APP_URL="http://localhost"
URL_FACEBOOK="https://www.facebook.com/"
PROVA_PAOLO="PROVA ENV FUNZIONA!"
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="http://192.168.0.200:3000"
LOGO_REG='logo-full.png'
TEST_NAME="Paolo"
TEST_SURNAME="Arena"
TEST_EMAIL="perseo@freeplanet.app"
TEST_USERNAME="paoloar773"
TEST_PASSWORD="passpao1fr@1A"
TEST_APORTADOR=""
PUBLICKEY_PUSH='BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8'
IN_CONSTRUCTION="0"
DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
ISTEST=1

File diff suppressed because one or more lines are too long

View File

@@ -1,390 +0,0 @@
const msg_website = {
it: {
pages: {
home: 'Principale',
SignUp: 'Registrazione',
SignIn: 'Login',
vreg: 'Verifica Reg',
Test: 'Test',
Category: 'Categorie',
Todo: 'Todo',
personal: 'Personale',
bacheca: 'Bacheca',
shopping: 'Spesa',
Admin: 'Admin',
Test1: 'Test1',
Test2: 'Test2',
projects: 'Progetti',
favproj: 'Favoriti',
},
projall: 'Tutti',
projectsShared: 'Miei Condivisi',
myprojects: 'Miei Personali',
msg: {
hello: 'Buongiorno',
myAppName: 'FreePlanet',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito e senza Pubblicità',
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à',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Riscopri come il valore della <strong>Condivisione</strong> e della <strong>Cooperazione</strong>, possa aiutarci a ritrovare il profondo '
+ 'senso della <strong>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: 'Free 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: 'Free Talent',
descr: 'Condividi i tuoi <strong>Talenti</strong> e <strong>Abilità</strong>, '
+ 'al posto del denaro guadagnagnerai <strong>Tempo</strong>.<br> '
+ '<strong>"1 ora"</strong> diventa moneta di scambio, uguale per tutti.<br>'
+ 'Potrai utilizzare questi tuoi <strong>"Crediti Tempo"</strong> per soddisfare le tue necessità, cercando nelle <strong>Competenze Disponibili</strong>.<br>'
+ 'Nel Dare e Ricevere, si creeranno così legami di <strong>Amicizia, Solidarietà, Cooperazione e Divertimento</strong><br><br>'
+ 'Questo progetto vuole diffondere, ora in maniera informatizzata, questa realtà che gia esiste da tanti anni, e viene chiamata <strong>"Banca del Tempo"</strong>. '
+ 'Le <strong>segreterie</strong> sparse in tutto il mondo, serviranno a dare maggiore <strong>affidabilità</strong> e <strong>fiducia</strong> negli scambi di talenti tra persone sconosciute. '
+ 'Creeremo così una <strong>rete di fiducia</strong> nel vicinato, come giá viene praticato in numerosi <strong>Ecovillaggi</strong> e Comunità del mondo.',
},
freegas: {
title: 'Free G.A.S.',
descr: 'Ti piacerebbe utilizzare una App che ti permetta facilmente di acquistare Prodotti Locali direttamente dal <strong>Produttore</strong>?<br>'
+ 'Con i <strong>Gruppi di Acquisto Solidale</strong> si evitano intermediazioni inutili, ottenendo parecchi benefici tra cui:<br>'
+ '<ul class="mylist" style="padding-left: 20px;"><li><strong>Qualitá Superiore</strong> del prodotto</li>'
+ '<li>Le <strong>Recensioni</strong> dei consumatori favoriranno i Produttori con Sani Intenti</li>'
+ '<li>Possiblità d\'interagire con il Produttore</li>'
+ '<li>Apertura alle Relazioni tra persone, condividendo <strong>Ricette</strong> e <strong>Consigli</strong> preziosi</li>'
+ '<li><strong>Risparmio</strong> di soldi (prezzi all\'Ingrosso)</li>'
+ '<li>Valorizzare il <strong>Territorio</strong> e l\'Economia <strong>Locale</strong></li>'
+ '<li>Condizioni <strong>Eque</strong> per i Lavoratori</li>'
+ '<li>Ridotto <strong>Impatto Ambientale</strong></ul>',
},
freeliving: {
title: 'Free Co-Living',
descr: 'Unire più realtà, condividendo l\'esperienza di abitare insieme, per un periodo definito:<br>'
+ '1) C\'è chi <strong>Vive solo</strong> ed ha una casa.<br>'
+ '2) Chi ha bisogno di un <strong>alloggio</strong> temporaneo.<br><br>'
+ 'Oggi sempre più persone <strong>abitano da sole</strong> e vorrebbero continuare a vivere nella propria abitazione.<br>'
+ 'Altre persone invece hanno bisogno di una <strong>stanza</strong>, per scelta o per necessita, ed in cambio sono disponibili a '
+ '<strong>contribuire alle spese</strong> per le utenze domestiche o magari <strong>aiutare</strong> la persona a <strong>fare la spesa</strong>, cucinare, <strong>pulire casa</strong> oppure offrendogli semplicemente <strong>compagnia</strong>.<br><br>'
+ 'Tramite questo strumento, le persone potranno trovarsi, mettersi in contatto e decidere in che forma <strong>co-abitare</strong> e per quanto tempo. Le <strong>recensioni</strong> rilasciate ed il <strong>dettaglio</strong> dei profili utenti, '
+ 'aiuterà nella scelta della persona più in <strong>sintonia</strong>.',
},
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>Chi gestisce una <strong>Banca del Tempo</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>Condividendolo</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>Rispondendo ai <strong>Sondaggi Popolari</strong> e lasciando <strong>Feedback</strong></li>'
+ '<li>Tramite una <strong>donazione</strong> (<strong>anche 1€</strong> ) per le spese.<br>'
+ '</ul>'
+ 'Vedo 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</strong> con gli altri.<br>',
},
multiplatform: {
title: 'Multi-piattaforma',
descr: 'E\' compatibile con Google Chrome, Firefox, Safari, iOS, Android e PC. L\'Applicazione s\'installa facilmente, senza passare dallo store. '
+ 'basta condividere il nome del sito <strong>www.freeplanet.app</strong>.<br>'
+ 'Dopo la registrazione chiederà di aggiungerlo alla lista delle applicazioni e sullo sfondo',
},
free: {
title: 'Gratuita, Open Source e Niente Pubblicità',
descr: 'Questa App <strong>non è in vendita</strong>, non ha scopi commerciali, <strong>non ha prezzo</strong> ed appartiene al <strong>Popolo del Nuovo Mondo</strong>.<br>Chiunque potrá utilizzarla e beneficiarne.<br>A me il compito di gestirla e proteggerla. '
+ 'Verranno accettate solo donazioni Libere di privati ed Associazioni no-profit, in linea con i Principi, che serviranno per coprire le spese.<br>'
+ '<strong>Grazie a Tutti per il sostegno</strong>. ',
},
contacts: 'Contatti',
},
},
es: {
pages: {
home: 'Principal',
SignUp: 'Nueva Cuenta',
SignIn: 'Entrar',
vreg: 'Verifica Reg',
Test: 'Test',
Category: 'Categorías',
Todo: 'Tareas',
personal: 'Personal',
work: 'Trabajo',
shopping: 'Compras',
Admin: 'Administración',
Test1: 'Test1',
Test2: 'Test2',
projects: 'Proyectos',
},
favproj: 'Favoritos',
projall: 'Todos',
projectsShared: 'Mis Compartidos',
myprojects: 'Mis Personales',
msg: {
hello: 'Buenos Días',
myAppName: 'FreePlanet',
myAppDescription: 'El primer Verdadero Social Libre, justo y Solidario Donde vive Conciencia y Ayuda comunitaria, Gratis y sin publicidad',
underconstruction: 'App en construcción...',
myDescriz: '',
sottoTitoloApp: 'El primer Verdadero Social',
sottoTitoloApp2: 'Libre, justo y Solidario',
sottoTitoloApp3: 'Donde vive Conciencia y Ayuda comunitaria',
sottoTitoloApp4: 'Gratis y sin publicidad',
},
homepage: {
descrapp_title1: 'Unidos para evolucionar y experimentar',
descrapp_pag1: 'Redescubra cómo el valor de <strong>Compartir</strong> y <strong>Cooperación</strong> puede ayudarnos a encontrar el profundo '
+ 'sentido de la <strong>Vida</strong>, perdido en esta sociedad consumista, y mostrando esos <strong>Principios Naturales Saludables</strong> y la <strong>Hermandad Humana</strong>'
+ 'que toda la población antigua conocía bien.',
descrapp_pag2: 'Ha llegado el momento de utilizar las nuevas herramientas <strong>tecnológicas</strong> en nuestro <strong>favor</strong>, para <strong>liberarnos</strong> '
+ 'tan lentamente desde la <strong>esclavitud</strong> de <strong>"Trabaja para generar dinero"</strong> y transformando nuestra <strong>Capacidad</strong> en'
+ '<strong>Recursos humanos</strong> para poder apoyar y vivir en <strong>Armonia</strong> con otros.',
freesocial: {
title: 'Free Social',
descr: 'Una comunidad organizada por <strong>Categorías</strong>, donde puedes unirte a <strong>Grupos temáticos</strong>, '
+ 'Compartir <strong>experiencias</strong> y combinar habilidades para organizar y apoyar <strong>proyectos innovadores</strong> para la gente.<br><br>'
+ 'Los desarrollos <strong>éticos</strong> como <strong>:<br>Auto-producción</strong>, <strong>Sostenibilidad</strong>, '
+ 'la Buena <strong>Salud natural</strong> y <strong>Respeto por el Medio Ambiente</strong> y para todos los <strong>Seres vivos</strong> de este'
+ '<strong>Planeta</strong>. Cualquiera puede expresar su <strong>consentimiento o disidencia</strong> participando en <strong>Encuestas Interactivas</strong> '
+ 'y llevar a cabo juntos los <strong>Cambios</strong> necesarios para nuestra sociedad.',
},
freetalent: {
title: 'Free Talent',
descr: 'Comparte tus <strong>Talentos</strong> y <strong>Habilidades</strong>, '
+ 'en lugar de dinero, ganarás <strong>Tiempo</strong>. <br>'
+ '<strong>"1 hora"</strong> se convierte en una moneda de intercambio, igual para todos. <br>'
+ 'Puedes usar estos <strong>"Créditos de tiempo"</strong> para satisfacer tus necesidades, buscando en <strong>Habilidades disponibles</strong>. <br> '
+ 'En Dar y Recibir, crearemos así vínculos de <strong>Amistad, Solidaridad, Cooperación y Diversión</strong>. <br> <br>'
+ 'Este proyecto apunta a difundir esta realidad, que ya existe desde hace muchos años y se llama <strong>"Banco de tiempo"</strong>. '
+ 'Las <strong>secretarías</strong> dispersas por todo el mundo, servirán para dar mayor <strong>fiabilidad</strong> y <strong>confianza</strong> en el intercambio de talentos entre personas desconocidas. '
+ 'Así crearemos una <strong>red de confianza</strong> en el vecindario, como ya se practica en numerosos <strong>Ecoaldeas</strong> y en la Comunidades del mundo.',
},
freegas: {
title: 'Free G.A.S. (G.C.S.)',
descr: '¿Le gustaría usar una aplicación que le permita comprar productos locales directamente desde el <strong>Productor</strong>? <br> '
+ 'Con <strong>Grupos de Compra Solidarios</strong> evitamos intermediarios innecesarios, obteniendo muchos beneficios, incluyendo: <br>'
+ '<ul class = "mylist" style = "padding-left: 20px;"> <li> <strong>Superior Quality</strong> del producto </li>'
+ '<li> Opiniones <strong>de consumidores</strong> favorecerá a los productores con intenciones saludables </li>'
+ '<li> Posibilidad de interactuar con el Productor </li>'
+ '<li> Abierto a relaciones entre personas, compartiendo <strong>Recetas</strong> y <strong>Consejos</strong> preciosos </li>'
+ '<li> <strong>Ahorros</strong> de dinero (precios al por mayor) </li>'
+ '<li> Mejorando el <strong>Territorio</strong> y la Economía <strong>Local</strong> </li>'
+ '<li> Condiciones <strong>Justa</strong> para Trabajadores </li>'
+ '<li> Reducido <strong>Impacto Ambiental</strong> </ul>',
},
freeliving: {
title: 'Free Co-Living',
descr: 'Para unir más realidad, compartiendo la experiencia de vivir juntos, por un período definido: <br> '
+ '1) Hay quien <strong>vive solo</strong> y tiene un hogar. <br>'
+ '2) Quién necesita un alojamiento <strong>temporal</strong>. <br><br>'
+ 'Hoy en día, más y más personas <strong>viven solas</strong> y les gustaría seguir viviendo en sus propios hogares. <br>'
+ 'Otras personas necesitan una <strong>Habitación</strong>, por elección o por necesidad, y a cambio están disponibles en'
+ '<strong>contribuir a los gastos</strong> para los billetes de casa o tal vez <strong>ayuda</strong> a la persona mayor para <strong>ir de compras</strong>, cocinar, <strong>limpiar casa</strong> o simplemente ofreciéndole <strong>compañía</strong>. <br><br> '
+ 'A través de esta herramienta, las personas pueden ponerse en contacto y decidir en qué forma <strong>co-habitar</strong>. Los <strong>comentarios</strong> publicados y el <strong>detalle</strong> de los perfiles de usuario, '
+ 'ayudará a elegir a la persona más en <strong>armonía</strong>.',
},
freecollabora: {
title: '¿Quién puede colaborar?',
descr: 'Todos aquellos que están en línea con <strong>Principios éticos</strong> y la investigación de <strong>Bienestar Global del Planeta</strong> <br> '
+ 'Por eso son bienvenidos:'
+ '<ul class = "mylist" style = "padding-left: 20px;">'
+ '<li> <strong>Asociaciones sin ánimo de lucro, Ecoaldeas, Comunidades</strong> </li>'
+ '<li> Grupos que desean promover <strong>Proyectos sociales innovadores</strong> para <strong>Feliz Decrecimiento</strong> </li>'
+ '<li> Quién administra un <strong>Grupo de Compra Solidario (G.C.S.)</strong> </li>'
+ '<li><strong>Productores locales Éticos</strong></li>'
+ '<li> Quién administra un <strong>Banco de Tiempo</strong> </li>'
+ '<li> <strong>Cualquier persona que quiera participar</strong>, en la forma que considere más apropiada. </li>'
+ '</ul>',
},
freesostieni: {
title: '¿Cómo apoyar el proyecto?',
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li> <strong>Compartiéndolo</strong> a todos aquellos que quieran unirse en el crecimiento y desarrollo de una Nueva Era </li> '
+ '<li> Respondiendo a <strong>Encuestas populares</strong> y dejando <strong>Comentarios</strong> </li>'
+ '<li> A través de una <strong>donación</strong> (<strong>incluso € 1</strong>) para los gastos. <br>'
+ '</ul>'
+ '<br>Veo un <strong>futuro</strong> en el que ya no usarás dinero. Donde las personas <strong>se ayudarán unos a otros</strong> y no necesiten "poseer" cosas, pero <strong>compartirán</strong> con otros. <br> ',
},
multiplatform: {
title: 'Multi-plataforma',
descr: 'Compatible con Google Chrome, Firefox, Safari, iOS, Android y PC. La aplicación se instala fácilmente, sin pasar por el store. '
+ 'para compartirlo, necesita solo el nombre del sitio web: <strong>www.freeplanet.app</strong>.<br>'
+ 'Después del registro, le pedirá que lo agregue a la lista de aplicaciones y en la pantalla.',
},
free: {
title: 'Libre, Código Abierto y Sin Publicidad',
descr: 'Esta aplicación <strong>no está a la venta</strong>, no tiene un propósito comercial, <strong>no tiene precio</strong> y pertenece a <strong>la Gente del Nuevo Mundo</strong>.<br>'
+ 'Cualquiera puede usarla y beneficiarse.<br> A mí la tarea de gestionarlo y protegerlo. '
+ 'Solo se aceptarán donaciones de particulares y asociaciones sin änimo de lucro, en línea con los Principios, que se utilizarán para cubrir los gastos. <br>'
+ '<strong>Gracias a todos por el apoyo</strong>. ',
},
contacts: 'Contactos',
},
},
enUs: {
pages: {
home: 'Dashboard',
SignUp: 'SignUp',
SignIn: 'SignIn',
vreg: 'Verify Reg',
Test: 'Test',
Category: 'Category',
Todo: 'Todo',
personal: 'Personal',
work: 'Work',
shopping: 'Shopping',
Admin: 'Admin',
Test1: 'Test1',
Test2: 'Test2',
projects: 'Projects',
},
favproj: 'Favorite',
projall: 'All',
projectsShared: 'My Shared',
myprojects: 'My Personals',
msg: {
hello: 'Hello!',
myAppName: 'FreePlanet',
myAppDescription: 'The first Real Social Free, Fair and Equitable Where the conscience and community help live. Free and without advertising',
underconstruction: 'App in construction...',
myDescriz: '',
sottoTitoloApp: 'The first Real Social',
sottoTitoloApp2: 'Free, Fair and Equitable',
sottoTitoloApp3: 'Where the conscience and community help live',
sottoTitoloApp4: 'Free and without advertising',
},
homepage: {
descrapp_title1: 'Together to Evolve and Experiment',
descrapp_pag1: 'Rediscover how the value of <strong>Sharing</strong> and <strong>Cooperation</strong>, can help us find the deep meaning of'
+ '<strong>Life</strong>, lost in this consumer society, and showing those <strong>Healthy Natural Principles</strong> and Human <strong>Brotherhood</strong>'
+ 'that entire ancient populations knew well.',
descrapp_pag2: 'The time has come to use the new <strong>Technological</strong> tools in our <strong>favor</strong>, to <strong>Free ourselves</strong> '
+ 'so slowly from the <strong>slavery</strong> of the <strong>"Work to generate Money"</strong> and transforming our <strong>Capacity</strong> into'
+ '<strong>Human Resources</strong> to be able to support and live in <strong>Harmony</strong> with others.',
freesocial: {
title: 'Free Social',
descr: 'A Community organized by <strong>Categories</strong>, where you can join <strong>Thematic Groups</strong>, '
+ 'Share <strong>Experiences</strong> and combine Skills to organize and support <strong>Innovative Projects</strong> for the People.<br><br>'
+ '<strong>Ethical</strong> developments such as <strong>Auto-Production</strong>, <strong>Sustainability</strong>, '
+ 'Good <strong>Natural Health</strong> and <strong>Respect for the Environment</strong> and for all <strong>Living Beings</strong> of this'
+ '<strong>Planet</strong>. Anyone can express their <strong>Consent or Dissent</strong> by participating in <strong>Interactive Surveys</strong> '
+ 'and carry out together the <strong>Changes</strong> needed for our society.',
},
freetalent: {
title: 'Free Talent',
descr: 'Share your <strong>Talents</strong> and <strong>Skills</strong>, '
+ 'instead of money, you\'ll earn <strong>Time</strong>. <br>'
+ '<strong>"1 hour"</strong> becomes a currency of exchange, equal for all. <br>'
+ 'You can use these <strong>"Time Credits"</strong> to meet your needs, looking in <strong>Available Skills</strong>. <br>'
+ 'In Giving and Receiving, we will thus create bonds of <strong>Friendship, Solidarity, Cooperation and Enjoyment</strong> <br> <br>'
+ 'This project aims to spread this reality, which already exists for many years and is called <strong>"Time Bank"</strong>. '
+ 'The <strong>secretariats</strong> in all over the world, will serve an extra to give greater <strong>reliability</strong> and <strong>trust</strong> in the exchange of talents between unknown people. '
+ 'We will thus create a <strong>trust network</strong> in the neighborhood, as is already practiced in numerous <strong>Ecovillages</strong> and Community of the world. ',
},
freegas: {
title: 'Free G.A.S.',
descr: 'Would you like to use an App that allows you to easily Buy Local Products directly from <strong>Manufacturer</strong>? <br> '
+ 'With <strong>Solidarity Purchase Groups</strong> (in Italian: "Gruppo di Aacquisto Solidale") we avoid unnecessary intermediaries, obtaining many benefits including: <br>'
+ '<ul class="mylist" style="padding-left: 20px;"> <li> <strong>Superior Quality</strong> of the product </li>'
+ '<li> Consumer <strong>Reviews</strong> will favor Producers with Healthy Intents </li>'
+ '<li> Possibility to interact with the Producer </li>'
+ '<li> Open to Relations between people, sharing <strong>Recipes</strong> and precious <strong>Tips</strong> </li>'
+ '<li> <strong>Savings</strong> money (wholesale prices) </li>'
+ '<li> Enhancing the <strong>Territory</strong> and the <strong>Local Economy</strong> </li>'
+ '<li> <strong>Fair Conditions</strong> for Workers </li>'
+ '<li> Reduced <strong>Environmental Impact</strong> </ul>',
},
freeliving: {
title: 'Free Co-Living',
descr: 'Join more reality, sharing the experience of living together, for a defined period: <br> '
+ '1) Someone <strong>Lives alone</strong> and has a house. <br>'
+ '2) Who needs a temporary <strong> accommodation </strong>. <br><br>'
+ 'Today more and more people <strong> live alone </strong> and would like to continue living in their own house. <br>'
+ 'Other people instead need a <strong>room</strong>, by choice or by necessity, and in return they are available to'
+ '<strong>contribute to expenses</strong> for households or maybe <strong>help</strong> to <strong>go shopping</strong>, cooking, <strong>cleaning house</strong> or simply offering him <strong>companionship</strong>. <br> '
+ 'Through this tool, people can get in touch and decide in which way <strong>co-living</strong>. The <strong>reviews</strong> released and the <strong>detail</strong> of user profiles, '
+ 'will help in <strong>choosing</strong> the person more in <strong>tune</strong>.',
},
freecollabora: {
title: 'Who can collaborate?',
descr: 'All those who are in line with <strong>Ethical Principles</strong> and research of <strong>Global Wellness of the Planet</strong> <br> '
+ 'Therefore they are welcome:'
+ '<ul class = "mylist" style = "padding-left: 20px;">'
+ '<li> <strong>Non-profit associations, Ecovillages, Communities</strong> </li>'
+ '<li> Groups that want to promote <strong>Innovative Social Projects</strong> for <strong>Happy Degrowth</strong> </li>'
+ '<li> Who manages a <strong>Solidarity Purchase Group</strong> </li>'
+ '<li><strong>Local Ethical Producers</strong></li>'
+ '<li> Who manages a <strong>Time Bank</strong> </li>'
+ '<li> <strong>Anyone who wants to participate</strong>, in the form it considers most appropriate. </li>'
+ '</ul>',
},
freesostieni: {
title: 'How to support the project?',
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li> <strong>Sharing it</strong> to all those who want to join together in the growth and development of a New Era </li> '
+ '<li> Answering to <strong>Popular Polls</strong> and leaving <strong>Feedback</strong> </li>'
+ '<li> Through a <strong>donation</strong> (<strong>even $ 1</strong>) for expenses. <br>'
+ '</ul><br>'
+ 'I see a <strong>future</strong> where you will no longer use money. Where people <strong>will help each other</strong> and won\'t need to "own" things, but <strong>will share</strong> with others. <br> ',
},
multiplatform: {
title: 'Multi-platform',
descr: 'It is compatible with Google Chrome, Firefox, Safari, iOS, Android and PC. The Application is easily installed, without going through the store. '
+ 'just share the nametranslate of this site <strong>www.freeplanet.app</strong>.<br>'
+ 'After registration it will ask to be added to the application list and in the screen',
},
free: {
title: 'Free, Open Source and No Advertising',
descr: 'This App <strong>is not for sale</strong>, has no commercial purpose, <strong>is priceless</strong> and belongs to the <strong>New World People</strong>.'
+ '<br>Anyone can use it and benefit from it.<br>To me the task of managing it and protecting it. '
+ 'Only donations from private individuals and non-profit associations will be accepted, in line with the Principles, which will be used to cover the expenses. <br>'
+ '<strong>Thanks all for the support</strong>. ',
},
contacts: 'Contacts',
},
},
fr: {
pages: {
},
msg: {
},
},
de: {
pages: {
},
msg: {
},
},
}
export default msg_website;

View File

@@ -1,85 +0,0 @@
const msg_website_de = {
ws: {
sitename: 'AYNI',
siteshortname: 'Ayni',
botname: 'AYNI BOT',
},
pages: {
home: 'Home',
profile: 'Profilo',
payment: 'Pagamenti',
regok: 'Registrazione Confermata',
presentazione: 'Presentazione',
presentazione2: 'Presentazione',
invita: 'Invita Persone',
SignUp: 'Nuova Registrazione',
SignUp_alreadylista: 'Registrazione per quelli che erano già nella lista di Notevole (del 2019) !',
SignUp2: 'Registrazione',
SignIn: 'Login',
status: 'Statistiche',
nextzoom: 'Conferenze',
requestresetpwd: 'Richiesta Reset Password',
vreg: 'Verifica Reg',
dashboard: 'Lavagna',
statoattuale: 'Stato Attuale',
posizione_in_programmazione: 'Lista d\'Imbarco',
posizione_in_nave: 'Lista Navi',
nave: 'Nave',
testimonial: 'Testimonianze',
Test: 'Test',
Category: 'Categorie',
Admin: 'Admin',
extralist: 'Lista Extra',
Test1: 'Test1',
Test2: 'Test2',
chisiamo: 'Chi Siamo',
linkamici: 'Link Amici',
dovesiamo: 'Dove Siamo',
evento: 'Evento',
eventodef: 'Evento:',
prova: 'prova',
dbop: 'Operazioni',
statusreg: {
reg: 'Partecipanti',
passeggeri: 'Passeggeri Navi',
giainlista: 'Gia in Lista',
newreg: 'Ultime Registrazioni:',
nationality: 'Nazionalità',
verified: 'Verificata',
nonverified: 'Non Verificata',
req7: 'Con 5 passi entri nella lista d\'Imbarco',
req9: 'Con 7 passi aiuti {sitename} a Crescere!',
req: 'Passi',
people: 'Inv.',
peoplelegend: 'Numero d\'Invitati',
},
},
msg: {
myAppDescription: '',
keywords_base: '',
myDescriz: '',
sottoTitoloApp: '',
sottoTitoloApp2: '',
sottoTitoloApp3: '',
sottoTitoloApp4: '',
},
homepage: {
nostra_missione: 'Nostra Missione',
associazione: '',
tit_come_associarsi: 'Come Associarsi',
testo_come_associarsi: '',
titlecontatti: 'CONTATTI',
},
text: {
videotitle: 'VIDEO',
how: 'COME FUNZIONA',
what: 'COSA TI SERVE',
step: 'PASSI DA COMPIERE',
testimonial: 'TESTIMONIANZE',
faq: 'DOMANDE FREQUENTI (FAQ)',
advise: 'SUGGERIMENTI',
download: 'MATERIALE DISPONIBILE',
},
};
export default msg_website_de;

View File

@@ -1,73 +0,0 @@
const msg_website_enUs = {
ws: {
sitename: 'Comunità Nuovo Mondo',
siteshortname: 'CNM',
botname: 'CNM BOT',
},
pages: {
home: 'Home',
profile: 'Profile',
payment: 'Payments',
regok: 'Registration Confirmed',
presentazione: 'Presentation',
presentazione2: 'Presentation',
invita: 'Invite People',
SignUp: 'Registration',
SignUp_alreadylista: 'Registration for those who are already in the List!',
SignUp2: 'Registration',
SignIn: 'Login',
status: 'Current state',
nextzoom: 'Conferences',
requestresetpwd: 'Password Reset Request',
vreg: 'Check Registration',
dashboard: 'Dashboard',
statoattuale: 'Current Status',
posizione_in_programmazione: 'Boarding List',
posizione_in_nave: 'Ships List',
nave: 'Ship',
testimonial: 'Reviews',
Test: 'Test',
Category: 'Categorie',
Admin: 'Admin',
Test1: 'Test1',
Test2: 'Test2',
statusreg: {
reg: 'Participants',
passeggeri: 'Passengers Ships',
giainlista: 'Already in the List',
newreg: 'New registrations:',
nationality: 'Nationality',
verified: 'Verified',
nonverified: 'Not Verified',
req7: 'With 5 steps you enter the boarding list.',
req9: 'With 7 steps help {sitename} to grow!',
req: 'Steps',
people: 'Gue.',
peoplelegend: 'Number of guests',
},
},
msg: {
myAppDescription: '',
keywords_base: '',
myDescriz: '',
sottoTitoloApp: '..',
sottoTitoloApp2: '..',
sottoTitoloApp3: '..',
sottoTitoloApp4: '',
},
homepage: {
titlecontatti: 'CONTACTS',
},
text: {
how: 'HOW TO WORK',
what: 'WHAT YOU NEED',
step: 'STEPS TO DO',
videotitle: 'VIDEO',
testimonial: 'REVIEWS',
faq: 'FREQUENTLY ASKED QUESTIONS (FAQ)',
advise: 'ADVISE',
download: 'AVAILABLE DOCUMENTS',
},
};
export default msg_website_enUs;

View File

@@ -1,77 +0,0 @@
const msg_website_es = {
ws: {
sitename: 'AYNI',
siteshortname: 'Ayni',
botname: 'AYNI BOT',
},
pages: {
home: 'Home',
profile: 'Perfil',
payment: 'Paiements',
regok: 'Registro confirmado',
presentazione: 'Presentación',
presentazione2: 'Presentación',
invita: 'Invitar a la gente',
SignUp: 'Registro',
SignUp_alreadylista: 'Inscripción para los que ya están en la Lista!',
SignUp2: 'Registro',
SignIn: 'Login',
status: 'Estadísticas',
nextzoom: 'Conferencias',
requestresetpwd: 'Solicitud de restablecimiento de contraseña',
vreg: 'Verifica Reg',
dashboard: 'Tablero',
statoattuale: 'Estado Actual',
posizione_in_programmazione: 'Lista de embarque',
posizione_in_nave: 'Lista de Naves',
nave: 'Nave',
testimonial: 'Opiniones',
Test: 'Test',
chisiamo: 'Chi Siamo',
linkamici: 'Link Amici',
dovesiamo: 'Dove Siamo',
calendarioeventi: 'Calendario Eventi',
Category: 'Categorie',
Admin: 'Admin',
Test1: 'Test1',
Test2: 'Test2',
statusreg: {
reg: 'Participantes',
passeggeri: 'Barcos de pasajeros',
giainlista: 'Gia in Lista',
newreg: 'Nuevas inscripciones :',
nationality: 'Nacionalidad',
verified: 'Verificada',
nonverified: 'No Verificada',
req7: 'Con 5 pasos usted entra en la lista de embarque',
req9: 'Con 7 pasos ayuda a {sitename} a crecer!',
req: 'Pasos',
people: 'Inv.',
peoplelegend: 'Número de invitados',
},
},
msg: {
myAppDescription: '',
keywords_base: '',
myDescriz: '',
sottoTitoloApp: '..',
sottoTitoloApp2: '..',
sottoTitoloApp3: '..',
sottoTitoloApp4: '',
},
homepage: {
titlecontatti: 'CONTACTOS',
},
text: {
how: 'COMO FUNCIONA',
what: 'QUE NECESITAS',
step: 'PASOS A REALIZAR',
videotitle: 'VIDEO',
testimonial: 'TESTIMONIOS',
faq: 'PREGUNTAS FRECUENTES (FAQ)',
advise: 'CONSEJOS',
download: 'MATERIAL DISPONIBLES',
},
};
export default msg_website_es;

View File

@@ -1,63 +0,0 @@
const msg_website_fr = {
ws: {
sitename: 'AYNI',
siteshortname: 'Ayni',
botname: 'AYNI BOT',
},
homepage: {
titlecontatti: 'CONTACTS',
},
pages: {
home: 'Home',
profile: 'profil',
payment: 'paiements',
regok: 'Inscription confirmée',
presentazione: 'Présentation',
presentazione2: 'Présentation',
invita: 'Inviter des personnes',
SignUp: 'Inscription',
SignUp_alreadylista: 'Inscription pour ceux qui sont déjà inscrits sur la liste!',
SignUp2: 'Inscription',
SignIn: 'Login',
status: 'État actuel',
nextzoom: 'Conférences',
requestresetpwd: 'Demande de réinitialisation du mot de passe',
vreg: 'Vérifier l\'inscription',
dashboard: 'Tableau de bord',
statoattuale: 'Situation Actuelle',
posizione_in_programmazione: 'Liste d\'embarquement',
posizione_in_nave: 'Liste des Navires',
nave: 'Navires',
testimonial: 'Commentaires',
Test: 'Test',
Category: 'Categorie',
Admin: 'Admin',
Test1: 'Test1',
Test2: 'Test2',
statusreg: {
reg: 'Participants',
passeggeri: 'Navires à passagers',
giainlista: 'Gia in Lista',
newreg: 'Nouvelles inscriptions:',
nationality: 'Nationalité',
verified: 'Vérifié',
nonverified: 'Non Vérifié',
req7: 'Avec 5 étapes, vous entrez dans la liste d\'embarquement.',
req9: 'Avec 7 étapes, aidez {sitename} à se développer !',
req: 'Étapes',
people: 'Inv.',
peoplelegend: 'Nombre d\'invités',
},
},
msg: {
myAppDescription: '',
keywords_base: '',
myDescriz: '',
sottoTitoloApp: '..',
sottoTitoloApp2: '..',
sottoTitoloApp3: '..',
sottoTitoloApp4: '',
},
};
export default msg_website_fr;

View File

@@ -1,232 +0,0 @@
const msg_website_it = {
ws: {
sitename: 'PopoloDelNuovoMondo',
siteshortname: 'PDNM',
botname: 'PdNM',
},
products: {
quantity: 'Quantità',
quantityAvailable: 'Disponibili',
weight: 'Peso',
stars: 'Voto',
color: 'Colore',
theme: 'Tema',
},
hours: {
descr: 'Descrizione',
date: 'Data',
time_start: 'Ora Inizio',
time_end: 'Ora Fine',
hours: 'Ore',
note: 'Note Extra',
},
pages: {
home: 'Home',
profile: 'Profilo',
profile2: 'ProfiloU',
mypage2: 'mypage2',
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',
producer: 'Produttore',
orderinfo: 'Ordini Effettuati',
products: 'Prodotti',
productslist: 'Lista Prodotti',
collabora: 'Collabora',
storehouses: 'Magazzino',
departments: 'Uffici',
orders: 'Ordini Ricevuti',
orders2: 'Ordini Ricevuti',
sharewithus: 'Condividi con Noi',
checkout: 'Carrello',
payment: 'Pagamenti',
regok: 'Registrazione Confermata',
presentazione: 'Presentazione',
presentazione2: 'Presentazione',
invita: 'Invita Persone',
SignUp: 'Nuova Registrazione',
SignUpIscrizione: 'Diventa Socio CNM',
SignUp_alreadylista: 'Registrazione per quelli che erano già nella lista di Notevole (del 2019) !',
SignUp2: 'Registrazione',
SignIn: 'Login',
status: 'Statistiche',
nextzoom: 'Conferenze',
requestresetpwd: 'Richiesta Reset Password',
vreg: 'Verifica Reg',
dashboard: 'Lavagna',
statoattuale: 'Stato Attuale',
posizione_in_programmazione: 'Lista d\'Imbarco',
posizione_in_nave: 'Lista Navi',
nave: 'Nave',
testimonial: 'Testimonianze',
Test: 'Test',
Category: 'Categorie',
Admin: 'Admin',
Sites: 'Siti Web',
extralist: 'Lista Extra',
Test1: 'Test1',
Test2: 'Test2',
chisiamo: 'Chi Siamo',
linkamici: 'Link Amici',
dovesiamo: 'Dove Siamo',
calendarioeventi: 'Calendario Eventi',
evento: 'Evento',
eventodef: 'Evento:',
prova: 'prova',
dbop: 'Operazioni',
projall: 'Comunitari',
groups: 'Lista Gruppi',
projectsShared: 'Condivisi da me',
myprojects: 'Privati',
favproj: 'Favoriti',
statusreg: {
reg: 'Partecipanti',
passeggeri: 'Passeggeri Navi',
giainlista: 'Gia in Lista',
newreg: 'Ultime Registrazioni:',
nationality: 'Nazionalità',
nationality_born: 'Nazione di Nascita',
verified: 'Verificata',
nonverified: 'Non Verificata',
req7: 'Con 5 passi entri nella lista d\'Imbarco',
req9: 'Con 7 passi aiuti {sitename} a Crescere!',
req: 'Passi',
people: 'Inv.',
peoplelegend: 'Numero d\'Invitati',
},
admin_ecommerce: 'ECommerce',
ecommerce: 'Prodotti',
ecommerce_menu: 'ECommerce1',
hours: 'Ore',
department: 'Uffici',
title: 'Titolo',
path: 'Percorso',
img1: 'Immagine 1',
contentfield: 'Testo 1',
video1: 'Video 1',
ratio1: 'Ratio 1',
img2: 'Immagine 2',
content2: 'Testo 2',
video2: 'Video 2',
ratio2: 'Ratio 2',
img3: 'Immagine 3',
content3: 'Testo 3',
video3: 'Video 3',
ratio3: 'Ratio 3',
content4: 'Testo 4',
active: 'Attiva',
inmenu: 'Sul Menu',
submenu: 'SottoMenu',
infooter: 'Sul Footer',
internalpage: 'Pagina Interna',
order: 'Posizione',
icon: 'Icona',
imgback: 'Immagine di Sfondo',
onlyif_logged: 'Solo se Loggati',
only_residenti: 'Solo Residenti',
only_consiglio: 'Solo Consiglieri',
color: 'Colore',
},
msg: {
myAppName: 'FreePlanet',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito e senza Pubblicità',
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à',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Riscopri come il valore della <strong>Condivisione</strong> e della <strong>Cooperazione</strong>, possa aiutarci a ritrovare il profondo '
+ 'senso della <strong>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: 'Free 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: 'Free Talent',
descr: 'Condividi i tuoi <strong>Talenti</strong> e <strong>Abilità</strong>, '
+ 'al posto del denaro guadagnagnerai <strong>Tempo</strong>.<br> '
+ '<strong>"1 ora"</strong> diventa moneta di scambio, uguale per tutti.<br>'
+ 'Potrai utilizzare questi tuoi <strong>"Crediti Tempo"</strong> per soddisfare le tue necessità, cercando nelle <strong>Competenze Disponibili</strong>.<br>'
+ 'Nel Dare e Ricevere, si creeranno così legami di <strong>Amicizia, Solidarietà, Cooperazione e Divertimento</strong><br><br>'
+ 'Questo progetto vuole diffondere, ora in maniera informatizzata, questa realtà che gia esiste da tanti anni, e viene chiamata <strong>"Banca del Tempo"</strong>. '
+ 'Le <strong>segreterie</strong> sparse in tutto il mondo, serviranno a dare maggiore <strong>affidabilità</strong> e <strong>fiducia</strong> negli scambi di talenti tra persone sconosciute. '
+ 'Creeremo così una <strong>rete di fiducia</strong> nel vicinato, come giá viene praticato in numerosi <strong>Ecovillaggi</strong> e Comunità del mondo.',
},
freegas: {
title: 'Free G.A.S.',
descr: 'Ti piacerebbe utilizzare una App che ti permetta facilmente di acquistare Prodotti Locali direttamente dal <strong>Produttore</strong>?<br>'
+ 'Con i <strong>Gruppi di Acquisto Solidale</strong> si evitano intermediazioni inutili, ottenendo parecchi benefici tra cui:<br>'
+ '<ul class="mylist" style="padding-left: 20px;"><li><strong>Qualitá Superiore</strong> del prodotto</li>'
+ '<li>Le <strong>Recensioni</strong> dei consumatori favoriranno i Produttori con Sani Intenti</li>'
+ '<li>Possiblità d\'interagire con il Produttore</li>'
+ '<li>Apertura alle Relazioni tra persone, condividendo <strong>Ricette</strong> e <strong>Consigli</strong> preziosi</li>'
+ '<li><strong>Risparmio</strong> di soldi (prezzi all\'Ingrosso)</li>'
+ '<li>Valorizzare il <strong>Territorio</strong> e l\'Economia <strong>Locale</strong></li>'
+ '<li>Condizioni <strong>Eque</strong> per i Lavoratori</li>'
+ '<li>Ridotto <strong>Impatto Ambientale</strong></ul>',
},
freeliving: {
title: 'Free Co-Living',
descr: 'Unire più realtà, condividendo l\'esperienza di abitare insieme, per un periodo definito:<br>'
+ '1) C\'è chi <strong>Vive solo</strong> ed ha una casa.<br>'
+ '2) Chi ha bisogno di un <strong>alloggio</strong> temporaneo.<br><br>'
+ 'Oggi sempre più persone <strong>abitano da sole</strong> e vorrebbero continuare a vivere nella propria abitazione.<br>'
+ 'Altre persone invece hanno bisogno di una <strong>stanza</strong>, per scelta o per necessita, ed in cambio sono disponibili a '
+ '<strong>contribuire alle spese</strong> per le utenze domestiche o magari <strong>aiutare</strong> la persona a <strong>fare la spesa</strong>, cucinare, <strong>pulire casa</strong> oppure offrendogli semplicemente <strong>compagnia</strong>.<br><br>'
+ 'Tramite questo strumento, le persone potranno trovarsi, mettersi in contatto e decidere in che forma <strong>co-abitare</strong> e per quanto tempo. Le <strong>recensioni</strong> rilasciate ed il <strong>dettaglio</strong> dei profili utenti, '
+ 'aiuterà nella scelta della persona più in <strong>sintonia</strong>.',
},
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>Chi gestisce una <strong>Banca del Tempo</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>Condividendolo</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>Rispondendo ai <strong>Sondaggi Popolari</strong> e lasciando <strong>Feedback</strong></li>'
+ '<li>Tramite una <strong>donazione</strong> (<strong>anche 1€</strong> ) per le spese.<br>'
+ '</ul>'
+ 'Vedo 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</strong> con gli altri.<br>',
},
multiplatform: {
title: 'Multi-piattaforma',
descr: 'E\' compatibile con Google Chrome, Firefox, Safari, iOS, Android e PC. L\'Applicazione s\'installa facilmente, senza passare dallo store. '
+ 'basta condividere il nome del sito <strong>www.freeplanet.app</strong>.<br>'
+ 'Dopo la registrazione chiederà di aggiungerlo alla lista delle applicazioni e sullo sfondo',
},
free: {
title: 'Gratuita, Open Source e Niente Pubblicità',
descr: 'Questa App <strong>non è in vendita</strong>, non ha scopi commerciali, <strong>non ha prezzo</strong> ed appartiene al <strong>Popolo del Nuovo Mondo</strong>.<br>Chiunque potrá utilizzarla e beneficiarne.<br>A me il compito di gestirla e proteggerla. '
+ 'Verranno accettate solo donazioni Libere di privati ed Associazioni no-profit, in linea con i Principi, che serviranno per coprire le spese.<br>'
+ '<strong>Grazie a Tutti per il sostegno</strong>. ',
},
titlecontatti: 'Contatti',
contacts: '',
},
};
export default msg_website_it;

View File

@@ -1,73 +0,0 @@
const msg_website_pt = {
ws: {
sitename: 'CNM',
siteshortname: 'CNM',
botname: 'CNM BOT',
},
pages: {
home: 'Home',
profile: 'Perfil',
payment: 'Pagamentos',
regok: 'Inscrição confirmada',
presentazione: 'Apresentação',
presentazione2: 'Apresentação',
invita: 'Convidar Pessoas',
SignUp: 'Inscrição',
SignUp_alreadylista: 'Inscrição para os que já estão na Lista!',
SignUp2: 'Inscrição',
SignIn: 'Login',
status: 'Estatísticas',
nextzoom: 'Conférences',
requestresetpwd: 'Pedido de redefinição de senha',
vreg: '',
dashboard: 'Tablero',
statoattuale: 'Status Atual',
posizione_in_programmazione: 'Lista de Embarque',
posizione_in_nave: 'Lista de Navios',
nave: 'Navios',
testimonial: 'Opiniones',
Test: 'Test',
Category: 'Categorie',
Admin: 'Admin',
Test1: 'Test1',
Test2: 'Test2',
statusreg: {
reg: 'Participantes',
passeggeri: 'Navios de Passageiros',
giainlista: 'Já na lista',
newreg: 'Últimas Inscrições:',
nationality: 'Nacionalidade',
verified: 'Verificado',
nonverified: 'Não verificado',
req7: 'Com 5 passos, o usuário entra na lista de embarque.',
req9: 'Com 7 passos ajudam a {sitename} a crescer!',
req: 'Passos',
people: 'Con.',
peoplelegend: 'Número de convidados',
},
},
msg: {
myAppDescription: '',
keywords_base: '',
myDescriz: '',
sottoTitoloApp: '..',
sottoTitoloApp2: '..',
sottoTitoloApp3: '..',
sottoTitoloApp4: '',
},
homepage: {
titlecontatti: 'CONTACTOS',
},
text: {
how: 'COMO FUNCIONA',
what: 'QUE NECESITAS',
step: 'PASOS A REALIZAR',
videotitle: 'VIDEO',
testimonial: 'TESTIMONIOS',
faq: 'PREGUNTAS FRECUENTES (FAQ)',
advise: 'CONSEJOS',
download: 'MATERIAL DISPONIBLES',
},
};
export default msg_website_pt;

View File

@@ -1,59 +0,0 @@
const msg_website_si = {
ws: {
sitename: 'AYNI',
siteshortname: 'Ayni',
botname: 'AYNI BOT',
},
pages: {
home: 'Domača stran',
profile: 'Profil',
payment: 'Plačila',
regok: 'Registracija potrjena',
presentazione: 'Predstavitev',
presentazione2: 'Predstavitev',
invita: 'Povabi osebe',
SignUp: 'Nova Registracija',
SignUp2: 'Registracija',
SignIn: 'Vpis',
status: 'Statistika',
nextzoom: 'Conferenze',
requestresetpwd: 'Prošnja za ponastavitev Gesla',
vreg: 'Preveri Registracijo',
dashboard: 'Tabla',
statoattuale: 'TrenutniStatus',
posizione_in_programmazione: 'Seznam Plovbe',
posizione_in_nave: 'Seznam Ladiji',
nave: 'Ladje',
Admin: 'Administrator',
evento: 'Dogodek',
eventodef: 'Dogodek:',
statusreg: {
reg: 'Udeleženci',
passeggeri: 'Potniki Ladjic',
giainlista: 'Že na seznamu',
newreg: 'Zadnje Registracije:',
nationality: 'Nacionalnost',
verified: 'Preveri',
nonverified: 'Ni preverjeno',
req7: 'S 7 koraki vstopis na seznam za plovbo',
req9: 'Z 9-imi koraki pomagaš, da {sitename} Raste!',
req: 'Koraki',
people: 'Pov.',
peoplelegend: 'Število \'Povabljenih',
},
},
msg: {
myAppDescription: '',
keywords_base: '',
myDescriz: '',
sottoTitoloApp: '',
sottoTitoloApp2: '',
sottoTitoloApp3: '',
sottoTitoloApp4: '',
},
homepage: {
titlecontatti: 'Kontakt',
},
};
export default msg_website_si;

View File

@@ -1,721 +0,0 @@
import {
IListRoutes,
ILang,
IFunctionality,
IPreloadImages,
} from '@model'
const functionality: IFunctionality = {
PWA: true,
SHOW_USER_MENU: true, // Cambiare con true
SHOW_PROFILE: true,
SHOW_REG_BUTTON: false,
ENABLE_REGISTRATION: true, // Cambiare con true
ENABLE_REG_NEED_TELEGRAM: false,
SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: false,
ENABLE_TODOS_LOADING: false,
ENABLE_PROJECTS_LOADING: false,
SHOW_IF_IS_SERVER_CONNECTION: false,
SHOW_MESSAGES: false,
BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true,
ENABLE_GROUPS: false,
}
// 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' },
]
const routes_admin: IListRoutes[] = [
{
active: true,
order: 10,
path: '/admin/sites',
materialIcon: 'event_seat',
name: 'pages.Sites',
component: () => import('@/rootgen/admin/sites/sites.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1000,
path: '/admin/cfgserv',
materialIcon: 'event_seat',
name: 'pages.Admin',
component: () => import('@/views/admin/cfgServer/cfgServer.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1020,
path: '/admin/dbop',
materialIcon: 'event_seat',
name: 'pages.dbop',
component: () => import('@/views/admin/dbop/dbop.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1030,
path: '/admin/sendpushnotif',
materialIcon: 'event_seat',
name: 'otherpages.manage.sendpushnotif',
component: () => import('@/rootgen/admin/sendpushnotif/sendpushnotif.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1040,
path: '/admin/importfile',
materialIcon: 'event_seat',
name: 'otherpages.manage.importfile',
component: () => import('@/rootgen/admin/importdata/importdata.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
}
]
const routes_newsletter: IListRoutes[] = [
{
active: true,
order: 10,
name: 'newsletter.template', path: '/admin/newsletter/templemail', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
},
{
active: true,
order: 20,
name: 'newsletter.sendemail', path: '/admin/newsletter/newnewsletter', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
},
{
active: true,
order: 30,
name: 'newsletter.check', path: '/admin/newsletter/check', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
},
{
active: true,
order: 40,
name: 'newsletter.sent', path: '/admin/newsletter/newslist', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
},
{
active: true,
order: 50,
name: 'newsletter.mailinglist', path: '/admin/newsletter/mailinglist', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
},
{
active: true,
order: 60,
name: 'newsletter.settings', path: '/admin/newsletter/settings', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
},
{
active: true,
order: 70,
name: 'newsletter.serversettings', path: '/admin/newsletter/main_settings', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
},
{
active: true,
order: 80,
name: 'newsletter.others', path: '/admin/newsletter/events', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true
}
]
const routes_manager: IListRoutes[] = [
{
active: functionality.BOOKING_EVENTS,
order: 70,
path: '/admin/usereventlist',
materialIcon: 'edit',
name: 'otherpages.admin.usereventlist',
component: () => import('@/rootgen/admin/eventlist/eventlist.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
infooter: true,
onlyManager: true,
onlyConsiglio: true,
onlyAdmin: true
},
{
active: true,
order: 10,
path: '/admin/userlist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.userlist',
component: () => import('@/rootgen/admin/usersList/usersList.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
/*
{
active: true,
order: 10,
path: '/admin/iscritticonacreis',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.iscritticonacreis',
component: () => import('@/rootgen/admin/iscritticonacreis/iscritticonacreis.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
*/
{
active: true,
order: 10,
path: '/admin/zoomlist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.zoomlist',
component: () => import('@/rootgen/admin/zoomList/zoomList.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: false
},
{
active: true,
order: 27,
path: '/admin/tableslist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.tableslist',
component: () => import('@/rootgen/admin/tablesList/tablesList.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
{
active: true,
order: 30,
path: '/admin/pages',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.pages',
component: () => import('@/rootgen/admin/pages/pages.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
path: '/admin/bot',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.bot',
component: () => import('@/rootgen/admin/bot/bot.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
path: '/admin/newsletter',
order: 60,
faIcon: 'fa fa-list-alt',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.newsletter',
routes2: routes_newsletter,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true
},
/*
{
active: functionality.ENABLE_ECOMMERCE,
path: '/admin/ecommerce',
order: 31,
faIcon: 'fa fa-list-alt',
materialIcon: 'next_week',
name: 'pages.admin_ecommerce',
routes2: routes_admin_ecommerce,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true,
onlyDepartment: true
},
*/
{
active: true,
order: 35,
path: '/admin/msg_template',
materialIcon: 'fas fa-file-alt',
name: 'msgs.messages',
component: () => import('@/rootgen/admin/msg_template/msg_template.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
// onlyFacilitatore: true
},
{
active: true,
order: 40,
path: '/admin/gallery',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.gallery',
component: () => import('@/rootgen/admin/gallery/gallery.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
{
active: true,
order: 50,
path: '/admin/media',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.media',
component: () => import('@/rootgen/admin/uploader/uploader.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
]
const baseroutes: IListRoutes[] = [
{
active: true,
order: 5,
path: '/',
materialIcon: 'home',
name: 'pages.home',
component: () => import('@src/root/mainview/mainview.vue'),
reqauth: false,
inmenu: true,
infooter: true,
},
{
active: true,
order: 10,
path: '/events',
materialIcon: 'fas fa-bullhorn',
name: 'mypages.events',
component: () => import('@/root/eventi/eventi.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 12,
path: '/goods',
materialIcon: 'fas fa-briefcase',
name: 'mypages.goods',
component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/services',
materialIcon: 'fas fa-briefcase',
name: 'mypages.services',
component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
/*{
active: true,
order: 100,
path: '/presentazione',
materialIcon: 'fas fa-info',
name: 'pages.presentazione',
component: () => import('@src/root/presentazione/presentazione.vue'),
reqauth: false,
inmenu: true,
infooter: true,
},*/
{
active: true,
order: 120,
path: '/myprofile',
materialIcon: 'fas fa-user',
name: 'pages.profile',
component: () => import('@/views/user/myprofile/myprofile.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 120,
path: '/editprofile',
materialIcon: 'fas fa-user',
name: 'pages.profile3',
component: () => import('@/views/user/editprofile/editprofile.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 130,
path: '/friends',
materialIcon: 'fas fa-user-friends',
name: 'mypages.friends',
component: () => import('@/views/user/myfriends/myfriends.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: functionality.ENABLE_GROUPS,
order: 132,
path: '/groups',
materialIcon: 'fas fa-users',
name: 'mypages.groups',
component: () => import('@/views/user/mygroups/mygroups.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 135,
path: '/my/:username',
materialIcon: 'fas fa-user',
name: 'pages.profile2',
component: () => import('@/views/user/myprofile/myprofile.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 136,
path: '/grp/:groupname',
materialIcon: 'fas fa-user',
name: 'proj.group2',
component: () => import('@/views/user/mygroup/mygroup.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 130,
path: '/mypage/:idBacheca',
materialIcon: '',
name: 'pages.mypage2',
component: () => import('@/views/user/mypagebacheca/mypagebacheca.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 130,
path: '/myservice/:idSkill',
materialIcon: '',
name: 'pages.myservice2',
component: () => import('@/views/user/myservice/myservice.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 400,
path: '/test',
materialIcon: 'fas fa-test',
name: 'mypages.test',
component: () => import('@/views/testServer/testServer.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 2000,
path: '/admin',
materialIcon: 'fas fa-user-shield',
name: 'otherpages.admin.menu',
inmenu: true,
routes2: routes_admin,
solotitle: true,
infooter: true,
onlyAdmin: true
},
...routes_admin,
{
active: true,
order: 2110,
path: '/manage',
materialIcon: 'fas fa-users-cog',
name: 'otherpages.manage.menu',
inmenu: true,
routes2: routes_manager,
solotitle: true,
infooter: true,
onlyAdmin: true,
onlyManager: true,
onlyFacilitatore: true,
onlyEditor: true
},
...routes_manager,
{
active: true,
order: 1000,
path: '/404error',
materialIcon: 'fas fa-calendar-plus',
name: 'otherpages.error404',
component: () => import('@/root/My404page/My404page.vue'),
inmenu: false,
infooter: false
},
// --- NOT IN MENU: ---
/*{
order: 8,
path: '/policy',
name: 'pages.policy',
component: () => import('@src/root/policy/policy.vue'),
},*/
{
active: functionality.ENABLE_REGISTRATION,
order: 1000,
path: '/signup/:invited',
materialIcon: 'how_to_reg',
name: 'pages.SignUp',
component: () => import('@/views/login/signup/signup.vue'),
inmenu: false,
infooter: false,
separator: false
},
{
active: functionality.ENABLE_REGISTRATION,
order: 2000,
path: '/regok',
materialIcon: 'how_to_reg',
name: 'pages.regok',
component: () => import('@/views/login/regok/regok.vue'),
inmenu: false,
infooter: false,
separator: false,
},
{
active: true,
order: 1000,
path: '/signin',
materialIcon: 'account_circle',
name: 'pages.SignIn',
component: () => import('@/views/login/signin_noreg/signin_noreg.vue'),
inmenu: true,
infooter: true
},
{
active: true,
order: 1000,
path: '/vreg',
name: 'pages.vreg',
component: () => import('@/views/login/vreg/vreg.vue')
},
{
active: true,
order: 1000,
path: '/requestresetpwd',
name: 'pages.requestresetpwd',
component: () => import('@/views/requestresetpwd/requestresetpwd.vue')
},
{
active: true,
order: 1000,
path: '/updatepassword',
name: 'pages.updatepassword',
component: () => import('@/views/updatepassword/updatepassword.vue')
},
{
active: true,
order: 1000,
path: '/offline',
name: 'Offline',
component: () => import('@/views/offline/offline.vue')
},
{
active: true,
path: '/separator',
name: 'separator',
order: 35,
isseparator: true,
inmenu: true,
},
{
active: false,
order: 80,
path: '/calendario-eventi',
materialIcon: 'event',
name: 'pages.calendarioeventi',
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
extraclass: 'isCalendar',
inmenu: true,
infooter: true
},
{
active: true,
order: 1000,
path: '/admin/newsletter/:idparam',
materialIcon: 'event',
name: 'pages.newsletter.menu',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: false,
infooter: false
},
{
active: true,
order: 90,
path: '/event/:typol/:eventid',
materialIcon: 'event',
name: 'pages.evento',
component: () => import('@/root/evento/evento.vue'),
inmenu: false,
infooter: false
},
{
active: true,
order: 110,
path: '/event/:typol',
materialIcon: 'event',
name: 'pages.eventodef',
component: () => import('@/root/evento/evento.vue'),
inmenu: false,
infooter: false
},
]
const arrLangUsed = [
'it',
'enUs',
'es',
]
const lang_available: ILang[] = [
{
label: 'Italiano', icon: 'fa-flag-it', value: 'it', image: '../images/it.png', short: 'IT',
},
/*{
label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../images/gb.png', short: 'EN',
},
{
label: 'Español', icon: 'fa-flag-es', value: 'es', image: '../images/es.png', short: 'ES',
},
*/
// { label: 'Français', icon: 'fa-facebook', value: 'fr', image: '../public/images/fr.png', short: 'FR' }
// { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../public/images/de.png', short: 'DE' },
]
const preLoadImages: IPreloadImages[] = []
export const preloadedimages = []
export const routes = baseroutes
export const static_data = {
baseroutes,
routes,
functionality,
lang_available,
preLoadImages,
arrLangUsed,
preloadedimages,
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

View File

@@ -1,135 +0,0 @@
{
"name": "popolodelnuovomondo",
"version": "0.0.8",
"description": "Popolo Del Nuovo Mondo",
"productName": "Popolo Del Nuovo Mondo",
"author": "Paolo Arena",
"private": true,
"keywords": [
],
"license": "MIT",
"scripts": {
"dev": "quasar dev",
"build": "quasar build",
"buildpwa": "quasar build -m pwa",
"lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./",
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m pwa",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js"
},
"dependencies": {
"axios": "0.21.4",
"@vue/eslint-config-standard": "5.1.2",
"@quasar/extras": "^1.12.4",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.12",
"@vue/compat": "^3.2.26",
"@vue/compiler-sfc": "^3.2.26",
"@vuelidate/core": "^2.0.0-alpha.34",
"@vuelidate/validators": "^2.0.0-alpha.26",
"acorn": "^8.7.0",
"autoprefixer": "^10.4.2",
"bcryptjs": "^2.4.3",
"core-js": "^3.20.3",
"crypto": "^1.0.1",
"date-fns": "^2.28.0",
"dotenv": "^11.0.0",
"echarts": "^5.2.2",
"eslint-plugin-quasar": "^1.1.0",
"eslint-plugin-standard": "^5.0.0",
"graphql": "^16.2.0",
"graphql-tag": "^2.12.6",
"gsap": "^3.9.1",
"jquery": "^3.6.0",
"js-cookie": "^3.0.1",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"npm": "^8.3.0",
"nprogress": "^0.2.0",
"pinia": "^2.0.9",
"prerender-spa-plugin": "^3.4.0",
"quasar": "^2.4.12",
"quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2",
"vee-validate": "^4.4.10",
"vue": "^3.2.26",
"vue-class-component": "^8.0.0-rc.1",
"vue-country-code": "^1.1.2",
"vue-echarts": "^6.0.0",
"vue-i18n": "^9.2.0-beta.26",
"vue-idb": "^0.2.0",
"vue-loader": "^16.5.0",
"vue-property-decorator": "^10.0.0-rc.3",
"vue-router": "^4.0.11",
"vue-scroll-reveal": "^1.0.11",
"vue-svgicon": "^4.0.0-alpha.3",
"vue2-dragula": "^2.5.5",
"vuex": "^4.0.1",
"vuex-router-sync": "^6.0.0-rc.1"
},
"devDependencies": {
"node-sass": "6.0.1",
"webpack": "^5.66.0",
"@quasar/app": "^3.2.9",
"@quasar/quasar-app-extension-qcalendar": "^4.0.0-beta.12",
"@types/bcryptjs": "^2.4.2",
"@types/dotenv": "^8.2.0",
"@types/googlemaps": "^3.43.3",
"@types/jest": "^27.0.3",
"@types/js-cookie": "^3.0.1",
"@types/node": "17.0.0",
"@types/nprogress": "^0.2.0",
"@types/vue-tel-input": "^2.1.2",
"@types/vuelidate": "^0.7.15",
"@typescript-eslint/eslint-plugin": "^5.10.0",
"@typescript-eslint/parser": "^5.10.0",
"eslint": "^8.7.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.2.0",
"eslint-plugin-vue": "^8.3.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.0",
"http-proxy-middleware": "^2.0.1",
"jest": "^27.4.5",
"json-loader": "^0.5.7",
"npm-check-updates": "^12.1.0",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"postcss": "^8.4.5",
"postcss-loader": "^6.2.1",
"sass-loader": "^12.4.0",
"strip-ansi": "=7.0.1",
"ts-jest": "^27.1.2",
"ts-loader": "^9.2.6",
"tslint": "^6.1.3",
"tslint-config-standard": "^9.0.0",
"tslint-loader": "^3.5.4",
"typescript": "^4.5.5",
"vue-cli-plugin-element-ui": "^1.1.4",
"vueify": "^9.4.1",
"workbox-webpack-plugin": "^6.4.2"
},
"browser": {
"crypto": false
},
"browserslist": [
"last 10 Chrome versions",
"last 10 Firefox versions",
"last 4 Edge versions",
"last 7 Safari versions",
"last 8 Android versions",
"last 8 ChromeAndroid versions",
"last 8 FirefoxAndroid versions",
"last 10 iOS versions",
"last 5 Opera versions"
],
"engines": {
"node": ">= 14.17.0",
"npm": ">= 6.14.8",
"yarn": ">= 1.21.1"
}
}

View File

@@ -1,366 +0,0 @@
/*
* This file runs in a Node context (it's NOT transpiled by Babel), so use only
* the ES6 features that are supported by your Node version. https://node.green/
*/
// Configuration for your app
// https://v2.quasar.dev/quasar-cli/quasar-conf-js
/* eslint-env node */
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint func-names: 0 */
/* eslint global-require: 0 */
const { configure } = require('quasar/wrappers');
const path = require('path')
const webpack = require('webpack')
const helpers = require('./helpers')
const envparser = require('./config/envparser')
// const ESLintPlugin = require('eslint-webpack-plugin')
module.exports = configure((ctx) => ({
// https://v2.quasar.dev/quasar-cli/supporting-ts
supportTS: {
tsCheckerConfig: {
eslint: {
enabled: true,
files: './src/**/*.{ts,tsx,jsx,vue}',
},
},
},
// https://v2.quasar.dev/quasar-cli/prefetch-feature
// preFetch: true,
// app boot file (/src/boot)
// --> boot files are part of "main.js"
// https://v2.quasar.dev/quasar-cli/boot-files
// boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'],
boot: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines'],
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
css: [
'app.scss',
// '~quasar-ui-qcalendar/src/css/calendar-day.sass'
],
// https://github.com/quasarframework/quasar/tree/dev/extras
extras: [
// 'ionicons-v4',
// 'mdi-v5',
// 'eva-icons',
// 'themify',
// 'line-awesome',
'ionicons-v4',
// 'mdi-v3',
'fontawesome-v5',
'roboto-font', // optional, you are not bound to it
'material-icons', // optional, you are not bound to it
'material-icons-outlined',
],
aliases: {
quasar: path.resolve(__dirname, 'node_modules/@quasar/'),
src: path.resolve(__dirname, 'src'),
statics: path.resolve(__dirname, 'src/statics'),
components: path.resolve(__dirname, 'src/components'),
views: path.resolve(__dirname, 'src/views/index.ts'),
icons: path.resolve(__dirname, 'src/assets/icons'),
images: path.resolve(__dirname, 'src/assets/images'),
classes: path.resolve(__dirname, 'src/classes/index.ts'),
fonts: path.resolve(__dirname, 'src/assets/fonts'),
utils: path.resolve(__dirname, 'src/utils/index.ts'),
css: path.resolve(__dirname, 'src/styles/variables.scss'),
router: path.resolve(__dirname, 'src/router/index.ts'),
validators: path.resolve(__dirname, 'src/utils/validators.ts'),
methods: path.resolve(__dirname, 'src/utils/methods.ts'),
filters: path.resolve(__dirname, 'src/utils/filters.ts'),
api: path.resolve(__dirname, 'src/store/Api/index.ts'),
paths: path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'),
store: path.resolve(__dirname, 'src/store/index.ts'),
modules: path.resolve(__dirname, 'src/store/Modules/index.ts'),
model: path.resolve(__dirname, 'src/model/index.ts'),
},
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
build: {
env: envparser(),
vueRouterMode: 'history',
vueCompiler: true,
gzip: false, // gzip true
analyze: false, // true
transpile: true,
transpileDependencies: [
/quasar-ui-qcalendar[\\/]src/
],
chainWebpack(chain, { isServer, isClient }) {
chain.resolve.alias
// .set('myalias', path.resolve(__dirname, './src/somefolder'))
.set('@', helpers.root('src'))
.set('@components', helpers.root('src/components/index.ts'))
.set('@boot', helpers.root('src/boot/*'))
.set('@costanti', helpers.root('src/store/Modules/costanti.ts'))
.set('@views', path.resolve(__dirname, 'src/views/index.ts'))
.set('@src', path.resolve(__dirname, 'src'))
.set('@css', path.resolve(__dirname, 'src/public/css/variables.scss'))
.set('@icons', path.resolve(__dirname, 'src/public/icons/*'))
.set('@images', path.resolve(__dirname, 'src/public/images/*'))
.set('@classes', path.resolve(__dirname, 'src/classes/index.ts'))
.set('@utils', path.resolve(__dirname, 'src/utils/index.ts'))
.set('@utils', path.resolve(__dirname, 'src/utils/*'))
.set('@router', path.resolve(__dirname, 'src/router/index.ts'))
.set('@validators', path.resolve(__dirname, 'src/utils/validators.ts'))
.set('@methods', path.resolve(__dirname, 'src/utils/methods.ts'))
.set('@api', path.resolve(__dirname, 'src/store/Api/index.ts'))
.set('@paths', path.resolve(__dirname, 'src/store/Api/ApiRoutes.ts'))
.set('@storemod', path.resolve(__dirname, 'src/store/Modules/*'))
.set('@store', path.resolve(__dirname, 'src/store'))
.set('@modules', path.resolve(__dirname, 'src/store/Modules/index.ts'))
.set('@model', path.resolve(__dirname, 'src/model/index.ts'))
},
// extractCSS: false,
// transpile: false,
// Add dependencies for transpiling with Babel (Array of string/regex)
// (from node_modules, which are by default not transpiled).
// Applies only if "transpile" is set to true.
// transpileDependencies: [],
// rtl: true, // https://v2.quasar.dev/options/rtl-support
// preloadChunks: true,
// showProgress: false,
// gzip: true,
// analyze: true,
// Options below are automatically set depending on the env, set them if you want to override
// extractCSS: false,
// https://v2.quasar.dev/quasar-cli/handling-webpack
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
},
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer
dev: {
env: require('./.env.development'),
},
devServer: {
https: false,
port: 8083,
open: false, // opens browser window automatically
liveReload: false,
},
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
framework: {
config: {},
// iconSet: 'material-icons', // Quasar icon set
// lang: 'en-US', // Quasar language pack
// For special cases outside of where the auto-import strategy can have an impact
// (like functional components as one of the examples),
// you can manually specify Quasar components/directives to be available everywhere:
//
components: [
'QLayout',
'QDrawer',
'QItemSection',
'QHeader',
'QFooter',
'QPageContainer',
'QPage',
'QPopupProxy',
'QToolbar',
'QToolbarTitle',
'QBtn',
'QBtnDropdown',
'QColor',
'QIcon',
'QList',
'QKnob',
'QItemLabel',
'QItem',
'QCard',
'QMarkupTable',
'QSpace',
'QDialog',
'QBadge',
'QForm',
'QCardSection',
'QCardActions',
'QField',
'QInput',
'QSelect',
'QMenu',
'QToggle',
'QFab',
'QInfiniteScroll',
'QAjaxBar',
'QChip',
'QExpansionItem',
'QCheckbox',
'QBanner',
'QInnerLoading',
'QSpinnerGears',
'QDate',
'QTime',
'QSlideTransition',
'QTable',
'QTh',
'QTr',
'QTd',
'QLinearProgress',
'QSlider',
'QPopupEdit',
'QCarousel',
'QCarouselControl',
'QCarouselSlide',
'QPageScroller',
'QAvatar',
'QImg',
'QSplitter',
'QRating',
'QParallax',
'QTab',
'QTabs',
'QTabPanels',
'QTabPanel',
'QTree',
'QSeparator',
],
directives: [
'Ripple',
'ClosePopup',
],
// Quasar plugins
plugins: [
'Meta',
'Dialog',
'Notify',
'Cookies',
'Loading',
],
iconSet: 'fontawesome-v5',
lang: 'it', // Quasar language
},
// animations: 'all', // --- includes all animations
// https://v2.quasar.dev/options/animations
animations: [],
// https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr
ssr: {
pwa: false,
// manualStoreHydration: true,
// manualPostHydrationTrigger: true,
prodPort: 3000, // The default port that the production server should use
// (gets superseded if process.env.PORT is specified at runtime)
maxAge: 1000 * 60 * 60 * 24 * 30,
// Tell browser when a file from the server should expire from cache (in ms)
chainWebpackWebserver(/* chain */) {
//
},
middlewares: [
ctx.prod ? 'compression' : '',
'render', // keep this as last one
],
},
// https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa
pwa: {
workboxPluginMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
workboxOptions: {}, // only for GenerateSW
// for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts])
// if using workbox in InjectManifest mode
chainWebpackCustomSW(chain) {
// chain.plugin('eslint-webpack-plugin')
// .use(ESLintPlugin, [{ extensions: ['js'] }])
},
manifest: {
name: 'PopoloDelNuovoMondo',
short_name: 'PdNM',
description: 'Popolo del Nuovo Mondo',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [
{
src: 'images/pdnm-android-icon-96x96.png',
sizes: '96x96',
type: 'image/png',
},
{
src: 'images/pdnm-android-icon-144x144.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/pdnm-android-icon-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'images/pdnm-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
],
},
},
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova
cordova: {
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
},
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor
capacitor: {
hideSplashscreen: true,
},
// Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron
electron: {
bundler: 'packager', // 'packager' or 'builder'
packager: {
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
// OS X / Mac App Store
// appBundleId: '',
// appCategoryType: '',
// osxSign: '',
// protocol: 'myapp://path',
// Windows only
// win32metadata: { ... }
},
builder: {
// https://www.electron.build/configuration/configuration
appId: 'firstproj',
},
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
chainWebpack(/* chain */) {
// do something with the Electron main process Webpack cfg
// extendWebpackMain also available besides this chainWebpackMain
},
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
chainWebpackPreload(/* chain */) {
// do something with the Electron main process Webpack cfg
// extendWebpackPreload also available besides this chainWebpackPreload
},
},
}))

File diff suppressed because it is too large Load Diff

View File

@@ -39,6 +39,7 @@ export default {
console.log('watch finished', newval)
if (newval) {
tools.updateFonts()
}
})

View File

@@ -19,11 +19,14 @@ export default defineComponent({
const globalStore = useGlobalStore()
const { t } = useI18n()
const site = ref(globalStore.site)
return {
userStore,
tools,
costanti,
static_data,
site,
}
}
})

View File

@@ -30,7 +30,7 @@
</div>
<div
v-if="!tools.isLogged() && static_data.functionality.ENABLE_REGISTRATION && static_data.functionality.SHOW_REG_BUTTON"
v-if="!tools.isLogged() && site.confpages.enableReg && site.confpages.showRegButton"
style="margin:20px; text-align: center;">
<q-btn rounded size="lg" color="primary" @click="tools.openrighttoolbar()">{{ $t('login.enter') }}

View File

@@ -109,7 +109,7 @@
</q-card-section>
<q-card-actions align="right">
<q-btn
rounded v-if="!myevent.nobookable && static_data.functionality.BOOKING_EVENTS"
rounded v-if="!myevent.nobookable && site.confpages.bookingEvents"
color="primary" @click="addBookEventMenu(myevent)" :disable="!isEventEnabled(myevent)"
:label="$t('cal.booking')">
</q-btn>
@@ -887,13 +887,13 @@
:label="$t('event.askinfo')">
</q-btn>
<!--<q-btn rounded outline class="q-ma-sm"
v-if="!event.nobookable && !isAlreadyBooked(event) && static_data.functionality.BOOKING_EVENTS"
v-if="!event.nobookable && !isAlreadyBooked(event) && site.confpages.bookingEvents"
color="primary" @click="addBookEventMenu(event)"
:label="$t('cal.booking')" :disable="!isEventEnabled(event)">
</q-btn>-->
<q-btn
rounded outline class="q-ma-sm"
v-if="!event.nobookable && isAlreadyBooked(event) && static_data.functionality.BOOKING_EVENTS"
v-if="!event.nobookable && isAlreadyBooked(event) && site.confpages.bookingEvents"
text-color="red"
@click="EditBookEvent(event)"
:label="$t('cal.modifybooking')">

View File

@@ -1868,16 +1868,6 @@ export default defineComponent({
return ''
}
function getLabelFooterByRow(row: any) {
if (props.col_footer) {
const mycol = fieldsTable.getColByTable(tablesel.value, props.col_footer)
if (mycol) {
return tools.getValueByRemoteField(mycol, row, row[props.col_footer], props.col_tabfooter)
}
}
return ''
}
function cmdExt(cmd: any, id: any, val2: any) {
console.log('cmd', cmd)
@@ -2079,7 +2069,6 @@ export default defineComponent({
showColCheck,
getValueExtra,
shared_consts,
getLabelFooterByRow,
showfilter,
cmdExt,
visupagedialog,

View File

@@ -278,7 +278,7 @@
:groupname="extrafield"
:circuitname="circuitname"
:labelextra="col_title ? row[col_title] : ''"
:labelFooter="col_footer ? getLabelFooterByRow(row) : ''"
:labelFooter="col_footer ? tools.getLabelFooterByRow(row, col_footer, tablesel) : ''"
>
</CMyUser>
@@ -782,7 +782,7 @@
<div v-if="showColCheck(mycol, tools.TIPOVIS_SHOW_RECORD, false)">
<div class="row items-center justify-center q-gutter-md q-ma-xs">
<div class="q-ma-xs">
<q-field rounded outlined bg-color="orange-3" dense>
<q-field rounded outlined :bg-color="$q.dark.isActive ? '' : 'orange-3'" dense>
<template v-slot:control>
<div class="self-center full-width no-outline" tabindex="0">{{ mycol.label }}</div>
</template>

View File

@@ -3,7 +3,7 @@
<div class="row items-center justify-center q-gutter-md q-ma-xs">
<div class="q-ma-xs">
<q-field rounded outlined bg-color="blue-1" dense style="min-width:110px;">
<q-field rounded outlined :bg-color="$q.dark.isActive ? '' : 'blue-4'" dense style="min-width:110px;">
<template v-slot:control>
<div class="centermydiv">
<div class="self-center full-width no-outline text-center" tabindex="0">{{ mykey }}</div>

View File

@@ -94,24 +94,26 @@
</q-btn>
</div>
<div class="row">
<q-input
label="Width:"
@update:model-value="modifElem"
v-model="myel.widthimg"
filled
dense
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
label="Height:"
@update:model-value="modifElem"
v-model="myel.heightimg"
filled
dense
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
label="Lunghezza:"
@update:model-value="modifElem"
style="width: 100px"
v-model="myel.widthimg"
filled
dense
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
label="Altezza:"
@update:model-value="modifElem"
style="width: 100px"
v-model="myel.heightimg"
filled
dense
v-on:keyup.enter="saveElem"
>
</q-input>
</div>
<div class="row">
@@ -124,7 +126,7 @@
@update:model-value="modifElem"
dense
label="Allinea"
style="min-width: 150px"
style="width: 100px"
emit-value
map-options
>
@@ -160,13 +162,13 @@
<q-select
v-if="enableEdit && showFit"
rounded
style="min-width: 150px"
style="width: 100px"
outlined
v-model="myel.fit"
:options="tools.SelectListFit"
@update:model-value="modifElem"
dense
label="Fit"
label="Adatta:"
emit-value
map-options
>
@@ -174,6 +176,7 @@
</div>
<div class="row">
<q-input
dense
label="Classe:"
@update:model-value="modifElem"
v-model="myel.class2"
@@ -209,11 +212,12 @@
v-if="enableEdit && showAnimation"
v-model="myel.anim2"
@update:model-value="modifElem"
label="Animaz Immagini"
label="Animazione Immagini"
>
</CSelectAnimation>
<div class="row">
<q-input
dense
label="Classe Schede:"
@update:model-value="modifElem"
v-model="myel.class3"
@@ -365,6 +369,7 @@
<div v-if="myel.type === shared_consts.ELEMTYPE.MARGINI">
<div v-if="enableEdit">
<q-input
dense
label="Margine:"
class="fa-border"
@update:model-value="modifElem"
@@ -378,6 +383,7 @@
<div v-else-if="myel.type === shared_consts.ELEMTYPE.TITLE">
<div v-if="enableEdit">
<q-input
dense
label="Titolo"
class="fa-border"
@update:model-value="modifElem"
@@ -387,6 +393,7 @@
>
</q-input>
<q-input
dense
label="Style"
class="fa-border"
@update:model-value="modifElem"
@@ -396,6 +403,7 @@
>
</q-input>
<q-input
dense
label="Immagine:"
class="fa-border"
@update:model-value="modifElem"
@@ -422,6 +430,7 @@
</CMyFieldRec>
<q-input
dense
label="Title"
class="fa-border"
@update:model-value="modifElem"
@@ -431,6 +440,7 @@
>
</q-input>
<q-input
dense
label="Sottotitolo"
class="fa-border"
@update:model-value="modifElem"
@@ -444,6 +454,7 @@
<div v-else-if="myel.type === shared_consts.ELEMTYPE.IMGPOSTER">
<div v-if="enableEdit">
<q-input
dense
label="Velocità"
style="max-width: 100px"
class="fa-border"
@@ -566,6 +577,7 @@
</CSelectFontSize>
</div>
<q-input
dense
label="Classe:"
@update:model-value="modifElem"
v-model="rec.class"
@@ -598,6 +610,7 @@
<div v-else-if="myel.type === shared_consts.ELEMTYPE.HTML">
<div v-if="enableEdit">
<q-input
dense
label="Classe:"
@update:model-value="modifElem"
v-model="myel.class"
@@ -646,6 +659,7 @@
<div v-else-if="myel.type === shared_consts.ELEMTYPE.IMAGEUPLOAD">
<div v-if="enableEdit">
<q-input
dense
label="NomeFile Img:"
@update:model-value="modifElem"
v-model="myel.image"
@@ -665,29 +679,34 @@
:fieldtype="costanti.FieldType.image"
>
</CMyFieldRec>
<div class="row">
<q-input
label="Width:"
@update:model-value="modifElem"
v-model="myel.widthimg"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
label="Height:"
@update:model-value="modifElem"
v-model="myel.heightimg"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<div class="">
<div class="col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6 col-sticky">
<q-input
dense
label="Lunghezza:"
@update:model-value="modifElem"
v-model="myel.widthimg"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
dense
label="Altezza:"
@update:model-value="modifElem"
v-model="myel.heightimg"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
</div>
</div>
</div>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.VIDEO">
<div v-if="enableEdit" class="row">
<q-input
dense
label="NomeFile Video:"
@update:model-value="modifElem"
v-model="myel.container"
@@ -696,6 +715,7 @@
>
</q-input>
<q-input
dense
label="Ratio:"
type="number"
@update:model-value="modifElem"
@@ -725,6 +745,7 @@
<div v-else-if="myel.type === shared_consts.ELEMTYPE.PAGEINTRO">
<div v-if="enableEdit" class="row">
<q-input
dense
label="NomeFile Img:"
@update:model-value="modifElem"
v-model="myel.container"
@@ -733,35 +754,39 @@
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
label="Width:"
type="number"
@update:model-value="modifElem"
debounce="1000"
v-model="myel.widthimg"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
label="Height:"
type="number"
@update:model-value="modifElem"
debounce="1000"
v-model="myel.heightimg"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
label="Link:"
@update:model-value="modifElem"
debounce="1000"
v-model="myel.link"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<div class="col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6 col-sticky">
<q-input
dense
label="Lunghezza:"
type="number"
@update:model-value="modifElem"
debounce="1000"
v-model="myel.widthimg"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
label="Altezza:"
type="number"
@update:model-value="modifElem"
debounce="1000"
v-model="myel.heightimg"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<q-input
dense
label="Link:"
@update:model-value="modifElem"
debounce="1000"
v-model="myel.link"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
</div>
</div>
</div>
<div
@@ -772,6 +797,7 @@
<div v-else-if="myel.type === shared_consts.ELEMTYPE.OPENSTREETMAP">
<div v-if="enableEdit" class="row">
<q-input
dense
label="ImgMap:"
@update:model-value="modifElem"
v-model="myel.container"
@@ -781,6 +807,7 @@
>
</q-input>
<q-input
dense
label="UrlMap:"
@update:model-value="modifElem"
v-model="myel.container2"
@@ -790,6 +817,7 @@
>
</q-input>
<q-input
dense
label="Title:"
@update:model-value="modifElem"
v-model="myel.container3"
@@ -799,6 +827,7 @@
>
</q-input>
<q-input
dense
label="Coordinata Mappa 1:"
@update:model-value="modifElem"
v-model="myel.containerHtml"
@@ -808,6 +837,7 @@
>
</q-input>
<q-input
dense
label="Coordinata Mappa Big:"
@update:model-value="modifElem"
v-model="myel.link"
@@ -836,6 +866,7 @@
-->
<q-input
dense
label="Secondi tra un'immagine e l'altra:"
@update:model-value="modifElem"
debounce="1000"
@@ -866,6 +897,7 @@
<div v-else-if="myel.type === shared_consts.ELEMTYPE.CALENDAR">
<div v-if="enableEdit" class="row">
<q-input
dense
label="Visualizza ultimi N eventi:"
@update:model-value="modifElem"
debounce="1000"

View File

@@ -100,7 +100,7 @@ export default defineComponent({
type: Object as PropType<IColGridTable> | undefined,
required: false,
default: () => {
return { name: '' }
return { }
},
},
id: {
@@ -130,7 +130,9 @@ export default defineComponent({
const { t } = useI18n()
const globalStore = useGlobalStore()
const col = ref(<IColGridTable> { name: 'test', fieldtype: 0, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView, visible: true, maxlength: props.maxlength, minlength: props.minlength })
const col = ref(<IColGridTable>{
name: 'test', fieldtype: 0, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView, visible: true, maxlength: props.maxlength, minlength: props.minlength
})
const row = ref({})
const { setValDb, getValDb } = MixinBase()
@@ -163,9 +165,9 @@ export default defineComponent({
} else {
// console.log('Tab = ', props.table, 'key=', props.mykey, 'mycolProp', props.mycol)
col.value = fieldsTable.getColByTable(props.table, props.mykey)
// console.log('MYCOL = ', col.value)
}
// console.log('COL = ', col.value, 'MyCol passed', props.mycol)
}
onMounted(mounted)

View File

@@ -3,7 +3,7 @@
<div class="row items-center justify-center q-gutter-md q-ma-xs">
<div v-if="title" class="q-ma-xs">
<q-field rounded outlined bg-color="blue-1" dense style="min-width:110px;">
<q-field rounded outlined :bg-color="$q.dark.isActive ? '' : 'blue-4'" dense style="min-width:110px;">
<template v-slot:control>
<div class="centermydiv">
<div v-if="myimg" class="text-center">
@@ -23,6 +23,7 @@
<div :class="` q-ma-sm q-pa-sm col-grow popupedit `" :style="withBorder() ? `` : ``">
<CMyPopupEdit
debounce="1000"
:fielddb="true"
v-bind="$attrs"
:rec="rec"

View File

@@ -12,7 +12,7 @@ import MixinBase from '@/mixins/mixin-base'
export default defineComponent({
name: 'CMyFieldRec',
emits: ['save'],
emits: ['save', 'update:rec'],
props: {
table: {
type: String,
@@ -123,13 +123,27 @@ export default defineComponent({
const jointable = ref('')
const recordCol = ref(<any>{})
const myrec = ref(<any>{})
const mykey = ref('')
const mysubkey = ref('')
const mysubsubkey = ref('')
const { setValDb, getValDb } = MixinBase()
watch(() => myrec.value, (value, oldval) => {
emit('update:rec', myrec.value)
return true
}
)
watch(() => props.rec, (value, oldval) => {
myrec.value = props.rec
}
)
function mounted() {
myrec.value = props.rec
mytitle.value = props.title
keytab.value = fieldsTable.getKeyByTable(props.table)
optlab.value = fieldsTable.getLabelByTable(props.table)
@@ -148,21 +162,21 @@ export default defineComponent({
const arrk = props.field.split('.')
if (arrk) {
mykey.value = props.field
if (arrk.length >= 0)
mykey.value = arrk[0]
if (arrk.length > 1)
mysubkey.value = arrk[1]
if (arrk.length > 2)
mysubsubkey.value = arrk[2]
else
mykey.value = props.field
}
// console.log('### table', props.table, 'col.value', col.value, 'field', props.field, 'mykey', mykey.value)
console.log('### table', props.table, 'col.value', col.value, 'field', props.field, 'mykey', mykey.value)
}
function showandsel(row: any, col: any, newval: any, valinitial: any) {
// console.log('showandsel CMyFieldDb', row, col, newval)
console.log('showandsel CMyFieldDb', row, col, newval)
emit('save', props.rec, newval)
if (props.nosaveToDb)
@@ -236,6 +250,7 @@ export default defineComponent({
mysubsubkey,
visuElem,
getclass,
myrec,
}
},
})

View File

@@ -1,7 +1,7 @@
<template>
<div v-if="visuElem()" :class="mytitle ? `row items-center justify-center q-ma-xs text-center` : ``">
<div v-if="mytitle" class="q-ma-xs">
<q-field rounded outlined bg-color="blue-1" dense style="min-width:110px;">
<q-field rounded outlined :bg-color="$q.dark.isActive ? '' : 'blue-4'" dense style="min-width:110px;">
<template v-slot:control>
<div class="centermydiv">
<div v-if="myimg" class="text-center">
@@ -42,7 +42,7 @@
:mycol="col"
:tablesel="tablesel"
:pickup="pickup"
v-model:row="rec"
v-model:row="myrec"
minuteinterval="1"
:path="path"
:nosaveToDb="nosaveToDb"

View File

@@ -18,6 +18,7 @@ import { CAccomodation } from '../CAccomodation'
import { tools } from '@store/Modules/tools'
import { costanti } from '@costanti'
// @ts-ignore
// import VueTelInput from 'vue3-tel-input'
// import 'vue3-tel-input/dist/vue3-tel-input.css'
@@ -237,17 +238,28 @@ export default defineComponent({
refresh()
})
const myrow = computed(() => {
return props.rec && props.isrec ? props.rec : props.row
watch(() => props.rec, (newval, oldval) => {
refresh()
})
const myrow = ref(<any>null)
/* const myrow = computed(() => {
return props.rec && props.isrec ? props.rec : props.row
})
*/
function crea() {
// console.log('crea', isFieldDb(), 'props.mycol', props.mycol)
if (props.mycol && props.mycol.name) {
if (props.mycol && props.mycol.name && props.mycol.name !== 'test') {
col.value = props.mycol
} else {
if (col.value.name === 'test') {
col.value.name = props.field
if (props.subfield) {
col.value.name += '.' + props.subfield
}
}
col.value.jointable = props.jointable
if (props.filter)
col.value.filter = props.filter
@@ -265,7 +277,7 @@ export default defineComponent({
myImgGall.value = [myvalue.value]
}
console.log('* col', col.value);
// console.log('* col', col.value);
}
if (props.type) {
@@ -282,6 +294,20 @@ export default defineComponent({
}
}
if (props.tablesel) {
// let obj = tools.getParamsByTable(props.table)
// console.log('OBJ:', obj)
if (true) {
console.log(' CAMPO', props.field + '.' + props.subfield)
let myval = tools.getLabelFooterByRow(myrow.value, props.field + '.' + props.subfield, props.table)
if (myval)
myvalue.value = myval
console.log(' RECORD INPUT', myrow.value)
console.log(' VALORE OUTPUT: ', myvalue.value)
}
}
// console.log('CMyFieldDb crea', myvalue)
}
@@ -317,7 +343,7 @@ export default defineComponent({
}
async function addNewValue(value: any) {
console.log('addNewValue', value, col.value)
// console.log('addNewValue', value, col.value)
if (col.value.allowNewValue && col.value.jointable) {
let myrec: any = {}
@@ -341,17 +367,18 @@ export default defineComponent({
if (col.value && col.value.allowchar === costanti.ALLOWCHAR_CODE) {
myvalue.value = tools.removespaces_slash(newval)
}
// console.log('popypedit: changevalRec', newval)
// console.log('popuppedit: changevalRec', newval, 'COLName', col.value.name)
// console.log('row', props.row, 'col', props.mycol, 'newval', newval)
// console.log('row[col.value.name]', props.row[col.value.name])
if (props.type === costanti.FieldType.image) {
// console.log('image', newval)
}
myrow.value[col.value.name] = newval
// console.log('changevalRec update:row', newval)
emit('update:row', props.row)
// console.log('changevalRec update:row', myrow.value)
emit('update:row', myrow.value)
if (props.isInModif)
OpenEdit()
}
@@ -371,11 +398,13 @@ export default defineComponent({
function mounted() {
myrow.value = props.rec && props.isrec ? {...props.rec} : {...props.row}
try {
// console.log('mounted', 'isFieldDb()', isFieldDb())
if (isFieldDb() && !props.isrec) {
// console.log(' . none...')
} else {
if (props.subfield !== '') {
if (myrow.value[props.field] === undefined) {
@@ -392,6 +421,7 @@ export default defineComponent({
myvalue.value = myrow.value
}
}
// console.log('props.field', props.field, 'props.subfield', props.subfield, 'myvalue: ', myvalue)
}
} catch (e) {
@@ -761,7 +791,6 @@ export default defineComponent({
myImgGall,
noPopupeditByCol,
getTitleEditor,
t,
myrow,
shared_consts,
}

View File

@@ -82,7 +82,7 @@
<div v-else-if="col.fieldtype === costanti.FieldType.username_chip">
<div class="q-ma-xs">
<span v-if="col.extrafield">
<span class="extrafield">{{ t(col.extrafield) }}</span>
<span class="extrafield">{{ $t(col.extrafield) }}</span>
</span>
<q-btn
v-if="col.tipovisu === costanti.TipoVisu.LINK && myvalue"
@@ -145,7 +145,7 @@
@keyup.enter.stop
@update:model-value="changevalRec"
autofocus
:label="col.visulabel ? t(col.label_trans) : col.label"
:label="col.visulabel ? $t(col.label_trans) : col.label"
>
</q-input>
</div>
@@ -156,7 +156,7 @@
<CLabel
v-bind="$attrs"
:value="myvalue"
:label="t(col.label_trans)"
:label="$t(col.label_trans)"
/>
</div>
<div v-else>
@@ -218,9 +218,9 @@
@update:model-value="Savedb"
:label="
col.visulabel
? t(col.label_trans)
? $t(col.label_trans)
: visulabel
? t(col.label_trans)
? $t(col.label_trans)
: ''
"
type="number"
@@ -233,7 +233,7 @@
:symbol="tools.getSymbolByCircuit(row)"
:color="tools.getColorByCircuit(row)"
:value="myvalue"
:label="t(col.label_trans)"
:label="$t(col.label_trans)"
>
</CCurrencyValue>
</div>
@@ -420,7 +420,7 @@
:type_out="col.field_outtype"
:col="col"
:row="row"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:value="myvalue"
@update:value="changevalRec"
:tablesel="tablesel"
@@ -452,7 +452,7 @@
:type_out="col.field_outtype"
:col="col"
:row="row"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:value="myvalue"
@update:value="changevalRec"
:tablesel="tablesel"
@@ -478,7 +478,7 @@
<div v-else-if="col.fieldtype === costanti.FieldType.date">
<div v-if="myvalue">
<CDateTime
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : (col.label_trans ? $t(col.label_trans) : '')"
class="cursor-pointer"
v-model:value="myvalue"
:readonly="false"
@@ -501,7 +501,7 @@
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.onlydate">
<CDateTime
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
class="cursor-pointer"
:valueDate="myvalue"
v-model:value="myvalue"
@@ -518,7 +518,7 @@
<div v-else-if="col.fieldtype === costanti.FieldType.binary">
<div v-if="isInModif">
<span v-if="insertMode">
{{ col.label ? col.label : t(col.label_trans) }}:
{{ col.label ? col.label : $t(col.label_trans) }}:
</span>
<CMyToggleList
:label="col.titlepopupedit ? col.titlepopupedit : ''"
@@ -566,7 +566,7 @@
:row="row"
:multiple="true"
:withToggle="true"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
:filter_table="col.filter_table"
:filter_field="col.filter_field"
:value_extra="value_extra"
@@ -660,7 +660,7 @@
:type_out="col.field_outtype"
:col="col"
:row="row"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:value="myvalue"
:pickup="col.fieldtype === costanti.FieldType.select_by_server"
:tablesel="
@@ -669,6 +669,7 @@
: ''
"
@update:value="changevalRec"
@update:model-value="Savedb"
:newvaluefunc="addNewValue"
:filter_table="col.filter_table"
:addnone="col.addnone"
@@ -731,7 +732,7 @@
:col="col"
:row="row"
:multiselect_by_server="true"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:arrvalue="myvalue"
@update:arrvalue="changevalRec"
:addall="false"
@@ -770,7 +771,7 @@
:type_out="col.field_outtype"
:col="col"
:row="row"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:value="myvalue"
@update:value="changevalRec"
:filter_table="col.filter_table"
@@ -806,7 +807,7 @@
<div v-else-if="col.fieldtype === costanti.FieldType.html">
<div v-if="isInModif">
<q-bar v-if="isInModif" dense class="bg-primary text-white">
<span v-if="col.label_trans">{{ t(col.label_trans) }}</span
<span v-if="col.label_trans">{{ $t(col.label_trans) }}</span
><span v-else> {{ $t('event.testo_di_spiegazione') }}: </span>
<q-space />
</q-bar>
@@ -955,7 +956,7 @@
:maxlength="col.maxlength ? col.maxlength : undefined"
:minlength="col.minlength ? col.minlength : undefined"
v-model="scope.value"
:label="col.visulabel ? t(col.label_trans) : ''"
:label="col.visulabel ? $t(col.label_trans) : ''"
:autogrow="col.fieldtype !== costanti.FieldType.crypted"
@keyup.enter.stop
autofocus
@@ -972,7 +973,7 @@
autofocus
:label="
col.visulabel
? t(col.label_trans)
? $t(col.label_trans)
: visulabel
? col.label
: ''
@@ -989,7 +990,7 @@
:symbol="tools.getSymbolByCircuit(row)"
:color="tools.getColorByCircuit(row)"
:value="scope.value"
:label="t(col.label_trans)"
:label="$t(col.label_trans)"
>
</CCurrencyValue>
</div>
@@ -1002,7 +1003,7 @@
autofocus
@update:model-value="changevalRec"
style="max-width: 100px"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
>
</q-input>
</div>
@@ -1043,7 +1044,7 @@
:type_out="col.field_outtype"
:col="col"
:row="row"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:value="scope.value"
:pickup="col.fieldtype === costanti.FieldType.select_by_server"
:addnone="col.addnone"
@@ -1080,7 +1081,7 @@
:col="col"
:row="row"
:multiselect_by_server="true"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:arrvalue="scope.value"
@update:arrvalue="changevalRec"
:addall="false"
@@ -1157,7 +1158,7 @@
:type_out="col.field_outtype"
:col="col"
:row="row"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:value="scope.value"
@update:value="changevalRec"
:tablesel="tablesel"
@@ -1179,7 +1180,7 @@
:type_out="col.field_outtype"
:col="col"
:row="row"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:value="scope.value"
@update:value="changevalRec"
:tablesel="tablesel"
@@ -1194,7 +1195,7 @@
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.date">
<CDateTime
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : (col.label_trans ? $t(col.label_trans) : '')"
class="cursor-pointer"
v-model:value="myvalue"
:readonly="false"
@@ -1208,7 +1209,7 @@
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.onlydate">
<CDateTime
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
class="cursor-pointer"
:valueDate="myvalue"
v-model:value="myvalue"
@@ -1249,7 +1250,7 @@
:type_out="col.field_outtype"
:col="col"
:row="row"
:label="col.label ? col.label : t(col.label_trans)"
:label="col.label ? col.label : $t(col.label_trans)"
v-model:value="scope.value"
:optval="fieldsTable.getKeyByTable(col.jointable)"
:optlab="fieldsTable.getLabelByTable(col.jointable)"

View File

@@ -15,6 +15,7 @@ import { CMyPage } from '@/components/CMyPage/index'
import { IEvents, IOperators } from '@src/model'
import MixinEvents from '@/mixins/mixin-events'
import { useGlobalStore } from '@src/store/globalStore'
export default defineComponent({
name: 'CMySingleEvent',
@@ -29,6 +30,9 @@ export default defineComponent({
setup(props, { emit }) {
const selected = ref(false)
const globalStore = useGlobalStore()
const site = ref(globalStore.site)
const { isShowPrice, getImgEvent, getStyleByEvent, isAlreadyBooked, getWhereIcon, getWhereName,
editable, getContribtypeById, getPrice, isEventEnabled, findEventIndex, UpdateDbByFields,
@@ -94,6 +98,7 @@ export default defineComponent({
findEventIndex,
UpdateDbByFields,
selected,
site,
}
}

View File

@@ -172,13 +172,13 @@
</q-btn>
<q-btn
rounded class="q-mx-sm"
v-if="!myevent.nobookable && !isAlreadyBooked(myevent) && static_data.functionality.BOOKING_EVENTS"
v-if="!myevent.nobookable && !isAlreadyBooked(myevent) && site.confpages.bookingEvents"
color="primary" @click="addBookEventMenu(myevent)"
:label="$t('cal.booking')" :disable="!isEventEnabled(myevent)">
</q-btn>
<q-btn
rounded outline class="q-mx-sm"
v-if="!myevent.nobookable && isAlreadyBooked(myevent) && static_data.functionality.BOOKING_EVENTS"
v-if="!myevent.nobookable && isAlreadyBooked(myevent) && site.confpages.bookingEvents"
text-color="red"
@click="EditBookEvent(myevent)"
:label="$t('cal.modifybooking')">

View File

@@ -39,7 +39,7 @@
<div>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px" class="home">
<q-btn
v-if="static_data.functionality.ENABLE_REGISTRATION && static_data.functionality.ENABLE_REG_BY_BOT"
v-if="site.confpages.enableReg && site.confpages.enableRegByBot"
type="a" rounded size="lg" color="primary" href="/bot" :label="$t('reg.submit')" class="buttreg">
</q-btn>
<q-btn

View File

@@ -1,39 +1,41 @@
<template>
<div v-if="!!myrec">
{{label}}
<q-bar dense class="bg-blue text-white">
{{ label }}
</q-bar>
<div class="row">
<q-select
rounded
style="width: 150px"
outlined
v-model="myrec.name"
:options="tools.SelectListAnimation"
@update:model-value="updateClass"
dense
label="Tipo:"
emit-value
map-options
>
</q-select>
<q-select
rounded
style="width: 150px"
outlined
v-model="myrec.name"
:options="tools.SelectListAnimation"
@update:model-value="updateClass"
dense
label="Tipo:"
emit-value
map-options
>
</q-select>
<q-select
rounded
style="width: 150px"
outlined
v-model="myrec.timingtype"
:options="tools.SelectListTimingType"
@update:model-value="updateClass"
dense
label="Timing:"
emit-value
map-options
>
</q-select>
<q-select
rounded
style="width: 150px"
outlined
v-model="myrec.timingtype"
:options="tools.SelectListTimingType"
@update:model-value="updateClass"
dense
label="Timing:"
emit-value
map-options
>
</q-select>
</div>
<q-select
rounded
style="min-width: 150px"
style="width: 150px"
outlined
v-model="myrec.clduration"
:options="tools.SelectListSpeed"
@@ -47,7 +49,7 @@
<q-select
rounded
style="min-width: 150px"
style="width: 150px"
outlined
v-model="myrec.cldelay"
:options="tools.SelectListDelay"

View File

@@ -20,7 +20,8 @@ export default defineComponent({
props: {
showregbutt: {
type: Boolean,
required: true,
required: false,
default: false,
},
},
setup(props, { emit }) {
@@ -35,6 +36,8 @@ export default defineComponent({
const loading = ref(false)
const site = ref(globalStore.site)
const myForm = ref(null)
const iswaitingforRes = ref(false)
@@ -151,6 +154,7 @@ export default defineComponent({
signin,
getlinkforgetpwd,
myForm,
site,
}
},
})

View File

@@ -64,14 +64,14 @@
</div>
<div
v-if="static_data.functionality.ENABLE_REGISTRATION && showregbutt && static_data.functionality.ENABLE_REG_BY_BOT"
v-if="site.confpages.enableReg && showregbutt && site.confpages.enableRegByBot"
style="margin-top:10px; text-align: center;">
Se non sei ancora Registrato:<br>
<q-btn type="a" rounded size="md" color="primary" href="/bot" :label="$t('reg.submit')">
</q-btn>
</div>
<div
v-else-if="static_data.functionality.ENABLE_REGISTRATION && showregbutt"
v-else-if="site.confpages.enableReg && showregbutt"
style="margin-top:10px; text-align: center;">
Se non sei ancora Registrato:<br>
<q-btn rounded size="md" color="primary" to="/signup" :label="$t('reg.submit')">

View File

@@ -91,8 +91,8 @@ export default defineComponent({
const signup = reactive(<ISignupOptions>{
email: process.env.TEST_EMAIL || '',
username: process.env.TEST_USERNAME || '',
name: static_data.functionality.SHOW_NAMESURNAME ? (process.env.TEST_NAME || '') : '',
surname: static_data.functionality.SHOW_NAMESURNAME ? (process.env.TEST_SURNAME || '') : '',
name: '',
surname: '',
password: process.env.TEST_PASSWORD || '',
repeatPassword: process.env.TEST_PASSWORD || '',
terms: !process.env.PROD,

View File

@@ -14,7 +14,8 @@ export default defineComponent({
props: {
showregbutt: {
type: Boolean,
required: true,
required: false,
default: false,
},
},
setup() {

View File

@@ -11,8 +11,6 @@ import { tools } from '@store/Modules/tools'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
import { static_data } from '@src/db/static_data'
import MixinUsers from '@/mixins/mixin-users'
@@ -28,11 +26,13 @@ export default defineComponent({
const userStore = useUserStore()
const globalStore = useGlobalStore()
const site = ref(globalStore.site)
return {
userStore,
globalStore,
tools,
static_data,
site,
}
},
})

View File

@@ -61,7 +61,7 @@
</q-banner>
</div>
<div v-else-if="userStore.isOldRegNotFinished()">
<div v-if="static_data.functionality.ENABLE_REG_NEED_TELEGRAM && !tools.isTelegOk()">
<div v-if="site.confpages.enabledRegNeedTelegram && !tools.isTelegOk()">
<h3>La Verifica su Telegram non è stata completata, pertanto se ancora non avete inserito nessun annuncio (Bene, Servizio, ecc...), è consigliato cancellare la vecchia registrazione per ripetere con una nuova registrazione.</h3><br>
<h3>Per contattare il supporto tecnico e farvi cancellare la registrazione: "Help - RISO", clicca qui sotto:</h3><br>
<h4><a href="https://t.me/+dTHFNIwkc_phNmQ8" target="_blank"><strong>Entra in Supporto Tecnico su Telegram: (Help - RISO)</strong></a></h4>

View File

@@ -227,7 +227,7 @@
</div>
<FormNewsletter
v-if="static_data.functionality.SHOW_NEWSLETTER"
v-if="site.confpages.showNL"
:idwebsite="tools.appid()"
:locale="toolsext.getLocale()"
>

View File

@@ -14,42 +14,42 @@
indicator-color="transparent"
>
<q-route-tab
v-if="site.footer_mobile?.show_buttHome"
v-if="site.confpages.showButtHome"
to="/"
class="mylabfooter"
:label="$t('tabdown.home')"
icon="fas fa-home"
/>
<q-route-tab
v-if="static_data.functionality.ENABLE_VIEW_GROUPS"
v-if="site.confpages.showViewGroups"
class="mylabfooter"
:label="$t('tabdown.groups')"
to="/groups"
icon="fas fa-users"
/>
<q-route-tab
v-if="static_data.functionality.ENABLE_CIRCUITS"
v-if="site.confpages.showViewCircuits"
class="mylabfooter"
:label="$t('tabdown.circuits')"
to="/circuits"
icon="fas fa-coins"
/>
<q-route-tab
v-if="static_data.functionality.ENABLE_VIEW_USERS"
v-if="site.confpages.showViewUsers"
class="mylabfooter"
:label="$t('tabdown.friends')"
to="/friends"
icon="fas fa-user-friends"
/>
<q-route-tab
v-if="static_data.functionality.ENABLE_VIEW_BOOKINGS"
v-if="site.confpages.bookingEvents"
class="mylabfooter"
:label="$t('tabdown.bookings')"
to="/admin/eventlist"
icon="fas fa-calendar-plus"
/>
<q-route-tab
v-if="site.footer_mobile.show_profile"
v-if="site.confpages.showViewProfile"
class="mylabfooter"
:label="$t('tabdown.profile')"
:to="`/my/`+getMyUsername()"

View File

@@ -94,6 +94,8 @@ export default defineComponent({
dark.value = tools.getCookie('darkmode', false, false, false) === '-1'
$q.dark.set(dark.value)
BeforeMount()
}
watch(() => globalStore.finishLoading, (value: any, oldval: any) => {
@@ -218,9 +220,8 @@ export default defineComponent({
}
function setshortlang(mylang: string) {
static_data.lang_available.forEach((langavail) => {
static_data.lang_available.forEach((langavail: any) => {
if (langavail.value === mylang) {
// console.log('static_data.lang_available[indrec].short', static_data.lang_available[indrec].short, static_data.lang_available[indrec].value)
langshort.value = langavail.short
return langshort.value
}
@@ -280,7 +281,7 @@ export default defineComponent({
const lang = computed({
get: () => $q.lang.isoName,
set: mylang => {
console.log('set lang', $q.lang.getLocale())
console.log('set lang', $q.lang.getLocale(), 'passato', mylang)
$q.lang.set(snakeToCamel(mylang))
// tools.showNotif($q, 'IMPOSTA LANG= ' + $i18n.locale)
// console.log('IMPOSTA LANG= ' + $i18n.locale)
@@ -334,7 +335,7 @@ export default defineComponent({
const color = (value === 'online') ? 'positive' : 'warning'
const statoconn = t('connection.conn') + ' ' + ((value === 'online') ? t('connection.online') : t('connection.offline'))
if (static_data.functionality.SHOW_IF_IS_SERVER_CONNECTION) {
if (site.confpages.showConnected) {
if (!!oldValue) {
tools.showNotif($q, statoconn, {
@@ -389,6 +390,8 @@ export default defineComponent({
function BeforeMount() {
// Estrai la Lang dal Localstorage
if (!globalStore.finishLoading)
return;
// console.log('$q.i18n=', $q.i18n, '$q.getLocale()=', $q.lang.isoName)
const mybrowserLang = getLangAtt()
@@ -572,6 +575,8 @@ export default defineComponent({
getColorText,
costanti,
dark,
iconConn,
clIconConn,
}
},

View File

@@ -52,14 +52,6 @@
<img :src="imglogo()" height="27" alt="Immagine Logo" />
</q-avatar>
<div class="q-mx-sm titlesite">{{ getappname() }}</div>
<div v-if="site.confpages.show_darkopt" class="text-h7">
<q-toggle
size="xs"
v-model="dark"
:label="dark ? 'Scuro' : 'Chiaro'"
>
</q-toggle>
</div>
</q-toolbar-title>
<!--
@@ -75,10 +67,13 @@
</div>
-->
<div v-if="site.confpages.show_darkopt" class="text-h7">
<q-toggle :icon="'fas fa-moon'" v-model="dark"> </q-toggle>
</div>
<q-btn
v-if="
!isonline() &&
static_data.functionality.SHOW_IF_IS_SERVER_CONNECTION
site.confpages.showConnected
"
flat
dense
@@ -91,7 +86,7 @@
<q-btn-dropdown
stretch
v-if="static_data.lang_available.length > 1"
v-if="isfinishLoading && static_data.lang_available.length > 1"
flat
:label="langshort"
auto-close
@@ -114,13 +109,13 @@
</q-list>
</q-btn-dropdown>
<div v-if="static_data.functionality.SHOW_MESSAGES">
<div v-if="site.confpages.showMsgs">
<message-popover></message-popover>
</div>
<div v-if="static_data.functionality.SHOW_COINS">
<div v-if="site.confpages.showCoins">
<coinsPopover v-model="rightCoinsOpen"></coinsPopover>
</div>
<div v-if="static_data.functionality.SHOW_NOTIF">
<div v-if="site.confpages.showNotif">
<notifPopover v-model="rightNotifOpen"></notifPopover>
</div>
@@ -133,7 +128,7 @@
<q-btn
class="q-mx-xs"
v-if="static_data.functionality.ENABLE_ECOMMERCE && tools.isLogged()"
v-if="site.confpages.enableEcommerce && tools.isLogged()"
round
dense
flat
@@ -153,7 +148,7 @@
<q-btn
class="q-mx-xs"
v-if="
static_data.functionality.ENABLE_ECOMMERCE &&
site.confpages.enableEcommerce &&
tools.isLogged() &&
getnumOrdersCart() > 0
"
@@ -175,7 +170,7 @@
<q-btn
class="q-mx-xs"
v-if="static_data.functionality.SHOW_USER_MENU && !tools.isLogged()"
v-if="site.confpages.showUserMenu && !tools.isLogged()"
dense
flat
round
@@ -185,7 +180,7 @@
</q-btn>
<q-avatar
v-else-if="
static_data.functionality.SHOW_USER_MENU &&
site.confpages.showUserMenu &&
tools.isLogged() &&
getMyImg()
"
@@ -214,10 +209,6 @@
>
</q-btn>
<!--<q-btn
class="q-mx-xs iconprofile_small" v-if="static_data.functionality.SHOW_USER_MENU && isLogged()" round dense flat
@click="rightDrawerOpen = !rightDrawerOpen" :icon="getMyImgforIcon()" :color="getcolormenu()">
</q-btn>-->
</q-toolbar>
</q-header>
@@ -235,7 +226,7 @@
<!-- USER BAR -->
<q-drawer
v-if="static_data.functionality.ENABLE_ECOMMERCE"
v-if="site.confpages.enableEcommerce"
v-model="rightCartOpen"
side="right"
elevated
@@ -257,7 +248,7 @@
</q-drawer>
<!-- USER BAR -->
<q-drawer
v-if="static_data.functionality.SHOW_USER_MENU"
v-if="site.confpages.showUserMenu"
v-model="rightDrawerOpen"
side="right"
elevated
@@ -396,7 +387,7 @@
<div v-show="!tools.isLogged()">
<div class="q-ma-md" style="">
<CSigninNoreg
:showregbutt="static_data.functionality.SHOW_REG_BUTTON"
:showregbutt="site.confpages.showRegButton"
>
</CSigninNoreg>
</div>

View File

@@ -854,12 +854,13 @@ h3 {
}
}
/*
.my-sticky-header-table .q-table__top,
.my-sticky-header-table .q-table__bottom,
.my-sticky-header-table thead tr:first-child th {
/* bg color is important for th; just specify one */
background-color: #f0ffff;
}
*/
.my-sticky-header-table thead tr th {
position: sticky;
@@ -964,6 +965,7 @@ h3 {
padding: 0;
}
.q-tab-panel {
padding: 4px;
}
@@ -1429,8 +1431,8 @@ h3 {
@keyframes zoomImg {
0% { transform: translate(-75%, 10%) scale(1.5); opacity: 0.6; }
20% { transform: translate(-15%, 10%) scale(1.5); opacity: 1; }
50% { transform: translate(-15%, 25%) scale(1.35); opacity: 1; }
80% { transform: translate(-65%, 25%) scale(1.35); opacity: 1; }
50% { transform: translate(-15%, 25%) scale(1.4); opacity: 1; }
80% { transform: translate(-65%, 25%) scale(1.4); opacity: 1; }
100% { transform: translate(-75%, 10%) scale(1.5); opacity: 0.6; }
}

View File

@@ -1,854 +1,52 @@
import {
IListRoutes,
ILang,
IFunctionality,
IPreloadImages,
ISites,
} from '@model'
import { func } from '@store/Modules/fieldsTable'
const functionality: IFunctionality = {
PWA: false,
SHOW_USER_MENU: true, // Cambiare con true
SHOW_PROFILE: true,
SHOW_REG_BUTTON: false,
ENABLE_REGISTRATION: false,
ENABLE_REG_BY_BOT: false,
ENABLE_REG_NEED_TELEGRAM: false,
SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: true,
ENABLE_TODOS_LOADING: false,
ENABLE_PROJECTS_LOADING: false,
SHOW_IF_IS_SERVER_CONNECTION: false,
SHOW_MESSAGES: false,
SHOW_NOTIF: false,
SHOW_COINS: false,
BOOKING_EVENTS: false,
ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true,
ENABLE_GROUPS: false,
ENABLE_CIRCUITS: false,
SHOW_COMPETENZE: false,
ENABLE_VIEW_GROUPS: false,
ENABLE_VIEW_USERS: false,
ENABLE_VIEW_PROFILE: false,
const firstPage = {
active: true,
order: 5,
path: '/',
materialIcon: 'home',
name: 'pages.home',
component: () => import('@src/root/home/home.vue'),
reqauth: false,
inmenu: true,
infooter: true,
}
// 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 :
function getDynamicPages(site: ISites): IListRoutes[] {
// 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' },
]
const routes_admin: IListRoutes[] = [
{
active: true,
order: 10,
path: '/admin/sites',
materialIcon: 'event_seat',
name: 'pages.Sites',
component: () => import('@/rootgen/admin/sites/sites.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1000,
path: '/admin/cfgserv',
materialIcon: 'event_seat',
name: 'pages.Admin',
component: () => import('@/views/admin/cfgServer/cfgServer.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1020,
path: '/admin/dbop',
materialIcon: 'event_seat',
name: 'pages.dbop',
component: () => import('@/views/admin/dbop/dbop.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1040,
path: '/admin/importfile',
materialIcon: 'event_seat',
name: 'otherpages.manage.importfile',
component: () => import('@/rootgen/admin/importdata/importdata.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
}
]
const routes_newsletter: IListRoutes[] = [
{
active: true,
order: 10,
name: 'newsletter.template', path: '/admin/newsletter/templemail', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 20,
name: 'newsletter.sendemail', path: '/admin/newsletter/newnewsletter', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 30,
name: 'newsletter.check', path: '/admin/newsletter/check', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 40,
name: 'newsletter.sent', path: '/admin/newsletter/newslist', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 50,
name: 'newsletter.mailinglist', path: '/admin/newsletter/mailinglist', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 60,
name: 'newsletter.settings', path: '/admin/newsletter/settings', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 70,
name: 'newsletter.serversettings', path: '/admin/newsletter/main_settings', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 80,
name: 'newsletter.others', path: '/admin/newsletter/events', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
}
]
const routes_ris: IListRoutes[] = [
{
active: true,
order: 10,
path: '/admin/ris/circuitslist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.circuitslist',
component: () => import('@/rootgen/admin/circuitsList/circuitsList.vue'),
inmenu: true,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
{
active: true,
order: 20,
path: '/admin/ris/accountslist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.accountslist',
component: () => import('@/rootgen/admin/accountsList/accountsList.vue'),
inmenu: true,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
{
active: true,
order: 30,
path: '/admin/ris/movslist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.movslist',
component: () => import('@/rootgen/admin/movsList/movsList.vue'),
inmenu: true,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
]
const routes_manager: IListRoutes[] = [
{
active: functionality.BOOKING_EVENTS,
order: 70,
path: '/admin/usereventlist',
materialIcon: 'edit',
name: 'otherpages.admin.usereventlist',
component: () => import('@/rootgen/admin/eventlist/eventlist.vue'),
inmenu: functionality.BOOKING_EVENTS,
submenu: functionality.BOOKING_EVENTS,
level_parent: 0,
level_child: 0.5,
infooter: false,
onlyManager: true,
onlyConsiglio: true,
onlyAdmin: true
},
{
active: true,
order: 10,
path: '/admin/userlist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.userlist',
component: () => import('@/rootgen/admin/usersList/usersList.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
{
active: true,
order: 10,
path: '/admin/userpanel',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.userpanel',
component: () => import('@/rootgen/admin/userPanel/userPanel.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
/*
{
active: true,
order: 10,
path: '/admin/iscritticonacreis',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.iscritticonacreis',
component: () => import('@/rootgen/admin/iscritticonacreis/iscritticonacreis.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
*/
{
active: true,
path: '/admin/ris',
order: 60,
faIcon: 'fa fa-list-alt',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.monete',
routes2: routes_ris,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true
},
{
active: false,
order: 10,
path: '/admin/zoomlist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.zoomlist',
component: () => import('@/rootgen/admin/zoomList/zoomList.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: false
},
{
active: true,
order: 27,
path: '/admin/tableslist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.tableslist',
component: () => import('@/rootgen/admin/tablesList/tablesList.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
{
active: true,
order: 30,
path: '/admin/pages',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.pages',
component: () => import('@/rootgen/admin/pages/pages.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 32,
path: '/admin/home',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.elems',
component: () => import('@/rootgen/admin/editElems/editElems.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
path: '/admin/bot',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.bot',
component: () => import('@/rootgen/admin/bot/bot.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
path: '/admin/confsite',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.confsite',
component: () => import('@/rootgen/admin/confsite/confsite.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
path: '/admin/newsletter',
order: 60,
faIcon: 'fa fa-list-alt',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.newsletter',
routes2: routes_newsletter,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true
},
/*
const baseroutes: IListRoutes[] = [
firstPage,
{
active: functionality.ENABLE_ECOMMERCE,
path: '/admin/ecommerce',
order: 31,
faIcon: 'fa fa-list-alt',
materialIcon: 'next_week',
name: 'pages.admin_ecommerce',
routes2: routes_admin_ecommerce,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true,
onlyDepartment: true
},
active: true,
order: 120,
path: '/editprofile',
materialIcon: 'fas fa-user',
name: 'pages.profile3',
component: () => import('@/views/user/editprofile/editprofile.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 135,
path: '/my/:username',
materialIcon: 'fas fa-user',
name: 'pages.profile2',
component: () => import('@/views/user/myprofile/myprofile.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
]
*/
{
active: true,
order: 35,
path: '/admin/msg_template',
materialIcon: 'fas fa-file-alt',
name: 'msgs.messages',
component: () => import('@/rootgen/admin/msg_template/msg_template.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
// onlyFacilitatore: true
},
{
active: true,
order: 1030,
path: '/admin/sendpushnotif',
materialIcon: 'event_seat',
name: 'otherpages.manage.sendpushnotif',
component: () => import('@/rootgen/admin/sendpushnotif/sendpushnotif.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true,
onlyManager: true,
},
{
active: true,
order: 40,
path: '/admin/gallery',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.gallery',
component: () => import('@/rootgen/admin/gallery/gallery.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
{
active: true,
order: 50,
path: '/admin/media',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.media',
component: () => import('@/rootgen/admin/uploader/uploader.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
]
const baseroutes: IListRoutes[] = [
{
active: true,
order: 5,
path: '/',
materialIcon: 'home',
name: 'pages.home',
component: () => import('@src/root/home/home.vue'),
reqauth: false,
inmenu: true,
infooter: true,
},
/*{
active: true,
order: 120,
path: '/myprofile',
materialIcon: 'fas fa-user',
name: 'pages.profile',
component: () => import('@/views/user/myprofile/myprofile.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},*/
{
active: true,
order: 120,
path: '/editprofile',
materialIcon: 'fas fa-user',
name: 'pages.profile3',
component: () => import('@/views/user/editprofile/editprofile.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: functionality.ENABLE_GROUPS,
order: 132,
path: '/groups',
materialIcon: 'fas fa-users',
name: 'mypages.groups',
component: () => import('@/views/user/mygroups/mygroups.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: functionality.ENABLE_CIRCUITS,
order: 133,
path: '/circuits',
materialIcon: 'fas fa-coins',
name: 'mypages.circuits',
component: () => import('@/views/user/mycircuits/mycircuits.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 135,
path: '/my/:username',
materialIcon: 'fas fa-user',
name: 'pages.profile2',
component: () => import('@/views/user/myprofile/myprofile.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 136,
path: '/grp/:groupname',
materialIcon: 'fas fa-user',
name: 'proj.group2',
component: () => import('@/views/user/mygroup/mygroup.vue'),
meta: { requiresAuth: true, newpage: true },
inmenu: false,
infooter: false,
}, {
active: true,
order: 137,
path: '/circuit/:path',
materialIcon: 'fas fa-user',
name: 'proj.circuit2',
component: () => import('@/views/user/mycircuit/mycircuit.vue'),
meta: { requiresAuth: true, newpage: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 130,
path: '/mypage/:idBacheca',
materialIcon: 'fas fa-user',
name: 'pages.mypage2',
component: () => import('@/views/user/mypagebacheca/mypagebacheca.vue'),
meta: { requiresAuth: true, newpage: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 130,
path: '/myservice/:idSkill',
materialIcon: '',
name: 'pages.myservice2',
component: () => import('@/views/user/myservice/myservice.vue'),
meta: { requiresAuth: true, newpage: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 135,
path: '/myhosps/:idHosp',
materialIcon: '',
name: 'pages.myhosps2',
component: () => import('@/views/user/mypagehosp/mypagehosp.vue'),
meta: { requiresAuth: true, newpage: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 132,
path: '/mygood/:idGood',
materialIcon: '',
name: 'pages.mygood2',
component: () => import('@/views/user/mypagegood/mypagegood.vue'),
meta: { requiresAuth: true, newpage: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 200,
path: '/notifs',
materialIcon: 'fas fa-user',
name: 'pages.notifs',
component: () => import('@/views/user/usernotifs/usernotifs.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 400,
path: '/test',
materialIcon: 'fas fa-test',
name: 'mypages.test',
component: () => import('@/views/testServer/testServer.vue'),
inmenu: false,
infooter: false,
},
{
active: true,
order: 15,
path: '/provapao',
materialIcon: 'fas fa-house-user',
name: 'mypages.provapao',
component: () => import('@/root/provapao/provapao.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 400,
path: '/testlocal',
materialIcon: 'fas fa-test',
name: 'mypages.TestLocal',
component: () => import('@/views/test/test.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 2000,
path: '/admin',
materialIcon: 'fas fa-user-shield',
name: 'otherpages.admin.menu',
inmenu: true,
routes2: routes_admin,
solotitle: true,
infooter: false,
onlyAdmin: true
},
...routes_admin,
{
active: true,
order: 2110,
path: '/manage',
materialIcon: 'fas fa-users-cog',
name: 'otherpages.manage.menu',
inmenu: true,
routes2: routes_manager,
solotitle: true,
infooter: false,
onlyAdmin: true,
onlyManager: true,
onlyFacilitatore: true,
onlyEditor: true
},
...routes_manager,
{
active: true,
order: 1000,
path: '/404error',
materialIcon: 'fas fa-calendar-plus',
name: 'otherpages.error404',
component: () => import('@/root/My404page/My404page.vue'),
inmenu: false,
infooter: false
},
{
active: true,
order: 2000,
path: '/policy',
materialIcon: 'fas fa-user',
name: 'pages.policy',
component: () => import('@src/root/policy/policy.vue'),
inmenu: false,
infooter: true
},
{
active: functionality.ENABLE_REG_BY_BOT,
order: 1000,
path: '/bot',
materialIcon: 'how_to_reg',
name: 'pages.SignUpBot',
inmenu: functionality.ENABLE_REG_BY_BOT,
infooter: functionality.ENABLE_REG_BY_BOT,
separator: false
},
{
active: functionality.ENABLE_REGISTRATION && !functionality.ENABLE_REG_NEED_TELEGRAM,
order: 1000,
path: '/signup',
materialIcon: 'how_to_reg',
name: 'pages.SignUp',
component: () => import('@/views/login/signup_noteleg/signup_noteleg.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'),
inmenu: false,
infooter: false,
separator: false
},
{
active: functionality.ENABLE_REGISTRATION,
order: 2000,
path: '/regok',
materialIcon: 'how_to_reg',
name: 'pages.regok',
component: () => import('@/views/login/regok/regok.vue'),
inmenu: false,
infooter: false,
separator: false,
},
{
active: true,
order: 1000,
path: '/signin',
materialIcon: 'account_circle',
name: 'pages.SignIn',
component: () => import('@/views/login/signin_noreg/signin_noreg.vue'),
inmenu: false,
infooter: true
},
// --- NOT IN MENU: ---
{
active: true,
order: 1000,
path: '/vreg',
name: 'pages.vreg',
component: () => import('@/views/login/vreg/vreg.vue')
},
{
active: true,
order: 1000,
path: '/requestresetpwd',
name: 'pages.requestresetpwd',
component: () => import('@/views/requestresetpwd/requestresetpwd.vue')
},
{
active: true,
order: 1000,
path: '/updatepassword',
name: 'pages.updatepassword',
component: () => import('@/views/updatepassword/updatepassword.vue')
},
{
active: true,
order: 1000,
path: '/offline',
name: 'Offline',
component: () => import('@/views/offline/offline.vue')
},
{
active: true,
path: '/separator',
name: 'separator',
order: 35,
isseparator: true,
inmenu: true,
},
/*{
active: true,
order: 80,
path: '/calendario-eventi',
materialIcon: 'event',
name: 'ris.calendario_eventi_riso',
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
extraclass: 'isCalendar',
inmenu: true,
infooter: true
},
*/
{
active: true,
order: 1000,
path: '/admin/newsletter/:idparam',
materialIcon: 'event',
name: 'pages.newsletter.menu',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: false,
infooter: false
},
{
active: true,
order: 90,
path: '/event/:typol/:eventid',
materialIcon: 'event',
name: 'pages.evento',
component: () => import('@/root/evento/evento.vue'),
inmenu: false,
infooter: false
},
{
active: true,
order: 110,
path: '/event/:typol',
materialIcon: 'event',
name: 'pages.eventodef',
component: () => import('@/root/evento/evento.vue'),
inmenu: false,
infooter: false
},
]
const arrLangUsed = [
'it',
'enUs',
// 'es',
]
return baseroutes
}
export function firstimagehome() {
@@ -856,34 +54,20 @@ export function firstimagehome() {
return img
}
const lang_available: ILang[] = [
{
label: 'Italiano', icon: 'fa-flag-it', value: 'it', image: '../images/it.png', short: 'IT',
},
{
label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../images/gb.png', short: 'EN',
},
/*{
label: 'Español', icon: 'fa-flag-es', value: 'es', image: '../images/es.png', short: 'ES',
},
*/
// { label: 'Français', icon: 'fa-facebook', value: 'fr', image: '../public/images/fr.png', short: 'FR' }
// { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../public/images/de.png', short: 'DE' },
]
const preLoadImages: IPreloadImages[] = []
export const lang_available: ILang[] = []
export const arrLangUsed: string[] = []
export const preloadedimages = []
export const routes = baseroutes
export const routes: IListRoutes[] = [firstPage]
export const static_data = {
baseroutes,
routes,
functionality,
arrLangUsed,
getDynamicPages,
lang_available,
preLoadImages,
arrLangUsed,
preloadedimages,
}

View File

@@ -94,7 +94,7 @@ export default defineComponent({
if (elem.extraclass) menu += ` ${elem.extraclass}`
console.log('menu', menu)
// console.log('menu', menu)
return menu
}

View File

@@ -16,7 +16,6 @@ export interface ICheckUser {
profile?: IUserProfile
}
export interface INotData {
num_reg?: number
online_today?: number
@@ -202,6 +201,9 @@ export interface IMyPage {
extraclass?: string
loadFirst?: boolean
showFooter?: boolean
//Memory
loaded?: boolean
}
export interface IOption {
@@ -212,11 +214,32 @@ export interface IConfPages {
font?: string
col_toolbar?: string
col_bgfooter?: string
show_darkopt: boolean
}
export interface IFooterMobile {
show_buttHome: boolean
show_profile: boolean
show_darkopt?: boolean
showButtHome?: boolean
showProfile?: boolean
showUserMenu?: boolean
showRegButton?: boolean
enableReg?: boolean
showNL?: boolean
showMsgs?: boolean
showNotif?: boolean
showCoins?: boolean
showNameSurname?: boolean
showCompetenze?: boolean
showConnected?: boolean
bookingEvents?: boolean
enableEcommerce?: boolean
enableGroups?: boolean
enableCircuits?: boolean
enableProj?: boolean
enableTodos?: boolean
enableRegByBot?: boolean
enabledRegNeedTelegram?: boolean
showViewGroups?: boolean
showViewUsers?: boolean
showViewProfile?: boolean
enablePwa?: boolean
lang?: number
}
export interface IContacts {
facebook: string
@@ -269,7 +292,6 @@ export interface ISites {
description?: string
keywords?: string
contacts?: IContacts
footer_mobile?: IFooterMobile
confpages: IConfPages
}
@@ -599,36 +621,6 @@ export interface IParamDialog {
param3?: any
}
export interface IFunctionality {
PWA?: boolean
ENABLE_REGISTRATION?: boolean
ENABLE_REG_BY_BOT?: boolean
ENABLE_REG_NEED_TELEGRAM?: boolean
SHOW_REG_BUTTON?: boolean
SHOW_PROFILE?: boolean
SHOW_USER_MENU?: boolean
SHOW_IF_IS_SERVER_CONNECTION?: boolean
ENABLE_TODOS_LOADING?: boolean
ENABLE_PROJECTS_LOADING?: boolean
ENABLE_ECOMMERCE?: boolean
SHOW_NEWSLETTER?: boolean
SHOW_ONLY_POLICY?: boolean
SHOW_MESSAGES?: boolean
SHOW_NOTIF?: boolean
SHOW_COINS?: boolean
BOOKING_EVENTS?: boolean
ENABLE_REG_AYNI?: boolean
ENABLE_REG_CNM?: boolean
ENABLE_REG_ISP?: boolean
SHOW_NAMESURNAME?: boolean
ENABLE_GROUPS?: boolean
ENABLE_CIRCUITS?: boolean
SHOW_COMPETENZE?: boolean
ENABLE_VIEW_GROUPS?: boolean
ENABLE_VIEW_USERS?: boolean
ENABLE_VIEW_PROFILE?: boolean
ENABLE_VIEW_BOOKINGS?: boolean
}
export interface IParLookup {
lk_tab?: string,

View File

@@ -90,13 +90,6 @@
<CPresentazione></CPresentazione>
<CCheckIfIsLogged></CCheckIfIsLogged>
<!--
<div v-if="!isLogged && static_data.functionality.ENABLE_REGISTRATION" align="center" style="margin:20px;">
<q-btn rounded size="lg" color="primary" to="/signup">{{$t('reg.submit')}}
</q-btn>
</div>
-->
</div>
<LandingFooter></LandingFooter>

View File

@@ -69,11 +69,11 @@
>
</CMyFieldDb>
<q-tabs v-model="tab" inline-label class="bg-yellow shadow-2">
<q-tabs v-model="tab" inline-label class="bg-gray shadow-2">
<q-tab name="server" label="Server" icon="mail" />
<q-tab name="contacts" label="Contatti" icon="mail" />
<q-tab name="pages" label="Pagine" icon="doc" />
<q-tab name="footer" label="Footer" icon="doc" />
<q-tab name="config" label="Config" icon="doc" />
<q-tab name="policy" label="Policy" icon="doc" />
</q-tabs>
@@ -224,16 +224,18 @@
>
</CMyFieldDb>
<CMyFieldRec
<CMyFieldDb
title="Opzioni Sito"
table="sites"
:id="mysite._id"
:rec="mysite"
mykey="confsite"
mysubkey="options"
field="confsite.options"
:canEdit="true"
:canModify="true"
jointable="confsite_opt"
:type="costanti.FieldType.binary"
>
</CMyFieldRec>
</CMyFieldDb>
</q-tab-panel>
<q-tab-panel name="pages">
<CMyFieldDb
@@ -286,30 +288,6 @@
>
</CMyFieldDb>
</q-tab-panel>
<q-tab-panel name="footer">
<CMyFieldDb
table="sites"
title="Mostra Bottone Home"
:id="mysite._id"
:rec="mysite"
mykey="footer_mobile"
mysubkey="show_buttHome"
debounce="1000"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
title="Mostra Bottone Profilo"
:id="mysite._id"
:rec="mysite"
mykey="footer_mobile"
mysubkey="show_profile"
debounce="1000"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
</q-tab-panel>
<q-tab-panel name="policy">
<CMyFieldDb
table="sites"
@@ -411,6 +389,253 @@
>
</CMyFieldDb>
</q-tab-panel>
<q-tab-panel name="config">
<CMyFieldDb
title="Lingue Utilizzate"
table="sites"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="lang"
field="confpages.lang"
jointable="confpages_lang"
:type="costanti.FieldType.binary"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showUserMenu')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showUserMenu"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showRegButton')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showRegButton"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.enableReg')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="enableReg"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showNL')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showNL"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showMsgs')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showMsgs"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showNotif')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showNotif"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showCoins')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showCoins"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showNameSurname')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showNameSurname"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showCompetenze')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showCompetenze"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showConnected')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showConnected"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.bookingEvents')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="bookingEvents"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.enableEcommerce')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="enableEcommerce"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.enableGroups')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="enableGroups"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.enableCircuits')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="enableCircuits"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.enableProj')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="enableProj"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.enableTodos')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="enableTodos"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.enableRegByBot')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="enableRegByBot"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.enabledRegNeedTelegram')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="enabledRegNeedTelegram"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<div class="q-ma-xs bg-blue-9">
<CMyFieldDb
table="sites"
:title="$t('confpages.showButtHome')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showButtHome"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showViewGroups')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showViewGroups"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showViewUsers')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showViewUsers"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showViewProfile')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showViewProfile"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
</div>
<CMyFieldDb
table="sites"
:title="$t('confpages.enablePwa')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="enablePwa"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
</q-tab-panel>
</q-tab-panels>
<div v-if="false">

657
src/router/routesAdmin.ts Normal file
View File

@@ -0,0 +1,657 @@
import { IListRoutes, ISites } from '@src/model'
function getRoutesAd(site: ISites) {
const routes_admin: IListRoutes[] = [
{
active: true,
order: 10,
path: '/admin/sites',
materialIcon: 'event_seat',
name: 'pages.Sites',
component: () => import('@/rootgen/admin/sites/sites.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1000,
path: '/admin/cfgserv',
materialIcon: 'event_seat',
name: 'pages.Admin',
component: () => import('@/views/admin/cfgServer/cfgServer.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1020,
path: '/admin/dbop',
materialIcon: 'event_seat',
name: 'pages.dbop',
component: () => import('@/views/admin/dbop/dbop.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
},
{
active: true,
order: 1040,
path: '/admin/importfile',
materialIcon: 'event_seat',
name: 'otherpages.manage.importfile',
component: () => import('@/rootgen/admin/importdata/importdata.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true
}
]
const routes_newsletter: IListRoutes[] = [
{
active: true,
order: 10,
name: 'newsletter.template', path: '/admin/newsletter/templemail', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 20,
name: 'newsletter.sendemail', path: '/admin/newsletter/newnewsletter', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 30,
name: 'newsletter.check', path: '/admin/newsletter/check', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 40,
name: 'newsletter.sent', path: '/admin/newsletter/newslist', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 50,
name: 'newsletter.mailinglist', path: '/admin/newsletter/mailinglist', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 60,
name: 'newsletter.settings', path: '/admin/newsletter/settings', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 70,
name: 'newsletter.serversettings', path: '/admin/newsletter/main_settings', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
},
{
active: true,
order: 80,
name: 'newsletter.others', path: '/admin/newsletter/events', materialIcon: 'fas fa-users',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: true, submenu: true, level_parent: 0.5, level_child: 0.5, onlyManager: true, noroute: true
}
]
const routes_ris: IListRoutes[] = [
{
active: true,
order: 10,
path: '/admin/ris/circuitslist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.circuitslist',
component: () => import('@/rootgen/admin/circuitsList/circuitsList.vue'),
inmenu: true,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
{
active: true,
order: 20,
path: '/admin/ris/accountslist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.accountslist',
component: () => import('@/rootgen/admin/accountsList/accountsList.vue'),
inmenu: true,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
{
active: true,
order: 30,
path: '/admin/ris/movslist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.movslist',
component: () => import('@/rootgen/admin/movsList/movsList.vue'),
inmenu: true,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
]
const routes_manager: IListRoutes[] = [
{
active: site.confpages?.bookingEvents,
order: 70,
path: '/admin/usereventlist',
materialIcon: 'edit',
name: 'otherpages.admin.usereventlist',
component: () => import('@/rootgen/admin/eventlist/eventlist.vue'),
inmenu: site.confpages.bookingEvents,
submenu: site.confpages.bookingEvents,
level_parent: 0,
level_child: 0.5,
infooter: false,
onlyManager: true,
onlyConsiglio: true,
onlyAdmin: true
},
{
active: true,
order: 10,
path: '/admin/userlist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.userlist',
component: () => import('@/rootgen/admin/usersList/usersList.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
{
active: true,
order: 10,
path: '/admin/userpanel',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.userpanel',
component: () => import('@/rootgen/admin/userPanel/userPanel.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
/*
{
active: true,
order: 10,
path: '/admin/iscritticonacreis',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.iscritticonacreis',
component: () => import('@/rootgen/admin/iscritticonacreis/iscritticonacreis.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: true
},
*/
{
active: true,
path: '/admin/ris',
order: 60,
faIcon: 'fa fa-list-alt',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.monete',
routes2: routes_ris,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true
},
{
active: false,
order: 10,
path: '/admin/zoomlist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.zoomlist',
component: () => import('@/rootgen/admin/zoomList/zoomList.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyFacilitatore: false
},
{
active: true,
order: 27,
path: '/admin/tableslist',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.tableslist',
component: () => import('@/rootgen/admin/tablesList/tablesList.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
{
active: true,
order: 30,
path: '/admin/pages',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.pages',
component: () => import('@/rootgen/admin/pages/pages.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 32,
path: '/admin/home',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.elems',
component: () => import('@/rootgen/admin/editElems/editElems.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
},
{
active: true,
order: 30,
path: '/admin/bot',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.bot',
component: () => import('@/rootgen/admin/bot/bot.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
},
{
active: true,
order: 30,
path: '/admin/confsite',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.confsite',
component: () => import('@/rootgen/admin/confsite/confsite.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
path: '/admin/newsletter',
order: 60,
faIcon: 'fa fa-list-alt',
materialIcon: 'fas fa-users',
name: 'otherpages.admin.newsletter',
routes2: routes_newsletter,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true
},
/*
{
active: functionality.ENABLE_ECOMMERCE,
path: '/admin/ecommerce',
order: 31,
faIcon: 'fa fa-list-alt',
materialIcon: 'next_week',
name: 'pages.admin_ecommerce',
routes2: routes_admin_ecommerce,
inmenu: false,
submenu: true,
level_parent: 0.5,
level_child: 0.5,
solotitle: true,
onlyAdmin: true,
onlyManager: true,
onlyDepartment: true
},
*/
{
active: true,
order: 35,
path: '/admin/msg_template',
materialIcon: 'fas fa-file-alt',
name: 'msgs.messages',
component: () => import('@/rootgen/admin/msg_template/msg_template.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
// onlyFacilitatore: true
},
{
active: true,
order: 1030,
path: '/admin/sendpushnotif',
materialIcon: 'event_seat',
name: 'otherpages.manage.sendpushnotif',
component: () => import('@/rootgen/admin/sendpushnotif/sendpushnotif.vue'),
level_parent: 0.0,
level_child: 0.5,
inmenu: true,
submenu: true,
onlyAdmin: true,
onlyManager: true,
},
{
active: true,
order: 40,
path: '/admin/gallery',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.gallery',
component: () => import('@/rootgen/admin/gallery/gallery.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
{
active: false,
order: 50,
path: '/admin/media',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.media',
component: () => import('@/rootgen/admin/uploader/uploader.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyAdmin: true,
onlyManager: true
},
]
const menuAdmins = [
{
active: true,
order: 200,
path: '/notifs',
materialIcon: 'fas fa-user',
name: 'pages.notifs',
component: () => import('@/views/user/usernotifs/usernotifs.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 400,
path: '/test',
materialIcon: 'fas fa-test',
name: 'mypages.test',
component: () => import('@/views/testServer/testServer.vue'),
inmenu: false,
infooter: false,
},
{
active: true,
order: 15,
path: '/provapao',
materialIcon: 'fas fa-house-user',
name: 'mypages.provapao',
component: () => import('@/root/provapao/provapao.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 400,
path: '/testlocal',
materialIcon: 'fas fa-test',
name: 'mypages.TestLocal',
component: () => import('@/views/test/test.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 2000,
path: '/admin',
materialIcon: 'fas fa-user-shield',
name: 'otherpages.admin.menu',
inmenu: true,
routes2: routes_admin,
solotitle: true,
infooter: false,
onlyAdmin: true
},
...routes_admin,
{
active: true,
order: 2110,
path: '/manage',
materialIcon: 'fas fa-users-cog',
name: 'otherpages.manage.menu',
inmenu: true,
routes2: routes_manager,
solotitle: true,
infooter: false,
onlyAdmin: true,
onlyManager: true,
onlyFacilitatore: true,
onlyEditor: true
},
...routes_manager,
{
active: true,
order: 1000,
path: '/404error',
materialIcon: 'fas fa-calendar-plus',
name: 'otherpages.error404',
component: () => import('@/root/My404page/My404page.vue'),
inmenu: false,
infooter: false
},
{
active: true,
order: 2000,
path: '/policy',
materialIcon: 'fas fa-user',
name: 'pages.policy',
component: () => import('@src/root/policy/policy.vue'),
inmenu: false,
infooter: true
},
{
active: site.confpages.enableRegByBot,
order: 1000,
path: '/bot',
materialIcon: 'how_to_reg',
name: 'pages.SignUpBot',
inmenu: site.confpages.enableRegByBot,
infooter: site.confpages.enableRegByBot,
separator: false
},
{
active: site.confpages.enableReg && !site.confpages.enabledRegNeedTelegram,
order: 1000,
path: '/signup',
materialIcon: 'how_to_reg',
name: 'pages.SignUp',
component: () => import('@/views/login/signup_noteleg/signup_noteleg.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'),
inmenu: false,
infooter: false,
separator: false
},
{
active: site.confpages.enableReg,
order: 2000,
path: '/regok',
materialIcon: 'how_to_reg',
name: 'pages.regok',
component: () => import('@/views/login/regok/regok.vue'),
inmenu: false,
infooter: false,
separator: false,
},
{
active: true,
order: 1000,
path: '/signin',
materialIcon: 'account_circle',
name: 'pages.SignIn',
component: () => import('@/views/login/signin_noreg/signin_noreg.vue'),
inmenu: false,
infooter: true
},
// --- NOT IN MENU: ---
{
active: true,
order: 1000,
path: '/vreg',
name: 'pages.vreg',
component: () => import('@/views/login/vreg/vreg.vue')
},
{
active: true,
order: 1000,
path: '/requestresetpwd',
name: 'pages.requestresetpwd',
component: () => import('@/views/requestresetpwd/requestresetpwd.vue')
},
{
active: true,
order: 1000,
path: '/updatepassword',
name: 'pages.updatepassword',
component: () => import('@/views/updatepassword/updatepassword.vue')
},
{
active: true,
order: 1000,
path: '/offline',
name: 'Offline',
component: () => import('@/views/offline/offline.vue')
},
{
active: true,
path: '/separator',
name: 'separator',
order: 35,
isseparator: true,
inmenu: true,
},
/*{
active: true,
order: 80,
path: '/calendario-eventi',
materialIcon: 'event',
name: 'ris.calendario_eventi_riso',
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
extraclass: 'isCalendar',
inmenu: true,
infooter: true
},
*/
{
active: true,
order: 1000,
path: '/admin/newsletter/:idparam',
materialIcon: 'event',
name: 'pages.newsletter.menu',
component: () => import('@/rootgen/admin/newsletter/newsletter.vue'),
inmenu: false,
infooter: false,
onlyAdmin: true
},
{
active: true,
order: 90,
path: '/event/:typol/:eventid',
materialIcon: 'event',
name: 'pages.evento',
component: () => import('@/root/evento/evento.vue'),
inmenu: false,
infooter: false
},
{
active: true,
order: 110,
path: '/event/:typol',
materialIcon: 'event',
name: 'pages.eventodef',
component: () => import('@/root/evento/evento.vue'),
inmenu: false,
infooter: false
},
]
return menuAdmins
}
export const routesAdmin = {
routesAd: getRoutesAd,
}

View File

@@ -1295,6 +1295,33 @@ const msg_it = {
lastdataupdate: 'Data ultimo Aggiornamento',
country: 'Paese',
},
confpages: {
showButtHome: 'Bottone Home',
showProfile: 'Profilo',
showUserMenu: 'Menu Utente',
showRegButton: 'Bottone Registrazione',
enableReg: 'Attiva Registrazione',
showNL: 'Newsletter',
showMsgs: 'Messaggi',
showNotif: 'Notifiche',
showCoins: 'Monete',
showNameSurname: 'Mostra Nome e Cognome',
showCompetenze: 'Mostra Competenze',
showConnected: 'Stato Connessione',
bookingEvents: 'Prenotazione Eventi',
enableEcommerce: 'ECommerce',
enableGroups: 'Gruppi',
enableCircuits: 'Circuiti',
enableProj: 'Mostra Project',
enableTodos: 'Mostra Todos',
enableRegByBot: 'Registratione By Bot',
enabledRegNeedTelegram: 'Reg con Telegram',
showViewGroups: 'Bott. Gruppi',
showViewUsers: 'Bott. Users',
showViewProfile: 'Bott. Profile',
enablePwa: 'PWA',
}
},
};

View File

@@ -17,6 +17,37 @@ export const costanti = {
CERCO: 2,
},
Lang: {
IT: 1,
EN: 2,
ES: 4,
FR: 8,
DE: 16,
},
ArrLang: [
{
label: 'Italiano',
value: 1,
},
{
label: 'Inglese',
value: 2,
},
{
label: 'Spagnolo',
value: 4,
},
{
label: 'Francese',
value: 8,
},
{
label: 'Tedesco',
value: 16,
},
],
ShowTypeTask: {
SHOW_LAST_N_COMPLETED: 200,
SHOW_ONLY_TOCOMPLETE: 201,

View File

@@ -1467,6 +1467,14 @@ export const colTableSites = [
fieldtype: costanti.FieldType.binary,
jointable: 'confsite_opt',
}),
AddCol({
name: 'confpages.lang',
field: 'confpages',
subfield: 'lang',
label_trans: 'confpages.lang',
fieldtype: costanti.FieldType.binary,
jointable: 'confpages_lang',
}),
AddCol({
name: 'policy.show',
field: 'policy',
@@ -1541,13 +1549,6 @@ export const colTableSites = [
subfield: 'whatsapp',
label_trans: 'reg.whatsapp',
}),
AddCol({
name: 'contacts.whatsapp',
field: 'contacts',
subfield: 'whatsapp',
label_trans: 'reg.whatsapp_home',
fieldtype: costanti.FieldType.boolean,
}),
AddCol({
name: 'contacts.telegram',
field: 'contacts',
@@ -1620,20 +1621,6 @@ export const colTableSites = [
label_trans: 'confpages.dark',
fieldtype: costanti.FieldType.boolean,
}),
AddCol({
name: 'footer_mobile.show_buttHome',
field: 'footer_mobile',
subfield: 'show_buttHome',
label_trans: 'reg.show_buttHome',
fieldtype: costanti.FieldType.boolean,
}),
AddCol({
name: 'footer_mobile.whatsapp',
field: 'footer_mobile',
subfield: 'show_profile',
label_trans: 'reg.show_profile',
fieldtype: costanti.FieldType.boolean,
}),
AddCol(DeleteRec),
AddCol(DuplicateRec),
]
@@ -2970,11 +2957,12 @@ export const fieldsTable = {
return this.tablesList.find((rec) => rec.value === mytable)
},
getColByTable(mytable: string, namecol: string) {
const tablerec: any = this.tablesList.find((rec) => rec.value === mytable)
if (tablerec) {
// console.log('tablerec', tablerec.columns)
console.log('tablerec', tablerec.columns)
const mycol = tablerec.columns.find((col: any) => col.name === namecol)
// console.log('mycol = ', mycol)
console.log('mycol = ', mycol)
return mycol
} else
return null
@@ -3096,15 +3084,7 @@ export const fieldsTable = {
},
userlist() {
if (static_data.functionality.ENABLE_REG_AYNI) {
return colTableUsers
} else if (static_data.functionality.ENABLE_REG_CNM) {
return colTableUsersCNM
} else if (static_data.functionality.ENABLE_REG_ISP) {
return colTableUsersISP
} else {
return colTableUsersBase
}
return colTableUsersISP
},
tablesList: [
@@ -3328,6 +3308,15 @@ export const fieldsTable = {
colicon: 'icon',
noshow: true,
},
{
value: 'confpages_lang',
label: 'Lingua',
columns: colTableGeneric,
colkey: 'value',
collabel: 'label',
colicon: 'icon',
noshow: true,
},
{
value: 'fonts_installed',
label: 'Font Installati',

View File

@@ -12,7 +12,7 @@ import {
ITodo,
IUserFields,
Privacy,
TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery, IMsgGlobParam, IUserExport, ISpecialField, IAccount, IMyCircuit, ISendCoin, IMovement, IMovVisu, INotif, IMyElem, IMyCard, ILabelValue, ILabelValueStr, IAnim,
TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery, IMsgGlobParam, IUserExport, ISpecialField, IAccount, IMyCircuit, ISendCoin, IMovement, IMovVisu, INotif, IMyElem, IMyCard, ILabelValue, ILabelValueStr, IAnim, ILang,
} from '@model'
import { fieldsTable } from '@store/Modules/fieldsTable'
@@ -2713,6 +2713,10 @@ export const tools = {
return true
},
getLangUsed() {
return static_data.lang_available.map((m: ILang) => m.value)
},
checkLangPassed($q: any, $router: Router, mylangpass: string) {
// console.log('checkLangPassed ', mylang)
const userStore = useUserStore()
@@ -2744,6 +2748,7 @@ export const tools = {
}
console.log('static_data.arrLangUsed', static_data.arrLangUsed, 'mylang', mylang)
if (!(static_data.arrLangUsed.includes(mylang))) {
// console.log('non incluso ', mylang)
// mylang = static_data.arrLangUsed[0]
@@ -4738,7 +4743,7 @@ export const tools = {
let ris = true
const online = this.getValDb('SITO_ONLINE', false, true)
ris = userStore.isAdmin && !pertutti ? true : online
console.log('sito_online', ris)
// console.log('sito_online', ris)
return ris
},
@@ -4964,7 +4969,10 @@ export const tools = {
},
isVerified(): boolean {
if (static_data.functionality.ENABLE_REG_NEED_TELEGRAM) {
const globalStore = useGlobalStore()
const site = globalStore.site
if (site.confpages.enabledRegNeedTelegram) {
return tools.TelegVerificato()
} else {
return this.isEmailVerified()
@@ -6445,19 +6453,24 @@ export const tools = {
}
},
getValueByRemoteField(col: IColGridTable, row: any, value: any, col_tabfooter: string) {
getValueByRemoteField(col: IColGridTable, row: any) {
if (col) {
if (col.remote_table && col.remote_key && col.remote_field && col_tabfooter) {
if (col.remote_table && col.remote_key && col.remote_field) {
const myarrremote = row[col.remote_table]
let myarr: any = []
for (const myrec of myarrremote) {
let myval = myrec[col.remote_field]
myarr.push(myval)
if (myarrremote) {
for (const myrec of myarrremote) {
let myval = myrec[col.remote_field]
myarr.push(myval)
}
}
console.log('myarrremote', myarrremote)
// console.log('myarr', myarr)
return myarr ? myarr.join(' - ') : ''
}
@@ -6507,6 +6520,11 @@ export const tools = {
obj.col_title = 'descr'
obj.col_footer = 'idCity'
obj.col_tabfooter = 'mycities'
} else if (table === 'cities') {
obj.prop_colkey = '_id'
obj.col_title = 'comune'
obj.col_footer = 'comune'
obj.col_tabfooter = 'mycities'
}
return obj
@@ -6860,6 +6878,25 @@ export const tools = {
return false
},
isLangEnabled(lang: number): any {
const globalStore = useGlobalStore()
if (globalStore.site) {
if (globalStore.site.confpages.hasOwnProperty('lang')) {
return this.isBitActive(globalStore.site.confpages.lang, lang)
}
if (!globalStore.site.confpages.hasOwnProperty('lang') || globalStore.site.confpages.lang === 0) {
if (lang === costanti.Lang.IT) {
return true
}
}
}
return false
},
getAskToVerifyReg(): boolean {
return this.getConfSiteOptionEnabled(shared_consts.ConfSite.Need_Aportador_On_DataReg_To_Verify_Reg)
},
@@ -7242,9 +7279,9 @@ export const tools = {
let mycl = ''
if (myanim)
mycl = (!!myanim.name ? myanim.name : '') +
' ' + (!!myanim.clduration ? myanim.clduration : '') +
' ' + (!!myanim.cldelay ? myanim.cldelay : '') +
' ' + (!!myanim.timingtype ? myanim.timingtype : '')
' ' + (!!myanim.clduration ? myanim.clduration : '') +
' ' + (!!myanim.cldelay ? myanim.cldelay : '') +
' ' + (!!myanim.timingtype ? myanim.timingtype : '')
else
mycl = ''
@@ -7255,6 +7292,20 @@ export const tools = {
},
getLabelFooterByRow(row: any, field: string, tablesel: string) {
if (field) {
const mycol = fieldsTable.getColByTable(tablesel, field)
if (mycol) {
console.log('remote_table = ', mycol.remote_table, 'remote_key', mycol.remote_key)
console.log('ROW', row)
return tools.getValueByRemoteField(mycol, row)
}
}
return ''
},
// getLocale() {
// if (navigator.languages && navigator.languages.length > 0) {
// return navigator.languages[0]

View File

@@ -266,6 +266,8 @@ export const toolsext = {
}
console.log('static_data.arrLangUsed', static_data.arrLangUsed, 'mylang', mylang)
if (!(static_data.arrLangUsed.includes(mylang))) {
// console.log('non incluso ', mylang)
// mylang = static_data.arrLangUsed[0]

View File

@@ -9,6 +9,8 @@ import { tools } from '@store/Modules/tools'
import { defineStore } from 'pinia'
import { useUserStore } from '@store/UserStore'
import { toolsext } from '@store/Modules/toolsext'
import { useGlobalStore } from './globalStore'
import { ref } from 'vue'
export const useProducts = defineStore('Products', {
state: (): IProductsState => ({
@@ -127,9 +129,11 @@ export const useProducts = defineStore('Products', {
async loadProducts() {
const userStore = useUserStore()
console.log('loadProducts')
const globalStore = useGlobalStore()
if (!static_data.functionality.ENABLE_ECOMMERCE)
// console.log('loadProducts')
if (!globalStore.site.confpages.enableEcommerce)
return null
console.log('getProducts', 'userid=', userStore.my._id)
@@ -170,8 +174,9 @@ export const useProducts = defineStore('Products', {
console.log('loadProduct', code)
const userStore = useUserStore()
const globalStore = useGlobalStore()
if (!static_data.functionality.ENABLE_ECOMMERCE)
if (!globalStore.site.confpages.enableEcommerce)
return null
console.log('getProduct', 'code', code)
@@ -204,8 +209,9 @@ export const useProducts = defineStore('Products', {
console.log('loadOrders')
const userStore = useUserStore()
const globalStore = useGlobalStore()
if (!static_data.functionality.ENABLE_ECOMMERCE)
if (!globalStore.site.confpages.enableEcommerce)
return null
console.log('loadOrders', 'userid=', userStore.my._id)
@@ -256,8 +262,9 @@ export const useProducts = defineStore('Products', {
async addToCart({ product, order }: { product: IProduct, order: IOrder }) {
const userStore = useUserStore()
const globalStore = useGlobalStore()
if (!static_data.functionality.ENABLE_ECOMMERCE)
if (!globalStore.site.confpages.enableEcommerce)
return null
const neworder = this.createOrderByProduct(product, order)
@@ -293,7 +300,9 @@ export const useProducts = defineStore('Products', {
async addSubQtyToItem({ addqty, subqty, order } : { addqty: boolean, subqty: boolean, order: IOrder }) {
const userStore = useUserStore()
if (!static_data.functionality.ENABLE_ECOMMERCE)
const globalStore = useGlobalStore()
if (!globalStore.site.confpages.enableEcommerce)
return null
// console.log('addSubQtyToItem', 'userid=', userStore.my._id, order)
@@ -326,8 +335,9 @@ export const useProducts = defineStore('Products', {
async UpdateStatusCart({ cart_id, status }: { cart_id:string, status: number }) {
const userStore = useUserStore()
const globalStore = useGlobalStore()
if (!static_data.functionality.ENABLE_ECOMMERCE)
if (!globalStore.site.confpages.enableEcommerce)
return null
// console.log('addSubQtyToItem', 'userid=', userStore.my._id, order)
@@ -356,8 +366,9 @@ export const useProducts = defineStore('Products', {
async UpdateOrderStatus({ order_id, status }: { order_id: string, status: number }) {
const userStore = useUserStore()
const globalStore = useGlobalStore()
if (!static_data.functionality.ENABLE_ECOMMERCE)
if (!globalStore.site.confpages.enableEcommerce)
return null
// console.log('addSubQtyToItem', 'userid=', userStore.my._id, order)

View File

@@ -364,7 +364,10 @@ export const useProjectStore = defineStore({
async dbLoad({ checkPending, onlyiffirsttime }: {checkPending: boolean, onlyiffirsttime: boolean}) {
if (!static_data.functionality.ENABLE_PROJECTS_LOADING)
const userStore = useUserStore()
const globalStore = useGlobalStore()
if (!globalStore.site.confpages.enableProj)
return null
if (onlyiffirsttime) {
@@ -382,11 +385,9 @@ export const useProjectStore = defineStore({
// console.log('dbLoad', nametable, checkPending, 'userid=', userStore.my._id)
const userStore = useUserStore()
const globalStore = useGlobalStore()
const ris = await Api.SendReq('/projects/' + userStore.my._id, 'GET', null)
.then((res) => {
if (res.data.projects) { // console.log('RISULTANTE CATEGORIES DAL SERVER = ', res.data.categories)
this.projects = res.data.projects
} else {

View File

@@ -257,7 +257,7 @@ export const useTodoStore = defineStore('Todos', {
const globalStore = useGlobalStore()
const userStore = useUserStore()
if (!static_data.functionality.ENABLE_PROJECTS_LOADING)
if (!globalStore.site.confpages.enableProj)
return null
// console.log('dbLoad', nametable, checkPending, 'userid=', userStore.my._id)

View File

@@ -276,7 +276,6 @@ export const useUserStore = defineStore('UserStore', {
if (username === '') return ''
// Check if is this User!
const myrec = this.getUserByUsername(username)
// console.log('myrec', myrec)
if (myrec && myrec.profile && !!myrec.profile.img && myrec.profile.img !== '' && myrec.profile.img !== 'undefined') {
return costanti.DIR_UPLOAD + 'profile/' + this.my.username + '/' + myrec.profile.img
}
@@ -968,21 +967,24 @@ export const useUserStore = defineStore('UserStore', {
globalStore.checkUpdates()
}
const isok = await globalStore.loadAfterLogin()
this.isLogged = isok && isLogged
console.log('this.isLogged', this.isLogged, 'isok', isok, 'isLogged', isLogged)
// console.log('this.isLogged', this.isLogged, 'isok', isok, 'isLogged', isLogged)
if (static_data.functionality.ENABLE_TODOS_LOADING)
if (globalStore.site.confpages.enableTodos)
await todos.dbLoad({ checkPending: true })
if (static_data.functionality.ENABLE_PROJECTS_LOADING)
if (globalStore.site.confpages.enableProj)
await projects.dbLoad({ checkPending: true, onlyiffirsttime: true })
globalStore.addDynamicPages($router)
static_data.lang_available = globalStore.getLangAvailable()
static_data.arrLangUsed = tools.getLangUsed()
// console.log('$router', $router)
globalStore.finishLoading = true
@@ -1002,7 +1004,7 @@ export const useUserStore = defineStore('UserStore', {
try {
const globalStore = useGlobalStore()
console.log('*** autologin_FromLocalStorage ***')
// console.log('*** autologin_FromLocalStorage ***')
// INIT
let isLogged = false
@@ -1026,77 +1028,11 @@ export const useUserStore = defineStore('UserStore', {
isLogged = tools.isLogged()
}
/*if (token) {
const expirationDateStr = localStorage.getItem(toolsext.localStorage.expirationDate)
const expirationDate = new Date(String(expirationDateStr))
const now = tools.getDateNow()
if (now < expirationDate) {
const _id = String(localStorage.getItem(toolsext.localStorage.userId))
const username = String(localStorage.getItem(toolsext.localStorage.username))
const name = String(localStorage.getItem(toolsext.localStorage.name))
const surname = String(localStorage.getItem(toolsext.localStorage.surname))
const verified_email = localStorage.getItem(toolsext.localStorage.verified_email) === 'true'
const verified_by_aportador = localStorage.getItem(toolsext.localStorage.verified_by_aportador) === 'true'
const made_gift = localStorage.getItem(toolsext.localStorage.made_gift) === 'true'
const myperm = localStorage.getItem(toolsext.localStorage.perm)
let perm = 0
if (myperm) perm = parseInt(myperm, 10)
const img = String(localStorage.getItem(toolsext.localStorage.img))
let teleg_id = 0
const telegid = localStorage.getItem(toolsext.localStorage.teleg_id)
if (telegid) teleg_id = parseInt(telegid, 10)
globalStore.wasAlreadySubOnDb = localStorage.getItem(toolsext.localStorage.wasAlreadySubOnDb) === 'true'
console.log('************* autologin _id', _id)
this.setAuth(token)
this.authUser({
_id,
username,
name,
surname,
verified_email,
verified_by_aportador,
made_gift,
perm,
profile: {
img,
teleg_id,
myshares: [],
friends: [],
req_friends: [],
asked_friends: [],
mygroups: [],
asked_groups: [],
manage_mygroups: []
},
})
isLogged = true
}
}*/
return await this.setGlobal($router, isLogged)
.then((loadstorage: any) => {
console.log('RISULT setGlobal:', loadstorage)
if (loadstorage) {
if ($q.screen.gt.sm) {
// globalStore.setleftDrawerOpen(true)
}
/*if (toolsext.getLocale() !== '') {
// console.log('SETLOCALE :', this.$i18n.locale)
$i18n.locale = toolsext.getLocale() // Set Lang
} else {
userStore.setlang($router, this.$i18n.locale)
}*/
globalroutines('loadapp', '')
// Create Subscription to Push Notification
@@ -1104,9 +1040,6 @@ export const useUserStore = defineStore('UserStore', {
}
})
// console.log('autologin _id STATE ', this._id)
// return true
} catch (e: any) {
console.error('ERR autologin ', e.message)
return false

View File

@@ -9,6 +9,7 @@ import {
IMyPage, IMySkill, IParamsPickup,
IParamsQuery,
ISettings,
ISites,
StateConnection,
} from '@model'
import { static_data } from '@src/db/static_data'
@@ -32,6 +33,8 @@ import { useTodoStore } from '@store/Todos'
import { useMessageStore } from './MessageStore'
import { useNotifStore } from '@store/NotifStore'
import { useCircuitStore } from '@store/CircuitStore'
import { routesAdmin } from '@src/router/routesAdmin'
import LandingFooter from '@src/components/LandingFooter/LandingFooter'
const stateConnDefault = 'online'
@@ -270,7 +273,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
return state.skills
else if (table === 'goods')
return state.goods
// else if (table === 'subskills')
// else if (table === 'subskills')
// return state.subSkills
else if (table === 'statusSkills')
return state.statusSkills
@@ -306,7 +309,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
},
actions: {
setValueSettingsByKey({ key, value, serv }: {key: string, value: any, serv: boolean}): any {
setValueSettingsByKey({ key, value, serv }: { key: string, value: any, serv: boolean }): any {
// Update the Server
// Update in Memory
@@ -351,6 +354,43 @@ export const useGlobalStore = defineStore('GlobalStore', {
return this.stateConnection === 'online'
},
getLangAvailable() {
let myarrLang = []
// console.log('lang Server: ', this.site.confpages.lang)
if (tools.isLangEnabled(costanti.Lang.IT)) {
myarrLang.push({
label: 'Italiano', icon: 'fa-flag-it', value: 'it', image: '../images/it.png', short: 'IT',
})
}
if (tools.isLangEnabled(costanti.Lang.EN)) {
// console.log('ENG')
myarrLang.push(
{
label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../images/gb.png', short: 'EN',
},
)
}
if (tools.isLangEnabled(costanti.Lang.ES)) {
myarrLang.push(
{
label: 'Español', icon: 'fa-flag-es', value: 'es', image: '../images/es.png', short: 'ES',
},
)
}
if (tools.isLangEnabled(costanti.Lang.FR)) {
myarrLang.push(
{ label: 'Français', icon: 'fa-facebook', value: 'fr', image: '../public/images/fr.png', short: 'FR' })
}
if (tools.isLangEnabled(costanti.Lang.DE)) {
myarrLang.push(
{ label: 'German', icon: 'fa-flag-de', value: 'de', image: '../public/images/de.png', short: 'DE' }
)
}
return myarrLang
},
addDynamicPages($router: Router | null) {
// console.log('this.mypage', this.mypage)
// console.log('addDynamicPages')
@@ -387,6 +427,10 @@ export const useGlobalStore = defineStore('GlobalStore', {
}
}
const baseroutes = static_data.getDynamicPages(this.site);
const adminRoutes = routesAdmin.routesAd(this.site);
const last = {
active: true,
order: 10000,
@@ -412,7 +456,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (!toolsext.sito_online(false)) {
static_data.routes = [sito_offline, last]
} else {
static_data.routes = [...static_data.baseroutes, ...arrpagesroute, last]
static_data.routes = [...baseroutes, ...adminRoutes, ...arrpagesroute, last]
}
for (const menu of static_data.routes) {
@@ -433,17 +477,13 @@ export const useGlobalStore = defineStore('GlobalStore', {
// console.log('$router', $router)
if ($router) {
if (tools.sito_online(false)) {
// console.log('SITO ONLINE', arrpagesroute)
arrpagesroute.forEach((route: any) => {
static_data.routes.forEach((route: any) => {
if (!$router.hasRoute(route.name)) {
$router.addRoute(route)
})
}
})
$router.addRoute(last)
} else {
// console.log('SITO OFFLINE')
$router.addRoute(sito_offline)
$router.addRoute(last)
if (!tools.sito_online(false)) {
$router.replace('/sito_offline')
}
@@ -587,7 +627,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
// return
// }
if (!static_data.functionality.PWA)
if (!this.site.confpages.enablePwa)
return
if (!('serviceWorker' in navigator)) {
@@ -717,7 +758,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
//
}
if (static_data.functionality.PWA) {
if (this.site.confpages.enablePwa) {
if ('serviceWorker' in navigator) {
// REMOVE ALL SUBSCRIPTION
console.log('REMOVE ALL SUBSCRIPTION...')
@@ -736,8 +777,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
}
})
}).catch((err) => {
console.error('err ready service worker', err)
})
console.error('err ready service worker', err)
})
}
}
@@ -817,7 +858,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async sendPushNotif({ params }: {params: any}) {
async sendPushNotif({ params }: { params: any }) {
return Api.SendReq('/push/send', 'POST', { params })
.then((res) => {
@@ -920,8 +961,10 @@ export const useGlobalStore = defineStore('GlobalStore', {
path = path.substring(1)
const mypage = this.getPage(`/${path}`)
console.log('mypage', mypage)
// Controlla se l'ho già caricato
if (!!mypage && (!!mypage.content || mypage.loadFirst)) {
if (!!mypage && (!!mypage.content || mypage.loadFirst || mypage.loaded)) {
return mypage
}
@@ -935,6 +978,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (index >= 0) {
console.log('load page', path, '...')
this.mypage[index] = res.data.mypage
this.mypage[index].loaded = true
}
return res.data.mypage
}
@@ -1045,7 +1089,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
.catch((error) => false)
},
async callFunz({ mydata }: {mydata: any}) {
async callFunz({ mydata }: { mydata: any }) {
// console.log('saveFieldValue', mydata)
return Api.SendReq('/callfunz', 'PATCH', { data: mydata })
@@ -1060,7 +1104,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async askFunz({ mydata }: {mydata: any}) {
async askFunz({ mydata }: { mydata: any }) {
// console.log('saveFieldValue', mydata)
return Api.SendReq('/askfunz', 'PATCH', { data: mydata })
@@ -1072,7 +1116,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async DeleteRec({ table, id }: {table: string, id: string}) {
async DeleteRec({ table, id }: { table: string, id: string }) {
console.log('DeleteRec', table, id)
return Api.SendReq('/delrec/' + table + '/' + id, 'DELETE', null)
@@ -1090,7 +1134,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async DeleteFile({ filename }: {filename: string}) {
async DeleteFile({ filename }: { filename: string }) {
console.log('DeleteFile', filename)
return Api.SendReq(`/delfile/${tools.getvers()}/`, 'DELETE', { filename })
@@ -1108,7 +1152,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async DuplicateRec({ table, id }: {table: string, id: string}) {
async DuplicateRec({ table, id }: { table: string, id: string }) {
console.log('DuplicateRec', id)
return Api.SendReq('/duprec/' + table + '/' + id, 'POST', null)
@@ -1126,7 +1170,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async InviaMsgADonatori({ msgobj, navemediatore, tipomsg }: {msgobj: any, navemediatore: any, tipomsg: any}) {
async InviaMsgADonatori({ msgobj, navemediatore, tipomsg }: { msgobj: any, navemediatore: any, tipomsg: any }) {
console.log('InviaMsgADonatori', msgobj)
const mydata = {
@@ -1155,7 +1199,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async InviaMsgAFlotta({ flotta, inviareale, inviaemail, tipomsg }: {flotta: any, inviareale: boolean, inviaemail: boolean, tipomsg: any}) {
async InviaMsgAFlotta({ flotta, inviareale, inviaemail, tipomsg }: { flotta: any, inviareale: boolean, inviaemail: boolean, tipomsg: any }) {
console.log('InviaMsgAFlotta')
const mydata = {
@@ -1225,7 +1269,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async GetNave({ riga, col, riga1don, col1don, ind_order }: {riga: any, col: any, riga1don: any, col1don: any, ind_order: number}) {
async GetNave({ riga, col, riga1don, col1don, ind_order }: { riga: any, col: any, riga1don: any, col1don: any, ind_order: number }) {
// console.log('GetNave')
const mydata = {
@@ -1252,7 +1296,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async GetData({ data }: {data: any}) {
async GetData({ data }: { data: any }) {
console.log('GetData')
const mydata = {
@@ -1275,7 +1319,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async GetArrDoniNavi({ ricalcola, showall }: {ricalcola: boolean, showall: boolean}) {
async GetArrDoniNavi({ ricalcola, showall }: { ricalcola: boolean, showall: boolean }) {
console.log('GetArrDoniNavi')
const mydata = {
@@ -1299,7 +1343,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async GetFlotte({ ricalcola, showall }: {ricalcola: boolean, showall: boolean}) {
async GetFlotte({ ricalcola, showall }: { ricalcola: boolean, showall: boolean }) {
console.log('GetFlotte')
const mydata = {
@@ -1323,7 +1367,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async GetFlotta({ riga, col_prima, col_ultima }: {riga: any, col_prima: any, col_ultima: any}) {
async GetFlotta({ riga, col_prima, col_ultima }: { riga: any, col_prima: any, col_ultima: any }) {
console.log('GetFlotta')
const mydata = {
@@ -1416,6 +1460,10 @@ export const useGlobalStore = defineStore('GlobalStore', {
this.mailinglist = (res.data.mailinglist) ? [...res.data.mailinglist] : []
}
this.mypage = (res.data.mypage) ? [...res.data.mypage] : []
for (const page of this.mypage) {
if (page.loadFirst)
page.loaded = true
}
this.myelems = (res.data.myelems) ? [...res.data.myelems] : []
// console.log('this.mypage', this.mypage)
@@ -1466,7 +1514,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async sendEmailTest({ previewonly }: {previewonly: any}) {
async sendEmailTest({ previewonly }: { previewonly: any }) {
const usertosend = {
locale: tools.getLocale(),
previewonly
@@ -1634,6 +1682,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
else if (table === 'fieldstype') myarr = costanti.FieldTypeArr
else if (table === 'metodo_pagamento') myarr = tools.SelectMetodiPagamento
else if (table === 'confsite_opt') myarr = tools.ConfSiteOpt
else if (table === 'confpages_lang') myarr = costanti.ArrLang
else if (table === 'bottype') myarr = shared_consts.BotType
else if (table === 'visibility') myarr = shared_consts.Visibility
else if (table === 'cat_interesse_arcadei') myarr = shared_consts.Cat_Interesse_Arcadei
@@ -1743,7 +1792,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (!myelem._id)
return false
return await this.DeleteRec({table: 'myelems', id: myelem._id }).then((ris) => {
return await this.DeleteRec({ table: 'myelems', id: myelem._id }).then((ris) => {
if (ris) {
this.myelems = this.myelems.filter((rec) => rec._id !== myelem._id)
tools.showPositiveNotif($q, t('db.deletedrecord'))

View File

@@ -1,24 +1,29 @@
<template>
<div class="q-gutter-sm q-pa-xs q-pb-md">
<CTitleBanner
class="q-pa-xs" :title="$t('pages.profile')" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
class="q-pa-xs"
:title="$t('pages.profile')"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad"
:canopen="true"
>
<div class="column">
<div class="myrow">
<div v-if="static_data.functionality.SHOW_NAMESURNAME">
<div v-if="site.confpages.showNameSurname">
<CMyFieldDb
:title="$t('reg.name')"
table="users"
mykey="name"
:type="costanti.FieldType.string">
:type="costanti.FieldType.string"
>
</CMyFieldDb>
<CMyFieldDb
:title="$t('reg.surname')"
table="users"
mykey="surname"
:type="costanti.FieldType.string">
:type="costanti.FieldType.string"
>
</CMyFieldDb>
</div>
</div>
@@ -29,14 +34,16 @@
mykey="username"
:disable="true"
:readonly="true"
:type="costanti.FieldType.string">
:type="costanti.FieldType.string"
>
</CMyFieldDb>
<CMyFieldDb
:title="$t('reg.username_telegram')"
table="users"
mykey="profile"
mysubkey="username_telegram"
:type="costanti.FieldType.string">
:type="costanti.FieldType.string"
>
</CMyFieldDb>
</div>
<div class="myrow">
@@ -45,18 +52,20 @@
table="users"
mykey="email"
:disable="true"
:type="costanti.FieldType.string">
:type="costanti.FieldType.string"
>
</CMyFieldDb>
<CMyFieldDb
:title="$t('reg.website')"
table="users"
mykey="profile"
mysubkey="website"
:type="costanti.FieldType.string">
:type="costanti.FieldType.string"
>
</CMyFieldDb>
</div>
<br/>
<br />
<div class="myrow justify-center">
<q-btn
push
@@ -65,14 +74,13 @@
text-color="blue"
size="md"
to="/requestresetpwd"
:label="$t('reg.modificapassword')">
:label="$t('reg.modificapassword')"
>
</q-btn>
</div>
</div>
</CTitleBanner>
<!--
<CTitleBanner
class="q-pa-xs" title="Competenze Personali (Offerte)" bgcolor="bg-primary" clcolor="text-white"
@@ -88,16 +96,21 @@
-->
<CTitleBanner
class="q-pa-xs" title="Informazioni su di te" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
class="q-pa-xs"
title="Informazioni su di te"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad"
:canopen="true"
>
<div class="myrow">
<CMyFieldDb
:title="$t('reg.photo')"
table="users"
mykey="profile"
mysubkey="img"
:type="costanti.FieldType.image">
:type="costanti.FieldType.image"
>
</CMyFieldDb>
</div>
@@ -106,9 +119,10 @@
table="users"
mykey="profile"
mysubkey="qualifica"
maxlength="100"
:maxlength="100"
:showall="true"
:type="costanti.FieldType.string">
:type="costanti.FieldType.string"
>
</CMyFieldDb>
<CMyFieldDb
@@ -116,10 +130,11 @@
table="users"
mykey="profile"
mysubkey="biografia"
maxlength="1000"
:maxlength="1000"
hint="Scrivi chi sei e quale percorso formativo hai fatto"
:showall="true"
:type="costanti.FieldType.string">
:type="costanti.FieldType.string"
>
</CMyFieldDb>
<div class="myrow">
@@ -131,7 +146,8 @@
:useinput="false"
mysubkey="nationality"
:pickup="true"
:type="costanti.FieldType.nationality">
:type="costanti.FieldType.nationality"
>
</CMyFieldDb>
<!--
@@ -151,7 +167,7 @@
-->
<CMyFieldRec
:title="t('reg.born_city')"
:title="$t('reg.born_city')"
table="users"
tablesel="cities"
:id="myuser._id"
@@ -159,22 +175,21 @@
field="profile.born_city_id"
:sameclassasfielddb="true"
:canEdit="true"
:canModify="true">
:canModify="true"
>
</CMyFieldRec>
<CMyFieldDb
:title="$t('reg.dateofbirth')"
table="users"
mykey="profile"
mysubkey="dateofbirth"
:type="costanti.FieldType.date">
:type="costanti.FieldType.date"
>
</CMyFieldDb>
</div>
<div class="myrow">
<CMyFieldDb
:title="$t('reg.intcode_cell')"
table="users"
@@ -182,18 +197,18 @@
mysubkey="intcode_cell"
:type="costanti.FieldType.intcode"
tablesel="phones"
:pickup="true">
:pickup="true"
>
</CMyFieldDb>
<CMyFieldDb
:title="$t('reg.cell')"
table="users"
mykey="profile"
mysubkey="cell"
:type="costanti.FieldType.string">
:type="costanti.FieldType.string"
>
</CMyFieldDb>
</div>
</CTitleBanner>
<!--
@@ -328,12 +343,17 @@
</CTitleBanner>
-->
<br><br>
<br /><br />
<div class="text-center">
<q-btn rounded size="md" color="negative" @click="eliminaAccount" :label="$t('reg.cancella_account')">
<q-btn
rounded
size="md"
color="negative"
@click="eliminaAccount"
:label="$t('reg.cancella_account')"
>
</q-btn>
</div>
</div>
</template>

View File

@@ -43,6 +43,8 @@ export default defineComponent({
const $q = useQuasar()
const { t } = useI18n()
const site = ref(globalStore.site)
const { getRefLink } = MixinUsers()
const animation = ref('fade')
@@ -193,6 +195,7 @@ export default defineComponent({
listgroupsfiltered,
idnotif,
showsendCoinTo,
site,
}
}
})

View File

@@ -37,7 +37,7 @@
</CTitleBanner>
</div>
<div v-if="static_data.functionality.SHOW_NAMESURNAME">
<div v-if="site.confpages.showNameSurname">
<div class="text-h6">
<span v-if="checkifShow('name')"> {{ myuser.name }}</span> <span v-if="checkifShow('surname')">{{
myuser.surname
@@ -193,7 +193,7 @@
</div>
<CTitleBanner
v-if="static_data.functionality.SHOW_COMPETENZE"
v-if="site.confpages.showCompetenze"
class="" :title="$t('profile.skills')" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">