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 }) }