Add some basics with translate functionality
This commit is contained in:
@@ -22,6 +22,7 @@ module.exports = function (options) {
|
||||
var pledgesRouter = require('./pledges/')(options);
|
||||
var campaignsRouter = require('./campaigns/')(options);
|
||||
var apiRouter = require('./api/')(options);
|
||||
var translateRouter = require('./translate/')(options);
|
||||
|
||||
|
||||
router.use('/library', libraryRouter);
|
||||
@@ -29,6 +30,7 @@ module.exports = function (options) {
|
||||
router.use('/campaigns', campaignsRouter);
|
||||
router.use('/account', accountRouter);
|
||||
router.use('/api', apiRouter);
|
||||
router.use('/translate', translateRouter);
|
||||
|
||||
return router;
|
||||
};
|
||||
77
server/router/translate/index.js
Normal file
77
server/router/translate/index.js
Normal file
@@ -0,0 +1,77 @@
|
||||
const express = require('express')
|
||||
|
||||
module.exports = function (options) {
|
||||
const db = options.db;
|
||||
var router = express.Router();
|
||||
|
||||
router.route('/:id')
|
||||
.get(function(request, response, next) {
|
||||
db.TranslationEntry.findByPk(request.params.id, {
|
||||
include: [
|
||||
{
|
||||
association: db.TranslationEntry.Entry,
|
||||
required: true,
|
||||
include: [
|
||||
{
|
||||
association: db.Entry.Chapters,
|
||||
required: true,
|
||||
limit: 1,
|
||||
// TODO: Order by chapter index
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}).then(translationEntry => {
|
||||
if (translationEntry) {
|
||||
response.redirect(`/translate/${translationEntry.id}/chapter/${translationEntry.entry.chapters[0].id}`)
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
router.route('/:id/chapter/:chapterId')
|
||||
.get(function(request, response, next) {
|
||||
db.Chapter.findByPk(request.params.chapterId, {
|
||||
include: [
|
||||
{
|
||||
association: db.Chapter.Chunks,
|
||||
include: [
|
||||
{
|
||||
association: db.Chunk.Translation
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
association: db.Chapter.Entry,
|
||||
required: true,
|
||||
include: [
|
||||
{
|
||||
association: db.Entry.TranslationEntries,
|
||||
required: true,
|
||||
where: {
|
||||
id: request.params.id
|
||||
}
|
||||
},
|
||||
{
|
||||
association: db.Entry.Dialect
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}).then(chapter => {
|
||||
if (chapter) {
|
||||
response.display("translate-chapter", {
|
||||
user: request.user,
|
||||
pageTitle: `Translate Chapter ${chapter.name}`,
|
||||
chapter: chapter
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
}).catch(error => {
|
||||
next(error)
|
||||
})
|
||||
})
|
||||
return router;
|
||||
};
|
||||
36
server/views/translate-chapter.pug
Normal file
36
server/views/translate-chapter.pug
Normal file
@@ -0,0 +1,36 @@
|
||||
extend templates/layout.pug
|
||||
|
||||
block content
|
||||
.container
|
||||
.center
|
||||
h1= chapter.entry.translationEntries[0].name
|
||||
h2= chapter.entry.name
|
||||
|
||||
//- TODO: List chunks in the chapter
|
||||
.row
|
||||
.col.s12
|
||||
table
|
||||
thead
|
||||
tr
|
||||
th #{chapter.entry.dialect.name}
|
||||
th #{chapter.entry.translationEntries[0].name}
|
||||
th
|
||||
|
||||
tbody
|
||||
each chunk in chapter.chunks
|
||||
tr
|
||||
td= chunk.text
|
||||
td
|
||||
if chunk.ossified
|
||||
span= chunk.text
|
||||
else if chunk.translation
|
||||
span= chunk.translation.text
|
||||
else
|
||||
span= chunk.text.replaceAll(/./g, " ")
|
||||
td
|
||||
if chunk.ossified
|
||||
span nothing
|
||||
else if chunk.translation
|
||||
a.btn.blue review
|
||||
else
|
||||
a.btn.black translate
|
||||
@@ -4,4 +4,6 @@ block content
|
||||
.container
|
||||
.center
|
||||
h1= translationEntry.name
|
||||
h2= translationEntry.entry.name
|
||||
h2= translationEntry.entry.name
|
||||
|
||||
a.btn.black(href=`/translate/${translationEntry.id}`) Translate
|
||||
Reference in New Issue
Block a user