- aggiornata la grafica della Home di RISO

- Profilo Completition
- Email Verificata
- Invita un Amico (invio di email)
This commit is contained in:
Surya Paolo
2025-11-15 19:38:39 +01:00
parent d812c6c799
commit b8df3ea721
110 changed files with 10856 additions and 2765 deletions

View File

@@ -1,12 +0,0 @@
.signup {
width: 100%;
margin: 0 auto;
max-width: 450px;
}
.wrapper {
display: flex;
align-items: center;
justify-content: center;
}

View File

@@ -1,43 +0,0 @@
import { defineComponent, ref, computed } from 'vue'
import { useI18n } from 'vue-i18n'
import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore'
import { useQuasar } from 'quasar'
import { CMyPage } from '../../../components/CMyPage'
import { LandingFooter } from '../../../components/LandingFooter'
import { CTitleBanner } from '../../../components/CTitleBanner'
import { CSignUpIscrizioneArcadei } from '@src/components/CSignUpIscrizioneArcadei'
export default defineComponent({
name: 'Iscrizionearcadei',
props: {
mystr: {
type: String,
required: true,
default: '',
},
myval: {
type: Number,
required: true,
default: 0,
},
mybool: {
type: Boolean,
required: true,
default: false,
},
},
components: { CSignUpIscrizioneArcadei, CMyPage, LandingFooter, CTitleBanner },
setup(props, { emit }) {
const userStore = useUserStore()
function isSocio() {
return userStore.my.profile.socio
}
return {
isSocio,
}
}
})

View File

@@ -1,26 +0,0 @@
<template>
<div>
<CMyPage mypath="/diventa_socio">
</CMyPage>
<CTitleBanner v-if="isSocio()" title="Nota: Ci risulta che sei già Socio Iscritto !"
bgcolor="bg-positive"
clcolor="text-white"></CTitleBanner>
<q-page padding>
<div class="signup">
<CSignUpIscrizioneArcadei>
</CSignUpIscrizioneArcadei>
</div>
<LandingFooter></LandingFooter>
</q-page>
</div>
</template>
<script lang="ts" src="./iscrizionearcadei.ts">
</script>
<style lang="scss" scoped>
@import './iscrizionearcadei.scss';
</style>

View File

@@ -1,12 +0,0 @@
.profile {
width: 100%;
margin: 0 auto;
max-width: 450px;
}
.myrow{
display: flex;
@media (max-width: 600px) {
flex-flow: column;
}
}

View File

@@ -1,118 +0,0 @@
import { CMyFieldDb } from '@src/components/CMyFieldDb'
import { CMyFieldRec } from '@src/components/CMyFieldRec'
import { CTitleBanner } from '@src/components/CTitleBanner'
import { CProfile } from '@src/components/CProfile'
import { CSkill } from '@src/components/CSkill'
import { CMySelectCity } from '@src/components/CMySelectCity'
import { tools } from '@tools'
import { defineComponent, onMounted, ref } from 'vue'
import { useUserStore } from '@store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from 'vue-i18n'
import { toolsext } from '@store/Modules/toolsext'
import { useQuasar } from 'quasar'
import { costanti } from '@costanti'
import { static_data } from '@src/db/static_data'
import { IUserFields } from 'model'
export default defineComponent({
name: 'EditProfile',
components: {
CProfile, CTitleBanner,
CMySelectCity, CMyFieldDb, CSkill, CMyFieldRec
},
props: {},
setup() {
const userStore = useUserStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const $q = useQuasar()
const { t } = useI18n();
const myuser = ref({})
const filtroutente = ref(<any[]>[])
function getpayment() {
return userStore.my.profile.paymenttypes
}
function profile() {
return userStore.my.profile
}
function eliminaAccount() {
$q.dialog({
message: t('reg.cancellami', { sitename: t('ws.sitename') }),
cancel: {
label: t('dialog.cancel')
},
ok: {
label: t('dialog.yes'),
push: true
},
title: t('pages.profile')
}).onOk(() => {
$q.dialog({
message: t('reg.cancellami_2', { sitename: t('ws.sitename') }),
cancel: {
label: t('dialog.cancel')
},
ok: {
label: t('dialog.yes'),
push: true
},
title: t('pages.profile')
})
.onOk(() => {
globalStore.DeleteRec({ table: toolsext.TABUSER, id: userStore.my._id })
.then(async (ris: any) => {
if (ris) {
tools.showPositiveNotif($q, t('reg.account_cancellato'))
await userStore.logout()
$router.replace('/')
} else
tools.showNegativeNotif($q, t('db.recfailed'))
})
})
})
}
async function loadProfile() {
// Carica il profilo di quest'utente
await userStore.loadUserProfile({ username: userStore.my.username }).then((ris) => {
myuser.value = ris
// console.log('myuser._id', ris)
})
}
function mounted() {
filtroutente.value = [
{ userId: userStore.my._id }
]
loadProfile()
}
onMounted(mounted)
return {
eliminaAccount,
profile,
getpayment,
tools,
costanti,
static_data,
filtroutente,
myuser,
t,
userStore,
site: globalStore.site,
globalStore,
}
}
})

View File

@@ -1,390 +0,0 @@
<template>
<div class="q-gutter-sm q-pa-xs q-pb-md">
<CTitleBanner
class="q-pa-xs"
:title="$t('pages.profile')"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad"
:canopen="true"
>
<div class="column">
<div class="">
<CMyFieldDb
:title="$t('reg.username')"
table="users"
mykey="username"
:disable="true"
:readonly="true"
:type="costanti.FieldType.string"
>
</CMyFieldDb>
<CMyFieldDb
:title="$t('reg.email')"
table="users"
mykey="email"
:disable="true"
:type="costanti.FieldType.string"
>
</CMyFieldDb>
</div>
<div>{{ t('profile.info_msg') }}</div>
<div class="myrow">
<div v-if="site.confpages.showNameSurname">
<CMyFieldDb
:title="$t('reg.name')"
table="users"
mykey="name"
:type="costanti.FieldType.string"
>
</CMyFieldDb>
<CMyFieldDb
:title="$t('reg.surname')"
table="users"
mykey="surname"
:type="costanti.FieldType.string"
>
</CMyFieldDb>
</div>
</div>
<div class="myrow">
<CMyFieldDb
:title="$t('reg.username_telegram')"
table="users"
mykey="profile"
mysubkey="username_telegram"
:type="costanti.FieldType.string"
:notAllowAtChar="true"
>
</CMyFieldDb>
</div>
<div class="myrow">
<CMyFieldDb
:title="$t('reg.website')"
table="users"
mykey="profile"
mysubkey="website"
:type="costanti.FieldType.string"
>
</CMyFieldDb>
</div>
<br />
<div class="myrow justify-center">
<q-btn
push
rounded
color="white"
text-color="blue"
size="md"
to="/requestresetpwd"
:label="$t('reg.modificapassword')"
>
</q-btn>
</div>
</div>
</CTitleBanner>
<CTitleBanner
class="q-pa-xs"
:title="$t('profile.info')"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad"
:canopen="true"
>
<div class="myrow">
<CMyFieldDb
:title="$t('reg.photo')"
table="users"
mykey="profile"
mysubkey="img"
:type="costanti.FieldType.imagerec"
>
</CMyFieldDb>
</div>
<CMyFieldDb
title="Qualifica"
table="users"
mykey="profile"
mysubkey="qualifica"
:maxlength="100"
:showall="true"
:type="costanti.FieldType.string"
>
</CMyFieldDb>
<CMyFieldDb
title="Biografia"
table="users"
mykey="profile"
mysubkey="biografia"
:maxlength="1000"
hint="Scrivi chi sei e quale percorso formativo hai fatto"
:showall="true"
:type="costanti.FieldType.string"
>
</CMyFieldDb>
<div class="myrow">
<CMyFieldDb
v-if="false"
:title="$t('reg.nationality')"
table="users"
tablesel="countries"
mykey="profile"
:useinput="false"
mysubkey="nationality"
:pickup="true"
:type="costanti.FieldType.nationality"
>
</CMyFieldDb>
<!--
<CMyFieldDb
v-if="myuser"
:title="$t('reg.residency_city')"
table="users"
tablesel="cities"
mykey="profile"
mysubkey="born_city_id"
:useinput="false"
jointable="cities"
:pickup="true"
:type="costanti.FieldType.select_by_server"
:rec="myuser"
/>
-->
<CMyFieldDb
:title="$t('reg.dateofbirth')"
table="users"
mykey="profile"
mysubkey="dateofbirth"
:type="costanti.FieldType.date"
>
</CMyFieldDb>
<CMySelectCity
:label="$t('reg.resid_province')"
table="users"
jointable="provinces"
v-model="userStore.my.profile.resid_province"
myclass="selectorwide text-white"
:db_type="costanti.FieldType.string"
db_field="profile"
db_subfield="resid_province"
:db_id="userStore.my._id"
:db_rec="userStore.my"
>
</CMySelectCity>
<CMySelectCity
v-if="
globalStore.isPresenteCardsByProv(
userStore.my.profile.resid_province
)
"
:label="$t('reg.resid_card')"
table="users"
jointable="cards"
v-model="userStore.my.profile.resid_card"
myclass="selectorwide text-white"
:db_type="costanti.FieldType.string"
db_field="profile"
db_subfield="resid_card"
:db_id="userStore.my._id"
:db_rec="userStore.my"
:value2="userStore.my.profile.resid_province"
>
</CMySelectCity>
</div>
<div class="myrow">
<CMyFieldDb
:title="$t('reg.intcode_cell')"
table="users"
mykey="profile"
mysubkey="intcode_cell"
:type="costanti.FieldType.intcode"
tablesel="phones"
:pickup="true"
>
</CMyFieldDb>
<CMyFieldDb
:title="$t('reg.cell')"
table="users"
mykey="profile"
mysubkey="cell"
:type="costanti.FieldType.string"
>
</CMyFieldDb>
</div>
</CTitleBanner>
<!--
<div class="column">
<div class="myrow">
<CMyFieldDb
title="Motivazioni"
table="users"
mykey="profile"
mysubkey="motivazioni"
:type="costanti.FieldType.string">
</CMyFieldDb>
</div>
<div class="myrow">
<CMyFieldDb
title="Competenze e Professionalità"
table="users"
mykey="profile"
mysubkey="competenze_professionalita"
:type="costanti.FieldType.string">
</CMyFieldDb>
</div>
<div class="myrow">
<CMyFieldDb
title="Cosa potrei offrire?"
table="users"
mykey="profile"
mysubkey="cosa_offrire"
:type="costanti.FieldType.string">
</CMyFieldDb>
</div>
<div class="myrow">
<CMyFieldDb
title="Cosa vorrei ricevere?"
table="users"
mykey="profile"
mysubkey="cosa_ricevere"
:type="costanti.FieldType.string">
</CMyFieldDb>
</div>
<div class="myrow">
<CMyFieldDb
title="Altre Comunicazioni"
table="users"
mykey="profile"
mysubkey="altre_comunicazioni"
:type="costanti.FieldType.string">
</CMyFieldDb>
</div>
<div class="myrow">
<CMyFieldDb
title="Come ci hai conosciuto?"
table="users"
mykey="profile"
mysubkey="come_ci_hai_conosciuto"
:type="costanti.FieldType.string">
</CMyFieldDb>
</div>
</div>
-->
<!--
<CTitleBanner class="q-pa-xs" :title="$t('pages.payment')" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
<div class="myrow fa-border justify-center items-center">
<CMyFieldDb v-if="costanti.isselectPayeer()"
:title="$t('reg.payeer_id')"
table="users"
mykey="profile"
myimg="statics/images/payeer.jpg"
mysubkey="payeer_id"
:type="costanti.FieldType.string">
</CMyFieldDb>
<CMyFieldDb v-if="costanti.isselectAdvCash()"
:title="$t('reg.advcash_id')"
table="users"
mykey="profile"
mysubkey="advcash_id"
myimg="statics/images/advcash.jpg"
:type="costanti.FieldType.string">
</CMyFieldDb>
<CMyFieldDb v-if="costanti.isselectRevolut()"
:title="$t('reg.revolut')"
table="users"
mykey="profile"
mysubkey="revolut"
myimg="statics/images/revolut.jpg"
:type="costanti.FieldType.string">
</CMyFieldDb>
<CMyFieldDb v-if="costanti.isselectPaypal()"
:title="$t('reg.email_paypal')"
table="users"
mykey="profile"
mysubkey="email_paypal"
myimg="statics/images/paypal.jpg"
:type="costanti.FieldType.string">
</CMyFieldDb>
<CMyFieldDb v-if="costanti.isselectPaypal()"
:title="$t('reg.link_payment')"
table="users"
mykey="profile"
mysubkey="link_payment"
:type="costanti.FieldType.string">
</CMyFieldDb>
<CMyFieldDb :title="$t('reg.country_pay')"
table="users"
mykey="profile"
mysubkey="country_pay"
:type="costanti.FieldType.nationality">
</CMyFieldDb>
<CMyFieldDb :title="$t('reg.note_payment')"
table="users"
mykey="profile"
mysubkey="note_payment"
:type="costanti.FieldType.string">
</CMyFieldDb>
</div>
<CMyFieldDb :title="$t('reg.paymenttype')"
table="users"
mykey="profile"
mysubkey="paymenttypes"
:type="costanti.FieldType.multiselect"
jointable="paymenttypes">
</CMyFieldDb>
</CTitleBanner>
-->
<br /><br />
<div class="text-center">
<q-btn
rounded
size="md"
color="negative"
@click="eliminaAccount"
:label="$t('reg.cancella_account')"
>
</q-btn>
</div>
</div>
</template>
<script lang="ts" src="./editprofile.ts">
</script>
<style lang="scss" scoped>
@import './editprofile.scss';
</style>
<!--<CMyFieldDb :title="$t('reg.username_telegram')"
table="users"
mykey="profile"
mysubkey="username_telegram"
:type="costanti.FieldType.string">
</CMyFieldDb>-->
<!--<CMyFieldDb title="Telegram Id"
table="users"
:readonly="true"
mykey="profile"
mysubkey="teleg_id"
:type="costanti.FieldType.number">
</CMyFieldDb>-->

View File

@@ -64,19 +64,6 @@
</q-btn>
<div>
<q-btn
v-if="
!userStore.IsMyGroupByGroupname(mygrp.groupname) &&
!userStore.IsAskedGroupByGroupname(mygrp.groupname) &&
!userStore.IsRefusedGroupByGroupname(mygrp.groupname)
"
icon="fas fa-user-plus"
color="primary"
:label="$t('groups.ask_group')"
@click="
tools.setRequestGroup($q, userStore.my.username, mygrp.groupname, true)
"
/>
<q-btn
v-if="userStore.IsMyGroupByGroupname(mygrp.groupname)"
rounded
@@ -213,8 +200,11 @@
v-if="tools.iCanShowGroupsMember(mygrp) || tools.iAmAdminGroup(groupname)"
:label="t('groups.circuits') + ' (' + circuitslist.length + ')'"
name="circuits"
:style="`background-color: ${circuitslist.length > 0 ? 'rgba(0, 200, 0, 0.8)' : 'rgba(255, 0, 0, 0.8)'}; color: white; font-weight: bold;`"
s
:style="
circuitslist.length > 0
? `background-color: ${circuitslist.length > 0 ? 'rgba(0, 200, 0, 0.8)' : ''}; color: white; font-weight: bold;`
: ''
"
icon="img: /images/1ris_rosso_100.png"
></q-tab>
</q-tabs>
@@ -252,9 +242,7 @@
type="a"
size="md"
rounded
:label="
t('reg.website') + ' ' + tools.getMainUrl(getLinkWebSite())
"
:label="t('reg.website') + ' ' + tools.getMainUrl(getLinkWebSite())"
:href="getLinkWebSite()"
target="__blank"
></q-btn>
@@ -388,13 +376,25 @@
<q-banner
v-if="circuitslist.length === 0"
rounded
class="bg-red-8 text-white text-bold"
dense
class="bg-grey-2 text-grey-9 q-pa-sm items-center"
>
Nessun Circuito RIS ancora abilitato da parte del gruppo
<q-icon
name="info"
color="primary"
class="q-mr-sm"
/>
<span
>Nessun circuito RIS è ancora stato abilitato per questo
gruppo.</span
>
</q-banner>
<q-select
v-if="tools.iAmAdminGroup(groupname) && circuitslist.length <= 1 && !requestToEnterCircuit"
v-if="
tools.iAmAdminGroup(groupname) &&
circuitslist.length <= 1 &&
!requestToEnterCircuit
"
v-model="circuitSel"
class="q-pa-md q-ma-sm"
:options="
@@ -457,6 +457,20 @@
style="max-width: 500px"
v-if="tools.iCanShowGroupsMember(mygrp)"
>
<q-btn
v-if="
!userStore.IsMyGroupByGroupname(mygrp.groupname) &&
!userStore.IsAskedGroupByGroupname(mygrp.groupname) &&
!userStore.IsRefusedGroupByGroupname(mygrp.groupname)
"
icon="fas fa-user-plus"
color="primary"
:label="$t('groups.ask_group')"
@click="
tools.setRequestGroup($q, userStore.my.username, mygrp.groupname, true)
"
/>
<q-tabs
v-show="tools.iAmAdminGroup(groupname)"
v-model="tabmembers"
@@ -547,7 +561,7 @@
<div v-if="circuitslist.length === 0">
<q-banner
rounded
class="bg-red-8 text-white text-bold"
class="bg-grey-2 text-grey-9 q-pa-sm items-center"
>
Nessun Circuito RIS ancora abilitato da parte del gruppo
</q-banner>