diff --git a/src/components/modules/_saver.js b/src/components/modules/_saver.js deleted file mode 100644 index 024a11a0..00000000 --- a/src/components/modules/_saver.js +++ /dev/null @@ -1,165 +0,0 @@ -/** - * Codex Editor Saver - * - * @author Codex Team - * @version 1.1.0 - */ - -module.exports = (function (saver) { - - let editor = codex.editor; - - /** - * @public - * Save blocks - */ - saver.save = function () { - - /** Save html content of redactor to memory */ - editor.state.html = editor.nodes.redactor.innerHTML; - - /** Clean jsonOutput state */ - editor.state.jsonOutput = []; - - return saveBlocks(editor.nodes.redactor.childNodes); - - }; - - /** - * @private - * Save each block data - * - * @param blocks - * @returns {Promise.} - */ - let saveBlocks = function (blocks) { - - let data = []; - - for(let index = 0; index < blocks.length; index++) { - - data.push(getBlockData(blocks[index])); - - } - - return Promise.all(data) - .then(makeOutput) - .catch(editor.core.log); - - }; - - /** Save and validate block data */ - let getBlockData = function (block) { - - return saveBlockData(block) - .then(validateBlockData) - .catch(editor.core.log); - - }; - - /** - * @private - * Call block`s plugin save method and return saved data - * - * @param block - * @returns {Object} - */ - let saveBlockData = function (block) { - - let pluginName = block.dataset.tool; - - /** Check for plugin existence */ - if (!editor.tools[pluginName]) { - - editor.core.log(`Plugin «${pluginName}» not found`, 'error'); - return {data: null, pluginName: null}; - - } - - /** Check for plugin having save method */ - if (typeof editor.tools[pluginName].save !== 'function') { - - editor.core.log(`Plugin «${pluginName}» must have save method`, 'error'); - return {data: null, pluginName: null}; - - } - - /** Result saver */ - let blockContent = block.childNodes[0], - pluginsContent = blockContent.childNodes[0], - position = pluginsContent.dataset.inputPosition; - - /** If plugin wasn't available then return data from cache */ - if ( editor.tools[pluginName].available === false ) { - - return Promise.resolve({data: codex.editor.state.blocks.items[position].data, pluginName}); - - } - - return Promise.resolve(pluginsContent) - .then(editor.tools[pluginName].save) - .then(data => Object({data, pluginName})); - - }; - - /** - * Call plugin`s validate method. Return false if validation failed - * - * @param data - * @param pluginName - * @returns {Object|Boolean} - */ - let validateBlockData = function ({data, pluginName}) { - - if (!data || !pluginName) { - - return false; - - } - - if (editor.tools[pluginName].validate) { - - let result = editor.tools[pluginName].validate(data); - - /** - * Do not allow invalid data - */ - if (!result) { - - return false; - - } - - } - - return {data, pluginName}; - - - }; - - /** - * Compile article output - * - * @param savedData - * @returns {{time: number, version, items: (*|Array)}} - */ - let makeOutput = function (savedData) { - - savedData = savedData.filter(blockData => blockData); - - let items = savedData.map(blockData => Object({type: blockData.pluginName, data: blockData.data})); - - editor.state.jsonOutput = items; - - return { - id: editor.state.blocks.id || null, - time: +new Date(), - version: editor.version, - items - }; - - }; - - return saver; - -})({}); diff --git a/src/components/modules/saver.js b/src/components/modules/saver.js new file mode 100644 index 00000000..e410e9c1 --- /dev/null +++ b/src/components/modules/saver.js @@ -0,0 +1,189 @@ +/** + * Codex Editor Saver + * + * @author Codex Team + * @version 2.0.0 + */ + +/** + * Saver class properties: + * @property {DOMElement} html - Editor HTML content + * @property {String} json - Editor JSON output + */ +export default class Saver extends Module { + + /** + * @constructor + * @param config + */ + constructor(config) { + super(config); + + this.html = ''; + this.json = {}; + } + + save() { + + } + +} + +// module.exports = (function (saver) { +// +// let editor = codex.editor; +// +// /** +// * @public +// * Save blocks +// */ +// saver.save = function () { +// +// /** Save html content of redactor to memory */ +// editor.state.html = editor.nodes.redactor.innerHTML; +// +// /** Clean jsonOutput state */ +// editor.state.jsonOutput = []; +// +// return saveBlocks(editor.nodes.redactor.childNodes); +// +// }; +// +// /** +// * @private +// * Save each block data +// * +// * @param blocks +// * @returns {Promise.} +// */ +// let saveBlocks = function (blocks) { +// +// let data = []; +// +// for(let index = 0; index < blocks.length; index++) { +// +// data.push(getBlockData(blocks[index])); +// +// } +// +// return Promise.all(data) +// .then(makeOutput) +// .catch(editor.core.log); +// +// }; +// +// /** Save and validate block data */ +// let getBlockData = function (block) { +// +// return saveBlockData(block) +// .then(validateBlockData) +// .catch(editor.core.log); +// +// }; +// +// /** +// * @private +// * Call block`s plugin save method and return saved data +// * +// * @param block +// * @returns {Object} +// */ +// let saveBlockData = function (block) { +// +// let pluginName = block.dataset.tool; +// +// /** Check for plugin existence */ +// if (!editor.tools[pluginName]) { +// +// editor.core.log(`Plugin «${pluginName}» not found`, 'error'); +// return {data: null, pluginName: null}; +// +// } +// +// /** Check for plugin having save method */ +// if (typeof editor.tools[pluginName].save !== 'function') { +// +// editor.core.log(`Plugin «${pluginName}» must have save method`, 'error'); +// return {data: null, pluginName: null}; +// +// } +// +// /** Result saver */ +// let blockContent = block.childNodes[0], +// pluginsContent = blockContent.childNodes[0], +// position = pluginsContent.dataset.inputPosition; +// +// /** If plugin wasn't available then return data from cache */ +// if ( editor.tools[pluginName].available === false ) { +// +// return Promise.resolve({data: codex.editor.state.blocks.items[position].data, pluginName}); +// +// } +// +// return Promise.resolve(pluginsContent) +// .then(editor.tools[pluginName].save) +// .then(data => Object({data, pluginName})); +// +// }; +// +// /** +// * Call plugin`s validate method. Return false if validation failed +// * +// * @param data +// * @param pluginName +// * @returns {Object|Boolean} +// */ +// let validateBlockData = function ({data, pluginName}) { +// +// if (!data || !pluginName) { +// +// return false; +// +// } +// +// if (editor.tools[pluginName].validate) { +// +// let result = editor.tools[pluginName].validate(data); +// +// /** +// * Do not allow invalid data +// */ +// if (!result) { +// +// return false; +// +// } +// +// } +// +// return {data, pluginName}; +// +// +// }; +// +// /** +// * Compile article output +// * +// * @param savedData +// * @returns {{time: number, version, items: (*|Array)}} +// */ +// let makeOutput = function (savedData) { +// +// savedData = savedData.filter(blockData => blockData); +// +// let items = savedData.map(blockData => Object({type: blockData.pluginName, data: blockData.data})); +// +// editor.state.jsonOutput = items; +// +// return { +// id: editor.state.blocks.id || null, +// time: +new Date(), +// version: editor.version, +// items +// }; +// +// }; +// +// return saver; +// +// })({});