From d8bf6dcafb32036507703681ca5e93f87be636b0 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Mon, 27 Dec 2021 02:25:03 +0200 Subject: [PATCH] Initial changes to create a campaign --- package-lock.json | 2 +- server/router/campaigns/index.js | 9 ++- server/router/translate/index.js | 71 ++++++++++++++++++++++ server/router/versions/index.js | 29 +++++++++ server/views/campaign-form.pug | 20 ++++++ server/views/entry-version.pug | 3 + server/views/translation-entry-version.pug | 5 ++ 7 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 server/views/campaign-form.pug diff --git a/package-lock.json b/package-lock.json index 8f34561..dfb049a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ } }, "../mantra-db-models": { - "version": "0.0.6.3", + "version": "0.0.7", "license": "ISC", "dependencies": { "bcrypt": "^5.0.1", diff --git a/server/router/campaigns/index.js b/server/router/campaigns/index.js index 70532fa..6e75e30 100644 --- a/server/router/campaigns/index.js +++ b/server/router/campaigns/index.js @@ -8,8 +8,15 @@ module.exports = function (options) { .get(function(request, response, next) { response.display("campaigns", { user: request.user, - pageTitle: "Library - Mantra" + pageTitle: "Campaign - Mantra" }) }) + + router.route('/create') + .post(function(request, response, next) { + console.log(request.body) + next() + }) + return router; }; \ No newline at end of file diff --git a/server/router/translate/index.js b/server/router/translate/index.js index 10ba8ac..687c3c5 100644 --- a/server/router/translate/index.js +++ b/server/router/translate/index.js @@ -317,5 +317,76 @@ module.exports = function (options) { next(error) }) }) + + router.route('/:id/campaign') + .get(function(request, response, next) { + db.TranslationEntryVersion.findByPk(request.params.id, { + include: [ + { + association: db.TranslationEntryVersion.TranslationEntryVersionCampaigns, + required: true, + include: [ + { + association: db.TranslationEntryVersionCampaign.Campaign, + required: true + } + ] + } + ] + }).then(translationEntryVersion => { + if (translationEntryVersion) { + if (translationEntryVersion.translationEntryVersionCampaings.length == 1) { + response.redirect(`/campaigns/${translationEntryVersion.translationEntryVersionCampaings[0].campaignId}`) + } else { + // TODO: Display translation entry campaign... + next() + } + } else { + response.redirect(`/translate/${request.params.id}/campaign/create`) + } + }) + }) + + router.route('/:id/campaign/create') + .get(function(request, response, next) { + db.TranslationEntryVersion.findByPk(request.params.id, { + include: [ + { + association: db.TranslationEntryVersion.EntryVersion, + include: [ + { + association: db.EntryVersion.Entry + } + ] + }, + { + association: db.TranslationEntryVersion.TranslationEntryVersionCampaigns, + required: false, + include: [ + { + association: db.TranslationEntryVersionCampaign.Campaign, + required: false + } + ] + } + ] + }).then(translationEntryVersion => { + if (translationEntryVersion) { + response.display("campaign-form", { + user: request.user, + pageTitle: "Campaign - Mantra", + campaign: { + name: `Campaign for ${translationEntryVersion.name} translation of ${translationEntryVersion.entryVersion.entry.name}` + }, + translationEntryVersions: [translationEntryVersion] + }) + } else { + next() + } + }).catch(error => { + next(error) + }) + }) + return router; }; \ No newline at end of file diff --git a/server/router/versions/index.js b/server/router/versions/index.js index 14a82ad..a0a4187 100644 --- a/server/router/versions/index.js +++ b/server/router/versions/index.js @@ -266,6 +266,35 @@ module.exports = function (options) { next(error) }) }) + + router.route('/:id/campaign/create') + .get(function(request, response, next) { + db.EntryVersion.findByPk(request.params.id, { + include: [ + { + association: db.EntryVersion.Entry, + }, + { + association: db.EntryVersion.TranslationEntryVersions + } + ] + }).then(entryVersion => { + if (entryVersion) { + response.display("campaign-form", { + user: request.user, + pageTitle: "Campaign - Mantra", + campaign: { + name: `Campaign for ${entryVersion.translationEntryVersions.length} translations of ${entryVersion.entry.name}` + }, + translationEntryVersions: entryVersion.translationEntryVersions + }) + } 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 new file mode 100644 index 0000000..860c0a6 --- /dev/null +++ b/server/views/campaign-form.pug @@ -0,0 +1,20 @@ +extend templates/layout.pug + +block content + .container + .center + h1 Create Campaign + + .row + .col.s12 + form.row(action=`/campaigns/create`, method="post") + .col.s12.input-field + input#name(type="text", name="name", value=campaign.name) + label(for="name") Campaign Name + 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/entry-version.pug b/server/views/entry-version.pug index fd4cb48..8797c6f 100644 --- a/server/views/entry-version.pug +++ b/server/views/entry-version.pug @@ -9,6 +9,9 @@ block content .row .col.s12 a.btn.black(href=`/fork/e/${entryVersion.id}`) fork + .row + .col.s12 + a.btn.black(href=`/v/${entryVersion.id}/campaign/create`) funding campaign .divider .row a.btn.black(href=`/v/${entryVersion.id}/chapters/add`) add chapter diff --git a/server/views/translation-entry-version.pug b/server/views/translation-entry-version.pug index b8bd7a4..58b0a03 100644 --- a/server/views/translation-entry-version.pug +++ b/server/views/translation-entry-version.pug @@ -24,4 +24,9 @@ block content .col.s12 form(action=`/translate/${translationEntryVersion.id}/back`, method="post") button.btn.black(type="submit") back translate + + + .row + .col.s12 + a.btn.black(href=`/translate/${translationEntryVersion.id}/campaign`) funding campaign //- TODO: Give summary of chapters...