From 8b4c759f9105dfb978c5bedb0dfd19ef131c46a7 Mon Sep 17 00:00:00 2001 From: Hajar RAHMOUNI Date: Sun, 8 Oct 2023 01:12:45 +0200 Subject: [PATCH] Fix: multiple photos --- database/connection.js | 4 ++-- routes/announcement.js | 4 ++-- views/add_announcement.pug | 2 +- views/drag_drop_script.pug | 24 +++++++++++------------- views/register.pug | 32 ++++++++++++++++++++++++++++++++ views/update_announcement.pug | 5 ++--- 6 files changed, 50 insertions(+), 21 deletions(-) create mode 100644 views/register.pug diff --git a/database/connection.js b/database/connection.js index ce08f68..5c27dae 100644 --- a/database/connection.js +++ b/database/connection.js @@ -2,12 +2,12 @@ const mongoose = require('mongoose'); require('dotenv').config(); const dbName = process.env.DB_NAME; -const url = `mongodb://mongo:27017/${dbName}`; +const url = `mongodb://172.18.0.2:27017/${dbName}`; const connectToDatabase = async () => { try { await mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }); - console.log(`Connecté à la base de données ${dbName}`); + console.log(`Connected to database ${dbName}`); } catch (err) { console.error(err); throw err; diff --git a/routes/announcement.js b/routes/announcement.js index 1b4f256..2d8ec67 100644 --- a/routes/announcement.js +++ b/routes/announcement.js @@ -123,7 +123,7 @@ router.post('/:id/question/:questionId/answer', isAuthenticated, isAgent, async }); -router.post('/add-announcement', isAuthenticated, isAgent, upload.array('photos', ), async (req, res) => { +router.post('/add-announcement', isAuthenticated, isAgent, upload.array('photos[]', ), async (req, res) => { const { title, propertyType, publicationStatus, propertyStatus, description, price, availabilityDate} = req.body; const photos = []; @@ -177,7 +177,7 @@ router.get('/update/:id', isAuthenticated, isAgent, async (req, res) => { }); // Route to handle update of an ad -router.post('/update/:id', isAuthenticated, isAgent, upload.array('photos'), async (req, res) => { +router.post('/update/:id', isAuthenticated, isAgent, upload.array('photos[]'), async (req, res) => { const announcementId = req.params.id; const user = req.user; const { title, propertyType, publicationStatus, propertyStatus, description, price, availabilityDate } = req.body; diff --git a/views/add_announcement.pug b/views/add_announcement.pug index edfd02a..c54c2e2 100644 --- a/views/add_announcement.pug +++ b/views/add_announcement.pug @@ -44,7 +44,7 @@ block content label(for="photos") Photos (Glisser-déposer) .control(style="border: 3px #0a0a0a dotted; padding: 20px") #photo-dropzone.dropzone Glissez-déposez des fichiers ici ou cliquez pour sélectionner. - input#file-input.form-control(type="file", name="photos", multiple) + input#file-input.form-control(type="file", name="photos[]", multiple) #selected-photos diff --git a/views/drag_drop_script.pug b/views/drag_drop_script.pug index d9fc3e4..070683c 100644 --- a/views/drag_drop_script.pug +++ b/views/drag_drop_script.pug @@ -79,21 +79,19 @@ script. // small delay to ensure the removal is complete setTimeout(() => { - // remove the file from newInputDataTransfer - const fileIndex = Array.from(newInputDataTransfer.items).findIndex( - (item) => item.kind === "file" && item.getAsFile().name === file.name - ); - if (fileIndex !== -1) { - newInputDataTransfer.items.remove(fileIndex); - } - - // We update the file input's files - fileInput.files = newInputDataTransfer.files; + // remove the file from newInputDataTransfer + const fileIndex = Array.from(newInputDataTransfer.items).findIndex( + (item) => item.kind === "file" && item.getAsFile().name === file.name + ); + if (fileIndex !== -1) { + newInputDataTransfer.items.remove(fileIndex); + } + + // We update the file input's files + fileInput.files = newInputDataTransfer.files; }, 100); - }); + }); selectedPhotosDiv.appendChild(img); selectedPhotosDiv.appendChild(deleteButton); } - - diff --git a/views/register.pug b/views/register.pug new file mode 100644 index 0000000..78fb4b2 --- /dev/null +++ b/views/register.pug @@ -0,0 +1,32 @@ +extends layout + +block content + .container + .row.justify-content-center.align-items-center(style='margin-top:10%;') + .col-md-6 + .card + .card-body + .card-title + h1 Register + p.lead Créez votre compte + br + //- Display error message if it exists + if error + .alert.alert-danger + strong Error: + | #{error} + form(role='form', action="/register", method="post", style='max-width: 300px;') + .form-group.mb-3 + label(style='padding: 0.5rem 0;') Username + input.form-control(type='text', name="username", placeholder='Username') + .form-group.mb-3 + label(style='padding: 0.5rem 0;') Mot de passe + input.form-control(type='password', name="password", placeholder='mot de passe') + .form-group.mb-3 + label(style='padding: 0.5rem 0;') Êtes-vous un agent ou un consultant ? + select.form-control(name='role') + option(value='consultant') Consultant + option(value='agent') Agent + button.btn.btn-primary(type='submit', style='margin-right: 2rem;') Créer un compte + a(href='/') + button.btn.btn-secondary(type="button") Annuler diff --git a/views/update_announcement.pug b/views/update_announcement.pug index 947afdf..d0623ad 100644 --- a/views/update_announcement.pug +++ b/views/update_announcement.pug @@ -46,9 +46,8 @@ block content .form-group.mb-4 label(for="photos") Photos (Glisser-déposer) .control(style="border: 3px #0a0a0a dotted; padding: 20px") - #photo-dropzone.dropzone - | Glissez-déposez des fichiers ici ou cliquez pour sélectionner. - input#file-input.form-control(type="file", name="photos", multiple) + #photo-dropzone.dropzone Glissez-déposez des fichiers ici ou cliquez pour sélectionner. + input#file-input.form-control(type="file", name="photos[]", multiple) #selected-photos each photo in announcement.photos -- GitLab