galleria prodotto

This commit is contained in:
Surya Paolo
2025-08-12 19:43:41 +02:00
parent e3db42dcbc
commit 2ee710b748
3 changed files with 41 additions and 35 deletions

View File

@@ -6,6 +6,7 @@ const tools = require('../tools/general');
mongoose.Promise = global.Promise; mongoose.Promise = global.Promise;
mongoose.level = "F"; mongoose.level = "F";
const { IImg } = require('../models/myscheda');
// Resolving error Unknown modifier: $pushAll // Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => { mongoose.plugin(schema => {

View File

@@ -464,7 +464,7 @@ router.post('/chatbot', authenticate, async (req, res) => {
res.json(response.data); res.json(response.data);
} catch (error) { } catch (error) {
console.error(error); console.error(error?.message);
res.status(500).send('Errore nella comunicazione con Rasa'); res.status(500).send('Errore nella comunicazione con Rasa');
} }
}); });

View File

@@ -1016,7 +1016,12 @@ async function importPage(req, idapp, jsonString) {
const table = globalTables.getTableByTableName(tableName); const table = globalTables.getTableByTableName(tableName);
if (tableName === 'mypages') { if (tableName === 'mypages') {
if (User.isAdmin(req.user.perm) || User.isEditor(req.user.perm) || User.isCommerciale(req.user.perm) || User.isCollaboratore(req.user.perm)) { if (
User.isAdmin(req.user.perm) ||
User.isEditor(req.user.perm) ||
User.isCommerciale(req.user.perm) ||
User.isCollaboratore(req.user.perm)
) {
for (const page of myexp.mypages) { for (const page of myexp.mypages) {
const { ImportedRecords, newId } = await upsertRecord(table, page, idapp); const { ImportedRecords, newId } = await upsertRecord(table, page, idapp);
if (!newIdPage && newId) { if (!newIdPage && newId) {
@@ -2237,10 +2242,15 @@ router.post('/upload_from_other_server/:dir', authenticate, (req, res) => {
// Funzione principale che gestisce l'upload // Funzione principale che gestisce l'upload
async function uploadFile(req, res, version, options = {}) { async function uploadFile(req, res, version, options = {}) {
try {
const quality = options.quality || 'original'; const quality = options.quality || 'original';
const dirParam = req.params.dir || ''; const dirParam = req.params.dir || '';
const dir = tools.invertescapeslash(dirParam); const dir = tools.invertescapeslash(dirParam);
const idapp = req.user.idapp; const idapp = req.user?.idapp;
if (!idapp) {
return res.status(400).send('ID applicazione mancante');
}
// Determina la cartella base // Determina la cartella base
const dirmain = version > 0 && tools.sulServer() ? '' : server_constants.DIR_PUBLIC_LOCALE; const dirmain = version > 0 && tools.sulServer() ? '' : server_constants.DIR_PUBLIC_LOCALE;
@@ -2249,49 +2259,44 @@ async function uploadFile(req, res, version, options = {}) {
// Directory di upload specifica // Directory di upload specifica
const uploadDir = path.join(baseUploadFolder, dir); const uploadDir = path.join(baseUploadFolder, dir);
try {
// Crea la cartella se non esiste // Crea la cartella se non esiste
await tools.mkdirpath(uploadDir); await tools.mkdirpath(uploadDir);
// Configura formidable // Configura formidable
const form = new formidable.IncomingForm({ uploadDir }); const form = new formidable.IncomingForm({ uploadDir });
// Promisifica il parsing per usare await // Parsing in modalità Promise
const files = await new Promise((resolve, reject) => { const files = await new Promise((resolve, reject) => {
form.parse(req, (err, fields, files) => { form.parse(req, (err, fields, files) => {
if (err) reject(err); if (err) return reject(err);
else resolve(files); resolve(files);
}); });
}); });
// files può contenere uno o più file: gestiamo uno per semplicità // Gestione file
for (const key in files) { for (const key in files) {
if (Object.prototype.hasOwnProperty.call(files, key)) { if (!Object.prototype.hasOwnProperty.call(files, key)) continue;
const file = files[key];
console.log('File ricevuto:', file[0].originalFilename); const file = files[key][0];
console.log('File ricevuto:', file.originalFilename);
const oldFIle = file[0].filepath || file[0].path; const oldFile = file.filepath || file.path;
const newFilePath = path.join(uploadDir, `${file.newFilename}_${file.originalFilename}`);
// Nuovo percorso per il file rinominato // Sposta e rinomina
const newFilePath = path.join(uploadDir, file[0].originalFilename); await tools.move(oldFile, newFilePath);
// Sposta e rinomina il file (move è la funzione ottimizzata) // Ridimensionamento opzionale
// await move(file[0].filepath || file[0].path, newFilePath);
await tools.move(oldFIle, newFilePath);
// Eventuale ridimensionamento immagine
await handleImageResizing(newFilePath, quality); await handleImageResizing(newFilePath, quality);
console.log(`File processato e salvato in: ${newFilePath}`); console.log(`File processato e salvato in: ${newFilePath}`);
} }
}
res.status(200).send('Upload completato con successo'); return res.status(200).send('Upload completato con successo');
} catch (err) { } catch (err) {
console.error('Errore durante uploadFile:', err); console.error('Errore durante uploadFile:', err);
if (!res.headersSent) { if (!res.headersSent) {
res.status(500).send("Errore durante l'upload"); return res.status(500).send("Errore durante l'upload");
} }
} }
} }
@@ -2355,7 +2360,7 @@ router.post('/upload/:dir', authenticate, (req, res) => {
return uploadFile(req, res, 0, req.body.options); return uploadFile(req, res, 0, req.body.options);
}); });
router.post('/uploadnew/:vers/:dir/', authenticate, (req, res) => { router.post('/uploadnew/:vers/:dir/', authenticate_noerror_WithUser, (req, res) => {
let versionstr = req.params.vers; let versionstr = req.params.vers;
let version = tools.getVersionint(versionstr); let version = tools.getVersionint(versionstr);