From ac2661bc6e7bc0aad83c2a4bb3db82a05383b6e3 Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Sun, 26 Feb 2017 21:10:49 -0600 Subject: [PATCH] editor data --- .../app/frontend/controllers/editor.js | 10 ++++++++-- .../app/frontend/models/app/editor.js | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/app/frontend/controllers/editor.js b/app/assets/javascripts/app/frontend/controllers/editor.js index 3254d78f8..d12c50b13 100644 --- a/app/assets/javascripts/app/frontend/controllers/editor.js +++ b/app/assets/javascripts/app/frontend/controllers/editor.js @@ -53,8 +53,14 @@ angular.module('app.frontend') } else { var id = event.data.id; var text = event.data.text; - if(this.note.uuid == id) { + var data = event.data.data; + + if(this.note.uuid === id) { this.note.text = text; + var changesMade = this.customEditor.setData(id, data); + if(changesMade) { + this.customEditor.setDirty(true); + } this.changesMade(); } } @@ -103,7 +109,7 @@ angular.module('app.frontend') this.postNoteToExternalEditor = function() { var externalEditorElement = document.getElementById("editor-iframe"); if(externalEditorElement) { - externalEditorElement.contentWindow.postMessage({text: this.note.text, id: this.note.uuid}, '*'); + externalEditorElement.contentWindow.postMessage({text: this.note.text, data: this.customEditor.dataForKey(this.note.uuid), id: this.note.uuid}, '*'); } } diff --git a/app/assets/javascripts/app/frontend/models/app/editor.js b/app/assets/javascripts/app/frontend/models/app/editor.js index 2b823d3a5..9cff50789 100644 --- a/app/assets/javascripts/app/frontend/models/app/editor.js +++ b/app/assets/javascripts/app/frontend/models/app/editor.js @@ -8,12 +8,14 @@ class Editor extends Item { super.mapContentToLocalProperties(contentObject) this.url = contentObject.url; this.name = contentObject.name; + this.data = contentObject.data || {}; } structureParams() { var params = { url: this.url, - name: this.name + name: this.name, + data: this.data }; _.merge(params, super.structureParams()); @@ -27,4 +29,17 @@ class Editor extends Item { get content_type() { return "SN|Editor"; } + + setData(key, value) { + var dataHasChanged = JSON.stringify(this.data[key]) !== JSON.stringify(value); + if(dataHasChanged) { + this.data[key] = value; + return true; + } + return false; + } + + dataForKey(key) { + return this.data[key] || {}; + } }