Create pledge from translation

This commit is contained in:
2022-01-06 19:44:39 +02:00
parent 0cc2727826
commit 081e5fa018
5 changed files with 166 additions and 10 deletions

View File

@@ -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;
};

View File

@@ -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;
};

View File

@@ -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

View File

@@ -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

View File

@@ -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...