Unsubscribe

This commit is contained in:
Surya Paolo
2023-02-15 21:40:10 +01:00
parent d59eb86d0c
commit 239cfbe835
17 changed files with 992 additions and 609 deletions

27
.env.test.risosrv Executable file
View File

@@ -0,0 +1,27 @@
APP_VERSION="0.5.66"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=test.freeplanet_serverside
SERVERDIR_WEBSITE="splendidus.it/riso"
APP_URL="https://riso.splendidus.it"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://splendidus.it:3001"
LOGO_REG='riso-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
TEST_APORTADOR=""
PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
IN_CONSTRUCTION="0"
DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
ISTEST=1

View File

@@ -0,0 +1,27 @@
#!/bin/bash
source ./.env.test.risosrv
msg="*** Sincronizzazione ??? $DIRECTORY_LOCAL e $SERVERDIR_WEBSITE (Y/N) ? "
if [ "$1" = "" ]; then
read -p "$msg" risposta
else
risposta=$1
fi
cp .env.production .env.prod.bak
cp .env.test.risosrv .env.production
sleep 1
npm run buildpwa
echo "Sincronizzazione $SERVERDIR_WEBSITE in remoto..."
rsync -e 'ssh -p 5522' -a dist/pwa/ root@risosrv:/home/$SERVERDIR_WEBSITE
cp .env.prod.bak .env.production
sleep 1
echo "Finito $SERVERDIR_WEBSITE"

11
send_pwa_to_risotest.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
source .env.test.risosrv
cp .env.test.risosrv .env.production
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
rsync -e 'ssh -p 5522' -a dist/pwa/ root@risosrv:/home/$SERVERDIR_WEBSITE/
echo "Finito $SERVERDIR_WEBSITE"
cp .env.prod.bak .env.production

View File

@@ -97,7 +97,7 @@ export default defineComponent({
} }
if (tools.isManager()) { if (tools.isManager()) {
console.log('getcookie: ', editOn.value, mypathin.value) // console.log('getcookie: ', editOn.value, mypathin.value)
} }
} }

View File

@@ -141,7 +141,7 @@
> >
<q-item-section avatar> <q-item-section avatar>
<q-avatar round size="48px"> <q-avatar round size="48px">
<img :src="userStore.getImgByProfile(row, true, col)" /> <img :src="userStore.getImgByProfile(row, false, col)" />
<q-badge <q-badge
v-if="tools.isUserOnline(row, col)" v-if="tools.isUserOnline(row, col)"
align="top" align="top"

View File

@@ -318,7 +318,7 @@
class="animated chip_shadow q-ma-sm" class="animated chip_shadow q-ma-sm"
clickable clickable
v-ripple v-ripple
@click="gotoPage(`/signup/${user.username}`)" @click="gotoPage(`/registrati/${user.username}`)"
> >
<q-item-section avatar> <q-item-section avatar>
<q-avatar round size="48px"> <q-avatar round size="48px">

View File

@@ -38,7 +38,7 @@ export default defineComponent({
return 'linear-gradient(180deg, ' + mycol + ' 95%, #FFF)' return 'linear-gradient(180deg, ' + mycol + ' 95%, #FFF)'
}) })
console.log('LandingFooter - INIT') // console.log('LandingFooter - INIT')
function TelegramSupport() { function TelegramSupport() {
return globalStore.getValueSettingsByKey('TELEGRAM_SUPPORT', false) return globalStore.getValueSettingsByKey('TELEGRAM_SUPPORT', false)

View File

@@ -31,6 +31,7 @@ const msg_website_it = {
mygood2: 'mygood2', mygood2: 'mygood2',
fundraising: 'Sostieni il Progetto', fundraising: 'Sostieni il Progetto',
notifs: 'Configura le Notifiche', notifs: 'Configura le Notifiche',
unsubscribe: 'Disiscriviti',
test: 'Test', test: 'Test',
projects: 'Progetti', projects: 'Progetti',
report: 'Report Ore', report: 'Report Ore',

View File

@@ -58,13 +58,12 @@ export default defineComponent({
const idparam = computed( () => $route.params.idparam ? $route.params.idparam.toString() : '') const idparam = computed( () => $route.params.idparam ? $route.params.idparam.toString() : '')
async function mounted() { async function mounted() {
await load() await load()
newsstate.value = DefaultNewsState newsstate.value = DefaultNewsState
// tab = tools.getCookie('formnews', 'check') // tab = tools.getCookie('formnews', 'check')
tab.value = $route.params.idparam.toString() tab.value = idparam.value
emailtextheader.value = getValDb('EMAIL_TEXT', true) // emailtextheader.value = getValDb('EMAIL_TEXT', true)
} }
@@ -308,6 +307,7 @@ export default defineComponent({
costanti, costanti,
fieldsTable, fieldsTable,
globalStore, globalStore,
idparam,
} }
} }
}) })

File diff suppressed because it is too large Load Diff

View File

@@ -453,6 +453,16 @@ function getRoutesAd(site: ISites) {
inmenu: false, inmenu: false,
infooter: false, infooter: false,
}, },
{
active: true,
order: 200,
path: '/unsubscribe',
materialIcon: 'fas fa-envelope',
name: 'pages.unsubscribe',
component: () => import('@/views/email/unsubscribe/unsubscribe.vue'),
inmenu: false,
infooter: false,
},
{ {
active: true, active: true,
order: 400, order: 400,

View File

@@ -5592,7 +5592,7 @@ export const tools = {
// console.log('OUT', res) // console.log('OUT', res)
if (res && res.userprofile) { if (res && res.userprofile) {
console.log('updateMyData', res.userprofile) // console.log('updateMyData', res.userprofile)
userStore.my.profile = res.userprofile userStore.my.profile = res.userprofile
if (res.listcircuits) { if (res.listcircuits) {
@@ -7599,7 +7599,7 @@ export const tools = {
checkApp() { checkApp() {
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
console.log('checkApp (homescreen=', globalStore.homescreen) // console.log('checkApp (homescreen=', globalStore.homescreen)
try { try {
let displayMode = 'browser' let displayMode = 'browser'
@@ -7607,11 +7607,11 @@ export const tools = {
// @ts-ignore // @ts-ignore
if (((navigator && (navigator.standalone))) || if (((navigator && (navigator.standalone))) ||
(window.matchMedia(mqStandAlone).matches)) { (window.matchMedia(mqStandAlone).matches)) {
console.log('navigator.standalone') // console.log('navigator.standalone')
displayMode = 'standalone' displayMode = 'standalone'
} }
// prova altro 2 // prova altro 2
console.log('displayMode = ', displayMode) // console.log('displayMode = ', displayMode)
globalStore.isAppRunning = displayMode === 'standalone' || globalStore.homescreen globalStore.isAppRunning = displayMode === 'standalone' || globalStore.homescreen
} catch (e) { } catch (e) {
@@ -7620,7 +7620,7 @@ export const tools = {
}, },
initprompt() { initprompt() {
console.log('initprompt') // console.log('initprompt')
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
window.addEventListener('beforeinstallprompt', (event) => { window.addEventListener('beforeinstallprompt', (event) => {

View File

@@ -85,7 +85,7 @@ export const useNotifStore = defineStore('NotifStore', {
} }
}, },
updateArrRecNotifFromServer(arrrecnotif: INotif[]) { updateArrRecNotifFromServer(arrrecnotif: INotif[]) {
console.log('arrrecnotif', arrrecnotif) // console.log('arrrecnotif', arrrecnotif)
if (arrrecnotif && arrrecnotif.length > 0) { if (arrrecnotif && arrrecnotif.length > 0) {
this.last_notifs = arrrecnotif this.last_notifs = arrrecnotif

View File

@@ -503,7 +503,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
static_data.routes = [...baseroutes, ...adminRoutes, ...arrpagesroute, last] static_data.routes = [...baseroutes, ...adminRoutes, ...arrpagesroute, last]
} }
for (const menu of static_data.routes) { /*for (const menu of static_data.routes) {
if (menu.active && menu.routes2) { if (menu.active && menu.routes2) {
for (const menu2 of menu.routes2) { for (const menu2 of menu.routes2) {
if (menu2.active && !menu2.noroute) { if (menu2.active && !menu2.noroute) {
@@ -511,7 +511,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
} }
} }
} }
} }*/
// Sort array // Sort array
static_data.routes = static_data.routes.sort((a, myb) => a.order - myb.order) static_data.routes = static_data.routes.sort((a, myb) => a.order - myb.order)
@@ -522,19 +522,19 @@ export const useGlobalStore = defineStore('GlobalStore', {
if ($router) { if ($router) {
static_data.routes.forEach((route: any) => { static_data.routes.forEach((route: any) => {
if (!$router.hasRoute(route.name)) { if (!$router.hasRoute(route.name) && !route.noroute) {
$router.addRoute(route) $router.addRoute(route)
} }
if (route.routes2) { if (route.routes2) {
for (const route2 of route.routes2) { for (const route2 of route.routes2) {
if (!$router.hasRoute(route2.name)) { if (!$router.hasRoute(route2.name) && !route2.noroute) {
$router.addRoute(route2) $router.addRoute(route2)
} }
if (route2.routes2) { if (route2.routes2) {
for (const route3 of route2.routes2) { for (const route3 of route2.routes2) {
if (!$router.hasRoute(route3.name)) { if (!$router.hasRoute(route3.name) && !route3.noroute) {
$router.addRoute(route3) $router.addRoute(route3)
} }
} }
@@ -1040,7 +1040,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (res) { if (res) {
const index = this.mypage.findIndex((rec) => rec.path === path) const index = this.mypage.findIndex((rec) => rec.path === path)
if (index >= 0) { if (index >= 0) {
console.log('load page', path, '...') // console.log('load page', path, '...')
this.mypage[index] = res.data.mypage this.mypage[index] = res.data.mypage
this.mypage[index].loaded = true this.mypage[index].loaded = true
} }

View File

@@ -2,7 +2,7 @@ import { serv_constants } from '@store/Modules/serv_constants'
import { tools } from '@store/Modules/tools' import { tools } from '@store/Modules/tools'
import { defineComponent, ref } from 'vue' import { computed, defineComponent, ref } from 'vue'
import { useI18n } from '@src/boot/i18n' import { useI18n } from '@src/boot/i18n'
import { useUserStore } from '@store/UserStore' import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore' import { useGlobalStore } from '@store/globalStore'
@@ -11,22 +11,6 @@ import { useRoute } from 'vue-router'
export default defineComponent({ export default defineComponent({
name: 'Unsubscribe', name: 'Unsubscribe',
props: {
mystr: {
type: String,
required: true,
},
myval: {
type: Number,
required: true,
default: 0,
},
mybool: {
type: Boolean,
required: true,
default: false,
},
},
components: {}, components: {},
setup(props, { emit }) { setup(props, { emit }) {
const $q = useQuasar() const $q = useQuasar()
@@ -36,25 +20,25 @@ export default defineComponent({
const risultato = ref('...') const risultato = ref('...')
const riscode = ref(0) const riscode = ref(0)
const param = ref(<any>null)
function disiscritto() { const disiscritto = computed(() => {
return riscode.value === serv_constants.RIS_UNSUBSCRIBED_OK return riscode.value === serv_constants.RIS_UNSUBSCRIBED_OK
} })
function errore() { const errore = computed(() => {
return riscode.value !== serv_constants.RIS_UNSUBSCRIBED_OK return riscode.value !== serv_constants.RIS_UNSUBSCRIBED_OK
} })
function email() { const email = computed(() => {
return $route.query.email return $route.query.email
} })
function load() { function load() {
// console.log('load') // console.log('load')
let param param.value = { em: $route.query.em, mc: $route.query.mc, locale: tools.getLocale() }
param = { em: $route.query.em, mc: $route.query.mc, locale: tools.getLocale() } console.log('idlink = ', param.value)
console.log('idlink = ', param) return userStore.unsubscribe(param.value)
return userStore.unsubscribe(param)
.then((ris: any) => { .then((ris: any) => {
riscode.value = ris.code riscode.value = ris.code
risultato.value = ris.msg risultato.value = ris.msg
@@ -71,6 +55,7 @@ export default defineComponent({
errore, errore,
email, email,
risultato, risultato,
param,
} }
} }
}) })

View File

@@ -1,41 +1,50 @@
<template> <template>
<q-page padding class="vreg"> <q-page v-if="param && param.em" padding class="vreg">
<div class="q-pa-md q-gutter-sm"> <div class="q-pa-md q-gutter-sm">
<q-banner <q-banner
rounded rounded
class="bg-primary text-white" class="bg-primary text-white"
color="primary q-title" color="primary q-title"
style="text-align: center;"> style="text-align: center"
<span class="mybanner">{{ $t('components.authentication.email_verification.title_unsubscribe')}}: {{email()}}</span> >
<span class="mybanner"
>{{
$t(
'components.authentication.email_verification.title_unsubscribe'
)
}}: {{ email }}</span
>
</q-banner> </q-banner>
<br> <br />
<transition <transition
enter-active-class="animated fadeIn" enter-active-class="animated fadeIn"
leave-active-class="animated fadeOut" leave-active-class="animated fadeOut"
appear appear
> >
<div>
<q-banner <q-banner
rounded rounded
class="bg-warning text-black" class="bg-warning text-black"
style="text-align: center;" style="text-align: center"
v-if="errore()" v-if="errore"
> >
<span class="mybanner">{{ risultato}}</span> <span class="mybanner">{{ risultato }}</span>
</q-banner> </q-banner>
<q-banner <q-banner
class="bg-positive text-white" class="bg-positive text-white"
style="text-align: center;" style="text-align: center"
rounded rounded
v-if="disiscritto()" v-if="disiscritto"
> >
<span class="mybanner">{{ $t('components.authentication.email_verification.title_unsubscribe_done') }}</span> <span class="mybanner">{{
$t(
'components.authentication.email_verification.title_unsubscribe_done'
)
}}</span>
</q-banner> </q-banner>
</div>
</transition> </transition>
</div> </div>
</q-page> </q-page>
</template> </template>
@@ -44,5 +53,5 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import './unsubscribe.scss'; @import './unsubscribe.scss';
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB