- aggiornato la guida per installare la App

- aggiornato la Guida Completa e Breve di RISO.
- pagina per ricevere i RIS.
- sistemato problema creazione nuovi Circuiti (admin non corretti).
- corretto giro delle email, invitante, invitato e ricezione msg su telegram.
This commit is contained in:
Surya Paolo
2025-11-23 01:13:27 +01:00
parent 8ab7594f16
commit 9faaa1a4c3
39 changed files with 929 additions and 1064 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
install_app_on_safari.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -1,8 +1,8 @@
{
"name": "riso",
"version": "1.2.84",
"productName": "Riso 💚 - Rete Italiana Scambi Orizzontali",
"description": "Progetto RISO (Rete Italiana Scambi Orizzontali) promuove una rete di comunità locali che favoriscono scambi di beni, servizi e ospitalità. Con l'App RISO, sviluppata per facilitare il baratto, il dono e l'uso di monete alternative come i RIS, il progetto crea legami autentici basati sulla fiducia e sostenibilità. Partecipa agli scambi e costruisci una comunità più consapevole e autosufficiente.",
"productName": "Riso 💚 - Rete Italiana Scambio orizzontale",
"description": "Progetto RISO (Rete Italiana Scambio orizzontale) promuove una rete di comunità locali che favoriscono scambi di beni, servizi e ospitalità. Con l'App RISO, sviluppata per facilitare il baratto, il dono e l'uso di monete alternative come i RIS, il progetto crea legami autentici basati sulla fiducia e sostenibilità. Partecipa agli scambi e costruisci una comunità più consapevole e autosufficiente.",
"author": "Surya",
"private": true,
"keywords": [],

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -35,7 +35,7 @@ const msg_website = {
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa pittaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -136,12 +136,12 @@ const msg_website_it = {
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',
sottoTitoloApp: 'Rete Italiana Scambi orizzontali',
sottoTitoloApp: 'Rete Italiana Scambio orizzontale',
sottoTitoloApp2: '',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -35,7 +35,7 @@ const msg_website = {
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa pittaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -117,12 +117,12 @@ const msg_website_it = {
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',
sottoTitoloApp: 'Rete Italiana Scambi orizzontali',
sottoTitoloApp: 'Rete Italiana Scambio orizzontale',
sottoTitoloApp2: '',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -35,7 +35,7 @@ const msg_website = {
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa pittaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -139,12 +139,12 @@ const msg_website_it = {
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',
sottoTitoloApp: 'Rete Italiana Scambi orizzontali',
sottoTitoloApp: 'Rete Italiana Scambio orizzontale',
sottoTitoloApp2: '',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -35,7 +35,7 @@ const msg_website = {
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa pittaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -116,12 +116,12 @@ const msg_website_it = {
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',
sottoTitoloApp: 'Rete Italiana Scambi orizzontali',
sottoTitoloApp: 'Rete Italiana Scambio orizzontale',
sottoTitoloApp2: '',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -35,7 +35,7 @@ const msg_website = {
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa pittaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -139,12 +139,12 @@ const msg_website_it = {
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',
sottoTitoloApp: 'Rete Italiana Scambi orizzontali',
sottoTitoloApp: 'Rete Italiana Scambio orizzontale',
sottoTitoloApp2: '',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -1,8 +1,8 @@
{
"name": "riso",
"version": "1.2.84",
"productName": "Riso 💚 - Rete Italiana Scambi Orizzontali",
"description": "Progetto RISO (Rete Italiana Scambi Orizzontali) promuove una rete di comunità locali che favoriscono scambi di beni, servizi e ospitalità. Con l'App RISO, sviluppata per facilitare il baratto, il dono e l'uso di monete alternative come i RIS, il progetto crea legami autentici basati sulla fiducia e sostenibilità. Partecipa agli scambi e costruisci una comunità più consapevole e autosufficiente.",
"productName": "Riso 💚 - Rete Italiana Scambio orizzontale",
"description": "Progetto RISO (Rete Italiana Scambio orizzontale) promuove una rete di comunità locali che favoriscono scambi di beni, servizi e ospitalità. Con l'App RISO, sviluppata per facilitare il baratto, il dono e l'uso di monete alternative come i RIS, il progetto crea legami autentici basati sulla fiducia e sostenibilità. Partecipa agli scambi e costruisci una comunità più consapevole e autosufficiente.",
"author": "Surya",
"private": true,
"keywords": [],

View File

@@ -1,7 +1,7 @@
{
"name": "Riso",
"short_name": "Riso",
"description": "Siamo la Rete Italiana Scambi orizzontali, 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.",
"description": "Siamo la Rete Italiana 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": "#fff",

View File

@@ -35,7 +35,7 @@ const msg_website = {
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa pittaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -2,8 +2,8 @@ const msg_website_it = {
ws: {
sitename: 'RISO',
siteshortname: 'RISO',
description: 'Siamo la Rete Italiana Scambi orizzontali, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
keywords: 'riso, piattaforma di scambio, rete italiana scambi orizzontali, riso app, riso piattaforma, scambio e baratto, momenta RIS',
description: 'Siamo la Rete Italiana Scambio orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
},
hours: {
descr: 'Descrizione',
@@ -133,12 +133,12 @@ const msg_website_it = {
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',
sottoTitoloApp: 'Rete Italiana Scambi orizzontali',
sottoTitoloApp: 'Rete Italiana Scambio orizzontale',
sottoTitoloApp2: '',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -1,7 +1,7 @@
{
"name": "Riso",
"short_name": "Riso",
"description": "Siamo la Rete Italiana Scambi orizzontali, 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.",
"description": "Siamo la Rete Italiana 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": "#fff",

View File

@@ -1,5 +1,6 @@
export const shared_consts = {
USER_ADMIN_CIRCUITS: ['surya1977', 'ElenaEspx'],
USER_ADMIN_SINGOLO: 'surya1977',
Accepted: {
CHECK_READ_GUIDELINES: {
value: 1,
@@ -2176,7 +2177,7 @@ export const shared_consts = {
ALIGNTYPE: {
NONE: 0,
LEFT: 1,
CEHTER: 2,
CENTER: 2,
RIGHT: 3,
},

View File

@@ -83,8 +83,8 @@
<div class="step-item">
<span class="step-number">2</span>
<span class="step-text">
Se in alto vedi <strong>"Apri con..."</strong>, cliccalo e scegli
Chrome, Brave o il tuo browser preferito.<br />
Se in alto vedi <strong>"Apri con..."</strong>, cliccalo e scegli
Chrome, Brave o il tuo browser preferito.<br />
Altrimenti scegli <strong>"Installa app"</strong> o
<strong>"Aggiungi alla schermata Home"</strong></span
@@ -240,7 +240,7 @@
>
<!-- iOS Safari -->
<div
v-if="$q.platform.is.ios && $q.platform.is.safari"
v-if="$q.platform.is.ios"
class="platform-instructions"
>
<div
@@ -271,44 +271,139 @@
v-if="viewiOS"
class="platform-content"
>
<div class="step-list">
<!-- ========================================== -->
<!-- CASO: SAFARI (installazione diretta) -->
<!-- ========================================== -->
<div
v-if="$q.platform.is.safari"
class="step-list"
>
<div class="step-item">
<span class="step-number">1</span>
<span class="step-text"
>Tocca il pulsante <strong>Condividi</strong>
<q-icon name="ios_share"
/></span>
<span class="step-text">
Tocca il pulsante <strong>Condividi</strong>
<q-icon
name="ios_share"
size="20px"
/>
</span>
</div>
<div class="step-item">
<span class="step-number">2</span>
<span class="step-text"
>Scorri e seleziona <strong>"Aggiungi a Home"</strong></span
>
<span class="step-text">
Scorri in basso e seleziona <strong>"Aggiungi alla schermata Home"</strong>
</span>
</div>
<div class="step-item">
<span class="step-number">3</span>
<span class="step-text"
>Conferma toccando <strong>"Aggiungi"</strong></span
>
<span class="step-text">
Conferma toccando <strong>"Aggiungi"</strong>
</span>
</div>
<!-- Screenshots per Safari -->
<div class="screenshots">
<q-img
src="/images/install_app_on_ios_1.png"
fit="contain"
class="screenshot"
/>
<q-img
src="/images/install_app_on_ios_1b.jpg"
fit="contain"
class="screenshot"
/>
<q-img
src="/images/install_app_on_ios_2.jpg"
fit="contain"
class="screenshot"
/>
</div>
</div>
<div class="screenshots">
<q-img
src="/images/install_app_on_ios_1.png"
fit="contain"
class="screenshot"
/>
<q-img
src="/images/install_app_on_ios_1b.jpg"
fit="contain"
class="screenshot"
/>
<q-img
src="/images/install_app_on_ios_2.jpg"
fit="contain"
class="screenshot"
/>
<!-- ========================================== -->
<!-- CASO: NON-SAFARI (redirect a Safari) -->
<!-- ========================================== -->
<div
v-else
class="step-list non-safari-warning"
>
<!-- Warning box -->
<div class="warning-box">
<q-icon
name="warning"
size="32px"
color="orange"
/>
<div class="warning-content">
<strong> Browser non compatibile</strong>
<p>
Per ricevere le notifiche su iPhone, l'app deve essere installata
tramite <strong>Safari</strong>.
</p>
</div>
</div>
<!-- Step 1: Apri in Safari -->
<div class="step-item">
<span class="step-number">1</span>
<div class="step-text">
<strong>Apri questa pagina in Safari:</strong>
<div class="options-list">
<div class="option">
<q-icon
name="open_in_browser"
size="24px"
color="primary"
/>
<span>Tocca l'icona in basso a destra</span>
</div>
<div class="option-divider">oppure</div>
<div class="option">
<q-icon
name="more_vert"
size="24px"
color="primary"
/>
<span
>Tocca <strong>"Apri con..."</strong>
<strong>Safari</strong></span
>
</div>
</div>
<!-- Screenshot esplicativo -->
<q-img
src="/images/install_app_on_safari.png"
fit="contain"
class="screenshot-inline"
/>
</div>
</div>
<!-- Step 2: Installazione -->
<div class="step-item">
<span class="step-number">2</span>
<span class="step-text">
Una volta aperto in Safari, tocca
<q-icon
name="ios_share"
size="20px"
/>
<strong>Condividi</strong> e seleziona
<strong>"Aggiungi alla schermata Home"</strong>
</span>
</div>
<!-- Step 3: Conferma -->
<div class="step-item">
<span class="step-number">3</span>
<span class="step-text">
Conferma toccando <strong>"Aggiungi"</strong>
</span>
</div>
</div>
</div>
</q-slide-transition>
@@ -378,7 +473,7 @@
Chrome, Brave o il tuo browser preferito.<br />
Altrimenti scegli <strong>"Installa app"</strong> o
<strong>"Aggiungi alla schermata home"</strong></span
<strong>"Aggiungi alla schermata Home"</strong></span
>
</div>
<div class="step-item">

View File

@@ -647,7 +647,7 @@ export default defineComponent({
}
async function condividi() {
const mystr = "❇️ Ecco l'annuncio da condividere !\nPuoi copiarlo oppure inoltrarlo a chi vuoi.\n\nE\' utile pubblicarlo anche nel gruppo Telegram RISO territoriale o in <a href=\'https://riso.app/riso_gruppo\'>☀️💚 RISO - Rete Italiana Scambi Orizzontali</a> (Topic \'Annunci RISO\') "
const mystr = "❇️ Ecco l'annuncio da condividere !\nPuoi copiarlo oppure inoltrarlo a chi vuoi.\n\nE\' utile pubblicarlo anche nel gruppo Telegram RISO territoriale o in <a href=\'https://riso.app/riso_gruppo\'>☀️💚 RISO - Rete Italiana Scambio orizzontale</a> (Topic \'Annunci RISO\') "
await tools.sendMsgTelegramCmd($q, t, shared_consts.MsgTeleg.SHARE_TEXT, false, mystr)
tools.copyToClip($q, getlinkpage(), true)

View File

@@ -515,7 +515,7 @@ export default defineComponent({
function getClass() {
let mycl = '';
if (props.myelem.align === shared_consts.ALIGNTYPE.CEHTER) {
if (props.myelem.align === shared_consts.ALIGNTYPE.CENTER) {
mycl += ' align_center';
} else if (props.myelem.align === shared_consts.ALIGNTYPE.RIGHT) {
mycl += ' align_right';

View File

@@ -925,6 +925,13 @@
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.HTML">
<div v-if="enableEdit">
<q-toggle
v-model="myel.parambool2"
label="Usa come HTML"
@update:model-value="modifElem"
>
</q-toggle>
<CMyEditor
v-model:value="myel.containerHtml"
title=""
@@ -933,8 +940,10 @@
:canModify="true"
@update:value="modifElem"
@showandsave="saveElem"
:start-in-code-mode="myel.parambool2"
>
</CMyEditor>
</div>
</div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.IMAGE">

View File

@@ -1,10 +1,9 @@
import { tools } from '@tools';
import { CTitleBanner } from '../CTitleBanner';
import { tools } from '@tools'
import { CTitleBanner } from '../CTitleBanner'
import { defineComponent, onMounted, ref, toRef, watch } from 'vue'
import { useQuasar } from 'quasar'
import { useI18n } from 'vue-i18n'
import { defineComponent, onMounted, ref, toRef, watch } from 'vue';
import { useQuasar } from 'quasar';
import { useI18n } from 'vue-i18n';
export default defineComponent({
name: 'CMyEditor',
@@ -44,19 +43,24 @@ export default defineComponent({
type: Number,
required: false,
default: 0,
}
},
startInCodeMode: {
type: Boolean,
required: false,
default: false,
},
},
setup(props, { emit }) {
const $q = useQuasar()
const $q = useQuasar();
const { t } = useI18n();
const editorRef = ref(<any>null)
const editor = ref('')
const characterCount = ref(0)
const editorRef = ref(<any>null);
const editor = ref('');
const characterCount = ref(0);
//const myvalue = toRef(props, 'value')
const myvalue = ref('')
const mycolor = ref('')
const myvalue = ref('');
const mycolor = ref('');
const myfonts = ref({
arial: 'Arial',
@@ -68,9 +72,9 @@ export default defineComponent({
lucida_grande: 'Lucida Grande',
times_new_roman: 'Times New Roman',
verdana: 'Verdana',
})
});
const showtools = ref(false)
const showtools = ref(false);
const toolbarcomp = ref([
['left', 'center', 'right', 'justify'],
@@ -81,13 +85,7 @@ export default defineComponent({
label: $q.lang.editor.formatting,
icon: $q.iconSet.editor.formatting,
list: 'no-icons',
options: [
'p',
'h4',
'h5',
'h6',
'code'
]
options: ['p', 'h4', 'h5', 'h6', 'code'],
},
{
label: $q.lang.editor.fontSize,
@@ -95,15 +93,7 @@ export default defineComponent({
fixedLabel: true,
fixedIcon: true,
list: 'no-icons',
options: [
'size-1',
'size-2',
'size-3',
'size-4',
'size-5',
'size-6',
'size-7'
]
options: ['size-1', 'size-2', 'size-3', 'size-4', 'size-5', 'size-6', 'size-7'],
},
{
label: $q.lang.editor.defaultFont,
@@ -119,23 +109,23 @@ export default defineComponent({
'impact',
'lucida_grande',
'times_new_roman',
'verdana'
]
'verdana',
],
},
'removeFormat'
'removeFormat',
],
['quote', 'unordered', 'ordered', 'outdent', 'indent'],
['undo', 'redo', 'viewsource'],
])
]);
watch(() => props.value, (newval, oldval) => {
if (props.value === undefined)
myvalue.value = ''
else
myvalue.value = props.value
})
watch(
() => props.value,
(newval, oldval) => {
if (props.value === undefined) myvalue.value = '';
else myvalue.value = props.value;
}
);
function getTextLength(html: string) {
// Crea un elemento temporaneo per convertire HTML in testo
@@ -146,26 +136,28 @@ export default defineComponent({
function changeval(newval: any) {
// console.log('myEditor: changeval', newval)
characterCount.value = getTextLength(newval)
emit('update:value', newval)
characterCount.value = getTextLength(newval);
// newval = newval.replace(/&nbsp;/g, ' ')
emit('update:value', newval);
}
function annulla() {
emit('annulla', true)
emit('annulla', true);
}
function saveval() {
// Converti i <b> in <strong>
myvalue.value = tools.convertinbspInSpazi(myvalue.value);
myvalue.value = tools.convertiTagHTMLPerBOT(myvalue.value)
// myvalue.value = tools.convertiTagHTMLPerBOT(myvalue.value)
console.log('saveval', myvalue.value)
emit('showandsave', myvalue.value)
console.log('saveval', myvalue.value);
emit('showandsave', myvalue.value);
// emit('update:value', myvalue)
}
function setcolor() {
document.execCommand('foreColor', false, mycolor.value)
document.execCommand('foreColor', false, mycolor.value);
}
/**
@@ -198,29 +190,35 @@ export default defineComponent({
}
function mounted() {
if (props.value === undefined)
myvalue.value = ''
else
myvalue.value = props.value
if (props.value === undefined) myvalue.value = '';
else myvalue.value = props.value;
showtools.value = tools.getCookie('showtools', '0') === '1'
showtools.value = tools.getCookie('showtools', '0') === '1';
characterCount.value = getTextLength(myvalue.value)
characterCount.value = getTextLength(myvalue.value);
if (props.startInCodeMode) {
// Attiva modalità codice di default
setTimeout(() => {
if (editorRef.value) {
editorRef.value.runCmd('viewsource');
}
}, 100);
}
}
function onPaste(evt: any) {
// Let inputs do their thing, so we don't break pasting of links.
if (evt.target.nodeName === 'INPUT') return
let text, onPasteStripFormattingIEPaste
evt.preventDefault()
evt.stopPropagation()
if (evt.target.nodeName === 'INPUT') return;
let text, onPasteStripFormattingIEPaste;
evt.preventDefault();
evt.stopPropagation();
if (evt.originalEvent && evt.originalEvent.clipboardData.getData) {
text = evt.originalEvent.clipboardData.getData('text/plain')
editorRef.value.runCmd('insertText', text)
}
else if (evt.clipboardData && evt.clipboardData.getData) {
text = evt.clipboardData.getData('text/plain')
editorRef.value.runCmd('insertText', text)
text = evt.originalEvent.clipboardData.getData('text/plain');
editorRef.value.runCmd('insertText', text);
} else if (evt.clipboardData && evt.clipboardData.getData) {
text = evt.clipboardData.getData('text/plain');
editorRef.value.runCmd('insertText', text);
}
/*else if (ClipboardEvent.clipboardData && ClipboardEvent.clipboardData.getData) {
if (!onPasteStripFormattingIEPaste) {
@@ -231,7 +229,7 @@ export default defineComponent({
}*/
}
onMounted(mounted)
onMounted(mounted);
return {
myfonts,
@@ -250,6 +248,6 @@ export default defineComponent({
showtools,
characterCount,
t,
}
}
})
};
},
});

View File

@@ -353,7 +353,7 @@ export default defineComponent({
function getClass() {
let mycl = '';
if (props.myelem.align === shared_consts.ALIGNTYPE.CEHTER) {
if (props.myelem.align === shared_consts.ALIGNTYPE.CENTER) {
mycl += ' align_center';
} else if (props.myelem.align === shared_consts.ALIGNTYPE.RIGHT) {
mycl += ' align_right';

View File

@@ -155,7 +155,7 @@
tools.getClassAnim(myel.anim)
"
@click="clickOnElem"
v-html="myel.containerHtml"
v-html="tools.convertHTMLForElement(myel.containerHtml, myel.parambool2)"
></div>
</div>
</div>

View File

@@ -1,884 +0,0 @@
<template>
<q-page class="riso-homepage">
<!-- Hero Section -->
<!-- Hero Section con Slideshow -->
<section class="hero-section">
<!-- Background Slideshow -->
<div class="hero-slideshow">
<div
v-for="(image, index) in heroImages"
:key="index"
class="hero-slide"
:class="{ active: currentSlide === index }"
:style="{ backgroundImage: `url(${image.src})` }"
>
<div class="hero-overlay"></div>
</div>
</div>
<!-- Slideshow Indicators -->
<div class="slideshow-indicators">
<button
v-for="(image, index) in heroImages"
:key="index"
class="indicator-dot"
:class="{ active: currentSlide === index }"
@click="goToSlide(index)"
:aria-label="`Vai alla slide ${index + 1}`"
></button>
</div>
<!-- Hero Content -->
<div class="hero-content">
<q-img
src="/images/logo.png"
alt="RISO Logo"
class="hero-logo"
:ratio="1"
/>
<h1 class="hero-title animate-fade-in">
<span class="riso-text">RISO</span>
</h1>
<h2 class="hero-subtitle animate-fade-in-delay">
Rete Italiana Scambi orizzontali
</h2>
<p class="hero-description animate-fade-in-delay-2">
Una rete di comunità consapevoli, basata sul sostegno reciproco,<br />
la fiducia, la condivisione e l'ascolto.
</p>
<div class="hero-actions animate-fade-in-delay-3">
<q-btn
v-if="!tools.isLogged()"
label="Unisciti a RISO"
:size="$q.platform.is.mobile ? 'lg' : 'xl'"
color="primary"
rounded
unelevated
class="cta-button"
@click="scrollToRegistrazione"
/>
<q-btn
v-else
label="ACCEDI"
:size="$q.platform.is.mobile ? 'lg' : 'xl'"
color="primary"
rounded
unelevated
class="cta-button"
@click="goToHome"
/>
<q-btn
label="Scopri di più"
size="md"
outline
rounded
class="secondary-button"
@click="scrollToAbout"
/>
</div>
</div>
</section>
<!-- Cos'è RISO Section -->
<section
id="about"
class="about-section"
>
<div class="contain_riso">
<h2 class="section-title">
<q-icon
name="eco"
size="md"
class="title-icon"
/>
Cos'è RISO?
</h2>
<div class="content-cards">
<q-card
class="info-card"
flat
bordered
>
<q-card-section class="card-icon-section">
<div class="icon-circle">🫂</div>
</q-card-section>
<q-card-section>
<div class="card-title">Una Rete di Comunità</div>
<p class="card-text">
RISO è una rete di comunità che vuole creare un nuovo mondo, attraverso
l'incontro e la condivisione, con il sor<strong>RISO</strong> sulle
labbra.
</p>
</q-card-section>
</q-card>
<q-card
class="info-card"
flat
bordered
>
<q-card-section class="card-icon-section">
<div class="icon-circle">🌾</div>
</q-card-section>
<q-card-section>
<div class="card-title">Simbolo di Vita</div>
<p class="card-text">
Il RISO è fonte di vita, simbolo del ciclo della vita e del valore della
terra. Una delle prime forme di scambio, una moneta basata su uno dei beni
più preziosi.
</p>
</q-card-section>
</q-card>
<q-card
class="info-card"
flat
bordered
>
<q-card-section class="card-icon-section">
<div class="icon-circle">🤝</div>
</q-card-section>
<q-card-section>
<div class="card-title">Decisioni Orizzontali</div>
<p class="card-text">
Il progetto è orizzontale: ogni decisione viene presa nei territori
attraverso la condivisione e la partecipazione.
</p>
</q-card-section>
</q-card>
</div>
</div>
</section>
<!-- Il Sogno Section -->
<section class="dream-section">
<div class="contain_riso">
<div class="dream-content">
<div class="dream-text">
<h2 class="section-title light">
<q-icon
name="auto_awesome"
size="md"
class="title-icon"
/>
Il Sogno di RISO
</h2>
<p class="dream-description">
Siamo una rete di comunità consapevoli, basata sul sostegno reciproco, la
fiducia, la condivisione e l'ascolto. Coltiviamo terreno fertile per creare,
in armonia con la natura, un mondo di collettività
<strong>libere e autosufficienti</strong>, attraverso un circuito di scambio
di esperienze umane, beni e servizi.
</p>
<div class="dream-highlight">
<q-icon
name="campaign"
size="lg"
/>
<div>
<strong>Partecipa al cambiamento.</strong><br />
RISO sei anche tu!
</div>
</div>
</div>
<div class="dream-image">
<q-img
src="/images/cerchio_riso.jpg"
alt="Comunità RISO"
class="rounded-image"
ratio="1"
/>
</div>
</div>
</div>
</section>
<!-- Valori Section -->
<section class="values-section">
<div class="contain_riso">
<h2 class="section-title">
<q-icon
name="favorite"
size="md"
class="title-icon"
/>
I Nostri Valori
</h2>
<div class="values-grid">
<div
v-for="(value, index) in values"
:key="index"
class="value-item"
>
<div class="value-icon">{{ value.icon }}</div>
<h3 class="value-title">{{ value.title }}</h3>
<p class="value-text">{{ value.text }}</p>
</div>
</div>
</div>
</section>
<!-- Come Funziona Section -->
<section class="how-it-works-section">
<div class="contain_riso">
<h2 class="section-title">
<q-icon
name="settings"
size="md"
class="title-icon"
/>
Come Funziona
</h2>
<div class="steps-timeline">
<div
v-for="(step, index) in steps"
:key="index"
class="step-item"
>
<div class="step-number">{{ index + 1 }}</div>
<div class="step-content">
<h3 class="step-title">{{ step.title }}</h3>
<p class="step-text">{{ step.text }}</p>
</div>
</div>
</div>
</div>
</section>
<!-- Video Section - Aggiungi dopo la sezione "How it works" -->
<section class="video-section">
<div class="container">
<h2 class="section-title">
<q-icon
name="play_circle"
size="md"
class="title-icon"
/>
Guarda il Video di Presentazione
</h2>
<div class="video-container">
<iframe
width="100%"
height="100%"
src="https://rumble.com/embed/v5opfsn/?pub=46vc7z"
title="Video presentazione Progetto RISO"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>
</div>
<p class="video-description">
Scopri come funziona il Progetto RISO e come puoi contribuire a creare
un'economia più sostenibile e solidale nella tua comunità.
</p>
</div>
</section>
<!-- Comunità Territoriali Section -->
<section class="communities-section">
<div class="contain_riso">
<h2 class="section-title">
<q-icon
name="groups"
size="md"
class="title-icon"
/>
Comunità Territoriali
</h2>
<div class="communities-content">
<p class="section-intro">
Le colonne portanti di RISO sono le <strong>Comunità Territoriali</strong>.
Ogni comunità ha pieno potere decisionale al suo interno, nel rispetto dei
principi e delle finalità di RISO.
</p>
<div class="features-grid">
<q-card
class="feature-card"
flat
>
<q-card-section>
<div class="feature-icon">🏘</div>
<div class="feature-title">Autonomia Locale</div>
<p class="feature-text">
Ogni comunità decide autonomamente, tessendo relazioni con i gruppi del
territorio.
</p>
</q-card-section>
</q-card>
<q-card
class="feature-card"
flat
>
<q-card-section>
<div class="feature-icon">👥</div>
<div class="feature-title">Facilitatori</div>
<p class="feature-text">
Idealmente servirebbero almeno 3 facilitatori per comunità, scelti dai
membri per aiutare nella comunicazione e nel coordinamento.
</p>
</q-card-section>
</q-card>
<q-card
class="feature-card"
flat
>
<q-card-section>
<div class="feature-icon">🔗</div>
<div class="feature-title">Nodi Regionali</div>
<p class="feature-text">
I facilitatori regionali supportano le comunità territoriali e
condividono iniziative.
</p>
</q-card-section>
</q-card>
</div>
</div>
</div>
</section>
<!-- RIS e Scambi Section -->
<section class="ris-section">
<div class="contain_riso">
<h2 class="section-title">
<q-icon
name="currency_exchange"
size="md"
class="title-icon"
/>
I Circuiti di Scambio e il RIS
</h2>
<div class="ris-content">
<!-- Card principale cos'è il RIS -->
<div class="ris-card-main">
<q-card
class="ris-info-card"
flat
bordered
>
<q-card-section class="ris-header">
<div class="ris-icon">💰</div>
<h3>Cos'è il RIS?</h3>
</q-card-section>
<q-card-section>
<p class="ris-description">
Il <strong>RIS</strong> è l'unità di misura del valore dei beni e
servizi per lo scambio tra i membri di una comunità territoriale. È una
moneta complementare basata sulla <strong>fiducia reciproca</strong>
tra i membri della comunità.
</p>
<q-separator class="q-my-md" />
<div class="ris-features">
<div class="ris-feature-item">
<q-icon
name="check_circle"
color="positive"
/>
<span
>Parti da 0 RIS: ricevere = credito (+), offrire = debito (-)</span
>
</div>
<div class="ris-feature-item">
<q-icon
name="check_circle"
color="positive"
/>
<span>Non si accumula: serve per far circolare beni e servizi</span>
</div>
<div class="ris-feature-item">
<q-icon
name="check_circle"
color="positive"
/>
<span>Il bilancio totale della comunità è sempre zero</span>
</div>
<div class="ris-feature-item">
<q-icon
name="check_circle"
color="positive"
/>
<span>Puoi combinarlo con Euro, baratto o dono</span>
</div>
</div>
</q-card-section>
</q-card>
</div>
<!-- Limiti RIS -->
<div class="ris-limits-section">
<h3 class="subsection-title">📊 Limiti di Utilizzo</h3>
<p class="limits-intro">
Per garantire la circolazione equilibrata, esistono dei limiti al saldo RIS
che ogni membro può avere:
</p>
<div class="limits-grid">
<q-card
class="limit-card"
flat
bordered
>
<q-card-section>
<div class="limit-icon">🏘️</div>
<h4 class="limit-title">Circuito Territoriale</h4>
<p class="limit-subtitle">(Provincia)</p>
<div class="limit-values">
<div class="limit-value negative">
<div class="limit-label">
Fiducia Concessa<br />(Limite negativo)
</div>
<div class="limit-number">-100 RIS</div>
</div>
<div class="limit-separator">↔️</div>
<div class="limit-value positive">
<div class="limit-label">
Massimo Accumulo<br />(Limite positivo)
</div>
<div class="limit-number">+200 RIS</div>
</div>
</div>
</q-card-section>
</q-card>
<q-card
class="limit-card"
flat
bordered
>
<q-card-section>
<div class="limit-icon">🇮🇹</div>
<h4 class="limit-title">Circuito Nazionale</h4>
<p class="limit-subtitle">(Tutta Italia)</p>
<div class="limit-values">
<div class="limit-value negative">
<div class="limit-label">
Fiducia Concessa<br />(Limite negativo)
</div>
<div class="limit-number">-200 RIS</div>
</div>
<div class="limit-separator">↔️</div>
<div class="limit-value positive">
<div class="limit-label">
Massimo Accumulo<br />(Limite positivo)
</div>
<div class="limit-number">+400 RIS</div>
</div>
</div>
</q-card-section>
</q-card>
</div>
<q-banner
class="limits-note"
rounded
>
<template v-slot:avatar>
<q-icon
name="info"
color="primary"
/>
</template>
I limiti servono a evitare accumulo eccessivo e garantire che i RIS
circolino continuamente nella comunità, mantenendo il bilancio totale a
zero. Ogni comunita territoriale provinciale può decidere
<strong>autonomamente di modificare</strong> i limiti all'occorrenza.
</q-banner>
</div>
<!-- Esempio 1: Scambio circolare -->
<div class="example-section">
<h3 class="subsection-title">🔄 Esempio 1: Scambio Circolare</h3>
<p class="example-intro">
Vediamo come funzionano gli scambi in RIS con 3 persone che offrono e
ricevono servizi dello stesso valore (10 RIS):
</p>
<q-card
class="example-card"
flat
bordered
>
<q-card-section>
<div class="example-steps">
<!-- Step 1 -->
<div class="example-step">
<div class="step-header">
<div class="step-badge">1</div>
<div class="step-title">
Mario riceve verdure da Laura e le invia 10 RIS (va a -10)
</div>
</div>
<div class="step-content">
<div class="transaction">
<div class="person">
<div class="person-name">👨 Mario</div>
<div class="balance negative">-10 RIS</div>
<div class="balance-detail">(0 -10) = -10</div>
</div>
<div class="arrow"></div>
<div class="person">
<div class="person-name">👩 Laura</div>
<div class="balance positive">+10 RIS</div>
<div class="balance-detail">(0 +10) = +10</div>
</div>
</div>
</div>
</div>
<q-separator class="q-my-md" />
<!-- Step 2 -->
<div class="example-step">
<div class="step-header">
<div class="step-badge">2</div>
<div class="step-title">
Laura si fa riparare la bici da Paolo e gli invia 10 RIS, Laura
torna così a zero.
</div>
</div>
<div class="step-content">
<div class="transaction">
<div class="person">
<div class="person-name">👩 Laura</div>
<div class="balance neutral">0 RIS</div>
<div class="balance-detail">(+10 -10) = 0</div>
</div>
<div class="arrow"></div>
<div class="person">
<div class="person-name">👨 Paolo</div>
<div class="balance positive">+10 RIS</div>
<div class="balance-detail">(+10 -10) = 0</div>
</div>
</div>
</div>
</div>
<q-separator class="q-my-md" />
<!-- Step 3 -->
<div class="example-step">
<div class="step-header">
<div class="step-badge">3</div>
<div class="step-title">
Paolo riceve del miele da Mario e gli invia 10 RIS.
</div>
</div>
<div class="step-content">
<div class="transaction">
<div class="person">
<div class="person-name">👨 Paolo</div>
<div class="balance neutral">0 RIS</div>
<div class="balance-detail">(+10 -10) = 0</div>
</div>
<div class="arrow"></div>
<div class="person">
<div class="person-name">👨 Mario</div>
<div class="balance neutral">0 RIS</div>
<div class="balance-detail">(-10 +10) = 0</div>
</div>
</div>
</div>
</div>
<!-- Risultato finale -->
<q-banner
class="example-result"
rounded
>
<template v-slot:avatar>
<q-icon
name="check_circle"
color="positive"
size="lg"
/>
</template>
<div class="result-content">
<strong>Risultato finale:</strong> Tutti e tre tornano a
<strong>0 RIS</strong>, ma ciascuno ha ricevuto e offerto qualcosa
di valore! Il bilancio totale della comunità rimane sempre zero.
</div>
</q-banner>
</div>
</q-card-section>
</q-card>
</div>
<!-- Esempio 2: Scambio misto -->
<div class="example-section">
<h3 class="subsection-title">💶 Esempio 2: Scambio Misto (RIS + Euro)</h3>
<p class="example-intro">
Puoi combinare RIS con Euro nella stessa transazione per ridurre
gradualmente la dipendenza dalla moneta tradizionale:
</p>
<q-card
class="example-card mixed"
flat
bordered
>
<q-card-section>
<div class="mixed-example">
<div class="scenario">
<div class="scenario-title">
🥬 Scenario: Cassetta di verdure settimanale
</div>
<div class="scenario-desc">Valore totale: <strong>20</strong></div>
</div>
<div class="mixed-options">
<!-- Opzione 1: Solo Euro -->
<div class="option">
<div class="option-label"> Economia tradizionale</div>
<div class="option-detail">
<div class="payment-item">100% Euro = <strong>20</strong></div>
<div class="payment-item ris">
0% RIS = <strong>0 RIS</strong>
</div>
</div>
</div>
<div class="option-divider">VS</div>
<!-- Opzione 2: Misto -->
<div class="option highlighted">
<div class="option-label"> Scambio RISO</div>
<div class="option-detail">
<div class="payment-item">80% Euro = <strong>16</strong></div>
<div class="payment-item ris">
20% RIS = <strong>4 RIS</strong>
</div>
</div>
</div>
</div>
<q-banner
class="mixed-benefit"
rounded
>
<template v-slot:avatar>
<q-icon
name="trending_down"
color="positive"
size="lg"
/>
</template>
<div class="benefit-content">
<strong>Beneficio:</strong> Hai ridotto del 20% l'uso degli Euro,
sostenendo il produttore locale e rafforzando la comunità! Puoi
iniziare con percentuali basse (5-10%) e aumentare gradualmente man
mano che la fiducia nella comunità cresce.
</div>
</q-banner>
</div>
</q-card-section>
</q-card>
</div>
</div>
</div>
</section>
<!-- CTA Section -->
<section
id="registrazione"
class="cta-section"
>
<div class="contain_riso">
<div class="cta-content">
<h2 class="cta-title">Pronto a Fare Parte del Cambiamento?</h2>
<p class="cta-subtitle">
Unisciti alla comunità RISO e inizia a scambiare in modo sostenibile e
solidale
</p>
<div class="cta-buttons">
<q-btn
label="Registrati a RISO"
:size="$q.platform.is.mobile ? 'lg' : 'xl'"
color="primary"
rounded
unelevated
icon="person_add"
class="cta-main-button"
@click="goToApp"
/>
</div>
<!-- Info App -->
<div class="app-features">
<div class="feature-badge">
<q-icon
name="devices"
size="md"
/>
<div class="cta-feature-text">
<strong>Multi-piattaforma</strong>
<span>Chrome, Firefox, Safari, Android, iPhone, PC</span>
</div>
</div>
<div class="feature-badge">
<q-icon
name="download"
size="md"
/>
<div class="cta-feature-text">
<strong>Installazione facile</strong>
<span>Senza passare dallo store, direttamente da riso.app</span>
</div>
</div>
<div class="feature-badge">
<q-icon
name="volunteer_activism"
size="md"
/>
<div class="cta-feature-text">
<strong>100% Gratuita</strong>
<span>Open Source, nessuna pubblicità</span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="riso-footer">
<div class="contain_riso">
<div class="footer-content">
<div class="footer-section">
<h4>Link Utili</h4>
<ul class="footer-links">
<li><a @click="scrollToAbout">Cos'è RISO</a></li>
<li>
<a
href="https://t.me/+pZ40VpmL1NhkZjE0"
target="_blank"
>
🟢 Canale pubblico - PROGETTO RISO
</a>
</li>
<li>
<a
href="https://t.me/c/1565097581/3"
target="_blank"
>
🔵 Gruppi territoriali - ELENCO
</a>
</li>
<li>
<a
href="https://riso.app/riso_gruppo"
target="_blank"
>
🟠 Gruppo nazionale - RISO Italia
</a>
</li>
<li>
<a
href="https://sicrenacc.info/"
target="_blank"
>
Si.cre.na.C.C - Sistema di Credito Naturale
</a>
</li>
</ul>
</div>
<div class="footer-section">
<h4>Menu</h4>
<ul>
<template
v-for="(myitemmenu, ind) in static_data.routes"
:key="ind"
>
<li v-if="myitemmenu.infooter && tools.visumenu(myitemmenu) && !myitemmenu.solotitle">
<router-link
:to="myitemmenu.path"
custom
v-slot="{ navigate }"
>
<span
class="footer_link"
@click="navigate"
@keypress.enter="navigate"
role="link"
>
<span v-if="myitemmenu.level_child > 0">&nbsp;&nbsp;&nbsp;</span>
{{ tools.getLabelByItem(myitemmenu) }}
</span>
</router-link>
</li>
</template>
</ul>
</div>
<div class="footer-section">
<h4>Contatti</h4>
<ul class="footer-links">
<li>
👴
<q-icon
name="telegram"
color="light-blue-7"
size="18px"
style="vertical-align: middle; margin-right: 4px"
/>
<a href="https://t.me/surya1977">Surya</a>
</li>
<li>
👩
<q-icon
name="telegram"
color="light-blue-7"
size="18px"
style="vertical-align: middle; margin-right: 4px"
/>
<a href="https://t.me/ElenaEspx">Elena</a>
</li>
</ul>
</div>
</div>
<q-separator class="footer-separator" />
<div class="footer-bottom">
<p>{{ currentYear }} RISO - Rete Italiana Scambi orizzontali</p>
<p class="footer-values">
Comunità · Fiducia · Scambi Solidali · Sostenibilità
</p>
</div>
</div>
</footer>
<!-- Floating Action Button per tornare su -->
<q-page-sticky
position="bottom-right"
:offset="[18, 18]"
>
<q-btn
v-show="showScrollTop"
fab
icon="keyboard_arrow_up"
color="primary"
@click="scrollToTop"
/>
</q-page-sticky>
</q-page>
</template>
<script lang="ts" src="./HomeRiso.ts"></script>
<style lang="scss" scoped>
@import './HomeRiso.scss';
</style>

View File

@@ -1627,4 +1627,155 @@ $text-light: #666; // Grigio medio
}
}
}
}
// ==========================================
// UPCOMING FEATURES SECTION
// ==========================================
.upcoming-features-section {
padding: 80px 20px;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
position: relative;
overflow: hidden;
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg,
var(--q-primary) 0%,
var(--q-secondary) 50%,
var(--q-primary) 100%);
}
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 30px;
margin-top: 40px;
}
.feature-card {
background: rgba(255, 255, 255, 0.9);
backdrop-filter: blur(10px);
border-radius: 20px;
padding: 40px 30px;
text-align: center;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
border: 1px solid rgba(255, 255, 255, 0.5);
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: linear-gradient(90deg, var(--q-primary), var(--q-secondary));
transform: scaleX(0);
transition: transform 0.4s ease;
}
&:hover {
transform: translateY(-10px);
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.15);
&::before {
transform: scaleX(1);
}
.feature-icon {
transform: scale(1.2) rotate(5deg);
}
}
}
.feature-icon {
font-size: 4rem;
margin-bottom: 20px;
transition: transform 0.4s ease;
filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.1));
}
.feature-title {
font-size: 1.5rem;
font-weight: 700;
color: var(--q-primary);
margin-bottom: 15px;
}
.feature-description {
font-size: 1rem;
line-height: 1.6;
color: #555;
margin-bottom: 20px;
}
.feature-status {
margin-top: 20px;
.q-badge {
padding: 8px 16px;
font-size: 0.85rem;
border-radius: 20px;
}
}
.update-notice {
display: flex;
align-items: center;
gap: 15px;
margin-top: 50px;
padding: 20px 30px;
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(10px);
border-radius: 15px;
border-left: 4px solid var(--q-primary);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
.q-icon {
color: var(--q-primary);
flex-shrink: 0;
}
span {
font-size: 1rem;
color: #555;
line-height: 1.5;
}
}
// ==========================================
// RESPONSIVE
// ==========================================
@media (max-width: 768px) {
.upcoming-features-section {
padding: 60px 20px;
}
.features-grid {
grid-template-columns: 1fr;
gap: 20px;
}
.feature-card {
padding: 30px 20px;
}
.feature-icon {
font-size: 3rem;
}
.update-notice {
flex-direction: column;
text-align: center;
padding: 20px;
}
}

View File

@@ -4,11 +4,10 @@ import { useRouter } from 'vue-router';
import { tools } from '@tools';
import { useGlobalStore } from 'app/src/store';
import { static_data } from '@src/db/static_data'
import { static_data } from '@src/db/static_data';
import { CCheckAppRunning } from '@src/components/CCheckAppRunning';
// ==========================================
// TYPES
// ==========================================
@@ -27,6 +26,13 @@ interface HeroImage {
src: string;
alt: string;
}
interface UpcomingFeature {
icon: string;
title: string;
description: string;
}
// ==========================================
// COMPONENT
// ==========================================
@@ -40,7 +46,7 @@ export default defineComponent({
// ==========================================
const router = useRouter();
const globalStore = useGlobalStore()
const globalStore = useGlobalStore();
// ==========================================
// STATE
@@ -52,16 +58,16 @@ export default defineComponent({
const heroImages = ref<HeroImage[]>([
{
src: '/images/hero/cerchio_riso.jpg',
alt: 'Comunità RISO che si incontra'
alt: 'Comunità RISO che si incontra',
},
{
src: '/images/hero/mercatino_riso.jpg',
alt: 'Utilizzo della App RISO'
alt: 'Utilizzo della App RISO',
},
{
src: '/images/hero/riso_home_app.png',
alt: 'App di RISO'
}
alt: 'App di RISO',
},
]);
const values = ref<Value[]>([
@@ -112,7 +118,22 @@ export default defineComponent({
},
{
title: 'Usa i RIS',
text: 'Scambia in RIS, anche parzialmente: puoi combinare RIS con Euro, baratto o dono nella stessa transazione. Parti da 0 RIS: quando ricevi vai in positivo, quando invii vai in negativo. Più usi i RIS, meno dipendi dall\'economia tradizionale.'
text: "Scambia in RIS, anche parzialmente: puoi combinare RIS con Euro, baratto o dono nella stessa transazione. Parti da 0 RIS: quando ricevi vai in positivo, quando invii vai in negativo. Più usi i RIS, meno dipendi dall'economia tradizionale.",
},
]);
const upcomingFeatures = ref<UpcomingFeature[]>([
{
icon: '🚗',
title: 'Viaggi e Trasporti',
description:
'Condividi viaggi con altri membri della comunità, trasporta oggetti o animali in modo collaborativo. Risparmia, riduci le emissioni e crea nuove connessioni.',
},
{
icon: '🛒',
title: 'Gruppi di Acquisto',
description:
'Gestisci ordini collettivi, consegne e pagamenti con il tuo gruppo. Novità: pagamenti misti Euro/RIS per massima flessibilità negli acquisti di gruppo.',
},
]);
@@ -148,7 +169,10 @@ export default defineComponent({
const goToApp = (): void => {
router.push('/registrati');
};
const goToHome= (): void => {
const goToLogin = (): void => {
globalStore.rightDrawerOpen = true;
};
const goToHome = (): void => {
router.push('/');
};
@@ -156,7 +180,7 @@ export default defineComponent({
showScrollTop.value = window.scrollY > 300;
};
// Slideshow automatico
// Slideshow automatico
let slideInterval: ReturnType<typeof setInterval> | null = null;
const startSlideshow = (): void => {
@@ -215,6 +239,8 @@ export default defineComponent({
globalStore,
goToHome,
static_data,
upcomingFeatures,
goToLogin,
};
},
});

View File

@@ -42,7 +42,7 @@
</h1>
<h2 class="hero-subtitle animate-fade-in-delay">
Rete Italiana Scambi orizzontali
Rete Italiana Scambio orizzontale
</h2>
<p class="hero-description animate-fade-in-delay-2">
@@ -52,7 +52,7 @@
<div class="hero-actions animate-fade-in-delay-3">
<q-btn
v-if="!tools.isLogged()"
v-if="!tools.isLogged() && !tools.lastUserLogged()"
label="Unisciti a RISO"
:size="$q.platform.is.mobile ? 'lg' : 'xl'"
color="primary"
@@ -62,13 +62,23 @@
@click="scrollToRegistrazione"
/>
<q-btn
v-else
v-else-if="!tools.isLogged() && tools.lastUserLogged()"
label="ACCEDI"
:size="$q.platform.is.mobile ? 'lg' : 'xl'"
color="primary"
rounded
unelevated
class="cta-button"
@click="goToLogin"
/>
<q-btn
v-else
label="Vai alla Home"
:size="$q.platform.is.mobile ? 'lg' : 'xl'"
color="primary"
rounded
unelevated
class="cta-button"
@click="goToHome"
/>
@@ -309,8 +319,8 @@
<q-card-section>
<p class="ris-description">
Il <strong>RIS</strong> è l'unità di misura del valore dei beni e
servizi per lo scambio tra i membri di una comunità territoriale. È uno strumento di scambio
basato sulla <strong>fiducia reciproca</strong> tra
servizi per lo scambio tra i membri di una comunità territoriale. È uno
strumento di scambio basato sulla <strong>fiducia reciproca</strong> tra
i membri della comunità.<br />
</p>
<q-separator class="q-my-md" />
@@ -697,7 +707,49 @@
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ========================================== -->
<!-- PROSSIME FUNZIONALITÀ -->
<!-- ========================================== -->
<section class="upcoming-features-section">
<div class="container">
<div class="section-header">
<h2 class="section-title">🚀 Prossime Funzionalità</h2>
<p class="section-subtitle">
RISO si evolve continuamente per offrire nuovi servizi alla comunità
</p>
</div>
<div class="features-grid">
<div
v-for="(feature, index) in upcomingFeatures"
:key="index"
class="feature-card"
>
<div class="feature-icon">{{ feature.icon }}</div>
<h3 class="feature-title">{{ feature.title }}</h3>
<p class="feature-description">{{ feature.description }}</p>
<div class="feature-status">
<q-badge
color="orange"
label="In sviluppo"
/>
</div>
</div>
</div>
<div class="update-notice">
<q-icon
name="info"
size="24px"
/>
<span
>La piattaforma viene costantemente aggiornata con nuove funzionalità basate
sui bisogni della comunità</span
>
</div>
</div>
</section>
@@ -807,7 +859,7 @@
<q-separator class="footer-separator" />
<div class="footer-bottom">
<p>(dal 2021) RISO - Rete Italiana Scambi orizzontali</p>
<p>(dal 2021) RISO - Rete Italiana Scambio orizzontale</p>
<p class="footer-values">
Comunità · Fiducia · Scambi Solidali · Sostenibilità
</p>

View File

@@ -16,9 +16,9 @@ body,
.q-page {
max-width: 100%;
overflow-x: hidden;
/* evita barre X su page container */
@media (max-width: 600px) {
}
@media (max-width: 600px) {}
}
@@ -32,33 +32,38 @@ $heading-primary-line-height: 1.3;
h1 {
// Font size fluido e responsive
font-size: clamp($heading-primary-size-mobile, 4vw, $heading-primary-size-desktop);
// Typography
font-weight: $heading-primary-weight;
letter-spacing: $heading-primary-letter-spacing;
line-height: $heading-primary-line-height;
// Migliora la leggibilità
color: var(--q-primary, #1976d2);
// Anti-aliasing per rendering più pulito
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
// Spacing opzionale
margin-bottom: 1rem;
// Transizione smooth per dark mode
transition: color 0.3s ease;
}
body {
font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-family: 'Segoe UI', Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #333333;
line-height: 1.5;
color: #2c3e50;
line-height: 1.7;
/*background: linear-gradient(135deg, #f5f7fa 0%, #f3fff2 100%);*/
//font-size: 1rem;
@media (max-width: 600px) {
line-height: 1.5;
}
}
.text-mycol {
@@ -78,25 +83,29 @@ p {
margin: 0 0 8px;
}
// Liste più universali e flessibili
ul {
list-style: none;
padding: 0;
}
ul li::before {
content: '\2713';
color: red;
display: inline-block;
width: 1em;
margin-left: 20px;
// Lista di default con checkmark
&:not(.q-list) li {
list-style: none;
@media (max-width: 600px) {
margin-left: 5px;
&::before {
content: '\2713';
color: #667eea;
display: inline-block;
width: 1em;
@media (max-width: 600px) {
margin-left: 5px;
}
}
}
}
ol li::before {
color: red;
color: #667eea;
display: inline-block;
width: 1em;
margin-left: 20px;
@@ -107,8 +116,8 @@ ol li::before {
}
li {
/*color: #2f2c8b;*/
font-size: 18px;
line-height: 1.7;
@media (max-width: 600px) {
font-size: 1rem;
@@ -2872,7 +2881,10 @@ body.body--dark {
opacity: 0.6;
}
}
#q-app, .q-page, .q-page-container {
#q-app,
.q-page,
.q-page-container {
word-break: break-word;
overflow-wrap: anywhere;
}
@@ -2898,4 +2910,361 @@ body.body--dark {
.row.no-wrap {
min-width: fit-content; // permette alla riga di espandersi oltre il container
flex-wrap: nowrap !important;
}
/// ========================================
// GUIDA RISO COMPLETA
// ========================================
// Animazione floating
@keyframes float {
0%,
100% {
transform: translateY(0px) rotate(0deg);
}
50% {
transform: translateY(-20px) rotate(5deg);
}
}
// Header principale
.header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 60px 40px;
border-radius: 20px;
margin-bottom: 40px;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
text-align: center;
position: relative;
overflow: hidden;
@media (max-width: 768px) {
padding: 16px 10px;
margin-bottom: 10px;
}
&::before {
content: '🌾';
position: absolute;
font-size: 200px;
opacity: 0.1;
top: -50px;
right: -50px;
animation: float 6s ease-in-out infinite;
}
h1 {
font-size: 3em !important;
margin-bottom: 10px !important;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
color: white !important;
position: relative;
@media (max-width: 768px) {
font-size: 2em !important;
}
}
.subtitle {
font-size: 1.3em;
opacity: 0.95;
position: relative;
@media (max-width: 768px) {
font-size: 1.1em;
}
}
}
// Sezioni contenuto
.section {
background: white;
padding: 40px;
margin-bottom: 30px;
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
&:hover {
transform: translateY(-5px);
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
}
p {
margin-bottom: 15px;
text-align: justify;
}
@media (max-width: 768px) {
padding: 8px;
margin-bottom: 8px;
}
}
// Header delle sezioni
.section-header {
display: flex;
align-items: center;
margin-bottom: 25px;
padding-bottom: 15px;
border-bottom: 3px solid #667eea;
}
.section-icon {
font-size: 2.5em;
margin-right: 15px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.section-title {
font-size: 1.8em !important;
color: #667eea !important;
font-weight: 700 !important;
margin: 0 !important;
@media (max-width: 768px) {
font-size: 1.4em !important;
}
}
.section-subtitle {
font-size: 1.4em !important;
color: #764ba2 !important;
margin-bottom: 15px;
font-weight: 600;
}
// Box evidenziato (rosa)
.highlight-box {
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
color: white;
padding: 30px;
border-radius: 15px;
margin: 30px 0;
box-shadow: 0 10px 25px rgba(240, 147, 251, 0.3);
@media (max-width: 768px) {
padding: 6px 8px;
margin: 6px 0;
}
h3 {
font-size: 1.6em;
margin-bottom: 15px;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
color: white !important;
}
p {
font-size: 1.1em;
line-height: 1.8;
color: white !important;
}
}
// Box sogno (azzurro/rosa)
.dream-box {
background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
padding: 30px;
border-radius: 15px;
margin: 25px 0;
border-left: 5px solid #667eea;
@media (max-width: 768px) {
padding: 6px 8px;
margin: 6px 0;
}
h3 {
color: #667eea !important;
font-size: 1.5em;
margin-bottom: 15px;
}
p {
line-height: 1.7;
}
}
// Lista facilitatori
.facilitator-list {
background: #f8f9fa;
padding: 25px;
border-radius: 10px;
margin: 20px 0;
@media (max-width: 768px) {
padding: 8px;
margin: 0;
}
h4 {
color: #764ba2 !important;
margin-bottom: 15px;
line-height: 1.5rem;
font-size: 1.2em;
@media (max-width: 768px) {
margin-bottom: 8px;
}
}
ul {
list-style: none;
padding-left: 0;
}
li {
padding: 10px 0 10px 35px;
position: relative;
border-bottom: 1px solid #e0e0e0;
&:last-child {
border-bottom: none;
}
&::before {
content: '';
position: absolute;
left: 5px;
color: #667eea;
font-weight: bold;
font-size: 1.2em;
width: auto;
margin-left: 0;
}
}
p {
margin-top: 15px;
font-style: italic;
color: #764ba2;
}
}
// Box informazioni (arancione)
.info-box {
background: linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%);
padding: 25px;
border-radius: 10px;
margin: 20px 0;
box-shadow: 0 5px 15px rgba(252, 182, 159, 0.3);
@media (max-width: 768px) {
padding: 8px;
margin: 4px 0;
}
h4 {
color: #d63031 !important;
margin-bottom: 12px;
font-size: 1.3em;
}
ul {
margin-top: 10px;
list-style-position: inside;
}
}
// Sezione link (azzurro)
.links-section {
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
color: white;
padding: 35px;
border-radius: 15px;
margin-top: 30px;
box-shadow: 0 15px 35px rgba(79, 172, 254, 0.3);
@media (max-width: 768px) {
padding: 8px;
margin-top: 10px;
}
h3 {
font-size: 1.8em;
margin-bottom: 20px;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
color: white !important;
}
}
.link-item {
background: rgba(255, 255, 255, 0.2);
padding: 15px 20px;
margin: 15px 0;
border-radius: 10px;
backdrop-filter: blur(10px);
transition: all 0.3s ease;
cursor: pointer;
@media (max-width: 768px) {
padding: 6px 8px;
margin: 6px 0;
}
&:hover {
background: rgba(255, 255, 255, 0.3);
transform: translateX(10px);
}
a {
color: white !important;
text-decoration: none;
font-size: 1.1em;
font-weight: 500;
display: flex;
align-items: center;
&::before {
content: '';
margin-right: 10px;
font-size: 1.3em;
}
}
}
// Call to action (viola)
.cta-box {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 15px;
text-align: center;
margin: 30px 0;
box-shadow: 0 15px 35px rgba(102, 126, 234, 0.4);
@media (max-width: 768px) {
padding: 6px 8px;
margin: 6px 0;
}
h3 {
font-size: 1.7em;
margin-bottom: 15px;
color: white !important;
}
p {
font-size: 1.2em;
line-height: 1.8;
color: white !important;
}
}
// Container generale
.container_guida {
max-width: 1000px;
margin: 0 auto;
padding: 20px;
@media (max-width: 768px) {
padding: 10px;
}
}

View File

@@ -35,7 +35,7 @@ const msg_website = {
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa pittaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -2,8 +2,8 @@ const msg_website_it = {
ws: {
sitename: 'RISO',
siteshortname: 'RISO',
description: 'Siamo la Rete Italiana Scambi orizzontali, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
keywords: 'riso, piattaforma di scambio, rete italiana scambi orizzontali, riso app, riso piattaforma, scambio e baratto, momenta RIS',
description: 'Siamo la Rete Italiana Scambio orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
},
hours: {
descr: 'Descrizione',
@@ -133,12 +133,12 @@ const msg_website_it = {
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...',
myDescriz: '',
sottoTitoloApp: 'Rete Italiana Scambi orizzontali',
sottoTitoloApp: 'Rete Italiana Scambio orizzontale',
sottoTitoloApp2: '',
},
homepage: {
descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: 'Siamo la <strong>Rete Italiana Scambi orizzontali</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag1: 'Siamo la <strong>Rete Italiana 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> '

View File

@@ -11372,7 +11372,7 @@ export const tools = {
isStatusNonAutorizzato() {
const userStore = useUserStore();
return userStore.servercode === serv_constants.RIS_CODE__HTTP_FORBIDDEN_PERMESSI
return userStore.servercode === serv_constants.RIS_CODE__HTTP_FORBIDDEN_PERMESSI;
},
pageExist(path: string) {
@@ -11382,6 +11382,52 @@ export const tools = {
return !!page;
},
lastUserLogged() {
return localStorage.getItem(toolsext.localStorage.lastUserLogged);
},
convertNbspToSpaces(htmlText: string) {
if (!htmlText) return '';
return htmlText.replace(/&nbsp;/g, ' ');
},
removeNbsp(htmlText: string) {
if (!htmlText) return '';
return htmlText.replace(/&nbsp;/g, '');
},
converteSpaziMultipliIn1solo(htmlText: string) {
if (!htmlText) return '';
// Collassa spazi multipli in uno solo (mantiene la struttura)
return htmlText
.replace(/>\s+</g, '><') // spazi TRA i tag
.replace(/\s+$/gm, '') // spazi FINE riga
.replace(/^\s+/gm, '') // spazi INIZIO riga
.replace(/[ \t]{2,}/g, ' '); // 2+ spazi → 1 spazio (MA non newline) },
},
// Nel tuo file tools.ts o dove hai le utility
convertHTMLForElement(htmlText: string, usacomeHTML?: boolean): string {
if (!htmlText) return '';
if (!usacomeHTML) {
return htmlText;
}
return this.converteSpaziMultipliIn1solo(htmlText);
},
convertinbspInSpazi(str: string) {
return str
.replace(/&nbsp;/g, ' ') // Converti &nbsp; in spazi normali
},
convertinbspInSpaziNormali(str: string) {
return str
.replace(/&nbsp;/g, ' ') // Converti &nbsp; in spazi normali
.replace(/>\s+</g, '><') // Rimuovi spazi tra tag
.trim();
},
// FINE !
// getLocale() {

View File

@@ -126,6 +126,7 @@ export const toolsext = {
token: 'tk',
refreshToken: 'rt',
username: 'uname',
lastUserLogged: 'lul',
name: 'nm',
surname: 'sn',
perm: 'pm',

View File

@@ -1436,6 +1436,7 @@ export const useUserStore = defineStore('UserStore', {
tools.localStSetItem(toolsext.localStorage.lang, this.lang);
tools.localStSetItem(toolsext.localStorage.userId, myuser._id);
tools.localStSetItem(toolsext.localStorage.username, myuser.username);
tools.localStSetItem(toolsext.localStorage.lastUserLogged, myuser.username);
tools.localStSetItem(toolsext.localStorage.name, myuser.name);
tools.localStSetItem(toolsext.localStorage.surname, myuser.surname);
tools.localStSetItem(toolsext.localStorage.perm, String(myuser.perm) || '');

View File

@@ -3090,17 +3090,17 @@ export const useGlobalStore = defineStore('GlobalStore', {
newrec.catalogo = this.createRaccoltaCataloghiVuoto();
} else if (newrec.type === shared_consts.ELEMTYPE.TEXT) {
newrec.container = "Inserisci qui il testo"
newrec.align = shared_consts.ALIGNTYPE.CEHTER
newrec.align = shared_consts.ALIGNTYPE.CENTER
} else if (newrec.type === shared_consts.ELEMTYPE.HTML) {
newrec.containerHtml = "Inserisci qui il testo"
newrec.align = shared_consts.ALIGNTYPE.CEHTER
newrec.align = shared_consts.ALIGNTYPE.CENTER
} else if (newrec.type === shared_consts.ELEMTYPE.IMAGEUPLOAD) {
newrec.align = shared_consts.ALIGNTYPE.CEHTER
newrec.align = shared_consts.ALIGNTYPE.CENTER
} else if (newrec.type === shared_consts.ELEMTYPE.BUTTON) {
newrec.container = "Bottone 1"
newrec.containerHtml = "primary"
newrec.container2 = "fas fa-home"
newrec.align = shared_consts.ALIGNTYPE.CEHTER
newrec.align = shared_consts.ALIGNTYPE.CENTER
newrec.link = "https://www.pippo.it"
newrec.container3 = "_blank"
}