From 7a40627fc9690525e9c8680255862f953be5ed34 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 9 Mar 2021 21:37:27 +0100 Subject: [PATCH] Store pages --- src/dom_components/index.js | 5 ++--- src/editor/model/Editor.js | 2 +- src/pages/index.js | 26 ++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/dom_components/index.js b/src/dom_components/index.js index 66d9026ed..77803cc1e 100644 --- a/src/dom_components/index.js +++ b/src/dom_components/index.js @@ -421,8 +421,8 @@ export default () => { * @return {Object} Data to store */ store(noStore) { - if (!c.stm) { - return; + if (!c.stm || this.em.get('hasPages')) { + return {}; } var obj = {}; @@ -433,7 +433,6 @@ export default () => { } if (keys.indexOf('components') >= 0) { - const { em } = this; // const storeWrap = (em && !em.getConfig('avoidInlineStyle')) || c.storeWrapper; const storeWrap = c.storeWrapper; const toStore = storeWrap ? this.getWrapper() : this.getComponents(); diff --git a/src/editor/model/Editor.js b/src/editor/model/Editor.js index e1ed22d70..c85848510 100644 --- a/src/editor/model/Editor.js +++ b/src/editor/model/Editor.js @@ -575,7 +575,7 @@ export default Backbone.Model.extend({ }); sm.store(store, res => { - clb && clb(res); + clb && clb(res, store); this.set('changesCount', 0); this.trigger('storage:store', store); }); diff --git a/src/pages/index.js b/src/pages/index.js index 587799d81..a896273b0 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -17,6 +17,8 @@ export default () => { return { name: 'PageManager', + storageKey: 'pages', + Page, Pages, @@ -172,6 +174,30 @@ export default () => { ['selected', 'config', 'em', 'pages', 'model'].map(i => (this[i] = 0)); }, + store(noStore) { + if (!this.em.get('hasPages')) return {}; + const obj = {}; + const cnf = this.config; + obj[this.storageKey] = JSON.stringify(this.getAll()); + if (!noStore && cnf.stm) cnf.stm.store(obj); + return obj; + }, + + load(data = {}) { + const key = this.storageKey; + let res = data[key] || []; + + if (typeof res == 'string') { + try { + res = JSON.parse(data[key]); + } catch (err) {} + } + + res && res.length && this.getAll().reset(res); + + return res; + }, + _createId() { const pages = this.getAll(); const len = pages.length + 16;