Skip to content

Commit 6866d4d

Browse files
committed
fix: theme image routes
1 parent 9a16736 commit 6866d4d

File tree

4 files changed

+46
-54
lines changed

4 files changed

+46
-54
lines changed

art-gallery/app.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const routes = require("./routes/routes");
66
const mongoose = require("mongoose");
77
const cors = require('cors');
88
const multer = require('multer');
9+
const path=require('path');
910

1011
const port = 8000;
1112
const app = express();
@@ -22,8 +23,10 @@ app.use(express.json());
2223
// Increase the request size limit for multer
2324
const upload = multer({ limits: { fileSize: 150 * 1024 * 1024 } });
2425
//static serves
25-
app.use("/images", express.static(process.cwd() + "/public/uploads"));
26-
app.use("/default", express.static(process.cwd() + "/public/placeholders"));
26+
app.use("/default", express.static(path.join(__dirname, "public","placeholders")));
27+
app.use("/images", express.static(path.join(__dirname, "public", "images")));
28+
app.use("/theme", express.static(path.join(__dirname, "public", "theme")));
29+
2730

2831
const testCORS = async () => {
2932
try {

art-gallery/app/controllers/theme.controller.js

+37-30
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ const addHistory = async (req, res) => {
7171
throw new Error("Error renaming file. Error: " + err);
7272
}
7373
});
74-
image = "/images/theme/" + image;
74+
image = "/theme/" + image;
7575

7676
} else {
7777
return res.status(400).json({
@@ -145,12 +145,12 @@ const show = async (req, res) => {
145145

146146
const create = async (req, res) => {
147147
try {
148-
const { theme_title, theme_description, work_title, work_description } = req.body;
149-
let slug = slugify(name);
148+
const { theme_title, theme_description, work_title, work_description, info_link } = req.body;
149+
let slug = slugify(theme_title);
150150
let i = 0;
151151

152152
while (await Theme.findOne({ slug: slug })) {
153-
slug = slugify(name, ++i);
153+
slug = slugify(theme_title, ++i);
154154
}
155155

156156
if (!req.files || !Object.hasOwn(req.files, "theme_image") || !Object.hasOwn(req.files, "work_image")) {
@@ -161,12 +161,13 @@ const create = async (req, res) => {
161161
}
162162

163163
let theme_images = [];
164-
for (img of req.files["theme_image"]) {
164+
for (let idx = 0; idx < req.files["theme_image"].length; idx++) {
165+
const img = req.files["theme_image"][idx];
165166
let image = "";
166-
167-
let oldFilename = img.filename;
168-
let extension = oldFilename.split(".")[oldFilename.split(".").length - 1];
169-
image = slug + "." + extension;
167+
let extension = img.filename.split(".").pop();
168+
// Add number suffix for multiple images
169+
image = `${slug}-${idx + 1}.${extension}`;
170+
170171
fs.rename(
171172
img.path,
172173
img.destination + "/" + image,
@@ -176,16 +177,17 @@ const create = async (req, res) => {
176177
}
177178
}
178179
);
179-
theme_images.push("/images/theme/" + image);
180+
theme_images.push("/theme/" + image);
180181
}
181-
182+
182183
let work_images = [];
183-
for (img of req.files["work_image"]) {
184+
for (let idx = 0; idx < req.files["work_image"].length; idx++) {
185+
const img = req.files["work_image"][idx];
184186
let image = "";
185-
186-
let oldFilename = img.filename;
187-
let extension = oldFilename.split(".")[oldFilename.split(".").length - 1];
188-
image = slug + "." + extension;
187+
let extension = img.filename.split(".").pop();
188+
// Add number suffix for multiple images
189+
image = `${slug}-work-${idx + 1}.${extension}`;
190+
189191
fs.rename(
190192
img.path,
191193
img.destination + "/" + image,
@@ -195,7 +197,7 @@ const create = async (req, res) => {
195197
}
196198
}
197199
);
198-
work_images.push("/images/theme/" + image);
200+
work_images.push("/theme/" + image);
199201
}
200202

201203
const theme = await Theme.create({
@@ -205,11 +207,14 @@ const create = async (req, res) => {
205207
theme_images,
206208
work_images,
207209
work_description,
208-
work_title
210+
work_title,
211+
info_link: info_link || null // Add info_link with null fallback
209212
});
213+
210214
return res.status(200).json({
211215
status: "success",
212216
message: "Theme added successfully.",
217+
theme: theme
213218
});
214219
} catch (e) {
215220
if (req.file) {
@@ -225,7 +230,7 @@ const create = async (req, res) => {
225230
const edit = async (req, res) => {
226231
try {
227232
const { slug } = req.params;
228-
const { theme_title, theme_description, work_title, work_description } = req.body;
233+
const { theme_title, theme_description, work_title, work_description, info_link } = req.body;
229234
let theme = await Theme.findOne({ slug });
230235
if (!theme) {
231236
return res
@@ -245,13 +250,15 @@ const edit = async (req, res) => {
245250
if (work_description) {
246251
theme.work_description = work_description;
247252
}
253+
if (info_link !== undefined) theme.info_link = info_link; // Add info_link update
248254

249255
if (req.files && Object.hasOwn(req.files, 'theme_image')) {
250256
let theme_images = [];
251-
for (file of req.files["theme_image"]) {
252-
let oldFilename = file.filename;
253-
let extension = oldFilename.split(".")[oldFilename.split(".").length - 1];
254-
let image = slug + "." + extension;
257+
for (let idx = 0; idx < req.files["theme_image"].length; idx++) {
258+
const file = req.files["theme_image"][idx];
259+
let extension = file.filename.split(".").pop();
260+
let image = `${slug}-${idx + 1}.${extension}`;
261+
255262
fs.rename(
256263
file.path,
257264
file.destination + "/" + image,
@@ -263,18 +270,18 @@ const edit = async (req, res) => {
263270
}
264271
}
265272
);
266-
theme_images.push(image);
273+
theme_images.push("/theme/" + image);
267274
}
268275
theme.theme_images = theme_images;
269276
}
270277

271278
if (req.files && Object.hasOwn(req.files, 'work_image')) {
272279
let work_images = [];
273-
274-
for (file of req.files["work_image"]) {
275-
let oldFilename = file.filename;
276-
let extension = oldFilename.split(".")[oldFilename.split(".").length - 1];
277-
let image = slug + "." + extension;
280+
for (let idx = 0; idx < req.files["work_image"].length; idx++) {
281+
const file = req.files["work_image"][idx];
282+
let extension = file.filename.split(".").pop();
283+
let image = `${slug}-work-${idx + 1}.${extension}`;
284+
278285
fs.rename(
279286
file.path,
280287
file.destination + "/" + image,
@@ -286,7 +293,7 @@ const edit = async (req, res) => {
286293
}
287294
}
288295
);
289-
work_images.push(image);
296+
work_images.push("/theme/" + image);
290297
}
291298
theme.work_images = work_images;
292299
}

art-gallery/app/middlewares/upload.js

-22
This file was deleted.

art-gallery/models/theme.js

+4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ const ThemeSchema = new Schema({
2020
type: String,
2121
required: true,
2222
},
23+
info_link: {
24+
type: String,
25+
default: null
26+
},
2327
work_title: {
2428
type: String,
2529
required: true,

0 commit comments

Comments
 (0)