- Gruppi si chiamano ora "Organizzazioni".

- Categorie dei Gruppi aggiornate.
- Email ora compare sul profilo se non hai telegram e anche sugli annunci.
This commit is contained in:
Surya Paolo
2025-01-28 23:32:37 +01:00
parent 17bcc1644d
commit d65d4e3ffa
59 changed files with 555 additions and 328 deletions

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet"

View File

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

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="19"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet"

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="19"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -99,9 +99,6 @@ const msg_website_enUs = {
people: 'Gue.',
peoplelegend: 'Number of guests',
},
admin_ecommerce: 'ECommerce',
ecommerce: 'Prodotti',
ecommerce_menu: 'ECommerce1',
hours: 'Ore',
department: 'Uffici',
title: 'Titolo',

View File

@@ -1,6 +1,6 @@
{
"name": "abitaregliiblei",
"version": "1.1.17",
"version": "1.1.18",
"description": "Abitare Gli Iblei",
"productName": "AbitareGliIblei",
"author": "Paolo Arena",

View File

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

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="16"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "1.1.17",
"version": "1.1.18",
"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",
"author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="15"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="15"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{
"name": "fioredellavita",
"version": "1.1.17",
"version": "1.1.18",
"description": "Fiore Della Vita",
"productName": "Fiore Della Vita",
"author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -30,27 +30,6 @@ const msg_website_it = {
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',
producer: 'Produttore',
orderinfo: 'Ordini Effettuati',
products: 'Prodotti',
cash: 'Cassa',
productInfos: 'Info Prodotti',
listinoprodotti: 'Listino Prodotti',
productslist: 'Lista Prodotti',
collabora: 'Collabora',
categories: 'Categorie',
storehouses: 'Magazzino',
providers: 'Fornitori',
catprods: 'Categorie',
subcatprods: 'Sotto-Categorie',
gasordine: 'Gas Ordine',
scontisticas: 'Scontistica',
departments: 'Uffici',
orders: 'Ordini Ricevuti',
orders2: 'Ordini Ricevuti',
sharewithus: 'Condividi con Noi',
checkout: 'Carrello',
payment: 'Pagamenti',
regok: 'Registrazione Confermata',
presentazione: 'Presentazione',
presentazione2: 'Presentazione',
@@ -101,9 +80,6 @@ const msg_website_it = {
projectsShared: 'Condivisi da me',
myprojects: 'Privati',
favproj: 'Favoriti',
admin_ecommerce: 'ECommerce',
ecommerce: 'Prodotti',
ecommerce_menu: 'ECommerce1',
hours: 'Ore',
department: 'Uffici',
title: 'Titolo',
@@ -133,8 +109,6 @@ const msg_website_it = {
only_residenti: 'Solo Residenti',
only_consiglio: 'Solo Consiglieri',
color: 'Colore',
gasordini: 'Gas Ordini',
gestoreordini: 'Gestore Ordini',
},
msg: {
myAppName: 'Più che Buono',

View File

@@ -1,6 +1,6 @@
{
"name": "gruppomacro",
"version": "1.1.17",
"version": "1.1.18",
"description": "GruppoMacro",
"productName": "Gruppo Macro",
"author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,6 +1,6 @@
{
"name": "piuchebuono",
"version": "1.1.17",
"version": "1.1.18",
"description": "PiuCheBuono",
"productName": "PiuCheBuono",
"author": "Paolo Arena",

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.17"
APP_VERSION="1.1.18"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="16"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "1.1.17",
"version": "1.1.18",
"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",
"author": "Paolo Arena",

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "1.1.17",
"version": "1.1.18",
"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",
"author": "Paolo Arena",

View File

@@ -34,7 +34,7 @@ self.addEventListener('activate', (event) => {
});
const APP_VERSION = "1.1.17";
const APP_VERSION = "1.1.18";
console.log(' [ VER-' + APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker');

View File

@@ -323,14 +323,14 @@ export const shared_consts = {
label: 'Con Provincia inserita',
value: 16777216, //FILTER_USER_PROVINCE:
},
{
label: 'Facilitatore RISO',
value: 4294967296, //FILTER_FACILITATORE: ,:
},
],
RECFILTRI_UTENTE_FACIL: [
{
label: 'Facilitatore RISO',
value: 4294967296, //FILTER_FACILITATORE: ,:
},
{
label: 'Non ancora approvati dall\'invitante',
value: 2097152, // shared_consts.FILTER_USER_NO_VERIFIED_APORTADOR

View File

@@ -1,12 +1,16 @@
<template>
<div
v-if="(getLinkUserTelegram() && tools.isUserOk()) || showBtnActivities"
v-if="
((getLinkUserTelegram() || (myuser.email && tools.isEmailVerified())) &&
tools.isUserOk()) ||
showBtnActivities
"
class=""
>
<q-inner-loading id="spinner" :showing="loading">
<q-spinner-tail color="primary" size="4em"> </q-spinner-tail>
</q-inner-loading>
<div class="row justify-evenly items-center q-ma-xs">
<div class="row justify-center items-center q-ma-xs">
<div class="q-pa-xs">
<q-btn
v-if="
@@ -49,28 +53,34 @@
target="__blank"
>
</q-btn>
<div v-else-if="myuser.email && tools.isUserOk()" class="row q-ma-sx">
<CLabel
v-bind="$attrs"
:copy="true"
:value="tools.isUserOk() ? myuser.email : ''"
:label="$t('reg.email')"
/>
<q-btn
outline
icon="fas fa-envelope"
:color="$q.dark.isActive ? `white` : `black`"
:type="tools.isUserOk() ? 'a' : 'btn'"
size="md"
:label="$t('msgs.send_email')"
:href="tools.isUserOk() ? tools.getemailto(myuser.email) : null"
@click="
!tools.isUserOk() ? (showingtooltip = !showingtooltip) : false
"
target="__blank"
>
</q-btn>
<div
v-else-if="myuser.email && !tools.isUsernameTelegOk()"
class="row justify-center q-ma-sx"
>
<div>
<CLabel
v-bind="$attrs"
:copy="true"
:value="!tools.isUsernameTelegOk() ? myuser.email : ''"
:label="$t('reg.email')"
/>
</div>
<div>
<q-btn
outline
icon="fas fa-envelope"
:color="$q.dark.isActive ? `white` : `black`"
:type="tools.isUserOk() ? 'a' : 'btn'"
size="md"
:label="$t('msgs.write_email')"
:href="tools.isUserOk() ? tools.getemailto(myuser.email) : null"
@click="
!tools.isUserOk() ? (showingtooltip = !showingtooltip) : false
"
target="__blank"
>
</q-btn>
</div>
</div>
</div>
</div>

View File

@@ -1182,7 +1182,8 @@ export default defineComponent({
arrvalue: [],
filter: null,
useinput: false,
icon: 'fas fa-globe-europe'
icon: 'fas fa-globe-europe',
filteradv: true,
},
{
visible: true,
@@ -1196,6 +1197,7 @@ export default defineComponent({
addall: true,
useinput: false,
icon: 'engineering',
filteradv: true,
},
{
visible: true,
@@ -1209,6 +1211,7 @@ export default defineComponent({
useinput: true,
filter: null,
tablesel: 'visibility',
filteradv: true,
},
{
visible: true,

View File

@@ -20,16 +20,40 @@
:img-src="directory + '/' + myimg.imagefile"
@click="showImage(myimg)"
>
<div
v-if="myimg.description"
class="absolute-bottom custom-caption text-center subtitle"
>
{{ myimg.description }}
</div>
</q-carousel-slide>
</q-carousel>
<q-dialog v-model="dialogVisible">
<q-img
mode="contain"
v-if="selectedImage.imagefile"
:src="directory + '/' + selectedImage.imagefile"
:alt="selectedImage.imagefile"
/>
<q-btn color="primary" :label="t('dialog.close')" @click="closeDialog" />
<q-dialog v-model="dialogVisible" maximized>
<div class="q-ma-sm column justify-center">
<q-img
mode="contain"
v-if="selectedImage.imagefile"
:src="directory + '/' + selectedImage.imagefile"
:alt="selectedImage.imagefile"
@click="closeDialog"
>
<div
v-if="selectedImage.description"
class="absolute-bottom custom-caption text-center"
>
<div class="subtitle">{{ selectedImage.description }}</div>
</div>
</q-img>
<div>
<div class="text-center">
<q-btn
color="primary"
:label="t('dialog.close')"
@click="closeDialog"
/>
</div>
</div>
</div>
</q-dialog>
</template>

View File

@@ -2429,8 +2429,8 @@ export default defineComponent({
function showColCheck(col: IColGridTable, tipovis: number, visulabel: boolean, value: any = '', record: any = null) {
// if (col.isadvanced_field && !showfilteradv.value)
// return false
if (col.isadvanced_field && !showfilteradv.value)
return false
const check = tools.checkIfShowField(col, tipovis, visulabel, value)

View File

@@ -1404,10 +1404,19 @@
v-for="col in mycolumns"
:key="col.name"
>
<!--<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div>-->
<div
class="text-center q-my-xs"
v-if="col.fieldtype === costanti.FieldType.separator"
>
<q-btn
color="primary"
size="md"
dense
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label="$t('grid.show_campi_avanzati')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<div
v-if="
showColCheck(
@@ -1473,12 +1482,21 @@
</q-bar>
<q-card-section class="inset-shadow">
<div v-for="col in mycolumns" :key="col.name">
<!--<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div>-->
<div
v-if="
class="text-center q-my-xs"
v-if="col.fieldtype === costanti.FieldType.separator"
>
<q-btn
color="primary"
size="md"
dense
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label="$t('grid.show_campi_avanzati')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<div
v-else-if="
showColCheck(col, tools.TIPOVIS_EDIT_RECORD, false) &&
col.foredit
"

View File

@@ -2400,6 +2400,7 @@ export default defineComponent({
showInnerDialog,
lengthopt,
update_col,
showfilteradv,
}
}
})

View File

@@ -304,10 +304,19 @@
v-for="col in mycolumns"
:key="col.name"
>
<!--<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div>-->
<div
class="text-center q-my-xs"
v-if="col.fieldtype === costanti.FieldType.separator"
>
<q-btn
color="primary"
size="md"
dense
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label="$t('grid.show_campi_avanzati')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<div
v-if="
showColCheck(
@@ -373,10 +382,19 @@
</q-bar>
<q-card-section class="inset-shadow">
<div v-for="col in mycolumns" :key="col.name">
<!--<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div>-->
<div
class="text-center q-my-xs"
v-if="col.fieldtype === costanti.FieldType.separator"
>
<q-btn
color="primary"
size="md"
dense
:icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'"
:label="$t('grid.show_campi_avanzati')"
@click="showfilteradv = !showfilteradv"
></q-btn>
</div>
<div
v-if="
showColCheck(col, tools.TIPOVIS_EDIT_RECORD, false) &&

View File

@@ -40,6 +40,16 @@
</div>
<q-card-section>
<span v-for="(rec, ind) of myaccount.recCatGrp" :key="ind">
<q-chip
dense
class="text-center shadow-5 glossy chipmodif text-white"
:style="`background-color: ${rec.color};`"
>
<q-icon :name="rec.icon" left />
{{ rec.descr }}</q-chip
></span
>
<div v-if="myaccount.date_created" class="container">
<q-icon name="fas fa-lightbulb" class="iconcirc"></q-icon>
{{

View File

@@ -233,13 +233,8 @@
:label="col.visulabel ? $t(col.label_trans) : col.label"
>
</q-input>
<q-field v-if="col.showLinkResult">
Diventerà:
<a
:href="tools.generateURL(col.showLinkResult, myvalue)"
target="_blank"
>{{ tools.generateURL(col.showLinkResult, myvalue) }}</a
>
<q-field v-if="col.showLinkResult && myvalue">
Diventerà: {{ tools.generateURL(col.showLinkResult, myvalue) }}
</q-field>
</div>
<div

View File

@@ -1,62 +1,137 @@
<template>
<div class="q-py-xs centermydiv cardrec"
:style="`max-width: `+ (tools.getwidth($q) - 20) +`px; ` + ($q.screen.lt.sm ? (`min-width: `+ (tools.getwidth($q) - 20) +`px;`) : ``)">
<q-item v-if="myrec" clickable v-ripple :class="`shadow-2 q-btn--rounded `+ ($q.dark.isActive ? `bg-black`: `bg-teal-1`)">
<q-item-section v-if="(shared_consts.TABLES_VISU_IMG.includes(table)) && (myrec.photos && myrec.photos.length > 0)" avatar
@click="cmdExt(costanti.CMD_OPEN_PAGE, myrec)">
<div
class="q-py-xs centermydiv cardrec"
:style="
`max-width: ` +
(tools.getwidth($q) - 20) +
`px; ` +
($q.screen.lt.sm ? `min-width: ` + (tools.getwidth($q) - 20) + `px;` : ``)
"
>
<q-item
v-if="myrec"
clickable
v-ripple
:class="
`shadow-2 q-btn--rounded ` +
($q.dark.isActive ? `bg-black` : `bg-teal-1`)
"
>
<q-item-section
v-if="
shared_consts.TABLES_VISU_IMG.includes(table) &&
myrec.photos &&
myrec.photos.length > 0
"
avatar
@click="cmdExt(costanti.CMD_OPEN_PAGE, myrec)"
>
<q-avatar size="60px">
<q-img :src="tools.getFullFileName(myrec.photos, table, myrec.username, myrec.groupname)" :alt="myrec.descr"
img-class="imgprofile" height="60px"/>
<q-img
:src="
tools.getFullFileName(
myrec.photos,
table,
myrec.username,
myrec.groupname
)
"
:alt="myrec.descr"
img-class="imgprofile"
height="60px"
/>
</q-avatar>
</q-item-section>
<q-item-section v-else avatar>
<q-avatar size="60px">
<q-img :src="getImgUser(myrec)" :alt="myrec.username" img-class="imgprofile" height="60px"/>
<q-img
:src="getImgUser(myrec)"
:alt="myrec.username"
img-class="imgprofile"
height="60px"
/>
</q-avatar>
</q-item-section>
<q-item-section @click="cmdExt(costanti.CMD_OPEN_PAGE, null, myrec)">
<q-item-label class="full-width">
<span v-for="(rec, ind) of myrec.recCatGrp" :key="ind"> <q-chip
<q-item-label class="row no-wrap" style="overflow-x: auto; white-space: nowrap;">
<q-chip
v-for="(rec, ind) of myrec.recCatGrp"
:key="ind"
dense
class="text-center shadow-5 glossy bg-blue chipmodif">{{ rec.descr }}</q-chip></span>
class="text-center shadow-5 glossy chipmodif text-white"
:style="`background-color: ${rec.color};`"
>
<q-icon :name="rec.icon" left />
{{ rec.descr }}</q-chip
>
<!--<span class="dateevent" v-if="myrec.dateTimeStart">dal <span class="datainizio">{{tools.getstrVeryShortDate(myrec.dateStart) }}</span> al <span class="datafine">{{ tools.getstrVeryShortDate(myrec.dateEnd) }}</span>
</span>-->
</q-item-label>
<q-item-label v-if="myrec.title" lines="1" :class="($q.dark.isActive ? `text_title_dark`: `text_title`)">
<q-item-label
v-if="myrec.title"
lines="1"
:class="$q.dark.isActive ? `text_title_dark` : `text_title`"
>
<span class="text-weight-bold">{{ myrec.title }}</span>
</q-item-label>
<q-item-label lines="3" v-if="myrec.descr">{{ myrec.descr }}<br>
<q-item-label lines="3" v-if="myrec.descr"
>{{ myrec.descr }}<br />
</q-item-label>
<q-item-label lines="1" style="text-align: right" class="text_user_city">
<span v-if="myrec.visibility && myrec.visibility.includes(shared_consts.Visibility_Group.PRIVATE)" class="q-mr-xs">
<q-icon name="fas fa-lock"></q-icon></span>
<span v-if="myrec.visibility && myrec.visibility.includes(shared_consts.Visibility_Group.HIDDEN)" class="q-mr-xs">
<q-icon name="fas fa-eye-slash"></q-icon></span>
<span v-for="(rec, ind) of myrec.mycities" :key="ind"><span v-if="ind > 0">, </span>{{ rec.comune }}</span>
<q-item-label
lines="1"
style="text-align: right"
class="text_user_city"
>
<span
v-if="
myrec.visibility &&
myrec.visibility.includes(shared_consts.Visibility_Group.PRIVATE)
"
class="q-mr-xs"
>
<q-icon name="fas fa-lock"></q-icon
></span>
<span
v-if="
myrec.visibility &&
myrec.visibility.includes(shared_consts.Visibility_Group.HIDDEN)
"
class="q-mr-xs"
>
<q-icon name="fas fa-eye-slash"></q-icon
></span>
<span v-for="(rec, ind) of myrec.mycities" :key="ind"
><span v-if="ind > 0">, </span>{{ rec.comune }}</span
>
</q-item-label>
</q-item-section>
<q-item-section side v-if="tools.canModifyThisRec(myrec, table)">
<q-item-label>
<q-btn rounded dense icon="fas fa-pencil-alt">
<q-menu>
<q-list style="min-width: 150px">
<q-item clickable v-close-popup
@click="cmdExt(costanti.CMD_MODIFY, myrec._id, null)">
<q-item
clickable
v-close-popup
@click="cmdExt(costanti.CMD_MODIFY, myrec._id, null)"
>
<q-item-section side>
<q-icon name="fas fa-pencil-alt"/>
<q-icon name="fas fa-pencil-alt" />
</q-item-section>
<q-item-section>{{ $t('reg.edit') }}</q-item-section>
</q-item>
</q-list>
<q-list style="min-width: 150px">
<q-item clickable v-close-popup @click="cmdExt(costanti.CMD_DELETE, myrec._id, null)">
<q-item
clickable
v-close-popup
@click="cmdExt(costanti.CMD_DELETE, myrec._id, null)"
>
<q-item-section side>
<q-icon name="fas fa-trash-alt"/>
<q-icon name="fas fa-trash-alt" />
</q-item-section>
<q-item-section>{{ $t('reg.elimina') }}</q-item-section>
</q-item>
@@ -65,11 +140,9 @@
</q-btn>
</q-item-label>
</q-item-section>
</q-item>
<q-separator inset="item"/>
<q-separator inset="item" />
</div>
</template>
<script lang="ts" src="./CMyRecGrpCard.ts">

View File

@@ -385,7 +385,8 @@ export default defineComponent({
}
myarrvalue.value = []
for (const val of props.arrvalue) {
let myarr = props.arrvalue
for (const val of myarr) {
rec = arrtempOpt.value.find((myrec: any) => val === (myrec[`${props.optval}`]))
if (rec) {
myarrvalue.value.push(rec[`${props.optval}`])
@@ -412,8 +413,13 @@ export default defineComponent({
if (props.multiple) {
let arrrec = []
if (props.arrvalue) {
for (const val of props.arrvalue) {
let myarr = props.arrvalue
if (myarr && !tools.isArray(myarr)) {
myarr = [myarr]
}
if (myarr) {
for (const val of myarr) {
rec = optionsreal.value.find((myrec: any) => val === (myrec[`${props.optval}`]))
if (rec) {
arrrec.push(rec[`${props.optval}`])

View File

@@ -41,7 +41,7 @@
<em>{{ contact.profile.qualifica }}</em>
<span v-if="tools.isFacil() && contact.profile.note"><span v-if="contact.profile.qualifica"><br></span><em style="color: blue;">Note: {{ contact.profile.note }}</em></span>
<span v-if="tools.isFacil() && contact.profile.da_contattare"><br><em style="color: red;">Da Contattare</em></span>
<span v-if="tools.isBitActive(contact.perm, shared_consts.Permissions.Facilitatore.value)"><br><em style="color: blue;"> Facilitatore RISO</em></span>
<!--<span v-if="tools.isBitActive(contact.perm, shared_consts.Permissions.Facilitatore.value)"><br><em style="color: blue;"> Facilitatore RISO</em></span>-->
</q-item-label
>
<q-item-label caption lines="1"></q-item-label>
@@ -326,7 +326,7 @@
<q-list style="min-width: 150px">
<q-item
clickable
v-if="!tools.isUserAdminGroup(groupname, contact.username)"
v-if="!tools.isUserAdminGroup(groupname, contact.username, true)"
v-close-popup
@click="
tools.addtoAdminOfMyGroup($q, contact.username, groupname)
@@ -340,7 +340,7 @@
<q-item
clickable
v-if="
tools.isUserAdminGroup(groupname, contact.username) &&
tools.isUserAdminGroup(groupname, contact.username, true) &&
tools.iAmTheCreatorOfTheGroup(groupname)
"
v-close-popup
@@ -517,7 +517,7 @@
<q-item
clickable
v-if="
!tools.isUserAdminCircuit(circuitname, contact.username)
!tools.isUserAdminCircuit(circuitname, contact.username, true)
"
v-close-popup
@click="
@@ -534,7 +534,7 @@
<q-item
clickable
v-if="
tools.isUserAdminCircuit(circuitname, contact.username) &&
tools.isUserAdminCircuit(circuitname, contact.username, true) &&
tools.iAmTheCreatorOfTheCircuit(circuitname)
"
v-close-popup
@@ -594,7 +594,7 @@
<q-item
clickable
v-if="
!tools.isUserAdminCircuit(circuitname, contact.username)
!tools.isUserAdminCircuit(circuitname, contact.username, true)
"
v-close-popup
@click="
@@ -611,7 +611,7 @@
<q-item
clickable
v-if="
tools.isUserAdminCircuit(circuitname, contact.username) &&
tools.isUserAdminCircuit(circuitname, contact.username, true) &&
tools.iAmTheCreatorOfTheCircuit(circuitname)
"
v-close-popup

View File

@@ -201,7 +201,7 @@
<q-list style="min-width: 150px">
<q-item
clickable
v-if="!tools.isUserAdminGroup(groupname, contact.username)"
v-if="!tools.isUserAdminGroup(groupname, contact.username, true)"
v-close-popup
@click="
tools.addtoAdminOfMyGroup($q, contact.username, groupname)
@@ -215,7 +215,7 @@
<q-item
clickable
v-if="
tools.isUserAdminGroup(groupname, contact.username) &&
tools.isUserAdminGroup(groupname, contact.username, true) &&
tools.iAmTheCreatorOfTheGroup(groupname)
"
v-close-popup

View File

@@ -10,7 +10,7 @@
<meta name="description" content="<%= productDescription %>">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="version" content="1.1.17">
<meta name="version" content="1.1.18">
<meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">

View File

@@ -2,7 +2,7 @@
<CMyPage title="Gruppi" imgbackground="images/produttori.jpg" sizes="max-height: 120px">
<span>{{
setmeta({
title: 'Gruppi',
title: 'Organizzazioni',
description: '',
keywords: '',
})
@@ -11,7 +11,7 @@
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<CTitleBanner title="Gruppi"></CTitleBanner>
<CTitleBanner title="Organizzazioni"></CTitleBanner>
<CGridTableRec
prop_mytable="groups"
prop_mytitle="Gruppi"

View File

@@ -9,7 +9,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/products',
materialIcon: 'fas fa-lemon',
name: 'pages.productslist',
name: 'mypages.productslist',
component: () => import('@/views/ecommerce/productsList/productsList.vue'),
inmenu: true,
submenu: true,
@@ -21,7 +21,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/checkout',
materialIcon: 'fas fa-shopping-cart',
name: 'pages.checkout',
name: 'mypages.checkout',
component: () => import('@/views/ecommerce/checkOut/checkOut.vue'),
inmenu: true,
submenu: true,
@@ -33,7 +33,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/orderinfo',
materialIcon: 'fas fa-file-alt',
name: 'pages.orderinfo',
name: 'mypages.orderinfo',
component: () => import('@/views/ecommerce/orderInfo/orderInfo.vue'),
inmenu: true,
submenu: true,
@@ -45,7 +45,7 @@ function getRoutesEcomm(site: ISites) {
order: 35,
path: '/admin/ecommerce/orders',
materialIcon: 'fas fa-file-alt',
name: 'pages.orders',
name: 'mypages.orders',
component: () => import('@/rootgen/admin/orders/orders.vue'),
inmenu: true,
submenu: true,
@@ -75,7 +75,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/admin/ecommerce/cash',
materialIcon: 'fas fa-cash-register',
name: 'pages.cash',
name: 'mypages.cash',
component: () => import('@/views/ecommerce/cash/cash.vue'),
inmenu: true,
submenu: true,
@@ -89,7 +89,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/admin/ecommerce/productInfos',
materialIcon: 'fas fa-lemon',
name: 'pages.productInfos',
name: 'mypages.productInfos',
component: () => import('@/rootgen/admin/productInfos/productInfos.vue'),
inmenu: true,
submenu: true,
@@ -103,7 +103,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/admin/ecommerce/gestoreordini',
materialIcon: 'fas fa-lemon',
name: 'pages.gestoreordini',
name: 'mypages.gestoreordini',
component: () => import('@/views/admin/gestoreordini/gestoreordini.vue'),
inmenu: true,
submenu: true,
@@ -117,7 +117,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/admin/ecommerce/products',
materialIcon: 'fas fa-lemon',
name: 'pages.listinoprodotti',
name: 'mypages.listinoprodotti',
component: () => import('@/rootgen/admin/products/products.vue'),
inmenu: true,
submenu: true,
@@ -131,7 +131,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/admin/ecommerce/producers',
materialIcon: 'fas fa-tractor',
name: 'pages.producer',
name: 'mypages.producer',
component: () => import('@/rootgen/admin/producer/producer.vue'),
inmenu: true,
submenu: true,
@@ -145,7 +145,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/admin/ecommerce/storehouses',
materialIcon: 'fas fa-store',
name: 'pages.storehouses',
name: 'mypages.storehouses',
component: () => import('@/rootgen/admin/storehouses/storehouses.vue'),
inmenu: true,
submenu: true,
@@ -159,7 +159,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/admin/ecommerce/providers',
materialIcon: 'fas fa-file-alt',
name: 'pages.providers',
name: 'mypages.providers',
component: () => import('@/rootgen/admin/providers/providers.vue'),
inmenu: true,
submenu: true,
@@ -173,7 +173,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/admin/ecommerce/gasordini',
materialIcon: 'fas fa-file-alt',
name: 'pages.gasordini',
name: 'mypages.gasordini',
component: () => import('@/rootgen/admin/gasordini/gasordini.vue'),
inmenu: true,
submenu: true,
@@ -187,7 +187,7 @@ function getRoutesEcomm(site: ISites) {
order: 30,
path: '/admin/ecommerce/scontistica',
materialIcon: 'fas fa-gift',
name: 'pages.scontisticas',
name: 'mypages.scontisticas',
component: () => import('@/rootgen/admin/scontistica/scontistica.vue'),
inmenu: true,
submenu: true,
@@ -201,7 +201,7 @@ function getRoutesEcomm(site: ISites) {
order: 31,
path: '/admin/ecommerce/departments',
materialIcon: 'fas fa-file-alt',
name: 'pages.departments',
name: 'mypages.departments',
component: () => import('@/rootgen/admin/departments/departments.vue'),
inmenu: true,
submenu: true,
@@ -215,7 +215,7 @@ function getRoutesEcomm(site: ISites) {
order: 31,
path: '/admin/ecommerce/orders',
materialIcon: 'fas fa-file-alt',
name: 'pages.orders',
name: 'mypages.orders',
component: () => import('@/rootgen/admin/orders/orders.vue'),
inmenu: true,
submenu: true,
@@ -229,7 +229,7 @@ function getRoutesEcomm(site: ISites) {
order: 32,
path: '/admin/ecommerce/catprods',
materialIcon: 'fas fa-file-alt',
name: 'pages.catprods',
name: 'mypages.catprods',
component: () => import('@/rootgen/admin/catprods/catprods.vue'),
inmenu: true,
submenu: true,
@@ -248,7 +248,7 @@ function getRoutesEcomm(site: ISites) {
order: 1402,
faIcon: 'fas fa-lemon',
materialIcon: 'fas fa-lemon',
name: 'pages.ecommerce',
name: 'mypages.ecommerce',
routes2: routes_ecommerce,
inmenu: true,
onlyif_logged: true,
@@ -262,7 +262,7 @@ function getRoutesEcomm(site: ISites) {
path: '/admin/ecommerce',
order: 1420,
materialIcon: 'next_week',
name: 'pages.admin_ecommerce',
name: 'mypages.admin_ecommerce',
routes2: routes_admin_ecommerce,
inmenu: true,
solotitle: true,

View File

@@ -14,6 +14,7 @@ const msg_it = {
csv: 'Esporta Movimenti',
},
grid: {
show_campi_avanzati: 'Mostra Campi Avanzati',
advanced_filters: 'Filtri Avanzati',
found: 'trovato',
newrecord: 'Aggiungi',
@@ -955,6 +956,7 @@ const msg_it = {
messages: 'Messaggi',
nomessage: 'Nessun Messaggio',
send_email: 'Invia Email',
write_email: 'Scrivi una email',
},
notifs: {
all: 'Tutte',
@@ -988,7 +990,7 @@ const msg_it = {
new_rec_bacheca: 'Annunci',
new_rec_bacheca_descr: 'Avvisami quando viene aggiunto un Annuncio:',
friends: 'Richieste di Amicizia',
groups: 'Gruppi',
groups: 'Organizzazioni',
friends_descr: 'Notifiche:',
events: 'Eventi',
events_descr: 'Notifiche:',
@@ -1170,6 +1172,15 @@ const msg_it = {
statusSkill: {
name: 'Di Persona / On Line',
},
producer: {
name: 'Produttore',
description: 'Descrizione',
referent: 'Referente',
username: 'Username',
city: 'Città',
region: 'Regione',
img: 'Immagine',
},
store: {
description: 'Descrizione',
main: 'Principale',
@@ -1183,6 +1194,13 @@ const msg_it = {
email_html_GAS_order_confirmed: '2) Ordine GAS Confermato da noi',
email_html_order_consegnato: '3) Ordine Consegnato',
email_html_GAS_order_consegnato: '3) Ordine GAS Consegnato',
name: 'Nome Fornitore',
referent: 'Referente',
address: 'Indirizzo',
city: 'Città',
region: 'Regione',
},
sectors: {
name: 'Settore',
@@ -1219,6 +1237,32 @@ const msg_it = {
date_updated: 'Ult. Aggiornamento',
},
mypages: {
admin_ecommerce: 'ECommerce',
ecommerce: 'Prodotti',
ecommerce_menu: 'ECommerce1',
gasordini: 'Gas Ordini',
gestoreordini: 'Gestore Ordini',
producer: 'Produttore',
orderinfo: 'Ordini Effettuati',
products: 'Prodotti',
cash: 'Cassa',
productInfos: 'Info Prodotti',
listinoprodotti: 'Listino Prodotti',
productslist: 'Lista Prodotti',
collabora: 'Collabora',
categories: 'Categorie',
storehouses: 'Magazzino',
providers: 'Fornitori',
catprods: 'Categorie',
subcatprods: 'Sotto-Categorie',
gasordine: 'Gas Ordine',
scontisticas: 'Scontistica',
departments: 'Uffici',
orders: 'Ordini Ricevuti',
orders2: 'Ordini Ricevuti',
sharewithus: 'Condividi con Noi',
checkout: 'Carrello',
payment: 'Pagamenti',
duplica_newname: 'Inserisci il nome della Nuova Pagina (senza spazi)',
duplica_conferma: 'Duplicare {path} creando {newpath}',
esporta_conferma: 'Esportare la pagina {path} su {nomefile} ?',
@@ -1239,7 +1283,8 @@ const msg_it = {
events: 'Eventi',
goods: 'Beni',
test: 'Test',
groups: 'Gruppi',
groups: 'Organizzazioni',
group: 'Organizzazione',
request_friends: 'Richieste Amicizia',
request_sent: 'Richieste Inviate',
request_trust: 'Richieste Fiducia',
@@ -1330,6 +1375,7 @@ const msg_it = {
pwd: 'Password per accedere',
private: 'Privato',
hidden: 'Nascosto',
descrizione: 'Descrizione',
private_descr: 'Solo i membri possono vedere chi fa parte del gruppo',
hidden_descr: 'il Gruppo non sarà visibile nella ricerca',
page: 'Pagina',
@@ -1514,7 +1560,7 @@ const msg_it = {
movements_made: 'Movimenti effettuati',
contocomunitario: 'Conto Comunitario',
comunitario: 'Comunitario',
conticollettivi: 'Gruppi',
conticollettivi: 'Organizzazioni',
contideigruppi: 'Conti dei Gruppi',
listaconticollettivi: 'Lista Gruppi',
qta_remaining_to_send: 'Quantità massima inviabile {maxqta} {symbol}',
@@ -1604,7 +1650,7 @@ const msg_it = {
tabdown: {
home: 'Home',
groups: 'Gruppi',
groups: 'Organizzazioni',
eventi: 'Eventi',
friends: 'Iscritti',
bookings: 'Prenotaz.',
@@ -1676,12 +1722,12 @@ const msg_it = {
showConnected: 'Stato Connessione',
bookingEvents: 'Prenotazione Eventi',
enableEcommerce: 'ECommerce',
enableGroups: 'Gruppi',
enableGroups: 'Organizzazioni',
enableCircuits: 'Circuiti',
enableAI: 'AI Tools',
enableProj: 'Mostra Project',
enableTodos: 'Mostra Todos',
enableRegByBot: 'Registratione By Bot',
enableRegByBot: 'Registrazione usando il BOT',
enableRegMultiChoice: 'Registratione a Scelta tra Email e Telegram',
enableTokenExpired: 'Attiva Scadenza Token',
enableDebugOn: 'Attiva Debug',

View File

@@ -249,7 +249,10 @@ export const useCircuitStore = defineStore('CircuitStore', {
},
getCircuitsListByGroup(mygrp: IMyGroup): ICircuit[] {
return this.listcircuits.filter((rec: ICircuit) => mygrp.mycircuits!.findIndex((circ: IMyCircuit) => circ.circuitname === rec.name) >= 0)
if (mygrp.mycircuits)
return this.listcircuits.filter((rec: ICircuit) => mygrp.mycircuits!.findIndex((circ: IMyCircuit) => circ.circuitname === rec.name) >= 0)
return []
},
IsAskedCircuitByNameAndGroup(name: string, groupname: string): boolean {

View File

@@ -215,7 +215,7 @@ export const costanti = {
visible: false,
title: 'Circuiti RIS',
strsingolo: 'Circuito',
subtitle: 'Strumento di scambio alternativa alle monete',
subtitle: 'Strumento di scambio alternativo alle monete',
to: '/circuits',
table: 'circuits',
icon: 'fas fa-coins',
@@ -229,9 +229,9 @@ export const costanti = {
},
{
visible: false,
title: 'Gruppi',
strsingolo: 'Gruppo',
subtitle: 'Associazioni, progetti, comunità, negozi',
title: 'Organizzazioni',
strsingolo: 'Organizzazione',
subtitle: 'Gruppi, Associazioni, Aziende, Comunità',
to: '/groups',
table: 'mygroups',
icon: 'fas fa-users',

View File

@@ -1045,8 +1045,8 @@ export const colmyUserGroup = [
AddCol({
name: 'idCatGrp',
label_trans: 'catgrps.name',
fieldtype: costanti.FieldType.select,
required: true,
fieldtype: costanti.FieldType.multiselect,
required: false,
jointable: 'catgrps',
visible: true,
icon: 'category',
@@ -1059,13 +1059,6 @@ export const colmyUserGroup = [
maxlength: 100
}
),
AddCol({
name: 'visibility',
label_trans: 'bot.visibility',
fieldtype: costanti.FieldType.multiselect,
jointable: 'visibilGroup',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
}),
/*AddCol({
name: 'pwd', label_trans: 'groups.pwd', fieldtype: costanti.FieldType.crypted,
visibleif: costanti.BINARY_CHECK, visib_field: 'visibility', visib_value: shared_consts.Visibility_Group.PASSWORD,
@@ -1100,6 +1093,25 @@ export const colmyUserGroup = [
jointable: '',
showWhen: costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
}),
AddCol({
name: 'note', label_trans: 'reg.detailsPage', fieldtype: costanti.FieldType.html,
titlepopupedit: 'detailsPage', field_extra1: 'groupname', subfield_extra1: '',
}),
AddCol({
name: '',
fieldtype: costanti.FieldType.separator,
required: false,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit,
visible: false,
}),
AddCol({
name: 'visibility',
label_trans: 'bot.visibility',
fieldtype: costanti.FieldType.multiselect,
jointable: 'visibilGroup',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
isadvanced_field: true,
}),
AddCol({
name: 'link_telegram', label_trans: 'reg.link_telegram', isadvanced_field: true, fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
@@ -1109,10 +1121,7 @@ export const colmyUserGroup = [
name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist
}),
AddCol({
name: 'note', label_trans: 'reg.detailsPage', fieldtype: costanti.FieldType.html,
titlepopupedit: 'detailsPage', field_extra1: 'groupname', subfield_extra1: '',
}),
AddCol(ModifRec),
AddCol(DeleteRec),
]
@@ -1499,24 +1508,6 @@ export const colmySkills = [
showonlyif_dipersona: true,
numpag_carousel: 2,
}),
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,
numpag_carousel: 2,
}),
AddCol({
name: 'groupname',
label_trans: 'proj.gruppo',
foredit: false,
tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip,
link: '/mygrp/groupname',
noshowlabel: true,
}),
AddCol({
name: 'descr',
label_trans: 'proj.shortdescr',
@@ -1528,6 +1519,16 @@ export const colmySkills = [
sortable: false,
numpag_carousel: 3,
}),
AddCol({
name: 'photos',
label_trans: 'skill.photos',
fieldtype: costanti.FieldType.listimages,
jointable: '',
showpicprofile_ifnotset: true,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
isadvanced_field: false,
numpag_carousel: 6,
}),
AddCol({
name: 'note', label_trans: 'proj.descrapprof', fieldtype: costanti.FieldType.html,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
@@ -1575,14 +1576,30 @@ export const colmySkills = [
numpag_carousel: 5,
}),
AddCol({
name: 'photos',
label_trans: 'skill.photos',
fieldtype: costanti.FieldType.listimages,
jointable: '',
showpicprofile_ifnotset: true,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
name: '',
fieldtype: costanti.FieldType.separator,
required: false,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit,
visible: false,
}),
AddCol({
name: 'groupname',
label_trans: 'proj.gruppo',
foredit: false,
tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip,
link: '/mygrp/groupname',
noshowlabel: 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,
numpag_carousel: 2,
isadvanced_field: true,
numpag_carousel: 6,
}),
AddCol({
name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link,
@@ -4762,7 +4779,7 @@ export const fieldsTable = {
},
{
value: 'mygroups',
label: 'Gruppi',
label: 'Organizzazioni',
columns: colmyUserGroup,
colkey: 'groupname',
collabel: 'groupname',

View File

@@ -6972,6 +6972,17 @@ export const tools = {
},
iCanShowAnnunci(grp: IMyGroup) {
if (grp && grp.visibility!.includes(shared_consts.Visibility_Group.HIDDEN)) {
// Only if I am part of this group
return this.iAmPartOfThisGroup(grp)
}
return true
},
iAmTheCreatorOfTheGroup(groupname: string) {
const userStore = useUserStore()
@@ -7012,10 +7023,10 @@ export const tools = {
},
isUserAdminGroup(groupname: string, username: string) {
isUserAdminGroup(groupname: string, username: string, real?: boolean) {
const userStore = useUserStore()
if (userStore.my.username === username && userStore.isAdmin) {
if (!real && (userStore.my.username === username && userStore.isAdmin)) {
return true
}
let risultato = false
@@ -7081,10 +7092,10 @@ export const tools = {
},
isUserAdminCircuit(name: string, username: string) {
isUserAdminCircuit(name: string, username: string, real?: boolean) {
const userStore = useUserStore()
if (userStore.my.username === username && userStore.isAdmin) {
if (!real && (userStore.my.username === username && userStore.isAdmin)) {
return true
}
@@ -7498,6 +7509,9 @@ export const tools = {
// return true
if (shared_consts.TABLES_WITH_ADMINS.includes(tablesel)) {
if (userStore.isAdmin)
return true
// is Admin ?
if (rec.admins) {
const trovato = rec.admins.find((myuser: any) => myuser.username === userStore.my.username)
@@ -7505,6 +7519,8 @@ export const tools = {
return !!trovato
}
}
}
if (rec.hasOwnProperty('userId')) {

View File

@@ -487,7 +487,11 @@ export default defineComponent({
}
function numAdmins() {
return (circuit.value && circuit.value.admins) ? circuit.value.admins.length : 0
let quanti = (circuit.value && circuit.value.admins) ? circuit.value.admins.length : 0
if (quanti === 0)
quanti = 1
return quanti
}
function listaAdmins() {

View File

@@ -205,6 +205,7 @@
icon="fas fa-users"
></q-tab>
<q-tab
v-if="tools.iCanShowAnnunci(mygrp)"
:label="t('profile.annunci')"
name="annunci"
icon="fas fa-pencil-alt"
@@ -222,40 +223,43 @@
<q-tab-panels v-model="tabgrp" animated keep-alive>
<q-tab-panel name="info">
<q-card v-if="mygrp.title">
<q-card-section>
<div class="col-12 text-h7">
<span v-if="checkifShow('descr')">{{ mygrp.descr }}</span>
</div>
<div class="col-6 q-ma-xs">
<q-btn
v-if="getLinkGrpTelegram()"
icon="fab fa-telegram"
color="blue"
type="a"
size="md"
rounded
:label="$t('msgs.telegrammsg')"
:href="getLinkGrpTelegram()"
target="__blank"
></q-btn>
</div>
<div class="col-6 q-ma-xs">
<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>
</q-card-section>
</q-card>
<div>
<q-card>
<q-card-section>
<div class="text-h6">{{ t('groups.info') }}</div>
</q-card-section>
<q-separator />
<q-card-section>
<div class="element">
<q-icon name="fas fa-lightbulb"></q-icon>
{{
$t('shared.createdby', {
username: mygrp.createdBy,
date: tools.getstrDateYY(mygrp.date_created),
})
}}
</div>
<div
v-if="
!!mygrp.date_updated &&
tools.getstrshortDate(mygrp.date_updated) !==
tools.getstrshortDate(mygrp.createdBy)
"
class="element"
>
<q-icon name="fas fa-pencil-alt"></q-icon>
{{
$t('shared.lastmodify', {
date: tools.getstrDateYY(mygrp.date_updated),
})
}}
</div>
<div
v-if="
mygrp.visibility.includes(
@@ -291,21 +295,28 @@
{{ $t('groups.hidden_descr') }}
</div>
</div>
<div v-if="cities.length > 0" class="row">
<div class="q-pa-xs">
<q-icon name="fas fa-map-marker-alt"></q-icon>
</div>
<div>
<div class="title_param">
<div v-for="(city, index) of cities" :key="index">
{{ city.comune }} ({{ city.prov }})
</div>
</div>
</div>
</div>
<div class="members">
{{ $t('products.category') }}
<q-item>
<q-item-section>
<q-item-label class="full-width">
<div
v-for="(rec, ind) of mygrp.recCatGrp"
:key="ind"
>
<q-chip
dense
class="text-center shadow-5 glossy chipmodif text-white"
:style="`background-color: ${rec.color};`"
>
<q-icon :name="rec.icon" left />
{{ rec.descr }}</q-chip
>
</div>
</q-item-label>
</q-item-section>
</q-item>
<q-icon name="fas fa-users"></q-icon>
{{ numUsers() }}
{{
@@ -323,6 +334,7 @@
: t('shared.admins')
}}
</div>
<div v-for="(user, index) of mygrp.admins" :key="index">
<CMyUser
:mycontact="user"
@@ -330,53 +342,51 @@
@setCmd="tools.setCmd"
></CMyUser>
</div>
<div v-if="cities.length > 0" class="row">
<div class="q-pa-xs">
<q-icon name="fas fa-map-marker-alt"></q-icon>
</div>
<div>
<div class="title_param">
<div v-for="(city, index) of cities" :key="index">
{{ city.comune }} ({{ city.prov }})
</div>
</div>
</div>
</div>
<div class="element">
<q-icon name="fas fa-lightbulb"></q-icon>
{{
$t('shared.createdby', {
username: mygrp.createdBy,
date: tools.getstrDateYY(mygrp.date_created),
})
}}
</div>
<div
v-if="
!!mygrp.date_updated &&
tools.getstrshortDate(mygrp.date_updated) !==
tools.getstrshortDate(mygrp.createdBy)
"
class="element"
>
<q-icon name="fas fa-pencil-alt"></q-icon>
{{
$t('shared.lastmodify', {
date: tools.getstrDateYY(mygrp.date_updated),
})
}}
</div>
</q-card-section>
</q-card>
<br />
</div>
<q-card v-if="mygrp.title">
<q-card-section>
<div class="text-h6">Descrizione:</div>
</q-card-section>
<q-separator />
<q-card-section>
<div class="col-12 text-h7">
<span v-if="checkifShow('descr')">{{ mygrp.descr }}</span>
</div>
<div class="col-6 q-ma-xs">
<q-btn
v-if="getLinkGrpTelegram()"
icon="fab fa-telegram"
color="blue"
type="a"
size="md"
rounded
:label="$t('msgs.telegrammsg')"
:href="getLinkGrpTelegram()"
target="__blank"
></q-btn>
</div>
<div class="col-6 q-ma-xs">
<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>
</q-card-section>
</q-card>
<q-card v-if="mygrp.note">
<q-card-section>
<div class="text-h6">Pagina:</div>
<div class="text-h7">Pagina:</div>
</q-card-section>
<q-separator />

View File

@@ -20,6 +20,8 @@
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_MYGROUPS)"
:table="shared_consts.TABLES_MYGROUPS"
:showFilterPersonal="true"
:showBarSelection="false"
:labelBtnAddExtra="`Aggiungi ` + $t('mypages.group')"
/>
<!--

View File

@@ -232,7 +232,7 @@
>
<q-icon name="fas fa-comment"></q-icon> Da Contattare
</div>
<div
<!--<div
v-if="
userStore.userprofile &&
tools.isBitActive(
@@ -249,7 +249,7 @@
>
Facilitatore RISO
</q-chip>
</div>
</div>-->
<div
v-if="
userStore.userprofile &&