Mostrare il Bene, Servizio, solo ai Propri Gruppi.

Nella pagina profilo, i "Gruppi" personali non si vedevano !
This commit is contained in:
Paolo Arena
2022-06-16 20:34:17 +02:00
parent bb2604d430
commit f1c89483ff
62 changed files with 1249 additions and 431 deletions

View File

@@ -1,6 +1,6 @@
APP_VERSION="0.3.21" APP_VERSION="0.3.22"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="14" APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"
DIRECTORY_SERVER="freeplanet_serverside" DIRECTORY_SERVER="freeplanet_serverside"
SERVERDIR_WEBSITE="" SERVERDIR_WEBSITE=""
@@ -12,7 +12,7 @@ LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T" MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="http://localhost:3000" MONGODB_HOST="http://localhost:3000"
LOGO_REG='tdv-logo-full.png' LOGO_REG='riso-logo-full.png'
TEST_NAME="Paolo" TEST_NAME="Paolo"
TEST_SURNAME="Arena" TEST_SURNAME="Arena"
TEST_EMAIL="" TEST_EMAIL=""

View File

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

View File

@@ -11,6 +11,7 @@ const functionality: IFunctionality = {
SHOW_PROFILE: true, SHOW_PROFILE: true,
SHOW_REG_BUTTON: false, SHOW_REG_BUTTON: false,
ENABLE_REGISTRATION: true, // Cambiare con true ENABLE_REGISTRATION: true, // Cambiare con true
ENABLE_REG_NEED_TELEGRAM: true,
SHOW_NEWSLETTER: false, SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: false, SHOW_ONLY_POLICY: false,
ENABLE_TODOS_LOADING: false, ENABLE_TODOS_LOADING: false,

View File

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

View File

@@ -11,6 +11,7 @@ const functionality: IFunctionality = {
SHOW_PROFILE: true, SHOW_PROFILE: true,
SHOW_REG_BUTTON: false, SHOW_REG_BUTTON: false,
ENABLE_REGISTRATION: true, // Cambiare con true ENABLE_REGISTRATION: true, // Cambiare con true
ENABLE_REG_NEED_TELEGRAM: true,
SHOW_NEWSLETTER: false, SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: false, SHOW_ONLY_POLICY: false,
ENABLE_TODOS_LOADING: false, ENABLE_TODOS_LOADING: false,

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.21" APP_VERSION="0.3.22"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="12" APP_ID="12"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -11,6 +11,7 @@ const functionality: IFunctionality = {
SHOW_PROFILE: true, SHOW_PROFILE: true,
SHOW_REG_BUTTON: false, SHOW_REG_BUTTON: false,
ENABLE_REGISTRATION: true, // Cambiare con true ENABLE_REGISTRATION: true, // Cambiare con true
ENABLE_REG_NEED_TELEGRAM: false,
SHOW_NEWSLETTER: false, SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: false, SHOW_ONLY_POLICY: false,
ENABLE_TODOS_LOADING: false, ENABLE_TODOS_LOADING: false,

View File

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

View File

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

View File

@@ -11,6 +11,7 @@ const functionality: IFunctionality = {
SHOW_PROFILE: true, SHOW_PROFILE: true,
SHOW_REG_BUTTON: false, SHOW_REG_BUTTON: false,
ENABLE_REGISTRATION: true, // Cambiare con true ENABLE_REGISTRATION: true, // Cambiare con true
ENABLE_REG_NEED_TELEGRAM: true,
SHOW_NEWSLETTER: false, SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: true, SHOW_ONLY_POLICY: true,
ENABLE_TODOS_LOADING: false, ENABLE_TODOS_LOADING: false,
@@ -630,7 +631,7 @@ const baseroutes: IListRoutes[] = [
active: true, active: true,
order: 150, order: 150,
path: '/fundraising', path: '/fundraising',
materialIcon: 'fas fa-hand-holding', materialIcon: 'fas fa-hand-holding-heart',
name: 'pages.fundraising', name: 'pages.fundraising',
component: () => import('@src/root/fundraising/fundraising.vue'), component: () => import('@src/root/fundraising/fundraising.vue'),
inmenu: true, inmenu: true,

View File

@@ -1,6 +1,6 @@
{ {
"name": "riso", "name": "riso",
"version": "0.3.21", "version": "0.3.22",
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.", "description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "Riso", "productName": "Riso",
"author": "Paolo Arena", "author": "Paolo Arena",

View File

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

View File

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

View File

@@ -11,6 +11,7 @@ const functionality: IFunctionality = {
SHOW_PROFILE: true, SHOW_PROFILE: true,
SHOW_REG_BUTTON: true, SHOW_REG_BUTTON: true,
ENABLE_REGISTRATION: true, // Cambiare con true ENABLE_REGISTRATION: true, // Cambiare con true
ENABLE_REG_NEED_TELEGRAM: false,
SHOW_NEWSLETTER: false, SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: true, SHOW_ONLY_POLICY: true,
ENABLE_TODOS_LOADING: false, ENABLE_TODOS_LOADING: false,
@@ -578,7 +579,7 @@ const baseroutes: IListRoutes[] = [
path: '/signup', path: '/signup',
materialIcon: 'how_to_reg', materialIcon: 'how_to_reg',
name: 'pages.SignUp', name: 'pages.SignUp',
component: () => import('@/views/login/signup_noteleg/signup_noteleg.vue'), component: () => import('@/views/login/signup/signup_noteleg.vue'),
inmenu: false, inmenu: false,
infooter: false, infooter: false,
separator: false separator: false
@@ -645,7 +646,7 @@ const baseroutes: IListRoutes[] = [
active: true, active: true,
order: 70, order: 70,
path: '/chisiamo', path: '/chisiamo',
materialIcon: 'event', materialIcon: 'fa fa-users',
name: 'pages.chisiamo', name: 'pages.chisiamo',
component: () => import('@/rootgen/operators/operators.vue'), component: () => import('@/rootgen/operators/operators.vue'),
inmenu: true, inmenu: true,

View File

@@ -1,6 +1,6 @@
{ {
"name": "terradellavisione", "name": "terradellavisione",
"version": "0.3.21", "version": "0.3.22",
"description": "TerraDellaVisione", "description": "TerraDellaVisione",
"productName": "TerraDellaVisione", "productName": "TerraDellaVisione",
"author": "Paolo Arena", "author": "Paolo Arena",

View File

@@ -125,7 +125,7 @@
</div> </div>
<section class="maxwidth padding_gallery bg-white text-grey-10 text-center"> <section class="padding_gallery bg-white text-grey-10 text-center">
<q-carousel <q-carousel
swipeable swipeable
@@ -135,7 +135,7 @@
arrows arrows
thumbnails thumbnails
infinite infinite
:height="tools.heightgallery()"> >
<q-carousel-slide v-for="(rec, index) in getArrImgSlideHome()" :key="index" :name="index" <q-carousel-slide v-for="(rec, index) in getArrImgSlideHome()" :key="index" :name="index"
:img-src="getdirectory() + '/' + rec.imagefile" :img-src="getdirectory() + '/' + rec.imagefile"
:alt="rec.description" :alt="rec.description"

View File

@@ -1,8 +1,8 @@
{ {
"name": "terradellavisione", "name": "riso",
"version": "0.3.21", "version": "0.3.22",
"description": "TerraDellaVisione", "description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "TerraDellaVisione", "productName": "Riso",
"author": "Paolo Arena", "author": "Paolo Arena",
"private": true, "private": true,
"keywords": [], "keywords": [],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 KiB

After

Width:  |  Height:  |  Size: 303 KiB

View File

@@ -147,7 +147,7 @@ module.exports = configure((ctx) => ({
}, },
devServer: { devServer: {
https: false, https: false,
port: 8085, port: 8084,
open: false, // opens browser window automatically open: false, // opens browser window automatically
}, },
@@ -286,36 +286,36 @@ module.exports = configure((ctx) => ({
}, },
manifest: { manifest: {
name: 'Terra Della Visione', name: 'Riso',
short_name: 'Terra della Visione', short_name: 'Riso',
description: 'Centro per ritiri CurArte: un viaggio nella Natura per incontrare il tuo essere potrai partecipare a sessioni di yoga, meditazione, massaggi, danze, eventi musicali, cibo naturale vegetariano/vegano, laboratori artigianali', description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
display: 'standalone', display: 'standalone',
orientation: 'portrait', orientation: 'portrait',
background_color: '#ffffff', background_color: '#ffffff',
theme_color: '#027be3', theme_color: '#027be3',
icons: [ icons: [
{ {
src: 'images/tdv-android-icon-512x512.png', src: 'images/riso-android-icon-512x512.png',
sizes: '512x512', sizes: '512x512',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/tdv-android-icon-96x96.png', src: 'images/riso-android-icon-96x96.png',
sizes: '96x96', sizes: '96x96',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/tdv-android-icon-144x144.png', src: 'images/riso-android-icon-144x144.png',
sizes: '144x144', sizes: '144x144',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/tdv-android-icon-192x192.png', src: 'images/riso-android-icon-192x192.png',
sizes: '192x192', sizes: '192x192',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/tdv-android-icon-384x384.png', src: 'images/riso-android-icon-384x384.png',
sizes: '384x384', sizes: '384x384',
type: 'image/png', type: 'image/png',
}, },

268
query_gruppi.js Normal file
View File

@@ -0,0 +1,268 @@
db.getCollection('myskills').aggregate(
[
{
"$match": {
"idapp": "13"
}
},
{
"$sort": {
"date_created": -1
}
},
{
"$addFields": {
"myId1": {
"$toObjectId": "$userId"
}
}
},
{
"$lookup": {
"from": "users",
"localField": "myId1",
"foreignField": "_id",
"as": "user"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$user",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"website": 1,
"descr": 1,
"date_created": 1,
"date_updated": 1,
"userId": 1,
"username": 1,
"name": 1,
"surname": 1,
"comune": 1,
"mycities": 1,
"profile.img": 1,
"profile.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$lookup": {
"from": "goods",
"localField": "idGood",
"foreignField": "_id",
"as": "recGood"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$recGood",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"website": 1,
"descr": 1,
"date_created": 1,
"date_updated": 1,
"userId": 1,
"username": 1,
"name": 1,
"surname": 1,
"comune": 1,
"mycities": 1,
"profile.img": 1,
"profile.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$lookup": {
"from": "sectorgoods",
"localField": "recGood.idSectorGood",
"foreignField": "_id",
"as": "sectorgood"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$sectorgood",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"website": 1,
"descr": 1,
"date_created": 1,
"date_updated": 1,
"userId": 1,
"username": 1,
"name": 1,
"surname": 1,
"comune": 1,
"mycities": 1,
"profile.img": 1,
"profile.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$lookup": {
"from": "cities",
"localField": "idCity",
"foreignField": "_id",
"as": "mycities"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$mycities",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"website": 1,
"descr": 1,
"date_created": 1,
"date_updated": 1,
"userId": 1,
"username": 1,
"name": 1,
"surname": 1,
"comune": 1,
"mycities": 1,
"profile.img": 1,
"profile.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$match": {
"$and": [
{
"mycities.reg": "EMR"
},
{
"idCity": 5730
}
]
}
},
{
"$group": {
"_id": null,
"count": {
"$sum": 1
},
"results": {
"$push": "$$ROOT"
}
}
},
{
"$project": {
"count": 1,
"rows": {
"$slice": [
"$results",
0,
20
]
}
}
}
]
)

View File

@@ -69,6 +69,11 @@ export const shared_consts = {
FIND_GROUP: 1166, FIND_GROUP: 1166,
}, },
PUBTOSHARE: {
ALL: 0,
ONLY_GROUPS_FOLLOW: 1,
},
REPORT_FILT_RESP: 1, REPORT_FILT_RESP: 1,
REPORT_FILT_ATTIVITA: 2, REPORT_FILT_ATTIVITA: 2,
@@ -95,6 +100,7 @@ export const shared_consts = {
TABLES_USER_INCLUDE_MY: ['mygroups'], TABLES_USER_INCLUDE_MY: ['mygroups'],
TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas', 'myhosps', 'mygoods'], TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas', 'myhosps', 'mygoods'],
TABLES_WITH_FILTER_FIELD: ['caldate'], TABLES_WITH_FILTER_FIELD: ['caldate'],
TABLES_WITH_SPECIAL_FILTER: ['pub_to_share'],
COL_WITH_FILTER_GTE: ['numMaxPeopleHosp'], COL_WITH_FILTER_GTE: ['numMaxPeopleHosp'],
TABLES_WITH_DATE: ['mybachecas', 'myhosps'], TABLES_WITH_DATE: ['mybachecas', 'myhosps'],
TABLES_WITH_SORTING: ['mybachecas', 'myhosps'], TABLES_WITH_SORTING: ['mybachecas', 'myhosps'],
@@ -546,6 +552,18 @@ export const shared_consts = {
}, },
], ],
Pub_to_Share: [
{
value: 0,
label: 'Tutti',
},
{
value: 1,
label: 'Miei Gruppi',
},
],
VisibilGroup: [ VisibilGroup: [
{ {
value: 1, value: 1,

View File

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

View File

@@ -31,12 +31,18 @@ export default defineComponent({
return costanti.MAINCARDS.filter((rec: IMainCard) => rec.visuonstat) return costanti.MAINCARDS.filter((rec: IMainCard) => rec.visuonstat)
}) })
const visulinks = computed(() => {
// @ts-ignore
return costanti.MAINCARDS.filter((rec: IMainCard) => rec.link)
})
return { return {
userStore, userStore,
tools, tools,
calcstat, calcstat,
shared_consts, shared_consts,
visustat, visustat,
visulinks,
} }
}, },
}) })

View File

@@ -1,7 +1,7 @@
<template> <template>
<div class="q-ma-md"> <div class="q-ma-md">
<div class="row q-my-md shadow" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);"> <div class="row q-my-md shadow" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);">
<div class="col-md-3 col-lg-3 col-sm-12 col-xs-12 box_4" style="border-left: 1px solid #efefef;" <!--<div class="col-md-3 col-lg-3 col-sm-12 col-xs-12 box_4" style="border-left: 1px solid #efefef;"
v-bind:class="{'border-top': $q.platform.is.mobile}"> v-bind:class="{'border-top': $q.platform.is.mobile}">
<q-card class="no-shadow q-pa-sm"> <q-card class="no-shadow q-pa-sm">
<q-item class="q-pb-none q-pt-xs"> <q-item class="q-pb-none q-pt-xs">
@@ -26,24 +26,24 @@
</q-item-section> </q-item-section>
</q-item> </q-item>
</q-card> </q-card>
</div> </div>-->
<div v-for="(rec, index) of visustat" :class="`col-md-3 col-lg-3 col-sm-6 col-xs-6 text-` + rec.color" <div v-for="(rec, index) of visustat" :class="`col-md-3 col-lg-3 col-sm-6 col-xs-6 text-` + rec.color"
style="border-left: 1px solid #efefef;" :key="index" style="border-left: 1px solid #efefef;" :key="index"
> >
<q-card class="no-shadow q-pa-sm"> <q-card class="no-shadow q-pa-sm">
<q-item class="q-pb-none q-pt-xs"> <q-item class="q-pb-none q-pt-xs cursor-pointer" :to="rec.to">
<q-item-section> <q-item-section>
<q-item-label class="text-h4" style="font-weight: 500;letter-spacing: 3px;"> <q-item-label class="text-h4" style="font-weight: 500;letter-spacing: 3px;">
{{ calcstat.numByTab[rec.table] }} {{ calcstat.numByTab[rec.table] }}
</q-item-label> </q-item-label>
<q-item-label :class="!$q.dark.isActive? 'text-grey-7':'text-white'" style="letter-spacing: 1px;"> <q-item-label :class="(!$q.dark.isActive? 'text-grey-7':'text-white') + ` title_view_shadow`" style="letter-spacing: 1px;">
{{ rec.title }} {{ rec.title }}
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side> <q-item-section side>
<q-icon :name="rec.icon" :class="`text-` + rec.color" size="60px"></q-icon> <q-icon :name="rec.icon" :class="`text-` + rec.color" size="50px"></q-icon>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item class="q-py-xs" style="min-height: unset"> <q-item class="q-py-xs" style="min-height: unset">
@@ -56,6 +56,26 @@
</q-card> </q-card>
</div> </div>
</div> </div>
<div class="row q-my-md shadow" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);">
<div v-for="(rec, index) of visulinks" :class="`col-md-3 col-lg-3 col-sm-6 col-xs-6 text-` + rec.color"
style="border-left: 1px solid #efefef;" :key="index"
>
<q-card class="no-shadow q-pa-sm">
<q-item class="q-pb-none q-pt-xs cursor-pointer" :to="rec.to">
<q-item-section>
<q-item-label :class="(!$q.dark.isActive? 'text-grey-7':'text-white') + ` title_view_shadow`" style="letter-spacing: 0.5px;">
{{ rec.title }}
</q-item-label>
</q-item-section>
<q-item-section side>
<q-icon :name="rec.icon" :class="`text-` + rec.color" size="50px"></q-icon>
</q-item-section>
</q-item>
</q-card>
</div>
</div>
</div> </div>
</template> </template>

View File

@@ -300,6 +300,17 @@ export default defineComponent({
// param1: shared_consts.PARAM_SHOW_PROVINCE, // param1: shared_consts.PARAM_SHOW_PROVINCE,
tablesel: 'cities', tablesel: 'cities',
}, },
{
label: 'Visiblità',
table: 'pub_to_share',
key: 'pub_to_share',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + 'pub_to_share', shared_consts.PUBTOSHARE.ALL, true),
addall: false,
arrvalue: [],
useinput: false,
filter: null,
},
{ {
label: 'Offro/Cerco', label: 'Offro/Cerco',
table: 'adtypes', table: 'adtypes',
@@ -452,6 +463,18 @@ export default defineComponent({
// param1: shared_consts.PARAM_SHOW_PROVINCE, // param1: shared_consts.PARAM_SHOW_PROVINCE,
tablesel: 'cities', tablesel: 'cities',
}, },
{
label: 'Visiblità',
table: 'pub_to_share',
key: 'pub_to_share',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + 'pub_to_share', shared_consts.PUBTOSHARE.ALL, true),
addall: false,
arrvalue: [],
useinput: true,
filter: null,
tablesel: 'pub_to_share',
},
{ {
label: 'Data Inizio', label: 'Data Inizio',
table: 'caldate', table: 'caldate',
@@ -542,6 +565,18 @@ export default defineComponent({
// param1: shared_consts.PARAM_SHOW_PROVINCE, // param1: shared_consts.PARAM_SHOW_PROVINCE,
tablesel: 'cities', tablesel: 'cities',
}, },
{
label: 'Visiblità',
table: 'pub_to_share',
key: 'pub_to_share',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + 'pub_to_share', shared_consts.PUBTOSHARE.ALL, true),
addall: false,
arrvalue: [],
useinput: true,
filter: null,
tablesel: 'pub_to_share',
},
{ {
label: 'Tipologia', label: 'Tipologia',
table: toolsext.TABTYPEHOSP, table: toolsext.TABTYPEHOSP,
@@ -633,6 +668,18 @@ export default defineComponent({
// param1: shared_consts.PARAM_SHOW_PROVINCE, // param1: shared_consts.PARAM_SHOW_PROVINCE,
tablesel: 'cities', tablesel: 'cities',
}, },
{
label: 'Visiblità',
table: 'pub_to_share',
key: 'pub_to_share',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + 'pub_to_share', shared_consts.PUBTOSHARE.ALL, true),
addall: false,
arrvalue: [],
useinput: true,
filter: null,
tablesel: 'pub_to_share',
},
{ {
label: 'Offro/Cerco', label: 'Offro/Cerco',
table: 'adtypes', table: 'adtypes',
@@ -794,6 +841,18 @@ export default defineComponent({
tablesel: 'cities', tablesel: 'cities',
icon: 'fas fa-map-marker-alt', icon: 'fas fa-map-marker-alt',
}, },
{
label: 'Visiblità',
table: 'visibility',
key: 'visibility',
type: costanti.FieldType.multiselect,
value: tools.getCookie(tools.COOK_SEARCH + 'visibility', costanti.FILTER_TUTTI),
addall: true,
arrvalue: [],
useinput: true,
filter: null,
tablesel: 'visibility',
},
{ {
label: 'Categorie', label: 'Categorie',
table: 'catgrps', table: 'catgrps',
@@ -927,6 +986,7 @@ export default defineComponent({
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
numLevel: 1, numLevel: 1,
adType: 1, adType: 1,
photos: 1, photos: 1,
@@ -943,6 +1003,7 @@ export default defineComponent({
comune: 1, comune: 1,
mycities: 1, mycities: 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },
@@ -987,6 +1048,7 @@ export default defineComponent({
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
dateTimeStart: 1, dateTimeStart: 1,
dateTimeEnd: 1, dateTimeEnd: 1,
numLevel: 1, numLevel: 1,
@@ -1005,6 +1067,7 @@ export default defineComponent({
comune: 1, comune: 1,
mycities: 1, mycities: 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },
@@ -1056,6 +1119,7 @@ export default defineComponent({
idContribType: 1, idContribType: 1,
photos: 1, photos: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
note: 1, note: 1,
website: 1, website: 1,
link_maplocation: 1, link_maplocation: 1,
@@ -1099,6 +1163,7 @@ export default defineComponent({
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
numLevel: 1, numLevel: 1,
adType: 1, adType: 1,
photos: 1, photos: 1,
@@ -1115,6 +1180,7 @@ export default defineComponent({
comune: 1, comune: 1,
mycities: 1, mycities: 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },

View File

@@ -1,15 +1,13 @@
<template> <template>
<q-page class="text-white"> <q-page class="text-black">
<div class="landing"> <div class="landing">
<section class="bg-primary"> <section class="bg-white">
<div class=" row justify-between items-start q-col-gutter-sm"> <div class=" row justify-between items-start q-col-gutter-sm">
<div class="col-12"> <div class="col-12">
<div class="feature-item"><i <div class="feature-item" style="margin-top: 0px !important;">
aria-hidden="true" <div class="text-big" style="margin: 0px !important; padding: 2px !important;" v-html="t('homepage.freesostieni.title')"></div>
class="q-icon fas fa-hands-holding"> </i>
<div class="text-big" v-html="t('homepage.freesostieni.title')"></div>
<p class="feat-descr" v-html="t('homepage.freesostieni.descr')"></p></div> <p class="feat-descr" v-html="t('homepage.freesostieni.descr')"></p></div>
</div> </div>
</div> </div>

View File

@@ -104,13 +104,13 @@ export default defineComponent({
required: false, required: false,
default: '', default: '',
}, },
/* keyMain: { /* keyMain: {
type: String, type: String,
required: false, required: false,
default: '', default: '',
}, },
*/ */
nodataLabel: { nodataLabel: {
type: String, type: String,
required: false, required: false,
@@ -250,7 +250,7 @@ export default defineComponent({
const serverData: any = ref([]) const serverData: any = ref([])
const spinner_visible = ref(false) const spinner_visible = ref(false)
const searchList = ref(<ISearchList[]> []) const searchList = ref(<ISearchList[]>[])
let actual = '' let actual = ''
@@ -511,7 +511,7 @@ export default defineComponent({
} }
if (item.value && recProvince && idRegion !== costanti.FILTER_TUTTI) { if (item.value && recProvince && idRegion !== costanti.FILTER_TUTTI) {
arrfilter_provices.push({key: 'reg', value: idRegion }) arrfilter_provices.push({ key: 'reg', value: idRegion })
} }
} else if (item.table === 'provinces') { } else if (item.table === 'provinces') {
@@ -525,7 +525,7 @@ export default defineComponent({
} }
if (item.value && recCities && idProvince !== costanti.FILTER_TUTTI) { if (item.value && recCities && idProvince !== costanti.FILTER_TUTTI) {
arrfilter_cities.push({key: 'prov', value: idProvince }) arrfilter_cities.push({ key: 'prov', value: idProvince })
} }
} else if (item.table === 'cities') { } else if (item.table === 'cities') {
@@ -551,13 +551,18 @@ export default defineComponent({
} }
} }
} else if (shared_consts.TABLES_WITH_SPECIAL_FILTER.includes(item.table)) {
objitem[item.key] = item.value
filtercustom.push(objitem)
} else if (shared_consts.COL_WITH_FILTER_GTE.includes(item.key)) { } else if (shared_consts.COL_WITH_FILTER_GTE.includes(item.key)) {
objitem[item.key] = item.value objitem[item.key] = item.value
filter_gte.push(objitem) filter_gte.push(objitem)
} else if (item.value > 0) { } else if (item.value > 0) {
objitem[item.key] = item.value objitem[item.key] = item.value
filtersearch.push(objitem) filtersearch.push(objitem)
} else if (item.arrvalue.length > 0) { } else if (item.arrvalue.length > 0) {
@@ -592,7 +597,8 @@ export default defineComponent({
if (idSector > 0) { if (idSector > 0) {
// idSector // idSector
obj2['sector._id'] = idSector // obj2['sector._id'] = idSector
obj2['idSector'] = idSector
filtersearch2.push(obj2) filtersearch2.push(obj2)
} }
if (idSkill > 0) { if (idSkill > 0) {
@@ -1047,7 +1053,7 @@ export default defineComponent({
function saveFieldValue(mydata: any) { function saveFieldValue(mydata: any) {
// console.log('saveFieldValue', mydata) // console.log('saveFieldValue', mydata)
if (newRecordBool.value){ if (newRecordBool.value) {
return false return false
} }
@@ -1138,14 +1144,14 @@ export default defineComponent({
const funccancel = 0 const funccancel = 0
const par = { const par = {
param1: item._id, param1: item._id,
param2: {...item}, param2: { ...item },
} }
if (col.action === lists.MenuAction.CAN_EDIT_TABLE) { if (col.action === lists.MenuAction.CAN_EDIT_TABLE) {
console.log('Edit', item) console.log('Edit', item)
selItem(item, col) selItem(item, col)
recModif.value = {...item} recModif.value = { ...item }
recSaved.value = {...item} recSaved.value = { ...item }
editRecordBool.value = true editRecordBool.value = true
} else { } else {
@@ -1230,7 +1236,7 @@ export default defineComponent({
// console.log('changecol', mytable.value) // console.log('changecol', mytable.value)
if (!!mytable.value) { if (!!mytable.value) {
let arrcol = [] let arrcol = []
let col: IColGridTable = {name: '', sortable: false} let col: IColGridTable = { name: '', sortable: false }
for (col of mycolumns.value) { for (col of mycolumns.value) {
if (col.field !== costanti.NOFIELD) { if (col.field !== costanti.NOFIELD) {
let obj = { let obj = {
@@ -1445,7 +1451,7 @@ export default defineComponent({
if (col.required) { if (col.required) {
// console.log('newRecord.value', newRecord.value, newRecord.value[col.name]) // console.log('newRecord.value', newRecord.value, newRecord.value[col.name])
if (tools.isArray(newRecord.value[col.name])) { if (tools.isArray(newRecord.value[col.name])) {
if (newRecord.value[col.name].length <= 0){ if (newRecord.value[col.name].length <= 0) {
return translate(col.label_trans) return translate(col.label_trans)
} }
} else { } else {
@@ -1490,7 +1496,7 @@ export default defineComponent({
const data = await globalStore.saveTable(mydata) const data = await globalStore.saveTable(mydata)
.then((ris) => { .then((ris) => {
if (ris.hasOwnProperty('code')) { if (ris.hasOwnProperty('code')) {
tools.checkErrors($q, ris.code, ''); tools.checkErrors($q, ris.code, '')
} else { } else {
if (ris) { if (ris) {
// console.log('ris', ris) // console.log('ris', ris)
@@ -1522,7 +1528,7 @@ export default defineComponent({
} }
function cancelrecModif() { function cancelrecModif() {
recModif.value = {...recSaved.value} recModif.value = { ...recSaved.value }
editRecordBool.value = false editRecordBool.value = false
/*if (recModif.value._id) { /*if (recModif.value._id) {
@@ -1580,7 +1586,7 @@ export default defineComponent({
return ((rec._id > 0 && typeof rec._id === 'number') || rec._id !== 'number') && rec !== -100 return ((rec._id > 0 && typeof rec._id === 'number') || rec._id !== 'number') && rec !== -100
} }
function showColCheck(col: IColGridTable, tipovis: number, visulabel:boolean, value: any = '', record: any = null){ function showColCheck(col: IColGridTable, tipovis: number, visulabel: boolean, value: any = '', record: any = null) {
//if (col.isadvanced_field && !showfilteradv.value) //if (col.isadvanced_field && !showfilteradv.value)
// return false // return false
@@ -1657,6 +1663,7 @@ export default defineComponent({
} }
return false return false
} }
function getActualDate(mydate: any) { function getActualDate(mydate: any) {
return actualDate.value return actualDate.value
} }

View File

@@ -23,11 +23,15 @@ export default defineComponent({
const cardsbig = computed(() => { const cardsbig = computed(() => {
// @ts-ignore // @ts-ignore
return costanti.MAINCARDS.filter((rec: IMainCard) => !rec.small && rec.visible) return costanti.MAINCARDS.filter((rec: IMainCard) => !rec.small && rec.visible && !rec.link && !rec.visuonstat)
}) })
const cardssmall = computed(() => { const cardssmall = computed(() => {
return costanti.MAINCARDS.filter((rec: any) => rec.small && rec.visible) return costanti.MAINCARDS.filter((rec: any) => rec.small && rec.visible && !rec.link && !rec.visuonstat)
})
const arrlinks = computed(() => {
return costanti.MAINCARDS.filter((rec: any) => rec.link && rec.visible)
}) })
return { return {
@@ -36,6 +40,7 @@ export default defineComponent({
costanti, costanti,
cardsbig, cardsbig,
cardssmall, cardssmall,
arrlinks,
showInfo, showInfo,
} }
} }

View File

@@ -76,6 +76,10 @@ export default defineComponent({
emit('setCmd', cmd, myusername, value) emit('setCmd', cmd, myusername, value)
} }
function myusername() {
return userStore.my.username
}
onMounted(mounted) onMounted(mounted)
return { return {
@@ -88,6 +92,7 @@ export default defineComponent({
userStore, userStore,
tools, tools,
table, table,
myusername,
} }
}, },
}) })

View File

@@ -33,6 +33,29 @@
</q-btn> </q-btn>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side v-if="visu === costanti.USER_GROUPS">
<q-item-label>
<q-btn rounded :icon="userStore.IsMyGroupByGroupname(grp.groupname) ? `fas fa-ellipsis-h` : `fas fa-user`">
<q-menu>
<q-list v-if="(!userStore.IsMyGroupByGroupname(grp.groupname) && !userStore.IsAskedGroupByGroupname(grp.groupname))" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), true, grp.groupname)">
<q-item-section>{{ $t('groups.ask_group') }}</q-item-section>
</q-item>
</q-list>
<q-list v-else-if="(!userStore.IsMyGroupByGroupname(grp.groupname) && userStore.IsAskedGroupByGroupname(grp.groupname))" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), false, grp.groupname)">
<q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section>
</q-item>
</q-list>
<q-list v-else-if="userStore.IsMyGroupByGroupname(grp.groupname)" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.exit_group') }}</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
</q-item-label>
</q-item-section>
<q-item-section side v-if="visu === costanti.REQ_GROUP"> <q-item-section side v-if="visu === costanti.REQ_GROUP">
<q-item-label> <q-item-label>
<q-btn rounded icon="fas fa-ellipsis-h"> <q-btn rounded icon="fas fa-ellipsis-h">
@@ -76,8 +99,8 @@
</q-item> </q-item>
</q-list> </q-list>
<q-list v-else-if="userStore.IsMyGroupByGroupname(grp.groupname)" style="min-width: 200px"> <q-list v-else-if="userStore.IsMyGroupByGroupname(grp.groupname)" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUPS, myusername(), '', grp.groupname)"> <q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.remove_from_mygroups') }}</q-item-section> <q-item-section>{{ $t('groups.exit_group') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
</q-menu> </q-menu>

View File

@@ -54,7 +54,7 @@ export default defineComponent({
try { try {
if (props.modelValue === costanti.GROUPS) { if (props.modelValue === costanti.GROUPS) {
arr = userStore.my.profile.mygroups arr = userStore.my.profile.mygroups
} else if (props.modelValue === costanti.MY_GROUPS) { } else if (props.modelValue === costanti.MY_GROUPS || props.modelValue === costanti.USER_GROUPS) {
arr = userStore.groups.filter((grp: IMyGroup) => userStore.my.profile.mygroups.findIndex((rec: IMyGroup) => rec.groupname === grp.groupname) >= 0) arr = userStore.groups.filter((grp: IMyGroup) => userStore.my.profile.mygroups.findIndex((rec: IMyGroup) => rec.groupname === grp.groupname) >= 0)
} else if (props.modelValue === costanti.MANAGE_GROUPS) { } else if (props.modelValue === costanti.MANAGE_GROUPS) {
arr = userStore.my.profile.manage_mygroups arr = userStore.my.profile.manage_mygroups
@@ -98,20 +98,10 @@ export default defineComponent({
return (arr) ? arr.length : 0 return (arr) ? arr.length : 0
}) })
function loadGroups() { async function loadGroups() {
// Carica il profilo di quest'utente // Carica il profilo di quest'utente
if (username.value) { if (username.value) {
userStore.loadGroups(username.value).then((ris) => { filtroutente.value = await tools.loadGroupsByUsername(username.value)
// console.log('ris', ris)
if (ris) {
userStore.my.profile.mygroups = ris.mygroups ? ris.mygroups : []
userStore.my.profile.list_usersgroup = ris.listUsersGroup ? ris.listUsersGroup : []
userStore.groups = ris.listgroups ? ris.listgroups : []
userStore.my.profile.asked_groups = ris.listSentRequestGroups ? ris.listSentRequestGroups : []
filtroutente.value = [{ userId: userStore.my._id }]
}
})
} }
} }

View File

@@ -533,7 +533,7 @@
<q-btn <q-btn
v-if="myvalue && col.field_extra1" v-if="myvalue && col.field_extra1"
icon="far fa-file-alt" :label="col.titlepopupedit" color="primary" text-color="white" icon="far fa-file-alt" :label="col.titlepopupedit" color="primary" text-color="white"
:to="getToByCol(col)" :to="tools.getToByCol(col)"
> >
</q-btn> </q-btn>
</div> </div>

View File

@@ -105,6 +105,7 @@ export default defineComponent({
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
numLevel: 1, numLevel: 1,
adType: 1, adType: 1,
photos: 1, photos: 1,
@@ -121,6 +122,7 @@ export default defineComponent({
comune: 1, comune: 1,
mycities: 1, mycities: 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },
@@ -139,6 +141,7 @@ export default defineComponent({
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
numLevel: 1, numLevel: 1,
adType: 1, adType: 1,
photos: 1, photos: 1,
@@ -155,6 +158,7 @@ export default defineComponent({
surname: 1, surname: 1,
mycities: 1, mycities: 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },
@@ -173,6 +177,7 @@ export default defineComponent({
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
numLevel: 1, numLevel: 1,
adType: 1, adType: 1,
photos: 1, photos: 1,
@@ -189,6 +194,7 @@ export default defineComponent({
comune: 1, comune: 1,
mycities: 1, mycities: 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },
@@ -232,6 +238,7 @@ export default defineComponent({
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
numLevel: 1, numLevel: 1,
adType: 1, adType: 1,
photos: 1, photos: 1,
@@ -248,6 +255,7 @@ export default defineComponent({
comune: 1, comune: 1,
mycities: 1, mycities: 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },
@@ -268,6 +276,7 @@ export default defineComponent({
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
numLevel: 1, numLevel: 1,
adType: 1, adType: 1,
photos: 1, photos: 1,
@@ -284,6 +293,7 @@ export default defineComponent({
surname: 1, surname: 1,
mycities: 1, mycities: 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },
@@ -304,6 +314,7 @@ export default defineComponent({
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
idCity: 1, idCity: 1,
pub_to_share: 1,
numLevel: 1, numLevel: 1,
adType: 1, adType: 1,
photos: 1, photos: 1,
@@ -320,6 +331,7 @@ export default defineComponent({
comune: 1, comune: 1,
mycities: 1, mycities: 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },

View File

@@ -7,7 +7,7 @@
<div class="flex flex-center"> <div class="flex flex-center">
<CCardState :mytext="$t('pages.statusreg.verifieds')" :myval="datastat.num_teleg_attivo" <CCardState :mytext="$t('pages.statusreg.reg')" :myval="datastat.num_teleg_attivo"
mycolor="blue" mycolor="blue"
:myperc="(datastat.num_teleg_attivo / datastat.num_reg) * 100"></CCardState> :myperc="(datastat.num_teleg_attivo / datastat.num_reg) * 100"></CCardState>

View File

@@ -10,6 +10,9 @@ import { tools } from '@store/Modules/tools'
import { CVerifyEmail } from '@src/components/CVerifyEmail' import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram' import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
import { static_data } from '@src/db/static_data'
import MixinUsers from '@/mixins/mixin-users' import MixinUsers from '@/mixins/mixin-users'
@@ -29,6 +32,7 @@ export default defineComponent({
userStore, userStore,
globalStore, globalStore,
tools, tools,
static_data,
} }
}, },
}) })

View File

@@ -60,6 +60,17 @@
</q-banner> </q-banner>
</div> </div>
<div v-else-if="userStore.isOldRegNotFinished()">
<div v-if="static_data.functionality.ENABLE_REG_NEED_TELEGRAM && !tools.isTelegOk()">
<h3>La Verifica su Telegram non è stata completata, pertanto se ancora non avete inserito nessun annuncio (Bene, Servizio, ecc...), è consigliato cancellare la vecchia registrazione per ripetere con una nuova registrazione.</h3><br>
<h3>Per contattare il supporto tecnico e farvi cancellare la registrazione: "Help - RISO", clicca qui sotto:</h3><br>
<h4><a href="https://t.me/+dTHFNIwkc_phNmQ8" target="_blank"><strong>Entra in Supporto Tecnico su Telegram: (Help - RISO)</strong></a></h4>
<br><br>
</div>
</div>
</div> </div>
</template> </template>

View File

@@ -1017,6 +1017,15 @@ $heightBtn: 100%;
text-shadow: .1rem .1rem .1rem $grayshadow; text-shadow: .1rem .1rem .1rem $grayshadow;
} }
.title_view_shadow{
font-family: WalterTurncoat,handwriting, Arial, sans-serif;
font-size: 0.85rem;
text-shadow: .05rem .05rem .05rem $grayshadow;
letter-spacing: 0.25px;
}
.text-normal { .text-normal {
font-family: 'Open Sans', Arial, sans-serif; font-family: 'Open Sans', Arial, sans-serif;
font-size: 1rem; font-size: 1rem;

View File

@@ -40,7 +40,7 @@ const msg_website = {
+ ' che intere popolazioni antiche conoscevano bene.', + ' che intere popolazioni antiche conoscevano bene.',
descrapp_pag2: 'E\' giunta l\'ora di utilizzare i nuovi strumenti <strong>Tecnologici</strong> a nostro <strong>favore</strong>, per <strong>Liberarci</strong> ' descrapp_pag2: 'E\' giunta l\'ora di utilizzare i nuovi strumenti <strong>Tecnologici</strong> a nostro <strong>favore</strong>, per <strong>Liberarci</strong> '
+ 'così piano piano dalla <strong>schiavitù</strong> del <strong>"Lavoro per generare Denaro"</strong> e trasformando le nostre <strong>Capacitá</strong> in ' + 'così piano piano dalla <strong>schiavitù</strong> del <strong>"Lavoro per generare Denaro"</strong> e trasformando le nostre <strong>Capacitá</strong> in '
+ '<strong>TerraDellaVisionerse Umane</strong> per poterci sostenere e vivere in <strong>Armonia</strong> con gli altri.', + '<strong>Risorse Umane</strong> per poterci sostenere e vivere in <strong>Armonia</strong> con gli altri.',
freesocial: { freesocial: {
title: 'Free Social', title: 'Free Social',
descr: 'Una Community organizzata per <strong>Categorie</strong>, dove potrai unirti a <strong>Gruppi Tematici</strong>, ' descr: 'Una Community organizzata per <strong>Categorie</strong>, dove potrai unirti a <strong>Gruppi Tematici</strong>, '

View File

@@ -1,8 +1,8 @@
const msg_website_enUs = { const msg_website_enUs = {
ws: { ws: {
sitename: 'TerraDellaVisione', sitename: 'Riso',
siteshortname: 'TerraDellaVisione', siteshortname: 'RISO',
botname: 'TerraDellaVisione BOT', botname: 'Riso BOT',
}, },
products: { products: {
quantity: 'Quantità', quantity: 'Quantità',

View File

@@ -1,8 +1,8 @@
const msg_website_es = { const msg_website_es = {
ws: { ws: {
sitename: 'TerraDellaVisione', sitename: 'Riso',
siteshortname: 'TerraDellaVisione', siteshortname: 'RISO',
botname: 'TerraDellaVisione BOT', botname: 'Riso BOT',
}, },
products: { products: {
quantity: 'Quantità', quantity: 'Quantità',

View File

@@ -1,8 +1,8 @@
const msg_website_fr = { const msg_website_fr = {
ws: { ws: {
sitename: 'TerraDellaVisione', sitename: 'Riso',
siteshortname: 'TerraDellaVisione', siteshortname: 'RISO',
botname: 'TerraDellaVisione BOT', botname: 'Riso BOT',
}, },
homepage: { homepage: {
titlecontatti: 'CONTACTS', titlecontatti: 'CONTACTS',

View File

@@ -1,7 +1,9 @@
const msg_website_it = { const msg_website_it = {
ws: { ws: {
sitename: 'Terra Della Visione', sitename: 'Riso',
siteshortname: 'TDV', siteshortname: 'RISO',
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
}, },
products: { products: {
quantity: 'Quantità', quantity: 'Quantità',
@@ -27,6 +29,7 @@ const msg_website_it = {
myservice2: 'myservice2', myservice2: 'myservice2',
myhosps2: 'myhosps2', myhosps2: 'myhosps2',
mygood2: 'mygood2', mygood2: 'mygood2',
fundraising: 'Sostieni il Progetto',
test: 'Test', test: 'Test',
projects: 'Progetti', projects: 'Progetti',
report: 'Report Ore', report: 'Report Ore',
@@ -48,7 +51,7 @@ const msg_website_it = {
invita: 'Invita Persone', invita: 'Invita Persone',
SignUp: 'Modulo di Registrazione:', SignUp: 'Modulo di Registrazione:',
need_Telegram: 'Per poter utilizzare la Piattaforma occorre avere Telegram installato.<br><a href="https://play.google.com/store/apps/details?id=org.telegram.messenger" target="_blank">Clicca qui per scaricarlo</a>', need_Telegram: 'Per poter utilizzare la Piattaforma occorre avere Telegram installato.<br><a href="https://play.google.com/store/apps/details?id=org.telegram.messenger" target="_blank">Clicca qui per scaricarlo</a>',
Registrazione_Con_Bot: 'Per Registrarsi occorre prima verificarsi su Telegram sul <strong>BOT TerraDellaVisione</strong>', Registrazione_Con_Bot: 'Per Registrarsi occorre prima verificarsi su Telegram sul <strong>BOT RISO</strong>',
SignUpIscrizione: 'Diventa Socio CNM', SignUpIscrizione: 'Diventa Socio CNM',
SignUp_alreadylista: 'Registrazione per quelli che erano già nella lista di Notevole (del 2019) !', SignUp_alreadylista: 'Registrazione per quelli che erano già nella lista di Notevole (del 2019) !',
SignUp2: 'Registrazione', SignUp2: 'Registrazione',
@@ -136,19 +139,100 @@ const msg_website_it = {
color: 'Colore', color: 'Colore',
}, },
msg: { msg: {
myAppName: 'Terra Della Visione', myAppName: 'Riso',
myAppDescription: '', myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...', underconstruction: 'App in costruzione...',
myDescriz: '', myDescriz: '',
sottoTitoloApp: 'Centro per ritiri CurArte', sottoTitoloApp: 'Il primo Vero Social',
sottoTitoloApp2: 'un viaggio nella Natura', sottoTitoloApp2: 'Libero, Equo e Solidale',
sottoTitoloApp3: 'per incontrare il tuo essere potrai partecipare a sessioni di yoga, meditazione, massaggi, danze, eventi musicali, cibo naturale vegetariano/vegano, laboratori artigianali', sottoTitoloApp3: 'dove Vive Consapevolezza e Aiuto Comunitario',
sottoTitoloApp4: '', sottoTitoloApp4: 'Gratuito e senza Pubblicità',
}, },
homepage: { homepage: {
descrapp_title1: '', descrapp_title1: 'Uniti per Evolvere e Sperimentare',
descrapp_pag1: '', descrapp_pag1: 'Siamo la <strong>Rete Italiana di Scambio Orizzontale</strong>, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della <strong>condivisione</strong> e della <strong>cooperazione</strong>. ' +
descrapp_pag2: '', 'Valori semplici e profondi che ci aiutano a ritrovare il <strong>Senso della Vita</strong>, perduto in questa società consumista, e riporti quei <strong>Sani Pricìpi Naturali</strong> ed Umani di <strong>Fratellanza</strong>'
+ ' che intere popolazioni antiche conoscevano bene.',
descrapp_pag2: 'E\' giunta l\'ora di utilizzare i nuovi strumenti <strong>Tecnologici</strong> a nostro <strong>favore</strong>, per <strong>Liberarci</strong> '
+ 'così piano piano dalla <strong>schiavitù</strong> del <strong>"Lavoro per generare Denaro"</strong> e trasformando le nostre <strong>Capacitá</strong> in '
+ '<strong>Risorse Umane</strong> per poterci sostenere e vivere in <strong>Armonia</strong> con gli altri.',
freesocial: {
title: 'Social',
descr: 'Una Community organizzata per <strong>Categorie</strong>, dove potrai unirti a <strong>Gruppi Tematici</strong>, '
+ 'Condividere <strong>Esperienze</strong> e unire Competenze per organizzare e sostenere <strong>Progetti Innovativi</strong> per il Popolo.<br><br>'
+ 'Verranno evidenziati sviluppi <strong>Etici</strong> come l\'<strong>Auto-Produzione</strong>, la <strong>Sostenibilitá</strong>, '
+ 'la Buona <strong>Salute Naturale</strong> e il <strong>Rispetto per l\'Ambiente</strong> e per tutti gli <strong>Esseri Viventi</strong> di questo '
+ '<strong>Pianeta</strong>. Chiunque potrá esprimere il proprio <strong>Consenso o Dissenso</strong> partecipando a <strong>Sondaggi Interattivi</strong>'
+ ' e realizzare insieme i <strong>Cambiamenti</strong> necessari alla nostra Società.',
},
freetalent: {
title: 'Beni e Servizi',
descr: 'Condividi i tuoi <strong>Talenti</strong> e <strong>Abilità</strong>, '
+ 'Nel Dare e Ricevere, si creeranno così legami di <strong>Amicizia, Solidarietà, Cooperazione e Divertimento</strong><br><br>' +
'Favoriamo lo scambio locale di <strong>Beni e Servizi</strong> grazie ad un sistema di baratto organizzato, in cui la comunità stessa si pone come garante.'
},
coin: {
title: 'RIS - Credito Alternativo',
descr: '<strong>Stiamo lavorando</strong> anche per creare una sorta di "moneta alternativa" per conteggiare gli scambi che avvengono tra di noi, quando il semplice baratto risulta non applicabile.<br>' +
'Partendo dalle basi del <strong>Si.Cre.Na.C.C - Sistema di Credito Naturale a Copertura Certa</strong>.<br>' +
'<em>Ciascun operatore potrà creare moneta all\'occorrenza, se il saldo del suo conto non sarà sufficiente a coprire la spesa. Potrà quindi mandare il suo conto in "scoperto", accollandosi il conseguente' +
' Debito, accreditando l\'equivalente somma all\'operatore ricevente, il quale la annovera nel suo conto in qualità di Credito. ' +
'L\'equilibrio tra il credito dell\'uno ed il debito dell\'altro ha come conseguenza che il debitore dovrà lavorare per rifondere il debito, mentre il ricevente potrà usare il credito come moneta.</em><br>' +
'Per maggiori informazioni consultare il libro gratuito <a href="https://sicrenacc.info/" target="_blank">cliccando qui</a>.'
},
freeliving: {
title: 'Gruppi Territoriali',
descr: 'Questo progetto vuole diffondere la creazione di Gruppi Territoriali Provinciali,'
+ 'per poter favorire progetti condivisi in ambito territoriale e creare così una <strong>Rete di Fiducia</strong> fino al vicinato, come giá viene praticato in piccolo, in numerosi <strong>Ecovillaggi</strong> e Comunità del mondo.',
},
freecollabora: {
title: 'Chi può Collaborare?',
descr: 'Tutti coloro che sono in linea con <strong>Princìpi Etici</strong> e ricerca del <strong>Benessere Globale del Pianeta</strong><br>'
+ 'Pertanto sono i benvenuti:'
+ '<ul class="mylist" style="padding-left: 20px;">'
+ '<li><strong>Associazioni no-profit, Ecovillaggi, Comunità</strong></li>'
+ '<li>Gruppi che intendono promuovere <strong>Progetti Sociali Innovativi</strong> per una <strong>Decrescita Felice</strong></li>'
+ '<li>Chi gestisce un <strong>Gruppo di Acquisto Solidale (G.A.S.)</strong></li>'
+ '<li><strong>Produttori Locali Etici</strong></li>'
+ '<li><strong>Chiunque voglia partecipare</strong>, nella forma che ritiene più opportuna.</li>'
+ '</ul>',
},
freesostieni: {
title: 'Come Sostenere il progetto <strong>Riso.app</strong>?',
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li>📱<strong>Condividendo la APP</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>👥 Aiutando a creare Gruppi Territoriali nella vostra città, impegnandosi a realizzare progetti per il Bene Comune, in onore ai principi Amorevoli e di condivisione.</li>'
+ '<li>🌱 Sostenendo le persone attorno a voi, e rispettando la nostra vera Casa: Madre Natura e Tutti gli Esseri Viventi. ❤️</li>'
+ '<li>👨🏻‍💻 Con una <strong>piccola donazione</strong> per le spese dei Server</li></ul>' +
'<strong>Tramite Paypal:</strong><br>' +
'<div style="font-size: 1.5rem; background-color: white; color: blue; border: solid 2px #f00; margin: 10px; padding: 10px; border-radius: 10px; " ' +
'class="row justify-around">' +
'<span><a href="https://paypal.me/paoloarena/1" target="_blank">1€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/2" target="_blank">2€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/5" target="_blank">5€</a></span>' +
'<span><a href="https://paypal.me/paoloarena/10" target="_blank">10€</a></span>' +
'<span><a href="https://paypal.me/paoloarena" target="_blank">scegli</a></span>' +
'</div><em>clicca sull\'importo per fare una <strong>donazione</strong> </em><br>' +
'In alternativa inventati una forma di scambio da donare a Paolo (soprannome <a href="https://t.me/surya1977" target="_blank">Surya</a>)<br />' +
'<span style="color: red; font-size: 2rem;">❤</span> Sono graditi messaggi sia di suggerimenti che di apprezzamenti.<br>' +
'Grazie Mille per l\'Aiuto' +
'<br>',
},
multiplatform: {
title: 'Multi-piattaforma',
descr: 'E\' compatibile con Google Chrome, Firefox, Opera, Safari, iPhone, Android e PC. L\'Applicazione s\'installa facilmente, senza passare dallo store. '
+ 'basta entrare sul sito <strong>www.riso.app</strong>.<br>'
+ 'Dopo la registrazione chiederà di aggiungerlo allo schermo (o cliccare sul menu del browser "Installa APP")',
},
free: {
title: 'Gratuita, Open Source e Niente Pubblicità',
descr: 'Questa App <strong>non è in vendita</strong>, non ha scopi commerciali, quindi <strong>non ha prezzo</strong> e nessun dato contenuto in esso verrà mai venduto, in quanto appartiene a <strong>Tutti Noi</strong> ed a nessuno in particolare.<br>Chiunque potrá utilizzarla e beneficiarne da essa.<br>' +
'<em>Progetto Open Source su <a href="https://github.com/paoloar77/newfreeplanet" target="_blank">GitHub</a>.</em><br><br>'
+ '<strong>Grazie a Tutti per il sostegno</strong>. ',
},
titlecontatti: 'Contatti', titlecontatti: 'Contatti',
contacts: '', contacts: '',
}, },

View File

@@ -1,8 +1,8 @@
const msg_website_pt = { const msg_website_pt = {
ws: { ws: {
sitename: 'TerraDellaVisione', sitename: 'Riso',
siteshortname: 'TerraDellaVisione', siteshortname: 'RISO',
botname: 'TerraDellaVisione BOT', botname: 'Riso BOT',
}, },
pages: { pages: {
home: 'Home', home: 'Home',

View File

@@ -1,8 +1,8 @@
const msg_website_si = { const msg_website_si = {
ws: { ws: {
sitename: 'Terra Della Visione', sitename: 'Riso',
siteshortname: 'Terra Della Visione', siteshortname: 'RISO',
botname: 'Terra Della Visione BOT', botname: 'Riso BOT',
}, },
pages: { pages: {
home: 'Domača stran', home: 'Domača stran',

View File

@@ -4,13 +4,15 @@ import {
IFunctionality, IFunctionality,
IPreloadImages, IPreloadImages,
} from '@model' } from '@model'
import { func } from '@store/Modules/fieldsTable'
const functionality: IFunctionality = { const functionality: IFunctionality = {
PWA: true, PWA: true,
SHOW_USER_MENU: true, // Cambiare con true SHOW_USER_MENU: true, // Cambiare con true
SHOW_PROFILE: true, SHOW_PROFILE: true,
SHOW_REG_BUTTON: true, SHOW_REG_BUTTON: false,
ENABLE_REGISTRATION: true, // Cambiare con true ENABLE_REGISTRATION: true,
ENABLE_REG_NEED_TELEGRAM: true,
SHOW_NEWSLETTER: false, SHOW_NEWSLETTER: false,
SHOW_ONLY_POLICY: true, SHOW_ONLY_POLICY: true,
ENABLE_TODOS_LOADING: false, ENABLE_TODOS_LOADING: false,
@@ -20,12 +22,11 @@ const functionality: IFunctionality = {
BOOKING_EVENTS: true, BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false, ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true, ENABLE_REG_ISP: true,
ENABLE_GROUPS: false, ENABLE_GROUPS: true,
SHOW_COMPETENZE: false, SHOW_COMPETENZE: true,
ENABLE_VIEW_GROUPS: false, ENABLE_VIEW_GROUPS: true,
ENABLE_VIEW_USERS: false, ENABLE_VIEW_USERS: true,
ENABLE_VIEW_PROFILE: false, ENABLE_VIEW_PROFILE: true,
ENABLE_VIEW_BOOKINGS: true,
} }
// const SHOW_PROJINTHEMENU = false // const SHOW_PROJINTHEMENU = false
@@ -326,34 +327,6 @@ const routes_manager: IListRoutes[] = [
onlyManager: true, onlyManager: true,
onlyEditor: true onlyEditor: true
}, },
{
active: true,
order: 30,
path: '/admin/operators',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.operators',
component: () => import('@/rootgen/admin/operators/operators.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{
active: true,
order: 30,
path: '/admin/disciplines',
materialIcon: 'fas fa-file-alt',
name: 'otherpages.admin.disciplines',
component: () => import('@/rootgen/admin/disciplines/disciplines.vue'),
inmenu: true,
submenu: true,
level_parent: 0,
level_child: 0.5,
onlyManager: true,
onlyEditor: true
},
{ {
active: true, active: true,
order: 30, order: 30,
@@ -485,11 +458,110 @@ const baseroutes: IListRoutes[] = [
path: '/', path: '/',
materialIcon: 'home', materialIcon: 'home',
name: 'pages.home', name: 'pages.home',
component: () => import('@src/root_spec/home_tdv/home_tdv.vue'), component: () => import('@src/root/mainview/mainview.vue'),
reqauth: false, reqauth: false,
inmenu: true, inmenu: true,
infooter: true, infooter: true,
}, },
{
active: true,
order: 12,
path: '/goods',
materialIcon: 'fas fa-tshirt',
name: 'mypages.goods',
component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/services',
materialIcon: 'fas fa-house-user',
name: 'mypages.services',
component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/hosps',
materialIcon: 'fas fa-bed',
name: 'mypages.hosp',
component: () => import('@/root/hosp/hosp.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 20,
path: '/events',
materialIcon: 'fas fa-bullhorn',
name: 'mypages.events',
component: () => import('@/root/eventi/eventi.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 100,
path: '/presentazione',
materialIcon: 'fas fa-info',
name: 'pages.presentazione',
component: () => import('@src/root/presentazione/presentazione.vue'),
reqauth: false,
inmenu: true,
infooter: true,
},
{
active: true,
order: 120,
path: '/myprofile',
materialIcon: 'fas fa-user',
name: 'pages.profile',
component: () => import('@/views/user/myprofile/myprofile.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 120,
path: '/editprofile',
materialIcon: 'fas fa-user',
name: 'pages.profile3',
component: () => import('@/views/user/editprofile/editprofile.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 130,
path: '/friends',
materialIcon: 'fas fa-user-friends',
name: 'mypages.friends',
component: () => import('@/views/user/myfriends/myfriends.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: functionality.ENABLE_GROUPS,
order: 132,
path: '/groups',
materialIcon: 'fas fa-users',
name: 'mypages.groups',
component: () => import('@/views/user/mygroups/mygroups.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{ {
active: true, active: true,
order: 135, order: 135,
@@ -501,6 +573,71 @@ const baseroutes: IListRoutes[] = [
inmenu: false, inmenu: false,
infooter: false, infooter: false,
}, },
{
active: true,
order: 136,
path: '/grp/:groupname',
materialIcon: 'fas fa-user',
name: 'proj.group2',
component: () => import('@/views/user/mygroup/mygroup.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 130,
path: '/mypage/:idBacheca',
materialIcon: 'fas fa-user',
name: 'pages.mypage2',
component: () => import('@/views/user/mypagebacheca/mypagebacheca.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 130,
path: '/myservice/:idSkill',
materialIcon: '',
name: 'pages.myservice2',
component: () => import('@/views/user/myservice/myservice.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 135,
path: '/myhosps/:idHosp',
materialIcon: '',
name: 'pages.myhosps2',
component: () => import('@/views/user/mypagehosp/mypagehosp.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 132,
path: '/mygood/:idGood',
materialIcon: '',
name: 'pages.mygood2',
component: () => import('@/views/user/mypagegood/mypagegood.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 150,
path: '/fundraising',
materialIcon: 'fas fa-hand-holding-heart',
name: 'pages.fundraising',
component: () => import('@src/root/fundraising/fundraising.vue'),
inmenu: true,
infooter: true,
},
{ {
active: true, active: true,
order: 400, order: 400,
@@ -573,12 +710,34 @@ const baseroutes: IListRoutes[] = [
infooter: true infooter: true
}, },
{ {
active: functionality.ENABLE_REGISTRATION, active: functionality.ENABLE_REGISTRATION && functionality.ENABLE_REG_NEED_TELEGRAM,
order: 1000,
path: '/signup/:invited/:usernameteleg/:idteleg',
materialIcon: 'how_to_reg',
name: 'pages.SignUp',
component: () => import('@/views/login/signup/signup.vue'),
inmenu: false,
infooter: false,
separator: false
},
/*{
active: functionality.ENABLE_REGISTRATION && !functionality.ENABLE_REG_NEED_TELEGRAM,
order: 1000, order: 1000,
path: '/signup', path: '/signup',
materialIcon: 'how_to_reg', materialIcon: 'how_to_reg',
name: 'pages.SignUp', name: 'pages.SignUp',
component: () => import('@/views/login/signup_noteleg/signup_noteleg.vue'), component: () => import('@/views/login/signup/signup_noteleg.vue'),
inmenu: false,
infooter: false,
separator: false
},*/
{
active: true,
order: 1001,
path: '/signup/:invited',
materialIcon: 'how_to_reg',
name: 'pages.SignUp2',
component: () => import('@/views/login/signup/signup.vue'),
inmenu: false, inmenu: false,
infooter: false, infooter: false,
separator: false separator: false
@@ -637,20 +796,10 @@ const baseroutes: IListRoutes[] = [
active: true, active: true,
path: '/separator', path: '/separator',
name: 'separator', name: 'separator',
order: 1010, order: 35,
isseparator: true, isseparator: true,
inmenu: true, inmenu: true,
}, },
{
active: true,
order: 70,
path: '/chisiamo',
materialIcon: 'event',
name: 'pages.chisiamo',
component: () => import('@/rootgen/operators/operators.vue'),
inmenu: true,
infooter: true
},
{ {
active: true, active: true,
order: 80, order: 80,
@@ -659,8 +808,8 @@ const baseroutes: IListRoutes[] = [
name: 'pages.calendarioeventi', name: 'pages.calendarioeventi',
component: () => import('@/root/calendarioeventi/calendarioeventi.vue'), component: () => import('@/root/calendarioeventi/calendarioeventi.vue'),
extraclass: 'isCalendar', extraclass: 'isCalendar',
inmenu: true, inmenu: false,
infooter: true infooter: false
}, },
{ {
active: true, active: true,
@@ -692,24 +841,8 @@ const baseroutes: IListRoutes[] = [
inmenu: false, inmenu: false,
infooter: false infooter: false
}, },
{
active: true,
order: 130,
path: '/admin/eventlist',
materialIcon: 'fas fa-calendar-plus',
name: 'otherpages.admin.eventlist',
component: () => import('@/rootgen/admin/eventlist/eventlist.vue'),
inmenu: true,
infooter: true
},
] ]
export function firstimagehome() {
let img = 'images/foto1.jpg'
return img
}
const arrLangUsed = [ const arrLangUsed = [
'it', 'it',
@@ -717,6 +850,12 @@ const arrLangUsed = [
// 'es', // 'es',
] ]
export function firstimagehome() {
let img = 'statics/images/background.jpg'
return img
}
const lang_available: ILang[] = [ const lang_available: ILang[] = [
{ {
label: 'Italiano', icon: 'fa-flag-it', value: 'it', image: '../images/it.png', short: 'IT', label: 'Italiano', icon: 'fa-flag-it', value: 'it', image: '../images/it.png', short: 'IT',
@@ -739,7 +878,6 @@ export const preloadedimages = []
export const routes = baseroutes export const routes = baseroutes
export const static_data = { export const static_data = {
baseroutes, baseroutes,
routes, routes,

View File

@@ -310,6 +310,7 @@ export interface IGlobalState {
provinces: IProvince[], provinces: IProvince[],
datastat?: INotData datastat?: INotData
site?: ISites, site?: ISites,
mygroups: IMyGroup[],
} }
export interface IMenuList { export interface IMenuList {
@@ -478,6 +479,7 @@ export interface IParamDialog {
export interface IFunctionality { export interface IFunctionality {
PWA?: boolean PWA?: boolean
ENABLE_REGISTRATION?: boolean ENABLE_REGISTRATION?: boolean
ENABLE_REG_NEED_TELEGRAM?: boolean
SHOW_REG_BUTTON?: boolean SHOW_REG_BUTTON?: boolean
SHOW_PROFILE?: boolean SHOW_PROFILE?: boolean
SHOW_USER_MENU?: boolean SHOW_USER_MENU?: boolean
@@ -782,7 +784,7 @@ export interface IProvince {
link_grp: string link_grp: string
} }
export interface IMySkill { export interface IMySkill extends IMyMain{
_id: number _id: number
idSector: number idSector: number
idSkill: number idSkill: number
@@ -803,7 +805,11 @@ export interface IMySkill {
username?: string username?: string
} }
export interface IMyGoods { export interface IMyMain {
pub_to_share?: number
}
export interface IMyGoods extends IMyMain{
_id: number _id: number
idSector: number idSector: number
idSkill: number idSkill: number
@@ -823,7 +829,7 @@ export interface IMyGoods {
date_updated?: Date, date_updated?: Date,
} }
export interface IMyBacheca { export interface IMyBacheca extends IMyMain {
_id: number _id: number
idSector: number idSector: number
idSkill: number idSkill: number
@@ -850,7 +856,7 @@ export interface IAccomodation {
num: number num: number
} }
export interface IMyHosp { export interface IMyHosp extends IMyMain {
_id: number _id: number
visibile: boolean visibile: boolean
typeHosp: number typeHosp: number

View File

@@ -53,9 +53,9 @@
<CUserNonVerif></CUserNonVerif> <CUserNonVerif></CUserNonVerif>
</div> </div>
<div v-else> <div v-else>
<CMainView></CMainView>
<CDashboard></CDashboard> <CDashboard></CDashboard>
<CMainView></CMainView>
<div class="row justify-evenly items-center q-pa-sm q-ma-sm"> <div class="row justify-evenly items-center q-pa-sm q-ma-sm">
<q-btn <q-btn

View File

@@ -865,6 +865,7 @@ const msg_it = {
skill: { skill: {
name: 'Categoria', name: 'Categoria',
city: 'Comune', city: 'Comune',
pub_to_share: 'Visibilità',
photos: 'Foto', photos: 'Foto',
note: 'Note', note: 'Note',
short_node: 'Breve Nota', short_node: 'Breve Nota',
@@ -908,7 +909,7 @@ const msg_it = {
find_people: 'Cerca Persone', find_people: 'Cerca Persone',
find_group: 'Cerca Gruppo', find_group: 'Cerca Gruppo',
manage_my_groups: 'Gruppi che Gestisco', manage_my_groups: 'Gruppi che Gestisco',
follow_groups: 'Gruppi che Seguo', follow_groups: 'Miei Gruppi (di cui fai parte)',
create_group: 'Crea Gruppo', create_group: 'Crea Gruppo',
friends: 'Amici', friends: 'Amici',
bacheca: 'Bacheca', bacheca: 'Bacheca',

View File

@@ -116,15 +116,27 @@ export const costanti = {
disable: true, disable: true,
small: true, small: true,
}, },
{
visible: true,
title: 'Sostieni il Progetto',
to: '/fundraising',
icon: 'fas fa-hand-holding-heart',
color: 'purple',
hint: '',
disable: false,
small: false,
link: true,
},
{ {
visible: true, visible: true,
title: 'Help (Faq)', title: 'Help (Faq)',
to: '/faq', to: '/faq',
icon: 'fas fa-users', icon: 'fas fa-question',
color: 'green-6', color: 'yellow',
hint: '', hint: '',
disable: false, disable: false,
small: true, small: true,
link: true,
}, },
{ {
visible: false, visible: false,
@@ -136,20 +148,10 @@ export const costanti = {
disable: true, disable: true,
small: true, small: true,
}, },
{
visible: true,
title: 'Per sostienere il Progetto?',
to: '/fundraising',
icon: 'fas fa-hand-holding',
color: 'blue-6',
hint: '',
disable: false,
small: false,
},
{ {
visible: false, visible: false,
title: 'Gruppi', title: 'Gruppi',
to: '', to: '/groups',
table: 'mygroups', table: 'mygroups',
icon: 'fas fa-users', icon: 'fas fa-users',
color: 'blue-6', color: 'blue-6',
@@ -186,6 +188,7 @@ export const costanti = {
ASK_SENT_GROUP: 16, ASK_SENT_GROUP: 16,
FIND_GROUP: 20, FIND_GROUP: 20,
MY_GROUPS: 21, MY_GROUPS: 21,
USER_GROUPS: 22,
CREATE_GROUP: 30, CREATE_GROUP: 30,
MANAGE_GROUPS: 31, MANAGE_GROUPS: 31,

View File

@@ -189,7 +189,7 @@ export const colmybot = [
name: 'visibility', name: 'visibility',
label_trans: 'bot.visibility', label_trans: 'bot.visibility',
fieldtype: costanti.FieldType.binary, fieldtype: costanti.FieldType.binary,
jointable: 'visibility' jointable: 'visibility',
}), }),
AddCol({ name: 'date_updated', label_trans: 'bot.date_updated', fieldtype: costanti.FieldType.date }), AddCol({ name: 'date_updated', label_trans: 'bot.date_updated', fieldtype: costanti.FieldType.date }),
AddCol(DeleteRec), AddCol(DeleteRec),
@@ -659,6 +659,14 @@ export const colmyGoods = [
remote_field: 'comune', remote_field: 'comune',
required: true, required: true,
}), }),
AddCol({
name: 'pub_to_share',
label_trans: 'skill.pub_to_share',
fieldtype: costanti.FieldType.select,
jointable: 'pub_to_share',
icon: 'fas fa-users',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
}),
AddCol({ AddCol({
name: 'adType', name: 'adType',
label_trans: 'adTypes.name', label_trans: 'adTypes.name',
@@ -828,6 +836,14 @@ export const colmySkills = [
remote_field: 'comune', remote_field: 'comune',
required: true, required: true,
}), }),
AddCol({
name: 'pub_to_share',
label_trans: 'skill.pub_to_share',
fieldtype: costanti.FieldType.select,
jointable: 'pub_to_share',
icon: 'fas fa-users',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
}),
AddCol({ AddCol({
name: 'adType', name: 'adType',
label_trans: 'adTypes.name', label_trans: 'adTypes.name',
@@ -1030,6 +1046,14 @@ export const colmyHosp = [
sortable: false, sortable: false,
required: true, required: true,
}), }),
AddCol({
name: 'pub_to_share',
label_trans: 'skill.pub_to_share',
fieldtype: costanti.FieldType.select,
jointable: 'pub_to_share',
icon: 'fas fa-users',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
}),
AddCol({ AddCol({
name: 'idContribType', name: 'idContribType',
label_trans: 'contribtype.name', label_trans: 'contribtype.name',
@@ -1131,6 +1155,13 @@ export const colmyBachecas = [
sortable: false, sortable: false,
required: true, required: true,
}), }),
AddCol({
name: 'pub_to_share',
label_trans: 'skill.pub_to_share',
fieldtype: costanti.FieldType.select,
icon: 'fas fa-users',
jointable: 'pub_to_share',
}),
AddCol( AddCol(
{ {
name: 'dateTimeStart', name: 'dateTimeStart',
@@ -1896,6 +1927,7 @@ export const colTableUsers = [
name: 'profile.myshares', name: 'profile.myshares',
field: 'profile', field: 'profile',
subfield: 'myshares', subfield: 'myshares',
icon: 'fas fa-users',
label_trans: 'reg.myshares', label_trans: 'reg.myshares',
}), }),
AddCol({ AddCol({
@@ -2323,6 +2355,7 @@ export const colTableSubCashCategory = [
] ]
export const colTableCircuit = [ export const colTableCircuit = [
AddCol({ name: 'Num', label_trans: 'circuit.num', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'name', label_trans: 'circuit.name' }), AddCol({ name: 'name', label_trans: 'circuit.name' }),
AddCol({ name: 'subname', label_trans: 'circuit.subname' }), AddCol({ name: 'subname', label_trans: 'circuit.subname' }),
AddCol({ name: 'descr', label_trans: 'circuit.descr' }), AddCol({ name: 'descr', label_trans: 'circuit.descr' }),
@@ -2705,6 +2738,15 @@ export const fieldsTable = {
colicon: 'icon', colicon: 'icon',
noshow: true, noshow: true,
}, },
{
value: 'pub_to_share',
label: 'Visibilità',
columns: colTablePermission,
colkey: 'value',
collabel: 'label',
colicon: 'icon',
noshow: true,
},
{ {
value: 'visibilGroup', value: 'visibilGroup',
label: 'Visibilità', label: 'Visibilità',

View File

@@ -5027,7 +5027,7 @@ export const tools = {
setCmd($q: any, cmd: number, username: string, value: any, dest: string) { setCmd($q: any, cmd: number, username: string, value: any, dest: string) {
console.log('setcmd', cmd) console.log('setcmd', cmd)
if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP) { if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP) {
tools.removeFromMyGroups($q, username, dest) tools.removeFromMyGroups($q, username, dest, t('db.domanda_exit_fromgroup', { username }))
} else if (cmd === shared_consts.GROUPSCMD.BLOCK_GROUP) { } else if (cmd === shared_consts.GROUPSCMD.BLOCK_GROUP) {
tools.blockGroup($q, username, dest) tools.blockGroup($q, username, dest)
} else if (cmd === shared_consts.GROUPSCMD.SETGROUP) { } else if (cmd === shared_consts.GROUPSCMD.SETGROUP) {
@@ -5144,17 +5144,23 @@ export const tools = {
getSelectionByTable(table: string, mydef: any) { getSelectionByTable(table: string, mydef: any) {
const arrtable = ['sectors', 'statusSkills', 'contribtypes', 'adtypes', 'sectorgoods', 'otherfilters', 'shippings'] const arrtable = ['sectors', 'statusSkills', 'contribtypes', 'adtypes', 'sectorgoods', 'otherfilters', 'shippings', 'pub_to_share']
const arrmultisel_tab = ['skills', 'goods'] const arrmultisel_tab = ['skills', 'goods']
const arrmultisel = [ const arrmultisel = [
{ table: 'skills', join: 'sectors' }, { table: 'skills', join: 'sectors' },
{ table: 'goods', join: 'sectorgoods' } { table: 'goods', join: 'sectorgoods' }
] ]
let convertiint = false
if (table === 'pub_to_share') {
convertiint = true
}
let ris = mydef let ris = mydef
if (arrtable.includes(table)) { if (arrtable.includes(table)) {
ris = tools.getCookie(tools.COOK_SEARCH + table, mydef) ris = tools.getCookie(tools.COOK_SEARCH + table, mydef, convertiint)
} else if (arrmultisel_tab.includes(table)) { } else if (arrmultisel_tab.includes(table)) {
const rec = arrmultisel.find((rec) => rec.table === table) const rec = arrmultisel.find((rec) => rec.table === table)
if (rec) { if (rec) {
@@ -5180,6 +5186,7 @@ export const tools = {
idCity: this.getCitySel(), idCity: this.getCitySel(),
NumLevel: 0, NumLevel: 0,
adType: tools.getSelectionByTable('adtypes', costanti.AdType.OFFRO), adType: tools.getSelectionByTable('adtypes', costanti.AdType.OFFRO),
pub_to_share: tools.getSelectionByTable('pub_to_share', shared_consts.PUBTOSHARE.ALL),
photos: [], photos: [],
note: '', note: '',
//**ADDFIELD_MYSKILL //**ADDFIELD_MYSKILL
@@ -5210,6 +5217,7 @@ export const tools = {
adType: tools.getSelectionByTable('adtypes', costanti.AdType.OFFRO), adType: tools.getSelectionByTable('adtypes', costanti.AdType.OFFRO),
idShipping: tools.getSelectionByTable('shippings', []), idShipping: tools.getSelectionByTable('shippings', []),
otherfilters: tools.getSelectionByTable('otherfilters', []), otherfilters: tools.getSelectionByTable('otherfilters', []),
pub_to_share: tools.getSelectionByTable('pub_to_share', shared_consts.PUBTOSHARE.ALL),
photos: [], photos: [],
note: '', note: '',
//**ADDFIELD_MYSKILL //**ADDFIELD_MYSKILL
@@ -5245,6 +5253,7 @@ export const tools = {
idCity: this.getCitySel(), idCity: this.getCitySel(),
NumLevel: 0, NumLevel: 0,
adType: tools.getSelectionByTable('adtypes', costanti.AdType.OFFRO), adType: tools.getSelectionByTable('adtypes', costanti.AdType.OFFRO),
pub_to_share: tools.getSelectionByTable('pub_to_share', shared_consts.PUBTOSHARE.ALL),
photos: [], photos: [],
note: '', note: '',
//**ADDFIELD_MYBACHECAS //**ADDFIELD_MYBACHECAS
@@ -5261,6 +5270,7 @@ export const tools = {
typeHosp: tools.getSelectionByTable(toolsext.TABTYPEHOSP, 2), typeHosp: tools.getSelectionByTable(toolsext.TABTYPEHOSP, 2),
idContribType: tools.getSelectionByTable('contribtypes', []), idContribType: tools.getSelectionByTable('contribtypes', []),
idCity: this.getCitySel(), idCity: this.getCitySel(),
pub_to_share: tools.getSelectionByTable('pub_to_share', shared_consts.PUBTOSHARE.ALL),
photos: [], photos: [],
descr: '', descr: '',
note: '', note: '',
@@ -5361,14 +5371,18 @@ export const tools = {
}, },
getbackgroundGradient(color: string, degree: number) { getbackgroundGradient(color: string, degree: number) {
const mycol = tools.colourNameToHex(color) if (color !== '-1') {
const arrcol = color.split('-') const mycol = tools.colourNameToHex(color)
let newcol = arrcol[0] + '-4' const arrcol = color.split('-')
const mycolchiaro = tools.colourNameToHex(newcol) let newcol = arrcol[0] + '-4'
const mycolchiaro = tools.colourNameToHex(newcol)
return 'background: ' + mycol + return 'background: ' + mycol +
' background: -webkit-linear-gradient(' + degree + 'deg, ' + mycol + ', ' + mycolchiaro + ') !important; ' + ' background: -webkit-linear-gradient(' + degree + 'deg, ' + mycol + ', ' + mycolchiaro + ') !important; ' +
' background: linear-gradient(' + degree + 'deg, ' + mycol + ', ' + mycolchiaro + ') !important;' ' background: linear-gradient(' + degree + 'deg, ' + mycol + ', ' + mycolchiaro + ') !important;'
} else {
return ''
}
}, },
getCurrentUrl() { getCurrentUrl() {
@@ -5435,6 +5449,27 @@ export const tools = {
return this.getConfSiteOptionEnabled(shared_consts.ConfSite.Need_Aportador_On_DataReg_To_Verify_Reg) return this.getConfSiteOptionEnabled(shared_consts.ConfSite.Need_Aportador_On_DataReg_To_Verify_Reg)
}, },
async loadGroupsByUsername(username: string) {
const userStore = useUserStore()
// Carica il profilo di quest'utente
if (username) {
await userStore.loadGroups(username).then((ris) => {
// console.log('ris', ris)
if (ris) {
userStore.my.profile.mygroups = ris.mygroups ? ris.mygroups : []
userStore.my.profile.list_usersgroup = ris.listUsersGroup ? ris.listUsersGroup : []
userStore.groups = ris.listgroups ? ris.listgroups : []
userStore.my.profile.asked_groups = ris.listSentRequestGroups ? ris.listSentRequestGroups : []
return [{ userId: userStore.my._id }]
}
})
}
return []
},
// getLocale() { // getLocale() {
// if (navigator.languages && navigator.languages.length > 0) { // if (navigator.languages && navigator.languages.length > 0) {

View File

@@ -274,6 +274,11 @@ export const useUserStore = defineStore('UserStore', {
// return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador! // return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador!
}, },
isOldRegNotFinished(): boolean {
return (!this.my.profile.teleg_id || this.my.profile.teleg_id <= 0) || !this.isUsernameTelegOk()
// return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador!
},
isTelegOk(): boolean { isTelegOk(): boolean {
return this.my.profile.teleg_id! > 0 return this.my.profile.teleg_id! > 0
// return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador! // return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador!

View File

@@ -134,6 +134,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
}, },
}, },
provinces: [], provinces: [],
mygroups: [],
}), }),
getters: { getters: {
@@ -1325,6 +1326,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
this.provinces = (res.data.provinces) ? [...res.data.provinces] : [] this.provinces = (res.data.provinces) ? [...res.data.provinces] : []
this.catgrps = (res.data.catgrps) ? [...res.data.catgrps] : [] this.catgrps = (res.data.catgrps) ? [...res.data.catgrps] : []
this.site = (res.data.site) ? res.data.site : {} this.site = (res.data.site) ? res.data.site : {}
this.mygroups = (res.data.mygroups) ? [...res.data.mygroups] : []
this.adtypes = (res.data.adtypes) ? [...res.data.adtypes] : [] this.adtypes = (res.data.adtypes) ? [...res.data.adtypes] : []
this.adtypegoods = (res.data.adtypegoods) ? [...res.data.adtypegoods] : [] this.adtypegoods = (res.data.adtypegoods) ? [...res.data.adtypegoods] : []
@@ -1559,6 +1561,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
else if (table === 'confsite_opt') myarr = tools.ConfSiteOpt else if (table === 'confsite_opt') myarr = tools.ConfSiteOpt
else if (table === 'bottype') myarr = shared_consts.BotType else if (table === 'bottype') myarr = shared_consts.BotType
else if (table === 'visibility') myarr = shared_consts.Visibility else if (table === 'visibility') myarr = shared_consts.Visibility
else if (table === 'pub_to_share') myarr = shared_consts.Pub_to_Share
else if (table === 'visibilGroup') myarr = shared_consts.VisibilGroup else if (table === 'visibilGroup') myarr = shared_consts.VisibilGroup
else if (table === 'lang') myarr = shared_consts.Lang else if (table === 'lang') myarr = shared_consts.Lang
else if (table === 'regions') myarr = shared_consts.Regions else if (table === 'regions') myarr = shared_consts.Regions

View File

@@ -7,7 +7,7 @@ import { useRoute } from 'vue-router'
import { tools } from '@store/Modules/tools' import { tools } from '@store/Modules/tools'
export default defineComponent({ export default defineComponent({
name: 'SignUp', name: 'SignUp_noteleg',
components: { CSignUp }, components: { CSignUp },
props: {}, props: {},
setup() { setup() {

View File

@@ -144,6 +144,7 @@ export default defineComponent({
lk_proj: { lk_proj: {
'username': 1, 'username': 1,
'profile.img': 1, 'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
}, },

View File

@@ -6,6 +6,7 @@ import { CLabel } from '@/components/CLabel'
import { CCopyBtn } from '@/components/CCopyBtn' import { CCopyBtn } from '@/components/CCopyBtn'
import { CSkill } from '@/components/CSkill' import { CSkill } from '@/components/CSkill'
import { CDateTime } from '@/components/CDateTime' import { CDateTime } from '@/components/CDateTime'
import { CMyGroup } from '@/components/CMyGroup'
import { CUserNonVerif } from '@/components/CUserNonVerif' import { CUserNonVerif } from '@/components/CUserNonVerif'
import { tools } from '@store/Modules/tools' import { tools } from '@store/Modules/tools'
import { computed, defineComponent, onMounted, ref, watch } from 'vue' import { computed, defineComponent, onMounted, ref, watch } from 'vue'
@@ -16,7 +17,7 @@ import { useI18n } from '@/boot/i18n'
import { toolsext } from '@store/Modules/toolsext' import { toolsext } from '@store/Modules/toolsext'
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar'
import { costanti } from '@costanti' import { costanti } from '@costanti'
import { IUserFields } from 'model' import { IMyGroup, IUserFields } from 'model'
import { shared_consts } from '@/common/shared_vuejs' import { shared_consts } from '@/common/shared_vuejs'
import { static_data } from '@/db/static_data' import { static_data } from '@/db/static_data'
import { fieldsTable } from '@store/Modules/fieldsTable' import { fieldsTable } from '@store/Modules/fieldsTable'
@@ -25,10 +26,14 @@ import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({ export default defineComponent({
name: 'myprofile', name: 'myprofile',
components: { CProfile, CTitleBanner, CMyFieldDb, CSkill, CDateTime, CCopyBtn, CUserNonVerif, CMyFieldRec, CLabel }, components: {
CProfile, CTitleBanner, CMyFieldDb, CSkill, CDateTime, CCopyBtn, CUserNonVerif, CMyFieldRec,
CMyGroup, CLabel
},
props: {}, props: {},
setup() { setup() {
const userStore = useUserStore() const userStore = useUserStore()
const globalStore = useGlobalStore()
const $route = useRoute() const $route = useRoute()
const $q = useQuasar() const $q = useQuasar()
const { t } = useI18n() const { t } = useI18n()
@@ -41,8 +46,9 @@ export default defineComponent({
const filtroutente = ref(<any[]>[]) const filtroutente = ref(<any[]>[])
const showPic = ref(false) const showPic = ref(false)
const caricato = ref(false)
const myuser = ref(<IUserFields>{}) const myuser = ref(<IUserFields | null>null)
const actualcard = ref('mygoods') const actualcard = ref('mygoods')
@@ -50,6 +56,8 @@ export default defineComponent({
return costanti.MAINCARDS.filter((rec: any) => rec.table) return costanti.MAINCARDS.filter((rec: any) => rec.table)
}) })
const listgroupsfiltered = ref(<IMyGroup[]>[])
function profile() { function profile() {
return userStore.my.profile return userStore.my.profile
@@ -59,27 +67,44 @@ export default defineComponent({
return userStore.my.username return userStore.my.username
} }
function loadProfile() { async function loadProfile() {
// Carica il profilo di quest'utente // Carica il profilo di quest'utente
if (username.value) { if (username.value) {
userStore.loadUserProfile(username.value).then((ris) => { await userStore.loadUserProfile(username.value).then((ris) => {
myuser.value = ris myuser.value = ris
filtroutente.value = [{ userId: myuser.value._id }] if (myuser.value) {
filtroutente.value = [{ userId: myuser.value._id }]
try {
listgroupsfiltered.value = globalStore.mygroups.filter((grp: IMyGroup) => myuser.value!.profile.mygroups.findIndex((rec: IMyGroup) => rec.groupname === grp.groupname) >= 0)
} catch (e) {
listgroupsfiltered.value = []
}
}
}) })
} }
caricato.value = true
} }
watch(() => username.value, (to: any, from: any) => { watch(() => username.value, (to: any, from: any) => {
loadProfile() loadProfile()
}) })
watch(() => actualcard.value, (to: any, from: any) => {
loadProfile()
})
function mounted() { function mounted() {
loadProfile() loadProfile()
} }
function getImgUser() { function getImgUser() {
return userStore.getImgByProfile(myuser.value) if (myuser.value)
return userStore.getImgByProfile(myuser.value)
else
return ''
} }
function checkifShow(col: string) { function checkifShow(col: string) {
@@ -89,22 +114,30 @@ export default defineComponent({
function getLinkUserTelegram() { function getLinkUserTelegram() {
if (!!myuser.value.profile.username_telegram) { if (myuser.value) {
return 'https://t.me/' + myuser.value.profile.username_telegram if (!!myuser.value.profile.username_telegram) {
return 'https://t.me/' + myuser.value.profile.username_telegram
}
} else {
return ''
} }
} }
function getLinkWebSite() { function getLinkWebSite() {
let site = myuser.value.profile.website! if (myuser.value) {
if (site) { let site = myuser.value.profile.website!
if (!site.startsWith('http')) { if (site) {
site = 'https://' + site if (!site.startsWith('http')) {
site = 'https://' + site
}
} }
return site
} else {
return ''
} }
return site
} }
function isMyRecord(username: string){ function isMyRecord(username: string) {
return username === userStore.my.username return username === userStore.my.username
} }
@@ -133,6 +166,8 @@ export default defineComponent({
fieldsTable, fieldsTable,
mycards, mycards,
actualcard, actualcard,
caricato,
listgroupsfiltered,
} }
} }
}) })

View File

@@ -1,26 +1,48 @@
<template> <template>
<div v-if="tools.isUserOk() || (tools.isLogged() && username === tools.getAportadorSolidario())"> <div v-if="!caricato" class="fit column no-wrap justify-evenly items-center content-start">
<div class="q-gutter-sm q-pa-sm q-pb-md"> <q-skeleton type="QAvatar" size="140px" height="140px" animation="fade"/>
<div v-if="myuser.date_reg" class="fit column no-wrap justify-evenly items-center content-start"> <q-card flat bordered style="width: 250px">
<div class="text-h6">
<q-skeleton :animation="animation"/>
</div>
<div class="col-12 text-h7 text-grey text-center">
{{ username }}
</div>
<div class="col-12 text-h7">
<q-skeleton :animation="animation"/>
</div>
<div class=""> <div class="col-12 text-h8 q-mt-sm">
<q-avatar size="140px"> <q-skeleton :animation="animation"/>
<q-img :src="getImgUser()" :alt="username" img-class="imgprofile" height="140px" @click="showPic = true"/> </div>
</q-avatar> <div class="col-12 text-h8 q-mt-sm">
</div> <q-skeleton :animation="animation"/>
</div>
</q-card>
</div>
<div v-else-if="(tools.isUserOk() || (tools.isLogged()))">
<div v-if="myuser">
<div class="q-gutter-sm q-pa-sm q-pb-md">
<div v-if="myuser && myuser.date_reg" class="fit column no-wrap justify-evenly items-center content-start">
<div v-if="static_data.functionality.SHOW_NAMESURNAME"> <div class="">
<div class="text-h6"> <q-avatar size="140px">
<span v-if="checkifShow('name')"> {{ myuser.name }}</span> <span v-if="checkifShow('surname')">{{ <q-img :src="getImgUser()" :alt="username" img-class="imgprofile" height="140px" @click="showPic = true"/>
myuser.surname </q-avatar>
}}</span>
</div> </div>
</div>
<div class="col-12 text-h7 text-blue text-shadow-2">
{{ myuser.username }}
</div>
<div class="col-12 text-h7"> <div v-if="static_data.functionality.SHOW_NAMESURNAME">
<div class="text-h6">
<span v-if="checkifShow('name')"> {{ myuser.name }}</span> <span v-if="checkifShow('surname')">{{
myuser.surname
}}</span>
</div>
</div>
<div class="col-12 text-h7 text-blue text-shadow-2">
{{ myuser.username }}
</div>
<div class="col-12 text-h7">
<span v-if="myuser.profile && myuser.profile.born_city_id"> <span v-if="myuser.profile && myuser.profile.born_city_id">
<CMyFieldRec <CMyFieldRec
title="" title=""
@@ -35,212 +57,208 @@
{{ myuser.profile.born_city_str }}</span> <span {{ myuser.profile.born_city_str }}</span> <span
v-if="myuser.profile && myuser.profile.nationality && myuser.profile.nationality !== 'Italia'">({{ v-if="myuser.profile && myuser.profile.nationality && myuser.profile.nationality !== 'Italia'">({{
myuser.profile.nationality myuser.profile.nationality
}})</span> }})</span>
</div> </div>
<div v-if="myuser._id" class="col-12 text-h8 q-mt-sm"> <div v-if="myuser._id" class="col-12 text-h8 q-mt-sm">
<span v-if="myuser.profile.qualifica"> <span v-if="myuser.profile.qualifica">
<em><span class="qualifica">{{ myuser.profile.qualifica }}</span></em> <em><span class="qualifica">{{ myuser.profile.qualifica }}</span></em>
</span> </span>
</div> </div>
<div v-if="myuser._id" class="col-12 text-h8 q-mt-sm"> <div v-if="myuser._id" class="col-12 text-h8 q-mt-sm">
{{ myuser.profile.biografia }} {{ myuser.profile.biografia }}
</div>
<div v-if="!isMyRecord(myuser.username)">
<q-btn
v-if="userStore.IsReqFriendByUsername(myuser.username)"
icon="fas fa-user-plus"
color="primary" :label="$t('friends.accept_friend')"
@click="tools.addToMyFriends($q, userStore.my.username, myuser.username)"
/>
<div v-else>
<q-btn
v-if="!userStore.IsMyFriendByUsername(myuser.username) && !userStore.IsAskedFriendByUsername(myuser.username)"
icon="fas fa-user-plus"
color="primary" :label="$t('friends.ask_friend')"
@click="tools.setRequestFriendship($q, userStore.my.username, myuser.username, true)"
/>
</div> </div>
<q-btn v-if="userStore.IsMyFriendByUsername(myuser.username)" rounded icon="fas fa-ellipsis-h"> <div v-if="!isMyRecord(myuser.username)">
<q-menu> <q-btn
<q-list v-if="true" style="min-width: 150px"> v-if="userStore.IsReqFriendByUsername(myuser.username)"
<q-item clickable icon="fas fa-user-plus"
icon="fas fa-user-minus" color="primary" :label="$t('friends.accept_friend')"
v-close-popup @click="tools.removeFromMyFriends($q, userStore.my.username, myuser.username)"> @click="tools.addToMyFriends($q, userStore.my.username, myuser.username)"
<q-item-section>{{ $t('friends.remove_from_myfriends') }}</q-item-section> />
</q-item> <div v-else>
<q-item clickable <q-btn
icon="fas fa-ban" v-if="!userStore.IsMyFriendByUsername(myuser.username) && !userStore.IsAskedFriendByUsername(myuser.username)"
v-close-popup @click="tools.blockUser($q, userStore.my.username, myuser.username)"> icon="fas fa-user-plus"
<q-item-section>{{ $t('friends.block_user') }}</q-item-section> color="primary" :label="$t('friends.ask_friend')"
</q-item> @click="tools.setRequestFriendship($q, userStore.my.username, myuser.username, true)"
</q-list> />
</q-menu> </div>
<q-btn v-if="userStore.IsMyFriendByUsername(myuser.username)" rounded icon="fas fa-ellipsis-h">
<q-menu>
<q-list v-if="true" style="min-width: 150px">
<q-item clickable
icon="fas fa-user-minus"
v-close-popup @click="tools.removeFromMyFriends($q, userStore.my.username, myuser.username)">
<q-item-section>{{ $t('friends.remove_from_myfriends') }}</q-item-section>
</q-item>
<q-item clickable
icon="fas fa-ban"
v-close-popup @click="tools.blockUser($q, userStore.my.username, myuser.username)">
<q-item-section>{{ $t('friends.block_user') }}</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
<q-btn
v-if="userStore.IsAskedFriendByUsername(myuser.username) && !userStore.IsMyFriendByUsername(myuser.username)"
icon="fas fa-user-minus"
:label="$t('friends.cancel_ask_friend_short')"
@click="tools.cancelReqFriends($q, userStore.my.username, myuser.username)"
/>
</div>
<q-btn
v-if="myuser.username === myusername()" icon="fas fa-pencil-alt"
color="blue"
size="md"
:label="$t('otherpages.modifprof')"
to="/editprofile">
</q-btn> </q-btn>
<q-btn <div class="myrow justify-evenly items-center q-pa-sm q-ma-sm">
v-if="userStore.IsAskedFriendByUsername(myuser.username) && !userStore.IsMyFriendByUsername(myuser.username)"
icon="fas fa-user-minus"
:label="$t('friends.cancel_ask_friend_short')"
@click="tools.cancelReqFriends($q, userStore.my.username, myuser.username)"
/>
</div>
<q-btn
v-if="myuser.username === myusername()" icon="fas fa-pencil-alt"
color="blue"
size="md"
:label="$t('otherpages.modifprof')"
to="/editprofile">
</q-btn>
<div class="myrow justify-evenly items-center q-pa-sm q-ma-sm">
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<q-btn
v-if="getLinkUserTelegram()" icon="fab fa-telegram"
color="blue" type="a"
size="md"
rounded
:label="$t('msgs.telegrammsg')"
:href="getLinkUserTelegram()" target="__blank">
</q-btn>
</div>
<div v-if="myuser._id" class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<q-btn
v-if="getLinkWebSite()" icon="fas fa-globe"
color="blue" type="a"
size="md"
rounded
:label="$t('reg.website')"
:href="getLinkWebSite()" target="__blank">
</q-btn>
</div>
</div>
<div class="myrow justify-evenly items-center q-pa-sm q-ma-sm">
<div v-if="myuser._id" class="col-12">
<q-btn
v-if="myuser.username === myusername()"
icon="fas fa-share-alt"
color="blue"
size="md"
rounded
:label="$t('reg.link_reg_and_msg')"
@click="tools.sendMsgTelegramCmd($q, $t, shared_consts.MsgTeleg.SHARE_MSGREG)">
</q-btn>
</div>
</div>
</div>
<div v-else class="fit column no-wrap justify-evenly items-center content-start">
<q-skeleton type="QAvatar" size="140px" height="140px" animation="fade"/>
<q-card flat bordered style="width: 250px">
<div class="text-h6">
<q-skeleton :animation="animation"/>
</div>
<div class="col-12 text-h7 text-grey text-center">
{{ username }}
</div>
<div class="col-12 text-h7">
<q-skeleton :animation="animation"/>
</div>
<div class="col-12 text-h8 q-mt-sm">
<q-skeleton :animation="animation"/>
</div>
<div class="col-12 text-h8 q-mt-sm">
<q-skeleton :animation="animation"/>
</div>
</q-card>
</div>
<CTitleBanner
v-if="static_data.functionality.SHOW_COMPETENZE"
class="" title="Competenze e Talenti" bgcolor="bg-positive" clcolor="text-white"
myclass="myshad" :canopen="true">
<q-tabs v-model="actualcard" class="text-blue">
<q-tab v-for="(card, ind) of mycards" :key="ind" :name="card.table" :label="card.title">
</q-tab>
</q-tabs>
<q-tab-panels v-model="actualcard" animated>
<q-tab-panel v-for="(card, ind) of mycards" :key="ind" :name="card.table">
<CSkill
:table="card.table"
:filtercustom="filtroutente"
:butt_modif_new="isMyRecord(myuser.username)"
/>
</q-tab-panel>
</q-tab-panels>
</CTitleBanner>
<div v-if="myuser._id && (userStore.IsMyFriendByUsername(myuser.username) || isMyRecord(myuser.username))">
<CTitleBanner
class="" :title="$t('dashboard.info')" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
<div v-if="myuser.profile" class="fit column no-wrap justify-evenly content-start">
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12"> <div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<q-btn
v-if="getLinkUserTelegram()" icon="fab fa-telegram"
color="blue" type="a"
size="md"
rounded
:label="$t('msgs.telegrammsg')"
:href="getLinkUserTelegram()" target="__blank">
</q-btn>
<CDateTime </div>
v-if="checkifShow('profile.dateofbirth') && !!myuser.profile.dateofbirth" <div v-if="myuser._id" class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
v-model:value="myuser.profile.dateofbirth" <q-btn
:label="$t('reg.dateofbirth')" v-if="getLinkWebSite()" icon="fas fa-globe"
:canEdit="false"> color="blue" type="a"
</CDateTime> size="md"
<CLabel rounded
v-if="!!myuser.profile.cell" :label="$t('reg.website')"
v-bind="$attrs" :href="getLinkWebSite()" target="__blank">
:copy="true" </q-btn>
:value="myuser.profile.intcode_cell + myuser.profile.cell" </div>
label="Cellulare" </div>
/> <div class="myrow justify-evenly items-center q-pa-sm q-ma-sm">
<div v-if="myuser._id" class="col-12">
<q-btn
v-if="myuser.username === myusername()"
icon="fas fa-share-alt"
color="blue"
size="md"
rounded
:label="$t('reg.link_reg_and_msg')"
@click="tools.sendMsgTelegramCmd($q, $t, shared_consts.MsgTeleg.SHARE_MSGREG)">
</q-btn>
</div>
</div>
</div>
<!-- <CTitleBanner
<CMyFieldRec v-if="static_data.functionality.SHOW_COMPETENZE"
table="users" class="" title="Competenze e Talenti" bgcolor="bg-positive" clcolor="text-white"
:id="myuser._id" myclass="myshad" :canopen="true">
:rec="myuser"
field="profile.cell"
class="cursor-pointer"
:canEdit="false"
:disable="true"
:canModify="false">
</CMyFieldRec>
-->
<q-tabs v-model="actualcard" class="text-blue">
<q-tab v-for="(card, ind) of mycards" :key="ind" :name="card.table" :label="card.title">
</q-tab>
</q-tabs>
<q-tab-panels v-model="actualcard" animated>
<q-tab-panel v-for="(card, ind) of mycards" :key="ind" :name="card.table">
<div v-if="card.table === 'mygroups'">
<q-list>
<span v-for="(grp, index) in listgroupsfiltered" :key="index" class="q-my-sm" clickable>
<CMyGroup
:mygrp="grp"
:visu="costanti.USER_GROUPS"
>
</CMyGroup>
</span>
</q-list>
</div>
<div v-else>
<CSkill
v-if="card.table === actualcard"
:table="card.table"
:filtercustom="filtroutente"
:butt_modif_new="isMyRecord(myuser.username)"
/>
</div>
</q-tab-panel>
</q-tab-panels>
</CTitleBanner>
<div v-if="myuser && myuser._id && (userStore.IsMyFriendByUsername(myuser.username) || isMyRecord(myuser.username))">
<CTitleBanner
class="" :title="$t('dashboard.info')" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
<div v-if="myuser.profile" class="fit column no-wrap justify-evenly content-start">
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<CDateTime
v-if="checkifShow('profile.dateofbirth') && !!myuser.profile.dateofbirth"
v-model:value="myuser.profile.dateofbirth"
:label="$t('reg.dateofbirth')"
:canEdit="false">
</CDateTime>
<CLabel
v-if="!!myuser.profile.cell"
v-bind="$attrs"
:copy="true"
:value="myuser.profile.intcode_cell + myuser.profile.cell"
label="Cellulare"
/>
<!--
<CMyFieldRec
table="users"
:id="myuser._id"
:rec="myuser"
field="profile.cell"
class="cursor-pointer"
:canEdit="false"
:disable="true"
:canModify="false">
</CMyFieldRec>
-->
</div>
</div> </div>
</div> </CTitleBanner>
</div>
</CTitleBanner>
</div> </div>
<q-dialog
v-model="showPic"
full-height full-width
>
<img :src="getImgUser()" :alt="username" class="full-width">
</q-dialog>
</div>
<div v-else-if="caricato">
<h2>Utente {{ username }} non trovato</h2>
</div> </div>
<q-dialog
v-model="showPic"
full-height full-width
>
<img :src="getImgUser()" :alt="username" class="full-width">
</q-dialog>
</div> </div>
<div v-else> <div v-else>
<CUserNonVerif></CUserNonVerif> <CUserNonVerif></CUserNonVerif>