Skip to content

Commit

Permalink
UT: fix workflow + new route + list-graph
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaslabbe committed Nov 29, 2016
1 parent 1146a53 commit 327c395
Show file tree
Hide file tree
Showing 23 changed files with 647 additions and 345 deletions.
6 changes: 4 additions & 2 deletions src/cli/cms/editor/handlebars/listPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,17 @@ export default function listPage(file, index, text) {
res += `<td align="center">
<div class="row icons-action">`


if(file.publish != null) {
res += `<a href="/abe/operations/${file.abe_meta.status}/unpublish${file.abe_meta.link}"
res += `<a href="/abe/operations/publish/unpublish${file.abe_meta.link}"
title="${text.unpublish}"
class="icon" data-unpublish="true" data-text="${text.confirmUnpublish} ${file.abe_meta.link}"
title="unpublish">
<span class="glyphicon glyphicon-eye-close"></span>
</a>`
}



res += `<a href="/abe/operations/${file.abe_meta.status}/delete${file.abe_meta.link}"
title="${text.delete}"
class="icon"
Expand Down
2 changes: 1 addition & 1 deletion src/cli/cms/editor/handlebars/printInput.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export default function printInput (params, root) {
}

var disabled = ''
if (!User.utils.isUserAllowedOnRoute(userWorkflow, `/abe/save/${params.status}/edit`)) {
if (!User.utils.isUserAllowedOnRoute(userWorkflow, `/abe/operations/${params.status}/edit`)) {
disabled = 'disabled="disabled"'
}
if (params.tab == 'slug') {
Expand Down
38 changes: 38 additions & 0 deletions src/cli/cms/operations/post.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,44 @@ export function unpublish(filePath) {
return p
}

export function edit(filePath, json, workflow) {
var p
if (workflow === 'publish') {
p = cmsOperations.post.publish(
filePath,
json
)
}else {
p = cmsOperations.post.draft(
filePath,
json,
workflow
)
}

return p
}

export function submit(filePath, json, workflow) {
var submitToWorkflow = 'draft'
var found = false
Array.prototype.forEach.call(config.users.workflow, (flow) => {
if (found) {
found = false
submitToWorkflow = flow
}
if (workflow === flow) {
found = true
}
})

return cmsOperations.post.edit(
filePath,
json,
submitToWorkflow
)
}

export function reject(filePath, json, workflow) {
abeExtend.hooks.instance.trigger('beforeReject', filePath)

Expand Down
18 changes: 0 additions & 18 deletions src/cli/cms/operations/remove.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,21 +32,3 @@ export function removeFile(file, json) {
fse.removeSync(json)
}
}

export function olderRevisionByType(filePath, type) {

const folder = path.dirname(filePath)
const file = path.basename(filePath)
const extension = path.extname(filePath)

const files = coreUtils.file.getFilesSync(folder, false, extension)
Array.prototype.forEach.call(files, (fileItem) => {
const fname = cmsData.fileAttr.delete(fileItem)
const ftype = cmsData.fileAttr.get(fileItem).s
if(fname === file && ftype === type){
const fileDraft = fileItem.replace(/-abe-./, '-abe-d')
cmsOperations.remove.removeFile(fileItem, coreUtils.file.changePath(fileItem, config.data.url).replace(extension, '.json'))
cmsOperations.remove.removeFile(fileDraft, coreUtils.file.changePath(fileDraft, config.data.url).replace(extension, '.json'))
}
})
}
30 changes: 17 additions & 13 deletions src/cli/users/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -250,25 +250,29 @@ export function getUserWorkflow(status, role) {

if (config.users.enable) {
var before = null
var found = false
var found = null
Array.prototype.forEach.call(config.users.workflow, (flow) => {
if (found) {
flows.push(addFlow(flow, flow, 'submit'))
found = false

if (found != null) {
flows.push(addFlow(flow, found, 'submit'))
found = null
}

if (status == flow) {
found = true
if (before != null) {
if (flow == 'publish') {
flows.push(addFlow('edit', 'draft', 'submit'))
}else {
flows.push(addFlow('reject', before, 'reject'))
}
found = flow
if (flow != 'draft' && flow != 'publish') {
flows.push(addFlow('reject', flow, 'reject'))
}
if (flow == 'publish') {
flows.push(addFlow('edit', 'draft', 'edit'))
}else {
flows.push(addFlow('save', flow, 'edit'))
}
flows.push(addFlow(flow, flow, 'edit'))
}
before = flow
})
if (found != null) {
flows.push(addFlow('save', 'publish', 'edit'))
}
}else {
flows = [addFlow('draft', 'draft', 'submit'), addFlow('publish', 'publish', 'submit')]
}
Expand Down
19 changes: 15 additions & 4 deletions src/server/controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
,postDuplicate
,postUpdate
,getListUrl
,getListWorkflow
,postListUrlSave
,getListHooks
,getMain
Expand Down Expand Up @@ -63,18 +64,28 @@ router.post('/abe/reference/*', postReference)
router.get('/abe/editor*', getMain)
router.post('/abe/list-url/save*', postListUrlSave)

router.get('/abe/list-workflow*', function (req, res, next) {
getListWorkflow(router, req, res, next)
})
router.get('/abe/list-url*', function (req, res, next) {
getListUrl(router, req, res, next)
})
router.get('/abe/list-hooks*', getListHooks)

var workflows = config.users.workflow
Array.prototype.forEach.call(workflows, (workflow) => {
router.get(`/abe/operations/${workflow}/unpublish*`, operations.getUnpublish)
router.get(`/abe/operations/${workflow}/delete*`, operations.getDelete)
router.post(`/abe/operations/${workflow}/reject*`, operations.postReject)
router.post(`/abe/operations/${workflow}/submit*`, operations.postSubmit)
router.post(`/abe/operations/${workflow}/edit*`, operations.postSubmit)

if (workflow != 'draft' && workflow != 'publish') {
router.post(`/abe/operations/${workflow}/reject*`, operations.postReject)
}else if (workflow == 'publish') {
router.get(`/abe/operations/publish/unpublish*`, operations.getUnpublish)
}

if (workflow != 'publish') {
router.post(`/abe/operations/${workflow}/submit*`, operations.postSubmit)
}
router.post(`/abe/operations/${workflow}/edit*`, operations.postEdit)
})

var routes = abeExtend.plugins.instance.getRoutes()
Expand Down
12 changes: 10 additions & 2 deletions src/server/routes/get-list-url.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,21 @@ var route = function(router, req, res, next) {
html = fse.readFileSync(page, 'utf8')
}

var roles = config.users.roles
var workflowUrl = {}
Array.prototype.forEach.call(config.users.workflow, (flow) => {
workflowUrl[flow] = [
{url: `/abe/operations/${flow}/edit`, action: 'edit', workflow: flow},
{url: `/abe/operations/${flow}/delete`, action: 'delete', workflow: flow}
]
})
var template = Handlebars.compile(html, {noEscape: true})
var tmp = template({
urls: urls,
user: res.user,
config: JSON.stringify(config),
roles: roles
roles: config.users.roles,
workflow: config.users.workflow,
workflowUrl: workflowUrl
})

res.cookie('csrf-token', res.locals.csrfToken)
Expand Down
54 changes: 54 additions & 0 deletions src/server/routes/get-list-workflow.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import path from 'path'
import fse from 'fs-extra'
import Handlebars from 'handlebars'
import {
abeExtend
,coreUtils
,config
} from '../../cli'

var route = function(router, req, res, next) {
abeExtend.hooks.instance.trigger('beforeRoute', req, res, next)
var routes = router.stack
var urls = []
var html = ''

Array.prototype.forEach.call(routes, function(route) {
urls.push({
url: route.route.path,
method: Object.keys(route.route.methods)[0].toUpperCase(),
regex: route.route.path.replace(/\*$/, '') + '.*'
})
})

var page = path.join(__dirname + '/../views/list-workflow.html')
if (coreUtils.file.exist(page)) {
html = fse.readFileSync(page, 'utf8')
}

var workflowUrl = {}
Array.prototype.forEach.call(config.users.workflow, (flow) => {
workflowUrl[flow] = [
{url: `/abe/operations/${flow}/edit`, action: 'edit', workflow: flow},
{url: `/abe/operations/${flow}/delete`, action: 'delete', workflow: flow}
]
if (flow != 'publish') {
workflowUrl[flow].push({url: `/abe/operations/${flow}/reject`, action: 'reject', workflow: flow})
workflowUrl[flow].push({url: `/abe/operations/${flow}/submit`, action: 'submit', workflow: flow})
}
})
var template = Handlebars.compile(html, {noEscape: true})
var tmp = template({
urls: urls,
user: res.user,
config: JSON.stringify(config),
roles: config.users.roles,
workflow: config.users.workflow,
workflowUrl: workflowUrl
})

res.cookie('csrf-token', res.locals.csrfToken)
return res.send(tmp)
}

export default route
2 changes: 2 additions & 0 deletions src/server/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import postDuplicate from './post-duplicate'
import postUpdate from './post-update'
import postListUrlSave from './post-list-url-save'
import getListUrl from './get-list-url'
import getListWorkflow from './get-list-workflow'
import getListHooks from './get-list-hooks'
import getPage from './get-page'
import postPage from './post-page'
Expand All @@ -24,6 +25,7 @@ export {
postCreate,
postListUrlSave,
getListUrl,
getListWorkflow,
getListHooks,
postDuplicate,
postUpdate,
Expand Down
2 changes: 2 additions & 0 deletions src/server/routes/operations/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import getUnpublish from './get/unpublish'
import getDelete from './get/delete'
import postSubmit from './post/submit'
import postEdit from './post/edit'
import postReject from './post/reject'

export {
postSubmit
,postEdit
,postReject
,getUnpublish
,getDelete
Expand Down
31 changes: 31 additions & 0 deletions src/server/routes/operations/post/edit.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import {
cmsOperations
,abeExtend
,cmsData
} from '../../../../cli'

var route = function(req, res, next){
abeExtend.hooks.instance.trigger('beforeRoute', req, res, next)
if(typeof res._header !== 'undefined' && res._header !== null) return

var operation = cmsData.regex.getWorkflowFromOperationsUrl(req.originalUrl)

var p = cmsOperations.post.edit(
operation.postUrl,
req.body.json,
operation.workflow
)

p.then((result) => {
res.set('Content-Type', 'application/json')
res.send(JSON.stringify(result))
},
(result) => {
res.set('Content-Type', 'application/json')
res.send(JSON.stringify(result))
}).catch(function(e) {
console.error('[ERROR] post-save.js', e)
})
}

export default route
20 changes: 6 additions & 14 deletions src/server/routes/operations/post/submit.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,12 @@ var route = function(req, res, next){
if(typeof res._header !== 'undefined' && res._header !== null) return

var operation = cmsData.regex.getWorkflowFromOperationsUrl(req.originalUrl)

var p
if (operation.workflow === 'publish') {
p = cmsOperations.post.publish(
operation.postUrl,
req.body.json
)
}else {
p = cmsOperations.post.draft(
operation.postUrl,
req.body.json,
operation.workflow
)
}

var p = cmsOperations.post.submit(
operation.postUrl,
req.body.json,
operation.workflow
)

p.then((result) => {
res.set('Content-Type', 'application/json')
Expand Down
25 changes: 0 additions & 25 deletions src/server/sass/modules/_bootstrap-extend.scss
Original file line number Diff line number Diff line change
Expand Up @@ -53,31 +53,6 @@ h1 {
margin-bottom: 10px;
}

.nav-tabs>li {
margin: 0;
}

.nav>li>a {
padding: 4px 8px;
color: #a3a1a1;
}

.nav-tabs>li>a {
margin-right: 0;
border: 0;
border-radius: 0;
}

.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover {
color: #47b8e0;
background-color: #fff;
border: 0;
}

a:focus, a:hover {
color: #a3a1a1;
}




Loading

0 comments on commit 327c395

Please sign in to comment.