Compare commits
184 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a0cdec7bd | ||
|
|
3d87c336de | ||
|
|
037ff6f7f9 | ||
|
|
b8dcd7f5e0 | ||
|
|
b35c99c8fb | ||
|
|
086e4ab8ba | ||
|
|
139d3fe241 | ||
|
|
6fe3ed7c8b | ||
|
|
81ae2df8ef | ||
|
|
997a7b8b98 | ||
|
|
331a5451b2 | ||
|
|
514c2488cc | ||
|
|
33e51bac0e | ||
|
|
c46d23cb83 | ||
|
|
acb685f819 | ||
|
|
18790ee379 | ||
|
|
70698fab44 | ||
|
|
c61572a715 | ||
|
|
00bdc278d8 | ||
|
|
5b1f3eafbc | ||
|
|
233c5fa28e | ||
|
|
aa877dea0a | ||
|
|
657dc79996 | ||
|
|
294155d5a3 | ||
|
|
1a342de24a | ||
|
|
00ce3bd919 | ||
|
|
adf1aac10f | ||
|
|
26a42b1f30 | ||
|
|
71fe2ae657 | ||
|
|
8d1dd45648 | ||
|
|
38c13eef28 | ||
|
|
8f54cd2791 | ||
|
|
610961d22c | ||
|
|
3f7eda05cf | ||
|
|
ebfd80da76 | ||
|
|
ede8a2db3d | ||
|
|
4e37475d00 | ||
|
|
6048cd526b | ||
|
|
1d52ab1d08 | ||
|
|
08cf4b6d9f | ||
|
|
4a05ddee50 | ||
|
|
c37280fa4a | ||
|
|
d00e086646 | ||
|
|
973875ca66 | ||
|
|
03c2bcb78e | ||
|
|
a2dd06bd68 | ||
|
|
7ba408c053 | ||
|
|
fcbc64cea8 | ||
|
|
2ee710b748 | ||
|
|
e3db42dcbc | ||
|
|
32210bb96a | ||
|
|
f26ae170bb | ||
|
|
a189aeb99c | ||
|
|
e118c30f47 | ||
|
|
fb11e15907 | ||
|
|
87c8bf4c45 | ||
|
|
efd1d12ba7 | ||
|
|
29437d9d7b | ||
|
|
ed27a6f6a5 | ||
|
|
d6579763f4 | ||
|
|
88cb2f13cc | ||
|
|
91ac7a5bde | ||
|
|
0b06f9f93a | ||
|
|
a13635ab4e | ||
|
|
31a93424aa | ||
|
|
8d4158c2c6 | ||
|
|
8c0619992b | ||
|
|
5668c620da | ||
|
|
6b9ddc8986 | ||
|
|
133dc6a502 | ||
|
|
25377090c1 | ||
|
|
d1d4b73da0 | ||
|
|
f88f433003 | ||
|
|
28a4fe1952 | ||
|
|
f85b8d0637 | ||
|
|
3d6455f23c | ||
|
|
f0c25366db | ||
|
|
d2aaf78c0e | ||
|
|
40214abe64 | ||
|
|
9efd193124 | ||
|
|
0e5d28d199 | ||
|
|
d6aaaabb00 | ||
|
|
10097f4238 | ||
|
|
a3c7b92c0c | ||
|
|
a374a7d7bc | ||
|
|
7e50299854 | ||
|
|
1da0e0f4b5 | ||
|
|
636136a077 | ||
|
|
3521a88395 | ||
|
|
768d299881 | ||
|
|
a76d6c9b12 | ||
|
|
0bf8d3c83c | ||
|
|
b2c19801e6 | ||
|
|
ee3846159c | ||
|
|
5ab24b2abd | ||
|
|
09a05a11d5 | ||
|
|
6c254a6a8e | ||
|
|
240a7be7f1 | ||
|
|
58839c32e1 | ||
|
|
b77a0579f1 | ||
|
|
6e8d1fcff1 | ||
|
|
192fd4706c | ||
|
|
fcc3755c19 | ||
|
|
97abe8b46d | ||
|
|
e40fbd550b | ||
|
|
3d4f8b0d04 | ||
|
|
95793fd73f | ||
|
|
4b4e3963ac | ||
|
|
85e2df56e1 | ||
|
|
58431c144c | ||
|
|
ad45ce60ee | ||
|
|
fba2ebd710 | ||
|
|
8e8a3204a7 | ||
|
|
e1ca4ef17f | ||
|
|
5431fe118e | ||
|
|
789dc1dcae | ||
|
|
76bacf3f5a | ||
|
|
d94cbde948 | ||
|
|
dfe492df45 | ||
|
|
6c50f35b2b | ||
|
|
a03c4cf613 | ||
|
|
7d845355a9 | ||
|
|
aeb83a512b | ||
|
|
e04247b1b6 | ||
|
|
f713f66369 | ||
|
|
f32bd189dc | ||
|
|
0017f04e45 | ||
|
|
65b29a6eee | ||
|
|
7827e49760 | ||
|
|
d106a59bb5 | ||
|
|
4758ce0857 | ||
|
|
6579c6bb3f | ||
|
|
6270991b76 | ||
|
|
f6d8e1bb0b | ||
|
|
f3597facd3 | ||
|
|
8363d65456 | ||
|
|
0a4cea94ae | ||
|
|
53a70a1c96 | ||
|
|
45d06b0923 | ||
|
|
757bf44c68 | ||
|
|
57679fe649 | ||
|
|
f8de205cf6 | ||
|
|
d77f9381e5 | ||
|
|
b643c7cdc3 | ||
|
|
f674791dbc | ||
|
|
3e9ab0af53 | ||
|
|
2f92dfe5b0 | ||
|
|
41d5f562ec | ||
|
|
341b4b8ec7 | ||
|
|
b56e25d1fa | ||
|
|
332b8992a9 | ||
|
|
5ba86e3641 | ||
|
|
39784aeb0e | ||
|
|
45be5038b9 | ||
|
|
c631ca9d6a | ||
|
|
fa075683ae | ||
|
|
836f7f572b | ||
|
|
9fb7df56e6 | ||
|
|
7f6ed73763 | ||
|
|
300bab2125 | ||
|
|
14b3e18986 | ||
|
|
14bca3e282 | ||
|
|
8803190313 | ||
|
|
c914555a5f | ||
|
|
351b81308a | ||
|
|
a42c365052 | ||
|
|
479934a8fb | ||
|
|
b1b952d120 | ||
|
|
73cf977754 | ||
|
|
f89281e316 | ||
|
|
b7ffd751dc | ||
|
|
3bdab927b6 | ||
|
|
fa1a2a7cdb | ||
|
|
5dac17d1d1 | ||
|
|
2ac1bc4b7d | ||
|
|
27aa42507a | ||
|
|
0d466f01b6 | ||
|
|
c82bc117cc | ||
|
|
491c9bc220 | ||
|
|
d438867e3a | ||
|
|
f9e0175f9b | ||
|
|
03e5d2ed81 | ||
|
|
ff1344c06f | ||
|
|
492f599cd9 |
20
.env.dev.pcb
20
.env.dev.pcb
@@ -4,34 +4,31 @@ PDB=mypassword@1A
|
|||||||
SEND_EMAIL=0
|
SEND_EMAIL=0
|
||||||
SEND_EMAIL_ORDERS=1
|
SEND_EMAIL_ORDERS=1
|
||||||
PORT=3000
|
PORT=3000
|
||||||
appTelegram_TEST=["1","17","18"]
|
appTelegram_TEST=["1","17"]
|
||||||
appTelegram=["1","17","18"]
|
appTelegram=["1","17"]
|
||||||
|
appTelegram_DEVELOP=["17"]
|
||||||
DOMAIN=mongodb://localhost:27017/
|
DOMAIN=mongodb://localhost:27017/
|
||||||
AUTH_MONGODB=1
|
AUTH_MONGODB=0
|
||||||
MONGODB_USER=admin
|
|
||||||
MONGODB_PWD=mypwadmin@1A
|
|
||||||
ENABLE_PUSHNOTIFICATION=1
|
ENABLE_PUSHNOTIFICATION=1
|
||||||
URLBASE_APP1=https://localhost
|
URLBASE_APP1=https://localhost
|
||||||
PORT_APP1=8080
|
PORT_APP1=8080
|
||||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||||
HTTPS_LOCALHOST=true
|
HTTPS_LOCALHOST=true
|
||||||
DEBUG=0
|
VITE_DEBUG=0
|
||||||
DEBUG=0
|
|
||||||
TESTING_ON=1
|
TESTING_ON=1
|
||||||
LOCALE=1
|
LOCALE=1
|
||||||
DELAY_SENDEMAIL=2000
|
DELAY_SENDEMAIL=2000
|
||||||
VAPI_KEY_SUBJECT=mailto:paolo@freeplanet.app
|
VAPI_KEY_SUBJECT=mailto:paolo@freeplanet.app
|
||||||
PUBLIC_VAPI_KEY=BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8
|
PUBLIC_VAPI_KEY=BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8
|
||||||
PRIVATE_VAPI_KEY=uB2-jQkrbysyDtqN3ziMBDsVn0wdEaDsksX81zoOGQo
|
PRIVATE_VAPI_KEY=uB2-jQkrbysyDtqN3ziMBDsVn0wdEaDsksX81zoOGQo
|
||||||
PATH_CERT_KEY=localhost.key
|
PATH_CERT_KEY=localhost-key.pem
|
||||||
PATH_SERVER_CRT=localhost.crt
|
PATH_SERVER_CRT=localhost.pem
|
||||||
PATH_SSL_ROOT_PEM=root.pem
|
PATH_SSL_ROOT_PEM=root.pem
|
||||||
PATH_SSL_CHAIN_PEM=chain.pem
|
PATH_SSL_CHAIN_PEM=chain.pem
|
||||||
GCM_API_KEY=""
|
GCM_API_KEY=""
|
||||||
PROD=0
|
PROD=0
|
||||||
PROJECT_DESCR_MAIN='__PROJECTS'
|
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||||
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
||||||
SECRTK=prova123prova567ASDADASDAS
|
|
||||||
TOKEN_LIFE=2h
|
TOKEN_LIFE=2h
|
||||||
REFRESH_TOKEN_LIFE=14d
|
REFRESH_TOKEN_LIFE=14d
|
||||||
FTPSERVER_HOST=139.162.166.31
|
FTPSERVER_HOST=139.162.166.31
|
||||||
@@ -44,3 +41,6 @@ CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpY
|
|||||||
MIAB_HOST=box.lamiaposta.org
|
MIAB_HOST=box.lamiaposta.org
|
||||||
MIAB_ADMIN_EMAIL=admin@lamiaposta.org
|
MIAB_ADMIN_EMAIL=admin@lamiaposta.org
|
||||||
MIAB_ADMIN_PASSWORD=passpao1pabox@1A
|
MIAB_ADMIN_PASSWORD=passpao1pabox@1A
|
||||||
|
DS_API_KEY="sk-222e3addb3d8455d8b0516d93906eec7"
|
||||||
|
SERVER_A_URL="http://51.77.156.69:3000"
|
||||||
|
API_KEY_MSSQL="m68yADSr123MIVIDA@154$DSAGVOK"
|
||||||
@@ -6,34 +6,31 @@ SEND_EMAIL_ORDERS=1
|
|||||||
PORT=3000
|
PORT=3000
|
||||||
appTelegram_TEST=["1","13"]
|
appTelegram_TEST=["1","13"]
|
||||||
appTelegram=["1","13"]
|
appTelegram=["1","13"]
|
||||||
|
appTelegram_DEVELOP=["13"]
|
||||||
DOMAIN=mongodb://localhost:27017/
|
DOMAIN=mongodb://localhost:27017/
|
||||||
AUTH_MONGODB=1
|
AUTH_MONGODB=0
|
||||||
MONGODB_USER=admin
|
|
||||||
MONGODB_PWD=mypwadmin@1A
|
|
||||||
ENABLE_PUSHNOTIFICATION=1
|
ENABLE_PUSHNOTIFICATION=1
|
||||||
URLBASE_APP1=https://localhost
|
URLBASE_APP1=https://localhost
|
||||||
PORT_APP1=8080
|
PORT_APP1=8080
|
||||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||||
HTTPS_LOCALHOST=true
|
HTTPS_LOCALHOST=true
|
||||||
DEBUG=0
|
VITE_DEBUG=0
|
||||||
DEBUG=0
|
|
||||||
TESTING_ON=1
|
TESTING_ON=1
|
||||||
LOCALE=1
|
LOCALE=1
|
||||||
DELAY_SENDEMAIL=2000
|
DELAY_SENDEMAIL=2000
|
||||||
VAPI_KEY_SUBJECT=mailto:paolo@freeplanet.app
|
VAPI_KEY_SUBJECT=mailto:paolo@freeplanet.app
|
||||||
PUBLIC_VAPI_KEY=BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8
|
PUBLIC_VAPI_KEY=BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8
|
||||||
PRIVATE_VAPI_KEY=uB2-jQkrbysyDtqN3ziMBDsVn0wdEaDsksX81zoOGQo
|
PRIVATE_VAPI_KEY=uB2-jQkrbysyDtqN3ziMBDsVn0wdEaDsksX81zoOGQo
|
||||||
PATH_CERT_KEY=localhost.key
|
PATH_CERT_KEY=localhost-key.pem
|
||||||
PATH_SERVER_CRT=localhost.crt
|
PATH_SERVER_CRT=localhost.pem
|
||||||
PATH_SSL_ROOT_PEM=root.pem
|
PATH_SSL_ROOT_PEM=root.pem
|
||||||
PATH_SSL_CHAIN_PEM=chain.pem
|
PATH_SSL_CHAIN_PEM=chain.pem
|
||||||
GCM_API_KEY=""
|
GCM_API_KEY=""
|
||||||
PROD=0
|
PROD=0
|
||||||
PROJECT_DESCR_MAIN='__PROJECTS'
|
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||||
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
||||||
SECRTK=prova123prova567ASDADASDAS
|
TOKEN_LIFE=1m
|
||||||
TOKEN_LIFE=2h
|
REFRESH_TOKEN_LIFE=30d
|
||||||
REFRESH_TOKEN_LIFE=14d
|
|
||||||
FTPSERVER_HOST=139.162.166.31
|
FTPSERVER_HOST=139.162.166.31
|
||||||
FTPSERVER_PORT=21
|
FTPSERVER_PORT=21
|
||||||
FTPSERVER_USER=ftpusrsrv_
|
FTPSERVER_USER=ftpusrsrv_
|
||||||
@@ -41,3 +38,4 @@ FTPSERVER_PWD=ftpmypwd@1A_
|
|||||||
AUTH_NEW_SITES=123123123
|
AUTH_NEW_SITES=123123123
|
||||||
SCRIPTS_DIR=admin_scripts
|
SCRIPTS_DIR=admin_scripts
|
||||||
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||||
|
DS_API_KEY="sk-222e3addb3d8455d8b0516d93906eec7"
|
||||||
|
|||||||
@@ -6,34 +6,31 @@ SEND_EMAIL_ORDERS=1
|
|||||||
PORT=3000
|
PORT=3000
|
||||||
appTelegram_TEST=["1","13"]
|
appTelegram_TEST=["1","13"]
|
||||||
appTelegram=["1","13"]
|
appTelegram=["1","13"]
|
||||||
|
appTelegram_DEVELOP=["13"]
|
||||||
DOMAIN=mongodb://localhost:27017/
|
DOMAIN=mongodb://localhost:27017/
|
||||||
AUTH_MONGODB=1
|
AUTH_MONGODB=0
|
||||||
MONGODB_USER=admin
|
|
||||||
MONGODB_PWD=mypwadmin@1A
|
|
||||||
ENABLE_PUSHNOTIFICATION=1
|
ENABLE_PUSHNOTIFICATION=1
|
||||||
URLBASE_APP1=https://localhost
|
URLBASE_APP1=https://localhost
|
||||||
PORT_APP1=8080
|
PORT_APP1=8080
|
||||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||||
HTTPS_LOCALHOST=true
|
HTTPS_LOCALHOST=true
|
||||||
DEBUG=0
|
VITE_DEBUG=0
|
||||||
DEBUG=0
|
|
||||||
TESTING_ON=1
|
TESTING_ON=1
|
||||||
LOCALE=1
|
LOCALE=1
|
||||||
DELAY_SENDEMAIL=2000
|
DELAY_SENDEMAIL=2000
|
||||||
VAPI_KEY_SUBJECT=mailto:paolo@freeplanet.app
|
VAPI_KEY_SUBJECT=mailto:paolo@freeplanet.app
|
||||||
PUBLIC_VAPI_KEY=BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8
|
PUBLIC_VAPI_KEY=BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8
|
||||||
PRIVATE_VAPI_KEY=uB2-jQkrbysyDtqN3ziMBDsVn0wdEaDsksX81zoOGQo
|
PRIVATE_VAPI_KEY=uB2-jQkrbysyDtqN3ziMBDsVn0wdEaDsksX81zoOGQo
|
||||||
PATH_CERT_KEY=localhost.key
|
PATH_CERT_KEY=localhost-key.pem
|
||||||
PATH_SERVER_CRT=localhost.crt
|
PATH_SERVER_CRT=localhost.pem
|
||||||
PATH_SSL_ROOT_PEM=root.pem
|
PATH_SSL_ROOT_PEM=root.pem
|
||||||
PATH_SSL_CHAIN_PEM=chain.pem
|
PATH_SSL_CHAIN_PEM=chain.pem
|
||||||
GCM_API_KEY=""
|
GCM_API_KEY=""
|
||||||
PROD=0
|
PROD=0
|
||||||
PROJECT_DESCR_MAIN='__PROJECTS'
|
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||||
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
||||||
SECRTK=prova123prova567ASDADASDAS
|
TOKEN_LIFE=30d
|
||||||
TOKEN_LIFE=2h
|
REFRESH_TOKEN_LIFE=30d
|
||||||
REFRESH_TOKEN_LIFE=14d
|
|
||||||
FTPSERVER_HOST=139.162.166.31
|
FTPSERVER_HOST=139.162.166.31
|
||||||
FTPSERVER_PORT=21
|
FTPSERVER_PORT=21
|
||||||
FTPSERVER_USER=ftpusrsrv_
|
FTPSERVER_USER=ftpusrsrv_
|
||||||
@@ -41,3 +38,10 @@ FTPSERVER_PWD=ftpmypwd@1A_
|
|||||||
AUTH_NEW_SITES=123123123
|
AUTH_NEW_SITES=123123123
|
||||||
SCRIPTS_DIR=admin_scripts
|
SCRIPTS_DIR=admin_scripts
|
||||||
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||||
|
DS_API_KEY="sk-222e3addb3d8455d8b0516d93906eec7"
|
||||||
|
OLLAMA_URL=http://localhost:11434
|
||||||
|
OLLAMA_DEFAULT_MODEL=llama3.2:3b
|
||||||
|
GROK_API="xai-PcNM5obgPaETtmnfDWPZk235D75ZgxENU2QmeqPfMQCHh9dwCDVeRRe0oVVA2YOpiUDh1uJieZsMasja"
|
||||||
|
REPLICATE_API_TOKEN="r8_AVhM6igwvoOnUA65cHVZdhEDfTqBVk94WTB0u"
|
||||||
|
FAL_KEY="7d251c88-21b5-4b55-8b3e-4bafd910f99f:b81c0a36a25b052f26eb8ac226c7efff"
|
||||||
|
HF_TOKEN="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"
|
||||||
40
.env.prod.freeplanet.app
Normal file
40
.env.prod.freeplanet.app
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
DATABASE=FreePlanet
|
||||||
|
UDB=paofreeplanet
|
||||||
|
PDB=suerteFreePlanet@1A
|
||||||
|
SEND_EMAIL=1
|
||||||
|
PORT=3000
|
||||||
|
ENABLE_PUSHNOTIFICATION=1
|
||||||
|
DIRECTORY_SERVER=/var/www/www.freeplanet_server
|
||||||
|
SERVERDIR_WEBSITE=/var/www/www.freeplanet_server
|
||||||
|
PORT_APP1="0"
|
||||||
|
DOMAIN=mongodb://localhost:27017/
|
||||||
|
DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:27017/
|
||||||
|
AUTH_MONGODB=1
|
||||||
|
AUTH_DB_PASSING=1
|
||||||
|
MONGODB_USER=admin
|
||||||
|
MONGODB_PWD=mypwadminREAL@1A
|
||||||
|
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||||
|
VITE_DEBUG=0
|
||||||
|
LOCALE=0
|
||||||
|
DELAY_SENDEMAIL=1000
|
||||||
|
VAPI_KEY_SUBJECT="mailto:paolo@freeplanet.app"
|
||||||
|
PUBLIC_VAPI_KEY="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
||||||
|
PRIVATE_VAPI_KEY="St9UMzcS76Q9yKG6RInAuYydYjFRliqwHTJY3A5wjO0"
|
||||||
|
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
||||||
|
PATH_CERT_KEY=privkey.pem
|
||||||
|
PATH_SERVER_CRT=fullchain.pem
|
||||||
|
PATH_SSL_ROOT_PEM=root.pem
|
||||||
|
PATH_SSL_CHAIN_PEM=chain.pem
|
||||||
|
PROD=1
|
||||||
|
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||||
|
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
|
||||||
|
TOKEN_LIFE=2h
|
||||||
|
REFRESH_TOKEN_LIFE=14d
|
||||||
|
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||||
|
DOMAINS=[{"hostname":"freeplanet.app","port":"3000"}]
|
||||||
|
#DOMAINS=[{"hostname":"abitaregliiblei.it","port":"3021"},{"hostname":"riso.app","port":"3005"}]
|
||||||
|
SCRIPTS_DIR=admin_scripts
|
||||||
|
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||||
|
MIAB_HOST=box.lamiaposta.org
|
||||||
|
MIAB_ADMIN_EMAIL=admin@lamiaposta.org
|
||||||
|
MIAB_ADMIN_PASSWORD=passpao1pabox@1A
|
||||||
@@ -7,35 +7,38 @@ PORT=3000
|
|||||||
appTelegram_TEST=["17","18"]
|
appTelegram_TEST=["17","18"]
|
||||||
appTelegram=["17","18"]
|
appTelegram=["17","18"]
|
||||||
ENABLE_PUSHNOTIFICATION=1
|
ENABLE_PUSHNOTIFICATION=1
|
||||||
DIRECTORY_SERVER=/var/www/www.freeplanet_server
|
DIRECTORY_SERVER=/var/www/nodejs_piuchebuono_server
|
||||||
SERVERDIR_WEBSITE=
|
SERVERDIR_WEBSITE=/var/www/piuchebuono.app
|
||||||
PORT_APP1="0"
|
PORT_APP1="0"
|
||||||
DOMAIN=mongodb://localhost:32001/
|
DOMAIN_OFF=mongodb://localhost:32001/
|
||||||
|
DOMAIN_AUTH_OLD=mongodb://{username}:{password}@127.0.0.1:32001/
|
||||||
|
DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:27030/
|
||||||
AUTH_MONGODB=1
|
AUTH_MONGODB=1
|
||||||
|
AUTH_DB_PASSING=1
|
||||||
MONGODB_USER=admin
|
MONGODB_USER=admin
|
||||||
MONGODB_PWD=mypwadminREAL@1A
|
MONGODB_PWD=mypwadminREAL@1A
|
||||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||||
DEBUG=0
|
VITE_DEBUG=0
|
||||||
LOCALE=0
|
LOCALE=0
|
||||||
DELAY_SENDEMAIL=1000
|
DELAY_SENDEMAIL=1000
|
||||||
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
|
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
|
||||||
PUBLIC_VAPI_KEY="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
|
PUBLIC_VAPI_KEY="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
|
||||||
PRIVATE_VAPI_KEY="LVpFDJuKscdHuQr5pe20dFuYuWX1-ZRb6x72PP-Pp4I"
|
PRIVATE_VAPI_KEY="LVpFDJuKscdHuQr5pe20dFuYuWX1-ZRb6x72PP-Pp4I"
|
||||||
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
||||||
PATH_CERT_KEY=key.pem
|
PATH_CERT_KEY=privkey.pem
|
||||||
PATH_SERVER_CRT=cert.pem
|
PATH_SERVER_CRT=fullchain.pem
|
||||||
PATH_SSL_ROOT_PEM=root.pem
|
|
||||||
PATH_SSL_CHAIN_PEM=chain.pem
|
|
||||||
PROD=1
|
PROD=1
|
||||||
PROJECT_DESCR_MAIN='__PROJECTS'
|
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||||
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
|
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
|
||||||
SECRTK=jAxKm02emx5SeJvz2IGmtRf6YqCgope
|
TOKEN_LIFE=30d
|
||||||
TOKEN_LIFE=2h
|
REFRESH_TOKEN_LIFE=30d
|
||||||
REFRESH_TOKEN_LIFE=14d
|
|
||||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNVZZ
|
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNVZZ
|
||||||
DOMAINS=[{"hostname":"piuchebuono.app","port":"3000"},{"hostname":"gruppomacro.app","port":"3010"}]
|
DOMAINS=[{"hostname":"piuchebuono.app","port":"3030"},{"hostname":"gruppomacro.app","port":"3010"}]
|
||||||
|
DOMAINS_ALLOWED=["gruppomacro.app","piuchebuono.app"]
|
||||||
SCRIPTS_DIR=admin_scripts
|
SCRIPTS_DIR=admin_scripts
|
||||||
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||||
MIAB_HOST=box.lamiaposta.org
|
MIAB_HOST=box.lamiaposta.org
|
||||||
MIAB_ADMIN_EMAIL=admin@lamiaposta.org
|
MIAB_ADMIN_EMAIL=admin@lamiaposta.org
|
||||||
MIAB_ADMIN_PASSWORD=passpao1pabox@1A
|
MIAB_ADMIN_PASSWORD=passpao1pabox@1A
|
||||||
|
SERVER_A_URL="http://51.77.156.69:3000"
|
||||||
|
API_KEY_MSSQL="m68yADSr123MIVIDA@154$DSAGVOK"
|
||||||
41
.env.prod.riso
Normal file
41
.env.prod.riso
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
DATABASE=FreePlanet
|
||||||
|
UDB=paofreeplanet
|
||||||
|
PDB=suerteFreePlanet@1A
|
||||||
|
SEND_EMAIL=1
|
||||||
|
PORT=0
|
||||||
|
ENABLE_PUSHNOTIFICATION=1
|
||||||
|
DIRECTORY_SERVER=/var/www/nodejs_riso_server
|
||||||
|
SERVERDIR_WEBSITE=/var/www/riso.app
|
||||||
|
PORT_APP1="0"
|
||||||
|
DOMAIN_OFF=mongodb://localhost:32015/
|
||||||
|
DOMAIN_AUTH_OLD=mongodb://{username}:{password}@127.0.0.1:32015/
|
||||||
|
DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:27030/
|
||||||
|
AUTH_MONGODB=1
|
||||||
|
AUTH_DB_PASSING=1
|
||||||
|
MONGODB_USER=admin
|
||||||
|
MONGODB_PWD=mypwadminREAL@1A
|
||||||
|
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||||
|
VITE_DEBUG=0
|
||||||
|
LOCALE=0
|
||||||
|
DELAY_SENDEMAIL=1000
|
||||||
|
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
|
||||||
|
PUBLIC_VAPI_KEY="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
||||||
|
PRIVATE_VAPI_KEY="St9UMzcS76Q9yKG6RInAuYydYjFRliqwHTJY3A5wjO0"
|
||||||
|
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
||||||
|
PATH_CERT_KEY=privkey.pem
|
||||||
|
PATH_SERVER_CRT=fullchain.pem
|
||||||
|
PROD=1
|
||||||
|
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||||
|
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
|
||||||
|
TOKEN_LIFE=30d
|
||||||
|
REFRESH_TOKEN_LIFE=30d
|
||||||
|
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||||
|
DOMAINS=[{"hostname":"riso.app","port":"3006"},{"hostname":"freeplanet.app","port":"3000"},{"hostname":"nuovomondo.app","port":"3032"}]
|
||||||
|
DOMAINS_NEW=[{"hostname":"riso.app","port":"3006"},{"hostname":"freeplanet.app","port":"3000"},{"hostname":"nuovomondo.app","port":"3032"},{"hostname":"germogliamo.app","port":"3042"}]
|
||||||
|
DOMAINS_ALLOWED=["riso.app","germogliamo.app","comunitanuovomondo.app","nuovomondo.app","kolibrilab.it","artenergetica.org","freeplanet.app","www.freeplanet.app","freeplanet.app:3000","freeplanet.app:3001","www.freeplanet.app:3000","www.freeplanet.app:3001"]
|
||||||
|
#DOMAINS=[{"hostname":"abitaregliiblei.it","port":"3021"},{"hostname":"riso.app","port":"3005"}]
|
||||||
|
SCRIPTS_DIR=admin_scripts
|
||||||
|
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||||
|
MIAB_HOST=box.lamiaposta.org
|
||||||
|
MIAB_ADMIN_EMAIL=admin@lamiaposta.org
|
||||||
|
MIAB_ADMIN_PASSWORD=passpao1pabox@1A
|
||||||
@@ -8,22 +8,24 @@ appTelegram_TEST=["17","18"]
|
|||||||
appTelegram=["17","18"]
|
appTelegram=["17","18"]
|
||||||
ENABLE_PUSHNOTIFICATION=1
|
ENABLE_PUSHNOTIFICATION=1
|
||||||
DIRECTORY_SERVER=/var/www/nodejs_test.piuchebuono_server
|
DIRECTORY_SERVER=/var/www/nodejs_test.piuchebuono_server
|
||||||
SERVERDIR_WEBSITE=test.piuchebuono.app
|
SERVERDIR_WEBSITE=var/www/test.piuchebuono.app
|
||||||
PORT_APP1="0"
|
PORT_APP1="0"
|
||||||
DOMAIN=mongodb://localhost:32002/
|
DOMAIN=mongodb://localhost:32002/
|
||||||
|
DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:32002/
|
||||||
AUTH_MONGODB=1
|
AUTH_MONGODB=1
|
||||||
|
AUTH_DB_PASSING=1
|
||||||
MONGODB_USER=admin
|
MONGODB_USER=admin
|
||||||
MONGODB_PWD=mypwadmin@1A
|
MONGODB_PWD=mypwadminS1A
|
||||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||||
DEBUG=0
|
VITE_DEBUG=0
|
||||||
LOCALE=0
|
LOCALE=0
|
||||||
DELAY_SENDEMAIL=1000
|
DELAY_SENDEMAIL=1000
|
||||||
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
|
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
|
||||||
PUBLIC_VAPI_KEY="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
|
PUBLIC_VAPI_KEY="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
|
||||||
PRIVATE_VAPI_KEY="LVpFDJuKscdHuQr5pe20dFuYuWX1-ZRb6x72PP-Pp4I"
|
PRIVATE_VAPI_KEY="LVpFDJuKscdHuQr5pe20dFuYuWX1-ZRb6x72PP-Pp4I"
|
||||||
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
||||||
PATH_CERT_KEY=key.pem
|
PATH_CERT_KEY=privkey.pem
|
||||||
PATH_SERVER_CRT=cert.pem
|
PATH_SERVER_CRT=fullchain.pem
|
||||||
PATH_SSL_ROOT_PEM=root.pem
|
PATH_SSL_ROOT_PEM=root.pem
|
||||||
PATH_SSL_CHAIN_PEM=chain.pem
|
PATH_SSL_CHAIN_PEM=chain.pem
|
||||||
PROD=0
|
PROD=0
|
||||||
@@ -32,9 +34,12 @@ SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
|
|||||||
TOKEN_LIFE=2h
|
TOKEN_LIFE=2h
|
||||||
REFRESH_TOKEN_LIFE=14d
|
REFRESH_TOKEN_LIFE=14d
|
||||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||||
DOMAINS=[{"hostname":"piuchebuono.app","port":"3001"},{"hostname":"gruppomacro.app","port":"3011"}]
|
DOMAINS=[{"hostname":"piuchebuono.app","port":"3031"},{"hostname":"gruppomacro.app","port":"3011"}]
|
||||||
|
DOMAINS_ALLOWED=[]
|
||||||
SCRIPTS_DIR=admin_scripts
|
SCRIPTS_DIR=admin_scripts
|
||||||
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||||
MIAB_HOST=box.lamiaposta.org
|
MIAB_HOST=box.lamiaposta.org
|
||||||
MIAB_ADMIN_EMAIL=admin@lamiaposta.org
|
MIAB_ADMIN_EMAIL=admin@lamiaposta.org
|
||||||
MIAB_ADMIN_PASSWORD=passpao1pabox@1A
|
MIAB_ADMIN_PASSWORD=passpao1pabox@1A
|
||||||
|
SERVER_A_URL="http://51.77.156.69:3000"
|
||||||
|
API_KEY_MSSQL="m68yADSr123MIVIDA@154$DSAGVOK"
|
||||||
@@ -5,22 +5,24 @@ SEND_EMAIL=1
|
|||||||
PORT=3001
|
PORT=3001
|
||||||
ENABLE_PUSHNOTIFICATION=1
|
ENABLE_PUSHNOTIFICATION=1
|
||||||
DIRECTORY_SERVER=/var/www/nodejs_test.riso_server
|
DIRECTORY_SERVER=/var/www/nodejs_test.riso_server
|
||||||
SERVERDIR_WEBSITE=test.riso.app
|
SERVERDIR_WEBSITE=/var/www/test.riso.app
|
||||||
PORT_APP1="0"
|
PORT_APP1="0"
|
||||||
DOMAIN=mongodb://localhost:32012/
|
DOMAIN=mongodb://localhost:32012/
|
||||||
|
DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:32012/
|
||||||
AUTH_MONGODB=1
|
AUTH_MONGODB=1
|
||||||
MONGODB_USER=admin
|
AUTH_DB_PASSING=1
|
||||||
MONGODB_PWD=mypwadmin@1A
|
MONGODB_USER="admin"
|
||||||
|
MONGODB_PWD="mypwadminS1A"
|
||||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||||
DEBUG=0
|
VITE_DEBUG=1
|
||||||
LOCALE=0
|
LOCALE=0
|
||||||
DELAY_SENDEMAIL=1000
|
DELAY_SENDEMAIL=1000
|
||||||
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
|
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
|
||||||
PUBLIC_VAPI_KEY="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
PUBLIC_VAPI_KEY="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
||||||
PRIVATE_VAPI_KEY="St9UMzcS76Q9yKG6RInAuYydYjFRliqwHTJY3A5wjO0"
|
PRIVATE_VAPI_KEY="St9UMzcS76Q9yKG6RInAuYydYjFRliqwHTJY3A5wjO0"
|
||||||
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
||||||
PATH_CERT_KEY=key.pem
|
PATH_CERT_KEY=privkey.pem
|
||||||
PATH_SERVER_CRT=cert.pem
|
PATH_SERVER_CRT=fullchain.pem
|
||||||
PATH_SSL_ROOT_PEM=root.pem
|
PATH_SSL_ROOT_PEM=root.pem
|
||||||
PATH_SSL_CHAIN_PEM=chain.pem
|
PATH_SSL_CHAIN_PEM=chain.pem
|
||||||
PROD=0
|
PROD=0
|
||||||
@@ -29,7 +31,8 @@ SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
|
|||||||
TOKEN_LIFE=2h
|
TOKEN_LIFE=2h
|
||||||
REFRESH_TOKEN_LIFE=14d
|
REFRESH_TOKEN_LIFE=14d
|
||||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||||
DOMAINS=[{"hostname":"abitaregliiblei.it","port":"3021"},{"hostname":"riso.app","port":"3005"}]
|
DOMAINS=[{"hostname":"riso.app","port":"3005"},{"hostname":"nuovomondo.app","port":"3033"}]
|
||||||
|
DOMAINS_ALLOWED=["riso.app","comunitanuovomondo.app","kolibrilab.it","artenergetica.org","freeplanet.app","www.freeplanet.app","freeplanet.app:3000","freeplanet.app:3001","www.freeplanet.app:3000","www.freeplanet.app:3001"]
|
||||||
SCRIPTS_DIR=admin_scripts
|
SCRIPTS_DIR=admin_scripts
|
||||||
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||||
MIAB_HOST=box.lamiaposta.org
|
MIAB_HOST=box.lamiaposta.org
|
||||||
|
|||||||
@@ -13,15 +13,15 @@ AUTH_MONGODB=1
|
|||||||
MONGODB_USER=admin
|
MONGODB_USER=admin
|
||||||
MONGODB_PWD=mypwadmin@1A
|
MONGODB_PWD=mypwadmin@1A
|
||||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||||
DEBUG=0
|
VITE_DEBUG=0
|
||||||
LOCALE=0
|
LOCALE=0
|
||||||
DELAY_SENDEMAIL=1000
|
DELAY_SENDEMAIL=1000
|
||||||
VAPI_KEY_SUBJECT="mailto:paolo@freeplanet.app"
|
VAPI_KEY_SUBJECT="mailto:paolo@freeplanet.app"
|
||||||
PUBLIC_VAPI_KEY="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
PUBLIC_VAPI_KEY="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
||||||
PRIVATE_VAPI_KEY="St9UMzcS76Q9yKG6RInAuYydYjFRliqwHTJY3A5wjO0"
|
PRIVATE_VAPI_KEY="St9UMzcS76Q9yKG6RInAuYydYjFRliqwHTJY3A5wjO0"
|
||||||
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
||||||
PATH_CERT_KEY=key.pem
|
PATH_CERT_KEY=privkey.pem
|
||||||
PATH_SERVER_CRT=cert.pem
|
PATH_SERVER_CRT=fullchain.pem
|
||||||
PATH_SSL_ROOT_PEM=root.pem
|
PATH_SSL_ROOT_PEM=root.pem
|
||||||
PATH_SSL_CHAIN_PEM=chain.pem
|
PATH_SSL_CHAIN_PEM=chain.pem
|
||||||
PROD=0
|
PROD=0
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,6 +3,7 @@ node_modules/
|
|||||||
.env.production
|
.env.production
|
||||||
.env.production.bak
|
.env.production.bak
|
||||||
ESEMPI/
|
ESEMPI/
|
||||||
|
OFF/
|
||||||
.idea
|
.idea
|
||||||
package-lock.json
|
package-lock.json
|
||||||
deploynodejs_on_production.sh
|
deploynodejs_on_production.sh
|
||||||
|
|||||||
43
.vscode/launch.json
vendored
43
.vscode/launch.json
vendored
@@ -1,18 +1,19 @@
|
|||||||
{
|
{
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
|
|
||||||
{
|
{
|
||||||
"type": "node",
|
"type": "node",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"name": "Launch via Nodemon",
|
"name": "Launch via Nodemon",
|
||||||
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
||||||
"restart": true,
|
"restart": true,
|
||||||
"runtimeExecutable": "node",
|
"runtimeExecutable": "/usr/local/bin/node",
|
||||||
"runtimeArgs": [
|
"runtimeArgs": [
|
||||||
"--inspect=9229" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
"--inspect=9229" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
||||||
],
|
],
|
||||||
"args": [
|
"args": [
|
||||||
"${workspaceFolder}/src/server/server.js"
|
"${workspaceFolder}/src/server.js"
|
||||||
], // Replace with your entry file
|
], // Replace with your entry file
|
||||||
"cwd": "${workspaceFolder}",
|
"cwd": "${workspaceFolder}",
|
||||||
"autoAttachChildProcesses": true,
|
"autoAttachChildProcesses": true,
|
||||||
@@ -30,12 +31,12 @@
|
|||||||
"name": "Launch Trace Warning",
|
"name": "Launch Trace Warning",
|
||||||
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
||||||
"restart": true,
|
"restart": true,
|
||||||
"runtimeExecutable": "node",
|
"runtimeExecutable": "/usr/local/bin/node",
|
||||||
"runtimeArgs": [
|
"runtimeArgs": [
|
||||||
"--trace-warnings" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
"--trace-warnings" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
||||||
],
|
],
|
||||||
"args": [
|
"args": [
|
||||||
"${workspaceFolder}/src/server/server.js"
|
"${workspaceFolder}/src/server.js"
|
||||||
], // Replace with your entry file
|
], // Replace with your entry file
|
||||||
"cwd": "${workspaceFolder}",
|
"cwd": "${workspaceFolder}",
|
||||||
"autoAttachChildProcesses": true,
|
"autoAttachChildProcesses": true,
|
||||||
@@ -49,7 +50,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ServerSide",
|
"name": "ServerSide",
|
||||||
"program": "${workspaceFolder}/src/server/server.js",
|
"program": "${workspaceFolder}/src/server.js",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"skipFiles": [
|
"skipFiles": [
|
||||||
"<node_internals>/**"
|
"<node_internals>/**"
|
||||||
@@ -60,5 +61,37 @@
|
|||||||
"TESTING_ON": "1"
|
"TESTING_ON": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug CheckSmartBot",
|
||||||
|
"program": "${workspaceFolder}/../checksmartbot/bot.js",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"outFiles": [
|
||||||
|
"${workspaceFolder}/../**/*.js"
|
||||||
|
],
|
||||||
|
"envFile": "${workspaceFolder}/.env",
|
||||||
|
"skipFiles": [
|
||||||
|
"<node_internals>/**"
|
||||||
|
],
|
||||||
|
"autoAttachChildProcesses": true,
|
||||||
|
"smartStep": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Avvia bot con pm2 (attach)",
|
||||||
|
"runtimeExecutable": "pm2",
|
||||||
|
"runtimeArgs": [
|
||||||
|
"start",
|
||||||
|
"bot.js",
|
||||||
|
"--name",
|
||||||
|
"checksmartbot"
|
||||||
|
],
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"restart": true,
|
||||||
|
"port": 9229,
|
||||||
|
"attach": true
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
148049
.yarn/releases/yarn-1.22.22.cjs
vendored
Executable file
148049
.yarn/releases/yarn-1.22.22.cjs
vendored
Executable file
File diff suppressed because one or more lines are too long
5
.yarnrc
Normal file
5
.yarnrc
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||||
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
|
yarn-path ".yarn/releases/yarn-1.22.22.cjs"
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
source ./.env.test.risosrv
|
source ./.env.prod.freeplanet.app
|
||||||
|
|
||||||
echo "Sincronizzazione in corso ... $DIRECTORY_SERVER/"
|
echo "Sincronizzazione in corso ... $DIRECTORY_SERVER/"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -8,17 +8,14 @@ echo ""
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Configurazione
|
# Configurazione
|
||||||
REMOTE_USER="pcbuser"
|
REMOTE_USER="suryapaolo"
|
||||||
REMOTE_HOST="pcb"
|
REMOTE_HOST="servereng"
|
||||||
REMOTE_PORT="8822"
|
REMOTE_PORT="8855"
|
||||||
REMOTE_DIR="$DIRECTORY_SERVER"
|
REMOTE_DIR="$DIRECTORY_SERVER"
|
||||||
SSH_OPTIONS="-p $REMOTE_PORT"
|
SSH_OPTIONS="-p $REMOTE_PORT"
|
||||||
CONFIG_JS="ecosystem.config.testriso.js"
|
CONFIG_JS="ecosystem.config.prod_freeplanet.app.js"
|
||||||
ENV_FILE=".env.test.risosrv"
|
ENV_FILE=".env.prod.freeplanet.app"
|
||||||
ENV_OUT=".env.test"
|
ENV_OUT=".env.production"
|
||||||
|
|
||||||
#ENV_FILE=".env.prod.pcb"
|
|
||||||
#ENV_OUT=".env.production"
|
|
||||||
|
|
||||||
# Array di cartelle e file da sincronizzare
|
# Array di cartelle e file da sincronizzare
|
||||||
SYNC_ITEMS=(
|
SYNC_ITEMS=(
|
||||||
@@ -63,8 +60,8 @@ rsync -avz -e "ssh $SSH_OPTIONS" \
|
|||||||
|
|
||||||
# Verifica il risultato
|
# Verifica il risultato
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo "Sincronizzazione completata con successo. SERVER $REMOTE_DIR! "
|
echo "✅ Sincronizzazione completata con successo. SERVER $REMOTE_DIR! "
|
||||||
else
|
else
|
||||||
echo "Errore durante la sincronizzazione. Controlla l'output per i dettagli."
|
echo "❌ Errore durante la sincronizzazione. Controlla l'output per i dettagli."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
76
OFF_deploynodejs_on_production.sh.off
Executable file
76
OFF_deploynodejs_on_production.sh.off
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ./.env.production
|
||||||
|
|
||||||
|
msg="*** SERVER DI PRODUZIONE **** SEI SICURO DI INVIARE GLI AGGIORNAMENTI SERVERSIDE (NODE JS) - SUL SERVER DI PRODUZIONE ?? $SERVERDIR_WEBSITE (Y/N) ? "
|
||||||
|
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
read -p "$msg" risposta
|
||||||
|
else
|
||||||
|
echo $msg
|
||||||
|
risposta=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
||||||
|
|
||||||
|
echo "Sincronizzazione in corso NODEPRODUZIONE ... $SERVERDIR_WEBSITE/"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Configurazione
|
||||||
|
REMOTE_USER="suryapaolo"
|
||||||
|
REMOTE_HOST="servereng"
|
||||||
|
REMOTE_PORT="8855"
|
||||||
|
REMOTE_DIR="$SERVERDIR_WEBSITE"
|
||||||
|
SSH_OPTIONS="-p $REMOTE_PORT"
|
||||||
|
|
||||||
|
# Array di cartelle e file da sincronizzare
|
||||||
|
SYNC_ITEMS=(
|
||||||
|
"css"
|
||||||
|
"docs"
|
||||||
|
"emails"
|
||||||
|
"plugins"
|
||||||
|
"admin_scripts"
|
||||||
|
"sass"
|
||||||
|
"src"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Sincronizzazione Cartelle su $REMOTE_DIR ..."
|
||||||
|
|
||||||
|
|
||||||
|
# Esegui rsync per le cartelle
|
||||||
|
rsync -avz --delete \
|
||||||
|
--exclude='src/server/router/upload/' \
|
||||||
|
-e "ssh $SSH_OPTIONS" \
|
||||||
|
"${SYNC_ITEMS[@]}" \
|
||||||
|
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file .env.production ... "
|
||||||
|
|
||||||
|
# Sincronizza i file specifici
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
.env.production "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file package.json ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
package.json "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/package.json"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file ecosystem.config.js ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
ecosystem.config.js "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js"
|
||||||
|
|
||||||
|
# Verifica il risultato
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Sincronizzazione completata con successo. SERVER PRODUZIONE! "
|
||||||
|
else
|
||||||
|
echo "Errore durante la sincronizzazione. Controlla l'output per i dettagli."
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -9,7 +9,7 @@ yarn
|
|||||||
|
|
||||||
### Start the app in development mode (hot-code reloading, error reporting, etc.)
|
### Start the app in development mode (hot-code reloading, error reporting, etc.)
|
||||||
```bash
|
```bash
|
||||||
node src/server/server.js
|
node src/server.js
|
||||||
```
|
```
|
||||||
|
|
||||||
### Creating the ambient test
|
### Creating the ambient test
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
db.myelems.insertMany([
|
db.myelems.insertMany([
|
||||||
{
|
{
|
||||||
"_id": ObjectId("669fbf9dc9d625d0628eb12f"),
|
"_id": new ObjectId("669fbf9dc9d625d0628eb12f"),
|
||||||
"order": 20,
|
"order": 20,
|
||||||
"active": true,
|
"active": true,
|
||||||
"type": 20,
|
"type": 20,
|
||||||
@@ -13,14 +13,14 @@ db.myelems.insertMany([
|
|||||||
"__v": 0,
|
"__v": 0,
|
||||||
"containerHtml": "<div style=\"text-align: center;\"><b><font size=\"4\">Abitare Gli Iblei</font></b></div>",
|
"containerHtml": "<div style=\"text-align: center;\"><b><font size=\"4\">Abitare Gli Iblei</font></b></div>",
|
||||||
"anim": {
|
"anim": {
|
||||||
"_id": ObjectId("66e456981e0719a1012121c0"),
|
"_id": new ObjectId("66e456981e0719a1012121c0"),
|
||||||
"name": "",
|
"name": "",
|
||||||
"clduration": "",
|
"clduration": "",
|
||||||
"cldelay": "",
|
"cldelay": "",
|
||||||
"timingtype": "ease-in-out"
|
"timingtype": "ease-in-out"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"_id": ObjectId("669fbfc3c9d625d0628eb131"),
|
"_id": new ObjectId("669fbfc3c9d625d0628eb131"),
|
||||||
"order": 100,
|
"order": 100,
|
||||||
"active": true,
|
"active": true,
|
||||||
"type": 145,
|
"type": 145,
|
||||||
@@ -32,7 +32,7 @@ db.myelems.insertMany([
|
|||||||
"list": [],
|
"list": [],
|
||||||
"__v": 0
|
"__v": 0
|
||||||
}, {
|
}, {
|
||||||
"_id": ObjectId("66db2a45054b3b09f85e6983"),
|
"_id": new ObjectId("66db2a45054b3b09f85e6983"),
|
||||||
"order": 26,
|
"order": 26,
|
||||||
"active": true,
|
"active": true,
|
||||||
"type": 35,
|
"type": 35,
|
||||||
@@ -45,7 +45,7 @@ db.myelems.insertMany([
|
|||||||
"__v": 0,
|
"__v": 0,
|
||||||
"image": "logo.jpg",
|
"image": "logo.jpg",
|
||||||
"anim": {
|
"anim": {
|
||||||
"_id": ObjectId("66db34215740efc77547a93a"),
|
"_id": new ObjectId("66db34215740efc77547a93a"),
|
||||||
"name": "",
|
"name": "",
|
||||||
"clduration": "",
|
"clduration": "",
|
||||||
"cldelay": "",
|
"cldelay": "",
|
||||||
@@ -55,7 +55,7 @@ db.myelems.insertMany([
|
|||||||
"align": 2
|
"align": 2
|
||||||
}
|
}
|
||||||
, {
|
, {
|
||||||
"_id": ObjectId("66db38a77e24f4509eef655b"),
|
"_id": new ObjectId("66db38a77e24f4509eef655b"),
|
||||||
"order": 26,
|
"order": 26,
|
||||||
"active": true,
|
"active": true,
|
||||||
"type": 20,
|
"type": 20,
|
||||||
@@ -66,9 +66,9 @@ db.myelems.insertMany([
|
|||||||
"listcards": [],
|
"listcards": [],
|
||||||
"list": [],
|
"list": [],
|
||||||
"__v": 0,
|
"__v": 0,
|
||||||
"containerHtml": "<style>\nbody {\n font-family: Arial, sans-serif;\n margin: 0;\n padding: 20px;\n background-color: #f0f0f0;\n color: #333;\n}\n\nh1 {\n color: #0056b3;\n text-align: center;\n}\n\n\np, li {\n line-height: 1.6;\n}\n\n\nul {\n list-style-type: none;\n padding: 0;\n}\n\n\nli {\n background-color: #fff !important;\n margin-bottom: 10px !important;\n padding: 10px !important;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important; \n}\n\n\na {\n color: #007bff;\n text-decoration: none;\n}\n\n\na:hover {\n text-decoration: underline;\n}\n\n\n.container {\n max-width: 800px;\n margin: 0 auto;\n background-color: #fff;\n padding: 20px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n}\n\n\n.strong {\n font-weight: bold;\n}\n</style>\n\n\n<p><strong>“Abitare gli Iblei”</strong> è una rete aperta che ha lo scopo di riunire tutte quelle persone che vogliono valorizzare e qualificare la vita nel territorio degli Iblei. </p>\n \n <p>Chi aderisce alla rete si riconosce in una <strong>Carta dei valori comuni</strong> e usa la rete per scambiare conoscenze, esperienze, risorse e prodotti sviluppati nell’ambito delle proprie iniziative (profit e non profit) individuali o collettive.</p>\n\n\n <p>L’area territoriale di questa rete è quella dei <strong>Monti Iblei orientali e occidentali</strong> (Noto, Avola, Canicattini, Siracusa, Palazzolo, Buccheri, Ferla, Modica, …).</p>\n\n\n <p>La rete <strong>“Abitare gli Iblei”</strong> offre i seguenti servizi utili per il territorio ed i suoi abitanti, frutto di una costruzione collettiva:</p>\n \n <ul>\n <li><strong>1. Mappa delle attività virtuose:</strong> permette di identificare attività pubbliche e private nel territorio che possono essere utili nella vita quotidiana. Queste attività possono riguardare artigiani, produttori o fornitori di servizi di cui almeno un membro della rete conosca la qualità e l’affidabilità (agricoltori, falegnami, fabbri, idraulici, imprese edili, strutture ricettive, …). Altre informazioni utili possono riguardare associazioni/istituzioni operanti in vari settori. – <strong>Accesso pubblico</strong></li>\n <li><strong>2. Calendario:</strong> permette di accedere ad annunci di eventi utili alla crescita culturale del territorio. La pubblicazione di eventi è riservata ai soli membri della rete che possono presentare iniziative anche di altri organizzatori. – <strong>Accesso pubblico</strong></li>\n <li><strong>3. Scambi di servizi, prodotti e ospitalità:</strong> questa funzione è riservata ai soli membri della rete e si realizza attraverso la Rete italiana di scambi orizzontali (RISO). – <strong>Accesso riservato</strong></li>\n <li><strong>4. Segnalazione di pericoli per il territorio:</strong> attraverso questa mappa è possibile segnalare incendi, immondizia abbandonata, discariche abusive, fonti di inquinamento per corsi d’acqua e spiagge, presenza di inquinamento nell’aria, … – <strong>Accesso riservato</strong></li>\n </ul>\n \n <p>Se vuoi aderire alla rete puoi richiederne la registrazione utilizzando questo Link <a href=\"#\"><strong>(Pagina in Costruzione)</strong></a>.</p>\n\n",
|
"containerHtml": "<style>\nbody {\n font-family: Arial, sans-serif;\n margin: 0;\n padding: 20px;\n background-color: #f0f0f0;\n color: #333;\n}\n\nh1 {\n color: #0056b3;\n text-align: center;\n}\n\n\np, li {\n line-height: 1.6;\n}\n\n\nul {\n list-style-type: none;\n padding: 0;\n}\n\n\nli {\n background-color: #fff !important;\n margin-bottom: 10px !important;\n padding: 10px !important;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important; \n}\n\n\na {\n color: #007bff;\n text-decoration: none;\n}\n\n\na:hover {\n text-decoration: underline;\n}\n\n\n.container {\n max-width: 800px;\n margin: 0 auto;\n background-color: #fff;\n padding: 20px;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n}\n\n\n.strong {\n font-weight: bold;\n}\n</style>\n\n\n<p><strong>“Abitare gli Iblei”</strong> è una rete aperta che ha lo scopo di riunire tutte quelle persone che vogliono valorizzare e qualificare la vita nel territorio degli Iblei. </p>\n \n <p>Chi aderisce alla rete si riconosce in una <strong>Carta dei valori comuni</strong> e usa la rete per scambiare conoscenze, esperienze, risorse e prodotti sviluppati nell’ambito delle proprie iniziative (profit e non profit) individuali o collettive.</p>\n\n\n <p>L’area territoriale di questa rete è quella dei <strong>Monti Iblei orientali e occidentali</strong> (Noto, Avola, Canicattini, Siracusa, Palazzolo, Buccheri, Ferla, Modica, …).</p>\n\n\n <p>La rete <strong>“Abitare gli Iblei”</strong> offre i seguenti servizi utili per il territorio ed i suoi abitanti, frutto di una costruzione collettiva:</p>\n \n <ul>\n <li><strong>1. Mappa delle attività virtuose:</strong> permette di identificare attività pubbliche e private nel territorio che possono essere utili nella vita quotidiana. Queste attività possono riguardare artigiani, produttori o fornitori di servizi di cui almeno un membro della rete conosca la qualità e l’affidabilità (agricoltori, falegnami, fabbri, idraulici, imprese edili, strutture ricettive, …). Altre informazioni utili possono riguardare associazioni/istituzioni operanti in vari settori. – <strong>Accesso pubblico</strong></li>\n <li><strong>2. Calendario:</strong> permette di accedere ad annunci di eventi utili alla crescita culturale del territorio. La pubblicazione di eventi è riservata ai soli membri della rete che possono presentare iniziative anche di altri organizzatori. – <strong>Accesso pubblico</strong></li>\n <li><strong>3. Scambi di servizi, prodotti e ospitalità:</strong> questa funzione è riservata ai soli membri della rete e si realizza attraverso la Rete Italiana scambio orizzontale (RISO). – <strong>Accesso riservato</strong></li>\n <li><strong>4. Segnalazione di pericoli per il territorio:</strong> attraverso questa mappa è possibile segnalare incendi, immondizia abbandonata, discariche abusive, fonti di inquinamento per corsi d’acqua e spiagge, presenza di inquinamento nell’aria, … – <strong>Accesso riservato</strong></li>\n </ul>\n \n <p>Se vuoi aderire alla rete puoi richiederne la registrazione utilizzando questo Link <a href=\"#\"><strong>(Pagina in Costruzione)</strong></a>.</p>\n\n",
|
||||||
"anim": {
|
"anim": {
|
||||||
"_id": ObjectId("66db393e3b885ccdfaed28d6"),
|
"_id": new ObjectId("66db393e3b885ccdfaed28d6"),
|
||||||
"name": "",
|
"name": "",
|
||||||
"clduration": "",
|
"clduration": "",
|
||||||
"cldelay": "",
|
"cldelay": "",
|
||||||
@@ -76,7 +76,7 @@ db.myelems.insertMany([
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
, {
|
, {
|
||||||
"_id": ObjectId("66e41cff78c8d880eebfbf1c"),
|
"_id": new ObjectId("66e41cff78c8d880eebfbf1c"),
|
||||||
"order": 32.5,
|
"order": 32.5,
|
||||||
"active": true,
|
"active": true,
|
||||||
"type": 20,
|
"type": 20,
|
||||||
@@ -89,7 +89,7 @@ db.myelems.insertMany([
|
|||||||
"__v": 0,
|
"__v": 0,
|
||||||
"containerHtml": "ORAAAA",
|
"containerHtml": "ORAAAA",
|
||||||
"anim": {
|
"anim": {
|
||||||
"_id": ObjectId("66e459421e0719a1012123ad"),
|
"_id": new ObjectId("66e459421e0719a1012123ad"),
|
||||||
"name": "",
|
"name": "",
|
||||||
"clduration": "",
|
"clduration": "",
|
||||||
"cldelay": "",
|
"cldelay": "",
|
||||||
@@ -98,7 +98,7 @@ db.myelems.insertMany([
|
|||||||
}
|
}
|
||||||
,
|
,
|
||||||
{
|
{
|
||||||
"_id": ObjectId("66e4270d78c8d880eebfbf24"),
|
"_id": new ObjectId("66e4270d78c8d880eebfbf24"),
|
||||||
"order": 40,
|
"order": 40,
|
||||||
"active": true,
|
"active": true,
|
||||||
"type": 20,
|
"type": 20,
|
||||||
@@ -111,14 +111,14 @@ db.myelems.insertMany([
|
|||||||
"__v": 0,
|
"__v": 0,
|
||||||
"containerHtml": "BBB",
|
"containerHtml": "BBB",
|
||||||
"anim": {
|
"anim": {
|
||||||
"_id": ObjectId("66e4568d1e0719a1012121a6"),
|
"_id": new ObjectId("66e4568d1e0719a1012121a6"),
|
||||||
"name": "",
|
"name": "",
|
||||||
"clduration": "",
|
"clduration": "",
|
||||||
"cldelay": "",
|
"cldelay": "",
|
||||||
"timingtype": "ease-in-out"
|
"timingtype": "ease-in-out"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"_id": ObjectId("66e45b0c78c8d880eebfbf45"),
|
"_id": new ObjectId("66e45b0c78c8d880eebfbf45"),
|
||||||
"order": 70,
|
"order": 70,
|
||||||
"active": true,
|
"active": true,
|
||||||
"type": 20,
|
"type": 20,
|
||||||
@@ -136,7 +136,7 @@ db.myelems.insertMany([
|
|||||||
db.sites.insert(
|
db.sites.insert(
|
||||||
/* 1 */
|
/* 1 */
|
||||||
{
|
{
|
||||||
"_id": ObjectId("669fbef7fc704b8912263af9"),
|
"_id": new ObjectId("669fbef7fc704b8912263af9"),
|
||||||
"confpages": {
|
"confpages": {
|
||||||
"font": "",
|
"font": "",
|
||||||
"col_toolbar": "",
|
"col_toolbar": "",
|
||||||
@@ -235,7 +235,7 @@ db.sites.insert(
|
|||||||
|
|
||||||
db.users.insert(
|
db.users.insert(
|
||||||
{
|
{
|
||||||
"_id": ObjectId("669fbef7c9d625d0628eb12d"),
|
"_id": new ObjectId("669fbef7c9d625d0628eb12d"),
|
||||||
"profile": {
|
"profile": {
|
||||||
"paymenttypes": [],
|
"paymenttypes": [],
|
||||||
"notif_idCities": [],
|
"notif_idCities": [],
|
||||||
@@ -343,7 +343,7 @@ db.users.insert(
|
|||||||
"tokens": [
|
"tokens": [
|
||||||
{
|
{
|
||||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI3NjIzNjY1fQ.6QaBaiE1pv7mDy7S8YUReqH8m0CCK7jTmd57eGHgnzE",
|
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI3NjIzNjY1fQ.6QaBaiE1pv7mDy7S8YUReqH8m0CCK7jTmd57eGHgnzE",
|
||||||
"_id": ObjectId("66e6fcf1ac95a84fd0e11b2c"),
|
"_id": new ObjectId("66e6fcf1ac95a84fd0e11b2c"),
|
||||||
"access": "auth",
|
"access": "auth",
|
||||||
"browser": "Mozilla/5.0 (Linux; Android 11; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.127 Mobile Safari/537.36",
|
"browser": "Mozilla/5.0 (Linux; Android 11; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.127 Mobile Safari/537.36",
|
||||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI2NDIxMjY1fQ.wCZcQ5uSQXnVgS_ZGyzjl6TOQk8rflfe2HSxSku0Aj4",
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI2NDIxMjY1fQ.wCZcQ5uSQXnVgS_ZGyzjl6TOQk8rflfe2HSxSku0Aj4",
|
||||||
@@ -351,7 +351,7 @@ db.users.insert(
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI3NjQwNTgwfQ.YdB5unWwaZ21kk87RRPolLGiWxf7bKX0piKd-bGQifU",
|
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI3NjQwNTgwfQ.YdB5unWwaZ21kk87RRPolLGiWxf7bKX0piKd-bGQifU",
|
||||||
"_id": ObjectId("66e73f04ac95a84fd0e122ae"),
|
"_id": new ObjectId("66e73f04ac95a84fd0e122ae"),
|
||||||
"access": "auth",
|
"access": "auth",
|
||||||
"browser": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36",
|
"browser": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36",
|
||||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI2NDM4MTgwfQ.TMF1UNbgw-EpGVWWDNnY3wRdLYOyp5HzAQiakpyaL_4",
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI2NDM4MTgwfQ.TMF1UNbgw-EpGVWWDNnY3wRdLYOyp5HzAQiakpyaL_4",
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ db.mygroups.insert(
|
|||||||
"photos": [],
|
"photos": [],
|
||||||
"admins": [
|
"admins": [
|
||||||
{
|
{
|
||||||
"_id": ObjectId("66e2e6276b502b07f1e89571"),
|
"_id": new ObjectId("66e2e6276b502b07f1e89571"),
|
||||||
"username": "paoloar77"
|
"username": "paoloar77"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
db.mypages.insertMany([
|
db.mypages.insertMany([
|
||||||
{
|
{
|
||||||
"_id": ObjectId("66db21118009ea4503bb6a01"),
|
"_id": new ObjectId("66db21118009ea4503bb6a01"),
|
||||||
"order": 10,
|
"order": 10,
|
||||||
"idapp": "19",
|
"idapp": "19",
|
||||||
"path": "home",
|
"path": "home",
|
||||||
@@ -8,15 +8,15 @@ db.mypages.insertMany([
|
|||||||
"title": "Home",
|
"title": "Home",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": ObjectId("66db21118009ea4503bb6a03"),
|
"_id": new ObjectId("66db21118009ea4503bb6a03"),
|
||||||
"order": 10,
|
"order": 10,
|
||||||
"idapp": "19",
|
"idapp": "19",
|
||||||
"path": "home_logout",
|
"path": "presentazione",
|
||||||
"active": true,
|
"active": true,
|
||||||
"title": "Home NoLoggato",
|
"title": "Presentazione",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": ObjectId("66e322dd5a6360e3b3c71c5a"),
|
"_id": new ObjectId("66e322dd5a6360e3b3c71c5a"),
|
||||||
"order": 40,
|
"order": 40,
|
||||||
"idapp": "19",
|
"idapp": "19",
|
||||||
"path": "presentazione",
|
"path": "presentazione",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
db.users.insertMany([
|
db.users.insertMany([
|
||||||
{
|
{
|
||||||
"_id": ObjectId("66db21115281b23462d496d2"),
|
"_id": new ObjectId("66db21115281b23462d496d2"),
|
||||||
"profile": {
|
"profile": {
|
||||||
"paymenttypes": [],
|
"paymenttypes": [],
|
||||||
"notif_idCities": [],
|
"notif_idCities": [],
|
||||||
@@ -66,7 +66,7 @@ db.users.insertMany([
|
|||||||
"tokens": [
|
"tokens": [
|
||||||
{
|
{
|
||||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZkYjIxMTE1MjgxYjIzNDYyZDQ5NmQyIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG9hcjc3IiwiaWF0IjoxNzI2NTEyODY1LCJleHAiOjE3Mjc3MjI0NjV9.EOvF89kswT1eqVJCSwVMMI-jB4kokP-aQVhi7xSUods",
|
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZkYjIxMTE1MjgxYjIzNDYyZDQ5NmQyIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG9hcjc3IiwiaWF0IjoxNzI2NTEyODY1LCJleHAiOjE3Mjc3MjI0NjV9.EOvF89kswT1eqVJCSwVMMI-jB4kokP-aQVhi7xSUods",
|
||||||
"_id": ObjectId("66e87ee1bbe2ce0f77adf6b8"),
|
"_id": new ObjectId("66e87ee1bbe2ce0f77adf6b8"),
|
||||||
"access": "auth",
|
"access": "auth",
|
||||||
"browser": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
|
"browser": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
|
||||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZkYjIxMTE1MjgxYjIzNDYyZDQ5NmQyIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG9hcjc3IiwiaWF0IjoxNzI2NTEyODY1LCJleHAiOjE3MjY1MjAwNjV9.ESvyTWmXhfAQ0i-wwjxZR1A1Y5Bwixb60uG_UcOPQ5Y",
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZkYjIxMTE1MjgxYjIzNDYyZDQ5NmQyIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG9hcjc3IiwiaWF0IjoxNzI2NTEyODY1LCJleHAiOjE3MjY1MjAwNjV9.ESvyTWmXhfAQ0i-wwjxZR1A1Y5Bwixb60uG_UcOPQ5Y",
|
||||||
@@ -90,7 +90,7 @@ db.users.insertMany([
|
|||||||
"useragent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
|
"useragent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": ObjectId("66e49515d18d313a144ead56"),
|
"_id": new ObjectId("66e49515d18d313a144ead56"),
|
||||||
"profile": {
|
"profile": {
|
||||||
"paymenttypes": [],
|
"paymenttypes": [],
|
||||||
"notif_idCities": [],
|
"notif_idCities": [],
|
||||||
@@ -164,7 +164,9 @@ db.users.insertMany([
|
|||||||
"stepTutorial": 0,
|
"stepTutorial": 0,
|
||||||
"noNameSurname": false,
|
"noNameSurname": false,
|
||||||
"noCircuit": false,
|
"noCircuit": false,
|
||||||
|
"noComune": false,
|
||||||
"noCircIta": false,
|
"noCircIta": false,
|
||||||
|
"insert_circuito_ita": false,
|
||||||
"noFoto": false,
|
"noFoto": false,
|
||||||
"resid_province": "",
|
"resid_province": "",
|
||||||
"resid_card": "",
|
"resid_card": "",
|
||||||
@@ -187,7 +189,7 @@ db.users.insertMany([
|
|||||||
"tokens": [
|
"tokens": [
|
||||||
{
|
{
|
||||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNDk1MTVkMThkMzEzYTE0NGVhZDU2IiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG90ZXN0IiwiaWF0IjoxNzI2MzQ3MzE1LCJleHAiOjE3Mjc1NTY5MTV9.NHnFUXOL0MbjRs9F6HrQsEBRGXG89AsBYP7jU9m8icY",
|
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNDk1MTVkMThkMzEzYTE0NGVhZDU2IiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG90ZXN0IiwiaWF0IjoxNzI2MzQ3MzE1LCJleHAiOjE3Mjc1NTY5MTV9.NHnFUXOL0MbjRs9F6HrQsEBRGXG89AsBYP7jU9m8icY",
|
||||||
"_id": ObjectId("66e5f83392c9540e18f89730"),
|
"_id": new ObjectId("66e5f83392c9540e18f89730"),
|
||||||
"access": "auth",
|
"access": "auth",
|
||||||
"browser": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
|
"browser": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
|
||||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNDk1MTVkMThkMzEzYTE0NGVhZDU2IiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG90ZXN0IiwiaWF0IjoxNzI2MzQ3MzE1LCJleHAiOjE3MjYzNTQ1MTV9.HTr1kNMhBU_38R2Tfy6m22XCbiRh5IsBKC3fl0ipIgM",
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNDk1MTVkMThkMzEzYTE0NGVhZDU2IiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG90ZXN0IiwiaWF0IjoxNzI2MzQ3MzE1LCJleHAiOjE3MjYzNTQ1MTV9.HTr1kNMhBU_38R2Tfy6m22XCbiRh5IsBKC3fl0ipIgM",
|
||||||
@@ -207,7 +209,7 @@ db.users.insertMany([
|
|||||||
"perm": 16
|
"perm": 16
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": ObjectId("66e6fb5aac95a84fd0e11881"),
|
"_id": new ObjectId("66e6fb5aac95a84fd0e11881"),
|
||||||
"profile": {
|
"profile": {
|
||||||
"paymenttypes": [],
|
"paymenttypes": [],
|
||||||
"notif_idCities": [],
|
"notif_idCities": [],
|
||||||
@@ -281,7 +283,9 @@ db.users.insertMany([
|
|||||||
"stepTutorial": 0,
|
"stepTutorial": 0,
|
||||||
"noNameSurname": false,
|
"noNameSurname": false,
|
||||||
"noCircuit": false,
|
"noCircuit": false,
|
||||||
|
"noComune": false,
|
||||||
"noCircIta": false,
|
"noCircIta": false,
|
||||||
|
"insert_circuito_ita": false,
|
||||||
"noFoto": false,
|
"noFoto": false,
|
||||||
"resid_province": "",
|
"resid_province": "",
|
||||||
"resid_card": "",
|
"resid_card": "",
|
||||||
@@ -304,7 +308,7 @@ db.users.insertMany([
|
|||||||
"tokens": [
|
"tokens": [
|
||||||
{
|
{
|
||||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI3NjIzNjY1fQ.6QaBaiE1pv7mDy7S8YUReqH8m0CCK7jTmd57eGHgnzE",
|
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI3NjIzNjY1fQ.6QaBaiE1pv7mDy7S8YUReqH8m0CCK7jTmd57eGHgnzE",
|
||||||
"_id": ObjectId("66e6fcf1ac95a84fd0e11b2c"),
|
"_id": new ObjectId("66e6fcf1ac95a84fd0e11b2c"),
|
||||||
"access": "auth",
|
"access": "auth",
|
||||||
"browser": "Mozilla/5.0 (Linux; Android 11; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.127 Mobile Safari/537.36",
|
"browser": "Mozilla/5.0 (Linux; Android 11; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.127 Mobile Safari/537.36",
|
||||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI2NDIxMjY1fQ.wCZcQ5uSQXnVgS_ZGyzjl6TOQk8rflfe2HSxSku0Aj4",
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI2NDIxMjY1fQ.wCZcQ5uSQXnVgS_ZGyzjl6TOQk8rflfe2HSxSku0Aj4",
|
||||||
@@ -312,7 +316,7 @@ db.users.insertMany([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI3NjQwNTgwfQ.YdB5unWwaZ21kk87RRPolLGiWxf7bKX0piKd-bGQifU",
|
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI3NjQwNTgwfQ.YdB5unWwaZ21kk87RRPolLGiWxf7bKX0piKd-bGQifU",
|
||||||
"_id": ObjectId("66e73f04ac95a84fd0e122ae"),
|
"_id": new ObjectId("66e73f04ac95a84fd0e122ae"),
|
||||||
"access": "auth",
|
"access": "auth",
|
||||||
"browser": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36",
|
"browser": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36",
|
||||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI2NDM4MTgwfQ.TMF1UNbgw-EpGVWWDNnY3wRdLYOyp5HzAQiakpyaL_4",
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI2NDM4MTgwfQ.TMF1UNbgw-EpGVWWDNnY3wRdLYOyp5HzAQiakpyaL_4",
|
||||||
|
|||||||
1
aggiornaserver.txt
Executable file
1
aggiornaserver.txt
Executable file
@@ -0,0 +1 @@
|
|||||||
|
Aggiornamento Server...
|
||||||
@@ -80,7 +80,8 @@ p {
|
|||||||
|
|
||||||
/* Whitespace (imageless spacer) */
|
/* Whitespace (imageless spacer) */
|
||||||
.whitespace {
|
.whitespace {
|
||||||
line-height: 0; }
|
line-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.firma {
|
.firma {
|
||||||
font-size: 0.75rem; }
|
font-size: 0.75rem; }
|
||||||
|
|||||||
@@ -13,6 +13,6 @@ fi
|
|||||||
|
|
||||||
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
||||||
echo "Sincronizzazione di 1 FILE in corso..."
|
echo "Sincronizzazione di 1 FILE in corso..."
|
||||||
rsync -avz -e 'ssh -p 8855' src/server/tools/general.js suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/src/server/tools/general.js
|
rsync -avz -e 'ssh -p 8855' src/server/tools/general.js suryapaolo@servereng:$SERVERDIR_WEBSITE/src/server/tools/general.js
|
||||||
echo "Sincronizzazione TERMINATA - SERVER PRODUZIONE!"
|
echo "Sincronizzazione TERMINATA - SERVER PRODUZIONE!"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source ./.env.prod.pcb
|
|
||||||
|
|
||||||
echo "Sincronizzazione in corso PCB PRODUZIONE ... $DIRECTORY_SERVER/"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Configurazione
|
|
||||||
REMOTE_USER="pcbuser"
|
|
||||||
REMOTE_HOST="pcb"
|
|
||||||
REMOTE_PORT="8822"
|
|
||||||
REMOTE_DIR="$DIRECTORY_SERVER"
|
|
||||||
SSH_OPTIONS="-p $REMOTE_PORT"
|
|
||||||
|
|
||||||
# Array di cartelle e file da sincronizzare
|
|
||||||
SYNC_ITEMS=(
|
|
||||||
"css"
|
|
||||||
"docs"
|
|
||||||
"emails"
|
|
||||||
"plugins"
|
|
||||||
"admin_scripts"
|
|
||||||
"sass"
|
|
||||||
"src"
|
|
||||||
)
|
|
||||||
|
|
||||||
echo $REMOTE_DIR
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "*** Copia Cartelle ... "
|
|
||||||
|
|
||||||
|
|
||||||
# Esegui rsync per le cartelle
|
|
||||||
rsync -avz --delete \
|
|
||||||
--exclude='src/server/router/upload/' \
|
|
||||||
-e "ssh $SSH_OPTIONS" \
|
|
||||||
"${SYNC_ITEMS[@]}" \
|
|
||||||
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "*** Copia del file .env.production ... "
|
|
||||||
|
|
||||||
# Sincronizza i file specifici
|
|
||||||
rsync -avz -e "ssh $SSH_OPTIONS" \
|
|
||||||
.env.prod.pcb "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/.env.production"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "*** Copia del file package.json ... "
|
|
||||||
rsync -avz -e "ssh $SSH_OPTIONS" \
|
|
||||||
package.json "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/package.json"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "*** Copia del file ecosystem.config.js ... "
|
|
||||||
rsync -avz -e "ssh $SSH_OPTIONS" \
|
|
||||||
ecosystem.config.pcb.js "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js"
|
|
||||||
|
|
||||||
# Verifica il risultato
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "Sincronizzazione completata con successo. SERVER PCB! "
|
|
||||||
else
|
|
||||||
echo "Errore durante la sincronizzazione. Controlla l'output per i dettagli."
|
|
||||||
fi
|
|
||||||
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source ./.env.test.pcb
|
|
||||||
|
|
||||||
echo "Sincronizzazione in corso PCB TEST ... $DIRECTORY_SERVER/"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Configurazione
|
|
||||||
REMOTE_USER="pcbuser"
|
|
||||||
REMOTE_HOST="pcb"
|
|
||||||
REMOTE_PORT="8822"
|
|
||||||
REMOTE_DIR="$DIRECTORY_SERVER"
|
|
||||||
SSH_OPTIONS="-p $REMOTE_PORT"
|
|
||||||
|
|
||||||
# Array di cartelle e file da sincronizzare
|
|
||||||
SYNC_ITEMS=(
|
|
||||||
"css"
|
|
||||||
"docs"
|
|
||||||
"emails"
|
|
||||||
"plugins"
|
|
||||||
"admin_scripts"
|
|
||||||
"sass"
|
|
||||||
"src"
|
|
||||||
)
|
|
||||||
|
|
||||||
echo $REMOTE_DIR
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "*** Copia Cartelle ... "
|
|
||||||
|
|
||||||
|
|
||||||
# Esegui rsync per le cartelle
|
|
||||||
rsync -avz --delete \
|
|
||||||
--exclude='src/server/router/upload/' \
|
|
||||||
-e "ssh $SSH_OPTIONS" \
|
|
||||||
"${SYNC_ITEMS[@]}" \
|
|
||||||
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "*** Copia del file .env.test ... "
|
|
||||||
|
|
||||||
# Sincronizza i file specifici
|
|
||||||
rsync -avz -e "ssh $SSH_OPTIONS" \
|
|
||||||
.env.test.pcb "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/.env.test"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "*** Copia del file package.json ... "
|
|
||||||
rsync -avz -e "ssh $SSH_OPTIONS" \
|
|
||||||
package.json "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/package.json"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "*** Copia del file ecosystem.config.testpcb.js in ecosystem.config.js ... "
|
|
||||||
rsync -avz -e "ssh $SSH_OPTIONS" \
|
|
||||||
ecosystem.config.testpcb.js "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js"
|
|
||||||
|
|
||||||
# Verifica il risultato
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "Sincronizzazione completata con successo. SERVER PCB TEST! "
|
|
||||||
else
|
|
||||||
echo "Errore durante la sincronizzazione. Controlla l'output per i dettagli."
|
|
||||||
fi
|
|
||||||
|
|
||||||
87
deploynode_pcb_prod.sh
Executable file
87
deploynode_pcb_prod.sh
Executable file
@@ -0,0 +1,87 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ./.env.prod.pcb
|
||||||
|
|
||||||
|
echo "Sincronizzazione in corso PCB PRODUZIONE ... $DIRECTORY_SERVER/"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
msg="*** SERVER DI PRODUZIONE PCB **** INVIARE GLI AGGIORNAMENTI ? (Y/N)"
|
||||||
|
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
read -p "$msg" risposta
|
||||||
|
else
|
||||||
|
echo $msg
|
||||||
|
risposta=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
||||||
|
|
||||||
|
echo "Sincronizzazione in corso PCB PRODUZIONE ... $DIRECTORY_SERVER/"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Configurazione
|
||||||
|
REMOTE_USER="pcbuser"
|
||||||
|
REMOTE_HOST="pcb"
|
||||||
|
REMOTE_PORT="8822"
|
||||||
|
REMOTE_DIR="$DIRECTORY_SERVER"
|
||||||
|
SSH_OPTIONS="-p $REMOTE_PORT"
|
||||||
|
|
||||||
|
CONFIG_JS="ecosystem.config.pcb_prod.js"
|
||||||
|
ENV_FILE=".env.prod.pcb"
|
||||||
|
ENV_OUT=".env.production"
|
||||||
|
|
||||||
|
# Array di cartelle e file da sincronizzare
|
||||||
|
SYNC_ITEMS=(
|
||||||
|
"css"
|
||||||
|
"docs"
|
||||||
|
"emails"
|
||||||
|
"plugins"
|
||||||
|
"admin_scripts"
|
||||||
|
"sass"
|
||||||
|
"src"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo $REMOTE_DIR
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia Cartelle ... "
|
||||||
|
|
||||||
|
|
||||||
|
# Esegui rsync per le cartelle
|
||||||
|
rsync -avz --delete \
|
||||||
|
--exclude='src/server/router/upload/' \
|
||||||
|
-e "ssh $SSH_OPTIONS" \
|
||||||
|
"${SYNC_ITEMS[@]}" \
|
||||||
|
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file .env.production ... "
|
||||||
|
|
||||||
|
# Sincronizza i file specifici
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
$ENV_FILE "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$ENV_OUT"
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file package.json ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
package.json "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/package.json"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file $CONFIG_JS in ecosystem.config.js ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
$CONFIG_JS "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file aggiornaserver.txt ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
aggiornaserver.txt "$REMOTE_USER@$REMOTE_HOST:/opt/scripts/aggiornaserver_pcb_prod.txt"
|
||||||
|
|
||||||
|
# Verifica il risultato
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Sincronizzazione completata con successo. SERVER PCB PRODUZIONE! "
|
||||||
|
else
|
||||||
|
echo "Errore durante la sincronizzazione. Controlla l'output per i dettagli."
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
87
deploynode_pcb_test.sh
Executable file
87
deploynode_pcb_test.sh
Executable file
@@ -0,0 +1,87 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ./.env.test.pcb
|
||||||
|
|
||||||
|
echo "Sincronizzazione in corso PCB TEST ... $DIRECTORY_SERVER/"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
msg="*** SERVER DI TEST PCB **** INVIARE GLI AGGIORNAMENTI ? (Y/N)"
|
||||||
|
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
read -p "$msg" risposta
|
||||||
|
else
|
||||||
|
echo $msg
|
||||||
|
risposta=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
||||||
|
|
||||||
|
echo "Sincronizzazione in corso PCB TEST ... $DIRECTORY_SERVER/"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Configurazione
|
||||||
|
REMOTE_USER="pcbuser"
|
||||||
|
REMOTE_HOST="pcb"
|
||||||
|
REMOTE_PORT="8822"
|
||||||
|
REMOTE_DIR="$DIRECTORY_SERVER"
|
||||||
|
SSH_OPTIONS="-p $REMOTE_PORT"
|
||||||
|
|
||||||
|
CONFIG_JS="ecosystem.config.pcb_test.js"
|
||||||
|
ENV_FILE=".env.test.pcb"
|
||||||
|
ENV_OUT=".env.test"
|
||||||
|
|
||||||
|
# Array di cartelle e file da sincronizzare
|
||||||
|
SYNC_ITEMS=(
|
||||||
|
"css"
|
||||||
|
"docs"
|
||||||
|
"emails"
|
||||||
|
"plugins"
|
||||||
|
"admin_scripts"
|
||||||
|
"sass"
|
||||||
|
"src"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo $REMOTE_DIR
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia Cartelle ... "
|
||||||
|
|
||||||
|
|
||||||
|
# Esegui rsync per le cartelle
|
||||||
|
rsync -avz --delete \
|
||||||
|
--exclude='src/server/router/upload/' \
|
||||||
|
-e "ssh $SSH_OPTIONS" \
|
||||||
|
"${SYNC_ITEMS[@]}" \
|
||||||
|
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file .env.test ... "
|
||||||
|
|
||||||
|
# Sincronizza i file specifici
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
$ENV_FILE "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$ENV_OUT"
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file package.json ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
package.json "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/package.json"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file $CONFIG_JS in ecosystem.config.js ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
$CONFIG_JS "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file aggiornaserver.txt ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
aggiornaserver.txt "$REMOTE_USER@$REMOTE_HOST:/opt/scripts/aggiornaserver_pcb_test.txt"
|
||||||
|
|
||||||
|
# Verifica il risultato
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Sincronizzazione completata con successo. SERVER PCB TEST! "
|
||||||
|
else
|
||||||
|
echo "Errore durante la sincronizzazione. Controlla l'output per i dettagli."
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
83
deploynode_riso_prod.sh
Executable file
83
deploynode_riso_prod.sh
Executable file
@@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ./.env.prod.riso
|
||||||
|
|
||||||
|
echo "Sincronizzazione in corso ... $DIRECTORY_SERVER/"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
msg="*** SERVER DI ### PRODUZIONE ### RISO **** INVIARE GLI AGGIORNAMENTI ? (Y/N)"
|
||||||
|
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
read -p "$msg" risposta
|
||||||
|
else
|
||||||
|
echo $msg
|
||||||
|
risposta=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
||||||
|
|
||||||
|
# Configurazione
|
||||||
|
REMOTE_USER="pcbuser"
|
||||||
|
REMOTE_HOST="pcb"
|
||||||
|
REMOTE_PORT="8822"
|
||||||
|
REMOTE_DIR="$DIRECTORY_SERVER"
|
||||||
|
SSH_OPTIONS="-p $REMOTE_PORT"
|
||||||
|
CONFIG_JS="ecosystem.config.riso_prod.js"
|
||||||
|
ENV_FILE=".env.prod.riso"
|
||||||
|
ENV_OUT=".env.production"
|
||||||
|
|
||||||
|
# Array di cartelle e file da sincronizzare
|
||||||
|
SYNC_ITEMS=(
|
||||||
|
"css"
|
||||||
|
"docs"
|
||||||
|
"emails"
|
||||||
|
"plugins"
|
||||||
|
"sass"
|
||||||
|
"admin_scripts"
|
||||||
|
"src"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo $REMOTE_DIR
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia Cartelle ... "
|
||||||
|
|
||||||
|
|
||||||
|
# Esegui rsync per le cartelle
|
||||||
|
rsync -avz --delete \
|
||||||
|
--exclude='src/server/router/upload/' \
|
||||||
|
-e "ssh $SSH_OPTIONS" \
|
||||||
|
"${SYNC_ITEMS[@]}" \
|
||||||
|
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file $ENV_FILE su $ENV_OUT ... "
|
||||||
|
|
||||||
|
# Sincronizza i file specifici
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
$ENV_FILE "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$ENV_OUT"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file package.json ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
package.json "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/package.json"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file ecosystem.config.js ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
"$CONFIG_JS" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file aggiornaserver.txt ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
aggiornaserver.txt "$REMOTE_USER@$REMOTE_HOST:/opt/scripts/aggiornaserver_riso_prod.txt"
|
||||||
|
|
||||||
|
|
||||||
|
# Verifica il risultato
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "✅ Sincronizzazione completata con successo. SERVER $REMOTE_DIR! "
|
||||||
|
else
|
||||||
|
echo "❌ Errore durante la sincronizzazione. Controlla l'output per i dettagli."
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
91
deploynode_riso_test.sh
Executable file
91
deploynode_riso_test.sh
Executable file
@@ -0,0 +1,91 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source ./.env.test.risosrv
|
||||||
|
|
||||||
|
echo "Sincronizzazione in corso ... $DIRECTORY_SERVER/"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
msg="*** SERVER DI ### TEST ### RISO **** INVIARE GLI AGGIORNAMENTI ? (Y/N)"
|
||||||
|
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
read -p "$msg" risposta
|
||||||
|
else
|
||||||
|
echo $msg
|
||||||
|
risposta=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
||||||
|
|
||||||
|
# Configurazione
|
||||||
|
REMOTE_USER="pcbuser"
|
||||||
|
REMOTE_HOST="pcb"
|
||||||
|
REMOTE_PORT="8822"
|
||||||
|
REMOTE_DIR="$DIRECTORY_SERVER"
|
||||||
|
SSH_OPTIONS="-p $REMOTE_PORT"
|
||||||
|
CONFIG_JS="ecosystem.config.riso_test.js"
|
||||||
|
ENV_FILE=".env.test.risosrv"
|
||||||
|
ENV_OUT=".env.test"
|
||||||
|
|
||||||
|
#ENV_FILE=".env.prod.pcb"
|
||||||
|
#ENV_OUT=".env.production"
|
||||||
|
|
||||||
|
# Array di cartelle e file da sincronizzare
|
||||||
|
SYNC_ITEMS=(
|
||||||
|
"css"
|
||||||
|
"docs"
|
||||||
|
"emails"
|
||||||
|
"plugins"
|
||||||
|
"sass"
|
||||||
|
"admin_scripts"
|
||||||
|
"src"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo $REMOTE_DIR
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia Cartelle ... "
|
||||||
|
|
||||||
|
|
||||||
|
# Esegui rsync per le cartelle
|
||||||
|
rsync -avz --delete \
|
||||||
|
--exclude='src/server/router/upload/' \
|
||||||
|
-e "ssh $SSH_OPTIONS" \
|
||||||
|
"${SYNC_ITEMS[@]}" \
|
||||||
|
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file $ENV_FILE su $ENV_OUT ... "
|
||||||
|
|
||||||
|
# Sincronizza i file specifici
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
$ENV_FILE "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$ENV_OUT"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file package.json ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
package.json "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/package.json"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file ecosystem.config.js ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
"$CONFIG_JS" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file $CONFIG_JS in ecosystem.config.js ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
$CONFIG_JS "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ecosystem.config.js"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "*** Copia del file aggiornaserver.txt ... "
|
||||||
|
rsync -avz -e "ssh $SSH_OPTIONS" \
|
||||||
|
aggiornaserver.txt "$REMOTE_USER@$REMOTE_HOST:/opt/scripts/aggiornaserver_riso_test.txt"
|
||||||
|
|
||||||
|
|
||||||
|
# Verifica il risultato
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Sincronizzazione completata con successo. SERVER $REMOTE_DIR! "
|
||||||
|
else
|
||||||
|
echo "Errore durante la sincronizzazione. Controlla l'output per i dettagli."
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source ./.env.test2
|
|
||||||
|
|
||||||
echo "Directory attuale: $PWD"
|
|
||||||
|
|
||||||
msg="*** SERVER DI TEST2 **** SEI SICURO DI INVIARE GLI AGGIORNAMENTI SERVERSIDE (NODE JS) - SUL SERVER $SERVERDIR_WEBSITE (Y/N) ? "
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
read -p "$msg" risposta
|
|
||||||
else
|
|
||||||
echo $msg
|
|
||||||
risposta=$1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
|
||||||
|
|
||||||
echo "Sincronizzazione in corso... $SERVERDIR_WEBSITE"
|
|
||||||
echo "Copiando .env.test2..."
|
|
||||||
rsync -avz -e 'ssh -p 8855' .env.test2 suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/.env.test
|
|
||||||
echo "Sincronizzazione in corso... src"
|
|
||||||
rsync -avz -e 'ssh -p 8855' -a --exclude 'src/router/upload' src suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/
|
|
||||||
rsync -avz -e 'ssh -p 8855' package.json suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/package.json
|
|
||||||
rsync -avz -e 'ssh -p 8855' css suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/
|
|
||||||
rsync -avz -e 'ssh -p 8855' docs suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/
|
|
||||||
rsync -avz -e 'ssh -p 8855' emails suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/
|
|
||||||
rsync -avz -e 'ssh -p 8855' images suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/
|
|
||||||
rsync -avz -e 'ssh -p 8855' plugins suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/
|
|
||||||
rsync -avz -e 'ssh -p 8855' sass suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/
|
|
||||||
|
|
||||||
echo "Sincronizzazione TERMINATA! - SERVER TEST2!"
|
|
||||||
fi
|
|
||||||
0
docs/aaa.js
Normal file
0
docs/aaa.js
Normal file
38
docs/aaa.json
Normal file
38
docs/aaa.json
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"id": "70606",
|
||||||
|
"title": "Grande Libro dell'Autosufficienza - 50 anni - Nuovo",
|
||||||
|
"description": "<em><strong>\"Il Grande Libro dell\u2019Autosufficienza\"<\/strong><\/em> di John Seymour \u00e8 un manuale completo che celebra 50 anni di pratiche di <strong>autosufficienza<\/strong> e <strong>sostenibilit\u00e0<\/strong>. Il libro offre insegnamenti pratici su come creare e gestire un <strong>orto biologico<\/strong>, raccogliere e conservare i raccolti, produrre <strong>energia rinnovabile<\/strong>, allevare animali e ridurre i rifiuti. Seymour ci guida passo passo in un viaggio verso una vita in armonia con la natura, promuovendo l\u2019indipendenza e la sostenibilit\u00e0. Un testo imprescindibile per chi desidera riscoprire le tradizioni agricole e applicarle per vivere in modo pi\u00f9 <strong>sostenibile<\/strong> e <strong>autonomo<\/strong>.\r\n<h2><strong>Con questo libro scoprirai<\/strong>:<\/h2>\r\n<ul>\r\n \t<li>Come <strong>coltivare un orto biologico<\/strong> e ottenere cibo sano.<\/li>\r\n \t<li>Le tecniche per <strong>conservare il raccolto<\/strong> e ottimizzare le risorse naturali.<\/li>\r\n \t<li>Come allevare animali per ottenere cibo e altri prodotti.<\/li>\r\n \t<li>Come produrre <strong>energia rinnovabile<\/strong> e ridurre l\u2019impatto ambientale.<\/li>\r\n \t<li>L\u2019arte di <strong>ridurre e riciclare<\/strong> rifiuti, promuovendo uno stile di vita pi\u00f9 sostenibile.<\/li>\r\n<\/ul>\r\n<h2><strong>Domande cruciali a cui <em>\"Il Grande Libro dell\u2019Autosufficienza\"<\/em> risponde<\/strong>:<\/h2>\r\n<ul>\r\n \t<li>Come posso vivere in modo <strong>autosufficiente<\/strong> e ridurre la mia dipendenza dalle risorse esterne?<\/li>\r\n \t<li>Quali sono le migliori tecniche per <strong>coltivare un orto biologico<\/strong> e garantire un raccolto abbondante?<\/li>\r\n \t<li>Come posso <strong>conservare il raccolto<\/strong> in modo naturale e duraturo?<\/li>\r\n \t<li>In che modo posso <strong>produrre energia rinnovabile<\/strong> a casa mia?<\/li>\r\n \t<li>Come posso vivere in <strong>armonia con la natura<\/strong> e promuovere la <strong>sostenibilit\u00e0<\/strong>?<\/li>\r\n<\/ul>\r\n<h2><strong>Questo libro \u00e8 dedicato a<\/strong>:<\/h2>\r\n<ul>\r\n \t<li>Lettori appassionati di <strong>giardinaggio<\/strong>, <strong>agricoltura biologica<\/strong> e vita rurale.<\/li>\r\n \t<li>Chiunque desideri adottare uno <strong>stile di vita sostenibile<\/strong> e autosufficiente.<\/li>\r\n \t<li><strong>Famiglie eco-consapevoli<\/strong> che vogliono ridurre il proprio impatto ambientale.<\/li>\r\n \t<li><strong>Amanti della natura<\/strong> e sostenitori delle <strong>energie rinnovabili<\/strong>.<\/li>\r\n<\/ul>\r\n<h2><strong>Contenuti chiave <em>\"Il Grande Libro dell\u2019Autosufficienza\"<\/em><\/strong>:<\/h2>\r\n<em>Il Grande Libro dell\u2019Autosufficienza<\/em> offre una panoramica completa di tutte le tecniche per vivere in modo <strong>autonomo<\/strong> e <strong>sostenibile<\/strong>. Attraverso 10 capitoli, il libro esplora vari aspetti dell\u2019autosufficienza, dalla coltivazione di ortaggi e frutti alla produzione di cibo dagli animali, fino alla gestione dell'energia e dei rifiuti. La guida si focalizza sul valore delle <strong>tradizioni agricole<\/strong>, sulla cura dell\u2019ambiente e sul benessere che deriva dal vivere in sintonia con la natura.\r\n\r\n ",
|
||||||
|
"link": "https:\/\/www.fioredellavita.it\/grande-libro-dellautosufficienza-50-anni\/?attribute_pa_versione=nuovo",
|
||||||
|
"image_link": "https:\/\/www.fioredellavita.it\/wp-content\/uploads\/2024\/09\/il-grande-libro-dell-autosufficienza-speciale-50-anni-copertina-web.jpg",
|
||||||
|
"price": "39,00",
|
||||||
|
"sale_price": "37,05",
|
||||||
|
"categories": "Informazione Libera",
|
||||||
|
"isbn": "",
|
||||||
|
"Autore": "John,Seymour",
|
||||||
|
"Editore": "Macro Edizioni",
|
||||||
|
"Tipologia": "Libri",
|
||||||
|
"Collezione": "Libri Informazione Libera,Informazione Libera",
|
||||||
|
"Quantita": "1821",
|
||||||
|
"Lunghezza": "",
|
||||||
|
"Stato": "publish",
|
||||||
|
"Pagine": "",
|
||||||
|
"Edizione": "",
|
||||||
|
"Traduzione": "",
|
||||||
|
"Versione": "Nuovo",
|
||||||
|
"StockStatus": "instock",
|
||||||
|
"downloadable": "no",
|
||||||
|
"img1": "https:\/\/www.fioredellavita.it\/wp-content\/uploads\/2024\/09\/quarta_nuovo_grande_libro_dell_autosufficienza_2024_17038.jpg",
|
||||||
|
"img2": "",
|
||||||
|
"img3": "",
|
||||||
|
"formato": "Cartonato",
|
||||||
|
"preOrderDate": "2025-02-25",
|
||||||
|
"short_descr": null,
|
||||||
|
"availability": "in stock",
|
||||||
|
"checkout_link": "https:\/\/www.fioredellavita.it\/carrello\/?productId=70606",
|
||||||
|
"seo_descr": "Versione: Nuovo",
|
||||||
|
"preord": "no",
|
||||||
|
"addtocart_link": "https:\/\/www.fioredellavita.it\/grande-libro-dellautosufficienza-50-anni\/?attribute_pa_versione=nuovo&variation_id=70606&add-to-cart=70606",
|
||||||
|
"eta": "",
|
||||||
|
"misure": "cm 22x28",
|
||||||
|
"sku": "22464"
|
||||||
|
},
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
Define MIODOMINIO riso.app
|
||||||
|
Define MIODOMINIO_COMPLETO test.riso.app
|
||||||
|
Define MIOURL_API testapi.riso.app
|
||||||
|
Define PORTA 3005
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<VirtualHost 65.108.222.97:80>
|
||||||
|
ServerName ${MIODOMINIO_COMPLETO}
|
||||||
|
RewriteEngine On
|
||||||
|
|
||||||
|
# Forza la connessione HTTPS
|
||||||
|
RewriteCond %{HTTPS} off
|
||||||
|
RewriteRule ^ https://${MIODOMINIO_COMPLETO}%{REQUEST_URI} [L,R=301]
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
<VirtualHost 65.108.222.97:443>
|
||||||
|
ServerName ${MIODOMINIO_COMPLETO}
|
||||||
|
DocumentRoot /var/www/${MIODOMINIO_COMPLETO}
|
||||||
|
ServerAdmin surya@riso.app
|
||||||
|
SSLEngine On
|
||||||
|
SSLProtocol -ALL +TLSv1.2
|
||||||
|
SSLCompression Off
|
||||||
|
SSLHonorCipherOrder off
|
||||||
|
SSLCipherSuite ECDH+AESGCM:ECDH+AES256:!aNULL:!MD5:!DSS:!DH:!AES128
|
||||||
|
SSLVerifyDepth 10
|
||||||
|
SSLCertificateFile /etc/letsencrypt/live/${MIODOMINIO}/cert.pem
|
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/${MIODOMINIO}/privkey.pem
|
||||||
|
<Directory /var/www/${MIODOMINIO_COMPLETO}/>
|
||||||
|
CGIPassAuth On
|
||||||
|
Require all granted
|
||||||
|
AllowOverride All
|
||||||
|
</Directory>
|
||||||
|
LogLevel warn
|
||||||
|
ErrorLog "/var/www/${MIODOMINIO_COMPLETO}/logs/error.log"
|
||||||
|
CustomLog "/var/www/${MIODOMINIO_COMPLETO}/logs/access.log" combined
|
||||||
|
</VirtualHost>
|
||||||
36
docs/apache2/contatti.htm
Normal file
36
docs/apache2/contatti.htm
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<!-- wp:themify-builder/canvas /-->
|
||||||
|
|
||||||
|
<!--themify_builder_static-->
|
||||||
|
<h3>Contattaci</h3>
|
||||||
|
<p><strong>Hai domande, consigli o suggerimenti da proporci?</strong><br />Inviaci un messaggio attraverso il form qui
|
||||||
|
sotto!</p>
|
||||||
|
<form action="https://www.fioredellavita.it/wp-admin/admin-ajax.php" class="builder-contact" id="tb_th9k520-form"
|
||||||
|
method="post" data-post-id="0" data-element-id="th9k520" data-orig-id=""> <label for="field_extra_tb_th9k520_0">
|
||||||
|
Invia a: <input type="hidden" name="field_extra_name_0" value="Invia a:"> * </label> <select
|
||||||
|
id="field_extra_tb_th9k520_0" name="field_extra_0" required>
|
||||||
|
<option value="Seleziona destinatario"> Seleziona destinatario </option>
|
||||||
|
<option value="ordiniweb@gruppomacro.com"> ordiniweb@gruppomacro.com </option>
|
||||||
|
</select> <label for="tb_th9k520-contact-subject">Oggetto richiesta: *</label> <input type="text"
|
||||||
|
name="contact-subject" placeholder="" id="tb_th9k520-contact-subject" value="" required> <label
|
||||||
|
for="tb_th9k520-contact-name">Nome *</label> <input type="text" name="contact-name" placeholder=""
|
||||||
|
id="tb_th9k520-contact-name" value="" required> <label for="field_extra_tb_th9k520_1"> Cognome <input
|
||||||
|
type="hidden" name="field_extra_name_1" value="Cognome"> * </label> <input type="text" name="field_extra_1"
|
||||||
|
id="field_extra_tb_th9k520_1" placeholder="" required> <label for="tb_th9k520-contact-email">E-mail *</label>
|
||||||
|
<input type="text" name="contact-email" placeholder="" id="tb_th9k520-contact-email" value="" required> <label
|
||||||
|
for="field_extra_tb_th9k520_2"> Telefono <input type="hidden" name="field_extra_name_2" value="Telefono">
|
||||||
|
</label> <input type="tel" name="field_extra_2" id="field_extra_tb_th9k520_2" placeholder=""> <label
|
||||||
|
for="tb_th9k520-contact-message">Descrivi la tua richiesta: </label> <textarea name="contact-message"
|
||||||
|
placeholder="" id="tb_th9k520-contact-message"></textarea> <label> <input type="checkbox" name="gdpr" value="1"
|
||||||
|
required> Ho letto l'Informativa sulla privacy nella pagina <a href="/contatti"> Privacy Policy</a> del Sito
|
||||||
|
e acconsento al trattamento dei dati inseriti. * </label> <label> Verifica antispam * </label> <button
|
||||||
|
type="submit">Invia</button> </form>
|
||||||
|
<h3>Dove siamo</h3>
|
||||||
|
<p><strong>Macro Società Cooperativa srl</strong><br />Via Giardino, 30 – 47522 – Cesena (FC)</p>
|
||||||
|
<p>Fai click sulla mappa (OpenStreetMap) per trovare il percorso dal tuo indirizzo.</p>
|
||||||
|
<a
|
||||||
|
href="https://www.openstreetmap.org/search?query=Via%20Giardino%2C%2030%20%E2%80%93%2047522%20%E2%80%93%20Cesena%20(FC)#map=16/44.1525/12.2062">
|
||||||
|
<img decoding="async" loading="lazy" width="500" height="499"
|
||||||
|
src="https://www.fioredellavita.it/wp-content/uploads/2022/10/mappa-macro.jpg" title="mappa-macro"
|
||||||
|
alt="mappa-macro"
|
||||||
|
srcset="https://www.fioredellavita.it/wp-content/uploads/2022/10/mappa-macro.jpg 500w, https://www.fioredellavita.it/wp-content/uploads/2022/10/mappa-macro-300x300.jpg 300w, https://www.fioredellavita.it/wp-content/uploads/2022/10/mappa-macro-150x150.jpg 150w, https://www.fioredellavita.it/wp-content/uploads/2022/10/mappa-macro-320x319.jpg 320w, https://www.fioredellavita.it/wp-content/uploads/2022/10/mappa-macro-100x100.jpg 100w, https://www.fioredellavita.it/wp-content/uploads/2022/10/mappa-macro-50x50.jpg 50w"
|
||||||
|
sizes="(max-width: 500px) 100vw, 500px" /> </a><!--/themify_builder_static-->
|
||||||
11
docs/apache2/sites-available/000-default-ssl.conf
Normal file
11
docs/apache2/sites-available/000-default-ssl.conf
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<VirtualHost *:443>
|
||||||
|
ServerName _default_
|
||||||
|
SSLEngine on
|
||||||
|
SSLCertificateFile /etc/letsencrypt/live/riso.app/fullchain.pem
|
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/riso.app/privkey.pem
|
||||||
|
Include /etc/letsencrypt/options-ssl-apache.conf
|
||||||
|
Protocols h2 http/1.1
|
||||||
|
|
||||||
|
# Puoi anche fare un 403:
|
||||||
|
Redirect 403 /
|
||||||
|
</VirtualHost>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
Define MIODOMINIO riso.app
|
||||||
|
Define MIODOMINIO_COMPLETO riso.app
|
||||||
|
Define MIOURL_API api.riso.app
|
||||||
|
Define PORTA 3006
|
||||||
3
docs/apache2/sites-available/websites_ssl.riso.app.conf
Normal file
3
docs/apache2/sites-available/websites_ssl.riso.app.conf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Include /etc/apache2/sites-available/dominioinclude.riso.app.conf
|
||||||
|
|
||||||
|
Include /etc/apache2/sites-available/websites_ssl_virtualhost.conf
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
Include /etc/apache2/sites-available/dominioinclude_test.riso.app.conf
|
||||||
|
|
||||||
|
Include /etc/apache2/sites-available/websites_ssl_virtualhost_sottodomini.conf
|
||||||
@@ -1,30 +1,94 @@
|
|||||||
<VirtualHost 65.108.222.97:80>
|
# ==================== APEX (SITO) ====================
|
||||||
ServerName ${MIODOMINIO_COMPLETO}
|
# HTTP -> HTTPS
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName ${MIODOMINIO}
|
||||||
|
ServerAlias www.${MIODOMINIO}
|
||||||
|
|
||||||
RewriteEngine On
|
RewriteEngine On
|
||||||
|
RewriteRule ^ https://${MIODOMINIO}%{REQUEST_URI} [R=301,L]
|
||||||
|
|
||||||
# Forza la connessione HTTPS
|
ErrorLog /var/log/apache2/${MIODOMINIO}-error.log
|
||||||
RewriteCond %{HTTPS} off
|
CustomLog /var/log/apache2/${MIODOMINIO}-access.log combined
|
||||||
RewriteRule ^ https://${MIODOMINIO_COMPLETO}%{REQUEST_URI} [L,R=301]
|
|
||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
|
|
||||||
<VirtualHost 65.108.222.97:443>
|
# HTTPS (servizio sito - NO proxy qui)
|
||||||
ServerName ${MIODOMINIO_COMPLETO}
|
<VirtualHost *:443>
|
||||||
|
ServerName ${MIODOMINIO}
|
||||||
|
ServerAlias www.${MIODOMINIO}
|
||||||
|
|
||||||
DocumentRoot /var/www/${MIODOMINIO_COMPLETO}
|
DocumentRoot /var/www/${MIODOMINIO_COMPLETO}
|
||||||
ServerAdmin surya@riso.app
|
|
||||||
SSLEngine On
|
SSLEngine on
|
||||||
SSLProtocol -ALL +TLSv1.2
|
SSLCertificateFile /etc/letsencrypt/live/${MIODOMINIO}/fullchain.pem
|
||||||
SSLCompression Off
|
|
||||||
SSLHonorCipherOrder off
|
|
||||||
SSLCipherSuite ECDH+AESGCM:ECDH+AES256:!aNULL:!MD5:!DSS:!DH:!AES128
|
|
||||||
SSLVerifyDepth 10
|
|
||||||
SSLCertificateFile /etc/letsencrypt/live/${MIODOMINIO}/cert.pem
|
|
||||||
SSLCertificateKeyFile /etc/letsencrypt/live/${MIODOMINIO}/privkey.pem
|
SSLCertificateKeyFile /etc/letsencrypt/live/${MIODOMINIO}/privkey.pem
|
||||||
<Directory /var/www/${MIODOMINIO_COMPLETO}/>
|
Include /etc/letsencrypt/options-ssl-apache.conf
|
||||||
CGIPassAuth On
|
Protocols h2 http/1.1
|
||||||
Require all granted
|
|
||||||
|
<Directory "/var/www/${MIODOMINIO_COMPLETO}">
|
||||||
|
Options Indexes FollowSymLinks
|
||||||
AllowOverride All
|
AllowOverride All
|
||||||
|
Require all granted
|
||||||
</Directory>
|
</Directory>
|
||||||
LogLevel warn
|
|
||||||
ErrorLog "/var/www/${MIODOMINIO_COMPLETO}/logs/error.log"
|
DirectoryIndex index.html
|
||||||
CustomLog "/var/www/${MIODOMINIO_COMPLETO}/logs/access.log" combined
|
|
||||||
|
# (Opzionale per SPA Quasar/Vue)
|
||||||
|
# RewriteEngine On
|
||||||
|
# RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
# RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
# RewriteRule ^ /index.html [L]
|
||||||
|
|
||||||
|
ErrorLog /var/log/apache2/${MIODOMINIO}-error.log
|
||||||
|
CustomLog /var/log/apache2/${MIODOMINIO}-access.log combined
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
|
||||||
|
# ==================== API ====================
|
||||||
|
# HTTP -> HTTPS
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName ${MIOURL_API}
|
||||||
|
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteRule ^ https://${MIOURL_API}%{REQUEST_URI} [R=301,L]
|
||||||
|
|
||||||
|
ErrorLog /var/log/apache2/${MIOURL_API}-error.log
|
||||||
|
CustomLog /var/log/apache2/${MIOURL_API}-access.log combined
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
# HTTPS (proxy verso backend)
|
||||||
|
<VirtualHost *:443>
|
||||||
|
ServerName ${MIOURL_API}
|
||||||
|
ServerAdmin surya@riso.app
|
||||||
|
|
||||||
|
SSLEngine on
|
||||||
|
SSLCertificateFile /etc/letsencrypt/live/${MIODOMINIO}/fullchain.pem
|
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/${MIODOMINIO}/privkey.pem
|
||||||
|
Include /etc/letsencrypt/options-ssl-apache.conf
|
||||||
|
Protocols h2 http/1.1
|
||||||
|
|
||||||
|
ProxyPreserveHost On
|
||||||
|
|
||||||
|
# ===== SCEGLI UNO DEI DUE BLOCCHI, in base al TUO backend su ${PORTA} =====
|
||||||
|
# --- Backend HTTP (più comune) ---
|
||||||
|
# ProxyPass / http://127.0.0.1:${PORTA}/ retry=0 timeout=310 connectiontimeout=30
|
||||||
|
# ProxyPassReverse / http://127.0.0.1:${PORTA}/
|
||||||
|
|
||||||
|
# --- Backend HTTPS (nel tuo caso probabile, visto l’“Empty reply” via HTTP) ---
|
||||||
|
SSLProxyEngine On
|
||||||
|
SSLProxyVerify none
|
||||||
|
SSLProxyCheckPeerName off
|
||||||
|
ProxyPass / https://127.0.0.1:${PORTA}/ retry=0 timeout=310 connectiontimeout=30
|
||||||
|
ProxyPassReverse / https://127.0.0.1:${PORTA}/
|
||||||
|
# ==========================================================================
|
||||||
|
|
||||||
|
<Proxy *>
|
||||||
|
Require all granted
|
||||||
|
</Proxy>
|
||||||
|
|
||||||
|
ProxyTimeout 310
|
||||||
|
Timeout 310
|
||||||
|
ProxyBadHeader Ignore
|
||||||
|
|
||||||
|
ErrorLog /var/log/apache2/${MIOURL_API}-error.log
|
||||||
|
CustomLog /var/log/apache2/${MIOURL_API}-access.log combined
|
||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
# ==================== APEX (SITO) ====================
|
||||||
|
# HTTP -> HTTPS
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName ${MIODOMINIO_COMPLETO}
|
||||||
|
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteRule ^ https://${MIODOMINIO_COMPLETO}%{REQUEST_URI} [R=301,L]
|
||||||
|
|
||||||
|
ErrorLog /var/log/apache2/${MIODOMINIO_COMPLETO}-error.log
|
||||||
|
CustomLog /var/log/apache2/${MIODOMINIO_COMPLETO}-access.log combined
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
# HTTPS (servizio sito - NO proxy qui)
|
||||||
|
<VirtualHost *:443>
|
||||||
|
ServerName ${MIODOMINIO_COMPLETO}
|
||||||
|
|
||||||
|
DocumentRoot /var/www/${MIODOMINIO_COMPLETO}
|
||||||
|
|
||||||
|
SSLEngine on
|
||||||
|
SSLCertificateFile /etc/letsencrypt/live/${MIODOMINIO}/fullchain.pem
|
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/${MIODOMINIO}/privkey.pem
|
||||||
|
Include /etc/letsencrypt/options-ssl-apache.conf
|
||||||
|
Protocols h2 http/1.1
|
||||||
|
|
||||||
|
<Directory "/var/www/${MIODOMINIO_COMPLETO}">
|
||||||
|
Options Indexes FollowSymLinks
|
||||||
|
AllowOverride All
|
||||||
|
Require all granted
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
DirectoryIndex index.html
|
||||||
|
|
||||||
|
# (Opzionale per SPA Quasar/Vue)
|
||||||
|
# RewriteEngine On
|
||||||
|
# RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
# RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
# RewriteRule ^ /index.html [L]
|
||||||
|
|
||||||
|
ErrorLog /var/log/apache2/${MIODOMINIO_COMPLETO}-error.log
|
||||||
|
CustomLog /var/log/apache2/${MIODOMINIO_COMPLETO}-access.log combined
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
|
||||||
|
# ==================== API ====================
|
||||||
|
# HTTP -> HTTPS
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName ${MIOURL_API}
|
||||||
|
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteRule ^ https://${MIOURL_API}%{REQUEST_URI} [R=301,L]
|
||||||
|
|
||||||
|
ErrorLog /var/log/apache2/${MIOURL_API}-error.log
|
||||||
|
CustomLog /var/log/apache2/${MIOURL_API}-access.log combined
|
||||||
|
</VirtualHost>
|
||||||
|
|
||||||
|
# HTTPS (proxy verso backend)
|
||||||
|
<VirtualHost *:443>
|
||||||
|
ServerName ${MIOURL_API}
|
||||||
|
ServerAdmin surya@riso.app
|
||||||
|
|
||||||
|
SSLEngine on
|
||||||
|
SSLCertificateFile /etc/letsencrypt/live/${MIODOMINIO}/fullchain.pem
|
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/${MIODOMINIO}/privkey.pem
|
||||||
|
Include /etc/letsencrypt/options-ssl-apache.conf
|
||||||
|
Protocols h2 http/1.1
|
||||||
|
|
||||||
|
ProxyPreserveHost On
|
||||||
|
|
||||||
|
# ===== SCEGLI UNO DEI DUE BLOCCHI, in base al TUO backend su ${PORTA} =====
|
||||||
|
# --- Backend HTTP (più comune) ---
|
||||||
|
# ProxyPass / http://127.0.0.1:${PORTA}/ retry=0 timeout=310 connectiontimeout=30
|
||||||
|
# ProxyPassReverse / http://127.0.0.1:${PORTA}/
|
||||||
|
|
||||||
|
# --- Backend HTTPS (nel tuo caso probabile, visto l’“Empty reply” via HTTP) ---
|
||||||
|
SSLProxyEngine On
|
||||||
|
SSLProxyVerify none
|
||||||
|
SSLProxyCheckPeerName off
|
||||||
|
ProxyPass / https://127.0.0.1:${PORTA}/ retry=0 timeout=310 connectiontimeout=30
|
||||||
|
ProxyPassReverse / https://127.0.0.1:${PORTA}/
|
||||||
|
# ==========================================================================
|
||||||
|
|
||||||
|
<Proxy *>
|
||||||
|
Require all granted
|
||||||
|
</Proxy>
|
||||||
|
|
||||||
|
ProxyTimeout 310
|
||||||
|
Timeout 310
|
||||||
|
ProxyBadHeader Ignore
|
||||||
|
|
||||||
|
ErrorLog /var/log/apache2/${MIOURL_API}-error.log
|
||||||
|
CustomLog /var/log/apache2/${MIOURL_API}-access.log combined
|
||||||
|
</VirtualHost>
|
||||||
429
docs/libro1.htm
Normal file
429
docs/libro1.htm
Normal file
@@ -0,0 +1,429 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- saved from url=(0067)http://vps-88271abb.vps.ovh.net/apimacro/public/mylinkspao?id=22467 -->
|
||||||
|
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Link Page</title>
|
||||||
|
<style>
|
||||||
|
#loading {
|
||||||
|
display: none;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
border: 5px solid #f3f3f3;
|
||||||
|
border-top: 5px solid #3498db;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 1s linear infinite;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>Links</h1>
|
||||||
|
<form id="articleForm">
|
||||||
|
<pre> Per vedere la lista -> "LIBRI IN PREVENDITA"
|
||||||
|
in <span style="color: green;">VERDE</span> quelli in PreOrdine
|
||||||
|
in <span style="color: red;">ROSSO</span> quelli ancora non abilitati.
|
||||||
|
cliccare sul link <span style="font-weight: bold;">Imposta in PREORDINE"</span> per abilitarlo.
|
||||||
|
</pre>
|
||||||
|
<label for="article_id">ID Articolo or Ordine:</label>
|
||||||
|
<input type="text" id="article_id" name="id" value="22467">
|
||||||
|
<input type="text" id="action" name="action" value="" hidden="">
|
||||||
|
<br>
|
||||||
|
<button type="button" data-action="search">Cerca Articolo</button>
|
||||||
|
<button type="button" data-action="search_isbn">Cerca ISBN</button>
|
||||||
|
<button type="button" data-action="updateArtFromGM">Aggiorna Articolo da GM</button>
|
||||||
|
<button type="button" data-action="checkPrevendita">E' in PreVendita?</button>
|
||||||
|
<button type="button" data-action="setPreOrder">Impostalo in PreVendita!</button>
|
||||||
|
<button type="button" data-action="setDataPubblicazione">Aggiorna Data Pubblicazione</button>
|
||||||
|
<button type="button" data-action="showDettSingleOrdine">Dett. Ordine</button>
|
||||||
|
<button type="button" data-action="showDettSingleOrdineWeb">Dett. Ordine Web</button>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<button type="button" data-action="showTest">Test</button>
|
||||||
|
<button type="button" data-action="inprevendita">Libri in Prevendita</button>
|
||||||
|
<button type="button" data-action="cartolibri">Cartolibri</button>
|
||||||
|
<button type="button" data-action="riviste">Riviste</button>
|
||||||
|
<button type="button" data-action="showOrdini">Mostra Ordini</button>
|
||||||
|
<button type="button" data-action="showOrdiniWeb">Mostra Ordini Web</button>
|
||||||
|
<button type="button" data-action="showArticoliFatturatiWeb">Mostra Fatturati</button>
|
||||||
|
<button type="button" data-action="Vendite">Vendite</button>
|
||||||
|
|
||||||
|
<button type="button" data-action="showDettOrdini">Dettaglio Ordini</button>
|
||||||
|
<button type="button" data-action="showDettOrdiniWeb">Dettaglio Ordini Web</button>
|
||||||
|
</form>
|
||||||
|
<div>
|
||||||
|
<a href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-articles-sales" target="_blank">Vedi Articoli Venduti e Fatturati</a> - <a href="http://vps-88271abb.vps.ovh.net/apimacro/public/export-articles-sales-json" target="_blank">(Esporta)</a><br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="result">Articles di 22467 :
|
||||||
|
<pre>[
|
||||||
|
{
|
||||||
|
"Id": "258787",
|
||||||
|
"IdArticolo": "22467",
|
||||||
|
"Ean13": "9788828510147",
|
||||||
|
"Titolo": "Le Stelle Cadranno dal Cielo?",
|
||||||
|
"ListaAutori": "17",
|
||||||
|
"ListaArgomenti": "9",
|
||||||
|
"IdStatoProdotto": "34",
|
||||||
|
"PrezzoIvato": "24.9000",
|
||||||
|
"IdMarchioEditoriale": "1",
|
||||||
|
"IdCollana": "73",
|
||||||
|
"DataPubblicazione": "2025-01-14 00:00:00.000",
|
||||||
|
"IdTipologia": "1",
|
||||||
|
"IdTipoFormato": "1",
|
||||||
|
"Misure": "cm 13,5x20,5",
|
||||||
|
"Pagine": "192",
|
||||||
|
"Sottotitolo": "Non \u00e8 una catastrofe ma la Rivelazione dell'Universo reale",
|
||||||
|
"Durata": "",
|
||||||
|
"Numero": "",
|
||||||
|
"Edizione": "Dicembre 2024",
|
||||||
|
"Ristampa": "",
|
||||||
|
"DataInizioCampagna": "2024-11-07 00:00:00.000",
|
||||||
|
"DataFineCampagna": "2099-12-31 00:00:00.000",
|
||||||
|
"ScontoCampagna": "5.00",
|
||||||
|
"PrezzoIvatoScontatoCampagna": "23.6550",
|
||||||
|
"DataOra": "2024-12-19 09:24:01.593",
|
||||||
|
"Enabled": "0",
|
||||||
|
"IDTagGruppo": "0",
|
||||||
|
"Utente": "FLANZA-NOTE",
|
||||||
|
"PercIva": ".00",
|
||||||
|
"IdTitoloOriginale": "13415",
|
||||||
|
"EnabledAlFresco": "1",
|
||||||
|
"CodEdizione": "16",
|
||||||
|
"FasciaEta": null,
|
||||||
|
"FasciaEta2": null,
|
||||||
|
"data": "2024-12-19 09:24:01.593",
|
||||||
|
"DescrizioneStatoProdotto": "In prevendita",
|
||||||
|
"Codice": "22467",
|
||||||
|
"QtaDisponibile": "-6"
|
||||||
|
}
|
||||||
|
]</pre>Product:
|
||||||
|
<pre>{
|
||||||
|
"id": 74617,
|
||||||
|
"name": "Le stelle cadranno dal cielo? - Nuovo",
|
||||||
|
"slug": "le-stelle-cadranno-dal-cielo-nuovo",
|
||||||
|
"permalink": "https:\/\/www.fioredellavita.it\/le-stelle-cadranno-dal-cielo\/?attribute_pa_versione=nuovo",
|
||||||
|
"date_created": "2024-12-19T15:26:11",
|
||||||
|
"date_created_gmt": "2024-12-19T14:26:11",
|
||||||
|
"date_modified": "2024-12-20T13:02:31",
|
||||||
|
"date_modified_gmt": "2024-12-20T12:02:31",
|
||||||
|
"type": "variation",
|
||||||
|
"status": "publish",
|
||||||
|
"featured": false,
|
||||||
|
"catalog_visibility": "visible",
|
||||||
|
"description": "",
|
||||||
|
"short_description": "",
|
||||||
|
"sku": "22467",
|
||||||
|
"price": "23.6550",
|
||||||
|
"regular_price": "24.9000",
|
||||||
|
"sale_price": "23.6550",
|
||||||
|
"date_on_sale_from": "2024-11-07T00:00:00",
|
||||||
|
"date_on_sale_from_gmt": "2024-11-06T23:00:00",
|
||||||
|
"date_on_sale_to": "2099-12-31T23:59:59",
|
||||||
|
"date_on_sale_to_gmt": "2099-12-31T22:59:59",
|
||||||
|
"on_sale": true,
|
||||||
|
"purchasable": true,
|
||||||
|
"total_sales": "0",
|
||||||
|
"virtual": false,
|
||||||
|
"downloadable": false,
|
||||||
|
"downloads": [],
|
||||||
|
"download_limit": -1,
|
||||||
|
"download_expiry": -1,
|
||||||
|
"external_url": "",
|
||||||
|
"button_text": "",
|
||||||
|
"tax_status": "taxable",
|
||||||
|
"tax_class": "",
|
||||||
|
"manage_stock": true,
|
||||||
|
"stock_quantity": 10000,
|
||||||
|
"backorders": "no",
|
||||||
|
"backorders_allowed": false,
|
||||||
|
"backordered": false,
|
||||||
|
"low_stock_amount": null,
|
||||||
|
"sold_individually": false,
|
||||||
|
"weight": "",
|
||||||
|
"dimensions": {
|
||||||
|
"length": "",
|
||||||
|
"width": "",
|
||||||
|
"height": ""
|
||||||
|
},
|
||||||
|
"shipping_required": true,
|
||||||
|
"shipping_taxable": true,
|
||||||
|
"shipping_class": "",
|
||||||
|
"shipping_class_id": 0,
|
||||||
|
"reviews_allowed": false,
|
||||||
|
"average_rating": "0.00",
|
||||||
|
"rating_count": 0,
|
||||||
|
"upsell_ids": [],
|
||||||
|
"cross_sell_ids": [],
|
||||||
|
"parent_id": 70642,
|
||||||
|
"purchase_note": "",
|
||||||
|
"categories": [],
|
||||||
|
"tags": [],
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"id": 73623,
|
||||||
|
"date_created": "2024-11-20T11:12:29",
|
||||||
|
"date_created_gmt": "2024-11-20T09:12:29",
|
||||||
|
"date_modified": "2024-12-20T14:02:31",
|
||||||
|
"date_modified_gmt": "2024-12-20T12:02:31",
|
||||||
|
"src": "https:\/\/i0.wp.com\/www.fioredellavita.it\/wp-content\/uploads\/2024\/09\/le-stella-cadranno-dal-cielo-copertina-web.jpg?fit=450%2C624&ssl=1",
|
||||||
|
"name": "le-stella-cadranno-dal-cielo-copertina-web",
|
||||||
|
"alt": "\"Le stelle cadranno dal cielo?\""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"attributes": [
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"name": "Versione",
|
||||||
|
"slug": "pa_versione",
|
||||||
|
"option": "Nuovo"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_attributes": [],
|
||||||
|
"variations": [],
|
||||||
|
"grouped_products": [],
|
||||||
|
"menu_order": 0,
|
||||||
|
"price_html": "<del aria-hidden="\"true\""><span class="\"woocommerce-Price-amount" amount\"=""><bdi>24,90<span class="\"woocommerce-Price-currencySymbol\"">€<\/span><\/bdi><\/span><\/del> <span class="\"screen-reader-text\"">Il prezzo originale era: 24,90€.<\/span><ins aria-hidden="\"true\""><span class="\"woocommerce-Price-amount" amount\"=""><bdi>23,66<span class="\"woocommerce-Price-currencySymbol\"">€<\/span><\/bdi><\/span><\/ins><span class="\"screen-reader-text\"">Il prezzo attuale \u00e8: 23,66€.<\/span>",
|
||||||
|
"related_ids": [],
|
||||||
|
"meta_data": [
|
||||||
|
{
|
||||||
|
"id": 1521527,
|
||||||
|
"key": "ISBN",
|
||||||
|
"value": "9788828510147"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521528,
|
||||||
|
"key": "misure",
|
||||||
|
"value": "cm 13,5x20,5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521529,
|
||||||
|
"key": "formato",
|
||||||
|
"value": "Brossura"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521530,
|
||||||
|
"key": "pagine",
|
||||||
|
"value": "192"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521531,
|
||||||
|
"key": "edizione",
|
||||||
|
"value": "Dicembre 2024"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521532,
|
||||||
|
"key": "DataPubblicazione",
|
||||||
|
"value": "1736809200"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521533,
|
||||||
|
"key": "DataPubbStr",
|
||||||
|
"value": "14\/01\/2025"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521535,
|
||||||
|
"key": "_wpro_variable_is_preorder",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521536,
|
||||||
|
"key": "_is_pre_order",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521537,
|
||||||
|
"key": "_pre_order_date",
|
||||||
|
"value": "2025-01-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521538,
|
||||||
|
"key": "_wpro_date_label_variable",
|
||||||
|
"value": "Prenotalo per riceverlo entro il 14 gennaio 2025"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521539,
|
||||||
|
"key": "_wpro_no_date_label_variable",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521540,
|
||||||
|
"key": "_wpro_manage_price_variable",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521541,
|
||||||
|
"key": "_wpro_price_variable",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521542,
|
||||||
|
"key": "_wpro_label_variable",
|
||||||
|
"value": "Pre Ordinalo!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521543,
|
||||||
|
"key": "_wpro_price_type_variable",
|
||||||
|
"value": "manual"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521544,
|
||||||
|
"key": "_wpro_amount_price_variable",
|
||||||
|
"value": "fixed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521545,
|
||||||
|
"key": "_wpro_date_variable",
|
||||||
|
"value": "2025-01-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521546,
|
||||||
|
"key": "_wpro_time_variable",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521547,
|
||||||
|
"key": "_rank_math_gtin_code",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521680,
|
||||||
|
"key": "_ywpo_preorder",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521681,
|
||||||
|
"key": "_ywpo_availability_date_mode",
|
||||||
|
"value": "date"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521682,
|
||||||
|
"key": "_ywpo_for_sale_date",
|
||||||
|
"value": "2025-01-14"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521683,
|
||||||
|
"key": "_ywpo_price_mode",
|
||||||
|
"value": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521684,
|
||||||
|
"key": "_ywpo_preorder_price",
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521685,
|
||||||
|
"key": "_ywpo_preorder_discount_percentage",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521686,
|
||||||
|
"key": "_ywpo_preorder_discount_fixed",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521687,
|
||||||
|
"key": "_ywpo_preorder_increase_percentage",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521688,
|
||||||
|
"key": "_ywpo_preorder_increase_fixed",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521711,
|
||||||
|
"key": "woo_feed_availability_date_var",
|
||||||
|
"value": "2025-01-14"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"stock_status": "instock",
|
||||||
|
"has_options": false,
|
||||||
|
"post_password": "",
|
||||||
|
"global_unique_id": "",
|
||||||
|
"jetpack_sharing_enabled": true,
|
||||||
|
"jetpack-related-posts": [],
|
||||||
|
"builder_content": "",
|
||||||
|
"_links": {
|
||||||
|
"self": [
|
||||||
|
{
|
||||||
|
"href": "https:\/\/www.fioredellavita.it\/wp-json\/wc\/v3\/products\/74617",
|
||||||
|
"targetHints": {
|
||||||
|
"allow": [
|
||||||
|
"GET",
|
||||||
|
"POST",
|
||||||
|
"PUT",
|
||||||
|
"PATCH",
|
||||||
|
"DELETE"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"collection": [
|
||||||
|
{
|
||||||
|
"href": "https:\/\/www.fioredellavita.it\/wp-json\/wc\/v3\/products"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"up": [
|
||||||
|
{
|
||||||
|
"href": "https:\/\/www.fioredellavita.it\/wp-json\/wc\/v3\/products\/70642"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}</span></span></bdi></span></ins></span></span></bdi></span></del></pre></div>
|
||||||
|
<div id="loading" style="display: none;"></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const form = document.getElementById('articleForm');
|
||||||
|
const result = document.getElementById('result');
|
||||||
|
const loading = document.getElementById('loading');
|
||||||
|
|
||||||
|
const buttons = form.querySelectorAll('button');
|
||||||
|
buttons.forEach(button => button.addEventListener('click', handleButtonClick));
|
||||||
|
|
||||||
|
function handleButtonClick(event) {
|
||||||
|
let action = event.target.dataset.action;
|
||||||
|
let id = '0';
|
||||||
|
try {
|
||||||
|
id = form.querySelector('input[name="id"]').value;
|
||||||
|
if (!action) {
|
||||||
|
action = form.querySelector('input[name="action"]').value;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
id = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!id) {
|
||||||
|
id = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
loading.style.display = 'block'; // Mostra la clessidra
|
||||||
|
|
||||||
|
let baseUrl = window.location.href;
|
||||||
|
baseUrl = baseUrl.slice(0, baseUrl.lastIndexOf('/'));
|
||||||
|
|
||||||
|
fetch(`${baseUrl}/handle-article-action-pao/${id}/${action}`)
|
||||||
|
.then(response => response.text())
|
||||||
|
.then(data => {
|
||||||
|
result.innerHTML = data;
|
||||||
|
loading.style.display = 'none'; // Nasconde la clessidra una volta completato
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<deepl-input-controller><template shadowrootmode="open"><link rel="stylesheet" href="chrome-extension://cofdbpoegempjloogbagkncekinflcnj/build/content.css"><div dir="ltr" style="visibility: initial !important;"><div class="dl-input-translation-container svelte-95aucy"><div></div></div></div></template></deepl-input-controller></body></html>
|
||||||
403
docs/libro2.htm
Normal file
403
docs/libro2.htm
Normal file
@@ -0,0 +1,403 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- saved from url=(0067)http://vps-88271abb.vps.ovh.net/apimacro/public/mylinkspao?id=22753 -->
|
||||||
|
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Link Page</title>
|
||||||
|
<style>
|
||||||
|
#loading {
|
||||||
|
display: none;
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
border: 5px solid #f3f3f3;
|
||||||
|
border-top: 5px solid #3498db;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 1s linear infinite;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>Links</h1>
|
||||||
|
<form id="articleForm">
|
||||||
|
<pre> Per vedere la lista -> "LIBRI IN PREVENDITA"
|
||||||
|
in <span style="color: green;">VERDE</span> quelli in PreOrdine
|
||||||
|
in <span style="color: red;">ROSSO</span> quelli ancora non abilitati.
|
||||||
|
cliccare sul link <span style="font-weight: bold;">Imposta in PREORDINE"</span> per abilitarlo.
|
||||||
|
</pre>
|
||||||
|
<label for="article_id">ID Articolo or Ordine:</label>
|
||||||
|
<input type="text" id="article_id" name="id" value="22753">
|
||||||
|
<input type="text" id="action" name="action" value="" hidden="">
|
||||||
|
<br>
|
||||||
|
<button type="button" data-action="search">Cerca Articolo</button>
|
||||||
|
<button type="button" data-action="search_isbn">Cerca ISBN</button>
|
||||||
|
<button type="button" data-action="updateArtFromGM">Aggiorna Articolo da GM</button>
|
||||||
|
<button type="button" data-action="checkPrevendita">E' in PreVendita?</button>
|
||||||
|
<button type="button" data-action="setPreOrder">Impostalo in PreVendita!</button>
|
||||||
|
<button type="button" data-action="setDataPubblicazione">Aggiorna Data Pubblicazione</button>
|
||||||
|
<button type="button" data-action="showDettSingleOrdine">Dett. Ordine</button>
|
||||||
|
<button type="button" data-action="showDettSingleOrdineWeb">Dett. Ordine Web</button>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<button type="button" data-action="showTest">Test</button>
|
||||||
|
<button type="button" data-action="inprevendita">Libri in Prevendita</button>
|
||||||
|
<button type="button" data-action="cartolibri">Cartolibri</button>
|
||||||
|
<button type="button" data-action="riviste">Riviste</button>
|
||||||
|
<button type="button" data-action="showOrdini">Mostra Ordini</button>
|
||||||
|
<button type="button" data-action="showOrdiniWeb">Mostra Ordini Web</button>
|
||||||
|
<button type="button" data-action="showArticoliFatturatiWeb">Mostra Fatturati</button>
|
||||||
|
<button type="button" data-action="Vendite">Vendite</button>
|
||||||
|
|
||||||
|
<button type="button" data-action="showDettOrdini">Dettaglio Ordini</button>
|
||||||
|
<button type="button" data-action="showDettOrdiniWeb">Dettaglio Ordini Web</button>
|
||||||
|
</form>
|
||||||
|
<div>
|
||||||
|
<a href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-articles-sales" target="_blank">Vedi Articoli Venduti e Fatturati</a> - <a href="http://vps-88271abb.vps.ovh.net/apimacro/public/export-articles-sales-json" target="_blank">(Esporta)</a><br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="result">Articles di 22753 :
|
||||||
|
<pre>[
|
||||||
|
{
|
||||||
|
"Id": "258799",
|
||||||
|
"IdArticolo": "22753",
|
||||||
|
"Ean13": "9788865934883",
|
||||||
|
"Titolo": "La Storia di Flumeide e la Bambina",
|
||||||
|
"ListaAutori": "4184",
|
||||||
|
"ListaArgomenti": "6",
|
||||||
|
"IdStatoProdotto": "34",
|
||||||
|
"PrezzoIvato": "13.0000",
|
||||||
|
"IdMarchioEditoriale": "34",
|
||||||
|
"IdCollana": "1033",
|
||||||
|
"DataPubblicazione": "2025-01-21 00:00:00.000",
|
||||||
|
"IdTipologia": "1",
|
||||||
|
"IdTipoFormato": "1",
|
||||||
|
"Misure": "cm 28x19",
|
||||||
|
"Pagine": "32",
|
||||||
|
"Sottotitolo": "Una fiaba per grandi",
|
||||||
|
"Durata": "",
|
||||||
|
"Numero": "",
|
||||||
|
"Edizione": "Gennaio 2025",
|
||||||
|
"Ristampa": "",
|
||||||
|
"DataInizioCampagna": "2024-11-15 00:00:00.000",
|
||||||
|
"DataFineCampagna": "2099-11-15 00:00:00.000",
|
||||||
|
"ScontoCampagna": "5.00",
|
||||||
|
"PrezzoIvatoScontatoCampagna": "12.3500",
|
||||||
|
"DataOra": "2024-12-19 11:16:13.993",
|
||||||
|
"Enabled": "0",
|
||||||
|
"IDTagGruppo": "0",
|
||||||
|
"Utente": "AZANGHERI-NOTE",
|
||||||
|
"PercIva": ".00",
|
||||||
|
"IdTitoloOriginale": "13664",
|
||||||
|
"EnabledAlFresco": "1",
|
||||||
|
"CodEdizione": "1",
|
||||||
|
"FasciaEta": "Genitori",
|
||||||
|
"FasciaEta2": "Ragazze e ragazzi",
|
||||||
|
"data": "2024-12-19 11:16:13.993",
|
||||||
|
"DescrizioneStatoProdotto": "In prevendita",
|
||||||
|
"Codice": "22753",
|
||||||
|
"QtaDisponibile": "-2"
|
||||||
|
}
|
||||||
|
]</pre>Product:
|
||||||
|
<pre>{
|
||||||
|
"id": 73612,
|
||||||
|
"name": "La storia di Flumeide e la bambina - Nuovo",
|
||||||
|
"slug": "la-storia-di-flumeide-e-la-bambina-nuovo",
|
||||||
|
"permalink": "https:\/\/www.fioredellavita.it\/?post_type=product&p=73611&attribute_pa_versione=nuovo",
|
||||||
|
"date_created": "2024-11-20T04:49:10",
|
||||||
|
"date_created_gmt": "2024-11-20T03:49:10",
|
||||||
|
"date_modified": "2024-12-20T12:56:24",
|
||||||
|
"date_modified_gmt": "2024-12-20T11:56:24",
|
||||||
|
"type": "variation",
|
||||||
|
"status": "publish",
|
||||||
|
"featured": false,
|
||||||
|
"catalog_visibility": "visible",
|
||||||
|
"description": "",
|
||||||
|
"short_description": "",
|
||||||
|
"sku": "22753",
|
||||||
|
"price": "12.3500",
|
||||||
|
"regular_price": "13.0000",
|
||||||
|
"sale_price": "12.3500",
|
||||||
|
"date_on_sale_from": "2024-11-15T00:00:00",
|
||||||
|
"date_on_sale_from_gmt": "2024-11-14T23:00:00",
|
||||||
|
"date_on_sale_to": "2099-11-15T23:59:59",
|
||||||
|
"date_on_sale_to_gmt": "2099-11-15T22:59:59",
|
||||||
|
"on_sale": true,
|
||||||
|
"purchasable": true,
|
||||||
|
"total_sales": "0",
|
||||||
|
"virtual": false,
|
||||||
|
"downloadable": false,
|
||||||
|
"downloads": [],
|
||||||
|
"download_limit": -1,
|
||||||
|
"download_expiry": -1,
|
||||||
|
"external_url": "",
|
||||||
|
"button_text": "",
|
||||||
|
"tax_status": "taxable",
|
||||||
|
"tax_class": "",
|
||||||
|
"manage_stock": true,
|
||||||
|
"stock_quantity": 10000,
|
||||||
|
"backorders": "no",
|
||||||
|
"backorders_allowed": false,
|
||||||
|
"backordered": false,
|
||||||
|
"low_stock_amount": null,
|
||||||
|
"sold_individually": false,
|
||||||
|
"weight": "",
|
||||||
|
"dimensions": {
|
||||||
|
"length": "",
|
||||||
|
"width": "",
|
||||||
|
"height": ""
|
||||||
|
},
|
||||||
|
"shipping_required": true,
|
||||||
|
"shipping_taxable": true,
|
||||||
|
"shipping_class": "",
|
||||||
|
"shipping_class_id": 0,
|
||||||
|
"reviews_allowed": false,
|
||||||
|
"average_rating": "0.00",
|
||||||
|
"rating_count": 0,
|
||||||
|
"upsell_ids": [],
|
||||||
|
"cross_sell_ids": [],
|
||||||
|
"parent_id": 73611,
|
||||||
|
"purchase_note": "",
|
||||||
|
"categories": [],
|
||||||
|
"tags": [],
|
||||||
|
"images": [],
|
||||||
|
"attributes": [
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"name": "Versione",
|
||||||
|
"slug": "pa_versione",
|
||||||
|
"option": "Nuovo"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_attributes": [],
|
||||||
|
"variations": [],
|
||||||
|
"grouped_products": [],
|
||||||
|
"menu_order": 1,
|
||||||
|
"price_html": "<del aria-hidden="\"true\""><span class="\"woocommerce-Price-amount" amount\"=""><bdi>13,00<span class="\"woocommerce-Price-currencySymbol\"">€<\/span><\/bdi><\/span><\/del> <span class="\"screen-reader-text\"">Il prezzo originale era: 13,00€.<\/span><ins aria-hidden="\"true\""><span class="\"woocommerce-Price-amount" amount\"=""><bdi>12,35<span class="\"woocommerce-Price-currencySymbol\"">€<\/span><\/bdi><\/span><\/ins><span class="\"screen-reader-text\"">Il prezzo attuale \u00e8: 12,35€.<\/span>",
|
||||||
|
"related_ids": [],
|
||||||
|
"meta_data": [
|
||||||
|
{
|
||||||
|
"id": 1501793,
|
||||||
|
"key": "ISBN",
|
||||||
|
"value": "9788865934883"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1501794,
|
||||||
|
"key": "misure",
|
||||||
|
"value": "cm 28x19"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1501795,
|
||||||
|
"key": "formato",
|
||||||
|
"value": "Brossura"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1501796,
|
||||||
|
"key": "pagine",
|
||||||
|
"value": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1501798,
|
||||||
|
"key": "_wpro_variable_is_preorder",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1501799,
|
||||||
|
"key": "_is_pre_order",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521636,
|
||||||
|
"key": "_pre_order_date",
|
||||||
|
"value": "2025-01-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521637,
|
||||||
|
"key": "_wpro_date_label_variable",
|
||||||
|
"value": "Prenotalo per riceverlo entro il 21 gennaio 2025"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521638,
|
||||||
|
"key": "_wpro_no_date_label_variable",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521639,
|
||||||
|
"key": "_wpro_manage_price_variable",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521640,
|
||||||
|
"key": "_wpro_price_variable",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521641,
|
||||||
|
"key": "_wpro_label_variable",
|
||||||
|
"value": "Pre Ordinalo!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521642,
|
||||||
|
"key": "_wpro_price_type_variable",
|
||||||
|
"value": "manual"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521643,
|
||||||
|
"key": "_wpro_amount_price_variable",
|
||||||
|
"value": "fixed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521644,
|
||||||
|
"key": "_wpro_date_variable",
|
||||||
|
"value": "2025-01-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521645,
|
||||||
|
"key": "_wpro_time_variable",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521646,
|
||||||
|
"key": "_rank_math_gtin_code",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521698,
|
||||||
|
"key": "_ywpo_preorder",
|
||||||
|
"value": "yes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521699,
|
||||||
|
"key": "_ywpo_availability_date_mode",
|
||||||
|
"value": "date"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521700,
|
||||||
|
"key": "_ywpo_for_sale_date",
|
||||||
|
"value": "1736809200"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521701,
|
||||||
|
"key": "_ywpo_price_mode",
|
||||||
|
"value": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521702,
|
||||||
|
"key": "_ywpo_preorder_price",
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521703,
|
||||||
|
"key": "_ywpo_preorder_discount_percentage",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521704,
|
||||||
|
"key": "_ywpo_preorder_discount_fixed",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521705,
|
||||||
|
"key": "_ywpo_preorder_increase_percentage",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521706,
|
||||||
|
"key": "_ywpo_preorder_increase_fixed",
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1521707,
|
||||||
|
"key": "edizione",
|
||||||
|
"value": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"stock_status": "instock",
|
||||||
|
"has_options": false,
|
||||||
|
"post_password": "",
|
||||||
|
"global_unique_id": "",
|
||||||
|
"jetpack_sharing_enabled": true,
|
||||||
|
"jetpack-related-posts": [],
|
||||||
|
"builder_content": "",
|
||||||
|
"_links": {
|
||||||
|
"self": [
|
||||||
|
{
|
||||||
|
"href": "https:\/\/www.fioredellavita.it\/wp-json\/wc\/v3\/products\/73612",
|
||||||
|
"targetHints": {
|
||||||
|
"allow": [
|
||||||
|
"GET",
|
||||||
|
"POST",
|
||||||
|
"PUT",
|
||||||
|
"PATCH",
|
||||||
|
"DELETE"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"collection": [
|
||||||
|
{
|
||||||
|
"href": "https:\/\/www.fioredellavita.it\/wp-json\/wc\/v3\/products"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"up": [
|
||||||
|
{
|
||||||
|
"href": "https:\/\/www.fioredellavita.it\/wp-json\/wc\/v3\/products\/73611"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}</span></span></bdi></span></ins></span></span></bdi></span></del></pre></div>
|
||||||
|
<div id="loading" style="display: none;"></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const form = document.getElementById('articleForm');
|
||||||
|
const result = document.getElementById('result');
|
||||||
|
const loading = document.getElementById('loading');
|
||||||
|
|
||||||
|
const buttons = form.querySelectorAll('button');
|
||||||
|
buttons.forEach(button => button.addEventListener('click', handleButtonClick));
|
||||||
|
|
||||||
|
function handleButtonClick(event) {
|
||||||
|
let action = event.target.dataset.action;
|
||||||
|
let id = '0';
|
||||||
|
try {
|
||||||
|
id = form.querySelector('input[name="id"]').value;
|
||||||
|
if (!action) {
|
||||||
|
action = form.querySelector('input[name="action"]').value;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
id = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!id) {
|
||||||
|
id = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
loading.style.display = 'block'; // Mostra la clessidra
|
||||||
|
|
||||||
|
let baseUrl = window.location.href;
|
||||||
|
baseUrl = baseUrl.slice(0, baseUrl.lastIndexOf('/'));
|
||||||
|
|
||||||
|
fetch(`${baseUrl}/handle-article-action-pao/${id}/${action}`)
|
||||||
|
.then(response => response.text())
|
||||||
|
.then(data => {
|
||||||
|
result.innerHTML = data;
|
||||||
|
loading.style.display = 'none'; // Nasconde la clessidra una volta completato
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<deepl-input-controller><template shadowrootmode="open"><link rel="stylesheet" href="chrome-extension://cofdbpoegempjloogbagkncekinflcnj/build/content.css"><div dir="ltr" style="visibility: initial !important;"><div class="dl-input-translation-container svelte-95aucy"><div></div></div></div></template></deepl-input-controller></body></html>
|
||||||
@@ -1,839 +0,0 @@
|
|||||||
require('./config/config');
|
|
||||||
require('./config/config');
|
|
||||||
|
|
||||||
// console.log(" lodash");
|
|
||||||
|
|
||||||
console.log(process.versions);
|
|
||||||
|
|
||||||
const _ = require('lodash');
|
|
||||||
// console.log(" cors");
|
|
||||||
const cors = require('cors');
|
|
||||||
|
|
||||||
// console.log(" 2) fs");
|
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
var https = require('https');
|
|
||||||
|
|
||||||
const NUOVO_METODO_TEST = true;
|
|
||||||
|
|
||||||
const server_constants = require('./tools/server_constants');
|
|
||||||
|
|
||||||
//const throttle = require('express-throttle-bandwidth');
|
|
||||||
// app.use(throttle(1024 * 128)) // throttling bandwidth
|
|
||||||
|
|
||||||
const port = process.env.PORT;
|
|
||||||
|
|
||||||
// var cookieParser = require('cookie-parser')
|
|
||||||
// var csrf = require('csurf')
|
|
||||||
const express = require('express');
|
|
||||||
const bodyParser = require('body-parser');
|
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
const cron = require('node-cron');
|
|
||||||
console.log('Starting mongoose...');
|
|
||||||
|
|
||||||
const tls = require('tls');
|
|
||||||
|
|
||||||
require('./db/mongoose');
|
|
||||||
|
|
||||||
// console.log('Starting pem...');
|
|
||||||
|
|
||||||
// const pem = require('pem')
|
|
||||||
|
|
||||||
const { Settings } = require('./models/settings');
|
|
||||||
|
|
||||||
const Site = require('./models/site');
|
|
||||||
|
|
||||||
// test
|
|
||||||
|
|
||||||
const i18n = require('i18n');
|
|
||||||
|
|
||||||
let credentials = null;
|
|
||||||
|
|
||||||
// OBTAIN
|
|
||||||
// https://www.psclistens.com/insight/blog/enabling-a-nodejs-ssl-webserver-using-let-s-encrypt-pem-certificates/
|
|
||||||
|
|
||||||
|
|
||||||
if ((process.env.NODE_ENV === 'production')) {
|
|
||||||
console.log('*** AMBIENTE DI PRODUZIONE (Aprile 2024) !!!!')
|
|
||||||
} else if (process.env.NODE_ENV === 'test') {
|
|
||||||
console.log('*** ### AMBIENTE DI TEST ')
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
console.log('DB: ' + process.env.DATABASE);
|
|
||||||
// console.log("PORT: " + port);
|
|
||||||
// console.log("MONGODB_URI: " + process.env.MONGODB_URI);
|
|
||||||
|
|
||||||
var app = express();
|
|
||||||
|
|
||||||
|
|
||||||
let telegrambot = null;
|
|
||||||
|
|
||||||
const tools = require('./tools/general');
|
|
||||||
|
|
||||||
const shared_consts = require('./tools/shared_nodejs');
|
|
||||||
|
|
||||||
var mongoose = require('mongoose').set('debug', false);
|
|
||||||
|
|
||||||
mongoose.set('debug', false);
|
|
||||||
|
|
||||||
const { CfgServer } = require('./models/cfgserver');
|
|
||||||
const { ObjectID } = require('mongodb');
|
|
||||||
|
|
||||||
const populate = require('./populate/populate');
|
|
||||||
const { Circuit } = require('./models/circuit');
|
|
||||||
|
|
||||||
const printf = require('util').format;
|
|
||||||
|
|
||||||
myLoad().then(ris => {
|
|
||||||
|
|
||||||
const { User } = require('./models/user');
|
|
||||||
|
|
||||||
require('./models/todo');
|
|
||||||
require('./models/project');
|
|
||||||
require('./models/subscribers');
|
|
||||||
require('./models/booking');
|
|
||||||
require('./models/sendmsg');
|
|
||||||
require('./models/sendnotif');
|
|
||||||
require('./models/mailinglist');
|
|
||||||
require('./models/newstosent');
|
|
||||||
require('./models/mypage');
|
|
||||||
require('./models/myelem');
|
|
||||||
require('./models/bot');
|
|
||||||
require('./models/calzoom');
|
|
||||||
const mysql_func = require('./mysql/mysql_func');
|
|
||||||
|
|
||||||
const index_router = require('./router/index_router');
|
|
||||||
const push_router = require('./router/push_router');
|
|
||||||
const newsletter_router = require('./router/newsletter_router');
|
|
||||||
const booking_router = require('./router/booking_router');
|
|
||||||
const dashboard_router = require('./router/dashboard_router');
|
|
||||||
const myevent_router = require('./router/myevent_router');
|
|
||||||
const subscribe_router = require('./router/subscribe_router');
|
|
||||||
const sendmsg_router = require('./router/sendmsg_router');
|
|
||||||
const sendnotif_router = require('./router/sendnotif_router');
|
|
||||||
const email_router = require('./router/email_router');
|
|
||||||
const todos_router = require('./router/todos_router');
|
|
||||||
const test_router = require('./router/test_router');
|
|
||||||
const projects_router = require('./router/projects_router');
|
|
||||||
const report_router = require('./router/report_router');
|
|
||||||
const users_router = require('./router/users_router');
|
|
||||||
const reactions_router = require('./router/reactions_router');
|
|
||||||
const mygroups_router = require('./router/mygroups_router');
|
|
||||||
const circuits_router = require('./router/circuits_router');
|
|
||||||
const accounts_router = require('./router/accounts_router');
|
|
||||||
const iscrittiConacreis_router = require('./router/iscrittiConacreis_router');
|
|
||||||
const iscrittiArcadei_router = require('./router/iscrittiArcadei_router');
|
|
||||||
const site_router = require('./router/site_router');
|
|
||||||
const admin_router = require('./router/admin_router');
|
|
||||||
const products_router = require('./router/products_router');
|
|
||||||
const cart_router = require('./router/cart_router');
|
|
||||||
const orders_router = require('./router/orders_router');
|
|
||||||
const city_router = require('./router/city_router');
|
|
||||||
const myskills_router = require('./router/myskills_router');
|
|
||||||
const mygoods_router = require('./router/mygoods_router');
|
|
||||||
const mygen_router = require('./router/mygen_router');
|
|
||||||
const aitools_router = require('./router/aitools_router');
|
|
||||||
|
|
||||||
const { MyEvent } = require('./models/myevent');
|
|
||||||
|
|
||||||
app.use(bodyParser.json({ limit: '50mb' }));
|
|
||||||
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
|
|
||||||
|
|
||||||
app.use(express.static('views'));
|
|
||||||
|
|
||||||
// app.use(express.static(path.join(__dirname, 'client')));
|
|
||||||
|
|
||||||
app.use(bodyParser.json());
|
|
||||||
|
|
||||||
// app.set('view engine', 'pug');
|
|
||||||
|
|
||||||
// Set static folder
|
|
||||||
// app.use(express.static(path.join(__dirname, 'public')));
|
|
||||||
|
|
||||||
i18n.configure({
|
|
||||||
locales: ['it', 'enUs', 'es', 'fr', 'pt', 'si'],
|
|
||||||
defaultLocale: 'it',
|
|
||||||
// cookie: 'cook',
|
|
||||||
directory: __dirname + '/locales',
|
|
||||||
api: {
|
|
||||||
'__': 'translate',
|
|
||||||
'__n': 'translateN'
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
app.use(cors({
|
|
||||||
exposedHeaders: ['x-auth', 'x-refrtok'],
|
|
||||||
}));
|
|
||||||
|
|
||||||
app.use(bodyParser.json());
|
|
||||||
|
|
||||||
// app.use(express.cookieParser());
|
|
||||||
app.use(i18n.init);
|
|
||||||
|
|
||||||
console.log('Use Routes \...');
|
|
||||||
|
|
||||||
|
|
||||||
// Use Routes
|
|
||||||
app.use('/', index_router);
|
|
||||||
app.use('/subscribe', subscribe_router);
|
|
||||||
app.use('/sendmsg', sendmsg_router);
|
|
||||||
app.use('/sendnotif', sendnotif_router);
|
|
||||||
app.use('/push', push_router);
|
|
||||||
app.use('/news', newsletter_router);
|
|
||||||
app.use('/booking', booking_router);
|
|
||||||
app.use('/dashboard', dashboard_router);
|
|
||||||
app.use('/event', myevent_router);
|
|
||||||
app.use('/email', email_router);
|
|
||||||
app.use('/todos', todos_router);
|
|
||||||
app.use('/test', test_router);
|
|
||||||
app.use('/projects', projects_router);
|
|
||||||
app.use('/users', users_router);
|
|
||||||
app.use('/reactions', reactions_router);
|
|
||||||
app.use('/mygroup', mygroups_router);
|
|
||||||
app.use('/circuit', circuits_router);
|
|
||||||
app.use('/account', accounts_router);
|
|
||||||
app.use('/iscritti_conacreis', iscrittiConacreis_router);
|
|
||||||
app.use('/iscritti_arcadei', iscrittiArcadei_router);
|
|
||||||
app.use('/report', report_router);
|
|
||||||
app.use('/site', site_router);
|
|
||||||
app.use('/admin', admin_router);
|
|
||||||
app.use('/products', products_router);
|
|
||||||
app.use('/cart', cart_router);
|
|
||||||
app.use('/orders', orders_router);
|
|
||||||
app.use('/city', city_router);
|
|
||||||
app.use('/myskills', myskills_router);
|
|
||||||
app.use('/mygoods', mygoods_router);
|
|
||||||
app.use('/mygen', mygen_router);
|
|
||||||
app.use('/aitools', aitools_router);
|
|
||||||
|
|
||||||
// catch 404 and forward to error handler
|
|
||||||
// app.use(function (req, res, next) {
|
|
||||||
// var err = new Error('Not Found');
|
|
||||||
// err.status = 404;
|
|
||||||
// next(err);
|
|
||||||
// });
|
|
||||||
|
|
||||||
// app.set('views', path.join(__dirname, 'views'));
|
|
||||||
// app.set('view engine', 'pug');
|
|
||||||
|
|
||||||
// development error handler
|
|
||||||
// will print stacktrace
|
|
||||||
if (app.get('env') === 'development') {
|
|
||||||
|
|
||||||
app.use(function (err, req, res, next) {
|
|
||||||
console.log('Server Error: ', err.message);
|
|
||||||
// console.trace();
|
|
||||||
res.status(err.status || 500).send({ error: err.message });
|
|
||||||
// res.render('error', {
|
|
||||||
// message: err.message,
|
|
||||||
// error: err
|
|
||||||
// });
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// require('./telegram/telegrambot');
|
|
||||||
|
|
||||||
// *** DB CONNECTIONS ***
|
|
||||||
// mysql_func.mySqlConn_Shen.connect((err) => {
|
|
||||||
// if (!err)
|
|
||||||
// console.log('DB connection to Shen Database succeded.');
|
|
||||||
// else
|
|
||||||
// console.log('DB connection to Shen Database FAILED \n Error: ' + JSON.stringify(err, undefined, 2));
|
|
||||||
// });
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'production') {
|
|
||||||
console.log('*** PRODUCTION! ');
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((process.env.NODE_ENV === 'production') ||
|
|
||||||
(process.env.NODE_ENV === 'test')) {
|
|
||||||
|
|
||||||
const keyStream = path.resolve(`./${process.env.PATH_CERT_KEY}`);
|
|
||||||
const certificateStream = path.resolve(`./${process.env.PATH_SERVER_CRT}`);
|
|
||||||
|
|
||||||
let privateKey = fs.readFileSync(keyStream, "utf8");
|
|
||||||
let certificate = fs.readFileSync(certificateStream, "utf8");
|
|
||||||
|
|
||||||
let credentials = null;
|
|
||||||
|
|
||||||
|
|
||||||
// arrSecureContext = ['piuchebuono.app', 'gruppomacro.app'];
|
|
||||||
arrSecureContext = ['freeplanet.app', 'riso.app', 'comunitanuovomondo.app'];
|
|
||||||
|
|
||||||
let secureContext = {};
|
|
||||||
|
|
||||||
for (let i = 0; i < arrSecureContext.length; i++) {
|
|
||||||
try {
|
|
||||||
secureContext = {
|
|
||||||
...secureContext,
|
|
||||||
[arrSecureContext[i]]: tls.createSecureContext({
|
|
||||||
key: fs.readFileSync('/etc/letsencrypt/live/' + arrSecureContext[i] + '/privkey.pem'),
|
|
||||||
cert: fs.readFileSync('/etc/letsencrypt/live/' + arrSecureContext[i] + '/fullchain.pem')
|
|
||||||
// ca: fs.readFileSync('../path_to_certificate_authority_bundle.ca-bundle1', 'utf8'), // this ca property is optional
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
credentials = {
|
|
||||||
SNICallback: function (domain, cb) {
|
|
||||||
if (secureContext) {
|
|
||||||
if (cb) {
|
|
||||||
cb(null, secureContext);
|
|
||||||
} else {
|
|
||||||
// compatibility for older versions of node
|
|
||||||
return secureContext;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
console.log('Error: ' + err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
let secureContext = {
|
|
||||||
'piuchebuono.app': tls.createSecureContext({
|
|
||||||
key: fs.readFileSync('/etc/letsencrypt/live/piuchebuono.app/privkey.pem'),
|
|
||||||
cert: fs.readFileSync('/etc/letsencrypt/live/piuchebuono.app/fullchain.pem')
|
|
||||||
// ca: fs.readFileSync('../path_to_certificate_authority_bundle.ca-bundle1', 'utf8'), // this ca property is optional
|
|
||||||
}),
|
|
||||||
'gruppomacro.app': tls.createSecureContext({
|
|
||||||
key: fs.readFileSync('/etc/letsencrypt/live/gruppomacro.app/privkey.pem'),
|
|
||||||
cert: fs.readFileSync('/etc/letsencrypt/live/gruppomacro.app/fullchain.pem')
|
|
||||||
// ca: fs.readFileSync('../path_to_certificate_authority_bundle.ca-bundle1', 'utf8'), // this ca property is optional
|
|
||||||
}),
|
|
||||||
}*/
|
|
||||||
|
|
||||||
console.log('secureContext', secureContext);
|
|
||||||
|
|
||||||
if (NUOVO_METODO_TEST) {
|
|
||||||
credentials = {
|
|
||||||
SNICallback: function (domain, cb) {
|
|
||||||
if (secureContext[domain]) {
|
|
||||||
if (cb) {
|
|
||||||
cb(null, secureContext[domain]);
|
|
||||||
} else {
|
|
||||||
// compatibility for older versions of node
|
|
||||||
return secureContext[domain];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new Error('No keys/certificates for domain requested');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// must list a default key and cert because required by tls.createServer()
|
|
||||||
key: privateKey,
|
|
||||||
cert: certificate,
|
|
||||||
}
|
|
||||||
|
|
||||||
/*} else {
|
|
||||||
// NON USATO !
|
|
||||||
credentials = {
|
|
||||||
key: privateKey,
|
|
||||||
cert: certificate,
|
|
||||||
ca: [
|
|
||||||
fs.readFileSync(process.env.PATH_SSL_ROOT_PEM, 'utf8'),
|
|
||||||
fs.readFileSync(process.env.PATH_SSL_CHAIN_PEM, 'utf8'),
|
|
||||||
],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/*} else {
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (process.env.HTTPS_LOCALHOST === "true") {
|
|
||||||
privateKey = fs.readFileSync(process.env.PATH_CERT_KEY, 'utf8');
|
|
||||||
certificate = fs.readFileSync(process.env.PATH_SERVER_CRT, 'utf8');
|
|
||||||
credentials = {
|
|
||||||
key: privateKey,
|
|
||||||
cert: certificate,
|
|
||||||
ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
|
|
||||||
honorCipherOrder: true,
|
|
||||||
secureProtocol: 'TLSv1_2_method',
|
|
||||||
};
|
|
||||||
|
|
||||||
} else {
|
|
||||||
var http = require('http');
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((process.env.NODE_ENV === 'production') ||
|
|
||||||
(process.env.NODE_ENV === 'test') || process.env.HTTPS_LOCALHOST === "true") {
|
|
||||||
|
|
||||||
const httpsServer = https.createServer(credentials, app);
|
|
||||||
|
|
||||||
console.log('httpsServer: port ', port);
|
|
||||||
httpsServer.listen(port);
|
|
||||||
} else {
|
|
||||||
console.log('httpServer: port ', port);
|
|
||||||
const httpServer = http.createServer(app);
|
|
||||||
httpServer.listen(port);
|
|
||||||
}
|
|
||||||
|
|
||||||
mystart();
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// app.use(throttle(1024 * 128)); // throttling bandwidth
|
|
||||||
|
|
||||||
// app.use((req, res, next) => {
|
|
||||||
// res.header('Access-Control-Allow-Origin', '*')
|
|
||||||
// res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
|
|
||||||
// next()
|
|
||||||
// });
|
|
||||||
|
|
||||||
async function myLoad() {
|
|
||||||
|
|
||||||
return tools.loadApps();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function mystart() {
|
|
||||||
|
|
||||||
// await estraiTutteLeImmagini();
|
|
||||||
|
|
||||||
await tools.getApps();
|
|
||||||
|
|
||||||
if (process.env.PROD !== 1) {
|
|
||||||
|
|
||||||
testmsgwebpush();
|
|
||||||
|
|
||||||
// tools.sendNotifToAdmin('Riparti', 'Riparti');
|
|
||||||
|
|
||||||
let miapass = '';
|
|
||||||
|
|
||||||
if (miapass !== '') {
|
|
||||||
let crypt = tools.cryptdata(miapass);
|
|
||||||
let decrypt = tools.decryptdata(crypt);
|
|
||||||
|
|
||||||
console.log('crypted:', crypt);
|
|
||||||
console.log('decrypted:', decrypt);
|
|
||||||
}
|
|
||||||
|
|
||||||
mycron();
|
|
||||||
if (!process.env.DEBUG) {
|
|
||||||
mycron();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
telegrambot = require('./telegram/telegrambot');
|
|
||||||
|
|
||||||
await inizia();
|
|
||||||
|
|
||||||
await resetProcessingJob();
|
|
||||||
|
|
||||||
populate.popolaTabelleNuove();
|
|
||||||
|
|
||||||
faitest();
|
|
||||||
|
|
||||||
// ----------------- MAILCHIMP -----
|
|
||||||
const querystring = require('querystring');
|
|
||||||
const mailchimpClientId = 'xxxxxxxxxxxxxxxx';
|
|
||||||
|
|
||||||
app.get('/mailchimp/auth/authorize', function (req, res) {
|
|
||||||
res.redirect('https://login.mailchimp.com/oauth2/authorize?' +
|
|
||||||
querystring.stringify({
|
|
||||||
'response_type': 'code',
|
|
||||||
'client_id': mailchimpClientId,
|
|
||||||
'redirect_uri': 'http://127.0.0.1:3000/mailchimp/auth/callback',
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------
|
|
||||||
|
|
||||||
function populateDBadmin() {
|
|
||||||
const cfgserv = [
|
|
||||||
{
|
|
||||||
_id: new ObjectID(),
|
|
||||||
idapp: '9',
|
|
||||||
chiave: 'vers',
|
|
||||||
userId: 'ALL',
|
|
||||||
valore: '0.1.2',
|
|
||||||
}];
|
|
||||||
|
|
||||||
let cfg = new CfgServer(cfgserv[0]).save();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function mycron() {
|
|
||||||
|
|
||||||
try {
|
|
||||||
const sendemail = require('./sendemail');
|
|
||||||
|
|
||||||
const arr = await tools.getApps();
|
|
||||||
|
|
||||||
for (const app of arr) {
|
|
||||||
sendemail.checkifPendingNewsletter(app.idapp);
|
|
||||||
sendemail.checkifSentNewsletter(app.idapp);
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
console.error('Err mycron', e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function mycron_30min() {
|
|
||||||
for (const app of await tools.getApps()) {
|
|
||||||
let enablecrontab = false;
|
|
||||||
|
|
||||||
enablecrontab = await Settings.getValDbSettings(app.idapp,
|
|
||||||
tools.ENABLE_CRONTAB, false);
|
|
||||||
|
|
||||||
if (enablecrontab) {
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function mycron_everyday() {
|
|
||||||
try {
|
|
||||||
|
|
||||||
const { User } = require('./models/user');
|
|
||||||
|
|
||||||
const arrapps = await tools.getApps();
|
|
||||||
for (const app of arrapps) {
|
|
||||||
|
|
||||||
// Azzera le richieste di password:
|
|
||||||
const usersblocked = await User.find({ idapp: app.idapp, retry_pwd: { $exists: true, $gte: 29 } }).lean();
|
|
||||||
for (const user of usersblocked) {
|
|
||||||
await User.findOneAndUpdate({ _id: user._id }, { $set: { retry_pwd: 20 } });
|
|
||||||
let text = `⚠️⚠️⚠️ L\'utente ${user.username} (${user.name} ${user.surname}) viene sbloccato dal numero massimo di tentativi di richiesta password!\nTelerlo d\'occhio !\n@${user.profile.username_telegram}`;
|
|
||||||
await telegrambot.sendMsgTelegramToTheAdminAllSites(text, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Crea un file con all'interno il nome del dominio per ogni app:
|
|
||||||
await tools.createFileWithDomainName();
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
console.error('mycron_everyday: ', e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function testmsgwebpush() {
|
|
||||||
const { User } = require('./models/user');
|
|
||||||
|
|
||||||
// console.log('nomeapp 1: ' , tools.getNomeAppByIdApp(1));
|
|
||||||
// console.log('nomeapp 2: ' , tools.getNomeAppByIdApp(2));
|
|
||||||
|
|
||||||
User.find({ username: 'paoloar77', idapp: '1' }).then(async (arrusers) => {
|
|
||||||
if (arrusers !== null) {
|
|
||||||
for (const user of arrusers) {
|
|
||||||
await tools.sendNotificationToUser(user._id, 'Server',
|
|
||||||
'Il Server è Ripartito', '/', '', 'server', []).then(ris => {
|
|
||||||
if (ris) {
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// already sent the error on calling sendNotificationToUser
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cron every X minutes
|
|
||||||
cron.schedule('*/1 * * * *', () => {
|
|
||||||
// console.log('Running Cron Job');
|
|
||||||
// if (!process.env.DEBUG) {
|
|
||||||
mycron();
|
|
||||||
// }
|
|
||||||
});
|
|
||||||
|
|
||||||
// Cron every X minutes
|
|
||||||
cron.schedule('*/60 * * * *', async () => {
|
|
||||||
if (!process.env.DEBUG) {
|
|
||||||
mycron_30min();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Cron every 21:00 (1 volta al giorno)
|
|
||||||
cron.schedule('0 21 * * *', async () => {
|
|
||||||
mycron_everyday();
|
|
||||||
});
|
|
||||||
|
|
||||||
// mycron_30min();
|
|
||||||
|
|
||||||
// tools.writelogfile('test', 'prova.txt');
|
|
||||||
|
|
||||||
async function resetProcessingJob() {
|
|
||||||
|
|
||||||
const { Newstosent } = require('./models/newstosent');
|
|
||||||
|
|
||||||
arrrec = await Newstosent.find({});
|
|
||||||
|
|
||||||
for (const rec of arrrec) {
|
|
||||||
rec.processing_job = false;
|
|
||||||
await Newstosent.findOneAndUpdate({ _id: rec.id }, { $set: rec }, { new: false }).
|
|
||||||
then((item) => {
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//app.listen(port, () => {
|
|
||||||
// console.log(`Server started at port ${port}`);
|
|
||||||
//});
|
|
||||||
|
|
||||||
async function inizia() {
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (true) {
|
|
||||||
const url = 'https://raw.githubusercontent.com/matteocontrini/comuni-json/master/comuni.json';
|
|
||||||
const outputPath = './comuni_italia_geojson.json';
|
|
||||||
downloadGeoJSON(url, outputPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
mycron_everyday();
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'development') {
|
|
||||||
await telegrambot.sendMsgTelegram(tools.FREEPLANET,
|
|
||||||
telegrambot.ADMIN_USER_SERVER,
|
|
||||||
`Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}!`);
|
|
||||||
|
|
||||||
await telegrambot.sendMsgTelegramByIdTelegram(tools.FREEPLANET,
|
|
||||||
telegrambot.ADMIN_IDTELEGRAM_SERVER,
|
|
||||||
`Ciao ${telegrambot.ADMIN_USER_NAME_SERVER}\n` +
|
|
||||||
`🔅 Il Server ${process.env.DATABASE} è appena ripartito!`);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
await telegrambot.sendMsgTelegramToTheAdminAllSites(`Ciao Admin\n` + `🔅🔅🔅 Il Server col BOT di {appname} è appena ripartito!`, false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
await Site.createFirstUserAdmin();
|
|
||||||
|
|
||||||
/*const {Circuit} = require('./models/circuit');
|
|
||||||
|
|
||||||
await Circuit.setDeperimentoOff();
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
// telegrambot.sendMsgTelegramToTheManagers('7', 'PROVAAA!');
|
|
||||||
|
|
||||||
// if (process.env.PROD !== 1) {
|
|
||||||
// const reg = require('./reg/registration');
|
|
||||||
// const link = reg.getlinkregByEmail('7', 'tomasihelen@dasdasgmail.comAAAA' , 'HelenTomasidasdasd');
|
|
||||||
// const link2 = reg.getlinkregByEmail('7', 'tomasihelen@gmail.com' , 'HelenTomasi');
|
|
||||||
// //const link2 = reg.getlinkregByEmail('7', 'elenaliubicich@gmail.com' , 'Elenaliu');
|
|
||||||
//
|
|
||||||
// console.log(link);
|
|
||||||
// console.log(link2);
|
|
||||||
// }
|
|
||||||
|
|
||||||
async function estraiImmagini(table) {
|
|
||||||
const { User } = require('./models/user');
|
|
||||||
|
|
||||||
let idapp = '13';
|
|
||||||
|
|
||||||
let arrlist;
|
|
||||||
|
|
||||||
const globalTables = require('./tools/globalTables');
|
|
||||||
|
|
||||||
|
|
||||||
const mytable = globalTables.getTableByTableName(table);
|
|
||||||
if (!mytable)
|
|
||||||
return;
|
|
||||||
|
|
||||||
console.log('INIZIO - estraiImmagini', table);
|
|
||||||
|
|
||||||
arrlist = await mytable.find({ idapp }).lean();
|
|
||||||
|
|
||||||
let file = '';
|
|
||||||
let filetocheck = '';
|
|
||||||
let dirmain = '';
|
|
||||||
let filefrom = '';
|
|
||||||
let filefrom2 = '';
|
|
||||||
let dir = tools.getdirByIdApp(idapp) + dirmain + '/upload/';
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (!tools.sulServer()) {
|
|
||||||
dirmain = '/public';
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const rec of arrlist) {
|
|
||||||
const myuser = await User.findOne({ idapp, _id: rec.userId }).lean();
|
|
||||||
if (myuser) {
|
|
||||||
const myphotos = rec.photos;
|
|
||||||
|
|
||||||
if (myphotos.length > 0) {
|
|
||||||
let folderprof = dir + 'profile/' + myuser.username;
|
|
||||||
|
|
||||||
try {
|
|
||||||
// console.log('checkdir', folderprof);
|
|
||||||
if (!fs.existsSync(folderprof)) {
|
|
||||||
console.log('*** Creadir', folderprof);
|
|
||||||
fs.mkdirSync(folderprof);
|
|
||||||
}
|
|
||||||
|
|
||||||
folderprof = dir + 'profile/' + myuser.username + '/' + table;
|
|
||||||
// console.log('checkdir', folderprof);
|
|
||||||
if (!fs.existsSync(folderprof)) {
|
|
||||||
console.log('creadir', folderprof);
|
|
||||||
fs.mkdirSync(folderprof);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const photo of myphotos) {
|
|
||||||
|
|
||||||
if (photo.imagefile) {
|
|
||||||
file = dir + 'profile/' + myuser.username + '/' + table + '/' +
|
|
||||||
photo.imagefile;
|
|
||||||
filefrom = dir + 'profile/undefined/' + table + '/' + photo.imagefile;
|
|
||||||
filefrom2 = dir + 'profile/' + myuser.username + '/' + photo.imagefile;
|
|
||||||
|
|
||||||
// console.log('file', file);
|
|
||||||
// console.log('filefrom', filefrom);
|
|
||||||
|
|
||||||
if (!tools.isFileExists(file)) {
|
|
||||||
// non esiste
|
|
||||||
console.log('non esiste', file);
|
|
||||||
console.log(' filefrom', filefrom);
|
|
||||||
console.log(' filefrom2', filefrom2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!tools.isFileExists(file) && tools.isFileExists(filefrom)) {
|
|
||||||
console.log('@@@@@@ copia file:', filefrom, 'a', file);
|
|
||||||
tools.copy(filefrom, file);
|
|
||||||
}
|
|
||||||
if (!tools.isFileExists(file) && tools.isFileExists(filefrom2)) {
|
|
||||||
console.log('@@@@@@ copia file 2:', filefrom2, 'a', file);
|
|
||||||
tools.copy(filefrom2, file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
console.log('FINE - estraiImmagini', table);
|
|
||||||
} catch (e) {
|
|
||||||
console.error('e', e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function estraiTutteLeImmagini() {
|
|
||||||
|
|
||||||
await estraiImmagini('myskills');
|
|
||||||
await estraiImmagini('mygoods');
|
|
||||||
await estraiImmagini('mybachecas');
|
|
||||||
}
|
|
||||||
|
|
||||||
async function faitest() {
|
|
||||||
// console.log('Fai Test:')
|
|
||||||
|
|
||||||
const testfind = false;
|
|
||||||
|
|
||||||
// const $vers = tools.getVersionint('1.92.45');
|
|
||||||
|
|
||||||
if (true) {
|
|
||||||
// tools.execScript("ls -la");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (false) {
|
|
||||||
prova = tools.removeAtChar('@prova');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (false) {
|
|
||||||
const prova = tools.getConfSiteOptionEnabledByIdApp('13', shared_consts.ConfSite.Notif_Reg_Push_Admin);
|
|
||||||
console.log('prova', prova);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (testfind) {
|
|
||||||
const { City } = require('./models/city');
|
|
||||||
|
|
||||||
let miacity = 'roma';
|
|
||||||
const ris = await City.findByCity(miacity);
|
|
||||||
|
|
||||||
console.log('ris', ris);
|
|
||||||
}
|
|
||||||
|
|
||||||
const { User } = require('./models/user');
|
|
||||||
|
|
||||||
if (false) {
|
|
||||||
let myuser = await User.findOne({
|
|
||||||
idapp: '1',
|
|
||||||
username: 'paoloar77',
|
|
||||||
});
|
|
||||||
const langdest = 'it';
|
|
||||||
|
|
||||||
telegrambot.askConfirmationUser(myuser.idapp, shared_consts.CallFunz.REGISTRATION, myuser);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (false) {
|
|
||||||
|
|
||||||
const user = await User.findOne({
|
|
||||||
idapp: 12,
|
|
||||||
username: 'paolotest1',
|
|
||||||
});
|
|
||||||
|
|
||||||
await sendemail.sendEmail_Registration('it', 'paolo@arcodiluce.it', user,
|
|
||||||
'12', '');
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (false) {
|
|
||||||
|
|
||||||
const { User } = require('./models/user');
|
|
||||||
|
|
||||||
const idapp = tools.FREEPLANET;
|
|
||||||
const idreg = 0;
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
const user = await User.findOne({
|
|
||||||
idapp,
|
|
||||||
username: 'paoloar773',
|
|
||||||
});
|
|
||||||
|
|
||||||
user.aportador_solidario = 'paoloar77';
|
|
||||||
|
|
||||||
let mylocalsconf = {
|
|
||||||
idapp,
|
|
||||||
dataemail: null,
|
|
||||||
locale: user.lang,
|
|
||||||
nomeapp: tools.getNomeAppByIdApp(idapp),
|
|
||||||
strlinksito: tools.getHostByIdApp(idapp),
|
|
||||||
strlinkreg: '',
|
|
||||||
username: user.username,
|
|
||||||
name: user.name,
|
|
||||||
surname: user.surname,
|
|
||||||
forgetpwd: tools.getHostByIdApp(idapp) + '/requestresetpwd',
|
|
||||||
emailto: '',
|
|
||||||
user,
|
|
||||||
};
|
|
||||||
|
|
||||||
await telegrambot.notifyToTelegram(telegrambot.phase.REGISTRATION,
|
|
||||||
mylocalsconf);
|
|
||||||
} catch (e) {
|
|
||||||
console.log('error ' + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = { app };
|
|
||||||
|
|
||||||
12
docs/test.htm
Normal file
12
docs/test.htm
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<div class="row align-start" style="gap:0px;flex-direction:column;flex:1;display:flex;justify-content:space-between;">
|
||||||
|
<!-- Parte superiore -->
|
||||||
|
<div class="justify-start" style="flex-grow:0"><span style="font-size:calc(12 * var(--scalecatalogx) * 1px)"
|
||||||
|
class="book-author">{autore}</span>
|
||||||
|
<div style="font-size:calc(16 * var(--scalecatalogx) * 1px);font-weight:bold;" class="book-title">{titolo}</div>
|
||||||
|
<span class="book-descr">{descrizione}</span>
|
||||||
|
</div><!-- Parte inferiore (book-details e barcode) -->
|
||||||
|
<div style="margin-top:auto;width:100%">
|
||||||
|
<div class="justify-end book-details" style="flex-grow:0;font-size:calc(10 * var(--scalecatalog) * 1px);">
|
||||||
|
Pagine: <b>{pagine}</b><br />Formato: <b>{misure}</b><br />Prezzo: <b>{prezzo} €</b><br /></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
44879
docs/test.js
44879
docs/test.js
File diff suppressed because one or more lines are too long
@@ -2,9 +2,8 @@ module.exports = {
|
|||||||
apps : [
|
apps : [
|
||||||
{
|
{
|
||||||
name: "FreePlanetServerSide",
|
name: "FreePlanetServerSide",
|
||||||
script: "./src/server/server.js",
|
script: "./src/server.js",
|
||||||
ignore_watch : ["node_modules"],
|
ignore_watch : ["node_modules"],
|
||||||
interpreter: "/root/.nvm/versions/node/v16.19.0/bin/node",
|
|
||||||
watch: false,
|
watch: false,
|
||||||
//autorestart: true,
|
//autorestart: true,
|
||||||
instances: 1,
|
instances: 1,
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
apps: [
|
apps: [
|
||||||
{
|
{
|
||||||
name: "PRODUZIONE PiuCheBuono_ServerSide",
|
name: "PCB-PROD",
|
||||||
script: "/var/www/www.freeplanet_server/src/server/server.js",
|
script: "/var/www/nodejs_piuchebuono_server/src/server.js",
|
||||||
ignore_watch: ["node_modules", "logs"],
|
ignore_watch: ["node_modules", "logs"],
|
||||||
interpreter: "/root/.nvm/versions/node/v16.19.0/bin/node",
|
// interpreter: "/root/.nvm/versions/node/v22.13.1/bin/node",
|
||||||
//autorestart: true,
|
//autorestart: true,
|
||||||
instances: 1,
|
instances: 1,
|
||||||
watch: false,
|
watch: false,
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
apps: [
|
apps: [
|
||||||
{
|
{
|
||||||
name: "TEST PiuCheBuono_ServerSide",
|
name: "PCB-TEST",
|
||||||
script: "/var/www/nodejs_test.piuchebuono_server/src/server/server.js",
|
script: "/var/www/nodejs_test.piuchebuono_server/src/server.js",
|
||||||
ignore_watch: ["node_modules", "logs"],
|
ignore_watch: ["node_modules", "logs"],
|
||||||
interpreter: "/root/.nvm/versions/node/v16.19.0/bin/node",
|
// interpreter: "/root/.nvm/versions/node/v22.13.1/bin/node",
|
||||||
//autorestart: true,
|
|
||||||
instances: 1,
|
instances: 1,
|
||||||
watch: false,
|
watch: false,
|
||||||
env: {
|
env: {
|
||||||
21
ecosystem.config.prod_freeplanet.app.js
Executable file
21
ecosystem.config.prod_freeplanet.app.js
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
module.exports = {
|
||||||
|
apps: [
|
||||||
|
{
|
||||||
|
name: "PRODUZIONE - FREEPLANET",
|
||||||
|
script: "/var/www/www.freeplanet_server/src/server.js",
|
||||||
|
ignore_watch: ["node_modules", "logs"],
|
||||||
|
// interpreter: "/root/.nvm/versions/node/v16.19.0/bin/node",
|
||||||
|
//autorestart: true,
|
||||||
|
instances: 1,
|
||||||
|
watch: false,
|
||||||
|
env: {
|
||||||
|
"NODE_ENV": "production"
|
||||||
|
},
|
||||||
|
log_file: "logs/combined.outerr.log",
|
||||||
|
error_file: "logs/error.log",
|
||||||
|
out_file: "logs/out.log",
|
||||||
|
merge_logs: true,
|
||||||
|
log_date_format: "YYYY-MM-DD HH:mm:ss.SSSS Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
21
ecosystem.config.riso_prod.js
Executable file
21
ecosystem.config.riso_prod.js
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
module.exports = {
|
||||||
|
apps: [
|
||||||
|
{
|
||||||
|
name: "RISO-PROD",
|
||||||
|
script: "/var/www/nodejs_riso_server/src/server.js",
|
||||||
|
ignore_watch: ["node_modules", "logs"],
|
||||||
|
// interpreter: "/root/.nvm/versions/node/v22.13.1/bin/node",
|
||||||
|
//autorestart: true,
|
||||||
|
instances: 1,
|
||||||
|
watch: false,
|
||||||
|
env: {
|
||||||
|
"NODE_ENV": "production"
|
||||||
|
},
|
||||||
|
log_file: "logs/combined.outerr.log",
|
||||||
|
error_file: "logs/error.log",
|
||||||
|
out_file: "logs/out.log",
|
||||||
|
merge_logs: true,
|
||||||
|
log_date_format: "YYYY-MM-DD HH:mm:ss.SSSS Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
apps: [
|
apps: [
|
||||||
{
|
{
|
||||||
name: "TESTRISO2 FreePlanetServerSide",
|
name: "RISO-TEST",
|
||||||
script: "./src/server/server.js",
|
script: "./src/server.js",
|
||||||
ignore_watch: ["node_modules", "logs"],
|
ignore_watch: ["node_modules", "logs"],
|
||||||
interpreter: "/root/.nvm/versions/node/v16.19.0/bin/node",
|
// interpreter: "/root/.nvm/versions/node/v22.13.1/bin/node",
|
||||||
watch: false,
|
watch: false,
|
||||||
//autorestart: true,
|
|
||||||
instances: 1,
|
instances: 1,
|
||||||
env_test: {
|
env_test: {
|
||||||
"PORT": 3001,
|
"PORT": 3001,
|
||||||
BIN
emails/.DS_Store
vendored
BIN
emails/.DS_Store
vendored
Binary file not shown.
492
emails/RISO/circuit_abilitato_al_fido_membro/it/html.pug
Executable file
492
emails/RISO/circuit_abilitato_al_fido_membro/it/html.pug
Executable file
@@ -0,0 +1,492 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 120px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header .subtitle {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 17px;
|
||||||
|
opacity: 0.95;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.congrats-card {
|
||||||
|
background: linear-gradient(135deg, #e8f5e9 0%, #f1f8f4 100%);
|
||||||
|
border: 2px solid #7cb342;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 24px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.congrats-card .congrats-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.congrats-card h3 {
|
||||||
|
font-size: 22px;
|
||||||
|
color: #558b2f;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.congrats-card .territory-name {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #7cb342;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-section {
|
||||||
|
background: #ffffff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 24px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-section h3 {
|
||||||
|
font-size: 18px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-section p {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.7;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-section ul {
|
||||||
|
margin: 12px 0;
|
||||||
|
padding-left: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-section li {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.7;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box {
|
||||||
|
background: linear-gradient(135deg, #fff8dc 0%, #fef9f3 100%);
|
||||||
|
border-left: 4px solid #f0ad4e;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box h4 {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #f0ad4e;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box p {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.7;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-box {
|
||||||
|
background: #e3f2fd;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-box h4 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #1976d2;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-box .transaction {
|
||||||
|
background: white;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 12px;
|
||||||
|
margin: 8px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-box .benefit {
|
||||||
|
background: #c8e6c9;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 12px;
|
||||||
|
margin-top: 12px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #2e7d32;
|
||||||
|
}
|
||||||
|
|
||||||
|
.steps-box {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.steps-box h4 {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
padding: 12px;
|
||||||
|
background: white;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-number {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #7cb342;
|
||||||
|
min-width: 40px;
|
||||||
|
margin-right: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content h5 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content p {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
text-align: center;
|
||||||
|
margin: 32px 0;
|
||||||
|
padding: 24px 0;
|
||||||
|
border-top: 2px solid #e0e0e0;
|
||||||
|
border-bottom: 2px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 18px 56px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 6px 20px rgba(124, 179, 66, 0.4);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.community-box {
|
||||||
|
background: linear-gradient(135deg, #e8f5e9 0%, #f1f8f4 100%);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.community-box h4 {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #558b2f;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.community-box p {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.7;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.community-box a {
|
||||||
|
color: #2196f3;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.congrats-card .congrats-icon {
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.congrats-card h3 {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 16px 40px;
|
||||||
|
font-size: 18px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-item {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-number {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
//- Header
|
||||||
|
.email-header
|
||||||
|
img.header-logo(src=baseurl+'/images/logo.png' alt=nomeapp)
|
||||||
|
h1 🎉 Benvenuto nel #{nomeTerritorio}!
|
||||||
|
p.subtitle Sei stato abilitato con successo
|
||||||
|
|
||||||
|
//- Body
|
||||||
|
.email-body
|
||||||
|
//- Intro
|
||||||
|
.intro-text
|
||||||
|
| Ciao <strong>#{usernameMembro}</strong>,<br>
|
||||||
|
| complimenti! Sei stato abilitato #{nomeTerritorio} da #{usernameInvitante}.
|
||||||
|
|
||||||
|
if linkProfiloAdmin
|
||||||
|
.divider(style="margin: 16px 0;")
|
||||||
|
p(style="text-align: center; margin: 16px 0;")
|
||||||
|
a.profile-button(href=linkProfiloAdmin target="_blank" style="display: inline-block; padding: 10px 24px; font-size: 15px; font-weight: 600; color: #7cb342; background: white; border: 2px solid #7cb342; border-radius: 20px; text-decoration: none; transition: all 0.3s ease;")
|
||||||
|
span(style="margin-right: 6px;") 👤
|
||||||
|
| Profilo #{usernameInvitante}
|
||||||
|
|
||||||
|
//- Congratulazioni
|
||||||
|
.congrats-card
|
||||||
|
.congrats-icon ✅
|
||||||
|
h3 Abilitazione Completata
|
||||||
|
p(style="font-size: 15px; color: #555; margin-top: 8px;")
|
||||||
|
| Ora puoi utilizzare i #{symbol} per i tuoi scambi nella comunità
|
||||||
|
.territory-name 📍 #{nomeTerritorio}
|
||||||
|
|
||||||
|
//- Info comunità
|
||||||
|
.community-box
|
||||||
|
h4 💬 Unisciti alla Comunità Territoriale
|
||||||
|
p
|
||||||
|
| Entra nel gruppo Telegram di <strong>#{nomeTerritorio}</strong> per interagire con i partecipanti, rimanere aggiornato su eventi, mercatini e opportunità di scambio nella tua zona, e per poter inserire, anche tu, annunci di offro/cerco.
|
||||||
|
|
||||||
|
if linkTelegramTerritorio
|
||||||
|
a.telegram-button(href=linkTelegramTerritorio target="_blank" style="display: inline-block; margin-top: 16px; padding: 14px 32px; font-size: 17px; font-weight: 600; color: white; background: linear-gradient(135deg, #0088cc 0%, #006699 100%); border-radius: 25px; text-decoration: none; box-shadow: 0 4px 12px rgba(0, 136, 204, 0.3); transition: all 0.3s ease;")
|
||||||
|
span(style="font-size: 20px; margin-right: 8px; vertical-align: middle;") ✈️
|
||||||
|
| Unisciti al gruppo Telegram
|
||||||
|
|
||||||
|
//- Cos'è RIS
|
||||||
|
.info-section
|
||||||
|
h3
|
||||||
|
span 💰
|
||||||
|
| Cosa sono i RIS?
|
||||||
|
p
|
||||||
|
| <strong>RIS</strong> (Rete Italiana Scambio) è un sistema di <strong>credito comunitario</strong> basato sulla fiducia reciproca. Non sono soldi tradizionali, ma un'unità di misura che rappresenta il valore degli scambi all'interno della comunità RISO.
|
||||||
|
p
|
||||||
|
| <strong>Parità con l'Euro:</strong> 1 RIS = 1 Euro (solo come riferimento di valore, non come convertibilità)
|
||||||
|
|
||||||
|
//- Come funziona la fiducia
|
||||||
|
.highlight-box
|
||||||
|
h4 🤝 Come Funziona la "Fiducia Concessa"
|
||||||
|
p
|
||||||
|
| <strong>Parti da 0 RIS</strong> - Non devi avere un "saldo positivo" per iniziare a scambiare!
|
||||||
|
p
|
||||||
|
| <strong>Quando ricevi</strong> un bene o servizio pagando in RIS → il tuo saldo <strong>diventa positivo</strong>
|
||||||
|
p
|
||||||
|
| <strong>Quando offri</strong> un bene o servizio ricevendo RIS → il tuo saldo <strong>diventa negativo</strong>
|
||||||
|
p(style="margin-top: 12px; padding-top: 12px; border-top: 1px solid #f0ad4e;")
|
||||||
|
| 💡 <strong>Il saldo negativo non è un debito!</strong> È la fiducia che la comunità ti concede. Significa che hai ricevuto prima di aver dato, e la comunità si fida che restituirai nel tempo.
|
||||||
|
|
||||||
|
//- Esempio pratico
|
||||||
|
.example-box
|
||||||
|
h4 📖 Esempio Pratico
|
||||||
|
.transaction
|
||||||
|
| <strong>Situazione:</strong> Sei un grafico e vuoi comprare 100€ di verdure da un produttore locale
|
||||||
|
.transaction
|
||||||
|
| <strong>Transazione mista:</strong>
|
||||||
|
| <br>• Paghi <strong>80€ in Euro</strong>
|
||||||
|
| <br>• Paghi <strong>20 RIS</strong> (20% in RIS)
|
||||||
|
| <br><br>🔻 Il tuo saldo RIS passa da 0 a <strong>-20 RIS</strong>
|
||||||
|
.benefit
|
||||||
|
| <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 man mano che acquisisci fiducia.
|
||||||
|
|
||||||
|
//- Come riequilibrare
|
||||||
|
.info-section
|
||||||
|
h3
|
||||||
|
span ⚖️
|
||||||
|
| Come Riequilibrare il Saldo
|
||||||
|
p
|
||||||
|
| Per riportare il tuo saldo verso lo zero (o in positivo), puoi:
|
||||||
|
ul
|
||||||
|
li <strong>Offrire beni o servizi</strong> ricevendo RIS in cambio
|
||||||
|
li <strong>Vendere prodotti</strong> accettando pagamenti parziali o totali in RIS
|
||||||
|
li <strong>Mettere annunci</strong> sulla piattaforma specificando che accetti RIS
|
||||||
|
li <strong>Partecipare ai mercatini</strong> locali della comunità RISO
|
||||||
|
|
||||||
|
//- Primi passi
|
||||||
|
.steps-box
|
||||||
|
h4 🚀 I Tuoi Primi Passi
|
||||||
|
.step-item
|
||||||
|
.step-number 1
|
||||||
|
.step-content
|
||||||
|
h5 Esplora la Piattaforma
|
||||||
|
p Familiarizza con gli annunci, i membri e le funzionalità del #{nomeTerritorio}
|
||||||
|
.step-item
|
||||||
|
.step-number 2
|
||||||
|
.step-content
|
||||||
|
h5 Crea il Tuo Primo Annuncio
|
||||||
|
p Pubblica cosa offri o cosa cerchi, specificando se accetti pagamenti in RIS
|
||||||
|
.step-item
|
||||||
|
.step-number 3
|
||||||
|
.step-content
|
||||||
|
h5 Inizia con Piccole Transazioni
|
||||||
|
p Comincia con percentuali basse di RIS (5-10%) per prendere confidenza e vedi cosa succede. Più siamo aperti noi e più l'Universo ci aiuta e sostiene e ci dona quello di cui abbiamo bisogno.
|
||||||
|
.step-item
|
||||||
|
.step-number 4
|
||||||
|
.step-content
|
||||||
|
h5 Partecipa alla Comunità
|
||||||
|
p Unisciti agli incontri locali e ai mercatini per conoscere altri membri. Se non ci sono membri che propongono incontri, puoi proporti anche tu!
|
||||||
|
|
||||||
|
//- CTA
|
||||||
|
.cta-section
|
||||||
|
.cta-title Inizia Subito a Usare i RIS!
|
||||||
|
a.cta-button(href=strlinksito target="_blank")
|
||||||
|
span.button-icon 🌾
|
||||||
|
| Vai alla Piattaforma
|
||||||
|
|
||||||
|
//- Supporto
|
||||||
|
.info-section
|
||||||
|
h3
|
||||||
|
span ❓
|
||||||
|
| Hai Domande?
|
||||||
|
p
|
||||||
|
| Se hai dubbi sul funzionamento dei RIS o sulla piattaforma, non esitare a:
|
||||||
|
ul
|
||||||
|
li Contattare il facilitatore del tuo territorio
|
||||||
|
li Chiedere nel gruppo Telegram locale
|
||||||
|
li Partecipare agli incontri di comunità
|
||||||
|
|
||||||
|
//- Footer
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p Benvenuto nella Rete Italiana Scambio orizzontale - #{nomeTerritorio}
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| #{new Date().getFullYear()} #{nomeapp}
|
||||||
1
emails/RISO/circuit_abilitato_al_fido_membro/it/subject.pug
Executable file
1
emails/RISO/circuit_abilitato_al_fido_membro/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
=`Abilitazione avvenuta su ${nomeTerritorio} in ${nomeapp} - (${usernameMembro})`
|
||||||
401
emails/RISO/circuit_chiedi_facilitatori_di_entrare/it/html.pug
Executable file
401
emails/RISO/circuit_chiedi_facilitatori_di_entrare/it/html.pug
Executable file
@@ -0,0 +1,401 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 120px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header .subtitle {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 17px;
|
||||||
|
opacity: 0.95;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-icon {
|
||||||
|
font-size: 56px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card {
|
||||||
|
background: linear-gradient(135deg, #e3f2fd 0%, #f0f7ff 100%);
|
||||||
|
border: 2px solid #2196f3;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 24px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card h3 {
|
||||||
|
font-size: 14px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #2196f3;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-name {
|
||||||
|
font-size: 28px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-detail {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-detail strong {
|
||||||
|
color: #2196f3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.territory-badge {
|
||||||
|
background: linear-gradient(135deg, #4caf50 0%, #388e3c 100%);
|
||||||
|
color: white;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 8px 20px;
|
||||||
|
border-radius: 20px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-top: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-box {
|
||||||
|
background: #e1f5fe;
|
||||||
|
border-left: 4px solid #2196f3;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 24px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-box p {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
text-align: center;
|
||||||
|
margin: 32px 0;
|
||||||
|
padding: 24px 0;
|
||||||
|
border-top: 2px solid #e0e0e0;
|
||||||
|
border-bottom: 2px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 18px 56px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #2196f3 0%, #1976d2 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 6px 20px rgba(33, 150, 243, 0.4);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box {
|
||||||
|
background: #e8f5e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
color: #2e7d32;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-box {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-box h3 {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
min-width: 24px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-text {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-name {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.territory-badge {
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 6px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-box p {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 16px 40px;
|
||||||
|
font-size: 18px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-item {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
//- Header
|
||||||
|
.email-header
|
||||||
|
img.header-logo(src=baseurl+'/images/logo.png' alt=nomeapp)
|
||||||
|
h1 🎯 Richiesta Abilitazione #{nomeTerritorio}
|
||||||
|
p.subtitle Nuovo membro in attesa di attivazione
|
||||||
|
|
||||||
|
//- Body
|
||||||
|
.email-body
|
||||||
|
//- Intro
|
||||||
|
.intro-text
|
||||||
|
| Ciao <strong>#{nomeFacilitatore}</strong>,<br>
|
||||||
|
| un nuovo membro richiede l'abilitazione alla fiducia al Circuito del tuo territorio!
|
||||||
|
|
||||||
|
//- Card richiesta
|
||||||
|
.request-card
|
||||||
|
h3 👤 Richiesta Ingresso Circuito
|
||||||
|
.member-name #{usernameMembro}
|
||||||
|
if nomeMembro
|
||||||
|
if cognomeMembro
|
||||||
|
.member-detail
|
||||||
|
strong Nome:
|
||||||
|
| #{nomeMembro} #{cognomeMembro}
|
||||||
|
else
|
||||||
|
.member-detail
|
||||||
|
strong Nome:
|
||||||
|
| #{nomeMembro}
|
||||||
|
if emailMembro
|
||||||
|
.member-detail
|
||||||
|
strong Email:
|
||||||
|
| #{emailMembro}
|
||||||
|
if telegramMembro
|
||||||
|
.member-detail
|
||||||
|
strong Telegram:
|
||||||
|
a(href=`https://t.me/${telegramMembro}` target="_blank" style="color: #2196f3; text-decoration: none;") @#{telegramMembro}
|
||||||
|
if comuneResidenza
|
||||||
|
.member-detail
|
||||||
|
strong Comune:
|
||||||
|
| #{comuneResidenza} (#{provinciaResidenza})
|
||||||
|
|
||||||
|
.territory-badge 📍 #{nomeTerritorio}
|
||||||
|
|
||||||
|
if usernameInvitante
|
||||||
|
.divider(style="margin: 20px auto; width: 80%;")
|
||||||
|
h3(style="font-size: 14px; text-transform: uppercase; color: #2196f3; margin-bottom: 12px;") 👥 Invitato da
|
||||||
|
.member-detail
|
||||||
|
strong Invitante:
|
||||||
|
| #{usernameInvitante}
|
||||||
|
if nomeInvitante
|
||||||
|
if cognomeInvitante
|
||||||
|
.member-detail
|
||||||
|
strong Nome:
|
||||||
|
| #{nomeInvitante} #{cognomeInvitante}
|
||||||
|
else
|
||||||
|
.member-detail
|
||||||
|
strong Nome:
|
||||||
|
| #{nomeInvitante}
|
||||||
|
if telegramInvitante
|
||||||
|
.member-detail
|
||||||
|
strong Telegram:
|
||||||
|
a(href=`https://t.me/${telegramInvitante}` target="_blank" style="color: #2196f3; text-decoration: none;") @#{telegramInvitante}
|
||||||
|
|
||||||
|
//- CTA principale
|
||||||
|
.cta-section
|
||||||
|
a.cta-button(href=linkAbilitazione target="_blank")
|
||||||
|
span.button-icon ✓
|
||||||
|
| Abilita fiducia
|
||||||
|
|
||||||
|
.divider(style="margin: 24px 0;")
|
||||||
|
p(style="font-size: 16px; color: #666; margin-bottom: 16px;") Visualizza i profili
|
||||||
|
.button-group(style="display: flex; gap: 12px; justify-content: center; flex-wrap: wrap;")
|
||||||
|
a.secondary-button(href=linkProfiloMembro target="_blank" style="display: inline-block; padding: 12px 24px; font-size: 16px; font-weight: 600; color: #2196f3; background: white; border: 2px solid #2196f3; border-radius: 25px; text-decoration: none; transition: all 0.3s ease;")
|
||||||
|
span(style="margin-right: 6px;") 👤
|
||||||
|
| Profilo Membro
|
||||||
|
if linkProfiloInvitante
|
||||||
|
a.secondary-button(href=linkProfiloInvitante target="_blank" style="display: inline-block; padding: 12px 24px; font-size: 16px; font-weight: 600; color: #7cb342; background: white; border: 2px solid #7cb342; border-radius: 25px; text-decoration: none; transition: all 0.3s ease;")
|
||||||
|
span(style="margin-right: 6px;") 👥
|
||||||
|
| Profilo Invitante
|
||||||
|
|
||||||
|
//- Responsabilità
|
||||||
|
.responsibility-box
|
||||||
|
h3 📋 Compiti del Facilitatore RISO
|
||||||
|
.responsibility-item
|
||||||
|
span.responsibility-icon 🔍
|
||||||
|
span.responsibility-text
|
||||||
|
strong Verifica:
|
||||||
|
| Contatta il membro, se non lo conosci, oppure il suo invitante: #{usernameInvitante}
|
||||||
|
.responsibility-item
|
||||||
|
span.responsibility-icon 🌍
|
||||||
|
span.responsibility-text
|
||||||
|
strong Territorio:
|
||||||
|
| Assicurati che il membro appartenga effettivamente al territorio di competenza
|
||||||
|
.responsibility-item
|
||||||
|
span.responsibility-icon 👥
|
||||||
|
span.responsibility-text
|
||||||
|
strong Integrazione:
|
||||||
|
| Supporta il nuovo membro nell'attivazione e utilizzo del Circuito locale
|
||||||
|
|
||||||
|
//- Info box
|
||||||
|
.info-box
|
||||||
|
p
|
||||||
|
| ✓ Dopo l'abilitazione, #{usernameMembro} potrà accedere al #{nomeTerritorio}
|
||||||
|
p
|
||||||
|
| ✓ Il membro riceverà una notifica automatica dell'avvenuta attivazione
|
||||||
|
|
||||||
|
//- Footer
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p Hai ricevuto questa email in qualità di Facilitatore RISO per #{nomeTerritorio}
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| #{new Date().getFullYear()} #{nomeapp}
|
||||||
1
emails/RISO/circuit_chiedi_facilitatori_di_entrare/it/subject.pug
Executable file
1
emails/RISO/circuit_chiedi_facilitatori_di_entrare/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
=`Richiesta ingresso di ${usernameMembro} - ${nomeMembro} ${cognomeMembro} su ${nomeTerritorio} in ${nomeapp}`
|
||||||
370
emails/RISO/reg_chiedi_ammettere_all_invitante/it/html.pug
Executable file
370
emails/RISO/reg_chiedi_ammettere_all_invitante/it/html.pug
Executable file
@@ -0,0 +1,370 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 120px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header .subtitle {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 17px;
|
||||||
|
opacity: 0.95;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-icon {
|
||||||
|
font-size: 56px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card {
|
||||||
|
background: linear-gradient(135deg, #fff8dc 0%, #fef9f3 100%);
|
||||||
|
border: 2px solid #f0ad4e;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 24px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card h3 {
|
||||||
|
font-size: 14px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #f0ad4e;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-name {
|
||||||
|
font-size: 28px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-detail {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-detail strong {
|
||||||
|
color: #f0ad4e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-box {
|
||||||
|
background: #fff3cd;
|
||||||
|
border-left: 4px solid #f0ad4e;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 24px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-box p {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
text-align: center;
|
||||||
|
margin: 32px 0;
|
||||||
|
padding: 24px 0;
|
||||||
|
border-top: 2px solid #e0e0e0;
|
||||||
|
border-bottom: 2px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 18px 56px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 6px 20px rgba(124, 179, 66, 0.4);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box {
|
||||||
|
background: #e8f5e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
color: #2e7d32;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-box {
|
||||||
|
background: #f8d7da;
|
||||||
|
border-left: 4px solid #dc3545;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-box p {
|
||||||
|
margin: 0;
|
||||||
|
color: #721c24;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-box strong {
|
||||||
|
color: #dc3545;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-box {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-box h3 {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
min-width: 24px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-text {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-name {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-box p {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 16px 40px;
|
||||||
|
font-size: 18px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-item {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
//- Header
|
||||||
|
.email-header
|
||||||
|
img.header-logo(src=baseurl+'/images/logo.png' alt=nomeapp)
|
||||||
|
h1 🔔 Richiesta di Ammissione
|
||||||
|
p.subtitle Nuovo membro in attesa
|
||||||
|
|
||||||
|
//- Body
|
||||||
|
.email-body
|
||||||
|
//- Intro
|
||||||
|
.intro-text
|
||||||
|
| Ciao <strong>#{nomeInvitante}</strong>,<br>
|
||||||
|
| hai una nuova richiesta di ammissione da confermare!
|
||||||
|
|
||||||
|
//- Card richiesta
|
||||||
|
.request-card
|
||||||
|
h3 👤 Richiesta di Ingresso
|
||||||
|
.member-name #{usernameInvitato}
|
||||||
|
if nomeInvitato
|
||||||
|
.member-detail
|
||||||
|
strong Nome:
|
||||||
|
| #{nomeInvitato}
|
||||||
|
if emailInvitato
|
||||||
|
.member-detail
|
||||||
|
strong Email:
|
||||||
|
| #{emailInvitato}
|
||||||
|
if userprofile && userprofile.profile.resid_str_comune && userprofile.profile.resid_province
|
||||||
|
.member-detail
|
||||||
|
strong Comune Residenza:
|
||||||
|
| #{userprofile.profile.resid_str_comune} (#{userprofile.profile.resid_province})
|
||||||
|
|
||||||
|
//- Domanda di conferma
|
||||||
|
.question-box
|
||||||
|
p 🤔 Confermi di conoscere #{nomeInvitato}?
|
||||||
|
|
||||||
|
//- CTA principale
|
||||||
|
.cta-section
|
||||||
|
a.cta-button(href=linkAmmissione target="_blank")
|
||||||
|
span.button-icon ✓
|
||||||
|
| Sì, Confermo
|
||||||
|
|
||||||
|
//- Responsabilità
|
||||||
|
.responsibility-box
|
||||||
|
h3 📋 La tua responsabilità come invitante
|
||||||
|
.responsibility-item
|
||||||
|
span.responsibility-icon 🤝
|
||||||
|
span.responsibility-text
|
||||||
|
strong Conoscenza diretta:
|
||||||
|
| Dovresti ammettere solo persone che conosci personalmente e di cui ti fidi
|
||||||
|
.responsibility-item
|
||||||
|
span.responsibility-icon 🛡️
|
||||||
|
span.responsibility-text
|
||||||
|
strong Fiducia:
|
||||||
|
| L'ammissione si basa sulla fiducia reciproca nella comunità #{nomeapp}
|
||||||
|
.responsibility-item
|
||||||
|
span.responsibility-icon 👥
|
||||||
|
span.responsibility-text
|
||||||
|
strong Supporto:
|
||||||
|
| Come invitante, aiuterai il nuovo membro a integrarsi nella comunità
|
||||||
|
|
||||||
|
//- Info box
|
||||||
|
.info-box
|
||||||
|
p
|
||||||
|
| ✓ Dopo l'ammissione, #{usernameInvitato} potrà completare il profilo
|
||||||
|
|
||||||
|
//- Warning box
|
||||||
|
.warning-box
|
||||||
|
p
|
||||||
|
strong ⚠️ Importante:
|
||||||
|
| Se non conosci questa persona o hai dubbi sull'ammissione, ti consigliamo di non procedere. Puoi contattare il facilitatore locale per ulteriori informazioni o semplicemente non cliccare sul pulsante di conferma.
|
||||||
|
|
||||||
|
//- Footer
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p Hai ricevuto questa email perché #{usernameInvitato} ha indicato te come invitante su #{nomeapp}
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| #{new Date().getFullYear()} #{nomeapp}
|
||||||
1
emails/RISO/reg_chiedi_ammettere_all_invitante/it/subject.pug
Executable file
1
emails/RISO/reg_chiedi_ammettere_all_invitante/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
=`🎉 ${name ? ', ' + name : username} chiede di essere ammesso su ${nomeapp} !`
|
||||||
534
emails/RISO/reg_email_benvenuto_ammesso/it/html.pug
Executable file
534
emails/RISO/reg_email_benvenuto_ammesso/it/html.pug
Executable file
@@ -0,0 +1,534 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 80px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #2E7D32 0%, #1B5E20 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header p {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 16px;
|
||||||
|
opacity: 0.95;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 24px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text strong {
|
||||||
|
color: #2E7D32;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-message {
|
||||||
|
background: linear-gradient(135deg, #E8F5E9 0%, #C8E6C9 100%);
|
||||||
|
border-left: 4px solid #2E7D32;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-message h2 {
|
||||||
|
color: #1B5E20;
|
||||||
|
font-size: 20px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-message p {
|
||||||
|
color: #2E7D32;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credentials-box {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-left: 4px solid #2E7D32;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credentials-title {
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #555;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 8px 0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-row:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-label {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #666;
|
||||||
|
min-width: 120px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-value {
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 500;
|
||||||
|
flex: 1;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-value a {
|
||||||
|
color: #2E7D32;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-value a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
margin: 24px 0;
|
||||||
|
padding: 20px 0;
|
||||||
|
border-top: 1px solid #e0e0e0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 19px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-subtitle {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-buttons-wrapper {
|
||||||
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: stretch;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 16px 28px;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #2E7D32 0%, #1B5E20 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 4px 12px rgba(46, 125, 50, 0.3);
|
||||||
|
transition: transform 0.2s, box-shadow 0.2s;
|
||||||
|
flex: 1;
|
||||||
|
min-width: 160px;
|
||||||
|
max-width: 200px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 6px 16px rgba(46, 125, 50, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-secondary {
|
||||||
|
background: linear-gradient(135deg, #388E3C 0%, #2E7D32 100%);
|
||||||
|
box-shadow: 0 4px 12px rgba(56, 142, 60, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-secondary:hover {
|
||||||
|
box-shadow: 0 6px 16px rgba(56, 142, 60, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-tertiary {
|
||||||
|
background: linear-gradient(135deg, #66BB6A 0%, #4CAF50 100%);
|
||||||
|
box-shadow: 0 4px 12px rgba(76, 175, 80, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-tertiary:hover {
|
||||||
|
box-shadow: 0 6px 16px rgba(76, 175, 80, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
font-size: 18px;
|
||||||
|
margin-right: 6px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next-steps {
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 24px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next-steps-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #2E7D32;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 12px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
background: #f8fdf9;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-left: 3px solid #4CAF50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-number {
|
||||||
|
background: linear-gradient(135deg, #4CAF50 0%, #388E3C 100%);
|
||||||
|
color: white;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 16px;
|
||||||
|
margin-right: 12px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content h3 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #1B5E20;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content p {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.5;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box {
|
||||||
|
background: linear-gradient(135deg, #E8F5E9 0%, #C8E6C9 100%);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin-top: 20px;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px solid #A5D6A7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p {
|
||||||
|
margin: 0;
|
||||||
|
color: #1B5E20;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box strong {
|
||||||
|
color: #2E7D32;
|
||||||
|
}
|
||||||
|
|
||||||
|
.community-note {
|
||||||
|
background: #fff3e0;
|
||||||
|
border-left: 4px solid #FF9800;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.community-note p {
|
||||||
|
color: #E65100;
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px 16px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 24px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header p {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-message {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credentials-box {
|
||||||
|
padding: 16px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-row {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-label {
|
||||||
|
margin-bottom: 4px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-value {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-buttons-wrapper {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 14px 24px;
|
||||||
|
font-size: 15px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-item {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-number {
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content h3 {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content p {
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
.email-header
|
||||||
|
- var baseimg = baseurl + '/';
|
||||||
|
img.header-logo(src=baseimg+"images/logo.png" alt=nomeapp || 'Logo')
|
||||||
|
h1 Benvenuto/a #{name || username} nella community RISO! 💚
|
||||||
|
|
||||||
|
.email-body
|
||||||
|
.welcome-message
|
||||||
|
if ammessoUtente
|
||||||
|
h2 🎉 Il tuo invitante #{nomeInvitante} ti ha ammesso!
|
||||||
|
p Sei ora un membro della Rete Italiana di Scambio Orizzontale
|
||||||
|
p Inizia subito a scoprire beni, servizi e ospitalità nella tua comunità territoriale
|
||||||
|
|
||||||
|
.intro-text
|
||||||
|
| La tua comunità RISO ti aspetta! 🌱 Qui potrai
|
||||||
|
strong scambiare beni e servizi
|
||||||
|
| usando i
|
||||||
|
strong RIS
|
||||||
|
| , conoscere persone straordinarie e contribuire a costruire
|
||||||
|
strong un'economia più umana e solidale
|
||||||
|
| .
|
||||||
|
|
||||||
|
.next-steps
|
||||||
|
.next-steps-title 🎯 I tuoi primi passi nella community RISO
|
||||||
|
|
||||||
|
.step-item
|
||||||
|
.step-number 1
|
||||||
|
.step-content
|
||||||
|
h3 ✅ Completa il tuo profilo
|
||||||
|
p Collega il tuo profilo a Telegram ed accedi ai Circuiti Territoriali per poter iniziare ad usare i RIS. Un profilo completo aiuta gli altri membri a conoscerti meglio!
|
||||||
|
|
||||||
|
.step-item
|
||||||
|
.step-number 2
|
||||||
|
.step-content
|
||||||
|
h3 🔍 Esplora gli annunci
|
||||||
|
p Scopri cosa offrono gli altri membri nella tua area. Potresti trovare esattamente ciò che cerchi!
|
||||||
|
|
||||||
|
.step-item
|
||||||
|
.step-number 3
|
||||||
|
.step-content
|
||||||
|
h3 📢 Pubblica il tuo primo annuncio
|
||||||
|
p Cosa puoi offrire? Beni, servizi o ospitalità - ogni contributo arricchisce la comunità. Ricorda di includere come strumento di scambio il RIS e sperimentalo da subito!
|
||||||
|
|
||||||
|
.step-item
|
||||||
|
.step-number 4
|
||||||
|
.step-content
|
||||||
|
h3 💬 Unisciti al gruppo territoriale
|
||||||
|
p Partecipa alle conversazioni, agli eventi e alle iniziative della tua comunità locale sulle chat Telegram di RISO
|
||||||
|
|
||||||
|
.cta-section
|
||||||
|
.cta-title 🚀 Accedi e inizia il tuo viaggio RISO
|
||||||
|
.cta-subtitle Scegli come vuoi accedere alla piattaforma
|
||||||
|
|
||||||
|
.credentials-box
|
||||||
|
.credentials-title 📋 I tuoi dati di accesso
|
||||||
|
|
||||||
|
if username
|
||||||
|
.credential-row
|
||||||
|
.credential-label Username:
|
||||||
|
.credential-value #{username}
|
||||||
|
|
||||||
|
if emailto
|
||||||
|
.credential-row
|
||||||
|
.credential-label Email:
|
||||||
|
.credential-value #{emailto}
|
||||||
|
|
||||||
|
if forgetpwd
|
||||||
|
.credential-row
|
||||||
|
.credential-label Password:
|
||||||
|
.credential-value
|
||||||
|
| (la password che hai inserito)
|
||||||
|
br
|
||||||
|
a(href=forgetpwd target="_blank") Hai dimenticato la password?
|
||||||
|
|
||||||
|
if strlinksito
|
||||||
|
.cta-buttons-wrapper
|
||||||
|
a.cta-button(href=strlinksito target="_blank")
|
||||||
|
span.button-icon 🌐
|
||||||
|
| Accedi da Web
|
||||||
|
|
||||||
|
a.cta-button.cta-button-secondary(href=strlinksito+'/installaapp' target="_blank")
|
||||||
|
span.button-icon 📱
|
||||||
|
| Installa l'App
|
||||||
|
|
||||||
|
a.cta-button.cta-button-tertiary(href=strlinksito+'/guida' target="_blank")
|
||||||
|
span.button-icon 📖
|
||||||
|
| Leggi la Guida
|
||||||
|
|
||||||
|
.info-box
|
||||||
|
p
|
||||||
|
strong 💰 Cos'è il RIS?
|
||||||
|
br
|
||||||
|
| Il RIS è l'unità di scambio della comunità RISO, basata sulla
|
||||||
|
strong fiducia reciproca
|
||||||
|
| . Parti da 0 RIS e accumula crediti offrendo i tuoi beni/servizi. Usalo per ottenere ciò di cui hai bisogno. Il bilancio totale della comunità è sempre zero - ogni credito corrisponde al debito di qualcun altro.
|
||||||
|
|
||||||
|
.community-note
|
||||||
|
p
|
||||||
|
| 🤝
|
||||||
|
strong Ricorda:
|
||||||
|
| Ogni scambio che fai, ogni annuncio che pubblichi, ogni interazione che hai rafforza la rete RISO. Non sei solo un utente -
|
||||||
|
strong sei un membro attivo
|
||||||
|
| di una comunità che crede nella solidarietà e nella condivisione!
|
||||||
|
|
||||||
|
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p 💚 Benvenuto/a nella famiglia RISO!
|
||||||
|
p(style="margin-top: 8px;") Hai ricevuto questa email perché sei stato/a ammesso/a nella comunità #{nomeapp || 'RISO'}
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| © #{new Date().getFullYear()} #{nomeapp || 'RISO'} - Rete Italiana di Scambio Orizzontale
|
||||||
|
p(style="margin-top: 8px; font-size: 11px; color: #999;")
|
||||||
|
| Costruiamo insieme un'economia più umana e solidale
|
||||||
1
emails/RISO/reg_email_benvenuto_ammesso/it/subject.pug
Executable file
1
emails/RISO/reg_email_benvenuto_ammesso/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
=`Benvenuto in ${nomeapp}`
|
||||||
394
emails/RISO/reg_notifica_all_invitante/it/html.pug
Executable file
394
emails/RISO/reg_notifica_all_invitante/it/html.pug
Executable file
@@ -0,0 +1,394 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 120px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header .subtitle {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 17px;
|
||||||
|
opacity: 0.95;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success-icon {
|
||||||
|
font-size: 56px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box {
|
||||||
|
background: #fff8dc;
|
||||||
|
border-left: 4px solid #7cb342;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box p {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card {
|
||||||
|
background: linear-gradient(135deg, #f8fdf8 0%, #e8f5e9 100%);
|
||||||
|
border: 2px solid #7cb342;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card h3 {
|
||||||
|
font-size: 14px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #558b2f;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card .member-name {
|
||||||
|
font-size: 24px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card .member-detail {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card .member-detail strong {
|
||||||
|
color: #558b2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box {
|
||||||
|
background: #e8f5e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
color: #2e7d32;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tips-section {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tips-section h3 {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
min-width: 24px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttprof-section {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
text-align: center;
|
||||||
|
margin: 24px 0;
|
||||||
|
padding: 20px 0;
|
||||||
|
border-top: 1px solid #e0e0e0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 16px 48px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 4px 12px rgba(124, 179, 66, 0.3);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thank-you-box {
|
||||||
|
background: linear-gradient(135deg, #fff8dc 0%, #fef9f3 100%);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thank-you-box p {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.7;
|
||||||
|
margin: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thank-you-box strong {
|
||||||
|
color: #558b2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-button {
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 16px;
|
||||||
|
padding: 12px 32px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
border-radius: 25px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 3px 10px rgba(124, 179, 66, 0.25);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 14px 32px;
|
||||||
|
font-size: 16px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card .member-name {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-item {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
//- Header
|
||||||
|
.email-header
|
||||||
|
img.header-logo(src=baseurl+'/images/logo.png' alt=nomeapp+' - Rete Italiana Scambio orizzontale')
|
||||||
|
h1 🎉 Il tuo invito è stato accettato!
|
||||||
|
p.subtitle Un nuovo membro si è unito a #{nomeapp}
|
||||||
|
|
||||||
|
//- Body
|
||||||
|
.email-body
|
||||||
|
//- Intro
|
||||||
|
.intro-text
|
||||||
|
| Ciao <strong>#{nomeInvitante}</strong>,<br>
|
||||||
|
| la persona che hai invitato, o che ha usato il tuo username come invitante, si è appena registrata su #{nomeapp}!
|
||||||
|
|
||||||
|
//- Card nuovo membro
|
||||||
|
.member-card
|
||||||
|
h3 👤 Nuovo Membro Registrato
|
||||||
|
.member-name #{nomeInvitato}
|
||||||
|
if emailInvitato
|
||||||
|
.member-detail
|
||||||
|
strong Email:
|
||||||
|
a(href=`mailto:${emailInvitato}` style="color: #667eea; text-decoration: none;") #{emailInvitato}
|
||||||
|
if usernameInvitato
|
||||||
|
.member-detail
|
||||||
|
strong Username:
|
||||||
|
| #{usernameInvitato}
|
||||||
|
|
||||||
|
//- Bottone profilo
|
||||||
|
if usernameInvitato
|
||||||
|
.buttprof-section
|
||||||
|
a.profile-button(href=strlinksito + '/my/' + usernameInvitato target="_blank")
|
||||||
|
| 👤 Visualizza Profilo di #{usernameInvitato}
|
||||||
|
|
||||||
|
//- Ringraziamento
|
||||||
|
.thank-you-box
|
||||||
|
p
|
||||||
|
| 🙏 <strong>Grazie per aver contribuito alla crescita di #{nomeapp}!</strong>
|
||||||
|
p
|
||||||
|
| Ogni nuovo ingresso rende la nostra comunità più forte e ricca di opportunità.
|
||||||
|
| Il tuo invito aiuta #{nomeInvitato} a scoprire un nuovo modo di fare economia,
|
||||||
|
| basato su fiducia, comunità e scambi solidali.
|
||||||
|
|
||||||
|
//- Suggerimenti
|
||||||
|
.tips-section
|
||||||
|
h3 💡 Come puoi aiutare #{nomeInvitato}
|
||||||
|
.tip-item
|
||||||
|
span.tip-icon 🤝
|
||||||
|
span.tip-text
|
||||||
|
strong Connettiti con loro:
|
||||||
|
| Aiutali a sentirsi parte della comunità e presentali ad altri membri del circuito
|
||||||
|
.tip-item
|
||||||
|
span.tip-icon 📱
|
||||||
|
span.tip-text
|
||||||
|
strong Mostra come funziona #{nomeapp}:
|
||||||
|
| Spiega come creare annunci, usare i RIS e partecipare agli scambi nella tua zona
|
||||||
|
.tip-item
|
||||||
|
span.tip-icon 📲
|
||||||
|
span.tip-text
|
||||||
|
strong Gruppo Telegram:
|
||||||
|
| Incoraggiali a unirsi al gruppo Telegram del vostro circuito provinciale
|
||||||
|
.tip-item
|
||||||
|
span.tip-icon 🎯
|
||||||
|
span.tip-text
|
||||||
|
strong Profilo completo:
|
||||||
|
| Ricorda loro di completare il profilo per poter iniziare a scambiare
|
||||||
|
|
||||||
|
//- Info box
|
||||||
|
.info-box
|
||||||
|
p
|
||||||
|
| ✓ #{nomeInvitato} ha ricevuto un'email di benvenuto con tutte le istruzioni
|
||||||
|
p
|
||||||
|
| ✓ Dovrà completare il profilo prima di poter usare i RIS
|
||||||
|
p
|
||||||
|
| ✓ Il facilitatore locale valuterà l'abilitazione all'uso dei RIS
|
||||||
|
|
||||||
|
//- CTA
|
||||||
|
.cta-section
|
||||||
|
.cta-title Visita la Piattaforma
|
||||||
|
a.cta-button(href=strlinksito target="_blank") Vai su #{nomeapp}
|
||||||
|
|
||||||
|
//- Highlight box
|
||||||
|
.highlight-box
|
||||||
|
p
|
||||||
|
| 🌱 <strong>Costruiamo insieme un'economia più solidale!</strong><br>
|
||||||
|
| Continua a condividere #{nomeapp} con persone di fiducia della tua comunità.
|
||||||
|
| Più siamo, più scambi possibili ci sono per tutti!
|
||||||
|
|
||||||
|
//- Footer
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p Hai ricevuto questa email perché hai invitato #{nomeInvitato} su #{nomeapp} oppure la persona ha usato il tuo username come invitante
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| #{new Date().getFullYear()} #{nomeapp} - Rete Italiana Scambio orizzontale
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| 🍚 Comunità · Fiducia · Scambi Solidali · Sostenibilità
|
||||||
1
emails/RISO/reg_notifica_all_invitante/it/subject.pug
Executable file
1
emails/RISO/reg_notifica_all_invitante/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
=`🎉 Il tuo invito è stato accettato su RISO da ${name ? name : username} !`
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
p #{username} (#{name} #{surname}) si è appena Iscritto ad Arcadei Foundation su #{nomeapp}
|
|
||||||
p Con i seguenti dati di accesso:
|
|
||||||
span Nome:
|
|
||||||
strong #{iscritto.name}<br>
|
|
||||||
span Cognome:
|
|
||||||
strong #{iscritto.surname}<br>
|
|
||||||
span Email:
|
|
||||||
strong #{iscritto.email}<br>
|
|
||||||
span Email Secondaria:
|
|
||||||
strong #{iscritto.email2}<br>
|
|
||||||
span Indirizzo di Residenza:
|
|
||||||
strong #{iscritto.residency_address}<br>
|
|
||||||
span Città di Residenza:
|
|
||||||
strong #{iscritto.residency_city}<br>
|
|
||||||
span Provincia:
|
|
||||||
strong #{iscritto.residency_province}<br>
|
|
||||||
span CAP:
|
|
||||||
strong #{iscritto.residency_zipcode}<br>
|
|
||||||
span Nazione:
|
|
||||||
strong #{iscritto.residency_country}<br>
|
|
||||||
span Data di Nascita:
|
|
||||||
strong #{data_nascita}<br>
|
|
||||||
span Città di Nascita:
|
|
||||||
strong #{iscritto.born_city}<br>
|
|
||||||
span Provincia di Nascita:
|
|
||||||
strong #{iscritto.born_province}<br>
|
|
||||||
span Paese di Nascita:
|
|
||||||
strong #{iscritto.born_country}<br>
|
|
||||||
span Telefono:
|
|
||||||
strong #{iscritto.cell_phone}<br>
|
|
||||||
span Telefono2:
|
|
||||||
strong #{iscritto.cell_phone2}<br>
|
|
||||||
span Tipo di Documento :
|
|
||||||
strong #{iscritto.doctype}<br>
|
|
||||||
span Numero Documento :
|
|
||||||
strong #{iscritto.documentnumber}<br>
|
|
||||||
span Metodo di Pagamento :
|
|
||||||
strong #{iscritto.metodo_pagamento}<br>
|
|
||||||
span Quota scelta da versare :
|
|
||||||
strong #{iscritto.quota_versata}<br>
|
|
||||||
span Scrivi altre eventuali informazioni o comunicazioni:
|
|
||||||
strong #{iscritto.altre_comunicazioni}<br>
|
|
||||||
span Categorie d'Interesse :
|
|
||||||
strong #{iscritto.categorie_interesse}<br>
|
|
||||||
p <br>Saluti
|
|
||||||
|
|
||||||
style(type="text/css").
|
|
||||||
html, body {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
p {
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divbtn {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-lg {
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px;
|
|
||||||
font-size: 26px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: white;
|
|
||||||
background: #027be3 !important;
|
|
||||||
border-radius: 28px;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
=`Nuova Iscrizione Arcadei di ${name} ${surname} (${emailto}) su ${nomeapp}`
|
|
||||||
@@ -1,42 +1,185 @@
|
|||||||
p #{username} (#{name} #{surname}) si è appena Registrato su #{nomeapp}
|
doctype html
|
||||||
p Con i seguenti dati di accesso:
|
html(lang="it")
|
||||||
span Username:
|
head
|
||||||
strong #{username}<br>
|
meta(charset="UTF-8")
|
||||||
span Email:
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
strong #{emailto}<br>
|
|
||||||
span Invitante:
|
|
||||||
strong #{aportador_solidario}<br>
|
|
||||||
span Nome:
|
|
||||||
strong #{user.name}<br>
|
|
||||||
span Cognome:
|
|
||||||
strong #{user.surname}<br>
|
|
||||||
span Cellulare:
|
|
||||||
strong #{user.profile.intcode_cell} #{user.profile.cell}<br>
|
|
||||||
span Nazionalità:
|
|
||||||
strong #{user.profile.nationality}<br>
|
|
||||||
span Gruppo:
|
|
||||||
strong #{idMyGroup}<br>
|
|
||||||
p <br>Saluti
|
|
||||||
|
|
||||||
style(type="text/css").
|
style(type="text/css").
|
||||||
html, body {
|
* {
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.divbtn {
|
body {
|
||||||
display: flex;
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
align-items: center;
|
background-color: #f5f5f5;
|
||||||
justify-content: center;
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-lg {
|
.email-container {
|
||||||
padding: 5px;
|
max-width: 600px;
|
||||||
margin: 5px;
|
margin: 0 auto;
|
||||||
font-size: 26px;
|
background: white;
|
||||||
cursor: pointer;
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #027be3 0%, #0056b3 100%);
|
||||||
color: white;
|
color: white;
|
||||||
background: #027be3 !important;
|
padding: 32px 24px;
|
||||||
border-radius: 28px;
|
text-align: center;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header p {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 14px;
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-info {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-row {
|
||||||
|
display: flex;
|
||||||
|
padding: 10px 0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-row:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-label {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #555;
|
||||||
|
min-width: 140px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-value {
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-size: 14px;
|
||||||
|
flex: 1;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 24px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight {
|
||||||
|
display: inline-block;
|
||||||
|
background: #e3f2fd;
|
||||||
|
color: #027be3;
|
||||||
|
padding: 2px 8px;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-row {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-label {
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
.email-header
|
||||||
|
h1 ✓ Nuova Registrazione su #{nomeapp}
|
||||||
|
p #{nomeapp || 'Piattaforma'}
|
||||||
|
|
||||||
|
.email-body
|
||||||
|
p(style="margin-bottom: 20px; font-size: 15px; color: #333;")
|
||||||
|
| L'utente
|
||||||
|
span.highlight #{username || 'N/D'}
|
||||||
|
| si è appena registrato sulla piattaforma #{nomeapp}.
|
||||||
|
|
||||||
|
.user-info
|
||||||
|
if username
|
||||||
|
.info-row
|
||||||
|
.info-label Username:
|
||||||
|
.info-value #{username}
|
||||||
|
|
||||||
|
if emailto
|
||||||
|
.info-row
|
||||||
|
.info-label Email:
|
||||||
|
.info-value #{emailto}
|
||||||
|
|
||||||
|
if user && user.name
|
||||||
|
.info-row
|
||||||
|
.info-label Nome:
|
||||||
|
.info-value #{user.name}
|
||||||
|
|
||||||
|
if user && user.surname
|
||||||
|
.info-row
|
||||||
|
.info-label Cognome:
|
||||||
|
.info-value #{user.surname}
|
||||||
|
|
||||||
|
if user && user.profile && (user.profile.cell || user.profile.intcode_cell)
|
||||||
|
.info-row
|
||||||
|
.info-label Cellulare:
|
||||||
|
.info-value
|
||||||
|
| #{user.profile.intcode_cell || ''} #{user.profile.cell || ''}
|
||||||
|
|
||||||
|
if user && user.profile && (user.profile.resid_str_comune && user.profile.resid_province)
|
||||||
|
.info-row
|
||||||
|
.info-label Comune di Residenza:
|
||||||
|
.info-value
|
||||||
|
| #{user.profile.resid_str_comune || ''} (#{user.profile.resid_province || ''})
|
||||||
|
|
||||||
|
if user && user.profile && user.profile.nationality
|
||||||
|
.info-row
|
||||||
|
.info-label Nazionalità:
|
||||||
|
.info-value #{user.profile.nationality}
|
||||||
|
|
||||||
|
if aportador_solidario
|
||||||
|
.info-row
|
||||||
|
.info-label Invitante:
|
||||||
|
.info-value #{aportador_solidario}
|
||||||
|
|
||||||
|
if idMyGroup
|
||||||
|
.info-row
|
||||||
|
.info-label Gruppo:
|
||||||
|
.info-value #{idMyGroup}
|
||||||
|
|
||||||
|
.email-footer
|
||||||
|
p Questa è una email automatica di notifica
|
||||||
|
p(style="margin-top: 8px; font-size: 12px;")
|
||||||
|
| © #{new Date().getFullYear()} #{nomeapp || ''}.
|
||||||
375
emails/defaultSite/reg_chiedi_ammettere_all_invitante/it/html.pug
Executable file
375
emails/defaultSite/reg_chiedi_ammettere_all_invitante/it/html.pug
Executable file
@@ -0,0 +1,375 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 120px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header .subtitle {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 17px;
|
||||||
|
opacity: 0.95;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-icon {
|
||||||
|
font-size: 56px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card {
|
||||||
|
background: linear-gradient(135deg, #fff8dc 0%, #fef9f3 100%);
|
||||||
|
border: 2px solid #f0ad4e;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 24px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card h3 {
|
||||||
|
font-size: 14px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #f0ad4e;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-name {
|
||||||
|
font-size: 28px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-detail {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-detail strong {
|
||||||
|
color: #f0ad4e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-box {
|
||||||
|
background: #fff3cd;
|
||||||
|
border-left: 4px solid #f0ad4e;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 24px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-box p {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
text-align: center;
|
||||||
|
margin: 32px 0;
|
||||||
|
padding: 24px 0;
|
||||||
|
border-top: 2px solid #e0e0e0;
|
||||||
|
border-bottom: 2px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 18px 56px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 6px 20px rgba(124, 179, 66, 0.4);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box {
|
||||||
|
background: #e8f5e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
color: #2e7d32;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-box {
|
||||||
|
background: #f8d7da;
|
||||||
|
border-left: 4px solid #dc3545;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-box p {
|
||||||
|
margin: 0;
|
||||||
|
color: #721c24;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-box strong {
|
||||||
|
color: #dc3545;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-box {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-box h3 {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
min-width: 24px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-text {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.request-card .member-name {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.question-box p {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 16px 40px;
|
||||||
|
font-size: 18px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.responsibility-item {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
//- Header
|
||||||
|
.email-header
|
||||||
|
img.header-logo(src=baseurl+'/images/logo.png' alt=nomeapp)
|
||||||
|
h1 🔔 Richiesta di Ammissione
|
||||||
|
p.subtitle Nuovo membro in attesa
|
||||||
|
|
||||||
|
//- Body
|
||||||
|
.email-body
|
||||||
|
//- Intro
|
||||||
|
.intro-text
|
||||||
|
| Ciao <strong>#{nomeInvitante}</strong>,<br>
|
||||||
|
| hai una nuova richiesta di ammissione da confermare!
|
||||||
|
|
||||||
|
//- Card richiesta
|
||||||
|
.request-card
|
||||||
|
h3 👤 Richiesta di Ingresso
|
||||||
|
.member-name #{usernameInvitato}
|
||||||
|
if nomeInvitato
|
||||||
|
.member-detail
|
||||||
|
strong Nome:
|
||||||
|
| #{nomeInvitato}
|
||||||
|
if emailInvitato
|
||||||
|
.member-detail
|
||||||
|
strong Email:
|
||||||
|
| #{emailInvitato}
|
||||||
|
if userprofile && userprofile.profile.resid_str_comune && userprofile.profile.resid_province
|
||||||
|
.member-detail
|
||||||
|
strong Comune Residenza:
|
||||||
|
| #{userprofile.profile.resid_str_comune} (#{userprofile.profile.resid_province})
|
||||||
|
|
||||||
|
//- Domanda di conferma
|
||||||
|
.question-box
|
||||||
|
p 🤔 Confermi di conoscere #{nomeInvitato}?
|
||||||
|
|
||||||
|
//- CTA principale
|
||||||
|
.cta-section
|
||||||
|
.cta-title Ammetti #{usernameInvitato} su #{nomeapp}
|
||||||
|
a.cta-button(href=linkAmmissione target="_blank")
|
||||||
|
span.button-icon ✓
|
||||||
|
| Sì, Confermo
|
||||||
|
|
||||||
|
//- Responsabilità
|
||||||
|
.responsibility-box
|
||||||
|
h3 📋 La tua responsabilità come invitante
|
||||||
|
.responsibility-item
|
||||||
|
span.responsibility-icon 🤝
|
||||||
|
span.responsibility-text
|
||||||
|
strong Conoscenza diretta:
|
||||||
|
| Dovresti ammettere solo persone che conosci personalmente e di cui ti fidi
|
||||||
|
.responsibility-item
|
||||||
|
span.responsibility-icon 🛡️
|
||||||
|
span.responsibility-text
|
||||||
|
strong Fiducia:
|
||||||
|
| L'ammissione si basa sulla fiducia reciproca nella piattaforma su #{nomeapp}
|
||||||
|
.responsibility-item
|
||||||
|
span.responsibility-icon 👥
|
||||||
|
span.responsibility-text
|
||||||
|
strong Supporto:
|
||||||
|
| Come invitante, aiuterai il nuovo membro a integrarsi nella comunità
|
||||||
|
|
||||||
|
//- Info box
|
||||||
|
.info-box
|
||||||
|
p
|
||||||
|
| ✓ Dopo l'ammissione, #{usernameInvitato} potrà completare il profilo
|
||||||
|
p
|
||||||
|
| ✓ Il facilitatore locale valuterà l'abilitazione all'uso dei RIS
|
||||||
|
|
||||||
|
//- Warning box
|
||||||
|
.warning-box
|
||||||
|
p
|
||||||
|
strong ⚠️ Importante:
|
||||||
|
| Se non conosci questa persona o hai dubbi sull'ammissione, ti consigliamo di non procedere. Puoi contattare il facilitatore locale per ulteriori informazioni o semplicemente non cliccare sul pulsante di conferma.
|
||||||
|
|
||||||
|
//- Footer
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p Hai ricevuto questa email perché #{usernameInvitato} ha indicato te come invitante su #{nomeapp}
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| #{new Date().getFullYear()} #{nomeapp} - Rete Italiana Scambi Orizzontali
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| 🍚 Comunità · Fiducia · Scambi Solidali · Sostenibilità
|
||||||
1
emails/defaultSite/reg_chiedi_ammettere_all_invitante/it/subject.pug
Executable file
1
emails/defaultSite/reg_chiedi_ammettere_all_invitante/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
=`🎉 ${name ? ', ' + name : username} chiede di essere ammesso su ${nomeapp} !`
|
||||||
471
emails/defaultSite/reg_email_benvenuto_ammesso/it/html.pug
Executable file
471
emails/defaultSite/reg_email_benvenuto_ammesso/it/html.pug
Executable file
@@ -0,0 +1,471 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 80px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #2E7D32 0%, #1B5E20 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header p {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 16px;
|
||||||
|
opacity: 0.95;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 24px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text strong {
|
||||||
|
color: #2E7D32;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-message {
|
||||||
|
background: linear-gradient(135deg, #E8F5E9 0%, #C8E6C9 100%);
|
||||||
|
border-left: 4px solid #2E7D32;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-message h2 {
|
||||||
|
color: #1B5E20;
|
||||||
|
font-size: 20px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-message p {
|
||||||
|
color: #2E7D32;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credentials-box {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-left: 4px solid #2E7D32;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credentials-title {
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #555;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 8px 0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-row:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-label {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #666;
|
||||||
|
min-width: 120px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-value {
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 500;
|
||||||
|
flex: 1;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-value a {
|
||||||
|
color: #2E7D32;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-value a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
margin: 24px 0;
|
||||||
|
padding: 20px 0;
|
||||||
|
border-top: 1px solid #e0e0e0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 19px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-subtitle {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-buttons-wrapper {
|
||||||
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: stretch;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 16px 28px;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #2E7D32 0%, #1B5E20 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 4px 12px rgba(46, 125, 50, 0.3);
|
||||||
|
transition: transform 0.2s, box-shadow 0.2s;
|
||||||
|
flex: 1;
|
||||||
|
min-width: 160px;
|
||||||
|
max-width: 200px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 6px 16px rgba(46, 125, 50, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-secondary {
|
||||||
|
background: linear-gradient(135deg, #388E3C 0%, #2E7D32 100%);
|
||||||
|
box-shadow: 0 4px 12px rgba(56, 142, 60, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-secondary:hover {
|
||||||
|
box-shadow: 0 6px 16px rgba(56, 142, 60, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-tertiary {
|
||||||
|
background: linear-gradient(135deg, #66BB6A 0%, #4CAF50 100%);
|
||||||
|
box-shadow: 0 4px 12px rgba(76, 175, 80, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button-tertiary:hover {
|
||||||
|
box-shadow: 0 6px 16px rgba(76, 175, 80, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
font-size: 18px;
|
||||||
|
margin-right: 6px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next-steps {
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 24px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next-steps-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #2E7D32;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 12px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
background: #f8fdf9;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-left: 3px solid #4CAF50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-number {
|
||||||
|
background: linear-gradient(135deg, #4CAF50 0%, #388E3C 100%);
|
||||||
|
color: white;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 16px;
|
||||||
|
margin-right: 12px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content h3 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #1B5E20;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content p {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.5;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box {
|
||||||
|
background: linear-gradient(135deg, #E8F5E9 0%, #C8E6C9 100%);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin-top: 20px;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px solid #A5D6A7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p {
|
||||||
|
margin: 0;
|
||||||
|
color: #1B5E20;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box strong {
|
||||||
|
color: #2E7D32;
|
||||||
|
}
|
||||||
|
|
||||||
|
.community-note {
|
||||||
|
background: #fff3e0;
|
||||||
|
border-left: 4px solid #FF9800;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.community-note p {
|
||||||
|
color: #E65100;
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px 16px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 24px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header p {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-message {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credentials-box {
|
||||||
|
padding: 16px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-row {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-label {
|
||||||
|
margin-bottom: 4px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.credential-value {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-buttons-wrapper {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 14px 24px;
|
||||||
|
font-size: 15px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-item {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-number {
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content h3 {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content p {
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
.email-header
|
||||||
|
- var baseimg = baseurl + '/';
|
||||||
|
img.header-logo(src=baseimg+"images/logo.png" alt=nomeapp || 'Logo')
|
||||||
|
h1 💚 #{name || username ? ',' : ''} Benvenuto/a nella piattaforma #{nomeapp} 💚 !
|
||||||
|
|
||||||
|
.email-body
|
||||||
|
.welcome-message
|
||||||
|
if ammessoUtente
|
||||||
|
h2 🎉 Il tuo invitante #{nomeInvitante} ti ha ammesso!
|
||||||
|
p Sei ora un membro attivo della Rete Italiana di Scambio Orizzontale
|
||||||
|
p Inizia subito a scoprire beni, servizi e ospitalità nella tua comunità territoriale
|
||||||
|
|
||||||
|
.credentials-box
|
||||||
|
.credentials-title 📋 I tuoi dati di accesso
|
||||||
|
|
||||||
|
if username
|
||||||
|
.credential-row
|
||||||
|
.credential-label Username:
|
||||||
|
.credential-value #{username}
|
||||||
|
|
||||||
|
if emailto
|
||||||
|
.credential-row
|
||||||
|
.credential-label Email:
|
||||||
|
.credential-value #{emailto}
|
||||||
|
|
||||||
|
if forgetpwd
|
||||||
|
.credential-row
|
||||||
|
.credential-label Password:
|
||||||
|
.credential-value
|
||||||
|
| (la password che hai inserito)
|
||||||
|
br
|
||||||
|
a(href=forgetpwd target="_blank") Hai dimenticato la password?
|
||||||
|
|
||||||
|
.cta-section
|
||||||
|
.cta-title 🚀 Accedi e inizia il tuo viaggio
|
||||||
|
.cta-subtitle Scegli come vuoi accedere alla piattaforma
|
||||||
|
|
||||||
|
if strlinksito
|
||||||
|
.cta-buttons-wrapper
|
||||||
|
a.cta-button(href=strlinksito target="_blank")
|
||||||
|
span.button-icon 🌐
|
||||||
|
| Accedi da Web
|
||||||
|
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p 💚 Benvenuto/a nella famiglia #{nomeapp}!
|
||||||
|
p(style="margin-top: 8px;") Hai ricevuto questa email perché sei stato/a ammesso/a nella community di #{nomeapp}
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| © #{new Date().getFullYear()} #{nomeapp}
|
||||||
1
emails/defaultSite/reg_email_benvenuto_ammesso/it/subject.pug
Executable file
1
emails/defaultSite/reg_email_benvenuto_ammesso/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
=`Benvenuto in ${nomeapp}`
|
||||||
342
emails/defaultSite/reg_notifica_all_invitante/it/html.pug
Executable file
342
emails/defaultSite/reg_notifica_all_invitante/it/html.pug
Executable file
@@ -0,0 +1,342 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 120px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header .subtitle {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 17px;
|
||||||
|
opacity: 0.95;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success-icon {
|
||||||
|
font-size: 56px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box {
|
||||||
|
background: #fff8dc;
|
||||||
|
border-left: 4px solid #7cb342;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box p {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card {
|
||||||
|
background: linear-gradient(135deg, #f8fdf8 0%, #e8f5e9 100%);
|
||||||
|
border: 2px solid #7cb342;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card h3 {
|
||||||
|
font-size: 14px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: #558b2f;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card .member-name {
|
||||||
|
font-size: 24px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card .member-detail {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card .member-detail strong {
|
||||||
|
color: #558b2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box {
|
||||||
|
background: #e8f5e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
color: #2e7d32;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tips-section {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tips-section h3 {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
min-width: 24px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
text-align: center;
|
||||||
|
margin: 24px 0;
|
||||||
|
padding: 20px 0;
|
||||||
|
border-top: 1px solid #e0e0e0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 16px 48px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 4px 12px rgba(124, 179, 66, 0.3);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thank-you-box {
|
||||||
|
background: linear-gradient(135deg, #fff8dc 0%, #fef9f3 100%);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thank-you-box p {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.7;
|
||||||
|
margin: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thank-you-box strong {
|
||||||
|
color: #558b2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 14px 32px;
|
||||||
|
font-size: 16px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-card .member-name {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-item {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
//- Header
|
||||||
|
.email-header
|
||||||
|
img.header-logo(src=baseurl+'/images/logo.png' alt=nomeapp+' - Rete Italiana Scambio orizzontale')
|
||||||
|
h1 🎉 Il tuo invito è stato accettato!
|
||||||
|
p.subtitle Un nuovo membro si è unito a #{nomeapp}
|
||||||
|
|
||||||
|
//- Body
|
||||||
|
.email-body
|
||||||
|
//- Intro
|
||||||
|
.intro-text
|
||||||
|
| Ciao <strong>#{nomeInvitante}</strong>,<br>
|
||||||
|
| la persona che hai invitato, o che ha usato il tuo username come invitante, si è appena registrata su #{nomeapp}!
|
||||||
|
|
||||||
|
//- Card nuovo membro
|
||||||
|
.member-card
|
||||||
|
h3 👤 Nuovo Membro Registrato
|
||||||
|
.member-name #{nomeInvitato}
|
||||||
|
if emailInvitato
|
||||||
|
.member-detail
|
||||||
|
strong Email:
|
||||||
|
a(href=`mailto:${emailInvitato}` style="color: #667eea; text-decoration: none;") #{emailInvitato}
|
||||||
|
if usernameInvitato
|
||||||
|
.member-detail
|
||||||
|
strong Username:
|
||||||
|
| #{usernameInvitato}
|
||||||
|
|
||||||
|
//- Ringraziamento
|
||||||
|
.thank-you-box
|
||||||
|
p
|
||||||
|
| 🙏 <strong>Grazie per aver contribuito alla crescita di #{nomeapp}!</strong>
|
||||||
|
p
|
||||||
|
| Ogni nuovo membro rende la nostra comunità più forte e ricca di opportunità.
|
||||||
|
| Il tuo invito ha aiutato #{nomeInvitato} a scoprire un nuovo modo di fare economia,
|
||||||
|
| basato su fiducia, comunità e scambi solidali.
|
||||||
|
|
||||||
|
//- Info box
|
||||||
|
.info-box
|
||||||
|
p
|
||||||
|
| ✓ #{nomeInvitato} ha ricevuto un'email di benvenuto con tutte le istruzioni
|
||||||
|
|
||||||
|
//- CTA
|
||||||
|
.cta-section
|
||||||
|
.cta-title Visita la Piattaforma
|
||||||
|
a.cta-button(href=strlinksito target="_blank") Vai su #{nomeapp}
|
||||||
|
|
||||||
|
//- Highlight box
|
||||||
|
.highlight-box
|
||||||
|
p
|
||||||
|
| 🌱 <strong>Costruiamo insieme un'economia più solidale!</strong><br>
|
||||||
|
| Continua a condividere #{nomeapp} con persone di fiducia della tua comunità.
|
||||||
|
| Più siamo, più scambi possibili ci sono per tutti!
|
||||||
|
|
||||||
|
//- Footer
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p Hai ricevuto questa email perché hai invitato #{nomeInvitato} su #{nomeapp} oppure la persona ha usato il tuo username come invitante
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| #{new Date().getFullYear()} #{nomeapp}
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| 🍚 Comunità · Fiducia · Scambi Solidali · Sostenibilità
|
||||||
1
emails/defaultSite/reg_notifica_all_invitante/it/subject.pug
Executable file
1
emails/defaultSite/reg_notifica_all_invitante/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
=`🎉 Il tuo invito è stato accettato su ${nomeapp} da ${name ? name : username} !`
|
||||||
404
emails/defaultSite/reg_resend_email_to_verifiyng/it/html.pug
Executable file
404
emails/defaultSite/reg_resend_email_to_verifiyng/it/html.pug
Executable file
@@ -0,0 +1,404 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 80px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #1976D2 0%, #1565C0 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header p {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 16px;
|
||||||
|
opacity: 0.95;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.verification-icon {
|
||||||
|
font-size: 56px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 24px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text strong {
|
||||||
|
color: #1976D2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-message {
|
||||||
|
background: linear-gradient(135deg, #E3F2FD 0%, #BBDEFB 100%);
|
||||||
|
border-left: 4px solid #1976D2;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-message h2 {
|
||||||
|
color: #1565C0;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-message p {
|
||||||
|
color: #1976D2;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-box {
|
||||||
|
background: #FFF8E1;
|
||||||
|
border-left: 4px solid #FFA000;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-box p {
|
||||||
|
color: #E65100;
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-box strong {
|
||||||
|
color: #BF360C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-info-box {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-left: 4px solid #1976D2;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-info-title {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #555;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-address {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1976D2;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
margin: 24px 0;
|
||||||
|
padding: 24px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 19px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-subtitle {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 18px 40px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #1976D2 0%, #1565C0 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 4px 12px rgba(25, 118, 210, 0.35);
|
||||||
|
transition: transform 0.2s, box-shadow 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 6px 16px rgba(25, 118, 210, 0.45);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-fallback {
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 16px;
|
||||||
|
background: #f5f5f5;
|
||||||
|
border-radius: 8px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-fallback p {
|
||||||
|
font-size: 13px;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-fallback a {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #1976D2;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.expiry-notice {
|
||||||
|
background: linear-gradient(135deg, #FFEBEE 0%, #FFCDD2 100%);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 24px 0;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px solid #EF9A9A;
|
||||||
|
}
|
||||||
|
|
||||||
|
.expiry-notice p {
|
||||||
|
margin: 0;
|
||||||
|
color: #C62828;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.expiry-notice strong {
|
||||||
|
color: #B71C1C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-section {
|
||||||
|
background: #FAFAFA;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 24px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-section h3 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-section p {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666;
|
||||||
|
margin: 8px 0;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-section a {
|
||||||
|
color: #1976D2;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.help-section a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.security-note {
|
||||||
|
background: #E8F5E9;
|
||||||
|
border-left: 4px solid #4CAF50;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 14px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.security-note p {
|
||||||
|
font-size: 13px;
|
||||||
|
color: #2E7D32;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px 16px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 24px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header p {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-message {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-address {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 16px 32px;
|
||||||
|
font-size: 15px;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-fallback a {
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
.email-header
|
||||||
|
- var baseimg = baseurl + '/';
|
||||||
|
h1 ✉️ Verifica il tuo indirizzo email
|
||||||
|
p Conferma la tua email per continuare a usare #{nomeapp}
|
||||||
|
|
||||||
|
.email-body
|
||||||
|
.intro-text
|
||||||
|
| Ciao
|
||||||
|
strong #{name || username}
|
||||||
|
| ! 👋
|
||||||
|
br
|
||||||
|
| Abbiamo ricevuto una richiesta per verificare nuovamente il tuo indirizzo email.
|
||||||
|
|
||||||
|
.info-message
|
||||||
|
h2 📧 Perché devo verificare di nuovo?
|
||||||
|
p Potrebbe essere perché hai cambiato email, per motivi di sicurezza, o perché la verifica precedente è scaduta.
|
||||||
|
p Questa procedura ci aiuta a mantenere sicuro il tuo account.
|
||||||
|
|
||||||
|
if emailto
|
||||||
|
.email-info-box
|
||||||
|
.email-info-title Email da verificare
|
||||||
|
.email-address #{emailto}
|
||||||
|
|
||||||
|
.cta-section
|
||||||
|
.cta-title Conferma il tuo indirizzo email
|
||||||
|
.cta-subtitle Clicca il bottone qui sotto per completare la verifica
|
||||||
|
|
||||||
|
if verifyLink
|
||||||
|
a.cta-button(href=verifyLink target="_blank")
|
||||||
|
span.button-icon ✓
|
||||||
|
| Verifica Email
|
||||||
|
|
||||||
|
.link-fallback
|
||||||
|
p Se il bottone non funziona, copia e incolla questo link nel browser:
|
||||||
|
a(href=verifyLink) #{verifyLink}
|
||||||
|
|
||||||
|
.expiry-notice
|
||||||
|
p ⏰ Questo link scadrà tra
|
||||||
|
strong 24 ore
|
||||||
|
| .
|
||||||
|
p Se non completi la verifica in tempo, dovrai richiedere un nuovo link.
|
||||||
|
|
||||||
|
.warning-box
|
||||||
|
p ⚠️
|
||||||
|
strong Non hai richiesto questa verifica?
|
||||||
|
| Ignora questa email. Il tuo account resterà al sicuro.
|
||||||
|
|
||||||
|
.security-note
|
||||||
|
p 🔒 Per la tua sicurezza: non condividere mai questo link con nessuno. Il team di #{nomeapp} non ti chiederà mai la password via email.
|
||||||
|
|
||||||
|
.help-section
|
||||||
|
h3 Hai bisogno di aiuto?
|
||||||
|
p Non riesci a verificare la tua email?
|
||||||
|
if supportEmail
|
||||||
|
p Contattaci a
|
||||||
|
a(href="mailto:" + supportEmail) #{supportEmail}
|
||||||
|
if strlinksito
|
||||||
|
p Oppure visita la nostra
|
||||||
|
a(href=strlinksito + '/supporto' target="_blank") pagina di supporto
|
||||||
|
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p Hai ricevuto questa email perché è stata richiesta una verifica per il tuo account su #{nomeapp}
|
||||||
|
p(style="margin-top: 8px; font-size: 12px; color: #999;")
|
||||||
|
| Se non hai fatto tu questa richiesta, puoi ignorare questa email.
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| © #{new Date().getFullYear()} #{nomeapp}
|
||||||
1
emails/defaultSite/reg_resend_email_to_verifiyng/it/subject.pug
Executable file
1
emails/defaultSite/reg_resend_email_to_verifiyng/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
Verifica la tua Email - ${nomeapp}`
|
||||||
@@ -55,8 +55,7 @@ html
|
|||||||
|
|
||||||
|
|
||||||
tr
|
tr
|
||||||
td(class="whitespace", height="10")
|
td
|
||||||
p
|
|
||||||
|
|
||||||
- var totalPrice = orders.totalPrice
|
- var totalPrice = orders.totalPrice
|
||||||
- var note = orders.note
|
- var note = orders.note
|
||||||
@@ -64,7 +63,8 @@ html
|
|||||||
|
|
||||||
each rec in orders.items
|
each rec in orders.items
|
||||||
- var descr = rec.order.product.productInfo.name
|
- var descr = rec.order.product.productInfo.name
|
||||||
- var img = rec.order.product.productInfo.img
|
- var code = rec.order.product.productInfo.code
|
||||||
|
- var img = dirimg + rec.order.product.productInfo.imagefile
|
||||||
- var price = rec.order.price
|
- var price = rec.order.price
|
||||||
- var after_price = rec.order.after_price
|
- var after_price = rec.order.after_price
|
||||||
- var TotalPriceProduct = rec.order.TotalPriceProductstr
|
- var TotalPriceProduct = rec.order.TotalPriceProductstr
|
||||||
@@ -104,6 +104,9 @@ html
|
|||||||
tr
|
tr
|
||||||
td(class="sectionContentTitle boldhigh", valign="top")
|
td(class="sectionContentTitle boldhigh", valign="top")
|
||||||
p #{descr}
|
p #{descr}
|
||||||
|
tr
|
||||||
|
td(class="sectionContent", valign="top")
|
||||||
|
p Codice: #{code}
|
||||||
tr
|
tr
|
||||||
td(class="sectionContent", valign="top")
|
td(class="sectionContent", valign="top")
|
||||||
p Prezzo: #{price} € #{after_price}
|
p Prezzo: #{price} € #{after_price}
|
||||||
@@ -118,7 +121,7 @@ html
|
|||||||
p Totale: #{TotalPriceProduct} €
|
p Totale: #{TotalPriceProduct} €
|
||||||
|
|
||||||
if (note)
|
if (note)
|
||||||
p Note Aggiuntive: #{note}
|
p Note Aggiuntive: #{note}<br>
|
||||||
|
|
||||||
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
|
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
|
||||||
tr
|
tr
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ html
|
|||||||
}
|
}
|
||||||
|
|
||||||
body(yahoofix, style="background: #ffffff")
|
body(yahoofix, style="background: #ffffff")
|
||||||
- var baseimg = baseurl + '/statics/'
|
|
||||||
span(id='body_style', style='display:block')
|
span(id='body_style', style='display:block')
|
||||||
table(cellpadding="10", cellspacing="0", width="600", align="center")
|
table(cellpadding="10", cellspacing="0", width="600", align="center")
|
||||||
tr
|
tr
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ html
|
|||||||
if (miordconfirmed)
|
if (miordconfirmed)
|
||||||
p!= miordconfirmed
|
p!= miordconfirmed
|
||||||
else
|
else
|
||||||
p Puoi pertanto venire a ritirarli direttamente in sede, negli orari che ti sono stati indicati.
|
p Puoi venire a ritirarli direttamente in sede, negli orari che ti sono stati indicati.
|
||||||
|
|
||||||
p
|
p
|
||||||
|
|
||||||
@@ -62,7 +62,8 @@ html
|
|||||||
|
|
||||||
each rec in orders.items
|
each rec in orders.items
|
||||||
- var descr = rec.order.product.productInfo.name
|
- var descr = rec.order.product.productInfo.name
|
||||||
- var img = rec.order.product.productInfo.img
|
- var code = rec.order.product.productInfo.code
|
||||||
|
- var img = dirimg + rec.order.product.productInfo.imagefile
|
||||||
- var price = rec.order.product.price
|
- var price = rec.order.product.price
|
||||||
- var after_price = rec.order.product.after_price
|
- var after_price = rec.order.product.after_price
|
||||||
if (rec.order.gasordine)
|
if (rec.order.gasordine)
|
||||||
@@ -101,6 +102,9 @@ html
|
|||||||
tr
|
tr
|
||||||
td(class="sectionContentTitle boldhigh", valign="top")
|
td(class="sectionContentTitle boldhigh", valign="top")
|
||||||
p #{descr}
|
p #{descr}
|
||||||
|
tr
|
||||||
|
td(class="sectionContent", valign="top")
|
||||||
|
p Codice: #{code}
|
||||||
tr
|
tr
|
||||||
td(class="sectionContent", valign="top")
|
td(class="sectionContent", valign="top")
|
||||||
p Prezzo: #{price} € #{after_price}
|
p Prezzo: #{price} € #{after_price}
|
||||||
@@ -117,7 +121,7 @@ html
|
|||||||
p Totale: #{TotalPriceProduct} €
|
p Totale: #{TotalPriceProduct} €
|
||||||
|
|
||||||
if (note)
|
if (note)
|
||||||
p Note Aggiuntive: #{note}
|
p Note Aggiuntive: #{note}<br>
|
||||||
|
|
||||||
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
|
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
|
||||||
tr
|
tr
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ html
|
|||||||
|
|
||||||
each rec in orders.items
|
each rec in orders.items
|
||||||
- var descr = rec.order.product.productInfo.name
|
- var descr = rec.order.product.productInfo.name
|
||||||
- var img = rec.order.product.productInfo.img
|
- var img = dirimg + rec.order.product.productInfo.imagefile
|
||||||
- var price = rec.order.product.price
|
- var price = rec.order.product.price
|
||||||
- var after_price = rec.order.product.after_price
|
- var after_price = rec.order.product.after_price
|
||||||
if (rec.order.gasordine)
|
if (rec.order.gasordine)
|
||||||
@@ -116,7 +116,7 @@ html
|
|||||||
p Totale: #{TotalPriceProduct} €
|
p Totale: #{TotalPriceProduct} €
|
||||||
|
|
||||||
if (note)
|
if (note)
|
||||||
p Note Aggiuntive: #{note}
|
p Note Aggiuntive: #{note}<br>
|
||||||
|
|
||||||
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
|
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
|
||||||
tr
|
tr
|
||||||
|
|||||||
422
emails/invitaamico/it/html.pug
Normal file
422
emails/invitaamico/it/html.pug
Normal file
@@ -0,0 +1,422 @@
|
|||||||
|
doctype html
|
||||||
|
html(lang="it")
|
||||||
|
head
|
||||||
|
meta(charset="UTF-8")
|
||||||
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
|
style(type="text/css").
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 120px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header .subtitle {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 17px;
|
||||||
|
opacity: 0.95;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box {
|
||||||
|
background: #fff8dc;
|
||||||
|
border-left: 4px solid #7cb342;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight-box p {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.riso-info {
|
||||||
|
background: #fef9f3;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
border: 1px solid #7cb342;
|
||||||
|
}
|
||||||
|
|
||||||
|
.riso-info h3 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #558b2f;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.riso-info p {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.benefits-list {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.benefits-list h3 {
|
||||||
|
font-size: 17px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.benefit-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
padding: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.benefit-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
min-width: 24px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.benefit-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.values-section {
|
||||||
|
background: linear-gradient(135deg, #fff8dc 0%, #fef9f3 100%);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.values-section h3 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #558b2f;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value-item strong {
|
||||||
|
color: #558b2f;
|
||||||
|
margin-right: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
text-align: center;
|
||||||
|
margin: 24px 0;
|
||||||
|
padding: 20px 0;
|
||||||
|
border-top: 1px solid #e0e0e0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 16px 48px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 4px 12px rgba(210, 105, 30, 0.3);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box {
|
||||||
|
background: #e8f5e9;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 14px;
|
||||||
|
margin-top: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box p {
|
||||||
|
margin: 0;
|
||||||
|
color: #2e7d32;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.telegram-box {
|
||||||
|
background: #e3f2fd;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 14px;
|
||||||
|
margin: 16px 0;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px solid #64b5f6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.telegram-box p {
|
||||||
|
margin: 0;
|
||||||
|
color: #1976d2;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.telegram-box strong {
|
||||||
|
color: #0d47a1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-box {
|
||||||
|
background: #fff3e0;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 12px;
|
||||||
|
margin: 16px 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-box a {
|
||||||
|
color: #558b2f;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 14px 32px;
|
||||||
|
font-size: 16px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.benefit-item, .value-item {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
//- Header
|
||||||
|
.email-header
|
||||||
|
img.header-logo(src=baseurl+'/images/logo.png' alt='RISO - Rete Italiana Scambio orizzontale')
|
||||||
|
h1 Sei stato invitato ad unirti a #{nomeapp}!
|
||||||
|
p.subtitle Rete Italiana Scambio orizzontale
|
||||||
|
|
||||||
|
//- Body
|
||||||
|
.email-body
|
||||||
|
//- Intro
|
||||||
|
.intro-text
|
||||||
|
if usernameInvitante
|
||||||
|
| <strong>#{usernameInvitante}</strong> ti ha invitato a far parte della comunità RISO, una rete di persone che credono in un'economia basata su fiducia, comunità e scambi solidali.
|
||||||
|
else
|
||||||
|
| Hai ricevuto un invito speciale per unirti alla comunità RISO, una rete di persone che credono in un'economia basata su fiducia, comunità e scambi solidali.
|
||||||
|
|
||||||
|
|
||||||
|
.cta-section
|
||||||
|
.cta-title Unisciti alla Comunità RISO 🍚💚☀️
|
||||||
|
a.cta-button(href=linkRegistrazione target="_blank") Registrati Ora
|
||||||
|
|
||||||
|
//- Messaggio personalizzato
|
||||||
|
if messaggioPersonalizzato
|
||||||
|
.highlight-box
|
||||||
|
p
|
||||||
|
| 💌 <strong>Messaggio da #{usernameInvitante}:</strong><br>
|
||||||
|
| "#{messaggioPersonalizzato}"
|
||||||
|
|
||||||
|
//- Cos'è RISO
|
||||||
|
.riso-info
|
||||||
|
h3 🍚 Cos'è il Progetto RISO?
|
||||||
|
p
|
||||||
|
| RISO è una <strong>rete di comunità territoriali</strong> in tutta Italia dove puoi scambiare beni, servizi e ospitalità con altre persone, usando il <strong>baratto, il dono</strong>, oppure in <strong>RIS</strong>.
|
||||||
|
p
|
||||||
|
| Non è un marketplace commerciale: è una <strong>comunità basata su fiducia e relazioni</strong> reali tra persone che si conoscono e si incontrano.
|
||||||
|
|
||||||
|
//- Benefici
|
||||||
|
.benefits-list
|
||||||
|
h3 ✨ Cosa puoi fare con RISO
|
||||||
|
.benefit-item
|
||||||
|
span.benefit-icon 🔄
|
||||||
|
span.benefit-text Scambiare beni, servizi e ospitalità con baratto, dono, RIS o Euro
|
||||||
|
.benefit-item
|
||||||
|
span.benefit-icon 🤝
|
||||||
|
span.benefit-text Connetterti con la tua comunità territoriale locale (circuito provinciale)
|
||||||
|
.benefit-item
|
||||||
|
span.benefit-icon 💰
|
||||||
|
span.benefit-text Usare i RIS, uno strumento di scambio che parte da zero (nessun debito iniziale!)
|
||||||
|
.benefit-item
|
||||||
|
span.benefit-icon 🌱
|
||||||
|
span.benefit-text Ridurre la dipendenza dall'economia tradizionale e vivere in modo più sostenibile
|
||||||
|
.benefit-item
|
||||||
|
span.benefit-icon 📱
|
||||||
|
span.benefit-text Creare annunci di ciò che offri o cerchi direttamente dall'app
|
||||||
|
.benefit-item
|
||||||
|
span.benefit-icon 🎯
|
||||||
|
span.benefit-text Partecipare a mercatini ed eventi locali organizzati dalla tua comunità
|
||||||
|
|
||||||
|
//- Valori
|
||||||
|
.values-section
|
||||||
|
h3 ⭐ I Valori della Comunità RISO
|
||||||
|
.value-item
|
||||||
|
span.benefit-icon 🤝
|
||||||
|
| <strong>Comunità:</strong> Creiamo legami autentici tra persone
|
||||||
|
.value-item
|
||||||
|
span.benefit-icon ✅
|
||||||
|
| <strong>Fiducia:</strong> Base del nostro sistema di scambio
|
||||||
|
.value-item
|
||||||
|
span.benefit-icon 🚫
|
||||||
|
| <strong>Non speculativo:</strong> il RIS non è una moneta complementare, è un Sistema di Credito Naturale. Non serve a 'comprare' cose, ma a <strong>misurare e scambiare l'energia umana</strong>.
|
||||||
|
.value-item
|
||||||
|
span.benefit-icon 🌍
|
||||||
|
| <strong>Sostenibilità:</strong> Promuoviamo stili di vita sani e naturali
|
||||||
|
.value-item
|
||||||
|
span.benefit-icon 👁️
|
||||||
|
| <strong>Trasparenza:</strong> Tutte le transazioni in RIS sono visibili alla comunità
|
||||||
|
|
||||||
|
//- Info RIS
|
||||||
|
.riso-info
|
||||||
|
h3 💡 Come funzionano i RIS?
|
||||||
|
p
|
||||||
|
| • Non esiste una banca centrale che li crea<br>
|
||||||
|
| • Ogni utente parte da <strong>0 RIS</strong><br>
|
||||||
|
| • Quando ricevi vai in positivo (+), quando spendi vai in negativo (-)<br>
|
||||||
|
| • I facilitatori locali ti abilitano all'uso in base a conoscenza e fiducia<br>
|
||||||
|
| • I circuiti provinciali hanno bilancio sempre a zero (sostenibilità garantita!)
|
||||||
|
|
||||||
|
//- CTA
|
||||||
|
.cta-section
|
||||||
|
.cta-title Unisciti alla Comunità RISO 🍚💚☀️
|
||||||
|
a.cta-button(href=linkRegistrazione target="_blank") Registrati Ora
|
||||||
|
|
||||||
|
//- Info pratica
|
||||||
|
.info-box
|
||||||
|
p
|
||||||
|
| ✓ <strong>Piattaforma Libera e Gratuita</strong><br>
|
||||||
|
| ✓ <strong>Registrazione ad invito</strong> · Necessario username Telegram<br>
|
||||||
|
| ✓ <strong>App web installabile</strong> · Non serve store, installa da browser
|
||||||
|
|
||||||
|
//- Telegram
|
||||||
|
.telegram-box
|
||||||
|
p
|
||||||
|
| 📲 <strong>Unisciti al gruppo Telegram della tua provincia!</strong><br>
|
||||||
|
| Cerca "<strong>Progetto RISO</strong>" su Telegram e trova il gruppo nel messaggio fissato.<br>
|
||||||
|
| Qui organizziamo incontri reali e mercatini. 🍚
|
||||||
|
|
||||||
|
//- Link utile
|
||||||
|
.link-box
|
||||||
|
p 📚 Vuoi saperne di più sul sistema RIS?
|
||||||
|
a(href="https://sicrenacc.info/" target="_blank") Leggi il libro Si.cre.na.C.C →
|
||||||
|
|
||||||
|
//- Footer
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p Hai ricevuto questa email perché #{usernameInvitante || 'un membro della comunità'} ti ha invitato su #{nomeapp}
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| #{new Date().getFullYear()} #{nomeapp} - Rete Italiana Scambio orizzontale
|
||||||
|
p(style="margin-top: 8px; font-size: 11px; color: #999;")
|
||||||
|
| Se non sei interessato, puoi semplicemente ignorare questa email.
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| 🍚 Comunità · Fiducia · Scambi Solidali · Sostenibilità
|
||||||
1
emails/invitaamico/it/subject.pug
Executable file
1
emails/invitaamico/it/subject.pug
Executable file
@@ -0,0 +1 @@
|
|||||||
|
=`${usernameInvitante} ti ha invitato su ${nomeapp}`
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
p Ciao #{name},<br>Grazie per aver inviato la tua richiesta di adesione come Sostenitore di Arcadei !
|
|
||||||
p Cordiali Saluti<br>Arcadei
|
|
||||||
|
|
||||||
style(type="text/css").
|
|
||||||
html, body {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divbtn {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-lg {
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px;
|
|
||||||
font-size: 26px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: white;
|
|
||||||
background: #027be3 !important;
|
|
||||||
border-radius: 28px;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
=`Richiesta di Adesione ad Arcadei (${name} ${surname})`
|
|
||||||
@@ -18,232 +18,267 @@
|
|||||||
- var baseimg = baseurl + '/'
|
- var baseimg = baseurl + '/'
|
||||||
doctype html
|
doctype html
|
||||||
html
|
html
|
||||||
- if (dataemail.title)
|
|
||||||
head
|
head
|
||||||
title dataemail.subject
|
meta(charset="utf-8")
|
||||||
|
meta(name="viewport", content="width=device-width, initial-scale=1")
|
||||||
//- import css/scss stylesheets
|
title= dataemail.title || "Email"
|
||||||
//- these file names will be replace by gulp with proper css file paths
|
|
||||||
link(rel="stylesheet", href="../sass/basic.scss")
|
|
||||||
link(rel="stylesheet", href="../sass/one/styles.scss")
|
|
||||||
|
|
||||||
//- embdedded css allowed, but not sass
|
|
||||||
style.
|
style.
|
||||||
.red {
|
/* embedded CSS */
|
||||||
background-color: #E84C50;
|
body { margin:0; padding:0; background:#E9F2F9; font-family:Tahoma, Geneva, sans-serif; color:#5b656e; }
|
||||||
|
a { color:#09c; text-decoration:none; }
|
||||||
|
table, td { border-collapse:collapse; }
|
||||||
|
h1,h2,h3,p { margin:0; padding:0; }
|
||||||
|
|
||||||
|
.logoContainer { text-align:center; padding:20px 0; }
|
||||||
|
.logoContainer img { max-width:200px; }
|
||||||
|
|
||||||
|
.testomail { padding:10px; font-size:0.75rem; line-height:1.4; }
|
||||||
|
|
||||||
|
.clpromo {
|
||||||
|
background-color:orange;
|
||||||
|
text-align:center;
|
||||||
|
font-size:1rem;
|
||||||
|
padding:10px;
|
||||||
|
color:#fff;
|
||||||
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.full-width {
|
.emailContainer {
|
||||||
|
background:#fff;
|
||||||
|
border-radius:10px;
|
||||||
|
padding:20px;
|
||||||
|
margin:20px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sectionArticleImage img {
|
||||||
|
max-width:150px;
|
||||||
|
border:1px solid #ccc;
|
||||||
|
display:block;
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.teacher {
|
||||||
|
font-style:italic;
|
||||||
|
font-size:0.75rem;
|
||||||
|
color:#555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contrib {
|
||||||
|
font-size:0.75rem;
|
||||||
|
font-weight:bold;
|
||||||
|
color:#333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button a {
|
||||||
|
display:inline-block;
|
||||||
|
padding:10px 20px;
|
||||||
|
background:#f75666;
|
||||||
|
color:#fff !important;
|
||||||
|
text-decoration:none;
|
||||||
|
border-radius:10px;
|
||||||
|
font-size:13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button2 a {
|
||||||
|
display:block;
|
||||||
|
padding:12px 20px;
|
||||||
|
background:#0000ff;
|
||||||
|
color:#fff !important;
|
||||||
|
text-decoration:none;
|
||||||
|
border-radius:10px;
|
||||||
|
font-size:1.15rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.center_img img {
|
||||||
|
display:block;
|
||||||
|
margin:0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.discContainer {
|
||||||
|
background:#fff;
|
||||||
|
border-radius:10px;
|
||||||
|
padding:20px;
|
||||||
|
margin:20px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.LinkDisc a {
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pDisc:hover {
|
||||||
|
background:#5c8ef4 !important;
|
||||||
|
color:#fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pDisc {
|
||||||
|
padding:5px 10px;
|
||||||
|
border-radius:10px;
|
||||||
|
display:inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.socialMedia {
|
||||||
|
background:#8bafcb;
|
||||||
|
text-align:center;
|
||||||
|
padding:10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.socialMedia img {
|
||||||
|
width:29px;
|
||||||
|
height:auto;
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.firma-container {
|
||||||
|
background:#ffffff;
|
||||||
|
padding:15px;
|
||||||
|
text-align:center;
|
||||||
|
border-top:1px solid #e0e0e0;
|
||||||
|
font-size:0.85rem;
|
||||||
|
color:#313a42;
|
||||||
|
}
|
||||||
|
|
||||||
|
.disclaimer-container {
|
||||||
|
background:#f9f9f9;
|
||||||
|
padding:15px;
|
||||||
|
text-align:center;
|
||||||
|
font-size:0.75rem;
|
||||||
|
color:#666;
|
||||||
|
border-top:1px solid #eee;
|
||||||
|
border-bottom:1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-container {
|
||||||
|
background:#e9f2f9;
|
||||||
|
padding:15px;
|
||||||
|
text-align:center;
|
||||||
|
font-size:0.7rem;
|
||||||
|
color:#999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.whitespace {
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.button a, .button2 a {
|
||||||
|
font-size:1rem !important;
|
||||||
width:100%;
|
width:100%;
|
||||||
}
|
}
|
||||||
|
.sectionArticleImage,
|
||||||
|
.column {
|
||||||
|
width:100% !important;
|
||||||
|
display:block !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
body(yahoofix)
|
body(yahoofix)
|
||||||
span(id='body_style', style='display:block')
|
span#body_style(style='display:block')
|
||||||
table(class="topHeader", cellpadding="0", cellspacing="0", width="100%")
|
// Header
|
||||||
- if (dataemail.height_logo)
|
table(width="100%", cellpadding="0", cellspacing="0", align="center")
|
||||||
tr
|
|
||||||
td
|
|
||||||
table(cellpadding="0", cellspacing="0", align="center", summary="")
|
|
||||||
tr
|
tr
|
||||||
td.logoContainer
|
td.logoContainer
|
||||||
a(href=baseurl, title='logo')
|
a(href=baseurl)
|
||||||
img.logo(src=baseurl+"/images/logo.png", height=dataemail.height_logo)
|
img.logo(src=baseurl+"/images/logo.png", alt="Logo")
|
||||||
|
|
||||||
|
if dataemail.templ.testoheadermail_out
|
||||||
tr
|
tr
|
||||||
td.testomail
|
td.testomail
|
||||||
p!= dataemail.templ.testoheadermail_out
|
p!= dataemail.templ.testoheadermail_out
|
||||||
|
|
||||||
- if (dataemail.templ.options.includes('SHOW_PROMO'))
|
if dataemail.templ.options.includes('SHOW_PROMO')
|
||||||
tr
|
tr
|
||||||
td.clpromo
|
td.clpromo
|
||||||
p!= dataemail.textpromo
|
p!= dataemail.textpromo
|
||||||
|
|
||||||
- if (dataemail.templ.content)
|
// Main Content
|
||||||
table(cellpadding="0", cellspacing="0", width="95%", align="center")
|
if dataemail.templ.content
|
||||||
tr
|
tr
|
||||||
td(class="textIniContainer", valign="top")
|
td.emailContainer
|
||||||
p!=dataemail.templ.content
|
p!=dataemail.templ.content
|
||||||
- if (dataemail.templ.img)
|
if dataemail.templ.img
|
||||||
img(src=baseimg + dataemail.templ.img, alt="", class="myimg")
|
img(src=baseimg + dataemail.templ.img, class="center_img")
|
||||||
- if (dataemail.templ.content2)
|
if dataemail.templ.content2
|
||||||
p!=dataemail.templ.content2
|
p!=dataemail.templ.content2
|
||||||
- if (dataemail.templ.img2)
|
if dataemail.templ.img2
|
||||||
img(src=baseimg + dataemail.templ.img2, alt="", class="myimg")
|
img(src=baseimg + dataemail.templ.img2, class="center_img")
|
||||||
|
|
||||||
table(cellpadding="0", cellspacing="0", width="640", align="center")
|
|
||||||
- if (dataemail.templ.options.includes('SHOW_EVENTS'))
|
|
||||||
tr
|
|
||||||
td(class="whitespace", height="10")
|
|
||||||
p
|
|
||||||
tr
|
|
||||||
td(class="emailContainer", valign="top")
|
|
||||||
|
|
||||||
|
// Events
|
||||||
|
if dataemail.templ.options.includes('SHOW_EVENTS')
|
||||||
each event in arrevents
|
each event in arrevents
|
||||||
- var urlevent = baseurl + '/event/' + event.typol + '?eventid=' + event._id
|
|
||||||
- var imgev = event.img_small
|
|
||||||
- var mydate = prettyDate(event.dateTimeStart)
|
|
||||||
unless (imgev)
|
|
||||||
- imgev = event.img
|
|
||||||
- var teacher1 = ''
|
|
||||||
- var teacher2 = ''
|
|
||||||
- var teacher3 = ''
|
|
||||||
- var teacher4 = ''
|
|
||||||
- var contrib = ''
|
|
||||||
- var myclteach = 'q-chip'
|
|
||||||
- if (event.op1[0] && event.op1[0].username !== 'nessuno')
|
|
||||||
- teacher1 = event.op1[0].name + ' ' + event.op1[0].surname
|
|
||||||
- if ((event.op2[0] && event.op2[0].username !== 'nessuno'))
|
|
||||||
- teacher2 = event.op2[0].name + ' ' + event.op2[0].surname
|
|
||||||
- myclteach = 'q-chip2'
|
|
||||||
- if (event.op3[0] && event.op3[0].username !== 'nessuno')
|
|
||||||
- teacher3 = "<br>" . event.op3[0].name + ' ' + event.op3[0].surname
|
|
||||||
- if (event.op4[0] && event.op4[0].username !== 'nessuno')
|
|
||||||
- teacher4 = "<br>" . event.op4[0].name + ' ' + event.op4[0].surname
|
|
||||||
|
|
||||||
- if (event.contrib[0])
|
|
||||||
- contrib = event.contrib[0].label
|
|
||||||
- if (event.contrib[0].showprice)
|
|
||||||
- contrib += ' ' + event.price + ' €'
|
|
||||||
|
|
||||||
|
|
||||||
table(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
|
|
||||||
tr
|
tr
|
||||||
td(class="column sectionArticleImage", valign="top")
|
td.emailContainer
|
||||||
table(cellpadding="0", cellspacing="0", summary="", border="0")
|
table(width="100%", cellpadding="0", cellspacing="0")
|
||||||
- if (event.news)
|
|
||||||
tr
|
tr
|
||||||
td
|
td.column.sectionArticleImage(width="150")
|
||||||
p(class="q-chip row inline no-wrap items-center cltexth5 chipnews shadow-5 glossy text-right bg-red text-white") Novità
|
if event.news
|
||||||
|
p.q-chip.bg-red.text-white Novità
|
||||||
|
img(src=baseimg + (event.img_small || event.img), alt=event.title)
|
||||||
|
p.teacher= event.op1[0].name + ' ' + event.op1[0].surname
|
||||||
|
td.column
|
||||||
|
h2.sectionContentTitle= event.title
|
||||||
|
p.sectionContentSubTitle= prettyDate(event.dateTimeStart)
|
||||||
|
p.sectionContent!= event.details
|
||||||
|
if event.contrib.length
|
||||||
|
p.contrib= event.contrib[0].label + (event.contrib[0].showprice ? ' ' + event.price + ' €' : '')
|
||||||
|
table.buttonContainer
|
||||||
tr
|
tr
|
||||||
td
|
td.button
|
||||||
img(src=baseimg + imgev, alt="", width="150")
|
a(href=baseurl + '/event/' + event.typol + '?eventid=' + event._id, target="_blank") Apri l'Evento
|
||||||
p(class="teacher") #{teacher1} <br> #{teacher2} #{teacher3} #{teacher4}
|
|
||||||
td(class="column", valign="top")
|
|
||||||
|
|
||||||
table(cellpadding="0", cellspacing="0", summary="", border="0")
|
|
||||||
tr
|
|
||||||
td(class="sectionContentTitle boldhigh", valign="top")
|
|
||||||
p #{event.title}
|
|
||||||
tr
|
|
||||||
td(class="sectionContentSubTitle", valign="top")
|
|
||||||
p(class="q-chip row inline no-wrap items-center cltexth5 chipnews shadow-5 glossy text-right bg-blue text-white") #{mydate}
|
|
||||||
tr
|
|
||||||
td(class="sectionContent", valign="top")
|
|
||||||
p!= event.details
|
|
||||||
p.contrib= contrib
|
|
||||||
tr
|
|
||||||
td(class="buttonContainer")
|
|
||||||
table(width="50%", cellpadding="0", cellspacing="0", summary="", border="0")
|
|
||||||
tr
|
|
||||||
td(class="button hoverLink")
|
|
||||||
a(href=urlevent, title='Evento', target='_blank') Apri l'Evento
|
|
||||||
|
|
||||||
tr
|
tr
|
||||||
table(cellpadding="0", cellspacing="0", summary="", border="0", align="center", class="")
|
td.center_img
|
||||||
tr
|
a.button2(href=urlcal, target="_blank") Calendario Eventi
|
||||||
td(class="whitespace", height="10")
|
|
||||||
p
|
|
||||||
tr
|
|
||||||
td.center_img(class="button2 hoverLink")
|
|
||||||
a(href=urlcal, title='Calendario Eventi', target='_blank') Calendario Eventi
|
|
||||||
tr
|
|
||||||
td(class="whitespace", height="10")
|
|
||||||
p
|
|
||||||
|
|
||||||
- if (dataemail.templ.options.includes('SHOW_DISC'))
|
// Disciplines
|
||||||
|
if dataemail.templ.options.includes('SHOW_DISC')
|
||||||
tr
|
tr
|
||||||
td(class="whitespace bg-white", height="20")
|
td.center
|
||||||
p(class="bg-white")
|
h2.cltitle_disc= dataemail.disc_title
|
||||||
tr
|
|
||||||
td(class="center")
|
|
||||||
p(class="cltitle_disc") #{dataemail.disc_title}
|
|
||||||
tr
|
|
||||||
td(class="discContainer", valign="top")
|
|
||||||
|
|
||||||
each disc in dataemail.arrdiscipline
|
each disc in dataemail.arrdiscipline
|
||||||
- var urldisc = baseurl + disc.linkpage
|
tr
|
||||||
- var imgdisc = disc.img_small
|
td.discContainer
|
||||||
unless (imgdisc)
|
table(width="100%", cellpadding="0", cellspacing="0")
|
||||||
- imgdisc = disc.img
|
tr
|
||||||
|
td.column.sectionArticleImage(width="150")
|
||||||
|
img(src=baseimg + (disc.img_small || disc.img), alt=disc.label)
|
||||||
|
td.column
|
||||||
|
p.LinkDisc
|
||||||
|
a(href=baseurl + disc.linkpage, target="_blank")
|
||||||
|
span.pDisc(style=`background-color:`+disc.color)= disc.label
|
||||||
|
p.sectionContent!= disc.description
|
||||||
|
|
||||||
table(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
|
// Additional Content
|
||||||
tr
|
if dataemail.content_after_events
|
||||||
td(class="column sectionArticleImage", valign="top")
|
|
||||||
table(cellpadding="0", cellspacing="0", summary="", border="0")
|
|
||||||
tr
|
|
||||||
td
|
|
||||||
img(src=baseimg + imgdisc, alt="", width="150")
|
|
||||||
td(class="column", valign="top")
|
|
||||||
|
|
||||||
table(cellpadding="0", cellspacing="0", summary="", border="0")
|
|
||||||
tr
|
|
||||||
td(class="sectionContentTitle boldhigh center LinkDisc", valign="top")
|
|
||||||
a(href=urldisc, title='Disciplina', target='_blank')
|
|
||||||
p(class="q-chip row inline no-wrap items-center cltexth4 chipnews shadow-5 glossy text-right text-white pDisc", style=`background-color: `+disc.color) #{disc.label}
|
|
||||||
tr
|
|
||||||
td(class="sectionContent", valign="top")
|
|
||||||
p!= disc.description
|
|
||||||
|
|
||||||
tr
|
|
||||||
td(class="whitespace", height="20")
|
|
||||||
p
|
|
||||||
|
|
||||||
- if (dataemail.content_after_events)
|
|
||||||
tr
|
|
||||||
table(cellpadding="0", cellspacing="0", summary="", border="0")
|
|
||||||
tr
|
tr
|
||||||
td.testomail
|
td.testomail
|
||||||
p!=dataemail.content_after_events
|
p!=dataemail.content_after_events
|
||||||
tr
|
|
||||||
td(class="whitespace", height="20")
|
|
||||||
p
|
|
||||||
|
|
||||||
// Social Media
|
// Social Media
|
||||||
table.socialMedia(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
|
|
||||||
tr
|
|
||||||
td(class="whitespace", height="5")
|
|
||||||
p
|
|
||||||
tr
|
tr
|
||||||
|
td.socialMedia
|
||||||
|
table(width="120", align="center", cellpadding="0", cellspacing="0")
|
||||||
|
if dataemail.urlinstagram
|
||||||
td
|
td
|
||||||
table(width="120", cellpadding="0", cellspacing="0", summary="", border="0", align="center")
|
a(href=dataemail.urlinstagram)
|
||||||
tr
|
img(src=imginstagram, alt="Instagram")
|
||||||
- if (dataemail.urlinstagram)
|
if dataemail.urltwitter
|
||||||
td(width="32", align="center")
|
td
|
||||||
a(href=dataemail.urlinstagram, title='Instagram')
|
a(href=dataemail.urltwitter)
|
||||||
img(src=imginstagram, alt="Instagram", width="29")
|
img(src=imgtwitter, alt="Twitter")
|
||||||
- if (dataemail.urltwitter)
|
if dataemail.urlfb
|
||||||
td(width="32", align="center")
|
td
|
||||||
a(href=dataemail.urltwitter, title='Twitter')
|
a(href=dataemail.urlfb)
|
||||||
img(src=imgtwitter, alt="Twitter", width="29")
|
img(src=imgfb, alt="Facebook")
|
||||||
- if (dataemail.urlfb)
|
if dataemail.urlyoutube
|
||||||
td(width="32", align="center")
|
td
|
||||||
a(href=dataemail.urlfb, title='Facebook')
|
a(href=dataemail.urlyoutube)
|
||||||
img(src=imgfb, alt="Facebook", width="29")
|
img(src=imgyoutube, alt="YouTube")
|
||||||
- if (dataemail.urlyoutube)
|
|
||||||
td(width="32", align="center")
|
|
||||||
a(href=dataemail.urlyoutube, title='YouTube')
|
|
||||||
img(src=imgyoutube, alt="YouTube", width="29")
|
|
||||||
|
|
||||||
tr
|
|
||||||
td(class="whitespace", height="5")
|
|
||||||
p
|
|
||||||
|
|
||||||
// Footer
|
// Footer
|
||||||
table.footer(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center")
|
|
||||||
tr
|
tr
|
||||||
td(class="whitespace", height="10")
|
td.firma-container
|
||||||
p
|
|
||||||
tr
|
|
||||||
td.firma
|
|
||||||
p!= dataemail.firma
|
p!= dataemail.firma
|
||||||
|
|
||||||
tr
|
tr
|
||||||
td.disclaimer
|
td.disclaimer-container
|
||||||
p!= dataemail.disclaimer_out
|
p!= dataemail.disclaimer_out
|
||||||
|
|
||||||
tr
|
tr
|
||||||
td.bottom
|
td.bottom-container
|
||||||
p!= dataemail.disc_bottom_out
|
p!= dataemail.disc_bottom_out
|
||||||
|
|
||||||
tr
|
|
||||||
td(class="whitespace", height="10")
|
|
||||||
p
|
|
||||||
|
|||||||
@@ -1,37 +1,363 @@
|
|||||||
p Benvenuto #{name} nel portale di #{nomeapp}!
|
doctype html
|
||||||
p I tuoi dati di accesso da ricordare sono:
|
html(lang="it")
|
||||||
span Username:
|
head
|
||||||
strong #{username}<br>
|
meta(charset="UTF-8")
|
||||||
span hai dimenticato la Password? :
|
meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
||||||
strong <a href=#{forgetpwd} target="_blank">Trovala qui</a><br>
|
|
||||||
span Email:
|
|
||||||
strong #{emailto}<br>
|
|
||||||
p Per confermare la registrazione clicca sul bottone, oppure su questo link: #{strlinkreg}
|
|
||||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
|
||||||
button.btn.btn-lg Verifica Registrazione</a>
|
|
||||||
|
|
||||||
p Potrai cosi' accedere al sito digitando i tuoi dati di accesso.
|
|
||||||
|
|
||||||
|
|
||||||
style(type="text/css").
|
style(type="text/css").
|
||||||
html, body {
|
* {
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.divbtn {
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 120px;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-container {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
color: white;
|
||||||
|
padding: 40px 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header .subtitle {
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
font-size: 17px;
|
||||||
|
opacity: 0.95;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-icon {
|
||||||
|
font-size: 56px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 32px 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-section {
|
||||||
|
text-align: center;
|
||||||
|
margin: 24px 0;
|
||||||
|
padding: 20px 0;
|
||||||
|
border-top: 1px solid #e0e0e0;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 16px 48px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: white;
|
||||||
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
|
border-radius: 50px;
|
||||||
|
text-decoration: none;
|
||||||
|
box-shadow: 0 4px 12px rgba(124, 179, 66, 0.3);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
font-size: 18px;
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alternative-link {
|
||||||
|
margin-top: 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #777;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alternative-link a {
|
||||||
|
color: #558b2f;
|
||||||
|
text-decoration: none;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.verification-process {
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 24px 20px;
|
||||||
|
margin: 24px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.process-title {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #1a1a1a;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.process-title .icon {
|
||||||
|
font-size: 24px;
|
||||||
|
margin-right: 8px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.process-steps {
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.process-step {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 16px;
|
||||||
|
background: white;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-left: 4px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.process-step.active {
|
||||||
|
border-left-color: #7cb342;
|
||||||
|
background: linear-gradient(135deg, #f8fdf8 0%, #e8f5e9 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-badge {
|
||||||
|
min-width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: #e0e0e0;
|
||||||
|
color: #666;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-right: 16px;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-lg {
|
.process-step.active .step-badge {
|
||||||
padding: 5px;
|
background: linear-gradient(135deg, #7cb342 0%, #558b2f 100%);
|
||||||
margin: 5px;
|
|
||||||
font-size: 26px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: white;
|
color: white;
|
||||||
background: #027be3 !important;
|
|
||||||
border-radius: 28px;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.step-content {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content h4 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content p {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #555;
|
||||||
|
line-height: 1.5;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-note {
|
||||||
|
background: #fff8dc;
|
||||||
|
border-left: 4px solid #7cb342;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 14px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-note p {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #1a1a1a;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-note strong {
|
||||||
|
color: #558b2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
color: #777;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-footer p {
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, #e0e0e0, transparent);
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header {
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-header h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.welcome-icon {
|
||||||
|
font-size: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-body {
|
||||||
|
padding: 20px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
padding: 14px 32px;
|
||||||
|
font-size: 16px;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.verification-process {
|
||||||
|
padding: 20px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.process-step {
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-badge {
|
||||||
|
min-width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
font-size: 16px;
|
||||||
|
margin-right: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content h4 {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.step-content p {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
.email-container
|
||||||
|
//- Header
|
||||||
|
.email-header
|
||||||
|
- var baseimg = baseurl + '/';
|
||||||
|
img.header-logo(src=baseimg+"images/logo.png" alt=nomeapp || 'RISO')
|
||||||
|
h1 Benvenuto/a #{name ? name : username} su #{nomeapp}!
|
||||||
|
p.subtitle Rete Italiana Scambio Orizzontale
|
||||||
|
|
||||||
|
//- Body
|
||||||
|
.email-body
|
||||||
|
if !verified_email
|
||||||
|
.intro-text
|
||||||
|
| Per iniziare il tuo percorso in RISO, verifica il tuo indirizzo email cliccando sul pulsante qui sotto.
|
||||||
|
|
||||||
|
.cta-section
|
||||||
|
.cta-title 🔐 Verifica il tuo account
|
||||||
|
|
||||||
|
if strlinkreg
|
||||||
|
a.cta-button(href=strlinkreg target="_blank")
|
||||||
|
span.button-icon ✓
|
||||||
|
| Verifica Email
|
||||||
|
|
||||||
|
.alternative-link
|
||||||
|
| Oppure copia e incolla questo link nel tuo browser:
|
||||||
|
br
|
||||||
|
a(href=strlinkreg target="_blank") #{strlinkreg}
|
||||||
|
|
||||||
|
//- Processo di verifica
|
||||||
|
.verification-process
|
||||||
|
.process-title
|
||||||
|
span.icon 🌱
|
||||||
|
| Il tuo percorso di ingresso in RISO
|
||||||
|
|
||||||
|
.process-steps
|
||||||
|
.process-step
|
||||||
|
.step-badge 1
|
||||||
|
.step-content
|
||||||
|
h4 ✓ Verifica la tua email
|
||||||
|
p Clicca sul pulsante sopra per confermare il tuo indirizzo email.
|
||||||
|
|
||||||
|
.process-step.active
|
||||||
|
.step-badge 2
|
||||||
|
.step-content
|
||||||
|
h4 ⏳ In attesa di ammissione
|
||||||
|
p Il tuo invitante vedrà la tua richiesta. Riceverai un'email appena sarai ammesso!
|
||||||
|
|
||||||
|
.process-step
|
||||||
|
.step-badge 3
|
||||||
|
.step-content
|
||||||
|
h4 🎯 Completa il tuo profilo
|
||||||
|
p Una volta ammesso, potrai completare il tuo profilo e iniziare a fare parte della comunità RISO.
|
||||||
|
|
||||||
|
.process-step
|
||||||
|
.step-badge 4
|
||||||
|
.step-content
|
||||||
|
h4 🍚 Inizia a scambiare
|
||||||
|
p Crea annunci, scambia beni e servizi, e partecipa agli eventi della tua comunità locale!
|
||||||
|
|
||||||
|
.info-note
|
||||||
|
p
|
||||||
|
strong 💡 Suggerimento:
|
||||||
|
| Se dovessero passare più di 24 ore senza ammissione, contatta il tuo invitante per ricordargli di approvarti.
|
||||||
|
|
||||||
|
//- Footer
|
||||||
|
.email-footer
|
||||||
|
.divider
|
||||||
|
p Hai ricevuto questa email perché ti sei registrato su #{nomeapp || 'RISO'}
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| #{new Date().getFullYear()} #{nomeapp || 'RISO'} - Rete Italiana Scambi Orizzontali
|
||||||
|
p(style="margin-top: 8px; font-size: 11px; color: #999;")
|
||||||
|
| Se non hai richiesto questa registrazione, puoi semplicemente ignorare questa email.
|
||||||
|
p(style="margin-top: 12px; font-size: 12px;")
|
||||||
|
| 🍚 Comunità · Fiducia · Scambi Solidali · Sostenibilità
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
p Welcome #{name} to the portal #{nomeapp}!
|
|
||||||
p Your access data to remember are:
|
|
||||||
span Username:
|
|
||||||
strong #{username}<br>
|
|
||||||
span Forgot your Password? :
|
|
||||||
strong <a href=#{forgetpwd} target="_blank">Find it here</a><br>
|
|
||||||
span Email:
|
|
||||||
strong #{emailto}<br>
|
|
||||||
p To confirm the registration click on the button:
|
|
||||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
|
||||||
button.btn.btn-lg Verify Registration</a>
|
|
||||||
|
|
||||||
|
|
||||||
p You can then access your personal area by clicking on LOGIN and filling in all the STEPS required by :
|
|
||||||
strong "Step by Step Guide" !<br>
|
|
||||||
|
|
||||||
|
|
||||||
style(type="text/css").
|
|
||||||
html, body {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divbtn {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-lg {
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px;
|
|
||||||
font-size: 26px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: white;
|
|
||||||
background: #027be3 !important;
|
|
||||||
border-radius: 28px;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
=`Confirm Registration to ${nomeapp}`
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
p ¡Bienvenido #{name} al portal #{nomeapp}!
|
|
||||||
p Sus datos de acceso a recordar son:
|
|
||||||
Nombre Usuario:
|
|
||||||
strong #{username}<br>
|
|
||||||
span ¿Olvidaste tu contraseña? :
|
|
||||||
strong <a href=#{forgetpwd} target="_blank">Encuéntrelo aquí</a><br>
|
|
||||||
span Email:
|
|
||||||
strong #{emailto}<br>
|
|
||||||
p Para confirmar el registro haz clic en el botón, o aquì #{strlinkreg}:
|
|
||||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
|
||||||
button.btn.btn-lg Verificar registro</a>
|
|
||||||
|
|
||||||
p A continuación, puede acceder a su área personal haciendo clic en INICIAR SESIÓN y rellenando todos los PASOS requeridos por :
|
|
||||||
strong "Guía paso a paso"!<br>
|
|
||||||
|
|
||||||
|
|
||||||
style(type="text/css").
|
|
||||||
html, body {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divbtn {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-lg {
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px;
|
|
||||||
font-size: 26px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: white;
|
|
||||||
background: #027be3 !important;
|
|
||||||
border-radius: 28px;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
=`Confirmar registro a ${nomeapp}`
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
p Bienvenue #{name} sur le portail de #{nomeapp} !
|
|
||||||
p Vos identifiants de connexion à retenir sont :
|
|
||||||
span Username:
|
|
||||||
strong #{username}<br>
|
|
||||||
span avez-vous oublié votre mot de passe ? :
|
|
||||||
strong <a href=#{forgetpwd} target="_blank">Essayez ici</a><br>
|
|
||||||
span Email:
|
|
||||||
strong #{emailto}<br>
|
|
||||||
p Cliquez sur le bouton pour confirmer votre inscription ou cliquez ici #{strlinkreg}:
|
|
||||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
|
||||||
button.btn.btn-lg Vérifier l'enregistrement</a>
|
|
||||||
|
|
||||||
p Vous pouvez ensuite accéder à votre espace personnel en entrant votre nom d'utilisateur et votre mot de passe et en cliquant sur
|
|
||||||
strong ENTREZ<br>
|
|
||||||
|
|
||||||
p Donc, une fois que vous avez vérifié votre inscription, connectez-vous au site et
|
|
||||||
strong COMPLÉTER TOUTES LES ÉTAPES
|
|
||||||
de la portée du "Guide pas-à-pas" via ce lien:<br>
|
|
||||||
span <a href=#{strlinksito} target="_blank">#{strlinksito}</a>
|
|
||||||
|
|
||||||
|
|
||||||
style(type="text/css").
|
|
||||||
html, body {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divbtn {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-lg {
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px;
|
|
||||||
font-size: 26px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: white;
|
|
||||||
background: #027be3 !important;
|
|
||||||
border-radius: 28px;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
=`Confirmer l'inscription à ${nomeapp}`
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
p Benvenuto #{name} nel portale di #{nomeapp}!
|
|
||||||
p I tuoi dati di accesso da ricordare sono:
|
|
||||||
span Username:
|
|
||||||
strong #{username}<br>
|
|
||||||
span hai dimenticato la Password? :
|
|
||||||
strong <a href=#{forgetpwd} target="_blank">Trovala qui</a><br>
|
|
||||||
span Email:
|
|
||||||
strong #{emailto}<br>
|
|
||||||
p Per confermare la registrazione clicca sul bottone, oppure <a href=#{strlinkreg} target="_blank">CLICCA QUI</a>
|
|
||||||
div.divbtn <a href=#{strlinkreg} target="_blank">
|
|
||||||
button.btn.btn-lg Verifica Registrazione</a>
|
|
||||||
|
|
||||||
p Potrai cosi' accedere alla tua area personale inserendo lo username e la password e cliccando su
|
|
||||||
strong ACCEDI <br>
|
|
||||||
|
|
||||||
p Pertanto una volta Verificata la Registrazione, accedi al sito e
|
|
||||||
strong COMPLETA TUTTI I PASSI
|
|
||||||
span della "Guida Passo Passo" tramite questo Link:<br>
|
|
||||||
span <a href=#{strlinksito} target="_blank">#{strlinksito}</a>
|
|
||||||
|
|
||||||
|
|
||||||
style(type="text/css").
|
|
||||||
html, body {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divbtn {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-lg {
|
|
||||||
padding: 5px;
|
|
||||||
margin: 5px;
|
|
||||||
font-size: 26px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: white;
|
|
||||||
background: #027be3 !important;
|
|
||||||
border-radius: 28px;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
=`Confermare la Registrazione a ${nomeapp}`
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user