From 4a97c240eb8f62b3b229cf2bbab900de6afc4890 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 21 Jul 2020 14:41:07 +0000 Subject: [PATCH] update --- src/EmailService.ts | 4 +- .../AdminOrganizationController.ts | 23 +++++- src/controllers/DefaultController.ts | 20 ++--- src/controllers/PublicController.ts | 12 ++- src/models/Organization.ts | 8 +- static/assets/home.css | 19 +++-- static/assets/img/favicon-16x16.png | Bin 0 -> 4687 bytes static/assets/img/favicon-32x32.png | Bin 0 -> 4687 bytes static/assets/js/home.js | 33 ++++---- static/assets/js/organization.js | 44 ++++++++++- static/assets/main.css | 13 ++++ static/assets/organization.css | 72 +++++++++++++----- static/favicon.ico | Bin 0 -> 103676 bytes views/base.twig | 2 +- views/emails/test.twig | 7 ++ views/organization.twig | 19 ++++- 16 files changed, 217 insertions(+), 59 deletions(-) create mode 100755 static/assets/img/favicon-16x16.png create mode 100755 static/assets/img/favicon-32x32.png create mode 100644 static/favicon.ico create mode 100644 views/emails/test.twig diff --git a/src/EmailService.ts b/src/EmailService.ts index 8e417c4..6ee8563 100644 --- a/src/EmailService.ts +++ b/src/EmailService.ts @@ -25,7 +25,7 @@ export default class EmailService { pass: process.env.SMTP_PASSWORD, } } - console.log(config) + //console.log(config) return nodemailer.createTransport(config) } @@ -73,7 +73,7 @@ export default class EmailService { } else { this.nativeSend(config).then(res => { console.log('> A "' + templateName + '" email was sent') - resolve() + resolve(res) }).catch(err => { console.log('> A "' + templateName + '" email failed to be sent') console.error(err) diff --git a/src/controllers/AdminOrganizationController.ts b/src/controllers/AdminOrganizationController.ts index 7461d77..9fa06dc 100644 --- a/src/controllers/AdminOrganizationController.ts +++ b/src/controllers/AdminOrganizationController.ts @@ -19,6 +19,8 @@ export default class AdminOrganizationController { } static import(req: express.Request, res: express.Response) { + // first column is always name + // second column is always email const data = req.body.csv res.json({ success: true, @@ -69,8 +71,8 @@ export default class AdminOrganizationController { .then(data => { // generate extra slugs let extra: any = {} - if (req.body.name !== undefined) { - let slug = slugify(req.body.name) + if (req.body.adminName !== undefined) { + let slug = slugify(req.body.adminName) // only add this slug if the proposed slug is not found in the list of current slug let currentSlugs: string[] = [] if (data !== null && Array.isArray(data.get('slugs'))) { @@ -164,6 +166,22 @@ export default class AdminOrganizationController { const publishedVersion: any = data.get('publishedVersion') const proposedVersion: any = data.get('proposedVersion') + // generate extra slugs + // in case of a change by the organization it self, we need to keep up to date the slug + + let extra: any = {} + let slug = slugify(proposedVersion.name) + // only add this slug if the proposed slug is not found in the list of current slug + let currentSlugs: string[] = [] + if (Array.isArray(data.get('slugs'))) { + currentSlugs = data.get('slugs') + } + if (currentSlugs.filter(s => s === slug).length === 0) { + extra.slugs = currentSlugs.concat([slug]) + } + extra.adminName = proposedVersion.name + extra.email = proposedVersion.contacts.email + /** * Clean all the unused media from the publishedVersion */ @@ -203,6 +221,7 @@ export default class AdminOrganizationController { */ Organization.updateOne({ _id: req.params.id }, { + ...extra, publishedVersion: data.get('proposedVersion'), rejectionDescription: '', validationState: 'published', diff --git a/src/controllers/DefaultController.ts b/src/controllers/DefaultController.ts index 5da6492..c942077 100644 --- a/src/controllers/DefaultController.ts +++ b/src/controllers/DefaultController.ts @@ -59,15 +59,17 @@ export default class DefaultController { static async sendEmail(req: express.Request, res: express.Response) { // create reusable transporter object using the default SMTP transport - EmailService.getTransporter().sendMail({ - from: '"Some Sender" ', - to: "spamfree@matthieubessat.fr", - subject: "Hello ✔", - text: "Hello world? Comment va tu Earum facilis libero excepturi sunt fuga eveniet autem. Illo odit quae aperiam et praesentium. Error dignissimos atque omnis. Ea iste in doloribus praesentium corrupti. Ut consequatur eius eveniet quia aut. Nam a rerum quis. Repudiandae sit nobis esse. Eaque ipsum qui enim. Expedita laudantium officia omnis maxime. Odio exercitationem recusandae quis consequatur voluptatum.", - html: "

Hello world? Comment va tu Earum facilis libero excepturi sunt fuga eveniet autem. Illo odit quae aperiam et praesentium. Error dignissimos atque omnis. Ea iste in doloribus praesentium corrupti. Ut consequatur eius eveniet quia aut. Nam a rerum quis. Repudiandae sit nobis esse. Eaque ipsum qui enim. Expedita laudantium officia omnis maxime. Odio exercitationem recusandae quis consequatur voluptatum.

", - }).then(info => { - console.log("Message sent: %s", info.messageId); - console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info)); + EmailService.send( + 'matthieu.bessat.27@gmail.com', + "Email de test", + "token", + { + adminName: "Assos de test", + token: "tokendetest", + link: EmailService.getWebUiBaseUrl() + '/delegate?delegateToken=tokendetest' + } + ).then(info => { + console.log(info) }).catch(err => { console.error(err) }) diff --git a/src/controllers/PublicController.ts b/src/controllers/PublicController.ts index a4c03a5..570ae6a 100644 --- a/src/controllers/PublicController.ts +++ b/src/controllers/PublicController.ts @@ -22,6 +22,7 @@ export default class PublicController { // }) Tag.find().then(tags => { let isProposed = Utils.isStrUsable(req.query, 'only') + // @ts-ignore if (isProposed && !mongoose.Types.ObjectId.isValid(req.query.only)) { return ErrorController.handleServerError({ stack: 'Invalid object id in only query param'}, req, res, []) } @@ -105,10 +106,19 @@ export default class PublicController { return media }) } + version.cutDescription = Utils.isStrUsable(version, 'descriptionLong') && version.descriptionLong.length > 200 + // if (version.cutDescription) { + // version.descriptionFirstHalf = version.descriptionLong.substr(0, 200) // not gonna lie + // version.descriptionSecondHalf = version.descriptionLong.substr(200) + // } + let hour = lastPublished.toLocaleTimeString('fr-FR', { timezone: '+2' }) + if (hour.charAt(1) === ':') { + hour = '0' + hour + } res.render('organization.twig', { layout: 'standalone', data: version, - lastPublished: lastPublished.toLocaleDateString('fr-FR') + ' ' + lastPublished.toLocaleTimeString('fr-FR', { timezone: '+2' }).substr(0, 5), + lastPublished: lastPublished.toLocaleDateString('fr-FR') + ' ' + hour.substr(0, 5), isProposed, id: org.get('_id') }) diff --git a/src/models/Organization.ts b/src/models/Organization.ts index 348c486..f45487a 100644 --- a/src/models/Organization.ts +++ b/src/models/Organization.ts @@ -58,7 +58,13 @@ const OrganizationVersion = { address: { type: String }, person: { type: String }, email: { type: String }, - phone: { type: String } + phone: { type: String }, + peoples: [{ + name: { type: String }, + email: { type: String }, + phone: { type: String }, + role: { type: String } + }] }, schedule: [{ name: { type: String, required: true }, diff --git a/static/assets/home.css b/static/assets/home.css index ae7f2ba..d40109d 100644 --- a/static/assets/home.css +++ b/static/assets/home.css @@ -181,15 +181,16 @@ margin-bottom: 1em; box-shadow: 0 0 8px 0px rgba(0,0,0,0.1); transition: all 0.2s; - height: 12em; overflow: hidden; + text-decoration: none; } .card:hover { + text-decoration: none; transform: scale(1.02); } -.card-image { +.card-image-container { border-right: 1px solid #C4C4C4; display: flex; @@ -199,8 +200,12 @@ padding: 1em; } -.card-image img { +.card-image { + height: 12em; width: 12em; + + background-position: center; + background-size: cover; } .card-content { @@ -332,9 +337,13 @@ .card { display: block; } - .card-image { + .card-image-container { + padding: 0; + margin: 0; border-right: 0; border-bottom: 1px solid #C4C4C4; - margin: 0; + } + .card-content { + width: auto; } } diff --git a/static/assets/img/favicon-16x16.png b/static/assets/img/favicon-16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..3f77dc215a7d90281077f3d1eb033bd437726cfb GIT binary patch literal 4687 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 RFfIT9002ovPDHLkV1nIA*bM*x literal 0 HcmV?d00001 diff --git a/static/assets/img/favicon-32x32.png b/static/assets/img/favicon-32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..3f77dc215a7d90281077f3d1eb033bd437726cfb GIT binary patch literal 4687 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 RFfIT9002ovPDHLkV1nIA*bM*x literal 0 HcmV?d00001 diff --git a/static/assets/js/home.js b/static/assets/js/home.js index 6917ae0..46c9e09 100644 --- a/static/assets/js/home.js +++ b/static/assets/js/home.js @@ -15,12 +15,12 @@ navEnabler.onclick = async () => { // open the menu oldNavText = navEnablerText.textContent navEnablerText.textContent = "Minimiser le menu" - navEnablerIcon.style.transform = "rotate(0deg)" + navEnablerIcon.style.transform = "rotate(90eg)" navContent.style.maxHeight = navContent.scrollHeight + "px" } else { // close the menu navEnablerText.textContent = oldNavText - navEnablerIcon.style.transform = "rotate(-90deg)" + navEnablerIcon.style.transform = "rotate(0deg)" navContent.style.maxHeight = null } navOpened = !navOpened @@ -82,12 +82,12 @@ function setAttributes(node, attrs) { } function renderCard(organization) { - let card = createEl('card') + let card = createEl('card', 'a') // image - let image = createEl('card-image') - let imageTag = createEl(0, 'img') - imageTag.src = organization.thumbnail + let image = createEl('card-image-container') + let imageTag = createEl('card-image') + imageTag.style = `background-image: url('${organization.thumbnail}')` image.appendChild(imageTag) card.appendChild(image) @@ -117,14 +117,15 @@ function renderCard(organization) { let description = createEl('card-description') description.textContent = organization.description - //let link = createEl('card-link') - let aTag = createEl('card-link', 'a') - aTag.href = "/association/" + organization.slugs[organization.slugs.length - 1] + let goTo = "/association/" + organization.slugs[organization.slugs.length - 1] if (organization.isProposed) { - aTag.href += "?version=proposed" + goTo += "?version=proposed" } - aTag.textContent = "En savoir plus" - description.appendChild(aTag) + // let link = createEl('card-link') + // let aTag = createEl('card-link', 'a') + // aTag.href = + // aTag.textContent = "En savoir plus" + // description.appendChild(aTag) upperContent.appendChild(description) //link.appendChild(aTag) @@ -132,9 +133,11 @@ function renderCard(organization) { //content.appendChild(link) card.appendChild(content) - card.onclick = () => { - window.location = aTag.href - } + card.href = goTo + + // card.onclick = () => { + // window.location = goTo + // } return card } diff --git a/static/assets/js/organization.js b/static/assets/js/organization.js index b567f08..4ce721d 100644 --- a/static/assets/js/organization.js +++ b/static/assets/js/organization.js @@ -9,17 +9,43 @@ document.querySelectorAll('.schedule-category').forEach(node => { header.onclick = () => { if (!opened) { // open the table - icon.style.transform = "rotate(180deg)" + icon.style.transform = "rotate(0deg)" content.style.maxHeight = content.scrollHeight + "px" } else { // close the table - icon.style.transform = "rotate(0deg)" + icon.style.transform = "rotate(180deg)" content.style.maxHeight = null } opened = !opened } }) +/** + * Description + */ +let description = document.querySelector('.description-cutted') +let descriptionActions = document.querySelector('.description-actions-container') +let descriptionOpened = false +let defaultMaxHeight = "" +if (description !== null) { + let btn = document.querySelector('.description-btn') + btn.onclick = () => { + if (!descriptionOpened) { + // open the full description + descriptionActions.className = descriptionActions.className.replace(' closed', '') + defaultMaxHeight = description.style.maxHeight + description.style.maxHeight = description.scrollHeight + "px" + btn.textContent = "Fermer la description" + } else { + // initial max Height + descriptionActions.className += ' closed' + description.style.maxHeight = defaultMaxHeight + btn.textContent = "Ouvrir la description" + } + descriptionOpened = !descriptionOpened + } +} + /** * Gallery modal to view media in large */ @@ -70,8 +96,22 @@ let openModal = (url, isVideo) => { //document.body.style.height = '100vh' document.body.style.overflow = 'hidden' document.body.style.touchAction = 'none' + + setTimeout(() => { + + const outsideClickListener = event => { + if (!mediaModalContent.contains(event.target) && isVisible(mediaModalContent)) { + closeModal() + document.removeEventListener('click', outsideClickListener) + } + } + document.addEventListener('click', outsideClickListener) + + }, 100) } +const isVisible = elem => !!elem && !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ) + let closeModal = () => { mediaModal.style.visibility = 'hidden' mediaModal.style.opacity = 0 diff --git a/static/assets/main.css b/static/assets/main.css index 9763087..567b1e9 100644 --- a/static/assets/main.css +++ b/static/assets/main.css @@ -53,6 +53,19 @@ body { color: white; } +.btn { + padding: .5em 1em; + color: white; + border-radius: 7px; + background: #2c3e50; + border: 0; +} + +.btn:focus { + outline: 0; + opacity: 0.8; +} + @media (max-width: 1600px) { .container { width: 70%; diff --git a/static/assets/organization.css b/static/assets/organization.css index 48aa34f..7cddf8d 100644 --- a/static/assets/organization.css +++ b/static/assets/organization.css @@ -57,7 +57,7 @@ .cover { height: 13em; margin-top: -13em; - background-color: rgba(230, 126, 34, 0.78); + background-color: rgba(230, 126, 34, 0.4); background-size: cover; } @@ -294,7 +294,7 @@ section { text-align: justify; margin: 0 auto; width: 80%; - margin-top: 1.5em; + margin-top: 1em; margin-bottom: .5em; } @@ -332,16 +332,37 @@ section { padding-left: 1em; } +.description-cutted { + max-height: 13em; + + overflow: hidden; + transition: max-height 0.1s ease-out; + +} + +.description-actions-container { + display: flex; + justify-content: center; + align-items: center; + margin-top: 1em; +} + +.description-actions-container.closed { + box-shadow: 0px -16px 16px -3px rgb(255, 255, 255); + background: rgba(255,255,255,0.8); + position: relative; + top: -62px; + + height: 62px; + margin-bottom: -62px; +} + /* ***************************************************************************** * SCHEDULE ********************************************************************************/ -.schedule { - -} - .schedule-category { margin-bottom: 1em; } @@ -357,13 +378,13 @@ section { } .schedule-category-collapse-icon { + transform: rotate(180deg); color: #B12008; width: 1.5em; transition: all 0.1s ease-out; } .schedule-category-table { - max-height: 0; overflow: hidden; transition: max-height 0.1s ease-out; @@ -376,7 +397,7 @@ section { margin-left: 2em; margin-top: 1em; margin-bottom: 1em; - margin-right: 40em; + margin-right: 20em; padding: 1em 2em 1em 2em; } @@ -395,6 +416,14 @@ section { margin-bottom: 0; } +.schedule-category-hours { + color: #2c3e50; +} + +.schedule-category-hours .spearator { + color: #bdc3c7; +} + /* ***************************************************************************** * PRICING @@ -450,7 +479,7 @@ section { ********************************************************************************/ -.contact { +.org-container { margin: 0 auto; width: 70%; } @@ -541,13 +570,15 @@ section { .mentions { display: flex; justify-content: center; - width: 100%; + padding-left: 1em; + padding-right: 1em; flex-direction: column; text-align: center; color: #d35400; - margin-top: 2em; - margin-bottom: .5em; + margin-top: 1em; + margin-bottom: 1em; } + .mentions div { margin-bottom: .5em; } @@ -589,17 +620,17 @@ RESPONSIVE @media (max-width: 900px) { .cover-background { - height: 30em; + height: 23em; width: 100%; } .cover { - height: 30em; - margin-top: -30em; + height: 23em; + margin-top: -23em; } .cover-content { - height: 30em; + height: 23em; flex-direction: column; justify-content: center; @@ -628,6 +659,10 @@ RESPONSIVE } /* Mosaic level 2 */ + .mosaic-2 { + grid-template-rows: 1fr 1fr; + } + .mosaic-2, .mosaic-3 { grid-template-columns: 1fr; } @@ -684,7 +719,7 @@ RESPONSIVE margin-bottom: 1em; } - .contact { + .org-container { width: 100%; } @@ -720,4 +755,7 @@ RESPONSIVE .media-modal { width: 90%; } + .description { + width: 95%; + } } \ No newline at end of file diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..11e5d6127a537f82515b628bccfe036fbfb89995 GIT binary patch literal 103676 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 Rt(@gXpXYu`(XlG2{|`>)1Ka=r literal 0 HcmV?d00001 diff --git a/views/base.twig b/views/base.twig index ac13e88..12ca714 100644 --- a/views/base.twig +++ b/views/base.twig @@ -35,7 +35,7 @@ Github: https://github.com/lefuturiste class="header-sub-title"> Espace Condorcet Centre Social -

Forum des associations

+

Forum des associations 2020

Cette année nous vous invitons à découvrir le forum virtuel des associations.
diff --git a/views/emails/test.twig b/views/emails/test.twig new file mode 100644 index 0000000..d183fd0 --- /dev/null +++ b/views/emails/test.twig @@ -0,0 +1,7 @@ +

+This is a test +

+ +

+Date: {{ date }} +

\ No newline at end of file diff --git a/views/organization.twig b/views/organization.twig index 26da092..4d5feac 100644 --- a/views/organization.twig +++ b/views/organization.twig @@ -73,8 +73,17 @@
- {% if data.descriptionLong is not null and data.descriptionLong|length > 7 %} + {% if data.descriptionLong is not null and data.descriptionLong|length > 7 and not data.cutDescription %} {{ data.descriptionLong|raw }} + {% elseif data.cutDescription %} +
+ {{ data.descriptionLong }} +
+
+ +
{% else %} {{ data.descriptionShort }} {% endif %} @@ -88,8 +97,9 @@

Crénaux

-
- {% for item in data.schedule %} +
+ {% for item in data.schedule %} + {% if item.when|length > 0 %}
@@ -120,6 +130,7 @@
+ {% endif %} {% endfor %}
@@ -155,7 +166,7 @@

Contact

-
+
{% if data.contacts.person|length > 0 %}