Add ability to fork translationEntryVersions
This commit is contained in:
61
server/router/fork/index.js
Normal file
61
server/router/fork/index.js
Normal 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;
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
@@ -168,6 +168,9 @@ module.exports = function (options) {
|
||||
association: db.EntryVersion.Entry
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
association: db.TranslationEntryVersion.ForkedFrom
|
||||
}
|
||||
]
|
||||
}).then(translationEntryVersion => {
|
||||
|
||||
@@ -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...
|
||||
|
||||
Reference in New Issue
Block a user