- posso fare upload dell'immagine del prodotto dalla lista

- corretto import dati
This commit is contained in:
Surya Paolo
2024-03-02 22:53:35 +01:00
parent 93e58f444d
commit 71e4c91930
68 changed files with 240 additions and 161 deletions

View File

@@ -1,6 +1,6 @@
APP_VERSION="1.0.29" APP_VERSION="1.0.21"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"
DIRECTORY_SERVER="freeplanet_serverside" DIRECTORY_SERVER="freeplanet_serverside"
SERVERDIR_WEBSITE="" SERVERDIR_WEBSITE=""
@@ -12,7 +12,7 @@ LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T" MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://localhost:3000" MONGODB_HOST="https://localhost:3000"
LOGO_REG='riso-logo-full.png' LOGO_REG='piuchebuono-logo-full.png'
TEST_NAME="Paolo" TEST_NAME="Paolo"
TEST_SURNAME="Arena" TEST_SURNAME="Arena"
TEST_EMAIL="" TEST_EMAIL=""

View File

@@ -133,6 +133,17 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: true, inmenu: true,
infooter: true, infooter: true,
}, },
{
active: true,
order: 120,
path: '/install_site',
materialIcon: 'fas fa-user',
name: 'pages.install_site',
component: () => import('@/views/admin/install_site/install_site.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{ {
active: true, active: true,
order: 120, order: 120,

View File

@@ -25,7 +25,7 @@
"dependencies": { "dependencies": {
"@cubejs-client/core": "^0.31.0", "@cubejs-client/core": "^0.31.0",
"@quasar/extras": "^1.16.9", "@quasar/extras": "^1.16.9",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16", "@quasar/quasar-ui-qcalendar": "^4.0.0-beta.19",
"@vue-leaflet/vue-leaflet": "^0.10.1", "@vue-leaflet/vue-leaflet": "^0.10.1",
"@vue/compat": "^3.3.9", "@vue/compat": "^3.3.9",
"@vue/compiler-sfc": "^3.3.9", "@vue/compiler-sfc": "^3.3.9",
@@ -68,6 +68,7 @@
"vue-echarts": "^6.6.1", "vue-echarts": "^6.6.1",
"vue-i18n": "^9.8.0", "vue-i18n": "^9.8.0",
"vue-idb": "^0.2.0", "vue-idb": "^0.2.0",
"vue-image-zoomer": "^2.2.3",
"vue-loader": "^17.3.1", "vue-loader": "^17.3.1",
"vue-property-decorator": "^10.0.0-rc.3", "vue-property-decorator": "^10.0.0-rc.3",
"vue-router": "^4.2.5", "vue-router": "^4.2.5",
@@ -81,7 +82,7 @@
"vuex-router-sync": "^6.0.0-rc.1" "vuex-router-sync": "^6.0.0-rc.1"
}, },
"devDependencies": { "devDependencies": {
"@quasar/app": "^3.3.3", "@quasar/app-webpack": "^3.12.3",
"@types/bcryptjs": "^2.4.6", "@types/bcryptjs": "^2.4.6",
"@types/dotenv": "^8.2.0", "@types/dotenv": "^8.2.0",
"@types/googlemaps": "^3.43.3", "@types/googlemaps": "^3.43.3",

View File

@@ -1 +1 @@
TERMINA DI LAVORARE SU piuchebuono.app: (Sovrascrivo !) TERMINA DI LAVORARE SU riso.app: (Sovrascrivo !)

View File

@@ -1,8 +1,8 @@
{ {
"name": "riso", "name": "piuchebuono",
"version": "0.6.1", "version": "2.0.1",
"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.", "description": "PiuCheBuono",
"productName": "Riso", "productName": "PiuCheBuono",
"author": "Paolo Arena", "author": "Paolo Arena",
"private": true, "private": true,
"keywords": [], "keywords": [],
@@ -25,7 +25,7 @@
"dependencies": { "dependencies": {
"@cubejs-client/core": "^0.31.0", "@cubejs-client/core": "^0.31.0",
"@quasar/extras": "^1.16.9", "@quasar/extras": "^1.16.9",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.19", "@quasar/quasar-ui-qcalendar": "^4.0.0-beta.16",
"@vue-leaflet/vue-leaflet": "^0.10.1", "@vue-leaflet/vue-leaflet": "^0.10.1",
"@vue/compat": "^3.3.9", "@vue/compat": "^3.3.9",
"@vue/compiler-sfc": "^3.3.9", "@vue/compiler-sfc": "^3.3.9",
@@ -68,7 +68,6 @@
"vue-echarts": "^6.6.1", "vue-echarts": "^6.6.1",
"vue-i18n": "^9.8.0", "vue-i18n": "^9.8.0",
"vue-idb": "^0.2.0", "vue-idb": "^0.2.0",
"vue-image-zoomer": "^2.2.3",
"vue-loader": "^17.3.1", "vue-loader": "^17.3.1",
"vue-property-decorator": "^10.0.0-rc.3", "vue-property-decorator": "^10.0.0-rc.3",
"vue-router": "^4.2.5", "vue-router": "^4.2.5",
@@ -82,7 +81,7 @@
"vuex-router-sync": "^6.0.0-rc.1" "vuex-router-sync": "^6.0.0-rc.1"
}, },
"devDependencies": { "devDependencies": {
"@quasar/app-webpack": "^3.12.3", "@quasar/app": "^3.3.3",
"@types/bcryptjs": "^2.4.6", "@types/bcryptjs": "^2.4.6",
"@types/dotenv": "^8.2.0", "@types/dotenv": "^8.2.0",
"@types/googlemaps": "^3.43.3", "@types/googlemaps": "^3.43.3",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

BIN
public/images/foto1.jpg Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 87 KiB

BIN
public/images/foto2.jpg Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 140 KiB

BIN
public/images/foto3.jpg Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View File

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 634 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

View File

@@ -94,6 +94,7 @@ module.exports = configure((ctx) => ({
transpileDependencies: [ transpileDependencies: [
/quasar-ui-qcalendar[\\/]src/ /quasar-ui-qcalendar[\\/]src/
], ],
devtool: 'source-map',
chainWebpack(chain, { isServer, isClient }) { chainWebpack(chain, { isServer, isClient }) {
chain.resolve.alias chain.resolve.alias
@@ -147,9 +148,8 @@ module.exports = configure((ctx) => ({
}, },
devServer: { devServer: {
https: false, https: false,
port: 8084, port: 8088,
open: false, // opens browser window automatically open: false, // opens browser window automatically
hot: false, // Disable hot module replacement
headers: { headers: {
'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*', 'Access-Control-Allow-Headers': '*',
@@ -306,9 +306,9 @@ module.exports = configure((ctx) => ({
}, },
manifest: { manifest: {
name: 'Riso', name: 'Più che Buono',
short_name: 'Riso', short_name: 'PiuCheBuono',
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.', description: 'PiuCheBuono è un GAS e Bottega',
display: 'standalone', display: 'standalone',
orientation: 'portrait', orientation: 'portrait',
background_color: '#fff', background_color: '#fff',
@@ -318,54 +318,54 @@ module.exports = configure((ctx) => ({
start_url: "/?homescreen=1", start_url: "/?homescreen=1",
icons: [ icons: [
{ {
src: 'images/riso-android-icon-512x512.png', src: 'images/pcb-android-icon-512x512.png',
sizes: '512x512', sizes: '512x512',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-android-icon-384x384.png', src: 'images/pcb-android-icon-384x384.png',
sizes: '384x384', sizes: '384x384',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-android-icon-192x192.png', src: 'images/pcb-android-icon-192x192.png',
sizes: '192x192', sizes: '192x192',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-android-icon-144x144.png', src: 'images/pcb-android-icon-144x144.png',
sizes: '144x144', sizes: '144x144',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-android-icon-96x96.png', src: 'images/pcb-android-icon-96x96.png',
sizes: '96x96', sizes: '96x96',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-apple-icon-120x120.png', src: 'images/pcb-apple-icon-120x120.png',
sizes: '120x120', sizes: '120x120',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-apple-icon-144x144.png', src: 'images/pcb-apple-icon-144x144.png',
sizes: '144x144', sizes: '144x144',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-apple-icon-152x152.png', src: 'images/pcb-apple-icon-152x152.png',
sizes: '152x152', sizes: '152x152',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-apple-icon-180x180.png', src: 'images/pcb-apple-icon-180x180.png',
sizes: '180x180', sizes: '180x180',
type: 'image/png', type: 'image/png',
}, },
], ],
related_applications: [{ related_applications: [{
"platform": "webapp", "platform": "webapp",
"url": "https://www.riso.app/manifest.json" "url": "https://www.piuchebuono.app/manifest.json"
}] }]
}, },
}, },
@@ -400,7 +400,7 @@ module.exports = configure((ctx) => ({
builder: { builder: {
// https://www.electron.build/configuration/configuration // https://www.electron.build/configuration/configuration
appId: 'Riso', appId: 'PiuCheBuono',
}, },
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain

View File

@@ -30,6 +30,7 @@ export const shared_consts = {
LITRI: 3, LITRI: 3,
MILLILITRI: 4, MILLILITRI: 4,
PEZZI: 10, PEZZI: 10,
UOVA: 15,
}, },
TYPECASH: { TYPECASH: {
@@ -89,6 +90,11 @@ export const shared_consts = {
short: 'p', short: 'p',
value: 10, value: 10,
}, },
{
label: 'Uova',
short: 'uova',
value: 15,
},
], ],
CallFunz: { CallFunz: {

View File

@@ -229,11 +229,15 @@ export default defineComponent({
function uploaded(info: any) { function uploaded(info: any) {
console.log('uploaded', info) console.log('uploaded', info)
if (gallerylist.value) { if (gallerylist.value) {
if (props.single && info.files) {
console.log('gallerylist.value[0]', info.files[0].name)
gallerylist.value[0] = { imagefile: info.files[0].name }
} else {
for (const file of info.files) { for (const file of info.files) {
gallerylist.value.push({ imagefile: file.name }) gallerylist.value.push({ imagefile: file.name })
} }
}
if (!props.single)
save() save()
console.log('gallerylist', gallerylist.value) console.log('gallerylist', gallerylist.value)
@@ -260,11 +264,9 @@ export default defineComponent({
console.log('single', props.single) console.log('single', props.single)
if (!props.single) {
save() save()
} }
} }
}
function getfullname(rec: any) { function getfullname(rec: any) {
if (rec) { if (rec) {
@@ -280,8 +282,7 @@ export default defineComponent({
tools.copyStringToClipboard($q, filename, true) tools.copyStringToClipboard($q, filename, true)
} }
function deleteFile(rec: any) function deleteFile(rec: any) {
{
console.log('deleteFile....') console.log('deleteFile....')
const filename = getfullname(rec) const filename = getfullname(rec)
const filenamerel = filename.replace(/^.*[\\\/]/, '') const filenamerel = filename.replace(/^.*[\\\/]/, '')

View File

@@ -116,12 +116,12 @@
<div class="q-pa-sm"> <div class="q-pa-sm">
<div v-if="edit" class="q-gutter-sm " style="max-height: 200px; width: 208px;"> <div v-if="edit" class="q-gutter-sm " style="max-height: 200px; width: 208px;">
<q-uploader <q-uploader
label="Aggiungi Immagine" :label="single && (gallerylist.length > 0 && gallerylist[0].imagefile !== '') ? 'Sostituisci Immagine' : 'Aggiungi Immagine'"
accept="image/*" accept="image/*"
:url="getUrl()" :url="getUrl()"
:headers="tools.getheaders()" :headers="tools.getheaders()"
:max-file-size="3000000" :max-file-size="3000000"
multiple :multiple="!single"
auto-upload auto-upload
hide-upload-btn hide-upload-btn
no-thumbnails no-thumbnails

View File

@@ -263,6 +263,7 @@ export default defineComponent({
}) })
const myrow = ref(<any>null) const myrow = ref(<any>null)
const mypath = ref('')
/* const myrow = computed(() => { /* const myrow = computed(() => {
return props.rec && props.isrec ? props.rec : props.row return props.rec && props.isrec ? props.rec : props.row
@@ -328,6 +329,13 @@ export default defineComponent({
} }
} }
if (props.path) {
mypath.value = props.path
} else {
if (col.value.hasOwnProperty('path'))
mypath.value = col.value.path ? col.value.path : ''
}
// console.log('CMyFieldDb crea', myvalue) // console.log('CMyFieldDb crea', myvalue)
} }
@@ -612,6 +620,9 @@ export default defineComponent({
} else if (col.value.fieldtype === costanti.FieldType.imgcard) { } else if (col.value.fieldtype === costanti.FieldType.imgcard) {
console.log('newVal.imagefile', newVal) console.log('newVal.imagefile', newVal)
myvalue.value = newVal myvalue.value = newVal
} else if (col.value.fieldtype === costanti.FieldType.image_and_filename) {
console.log('newVal.imagefile', newVal)
myvalue.value = newVal
} }
if (col.value.fieldtype === costanti.FieldType.listobj) { if (col.value.fieldtype === costanti.FieldType.listobj) {
@@ -855,6 +866,7 @@ export default defineComponent({
shared_consts, shared_consts,
nameKeydown, nameKeydown,
gotoPage, gotoPage,
mypath,
} }
} }
}) })

View File

@@ -377,7 +377,7 @@
: '' : ''
" "
:title="tools.getTitleGall(table)" :title="tools.getTitleGall(table)"
:directory="tools.getDirectoryGall(myrow, table, path)" :directory="tools.getDirectoryGall(myrow, table, mypath)"
:imgGall="myvalue" :imgGall="myvalue"
:isInModif="isInModif" :isInModif="isInModif"
:edit="isviewfield() && isInModif" :edit="isviewfield() && isInModif"
@@ -409,7 +409,71 @@
: '' : ''
" "
:title="tools.getTitleGall(table)" :title="tools.getTitleGall(table)"
:directory="tools.getDirectoryGall(myrow, table, path)" :directory="tools.getDirectoryGall(myrow, table, mypath)"
:imgGall="[{ imagefile: myvalue }]"
:edit="isviewfield()"
:canModify="canModify"
:isInModif="isInModif"
:single="true"
@update:imgGall="changevalRec"
@showandsave="Savedb"
>
</CGallery>
</div>
<div v-else>
<div v-if="myvalue" class="text-center">
<q-img
:src="myvalue"
class="text-center"
style="height: 100px; width: 100px"
alt="foto"
>
</q-img>
</div>
<div v-else class="text-center">
<q-img
:src="
col.showpicprofile_ifnotset
? userStore.getImgByProfile(row['profile'], true)
: 'images/noimg-user.svg'
"
class="text-center"
style="height: 100px; width: 100px"
alt="nessuna immagine"
>
</q-img>
</div>
<q-btn
v-if="myvalue"
label="Rimuovi Foto"
color="blue"
icon="fas fa-trash-alt"
size="sm"
@click="removephoto"
></q-btn>
</div>
</div>
<div
v-else-if="col.fieldtype === costanti.FieldType.image_and_filename"
>
<div v-if="canEdit">
{{ $t('reg.photo') }}
<q-input
v-model="myvalue"
@update:value="changevalRec"
@update:model-value="Savedb"
:maxlength="col.maxlength ? col.maxlength : undefined"
autofocus
>
</q-input>
<CGallery
:imagebak="
col.showpicprofile_ifnotset
? userStore.getImgByProfile(row['profile'], true)
: ''
"
:title="tools.getTitleGall(table)"
:directory="tools.getDirectoryGall(myrow, table, mypath)"
:imgGall="[{ imagefile: myvalue }]" :imgGall="[{ imagefile: myvalue }]"
:edit="isviewfield()" :edit="isviewfield()"
:canModify="canModify" :canModify="canModify"
@@ -464,7 +528,7 @@
: '' : ''
" "
:title="tools.getTitleGall(table)" :title="tools.getTitleGall(table)"
:directory="tools.getDirectoryGall(myrow, table, path)" :directory="tools.getDirectoryGall(myrow, table, mypath)"
:imgGall="[myvalue]" :imgGall="[myvalue]"
:edit="isviewfield()" :edit="isviewfield()"
:canModify="canModify" :canModify="canModify"
@@ -1055,7 +1119,7 @@
<q-popup-edit <q-popup-edit
v-if="!isInModif && canEdit && noPopupeditByCol(col)" v-if="!isInModif && canEdit && noPopupeditByCol(col)"
v-model="myvalue" v-model="myvalue"
:disable="col.disable || disable" :disable="(col.disable || disable) || (col.fieldtype === costanti.FieldType.image_and_filename)"
:readonly="col.disable || disable" :readonly="col.disable || disable"
:title="col.title ? col.title : col.titlepopupedit" :title="col.title ? col.title : col.titlepopupedit"
buttons buttons
@@ -1080,7 +1144,6 @@
col.fieldtype === costanti.FieldType.crypted col.fieldtype === costanti.FieldType.crypted
" "
> >
<q-input <q-input
v-bind="$attrs" v-bind="$attrs"
counter counter
@@ -1488,6 +1551,35 @@
</CMyEditor> </CMyEditor>
</div> </div>
</div> </div>
<div v-else-if="col.fieldtype === costanti.FieldType.image_and_filename">
<div v-if="canEdit">
{{ $t('reg.photo') }}
<q-input
v-model="myvalue"
@update:value="changevalRec"
:maxlength="col.maxlength ? col.maxlength : undefined"
autofocus
>
</q-input>
<CGallery
:imagebak="
col.showpicprofile_ifnotset
? userStore.getImgByProfile(row['profile'], true)
: ''
"
:title="tools.getTitleGall(table)"
:directory="tools.getDirectoryGall(myrow, table, mypath)"
:imgGall="[{ imagefile: myvalue }]"
:edit="isviewfield()"
:canModify="canModify"
:isInModif="isInModif"
:single="true"
@update:imgGall="changevalRec"
@showandsave="Savedb"
>
</CGallery>
</div>
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.color"> <div v-else-if="col.fieldtype === costanti.FieldType.color">
<q-select <q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"

View File

@@ -8,6 +8,8 @@ const msg_website_enUs = {
products: { products: {
quantity: 'Quantità', quantity: 'Quantità',
quantityAvailable: 'Disponibili', quantityAvailable: 'Disponibili',
stockQty: 'In Magazzino',
stockBloccatiQty: 'Bloccati In Magazzino',
weight: 'Peso', weight: 'Peso',
stars: 'Voto', stars: 'Voto',
color: 'Colore', color: 'Colore',
@@ -36,6 +38,7 @@ const msg_website_enUs = {
productslist: 'Lista Prodotti', productslist: 'Lista Prodotti',
collabora: 'Collabora', collabora: 'Collabora',
storehouses: 'Magazzino', storehouses: 'Magazzino',
providers: 'Fornitori',
departments: 'Uffici', departments: 'Uffici',
orders: 'Ordini Ricevuti', orders: 'Ordini Ricevuti',
orders2: 'Ordini Ricevuti', orders2: 'Ordini Ricevuti',

View File

@@ -8,6 +8,7 @@ const msg_website_es = {
products: { products: {
quantity: 'Quantità', quantity: 'Quantità',
quantityAvailable: 'Disponibili', quantityAvailable: 'Disponibili',
stockQty: 'In Magazzino',
weight: 'Peso', weight: 'Peso',
stars: 'Voto', stars: 'Voto',
color: 'Colore', color: 'Colore',

View File

@@ -1,9 +1,9 @@
const msg_website_it = { const msg_website_it = {
ws: { ws: {
sitename: 'Riso', sitename: 'Più che Buono',
siteshortname: 'RISO', siteshortname: 'Più che Buono',
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.', description: '',
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS', keywords: '',
}, },
hours: { hours: {
descr: 'Descrizione', descr: 'Descrizione',
@@ -16,23 +16,35 @@ const msg_website_it = {
pages: { pages: {
home: 'Home', home: 'Home',
profile: 'Profilo', profile: 'Profilo',
install_site: 'Installa Sito',
profile2: 'ProfiloU', profile2: 'ProfiloU',
mypage2: 'mypage2', mypage2: 'mypage2',
myservice2: 'myservice2', myservice2: 'myservice2',
myhosps2: 'myhosps2', myhosps2: 'myhosps2',
mygood2: 'mygood2', mygood2: 'mygood2',
catalogo: 'Catalogo',
fundraising: 'Sostieni il Progetto', fundraising: 'Sostieni il Progetto',
notifs: 'Configura le Notifiche', notifs: 'Configura le Notifiche',
unsubscribe: 'Disiscriviti', unsubscribe: 'Disiscriviti',
unsubscribe_user: 'Disiscriviti User',
test: 'Test', test: 'Test',
projects: 'Progetti', projects: 'Progetti',
report: 'Report Ore', report: 'Report Ore',
producer: 'Produttore', producer: 'Produttore',
orderinfo: 'Ordini Effettuati', orderinfo: 'Ordini Effettuati',
products: 'Prodotti', products: 'Prodotti',
cash: 'Cassa',
productInfos: 'Info Prodotti',
listinoprodotti: 'Listino Prodotti',
productslist: 'Lista Prodotti', productslist: 'Lista Prodotti',
collabora: 'Collabora', collabora: 'Collabora',
categories: 'Categorie',
storehouses: 'Magazzino', storehouses: 'Magazzino',
providers: 'Fornitori',
catprods: 'Categorie',
subcatprods: 'Sotto-Categorie',
gasordine: 'Gas Ordine',
scontisticas: 'Scontistica',
departments: 'Uffici', departments: 'Uffici',
orders: 'Ordini Ricevuti', orders: 'Ordini Ricevuti',
orders2: 'Ordini Ricevuti', orders2: 'Ordini Ricevuti',
@@ -121,9 +133,11 @@ const msg_website_it = {
only_residenti: 'Solo Residenti', only_residenti: 'Solo Residenti',
only_consiglio: 'Solo Consiglieri', only_consiglio: 'Solo Consiglieri',
color: 'Colore', color: 'Colore',
gasordini: 'Gas Ordini',
gestoreordini: 'Gestore Ordini',
}, },
msg: { msg: {
myAppName: 'Riso', myAppName: 'Più che Buono',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito', myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...', underconstruction: 'App in costruzione...',
myDescriz: '', myDescriz: '',

View File

@@ -7,30 +7,6 @@ import {
import { func } from '@store/Modules/fieldsTable' import { func } from '@store/Modules/fieldsTable'
// const SHOW_PROJINTHEMENU = false
//
// let arrlistafavourite = []
// let arrlistaprojtutti = []
// let arrlistaprojmiei = []
// if (SHOW_PROJINTHEMENU) {
// arrlistaprojtutti = Projects.getters.listaprojects(RouteNames.projectsall)
// arrlistaprojmiei = Projects.getters.listaprojects(RouteNames.myprojects)
// arrlistafavourite = Projects.getters.listaprojects(RouteNames.favouriteprojects)
// }
// PROGETTI -> FAVORITI :
// if (arrlistafavourite.length > 0) {
// arrMenu.push({
// icon: 'favorite_border',
// nametranslate: 'pages.' + RouteNames.favouriteprojects,
// urlroute: RouteNames.favouriteprojects,
// level_parent: 0.0,
// level_child: 0.5,
// routes2: arrlistafavourite,
// idelem: ''
// })
// }
const firstPage = { const firstPage = {
active: true, active: true,
order: 5, order: 5,
@@ -57,72 +33,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: true, inmenu: true,
infooter: true, infooter: true,
}, },
{ /*{
active: true,
order: 400,
path: '/test',
materialIcon: 'fas fa-test',
name: 'mypages.test',
component: () => import('@/views/testServer/testServer.vue'),
inmenu: false,
infooter: false,
},
{
active: true,
order: 12,
path: '/goods',
materialIcon: 'fas fa-tshirt',
name: 'mypages.goods',
component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/services',
materialIcon: 'fas fa-house-user',
name: 'mypages.services',
component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/provapao',
materialIcon: 'fas fa-house-user',
name: 'mypages.provapao',
component: () => import('@/root/provapao/provapao.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 15,
path: '/hosps',
materialIcon: 'fas fa-bed',
name: 'mypages.hosp',
component: () => import('@/root/hosp/hosp.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: site.confpages && site.confpages.enableCircuits,
order: 16,
path: '/circuits',
materialIcon: 'fas fa-coins',
name: 'mypages.circuits',
component: () => import('@/views/user/mycircuits/mycircuits.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true, active: true,
order: 20, order: 20,
path: '/events', path: '/events',
@@ -132,6 +43,17 @@ function getDynamicPages(site: ISites): IListRoutes[] {
meta: { requiresAuth: true }, meta: { requiresAuth: true },
inmenu: true, inmenu: true,
infooter: true, infooter: true,
},*/
{
active: site.confpages && site.confpages.showProfile,
order: 120,
path: '/myprofile',
materialIcon: 'fas fa-user',
name: 'pages.profile',
component: () => import('@/views/user/myprofile/myprofile.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
}, },
{ {
active: true, active: true,
@@ -145,18 +67,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: false, infooter: false,
}, },
{ {
active: true, active: site.confpages && site.confpages.showProfile,
order: 120,
path: '/myprofile',
materialIcon: 'fas fa-user',
name: 'pages.profile',
component: () => import('@/views/user/myprofile/myprofile.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 120, order: 120,
path: '/editprofile', path: '/editprofile',
materialIcon: 'fas fa-user', materialIcon: 'fas fa-user',
@@ -167,7 +78,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: false, infooter: false,
}, },
{ {
active: true, active: site.confpages && site.confpages.showiscrittiMenu,
order: 130, order: 130,
path: '/friends', path: '/friends',
materialIcon: 'fas fa-user-friends', materialIcon: 'fas fa-user-friends',
@@ -177,6 +88,19 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: true, inmenu: true,
infooter: true, infooter: true,
}, },
{
active: site.confpages && site.confpages.enableCircuits,
order: 16,
path: '/circuits',
materialIcon: 'fas fa-coins',
name: 'mypages.circuits',
component: () => import('@/views/user/mycircuits/mycircuits.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
onlyAdmin: true,
onlyManager: true,
},
{ {
active: site.confpages && site.confpages.enableGroups, active: site.confpages && site.confpages.enableGroups,
order: 132, order: 132,
@@ -187,6 +111,8 @@ function getDynamicPages(site: ISites): IListRoutes[] {
meta: { requiresAuth: true }, meta: { requiresAuth: true },
inmenu: true, inmenu: true,
infooter: false, infooter: false,
onlyAdmin: true,
onlyManager: true,
}, },
{ {
active: true, active: true,

View File

@@ -781,6 +781,7 @@ export interface IColGridTable {
showpicprofile_ifnotset?: boolean showpicprofile_ifnotset?: boolean
extrafield?: string extrafield?: string
tipoconto?: number tipoconto?: number
path?: string
} }
export interface ITableRec { export interface ITableRec {

View File

@@ -358,7 +358,8 @@ export default defineComponent({
if (opt.iseuro) { if (opt.iseuro) {
valstr = tools.convertPriceEurToValue(valstr) valstr = tools.convertPriceEurToValue(valstr)
} }
valstr = tools.removeescape(tools.addslashes(valstr)) valstr = tools.removeescape(valstr)
// valstr = tools.addslashes(valstr)
if (!opt.primo) if (!opt.primo)
risultato += ', ' risultato += ', '

View File

@@ -374,6 +374,7 @@ export const costanti = {
listimages: 1024, listimages: 1024,
exact: 2048, exact: 2048,
image: 3000, image: 3000,
image_and_filename: 3100,
imgcard: 3500, imgcard: 3500,
select_by_server: 4000, select_by_server: 4000,
multiselect_by_server: 4010, multiselect_by_server: 4010,

View File

@@ -101,6 +101,7 @@ function AddCol(params: IColGridTable) {
minlength: (params.minlength === undefined) ? 0 : params.minlength, minlength: (params.minlength === undefined) ? 0 : params.minlength,
filter_field: (params.filter_field === undefined) ? '' : params.filter_field, filter_field: (params.filter_field === undefined) ? '' : params.filter_field,
isadvanced_field: (params.isadvanced_field === undefined) ? false : params.isadvanced_field, isadvanced_field: (params.isadvanced_field === undefined) ? false : params.isadvanced_field,
path: (params.path === undefined) ? '' : params.path,
} }
} }
@@ -2040,7 +2041,7 @@ export const colTableProductInfos = [
AddCol({ name: 'name', label_trans: 'products.name' }), AddCol({ name: 'name', label_trans: 'products.name' }),
AddCol({ name: 'description', label_trans: 'products.description', fieldtype: costanti.FieldType.html }), AddCol({ name: 'description', label_trans: 'products.description', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'icon', label_trans: 'products.icon' }), AddCol({ name: 'icon', label_trans: 'products.icon' }),
AddCol({ name: 'img', label_trans: 'products.img' }), AddCol({ name: 'img', label_trans: 'products.img', fieldtype: costanti.FieldType.image_and_filename, path: 'upload/products/' }),
AddCol({ AddCol({
name: 'department', name: 'department',
label_trans: 'products.department', label_trans: 'products.department',

View File

@@ -8363,6 +8363,15 @@ export const tools = {
return inputString.replace(/[^\d.,]/g, '').replace(',', '.'); return inputString.replace(/[^\d.,]/g, '').replace(',', '.');
}, },
escapeQuotes(stringa: string) {
return stringa.replace(/"/g, '\\"');
},
replaceQuotesWithSingleQuotes(jsonString: string) {
return jsonString.replace(/"/g, "'");
},
removeescape(inputString: string): string { removeescape(inputString: string): string {
return inputString.replace('\\', '').replace(/"/g, '') return inputString.replace('\\', '').replace(/"/g, '')
}, },