diff --git a/grp.js b/grp.js index 8ca5b85d..4c2a37a2 100644 --- a/grp.js +++ b/grp.js @@ -82,6 +82,8 @@ db.getCollection('mygoods').aggregate( "profile.mygroups": 1, "profile.qualifica": 1, reported: 1, + date_report: 1, + username_who_report: 1, } }, { diff --git a/query_gruppi.js b/query_gruppi.js index 58de6ac6..4c68449f 100644 --- a/query_gruppi.js +++ b/query_gruppi.js @@ -67,6 +67,8 @@ db.getCollection('myskills').aggregate( "mycities": 1, "profile.img": 1, reported: 1, + date_report: 1, + username_who_report: 1, "profile.mygroups": 1, "profile.qualifica": 1 } @@ -121,6 +123,8 @@ db.getCollection('myskills').aggregate( "mycities": 1, "profile.img": 1, reported: 1, + date_report: 1, + username_who_report: 1, "profile.mygroups": 1, "profile.qualifica": 1 } @@ -175,6 +179,8 @@ db.getCollection('myskills').aggregate( "mycities": 1, "profile.img": 1, reported: 1, + date_report: 1, + username_who_report: 1, "profile.mygroups": 1, "profile.qualifica": 1 } @@ -229,6 +235,8 @@ db.getCollection('myskills').aggregate( "mycities": 1, "profile.img": 1, reported: 1, + date_report: 1, + username_who_report: 1, "profile.mygroups": 1, "profile.qualifica": 1 } diff --git a/src/common/shared_vuejs.ts b/src/common/shared_vuejs.ts index 36b4f1e7..aae4850e 100755 --- a/src/common/shared_vuejs.ts +++ b/src/common/shared_vuejs.ts @@ -71,6 +71,8 @@ export const shared_consts = { BLOCK_GROUP: 1155, FIND_GROUP: 1166, DELETE_GROUP: 1170, + ADDADMIN_OFMYGROUP: 1180, + REMOVEADMIN_OFMYGROUP: 1185, }, PUBTOSHARE: { diff --git a/src/components/CFinder/CFinder.ts b/src/components/CFinder/CFinder.ts index 1cef7c00..77ebe962 100755 --- a/src/components/CFinder/CFinder.ts +++ b/src/components/CFinder/CFinder.ts @@ -1006,6 +1006,8 @@ export default defineComponent({ 'profile.mygroups': 1, 'profile.qualifica': 1, reported: 1, + date_report: 1, + username_who_report: 1, } }, lookup3: { @@ -1071,6 +1073,8 @@ export default defineComponent({ 'profile.mygroups': 1, 'profile.qualifica': 1, reported: 1, + date_report: 1, + username_who_report: 1, } }, lookup3: { @@ -1185,6 +1189,8 @@ export default defineComponent({ 'profile.mygroups': 1, 'profile.qualifica': 1, reported: 1, + date_report: 1, + username_who_report: 1, } }, lookup3: { diff --git a/src/components/CMyGroups/CMyGroups.ts b/src/components/CMyGroups/CMyGroups.ts index 8d84d40a..91da0a0c 100755 --- a/src/components/CMyGroups/CMyGroups.ts +++ b/src/components/CMyGroups/CMyGroups.ts @@ -71,8 +71,8 @@ export default defineComponent({ const myoptions = computed(() => { const mybutt = [] mybutt.push({ label: t('mypages.find_group'), value: costanti.FIND_GROUP }) - // mybutt.push({ label: t('mypages.manage_my_groups') + ' (' + numManageGroups.value + ')', value: costanti.MANAGE_GROUPS }) mybutt.push({ label: t('mypages.follow_groups') + ' (' + numMyGroups.value + ')', value: costanti.MY_GROUPS }) + // mybutt.push({ label: t('mypages.manage_my_groups') + ' (' + numManageGroups.value + ')', value: costanti.MANAGE_GROUPS }) if (numAskSentGroups.value > 0 || props.modelValue === costanti.ASK_SENT_GROUP) mybutt.push({ diff --git a/src/components/CMyUser/CMyUser.vue b/src/components/CMyUser/CMyUser.vue index 83fbbfc7..594810c5 100755 --- a/src/components/CMyUser/CMyUser.vue +++ b/src/components/CMyUser/CMyUser.vue @@ -7,11 +7,12 @@ + {{ labelextra }} {{ contact.username }} ({{ contact.name }} {{ contact.surname }}) - {{ $t('db.reporteduser') }} + {{ $t('db.reporteduser', {date_report: tools.getstrDateTimeShort(contact.date_report)}) }} {{ contact.profile.qualifica }} {{ labelFooter }} @@ -97,8 +98,20 @@ - - + + + + + + {{ $t('groups.addasadmin') }} + + + + + + {{ $t('groups.remove_as_admin') }} + + @@ -165,33 +178,35 @@ - - + + {{ $t('friends.ask_friend') }} - - - - + {{ $t('friends.cancel_ask_friend') }} - - - {{ $t('friends.remove_from_myfriends') }} + + + + + {{ $t('friends.report_user') }} + diff --git a/src/model/UserStore.ts b/src/model/UserStore.ts index dec6ac3d..8c1f34dc 100755 --- a/src/model/UserStore.ts +++ b/src/model/UserStore.ts @@ -28,6 +28,7 @@ export interface IMyGroup { link_telegram?: string username_who_block?: string date_blocked?: Date + createdBy?: string } export interface ICalcStat { diff --git a/src/rootgen/admin/userPanel/userPanel.vue b/src/rootgen/admin/userPanel/userPanel.vue index 40b06849..37fe034e 100755 --- a/src/rootgen/admin/userPanel/userPanel.vue +++ b/src/rootgen/admin/userPanel/userPanel.vue @@ -100,9 +100,9 @@ class="bg-red text-white" style="text-align: center;" > - {{ $t('db.reporteduser') }}
+ {{ $t('db.reporteduser', {date_report: tools.getstrDateTimeShort(myuser.date_report)}) }}
da: {{ myuser.username_who_report }}
- in Data: {{ tools.getstrshortDateTime(myuser.date_report) }}
+
diff --git a/src/statics/lang/es.js b/src/statics/lang/es.js index 5f9599a4..e40b9b79 100755 --- a/src/statics/lang/es.js +++ b/src/statics/lang/es.js @@ -158,6 +158,7 @@ const msg_es = { domanda_removegroup: 'Rimuovere dal Gruppo {username} ?', removedfriend: 'Rimosso dalla lista di Amici', removedgroup: 'Rimosso dal Gruppo', + addedtoadmin: 'Aggiunto {username} come amministratore', domanda_addtofriend: 'Aggiungere agli amici {username}?', domanda_addtogroup: 'Aggiungi {username} al gruppo {groupname}?', addedfriend: 'Aggiunto alla lista di Amici', @@ -180,7 +181,7 @@ const msg_es = { rejected: 'Rifiutato la Fiducia', domanda_blockuser: 'Bloccare {username}?', domanda_blockgroup: 'Bloccare il gruppo {groupname}?', - reporteduser: 'Utente Segnalato', + reporteduser: 'Utente Segnalato in data {date_report}', blockedfriend: 'Utente Bloccato', domanda: 'Domanda', }, diff --git a/src/statics/lang/it.js b/src/statics/lang/it.js index dd6690e5..a603ccc4 100755 --- a/src/statics/lang/it.js +++ b/src/statics/lang/it.js @@ -198,8 +198,12 @@ const msg_it = { domanda_exit_fromgroup: 'Uscire dal Gruppo {groupname} ?', domanda_remove_group: 'Sicuro di voler Eliminare il Gruppo {groupname} ?', domanda_removegroup: 'Rimuovere dal Gruppo {username} ?', + domanda_addadminofmygroup: 'Aggiungere {username} come Amministratore del Gruppo {groupname} ?', + domanda_removeadminofmygroup: 'Rimuovere {username} dall\' incarico di Amministratore del Gruppo {groupname} ?', removedfriend: 'Rimosso dalla lista di Amici', removedgroup: 'Rimosso dal Gruppo', + addedtoadmin: 'Aggiunto {username} come amministratore', + removedtoadmin: 'Rimosso {username} come amministratore', refusedgroup: 'Rifiutato a {username} la richiesta di entrare nel Gruppo', youarerefusedgroup: 'Ti è stato rifiutata la richiesta di entrare in questo Gruppo (per info chiedi all\'amministratore del gruppo)', deletedgroup: 'Gruppo Eliminato', @@ -228,7 +232,7 @@ const msg_it = { domanda_unblockuser: 'Sbloccare {username}?', domanda_reportuser: 'Segnalare l\'utente {username}?', domanda_blockgroup: 'Bloccare il gruppo {groupname}?', - reporteduser: 'Utente Segnalato', + reporteduser: 'Utente Segnalato in data {date_report}', blockedfriend: 'Utente Bloccato', unblockedfriend: 'Utente Sbloccato', domanda: 'Domanda', @@ -677,7 +681,7 @@ const msg_it = { endwork_estimate: 'Data fine lavori stimata', privacyread: 'Chi lo puo vedere:', privacywrite: 'Chi lo puo modificare:', - createdby: 'Creato da:', + createdby: 'Creato da', tipovisu: 'Visualizzazione:', totalphases: 'Totale Fasi', themecolor: 'Tema Colore', @@ -969,8 +973,8 @@ const msg_it = { mypages: { find_people: 'Cerca Persone', find_group: 'Cerca Gruppo', - manage_my_groups: 'Gruppi che Gestisco', - follow_groups: 'Miei Gruppi (di cui fai parte)', + manage_my_groups: 'Amministratore', + follow_groups: 'Gruppi di cui fai parte', create_group: 'Crea Gruppo', friends: 'Amici', bacheca: 'Bacheca', @@ -1014,10 +1018,14 @@ const msg_it = { removed: 'Rimosso', admin: 'amministratore', admins: 'Amministratori', + createdby: 'Creato da {username} in data {date}', + subscribes: 'Iscritti', ask_group: 'Chiedi di entrare nel Gruppo', exit_group: 'Esci dal Gruppo', delete_group: 'Elimina il Gruppo', accept_group: 'Accetta la richiesta', + addasadmin: 'Aggiungi come Admin del Gruppo', + remove_as_admin: 'Rimuovi come Admin del Gruppo', remove_from_mygroups: 'Rimuovi dal Gruppo', block_group: 'Blocca Gruppo', cancel_ask_group: 'Annulla la richiesta', diff --git a/src/store/Modules/costanti.ts b/src/store/Modules/costanti.ts index 602e03df..393584ea 100755 --- a/src/store/Modules/costanti.ts +++ b/src/store/Modules/costanti.ts @@ -191,6 +191,7 @@ export const costanti = { USER_GROUPS: 22, CREATE_GROUP: 30, MANAGE_GROUPS: 31, + ADMIN_GROUPS: 40, CMD_DELETE: 1, CMD_MODIFY: 2, diff --git a/src/store/Modules/fieldsTable.ts b/src/store/Modules/fieldsTable.ts index dcf85ef6..9af52368 100755 --- a/src/store/Modules/fieldsTable.ts +++ b/src/store/Modules/fieldsTable.ts @@ -596,6 +596,7 @@ export const colmyUserGroup = [ fieldtype: costanti.FieldType.multiselect, jointable: 'friendsandme', field_outtype: costanti.FieldType.object, + showWhen: costanti.showWhen.InView_OnlyifExist, }), AddCol({ name: 'date_created', label_trans: 'reg.pub_created', fieldtype: costanti.FieldType.onlydate, diff --git a/src/store/Modules/tools.ts b/src/store/Modules/tools.ts index a38d4976..f9934ed1 100644 --- a/src/store/Modules/tools.ts +++ b/src/store/Modules/tools.ts @@ -4811,6 +4811,54 @@ export const tools = { }) }, + addtoAdminOfMyGroup($q: any, username: string, groupnameDest: string, domanda: any = '') { + const userStore = useUserStore() + + $q.dialog({ + message: domanda ? domanda : t('db.domanda_addadminofmygroup', { username, groupnameDest }), + ok: { label: t('dialog.yes'), push: true }, + cancel: { label: t('dialog.cancel') }, + title: t('db.domanda') + }).onOk(() => { + + userStore.setGroupsCmd($q, t, username, groupnameDest, shared_consts.GROUPSCMD.ADDADMIN_OFMYGROUP, null).then((res) => { + if (res) { + const mygrp = userStore.my.profile.manage_mygroups.find((rec: IMyGroup) => rec.groupname === groupnameDest) + console.log('mygrp', mygrp) + if (mygrp && mygrp.admins) { + mygrp.admins = [...mygrp.admins, {username, date: new Date}] + console.log('mygrp.admins', mygrp.admins) + tools.showPositiveNotif($q, t('db.addedtoadmin', { username })) + } + } + }) + }) + }, + + removeAdminOfMyGroup($q: any, username: string, groupnameDest: string, domanda: any = '') { + const userStore = useUserStore() + + $q.dialog({ + message: domanda ? domanda : t('db.domanda_removeadminofmygroup', { username, groupnameDest }), + ok: { label: t('dialog.yes'), push: true }, + cancel: { label: t('dialog.cancel') }, + title: t('db.domanda') + }).onOk(() => { + + userStore.setGroupsCmd($q, t, username, groupnameDest, shared_consts.GROUPSCMD.REMOVEADMIN_OFMYGROUP, null).then((res) => { + if (res) { + const mygrp = userStore.my.profile.manage_mygroups.find((rec: IMyGroup) => rec.groupname === groupnameDest) + console.log('mygrp', mygrp) + if (mygrp && mygrp.admins) { + mygrp.admins = mygrp.admins.filter((rec: any) => rec.username !== username) + console.log('mygrp.admins', mygrp.admins) + tools.showPositiveNotif($q, t('db.removedtoadmin', { username })) + } + } + }) + }) + }, + DeleteGroup($q: any, username: string, groupnameDest: string, domanda: any = '') { const userStore = useUserStore() @@ -5107,6 +5155,69 @@ export const tools = { }, + iAmTheCreatorOfTheGroup(groupname: string) { + const userStore = useUserStore() + + let risultato = false + + if (userStore.my.profile.manage_mygroups) { + const ris = userStore.my.profile.manage_mygroups.find((grp: IMyGroup) => { + if (grp.groupname === groupname) { + return true + } + }) + // console.log('ris', ris) + return (ris && ris.createdBy === userStore.my.username) + + } + + return risultato + + }, + + isUserTheCreatorOfTheGroup(groupname: string, username: string) { + const userStore = useUserStore() + + let risultato = false + + if (userStore.my.profile.manage_mygroups) { + const ris = userStore.my.profile.manage_mygroups.find((grp: IMyGroup) => { + if (grp.groupname === groupname) { + return true + } + }) + // console.log('ris', ris) + return (ris && ris.createdBy === username) + + } + + return risultato + + }, + + isUserAdminGroup(groupname: string, username: string) { + const userStore = useUserStore() + + let risultato = false + + if (userStore.my.profile.manage_mygroups) { + const ris = userStore.my.profile.manage_mygroups.find((grp: IMyGroup) => { + if (grp.groupname === groupname) { + return true + } + }) + // console.log('ris', ris) + if (ris && ris.admins) { + const isadmin = ris.admins.find((user: IFriends) => user.username === username) + risultato = !!isadmin + } + + } + + return risultato + + }, + setCmd($q: any, cmd: number, username: string, value: any, dest: string) { console.log('setcmd', cmd) if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP) { @@ -5117,6 +5228,10 @@ export const tools = { tools.blockGroup($q, username, dest) } else if (cmd === shared_consts.GROUPSCMD.SETGROUP) { tools.addToMyGroups($q, username, dest) + } else if (cmd === shared_consts.GROUPSCMD.ADDADMIN_OFMYGROUP) { + tools.addtoAdminOfMyGroup($q, username, dest) + } else if (cmd === shared_consts.GROUPSCMD.REMOVEADMIN_OFMYGROUP) { + tools.removeAdminOfMyGroup($q, username, dest) } else if (cmd === shared_consts.GROUPSCMD.REQGROUP) { tools.setRequestGroup($q, username, dest, value) } else if (cmd === shared_consts.GROUPSCMD.REFUSE_REQ_GROUP) { diff --git a/src/store/globalStore.ts b/src/store/globalStore.ts index 89f45e43..a8b37d8e 100644 --- a/src/store/globalStore.ts +++ b/src/store/globalStore.ts @@ -811,7 +811,8 @@ export const useGlobalStore = defineStore('GlobalStore', { return Api.SendReq('/gettable', 'POST', params) .then((res) => { this.serverError = false - // console.table(res) + // if (tools.isDebug()) + // console.table(res) return res.data }) .catch((error) => { diff --git a/src/views/user/myfriends/myfriends.ts b/src/views/user/myfriends/myfriends.ts index 505af11f..e08f9b57 100755 --- a/src/views/user/myfriends/myfriends.ts +++ b/src/views/user/myfriends/myfriends.ts @@ -117,6 +117,8 @@ export default defineComponent({ 'profile.born_city_id': 1, 'profile.qualifica': 1, reported: 1, + date_report: 1, + username_who_report: 1, } }, lookup2: { @@ -137,6 +139,8 @@ export default defineComponent({ 'profile.img': 1, 'profile.qualifica': 1, reported: 1, + date_report: 1, + username_who_report: 1, 'profile.born_city_id': 1, } }, diff --git a/src/views/user/mygroup/mygroup.scss b/src/views/user/mygroup/mygroup.scss index 319b40f6..92680351 100755 --- a/src/views/user/mygroup/mygroup.scss +++ b/src/views/user/mygroup/mygroup.scss @@ -17,8 +17,10 @@ padding: 5px; } -.members, .admins{ +.members, .admins, .creator{ font-weight: bold; - text-align: center; vertical-align: center; + padding: 5px; } + + diff --git a/src/views/user/mygroup/mygroup.ts b/src/views/user/mygroup/mygroup.ts index c1e26f2c..ad37ba01 100755 --- a/src/views/user/mygroup/mygroup.ts +++ b/src/views/user/mygroup/mygroup.ts @@ -156,6 +156,8 @@ export default defineComponent({ 'profile.mygroups': 1, 'profile.qualifica': 1, reported: 1, + date_report: 1, + username_who_report: 1, } }, } diff --git a/src/views/user/mygroup/mygroup.vue b/src/views/user/mygroup/mygroup.vue index 6784531f..75121003 100755 --- a/src/views/user/mygroup/mygroup.vue +++ b/src/views/user/mygroup/mygroup.vue @@ -36,7 +36,6 @@ -
+ +
+ +