Add ability to fork translationEntryVersions

This commit is contained in:
2021-12-26 00:59:02 +02:00
parent c2d1a5f74d
commit 8762e623d0
4 changed files with 81 additions and 1 deletions

View File

@@ -0,0 +1,61 @@
const express = require('express');
module.exports = function (options) {
const db = options.db;
var router = express.Router();
router.route('/t/:id')
.post(function(request, response, next) {
db.TranslationEntryVersion.findByPk(request.params.id, {
}).then(async (translationEntryVersion) => {
if (translationEntryVersion) {
// fork...
const forkedTranslationEntryVersion = await db.TranslationEntryVersion.create({
name: translationEntryVersion.name,
entryVersionId: translationEntryVersion.entryVersionId,
userId: request.user.id,
dialectId: translationEntryVersion.dialectId,
forkedFromId: translationEntryVersion.id
})
if (forkedTranslationEntryVersion) {
return response.redirect(`/v/${forkedTranslationEntryVersion.entryVersionId}/translations/${forkedTranslationEntryVersion.id}`)
} else {
next()
}
} else {
next()
}
}).catch(error => {
next(error)
})
})
router.route('/e/:id')
.get(function(request, response, next) {
db.TranslationEntryVersion.findByPk(request.params.id, {
}).then(translationEntryVersion => {
if (translationEntryVersion) {
// choose a dialect
next()
} else {
next()
}
}).catch(error => {
next(error)
})
})
.post(function(request, response, next) {
db.TranslationEntryVersion.findByPk(request.params.id, {
}).then(translationEntryVersion => {
if (translationEntryVersion) {
// fork...
next()
} else {
next()
}
}).catch(error => {
next(error)
})
})
return router;
};

View File

@@ -24,6 +24,7 @@ module.exports = function (options) {
var apiRouter = require('./api/')(options);
var translateRouter = require('./translate/')(options);
var versionsRouter = require('./versions')(options);
var forkRouter = require('./fork')(options);
router.use('/library', libraryRouter);
router.use('/pledges', pledgesRouter);
@@ -32,6 +33,7 @@ module.exports = function (options) {
router.use('/api', apiRouter);
router.use('/translate', translateRouter);
router.use('/v', versionsRouter);
router.use('/fork', forkRouter);
return router;
};

View File

@@ -168,6 +168,9 @@ module.exports = function (options) {
association: db.EntryVersion.Entry
}
]
},
{
association: db.TranslationEntryVersion.ForkedFrom
}
]
}).then(translationEntryVersion => {

View File

@@ -6,4 +6,18 @@ block content
h1= translationEntryVersion.name
h2= translationEntryVersion.entryVersion.entry.name
a.btn.black(href=`/translate/${translationEntryVersion.id}`) Translate
if translationEntryVersion.forkedFrom
p.flow-text is a
a(href=`/v/${translationEntryVersion.forkedFrom.entryVersionId}/translations/${translationEntryVersion.forkedFrom.id}`) fork
//- TODO: Condition to show translate button
.row
.col.s12
a.btn.black(href=`/translate/${translationEntryVersion.id}`) Translate
//- TODO: Condition to show fork button
.row
.col.s12
form(action=`/fork/t/${translationEntryVersion.id}`, method="post")
button.btn.black(type="submit") fork
//- TODO: Give summary of chapters...