Compare commits
15 Commits
SubAccount
...
Ecommerce
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b4cbe153b | ||
|
|
cec0b4857f | ||
|
|
1e8f58b930 | ||
|
|
8ae63c3357 | ||
|
|
fada2ec2be | ||
|
|
594fdcbee4 | ||
|
|
8f9028ddba | ||
|
|
e752c406dc | ||
|
|
7a202fbe8e | ||
|
|
0e6a350f4e | ||
|
|
b9d451bd49 | ||
|
|
316ebbb78b | ||
|
|
d31a5e88ec | ||
|
|
f094af396b | ||
|
|
1ee08b57ab |
28137
package-lock.json
generated
@@ -70,7 +70,6 @@
|
||||
"vue-scroll-reveal": "^1.0.11",
|
||||
"vue-svgicon": "^3.1.0",
|
||||
"vue-tel-input": "^4.1.1",
|
||||
"vue2-dragula": "^2.5.4",
|
||||
"vuelidate": "^0.7.4",
|
||||
"vuex": "^3.0.1",
|
||||
"vuex-class": "^0.3.1",
|
||||
@@ -94,7 +93,7 @@
|
||||
"@babel/plugin-syntax-import-meta": "^7.2.0",
|
||||
"@babel/preset-env": "^7.4.2",
|
||||
"@quasar/app": "1.5.2",
|
||||
"@quasar/quasar-app-extension-qcalendar": "^1.3.14",
|
||||
"@quasar/quasar-app-extension-qcalendar": "^2.0.0",
|
||||
"@quasar/quasar-app-extension-qmediaplayer": "^1.0.17",
|
||||
"@quasar/quasar-app-extension-qscroller": "1.0.5",
|
||||
"@quasar/quasar-app-extension-typescript": "^1.0.0-alpha.11",
|
||||
|
||||
@@ -94,6 +94,7 @@ module.exports = function (ctx) {
|
||||
store: 'src/store/index.ts'
|
||||
},
|
||||
// app plugins (/src/plugins)
|
||||
// app plugins (/src/plugins)
|
||||
boot: [
|
||||
{ path: 'vue-i18n', server: true, client: true },
|
||||
{ path: 'vue-meta', server: true, client: true },
|
||||
@@ -104,10 +105,11 @@ module.exports = function (ctx) {
|
||||
{ path: 'error-handler', server: true, client: true },
|
||||
{ path: 'globalroutines', server: true, client: true },
|
||||
{ path: 'vue-idb', server: true, client: true },
|
||||
// { path: 'dragula', server: true, client: true },
|
||||
{ path: 'guard', server: true, client: true },
|
||||
{ path: 'vuetelinput', server: true, client: true },
|
||||
{ path: 'mycharts', server: true, client: true }],
|
||||
// { path: 'googlemap', server: true, client: true }],
|
||||
// { path: 'googlemap', server: true, client: true }],
|
||||
css: [
|
||||
'app.styl'
|
||||
],
|
||||
@@ -166,6 +168,8 @@ module.exports = function (ctx) {
|
||||
framework: {
|
||||
components: [
|
||||
'QLayout',
|
||||
'QBreadcrumbs',
|
||||
'QBreadcrumbsEl',
|
||||
'QDrawer',
|
||||
'QItemSection',
|
||||
'QHeader',
|
||||
@@ -306,12 +310,17 @@ module.exports = function (ctx) {
|
||||
background_color: '#ffffff',
|
||||
icons: [
|
||||
{
|
||||
'src': 'statics/icons/android-chrome-192x192.png',
|
||||
'sizes': '192x192',
|
||||
'src': 'statics/icons/android-chrome-36x36.png',
|
||||
'sizes': '36x36',
|
||||
'type': 'image/png'
|
||||
},
|
||||
{
|
||||
'src': 'statics/icons/android-chrome-512x512',
|
||||
'src': 'statics/icons/android-chrome-96x96.png',
|
||||
'sizes': '96x96',
|
||||
'type': 'image/png'
|
||||
},
|
||||
{
|
||||
'src': 'statics/icons/android-chrome-512x512.png',
|
||||
'sizes': '512x512',
|
||||
'type': 'image/png'
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
// Questo è il swSrc
|
||||
|
||||
console.log(' [ VER-0.0.62 ] _---------________------ PAO: this is my custom service worker');
|
||||
console.log(' [ VER-0.0.83 ] _---------________------ PAO: this is my custom service worker');
|
||||
|
||||
importScripts('../statics/js/idb.js');
|
||||
importScripts('../statics/js/storage.js');
|
||||
@@ -23,7 +23,7 @@ if (self.location.hostname.startsWith('test')) {
|
||||
const cfgenv = {
|
||||
serverweb: self.location.protocol + "//" + self.location.hostname + ':' + port,
|
||||
dbname: 'mydb3',
|
||||
dbversion: 11,
|
||||
dbversion: 12,
|
||||
}
|
||||
|
||||
// console.log('serverweb', cfgenv.serverweb)
|
||||
@@ -221,7 +221,11 @@ if (workbox) {
|
||||
}
|
||||
|
||||
workbox.routing.registerRoute(function (routeData) {
|
||||
return (routeData.event.request.headers.get('accept').includes('text/html'));
|
||||
const myaccept = routeData.event.request.headers.get('accept')
|
||||
if (myaccept)
|
||||
return (myaccept.includes('text/html'));
|
||||
else
|
||||
return null
|
||||
}, function (args) {
|
||||
return caches.match(args.event.request)
|
||||
.then(function (response) {
|
||||
|
||||
@@ -24,6 +24,9 @@ register(process.env.SERVICE_WORKER_FILE, {
|
||||
},
|
||||
updated(registration) {
|
||||
console.log('New content is available; please refresh.')
|
||||
document.dispatchEvent(
|
||||
new CustomEvent('swUpdated', { detail: registration })
|
||||
)
|
||||
},
|
||||
offline() {
|
||||
console.log('No internet connection found. App is running in offline mode.')
|
||||
|
||||
139
src/App.scss
@@ -85,7 +85,7 @@ $heightBtn: 100%;
|
||||
margin-left: 3px;
|
||||
margin-right: 3px;
|
||||
color: #000;
|
||||
font-size: 1rem;
|
||||
font-size: 0.9rem;
|
||||
height: $heightBtn;
|
||||
line-height: $heightBtn;
|
||||
vertical-align: middle;
|
||||
@@ -201,6 +201,17 @@ $heightBtn: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.text-price {
|
||||
margin-bottom: 6px;
|
||||
font-size: 1.10rem;
|
||||
font-weight: 400;
|
||||
text-shadow: .25 .25rem .5rem $grayshadow;
|
||||
letter-spacing: .00937em;
|
||||
&.big {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.text-subtitle2, h3 {
|
||||
margin-bottom: 4px;
|
||||
font-size: 1.15rem;
|
||||
@@ -237,6 +248,10 @@ $heightBtn: 100%;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.text-subtitle4 {
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
|
||||
.cltexth3 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
@@ -247,18 +262,45 @@ $heightBtn: 100%;
|
||||
.text-sobig {
|
||||
font-size: 1.50rem;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.my-card {
|
||||
width: 100%;
|
||||
max-width: 350px;
|
||||
max-width: 300px;
|
||||
min-width: 300px;
|
||||
padding: 1rem 1rem;
|
||||
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.myimgtitle {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
width: 400px;
|
||||
|
||||
@media (max-width: 718px) {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 300px;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.my-card-big {
|
||||
width: 100%;
|
||||
padding: 1rem 1rem;
|
||||
|
||||
box-shadow: none;
|
||||
|
||||
@media (max-width: 718px) {
|
||||
// PER VERSIONE MOBILE
|
||||
max-width: 400px;
|
||||
padding: 1rem 1rem;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.text-trans {
|
||||
opacity: 0.9;
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
|
||||
@@ -726,6 +768,13 @@ $heightBtn: 100%;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
.clBorderShare {
|
||||
border-radius: 32px;
|
||||
font-size: 1rem;
|
||||
padding: 6px;
|
||||
border: #666cf6 solid 3px;
|
||||
}
|
||||
|
||||
.clBorderImportant, .clBorderSteps {
|
||||
border: red solid 5px;
|
||||
border-radius: 16px;
|
||||
@@ -783,6 +832,18 @@ $heightBtn: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.img2 {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
max-height: 550px;
|
||||
max-width: 550px;
|
||||
@media (max-width: 718px) {
|
||||
max-height: 350px;
|
||||
max-width: 350px;
|
||||
}
|
||||
}
|
||||
|
||||
.center-150 {
|
||||
width: 150px;
|
||||
margin-left: auto;
|
||||
@@ -793,6 +854,10 @@ $heightBtn: 100%;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.text-h8{
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
|
||||
.bordo_stondato, .bordo_stondato_blu{
|
||||
margin: 4px;
|
||||
border-radius: 3rem;
|
||||
@@ -885,3 +950,71 @@ $heightBtn: 100%;
|
||||
font-size: 0.8rem !important;
|
||||
}
|
||||
}
|
||||
|
||||
#mycontainer {
|
||||
min-height:100%;
|
||||
position:relative;
|
||||
}
|
||||
.myheader {
|
||||
padding: 5px;
|
||||
@media (max-width: 500px) {
|
||||
padding: 1px;
|
||||
}
|
||||
}
|
||||
#mybody {
|
||||
padding: 5px;
|
||||
@media (max-width: 500px) {
|
||||
padding: 1px;
|
||||
}
|
||||
}
|
||||
.myfooter{
|
||||
|
||||
}
|
||||
|
||||
.iconplusminus{
|
||||
font-size: 6px;
|
||||
}
|
||||
|
||||
.clpos{
|
||||
color: #C0C0C0;
|
||||
}
|
||||
.clresp{
|
||||
color: #206d24;
|
||||
}
|
||||
.clrespempty{
|
||||
color: #DDDDDD;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.flex-item {
|
||||
padding: 1px;
|
||||
margin: 1px;
|
||||
}
|
||||
|
||||
.flex-container {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.q-tab-panel {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.q-item {
|
||||
padding: 2px 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.underline {
|
||||
text-decoration: underline;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.underline:hover {
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.centeritems{
|
||||
place-content: center;
|
||||
}
|
||||
|
||||
@@ -8,13 +8,13 @@ import { Header } from './components/Header'
|
||||
import globalroutines from './globalroutines/index'
|
||||
import { GlobalStore } from './store/Modules'
|
||||
import { toolsext } from '@src/store/Modules/toolsext'
|
||||
import { BannerCookies, CPreloadImages, CTesseraElettronica } from '@components'
|
||||
import { BannerCookies, CPreloadImages } from '@components'
|
||||
import { static_data } from '@src/db/static_data'
|
||||
|
||||
@Component({
|
||||
components: {
|
||||
appHeader: Header,
|
||||
BannerCookies, CPreloadImages, CTesseraElettronica
|
||||
BannerCookies, CPreloadImages
|
||||
},
|
||||
router
|
||||
})
|
||||
|
||||
50
src/App.vue
@@ -1,35 +1,35 @@
|
||||
<template>
|
||||
<div id="q-app">
|
||||
<div>
|
||||
<q-layout view="hHh Lpr lff" class="shadow-2 rounded-borders">
|
||||
<app-header>
|
||||
</app-header>
|
||||
<q-ajax-bar></q-ajax-bar>
|
||||
<div id="q-app">
|
||||
<div>
|
||||
<q-layout view="hHh Lpr lff" class="shadow-2 rounded-borders">
|
||||
<app-header>
|
||||
</app-header>
|
||||
<q-ajax-bar></q-ajax-bar>
|
||||
|
||||
<CPreloadImages :arrimg="static_data.preLoadImages">
|
||||
</CPreloadImages>
|
||||
<CPreloadImages :arrimg="static_data.preLoadImages">
|
||||
</CPreloadImages>
|
||||
|
||||
|
||||
<q-page-container id="mypage" >
|
||||
<div v-if="finishLoading">
|
||||
<transition name="fade" mode="out-in">
|
||||
<router-view/>
|
||||
</transition>
|
||||
</div>
|
||||
<q-inner-loading id="spinner" :showing="!finishLoading">
|
||||
<q-spinner-tail
|
||||
color="primary"
|
||||
size="4em">
|
||||
</q-spinner-tail>
|
||||
</q-inner-loading>
|
||||
</q-page-container>
|
||||
</q-layout>
|
||||
</div>
|
||||
<BannerCookies urlInfo="/policy"></BannerCookies>
|
||||
<q-page-container id="mypage">
|
||||
<div v-if="finishLoading">
|
||||
<transition name="fade" mode="out-in">
|
||||
<router-view/>
|
||||
</transition>
|
||||
</div>
|
||||
<q-inner-loading id="spinner" :showing="!finishLoading">
|
||||
<q-spinner-tail
|
||||
color="primary"
|
||||
size="4em">
|
||||
</q-spinner-tail>
|
||||
</q-inner-loading>
|
||||
</q-page-container>
|
||||
</q-layout>
|
||||
</div>
|
||||
<BannerCookies urlInfo="/policy"></BannerCookies>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" src="./App.ts">
|
||||
</script>
|
||||
<style lang="scss">
|
||||
@import './App';
|
||||
@import './App';
|
||||
</style>
|
||||
|
||||
@@ -4,16 +4,43 @@ const msg_website_it = {
|
||||
siteshortname: 'CNM',
|
||||
botname: 'CNM BOT',
|
||||
},
|
||||
products: {
|
||||
quantity: 'Quantità',
|
||||
quantityAvailable: 'Disponibili',
|
||||
weight: 'Peso',
|
||||
stars: 'Voto',
|
||||
},
|
||||
hours: {
|
||||
descr: 'Descrizione',
|
||||
date: 'Data',
|
||||
time_start: 'Ora Inizio',
|
||||
time_end: 'Ora Fine',
|
||||
hours: 'Ore',
|
||||
note: 'Note Extra',
|
||||
},
|
||||
pages: {
|
||||
home: 'Home',
|
||||
profile: 'Profilo',
|
||||
projects: 'Progetti',
|
||||
report: 'Report Ore',
|
||||
producer: 'Produttore',
|
||||
orderinfo: 'Ordini Effettuati',
|
||||
products: 'Prodotti',
|
||||
productslist: 'Lista Prodotti',
|
||||
collabora: 'Collabora',
|
||||
storehouses: 'Magazzino',
|
||||
departments: 'Uffici',
|
||||
orders: 'Ordini Ricevuti',
|
||||
orders2: 'Ordini Ricevuti',
|
||||
sharewithus: 'Condividi con Noi',
|
||||
checkout: 'Carrello',
|
||||
payment: 'Pagamenti',
|
||||
regok: 'Registrazione Confermata',
|
||||
presentazione: 'Presentazione',
|
||||
presentazione2: 'Presentazione',
|
||||
invita: 'Invita Persone',
|
||||
SignUp: 'Nuova Registrazione',
|
||||
SignUpIscrizione: 'Diventa Socio CNM',
|
||||
SignUp_alreadylista: 'Registrazione per quelli che erano già nella lista di Notevole (del 2019) !',
|
||||
SignUp2: 'Registrazione',
|
||||
SignIn: 'Login',
|
||||
@@ -30,19 +57,22 @@ const msg_website_it = {
|
||||
Test: 'Test',
|
||||
Category: 'Categorie',
|
||||
Admin: 'Admin',
|
||||
Sites: 'Siti Web',
|
||||
extralist: 'Lista Extra',
|
||||
Test1: 'Test1',
|
||||
Test2: 'Test2',
|
||||
chisiamo: 'Chi Siamo',
|
||||
linkamici: 'Link Amici',
|
||||
dovesiamo: 'Dove Siamo',
|
||||
calendarioeventi: 'Calendario Eventi',
|
||||
evento: 'Evento',
|
||||
eventodef: 'Evento:',
|
||||
prova: 'prova',
|
||||
dbop: 'Operazioni',
|
||||
projall: 'Tutti',
|
||||
projectsShared: 'Miei Condivisi',
|
||||
myprojects: 'Miei Personali',
|
||||
projall: 'Comunitari',
|
||||
groups: 'Lista Gruppi',
|
||||
projectsShared: 'Condivisi da me',
|
||||
myprojects: 'Privati',
|
||||
favproj: 'Favoriti',
|
||||
statusreg: {
|
||||
reg: 'Partecipanti',
|
||||
@@ -50,6 +80,7 @@ const msg_website_it = {
|
||||
giainlista: 'Gia in Lista',
|
||||
newreg: 'Ultime Registrazioni:',
|
||||
nationality: 'Nazionalità',
|
||||
nationality_born: 'Nazione di Nascita',
|
||||
verified: 'Verificata',
|
||||
nonverified: 'Non Verificata',
|
||||
req7: 'Con 5 passi entri nella lista d\'Imbarco',
|
||||
@@ -57,7 +88,11 @@ const msg_website_it = {
|
||||
req: 'Passi',
|
||||
people: 'Inv.',
|
||||
peoplelegend: 'Numero d\'Invitati'
|
||||
}
|
||||
},
|
||||
admin_ecommerce: 'ECommerce',
|
||||
ecommerce: 'Prodotti',
|
||||
ecommerce_menu: 'ECommerce1',
|
||||
hours: 'Ore',
|
||||
},
|
||||
msg: {
|
||||
myAppDescription: '',
|
||||
|
||||
@@ -18,14 +18,29 @@ const functionality: IFunctionality = {
|
||||
ENABLE_REG_AYNI: false,
|
||||
SHOW_NEWSLETTER: false,
|
||||
SHOW_ONLY_POLICY: true,
|
||||
ENABLE_TODOS_LOADING: false,
|
||||
ENABLE_TODOS_LOADING: true,
|
||||
ENABLE_PROJECTS_LOADING: true,
|
||||
SHOW_IF_IS_SERVER_CONNECTION: true,
|
||||
SHOW_MESSAGES: false,
|
||||
BOOKING_EVENTS: false
|
||||
BOOKING_EVENTS: true,
|
||||
ENABLE_ECOMMERCE: true,
|
||||
ENABLE_REG_CNM: true,
|
||||
}
|
||||
|
||||
const routes_admin: IListRoutes[] = [
|
||||
{
|
||||
active: true,
|
||||
order: 10,
|
||||
path: '/admin/sites',
|
||||
materialIcon: 'event_seat',
|
||||
name: 'pages.Sites',
|
||||
component: () => import('@/rootgen/admin/sites/sites.vue'),
|
||||
level_parent: 0.0,
|
||||
level_child: 0.5,
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
onlyAdmin: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 1000,
|
||||
@@ -51,70 +66,256 @@ const routes_admin: IListRoutes[] = [
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
onlyAdmin: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 1030,
|
||||
path: '/admin/sendpushnotif',
|
||||
materialIcon: 'event_seat',
|
||||
name: 'otherpages.manage.sendpushnotif',
|
||||
component: () => import('@/rootgen/admin/sendpushnotif/sendpushnotif.vue'),
|
||||
level_parent: 0.0,
|
||||
level_child: 0.5,
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
onlyAdmin: true
|
||||
}
|
||||
]
|
||||
|
||||
const routes_projects: IListRoutes[] = [
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 10,
|
||||
path: '/' + RouteNames.projectsall + '/:idProj',
|
||||
order: 5,
|
||||
path: '/admin/groups',
|
||||
materialIcon: 'accessibility_new',
|
||||
name: RouteNames.projectsall,
|
||||
name: 'pages.groups',
|
||||
level_parent: 0.0,
|
||||
level_child: 0.5,
|
||||
component: () => import('@/rootgen/admin/groups/groups.vue'),
|
||||
inmenu: true,
|
||||
onlyManager: true,
|
||||
onlyAdmin: true,
|
||||
infooter: functionality.ENABLE_PROJECTS_LOADING,
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 10,
|
||||
path: '/projall/',
|
||||
materialIcon: 'accessibility_new',
|
||||
urlroute: 'projall',
|
||||
name: 'pages.projall',
|
||||
level_parent: 0.0,
|
||||
level_child: 0.5,
|
||||
component: () => import('@/views/projects/proj-list/proj-list.vue'),
|
||||
inmenu: functionality.SHOW_MESSAGES,
|
||||
inmenu: functionality.ENABLE_PROJECTS_LOADING,
|
||||
infooter: functionality.ENABLE_PROJECTS_LOADING,
|
||||
meta: {
|
||||
requiresAuth: false,
|
||||
async asyncData() {
|
||||
// await Todos.actions.dbLoad({ checkPending: false })
|
||||
await Projects.actions.dbLoad({ checkPending: false, onlyiffirsttime: true })
|
||||
}
|
||||
},
|
||||
onlySocioResidente: true,
|
||||
onlyAdmin: true,
|
||||
idelem: process.env.PROJECT_ID_MAIN
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 20,
|
||||
path: '/' + RouteNames.myprojects + '/:idProj',
|
||||
path: '/myprojects/',
|
||||
materialIcon: 'accessibility_new',
|
||||
name: RouteNames.myprojects,
|
||||
name: 'pages.myprojects',
|
||||
urlroute: 'myprojects',
|
||||
level_parent: 0.0,
|
||||
level_child: 0.5,
|
||||
onlySocioResidente: true,
|
||||
onlyAdmin: true,
|
||||
component: () => import('@/views/projects/proj-list/proj-list.vue'),
|
||||
inmenu: functionality.SHOW_MESSAGES,
|
||||
inmenu: functionality.ENABLE_PROJECTS_LOADING,
|
||||
infooter: functionality.ENABLE_PROJECTS_LOADING,
|
||||
meta: {
|
||||
requiresAuth: false,
|
||||
async asyncData() {
|
||||
// await Todos.actions.dbLoad({ checkPending: false })
|
||||
await Projects.actions.dbLoad({ checkPending: false, onlyiffirsttime: true })
|
||||
}
|
||||
},
|
||||
idelem: process.env.PROJECT_ID_MAIN
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 30,
|
||||
path: '/' + RouteNames.projectsshared + '/:idProj',
|
||||
path: '/projectsShared/',
|
||||
urlroute: 'projectsShared',
|
||||
materialIcon: 'accessibility_new',
|
||||
name: RouteNames.projectsshared,
|
||||
name: 'pages.projectsShared',
|
||||
level_parent: 0.0,
|
||||
level_child: 0.5,
|
||||
component: () => import('@/views/projects/proj-list/proj-list.vue'),
|
||||
inmenu: functionality.SHOW_MESSAGES,
|
||||
inmenu: functionality.ENABLE_PROJECTS_LOADING,
|
||||
onlySocioResidente: true,
|
||||
onlyAdmin: true,
|
||||
infooter: functionality.ENABLE_PROJECTS_LOADING,
|
||||
meta: {
|
||||
requiresAuth: false,
|
||||
async asyncData() {
|
||||
// await Todos.actions.dbLoad({ checkPending: false })
|
||||
await Projects.actions.dbLoad({ checkPending: false, onlyiffirsttime: true })
|
||||
}
|
||||
},
|
||||
idelem: process.env.PROJECT_ID_MAIN
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 40,
|
||||
path: '/report',
|
||||
materialIcon: 'fas fa-chart-line',
|
||||
name: 'pages.report',
|
||||
level_parent: 0.0,
|
||||
level_child: 0.5,
|
||||
component: () => import('@/views/projects/report/report.vue'),
|
||||
inmenu: functionality.ENABLE_PROJECTS_LOADING,
|
||||
onlySocioResidente: true,
|
||||
onlyAdmin: true,
|
||||
infooter: functionality.ENABLE_PROJECTS_LOADING,
|
||||
}
|
||||
]
|
||||
|
||||
const routes_ecommerce: IListRoutes[] = [
|
||||
{
|
||||
active: true,
|
||||
order: 30,
|
||||
path: '/products',
|
||||
materialIcon: 'fas fa-shopping-cart',
|
||||
name: 'pages.productslist',
|
||||
component: () => import('@/views/ecommerce/productsList/productsList.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 30,
|
||||
path: '/checkout',
|
||||
materialIcon: 'fas fa-shopping-cart',
|
||||
name: 'pages.checkout',
|
||||
component: () => import('@/views/ecommerce/checkOut/checkOut.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 30,
|
||||
path: '/orderinfo',
|
||||
materialIcon: 'fas fa-shopping-cart',
|
||||
name: 'pages.orderinfo',
|
||||
component: () => import('@/views/ecommerce/orderInfo/orderInfo.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 35,
|
||||
path: '/admin/ecommerce/orders',
|
||||
materialIcon: 'fas fa-file-alt',
|
||||
name: 'pages.orders',
|
||||
component: () => import('@/rootgen/admin/orders/orders.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
onlyDepartment: true
|
||||
},
|
||||
]
|
||||
|
||||
const routes_admin_ecommerce: IListRoutes[] = [
|
||||
{
|
||||
active: true,
|
||||
order: 30,
|
||||
path: '/admin/ecommerce/products',
|
||||
materialIcon: 'fas fa-file-alt',
|
||||
name: 'pages.products',
|
||||
component: () => import('@/rootgen/admin/products/products.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
onlyManager: true,
|
||||
onlyEditor: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 30,
|
||||
path: '/admin/ecommerce/producers',
|
||||
materialIcon: 'fas fa-file-alt',
|
||||
name: 'pages.producer',
|
||||
component: () => import('@/rootgen/admin/producer/producer.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
onlyManager: true,
|
||||
onlyEditor: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 30,
|
||||
path: '/admin/ecommerce/storehouses',
|
||||
materialIcon: 'fas fa-file-alt',
|
||||
name: 'pages.storehouses',
|
||||
component: () => import('@/rootgen/admin/storehouses/storehouses.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
onlyManager: true,
|
||||
onlyEditor: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 31,
|
||||
path: '/admin/ecommerce/departments',
|
||||
materialIcon: 'fas fa-file-alt',
|
||||
name: 'pages.departments',
|
||||
component: () => import('@/rootgen/admin/departments/departments.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
onlyManager: true,
|
||||
onlyEditor: true
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
const routes_admin_ecommerce_menu: IListRoutes[] = [
|
||||
{
|
||||
active: true,
|
||||
order: 30,
|
||||
path: '/admin/ecommerce/products',
|
||||
name: 'pages.products',
|
||||
component: () => import('@/rootgen/admin/products/products.vue'),
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 31,
|
||||
path: '/admin/ecommerce/producers',
|
||||
name: 'pages.producer',
|
||||
component: () => import('@/rootgen/admin/producer/producer.vue'),
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 32,
|
||||
path: '/admin/ecommerce/storehouses',
|
||||
name: 'pages.storehouses',
|
||||
component: () => import('@/rootgen/admin/storehouses/storehouses.vue'),
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 32,
|
||||
path: '/admin/ecommerce/departments',
|
||||
name: 'pages.departments',
|
||||
component: () => import('@/rootgen/admin/departments/departments.vue'),
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 35,
|
||||
path: '/admin/ecommerce/orders',
|
||||
name: 'pages.orders2',
|
||||
component: () => import('@/rootgen/admin/orders/orders.vue'),
|
||||
infooter: false,
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
@@ -178,6 +379,22 @@ const routes_newsletter: IListRoutes[] = [
|
||||
]
|
||||
|
||||
const routes_manager: IListRoutes[] = [
|
||||
{
|
||||
active: functionality.BOOKING_EVENTS,
|
||||
order: 70,
|
||||
path: '/admin/usereventlist',
|
||||
materialIcon: 'edit',
|
||||
name: 'otherpages.admin.usereventlist',
|
||||
component: () => import('@/rootgen/admin/eventlist/eventlist.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
infooter: true,
|
||||
onlyManager: true,
|
||||
onlyConsiglio: true,
|
||||
onlyAdmin: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 10,
|
||||
@@ -192,6 +409,20 @@ const routes_manager: IListRoutes[] = [
|
||||
onlyManager: true,
|
||||
onlyTutor: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 10,
|
||||
path: '/admin/iscritticonacreis',
|
||||
materialIcon: 'fas fa-users',
|
||||
name: 'otherpages.admin.iscritticonacreis',
|
||||
component: () => import('@/rootgen/admin/iscritticonacreis/iscritticonacreis.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
onlyManager: true,
|
||||
onlyTutor: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 10,
|
||||
@@ -232,11 +463,44 @@ const routes_manager: IListRoutes[] = [
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
onlyManager: true,
|
||||
onlyTraduttrici: true
|
||||
onlyEditor: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 30,
|
||||
path: '/admin/newsletter',
|
||||
order: 60,
|
||||
faIcon: 'fa fa-list-alt',
|
||||
materialIcon: 'fas fa-users',
|
||||
name: 'otherpages.admin.newsletter',
|
||||
routes2: routes_newsletter,
|
||||
inmenu: false,
|
||||
submenu: true,
|
||||
level_parent: 0.5,
|
||||
level_child: 0.5,
|
||||
solotitle: true,
|
||||
onlyAdmin: true,
|
||||
onlyManager: true
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_ECOMMERCE,
|
||||
path: '/admin/ecommerce',
|
||||
order: 31,
|
||||
faIcon: 'fa fa-list-alt',
|
||||
materialIcon: 'next_week',
|
||||
name: 'pages.admin_ecommerce',
|
||||
routes2: routes_admin_ecommerce,
|
||||
inmenu: false,
|
||||
submenu: true,
|
||||
level_parent: 0.5,
|
||||
level_child: 0.5,
|
||||
solotitle: true,
|
||||
onlyAdmin: true,
|
||||
onlyManager: true,
|
||||
onlyDepartment: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 35,
|
||||
path: '/admin/msg_template',
|
||||
materialIcon: 'fas fa-file-alt',
|
||||
name: 'msgs.messages',
|
||||
@@ -277,36 +541,6 @@ const routes_manager: IListRoutes[] = [
|
||||
onlyAdmin: true,
|
||||
onlyManager: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 60,
|
||||
path: '/admin/newsletter',
|
||||
materialIcon: 'fas fa-users',
|
||||
name: 'otherpages.admin.newsletter',
|
||||
inmenu: false,
|
||||
submenu: true,
|
||||
routes2: routes_newsletter,
|
||||
solotitle: true,
|
||||
level_parent: 0.5,
|
||||
level_child: 0.5,
|
||||
onlyAdmin: true,
|
||||
onlyManager: true
|
||||
},
|
||||
{
|
||||
active: functionality.BOOKING_EVENTS,
|
||||
order: 70,
|
||||
path: '/admin/usereventlist',
|
||||
materialIcon: 'edit',
|
||||
name: 'otherpages.admin.usereventlist',
|
||||
component: () => import('@/rootgen/admin/eventlist/eventlist.vue'),
|
||||
inmenu: true,
|
||||
submenu: true,
|
||||
level_parent: 0,
|
||||
level_child: 0.5,
|
||||
infooter: true,
|
||||
onlyManager: true,
|
||||
onlyAdmin: true
|
||||
}
|
||||
]
|
||||
|
||||
const baseroutes: IListRoutes[] = [
|
||||
@@ -328,6 +562,29 @@ const baseroutes: IListRoutes[] = [
|
||||
isseparator: true,
|
||||
inmenu: true,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 55,
|
||||
path: '/iscrizione',
|
||||
materialIcon: 'how_to_reg',
|
||||
name: 'pages.SignUpIscrizione',
|
||||
component: () => import('@/views/login/iscrizioneconacreis/iscrizioneconacreis.vue'),
|
||||
inmenu: true,
|
||||
infooter: true,
|
||||
separator: false,
|
||||
onlyNotSoci: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 80,
|
||||
path: '/calendario-eventi',
|
||||
materialIcon: 'event',
|
||||
name: 'pages.calendarioeventi',
|
||||
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
|
||||
extraclass: 'isCalendar',
|
||||
inmenu: true,
|
||||
infooter: true
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 120,
|
||||
@@ -339,6 +596,16 @@ const baseroutes: IListRoutes[] = [
|
||||
inmenu: true,
|
||||
infooter: true,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 90,
|
||||
path: '/event/:typol/:eventid',
|
||||
materialIcon: 'event',
|
||||
name: 'pages.evento',
|
||||
component: () => import('@/root/evento/evento.vue'),
|
||||
inmenu: false,
|
||||
infooter: false
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 1000,
|
||||
@@ -349,6 +616,27 @@ const baseroutes: IListRoutes[] = [
|
||||
inmenu: false,
|
||||
infooter: false
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 110,
|
||||
path: '/event/:typol',
|
||||
materialIcon: 'event',
|
||||
name: 'pages.eventodef',
|
||||
component: () => import('@/root/evento/evento.vue'),
|
||||
inmenu: false,
|
||||
infooter: false
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 1000,
|
||||
path: '/product/:codprod',
|
||||
materialIcon: 'event',
|
||||
name: 'otherpages.product',
|
||||
component: () => import('@/views/ecommerce/productInfo/productInfo.vue'),
|
||||
inmenu: false,
|
||||
infooter: false
|
||||
},
|
||||
...routes_admin_ecommerce_menu,
|
||||
{
|
||||
active: true,
|
||||
order: 1000,
|
||||
@@ -360,7 +648,7 @@ const baseroutes: IListRoutes[] = [
|
||||
infooter: false
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
path: '',
|
||||
order: 10001,
|
||||
faIcon: 'fa fa-list-alt',
|
||||
@@ -369,9 +657,25 @@ const baseroutes: IListRoutes[] = [
|
||||
routes2: routes_projects,
|
||||
inmenu: true,
|
||||
solotitle: true,
|
||||
infooter: true,
|
||||
onlySocioResidente: true,
|
||||
onlyAdmin: true,
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_ECOMMERCE,
|
||||
path: '',
|
||||
order: 1402,
|
||||
faIcon: 'fa fa-list-alt',
|
||||
materialIcon: 'next_week',
|
||||
name: 'pages.ecommerce',
|
||||
routes2: routes_ecommerce,
|
||||
inmenu: true,
|
||||
onlyif_logged: true,
|
||||
// onlySocioResidente: true,
|
||||
solotitle: true,
|
||||
infooter: true
|
||||
},
|
||||
...routes_projects,
|
||||
...routes_ecommerce,
|
||||
{
|
||||
active: true,
|
||||
order: 2000,
|
||||
@@ -398,7 +702,7 @@ const baseroutes: IListRoutes[] = [
|
||||
onlyAdmin: true,
|
||||
onlyManager: true,
|
||||
onlyTutor: true,
|
||||
onlyTraduttrici: true
|
||||
onlyEditor: true
|
||||
},
|
||||
...routes_manager,
|
||||
{
|
||||
@@ -425,7 +729,7 @@ const baseroutes: IListRoutes[] = [
|
||||
path: '/signup',
|
||||
materialIcon: 'how_to_reg',
|
||||
name: 'pages.SignUp',
|
||||
component: () => import('@/views/login/signup_complete/signup_complete.vue'),
|
||||
component: () => import('@/views/login/signup/signup.vue'),
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
separator: false
|
||||
@@ -491,14 +795,93 @@ const baseroutes: IListRoutes[] = [
|
||||
path: '/offline',
|
||||
name: 'Offline',
|
||||
component: () => import('@/views/offline/offline.vue')
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 5,
|
||||
path: '/admin/groups',
|
||||
materialIcon: 'accessibility_new',
|
||||
name: 'pages.groups',
|
||||
component: () => import('@/rootgen/admin/groups/groups.vue'),
|
||||
infooter: functionality.ENABLE_PROJECTS_LOADING,
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 10,
|
||||
path: '/projall/:idProj',
|
||||
materialIcon: 'accessibility_new',
|
||||
name: 'pages.projall',
|
||||
urlroute: 'projall',
|
||||
component: () => import('@/views/projects/proj-list/proj-list.vue'),
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
// idelem: process.env.PROJECT_ID_MAIN
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 10,
|
||||
path: '/todos/:idProj',
|
||||
materialIcon: 'accessibility_new',
|
||||
name: 'pages.todos',
|
||||
urlroute: 'todos',
|
||||
component: () => import('@/views/projects/proj-list/proj-list.vue'),
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
// idelem: process.env.PROJECT_ID_MAIN
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 20,
|
||||
path: '/myprojects/:idProj',
|
||||
materialIcon: 'accessibility_new',
|
||||
name: 'pages.myprojects',
|
||||
urlroute: 'myprojects',
|
||||
component: () => import('@/views/projects/proj-list/proj-list.vue'),
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
// idelem: process.env.PROJECT_ID_MAIN
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 30,
|
||||
path: '/projectsShared/:idProj',
|
||||
urlroute: 'projectsShared',
|
||||
materialIcon: 'accessibility_new',
|
||||
name: 'pages.projectsShared',
|
||||
component: () => import('@/views/projects/proj-list/proj-list.vue'),
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
// idelem: process.env.PROJECT_ID_MAIN
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
path: '/separator',
|
||||
name: 'separator',
|
||||
order: 35,
|
||||
isseparator: true,
|
||||
inmenu: true,
|
||||
},
|
||||
{
|
||||
active: functionality.ENABLE_PROJECTS_LOADING,
|
||||
order: 40,
|
||||
path: '/report',
|
||||
urlroute: 'report',
|
||||
materialIcon: 'accessibility_new',
|
||||
name: 'pages.report',
|
||||
component: () => import('@/views/projects/report/report.vue'),
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
// idelem: process.env.PROJECT_ID_MAIN
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
export const routes = baseroutes
|
||||
|
||||
const preLoadImages: IPreloadImages[] = [
|
||||
{ imgname: '../../statics/images/logo.png', alt: 'logo', mobile: false },
|
||||
{ imgname: '../../statics/icons/flag_it.svg', alt: 'flag it', mobile: false }
|
||||
{ imgname: '../../statics/icons/flag_it.svg', alt: 'flag it', mobile: false },
|
||||
{ imgname: '../../statics/icons/flag_uk.svg', alt: 'flag en', mobile: false }
|
||||
// { imgname: '../../statics/images/background.jpg', alt: 'corsi di formazione per operatori del massaggio del benessere', mobile: true },
|
||||
// { imgname: '../../statics/images/background2.jpg', alt: 'stanza con cuscini per seminario reiki', mobile: true },
|
||||
// { imgname: '../../statics/images/background3.jpg', alt: 'foto di gruppo seminaristi reiki', mobile: true },
|
||||
@@ -510,13 +893,13 @@ export function preloadedimages() {
|
||||
}
|
||||
|
||||
const arrLangUsed = [
|
||||
'it',
|
||||
'enUs'
|
||||
'it'
|
||||
// 'enUs'
|
||||
]
|
||||
|
||||
const lang_available: ILang[] = [
|
||||
{ label: 'Italiano', icon: 'fa-flag-it', value: 'it', image: '../statics/icons/flag_it.svg', short: 'IT' },
|
||||
{ label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../statics/icons/flag_gb.svg', short: 'EN' }
|
||||
// { label: 'English', icon: 'fa-flag-us', value: 'enUs', image: '../statics/icons/flag_gb.svg', short: 'EN' }
|
||||
// { label: 'German', icon: 'fa-flag-de', value: 'de', image: '../statics/images/de.png', short: 'DE' },
|
||||
]
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<link rel="icon" type="image/png" sizes="16x16"
|
||||
href="<%= htmlWebpackPlugin.files.publicPath %>statics/icons/favicon-16x16.png">
|
||||
|
||||
<script src="<%= htmlWebpackPlugin.files.publicPath %>statics/js/track.js"></script>
|
||||
<!--<script src="<%= htmlWebpackPlugin.files.publicPath %>statics/js/track.js"></script>-->
|
||||
|
||||
<script src="https://www.gstatic.com/charts/loader.js"></script>
|
||||
|
||||
|
||||
0
src/root/calendarioeventi/calendarioeventi.scss
Executable file
19
src/root/calendarioeventi/calendarioeventi.ts
Executable file
@@ -0,0 +1,19 @@
|
||||
import Vue from 'vue'
|
||||
import { Component } from 'vue-property-decorator'
|
||||
import { CEventsCalendar, CMyPage } from '@components'
|
||||
import MixinBase from '@src/mixins/mixin-base'
|
||||
import MixinMetaTags from '@src/mixins/mixin-metatags'
|
||||
import { tools } from '@src/store/Modules/tools'
|
||||
|
||||
@Component({
|
||||
mixins: [MixinBase],
|
||||
components: { CEventsCalendar, CMyPage }
|
||||
})
|
||||
export default class Calendarioeventi extends MixinMetaTags {
|
||||
public $t: any
|
||||
public $q
|
||||
public meta() {
|
||||
return tools.metafunc(this)
|
||||
}
|
||||
|
||||
}
|
||||
25
src/root/calendarioeventi/calendarioeventi.vue
Executable file
@@ -0,0 +1,25 @@
|
||||
<template>
|
||||
<CMyPage title='Calendario Eventi' imgbackground="../../statics/images/calendario_eventi.jpg" sizes="max-height: 120px" styleadd="bottom: -16px !important;">
|
||||
|
||||
<span>{{ setmeta({
|
||||
title: 'Calendario Eventi',
|
||||
description: "Calendario degli Eventi che si svolgono all'Associazione Shen di Lugo (RA)",
|
||||
keywords: 'calendario eventi centro olistico' } ) }}
|
||||
</span>
|
||||
|
||||
<CEventsCalendar :mysingleevent="null">
|
||||
|
||||
</CEventsCalendar>
|
||||
<br>
|
||||
<p class="cltexth3 text-blue q-ma-md" v-for="mycal in getarrValDb('EVENTS_CAL')">
|
||||
<a :href="`../../statics/files/eventi/` + mycal.file" target="_blank">Calendario Eventi {{ mycal.label }} (PDF)</a><br>
|
||||
</p>
|
||||
<br>
|
||||
</CMyPage>
|
||||
|
||||
</template>
|
||||
<script lang="ts" src="./calendarioeventi.ts">
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import './calendarioeventi.scss';
|
||||
</style>
|
||||
86
src/root/evento/evento.scss
Executable file
@@ -0,0 +1,86 @@
|
||||
.listaev {
|
||||
color: black;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.25rem;
|
||||
letter-spacing: 0.03333em;
|
||||
|
||||
&__date {
|
||||
font-weight: bold;
|
||||
color: #2ba0fd;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
&__title {
|
||||
color: red;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.066em;
|
||||
}
|
||||
|
||||
&__details {
|
||||
color: black;
|
||||
}
|
||||
|
||||
&__tdimg {
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
&__tdimg_small {
|
||||
width: auto;
|
||||
height: 50px !important;
|
||||
@media (max-width: 800px) {
|
||||
height: 40px !important;
|
||||
}
|
||||
}
|
||||
|
||||
&__table {
|
||||
margin: 10px;
|
||||
border: solid 1px #4198ef;
|
||||
border-radius: 1rem;
|
||||
padding: 2px;
|
||||
}
|
||||
&__table tr {
|
||||
border: solid 1px #4198ef;
|
||||
border-radius: 1rem;
|
||||
}
|
||||
|
||||
|
||||
&__align_center_mobile {
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&__align_chips {
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: column-reverse;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&__img {
|
||||
padding: 0.25rem !important;
|
||||
float: left;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
border-radius: 1rem;
|
||||
|
||||
@media (max-width: 718px) {
|
||||
// PER VERSIONE MOBILE
|
||||
float: none;
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
&__img:hover {
|
||||
transition: transform .2s;
|
||||
transform: scale(1.05);
|
||||
border: inset;
|
||||
border-color: blue;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
}
|
||||
127
src/root/evento/evento.ts
Executable file
@@ -0,0 +1,127 @@
|
||||
import Vue from 'vue'
|
||||
import { Component, Prop, Watch } from 'vue-property-decorator'
|
||||
import { CalendarStore, GlobalStore, UserStore } from '@store'
|
||||
|
||||
import { Logo } from '../../components/logo/index'
|
||||
|
||||
import { Footer } from '../../components/Footer/index'
|
||||
|
||||
import { tools } from '../../store/Modules/tools'
|
||||
import { toolsext } from '@src/store/Modules/toolsext'
|
||||
import { static_data } from '@src/db/static_data'
|
||||
import { Screen } from 'quasar'
|
||||
|
||||
import { CImgText } from '../../components/CImgText/index'
|
||||
import { CCard, CEventsCalendar, CMyAvatar, CMyPage, CMySingleEvent } from '@components'
|
||||
import MixinOperator from '@src/mixins/mixin-operator'
|
||||
import MixinEvents from '../../mixins/mixin-events'
|
||||
import { IEvents } from '@src/model'
|
||||
import MixinBase from '@src/mixins/mixin-base'
|
||||
import MixinUsers from '@src/mixins/mixin-users'
|
||||
|
||||
import MixinMetaTags from '@src/mixins/mixin-metatags'
|
||||
|
||||
|
||||
@Component({
|
||||
mixins: [MixinOperator, MixinBase, MixinEvents, MixinUsers],
|
||||
components: { Logo, CImgText, CCard, CMyPage, CMyAvatar, CEventsCalendar }
|
||||
})
|
||||
export default class Evento extends MixinMetaTags {
|
||||
public $q
|
||||
public $t
|
||||
public myevent: IEvents = null
|
||||
public mylastevtypol: IEvents[] = []
|
||||
public selected: boolean = false
|
||||
|
||||
public meta() {
|
||||
return tools.metafunc(this)
|
||||
}
|
||||
|
||||
@Watch('$route.params.typol')
|
||||
public changetypol() {
|
||||
// this.mytypetransgroup = ''
|
||||
const datenow = tools.addDays(tools.getDateNow(), -1)
|
||||
this.mylastevtypol = CalendarStore.state.eventlist.filter((rec) => ((rec.typol === this.$route.params.typol) && (new Date(rec.dateTimeEnd) >= datenow))).slice(-5)
|
||||
console.log('[1] this.mylastevtypol', this.mylastevtypol)
|
||||
if (this.mylastevtypol.length === 0) {
|
||||
this.mylastevtypol = CalendarStore.state.eventlist.filter((rec) => (rec.typol === this.$route.params.typol)).slice(-1)
|
||||
}
|
||||
// console.log('myevent', this.myevent, 'eventid=', this.$route.params.eventid)
|
||||
}
|
||||
|
||||
get nextevents() {
|
||||
if (!!this.mylastevtypol && this.mylastevtypol.length > 1) {
|
||||
return this.mylastevtypol
|
||||
} else {
|
||||
return []
|
||||
}
|
||||
}
|
||||
|
||||
public isnotmyevent(ev) {
|
||||
if (!!this.$route.params.eventid)
|
||||
return ev._id !== this.$route.params.eventid
|
||||
else
|
||||
return true
|
||||
}
|
||||
|
||||
@Watch('$route.params.eventid')
|
||||
public changeevent() {
|
||||
let eventid = null
|
||||
if (!!this.$route.params.eventid)
|
||||
eventid = this.$route.params.eventid
|
||||
if (!!this.$route.query.eventid)
|
||||
eventid = this.$route.query.eventid
|
||||
|
||||
console.log('changeevent', eventid)
|
||||
|
||||
// this.mytypetransgroup = ''
|
||||
if (!!eventid) {
|
||||
this.myevent = CalendarStore.state.eventlist.find((rec) => rec._id === eventid)
|
||||
} else {
|
||||
if (!!this.mylastevtypol)
|
||||
this.myevent = this.mylastevtypol[0]
|
||||
}
|
||||
}
|
||||
|
||||
@Watch('$route.query.eventid')
|
||||
public changeeventquery() {
|
||||
// console.log('changeevent QUERY', this.$route.query.eventid)
|
||||
// this.mytypetransgroup = ''
|
||||
if (!!this.$route.query.eventid) {
|
||||
this.myevent = CalendarStore.state.eventlist.find((rec) => rec._id === this.$route.query.eventid)
|
||||
} else {
|
||||
if (!!this.mylastevtypol)
|
||||
this.myevent = this.mylastevtypol[0]
|
||||
}
|
||||
}
|
||||
|
||||
public selectEvent(eventparam: IEvents) {
|
||||
this.selected = !this.selected
|
||||
}
|
||||
|
||||
public getTextEvent(myevent: IEvents) {
|
||||
if (myevent.bodytext === '') {
|
||||
return myevent.details
|
||||
} else {
|
||||
return myevent.bodytext
|
||||
}
|
||||
}
|
||||
|
||||
public mounted() {
|
||||
this.changetypol()
|
||||
this.changeevent()
|
||||
// console.log('myevent', this.myevent)
|
||||
}
|
||||
|
||||
get static_data() {
|
||||
return static_data
|
||||
}
|
||||
|
||||
get gettitle() {
|
||||
if (!!this.myevent && (!!this.myevent.title))
|
||||
return this.myevent.title
|
||||
else
|
||||
return ''
|
||||
}
|
||||
|
||||
}
|
||||
56
src/root/evento/evento.vue
Executable file
@@ -0,0 +1,56 @@
|
||||
<template>
|
||||
<div>
|
||||
<CMyPage imgbackground="../../statics/images/calendario_eventi.jpg" :title="gettitle" sizes="max-height: 110px;"
|
||||
styleadd="bottom: -36px !important;">
|
||||
|
||||
<span>{{ setmeta({
|
||||
title: gettitle,
|
||||
description: "",
|
||||
keywords: '' } ) }}
|
||||
</span>
|
||||
|
||||
<CEventsCalendar :mysingleevent="myevent" v-if="myevent">
|
||||
|
||||
</CEventsCalendar>
|
||||
|
||||
<q-separator>
|
||||
</q-separator>
|
||||
|
||||
<div class="q-pa-md text-center" style="max-width: 380px; margin: auto auto 2px; " v-if="nextevents.length > 0">
|
||||
<q-list bordered>
|
||||
<q-item>
|
||||
<q-item-section>
|
||||
<q-item-label overline>PROSSIME DATE:</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-ripple
|
||||
v-for="(ev, index) in nextevents"
|
||||
v-if="isnotmyevent(ev)"
|
||||
:to="`/event/${ev.typol}/${ev._id}`"
|
||||
:key="index">
|
||||
<q-item-section avatar v-if="tools.getimgev(ev)">
|
||||
<q-avatar>
|
||||
<img :src="tools.getimgev(ev)" :alt="ev.title">
|
||||
</q-avatar>
|
||||
</q-item-section>
|
||||
<q-item-section>{{ev.title}}</q-item-section>
|
||||
<q-item-section side top>{{tools.getstrDateTimeEventShort(mythis, ev)}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</div>
|
||||
|
||||
<div class="q-ma-md text-center">
|
||||
<q-btn rounded outline type="a" to="/calendario-eventi" color="primary" icon="event"
|
||||
:label="$t('pages.calendarioeventi')">
|
||||
</q-btn>
|
||||
|
||||
</div>
|
||||
|
||||
</CMyPage>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" src="./evento.ts">
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import './evento.scss';
|
||||
</style>
|
||||
@@ -505,3 +505,6 @@ body.mobile .landing:before {
|
||||
background-repeat: no-repeat;
|
||||
background-position: 50%;
|
||||
}
|
||||
|
||||
.add-button {
|
||||
}
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
import Vue from 'vue'
|
||||
import { Component } from 'vue-property-decorator'
|
||||
import { GlobalStore, UserStore, NotevoleStore } from '@store'
|
||||
import { GlobalStore, UserStore } from '@store'
|
||||
|
||||
import { Logo } from '../../components/logo'
|
||||
|
||||
import { Footer } from '../../components/Footer'
|
||||
import { CMyPage } from '../../components/CMyPage/index'
|
||||
|
||||
import VueScrollReveal from 'vue-scroll-reveal'
|
||||
import { tools } from '@src/store/Modules/tools'
|
||||
import { func_tools, toolsext } from '@src/store/Modules/toolsext'
|
||||
import { Screen } from 'quasar'
|
||||
import MixinMetaTags from '@src/mixins/mixin-metatags'
|
||||
import {
|
||||
CCardCarousel,
|
||||
@@ -19,30 +17,34 @@ import {
|
||||
CStatus,
|
||||
CStatusReg,
|
||||
CNextZoom,
|
||||
CVerifyTelegram, CVerifyEmail
|
||||
CVerifyTelegram, CVerifyEmail, CECommerce, CShareWithUs, CEventsCalendar
|
||||
} from '@components'
|
||||
import MixinBase from '@src/mixins/mixin-base'
|
||||
import { static_data } from '@src/db/static_data'
|
||||
import { INotData } from '@src/model'
|
||||
|
||||
// Vue.use(VueScrollReveal, {
|
||||
// class: 'v-scroll-reveal', // A CSS class applied to elements with the v-scroll-reveal directive; useful for animation overrides.
|
||||
// duration: 1200,
|
||||
// scale: 0.95,
|
||||
// distance: '10px',
|
||||
// rotate: {
|
||||
// x: 0,
|
||||
// y: 0,
|
||||
// z: 0
|
||||
// }
|
||||
// // mobile: true
|
||||
// })
|
||||
|
||||
@Component({
|
||||
mixins: [MixinBase],
|
||||
components: { Logo, Footer, CMyPage, CCardCarousel, CTitleBanner, CImgText, CStatus, CStatusReg, CNextZoom, CVerifyTelegram, CVerifyEmail }
|
||||
components: {
|
||||
Logo,
|
||||
Footer,
|
||||
CMyPage,
|
||||
CCardCarousel,
|
||||
CTitleBanner,
|
||||
CImgText,
|
||||
CStatus,
|
||||
CStatusReg,
|
||||
CNextZoom,
|
||||
CVerifyTelegram,
|
||||
CVerifyEmail,
|
||||
CECommerce,
|
||||
CEventsCalendar,
|
||||
CShareWithUs
|
||||
}
|
||||
})
|
||||
export default class Home extends MixinBase {
|
||||
public deferredPrompt: any = null
|
||||
public showbuttonHS: boolean = false
|
||||
public text: string = ''
|
||||
public visibile: boolean = false
|
||||
public cardvisible: string = 'hidden'
|
||||
@@ -71,66 +73,12 @@ export default class Home extends MixinBase {
|
||||
value: 0,
|
||||
title: {
|
||||
it: '<strong>Passo 1 - Contributore Finanziario</strong><br><br>' +
|
||||
'A) Capisco come funziona e lo condivido ad altre 2 persone che vogliono partecipare.<br>' +
|
||||
'B) Entro nella chat e dono i <strong>33€</strong> al gestore della Billettera.',
|
||||
'A) Capisco come funziona e lo condivido ad altre 2 persone che vogliono partecipare.<br>' +
|
||||
'B) Entro nella chat e dono i <strong>33€</strong> al gestore della Billettera.',
|
||||
es: '',
|
||||
enUs: ''
|
||||
},
|
||||
myicon: 'fas fa-donate',
|
||||
},
|
||||
{
|
||||
label: '2',
|
||||
value: 1,
|
||||
title: {
|
||||
it: '<strong>Passo 2 - Contributore solidale</strong><br><br>' +
|
||||
'Invio il link per registrarsi alle mie 2 persone, che cosí verseranno i 33€.',
|
||||
es: '',
|
||||
enUs: ''
|
||||
},
|
||||
myicon: 'fas fa-user-friends',
|
||||
myicon2: 'fas fa-coins'
|
||||
},
|
||||
{
|
||||
label: '3',
|
||||
value: 2,
|
||||
title: {
|
||||
it: '<strong>Passo 3 - Tesoriere/segretario</strong><br><br>' +
|
||||
'Collaboro, aggiorno la lista dei doni, fornisco informazioni, ma anche conosco, condivido esperienze, passioni e sogni.',
|
||||
es: '',
|
||||
enUs: ''
|
||||
},
|
||||
myicon: 'fas fa-piggy-bank',
|
||||
myicon2: 'far fa-laugh',
|
||||
myicon3: 'far fa-comments'
|
||||
},
|
||||
{
|
||||
label: '4',
|
||||
value: 3,
|
||||
title: {
|
||||
it: '<strong>Passo 4 - Apertura tua Billettera</strong><br>' +
|
||||
'Creo il mio gruppo Telegram nel quale entrano i miei 2 ospiti, i 2 ospiti dei miei 2 ospiti, che porteranno altre 8 persone (4x2).<br>' +
|
||||
'<br>Ricevuti i 33€ da queste 8 persone (264€), mi tengo i mei <strong>iniziali 33€</strong> e <strong>dono 231 €</strong> alla Billettera "Mas Antigua".',
|
||||
es: '',
|
||||
enUs: ''
|
||||
},
|
||||
myicon: 'fab fa-whatsapp',
|
||||
myicon2: 'fas fa-wallet'
|
||||
},
|
||||
{
|
||||
label: '5',
|
||||
value: 4,
|
||||
title: {
|
||||
it: '<strong>Passo 5</strong><br>' +
|
||||
'Aspetto, da parte delle 8 nuove Billettere, le donazioni di 231€, per un totale di <strong>1848€</strong>.<br>' +
|
||||
'<br>Ringrazio l\'<strong>Universo</strong> per il <strong>dono</strong> ricevuto e fornisco <strong>aiuto</strong> a chi ne ha bisogno.<br>' +
|
||||
'Se desidero, posso <strong>ricominciare</strong>!',
|
||||
es: '',
|
||||
enUs: ''
|
||||
},
|
||||
myicon: 'far fa-clock',
|
||||
myicon2: 'fas fa-euro-sign',
|
||||
myicon3: 'fas fa-praying-hands',
|
||||
myimg: '/' + tools.getimglogo(),
|
||||
}
|
||||
]
|
||||
|
||||
@@ -144,26 +92,6 @@ export default class Home extends MixinBase {
|
||||
color: 'white', icon: 'fas fa-hands-helping',
|
||||
textcolor: 'black'
|
||||
},
|
||||
{
|
||||
title: {
|
||||
it: 'È un lavoro di squadra, dove ognuno fa la sua parte.',
|
||||
es: '',
|
||||
enUs: ''
|
||||
},
|
||||
color: 'white',
|
||||
icon: 'fas fa-users',
|
||||
textcolor: 'black'
|
||||
},
|
||||
{
|
||||
title: {
|
||||
it: 'E\' un\'opportunità di risentire vecchi amici, ed avere un intento comune, per risentirci e di riconnetterci.<br>',
|
||||
es: '',
|
||||
enUs: ''
|
||||
},
|
||||
color: 'white',
|
||||
icon: 'fas fa-hand-holding-heart',
|
||||
textcolor: 'black'
|
||||
}
|
||||
]
|
||||
|
||||
constructor() {
|
||||
@@ -246,6 +174,18 @@ export default class Home extends MixinBase {
|
||||
return UserStore.state.isLogged
|
||||
}
|
||||
|
||||
get isSocio() {
|
||||
return UserStore.state.my.profile.socio
|
||||
}
|
||||
|
||||
get isSocioResidente() {
|
||||
return UserStore.state.my.profile.socioresidente
|
||||
}
|
||||
|
||||
get isConsiglio() {
|
||||
return UserStore.state.my.profile.consiglio
|
||||
}
|
||||
|
||||
get static_data() {
|
||||
return static_data
|
||||
}
|
||||
@@ -271,13 +211,38 @@ export default class Home extends MixinBase {
|
||||
tools.showNotif(this.$q, String(my))
|
||||
}
|
||||
|
||||
public addtoHomeScreen() {
|
||||
if (!!this.deferredPrompt) {
|
||||
this.deferredPrompt.prompt()
|
||||
// Wait for the user to respond to the prompt
|
||||
this.deferredPrompt.userChoice.then((choiceResult) => {
|
||||
if (choiceResult.outcome === 'accepted') {
|
||||
this.showbuttonHS = false
|
||||
console.log('User accepted the A2HS prompt')
|
||||
} else {
|
||||
console.log('User dismissed the A2HS prompt')
|
||||
}
|
||||
this.deferredPrompt = null
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
public initprompt() {
|
||||
|
||||
window.addEventListener('beforeinstallprompt', (event) => {
|
||||
// console.log('******************************** beforeinstallprompt fired')
|
||||
console.log('******************************** beforeinstallprompt fired')
|
||||
event.preventDefault()
|
||||
// console.log('§§§§§§§§§§§§§§§§§§§§ IMPOSTA DEFERRED PROMPT !!!!!!!!!!!!!!!!! ')
|
||||
// #Todo++ IMPOSTA DEFERRED PROMPT
|
||||
return false
|
||||
|
||||
this.deferredPrompt = event
|
||||
|
||||
// Update UI to notify the user they can add to home screen
|
||||
this.showbuttonHS = true
|
||||
|
||||
})
|
||||
|
||||
window.addEventListener('appinstalled', (evt) => {
|
||||
// Log install to analytics
|
||||
console.log('INSTALL: Success')
|
||||
})
|
||||
|
||||
}
|
||||
@@ -349,7 +314,8 @@ export default class Home extends MixinBase {
|
||||
}
|
||||
|
||||
public openrighttoolbar() {
|
||||
GlobalStore.state.RightDrawerOpen = true
|
||||
GlobalStore.state.rightDrawerOpen = true
|
||||
GlobalStore.state.rightCartOpen = false
|
||||
}
|
||||
|
||||
get TelegCode() {
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<template>
|
||||
<q-page>
|
||||
<CMyPage title="">
|
||||
<span>{{
|
||||
setmeta({
|
||||
title: 'Home',
|
||||
description: $t('msg.myAppDescription'),
|
||||
keywords: $t('msg.keywords_base')
|
||||
})
|
||||
}}
|
||||
</span>
|
||||
<CMyPage title="Home">
|
||||
<!--<span>{{
|
||||
setmeta({
|
||||
title: 'Home',
|
||||
description: $t('msg.myAppDescription'),
|
||||
keywords: $t('msg.keywords_base')
|
||||
})
|
||||
}}
|
||||
</span>-->
|
||||
|
||||
<div class="landing">
|
||||
<div v-if="!isLogged">
|
||||
@@ -19,6 +19,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<q-banner class="bg-positive text-white boldhigh"
|
||||
style="text-align: center; ">
|
||||
Benvenuti nella Nuova App della Comunità Nuovo Mondo
|
||||
</q-banner>
|
||||
|
||||
<div v-if="!tools.sito_online(true)" class="row text-h4 text-center bg-warning">
|
||||
{{ $t('otherpages.sito_offline') }}
|
||||
</div>
|
||||
@@ -57,17 +62,77 @@
|
||||
@input="changetab"
|
||||
>
|
||||
<q-tab name="guida" icon="fas fa-check" :label="$t('pages.home')"></q-tab>
|
||||
<q-tab name="zoom" icon="fas fa-video" :label="$t('pages.nextzoom')"></q-tab>
|
||||
<q-tab name="statistiche" icon="fas fa-chart-line" :label="$t('pages.status')"></q-tab>
|
||||
<q-tab v-if="isLogged && isSocio" name="prodotti" icon="fas fa-shopping-cart"
|
||||
:label="$t('pages.products')"></q-tab>
|
||||
<q-tab v-if="isLogged" name="collabora" icon="fas fa-users" :label="$t('pages.collabora')"></q-tab>
|
||||
<!--<q-tab name="zoom" icon="fas fa-video" :label="$t('pages.nextzoom')"></q-tab>-->
|
||||
<!--<q-tab name="statistiche" icon="fas fa-chart-line" :label="$t('pages.status')"></q-tab>-->
|
||||
|
||||
</q-tabs>
|
||||
|
||||
<q-tab-panels v-model="tab" animated>
|
||||
<q-tab-panel name="guida">
|
||||
<div v-if="isLogged">
|
||||
<div class="q-ma-xs q-pa-xs text-center rounded-borders">
|
||||
<div v-if="isLogged">
|
||||
<div>
|
||||
<!--<q-field-->
|
||||
<!--v-if="getPermission() === 'granted'"-->
|
||||
<!--icon="notifications"-->
|
||||
<!--class="shadow"-->
|
||||
<!--:label="$t('notification.titlegranted')"-->
|
||||
<!--:helper="$t('notification.statusnot')">-->
|
||||
<!--</q-field>-->
|
||||
<q-field
|
||||
v-if="NotServiceWorker()"
|
||||
class="shadow"
|
||||
icon="notifications"
|
||||
label="Service Worker not present"
|
||||
>
|
||||
</q-field>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<q-btn v-if="getPermission() !== 'granted'"
|
||||
class="enable-notifications shadow"
|
||||
color="primary" rounded
|
||||
size="md"
|
||||
icon="notifications" @click="tools.askfornotification(mythis)"
|
||||
:label="$t('notification.ask')"/>
|
||||
<!--<q-btn v-if="getPermission() === 'granted'" class="enable-notifications" color="primary" rounded size="lg" icon="notifications" @click="showNotificationExample" label="Send Notification"/>-->
|
||||
<!--<q-btn v-if="getPermission() === 'granted'" class="enable-notifications" color="secondary" rounded size="lg" icon="notifications" @click="createPushSubscription" label="Create Push Subscription !"/>-->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<q-btn class="enable-notifications shadow add-button" v-if="showbuttonHS" @click="addtoHomeScreen"
|
||||
color="primary" rounded
|
||||
size="md"
|
||||
icon="fas fa-plus"
|
||||
label="Aggiungi alle tue Applicazioni">
|
||||
</q-btn>
|
||||
|
||||
|
||||
<CEventsCalendar :mysingleevent="null" :showfirstN="getValDb('SHOW_LAST_EVENTS', false, 3)">
|
||||
|
||||
</CEventsCalendar>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="q-pt-md q-pl-sm">
|
||||
<div class="text-body2 text-italic text-grey">Versione App {{ getenv('APP_VERSION') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="prodotti">
|
||||
<CECommerce>
|
||||
|
||||
</CECommerce>
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="collabora">
|
||||
<CShareWithUs></CShareWithUs>
|
||||
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="zoom">
|
||||
<CNextZoom>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<q-page>
|
||||
<CMyPage title="">
|
||||
<CMyPage title="Intro">
|
||||
<div class="q-ma-xs">
|
||||
<div class="text-center">
|
||||
<q-img src="statics/images/background.jpg" class="logo"></q-img>
|
||||
@@ -15,9 +15,9 @@
|
||||
</CVideoPromo>
|
||||
|
||||
<q-page v-if="!!invited" padding class="signup" >
|
||||
<CSignUpNotevole :showadultcheck="true" :showcell="true" :showaportador="true" :shownationality="true">
|
||||
<CSignUp>
|
||||
|
||||
</CSignUpNotevole>
|
||||
</CSignUp>
|
||||
</q-page>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -24,15 +24,16 @@ export default class Mypage extends MixinMetaTags {
|
||||
public imgback
|
||||
public rec: IMyPage = {}
|
||||
|
||||
public mounted() {
|
||||
public async mounted() {
|
||||
// console.log('this.$route.path', this.$route.path)
|
||||
this.rec = GlobalStore.getters.getPage(this.$route.path)
|
||||
console.log(this.rec)
|
||||
this.rec = await GlobalStore.actions.loadPage(this.$route.path)
|
||||
// console.log('mounted', this.rec)
|
||||
}
|
||||
|
||||
@Watch('$route.path')
|
||||
public changepage() {
|
||||
this.rec = GlobalStore.getters.getPage(this.$route.path)
|
||||
public async changepage() {
|
||||
// console.log('changepage')
|
||||
this.rec = await GlobalStore.actions.loadPage(this.$route.path)
|
||||
}
|
||||
|
||||
public meta() {
|
||||
|
||||
@@ -1,21 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<CMyPage :title="rec.title" :imgbackground="`statics/` + rec.imgback" :sizes="`max-height: ` + rec.heightimg + `px`">
|
||||
<span>{{ setmeta({
|
||||
title: rec.title,
|
||||
description: rec.description,
|
||||
keywords: rec.keywords } ) }}
|
||||
<div>
|
||||
<CMyPage :title="rec.title" :imgbackground="`statics/` + rec.imgback"
|
||||
:sizes="`max-height: ` + rec.heightimg + `px`">
|
||||
<span>{{
|
||||
setmeta({
|
||||
title: rec.title,
|
||||
description: rec.description,
|
||||
keywords: rec.keywords
|
||||
})
|
||||
}}
|
||||
</span>
|
||||
|
||||
<div class="q-ma-sm q-gutter-sm q-pa-xs">
|
||||
<div v-html="rec.content"></div>
|
||||
</div>
|
||||
</CMyPage>
|
||||
</div>
|
||||
<div class="q-ma-sm q-gutter-sm q-pa-xs">
|
||||
<div v-if="!!rec.img1" class="text-center">
|
||||
<q-img :src="`statics/`+ rec.img1" class="img"></q-img>
|
||||
</div>
|
||||
|
||||
<div v-if="!!rec.content" v-html="rec.content"></div>
|
||||
<q-video v-if="!!rec.video1" :src="rec.video1" :ratio="rec.ratio1">
|
||||
</q-video>
|
||||
|
||||
<div v-if="!!rec.img2" class="text-center">
|
||||
<q-img :src="`statics/`+ rec.img2" class="img"></q-img>
|
||||
</div>
|
||||
|
||||
<div v-if="!!rec.content2" v-html="rec.content2"></div>
|
||||
<q-video v-if="!!rec.video2" :src="rec.video2" :ratio="rec.ratio2"></q-video>
|
||||
|
||||
<div v-if="!!rec.img3" class="text-center">
|
||||
<q-img :src="`statics/`+ rec.img2" class="img"></q-img>
|
||||
</div>
|
||||
|
||||
<div v-if="!!rec.content3" v-html="rec.content3"></div>
|
||||
<q-video v-if="!!rec.video3" :src="rec.video3" :ratio="rec.ratio3"></q-video>
|
||||
<div v-if="!!rec.content4" v-html="rec.content4"></div>
|
||||
|
||||
</div>
|
||||
</CMyPage>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" src="./mypage.ts">
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import 'mypage.scss';
|
||||
@import 'mypage.scss';
|
||||
</style>
|
||||
|
||||
53
src/root/pr.html
Executable file
@@ -0,0 +1,53 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<span id="docs-internal-guid-b6caaa89-7fff-7a30-fbd4-76b2341de2b7"><p dir="ltr"
|
||||
style="line-height:1.4007525444030762;margin-left: 39.875091552734375pt;margin-right: 61.662750244140625pt;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span
|
||||
style="font-size: 28.021pt; font-family: "Times New Roman"; color: rgb(0, 176, 80); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">E.M. Microrganismi Effettivi </span></p><p
|
||||
dir="ltr"
|
||||
style="line-height:1.4007525444030762;margin-left: 39.875091552734375pt;margin-right: 61.662750244140625pt;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span
|
||||
style="font-size: 20.0118pt; font-family: "Times New Roman"; color: rgb(152, 72, 6); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">Cosa sono e i loro molteplici usi e benefici. </span></p><p
|
||||
dir="ltr"
|
||||
style="line-height:1.4007525444030762;margin-left: 39.875091552734375pt;margin-right: 61.662750244140625pt;text-align: center;margin-top:0pt;margin-bottom:0pt;"><span
|
||||
style="font-size: 14.0068pt; font-family: "Times New Roman"; color: rgb(152, 72, 6); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">Ambiente - Agricoltura - Acqua - Salute - Casa </span></p><p
|
||||
dir="ltr"
|
||||
style="line-height:1.2;margin-right: 119.82754516601562pt;text-align: right;margin-top:0pt;margin-bottom:0pt;"><span
|
||||
style="font-size: 16.0109pt; font-family: "Times New Roman"; color: rgb(152, 72, 6); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"><br></span></p><p
|
||||
dir="ltr" style="text-align: center; line-height: 1.2; margin-right: 119.828pt; margin-top: 0pt; margin-bottom: 0pt;"><span
|
||||
style="font-size: 16.0109pt; font-family: "Times New Roman"; color: rgb(152, 72, 6); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">con il </span><span
|
||||
style="font-size: 20.0118pt; font-family: "Times New Roman"; color: rgb(152, 72, 6); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">Dott. Vanni Ficola </span></p><p
|
||||
dir="ltr"
|
||||
style="line-height:1.3744505882263183;margin-left: 8.128738403320312pt;text-align: center;margin-top:4.91497802734375pt;margin-bottom:0pt;"><span
|
||||
style="font-size: 12.0101pt; font-family: "Times New Roman"; color: rgb(152, 72, 6); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">Agronomo, esperto della tecnologia EM nelle pratiche agricole utili e sane per l’Ambiente </span></p><p
|
||||
dir="ltr"
|
||||
style="line-height:1.3744505882263183;margin-left: 8.128738403320312pt;text-align: center;margin-top:4.91497802734375pt;margin-bottom:0pt;"><span
|
||||
style="font-size: 12.0101pt; font-family: "Times New Roman"; color: rgb(152, 72, 6); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">e per la Salute, Fondatore dell’Associazione Nazionale “Puliti senza Chimica” </span></p><p
|
||||
dir="ltr"
|
||||
style="text-align: center; line-height: 1.2; margin-right: 91.4182pt; margin-top: 27.7748pt; margin-bottom: 0pt;"><span
|
||||
style="font-size: 12.0101pt; font-family: "Times New Roman"; color: rgb(152, 72, 6); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"><span
|
||||
style="border:none;display:inline-block;overflow:hidden;width:344px;height:188px;"><img
|
||||
src="https://lh3.googleusercontent.com/Xumk5ylO3JuNynq2nalClacFU-IcwU1u7PNopArJO3xr4Z19B1vIz0H0QdmSWEzQLb7DBmVRsOw_ifxyRPJrFkq9b25wvu7IInwamxJ_3KXjfUFiWMvt4nWIisSuxNYOVjkLc5Or"
|
||||
width="344" height="188" style="margin-left:0px;margin-top:0px;"></span></span></p><p dir="ltr"
|
||||
style="line-height:1.2;margin-left: 129.79080200195312pt;margin-top:0pt;margin-bottom:0pt;"><span
|
||||
style="font-size: 18.0151pt; font-family: "Times New Roman"; color: rgb(0, 112, 192); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"><br></span></p><p
|
||||
dir="ltr"
|
||||
style="text-align: center; line-height: 1.2; margin-left: 129.791pt; margin-top: 0pt; margin-bottom: 0pt;"><span
|
||||
style="font-size: 18.0151pt; font-family: "Times New Roman"; color: rgb(0, 112, 192); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">Incontro In-formativo</span></p><p
|
||||
dir="ltr"
|
||||
style="line-height:1.3667760372161866;margin-right: 26.9189453125pt;text-align: center;margin-top:28.270233154296875pt;margin-bottom:0pt;"><span
|
||||
style="font-size: 16.0109pt; font-family: "Times New Roman"; color: rgb(0, 112, 192); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">E’ possibile sostenersi e vivere meglio con un’agricoltura Senza Chimica che rispetti la Vita e la nostra amata Madre Terra </span><span
|
||||
style="font-size: 18.0151pt; font-family: "Times New Roman"; color: rgb(255, 0, 0); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">Scopriamolo Insieme </span></p><p
|
||||
dir="ltr"
|
||||
style="text-align: center; line-height: 1.2; margin-left: 136.773pt; margin-top: 12.6207pt; margin-bottom: 0pt;"><span
|
||||
style="font-size: 14.0068pt; font-family: "Times New Roman"; color: rgb(0, 32, 96); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">con INGRESSO LIBERO </span></p><div
|
||||
style="text-align: center;"><span
|
||||
style="font-size: 14.0068pt; font-family: "Times New Roman"; color: rgb(0, 32, 96); background-color: transparent; font-weight: 700; font-style: italic; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"><br></span></div></span>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -32,10 +32,11 @@ export interface IMyRouteRecord extends RouteRecord {
|
||||
meta: IMyMeta,
|
||||
}
|
||||
|
||||
export interface IMyRouteConfig extends RouteConfig {
|
||||
/*export interface IMyRouteConfig extends RouteConfig {
|
||||
|
||||
children?: IMyRouteConfig[],
|
||||
meta?: IMyMeta
|
||||
}
|
||||
}*/
|
||||
|
||||
export const cfgrouter = {
|
||||
|
||||
|
||||
@@ -7,5 +7,6 @@ export const RouteNames = {
|
||||
myprojects: 'myprojects',
|
||||
favouriteprojects: 'favproj',
|
||||
listprojects: 'listproj',
|
||||
livelli: 'livelli'
|
||||
livelli: 'livelli',
|
||||
ecommerce: 'ecommerce'
|
||||
}
|
||||
|
||||
BIN
src/statics/icons/android-chrome-144x144.png
Executable file
|
After Width: | Height: | Size: 50 KiB |
BIN
src/statics/icons/android-chrome-192x192.png
Executable file
|
After Width: | Height: | Size: 85 KiB |
BIN
src/statics/icons/android-chrome-36x36.png
Executable file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
src/statics/icons/android-chrome-48x48.png
Executable file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
src/statics/icons/android-chrome-512x512.png
Executable file
|
After Width: | Height: | Size: 451 KiB |
BIN
src/statics/icons/android-chrome-72x72.png
Executable file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/statics/icons/android-chrome-96x96.png
Executable file
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 813 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
src/statics/icons/favicon-48x48.png
Executable file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
src/statics/icons/favicon-64x64.png
Executable file
|
After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 4.2 KiB |
BIN
src/statics/images/avatar/alberto_bartolini.jpg
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
src/statics/images/avatar/bernhard_neulichedl.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
src/statics/images/avatar/loris.jpg
Executable file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/statics/images/avatar/luigi_lisi.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
src/statics/images/avatar/maria_luisa_barlini.jpg
Executable file
|
After Width: | Height: | Size: 59 KiB |
BIN
src/statics/images/avatar/michele_rosetti.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/statics/images/avatar/sonia_baldoni.jpg
Executable file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 288 KiB |
BIN
src/statics/images/calendario_eventi.jpg
Executable file
|
After Width: | Height: | Size: 63 KiB |
BIN
src/statics/images/em_utilizzo.jpg
Executable file
|
After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 288 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 207 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 27 KiB |
BIN
src/statics/images/prodotti.jpg
Executable file
|
After Width: | Height: | Size: 808 KiB |
BIN
src/statics/images/products/arance.jpg
Executable file
|
After Width: | Height: | Size: 35 KiB |
BIN
src/statics/images/products/ciliege-big.jpg
Executable file
|
After Width: | Height: | Size: 68 KiB |
BIN
src/statics/images/products/ciliege.jpg
Executable file
|
After Width: | Height: | Size: 52 KiB |
BIN
src/statics/images/products/cortisone_naturale.jpg
Executable file
|
After Width: | Height: | Size: 22 KiB |
BIN
src/statics/images/products/em.jpg
Executable file
|
After Width: | Height: | Size: 30 KiB |
BIN
src/statics/images/products/insalata_gentilina.jpg
Executable file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
src/statics/images/products/lattuga_romana.jpg
Executable file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
src/statics/images/products/pane.jpg
Executable file
|
After Width: | Height: | Size: 29 KiB |
BIN
src/statics/images/products/propoli.jpg
Executable file
|
After Width: | Height: | Size: 50 KiB |
BIN
src/statics/images/produttori.jpg
Executable file
|
After Width: | Height: | Size: 808 KiB |
@@ -208,6 +208,7 @@
|
||||
}
|
||||
|
||||
UpgradeDB.prototype.createObjectStore = function() {
|
||||
console.log('createObjectStore');
|
||||
return new ObjectStore(this._db.createObjectStore.apply(this._db, arguments));
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const OtherTables = ['categories', 'config', 'swmsg']
|
||||
const OtherTables = ['config', 'swmsg']
|
||||
const MainTables = ['todos', 'projects']
|
||||
const allMethod = ['sync_post_', 'sync_patch_', 'delete_']
|
||||
const allMethod = ['sync_post_', 'sync_patch_', 'delete_', 'hide_']
|
||||
|
||||
|
||||
// -------------------------------------
|
||||
@@ -15,7 +15,8 @@ let idbKeyval = (() => {
|
||||
if (!db) {
|
||||
// console.log('CREO DB STORAGE JS !')
|
||||
db = new Promise((resolve, reject) => {
|
||||
const openreq = indexedDB.open('mydb3', 11);
|
||||
// console.log('open mydb3')
|
||||
const openreq = indexedDB.open('mydb3', 12);
|
||||
|
||||
openreq.onerror = () => {
|
||||
reject(openreq.error);
|
||||
@@ -24,14 +25,15 @@ let idbKeyval = (() => {
|
||||
openreq.onupgradeneeded = () => {
|
||||
// First time setup: create an empty object store
|
||||
for (let mytab of MainTables) {
|
||||
openreq.result.createObjectStore(mytab, { keyPath: '_id' });
|
||||
openreq.result.createObjectStore(mytab, { keyPath: 'BOMID', autoIncrement: true });
|
||||
for (let mymeth of allMethod) {
|
||||
const tab = mymeth + mytab
|
||||
openreq.result.createObjectStore(tab, { keyPath: '_id' });
|
||||
openreq.result.createObjectStore(tab, { keyPath: 'BOMID', autoIncrement: true });
|
||||
}
|
||||
}
|
||||
for (let mytab of OtherTables) {
|
||||
openreq.result.createObjectStore(mytab, { keyPath: '_id' });
|
||||
console.log('mytab', mytab);
|
||||
openreq.result.createObjectStore(mytab, { keyPath: 'BOMID', autoIncrement: true });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ function geturl() {
|
||||
if (miaurl.includes('localhost')) {
|
||||
return 'http://localhost:8090/'
|
||||
} else {
|
||||
return 'https://ayni.gifteconomy.app/'
|
||||
return 'https://comunitanuovomondo.app/'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,5 +5,5 @@ $_CONFIG['user'] = '';
|
||||
$_CONFIG['pass'] = '';
|
||||
$_CONFIG['dbname'] = '';
|
||||
|
||||
$_SITO['conndb'] = mysqli_connect($_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass'], $_CONFIG['dbname']) or die('Impossibile stabilire una connessione. ' . mysqli_connect_error());
|
||||
// $_SITO['conndb'] = mysqli_connect($_CONFIG['host'], $_CONFIG['user'], $_CONFIG['pass'], $_CONFIG['dbname']) or die('Impossibile stabilire una connessione. ' . mysqli_connect_error());
|
||||
|
||||
|
||||
5
src/statics/upload/eventi/.directory
Executable file
@@ -0,0 +1,5 @@
|
||||
[Dolphin]
|
||||
PreviewsShown=true
|
||||
Timestamp=2021,3,26,23,47,48
|
||||
Version=4
|
||||
ViewMode=1
|
||||
BIN
src/statics/upload/eventi/acroyoga.jpg
Executable file
|
After Width: | Height: | Size: 155 KiB |
BIN
src/statics/upload/eventi/apicoltura.jpg
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
src/statics/upload/eventi/corso_autosufficienza_energetica.jpg
Executable file
|
After Width: | Height: | Size: 50 KiB |
BIN
src/statics/upload/eventi/eye_contact.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
src/statics/upload/eventi/foodforest.jpg
Executable file
|
After Width: | Height: | Size: 90 KiB |
BIN
src/statics/upload/eventi/foodforest_big.jpg
Executable file
|
After Width: | Height: | Size: 132 KiB |
BIN
src/statics/upload/eventi/lab_erbe.jpg
Executable file
|
After Width: | Height: | Size: 54 KiB |
BIN
src/statics/upload/eventi/laboratorio_erbe_spontanee.jpg
Executable file
|
After Width: | Height: | Size: 88 KiB |
BIN
src/statics/upload/eventi/orto_sinergico.jpg
Executable file
|
After Width: | Height: | Size: 75 KiB |
BIN
src/statics/upload/eventi/qi_gong.jpg
Executable file
|
After Width: | Height: | Size: 36 KiB |
BIN
src/statics/upload/eventi/scuola_evolutiva.jpg
Executable file
|
After Width: | Height: | Size: 80 KiB |
BIN
src/statics/upload/eventi/teatro.png
Executable file
|
After Width: | Height: | Size: 502 KiB |
BIN
src/statics/upload/eventi/terra.jpg
Executable file
|
After Width: | Height: | Size: 21 KiB |