X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/d003018e2fe4d6ccb51151b755cdc337672d9bf0..ae032450627538fabf7df31fbda6cf7bd097b94f:/src/editor/modules/rng/rng.js diff --git a/src/editor/modules/rng/rng.js b/src/editor/modules/rng/rng.js index b1e091c..fc97f99 100644 --- a/src/editor/modules/rng/rng.js +++ b/src/editor/modules/rng/rng.js @@ -42,18 +42,10 @@ return function(sandbox) { sandbox.getModule('nodePane').setNodeElement(nodeElement); sandbox.getModule('nodeFamilyTree').setElement(nodeElement); sandbox.getModule('nodeBreadCrumbs').setNodeElement(nodeElement); + sandbox.getModule('documentToolbar').setNodeElement(nodeElement); }, updateCurrentTextElement: function(textElement) { sandbox.getModule('nodeFamilyTree').setElement(textElement); - }, - resetDocument: function(document, reason) { - var modules = []; - if (reason === 'revert') { - modules = ['documentCanvas', 'metadataEditor', 'sourceEditor']; - } - modules.forEach(function(moduleName) { - sandbox.getModule(moduleName).setDocument(document); - }); } }; @@ -68,14 +60,15 @@ return function(sandbox) { }; views.visualEditing.setView('rightColumn', views.visualEditingSidebar.getAsView()); - addMainTab('Edytor', 'editor', views.visualEditing.getAsView()); + addMainTab(gettext('Editor'), 'editor', views.visualEditing.getAsView()); addMainTab(gettext('Source'), 'sourceEditor', ''); - addMainTab('Historia', 'history', views.diffLayout.getAsView()); + addMainTab(gettext('History'), 'history', views.diffLayout.getAsView()); sandbox.getDOM().append(views.mainLayout.getAsView()); views.visualEditingSidebar.addTab({icon: 'pencil'}, 'edit', views.currentNodePaneLayout.getAsView()); + var wlxmlDocument, documentIsDirty; /* Events handling */ @@ -95,15 +88,26 @@ return function(sandbox) { _.each(['sourceEditor', 'documentCanvas', 'documentToolbar', 'nodePane', 'metadataEditor', 'nodeFamilyTree', 'nodeBreadCrumbs', 'mainBar', 'indicator', 'documentHistory', 'diffViewer'], function(moduleName) { sandbox.getModule(moduleName).start(); }); + + wlxmlDocument = sandbox.getModule('data').getDocument(); + documentIsDirty = false; + wlxmlDocument.on('change', function() { + documentIsDirty = true; + }); + wlxmlDocument.on('contentSet', function() { + documentIsDirty = true; + }); }, savingStarted: function() { sandbox.getModule('mainBar').setCommandEnabled('save', false); sandbox.getModule('indicator').showMessage(gettext('Saving...')); }, - savingEnded: function(status) { + savingEnded: function(status, current_version) { void(status); + documentIsDirty = false; sandbox.getModule('mainBar').setCommandEnabled('save', true); sandbox.getModule('indicator').clearMessage({message:'Dokument zapisany'}); + sandbox.getModule('mainBar').setVersion(current_version); }, restoringStarted: function(event) { sandbox.getModule('mainBar').setCommandEnabled('save', false); @@ -115,11 +119,11 @@ return function(sandbox) { diffFetched: function(diff) { sandbox.getModule('diffViewer').setDiff(diff); }, - documentReverted: function(event) { - commands.resetDocument(event.document, 'revert'); + documentReverted: function(version) { + documentIsDirty = false; sandbox.getModule('mainBar').setCommandEnabled('save', true); - sandbox.getModule('indicator').clearMessage({message:'Wersja ' + event.reverted_version + ' przywrócona'}); - sandbox.getModule('mainBar').setVersion(event.current_version); + sandbox.getModule('indicator').clearMessage({message:'Wersja ' + version + ' przywrócona'}); + sandbox.getModule('mainBar').setVersion(version); } }; @@ -232,10 +236,11 @@ return function(sandbox) { compare: function(ver1, ver2) { sandbox.getModule('data').fetchDiff(ver1, ver2); }, - restoreVersion: function(event) { - sandbox.getModule('data').restoreVersion(event); + restoreVersion: function(version) { + sandbox.getModule('data').restoreVersion(version); }, displayVersion: function(event) { + /* globals window */ window.open('/' + gettext('editor') + '/' + sandbox.getModule('data').getDocumentId() + '?version=' + event.version, _.uniqueId()); } }; @@ -245,6 +250,15 @@ return function(sandbox) { views.diffLayout.setView('right', sandbox.getModule('diffViewer').getView()); } }; + + window.addEventListener('beforeunload', function(event) { + var txt = gettext('Do you really want to exit?'); + if(documentIsDirty) { + txt += ' ' + gettext('Document contains unsaved changes!'); + } + event.returnValue = txt; // FF + return txt; // Chrome + }); /* api */