115 lines
2.6 KiB
JavaScript
115 lines
2.6 KiB
JavaScript
|
const common = require('./common')
|
||
|
|
||
|
const Tree = window.__nfptree && window.__nfptree.tree || []
|
||
|
|
||
|
exports.Tree = Tree
|
||
|
|
||
|
exports.createPage = function(body) {
|
||
|
return common.sendRequest({
|
||
|
method: 'POST',
|
||
|
url: '/api/pages',
|
||
|
body: body,
|
||
|
}).then(function(res) {
|
||
|
res.children = []
|
||
|
if (!res.parent_id) {
|
||
|
Tree.push(res)
|
||
|
} else {
|
||
|
for (let i = 0; i < Tree.length; i++) {
|
||
|
if (Tree[i].id === res.parent_id) {
|
||
|
Tree[i].children.push(res)
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return res
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function processPageBranch(arr, branches, prefix) {
|
||
|
branches.forEach((page) => {
|
||
|
arr.push({ id: page.id, name: prefix + page.name })
|
||
|
if (page.children && page.children.length) {
|
||
|
processPageBranch(arr, page.children, page.name + ' -> ')
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
exports.getFlatTree = function() {
|
||
|
let arr = []
|
||
|
processPageBranch(arr, Tree, '')
|
||
|
return arr
|
||
|
}
|
||
|
|
||
|
exports.getTree = function() {
|
||
|
return common.sendRequest({
|
||
|
method: 'GET',
|
||
|
url: '/api/pages?tree=true&includes=children&fields=id,name,path,children(id,name,path)',
|
||
|
})
|
||
|
}
|
||
|
|
||
|
exports.updatePage = function(id, body) {
|
||
|
return common.sendRequest({
|
||
|
method: 'PUT',
|
||
|
url: '/api/pages/' + id,
|
||
|
body: body,
|
||
|
}).then(function(res) {
|
||
|
for (let i = 0; i < Tree.length; i++) {
|
||
|
if (Tree[i].id === res.id) {
|
||
|
res.children = Tree[i].children
|
||
|
Tree[i] = res
|
||
|
break
|
||
|
} else if (Tree[i].id === res.parent_id) {
|
||
|
for (let x = 0; x < Tree[i].children.length; x++) {
|
||
|
if (Tree[i].children[x].id === res.id) {
|
||
|
res.children = Tree[i].children[x].children
|
||
|
Tree[i].children[x] = res
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
if (!res.children) {
|
||
|
res.children = []
|
||
|
}
|
||
|
return res
|
||
|
})
|
||
|
}
|
||
|
|
||
|
exports.getAllPages = function() {
|
||
|
return common.sendRequest({
|
||
|
method: 'GET',
|
||
|
url: '/api/pages',
|
||
|
})
|
||
|
}
|
||
|
|
||
|
exports.getPage = function(id) {
|
||
|
return common.sendRequest({
|
||
|
method: 'GET',
|
||
|
url: '/api/pages/' + id + '?includes=media,banner',
|
||
|
})
|
||
|
}
|
||
|
|
||
|
exports.removePage = function(page, id) {
|
||
|
return common.sendRequest({
|
||
|
method: 'DELETE',
|
||
|
url: '/api/pages/' + id,
|
||
|
}).then(function() {
|
||
|
for (let i = 0; i < Tree.length; i++) {
|
||
|
if (Tree[i].id === page.id) {
|
||
|
Tree.splice(i, 1)
|
||
|
break
|
||
|
} else if (Tree[i].id === page.parent_id) {
|
||
|
for (let x = 0; x < Tree[i].children.length; x++) {
|
||
|
if (Tree[i].children[x].id === page.id) {
|
||
|
Tree[i].children.splice(x, 1)
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
return null
|
||
|
})
|
||
|
}
|