Implement "Create page from item"

master
Peter Stuifzand 2 years ago
parent 67af38f785
commit 760eb11694

@ -1,6 +1,8 @@
import $ from 'jquery'
import 'jquery-contextmenu'
import copy from 'copy-text-to-clipboard'
import axios from "axios";
import qs from "querystring";
function renderTree(tree) {
if (!tree) return []
@ -22,7 +24,17 @@ function connectContextMenu(editor) {
createNewPage: {
name: 'Create page from item',
callback: function (key, opt) {
console.log('Create page from item', key, opt)
console.log('Create page from item')
editor.flat(this, {base: true}).then(result => {
let data = {
'json': 1,
'p': result.title,
'summary': "",
'content': JSON.stringify(result.children),
};
console.log(data)
return axios.post('/save/', qs.encode(data))
}).then()
},
className: 'action-new-page'
},

@ -111,12 +111,13 @@ function editor(root, inputData, options) {
});
}
function flat(element) {
function flat(element, opt) {
opt = opt || {}
let item = $(element).parents('.list-item')
let id = item.attr('data-id')
return new Promise(function (resolve, reject) {
resolve(store.flat(id));
resolve(store.flat(id, opt));
});
}

@ -365,8 +365,23 @@ function Store(inputData) {
return [values[from], ..._.takeWhile(items, item => item.indented > values[from].indented)]
}
function flat(from) {
return selectItemsFrom(from)
function flat(from, opt) {
opt = opt || {}
let result = selectItemsFrom(from)
if (opt.base && result.length > 0) {
const first = result[0]
let children = _.map(result.slice(1), (item) => {
let newItem = _.clone(item)
newItem.indented -= first.indented+1
newItem.id = ID()
return newItem
})
return {
title: first.text,
children
}
}
return result
}
/**

Loading…
Cancel
Save