From 77ff41f097d177284d6b3c89b0b4990d461c1616 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Sat, 15 Jan 2022 00:59:30 +0200 Subject: [PATCH] Use accessbility checks --- server/router/fork/index.js | 6 +++ server/router/library/index.js | 1 + server/router/projects/index.js | 5 +- server/router/translate/index.js | 2 + server/router/versions/index.js | 2 + server/views/artifact-version.pug | 5 +- server/views/js/init-accessibility-select.js | 4 ++ server/views/library-form.pug | 47 +++++++++++++------ server/views/translation-artifact-version.pug | 2 +- 9 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 server/views/js/init-accessibility-select.js diff --git a/server/router/fork/index.js b/server/router/fork/index.js index 6cf5cab..48305e8 100644 --- a/server/router/fork/index.js +++ b/server/router/fork/index.js @@ -39,6 +39,7 @@ module.exports = function (options) { creatorId: request.user.id, name: translationArtifactVersion.name, artifactVersionId: translationArtifactVersion.artifactVersionId, + accessibility: translationArtifactVersion.accessibility, userId: request.user.id, dialectId: translationArtifactVersion.dialectId, forkedFromId: translationArtifactVersion.id, @@ -53,6 +54,7 @@ module.exports = function (options) { return { creatorId: request.user.id, chapterId: translationChapter.chapterId, + index: translationChapter.index, translationChunks: translationChapter.translationChunks.map(translationChunk => { if (translationChunk.translation) { existingTranslation[translationChunk.chunkId] = { @@ -198,6 +200,7 @@ module.exports = function (options) { creatorId: userId, name: dialect.name, artifactVersionId: artifactVersion.id, + accessibility: artifactVersion.artifact.accessibility, dialectId: dialect.id, userId: userId, owner: { @@ -211,6 +214,7 @@ module.exports = function (options) { return { creatorId: userId, chapterId: chapter.id, + index: chapter.index, translationChunks: chapter.chunks.map(chunk => { return { creatorId: userId, @@ -246,6 +250,7 @@ module.exports = function (options) { creatorId: userId, name: artifactVersion.translationArtifactVersions[0].name, artifactVersionId: artifactVersion.translationArtifactVersions[0].artifactVersionId, + accessibility: artifactVersion.artifact.accessibility, userId: userId, dialectId: artifactVersion.translationArtifactVersions[0].dialectId, forkedFromId: artifactVersion.translationArtifactVersions[0].id, @@ -260,6 +265,7 @@ module.exports = function (options) { return { creatorId: userId, chapterId: chapter.id, + index: chapter.index, translationChunks: chapter.chunks.map(chunk => { return { creatorId: userId, diff --git a/server/router/library/index.js b/server/router/library/index.js index b8f1c07..4090817 100644 --- a/server/router/library/index.js +++ b/server/router/library/index.js @@ -113,6 +113,7 @@ module.exports = function (options) { url: request.body.url, dialectId: dialect.id, licenseId: "copyright", + accessibility: request.body.accessibility, artifactVersions: [ { creatorId: request.user.id, diff --git a/server/router/projects/index.js b/server/router/projects/index.js index 57c2f0d..2888129 100644 --- a/server/router/projects/index.js +++ b/server/router/projects/index.js @@ -853,8 +853,9 @@ module.exports = function (options) { .string(translationArtifactVersion.id) var cellIndex = 6 - for (const i in translationArtifactVersion.translationChapters) { - const translationChapter = translationArtifactVersion.translationChapters[i] + const translationChapters = translationArtifactVersion.translationChapters.sort((a, b) => a.index - b.index) + for (const i in translationChapters) { + const translationChapter = translationChapters[i] const translationChunks = translationChapter.translationChunks.sort((a,b) => a.index - b.index) for (const j in translationChunks) { const translationChunk = translationChunks[j] diff --git a/server/router/translate/index.js b/server/router/translate/index.js index 2a49ecd..2a444ca 100644 --- a/server/router/translate/index.js +++ b/server/router/translate/index.js @@ -395,6 +395,7 @@ module.exports = function (options) { name: translationArtifactVersion.artifactVersion.artifact.dialect.name, artifactVersionId: translationArtifactVersion.artifactVersionId, dialectId: translationArtifactVersion.dialect.id, + accessibility: translationArtifactVersion.accessibility, backTranslationFromId: translationArtifactVersion.id, owner: { ownerEntities: [ @@ -407,6 +408,7 @@ module.exports = function (options) { return { creatorId: request.user.id, chapterId: translationChapter.chapterId, + index: translationChapter.index, translationChunks: translationChapter.translationChunks.map(translationChunk => { return { creatorId: request.user.id, diff --git a/server/router/versions/index.js b/server/router/versions/index.js index 00ce604..e16754a 100644 --- a/server/router/versions/index.js +++ b/server/router/versions/index.js @@ -322,6 +322,7 @@ module.exports = function (options) { creatorId: request.user.id, name: dialect.name, artifactVersionId: artifactVersion.id, + accessibility: artifactVersion.artifact.accessibility, dialectId: dialect.id, owner: { ownerEntities: [ @@ -334,6 +335,7 @@ module.exports = function (options) { return { creatorId: request.user.id, chapterId: chapter.id, + index: chapter.index, translationChunks: chapter.chunks.map(chunk => { return { creatorId: request.user.id, diff --git a/server/views/artifact-version.pug b/server/views/artifact-version.pug index ddff77c..bfcfca7 100644 --- a/server/views/artifact-version.pug +++ b/server/views/artifact-version.pug @@ -10,6 +10,9 @@ block content .container .center h1 #{artifactVersion.artifact.name} + if artifactVersion.artifact.accessibility == "private" + i.right.medium.material-icons lock + h2 #{artifactVersion.tag} p.flow-text each ownerEntity, index in artifactVersion.artifact.owner.ownerEntities @@ -35,7 +38,7 @@ block content p.flow-text No chapters added else .row - each chapter in artifactVersion.chapters + each chapter in artifactVersion.chapters.sort((a, b) => a.index - b.index) .col.s12 a(href=`/v/${artifactVersion.id}/chapters/${chapter.id}`) .card-panel diff --git a/server/views/js/init-accessibility-select.js b/server/views/js/init-accessibility-select.js new file mode 100644 index 0000000..ef13da0 --- /dev/null +++ b/server/views/js/init-accessibility-select.js @@ -0,0 +1,4 @@ +document.addEventListener('DOMContentLoaded', function() { + var elems = document.querySelectorAll('#accessibility-select'); + var instances = M.FormSelect.init(elems, {}); +}); \ No newline at end of file diff --git a/server/views/library-form.pug b/server/views/library-form.pug index b8776eb..289c4cd 100644 --- a/server/views/library-form.pug +++ b/server/views/library-form.pug @@ -5,18 +5,37 @@ block content .center h1 Library - .row - .col.s12 - form.row(action="/library/add", method="post") + .row + .col.s12 + form.row(action="/library/add", method="post") + .col.s12.input-field + input#name(type="text", name="name", value=artifact.name) + label(for="name") Artifact Name + .col.s12.input-field + input#url(type="text", name="url", value=artifact.url) + label(for="url") Artifact Url + if artifact.id == null .col.s12.input-field - input#name(type="text", name="name", value=artifact.name) - label(for="name") Artifact Name - .col.s12.input-field - input#url(type="text", name="url", value=artifact.url) - label(for="url") Artifact Url - if artifact.id == null - .col.s12.input-field - input#version(type="text", name="version", value=artifact.version) - label(for="version") First Version Number - .col.s12 - button.btn.black(type="submit") add artifact \ No newline at end of file + input#version(type="text", name="version", value=artifact.version) + label(for="version") First Version Number + .col.s12.input-field + p + label + input(type="radio", name="accessibility", value="public") + span Public + br + small Anyone can see and add translations + p + label + input(type="radio", name="accessibility", value="permissioned") + span Permissioned + br + small Anyone can see but restrict translations + p + label + input(type="radio", name="accessibility", value="private") + span Private + br + small Restrict who can see and translate project + .col.s12 + button.btn.black(type="submit") add artifact diff --git a/server/views/translation-artifact-version.pug b/server/views/translation-artifact-version.pug index f5eb48b..067c267 100644 --- a/server/views/translation-artifact-version.pug +++ b/server/views/translation-artifact-version.pug @@ -58,7 +58,7 @@ block content //- TODO: Give summary of chapters... h2 Chapters - each translationChapter in translationArtifactVersion.translationChapters + each translationChapter in translationArtifactVersion.translationChapters.sort((a,b) => a.index - b.index) p.flow-text small translate br