95 Commits

Author SHA1 Message Date
Surya Paolo
a831f37069 Circuito Italia, dettagli... 2023-11-27 11:13:01 +01:00
Surya Paolo
114af5b3fd - tutorial Circuito Ris Italia
- Invia RIS (visibile per tutti)
2023-11-26 01:38:09 +01:00
Surya Paolo
cfea22b944 fixed: se aggiungo una Provincia sul frontend non si aggiungeva 2023-11-24 17:52:26 +01:00
Surya Paolo
59efb5c7af PiuCheBuono1 2023-11-23 16:11:59 +01:00
Surya Paolo
cf6446ffc4 Merge branch 'develop' of ssh://risosrv:5522/~/repository/newfreeplanet into develop 2023-11-23 15:51:34 +01:00
Surya Paolo
27b3977ad4 aa 2023-11-23 15:35:23 +01:00
Surya Paolo
446b555b46 Click per mandare un messaggio al Destinatario dei RIS, se non è entrato ancora in RIS ITALIA. 2023-11-19 23:40:50 +01:00
Surya Paolo
0642375eaf Quando accedi al Circuito RIS Nazionale, ti imposta il Fido e QtaMax DOPPIA rispetto al tuo Circuito Locale 2023-11-15 17:50:24 +01:00
Surya Paolo
a071d17410 ver 1.0.19 2023-11-03 12:49:17 +01:00
Surya Paolo
cb11903707 Versione 1.0.17
- Fix saldo pendente
- aggiunto bottone markup Telegram
- aggionta opzione per registrarsi direttamente su Telegram, senza doversi registrare ad un sito
2023-10-21 15:28:01 +02:00
Surya Paolo
018cf0bd99 - se iOS non ricarica la pagina ma disinstalla il SW precedente e chiede di riavviare
- fixed: Creando un Conto di Gruppo, pare che venga impostato anche l'username... invece dev'essere solo il groupname
-
2023-10-03 23:17:02 +02:00
Surya Paolo
c02037b35c correzione numseen, numfav, ...: ora li ho aggiunti alle tabelle... 2023-10-03 00:40:54 +02:00
Surya Paolo
31598e3fbd - Migliorata la Notifica degli Eventi su Telegram
- Gli annunci (beni/servizi/ospitalità) ora possono essere visti anche tramite un link, anche per chi non è dentro alla App.
- Aggiunto bottone "Aggiorna" per aggiornare il Saldo attuale.
- I "Conti Collettivi" ora vengono chiamati Gruppi (o Conto di Gruppo).
2023-10-01 01:24:55 +02:00
Surya Paolo
bfceb64811 update quasar 2023-09-28 17:12:59 +02:00
Surya Paolo
2b359d5260 Fixed: le reactions devono stare in una tabella a parte (reactions).
- cambiata la gestione dei seen, fav, book, attend
2023-09-27 18:39:05 +02:00
Surya Paolo
f88b753f26 Modifiche prima di Luglio... 2023-08-27 23:56:18 +02:00
Surya Paolo
800df74f3f l'admin non riesce a cambiare il fido degli utenti... 2023-06-20 01:08:08 +02:00
Surya Paolo
874faacd0b default min e max fido e accumulo, per Circuito 2023-06-19 00:47:25 +02:00
Surya Paolo
41ac42b190 la creazione dell'annuncio impiega troppo tempo (e le persone cliccavano su "Salva" più volte)... 2023-06-18 22:29:27 +02:00
Surya Paolo
ef4751dfb2 la creazione dell'annuncio impiega troppo tempo (e le persone cliccavano su "Salva" più volte)... 2023-06-18 22:29:12 +02:00
Surya Paolo
33493bdfe4 Controllare che le notifiche per gli Eventi arrivino agli utenti (se io sono in una provincia mi deve arrivare almeno quella) 2023-06-07 18:46:14 +02:00
Surya Paolo
1a57d5a2e3 Quando si inserisce un evento, su giunge alla fine, si salva, NON SI MEMORIZZANO foto, data e orario! 2023-06-07 17:25:14 +02:00
Surya Paolo
9908558bf7 Poter modificare i limiti min e max su di 1 circuito specifico 2023-06-07 12:41:10 +02:00
Surya Paolo
57eb8ee203 Notifica Telegram e Push quando mandi la stretta di mano 2023-06-07 10:15:10 +02:00
Surya Paolo
bd3a9557e2 Filtra Ricerca... 2023-06-05 16:36:06 +02:00
Surya Paolo
e805088da7 - L'utente entra direttamente sul circuito, con fido a zero.
++Abilitazione Fido utente (per admin).
2023-06-01 11:40:26 +02:00
Surya Paolo
616a6c4218 - L'utente entra direttamente sul circuito, con fido a zero.
++Abilitazione Fido utente (per admin).
2023-06-01 11:40:04 +02:00
Surya Paolo
16e3dcc9d0 eventi grafica 2023-04-17 02:05:03 +02:00
Surya Paolo
3cf4562285 ++ aggiunta la prenotazione negli eventi. con la lista degli utenti. 2023-04-17 00:11:45 +02:00
Surya Paolo
6f1f962c0a aggiunto "Seen" 2023-04-13 14:27:06 +02:00
Surya Paolo
35db79b479 set notif if service your province 2023-04-13 13:46:53 +02:00
Surya Paolo
dc502611fa favorite: send if alert active 2023-04-12 16:29:30 +02:00
Surya Paolo
fb68df418d fix: ordinamento membri (namecomplete (concat: name, surname, username) 2023-04-12 15:37:47 +02:00
Surya Paolo
cfed7552b1 versione 0.6.3 2023-04-07 22:37:28 +02:00
Surya Paolo
c122f0930e ver 0.6.3 2023-04-07 22:20:17 +02:00
Surya Paolo
5789567cd2 aktre modifiche sistemando... 2023-04-07 21:48:33 +02:00
Surya Paolo
32b2eb4755 aggio2 2023-04-07 21:22:04 +02:00
Surya Paolo
41fa886bc8 aggiornamento... 2023-04-07 21:10:16 +02:00
Surya Paolo
a8eb6344ef Revert "Aggiornamento a 0.6.1"
This reverts commit 701e1f1968.
2023-04-07 20:07:56 +02:00
Surya Paolo
9c08ebaacd Revert "Aggiornamento a 0.6.1"
This reverts commit 701e1f1968.
2023-04-07 18:38:46 +02:00
Surya Paolo
eb4998dcd2 Revert "Aggiornamento a 0.6.1"
This reverts commit 701e1f1968.
2023-04-07 18:38:22 +02:00
Surya Paolo
799a8a0e15 Revert "nuova veste grafica: myskills, mygoods, mybachecas, myhosps,"
This reverts commit 6fad472211.
2023-04-07 18:24:15 +02:00
Surya Paolo
6e6e363059 Revert "Aggiornamento a 0.6.1"
This reverts commit 701e1f1968.
2023-04-07 18:01:48 +02:00
Surya Paolo
7148b773ea Revert "cambio nome ai circuiti"
This reverts commit 0365c58326.
2023-04-07 17:21:22 +02:00
Surya Paolo
701e1f1968 Aggiornamento a 0.6.1 2023-04-07 17:14:51 +02:00
Surya Paolo
6fad472211 nuova veste grafica: myskills, mygoods, mybachecas, myhosps,
- cambiato id (da numero a stringa)
2023-04-07 02:46:27 +02:00
Surya Paolo
edcd244397 new version Visualizzazione Service 2023-04-04 15:27:03 +02:00
Surya Paolo
0365c58326 cambio nome ai circuiti 2023-03-23 15:37:28 +01:00
Surya Paolo
eb53557090 filter visible if selected, different from friends, hosp, and services 2023-03-23 00:42:57 +01:00
Surya Paolo
c28c6c4d8b - Cerca Amici persone: filtro per Regione o Provincia 2023-03-23 00:09:59 +01:00
Surya Paolo
9745133e81 - Find Friends by Region or Province 2023-03-22 22:45:00 +01:00
Surya Paolo
396028748d circuito 2023-03-22 18:10:37 +01:00
Surya Paolo
79cde5c905 - fixed ordinamento tabelle 2023-03-22 16:55:57 +01:00
Surya Paolo
175bba7720 - Provincia obbligatoria, chiedo conferma se non vuole entrare nel circuito. 2023-03-22 15:54:56 +01:00
Surya Paolo
59af1d0b8b - Il circuito viene creato in automatico, quando scegli una provincia. 2023-03-21 18:12:06 +01:00
Surya Paolo
de937c73f7 province visible 2023-03-18 01:27:04 +01:00
Surya Paolo
422a3b6e88 show table movements 2023-03-18 00:57:43 +01:00
Surya Paolo
af04e022eb - Visu Saldo su Home
- SendRisTo
- Movimenti conto Comunitario
- Profilo
2023-03-17 19:07:43 +01:00
Surya Paolo
37c2f08510 - qualifica non ci stava
- lista invia ris ok
2023-03-11 01:29:39 +01:00
Surya Paolo
80610b3627 - Invia Ris a e Ricevi Ris
- Tutorial Guidato Passi da Compiere
- Provincia in cui vivi
- Policy aggiornata
2023-03-11 01:01:23 +01:00
Surya Paolo
7a9689125b - fix: se salvavo un record 'settable' e non era completo con tutti i campi, andava a troncare gli altri precedentemente inseriti
- ordinamento Circuiti per stato e numiscritti e descr
2023-03-05 22:04:28 +01:00
Surya Paolo
3f808189e3 ver 0.5.73:
- corretto invia monete da Conto Collettivo a Utente
- Aggiunto Provincia (tutorial).. in corso...
2023-03-04 10:20:49 +01:00
Surya Paolo
a250700c8b ver 0.5.71:
- Info Conto
- Admin: poter modificare Fido e QtaMax, sia per i Conti Collettivi sia per gli Utenti.
2023-02-23 17:20:54 +01:00
Surya Paolo
c8e0f7922f ver 0.5.71:
- Info Conto
- Admin: poter modificare Fido e QtaMax.
2023-02-23 16:07:52 +01:00
Surya Paolo
19860aa438 - Info sul Conto Collettivo
- HomePage
2023-02-20 02:20:00 +01:00
Surya Paolo
1f5be4624f Lista Richieste e Rifiutati dei Conti Collettivi 2023-02-16 20:13:55 +01:00
Surya Paolo
239cfbe835 Unsubscribe 2023-02-15 21:40:10 +01:00
Surya Paolo
d59eb86d0c fix img profile 2023-02-06 23:50:55 +01:00
Surya Paolo
5c2b28939b - pagine admin: Accounts, Movements e Circuits.
- add change min e max range circuiti (per tutti i record).
2023-02-06 22:58:18 +01:00
Surya Paolo
0234e2323a fix Conti Collettivi + messaggi 2023-02-02 13:53:09 +01:00
Surya Paolo
f79c3b1d77 fix nametoshow 2023-02-02 02:52:27 +01:00
Surya Paolo
d5831e3dbf ver: 0.5.62
Conti Collettivi visibili solo se sei admin...
2023-02-02 02:31:09 +01:00
Surya Paolo
cfa2457147 Invio RIS da User a Conto Comunitario
- Visu movimenti OK
2023-02-01 23:50:58 +01:00
Surya Paolo
97ee2a1129 Conti Comunitari e Collettivi 2023-02-01 16:36:17 +01:00
Surya Paolo
f62ac90b34 go on Conto Comunitario 2023-02-01 01:19:58 +01:00
Surya Paolo
8176902363 Pagina "Attività" non compare bene la scritta Beni e Servizi... ?! 2023-01-29 22:22:41 +01:00
Surya Paolo
23fd5fc5ef Istruzioni per installare l'APP: Android, iOS 2023-01-25 20:52:47 +01:00
Surya Paolo
e58f7249a6 Sulla foto della notifica il click non funziona
check App
2023-01-25 11:55:06 +01:00
Surya Paolo
567f7b4be7 Possibilità di scrivere l'username anche con la chiocciola @ 2023-01-25 10:47:52 +01:00
Surya Paolo
98c0218ef7 Conto Comunitario all'interno di un Circuito 2023-01-21 19:02:26 +01:00
Surya Paolo
42d68eb4b8 fix button registration disabled
Conto Comunitario... passo 2
2023-01-13 12:29:34 +01:00
Surya Paolo
3d77cf671d Conto Comunitario... 2023-01-12 01:03:19 +01:00
Surya Paolo
2acf161d5d 0.5.56 2023-01-09 18:26:27 +01:00
Surya Paolo
b98cda2110 fix SdM
share link
2023-01-09 15:55:18 +01:00
Surya Paolo
a9367d5aef fix strette di mano 2023-01-09 04:05:18 +01:00
Surya Paolo
d684d7a46f Ver 0.5.55
Strette di Mano OK
2023-01-09 02:39:53 +01:00
Surya Paolo
815ca0d565 Stringi la mano (fase prima) 2023-01-08 19:20:25 +01:00
Surya Paolo
4d40efc73a ++Strette di Mano 2023-01-08 02:17:15 +01:00
Surya Paolo
865e1ad738 strette di mano 2023-01-06 15:51:58 +01:00
Surya Paolo
d5d005a714 pagina Attivita + Video e PDF Presentazione 2023-01-05 01:37:25 +01:00
Surya Paolo
98dcea5526 poter visualizzare i propri beni e servizi anche se non sei registrato alla app ! 2023-01-04 02:09:51 +01:00
Surya Paolo
ce4bf65fc4 ver 0.5.51 2023-01-03 16:51:45 +01:00
Surya Paolo
3f9f608d4e Correggere lista circuiti (non compare il titolo e il num. di persone) 2022-12-23 17:12:57 +01:00
Surya Paolo
61451ef994 Fare procedura per cambiare gli username in giro nelle varie tabelle
fix icon Android "Badge" black and white.
2022-12-23 00:37:22 +01:00
Surya Paolo
a8677dc644 Registrazione: far comparire tutti i campi una volta inseriti... cosi comparirà l'errore 2022-12-22 16:48:57 +01:00
316 changed files with 30104 additions and 9705 deletions

View File

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

View File

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

27
.env.test.risosrv Executable file
View File

@@ -0,0 +1,27 @@
APP_VERSION="1.0.20"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=test.freeplanet_serverside
SERVERDIR_WEBSITE="splendidus.it/riso"
APP_URL="https://riso.splendidus.it"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://splendidus.it:3001"
LOGO_REG='riso-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
TEST_APORTADOR=""
PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
IN_CONSTRUCTION="0"
DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
ISTEST=1

6
.gitignore vendored
View File

@@ -41,3 +41,9 @@ _ALL_SITES/kolibrilab.it/.env.development
_ALL_SITES/kolibrilab.it/.env.test
_ALL_SITES/arcadei.it/.env.development
public/upload/
._yarn.lock
.gitignore
._upload
.___termine.sh
.___riso.app
.___inizia.sh

View File

@@ -212,27 +212,16 @@ const msg_website_it = {
+ '<li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li>'
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>'
+ '<li>👨🏻‍💻 Con una <strong>piccola donazione</strong> per le spese dei Server, manutenzione e per i continui sviluppi e miglioramenti</li></ul>' +
'1) Tramite <strong>Paypal</strong>:<br>' +
'<div style="font-size: 1.5rem; background-color: white; color: blue; border: solid 2px #f00; margin: 10px; padding: 10px; border-radius: 10px; " ' +
'class="row justify-around">' +
'<span><a href="https://paypal.me/paoloarena/1" target="_blank">1€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/2" target="_blank">2€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/5" target="_blank">5€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/10" target="_blank">10€</a></span>' +
'<span><a href="https://paypal.me/paoloarena" target="_blank">scegli</a></span>' +
'</div><em>clicca sull\'importo per fare una <strong>donazione</strong> </em><br>' +
'1) Tramite <strong><a href="https://paypal.me/paoloarena" target="_blank">Paypal</a></strong>:<br>' +
'<br>2) Tramite <strong>Satispay</strong>: <a href="https://www.satispay.com/app/match/link/money-box/S6Y-SVN--62712D42-35B0-4BB9-8511-410C2AB8CD45" target="_blank">Clicca qui</a><br>' +
'<div style="font-size: 1rem; background-color: white; color: blue; border: solid 2px #f00; margin: 5px; padding: 5px; border-radius: 10px; " ' +
'class="row justify-around">' +
'Se ancora non hai Satispay <a href="https://www.satispay.com/promo/PAOLOARENA4">Richiedila cliccando qui</a></br>' +
'E\' consigliata se hai un conto bancario come alternativa alla costosa carta di credito/debito</br>' +
'👉🏻 <strong>Registrandoti entrambi riceviamo un Bonus di 5 €</strong></br>' +
'</div>' +
'<br>3) Tramite <strong>Bonifico Bancario</strong>:<br>' +
'(Scrivi a Surya (<a href="mailto:surya@riso.app">surya@riso.app</a>) per ricevere le coordinate</br>' +
'(Scrivi a Surya (<a href="https://t.me/surya1977">@surya1977</a>) per le coordinate</br>' +
'' +
'4) In alternativa scegli tu una forma di scambio da donare a Paolo (per scrivergli su Telegram: <a href="https://t.me/surya1977" target="_blank">Surya Paolo</a>)<br />' +
'<span style="color: red; font-size: 2rem;">❤</span> Sono graditi messaggi sia di suggerimenti che di apprezzamenti.<br>' +
'4) In alternativa scegli tu una forma di Dono <br />' +
'Grazie Mille per l\'Aiuto ed il Supporto' +
'<br>',
},

View File

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

View File

@@ -0,0 +1,28 @@
APP_VERSION="1.0.20"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="15"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=test.freeplanet_serverside
SERVERDIR_WEBSITE="testfioredellavita.riso.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"
APP_URL="https://test.riso.app"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://test.freeplanet.app:3001"
LOGO_REG='fioredellavita-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
TEST_APORTADOR=""
PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
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

@@ -0,0 +1,11 @@
import { IEvents } from '../model';
export const db_data = {
URL_FACEBOOK: '',
userdata: {
calendar_editable: false,
},
}

View File

@@ -0,0 +1,392 @@
const msg_website = {
it: {
pages: {
home: 'Principale',
SignUp: 'Registrazione',
SignUp2: 'Registrazione2',
SignIn: 'Login',
vreg: 'Verifica Reg',
Test: 'Test',
TestLocal: 'TestLocal',
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: 'Siamo la <strong>Rete Italiana di Scambio Orizzontale</strong>, abbiamo creato questa pittaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
'Valori semplici e profondi che ci aiutano a ritrovare il <strong>senso della vita</strong>, perduto in questa società consumista, e riporti quei <strong>Sani Pricìpi Naturali</strong> ed Umani di <strong>Fratellanza</strong>'
+ ' che intere popolazioni antiche conoscevano bene.',
descrapp_pag2: 'E\' giunta l\'ora di utilizzare i nuovi strumenti <strong>Tecnologici</strong> a nostro <strong>favore</strong>, per <strong>Liberarci</strong> '
+ 'così piano piano dalla <strong>schiavitù</strong> del <strong>"Lavoro per generare Denaro"</strong> e trasformando le nostre <strong>Capacitá</strong> in '
+ '<strong>Risorse Umane</strong> per poterci sostenere e vivere in <strong>Armonia</strong> con gli altri.',
freesocial: {
title: '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

@@ -0,0 +1,88 @@
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',
SignUp4: 'Reg',
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',
verifieds: 'Verificati',
autorizzati: 'Autorizzati',
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

@@ -0,0 +1,160 @@
const msg_website_enUs = {
ws: {
sitename: 'Fiore Della Vita',
siteshortname: 'Fiore Della Vita',
description: '',
keywords: '',
},
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: 'Profile',
profile2: 'ProfiloU',
mypage2: 'mypage2',
myservice2: 'myservice2',
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: 'Payments',
regok: 'Registration Confirmed',
presentazione: 'Presentation',
presentazione2: 'Presentation',
invita: 'Invite People',
SignUp: 'Registration',
SignUpIscrizione: 'Diventa Socio CNM',
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',
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: 'Participants',
verifieds: 'Verificati',
autorizzati: 'Autorizzati',
autorizzare: 'In attesa di Abilitazione',
passeggeri: 'Passengers Ships',
giainlista: 'Already in the List',
newreg: 'New registrations:',
nationality: 'Nationality',
nationality_born: 'Nazione di Nascita',
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',
},
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: {
myAppDescription: '',
underconstruction: 'App in costruzione...',
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

@@ -0,0 +1,159 @@
const msg_website_es = {
ws: {
sitename: 'Fiore Della Vita',
siteshortname: 'Fiore Della Vita',
description: '',
keywords: '',
},
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: 'Perfil',
profile2: 'ProfiloU',
mypage2: 'mypage2',
myservice2: 'myservice2',
mygood2: 'mygood2',
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: 'Paiements',
regok: 'Registro confirmado',
presentazione: 'Presentación',
presentazione2: 'Presentación',
invita: 'Invitar a la gente',
SignUp: 'Registro',
SignUpIscrizione: 'Diventa Socio CNM',
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',
calendarioeventi: 'Calendario Eventos',
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',
Category: 'Categorie',
Admin: 'Admin',
Sites: 'Siti Web',
extralist: 'Lista Extra',
Test1: 'Test1',
Test2: 'Test2',
chisiamo: 'Chi Siamo',
linkamici: 'Link Amici',
dovesiamo: 'Dove Siamo',
evento: 'Evento',
eventodef: 'Evento:',
prova: 'prova',
dbop: 'Operazioni',
projall: 'Comunitari',
groups: 'Lista Gruppi',
projectsShared: 'Condivisi da me',
myprojects: 'Privati',
favproj: 'Favoriti',
statusreg: {
reg: 'Participantes',
verifieds: 'Verificati',
autorizzati: 'Autorizzati',
autorizzare: 'In attesa di Abilitazione',
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',
},
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: {
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

@@ -0,0 +1,64 @@
const msg_website_fr = {
ws: {
sitename: 'Fiore Della Vita',
siteshortname: 'Fiore Della Vita',
description: '',
keywords: '',
},
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

@@ -0,0 +1,225 @@
const msg_website_it = {
ws: {
sitename: 'Fiore Della Vita',
siteshortname: 'Fiore Della Vita',
description: '',
keywords: '',
},
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',
myservice2: 'myservice2',
myhosps2: 'myhosps2',
mygood2: 'mygood2',
fundraising: 'Sostieni il Progetto',
notifs: 'Configura le Notifiche',
unsubscribe: 'Disiscriviti',
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: 'Modulo di Registrazione:',
SignUpCollettivo: 'Reg. Collettiva:',
SignUpCollettivo2: 'Registrazione Collettiva:',
need_Telegram: 'Per poter utilizzare la Piattaforma occorre avere <a href="https://play.google.com/store/apps/details?id=org.telegram.messenger" target="_blank">Telegram</a> installato<br>',
Registrazione_Con_Bot: '1) Copia questo username cliccandoci sopra:',
SignUpIscrizione: 'Diventa Socio CNM',
SignUp_alreadylista: 'Registrazione per quelli che erano già nella lista di Notevole (del 2019) !',
SignUp2: 'Registrazione',
SignUp3: 'Reg',
SignUp4: 'Reg',
SignUp5: 'Reg',
SignUp6: 'Registrati',
SignUp7: 'Registra',
SignUp11: 'Registra',
SignUpBot: 'Registrati con Telegram',
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',
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: 'Fiore della Vita',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',
sottoTitoloApp: 'Rete Italiana di Scambio Orizzontale',
sottoTitoloApp2: '',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana di Scambio Orizzontale</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
'Valori semplici e profondi che ci aiutano a ritrovare il <strong>Senso della Vita</strong>, perduto in questa società consumista, e riporti quei <strong>Sani Pricìpi Naturali</strong> ed Umani di <strong>Fratellanza</strong>'
+ ' che intere popolazioni antiche conoscevano bene.',
descrapp_pag2: 'E\' giunta l\'ora di utilizzare i nuovi strumenti <strong>Tecnologici</strong> a nostro <strong>favore</strong>, per <strong>Liberarci</strong> '
+ 'così piano piano dalla <strong>schiavitù</strong> del <strong>"Lavoro per generare Denaro"</strong> e trasformando le nostre <strong>Capacitá</strong> in '
+ '<strong>Risorse Umane</strong> per poterci sostenere e vivere in <strong>Armonia</strong> con gli altri.<br>' +
'<br><strong>R.I.S.O.</strong><br>' +
'<em>Siamo una rete di comunità consapevoli, basata sul sostegno reciproco, la fiducia, la condivisione e l\'ascolto. \n' +
'Coltiviamo terreno fertile per creare, in armonia con la natura, un mondo di collettività libere e autosufficienti, attraverso un circuito di scambio di esperienze umane, beni e servizi.<br>' +
'Partecipa al cambiamento. RISO sei anche tu!</em>',
freesocial: {
title: 'Social',
descr: 'Una Community organizzata per <strong>Categorie</strong>, dove potrai unirti a <strong>Gruppi Tematici</strong>, '
+ 'Condividere <strong>Esperienze</strong> e unire Competenze per organizzare e sostenere <strong>Progetti Innovativi</strong> per il Popolo.<br><br>'
+ 'Verranno evidenziati sviluppi <strong>Etici</strong> come l\'<strong>Auto-Produzione</strong>, la <strong>Sostenibilitá</strong>, '
+ 'la Buona <strong>Salute Naturale</strong> e il <strong>Rispetto per l\'Ambiente</strong> e per tutti gli <strong>Esseri Viventi</strong> di questo '
+ '<strong>Pianeta</strong>.',
},
freetalent: {
title: 'Beni e Servizi',
descr: 'Condividi i tuoi <strong>Talenti</strong> e <strong>Abilità</strong>, '
+ 'Nel Dare e Ricevere, si creeranno così legami di <strong>Amicizia, Solidarietà, Cooperazione e Divertimento</strong><br><br>' +
'Favoriamo lo scambio locale di <strong>Beni e Servizi</strong> dove potrai scegliere cosa chiedere in cambio (Dono, Offerta Libera, Baratto, Monete Alternative, ecc...).'
},
coin: {
title: 'RIS - Credito Alternativo',
},
freeliving: {
title: 'Gruppi Territoriali',
descr: 'Questo progetto vuole diffondere la creazione di Gruppi Territoriali Provinciali, '
+ 'per poter favorire progetti condivisi in ambito territoriale e creare così una <strong>Rete di Fiducia</strong> fino al <strong>vicinato</strong>, come giá viene praticato in piccolo, in numerosi <strong>Ecovillaggi</strong> e Comunità del mondo.',
},
freecollabora: {
title: 'Chi può Collaborare?',
descr: 'Tutti coloro che sono in linea con <strong>Princìpi Etici</strong> e ricerca del <strong>Benessere Globale del Pianeta</strong><br>'
+ 'Pertanto sono i benvenuti:'
+ '<ul class="mylist" style="padding-left: 20px;">'
+ '<li><strong>Associazioni no-profit, Ecovillaggi, Comunità</strong></li>'
+ '<li>Gruppi che intendono promuovere <strong>Progetti Sociali Innovativi</strong> per una <strong>Decrescita Felice</strong></li>'
+ '<li>Chi gestisce un <strong>Gruppo di Acquisto Solidale (G.A.S.)</strong></li>'
+ '<li><strong>Produttori Locali Etici</strong></li>'
+ '<li><strong>Chiunque voglia partecipare</strong>, nella forma che ritiene più opportuna.</li>'
+ '</ul>',
},
freesostieni: {
title: 'Come Sostenere il progetto <strong>Riso.app</strong>?',
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li>📱<strong>Condividendo la APP</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li>'
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>'
+ '<li>👨🏻‍💻 Con una <strong>piccola donazione</strong> per le spese dei Server, manutenzione e per i continui sviluppi e miglioramenti</li></ul>' +
'1) Tramite <strong><a href="https://paypal.me/paoloarena" target="_blank">Paypal</a></strong>:<br>' +
'<br>2) Tramite <strong>Satispay</strong>: <a href="https://www.satispay.com/app/match/link/money-box/S6Y-SVN--62712D42-35B0-4BB9-8511-410C2AB8CD45" target="_blank">Clicca qui</a><br>' +
'<div style="font-size: 1rem; background-color: white; color: blue; border: solid 2px #f00; margin: 5px; padding: 5px; border-radius: 10px; " ' +
'class="row justify-around">' +
'Se ancora non hai Satispay <a href="https://www.satispay.com/promo/PAOLOARENA4">Richiedila cliccando qui</a></br>' +
'</div>' +
'<br>3) Tramite <strong>Bonifico Bancario</strong>:<br>' +
'(Scrivi a Surya (<a href="https://t.me/surya1977">@surya1977</a>) per le coordinate</br>' +
'' +
'4) In alternativa scegli tu una forma di Dono <br />' +
'Grazie Mille per l\'Aiuto ed il Supporto' +
'<br>',
},
multiplatform: {
title: 'Multi-piattaforma',
descr: 'E\' compatibile con Google Chrome, Firefox, Opera, Safari, iPhone, Android e PC. L\'Applicazione s\'installa facilmente, senza dover passare dallo store. '
+ 'basta entrare sul sito <strong>www.riso.app</strong>.<br>'
+ 'Dopo la registrazione chiederà di aggiungerlo alla <strong>Schermata Home</strong> (oppure cliccare sul menu "..." del browser e scegliere "<strong>Installa APP</strong>")',
},
free: {
title: 'Gratuita, Open Source e Niente Pubblicità',
descr: 'Questa App <strong>non è in vendita</strong>, non ha scopi commerciali, quindi <strong>non ha prezzo</strong> e nessun dato contenuto in esso verrà mai venduto, in quanto appartiene a <strong>Tutti Noi</strong> ed a nessuno in particolare.<br>Chiunque potrá utilizzarla e beneficiarne da essa.<br>' +
'<em>Progetto Open Source su <a href="https://gitlab.com/surya89" target="_blank">GitLab</a>.</em><br><br>'
+ '<strong>Grazie a Tutti per il sostegno</strong>. ',
},
titlecontatti: 'Contatti',
contacts: '',
},
};
export default msg_website_it;

View File

@@ -0,0 +1,74 @@
const msg_website_pt = {
ws: {
sitename: 'Fiore Della Vita',
siteshortname: 'Fiore Della Vita',
description: '',
keywords: '',
},
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

@@ -0,0 +1,59 @@
const msg_website_si = {
ws: {
sitename: 'Riso',
siteshortname: 'RISO',
botname: 'Riso 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

@@ -0,0 +1,74 @@
import {
IListRoutes,
ILang,
IPreloadImages,
ISites,
} from '@model'
import { func } from '@store/Modules/fieldsTable'
const firstPage = {
active: true,
order: 5,
path: '/',
materialIcon: 'home',
name: 'pages.home',
component: () => import('@src/root/mainview/mainview.vue'),
reqauth: false,
inmenu: true,
infooter: true,
}
function getDynamicPages(site: ISites): IListRoutes[] {
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: 20,
path: '/events',
materialIcon: 'fas fa-bullhorn',
name: 'mypages.events',
component: () => import('@/root/eventi/eventi.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},*/
]
return baseroutes
}
export function firstimagehome() {
let img = 'statics/images/background.jpg'
return img
}
const preLoadImages: IPreloadImages[] = []
export const lang_available: ILang[] = []
export const arrLangUsed: string[] = []
export const preloadedimages = []
export const routes: IListRoutes[] = [firstPage]
export const static_data = {
routes,
arrLangUsed,
getDynamicPages,
lang_available,
preLoadImages,
preloadedimages,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,143 @@
{
"name": "fioredellavita",
"version": "0.6.1",
"description": "Fiore Della Vita",
"productName": "Fiore Della Vita",
"author": "Paolo Arena",
"private": true,
"keywords": [],
"license": "MIT",
"scripts": {
"dev": "quasar dev",
"build": "quasar build",
"buildpwa": "quasar build -m pwa",
"buildspa": "quasar build -m spa",
"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",
"spa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js"
},
"dependencies": {
"@quasar/extras": "^1.16.7",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16",
"@vue-leaflet/vue-leaflet": "^0.9.0",
"@vue/compat": "^3.2.47",
"@vue/compiler-sfc": "^3.2.47",
"@vue/eslint-config-standard": "7.0.0",
"@vuelidate/core": "^2.0.2",
"@vuelidate/validators": "^2.0.2",
"acorn": "^8.8.2",
"animate.css": "^4.1.1",
"autoprefixer": "^10.4.14",
"axios": "^1.3.5",
"bcryptjs": "^2.4.3",
"chart.js": "3.9.1",
"core-js": "^3.30.0",
"crypto": "^1.0.1",
"date-fns": "^2.29.3",
"dotenv": "^16.0.3",
"echarts": "5.4.2",
"eslint-plugin-quasar": "^1.1.0",
"graphql": "^16.6.0",
"graphql-tag": "^2.12.6",
"gsap": "^3.11.5",
"jquery": "^3.6.4",
"js-cookie": "^3.0.1",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"npm": "^9.6.4",
"nprogress": "^0.2.0",
"pinia": "^2.0.33",
"prerender-spa-plugin": "^3.4.0",
"quasar": "^2.12.07",
"quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2",
"typescript-eslint": "^0.0.1-alpha.0",
"vee-validate": "^4.8.4",
"vue": "^3.2.47",
"vue-chart-3": "^3.1.8",
"vue-class-component": "^8.0.0-rc.1",
"vue-country-code": "^1.1.3",
"vue-echarts": "^6.5.4",
"vue-i18n": "^9.2.2",
"vue-idb": "^0.2.0",
"vue-loader": "^17.0.1",
"vue-property-decorator": "^10.0.0-rc.3",
"vue-router": "^4.1.6",
"vue-scroll-reveal": "^1.0.11",
"vue-social-sharing": "^4.0.0-alpha4",
"vue-svgicon": "^4.0.0-alpha.3",
"vue-timeago3": "^2.3.0",
"vue2-dragula": "^2.5.5",
"vuex": "^4.1.0",
"vuex-router-sync": "^6.0.0-rc.1"
},
"devDependencies": {
"@quasar/app": "^3.3.3",
"@types/bcryptjs": "^2.4.2",
"@types/dotenv": "^8.2.0",
"@types/googlemaps": "^3.43.3",
"@types/jest": "^29.5.0",
"@types/js-cookie": "^3.0.3",
"@types/node": "18.15.11",
"@types/nprogress": "^0.2.0",
"@types/vue-tel-input": "^2.1.2",
"@types/vuelidate": "^0.7.16",
"@typescript-eslint/eslint-plugin": "^6.7.3",
"@typescript-eslint/parser": "^6.7.2",
"eslint": "^8.37.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-vue": "^9.10.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.0",
"http-proxy-middleware": "^2.0.6",
"jest": "^29.5.0",
"json-loader": "^0.5.7",
"node-sass": "^9.0.0",
"npm-check-updates": "^16.10.7",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"postcss": "^8.4.21",
"postcss-loader": "^7.2.4",
"sass-loader": "^13.2.2",
"strip-ansi": "=7.0.1",
"ts-jest": "^29.1.0",
"ts-loader": "^9.4.2",
"tslint": "^6.1.3",
"tslint-config-standard": "^9.0.0",
"tslint-loader": "^3.5.4",
"typescript": "^5.2.2",
"vue-cli-plugin-element-ui": "^1.1.4",
"vueify": "^9.4.1",
"webpack": "^5.78.0",
"workbox-webpack-plugin": "^6.5.4"
},
"browser": {
"crypto": false
},
"browserslist": [
"last 100 Chrome versions",
"last 40 Firefox versions",
"last 20 Edge versions",
"last 55 Safari versions",
"last 90 Android versions",
"last 250 ChromeAndroid versions",
"last 60 FirefoxAndroid versions",
"last 35 iOS versions",
"last 10 Opera versions",
"> 0.03%",
"not dead"
],
"engines": {
"node": ">= 16.14.0",
"npm": ">= 6.14.8",
"yarn": ">= 1.21.1"
}
}

View File

@@ -0,0 +1,417 @@
/*
* 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', 'calendar', 'social-sharing', 'timeago'],
// 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: 8087,
open: false, // opens browser window automatically
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
},
},
// 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',
'QSpinnerDots',
'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',
],
_plugins: [
'Meta',
'Dialog',
'Notify',
'Cookies',
'Loading',
'AppVisibility',
],
get plugins_1() {
return this._plugins;
},
set plugins_1(value) {
this._plugins = value;
},
get plugins() {
return this._plugins;
},
set plugins(value) {
this._plugins = value;
},
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
extendGenerateSWOptions(cfg) {
cfg.skipWaiting = false
cfg.clientsClaim = false
},
// 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: 'Fiore Della Vita',
short_name: 'Fiore Della Vita',
description: 'Fiore Della Vita',
display: 'standalone',
orientation: 'portrait',
background_color: '#fff',
theme_color: '#027be3',
scope: "/",
id: "/?homescreen=1",
start_url: "/?homescreen=1",
icons: [
{
src: 'images/fv-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
{
src: 'images/fv-android-icon-384x384.png',
sizes: '384x384',
type: 'image/png',
},
{
src: 'images/fv-android-icon-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'images/fv-android-icon-144x144.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/fv-android-icon-96x96.png',
sizes: '96x96',
type: 'image/png',
},
{
src: 'images/fv-apple-icon-120x120.png',
sizes: '120x120',
type: 'image/png',
},
{
src: 'images/fv-apple-icon-144x144.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/fv-apple-icon-152x152.png',
sizes: '152x152',
type: 'image/png',
},
{
src: 'images/fv-apple-icon-180x180.png',
sizes: '180x180',
type: 'image/png',
},
],
related_applications: [{
"platform": "webapp",
"url": "https://www.riso.app/manifest.json"
}]
},
},
// 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: 'FioreDellaVita',
},
// "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
},
},
}))

View File

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

View File

@@ -0,0 +1,78 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'home_arcadei',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Arcadei',
img: 'images/arcadei/img1.png'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -0,0 +1,221 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section :class="`maxwidth padding_gallery `+ ($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-grey-10 text-center`" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
height="600">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_arcadei.ts">
</script>
<style lang="scss" scoped>
@import './home_arcadei.scss';
</style>

View File

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

View File

@@ -0,0 +1,78 @@
import { defineComponent, ref, onMounted, watch, computed } from 'vue'
import { useGlobalStore } from '@store/globalStore'
import { useRoute } from 'vue-router'
import { useUserStore } from '@store/UserStore'
import { Logo } from '../../components/logo'
import { LandingFooter } from '../../components/LandingFooter'
import { CMyPage } from '../../components/CMyPage/index'
import { tools } from '@src/store/Modules/tools'
import { static_data } from '@src/db/static_data'
import { toolsext } from '@src/store/Modules/toolsext'
import { Screen } from 'quasar'
import { CCardCarousel, CEventsCalendar, COpenStreetMap } from '@components'
import MixinBase from '@src/mixins/mixin-base'
import { firstimagehome } from '@src/db/static_data'
import MixinMetaTags from '@/mixins/mixin-metatags'
export default defineComponent({
name: 'Home_tdv',
components: { Logo, LandingFooter, CMyPage, CCardCarousel, CEventsCalendar, COpenStreetMap },
setup() {
const animare = ref(0)
const slide = ref('first')
const slide2 = ref(1)
const getImmagini = ref([
{
title: '', subtitle: '',
alt: 'Elisa e Cristina insieme',
img: '../../statics/images/eventi_esterni/IMG_6035.jpg'
},
])
const userStore = useUserStore()
const globalStore = useGlobalStore()
const { setValDb, getValDb } = MixinBase()
const { setmeta, getsrcbyimg } = MixinMetaTags()
function getheightgallery() {
if (tools.isMobile())
return '400px'
else
return '600px'
}
function created() {
//
}
function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome)
}
created()
return {
tools,
toolsext,
static_data,
animare,
slide,
slide2,
getheightgallery,
getArrDisciplines,
getImmagini,
getValDb,
firstimagehome,
getsrcbyimg,
setmeta,
}
},
})

View File

@@ -0,0 +1,220 @@
<template>
<q-page>
<CMyPage title="Home">
<div class="landing">
<section>
<div class="landing__hero maxwidth1200 text-white">
<q-carousel
animated
:autoplay="animare"
swipeable
infinite
navigation
transition-next="slide-left"
transition-prev="slide-right"
v-model="slide"
:height="getheightgallery()"
width="100%"
>
<q-carousel-slide name="first"
:img-src="getsrcbyimg(firstimagehome())">
<div class="landing__header"></div>
<div class="landing__hero-content row justify-center q-gutter-xs clgutter">
<div class="row">
&nbsp;
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
&nbsp;
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm">
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
</div>
<div>
<br>
<br>
<div v-if="!tools.isLogged()" style="margin: 5px; padding: 5px;" class="home">
<br>
<br>
</div>
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="second"
:img-src="getsrcbyimg('images/background2.jpg')" alt="">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<h1 class="text-h1 shadow-max">{{tools.getappname()}}</h1>
<h2 class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</h2>
<h2 class="text-subtitle1 shadow-max big text-italic q-pl-sm">
<strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</h2>
<h2 class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</h2>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<i aria-hidden="true"
class="q-icon text-h2 text-white material-icons">expand_more</i>
</div>
</q-carousel-slide>
<q-carousel-slide name="third"
:img-src="getsrcbyimg('images/background3.jpg')">
<div class="landing__header"></div>
<div class="landing__hero2-content row justify-center q-gutter-xs clgutter">
<div class="row">
<logo></logo>
</div>
<div class="flex justify-end">
<div class="q-gutter-xs testo-banda clgutter">
<div class="text-h1 shadow-max">{{tools.getappname()}}</div>
<div class="text-subtitle1 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp')}}
</div>
<div class="text-subtitle1 shadow-max big text-italic q-pl-sm"><strong>{{$t('msg.sottoTitoloApp2')}}</strong>
</div>
<div class="text-subtitle2 shadow text-italic q-pl-sm">
{{$t('msg.sottoTitoloApp3')}}
</div>
<div class="text-subtitle3 shadow text-italic q-pl-sm ">
{{$t('msg.sottoTitoloApp4')}}
</div>
</div>
</div>
</div>
<div class="landing__arrow absolute-bottom text-center">
<!--<i aria-hidden="true"-->
<!--class="q-icon text-h2 text-white material-icons">expand_more</i>-->
</div>
</q-carousel-slide>
</q-carousel>
</div>
</section>
<div class="q-pa-md q-gutter-md">
<div v-if="isLogged && !isVerified" class="text-verified">{{
$t('components.authentication.email_verification.link_sent') }}
</div>
</div>
<CCardCarousel :myarr="getArrDisciplines()">
</CCardCarousel>
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
</CEventsCalendar>
<div v-if="getValDb('VIDEO_HOME', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('VIDEO_TITLE', false)"></h4>
<div class="">
<video :width="tools.getwidthscale(mythis, 320, 800)"
:height="tools.getheightbywidth(mythis, 320, 180, 800)" controls>
<source :src="getValDb('VIDEO_HOME', false)" type="video/mp4">
</video>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<div v-if="getValDb('YT_VIDEO', false)" class="row justify-evenly items-center q-gutter-md ">
<div class="text-center">
<h4 class="subtitle text-blue" v-html="getValDb('YT_TITLE', false)"></h4>
<div class="">
<div class="">
<iframe
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
:src="getValDb('YT_VIDEO', false)"
frameborder="0"
allowfullscreen
></iframe>
</div>
</div>
<!--<q-video src="../../statics/video/Intervista_Cristina_Barattoni.mp4">-->
<!--</q-video>-->
</div>
</div>
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center" >
<q-carousel
swipeable
animated
:autoplay="8000"
v-model="slide2"
arrows
thumbnails
infinite
:height="tools.heightgallery()">
<q-carousel-slide v-for="(rec, index) in getImmagini" :key="index" :name="index"
:img-src="rec.img"
:alt="rec.alt"
class="carousel_slide">
<div class="absolute-bottom custom-caption" style="margin-bottom: 70px">
<div class="text-h5"><span
class="text-h6 text-grey-1 shadow-max">{{index + 1}}. </span><span
class="text-h6 text-grey-2 shadow">{{rec.title}}</span></div>
<div class="text-subtitle1"><span class="text-grey-4 shadow">{{rec.subtitle}}</span>
</div>
</div>
</q-carousel-slide>
</q-carousel>
</section>
<div v-if="!tools.isMobile()" style="margin: 60px 60px;"></div>
<COpenStreetMap :imgmap="getValDb('IMGMAP', false)" :urlmap="getValDb('URLMAP', false)" :title="getValDb('MAP_TITLE', false)"
:coordinates="getValDb('COORD_MAP_1', false)" :coord_big="getValDb('COORD_MAP_BIG', false)">
</COpenStreetMap>
<div class="q-ma-md"></div>
</div>
</CMyPage>
</q-page>
</template>
<script lang="ts" src="./home_tdv.ts">
</script>
<style lang="scss" scoped>
@import './home_tdv.scss';
</style>

View File

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

View File

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

View File

@@ -1,18 +1,18 @@
APP_VERSION="0.5.28"
APP_VERSION="1.0.20"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="16"
APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=test.freeplanet_serverside
SERVERDIR_WEBSITE="test.kolibrilab.it"
SERVERDIR_WEBSITE="test.riso.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"
APP_URL="https://test.kolibrilab.it"
APP_URL="https://test.riso.app"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://test.freeplanet.app:3001"
LOGO_REG='kolibrilab-logo-full.png'
LOGO_REG='riso-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""

View File

@@ -31,6 +31,7 @@ const msg_website_it = {
mygood2: 'mygood2',
fundraising: 'Sostieni il Progetto',
notifs: 'Configura le Notifiche',
unsubscribe: 'Disiscriviti',
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',
@@ -51,6 +52,8 @@ const msg_website_it = {
presentazione2: 'Presentazione',
invita: 'Invita Persone',
SignUp: 'Modulo di Registrazione:',
SignUpCollettivo: 'Reg. Collettiva:',
SignUpCollettivo2: 'Registrazione Collettiva:',
need_Telegram: 'Per poter utilizzare la Piattaforma occorre avere <a href="https://play.google.com/store/apps/details?id=org.telegram.messenger" target="_blank">Telegram</a> installato<br>',
Registrazione_Con_Bot: '1) Copia questo username cliccandoci sopra:',
SignUpIscrizione: 'Diventa Socio CNM',
@@ -59,6 +62,9 @@ const msg_website_it = {
SignUp3: 'Reg',
SignUp4: 'Reg',
SignUp5: 'Reg',
SignUp6: 'Registrati',
SignUp7: 'Registra',
SignUp11: 'Registra',
SignUpBot: 'Registrati con Telegram',
SignIn: 'Login',
status: 'Statistiche',
@@ -91,27 +97,6 @@ const msg_website_it = {
projectsShared: 'Condivisi da me',
myprojects: 'Privati',
favproj: 'Favoriti',
statusreg: {
reg: 'Partecipanti',
verifieds: 'Verificati',
online_today: 'On Line Oggi',
autorizzati: 'Autorizzati',
autorizzare: 'In attesa di Abilitazione',
passeggeri: 'Passeggeri Navi',
giainlista: 'Gia in Lista',
newreg: 'Registrati',
onlineusers: 'OnLine',
diffusori: 'Diffusori',
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',
@@ -207,27 +192,16 @@ const msg_website_it = {
+ '<li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li>'
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>'
+ '<li>👨🏻‍💻 Con una <strong>piccola donazione</strong> per le spese dei Server, manutenzione e per i continui sviluppi e miglioramenti</li></ul>' +
'1) Tramite <strong>Paypal</strong>:<br>' +
'<div style="font-size: 1.5rem; background-color: white; color: blue; border: solid 2px #f00; margin: 10px; padding: 10px; border-radius: 10px; " ' +
'class="row justify-around">' +
'<span><a href="https://paypal.me/paoloarena/1" target="_blank">1€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/2" target="_blank">2€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/5" target="_blank">5€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/10" target="_blank">10€</a></span>' +
'<span><a href="https://paypal.me/paoloarena" target="_blank">scegli</a></span>' +
'</div><em>clicca sull\'importo per fare una <strong>donazione</strong> </em><br>' +
'1) Tramite <strong><a href="https://paypal.me/paoloarena" target="_blank">Paypal</a></strong>:<br>' +
'<br>2) Tramite <strong>Satispay</strong>: <a href="https://www.satispay.com/app/match/link/money-box/S6Y-SVN--62712D42-35B0-4BB9-8511-410C2AB8CD45" target="_blank">Clicca qui</a><br>' +
'<div style="font-size: 1rem; background-color: white; color: blue; border: solid 2px #f00; margin: 5px; padding: 5px; border-radius: 10px; " ' +
'class="row justify-around">' +
'Se ancora non hai Satispay <a href="https://www.satispay.com/promo/PAOLOARENA4">Richiedila cliccando qui</a></br>' +
'E\' consigliata se hai un conto bancario come alternativa alla costosa carta di credito/debito</br>' +
'👉🏻 <strong>Registrandoti entrambi riceviamo un Bonus di 5 €</strong></br>' +
'</div>' +
'<br>3) Tramite <strong>Bonifico Bancario</strong>:<br>' +
'(Scrivi a Surya (<a href="mailto:surya@riso.app">surya@riso.app</a>) per ricevere le coordinate</br>' +
'(Scrivi a Surya (<a href="https://t.me/surya1977">@surya1977</a>) per le coordinate</br>' +
'' +
'4) In alternativa scegli tu una forma di scambio da donare a Paolo (per scrivergli su Telegram: <a href="https://t.me/surya1977" target="_blank">Surya Paolo</a>)<br />' +
'<span style="color: red; font-size: 2rem;">❤</span> Sono graditi messaggi sia di suggerimenti che di apprezzamenti.<br>' +
'4) In alternativa scegli tu una forma di Dono <br />' +
'Grazie Mille per l\'Aiuto ed il Supporto' +
'<br>',
},
@@ -240,7 +214,7 @@ const msg_website_it = {
free: {
title: 'Gratuita, Open Source e Niente Pubblicità',
descr: 'Questa App <strong>non è in vendita</strong>, non ha scopi commerciali, quindi <strong>non ha prezzo</strong> e nessun dato contenuto in esso verrà mai venduto, in quanto appartiene a <strong>Tutti Noi</strong> ed a nessuno in particolare.<br>Chiunque potrá utilizzarla e beneficiarne da essa.<br>' +
'<em>Progetto Open Source su <a href="https://github.com/paoloar77/newfreeplanet" target="_blank">GitHub</a>.</em><br><br>'
'<em>Progetto Open Source su <a href="https://gitlab.com/surya89" target="_blank">GitLab</a>.</em><br><br>'
+ '<strong>Grazie a Tutti per il sostegno</strong>. ',
},
titlecontatti: 'Contatti',

View File

@@ -101,6 +101,17 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: true,
infooter: true,
},
{
active: site.confpages && site.confpages.enableCircuits,
order: 16,
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: 20,
@@ -112,17 +123,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
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,
@@ -150,7 +150,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
order: 130,
path: '/friends',
materialIcon: 'fas fa-user-friends',
name: 'mypages.friends',
name: 'mypages.iscritti',
component: () => import('@/views/user/myfriends/myfriends.vue'),
meta: { requiresAuth: true },
inmenu: true,
@@ -165,18 +165,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
component: () => import('@/views/user/mygroups/mygroups.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: site.confpages && site.confpages.enableCircuits,
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,
infooter: false,
},
{
active: true,
@@ -199,6 +188,14 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: false,
infooter: false,
},
{
active: true,
path: '/separator',
name: 'separator',
order: 140,
isseparator: true,
inmenu: true,
},
{
active: true,
order: 130,
@@ -250,8 +247,8 @@ function getDynamicPages(site: ISites): IListRoutes[] {
materialIcon: 'fas fa-hand-holding-heart',
name: 'pages.fundraising',
component: () => import('@src/root/fundraising/fundraising.vue'),
inmenu: true,
infooter: true,
inmenu: false,
infooter: false,
},
{
active: true,
@@ -261,8 +258,8 @@ function getDynamicPages(site: ISites): IListRoutes[] {
name: 'ris.calendario_eventi_riso',
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
extraclass: 'isCalendar',
inmenu: true,
infooter: true
inmenu: false,
infooter: false
},
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "0.5.3",
"version": "0.6.1",
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "Riso",
"author": "Paolo Arena",
@@ -22,48 +22,48 @@
"generate-sw": "workbox generateSW workbox-config.js"
},
"dependencies": {
"@quasar/extras": "^1.15.6",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.13",
"@vue-leaflet/vue-leaflet": "^0.6.1",
"@vue/compat": "^3.2.45",
"@vue/compiler-sfc": "^3.2.45",
"@quasar/extras": "^1.16.7",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16",
"@vue-leaflet/vue-leaflet": "^0.9.0",
"@vue/compat": "^3.2.47",
"@vue/compiler-sfc": "^3.2.47",
"@vue/eslint-config-standard": "7.0.0",
"@vuelidate/core": "^2.0.0",
"@vuelidate/validators": "^2.0.0",
"acorn": "^8.8.1",
"@vuelidate/core": "^2.0.2",
"@vuelidate/validators": "^2.0.2",
"acorn": "^8.8.2",
"animate.css": "^4.1.1",
"autoprefixer": "^10.4.13",
"axios": "^1.2.0",
"autoprefixer": "^10.4.14",
"axios": "^1.3.5",
"bcryptjs": "^2.4.3",
"chart.js": "^3.9.1",
"core-js": "^3.26.1",
"chart.js": "3.9.1",
"core-js": "^3.30.0",
"crypto": "^1.0.1",
"date-fns": "^2.29.3",
"dotenv": "^16.0.3",
"echarts": "^5.3.3",
"echarts": "5.4.2",
"eslint-plugin-quasar": "^1.1.0",
"eslint-plugin-standard": "^5.0.0",
"graphql": "^16.6.0",
"graphql-tag": "^2.12.6",
"gsap": "^3.11.3",
"jquery": "^3.6.1",
"gsap": "^3.11.5",
"jquery": "^3.6.4",
"js-cookie": "^3.0.1",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"npm": "^9.1.2",
"npm": "^9.6.4",
"nprogress": "^0.2.0",
"pinia": "^2.0.27",
"pinia": "^2.0.33",
"prerender-spa-plugin": "^3.4.0",
"quasar": "^2.10.2",
"quasar": "^2.12.07",
"quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2",
"vee-validate": "^4.7.3",
"vue": "^3.2.45",
"typescript-eslint": "^0.0.1-alpha.0",
"vee-validate": "^4.8.4",
"vue": "^3.2.47",
"vue-chart-3": "^3.1.8",
"vue-class-component": "^8.0.0-rc.1",
"vue-country-code": "^1.1.3",
"vue-echarts": "^6.2.3",
"vue-echarts": "^6.5.4",
"vue-i18n": "^9.2.2",
"vue-idb": "^0.2.0",
"vue-loader": "^17.0.1",
@@ -72,6 +72,7 @@
"vue-scroll-reveal": "^1.0.11",
"vue-social-sharing": "^4.0.0-alpha4",
"vue-svgicon": "^4.0.0-alpha.3",
"vue-timeago3": "^2.3.0",
"vue2-dragula": "^2.5.5",
"vuex": "^4.1.0",
"vuex-router-sync": "^6.0.0-rc.1"
@@ -81,56 +82,58 @@
"@types/bcryptjs": "^2.4.2",
"@types/dotenv": "^8.2.0",
"@types/googlemaps": "^3.43.3",
"@types/jest": "^29.2.3",
"@types/js-cookie": "^3.0.2",
"@types/node": "18.11.9",
"@types/jest": "^29.5.0",
"@types/js-cookie": "^3.0.3",
"@types/node": "18.15.11",
"@types/nprogress": "^0.2.0",
"@types/vue-tel-input": "^2.1.2",
"@types/vuelidate": "^0.7.15",
"@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.45.0",
"eslint": "^8.28.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.26.0",
"@types/vuelidate": "^0.7.16",
"@typescript-eslint/eslint-plugin": "^6.7.3",
"@typescript-eslint/parser": "^6.7.2",
"eslint": "^8.37.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-vue": "^9.8.0",
"eslint-plugin-vue": "^9.10.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.0",
"http-proxy-middleware": "^2.0.6",
"jest": "^29.3.1",
"jest": "^29.5.0",
"json-loader": "^0.5.7",
"node-sass": "7.0.1",
"npm-check-updates": "^16.4.3",
"node-sass": "^9.0.0",
"npm-check-updates": "^16.10.7",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"postcss": "^8.4.19",
"postcss-loader": "^7.0.2",
"sass-loader": "^13.2.0",
"postcss": "^8.4.21",
"postcss-loader": "^7.2.4",
"sass-loader": "^13.2.2",
"strip-ansi": "=7.0.1",
"ts-jest": "^29.0.3",
"ts-loader": "^9.4.1",
"ts-jest": "^29.1.0",
"ts-loader": "^9.4.2",
"tslint": "^6.1.3",
"tslint-config-standard": "^9.0.0",
"tslint-loader": "^3.5.4",
"typescript": "^4.9.3",
"typescript": "^5.2.2",
"vue-cli-plugin-element-ui": "^1.1.4",
"vueify": "^9.4.1",
"webpack": "^5.75.0",
"webpack": "^5.78.0",
"workbox-webpack-plugin": "^6.5.4"
},
"browser": {
"crypto": false
},
"browserslist": [
"last 20 Chrome versions",
"last 20 Firefox versions",
"last 4 Edge versions",
"last 20 Safari versions",
"last 20 Android versions",
"last 20 ChromeAndroid versions",
"last 20 FirefoxAndroid versions",
"last 10 iOS versions",
"last 8 Opera versions"
"last 100 Chrome versions",
"last 40 Firefox versions",
"last 20 Edge versions",
"last 55 Safari versions",
"last 90 Android versions",
"last 250 ChromeAndroid versions",
"last 60 FirefoxAndroid versions",
"last 35 iOS versions",
"last 10 Opera versions",
"> 0.03%",
"not dead"
],
"engines": {
"node": ">= 16.14.0",

View File

@@ -37,7 +37,7 @@ module.exports = configure((ctx) => ({
// --> 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', 'calendar', 'social-sharing'],
boot: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'calendar', 'social-sharing', 'timeago'],
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
css: [
@@ -97,7 +97,7 @@ module.exports = configure((ctx) => ({
chainWebpack(chain, { isServer, isClient }) {
chain.resolve.alias
// .set('myalias', path.resolve(__dirname, './src/somefolder'))
// .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/*'))
@@ -238,8 +238,7 @@ module.exports = configure((ctx) => ({
'Ripple',
'ClosePopup',
],
// Quasar plugins
plugins: [
_plugins: [
'Meta',
'Dialog',
'Notify',
@@ -247,13 +246,25 @@ module.exports = configure((ctx) => ({
'Loading',
'AppVisibility',
],
get plugins_1() {
return this._plugins;
},
set plugins_1(value) {
this._plugins = value;
},
get plugins() {
return this._plugins;
},
set plugins(value) {
this._plugins = value;
},
iconSet: 'fontawesome-v5',
lang: 'it', // Quasar language
},
// animations: 'all', // --- includes all animations
animations: 'all', // --- includes all animations
// https://v2.quasar.dev/options/animations
animations: [],
// animations: [],
// https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr
ssr: {
@@ -282,7 +293,7 @@ module.exports = configure((ctx) => ({
pwa: {
workboxPluginMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
workboxOptions: {}, // only for GenerateSW
extendGenerateSWOptions (cfg) {
extendGenerateSWOptions(cfg) {
cfg.skipWaiting = false
cfg.clientsClaim = false
},
@@ -299,8 +310,11 @@ module.exports = configure((ctx) => ({
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
background_color: '#fff',
theme_color: '#027be3',
scope: "/",
id: "/?homescreen=1",
start_url: "/?homescreen=1",
icons: [
{
src: 'images/riso-android-icon-512x512.png',
@@ -348,6 +362,10 @@ module.exports = configure((ctx) => ({
type: 'image/png',
},
],
related_applications: [{
"platform": "webapp",
"url": "https://www.riso.app/manifest.json"
}]
},
},

View File

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

View File

@@ -125,7 +125,7 @@
</div>
<section :class="$q.dark.isActive ? `bg-black` : `bg-white` + ` padding_gallery text-grey-10 text-center`">
<section :class="($q.dark.isActive) ? `bg-black` : `bg-white`) + ` padding_gallery text-grey-10 text-center`">
<q-carousel
swipeable

32
aaa.txt Normal file
View File

@@ -0,0 +1,32 @@
TRA CIRCUITI:
Fai la Transazione
Le transazioni extraterritoriali fuori dal circuito devono andare in altra.
- Rita di VICENZA sia partito (con 10) paga a VITERBO.
TRANSAZIONI EXTRATERRITORIALI.
sul circuito Viterbo mi compare la lista delle transazioni extraterr., suddivise per territorio.
e posso scambiare con quelli di Vicenza.
Possibilità di ricevere i RIS da chiunque.
OSPITE
RESIDENTI
- Rita di VICENZA offre un Servizio a Pietro di AGRIGENTO.
- a Sergio gli appare anche Pietro di AGRIGENTO.
-
RITA -10 VICENZA
RITA +20 AGRIGENTO
SERGIO +10 VICENZA
PROFILO:
il "invia monete" compare a tutti, almeno devi essere collegato in 1 circuito.

View File

@@ -15,6 +15,7 @@ const baseConfig = {
filename: '[nametranslate].js',
publicPath: '/',
path: path.resolve(__dirname, 'dist'),
chunkFormat: 'commonjs' // or 'module' as needed
},
resolve: {
extensions: [

View File

@@ -19,7 +19,7 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then
echo "Sincronizzazione in remoto..."
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a dist/pwa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a --exclude 'upload' dist/pwa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
echo "Finito $SERVERDIR_WEBSITE "
fi

View File

@@ -19,7 +19,7 @@ sleep 1
npm run buildpwa
echo "Sincronizzazione $SERVERDIR_WEBSITE in remoto..."
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a dist/pwa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a --exclude 'upload' dist/pwa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
cp .env.prod.bak .env.production

View File

@@ -0,0 +1,27 @@
#!/bin/bash
source ./.env.test.risosrv
msg="*** Sincronizzazione ??? $DIRECTORY_LOCAL e $SERVERDIR_WEBSITE (Y/N) ? "
if [ "$1" = "" ]; then
read -p "$msg" risposta
else
risposta=$1
fi
cp .env.production .env.prod.bak
cp .env.test.risosrv .env.production
sleep 1
npm run buildpwa
echo "Sincronizzazione $SERVERDIR_WEBSITE in remoto..."
rsync -e 'ssh -p 5522' -a dist/pwa/ root@risosrv:/home/$SERVERDIR_WEBSITE
cp .env.prod.bak .env.production
sleep 1
echo "Finito $SERVERDIR_WEBSITE"

View File

@@ -19,7 +19,7 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then
echo "Sincronizzazione in remoto..."
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a dist/spa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a --exclude 'upload' dist/spa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
echo "Finito $SERVERDIR_WEBSITE "
fi

View File

@@ -19,7 +19,7 @@ sleep 1
npm run buildspa
echo "Sincronizzazione $SERVERDIR_WEBSITE in remoto..."
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a dist/spa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a --exclude 'upload' dist/spa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
cp .env.prod.bak .env.production

View File

@@ -0,0 +1,26 @@
#!/bin/bash
site=fioredellavita.riso.app
if [ -d "__freeplanet.app" ]; then
rmdir __freeplanet.app
fi
if [ -d "__riso.app" ]; then
rmdir __riso.app
fi
if [ -d "__fioredellavita.riso.app" ]; then
rmdir __fioredellavita.riso.app
fi
if [ -d "__popolodelnuovomondo.app" ]; then
rmdir __popolodelnuovomondo.app
fi
if [ -d "__terradellavisione.app" ]; then
rmdir __terradellavisione.app
fi
source __inizia.sh

View File

@@ -18,6 +18,10 @@ if [ -d "__riso.app" ]; then
rmdir __riso.app
fi
if [ -d "__fioredellavita.riso.app" ]; then
rmdir __fioredellavita.riso.app
fi
if [ -d "__popolodelnuovomondo.app" ]; then
rmdir __popolodelnuovomondo.app
fi

26
inizia_piuchebuono.app.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
site=piuchebuono.app
if [ -d "__freeplanet.app" ]; then
rmdir __freeplanet.app
fi
if [ -d "__riso.app" ]; then
rmdir __riso.app
fi
if [ -d "__fioredellavita.riso.app" ]; then
rmdir __fioredellavita.riso.app
fi
if [ -d "__popolodelnuovomondo.app" ]; then
rmdir __popolodelnuovomondo.app
fi
if [ -d "__terradellavisione.app" ]; then
rmdir __terradellavisione.app
fi
source __inizia.sh

View File

@@ -6,6 +6,10 @@ if [ -d "__freeplanet.app" ]; then
rmdir __freeplanet.app
fi
if [ -d "__fioredellavita.riso.app" ]; then
rmdir __fioredellavita.riso.app
fi
if [ -d "__riso.app" ]; then
rmdir __riso.app
fi

View File

@@ -1 +1 @@
TERMINA DI LAVORARE SU arcadei.it: (Sovrascrivo !)
TERMINA DI LAVORARE SU fioredellavita.riso.app: (Sovrascrivo !)

143
package copy_nuovo.json Executable file
View File

@@ -0,0 +1,143 @@
{
"name": "riso",
"version": "0.6.1",
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "Riso",
"author": "Paolo Arena",
"private": true,
"keywords": [],
"license": "MIT",
"scripts": {
"dev": "quasar dev",
"build": "quasar build",
"buildpwa": "quasar build -m pwa",
"buildspa": "quasar build -m spa",
"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",
"spa": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js"
},
"dependencies": {
"@quasar/extras": "^1.16.7",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16",
"@vue-leaflet/vue-leaflet": "^0.10.1",
"@vue/compat": "^3.3.4",
"@vue/compiler-sfc": "^3.3.4",
"@vue/eslint-config-standard": "7.0.0",
"@vuelidate/core": "^2.0.3",
"@vuelidate/validators": "^2.0.4",
"acorn": "^8.10.0",
"animate.css": "^4.1.1",
"autoprefixer": "^10.4.16",
"axios": "^1.5.1",
"bcryptjs": "^2.4.3",
"chart.js": "3.9.1",
"core-js": "^3.32.2",
"crypto": "^1.0.1",
"date-fns": "^2.30.0",
"dotenv": "^16.3.1",
"echarts": "5.4.3",
"eslint-plugin-quasar": "^1.1.0",
"eslint-plugin-standard": "^5.0.0",
"graphql": "^16.8.1",
"graphql-tag": "^2.12.6",
"gsap": "^3.12.2",
"jquery": "^3.7.1",
"js-cookie": "^3.0.5",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"npm": "^10.1.0",
"nprogress": "^0.2.0",
"pinia": "^2.1.6",
"prerender-spa-plugin": "^3.4.0",
"quasar": "^2.12.7",
"quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2",
"vee-validate": "^4.11.7",
"vue": "^3.3.4",
"vue-chart-3": "^3.1.8",
"vue-class-component": "^8.0.0-rc.1",
"vue-country-code": "^1.1.3",
"vue-echarts": "^6.6.1",
"vue-i18n": "^9.4.1",
"vue-idb": "^0.2.0",
"vue-loader": "^17.2.2",
"vue-property-decorator": "^10.0.0-rc.3",
"vue-router": "^4.2.5",
"vue-scroll-reveal": "^2.1.0",
"vue-social-sharing": "^4.0.0-alpha4",
"vue-svgicon": "^4.0.0-alpha.3",
"vue-timeago3": "^2.3.1",
"vue2-dragula": "^2.5.5",
"vuex": "^4.1.0",
"vuex-router-sync": "^6.0.0-rc.1"
},
"devDependencies": {
"@quasar/app": "^3.3.3",
"@types/bcryptjs": "^2.4.4",
"@types/dotenv": "^8.2.0",
"@types/google.maps": "^1.0.0",
"@types/jest": "^29.5.5",
"@types/js-cookie": "^3.0.4",
"@types/node": "20.7.1",
"@types/nprogress": "^0.2.1",
"@types/vue-tel-input": "^2.1.3",
"@types/vuelidate": "^0.7.19",
"@typescript-eslint/eslint-plugin": "^6.7.3",
"@typescript-eslint/parser": "^6.7.3",
"eslint": "^8.50.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-import": "^2.28.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-vue": "^9.17.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.3",
"http-proxy-middleware": "^2.0.6",
"jest": "^29.7.0",
"json-loader": "^0.5.7",
"node-sass": "7.0.0",
"npm-check-updates": "^16.14.4",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"postcss": "^8.4.30",
"postcss-loader": "^7.3.3",
"sass-loader": "^13.3.2",
"strip-ansi": "=7.1.0",
"ts-jest": "^29.1.1",
"ts-loader": "^9.4.4",
"tslint": "^6.1.3",
"tslint-config-standard": "^9.0.0",
"tslint-loader": "^3.5.4",
"typescript": "^5.2.2",
"vue-cli-plugin-element-ui": "^1.1.4",
"vueify": "^9.4.1",
"webpack": "^5.78.0",
"workbox-webpack-plugin": "^6.5.4"
},
"browser": {
"crypto": false
},
"browserslist": [
"last 80 Chrome versions",
"last 40 Firefox versions",
"last 20 Edge versions",
"last 55 Safari versions",
"last 90 Android versions",
"last 250 ChromeAndroid versions",
"last 60 FirefoxAndroid versions",
"last 30 iOS versions",
"last 10 Opera versions",
"> 0.03%",
"not dead"
],
"engines": {
"node": ">= 18.18.0",
"npm": ">= 6.14.8",
"yarn": ">= 1.21.1"
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "0.5.3",
"version": "0.6.1",
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "Riso",
"author": "Paolo Arena",
@@ -22,48 +22,48 @@
"generate-sw": "workbox generateSW workbox-config.js"
},
"dependencies": {
"@quasar/extras": "^1.15.8",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.13",
"@vue-leaflet/vue-leaflet": "^0.7.0",
"@vue/compat": "^3.2.45",
"@vue/compiler-sfc": "^3.2.45",
"@quasar/extras": "^1.16.7",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16",
"@vue-leaflet/vue-leaflet": "^0.9.0",
"@vue/compat": "^3.2.47",
"@vue/compiler-sfc": "^3.2.47",
"@vue/eslint-config-standard": "7.0.0",
"@vuelidate/core": "^2.0.0",
"@vuelidate/validators": "^2.0.0",
"acorn": "^8.8.1",
"@vuelidate/core": "^2.0.2",
"@vuelidate/validators": "^2.0.2",
"acorn": "^8.8.2",
"animate.css": "^4.1.1",
"autoprefixer": "^10.4.13",
"axios": "^1.2.1",
"autoprefixer": "^10.4.14",
"axios": "^1.3.5",
"bcryptjs": "^2.4.3",
"chart.js": "3.9.1",
"core-js": "^3.26.1",
"core-js": "^3.30.0",
"crypto": "^1.0.1",
"date-fns": "^2.29.3",
"dotenv": "^16.0.3",
"echarts": "5.3.3",
"echarts": "5.4.2",
"eslint-plugin-quasar": "^1.1.0",
"eslint-plugin-standard": "^5.0.0",
"graphql": "^16.6.0",
"graphql-tag": "^2.12.6",
"gsap": "^3.11.3",
"jquery": "^3.6.2",
"gsap": "^3.11.5",
"jquery": "^3.6.4",
"js-cookie": "^3.0.1",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"npm": "^9.2.0",
"npm": "^9.6.4",
"nprogress": "^0.2.0",
"pinia": "^2.0.28",
"pinia": "^2.0.33",
"prerender-spa-plugin": "^3.4.0",
"quasar": "^2.11.0",
"quasar": "^2.12.07",
"quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2",
"vee-validate": "^4.7.3",
"vue": "^3.2.45",
"typescript-eslint": "^0.0.1-alpha.0",
"vee-validate": "^4.8.4",
"vue": "^3.2.47",
"vue-chart-3": "^3.1.8",
"vue-class-component": "^8.0.0-rc.1",
"vue-country-code": "^1.1.3",
"vue-echarts": "^6.3.1",
"vue-echarts": "^6.5.4",
"vue-i18n": "^9.2.2",
"vue-idb": "^0.2.0",
"vue-loader": "^17.0.1",
@@ -72,6 +72,7 @@
"vue-scroll-reveal": "^1.0.11",
"vue-social-sharing": "^4.0.0-alpha4",
"vue-svgicon": "^4.0.0-alpha.3",
"vue-timeago3": "^2.3.0",
"vue2-dragula": "^2.5.5",
"vuex": "^4.1.0",
"vuex-router-sync": "^6.0.0-rc.1"
@@ -81,56 +82,59 @@
"@types/bcryptjs": "^2.4.2",
"@types/dotenv": "^8.2.0",
"@types/googlemaps": "^3.43.3",
"@types/jest": "^29.2.4",
"@types/js-cookie": "^3.0.2",
"@types/node": "18.11.16",
"@types/jest": "^29.5.0",
"@types/js-cookie": "^3.0.3",
"@types/node": "18.15.11",
"@types/nprogress": "^0.2.0",
"@types/vue-tel-input": "^2.1.2",
"@types/vuelidate": "^0.7.15",
"@typescript-eslint/eslint-plugin": "^5.46.1",
"@typescript-eslint/parser": "^5.46.1",
"eslint": "^8.30.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.26.0",
"@types/vuelidate": "^0.7.16",
"@typescript-eslint/eslint-plugin": "^6.7.3",
"@typescript-eslint/parser": "^6.7.2",
"eslint": "^8.37.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-vue": "^9.8.0",
"eslint-plugin-vue": "^9.10.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.0",
"http-proxy-middleware": "^2.0.6",
"jest": "^29.3.1",
"jest": "^29.5.0",
"json-loader": "^0.5.7",
"node-sass": "7.0.1",
"npm-check-updates": "^16.6.0",
"node-sass": "^9.0.0",
"npm-check-updates": "^16.10.7",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"postcss": "^8.4.20",
"postcss-loader": "^7.0.2",
"sass-loader": "^13.2.0",
"postcss": "^8.4.21",
"postcss-loader": "^7.2.4",
"sass-loader": "^13.2.2",
"strip-ansi": "=7.0.1",
"ts-jest": "^29.0.3",
"ts-jest": "^29.1.0",
"ts-loader": "^9.4.2",
"tslint": "^6.1.3",
"tslint-config-standard": "^9.0.0",
"tslint-loader": "^3.5.4",
"typescript": "^4.9.4",
"typescript": "^5.2.2",
"vue-cli-plugin-element-ui": "^1.1.4",
"vueify": "^9.4.1",
"webpack": "^5.75.0",
"webpack": "^5.78.0",
"workbox-webpack-plugin": "^6.5.4"
},
"browser": {
"crypto": false
},
"browserslist": [
"last 30 Chrome versions",
"last 30 Firefox versions",
"last 4 Edge versions",
"last 30 Safari versions",
"last 30 Android versions",
"last 30 ChromeAndroid versions",
"last 80 Chrome versions",
"last 40 Firefox versions",
"last 10 Edge versions",
"last 45 Safari versions",
"last 80 Android versions",
"last 120 ChromeAndroid versions",
"last 30 FirefoxAndroid versions",
"last 18 iOS versions",
"last 11 Opera versions"
"last 20 iOS versions",
"last 10 Opera versions",
"> 0.03%",
"not dead",
"fully supports es6-module"
],
"engines": {
"node": ">= 16.14.0",

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -37,7 +37,7 @@ module.exports = configure((ctx) => ({
// --> 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', 'calendar', 'social-sharing'],
boot: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'calendar', 'social-sharing', 'timeago'],
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
css: [
@@ -97,7 +97,7 @@ module.exports = configure((ctx) => ({
chainWebpack(chain, { isServer, isClient }) {
chain.resolve.alias
// .set('myalias', path.resolve(__dirname, './src/somefolder'))
// .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/*'))
@@ -238,8 +238,7 @@ module.exports = configure((ctx) => ({
'Ripple',
'ClosePopup',
],
// Quasar plugins
plugins: [
_plugins: [
'Meta',
'Dialog',
'Notify',
@@ -247,13 +246,25 @@ module.exports = configure((ctx) => ({
'Loading',
'AppVisibility',
],
get plugins_1() {
return this._plugins;
},
set plugins_1(value) {
this._plugins = value;
},
get plugins() {
return this._plugins;
},
set plugins(value) {
this._plugins = value;
},
iconSet: 'fontawesome-v5',
lang: 'it', // Quasar language
},
// animations: 'all', // --- includes all animations
animations: 'all', // --- includes all animations
// https://v2.quasar.dev/options/animations
animations: [],
// animations: [],
// https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr
ssr: {
@@ -282,7 +293,7 @@ module.exports = configure((ctx) => ({
pwa: {
workboxPluginMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
workboxOptions: {}, // only for GenerateSW
extendGenerateSWOptions (cfg) {
extendGenerateSWOptions(cfg) {
cfg.skipWaiting = false
cfg.clientsClaim = false
},
@@ -299,8 +310,11 @@ module.exports = configure((ctx) => ({
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
background_color: '#fff',
theme_color: '#027be3',
scope: "/",
id: "/?homescreen=1",
start_url: "/?homescreen=1",
icons: [
{
src: 'images/riso-android-icon-512x512.png',
@@ -348,6 +362,10 @@ module.exports = configure((ctx) => ({
type: 'image/png',
},
],
related_applications: [{
"platform": "webapp",
"url": "https://www.riso.app/manifest.json"
}]
},
},

4
rest.http Normal file
View File

@@ -0,0 +1,4 @@
## Portainer:
GET http://pi:9000

View File

@@ -9,6 +9,6 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a dist/pwa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a --exclude 'upload' dist/pwa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
echo "Finito $SERVERDIR_WEBSITE "
fi

11
send_pwa_to_risotest.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
source .env.test.risosrv
cp .env.test.risosrv .env.production
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
rsync -e 'ssh -p 5522' -a --exclude 'upload' dist/pwa/ root@risosrv:/home/$SERVERDIR_WEBSITE/
echo "Finito $SERVERDIR_WEBSITE"
cp .env.prod.bak .env.production

View File

@@ -5,7 +5,7 @@ source ./.env.test
cp .env.test .env.production
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a dist/pwa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a --exclude 'upload' dist/pwa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
echo "Finito $SERVERDIR_WEBSITE"
cp .env.prod.bak .env.production

View File

@@ -9,6 +9,6 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a dist/spa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a --exclude 'upload' dist/spa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
echo "Finito $SERVERDIR_WEBSITE "
fi

View File

@@ -5,7 +5,7 @@ source ./.env.test
cp .env.test .env.production
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a dist/spa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a --exclude 'upload' dist/spa/ ftpadmin@servereng:/var/www/$SERVERDIR_WEBSITE/
echo "Finito $SERVERDIR_WEBSITE"
cp .env.prod.bak .env.production

View File

@@ -617,7 +617,7 @@ self.addEventListener('push', (event) => {
options = {
body: data.content,
icon: data.icon ? data.icon : '/images/android-chrome-192x192.png',
badge: data.badge ? data.badge : '/images/android-chrome-192x192.png',
badge: data.badge ? data.badge : '/images/badge-96x96.png',
data: {
url: data.url,
},
@@ -633,7 +633,7 @@ self.addEventListener('push', (event) => {
options = {
body: text,
icon: '/images/android-chrome-192x192.png',
badge: '/images/android-chrome-192x192.png',
badge: '/images/badge-96x96.png',
data: {
url: '/',
},

View File

@@ -28,6 +28,7 @@ export default {
const $q = useQuasar()
const userStore = useUserStore()
const $router = useRouter()
const $route = useRoute()
const globalStore = useGlobalStore()
const { t } = useI18n();
@@ -79,15 +80,21 @@ export default {
function mounted() {
console.log('app mounted')
darkcookie.value = tools.getCookie('darkmode', false, false, false) === '-1'
globalStore.homescreen = $route.query.homescreen ? $route.query.homescreen : ''
scroll()
tools.checkApp()
}
async function created() {
tools.initprompt()
tools.checkApp()
try {
if (process.env.DEV) {
console.info('SESSIONE IN SVILUPPO ! (DEV)')

7
src/boot/timeago.ts Executable file
View File

@@ -0,0 +1,7 @@
//@ts-ignore
import timeago from 'vue-timeago3'
import { boot } from 'quasar/wrappers'
export default boot(({ app }) => {
app.use(timeago)
})

View File

@@ -1 +1 @@
/home/paolo/myproject/freeplanet_serverside/src/server/tools/shared_nodejs.js
../../../freeplanet_serverside/src/server/tools/shared_nodejs.js

View File

@@ -15,6 +15,24 @@ export const shared_consts = {
color: 'green',
},
},
LIMIT_NOTIF_FOR_USER: 200,
CallFunz: {
SOSTITUISCI: 345,
AGGIUNGI_NUOVO_IMBARCO: 380,
CANCELLA_IMBARCO: 385,
DAMMI_PRIMO_UTENTE_LIBERO: 390,
GET_VALBYTABLE: 400,
SET_VALBYTABLE: 410,
ZOOM_GIA_PARTECIPATO: 510,
REGISTRATION: 6,
RICHIESTA_GRUPPO: 10,
RICHIESTA_AMICIZIA: 15,
RICHIESTA_HANDSHAKE: 16,
RICHIESTA_CIRCUIT: 20,
RICHIESTA_FIDO: 25,
ENTRA_RIS_ITALIA: 30,
},
ELEMTYPE: {
TITLE: 5,
@@ -39,12 +57,14 @@ export const shared_consts = {
MAINVIEW: 130,
CHECKAPPRUNNING: 135,
DASHBOARD: 140,
CSENDRISTO: 150,
STATUSREG: 160,
CHECKIFISLOGGED: 170,
INFO_VERSION: 180,
BOTT_CONDIVIDI: 190,
BUTTON: 195,
PRESENTAZIONE: 200,
MYACTIVITIES: 205,
NOTIFATTOP: 210,
CHART: 220,
CHECKNEWVERSION: 230,
@@ -54,6 +74,8 @@ export const shared_consts = {
REGISTRATION: 258,
BTN_LOGIN: 260,
FOOTER: 270,
PROFILETUTORIAL: 280,
VISUVIDEOPROMOANDPDF: 290
},
QUERYTYPE_MYGROUP: 1,
@@ -63,6 +85,10 @@ export const shared_consts = {
QUERYTYPE_REFUSED_USER_CIRCUIT: 12,
QUERYTYPE_LIST_MOVEMENTS: 15,
QUERYTYPE_LIST_ALLMOVEMENTS: 16,
QUERYTYPE_LIST_MOVEMENTS_GROUPNAME: 17,
QUERYTYPE_LIST_MOVEMENTS_CONTOCOM: 18,
QUERYTYPE_GROUP_CIRCUIT: 20,
QUERYTYPE_REFUSED_GROUP_CIRCUIT: 22,
FILTER_EXTRALIST_NOT_REGISTERED: 1,
FILTER_EXTRALIST_NOT_CONTACTED: 2,
@@ -87,18 +113,22 @@ export const shared_consts = {
FILTER_USER_NO_VERIFIED_APORTADOR: 2097152,
FILTER_USER_SI_TELEGRAM_ID: 4194304,
FILTER_USER_WITHOUT_USERNAME_TELEGRAM: 8388608,
FILTER_USER_PROVINCE: 16777216,
OPTIONS_SEARCH_ONLY_FULL_WORDS: 1,
OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2,
OPTIONS_SEARCH_USER_ALL_WORDS: 4,
OPTIONS_ADD_COUNT_FAVORITE: 8,
FRIENDSCMD: {
SETTRUST: 121,
REQFRIEND: 125,
SETFRIEND: 132,
SETHANDSHAKE: 133,
REMOVE_FROM_MYFRIENDS: 144,
REFUSE_REQ_FRIEND: 145,
CANCEL_REQ_FRIEND: 146,
REMOVE_FROM_MYHANDSHAKE: 147,
BLOCK_USER: 155,
UNBLOCK_USER: 156,
REPORT_USER: 158,
@@ -122,6 +152,7 @@ export const shared_consts = {
CIRCUITCMD: {
REQ: 2000,
SET: 2001,
SETFIDO: 2005,
REMOVE_FROM_MYLIST: 2144,
REFUSE_REQ: 2145,
CANCEL_REQ: 2146,
@@ -159,20 +190,32 @@ export const shared_consts = {
TABLES_MYHOSPS: 'myhosps',
TABLES_MYGOODS: 'mygoods',
TABLES_MYEVENTS: 'myevents',
TABLES_CIRCUITS: 'circuits',
TABLES_MYGROUPS: 'mygroups',
MYTABS: [{ id: 0, table: 'none' },
{ id: 1, table: 'myskills' },
{ id: 2, table: 'mybachecas' },
{ id: 3, table: 'myhosps' },
{ id: 4, table: 'mygoods' },
{ id: 5, table: 'myevents' }
],
TABLES_ENABLE_GETREC_BYID: ['mybachecas', 'myhosps'],
TABLES_USER_INCLUDE_MY: ['mygroups'],
TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas', 'myhosps', 'mygoods'],
TABLES_INSERT_ALMOST_ONE_TO_ENABLE_CIRCUIT: ['myskills', 'myhosps', 'mygoods'],
TABLES_WITH_FILTER_FIELD: ['caldate'],
TABLES_WITH_SPECIAL_FILTER: ['pub_to_share'],
COL_WITH_FILTER_GTE: ['numMaxPeopleHosp'],
TABLES_WITH_DATE: ['mybachecas', 'myhosps'],
TABLES_WITH_DATE: ['mybachecas', 'myhosps'], // 'mybachecas'
TABLES_WITH_SORTING: ['mybachecas', 'myhosps'],
TABLES_REC_ID: ['skills', 'goods', 'subskills', 'myskills', 'mybachecas', 'myhosps', 'mygoods'],
TABLES_FAVORITE_BOOKMARK: ['myskills', 'mygoods', 'mybachecas', 'myhosps'],
// costanti.VISUTABLE_SCHEDA_USER, VISUTABLE_SCHEDA_GROUP, VISUTABLE_USER_TABGROUP, VISUTABLE_USER_TABCIRCUIT
VERTIC_SHOW_GRID: [-1, 2, -3, -4, -5],
// costanti.VISUTABLE_SCHEDA_USER, VISUTABLE_SCHEDA_GROUP, VISUTABLE_USER_TABGROUP, VISUTABLE_USER_TABCIRCUIT, VISUTABLE_GROUP_CIRCUIT
VERTIC_SHOW_GRID: [-1, 2, -3, -4, -5, -6],
TABLES_UPDATE_LASTIFIED: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'bots'],
TABLES_FINDER: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'mygroups'],
@@ -180,8 +223,12 @@ export const shared_consts = {
TABLES_SHOW_ADTYPE: ['myskills', 'mygoods'],
TABLES_VISU_LISTA_USER: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'users'],
TABLES_FIELDS_DESCR_AND_CITY_AND_USER: ['myskills', 'mybachecas', 'myhosps', 'mygoods'],
TABLES_VISU_IMG: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'mygroups'],
TABLES_ORDER_DATE_UPDATED: ['myskills', 'myhosps', 'mygoods'],
TABLES_ORDER_DESCR: ['mygroups'],
TABLES_VISU_IMG: ['myskills', 'myhosps', 'mygoods', 'mygroups'],
TABLES_DIRECTORY_A_PARTE: ['mygroups'],
TABLES_WITH_ADMINS: ['mygroups', 'circuits'],
TABLES_DIRECTORY_SINGLE_IMG: ['circuits'],
@@ -191,6 +238,11 @@ export const shared_consts = {
VISIB_ONLY_MANAGER: 2,
VISIB_ONLY_ADMIN: 4,
CIRCUIT_CFG: {
MULT_FIDO_USER: 2.0,
MULT_FIDO_GROUP: 2.0,
},
Visibility_Group: {
PRIVATE: 1,
HIDDEN: 2,
@@ -202,6 +254,8 @@ export const shared_consts = {
BOTTYPE_LINK: 2,
BOTTYPE_TEXT: 3,
BOTTYPE_MENU: 4,
BOTTYPE_MARKDOWN: 5,
BOTTYPE_BOTTONI_INLINE: 6,
CashType: {
None: 0,
@@ -239,6 +293,14 @@ export const shared_consts = {
value: 4, // BOTTYPE_MENU
label: 'Menu',
},
{
value: 5,
label: 'MarkDown',
},
{
value: 6,
label: 'Bottoni InLine',
},
],
Shippings: [
@@ -517,6 +579,14 @@ export const shared_consts = {
value: 23,
label: 'Asciugacapelli',
},
{
value: 24,
label: 'Riscaldamento a legna',
},
{
value: 25,
label: 'Riscaldamento a gas',
},
],
Regions: [
@@ -612,6 +682,10 @@ export const shared_consts = {
value: 'ONL',
label: 'On Line',
},
{
value: 'ITA',
label: 'Italia',
},
],
Lang: [
@@ -928,6 +1002,14 @@ export const shared_consts = {
10,
],
REACTIONS_FIELD:
{
numseen: 1,
numbook: 1,
numfav: 1,
numattend: 1,
},
OrderStatusStr: [
{
label: 'Nessuno',
@@ -967,6 +1049,9 @@ export const shared_consts = {
Notif_Reg_Bot_ToManagers: 1,
Notif_Reg_Push_Admin: 2,
Need_Aportador_On_DataReg_To_Verify_Reg: 4,
AskInvitantesulBot: 8,
AskUsernameSulBot: 16,
registerUserWithBot: 32,
},
MsgTeleg: {
@@ -991,11 +1076,15 @@ export const shared_consts = {
NEW_ADV_MY_GROUPS: 8,
NEW_ADV_MY_RIS_CIRCUIT: 16,
NEW_ADV_SECTOR: 32,
NEW_ADV_YOUR_PROVINCE: 64,
},
StatusNotifs: {
STATUS_FRIENDS_ACCEPTED: 1,
STATUS_FRIENDS_REFUSED: 2,
STATUS_FRIENDS_REPORTED: 3,
STATUS_HANDSHAKE_ACCEPTED: 10,
STATUS_HANDSHAKE_REFUSED: 11,
},
GroupsNotifs: {
@@ -1007,6 +1096,21 @@ export const shared_consts = {
STATUS_GROUPS_REMOVED: 7,
},
CircuitsNotif: {
STATUS_NONE: 0,
STATUS_NEW: 51,
STATUS_ACCEPTED: 53,
STATUS_REFUSED: 54,
STATUS_BLOCKED: 55,
STATUS_DELETED: 56,
STATUS_REMOVED: 57,
STATUS_SENDCOINSREQ: 58,
STATUS_COINS_ACCEPTED: 60,
STATUS_COINS_REFUSED: 61,
STATUS_COINS_ACCEPTED_SENT: 62,
STATUS_COINS_REFUSED_SENT: 63,
},
QualiNotifs: {
CIRCUITS: 1,
OTHERS: 2,
@@ -1016,10 +1120,13 @@ export const shared_consts = {
TYPEDIR_BACHECA: 1,
ID_BACHECA_NEW_GOOD: 1,
ID_BACHECA_NEW_SERVICE: 2,
ID_BACHECA_NEW_HOSP: 4,
TYPEDIR_EVENTS: 2,
ID_EVENTS_NEW_REC: 1,
ID_EVENTS_REMOVE_REC: 2,
ID_EVENTS_ATTEND: 4,
ID_EVENTS_SEND_MSG: 8,
TYPEDIR_FRIENDS: 3,
ID_FRIENDS_NEW_REC: 1,
@@ -1056,12 +1163,19 @@ export const shared_consts = {
ID_CIRCUIT_SENDCOINSREQ_SENT: 4096,
ID_CIRCUIT_COINS_ACCEPTED_SENT: 8192,
ID_CIRCUIT_COINS_REFUSED_SENT: 16384,
ID_CIRCUIT_SETFIDO: 32768,
TYPEDIR_BOOKING: 6,
TYPEDIR_MSGS: 7,
ID_MSGS_NEW_REC: 1,
TYPEDIR_HANDSHAKE: 10,
ID_HANDSHAKE_ACCEPTED: 2,
TYPEDIR_FAVORITE: 11,
ID_FAVORITE_ADDED: 1,
TYPEDIR_TEST: 444,
ID_TEST_NEW_REC: 1,
},
@@ -1095,6 +1209,22 @@ export const shared_consts = {
{
value: 2, // ID_BACHECA_NEW_SERVICE
labeltrans: 'notifsid.bacheca_new_service',
},
{
value: 4, // ID_BACHECA_NEW_HOSP
labeltrans: 'notifsid.bacheca_new_hosp',
},
],
},
{
value: 11, //
labeltrans: 'typenotifs.favorite',
descr: 'typenotifs.favorite_descr',
icon: 'far fa-heart',
list: [
{
value: 1, // ID_FAVORITE_ADDED
labeltrans: 'notifsid.favorite_new',
}
],
},
@@ -1107,6 +1237,10 @@ export const shared_consts = {
{
value: 1, // ID_EVENTS_NEW_REC
labeltrans: 'notifsid.events_new',
},
{
value: 4, // ID_EVENTS_ATTEND
labeltrans: 'notifsid.attend_new',
}
],
},
@@ -1162,6 +1296,11 @@ export const shared_consts = {
labeltrans: 'notifs.warn_city',
directory: 1,
},*/
{
value: 64, // NEW_ADV_YOUR_PROVINCE
labeltrans: 'notifs.warn_your_province',
directory: 1,
},
{
value: 2, // NEW_ADV_PROVINCE
labeltrans: 'notifs.warn_province',
@@ -1188,10 +1327,15 @@ export const shared_consts = {
directory: 1,
},
{
value: 1, //
value: 1, // ID_EVENTS_NEW_REC
labeltrans: 'notifs.new_event',
directory: 2,
},
{
value: 4, // ID_EVENTS_ATTEND
labeltrans: 'notifs.new_attend',
directory: 2,
},
{
value: 1, //
labeltrans: 'notifs.new_friends',
@@ -1207,6 +1351,11 @@ export const shared_consts = {
labeltrans: 'notifsid.circuits_new',
directory: 5,
},
{
value: 1, //
labeltrans: 'notifsid.favorite_new',
directory: 11,
},
],
CIRCUIT_STATUS: {
@@ -1216,6 +1365,11 @@ export const shared_consts = {
FASE3_MONETA_ABILITATA: 3,
},
CIRCUIT_PARAMS: {
SCOPERTO_MIN_GRP: 200,
SCOPERTO_MAX_GRP: 400,
},
FontsInstalled: [
{
label: 'Arial',
@@ -1276,6 +1430,14 @@ export const shared_consts = {
value: 140,
label: 'Dashboard',
},
{
value: 150,
label: 'SendCoinTo',
},
{
value: 280,
label: 'Tutorial',
},
],
TypesElemAdminTools: [
@@ -1307,6 +1469,10 @@ export const shared_consts = {
value: 200,
label: 'Presentazione',
},
{
value: 205,
label: 'Attività',
},
{
value: 210,
label: 'Notifiche in Top',
@@ -1347,6 +1513,10 @@ export const shared_consts = {
value: 270,
label: 'Footer',
},
{
value: 280,
label: 'Visu Promo and PDF',
},
{
value: 40,
label: 'Separatore',
@@ -1472,6 +1642,11 @@ export const shared_consts = {
UP_LEFT: 5,
},
TABLETYPE: {
DefaultCal: 0,
MyBachecas: 1,
},
getStatusStr(status: number) {
const trovatorec = this.OrderStatusStr.find((rec) => rec.value === status)
return (trovatorec) ? trovatorec.label : ''
@@ -1486,4 +1661,221 @@ export const shared_consts = {
return ['_id', 'username', 'group', 'email', 'name', 'surname', 'perm', 'date_reg', 'verified_email', 'notask_verif', 'verified_by_aportador', 'trust_modified', 'img', 'ipaddr', 'lasttimeonline', 'profile', 'news_on']
},
getProjectByTable(table: string, proj_add?: any) {
let proj = {}
if (table === this.TABLES_MYGOODS) {
proj = {
'recGood': 1,
'sectorGood': 1,
'idSectorGood': 1,
'idGood': 1,
'idShipping': 1,
'idStatusGood': 1,
groupname: 1,
//**ADDFIELD_MYGOOD
}
} else if (table === this.TABLES_MYGROUPS) {
proj = {
groupname: 1,
title: 1,
descr: 1,
img: 1,
visibility: 1,
admins: 1,
idCatGrp: 1,
date_created: 1,
date_updated: 1,
photos: 1,
idCity: 1,
note: 1,
website: 1,
link_telegram: 1,
comune: 1,
mycities: 1,
sector: 1,
recCatGrp: 1,
}
} else if (table === this.TABLES_CIRCUITS) {
proj = {
_id: 1,
groupnameId: 1,
path: 1,
name: 1,
strProv: 1,
subname: 1,
longdescr: 1,
regulation: 1,
numMembers: 1,
totCircolante: 1,
totTransato: 1,
systemUserId: 1,
createdBy: 1,
date_created: 1,
date_updated: 1,
nome_valuta: 1,
fido_scoperto_default: 1,
deperimento: 1,
showAlways: 1,
status: 1,
transactionsEnabled: 1,
qta_max_default: 1,
fido_scoperto_default_grp: 1,
qta_max_default_grp: 1,
valuta_per_euro: 1,
symbol: 1,
idCity: 1,
pub_to_share: 1,
visibility: 1,
color: 1,
abbrev: 1,
data_costituz: 1,
photos: 1,
admins: 1,
req_users: 1,
refused_users: 1,
'mycities': 1,
//**ADDFIELD_CIRCUITS
}
} else if (table === this.TABLES_MYSKILLS) {
proj = {
recSkill: 1,
sector: 1,
idSector: 1,
idSkill: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
website: 1,
groupname: 1,
//**ADDFIELD_MYSKILL
}
} else if (table === this.TABLES_MYHOSPS) {
proj = {
visibile: 1,
typeHosp: 1,
numMaxPeopleHosp: 1,
accomodation: 1,
preferences: 1,
idContribType: 1,
photos: 1,
idCity: 1,
note: 1,
website: 1,
link_maplocation: 1,
groupname: 1,
}
} else if (table === this.TABLES_MYBACHECAS) {
proj = {
recSkill: 1,
sector: 1,
idSector: 1,
idSkill: 1,
// 'idSubSkill': 1,
idStatusSkill: 1,
idContribType: 1,
dateTimeStart: 1,
dateTimeEnd: 1,
website: 1,
organisedBy: 1,
contact_phone: 1,
contact_telegram: 1,
address: 1,
min_partecip: 1,
max_partecip: 1,
contribstr: 1,
link_maplocation: 1,
groupname: 1,
//**ADDFIELD_MYBACHECAS
}
}
if (proj_add)
proj = Object.assign({}, proj, proj_add);
return proj;
},
getProjectForAll(proj_add: any, table?: string) {
let proj = {
idContribType: 1,
idCity: 1,
pub_to_share: 1,
adType: 1,
photos: 1,
note: 1,
descr: 1,
date_created: 1,
date_updated: 1,
userId: 1,
username: 1,
name: 1,
surname: 1,
lasttimeonline: 1,
comune: 1,
mycities: 1,
lang: 1,
'profile.img': 1,
'profile.mygroups': 1,
'profile.mycircuits': 1,
'profile.qualifica': 1,
'profile.resid_province': 1,
'profile.resid_card': 1,
'profile.username_telegram': 1,
'profile.favorite': 1,
'profile.bookmark': 1,
'profile.attend': 1,
'profile.seen': 1,
'mygrp.groupname': 1,
'mygrp.title': 1,
'mygrp.photos': 1,
reported: 1,
date_report: 1,
username_who_report: 1,
namecomplete: 1,
date_reg: 1,
};
if (proj_add)
proj = Object.assign({}, proj, proj_add);
proj = {...proj, ...this.REACTIONS_FIELD};
if (table) {
let proj_add3 = this.getProjectByTable(table);
proj = Object.assign({}, proj, proj_add3);
}
return proj;
},
getDirectoryByTable(table: string, barre?: boolean) {
let add = '';
if (barre)
add = '/';
if (table === 'myskills') {
return add + 'myservice' + add
} else if (table === 'mybachecas') {
return add + 'mypage' + add
} else if (table === 'myhosps') {
return add + 'myhosps' + add
} else if (table === 'mygoods') {
return add + 'mygood' + add
} else if (table === 'mygroups') {
return add + 'grp' + add
} else if (table === 'circuits') {
return add + 'circuit' + add
}
return ''
},
}

View File

@@ -68,7 +68,7 @@ export default defineComponent({
})
function created() {
console.log('created CAccomodation', props.mylist)
// console.log('created CAccomodation', props.mylist)
if (isValid(props.mylist)) {
// @ts-ignore
let myarr: any = props.mylist

View File

@@ -1,12 +1,8 @@
<template>
<div class="bordo_stondato_blu">
<CTitleBanner class="column" title="Tipi di ospitalità"></CTitleBanner>
<div class="">
<div class="">
<q-btn
v-if="isInModif"
rounded label="Aggiungi Letti" color="positive" @click="add_newbed()">
</q-btn>
<div v-for="(myaccom, index) in getlist()" :key="index">
<div v-if="isInModif" class="row justify-center bordo_stondato_small">
@@ -17,6 +13,8 @@
v-model:value="myaccom.num"
optval="value"
optlab="label"
style="min-width:80px;"
:sola_lettura="!isInModif"
:options="shared_consts.People" :useinput="false"
>
@@ -58,6 +56,10 @@
</div>
</div>
</div>
<q-btn
v-if="isInModif"
rounded label="Aggiungi Letti" color="positive" @click="add_newbed()">
</q-btn>
</div>
</div>
</template>

View File

@@ -100,6 +100,7 @@ export default defineComponent({
const serverData: any = ref([])
const numRecLoaded = ref(0)
const changetable = ref(false)
const filtri = ref(false)
const searchList = ref([] as ISearchList[])
const actual = ''
@@ -349,6 +350,7 @@ export default defineComponent({
createNewRecordDialog,
toHome,
iconsel,
filtri,
}
}
})

View File

@@ -3,7 +3,7 @@
:class="$q.screen.lt.sm ? `` : `q-pa-xs`"
v-if="isfinishLoading && mycolumns"
>
<q-layout view="hHh lpR fFf" :class="`shadow-2 rounded-borders `">
<div :class="`shadow-2 rounded-borders`">
<div>
<div v-if="prop_search || canEdit" class="q-my-xs text-right">
<q-btn
@@ -15,218 +15,230 @@
></q-btn>
</div>
<q-slide-transition>
<div class="row no-wrap shadow-1">
<q-header elevated reveal>
<q-toolbar class="glossy" style="">
<div v-if="$q.screen.gt.xs" class="col-1">
<q-avatar @click="toHome" class="imglink">
<img
:src="tools.getimglogo()"
height="27"
alt="Immagine Logo"
/>
</q-avatar>
</div>
<div class="col-4">
<q-select
v-model="tablesel"
:options="optionsMainCards"
dark
emit-value
borderless
map-options
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
@update:model-value="gotoPageSel"
>
<template v-slot:prepend>
<q-icon :name="iconsel" />
</template>
<template v-slot:option="scope">
<q-item v-bind="scope.itemProps">
<q-item-section avatar>
<q-icon :name="scope.opt.icon" />
</q-item-section>
<q-item-section>
<q-item-label>{{ scope.opt.label }}</q-item-label>
<!--<q-item-label caption>{{
<div class="row no-wrap shadow-1" style="height: 40px;">
<div v-if="$q.screen.gt.xs" class="col-1">
<q-avatar @click="toHome" class="imglink">
<img
:src="tools.getimglogo()"
height="27"
alt="Immagine Logo"
/>
</q-avatar>
</div>
<div class="col-4">
<q-select
dense
v-model="tablesel"
:options="optionsMainCards"
emit-value
borderless
class="text-blue"
map-options
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
@update:model-value="gotoPageSel"
>
<template v-slot:prepend>
<q-icon :name="iconsel" />
</template>
<template v-slot:option="scope">
<q-item v-bind="scope.itemProps">
<q-item-section avatar>
<q-icon :name="scope.opt.icon" />
</q-item-section>
<q-item-section>
<q-item-label>{{ scope.opt.label }}</q-item-label>
<!--<q-item-label caption>{{
scope.opt.description
}}</q-item-label>-->
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<q-space />
<!--<q-btn
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<!--<q-btn
size="sm"
class="col-1 q-mx-xs"
icon="fas fa-plus"
@click="createNewRecordDialog"
>
</q-btn>-->
<div
class="col"
v-for="(item, index) in searchList"
:key="index"
>
<CMySelect
:col="fieldsTable.getColByColumns(mycolumns, item.key)"
v-if="
item.type === costanti.FieldType.select ||
item.type === costanti.FieldType.select_by_server
"
:label="
item.value && item.value._id > 0
? undefined
: labelcombo(item)
"
v-model:value="item.value"
@update:value="searchval(item.value, item.table)"
:addall="item.addall"
:addnone="item.addnone"
:addlast="true"
:tablesel="
item.type === costanti.FieldType.select_by_server
? item.tablesel
: ''
"
:pickup="item.type === costanti.FieldType.select_by_server"
label-color="white"
myclass="comboselector"
color="primary"
dark
:dense="true"
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:options="valoriopt(item, false)"
:filter="item.filter"
:filter_extra="item.filter_extra"
style="font-size: 0.8rem !important"
:useinput="
item.useinput &&
item.type !== costanti.FieldType.select_by_server
"
<q-btn v-if="false" color="green" label="Filtra la ricerca">
<q-popup-proxy>
<q-banner class="bg-brown text-white">
<div
class="col"
v-for="(item, index) in searchList"
:key="index"
>
</CMySelect>
<CMySelect
:col="fieldsTable.getColByColumns(mycolumns, item.key)"
v-if="
item.type === costanti.FieldType.select ||
item.type === costanti.FieldType.select_by_server
"
:label="
item.value && item.value._id > 0
? undefined
: labelcombo(item)
"
v-model:value="item.value"
@update:value="searchval(item.value, item.table)"
:addall="item.addall"
:addnone="item.addnone"
:addlast="true"
:tablesel="
item.type === costanti.FieldType.select_by_server
? item.tablesel
: ''
"
:pickup="
item.type === costanti.FieldType.select_by_server
"
:label-color="$q.dark.isActive ? 'white' : 'black'"
myclass="comboselector"
color="primary"
dark
:dense="true"
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:options="valoriopt(item, false)"
:filter="item.filter"
:filter_extra="item.filter_extra"
style="font-size: 0.8rem !important"
:useinput="
item.useinput &&
item.type !== costanti.FieldType.select_by_server
"
>
</CMySelect>
<!--<div v-if="item.type === costanti.FieldType.multiselect_by_server">
<!--<div v-if="item.type === costanti.FieldType.multiselect_by_server">
item: {{ item}}
</div>-->
<CMySelect
v-if="
item.type === costanti.FieldType.multiselect_by_server
"
:col="fieldsTable.getColByColumns(mycolumns, item.key)"
:multiselect_by_server="true"
:label="labelcombo(item)"
v-model:arrvalue="item.arrvalue"
@update:arrvalue="searchval(item.arrvalue, item.table)"
:addall="item.addall"
:addnone="item.addnone"
dark
:addlast="true"
:tablesel="item.tablesel"
:pickup="true"
:param1="item.param1"
label-color="primary"
class="comboselector"
color="primary"
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:filter="item.filter"
:filter_extra="item.filter_extra"
:options="valoriopt(item, false)"
:useinput="true"
>
</CMySelect>
<q-select
v-if="item.type === costanti.FieldType.multiselect"
v-model="item.arrvalue"
label-color="primary"
:label="labelcombo(item)"
@update:model-value="searchval(item.arrvalue, item.table)"
rounded
dark
dense
outlined
multiple
options-dense
emit-value
map-options
:useinput="item.useinput"
:options="valoriopt(item, item.addall, item.addnone)"
:filter="item.filter"
class="comboselector"
:option-value="fieldsTable.getKeyByTable(item.table)"
>
<template v-if="item.icon" v-slot:prepend>
<q-icon :name="item.icon" />
</template>
<template
v-if="item.arrvalue.length >= 1"
v-slot:selected-item="scope"
<CMySelect
v-if="
item.type === costanti.FieldType.multiselect_by_server
"
:col="fieldsTable.getColByColumns(mycolumns, item.key)"
:multiselect_by_server="true"
:label="labelcombo(item)"
v-model:arrvalue="item.arrvalue"
@update:arrvalue="searchval(item.arrvalue, item.table)"
:addall="item.addall"
:addnone="item.addnone"
dark
:addlast="true"
:tablesel="item.tablesel"
:pickup="true"
:param1="item.param1"
label-color="primary"
class="comboselector"
color="primary"
:icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)"
:filter="item.filter"
:filter_extra="item.filter_extra"
:options="valoriopt(item, false)"
:useinput="true"
>
<div
v-if="
scope.opt[fieldsTable.getLabelByTable(item.table)] ||
(scope.opt && checkIfShowRec(scope.opt))
"
</CMySelect>
<q-select
v-if="item.type === costanti.FieldType.multiselect"
v-model="item.arrvalue"
label-color="primary"
:label="labelcombo(item)"
@update:model-value="searchval(item.arrvalue, item.table)"
rounded
dark
dense
outlined
multiple
options-dense
emit-value
map-options
:useinput="item.useinput"
:options="valoriopt(item, item.addall, item.addnone)"
:filter="item.filter"
class="comboselector"
:option-value="fieldsTable.getKeyByTable(item.table)"
>
<template v-if="item.icon" v-slot:prepend>
<q-icon :name="item.icon" />
</template>
<template
v-if="item.arrvalue.length >= 1"
v-slot:selected-item="scope"
>
<q-chip
removable
dense
@remove="scope.removeAtIndex(scope.index)"
v-if="checkIfShowRec(scope.opt)"
color="white"
text-color="mycol"
class="q-my-none q-ml-xs q-mr-none"
>
<q-avatar
color="primary"
text-color="white"
:icon="item.icon"
size="12px"
/>
{{
<div
v-if="
scope.opt[
fieldsTable.getLabelByTable(item.table)
] || scope.opt
}}
</q-chip>
</div>
</template>
<template
v-slot:option="{ itemProps, opt, selected, toggleOption }"
>
<q-item v-bind="itemProps">
<q-item-section>
<q-item-label>{{
opt[fieldsTable.getLabelByTable(item.table)]
}}</q-item-label>
</q-item-section>
<q-item-section side>
<q-toggle
:model-value="selected"
@update:model-value="toggleOption(opt)"
/>
</q-item-section>
</q-item>
</template>
</q-select>
</div>
</q-toolbar>
</q-header>
] ||
(scope.opt && checkIfShowRec(scope.opt))
"
>
<q-chip
removable
dense
@remove="scope.removeAtIndex(scope.index)"
v-if="checkIfShowRec(scope.opt)"
:color="$q.dark.isActive ? 'white' : 'black'"
text-color="mycol"
class="q-my-none q-ml-xs q-mr-none"
>
<q-avatar
color="primary"
:text-color="$q.dark.isActive ? 'white' : 'black'"
:icon="item.icon"
size="12px"
/>
{{
scope.opt[
fieldsTable.getLabelByTable(item.table)
] || scope.opt
}}
</q-chip>
</div>
</template>
<template
v-slot:option="{
itemProps,
opt,
selected,
toggleOption,
}"
>
<q-item v-bind="itemProps">
<q-item-section>
<q-item-label>{{
opt[fieldsTable.getLabelByTable(item.table)]
}}</q-item-label>
</q-item-section>
<q-item-section side>
<q-toggle
:model-value="selected"
@update:model-value="toggleOption(opt)"
/>
</q-item-section>
</q-item>
</template>
</q-select>
</div>
</q-banner>
</q-popup-proxy>
</q-btn>
</div>
</q-slide-transition>
</div>
<div class="q-my-md">
<div class="q-my-xs">
<slot />
</div>
</q-layout>
</div>
</div>
</template>
<script lang="ts" src="./CBarSelection.ts">

View File

@@ -1,11 +1,11 @@
<template>
<div v-if="numcol === 3" class="col-xs-4 col-sm-4 col-md-3 col-lg-2">
<div class="q-ma-sm">
<q-btn v-if="!small" :flat="flat" class="mybox_3" :color="color" rounded push :to="to" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 180)">
<q-btn v-if="!small" :flat="flat" class="mybox_3" :color="color" rounded push :to="tools.updateLink(to)" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 180)">
<q-icon class="q-ma-sm" :name="icon"/>
<div class="q-ma-sm my-text_3 text-cls no-wrap"><span v-html="label"></span></div>
</q-btn>
<q-btn v-if="small" :flat="flat" class="mybox_small" :color="color" rounded push :to="to" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 180)">
<q-btn v-if="small" :flat="flat" class="mybox_small" :color="color" rounded push :to="tools.updateLink(to)" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 180)">
<q-icon class="q-ma-sm" :name="icon" size="sm"/>
<div class="q-ma-xs my-text-small text-cls no-wrap"><span v-html="label"></span></div>
</q-btn>
@@ -13,11 +13,11 @@
</div>
<div v-else class="col-xs-6 col-sm-6 col-md-4 col-lg-3">
<div class="q-ma-sm">
<q-btn v-if="!small" :flat="flat" class="mybox" :color="color" rounded push :to="to" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 0)">
<q-btn v-if="!small" :flat="flat" class="mybox" :color="color" rounded push :to="tools.updateLink(to)" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 0)">
<q-icon class="q-ma-sm" size="3rem" :name="icon"/>
<div class="q-ma-sm text-h5-diff text-cls no-wrap"><span v-html="label"></span></div>
</q-btn>
<q-btn v-if="small" :flat="flat" class="mybox_small" :color="color" rounded push :to="to" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 0)">
<q-btn v-if="small" :flat="flat" class="mybox_small" :color="color" rounded push :to="tools.updateLink(to)" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 0)">
<q-icon class="q-ma-sm" :name="icon" size="sm"/>
<div class="q-ma-xs my-text-small text-cls no-wrap"><span v-html="label"></span></div>
</q-btn>

View File

@@ -17,7 +17,8 @@ export default defineComponent({
props: {
discipline: {
Type: Object as PropType<IDiscipline>,
required: true,
required: false,
default: {}
},
directory: {
type: String,
@@ -54,7 +55,7 @@ export default defineComponent({
return calendarStore.eventlist.find((myevent: IEvents) => (myevent.typol === typol) && (new Date(myevent.dateTimeEnd!) >= datenow))
}
function disciplinechanged(myrec: IDiscipline | any) {
function disciplinechanged(myrec: IDiscipline) {
nextlesson.value = getNextLesson(myrec.typol_code)
// console.log('nextlesson', this.nextlesson)
}
@@ -73,7 +74,8 @@ export default defineComponent({
}
function created() {
disciplinechanged(props.discipline)
if (tools.isObject(props.discipline))
disciplinechanged(props.discipline)
}
created()

View File

@@ -24,23 +24,30 @@ export default defineComponent({
const finishLoading = computed(() => globalStore.finishLoading)
const deferredPrompt = computed(() => globalStore.deferredPrompt)
const homescreen = computed(() => globalStore.homescreen)
function initprompt() {
window.addEventListener('beforeinstallprompt', (event) => {
event.preventDefault()
console.log('beforeinstallprompt !')
// Stash the event so it can be triggered later.
globalStore.deferredPrompt = event
})
}
const viewiOS = ref(false)
const viewAndroid = ref(false)
function installApp() {
if (globalStore.deferredPrompt)
globalStore.deferredPrompt.prompt()
if (globalStore.deferredPrompt) {
globalStore.deferredPrompt.prompt()
// Wait for the user to respond to the prompt
globalStore.deferredPrompt.userChoice.then((choiceResult: any)=>{
if (choiceResult.outcome === 'accepted') {
globalStore.deferredPrompt = null;
// console.log('User accepted the A2HS prompt');
} else {
// console.log('User dismissed the A2HS prompt');
}
});
}
}
function mounted() {
initprompt()
tools.checkApp()
}
@@ -54,6 +61,9 @@ export default defineComponent({
installApp,
isAppRunning,
deferredPrompt,
viewiOS,
viewAndroid,
homescreen,
}
}
})

View File

@@ -1,15 +1,106 @@
<template>
<div v-if="finishLoading && !isAppRunning && deferredPrompt" class="row justify-center">
<div v-if="false && tools.isDebugOn()" class="bg-red text-white">
<span> isAppRunning: {{ isAppRunning }} - </span>
<span> deferredPrompt: {{ deferredPrompt }} - </span>
<span> homescreen: {{ homescreen }} </span>
</div>
<div v-if="finishLoading" class="row justify-center">
<div v-if="!isAppRunning">
<!-- App not running -->
<q-btn
glossy
size="xl"
label="Installa App"
@click="installApp"
icon="fas fa-mobile-alt"
color="white"
text-color="green"
/>
<q-btn
v-if="deferredPrompt"
glossy
size="xl"
label="Installa App"
@click="installApp"
icon="fas fa-mobile-alt"
color="green"
text-color="white"
></q-btn>
<div v-else>
<div v-if="$q.platform.is.ios && $q.platform.is.safari && !tools.isDevelop()">
<q-btn
glossy
size="xl"
label="Installa App"
@click="viewiOS = !viewiOS"
icon="fab fa-apple"
color="green"
text-color="white"
></q-btn>
<q-slide-transition>
<!-- Mostra spiegazione per iOS -->
<div v-if="viewiOS">
<q-img
src="images/install_app_on_ios_1.png"
fit="contain"
style="min-width: 350px"
class="q-my-sm"
></q-img
><br />
<q-img
src="images/install_app_on_ios_1b.jpg"
class="q-mb-md"
></q-img
><br />
<q-img
src="images/install_app_on_ios_2.jpg"
fit="contain"
></q-img>
</div>
</q-slide-transition>
</div>
<div v-if="$q.platform.is.android">
<q-btn
v-if="!tools.isDevelop()"
glossy
size="lg"
label="Installa App"
@click="viewAndroid = !viewAndroid"
icon="fab fa-android"
color="green"
text-color="white"
></q-btn>
<q-slide-transition>
<!-- Mostra spiegazione per Android -->
<div v-if="viewAndroid">
<div class="q-ma-sm text-h6"> 1) Cliccare sui 3 puntini verticali<br>
2) Cliccare sulla voce 'Installa App' o 'Schermata Home'<br>
3) Andare sulla schermata HOME e cliccare sull'icona di RISO.
</div>
<q-img
src="images/install_app_on_android_1.jpg"
fit="contain"
style="min-width: 350px"
class="q-my-sm"
></q-img
><br />
<q-img
src="images/install_app_on_android_2.jpg"
fit="contain"
style="min-width: 350px"
class="q-my-sm"
></q-img
><br />
><br />
<q-img
src="images/install_app_on_android_3.jpg"
fit="contain"
style="min-width: 350px"
class="q-my-sm"
></q-img
><br />
</div>
</q-slide-transition>
</div>
</div>
</div>
</div>
<!--<div class="row justify-center">
<CBigBtn

View File

@@ -0,0 +1,42 @@
.text-cls{
font-weight: bold;
}
.my-text {
font-size: 1rem;
font-weight: bold;
line-height: 1.5rem;
letter-spacing: 0.0125em;
}
.my-text_3 {
font-size: 1rem;
font-weight: bold;
line-height: 1.5rem;
letter-spacing: 0.0125em;
}
.my-text-small {
font-size: 1rem;
line-height: 1rem;
letter-spacing: 0.0125em;
}
.mybox_3 {
min-width: 100px;
min-height: 100px;
width: 100%;
}
.mybox {
min-width: 112px;
min-height: 112px;
width: 100%;
}
.mybox_small {
min-width: 110px;
width: 100%;
}

View File

@@ -0,0 +1,60 @@
import { defineComponent, ref, computed, PropType, toRef, onMounted } from 'vue'
import { useUserStore } from '@store/UserStore'
import { useCircuitStore } from '@store/CircuitStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import { tools } from '@store/Modules/tools'
import { IAccount, ICircuit, IMyGroup, IOperators, ISendCoin, ISpecialField, IUserFields } from '../../model'
import { useQuasar } from 'quasar'
export default defineComponent({
name: 'CCheckCircuitsEnabled',
components: {},
props: {
to_user: {
type: Object as PropType<IUserFields>,
required: false,
default: null
},
to_group: {
type: Object as PropType<IMyGroup>,
required: false,
default: null,
},
to_contocom: {
type: String,
required: false,
default: '',
},
},
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n()
const userStore = useUserStore()
const circuitStore = useCircuitStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const non_hai_circuito_nazionale = ref(false)
const destin_non_ha_circuito_naz = ref(false)
function load() {
non_hai_circuito_nazionale.value = !circuitStore.sonoDentroAlCircuitoNazionale()
destin_non_ha_circuito_naz.value = !circuitStore.EDentroAlCircuitoNazionale(props.to_user)
if (userStore.getMyCircuitsInCommonByUser(props.to_user).length > 0) {
destin_non_ha_circuito_naz.value = false
}
}
onMounted(load)
return {
userStore,
tools,
non_hai_circuito_nazionale,
destin_non_ha_circuito_naz,
$q,
}
}
})

View File

@@ -0,0 +1,49 @@
<template>
<div class="q-ma-xs q-pa-xs row">
<div v-if="non_hai_circuito_nazionale" class="q-py-sm">
<q-banner rounded class="bg-red text-white" style="text-align: center">
{{ $t('circuit.non_hai_circuito_nazionale') }}
<br />
</q-banner>
<div class="text-center">
<q-btn
glossy
size="md"
:label="$t('circuit.ask_italia')"
icon="fas fa-key"
color="green"
text-color="white"
rounded
:to="tools.updateLink('/circuit/ris_italia')"
></q-btn>
</div>
</div>
<div v-if="destin_non_ha_circuito_naz" class="q-py-sm">
<q-banner rounded class="bg-red text-white" style="text-align: center">
{{ $t('circuit.destin_non_ha_circuito_naz') }}
<br />
</q-banner>
<div class="text-center">
<q-btn
glossy
size="md"
:label="$t('circuit.invia_msg_dest', {name: to_user.username})"
icon="fas fa-paper-plane"
color="blue"
text-color="white"
rounded
@click="tools.SendMsgRisItalia($q, to_user.username)"
></q-btn>
</div>
</div>
</div>
</template>
<script lang="ts" src="./CCheckCircuitsEnabled.ts">
</script>
<style lang="scss" scoped>
@import './CCheckCircuitsEnabled.scss';
</style>

View File

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

View File

@@ -6,12 +6,18 @@ import { useI18n } from '@/boot/i18n'
import { tools } from '@store/Modules/tools'
import { costanti } from '@store/Modules/costanti'
import { static_data } from '@src/db/static_data'
import { CRegistration } from '@/components/CRegistration'
export default defineComponent({
name: 'CCheckIfIsLogged',
components: { },
props: {},
components: { CRegistration },
props: {
showalways: {
type: Boolean,
required: false,
default: false,
},
},
setup(props, { emit }) {
const userStore = useUserStore()
@@ -27,6 +33,7 @@ export default defineComponent({
costanti,
static_data,
site,
t,
}
}
})

View File

@@ -1,40 +1,86 @@
<template>
<div v-if="!tools.isLogged()">
<div v-if="showalways || (!showalways && !tools.isLogged())">
<div class="q-pa-md q-gutter-sm">
<div class=" text-center">
<transition-group
name="fade"
mode="out-in"
appear
enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"
>
<q-banner
:key="1"
rounded
class="text-white bg-red"
color="primary q-title"
style="text-align: center"
>
<template v-slot:avatar>
<q-icon :key="2" name="fas fa-sign-in-alt" color="white" />
</template>
<div :key="3">
Accedi con le tue credenziali per utilizzare la APP e per unirti
al Circuito di scambio RIS del tuo territorio
</div>
<template v-slot:action>
<div>
<q-btn
flat
color="white"
@click="tools.openrighttoolbar()"
>{{ $t('login.enter') }}
</q-btn>
</div>
<div id="logo" class="text-center">
<img id="logoimg" :src="tools.getimglogo()" alt="logo APP">
</div>
<q-banner rounded class="bg-primary text-white">
<div class="text-h6 text-center">
Accedi al menu inserendo le tue credenziali per entrare 🔑<br>
<div class="text-center">
<q-btn push color="white" text-color="blue" label="Clicca qui per Accedere" @click="tools.openrighttoolbar()"/>
</div>
<br>
Entra anche nel <a href="https://riso.app/gruppi_territoriali"><strong>Canale e Gruppo Telegram di RISO</strong></a> scegliendo la tua provincia !
</div>
<!--<CRegistration />-->
</template>
</q-banner>
</transition-group>
<q-separator inset />
<br>
</q-banner>
<q-banner
rounded
dense
size="lg"
class="shadow-5"
color="primary q-title"
style="text-align: center"
>
<div class="mybanner" :key="3">
👉🏻 Entra nel canale Telegram per unirti al gruppo Provinciale:
</div>
<template v-slot:action>
<q-btn
type="a"
rounded
icon="fab fa-telegram"
color="primary"
href="https://t.me/+pZ40VpmL1NhkZjE0"
target="_blank"
label="Progetto RISO"
>
</q-btn>
</template>
</q-banner>
</div>
<br />
<q-banner rounded class="bg-green-8 text-white">
<div class="text-h6 text-center">
Visualizza la pagina di Aiuto<br>
Visualizza la pagina di Aiuto<br />
<div class="text-center">
<q-btn :color="$q.dark.isActive ? `black` : `white`" push glossy :text-color="$q.dark.isActive ? `white` : `black`" label="Pagina Aiuto" to="/faq"/>
<q-btn
:color="$q.dark.isActive ? `black` : `white`"
push
glossy
:text-color="$q.dark.isActive ? `white` : `black`"
label="Pagina Aiuto"
to="/istruzioni"
/>
</div>
</div>
</q-banner>
</div>
<div
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') }}
</q-btn>
</div>
</div>
</template>

View File

View File

@@ -0,0 +1,89 @@
import { tools } from '../../store/Modules/tools'
import { useQuasar } from 'quasar'
import { useI18n } from '@src/boot/i18n'
import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore'
import { defineComponent, PropType, ref } from 'vue'
import { IUserFields } from 'model'
import { shared_consts } from '@/common/shared_vuejs'
import { CLabel } from '@/components/CLabel'
import { CSendCoins } from '@/components/CSendCoins'
export default defineComponent({
name: 'CContactUser',
props: {
myuser: {
type: Object as PropType<IUserFields>,
required: true,
},
showBtnActivities: {
type: Boolean,
required: true,
},
sendRIS: {
type: Number,
required: false,
default: 0,
}
},
components: { CLabel, CSendCoins },
setup(props) {
const $q = useQuasar()
const userStore = useUserStore()
const globalStore = useGlobalStore()
const showsendCoinTo = ref(false)
const showingtooltip = ref(false)
function myusername() {
return userStore.my.username
}
function getLinkUserTelegram() {
if (props.myuser) {
if (!!props.myuser.profile.username_telegram) {
return 'https://t.me/' + props.myuser.profile.username_telegram
}
} else {
return ''
}
}
function getLinkWebSite() {
if (props.myuser) {
let mysite = props.myuser.profile.website!
if (mysite) {
if (!mysite.startsWith('http')) {
mysite = 'https://' + mysite
}
}
return mysite
} else {
return ''
}
}
function clickOpenSendCoin() {
if (!userStore.my.profile.resid_province) {
// showProvinceToSelect.value = true
} else {
showsendCoinTo.value = true
}
}
return {
tools,
userStore,
shared_consts,
showsendCoinTo,
getLinkUserTelegram,
getLinkWebSite,
myusername,
showingtooltip,
clickOpenSendCoin,
}
},
})

View File

@@ -0,0 +1,88 @@
<template>
<div class="row justify-evenly items-center q-pa-sm q-ma-sm">
<div >
<q-btn
v-if="
userStore.showButtonSendCoin(myuser) &&
(myuser.username !== userStore.my.username ||
userStore.hoContiCollettiviDaAmministrare() ||
userStore.hoContiComunitariDaAmministrare())
"
icon="fas fa-coins"
color="green"
size="md"
rounded
:label="$t('circuit.sendcoins')"
@click="clickOpenSendCoin"
>
</q-btn>
</div>
<div
v-if="showBtnActivities"
>
<q-btn
icon="fas fa-house-user"
size="md"
color="orange"
:label="$t('profile.myactivities')"
:to="`/attivita/` + myuser.username"
>
</q-btn>
</div>
<div class="q-ma-sm">
<q-btn
v-if="getLinkUserTelegram()"
icon="fab fa-telegram"
color="blue"
:type="tools.isUserOk() ? 'a' : 'btn'"
size="md"
rounded
:label="$t('dialog.contact')"
:href="tools.isUserOk() ? getLinkUserTelegram() : null"
@click="!tools.isUserOk() ? (showingtooltip = !showingtooltip) : false"
target="__blank"
>
</q-btn>
<div v-else-if="myuser.email" class="row q-ma-sx">
<CLabel
v-bind="$attrs"
:copy="true"
:value="tools.isUserOk() ? myuser.email : ''"
:label="$t('reg.email')"
/>
<q-btn
outline
icon="fas fa-envelope"
:color="$q.dark.isActive ? `shite` : `black`"
:type="tools.isUserOk() ? 'a' : 'btn'"
size="md"
:label="$t('msgs.send_email')"
:href="tools.isUserOk() ? tools.getemailto(myuser.email) : null"
@click="
!tools.isUserOk() ? (showingtooltip = !showingtooltip) : false
"
target="__blank"
>
</q-btn>
</div>
</div>
</div>
<div v-if="showsendCoinTo || sendRIS > 0">
<CSendCoins
:showprop="showsendCoinTo"
:to_user="myuser"
:sendRIS="sendRIS"
@close="showsendCoinTo = false"
>
</CSendCoins>
</div>
</template>
<script lang="ts" src="./CContactUser.ts">
</script>
<style lang="scss" scoped>
@import './CContactUser.scss';
</style>

View File

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

View File

View File

@@ -0,0 +1,122 @@
import { defineComponent, onMounted, PropType, ref, watch } from 'vue'
import { tools } from '@src/store/Modules/tools'
import { date, useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { CCurrencyValue } from '@/components/CCurrencyValue'
import { CMyFieldDb } from '@/components/CMyFieldDb'
import { costanti } from '@costanti'
export default defineComponent({
name: 'CCurrencyV2',
components: { CCurrencyValue, CMyFieldDb },
emits: ['save'],
props: {
small: {
type: Boolean,
default: false,
},
label: {
type: String,
required: false,
default: '',
},
tips: {
type: String,
required: false,
default: '',
},
readonly: {
type: Boolean,
required: false,
default: false,
},
symbol: {
type: String,
required: true,
},
color: {
type: String,
required: false,
default: '',
},
color_border: {
type: String,
required: false,
default: '',
},
icon: {
type: String,
required: false,
default: '',
},
modelValue: {
type: [String, Number],
required: true,
default: '',
},
valueextra: {
type: String,
required: false,
default: '',
},
paramTypeAccount: {
type: Number,
required: false,
default: 0,
},
myrecparam: {
type: Object,
required: false,
default: null,
},
admin: {
type: Boolean,
required: false,
default: false,
},
},
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n()
const changeParamValue = ref(false)
const showingtooltip = ref(false)
const myvalue = ref(<any>null)
function created() {
// created
myvalue.value = props.modelValue
}
function changedParamValue(value: boolean) {
changeParamValue.value = value
}
function save(value: any) {
// ricarico
emit('save', value)
myvalue.value = value
}
onMounted(created)
return {
showingtooltip,
t,
tools,
changeParamValue,
changedParamValue,
costanti,
save,
myvalue,
}
},
})

View File

@@ -0,0 +1,47 @@
<template>
<div v-if="myrecparam">
<CCurrencyValue
:symbol="symbol"
:color="color"
:color_border="color_border"
v-model="myvalue"
:icon="icon"
:label="label"
:tips="tips"
:paramTypeAccount="paramTypeAccount"
:myrecparam="myrecparam"
@changedParamValue="changedParamValue"
:admin="admin"
>
</CCurrencyValue>
</div>
<q-dialog v-model="changeParamValue">
<q-card class="dialog_card">
<q-toolbar class="bg-primary text-white">
<q-toolbar-title class="text-h7">
{{ $t('account.settings') }}
</q-toolbar-title>
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
</q-toolbar>
<q-card-section class="inset-shadow">
<CMyFieldDb
v-if="myrecparam"
table="accounts"
:title="tools.getStrByParamTypeAccount(paramTypeAccount)"
:id="myrecparam._id"
:rec="myrecparam"
:mykey="tools.getFieldByParamTypeAccount(paramTypeAccount)"
:type="tools.getTypeByParamTypeAccount(paramTypeAccount)"
@save="save"
/>
</q-card-section>
</q-card>
</q-dialog>
</template>
<script lang="ts" src="./CCurrencyV2.ts">
</script>
<style lang="scss" scoped>
@import './CCurrencyV2.scss';
</style>

View File

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

View File

@@ -4,9 +4,18 @@ import { tools } from '@src/store/Modules/tools'
import { date, useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { costanti } from '@costanti'
export default defineComponent({
name: 'CCurrencyValue',
components: { },
emits: ['changedParamValue' ],
props: {
modelValue: {
type: [String, Number],
required: false,
default: '',
},
small: {
type: Boolean,
default: false,
@@ -21,6 +30,11 @@ export default defineComponent({
required: false,
default: '',
},
strfido: {
type: String,
required: false,
default: '',
},
readonly: {
type: Boolean,
required: false,
@@ -45,34 +59,46 @@ export default defineComponent({
required: false,
default: '',
},
value: {
type: Number,
required: true,
},
valueextra: {
type: String,
required: false,
default: '',
},
paramTypeAccount: {
type: Number,
required: false,
default: 0,
},
myrecparam: {
type: Object,
required: false,
default: null,
},
admin: {
type: Boolean,
required: false,
default: false,
},
},
components: {},
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n()
const showingtooltip = ref(false)
const showinghouse = ref(false)
function created() {
// created
}
onMounted(created)
return {
showingtooltip,
showinghouse,
t,
tools,
costanti,
}
},
})

Some files were not shown because too many files have changed in this diff Show More