Compare commits
210 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
0a9e012de0 | ||
|
|
0973fc8757 | ||
|
|
7dac44e0ff | ||
|
|
6289a2e2d2 | ||
|
|
5cca1ed2fa | ||
|
|
ce51c87365 | ||
|
|
ca519baad4 | ||
|
|
73cf28ebc2 | ||
|
|
9985793fcc | ||
|
|
dcc2a0ec08 | ||
|
|
f25e1f3992 | ||
|
|
13322a7e0b | ||
|
|
fe4a67c9f1 | ||
|
|
45f601bd26 | ||
|
|
d527f49c5e | ||
|
|
21862f87a1 | ||
|
|
017ac82d8b | ||
|
|
76c34dbbe0 | ||
|
|
1c7b89a55b | ||
|
|
c3cc344b9f | ||
|
|
8dbdad1e02 | ||
|
|
b6c6330872 | ||
|
|
de6066031a | ||
|
|
ef9d7436b2 | ||
|
|
1b7a08f14b | ||
|
|
ae2298f21a | ||
|
|
b9927d8973 |
27
.env.dev.pcb
27
.env.dev.pcb
@@ -4,38 +4,43 @@ PDB=mypassword@1A
|
||||
SEND_EMAIL=0
|
||||
SEND_EMAIL_ORDERS=1
|
||||
PORT=3000
|
||||
appTelegram_TEST=["1","17","18"]
|
||||
appTelegram=["1","17","18"]
|
||||
appTelegram_TEST=["1","17"]
|
||||
appTelegram=["1","17"]
|
||||
appTelegram_DEVELOP=["17"]
|
||||
DOMAIN=mongodb://localhost:27017/
|
||||
AUTH_MONGODB=1
|
||||
MONGODB_USER=admin
|
||||
MONGODB_PWD=mypwadmin@1A
|
||||
AUTH_MONGODB=0
|
||||
ENABLE_PUSHNOTIFICATION=1
|
||||
URLBASE_APP1=https://localhost
|
||||
PORT_APP1=8080
|
||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||
HTTPS_LOCALHOST=true
|
||||
DEBUG=0
|
||||
DEBUG=0
|
||||
VITE_DEBUG=0
|
||||
TESTING_ON=1
|
||||
LOCALE=1
|
||||
DELAY_SENDEMAIL=2000
|
||||
VAPI_KEY_SUBJECT=mailto:paolo@freeplanet.app
|
||||
PUBLIC_VAPI_KEY=BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8
|
||||
PRIVATE_VAPI_KEY=uB2-jQkrbysyDtqN3ziMBDsVn0wdEaDsksX81zoOGQo
|
||||
PATH_CERT_KEY=localhost.key
|
||||
PATH_SERVER_CRT=localhost.crt
|
||||
PATH_CERT_KEY=localhost-key.pem
|
||||
PATH_SERVER_CRT=localhost.pem
|
||||
PATH_SSL_ROOT_PEM=root.pem
|
||||
PATH_SSL_CHAIN_PEM=chain.pem
|
||||
GCM_API_KEY=""
|
||||
PROD=0
|
||||
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
||||
SECRTK=prova123prova567ASDADASDAS
|
||||
TOKEN_LIFE=2h
|
||||
REFRESH_TOKEN_LIFE=14d
|
||||
FTPSERVER_HOST=139.162.166.31
|
||||
FTPSERVER_PORT=21
|
||||
FTPSERVER_USER=ftpusrsrv_
|
||||
FTPSERVER_PWD=ftpmypwd@1A_
|
||||
AUTH_NEW_SITES=123123123
|
||||
AUTH_NEW_SITES=123123123
|
||||
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
|
||||
DS_API_KEY="sk-222e3addb3d8455d8b0516d93906eec7"
|
||||
SERVER_A_URL="http://51.77.156.69:3000"
|
||||
API_KEY_MSSQL="m68yADSr123MIVIDA@154$DSAGVOK"
|
||||
@@ -6,36 +6,36 @@ SEND_EMAIL_ORDERS=1
|
||||
PORT=3000
|
||||
appTelegram_TEST=["1","13"]
|
||||
appTelegram=["1","13"]
|
||||
appTelegram_DEVELOP=["13"]
|
||||
DOMAIN=mongodb://localhost:27017/
|
||||
AUTH_MONGODB=1
|
||||
MONGODB_USER=admin
|
||||
MONGODB_PWD=mypwadmin@1A
|
||||
AUTH_MONGODB=0
|
||||
ENABLE_PUSHNOTIFICATION=1
|
||||
URLBASE_APP1=https://localhost
|
||||
PORT_APP1=8080
|
||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||
HTTPS_LOCALHOST=true
|
||||
DEBUG=0
|
||||
DEBUG=0
|
||||
VITE_DEBUG=0
|
||||
TESTING_ON=1
|
||||
LOCALE=1
|
||||
DELAY_SENDEMAIL=2000
|
||||
VAPI_KEY_SUBJECT=mailto:paolo@freeplanet.app
|
||||
PUBLIC_VAPI_KEY=BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8
|
||||
PRIVATE_VAPI_KEY=uB2-jQkrbysyDtqN3ziMBDsVn0wdEaDsksX81zoOGQo
|
||||
PATH_CERT_KEY=localhost.key
|
||||
PATH_SERVER_CRT=localhost.crt
|
||||
PATH_CERT_KEY=localhost-key.pem
|
||||
PATH_SERVER_CRT=localhost.pem
|
||||
PATH_SSL_ROOT_PEM=root.pem
|
||||
PATH_SSL_CHAIN_PEM=chain.pem
|
||||
GCM_API_KEY=""
|
||||
PROD=0
|
||||
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
||||
SECRTK=prova123prova567ASDADASDAS
|
||||
TOKEN_LIFE=2h
|
||||
REFRESH_TOKEN_LIFE=14d
|
||||
TOKEN_LIFE=1m
|
||||
REFRESH_TOKEN_LIFE=30d
|
||||
FTPSERVER_HOST=139.162.166.31
|
||||
FTPSERVER_PORT=21
|
||||
FTPSERVER_USER=ftpusrsrv_
|
||||
FTPSERVER_PWD=ftpmypwd@1A_
|
||||
AUTH_NEW_SITES=123123123
|
||||
AUTH_NEW_SITES=123123123
|
||||
SCRIPTS_DIR=admin_scripts
|
||||
CLOUDFLARE_TOKENS=[{"label":"Paolo.arena77@gmail.com","value":"M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0"},{"label":"gruppomacro.com","value":"bqmzGShoX7WqOBzkXocoECyBkPq3GfqcM5t6VFd8"}]
|
||||
DS_API_KEY="sk-222e3addb3d8455d8b0516d93906eec7"
|
||||
|
||||
@@ -6,36 +6,42 @@ SEND_EMAIL_ORDERS=1
|
||||
PORT=3000
|
||||
appTelegram_TEST=["1","13"]
|
||||
appTelegram=["1","13"]
|
||||
appTelegram_DEVELOP=["13"]
|
||||
DOMAIN=mongodb://localhost:27017/
|
||||
AUTH_MONGODB=1
|
||||
MONGODB_USER=admin
|
||||
MONGODB_PWD=mypwadmin@1A
|
||||
AUTH_MONGODB=0
|
||||
ENABLE_PUSHNOTIFICATION=1
|
||||
URLBASE_APP1=https://localhost
|
||||
PORT_APP1=8080
|
||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||
HTTPS_LOCALHOST=true
|
||||
DEBUG=0
|
||||
DEBUG=0
|
||||
VITE_DEBUG=0
|
||||
TESTING_ON=1
|
||||
LOCALE=1
|
||||
DELAY_SENDEMAIL=2000
|
||||
VAPI_KEY_SUBJECT=mailto:paolo@freeplanet.app
|
||||
PUBLIC_VAPI_KEY=BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8
|
||||
PRIVATE_VAPI_KEY=uB2-jQkrbysyDtqN3ziMBDsVn0wdEaDsksX81zoOGQo
|
||||
PATH_CERT_KEY=localhost.key
|
||||
PATH_SERVER_CRT=localhost.crt
|
||||
PATH_CERT_KEY=localhost-key.pem
|
||||
PATH_SERVER_CRT=localhost.pem
|
||||
PATH_SSL_ROOT_PEM=root.pem
|
||||
PATH_SSL_CHAIN_PEM=chain.pem
|
||||
GCM_API_KEY=""
|
||||
PROD=0
|
||||
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||
SECRK=Askb38v23jjDFaoskBOWj92axXCQ
|
||||
SECRTK=prova123prova567ASDADASDAS
|
||||
TOKEN_LIFE=2h
|
||||
REFRESH_TOKEN_LIFE=14d
|
||||
TOKEN_LIFE=30d
|
||||
REFRESH_TOKEN_LIFE=30d
|
||||
FTPSERVER_HOST=139.162.166.31
|
||||
FTPSERVER_PORT=21
|
||||
FTPSERVER_USER=ftpusrsrv_
|
||||
FTPSERVER_PWD=ftpmypwd@1A_
|
||||
AUTH_NEW_SITES=123123123
|
||||
AUTH_NEW_SITES=123123123
|
||||
SCRIPTS_DIR=admin_scripts
|
||||
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,29 +7,38 @@ PORT=3000
|
||||
appTelegram_TEST=["17","18"]
|
||||
appTelegram=["17","18"]
|
||||
ENABLE_PUSHNOTIFICATION=1
|
||||
DIRECTORY_SERVER=freeplanet_serverside
|
||||
SERVERDIR_WEBSITE=www.freeplanet_server
|
||||
DIRECTORY_SERVER=/var/www/nodejs_piuchebuono_server
|
||||
SERVERDIR_WEBSITE=/var/www/piuchebuono.app
|
||||
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_DB_PASSING=1
|
||||
MONGODB_USER=admin
|
||||
MONGODB_PWD=mypwadminREAL@1A
|
||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||
DEBUG=0
|
||||
VITE_DEBUG=0
|
||||
LOCALE=0
|
||||
DELAY_SENDEMAIL=1000
|
||||
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
|
||||
PUBLIC_VAPI_KEY="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
|
||||
PRIVATE_VAPI_KEY="LVpFDJuKscdHuQr5pe20dFuYuWX1-ZRb6x72PP-Pp4I"
|
||||
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
||||
PATH_CERT_KEY=key.pem
|
||||
PATH_SERVER_CRT=cert.pem
|
||||
PATH_SSL_ROOT_PEM=root.pem
|
||||
PATH_SSL_CHAIN_PEM=chain.pem
|
||||
PROD=0
|
||||
PATH_CERT_KEY=privkey.pem
|
||||
PATH_SERVER_CRT=fullchain.pem
|
||||
PROD=1
|
||||
PROJECT_DESCR_MAIN='__PROJECTS'
|
||||
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
|
||||
SECRTK=jAxKm02emx5SeJvz2IGmtRf6YqCgope
|
||||
TOKEN_LIFE=2h
|
||||
REFRESH_TOKEN_LIFE=14d
|
||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNVZZ
|
||||
TOKEN_LIFE=30d
|
||||
REFRESH_TOKEN_LIFE=30d
|
||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNVZZ
|
||||
DOMAINS=[{"hostname":"piuchebuono.app","port":"3030"},{"hostname":"gruppomacro.app","port":"3010"}]
|
||||
DOMAINS_ALLOWED=["gruppomacro.app","piuchebuono.app"]
|
||||
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
|
||||
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
|
||||
@@ -7,23 +7,25 @@ PORT=3001
|
||||
appTelegram_TEST=["17","18"]
|
||||
appTelegram=["17","18"]
|
||||
ENABLE_PUSHNOTIFICATION=1
|
||||
DIRECTORY_SERVER=freeplanet_serverside
|
||||
SERVERDIR_WEBSITE=test.freeplanet_server
|
||||
DIRECTORY_SERVER=/var/www/nodejs_test.piuchebuono_server
|
||||
SERVERDIR_WEBSITE=var/www/test.piuchebuono.app
|
||||
PORT_APP1="0"
|
||||
DOMAIN=mongodb://localhost:32002/
|
||||
DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:32002/
|
||||
AUTH_MONGODB=1
|
||||
AUTH_DB_PASSING=1
|
||||
MONGODB_USER=admin
|
||||
MONGODB_PWD=mypwadmin@1A
|
||||
MONGODB_PWD=mypwadminS1A
|
||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||
DEBUG=0
|
||||
VITE_DEBUG=0
|
||||
LOCALE=0
|
||||
DELAY_SENDEMAIL=1000
|
||||
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
|
||||
PUBLIC_VAPI_KEY="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
|
||||
PRIVATE_VAPI_KEY="LVpFDJuKscdHuQr5pe20dFuYuWX1-ZRb6x72PP-Pp4I"
|
||||
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
|
||||
PATH_CERT_KEY=key.pem
|
||||
PATH_SERVER_CRT=cert.pem
|
||||
PATH_CERT_KEY=privkey.pem
|
||||
PATH_SERVER_CRT=fullchain.pem
|
||||
PATH_SSL_ROOT_PEM=root.pem
|
||||
PATH_SSL_CHAIN_PEM=chain.pem
|
||||
PROD=0
|
||||
@@ -31,4 +33,13 @@ PROJECT_DESCR_MAIN='__PROJECTS'
|
||||
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
|
||||
TOKEN_LIFE=2h
|
||||
REFRESH_TOKEN_LIFE=14d
|
||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||
DOMAINS=[{"hostname":"piuchebuono.app","port":"3031"},{"hostname":"gruppomacro.app","port":"3011"}]
|
||||
DOMAINS_ALLOWED=[]
|
||||
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
|
||||
SERVER_A_URL="http://51.77.156.69:3000"
|
||||
API_KEY_MSSQL="m68yADSr123MIVIDA@154$DSAGVOK"
|
||||
@@ -4,23 +4,25 @@ PDB=suerteFreePlanet@1A
|
||||
SEND_EMAIL=1
|
||||
PORT=3001
|
||||
ENABLE_PUSHNOTIFICATION=1
|
||||
DIRECTORY_SERVER=/var/www/testriso.freeplanet_serverside
|
||||
SERVERDIR_WEBSITE=testriso.piuchebuono.app
|
||||
DIRECTORY_SERVER=/var/www/nodejs_test.riso_server
|
||||
SERVERDIR_WEBSITE=/var/www/test.riso.app
|
||||
PORT_APP1="0"
|
||||
DOMAIN=mongodb://localhost:32002/
|
||||
DOMAIN=mongodb://localhost:32012/
|
||||
DOMAIN_AUTH=mongodb://{username}:{password}@127.0.0.1:32012/
|
||||
AUTH_MONGODB=1
|
||||
MONGODB_USER=admin
|
||||
MONGODB_PWD=mypwadmin@1A
|
||||
AUTH_DB_PASSING=1
|
||||
MONGODB_USER="admin"
|
||||
MONGODB_PWD="mypwadminS1A"
|
||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||
DEBUG=0
|
||||
VITE_DEBUG=1
|
||||
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=key.pem
|
||||
PATH_SERVER_CRT=cert.pem
|
||||
PATH_CERT_KEY=privkey.pem
|
||||
PATH_SERVER_CRT=fullchain.pem
|
||||
PATH_SSL_ROOT_PEM=root.pem
|
||||
PATH_SSL_CHAIN_PEM=chain.pem
|
||||
PROD=0
|
||||
@@ -28,4 +30,11 @@ PROJECT_DESCR_MAIN='__PROJECTS'
|
||||
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
|
||||
TOKEN_LIFE=2h
|
||||
REFRESH_TOKEN_LIFE=14d
|
||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||
AUTH_NEW_SITES=B234HDSAOJ734ndcsdKWNV
|
||||
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
|
||||
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
|
||||
@@ -13,15 +13,15 @@ AUTH_MONGODB=1
|
||||
MONGODB_USER=admin
|
||||
MONGODB_PWD=mypwadmin@1A
|
||||
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
|
||||
DEBUG=0
|
||||
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=key.pem
|
||||
PATH_SERVER_CRT=cert.pem
|
||||
PATH_CERT_KEY=privkey.pem
|
||||
PATH_SERVER_CRT=fullchain.pem
|
||||
PATH_SSL_ROOT_PEM=root.pem
|
||||
PATH_SSL_CHAIN_PEM=chain.pem
|
||||
PROD=0
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,6 +3,7 @@ node_modules/
|
||||
.env.production
|
||||
.env.production.bak
|
||||
ESEMPI/
|
||||
OFF/
|
||||
.idea
|
||||
package-lock.json
|
||||
deploynodejs_on_production.sh
|
||||
|
||||
43
.vscode/launch.json
vendored
43
.vscode/launch.json
vendored
@@ -1,18 +1,19 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
{
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"name": "Launch via Nodemon",
|
||||
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
||||
"restart": true,
|
||||
"runtimeExecutable": "node",
|
||||
"runtimeExecutable": "/usr/local/bin/node",
|
||||
"runtimeArgs": [
|
||||
"--inspect=9229" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
||||
],
|
||||
"args": [
|
||||
"${workspaceFolder}/src/server/server.js"
|
||||
"${workspaceFolder}/src/server.js"
|
||||
], // Replace with your entry file
|
||||
"cwd": "${workspaceFolder}",
|
||||
"autoAttachChildProcesses": true,
|
||||
@@ -30,12 +31,12 @@
|
||||
"name": "Launch Trace Warning",
|
||||
"program": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
|
||||
"restart": true,
|
||||
"runtimeExecutable": "node",
|
||||
"runtimeExecutable": "/usr/local/bin/node",
|
||||
"runtimeArgs": [
|
||||
"--trace-warnings" // Use "--inspect=0.0.0.0:9229" for remote debugging
|
||||
],
|
||||
"args": [
|
||||
"${workspaceFolder}/src/server/server.js"
|
||||
"${workspaceFolder}/src/server.js"
|
||||
], // Replace with your entry file
|
||||
"cwd": "${workspaceFolder}",
|
||||
"autoAttachChildProcesses": true,
|
||||
@@ -49,7 +50,7 @@
|
||||
},
|
||||
{
|
||||
"name": "ServerSide",
|
||||
"program": "${workspaceFolder}/src/server/server.js",
|
||||
"program": "${workspaceFolder}/src/server.js",
|
||||
"request": "launch",
|
||||
"skipFiles": [
|
||||
"<node_internals>/**"
|
||||
@@ -60,5 +61,37 @@
|
||||
"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"
|
||||
67
OFF_deploynodejs_on_prod_freeplanet.app.sh.off
Executable file
67
OFF_deploynodejs_on_prod_freeplanet.app.sh.off
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
|
||||
source ./.env.prod.freeplanet.app
|
||||
|
||||
echo "Sincronizzazione in corso ... $DIRECTORY_SERVER/"
|
||||
echo ""
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
# Configurazione
|
||||
REMOTE_USER="suryapaolo"
|
||||
REMOTE_HOST="servereng"
|
||||
REMOTE_PORT="8855"
|
||||
REMOTE_DIR="$DIRECTORY_SERVER"
|
||||
SSH_OPTIONS="-p $REMOTE_PORT"
|
||||
CONFIG_JS="ecosystem.config.prod_freeplanet.app.js"
|
||||
ENV_FILE=".env.prod.freeplanet.app"
|
||||
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"
|
||||
|
||||
# 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
|
||||
|
||||
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.)
|
||||
```bash
|
||||
node src/server/server.js
|
||||
node src/server.js
|
||||
```
|
||||
|
||||
### Creating the ambient test
|
||||
|
||||
18
admin_scripts/1_GENERALE/inputTest.sh
Executable file
18
admin_scripts/1_GENERALE/inputTest.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
#DATA|TITLE|Input Test
|
||||
#DATA|DESCRIZ|Input Test
|
||||
#DATA|SOCK|true
|
||||
|
||||
echo "Inizio dello Script... "
|
||||
echo ".............................................."
|
||||
|
||||
|
||||
if [ "$1" = "" ]; then
|
||||
read -p "Inserisci il parametro 1 " PARAM1
|
||||
else
|
||||
PARAM1=$1
|
||||
fi
|
||||
|
||||
echo "Il parametro 1 è " $PARAM1
|
||||
|
||||
echo "FINEEEE!"
|
||||
5
admin_scripts/1_GENERALE/showLog.sh
Executable file
5
admin_scripts/1_GENERALE/showLog.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
#DATA|TITLE|Mostra i log
|
||||
#DATA|DESCRIZ|Mostra i log della cartella principale
|
||||
|
||||
tail -400f logs/combined*.log
|
||||
7
admin_scripts/1_GENERALE/testScript.sh
Executable file
7
admin_scripts/1_GENERALE/testScript.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
#DATA|TITLE|lista directory
|
||||
#DATA|DESCRIZ|Mostra la lista della directory
|
||||
|
||||
sleep 1
|
||||
|
||||
ls -l
|
||||
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Definizione delle variabili
|
||||
FILEZIP="exp_db_test.tar.gz"
|
||||
DATABASEIN="FreePlanet"
|
||||
DATABASEOUT="test_FreePlanet"
|
||||
FILEMONGODBIN="export_database_$DATABASEIN"
|
||||
FILEMONGODBOUT="export_database_$DATABASEOUT"
|
||||
MYDOCKER="mongodbtest"
|
||||
DIR_OUT="/home/test/"
|
||||
BACKUP_DIR="/home/pcbuser/backups/temp/"
|
||||
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
||||
|
||||
# Carica le configurazioni
|
||||
source ~/batch/.my_cfg.ini
|
||||
|
||||
echo "Attenzione: Questo script creerà un backup del database esistente $DATABASEOUT"
|
||||
echo "e lo sovrascriverà con i dati dal file $FILEZIP."
|
||||
echo "Vuoi procedere? (Si/No)"
|
||||
read -r risposta
|
||||
|
||||
if [[ ! $risposta =~ ^[Ss][iI]$ ]]; then
|
||||
echo "Operazione annullata dall'utente."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Inizio del processo di importazione del database"
|
||||
echo "------------------------------------------------"
|
||||
|
||||
# Verifica l'esistenza del file .tar.gz
|
||||
if [ ! -f "/home/pcbuser/$FILEZIP" ]; then
|
||||
echo "ERRORE: Il file $FILEZIP non esiste nella directory /home/pcbuser/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Backup del database esistente
|
||||
echo "Creazione di un backup del database esistente...$DATABASEOUT"
|
||||
if docker exec "$MYDOCKER" mongodump --username admin --password "$PWDDB_TEST" --authenticationDatabase admin --db "$DATABASEOUT" --out "$BACKUP_DIR$DATABASEOUT_$TIMESTAMP"; then
|
||||
echo "Backup del database esistente completato con successo in $BACKUP_DIR$DATABASEOUT_$TIMESTAMP"
|
||||
else
|
||||
echo "ERRORE: Impossibile creare il backup del database esistente $DATABASEOUT."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Copiando $FILEZIP nel container $MYDOCKER..."
|
||||
if docker cp "/home/pcbuser/$FILEZIP" "$MYDOCKER:$DIR_OUT"; then
|
||||
echo "File copiato con successo."
|
||||
else
|
||||
echo "ERRORE: Impossibile copiare il file nel container."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Estraendo $FILEZIP in $DIR_OUT all'interno del container..."
|
||||
if docker exec "$MYDOCKER" tar -xvzf "$DIR_OUT$FILEZIP" -C "$DIR_OUT"; then
|
||||
echo "Estrazione completata con successo."
|
||||
else
|
||||
echo "ERRORE: Impossibile estrarre il file nel container."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Rinominando la directory del database da $FILEMONGODBIN a $FILEMONGODBOUT..."
|
||||
if docker exec "$MYDOCKER" mv "$DIR_OUT$FILEMONGODBIN" "$DIR_OUT$FILEMONGODBOUT"; then
|
||||
echo "Directory rinominata con successo."
|
||||
else
|
||||
echo "ERRORE: Impossibile rinominare la directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Ripristinando il database MongoDB dal dump..."
|
||||
if docker exec "$MYDOCKER" mongorestore --username admin --password "$PWDDB_TEST" --authenticationDatabase admin --nsFrom="$DATABASEIN.*" --nsTo="$DATABASEOUT.*" "$DIR_OUT$FILEMONGODBOUT"; then
|
||||
echo "Database ripristinato con successo."
|
||||
else
|
||||
echo "ERRORE: Impossibile ripristinare il database."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "Processo di importazione del database completato"
|
||||
361
admin_scripts/3_DATABASE/dati.txt.js
Normal file
361
admin_scripts/3_DATABASE/dati.txt.js
Normal file
@@ -0,0 +1,361 @@
|
||||
db.myelems.insertMany([
|
||||
{
|
||||
"_id": new ObjectId("669fbf9dc9d625d0628eb12f"),
|
||||
"order": 20,
|
||||
"active": true,
|
||||
"type": 20,
|
||||
"path": "home",
|
||||
"container": "",
|
||||
"idapp": "19",
|
||||
"elemsText": [],
|
||||
"listcards": [],
|
||||
"list": [],
|
||||
"__v": 0,
|
||||
"containerHtml": "<div style=\"text-align: center;\"><b><font size=\"4\">Abitare Gli Iblei</font></b></div>",
|
||||
"anim": {
|
||||
"_id": new ObjectId("66e456981e0719a1012121c0"),
|
||||
"name": "",
|
||||
"clduration": "",
|
||||
"cldelay": "",
|
||||
"timingtype": "ease-in-out"
|
||||
}
|
||||
}, {
|
||||
"_id": new ObjectId("669fbfc3c9d625d0628eb131"),
|
||||
"order": 100,
|
||||
"active": true,
|
||||
"type": 145,
|
||||
"path": "home",
|
||||
"container": "",
|
||||
"idapp": "19",
|
||||
"elemsText": [],
|
||||
"listcards": [],
|
||||
"list": [],
|
||||
"__v": 0
|
||||
}, {
|
||||
"_id": new ObjectId("66db2a45054b3b09f85e6983"),
|
||||
"order": 26,
|
||||
"active": true,
|
||||
"type": 35,
|
||||
"path": "home",
|
||||
"container": "",
|
||||
"idapp": "19",
|
||||
"elemsText": [],
|
||||
"listcards": [],
|
||||
"list": [],
|
||||
"__v": 0,
|
||||
"image": "logo.jpg",
|
||||
"anim": {
|
||||
"_id": new ObjectId("66db34215740efc77547a93a"),
|
||||
"name": "",
|
||||
"clduration": "",
|
||||
"cldelay": "",
|
||||
"timingtype": "ease-in-out"
|
||||
},
|
||||
"widthimg": "250px",
|
||||
"align": 2
|
||||
}
|
||||
, {
|
||||
"_id": new ObjectId("66db38a77e24f4509eef655b"),
|
||||
"order": 26,
|
||||
"active": true,
|
||||
"type": 20,
|
||||
"path": "home",
|
||||
"container": "",
|
||||
"idapp": "19",
|
||||
"elemsText": [],
|
||||
"listcards": [],
|
||||
"list": [],
|
||||
"__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 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": {
|
||||
"_id": new ObjectId("66db393e3b885ccdfaed28d6"),
|
||||
"name": "",
|
||||
"clduration": "",
|
||||
"cldelay": "",
|
||||
"timingtype": "ease-in-out"
|
||||
}
|
||||
}
|
||||
, {
|
||||
"_id": new ObjectId("66e41cff78c8d880eebfbf1c"),
|
||||
"order": 32.5,
|
||||
"active": true,
|
||||
"type": 20,
|
||||
"path": "home",
|
||||
"container": "",
|
||||
"idapp": "19",
|
||||
"elemsText": [],
|
||||
"listcards": [],
|
||||
"list": [],
|
||||
"__v": 0,
|
||||
"containerHtml": "ORAAAA",
|
||||
"anim": {
|
||||
"_id": new ObjectId("66e459421e0719a1012123ad"),
|
||||
"name": "",
|
||||
"clduration": "",
|
||||
"cldelay": "",
|
||||
"timingtype": "ease-in-out"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"_id": new ObjectId("66e4270d78c8d880eebfbf24"),
|
||||
"order": 40,
|
||||
"active": true,
|
||||
"type": 20,
|
||||
"path": "home",
|
||||
"container": "",
|
||||
"idapp": "19",
|
||||
"elemsText": [],
|
||||
"listcards": [],
|
||||
"list": [],
|
||||
"__v": 0,
|
||||
"containerHtml": "BBB",
|
||||
"anim": {
|
||||
"_id": new ObjectId("66e4568d1e0719a1012121a6"),
|
||||
"name": "",
|
||||
"clduration": "",
|
||||
"cldelay": "",
|
||||
"timingtype": "ease-in-out"
|
||||
}
|
||||
}, {
|
||||
"_id": new ObjectId("66e45b0c78c8d880eebfbf45"),
|
||||
"order": 70,
|
||||
"active": true,
|
||||
"type": 20,
|
||||
"path": "home",
|
||||
"container": "",
|
||||
"idapp": "19",
|
||||
"elemsText": [],
|
||||
"listcards": [],
|
||||
"list": [],
|
||||
"__v": 0,
|
||||
"containerHtml": "AAAA"
|
||||
}]);
|
||||
|
||||
|
||||
db.sites.insert(
|
||||
/* 1 */
|
||||
{
|
||||
"_id": new ObjectId("669fbef7fc704b8912263af9"),
|
||||
"confpages": {
|
||||
"font": "",
|
||||
"col_toolbar": "",
|
||||
"col_bgfooter": "",
|
||||
"show_darkopt": false,
|
||||
"showButtHome": true,
|
||||
"showProfile": false,
|
||||
"showUserMenu": true,
|
||||
"showiscrittiMenu": true,
|
||||
"showRegButton": true,
|
||||
"enableReg": false,
|
||||
"showNL": false,
|
||||
"sendNewsletter": true,
|
||||
"showMsgs": false,
|
||||
"showNotif": true,
|
||||
"showCoins": false,
|
||||
"showRIS": false,
|
||||
"showMenuCoins": false,
|
||||
"showNameSurname": true,
|
||||
"showCompetenze": true,
|
||||
"showConnected": false,
|
||||
"bookingEvents": false,
|
||||
"enableEcommerce": false,
|
||||
"enableAI": false,
|
||||
"enableGroups": true,
|
||||
"enableCircuits": false,
|
||||
"enableProj": false,
|
||||
"enableTodos": false,
|
||||
"enableRegByBot": false,
|
||||
"enableRegMultiChoice": false,
|
||||
"enableTokenExpired": true,
|
||||
"enableDebugOn": false,
|
||||
"enabledRegNeedTelegram": false,
|
||||
"showViewEventi": false,
|
||||
"showViewGroups": false,
|
||||
"showViewCircuits": false,
|
||||
"showViewUsers": false,
|
||||
"showViewBooking": false,
|
||||
"showViewProfile": true,
|
||||
"showViewCart": false,
|
||||
"showViewOrders": false,
|
||||
"enablePwa": true,
|
||||
"lang": 0,
|
||||
"videoPromo": "",
|
||||
"PDFPromo": ""
|
||||
},
|
||||
"confsite": {
|
||||
"options": 64
|
||||
},
|
||||
"policy": {
|
||||
"show": false
|
||||
},
|
||||
"contacts": {
|
||||
"facebook": "",
|
||||
"instagram": "",
|
||||
"whatsapp": "",
|
||||
"whatsapp_home": false,
|
||||
"telegram": "",
|
||||
"youtube": "",
|
||||
"email": "",
|
||||
"address": "",
|
||||
"map": "",
|
||||
"info2": "",
|
||||
"cell": ""
|
||||
},
|
||||
"ecomm": {
|
||||
"enablePreOrders": false,
|
||||
"NoteExtraOnCart": ""
|
||||
},
|
||||
"name": "Abitare Gli Iblei",
|
||||
"host": "https://abitaregliiblei.it",
|
||||
"active": true,
|
||||
"idapp": "19",
|
||||
"adminemail": "surya@riso.app",
|
||||
"__v": 0,
|
||||
"dir": "/Users/suryapaolo/myproject/newfreeplanet/",
|
||||
"dir_test": "/Users/suryapaolo/myproject/newfreeplanet/",
|
||||
"host_test": "https://test.abitaregliiblei.it",
|
||||
"host_ip": "65.108.222.97",
|
||||
"host_api_ip": "65.108.222.97",
|
||||
"host_api": "https://api.abitaregliiblei.it",
|
||||
"host_testapi": "https://testapi.abitaregliiblei.it",
|
||||
"host_testapi_ip": "65.108.222.97",
|
||||
"host_test_ip": "65.108.222.97",
|
||||
"cf_token": "M9EM309v8WFquJKpYgZCw-TViM2wX6vB3wlK6GD0",
|
||||
"cf_zoneId": "cd7447660fcc6534ca7ce4c135df1e54",
|
||||
"enable_servermail_this_domain": "true",
|
||||
"servermail": "box.lamiaposta.org",
|
||||
"servermailip": "65.21.63.147",
|
||||
"enable_servermail": true,
|
||||
"dkim": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv++u/ysGgAGfOaSCLmNkfnczedXXDRdJUi+M+gZTVk7XfGZLlLWh00xXgOIj1lU4jRgFnQx39SSbsS9foPLMrCXnPcSnPPCUpDbmkKtGlWPZDncOUGIZVpNpFMOBul+p+SckUW7gomayV1dluFw72oNLlc/Y0CVWT5Le0OL66FG7D0",
|
||||
"manageremail": "reg@abitaregliiblei.it",
|
||||
"idMyGroup": "AbitareGliIblei"
|
||||
}
|
||||
)
|
||||
|
||||
db.users.insert(
|
||||
{
|
||||
"_id": new ObjectId("669fbef7c9d625d0628eb12d"),
|
||||
"profile": {
|
||||
"paymenttypes": [],
|
||||
"notif_idCities": [],
|
||||
"notif_provinces": [],
|
||||
"notif_regions": [],
|
||||
"notif_sectors": [],
|
||||
"notif_sector_goods": [],
|
||||
"img": "",
|
||||
"nationality": "",
|
||||
"intcode_cell": "",
|
||||
"cell": "",
|
||||
"dateofbirth": null,
|
||||
"sex": 0,
|
||||
"country_pay": "",
|
||||
"email_paypal": "",
|
||||
"payeer_id": "",
|
||||
"advcash_id": "",
|
||||
"revolut": "",
|
||||
"link_payment": "",
|
||||
"note_payment": "",
|
||||
"username_telegram": "",
|
||||
"teleg_id": 0,
|
||||
"teleg_checkcode": 0,
|
||||
"my_dream": "",
|
||||
"manage_telegram": false,
|
||||
"admin_telegram": false,
|
||||
"saw_zoom_presentation": false,
|
||||
"ask_zoom_partecipato": false,
|
||||
"saw_and_accepted": 0,
|
||||
"socio": false,
|
||||
"socioresidente": false,
|
||||
"qualified": false,
|
||||
"qualified_2invitati": false,
|
||||
"myshares": [],
|
||||
"friends": [],
|
||||
"req_friends": [],
|
||||
"handshake": [],
|
||||
"mygroups": [],
|
||||
"mycircuits": [],
|
||||
"last_circuitpath": "",
|
||||
"notifs": [
|
||||
{
|
||||
"dir": 1,
|
||||
"value": 88
|
||||
},
|
||||
{
|
||||
"dir": 2,
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"dir": 3,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 4,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 5,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 11,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 12,
|
||||
"value": 1
|
||||
}
|
||||
],
|
||||
"stepTutorial": 0,
|
||||
"noNameSurname": false,
|
||||
"noCircuit": false,
|
||||
"noCircIta": false,
|
||||
"noFoto": false,
|
||||
"resid_province": "",
|
||||
"resid_card": "",
|
||||
"seen": [],
|
||||
"bookmark": [],
|
||||
"favorite": [],
|
||||
"attend": [],
|
||||
"version": 10060
|
||||
},
|
||||
"ipaddr": "::1",
|
||||
"linkreg": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGFwcCI6IjE5IiwiZW1haWwiOiJ2aW5jZW56b2Zhenppbm81OEBnbWFpbC5jb20iLCJ1c2VybmFtZSI6IkVuem8iLCJpYXQiOjE3MjY0MTM2NTh9.YlgziPXK2ZeWe_buExvHnelMMc",
|
||||
"lasttimeonline": ISODate("2024-09-15T20:09:41.378Z"),
|
||||
"date_reg": ISODate("2024-09-15T15:20:58.743Z"),
|
||||
"aportador_iniziale": "------",
|
||||
"idMyGroup": "abitaregliiblei",
|
||||
"useragent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36",
|
||||
"email": "surya@riso.app",
|
||||
"username": "admin",
|
||||
"password": "$2a$12$Dr58jMRtbt6Y3y6MYFopCO07hBo20TlmdzJW.lVvRIhNy7yFFizT2",
|
||||
"name": "admin",
|
||||
"index": 1,
|
||||
"surname": "",
|
||||
"lang": "it",
|
||||
"verified_email": true,
|
||||
"verified_by_aportador": true,
|
||||
"perm": 3,
|
||||
"retry_pwd": 0,
|
||||
"deleted": false,
|
||||
"lang": "it",
|
||||
"aportador_solidario": "------",
|
||||
"tokens": [
|
||||
{
|
||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI3NjIzNjY1fQ.6QaBaiE1pv7mDy7S8YUReqH8m0CCK7jTmd57eGHgnzE",
|
||||
"_id": new ObjectId("66e6fcf1ac95a84fd0e11b2c"),
|
||||
"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",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI2NDIxMjY1fQ.wCZcQ5uSQXnVgS_ZGyzjl6TOQk8rflfe2HSxSku0Aj4",
|
||||
"date_login": ISODate("2024-09-15T15:27:45.368Z")
|
||||
},
|
||||
{
|
||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI3NjQwNTgwfQ.YdB5unWwaZ21kk87RRPolLGiWxf7bKX0piKd-bGQifU",
|
||||
"_id": new ObjectId("66e73f04ac95a84fd0e122ae"),
|
||||
"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",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI2NDM4MTgwfQ.TMF1UNbgw-EpGVWWDNnY3wRdLYOyp5HzAQiakpyaL_4",
|
||||
"date_login": ISODate("2024-09-15T20:09:40.212Z")
|
||||
}
|
||||
],
|
||||
});
|
||||
92
admin_scripts/3_DATABASE/dati_attivitas.js
Normal file
92
admin_scripts/3_DATABASE/dati_attivitas.js
Normal file
@@ -0,0 +1,92 @@
|
||||
db.attivitas.insertMany([
|
||||
{
|
||||
"_id": "66db5bd1c76639f8b2c67e55",
|
||||
"coordinate_gps": {
|
||||
"address": "Via Roma, Gaggio Montano, Unione dell'Appennino Bolognese, Bologna, Emilia-Romagna, 40041, Italia",
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
10.953268,
|
||||
44.190335
|
||||
]
|
||||
},
|
||||
"idSkill": 0,
|
||||
"idCity": [
|
||||
744
|
||||
],
|
||||
"userId": "66db21115281b23462d496d2",
|
||||
"idapp": "19",
|
||||
"descr": "Esempio di Attività",
|
||||
"idSector": 2,
|
||||
"note": "Descrizione dell'attività",
|
||||
"tipodiAttivita": 2,
|
||||
"createdBy": "paoloar77",
|
||||
"date_updated": ISODate("2024-09-06T19:45:21.527Z"),
|
||||
"photos": [],
|
||||
"date_created": ISODate("2024-09-06T19:45:21.530Z"),
|
||||
"__v": 0,
|
||||
"numattend": 0,
|
||||
"numbook": 0,
|
||||
"numfav": 0,
|
||||
"numseen": 2
|
||||
},
|
||||
{
|
||||
"_id": "66e2ec7c475c299010b76fe7",
|
||||
"coordinate_gps": {
|
||||
"address": "14, Corso Vittorio Emanuele, Noto, Siracusa, Sicilia, 96017, Italia",
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
15.070645,
|
||||
36.890886
|
||||
]
|
||||
},
|
||||
"idSkill": 0,
|
||||
"idCity": [
|
||||
6908
|
||||
],
|
||||
"userId": "66e2ead3ee075227efd521ad",
|
||||
"idapp": "19",
|
||||
"tipodiAttivita": 1,
|
||||
"descr": "Esempio 2",
|
||||
"idSector": 2,
|
||||
"note": "Descrizione dell'Attività....",
|
||||
"createdBy": "Paolo7",
|
||||
"date_updated": ISODate("2024-09-12T13:28:28.593Z"),
|
||||
"photos": [],
|
||||
"date_created": ISODate("2024-09-12T13:28:28.597Z"),
|
||||
"__v": 0,
|
||||
"numattend": 0,
|
||||
"numbook": 0,
|
||||
"numfav": 0,
|
||||
"numseen": 2
|
||||
},
|
||||
{
|
||||
"_id": "66e31772d0acc6ce435a868b",
|
||||
"coordinate_gps": {
|
||||
"address": "Via Roma, Anzio, Anzio Colonia, Anzio, Roma, Lazio, 00042, Italia",
|
||||
"type": "Point",
|
||||
"coordinates": [
|
||||
12.626422,
|
||||
41.448654
|
||||
]
|
||||
},
|
||||
"idSkill": 1,
|
||||
"idCity": [
|
||||
5903
|
||||
],
|
||||
"userId": "66db21115281b23462d496d2",
|
||||
"idapp": "19",
|
||||
"descr": "prova3",
|
||||
"tipodiAttivita": 1,
|
||||
"idSector": 1,
|
||||
"note": "asdasd",
|
||||
"createdBy": "paoloar77",
|
||||
"date_updated": ISODate("2024-09-12T16:31:46.361Z"),
|
||||
"photos": [],
|
||||
"date_created": ISODate("2024-09-12T16:31:46.364Z"),
|
||||
"__v": 0,
|
||||
"numattend": 0,
|
||||
"numbook": 0,
|
||||
"numfav": 0,
|
||||
"numseen": 1
|
||||
}
|
||||
]);
|
||||
36
admin_scripts/3_DATABASE/dati_mygroups.js
Normal file
36
admin_scripts/3_DATABASE/dati_mygroups.js
Normal file
@@ -0,0 +1,36 @@
|
||||
db.mygroups.insert(
|
||||
{
|
||||
"_id": "66e2e6273eff2ca4e7b2ef92",
|
||||
"idCity": [
|
||||
6908,
|
||||
5634
|
||||
],
|
||||
"note": "Descrizione...",
|
||||
"visibility": [
|
||||
0
|
||||
],
|
||||
"deleted": false,
|
||||
"groupname": "abitaregliiblei",
|
||||
"photos": [],
|
||||
"admins": [
|
||||
{
|
||||
"_id": new ObjectId("66e2e6276b502b07f1e89571"),
|
||||
"username": "paoloar77"
|
||||
}
|
||||
],
|
||||
"req_users": [],
|
||||
"blocked": false,
|
||||
"website": "",
|
||||
"link_telegram": "",
|
||||
"userId": "66db21115281b23462d496d2",
|
||||
"idapp": "19",
|
||||
"title": "Abitare Gli Iblei",
|
||||
"descr": "Abitare Gli Iblei",
|
||||
"idCatGrp": 14,
|
||||
"createdBy": "paoloar77",
|
||||
"date_updated": ISODate("2024-09-12T13:01:27.954Z"),
|
||||
"refused_users": [],
|
||||
"mycircuits": [],
|
||||
"date_created": ISODate("2024-09-12T13:01:27.960Z"),
|
||||
"__v": 0
|
||||
});
|
||||
27
admin_scripts/3_DATABASE/dati_mypages.js
Normal file
27
admin_scripts/3_DATABASE/dati_mypages.js
Normal file
@@ -0,0 +1,27 @@
|
||||
db.mypages.insertMany([
|
||||
{
|
||||
"_id": new ObjectId("66db21118009ea4503bb6a01"),
|
||||
"order": 10,
|
||||
"idapp": "19",
|
||||
"path": "home",
|
||||
"active": true,
|
||||
"title": "Home",
|
||||
},
|
||||
{
|
||||
"_id": new ObjectId("66db21118009ea4503bb6a03"),
|
||||
"order": 10,
|
||||
"idapp": "19",
|
||||
"path": "presentazione",
|
||||
"active": true,
|
||||
"title": "Presentazione",
|
||||
},
|
||||
{
|
||||
"_id": new ObjectId("66e322dd5a6360e3b3c71c5a"),
|
||||
"order": 40,
|
||||
"idapp": "19",
|
||||
"path": "presentazione",
|
||||
"active": true,
|
||||
"title": "Presentazione",
|
||||
"inmenu": true,
|
||||
"icon": "fas fa-info"
|
||||
}]);
|
||||
338
admin_scripts/3_DATABASE/dati_users.js
Normal file
338
admin_scripts/3_DATABASE/dati_users.js
Normal file
@@ -0,0 +1,338 @@
|
||||
db.users.insertMany([
|
||||
{
|
||||
"_id": new ObjectId("66db21115281b23462d496d2"),
|
||||
"profile": {
|
||||
"paymenttypes": [],
|
||||
"notif_idCities": [],
|
||||
"notif_provinces": [],
|
||||
"notif_regions": [],
|
||||
"notif_sectors": [],
|
||||
"notif_sector_goods": [],
|
||||
"myshares": [],
|
||||
"friends": [],
|
||||
"req_friends": [],
|
||||
"handshake": [],
|
||||
"mygroups": [
|
||||
{
|
||||
"groupname": "abitaregliiblei",
|
||||
"date": ISODate("2024-09-12T13:01:27.975Z")
|
||||
}
|
||||
],
|
||||
"mycircuits": [],
|
||||
"notifs": [
|
||||
{
|
||||
"dir": 1,
|
||||
"value": 88
|
||||
},
|
||||
{
|
||||
"dir": 2,
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"dir": 3,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 4,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 5,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 11,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 12,
|
||||
"value": 1
|
||||
}
|
||||
],
|
||||
"seen": [],
|
||||
"bookmark": [],
|
||||
"favorite": [],
|
||||
"attend": [],
|
||||
"special_req": true,
|
||||
"nationality": "IT",
|
||||
"manage_telegram": true,
|
||||
"admin_telegram": true,
|
||||
"teleg_id": 12429864,
|
||||
"username_telegram": "surya1977",
|
||||
"version": 10060
|
||||
},
|
||||
"retry_pwd": 0,
|
||||
"deleted": false,
|
||||
"tokens": [
|
||||
{
|
||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZkYjIxMTE1MjgxYjIzNDYyZDQ5NmQyIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG9hcjc3IiwiaWF0IjoxNzI2NTEyODY1LCJleHAiOjE3Mjc3MjI0NjV9.EOvF89kswT1eqVJCSwVMMI-jB4kokP-aQVhi7xSUods",
|
||||
"_id": new ObjectId("66e87ee1bbe2ce0f77adf6b8"),
|
||||
"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",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZkYjIxMTE1MjgxYjIzNDYyZDQ5NmQyIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG9hcjc3IiwiaWF0IjoxNzI2NTEyODY1LCJleHAiOjE3MjY1MjAwNjV9.ESvyTWmXhfAQ0i-wwjxZR1A1Y5Bwixb60uG_UcOPQ5Y",
|
||||
"date_login": ISODate("2024-09-16T18:54:25.147Z")
|
||||
}
|
||||
],
|
||||
"idapp": "19",
|
||||
"email": "paolo@riso.app",
|
||||
"username": "paoloar77",
|
||||
"password": "$2a$12$rhq.rkdMWP4cE1MOweztiOPeAmwHYVCW9q5vyH4LVGelEssUFRl8C",
|
||||
"name": "paoloar77",
|
||||
"index": 1,
|
||||
"surname": "",
|
||||
"lang": "it",
|
||||
"verified_email": true,
|
||||
"verified_by_aportador": true,
|
||||
"perm": 3,
|
||||
"lasttimeonline": ISODate("2024-09-16T18:55:22.278Z"),
|
||||
"date_reg": ISODate("2024-09-06T15:34:41.673Z"),
|
||||
"__v": 13,
|
||||
"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": new ObjectId("66e49515d18d313a144ead56"),
|
||||
"profile": {
|
||||
"paymenttypes": [],
|
||||
"notif_idCities": [],
|
||||
"notif_provinces": [],
|
||||
"notif_regions": [],
|
||||
"notif_sectors": [],
|
||||
"notif_sector_goods": [],
|
||||
"img": "",
|
||||
"nationality": "",
|
||||
"intcode_cell": "",
|
||||
"cell": "",
|
||||
"dateofbirth": null,
|
||||
"sex": 0,
|
||||
"country_pay": "",
|
||||
"email_paypal": "",
|
||||
"payeer_id": "",
|
||||
"advcash_id": "",
|
||||
"revolut": "",
|
||||
"link_payment": "",
|
||||
"note_payment": "",
|
||||
"username_telegram": "",
|
||||
"teleg_id": 0,
|
||||
"teleg_checkcode": 0,
|
||||
"my_dream": "",
|
||||
"manage_telegram": false,
|
||||
"admin_telegram": false,
|
||||
"saw_zoom_presentation": false,
|
||||
"ask_zoom_partecipato": false,
|
||||
"saw_and_accepted": 0,
|
||||
"socio": false,
|
||||
"socioresidente": false,
|
||||
"qualified": false,
|
||||
"qualified_2invitati": false,
|
||||
"myshares": [],
|
||||
"friends": [],
|
||||
"req_friends": [],
|
||||
"handshake": [],
|
||||
"mygroups": [],
|
||||
"mycircuits": [],
|
||||
"last_circuitpath": "",
|
||||
"notifs": [
|
||||
{
|
||||
"dir": 1,
|
||||
"value": 88
|
||||
},
|
||||
{
|
||||
"dir": 2,
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"dir": 3,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 4,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 5,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 11,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 12,
|
||||
"value": 1
|
||||
}
|
||||
],
|
||||
"stepTutorial": 0,
|
||||
"noNameSurname": false,
|
||||
"noCircuit": false,
|
||||
"noComune": false,
|
||||
"noCircIta": false,
|
||||
"insert_circuito_ita": false,
|
||||
"noFoto": false,
|
||||
"resid_province": "",
|
||||
"resid_card": "",
|
||||
"seen": [],
|
||||
"bookmark": [],
|
||||
"favorite": [],
|
||||
"attend": [],
|
||||
"version": 10060
|
||||
},
|
||||
"retry_pwd": 0,
|
||||
"deleted": false,
|
||||
"email": "paolo@freeplanet.app",
|
||||
"password": "$2a$12$qX5DRHDm9BW/ZTgPvTmP/u7VdaEd5ybfFAmEfqEK2VUAhQGt6DFcO",
|
||||
"username": "paolotest",
|
||||
"name": "Paolo",
|
||||
"surname": "Test",
|
||||
"idapp": "19",
|
||||
"lang": "it",
|
||||
"aportador_solidario": "------",
|
||||
"tokens": [
|
||||
{
|
||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNDk1MTVkMThkMzEzYTE0NGVhZDU2IiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG90ZXN0IiwiaWF0IjoxNzI2MzQ3MzE1LCJleHAiOjE3Mjc1NTY5MTV9.NHnFUXOL0MbjRs9F6HrQsEBRGXG89AsBYP7jU9m8icY",
|
||||
"_id": new ObjectId("66e5f83392c9540e18f89730"),
|
||||
"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",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNDk1MTVkMThkMzEzYTE0NGVhZDU2IiwiYWNjZXNzIjoiYXV0aCIsInVuIjoicGFvbG90ZXN0IiwiaWF0IjoxNzI2MzQ3MzE1LCJleHAiOjE3MjYzNTQ1MTV9.HTr1kNMhBU_38R2Tfy6m22XCbiRh5IsBKC3fl0ipIgM",
|
||||
"date_login": ISODate("2024-09-14T20:55:15.500Z")
|
||||
}
|
||||
],
|
||||
"ipaddr": "::1",
|
||||
"linkreg": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGFwcCI6IjE5IiwiZW1haWwiOiJwYW9sb0BmcmVlcGxhbmV0LmFwcCIsInVzZXJuYW1lIjoicGFvbG90ZXN0IiwiaWF0IjoxNzI2MjU2NDA1fQ.SoIGdtkoBwJvUtfWdDLpY__cdtkq",
|
||||
"verified_email": true,
|
||||
"lasttimeonline": ISODate("2024-09-14T20:55:15.502Z"),
|
||||
"date_reg": ISODate("2024-09-13T19:40:05.188Z"),
|
||||
"aportador_iniziale": "------",
|
||||
"verified_by_aportador": true,
|
||||
"idMyGroup": "abitaregliiblei",
|
||||
"index": 2,
|
||||
"__v": 3,
|
||||
"perm": 16
|
||||
},
|
||||
{
|
||||
"_id": new ObjectId("66e6fb5aac95a84fd0e11881"),
|
||||
"profile": {
|
||||
"paymenttypes": [],
|
||||
"notif_idCities": [],
|
||||
"notif_provinces": [],
|
||||
"notif_regions": [],
|
||||
"notif_sectors": [],
|
||||
"notif_sector_goods": [],
|
||||
"img": "",
|
||||
"nationality": "",
|
||||
"intcode_cell": "",
|
||||
"cell": "",
|
||||
"dateofbirth": null,
|
||||
"sex": 0,
|
||||
"country_pay": "",
|
||||
"email_paypal": "",
|
||||
"payeer_id": "",
|
||||
"advcash_id": "",
|
||||
"revolut": "",
|
||||
"link_payment": "",
|
||||
"note_payment": "",
|
||||
"username_telegram": "",
|
||||
"teleg_id": 0,
|
||||
"teleg_checkcode": 0,
|
||||
"my_dream": "",
|
||||
"manage_telegram": false,
|
||||
"admin_telegram": false,
|
||||
"saw_zoom_presentation": false,
|
||||
"ask_zoom_partecipato": false,
|
||||
"saw_and_accepted": 0,
|
||||
"socio": false,
|
||||
"socioresidente": false,
|
||||
"qualified": false,
|
||||
"qualified_2invitati": false,
|
||||
"myshares": [],
|
||||
"friends": [],
|
||||
"req_friends": [],
|
||||
"handshake": [],
|
||||
"mygroups": [],
|
||||
"mycircuits": [],
|
||||
"last_circuitpath": "",
|
||||
"notifs": [
|
||||
{
|
||||
"dir": 1,
|
||||
"value": 88
|
||||
},
|
||||
{
|
||||
"dir": 2,
|
||||
"value": 4
|
||||
},
|
||||
{
|
||||
"dir": 3,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 4,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 5,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 11,
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"dir": 12,
|
||||
"value": 1
|
||||
}
|
||||
],
|
||||
"stepTutorial": 0,
|
||||
"noNameSurname": false,
|
||||
"noCircuit": false,
|
||||
"noComune": false,
|
||||
"noCircIta": false,
|
||||
"insert_circuito_ita": false,
|
||||
"noFoto": false,
|
||||
"resid_province": "",
|
||||
"resid_card": "",
|
||||
"seen": [],
|
||||
"bookmark": [],
|
||||
"favorite": [],
|
||||
"attend": [],
|
||||
"version": 10060
|
||||
},
|
||||
"retry_pwd": 0,
|
||||
"deleted": false,
|
||||
"email": "vincenzofazzino58@gmail.com",
|
||||
"password": "$2a$12$z7Xg8QUmTsp8Jcj4SpoCsOVUsj5H7aLiKWS.IP2c/OkApnCUhARzK",
|
||||
"username": "Enzo",
|
||||
"name": "Enzo",
|
||||
"surname": "Fazzino",
|
||||
"idapp": "19",
|
||||
"lang": "it",
|
||||
"aportador_solidario": "------",
|
||||
"tokens": [
|
||||
{
|
||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI3NjIzNjY1fQ.6QaBaiE1pv7mDy7S8YUReqH8m0CCK7jTmd57eGHgnzE",
|
||||
"_id": new ObjectId("66e6fcf1ac95a84fd0e11b2c"),
|
||||
"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",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQxNDA2NSwiZXhwIjoxNzI2NDIxMjY1fQ.wCZcQ5uSQXnVgS_ZGyzjl6TOQk8rflfe2HSxSku0Aj4",
|
||||
"date_login": ISODate("2024-09-15T15:27:45.368Z")
|
||||
},
|
||||
{
|
||||
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI3NjQwNTgwfQ.YdB5unWwaZ21kk87RRPolLGiWxf7bKX0piKd-bGQifU",
|
||||
"_id": new ObjectId("66e73f04ac95a84fd0e122ae"),
|
||||
"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",
|
||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiJQUk9WQU1TR0AxQSIsInNtYXJ0IjoiNjZlNmZiNWFhYzk1YTg0ZmQwZTExODgxIiwiYWNjZXNzIjoiYXV0aCIsInVuIjoiRW56byIsImlhdCI6MTcyNjQzMDk4MCwiZXhwIjoxNzI2NDM4MTgwfQ.TMF1UNbgw-EpGVWWDNnY3wRdLYOyp5HzAQiakpyaL_4",
|
||||
"date_login": ISODate("2024-09-15T20:09:40.212Z")
|
||||
}
|
||||
],
|
||||
"ipaddr": "::1",
|
||||
"linkreg": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGFwcCI6IjE5IiwiZW1haWwiOiJ2aW5jZW56b2Zhenppbm81OEBnbWFpbC5jb20iLCJ1c2VybmFtZSI6IkVuem8iLCJpYXQiOjE3MjY0MTM2NTh9.YlgziPXK2ZeWe_buExvHnelMMc",
|
||||
"verified_email": true,
|
||||
"lasttimeonline": ISODate("2024-09-15T20:09:41.378Z"),
|
||||
"date_reg": ISODate("2024-09-15T15:20:58.743Z"),
|
||||
"aportador_iniziale": "------",
|
||||
"verified_by_aportador": true,
|
||||
"idMyGroup": "abitaregliiblei",
|
||||
"index": 3,
|
||||
"__v": 5,
|
||||
"useragent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36"
|
||||
}
|
||||
]);
|
||||
16
admin_scripts/5_UPGRADE/01_export_FreePlanet_to_pcb.sh
Normal file
16
admin_scripts/5_UPGRADE/01_export_FreePlanet_to_pcb.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
#DATA|TITLE|Esporta FreePlanet sul Server PCB
|
||||
#DATA|DESCRIZ|Esporta FreePlanet in "exp_db_test.tar.gz" e lo invia sul Server PCB
|
||||
#DATA|SOCK|false
|
||||
|
||||
DATABASE="FreePlanet"
|
||||
FILEMONGODB="export_database_$DATABASE"
|
||||
FILEZIP="exp_db_test.tar.gz"
|
||||
|
||||
source .my_cfg.ini
|
||||
|
||||
mongodump --db $DATABASE --authenticationDatabase admin -u admin -p $PWDDB --out $FILEMONGODB
|
||||
|
||||
tar cvfz $FILEZIP $FILEMONGODB
|
||||
|
||||
scp -P 8822 $FILEZIP pcbuser@pcb:~
|
||||
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
#DATA|TITLE|Importa FreePlanet su test_FreePlanet
|
||||
#DATA|DESCRIZ|Importa FreePlanet (su test_FreePlanet) dal file inviato dal server mail.freeplanet.app
|
||||
#DATA|SOCK|false
|
||||
|
||||
FILEZIP="exp_db_test.tar.gz"
|
||||
DATABASEIN="FreePlanet"
|
||||
DATABASEOUT="test_FreePlanet"
|
||||
FILEMONGODBIN="export_database_$DATABASEIN"
|
||||
FILEMONGODBOUT="export_database_$DATABASEOUT"
|
||||
|
||||
source .my_cfg.ini
|
||||
|
||||
# Copia il file .tar.gz nel container
|
||||
docker cp /home/pcbuser/$FILEZIP mongodbtest:/home/test/
|
||||
|
||||
# Notifica l'intenzione di estrarre il contenuto del file tar.gz
|
||||
echo "Estrazione di $FILEZIP in /home/test/ all'interno del container..."
|
||||
echo ""
|
||||
|
||||
# Estrai il contenuto del file tar.gz nel container
|
||||
docker exec -it mongodbtest tar -xvzf /home/test/$FILEZIP -C /home/test/
|
||||
|
||||
# Rinomina la directory contenente il database esportato
|
||||
docker exec -i mongodbtest mv /home/test/$FILEMONGODBIN /home/test/$FILEMONGODBOUT
|
||||
|
||||
# Ripristina il database MongoDB dal dump
|
||||
docker exec -i mongodbtest mongorestore --username admin --password $PWDDB_TEST --authenticationDatabase admin --nsFrom='FreePlanet.*' --nsTo='test_FreePlanet.*' /home/test/>
|
||||
30
admin_scripts/5_UPGRADE/backup_sito_web.sh
Normal file
30
admin_scripts/5_UPGRADE/backup_sito_web.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
#DATA|TITLE|Copia sito Web
|
||||
#DATA|DESCRIZ|Fai una copia di Backup del sito web
|
||||
#DATA|SOCK|false
|
||||
|
||||
if [ "$1" = "" ]; then
|
||||
read -p "Inserisci il Sito Web (pippo.it)" WEBSITE
|
||||
else
|
||||
WEBSITE=$1
|
||||
fi
|
||||
|
||||
FILEBACKUP_SITE="BACKUP_$WEBSITE_$(date +"%Y-%m-%d").tar.gz"
|
||||
|
||||
echo "********************************"
|
||||
|
||||
msg="*** COPIA SITO WEB di $WEBSITE (Y/N) ? "
|
||||
|
||||
if [ "$1" = "" ]; then
|
||||
read -p "$msg" risposta
|
||||
else
|
||||
echo $msg
|
||||
risposta=$1
|
||||
fi
|
||||
|
||||
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
||||
tar cvfz $FILEBACKUP_SITE /var/www/$WEBSITE/
|
||||
|
||||
echo "*** COPIA TERMINATA ***
|
||||
echo "***********************"
|
||||
fi
|
||||
20
admin_scripts/6_CERTIFICATI/create_new_cert.sh
Executable file
20
admin_scripts/6_CERTIFICATI/create_new_cert.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
#DATA|TITLE|Creazione Certificato
|
||||
#DATA|DESCRIZ|Crea un Certificato utilizzando cloudflare per dominio e *.dominio
|
||||
#DATA|SOCK|true
|
||||
|
||||
if [ "$1" = "" ]; then
|
||||
read -p "Inserisci il nome del Dominio " DOMINIO
|
||||
else
|
||||
DOMINIO=$1
|
||||
fi
|
||||
|
||||
echo sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/certbot/cloudflare.ini -d $DOMINIO,*.$DOMINIO --preferred-challenges dns-01
|
||||
|
||||
read -p "CONTINUARE ed Eseguirlo ? (Y/N) ? " risposta
|
||||
|
||||
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
||||
|
||||
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/certbot/cloudflare.ini -d $DOMINIO,*.$DOMINIO --preferred-challenges dns-01
|
||||
|
||||
fi
|
||||
3
admin_scripts/listaScript.sh
Executable file
3
admin_scripts/listaScript.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
ls admin_scripts
|
||||
1
aggiornaserver.txt
Executable file
1
aggiornaserver.txt
Executable file
@@ -0,0 +1 @@
|
||||
Aggiornamento Server...
|
||||
@@ -80,7 +80,8 @@ p {
|
||||
|
||||
/* Whitespace (imageless spacer) */
|
||||
.whitespace {
|
||||
line-height: 0; }
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
.firma {
|
||||
font-size: 0.75rem; }
|
||||
|
||||
@@ -13,6 +13,6 @@ fi
|
||||
|
||||
if [[ $risposta == "Y" || $risposta == "y" ]]; then
|
||||
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!"
|
||||
fi
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source ./.env.prod.pcb
|
||||
|
||||
echo "Sincronizzazione in corso PCB PRODUZIONE ... /var/www/$SERVERDIR_WEBSITE/"
|
||||
echo ""
|
||||
|
||||
rsync -avz -e 'ssh -p 8822' css pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' docs pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' emails pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' images pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' plugins pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' sass pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' src pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' .env.prod.pcb pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/.env.production
|
||||
rsync -avz -e 'ssh -p 8822' package.json pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/package.json
|
||||
|
||||
echo "Sincronizzazione TERMINATA! - SERVER PCB!"
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source ./.env.test.pcb
|
||||
|
||||
echo "Sincronizzazione in corso PCB TEST ... /var/www/$SERVERDIR_WEBSITE/"
|
||||
echo ""
|
||||
|
||||
rsync -avz -e 'ssh -p 8822' css pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' docs pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' emails pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' images pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' plugins pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' sass pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' src pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' .env.test.pcb pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/.env.test
|
||||
rsync -avz -e 'ssh -p 8822' .env.test.pcb pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/
|
||||
rsync -avz -e 'ssh -p 8822' package.json pcbuser@pcb:/var/www/$SERVERDIR_WEBSITE/package.json
|
||||
|
||||
echo "Sincronizzazione TERMINATA! - SERVER PCB!"
|
||||
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,21 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source ./.env.test.risosrv
|
||||
|
||||
echo "Sincronizzazione in corso... $DIRECTORY_SERVER"
|
||||
rsync -avz -e 'scp -p 8822' .env.test.risosrv pcbuser@pcb:$DIRECTORY_SERVER/.env.test
|
||||
rsync -avz -e 'ssh -p 8822' ecosystem.config.testriso.js pcbuser@pcb:$DIRECTORY_SERVER/ecosystem.config.js
|
||||
rsync -avz -e 'ssh -p 8822' css pcbuser@pcb:$DIRECTORY_SERVER/
|
||||
rsync -avz -e 'ssh -p 8822' docs pcbuser@pcb:$DIRECTORY_SERVER/
|
||||
rsync -avz -e 'ssh -p 8822' emails pcbuser@pcb:$DIRECTORY_SERVER/
|
||||
rsync -avz -e 'ssh -p 8822' images pcbuser@pcb:$DIRECTORY_SERVER/
|
||||
rsync -avz -e 'ssh -p 8822' plugins pcbuser@pcb:$DIRECTORY_SERVER/
|
||||
rsync -avz -e 'ssh -p 8822' sass pcbuser@pcb:$DIRECTORY_SERVER/
|
||||
rsync -avz -e 'ssh -p 8822' src --exclude 'server/router/upload' pcbuser@pcb:$DIRECTORY_SERVER/
|
||||
rsync -avz -e 'ssh -p 8822' ecosystem.config.testriso.js pcbuser@pcb:$DIRECTORY_SERVER/ecosystem.config.js
|
||||
rsync -avz -e 'ssh -p 8822' package.json pcbuser@pcb:$DIRECTORY_SERVER/package.json
|
||||
|
||||
echo "**************************"
|
||||
echo "Sincronizzazione TERMINATA! - TESTSRISO.FREEPLANET_SERVER!"
|
||||
echo "https://testriso.piuchebuono.app"
|
||||
echo "**************************"
|
||||
@@ -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,39 @@
|
||||
Include /etc/apache2/sites-available/dominioinclude_test.abitaregliiblei.it.conf
|
||||
|
||||
# Configurazione per HTTP
|
||||
<VirtualHost 65.108.222.97:80>
|
||||
ServerName ${MIODOMINIO_COMPLETO}
|
||||
DocumentRoot /var/www/${MIODOMINIO_COMPLETO}
|
||||
|
||||
RewriteEngine on
|
||||
# Redirigi tutto il traffico HTTP verso HTTPS
|
||||
RewriteCond %{SERVER_NAME} =${MIODOMINIO_COMPLETO} [OR]
|
||||
RewriteCond %{SERVER_NAME} =www.${MIODOMINIO_COMPLETO}
|
||||
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
|
||||
|
||||
ErrorLog /var/www/${MIODOMINIO_COMPLETO}/logs/error.log
|
||||
CustomLog /var/www/${MIODOMINIO_COMPLETO}/logs/access.log combined
|
||||
</VirtualHost>
|
||||
|
||||
|
||||
# Configurazione per HTTPS
|
||||
<IfModule mod_ssl.c>
|
||||
<VirtualHost 65.108.222.97:443>
|
||||
ServerName ${MIODOMINIO_COMPLETO}
|
||||
DocumentRoot /var/www/${MIODOMINIO_COMPLETO}
|
||||
|
||||
ErrorLog /var/www/${MIODOMINIO_COMPLETO}/logs/error.log
|
||||
CustomLog /var/www/${MIODOMINIO_COMPLETO}/logs/access.log combined
|
||||
|
||||
<Directory /var/www/${MIODOMINIO_COMPLETO}/>
|
||||
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
RewriteEngine on
|
||||
Include /etc/letsencrypt/options-ssl-apache.conf
|
||||
SSLCertificateFile /etc/letsencrypt/live/${MIODOMINIO}/fullchain.pem
|
||||
SSLCertificateKeyFile /etc/letsencrypt/live/${MIODOMINIO}/privkey.pem
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
@@ -0,0 +1,4 @@
|
||||
Define MIODOMINIO piuchebuono.app
|
||||
Define MIODOMINIO_COMPLETO piuchebuono.app
|
||||
Define MIOURL_API api.piuchebuono.app
|
||||
Define PORTA 3000
|
||||
@@ -0,0 +1,4 @@
|
||||
Define MIODOMINIO abitaregliiblei.it
|
||||
Define MIODOMINIO_COMPLETO test.abitaregliiblei.it
|
||||
Define MIOURL_API testapi.abitaregliiblei.it
|
||||
Define PORTA 3021
|
||||
@@ -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,3 @@
|
||||
Include /etc/apache2/sites-available/dominioinclude_piuchebuono.app.conf
|
||||
|
||||
Include /etc/apache2/sites-available/nodejs_virtualhost_ssl_http_https.conf
|
||||
@@ -0,0 +1,47 @@
|
||||
# Configurazione per HTTP
|
||||
<VirtualHost 65.108.222.97:80>
|
||||
ServerName ${MIOURL_API}
|
||||
|
||||
RewriteEngine on
|
||||
# Redirigi tutto il traffico HTTP verso HTTPS
|
||||
RewriteCond %{SERVER_NAME} =${MIOURL_API} [OR]
|
||||
RewriteCond %{SERVER_NAME} =www.${MIOURL_API}
|
||||
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
|
||||
|
||||
ErrorLog /var/www/${MIODOMINIO_COMPLETO}/logs/error.log
|
||||
CustomLog /var/www/${MIODOMINIO_COMPLETO}/logs/access.log combined
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost 65.108.222.97:443>
|
||||
ServerName ${MIOURL_API}
|
||||
ServerAdmin surya@riso.app
|
||||
|
||||
SSLEngine On
|
||||
SSLProtocol -ALL +TLSv1.2 +TLSv1.3
|
||||
SSLCompression Off
|
||||
SSLHonorCipherOrder off
|
||||
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:E>
|
||||
SSLVerifyDepth 10
|
||||
SSLCertificateFile /etc/letsencrypt/live/${MIODOMINIO}/cert.pem
|
||||
SSLCertificateKeyFile /etc/letsencrypt/live/${MIODOMINIO}/privkey.pem
|
||||
|
||||
ProxyPreserveHost On
|
||||
SSLProxyEngine On
|
||||
SSLProxyVerify None
|
||||
SSLProxyCheckPeerCN Off
|
||||
SSLProxyCheckPeerName Off
|
||||
ProxyPass / https://localhost:${PORTA}/ retry=0 timeout=5 connectiontimeout=2
|
||||
ProxyPassReverse / https://localhost:${PORTA}/
|
||||
|
||||
ProxyTimeout 5
|
||||
|
||||
LogLevel warn
|
||||
ErrorLog /var/www/${MIODOMINIO_COMPLETO}/logs/error.log
|
||||
CustomLog /var/www/${MIODOMINIO_COMPLETO}/logs/access.log combined
|
||||
|
||||
<Location />
|
||||
ProxyPassReverse /
|
||||
SetEnv force-proxy-request-1.0 1
|
||||
SetEnv proxy-nokeepalive 1
|
||||
</Location>
|
||||
</VirtualHost>
|
||||
@@ -0,0 +1,3 @@
|
||||
Include /etc/apache2/sites-available/dominioinclude_piuchebuono.app.conf
|
||||
|
||||
Include /etc/apache2/sites-available/websites_ssl_virtualhost.conf
|
||||
@@ -0,0 +1,3 @@
|
||||
Include /etc/apache2/sites-available/dominioinclude_test.abitaregliiblei.it.conf
|
||||
|
||||
Include /etc/apache2/sites-available/websites_ssl_virtualhost.conf
|
||||
@@ -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-->
|
||||
26
docs/apache2/riso.app-le.ssl.conf
Normal file
26
docs/apache2/riso.app-le.ssl.conf
Normal file
@@ -0,0 +1,26 @@
|
||||
<VirtualHost 89.36.222.238:443>
|
||||
SuexecUserGroup "#1008" "#1008"
|
||||
ServerName riso.app
|
||||
ServerAlias www.riso.app
|
||||
DocumentRoot /var/www/riso.app
|
||||
|
||||
ErrorLog /var/www/riso.app/logs//error.log
|
||||
CustomLog /var/www/riso.app/logs/access.log combined
|
||||
|
||||
<Directory /var/www/riso.app/>
|
||||
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
|
||||
allow from all
|
||||
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
<If "%{HTTP_HOST} == 'www.riso.app'">
|
||||
Redirect permanent / https://riso.app/
|
||||
</If>
|
||||
|
||||
RewriteEngine on
|
||||
Include /etc/letsencrypt/options-ssl-apache.conf
|
||||
SSLCertificateFile /etc/letsencrypt/live/riso.app/fullchain.pem
|
||||
SSLCertificateKeyFile /etc/letsencrypt/live/riso.app/privkey.pem
|
||||
</VirtualHost>
|
||||
</IfModule>
|
||||
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
|
||||
@@ -0,0 +1,4 @@
|
||||
Define MIODOMINIO riso.app
|
||||
Define MIODOMINIO_COMPLETO test.riso.app
|
||||
Define MIOURL_API testapi.riso.app
|
||||
Define PORTA 3005
|
||||
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
|
||||
94
docs/apache2/sites-available/websites_ssl_virtualhost.conf
Normal file
94
docs/apache2/sites-available/websites_ssl_virtualhost.conf
Normal file
@@ -0,0 +1,94 @@
|
||||
# ==================== APEX (SITO) ====================
|
||||
# HTTP -> HTTPS
|
||||
<VirtualHost *:80>
|
||||
ServerName ${MIODOMINIO}
|
||||
ServerAlias www.${MIODOMINIO}
|
||||
|
||||
RewriteEngine On
|
||||
RewriteRule ^ https://${MIODOMINIO}%{REQUEST_URI} [R=301,L]
|
||||
|
||||
ErrorLog /var/log/apache2/${MIODOMINIO}-error.log
|
||||
CustomLog /var/log/apache2/${MIODOMINIO}-access.log combined
|
||||
</VirtualHost>
|
||||
|
||||
# HTTPS (servizio sito - NO proxy qui)
|
||||
<VirtualHost *:443>
|
||||
ServerName ${MIODOMINIO}
|
||||
ServerAlias www.${MIODOMINIO}
|
||||
|
||||
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}-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>
|
||||
@@ -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>
|
||||
24
docs/gitlab/aggiungere_a_gitlab.rb.txt
Normal file
24
docs/gitlab/aggiungere_a_gitlab.rb.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
docker exec -it gitlab /bin/bash
|
||||
|
||||
apt-get update
|
||||
apt-get install nano
|
||||
|
||||
nano /etc/gitlab/gitlab.rb
|
||||
|
||||
|
||||
gitlab_rails['smtp_address'] = "smtp.example.com"
|
||||
gitlab_rails['smtp_port'] = 587
|
||||
gitlab_rails['smtp_user_name'] = "tuo_username"
|
||||
gitlab_rails['smtp_password'] = "tuo_password"
|
||||
gitlab_rails['smtp_domain'] = "example.com"
|
||||
gitlab_rails['smtp_enable_starttls_auto'] = true
|
||||
gitlab_rails['smtp_tls'] = true
|
||||
|
||||
|
||||
gitlab_rails['smtp_address'] = "box.lamiaposta.org"
|
||||
gitlab_rails['smtp_port'] = 465
|
||||
gitlab_rails['smtp_user_name'] = "gitlab@riso.app"
|
||||
gitlab_rails['smtp_password'] = "MYPRISO_1290_1977@!"
|
||||
gitlab_rails['smtp_domain'] = "lamiaposta.org"
|
||||
gitlab_rails['smtp_enable_starttls_auto'] = true
|
||||
gitlab_rails['smtp_tls'] = true
|
||||
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>
|
||||
0
docs/router/admin_router
Normal file
0
docs/router/admin_router
Normal file
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>
|
||||
@@ -2,22 +2,18 @@ module.exports = {
|
||||
apps : [
|
||||
{
|
||||
name: "FreePlanetServerSide",
|
||||
script: "./src/server/server.js",
|
||||
script: "./src/server.js",
|
||||
ignore_watch : ["node_modules"],
|
||||
interpreter: "/root/.nvm/versions/node/v16.19.0/bin/node",
|
||||
watch: false,
|
||||
//autorestart: true,
|
||||
instances: 1,
|
||||
env: {
|
||||
"PORT": 3000,
|
||||
"NODE_ENV": "development",
|
||||
},
|
||||
env_test: {
|
||||
"PORT": 3001,
|
||||
"NODE_ENV": "test",
|
||||
},
|
||||
env_production: {
|
||||
"PORT": 3000,
|
||||
"NODE_ENV": "production",
|
||||
},
|
||||
log_file: "logs/combined.outerr.log",
|
||||
|
||||
21
ecosystem.config.pcb_prod.js
Executable file
21
ecosystem.config.pcb_prod.js
Executable file
@@ -0,0 +1,21 @@
|
||||
module.exports = {
|
||||
apps: [
|
||||
{
|
||||
name: "PCB-PROD",
|
||||
script: "/var/www/nodejs_piuchebuono_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.test.outerr.log",
|
||||
error_file: "logs/errtest.log",
|
||||
out_file: "logs/outtest.log",
|
||||
merge_logs: true,
|
||||
log_date_format: "YYYY-MM-DD HH:mm:ss.SSSS Z"
|
||||
}
|
||||
]
|
||||
};
|
||||
21
ecosystem.config.pcb_test.js
Executable file
21
ecosystem.config.pcb_test.js
Executable file
@@ -0,0 +1,21 @@
|
||||
module.exports = {
|
||||
apps: [
|
||||
{
|
||||
name: "PCB-TEST",
|
||||
script: "/var/www/nodejs_test.piuchebuono_server/src/server.js",
|
||||
ignore_watch: ["node_modules", "logs"],
|
||||
// interpreter: "/root/.nvm/versions/node/v22.13.1/bin/node",
|
||||
instances: 1,
|
||||
watch: false,
|
||||
env: {
|
||||
"PORT": 0,
|
||||
"NODE_ENV": "test"
|
||||
},
|
||||
log_file: "logs/combined.test.outerr.log",
|
||||
error_file: "logs/errtest.log",
|
||||
out_file: "logs/outtest.log",
|
||||
merge_logs: true,
|
||||
log_date_format: "YYYY-MM-DD HH:mm:ss.SSSS Z"
|
||||
}
|
||||
]
|
||||
};
|
||||
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 = {
|
||||
apps : [
|
||||
apps: [
|
||||
{
|
||||
name: "TESTRISO2 FreePlanetServerSide",
|
||||
script: "./src/server/server.js",
|
||||
ignore_watch : ["node_modules"],
|
||||
interpreter: "/root/.nvm/versions/node/v16.19.0/bin/node",
|
||||
name: "RISO-TEST",
|
||||
script: "./src/server.js",
|
||||
ignore_watch: ["node_modules", "logs"],
|
||||
// interpreter: "/root/.nvm/versions/node/v22.13.1/bin/node",
|
||||
watch: false,
|
||||
//autorestart: true,
|
||||
instances: 1,
|
||||
env_test: {
|
||||
"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,40 +1,185 @@
|
||||
p #{username} (#{name} #{surname}) si è appena Registrato su #{nomeapp}
|
||||
p Con i seguenti dati di accesso:
|
||||
span Username:
|
||||
strong #{username}<br>
|
||||
span Email:
|
||||
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>
|
||||
p <br>Saluti
|
||||
|
||||
style(type="text/css").
|
||||
html, body {
|
||||
padding: 0;
|
||||
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;
|
||||
}
|
||||
|
||||
.divbtn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.btn-lg {
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
font-size: 26px;
|
||||
cursor: pointer;
|
||||
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;
|
||||
}
|
||||
|
||||
.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, #027be3 0%, #0056b3 100%);
|
||||
color: white;
|
||||
background: #027be3 !important;
|
||||
border-radius: 28px;
|
||||
padding: 32px 24px;
|
||||
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
|
||||
td(class="whitespace", height="10")
|
||||
p
|
||||
td
|
||||
|
||||
- var totalPrice = orders.totalPrice
|
||||
- var note = orders.note
|
||||
@@ -64,7 +63,8 @@ html
|
||||
|
||||
each rec in orders.items
|
||||
- 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 after_price = rec.order.after_price
|
||||
- var TotalPriceProduct = rec.order.TotalPriceProductstr
|
||||
@@ -104,6 +104,9 @@ html
|
||||
tr
|
||||
td(class="sectionContentTitle boldhigh", valign="top")
|
||||
p #{descr}
|
||||
tr
|
||||
td(class="sectionContent", valign="top")
|
||||
p Codice: #{code}
|
||||
tr
|
||||
td(class="sectionContent", valign="top")
|
||||
p Prezzo: #{price} € #{after_price}
|
||||
@@ -118,7 +121,7 @@ html
|
||||
p Totale: #{TotalPriceProduct} €
|
||||
|
||||
if (note)
|
||||
p Note Aggiuntive: #{note}
|
||||
p Note Aggiuntive: #{note}<br>
|
||||
|
||||
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
|
||||
tr
|
||||
|
||||
@@ -19,7 +19,6 @@ html
|
||||
}
|
||||
|
||||
body(yahoofix, style="background: #ffffff")
|
||||
- var baseimg = baseurl + '/statics/'
|
||||
span(id='body_style', style='display:block')
|
||||
table(cellpadding="10", cellspacing="0", width="600", align="center")
|
||||
tr
|
||||
|
||||
@@ -52,7 +52,7 @@ html
|
||||
if (miordconfirmed)
|
||||
p!= miordconfirmed
|
||||
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
|
||||
|
||||
@@ -62,7 +62,8 @@ html
|
||||
|
||||
each rec in orders.items
|
||||
- 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 after_price = rec.order.product.after_price
|
||||
if (rec.order.gasordine)
|
||||
@@ -101,6 +102,9 @@ html
|
||||
tr
|
||||
td(class="sectionContentTitle boldhigh", valign="top")
|
||||
p #{descr}
|
||||
tr
|
||||
td(class="sectionContent", valign="top")
|
||||
p Codice: #{code}
|
||||
tr
|
||||
td(class="sectionContent", valign="top")
|
||||
p Prezzo: #{price} € #{after_price}
|
||||
@@ -117,7 +121,7 @@ html
|
||||
p Totale: #{TotalPriceProduct} €
|
||||
|
||||
if (note)
|
||||
p Note Aggiuntive: #{note}
|
||||
p Note Aggiuntive: #{note}<br>
|
||||
|
||||
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
|
||||
tr
|
||||
|
||||
@@ -45,7 +45,7 @@ html
|
||||
p Ciao #{mioname},
|
||||
p L'ordine n. #{ordernumber} è stato Consegnato correttamente 📦 !
|
||||
p Grazie per averci scelto 🙏🏻 e alla prossima !
|
||||
p
|
||||
p
|
||||
|
||||
if (orders.items[0].order.quantitypreordered > 0)
|
||||
- var miomakeorder = mystorehouse.email_html_GAS_order_consegnato
|
||||
@@ -61,7 +61,7 @@ html
|
||||
|
||||
each rec in orders.items
|
||||
- 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 after_price = rec.order.product.after_price
|
||||
if (rec.order.gasordine)
|
||||
@@ -116,7 +116,7 @@ html
|
||||
p Totale: #{TotalPriceProduct} €
|
||||
|
||||
if (note)
|
||||
p Note Aggiuntive: #{note}
|
||||
p Note Aggiuntive: #{note}<br>
|
||||
|
||||
p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} €
|
||||
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à
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user