From 4458d225761c77c857a0781158005b63538cbe58 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Mon, 27 Dec 2021 20:59:55 +0200 Subject: [PATCH] Add project campaigning --- server/router/projects/index.js | 81 +++++++++++++++++++++++++++++++++ server/views/campaign-form.pug | 17 ++++--- server/views/project.pug | 3 ++ 3 files changed, 94 insertions(+), 7 deletions(-) diff --git a/server/router/projects/index.js b/server/router/projects/index.js index 895599f..c42c7c1 100644 --- a/server/router/projects/index.js +++ b/server/router/projects/index.js @@ -274,5 +274,86 @@ module.exports = function (options) { next(error) }) }) + + router.route('/:id/campaign') + .get(function(request, response, next) { + db.Project.findByPk(request.params.id, { + include: [ + { + association: db.Project.Campaign, + required: true + }, + { + association: db.Project.ProjectEntryVersions, + include: [ + { + association: db.ProjectEntryVersion.EntryVersion, + include: [ + { + association: db.EntryVersion.Entry + } + ] + } + ] + }, + { + association: db.Project.ProjectTranslationEntryVersions, + include: [ + { + association: db.ProjectTranslationEntryVersion.TranslationEntryVersion, + include: [ + { + association: db.TranslationEntryVersion.EntryVersion, + include: [ + { + association: db.EntryVersion.Entry + } + ] + } + ] + } + ] + } + ] + }).then(project => { + if (project) { + response.redirect(`/campaigns/${project.campaign.id}`) + } else { + response.redirect(`/projects/${request.params.id}/campaign/create`) + } + }) + }) + + router.route('/:id/campaign/create') + .get(function(request, response, next) { + db.Project.findByPk(request.params.id, { + include: [ + { + association: db.Project.Campaign, + } + ] + }).then(project => { + if (project) { + if (project.campaign) { + response.redirect(`/campaigns/${project.campaign.id}`) + } else { + response.display("campaign-form", { + user: request.user, + pageTitle: "Campaign - Mantra", + campaign: { + name: `Campaign for ${project.name} project` + }, + project: project, + }) + } + + } else { + next() + } + }).catch(error => { + next(error) + }) + }) + return router; }; \ No newline at end of file diff --git a/server/views/campaign-form.pug b/server/views/campaign-form.pug index 48e7f51..e6c1c9b 100644 --- a/server/views/campaign-form.pug +++ b/server/views/campaign-form.pug @@ -12,12 +12,15 @@ block content input#name(type="text", name="name", value=campaign.name) label(for="name") Campaign Name if project - .col.s12 - span project... - each translationEntryVersion in translationEntryVersions - input(type="hidden", name="translationEntryVersions", value=translationEntryVersion.id) - .col.s12.input-field - input(id=translationEntryVersion.id+"-satoshis",type="number", name="satoshis", placeholder="100000 satoshis", step=1, min=1, max=2100000000000000, required) - label(for=translationEntryVersion.id+"-satoshis") Satoshi's required for the #{translationEntryVersion.name} translation + input(type="hidden", name="projectId", value=project.id) + .col.s12.input-field + input(id=project.id+"-satoshis",type="number", name="satoshis", placeholder="100000 satoshis", step=1, min=1, max=2100000000000000, required) + label(for=project.id+"-satoshis") Default satoshi's goal for the #{project.name} translations + if translationEntryVersions + each translationEntryVersion in translationEntryVersions + input(type="hidden", name="translationEntryVersions", value=translationEntryVersion.id) + .col.s12.input-field + input(id=translationEntryVersion.id+"-satoshis",type="number", name="satoshis", placeholder="100000 satoshis", step=1, min=1, max=2100000000000000, required) + label(for=translationEntryVersion.id+"-satoshis") Satoshi's required for the #{translationEntryVersion.name} translation .col.s12 button.btn.black(type="submit") create campaign \ No newline at end of file diff --git a/server/views/project.pug b/server/views/project.pug index 664ed83..0e24b5b 100644 --- a/server/views/project.pug +++ b/server/views/project.pug @@ -7,6 +7,9 @@ block content p.flow-text= project.description + .row + .col.s12 + a.btn.black(href=`/projects/${project.id}/campaign`) funding campaign .divider h2 Entries each projectEntryVersion in project.projectEntryVersions