diff --git a/server/router/pledges/index.js b/server/router/pledges/index.js index 94b9390..5f33feb 100644 --- a/server/router/pledges/index.js +++ b/server/router/pledges/index.js @@ -6,10 +6,21 @@ module.exports = function (options) { router.route('/') .get(function(request, response, next) { - response.display("pledges", { - user: request.user, - pageTitle: "Library - Mantra" + db.Pledge.findAll({ + }).then(pledges => { + if (pledges) { + response.display("pledges", { + user: request.user, + pageTitle: "Pledges - Mantra", + pledges: pledges + }) + } else { + next() + } + }).catch(error => { + next(error) }) + }) return router; }; \ No newline at end of file diff --git a/server/router/translate/index.js b/server/router/translate/index.js index b76434b..3b42c02 100644 --- a/server/router/translate/index.js +++ b/server/router/translate/index.js @@ -318,7 +318,7 @@ module.exports = function (options) { }) }) - router.route('/:id/campaign') + router.route('/:id/campaigns') .get(function(request, response, next) { db.TranslationArtifactVersion.findByPk(request.params.id, { include: [ @@ -335,19 +335,19 @@ module.exports = function (options) { ] }).then(translationArtifactVersion => { if (translationArtifactVersion) { - if (translationArtifactVersion.translationArtifactVersionCampaings.length == 1) { - response.redirect(`/campaigns/${translationArtifactVersion.translationArtifactVersionCampaings[0].campaignId}`) + if (translationArtifactVersion.translationArtifactVersionCampaigns.length == 1) { + response.redirect(`/campaigns/${translationArtifactVersion.translationArtifactVersionCampaigns[0].campaignId}`) } else { // TODO: Display translation artifact campaign... next() } } else { - response.redirect(`/translate/${request.params.id}/campaign/create`) + response.redirect(`/translate/${request.params.id}/campaigns/create`) } }) }) - router.route('/:id/campaign/create') + router.route('/:id/campaigns/create') .get(function(request, response, next) { db.TranslationArtifactVersion.findByPk(request.params.id, { include: [ @@ -442,5 +442,125 @@ module.exports = function (options) { }) }) + router.route('/:id/pledges') + .get(function(request, response, next) { + db.TranslationArtifactVersion.findByPk(request.params.id, { + include: [ + { + association: db.TranslationArtifactVersion.TranslationArtifactVersionPledges, + required: true, + include: [ + { + association: db.TranslationArtifactVersionPledge.Pledge, + required: true + } + ] + } + ] + }).then(translationArtifactVersion => { + if (translationArtifactVersion) { + if (translationArtifactVersion.translationArtifactVersionPledges.length == 1) { + response.redirect(`/pledges/${translationArtifactVersion.translationArtifactVersionPledges[0].campaignId}`) + } else { + // TODO: Display translation artifact campaign... + next() + } + } else { + response.redirect(`/translate/${request.params.id}/pledges/create`) + } + }) + }) + + router.route('/:id/pledges/create') + .get(function(request, response, next) { + db.TranslationArtifactVersion.findByPk(request.params.id, { + include: [ + { + association: db.TranslationArtifactVersion.ArtifactVersion, + include: [ + { + association: db.ArtifactVersion.Artifact + } + ] + }, + { + association: db.TranslationArtifactVersion.TranslationArtifactVersionPledges, + required: false, + include: [ + { + association: db.TranslationArtifactVersionPledge.Pledge, + required: false + } + ] + } + ] + }).then(translationArtifactVersion => { + if (translationArtifactVersion) { + response.display("pledge-form", { + user: request.user, + pageTitle: "Pledge - Mantra", + campaign: { + name: `Pledge for ${translationArtifactVersion.name} translation of ${translationArtifactVersion.artifactVersion.artifact.name}`, + }, + translationArtifactVersions: [translationArtifactVersion] + }) + } else { + next() + } + }).catch(error => { + next(error) + }) + }) + .post(function(request, response, next) { + db.TranslationArtifactVersion.findByPk(request.params.id, { + include: [ + { + association: db.TranslationArtifactVersion.ArtifactVersion, + include: [ + { + association: db.ArtifactVersion.Artifact + } + ] + }, + { + association: db.TranslationArtifactVersion.TranslationArtifactVersionPledges, + required: false, + include: [ + { + association: db.TranslationArtifactVersionPledge.Pledge, + required: false + } + ] + } + ] + }).then(async (translationArtifactVersion) => { + if (translationArtifactVersion) { + // TODO: Create campaign... + const pledge = await db.Pledge.create({ + message: request.body.message, + entityId: request.user.individualEntityUser.entityUser.entityId, + translationArtifactVersionPledges: [ + { + translationArtifactVersionId: translationArtifactVersion.id, + entityId: request.user.individualEntityUser.entityUser.entityId, + satoshis: request.body.satoshis + } + ] + }, { + include: [ + { + association: db.Pledge.TranslationArtifactVersionPledges + } + ] + }) + + response.redirect(`/pledges/${pledge.id}`) + } else { + next() + } + }).catch(error => { + next(error) + }) + }) return router; }; \ No newline at end of file diff --git a/server/views/artifact-version.pug b/server/views/artifact-version.pug index 762cc95..3fc7027 100644 --- a/server/views/artifact-version.pug +++ b/server/views/artifact-version.pug @@ -9,7 +9,7 @@ block content .row .col.s12 a.btn.black(href=`/fork/e/${artifactVersion.id}`) fork - .row + //- .row .col.s12 a.btn.black(href=`/v/${artifactVersion.id}/campaign/create`) funding campaign .divider diff --git a/server/views/pledge-form.pug b/server/views/pledge-form.pug new file mode 100644 index 0000000..ab3ce87 --- /dev/null +++ b/server/views/pledge-form.pug @@ -0,0 +1,22 @@ +extend templates/layout.pug + +block content + .container + .center + h1 Create Pledge + each translationArtifactVersion in translationArtifactVersions + p.flow-text #{translationArtifactVersion.name} - #{translationArtifactVersion.artifactVersion.artifact.name} - #{translationArtifactVersion.artifactVersion.tag} + + .row + .col.s12 + form.row(action=urlEndpoint, method="post") + .col.s12.input-field + input#message(type="text", name="message", value=campaign.description) + label(for="message") Message + each translationArtifactVersion in translationArtifactVersions + input(type="hidden", name="translationArtifactVersions", value=translationArtifactVersion.id) + .col.s12.input-field + input(id=translationArtifactVersion.id+"-satoshis",type="number", name="satoshis", placeholder="100000 satoshis", step=1, min=1, max=2100000000000000, required) + label(for=translationArtifactVersion.id+"-satoshis") Satoshi's required for the #{translationArtifactVersion.name} translation + .col.s12 + button.btn.black(type="submit") create pledge \ No newline at end of file diff --git a/server/views/translation-artifact-version.pug b/server/views/translation-artifact-version.pug index 0279790..ce0ec70 100644 --- a/server/views/translation-artifact-version.pug +++ b/server/views/translation-artifact-version.pug @@ -28,5 +28,8 @@ block content .row .col.s12 - a.btn.black(href=`/translate/${translationArtifactVersion.id}/campaign`) funding campaign + a.btn.black(href=`/translate/${translationArtifactVersion.id}/campaigns`) funding campaign + .row + .col.s12 + a.btn.black(href=`/translate/${translationArtifactVersion.id}/pledges`) pledge //- TODO: Give summary of chapters...