Aggiungere "San Marino" e suoi comuni

Corretto Filtro a mano della ricerca
Creare filtro ricerca per trovare la sottocategoria o categoria -> Skill e SubSkill
This commit is contained in:
paoloar77
2022-02-12 02:19:49 +01:00
parent 7c0c2fef39
commit b21a7d1885
63 changed files with 541 additions and 752 deletions

View File

@@ -1,23 +1,23 @@
APP_VERSION="0.1.8"
APP_VERSION="0.1.9"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="1"
APP_ID="12"
DIRECTORY_LOCAL="newfreeplanet"
DIRECTORY_SERVER="freeplanet_serverside"
SERVERDIR_WEBSITE=""
SERVERPW_WEBSITE=""
APP_URL="http://localhost"
URL_FACEBOOK="https://www.facebook.com/freeplanetapp"
URL_FACEBOOK="https://www.facebook.com/"
PROVA_PAOLO="PROVA ENV FUNZIONA!"
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="http://192.168.0.200:3000"
LOGO_REG="freeplanet-logo-full.svg"
LOGO_REG='logo-full.png'
TEST_NAME="Paolo"
TEST_SURNAME="Arena"
TEST_EMAIL="paolo@freeplanet.app"
TEST_EMAIL="perseo@freeplanet.app"
TEST_USERNAME="paoloar773"
TEST_PASSWORD=""
TEST_PASSWORD="passpao1fr@1A"
TEST_APORTADOR=""
PUBLICKEY_PUSH='BDncvMiUZmjaCG2Kr1V9N0_33hOG-AuNSbHSvL24y2dzBiUjAxKm02emx5SeJvz2IGmtRf6YqCgopeQwCwUmZw8'
IN_CONSTRUCTION="0"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.1.8"
APP_VERSION="0.1.9"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="1"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -208,7 +208,7 @@ const msg_website_it = {
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li><strong>Condividendolo</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>Rispondendo ai <strong>Sondaggi Popolari</strong> e lasciando <strong>Feedback</strong></li>'
+ '<li>Tramite una piccola <strong>donazione</strong> per le spese dei Server<br>'
+ '<li>Tramite una piccola <strong>donazione</strong> per le spese dei Server.<br>'
+ '</ul>'
+ 'Vedo un <strong>futuro</strong> dove non si utilizzerà più denaro. Dove le persone si <strong>aiuteranno</strong> a vicenda e non avranno bisogno di "possedere" cose, ma le <strong>condivideranno</strong> con gli altri.<br>',
},

View File

@@ -416,7 +416,7 @@ const baseroutes: IListRoutes[] = [
active: true,
order: 130,
path: '/friends',
materialIcon: 'fas fa-users',
materialIcon: 'fas fa-user-friends',
name: 'mypages.friends',
component: () => import('@/views/user/myfriends/myfriends.vue'),
meta: { requiresAuth: true },
@@ -583,7 +583,7 @@ const baseroutes: IListRoutes[] = [
inmenu: true,
},
{
active: true,
active: false,
order: 80,
path: '/calendario-eventi',
materialIcon: 'event',
@@ -628,8 +628,8 @@ const baseroutes: IListRoutes[] = [
const arrLangUsed = [
'it',
'enUs',
'es',
// 'enUs',
// 'es',
]
const lang_available: ILang[] = [

View File

@@ -49,7 +49,7 @@ module.exports = configure((ctx) => ({
extras: [
// 'ionicons-v4',
// 'mdi-v5',
// 'eva-icons',
'eva-icons',
// 'themify',
// 'line-awesome',
'ionicons-v4',
@@ -57,6 +57,7 @@ module.exports = configure((ctx) => ({
'fontawesome-v5',
'roboto-font', // optional, you are not bound to it
'material-icons', // optional, you are not bound to it
'material-icons-outlined'
],
aliases: {
@@ -154,7 +155,6 @@ module.exports = configure((ctx) => ({
framework: {
config: {},
// iconSet: 'material-icons', // Quasar icon set
// lang: 'en-US', // Quasar language pack
// For special cases outside of where the auto-import strategy can have an impact

View File

@@ -1,69 +0,0 @@
import {
defineComponent, ref, computed,
} from 'vue'
import { tools } from '@src/store/Modules/tools'
import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CChartMap } from '@src/components/CChartMap'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
export default defineComponent({
name: 'Home',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
function isEmailVerified() {
return userStore.my.verified_email
}
function TelegCode() {
return userStore.my.profile.teleg_checkcode
}
function TelegVerificato(): boolean {
return userStore.my.profile ? userStore.my.profile.teleg_id! > 0 : false
}
function openrighttoolbar() {
globalStore.rightDrawerOpen = true
}
function isLogged() {
return userStore.isLogged
}
function isUserOk() {
return userStore.isUserOk()
}
function getLinkBotTelegram(): string {
if (tools.isTest() && !process.env.DEV) {
return getValDb('TELEG_BOT_LINK_TEST', false)
} else{
return getValDb('TELEG_BOT_LINK', false)
}
}
return {
tools,
static_data,
isEmailVerified,
TelegCode,
TelegVerificato,
isLogged,
openrighttoolbar,
isUserOk,
getLinkBotTelegram,
}
},
})

View File

@@ -1,76 +0,0 @@
<template>
<q-page class="">
<!--<CChartMap
title="Mappa"
subtitle="cartina..."
serie1="Serie 1"
>
</CChartMap>-->
<!--<CMapsEsempio></CMapsEsempio>-->
<div v-if="isLogged()">
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<CVerifyTelegram v-if="TelegCode() || !TelegVerificato()">
</CVerifyTelegram>
<div v-if="isUserOk()">
<div v-if="isUserOk()">
<q-banner rounded class="bg-primary text-white">
<div class="text-h6 text-center">
Ora Accedi al Bot Telegram <br>
per vedere tutti i Menu e le chat !
</div>
<template v-slot:action>
<q-btn icon="fab fa-telegram" flat color="white" label="Accedi al Bot Telegram" type="a" target="__blank" :href="getLinkBotTelegram()"/>
</template>
</q-banner>
</div>
</div>
</div>
<div v-else>
<div class="q-pa-md q-gutter-sm">
<q-banner rounded class="bg-primary text-white">
<div class="text-h6 text-center">
Accedi al menu inserendo le tue credenziali 🔑<br><br>
📝 Non sei <strong>Registrato</strong>?<br>
👉🏻 Chiedi in chat il link a chi ti ha <strong>invitato</strong>.<br>
</div>
<template v-slot:action>
<q-btn flat color="white" label="Accedi al Login" @click="openrighttoolbar"/>
</template>
</q-banner>
</div>
<div
v-if="!isLogged() && static_data.functionality.ENABLE_REGISTRATION && static_data.functionality.SHOW_REG_BUTTON"
style="margin:20px; text-align: center;">
<q-btn rounded size="lg" color="primary" @click="openrighttoolbar">{{ $t('login.enter') }}
</q-btn>
</div>
<!--
<div v-if="!isLogged && static_data.functionality.ENABLE_REGISTRATION" align="center" style="margin:20px;">
<q-btn rounded size="lg" color="primary" to="/signup">{{$t('reg.submit')}}
</q-btn>
</div>
-->
</div>
</q-page>
</template>
<script lang="ts" src="./home.ts">
</script>
<style lang="scss" scoped>
@import './home.scss';
</style>

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.1.8"
APP_VERSION="0.1.9"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="1"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -416,7 +416,7 @@ const baseroutes: IListRoutes[] = [
active: true,
order: 130,
path: '/friends',
materialIcon: 'eva-people-outline',
materialIcon: 'fas fa-user-friends',
name: 'mypages.friends',
component: () => import('@/views/user/myfriends/myfriends.vue'),
meta: { requiresAuth: true },

View File

@@ -57,6 +57,7 @@ module.exports = configure((ctx) => ({
'fontawesome-v5',
'roboto-font', // optional, you are not bound to it
'material-icons', // optional, you are not bound to it
'material-icons-outlined',
],
aliases: {

View File

@@ -1,69 +0,0 @@
import {
defineComponent, ref, computed,
} from 'vue'
import { tools } from '@src/store/Modules/tools'
import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CChartMap } from '@src/components/CChartMap'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
export default defineComponent({
name: 'Home',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
function isEmailVerified() {
return userStore.my.verified_email
}
function TelegCode() {
return userStore.my.profile.teleg_checkcode
}
function TelegVerificato(): boolean {
return userStore.my.profile ? userStore.my.profile.teleg_id! > 0 : false
}
function openrighttoolbar() {
globalStore.rightDrawerOpen = true
}
function isLogged() {
return userStore.isLogged
}
function isUserOk() {
return userStore.isUserOk()
}
function getLinkBotTelegram(): string {
if ( tools.isTest() && !process.env.DEV) {
return getValDb('TELEG_BOT_LINK_TEST', false)
} else{
return getValDb('TELEG_BOT_LINK', false)
}
}
return {
tools,
static_data,
isEmailVerified,
TelegCode,
TelegVerificato,
isLogged,
openrighttoolbar,
isUserOk,
getLinkBotTelegram,
}
},
})

View File

@@ -1,67 +0,0 @@
<template>
<q-page class="">
<!--<CChartMap
title="Mappa"
subtitle="cartina..."
serie1="Serie 1"
>
</CChartMap>-->
<!--<CMapsEsempio></CMapsEsempio>-->
<div v-if="isLogged()">
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<CVerifyTelegram v-if="TelegCode() || !TelegVerificato()">
</CVerifyTelegram>
<div v-if="isUserOk()">
<div v-if="isUserOk()">
</div>
</div>
</div>
<div v-else>
<div class="q-pa-md q-gutter-sm">
<q-banner rounded class="bg-primary text-white">
<div class="text-h6 text-center">
Accedi al menu inserendo le tue credenziali 🔑<br><br>
📝 Non sei <strong>Registrato</strong>?<br>
👉🏻 Chiedi in chat il link a chi ti ha <strong>invitato</strong>.<br>
</div>
<template v-slot:action>
<q-btn flat color="white" label="Accedi al Login" @click="openrighttoolbar"/>
</template>
</q-banner>
</div>
<div
v-if="!isLogged() && static_data.functionality.ENABLE_REGISTRATION && static_data.functionality.SHOW_REG_BUTTON"
style="margin:20px; text-align: center;">
<q-btn rounded size="lg" color="primary" @click="openrighttoolbar">{{ $t('login.enter') }}
</q-btn>
</div>
<!--
<div v-if="!isLogged && static_data.functionality.ENABLE_REGISTRATION" align="center" style="margin:20px;">
<q-btn rounded size="lg" color="primary" to="/signup">{{$t('reg.submit')}}
</q-btn>
</div>
-->
</div>
</q-page>
</template>
<script lang="ts" src="./home.ts">
</script>
<style lang="scss" scoped>
@import './home.scss';
</style>

View File

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

View File

@@ -416,7 +416,7 @@ const baseroutes: IListRoutes[] = [
active: true,
order: 130,
path: '/friends',
materialIcon: 'fas fa-users',
materialIcon: 'fas fa-user-friends',
name: 'mypages.friends',
component: () => import('@/views/user/myfriends/myfriends.vue'),
meta: { requiresAuth: true },

View File

@@ -57,6 +57,7 @@ module.exports = configure((ctx) => ({
'fontawesome-v5',
'roboto-font', // optional, you are not bound to it
'material-icons', // optional, you are not bound to it
'material-icons-outlined',
],
aliases: {

View File

@@ -1,69 +0,0 @@
import {
defineComponent, ref, computed,
} from 'vue'
import { tools } from '@src/store/Modules/tools'
import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CChartMap } from '@src/components/CChartMap'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
export default defineComponent({
name: 'Home',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
function isEmailVerified() {
return userStore.my.verified_email
}
function TelegCode() {
return userStore.my.profile.teleg_checkcode
}
function TelegVerificato(): boolean {
return userStore.my.profile ? userStore.my.profile.teleg_id! > 0 : false
}
function openrighttoolbar() {
globalStore.rightDrawerOpen = true
}
function isLogged() {
return userStore.isLogged
}
function isUserOk() {
return userStore.isUserOk()
}
function getLinkBotTelegram(): string {
if ( tools.isTest() && !process.env.DEV) {
return getValDb('TELEG_BOT_LINK_TEST', false)
} else{
return getValDb('TELEG_BOT_LINK', false)
}
}
return {
tools,
static_data,
isEmailVerified,
TelegCode,
TelegVerificato,
isLogged,
openrighttoolbar,
isUserOk,
getLinkBotTelegram,
}
},
})

View File

@@ -1,76 +0,0 @@
<template>
<q-page class="">
<!--<CChartMap
title="Mappa"
subtitle="cartina..."
serie1="Serie 1"
>
</CChartMap>-->
<!--<CMapsEsempio></CMapsEsempio>-->
<div v-if="isLogged()">
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<CVerifyTelegram v-if="TelegCode() || !TelegVerificato()">
</CVerifyTelegram>
<div v-if="isUserOk()">
<div v-if="isUserOk()">
<q-banner rounded class="bg-primary text-white">
<div class="text-h6 text-center">
Ora Accedi al Bot Telegram <br>
per vedere tutti i Menu e le chat !
</div>
<template v-slot:action>
<q-btn icon="fab fa-telegram" flat color="white" label="Accedi al Bot Telegram" type="a" target="__blank" :href="getLinkBotTelegram()"/>
</template>
</q-banner>
</div>
</div>
</div>
<div v-else>
<div class="q-pa-md q-gutter-sm">
<q-banner rounded class="bg-primary text-white">
<div class="text-h6 text-center">
Accedi al menu inserendo le tue credenziali 🔑<br><br>
📝 Non sei <strong>Registrato</strong>?<br>
👉🏻 Chiedi in chat il link a chi ti ha <strong>invitato</strong>.<br>
</div>
<template v-slot:action>
<q-btn flat color="white" label="Accedi al Login" @click="openrighttoolbar"/>
</template>
</q-banner>
</div>
<div
v-if="!isLogged() && static_data.functionality.ENABLE_REGISTRATION && static_data.functionality.SHOW_REG_BUTTON"
style="margin:20px; text-align: center;">
<q-btn rounded size="lg" color="primary" @click="openrighttoolbar">{{ $t('login.enter') }}
</q-btn>
</div>
<!--
<div v-if="!isLogged && static_data.functionality.ENABLE_REGISTRATION" align="center" style="margin:20px;">
<q-btn rounded size="lg" color="primary" to="/signup">{{$t('reg.submit')}}
</q-btn>
</div>
-->
</div>
</q-page>
</template>
<script lang="ts" src="./home.ts">
</script>
<style lang="scss" scoped>
@import './home.scss';
</style>

View File

@@ -1,8 +1,8 @@
{
"name": "freeplanet",
"version": "0.0.7",
"description": "FreePlanet",
"productName": "FreePlanet",
"name": "popolodelnuovomondo",
"version": "0.0.8",
"description": "Popolo Del Nuovo Mondo",
"productName": "Popolo Del Nuovo Mondo",
"author": "Paolo Arena",
"private": true,
"keywords": [
@@ -23,25 +23,25 @@
"dependencies": {
"axios": "0.21.4",
"@vue/eslint-config-standard": "5.1.2",
"@quasar/extras": "^1.12.2",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.11",
"@quasar/extras": "^1.12.4",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.12",
"@vue/compat": "^3.2.26",
"@vue/compiler-sfc": "^3.2.26",
"@vuelidate/core": "^2.0.0-alpha.32",
"@vuelidate/validators": "^2.0.0-alpha.25",
"acorn": "^8.6.0",
"autoprefixer": "^10.4.0",
"@vuelidate/core": "^2.0.0-alpha.34",
"@vuelidate/validators": "^2.0.0-alpha.26",
"acorn": "^8.7.0",
"autoprefixer": "^10.4.2",
"bcryptjs": "^2.4.3",
"core-js": "^3.20.0",
"core-js": "^3.20.3",
"crypto": "^1.0.1",
"date-fns": "^2.27.0",
"dotenv": "^10.0.0",
"date-fns": "^2.28.0",
"dotenv": "^11.0.0",
"echarts": "^5.2.2",
"eslint-plugin-quasar": "^1.0.0",
"eslint-plugin-quasar": "^1.1.0",
"eslint-plugin-standard": "^5.0.0",
"graphql": "^16.1.0",
"graphql": "^16.2.0",
"graphql-tag": "^2.12.6",
"gsap": "^3.9.0",
"gsap": "^3.9.1",
"jquery": "^3.6.0",
"js-cookie": "^3.0.1",
"localforage": "^1.10.0",
@@ -49,9 +49,9 @@
"normalize.css": "^8.0.1",
"npm": "^8.3.0",
"nprogress": "^0.2.0",
"pinia": "^2.0.6",
"pinia": "^2.0.9",
"prerender-spa-plugin": "^3.4.0",
"quasar": "^2.3.4",
"quasar": "^2.4.12",
"quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2",
"vee-validate": "^4.4.10",
@@ -72,9 +72,9 @@
},
"devDependencies": {
"node-sass": "6.0.1",
"webpack": "^5.0.0",
"@quasar/app": "^3.2.5",
"@quasar/quasar-app-extension-qcalendar": "^4.0.0-beta.11",
"webpack": "^5.66.0",
"@quasar/app": "^3.2.9",
"@quasar/quasar-app-extension-qcalendar": "^4.0.0-beta.12",
"@types/bcryptjs": "^2.4.2",
"@types/dotenv": "^8.2.0",
"@types/googlemaps": "^3.43.3",
@@ -84,31 +84,31 @@
"@types/nprogress": "^0.2.0",
"@types/vue-tel-input": "^2.1.2",
"@types/vuelidate": "^0.7.15",
"@typescript-eslint/eslint-plugin": "^5.7.0",
"@typescript-eslint/parser": "^5.7.0",
"eslint": "^8.4.1",
"@typescript-eslint/eslint-plugin": "^5.10.0",
"@typescript-eslint/parser": "^5.10.0",
"eslint": "^8.7.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.2.0",
"eslint-plugin-vue": "^8.2.0",
"eslint-plugin-vue": "^8.3.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.0",
"http-proxy-middleware": "^2.0.1",
"jest": "^27.4.5",
"json-loader": "^0.5.7",
"npm-check-updates": "^12.0.5",
"npm-check-updates": "^12.1.0",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"postcss": "^8.4.5",
"postcss-loader": "^6.2.1",
"sass-loader": "^12.4.0",
"strip-ansi": "=7.0.1",
"ts-jest": "^27.1.1",
"ts-jest": "^27.1.2",
"ts-loader": "^9.2.6",
"tslint": "^6.1.3",
"tslint-config-standard": "^9.0.0",
"tslint-loader": "^3.5.4",
"typescript": "^4.5.4",
"typescript": "^4.5.5",
"vue-cli-plugin-element-ui": "^1.1.4",
"vueify": "^9.4.1",
"workbox-webpack-plugin": "^6.4.2"

View File

@@ -49,7 +49,7 @@ module.exports = configure((ctx) => ({
extras: [
// 'ionicons-v4',
// 'mdi-v5',
'eva-icons',
// 'eva-icons',
// 'themify',
// 'line-awesome',
'ionicons-v4',
@@ -57,7 +57,7 @@ module.exports = configure((ctx) => ({
'fontawesome-v5',
'roboto-font', // optional, you are not bound to it
'material-icons', // optional, you are not bound to it
'material-icons-outlined'
'material-icons-outlined',
],
aliases: {
@@ -147,14 +147,16 @@ module.exports = configure((ctx) => ({
},
devServer: {
https: false,
port: 8082,
port: 8083,
open: false, // opens browser window automatically
liveReload: false,
},
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-framework
framework: {
config: {},
// iconSet: 'material-icons', // Quasar icon set
// lang: 'en-US', // Quasar language pack
// For special cases outside of where the auto-import strategy can have an impact
@@ -284,21 +286,31 @@ module.exports = configure((ctx) => ({
},
manifest: {
name: 'FreePlanet',
short_name: 'FreePlanet',
description: 'New Free Social',
name: 'PopoloDelNuovoMondo',
short_name: 'PdNM',
description: 'Popolo del Nuovo Mondo',
display: 'standalone',
orientation: 'portrait',
background_color: '#ffffff',
theme_color: '#027be3',
icons: [
{
src: 'images/android-chrome-192x192.png',
sizes: '384x384',
src: 'images/pdnm-android-icon-96x96.png',
sizes: '96x96',
type: 'image/png',
},
{
src: 'images/android-chrome-512x512.png',
src: 'images/pdnm-android-icon-144x144.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/pdnm-android-icon-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'images/pdnm-android-icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},

View File

@@ -16,5 +16,5 @@ export class Patterns {
*
* 8 to 20 characters string with at least one digit, one upper case letter, one lower case letter and one special symbol
*/
public static Password = /^((?=.*[A-Z])(?=.*\d)(?=.*[@#*=])(?!.* ).{8,30})/i
public static Password = /^((?=.*[A-Z])(?=.*\d)(?!.* ).{8,30})/i
}

View File

@@ -84,12 +84,14 @@ export const shared_consts = {
PARAM_SHOW_PROVINCE: 1,
TABLES_ID_NUMBER: ['permissions', 'levels', 'statusSkills', 'sectors', 'catgrps', 'skills', 'subskills', 'cities', 'provinces', 'myskills', 'mygroups'],
TABLES_ID_NUMBER: ['permissions', 'levels', 'adtypes', 'statusSkills', 'sectors', 'catgrps', 'skills', 'subskills', 'cities', 'provinces', 'myskills', 'mygroups'],
TABLES_USER_ID: ['myskills'],
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybots'],
TABLES_FINDER: ['myskills', 'mygroups'],
TABLES_PERM_CHANGE_FOR_USERS: ['myskills'],
TABLES_VISU_LISTA_USER: ['myskills', 'users'],
TABLES_NOT_SHOW_IF_USERNAME: ['myskills'],
VISIB_ALL: 0,
VISIB_ONLYIF_VERIFIED: 1,
@@ -459,6 +461,10 @@ export const shared_consts = {
label: 'Reggio Emilia',
value: 'RE',
},
{
label: 'Repubblica di San Marino',
value: 'RSM',
},
{
label: 'Rieti',
value: 'RI',

View File

@@ -90,6 +90,17 @@ export default defineComponent({
searchList.value = [
{
label: 'Offro/Cerco',
table: 'adtypes',
key: 'adType',
value: tools.getCookie(tools.COOK_SEARCH + 'adtypes', costanti.FILTER_TUTTI),
arrvalue: [],
addall: true,
type: costanti.FieldType.select,
filter: null,
useinput: false,
},
{
label: 'Settore',
table: 'sectors',
@@ -204,27 +215,6 @@ export default defineComponent({
}
async function createNewRecordInUserTable() {
console.log('createNewRecordInUserTable')
let mydata = {
table: mytable,
data: {
userId: userStore.my._id,
data: {},
field: 'myskills'
}
};
if (props.defaultnewrec) {
mydata.data.data = props.defaultnewrec
}
console.log('mydata', mydata)
const data = await globalStore.saveSubRec(mydata)
}
function getdefaultnewrec(): IMySkill {
return {
_id: 0,
@@ -235,9 +225,10 @@ export default defineComponent({
idContribType: [],
idCity: [],
NumLevel: 0,
adType: 0,
photos: [],
note: '',
subTitle: '',
descr: '',
}
}
@@ -263,13 +254,15 @@ export default defineComponent({
idSector: 1,
idSkill: 1,
idSubSkill: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
subTitle: 1,
descr: 1,
date_created: 1,
date_updated: 1,
userId: 1,

View File

@@ -18,7 +18,9 @@
prop_mytitle=""
:prop_mycolumns="colmySkills"
prop_colkey="idSkill"
col_title="subTitle"
col_title="descr"
col_footer="idCity"
col_tabfooter="mycities"
:vertical="-1"
:nodataLabel="idSector > 0 ? 'Nessuna Competenza trovata': 'Selezionare un Settore'"
:prop_search="true"

View File

@@ -18,7 +18,6 @@
</div>
</q-card>
<div v-if="!isInModif && getlistimages().length <= 0 && imagebak">
<q-card :class="getclass()" @click="ImgFullScreen(mygallery)">
<q-img
:src="imagebak" :class="getclimg()">

View File

@@ -20,6 +20,7 @@ import { lists } from '@store/Modules/lists'
import { IParamsQuery } from 'model'
import { CMyPopupEdit } from '../CMyPopupEdit'
import { CMyFriends } from '../CMyFriends'
import { CMyUser } from '../CMyUser'
import { CMyGroups } from '../CMyGroups'
import { CMyFieldDb } from '../CMyFieldDb'
import { CMySelect } from '../CMySelect'
@@ -172,6 +173,16 @@ export default defineComponent({
required: false,
default: '',
},
col_footer: {
type: String,
required: false,
default: '',
},
col_tabfooter: {
type: String,
required: false,
default: '',
},
showCol: {
type: Boolean,
required: false,
@@ -193,7 +204,7 @@ export default defineComponent({
default: '',
},
},
components: { CMyPopupEdit, CTitleBanner, CMyFieldDb, CMySelect, CMyFriends, CMyGroups },
components: { CMyPopupEdit, CTitleBanner, CMyFieldDb, CMySelect, CMyFriends, CMyGroups, CMyUser },
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n()
@@ -342,6 +353,8 @@ export default defineComponent({
if (userId === userStore.my._id) {
// E' il mio, quindi modificalo
return true
} else {
return false
}
} else {
return false
@@ -878,9 +891,7 @@ export default defineComponent({
pagination.value = props.prop_pagination
myvertical.value = props.vertical
if (props.finder) {
myvertical.value = tools.getCookie('myv', 0)
}
myvertical.value = tools.getCookie('myv_' + props.prop_mytable, props.vertical)
}
function mounted() {
@@ -1019,7 +1030,7 @@ export default defineComponent({
function checkIfColShow(field: string | undefined) {
let vis = true
if (props.prop_mytable === 'myskills' && !props.prop_search) {
if (shared_consts.TABLES_NOT_SHOW_IF_USERNAME.includes(props.prop_mytable) && !props.prop_search) {
if (field === 'username') {
vis = false
}
@@ -1333,6 +1344,17 @@ export default defineComponent({
return ''
}
function getLabelFooterByRow(row: any) {
if (props.col_footer) {
let mycol = fieldsTable.getColByTable(tablesel.value, props.col_footer)
if (mycol) {
return tools.getValueByRemoteField(mycol, row, row[props.col_footer], props.col_tabfooter)
}
}
return ''
}
// onMounted(mounted)
created()
@@ -1413,6 +1435,7 @@ export default defineComponent({
showColCheck,
getValueExtra,
shared_consts,
getLabelFooterByRow,
}
}
})

View File

@@ -247,13 +247,13 @@
<div v-if="choose_visutype" class="">
<q-radio v-model="myvertical" :val="2" label="Lista"
@update:model-value="tools.setCookie('myv', myvertical) "/>
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
<q-radio v-if="mytable === toolsext.TABMYGROUPS" v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_GROUP" label="Scheda"
@update:model-value="tools.setCookie('myv', myvertical) "/>
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
<q-radio v-else v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_USER" label="Scheda"
@update:model-value="tools.setCookie('myv', myvertical) "/>
<q-radio v-model="myvertical" :val="0" label="Tabella"
@update:model-value="tools.setCookie('myv', myvertical) "/>
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
<q-radio v-if="$q.screen.gt.xs" v-model="myvertical" :val="0" label="Tabella"
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
</div>
</template>
@@ -303,8 +303,18 @@
</template>
<template v-slot:item="props">
<div v-if="((showType === costanti.SHOW_USERINFO) && myvertical !== costanti.VISUTABLE_SCHEDA_USER) || ((myvertical === 2) && (tablesel === 'users' || tablesel === 'myskills'))" class="fill-all-width">
<div v-if="((showType === costanti.SHOW_USERINFO) && myvertical !== costanti.VISUTABLE_SCHEDA_USER) || ((myvertical === 2) && (shared_consts.TABLES_VISU_LISTA_USER.includes(tablesel)))" class="fill-all-width">
<div>
<CMyUser
:mycontact="props.row"
:visu="visufind"
:groupname="extrafield"
:labelextra="col_title ? props.row[col_title] : ''"
:labelFooter="col_footer ? getLabelFooterByRow(props.row) : ''"
>
</CMyUser>
<!--
<CMyFriends
v-model="filter"
:finder="false"
@@ -313,6 +323,8 @@
:groupname="extrafield"
:labelextra="props.row[col_title]"
/>
-->
<q-separator></q-separator>
</div>
</div>
@@ -330,12 +342,14 @@
</div>
<div
v-else
class="q-pa-xs col-xs-12 col-sm-6 col-md-4 col-lg-3 grid-style-transition"
class="q-pa-xs col-xs-12 col-sm-6 col-md-4 col-lg-3 "
:style="props.selected ? 'transform: scale(0.95);' : ''"
>
<q-card :class="props.selected ? 'bg-grey-2 my-card' : 'my-card'">
<q-bar v-if="!visuinpage" dense class="bg-primary text-white full-height">
<span class=""> {{ props.row[col_title] }} </span>
<q-card :class="props.selected ? 'bg-grey-2 my-card-withshadow no-padding' : 'my-card-withshadow no-padding'"
style="background: radial-gradient(circle, #ffffff 0%, #bbddff 100%)">
<q-bar v-if="!visuinpage && canModifyThisRec(props.row)" dense class="bg-primary text-white full-height">
<span v-if="props.row['username']">{{props.row['username']}}</span>
<q-space/>
<q-btn
@@ -352,7 +366,8 @@
{{ props.row[col_title] }}
</q-toolbar-title>
</q-toolbar>-->
<q-card-section class="inset-shadow">
<q-card-section class="">
<q-list dense>
<div v-for="col in mycolumns" :key="col.name">
<q-item v-if="showColCheck(col, tools.TIPOVIS_SHOW_RECORD, false, tools.getValue(props.row,col.field, col.subfield))"
@@ -438,7 +453,7 @@
</div>
</div>
</div>
<q-dialog v-model="newRecordBool" @hide="hidewindow">
<q-dialog v-model="newRecordBool" @hide="hidewindow" :maximized="true">
<q-card class="dialog_card">
<q-bar dense class="bg-primary text-white">
Nuovo:
@@ -483,8 +498,7 @@
<q-dialog v-model="editRecordBool">
<q-card class="dialog_card">
<q-bar dense class="bg-primary text-white full-height">
<span v-if="mytitle">{{ mytitle }}</span>
<span v-else>{{ recModif[col_title] }}</span>
<span class="ellipsis">{{ recModif[col_title] }}</span>
<q-space/>
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
</q-bar>

View File

@@ -60,8 +60,8 @@ export default defineComponent({
const toolbarcomp = ref([
['left', 'center', 'right', 'justify'],
['bold', 'italic', 'underline', 'strike'],
['token', 'hr', 'link', 'custom_btn'],
['print', 'fullscreen'], [
['token', 'hr', 'link', 'custom_btn', 'print', 'fullscreen'],
[
{
label: $q.lang.editor.formatting,
icon: $q.iconSet.editor.formatting,

View File

@@ -53,7 +53,7 @@
<q-btn v-if="col.tipovisu === costanti.TipoVisu.LINK && myvalue"
type="a" rounded size="md"
:class="{disabled: disable }"
color="white" text-color="blue" :icon="`img:`+userStore.getImgByUsername(myvalue)" :to="col.link.replace(col.name, myvalue)"
color="white" text-color="blue" :icon="`img:`+userStore.getImgUserByUsername(myvalue)" :to="col.link.replace(col.name, myvalue)"
:label="myvalue"
>
</q-btn>
@@ -108,7 +108,7 @@
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.listimages" style="text-align: center;">
<CGallery
:imagebak="col.showpicprofile_ifnotset ? userStore.getImgByProfile(row) : ''"
:imagebak="col.showpicprofile_ifnotset ? userStore.getImgByProfile(row, true) : ''"
:title="getTitleGall()"
:directory="getDirectoryGall()"
:imgGall="myvalue"
@@ -122,7 +122,7 @@
<div v-if="canEdit">
{{ $t('reg.photo') }}
<CGallery
:imagebak="col.showpicprofile_ifnotset ? userStore.getImgByProfile(row['profile']) : ''"
:imagebak="col.showpicprofile_ifnotset ? userStore.getImgByProfile(row['profile'], true) : ''"
:title="getTitleGall()"
:directory="getDirectoryGall()"
:imgGall="[{ imagefile: myvalue }]"

View File

@@ -35,6 +35,16 @@ export default defineComponent({
type: String,
required: false,
default: '',
},
labelFooter: {
type: String,
required: false,
default: '',
},
notsetcmd: {
type: Boolean,
required: false,
default: false,
}
},
@@ -79,8 +89,12 @@ export default defineComponent({
}
function setCmd($q: any, cmd: number, myusername: string, value: any, groupname: string) {
if (props.notsetcmd) {
tools.setCmd($q, cmd, myusername, value, groupname)
}else {
emit('setCmd', $q, cmd, myusername, value, groupname)
}
}
onMounted(mounted)

View File

@@ -12,6 +12,8 @@
<q-item-label>{{ contact.username }} <span v-if="contact.name">({{ contact.name }} {{ contact.surname }})</span>
</q-item-label>
<q-item-label v-if="contact.profile" caption lines="1"><em>{{ contact.profile.qualifica }}</em></q-item-label>
<q-item-label caption lines="1"></q-item-label>
<q-item-label v-if="labelFooter" lines="1"><em>{{ labelFooter }}</em></q-item-label>
</q-item-section>
<q-item-section side v-if="visu === costanti.FRIENDS">

View File

@@ -44,26 +44,6 @@ export default defineComponent({
const globalStore = useGlobalStore()
const userStore = useUserStore()
async function createNewRecordInUserTable() {
console.log('createNewRecordInUserTable')
let mydata = {
table: mytable,
data: {
userId: userStore.my._id,
data: {},
field: 'myskills'
}
}
if (props.defaultnewrec) {
mydata.data.data = props.defaultnewrec
}
console.log('mydata', mydata)
const data = await globalStore.saveSubRec(mydata)
}
function getdefaultnewrec(): IMySkill {
return {
@@ -75,9 +55,10 @@ export default defineComponent({
idContribType: [],
idCity: [],
NumLevel: 0,
adType: 0,
photos: [],
note: '',
subTitle: '',
descr: '',
}
}
@@ -106,13 +87,15 @@ export default defineComponent({
idSector: 1,
idSkill: 1,
idSubSkill: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
subTitle: 1,
descr: 1,
date_created: 1,
date_updated: 1,
userId: 1,
@@ -137,13 +120,15 @@ export default defineComponent({
idSector: 1,
idSkill: 1,
idSubSkill: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
subTitle: 1,
descr: 1,
date_created: 1,
date_updated: 1,
comune: 1,

View File

@@ -7,7 +7,8 @@
prop_mytitle=""
:prop_mycolumns="colmySkills"
prop_colkey="idSkill"
col_title="subTitle"
col_title="descr"
col_footer="idCity"
:vertical="-1"
:choose_visutype="!visuinpage"
:butt_modif_new="!visuinpage"

View File

@@ -0,0 +1,30 @@
import { computed, defineComponent, PropType, ref } from 'vue'
import { ICalcStat, IOperators } from '../../model'
import { useUserStore } from '../../store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '../../store/globalStore'
import { useI18n } from '../../boot/i18n'
import { CTitleBanner } from '@/components/CTitleBanner'
import { tools } from '@store/Modules/tools'
export default defineComponent({
name: 'CUserNonVerif',
components: {
CTitleBanner
},
props: {
},
setup(props) {
const userStore = useUserStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const { t } = useI18n();
return {
userStore,
tools,
}
},
})

View File

@@ -0,0 +1,14 @@
<template>
<div class="q-ma-md">
<CTitleBanner title="Verifica">
La verifica è in corso. Ti arriverà un messaggio dal Bot quando sarai abilitato.
</CTitleBanner>
</div>
</template>
<script lang="ts" src="./CUserNonVerif.ts">
</script>
<style lang="scss" scoped>
@import './CUserNonVerif.scss';
</style>

View File

@@ -0,0 +1 @@
export {default as CUserNonVerif} from './CUserNonVerif.vue'

View File

@@ -80,6 +80,7 @@ export default defineComponent({
getNumMsg,
getNumMsgUnread,
getMsgText,
isVerified,
paotest } = MixinUsers();
function isonline() {
@@ -382,10 +383,6 @@ export default defineComponent({
return userStore.isLogged
}
function isEmailVerified() {
return userStore.my.verified_email
}
function clickregister() {
rightDrawerOpen.value = false
@@ -445,7 +442,6 @@ export default defineComponent({
lang,
langshort,
isLogged,
isEmailVerified,
getnumOrdersCart,
t,
isonline,
@@ -485,6 +481,7 @@ export default defineComponent({
paotest,
logoutHandler,
isUserNotAuth,
isVerified,
}
},

View File

@@ -129,11 +129,18 @@
<q-img :src="getMyImgforIcon()" :alt="Username()" img-class=""/>
</q-avatar>-->
<q-avatar v-if="static_data.functionality.SHOW_USER_MENU && isLogged()"
<q-avatar v-if="static_data.functionality.SHOW_USER_MENU && isLogged() && getMyImg()"
size="36px" class="center_img cursor-pointer"
@click="rightDrawerOpen = !rightDrawerOpen">
<q-img ratio="1" fit="conver" :src="getMyImg()" :alt="Username()" img-class="imgprofile_small" stretch="false" />
<q-img ratio="1" fit="conver" :src="getMyImg()" :alt="Username()" img-class="imgprofile_small" stretch="false"
placeholder-src="https://placeimg.com/36/36/nature"/>
</q-avatar>
<q-btn
v-else
class="q-mx-xs iconprofile_small" round dense flat
@click="rightDrawerOpen = !rightDrawerOpen" :icon="getMyImgforIcon()" :color="getcolormenu()">
</q-btn>
<!--<q-btn
class="q-mx-xs iconprofile_small" v-if="static_data.functionality.SHOW_USER_MENU && isLogged()" round dense flat
@@ -188,7 +195,7 @@
dense flat round icon="close" @click="rightDrawerOpen = !rightDrawerOpen">
</q-btn>
<div v-if="isLogged()" class="text-weight-bold text-user">{{ Username() }} - {{ myName() }}
<div v-if="isLogged()" class="text-weight-bold text-user">{{ Username() }}<span v-if="myName()"> - {{ myName() }}</span>
</div>
<div class="row justify-evenly q-pa-xs-sm">
<div v-if="isLogged() && isAdmin()" class="text-weight-bold text-user bg-red q-px-xs">Admin</div>
@@ -203,7 +210,7 @@
{{ t('user.loggati') }}
</div>
<div v-if="isLogged() && !isEmailVerified()" class="text-verified">{{
<div v-if="isLogged() && !isVerified()" class="text-verified">{{
t('components.authentication.email_verification.verify_email')
}}
</div>

View File

@@ -280,6 +280,14 @@ $heightBtn: 100%;
box-shadow: none;
}
.my-card-withshadow {
width: 100%;
max-width: 300px;
min-width: 300px;
padding: 1rem 1rem;
}
.myimgtitle {
margin-left: auto;
margin-right: auto;
@@ -936,3 +944,7 @@ $heightBtn: 100%;
display: block;
}
}
.no-padding{
padding: 0 !important;
}

View File

@@ -102,7 +102,7 @@ const msg_website = {
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li><strong>Condividendolo</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>Rispondendo ai <strong>Sondaggi Popolari</strong> e lasciando <strong>Feedback</strong></li>'
+ '<li>Tramite una piccola <strong>donazione</strong> per le spese dei Server<br>'
+ '<li>Tramite una <strong>donazione</strong> (<strong>anche 1€</strong> ) per le spese.<br>'
+ '</ul>'
+ 'Vedo un <strong>futuro</strong> dove non si utilizzerà più denaro. Dove le persone si <strong>aiuteranno</strong> a vicenda e non avranno bisogno di "possedere" cose, ma le <strong>condivideranno</strong> con gli altri.<br>',
},

View File

@@ -27,6 +27,10 @@ const msg_website_es = {
nave: 'Nave',
testimonial: 'Opiniones',
Test: 'Test',
chisiamo: 'Chi Siamo',
linkamici: 'Link Amici',
dovesiamo: 'Dove Siamo',
calendarioeventi: 'Calendario Eventi',
Category: 'Categorie',
Admin: 'Admin',
Test1: 'Test1',

View File

@@ -1,8 +1,8 @@
const msg_website_it = {
ws: {
sitename: 'FreePlanet',
siteshortname: 'FreePlanet',
botname: 'il Bot di FreePlanet',
sitename: 'PopoloDelNuovoMondo',
siteshortname: 'PDNM',
botname: 'il Bot di PdNM',
},
products: {
quantity: 'Quantità',
@@ -208,7 +208,7 @@ const msg_website_it = {
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li><strong>Condividendolo</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>Rispondendo ai <strong>Sondaggi Popolari</strong> e lasciando <strong>Feedback</strong></li>'
+ '<li>Tramite una piccola <strong>donazione</strong> per le spese dei Server.<br>'
+ '<li>Tramite una <strong>donazione</strong> (<strong>anche 1€</strong> ) per le spese.<br>'
+ '</ul>'
+ 'Vedo un <strong>futuro</strong> dove non si utilizzerà più denaro. Dove le persone si <strong>aiuteranno</strong> a vicenda e non avranno bisogno di "possedere" cose, ma le <strong>condivideranno</strong> con gli altri.<br>',
},

View File

@@ -20,7 +20,7 @@ const functionality: IFunctionality = {
BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true,
SHOW_NAMESURNAME: false,
ENABLE_GROUPS: false,
}
// const SHOW_PROJINTHEMENU = false
@@ -374,12 +374,12 @@ const baseroutes: IListRoutes[] = [
path: '/',
materialIcon: 'home',
name: 'pages.home',
component: () => import('@src/root/home_freeplanet/home_freeplanet.vue'),
component: () => import('@src/root/home_pdnm/home_pdnm.vue'),
reqauth: false,
inmenu: true,
infooter: true,
},
{
/*{
active: true,
order: 100,
path: '/presentazione',
@@ -389,7 +389,7 @@ const baseroutes: IListRoutes[] = [
reqauth: false,
inmenu: true,
infooter: true,
},
},*/
{
active: true,
order: 120,
@@ -424,7 +424,7 @@ const baseroutes: IListRoutes[] = [
infooter: true,
},
{
active: true,
active: functionality.ENABLE_GROUPS,
order: 132,
path: '/groups',
materialIcon: 'fas fa-users',
@@ -447,7 +447,7 @@ const baseroutes: IListRoutes[] = [
},
{
active: true,
order: 135,
order: 136,
path: '/grp/:groupname',
materialIcon: 'fas fa-user',
name: 'proj.group2',
@@ -628,8 +628,8 @@ const baseroutes: IListRoutes[] = [
const arrLangUsed = [
'it',
// 'enUs',
// 'es',
'enUs',
'es',
]
const lang_available: ILang[] = [

View File

@@ -113,7 +113,7 @@ export default function () {
function Verificato() {
const userStore = useUserStore()
return userStore.my.verified_email && userStore.my.verified_by_aportador
return isVerified() && userStore.my.verified_by_aportador
}
function paotest() {
@@ -155,6 +155,20 @@ export default function () {
return ris
}
function isEmailVerified() {
const userStore = useUserStore()
return userStore.my.verified_email
}
function TelegVerificato(): boolean {
const userStore = useUserStore()
return userStore.my.profile ? userStore.my.profile.teleg_id! > 0 : false
}
function isVerified() {
return TelegVerificato()
}
return {
getUsernameChatByMsg,
getMyUsername,
@@ -175,6 +189,9 @@ export default function () {
getNumMsg,
getNumMsgUnread,
getMsgText,
isEmailVerified,
TelegVerificato,
isVerified,
paotest,
}
}

View File

@@ -257,6 +257,7 @@ export interface IGlobalState {
URL_RITORNA: string
URL_RESTORE: string
levels: ILevel[],
adtypes: IAdType[],
skills: ISkill[],
subSkills: ISubSkill[],
statusSkills: IStatusSkill[],
@@ -660,6 +661,11 @@ export interface ILevel {
years_of_exp: number
}
export interface IAdType {
_id: number
descr: string
}
export interface ICity {
_id: number
istat: string
@@ -677,8 +683,9 @@ export interface IMySkill {
idCity: number[]
photos: IGallery[]
NumLevel: number
adType: number
note: string
subTitle: string
descr: string
date_created?: Date,
date_updated?: Date,
}

View File

@@ -7,6 +7,7 @@ import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CDashboard } from '@/components/CDashboard'
import { CChartMap } from '@src/components/CChartMap'
import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
@@ -14,28 +15,22 @@ import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({
name: 'Home',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard },
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
function isEmailVerified() {
return userStore.my.verified_email
}
const { isEmailVerified, TelegVerificato } = MixinUsers()
function TelegCode() {
return userStore.my.profile.teleg_checkcode
}
function TelegVerificato(): boolean {
return userStore.my.profile ? userStore.my.profile.teleg_id! > 0 : false
}
function openrighttoolbar() {
globalStore.rightDrawerOpen = true
}

View File

@@ -13,14 +13,14 @@
<div v-if="isLogged()">
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<CVerifyTelegram v-if="TelegCode() || !TelegVerificato()">
</CVerifyTelegram>
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<div v-if="isUserOk()">
<CFinder>
@@ -30,6 +30,9 @@
<CDashboard></CDashboard>
</div>
<div v-else>
<CUserNonVerif></CUserNonVerif>
</div>
</div>
<div v-else>

View File

@@ -7,6 +7,7 @@ import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CChartMap } from '@src/components/CChartMap'
import { CDashboard } from '@/components/CDashboard'
import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
@@ -14,19 +15,17 @@ import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({
name: 'Home',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard },
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
function isEmailVerified() {
return userStore.my.verified_email
}
const { isEmailVerified } = MixinUsers()
function TelegCode() {
return userStore.my.profile.teleg_checkcode

View File

@@ -13,14 +13,14 @@
<div v-if="isLogged()">
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<CVerifyTelegram v-if="TelegCode() || !TelegVerificato()">
</CVerifyTelegram>
<CVerifyEmail v-if="!isEmailVerified() && !TelegVerificato()">
</CVerifyEmail>
<div v-if="isUserOk()">
<div v-if="isUserOk()">
@@ -32,6 +32,9 @@
</div>
</div>
<div v-else>
<CUserNonVerif></CUserNonVerif>
</div>
</div>
<div v-else>

View File

@@ -7,6 +7,7 @@ import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CChartMap } from '@src/components/CChartMap'
import { CDashboard } from '@/components/CDashboard'
import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
@@ -14,28 +15,23 @@ import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({
name: 'Home',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard },
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
const { isEmailVerified, TelegVerificato } = MixinUsers()
function isEmailVerified() {
return userStore.my.verified_email
}
function TelegCode() {
return userStore.my.profile.teleg_checkcode
}
function TelegVerificato(): boolean {
return userStore.my.profile ? userStore.my.profile.teleg_id! > 0 : false
}
function openrighttoolbar() {
globalStore.rightDrawerOpen = true
}

View File

@@ -12,14 +12,12 @@
<!--<CMapsEsempio></CMapsEsempio>-->
<div v-if="isLogged()">
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<CVerifyTelegram v-if="TelegCode() || !TelegVerificato()">
</CVerifyTelegram>
<CVerifyEmail v-if="!isEmailVerified() && !TelegVerificato()">
</CVerifyEmail>
<div v-if="isUserOk()">
@@ -39,6 +37,9 @@
</template>
</q-banner>
</div>
<div v-else>
<CUserNonVerif></CUserNonVerif>
</div>
</div>
<div v-else>

View File

@@ -31,7 +31,7 @@ const msg_it = {
otherpages: {
product: 'Prodotto',
sito_offline: 'Sito in Aggiornamento',
modifprof: 'Modifica Profilo',
modifprof: 'Modifica',
modifgrp: 'Modifica Gruppo',
biografia: 'Biografia',
qualifica: 'Qualifica (in breve)',

View File

@@ -316,6 +316,11 @@ export const colTableStorehouse = [
AddCol(DuplicateRec),
]
export const colAdType = [
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'descr', label_trans: 'store.description' }),
]
export const colSectors = [
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'descr', label_trans: 'store.description' }),
@@ -502,7 +507,7 @@ export const colmyUserGroup = [
noshowlabel: true,
icon: 'fas fa-map-marker-alt',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
remote_table: 'comune',
remote_table: 'mycities',
remote_key: '_id',
remote_field: 'comune',
}),
@@ -523,8 +528,18 @@ export const colmySkills = [
}), */
//AddCol({ name: 'name', label_trans: 'reg.name', fieldtype: costanti.FieldType.string }),
//AddCol({ name: 'surname', label_trans: 'reg.surname', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'subTitle', label_trans: 'event.title', fieldtype: costanti.FieldType.string,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit , maxlength: 70, noshowlabel: true }),
// AddCol({ name: 'subTitle', label_trans: 'event.title', fieldtype: costanti.FieldType.string,
// showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit , maxlength: 70, noshowlabel: true }),
AddCol({
name: 'adTypes',
label_trans: 'adTypes.name',
fieldtype: costanti.FieldType.select,
required: true,
jointable: 'adtypes',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'grading',
}),
AddCol({ name: 'descr', label_trans: 'proj.shortdescr', fieldtype: costanti.FieldType.string,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, noshowlabel: true, maxlength: 200 }),
AddCol({
@@ -569,7 +584,7 @@ export const colmySkills = [
filter_field: 'idSkill',
noshowlabel: true,
icon: 'far fa-id-card',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
allowNewValue: true,
}),
AddCol({
@@ -609,7 +624,10 @@ export const colmySkills = [
tablesel: 'cities',
noshowlabel: true,
icon: 'fas fa-map-marker-alt',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
remote_table: 'mycities',
remote_key: '_id',
remote_field: 'comune',
}),
AddCol({ name: 'username', label_trans: 'reg.username', foredit: false, tipovisu: costanti.TipoVisu.LINK, link: '/my/username', noshowlabel: true }),
AddCol({ name: 'note', label_trans: 'proj.longdescr', fieldtype: costanti.FieldType.html,
@@ -1984,6 +2002,13 @@ export const fieldsTable = {
colkey: '_id',
collabel: 'descr',
},
{
value: 'adtypes',
label: 'Tipo Annuncio',
columns: colAdType,
colkey: '_id',
collabel: 'descr',
},
{
value: 'cities',
label: 'Comune',

View File

@@ -3124,7 +3124,7 @@ export const tools = {
const msg2 = t('fetch.errore_generico') + userStore.getMsgError(riscode)
this.showNotif(mythisq, msg2)
} else if (riscode === this.OK) {
$router.push('/regok')
$router.push('/')
this.showNotif(mythisq, t('components.authentication.email_verification.link_sent', { botname: t('ws.botname') }), {
color: 'green',
textColor: 'black',
@@ -4856,6 +4856,27 @@ export const tools = {
} else {
return value[keyfunz]
}
},
getValueByRemoteField(col: IColGridTable, row: any, value: any, col_tabfooter: string) {
if (col) {
if (col.remote_table && col.remote_key && col.remote_field && col_tabfooter) {
const myarrremote = row[col.remote_table]
let myarr: any = []
for (const myrec of myarrremote) {
let myval = myrec[col.remote_field]
myarr.push(myval)
}
return myarr ? myarr.join(' - ') : ''
}
}
return ''
}

View File

@@ -221,7 +221,12 @@ export const useUserStore = defineStore('UserStore', {
return ''
},
getImgByProfile(userparam: IUserFields): string {
getImgUserByUsername(username: string): string {
let img = this.getImgByUsername(username)
return img ? img : 'images/noimg-user.svg'
},
getImgByProfile(userparam: IUserFields, reale: any = false): string {
try {
if (userparam.profile && userparam.profile.img) {
@@ -229,7 +234,10 @@ export const useUserStore = defineStore('UserStore', {
}
} catch (e) {
}
if (!reale)
return 'images/noimg.png'
else
return ''
},
getImgByGroup(group: IMyGroup): string {

View File

@@ -117,6 +117,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
URL_RITORNA: '',
URL_RESTORE: '',
levels: [],
adtypes: [],
skills: [],
subSkills: [],
statusSkills: [],
@@ -232,6 +233,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
return state.settings
else if (table === 'levels')
return state.levels
else if (table === 'adtypes')
return state.adtypes
else if (table === 'skills')
return state.skills
else if (table === 'subskills')
@@ -1227,6 +1230,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
this.sectors = (res.data.sectors) ? [...res.data.sectors] : []
this.cities = (res.data.cities) ? [...res.data.cities] : []
this.catgrps = (res.data.catgrps) ? [...res.data.catgrps] : []
this.adtypes = (res.data.adtypes) ? [...res.data.adtypes] : []
// console.log('res.data.cart', res.data.cart)

View File

@@ -220,6 +220,40 @@
<br>
</div>
<div class="row">
<q-btn
label="Populate Tables" color="negative"
@click="EseguiFunz('PopulateTables')"></q-btn>
<br>
</div>
<div class="row">
<q-btn
label="Rewrite Cities Table" color="negative"
@click="EseguiFunz('RewriteCitiesTable')"></q-btn>
<br>
</div>
<div class="row">
<q-btn
label="Rewrite Levels Table" color="negative"
@click="EseguiFunz('RewriteLevelsTable')"></q-btn>
<br>
</div>
<div class="row">
<q-btn
label="Rewrite Provinces Table" color="negative"
@click="EseguiFunz('RewriteProvincesTable')"></q-btn>
<br>
</div>
<div class="row">
<q-btn
label="Rewrite ContribType" color="negative"
@click="EseguiFunz('RewriteContribType')"></q-btn>
<br>
</div>
<q-field
stack-label

View File

@@ -2,6 +2,7 @@ import { defineComponent } from 'vue'
import { Footer } from '@/components/Footer'
import { useUserStore } from '@store/UserStore'
import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({
name: 'Regok',
@@ -9,13 +10,7 @@ export default defineComponent({
props: {},
setup() {
const userStore = useUserStore()
function isEmailVerified() {
if (userStore.my)
return userStore.my.verified_email
else
return false
}
const { isEmailVerified } = MixinUsers()
return {
isEmailVerified,

View File

@@ -74,7 +74,7 @@
<CTitleBanner
class="q-pa-xs" title="Competenze e Talenti" bgcolor="bg-primary" clcolor="text-white"
class="q-pa-xs" title="Competenze Personali (Offerte)" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
<CSkill

View File

@@ -89,6 +89,10 @@ export default defineComponent({
return site
}
function isMyRecord(username: string){
return username === userStore.my.username
}
onMounted(mounted)
return {
@@ -109,6 +113,7 @@ export default defineComponent({
t,
static_data,
animation,
isMyRecord,
}
}
})

View File

@@ -1,41 +1,13 @@
<template>
<div class="row q-col-gutter-sm q-ma-xs">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<q-card v-if="myuser.date_reg" class="my-card" flat bordered>
<q-card-section>
<div class="text-overline" v-if="myuser.profile.qualifica"><em><span
class="qualifica">{{ myuser.profile.qualifica }}</span></em></div>
<div class="text-overline"><span
v-if="myuser.profile && myuser.profile.born_city">{{ myuser.profile.born_city }}</span>
<span
v-if="myuser.profile && myuser.profile.nationality && myuser.profile.nationality !== 'Italia'">({{
myuser.profile.nationality
}})</span>
</div>
</q-card-section>
<div class="q-gutter-sm q-pa-sm q-pb-md">
<div v-if="myuser.date_reg" class="fit column no-wrap justify-evenly items-center content-start">
<q-card-section horizontal>
<q-card-section class="q-pt-xs">
<div class="text-h5 q-mt-sm q-mb-xs">{{ myuser.username }}</div>
<div class="text-caption text-blue-grey-10">
{{ myuser.profile.biografia }}
</div>
</q-card-section>
<q-card-section class="col-5 flex flex-center">
<q-avatar size="140px" class="rounded-borders">
<div class="">
<q-avatar size="140px">
<q-img :src="getImgUser()" :alt="username" img-class="imgprofile" height="140px" @click="showPic = true"/>
</q-avatar>
</q-card-section>
</q-card-section>
<q-separator/>
</q-card>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<q-card>
<q-card-section>
<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')">{{
@@ -43,22 +15,25 @@
}}</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">{{ myuser.profile.born_city }}</span> <span
v-if="myuser.profile && myuser.profile.nationality && myuser.profile.nationality !== 'Italia'">({{
myuser.profile.nationality
}})</span>
</div>
<div v-if="myuser._id" class="col-12 text-h8 q-mt-sm">
<span v-if="myuser.profile.qualifica">
<em><span class="qualifica">{{ myuser.profile.qualifica }}</span></em>
</span>
</div>
<div v-if="myuser._id" class="col-12 text-h8 q-mt-sm">
{{ myuser.profile.biografia }}
</div>
<div class="col-6 text-h6">
<CTitleBanner
class="" title="Info" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
<CDateTime
v-if="checkifShow('profile.dateofbirth') && !!myuser.profile.dateofbirth"
v-model:value="myuser.profile.dateofbirth"
:label="$t('reg.dateofbirth')"
:canEdit="false">
</CDateTime>
<q-card-section class="col-md-6 col-sm-6 q-ma-xs col-xs-12 flex flex-center">
<div>
<div v-if="myuser.username !== userStore.my.username">
<div v-if="!isMyRecord(myuser.username)">
<q-btn
v-if="!userStore.IsMyFriendByUsername(myuser.username) && !userStore.IsAskedFriendByUsername(myuser.username)"
icon="fas fa-user-plus"
@@ -74,6 +49,7 @@
</div>
<q-btn
v-if="myuser.username === myusername()" icon="fas fa-pencil-alt"
color="blue"
@@ -81,9 +57,9 @@
:label="$t('otherpages.modifprof')"
to="/editprofile">
</q-btn>
</div>
<div v-if="myuser._id" class="myrow justify-evenly items-center q-pa-xs q-ma-xs">
<div v-if="myuser._id" 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"
@@ -106,20 +82,6 @@
</q-btn>
</div>
</div>
</q-card-section>
</CTitleBanner>
</div>
</q-card-section>
</q-card>
</div>
</div>
<div class="q-gutter-sm q-pa-sm q-pb-md">
<div v-if="myuser.date_reg" class="fit column no-wrap justify-evenly items-center content-start">
</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"/>
@@ -149,7 +111,7 @@
<CSkill
:filtercustom="filtroutente"
:butt_modif_new="false"
:butt_modif_new="isMyRecord(myuser.username)"
>
@@ -158,6 +120,28 @@
</CTitleBanner>
<div v-if="myuser._id">
<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-6 text-h6">
<CDateTime
v-if="checkifShow('profile.dateofbirth') && !!myuser.profile.dateofbirth"
v-model:value="myuser.profile.dateofbirth"
:label="$t('reg.dateofbirth')"
:canEdit="false">
</CDateTime>
</div>
</div>
</CTitleBanner>
</div>
</div>
<q-dialog