X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/c42b6d572516798821f2295114ca2a62013d9506..d1effc78cd6e71573f29f7901c598cabc3c2aaf8:/src/editor/modules/rng/rng.js diff --git a/src/editor/modules/rng/rng.js b/src/editor/modules/rng/rng.js index 4a01b7b..665d3a9 100644 --- a/src/editor/modules/rng/rng.js +++ b/src/editor/modules/rng/rng.js @@ -43,6 +43,7 @@ return function(sandbox) { sandbox.getModule('nodeFamilyTree').setElement(nodeElement); sandbox.getModule('nodeBreadCrumbs').setNodeElement(nodeElement); sandbox.getModule('documentToolbar').setNodeElement(nodeElement); + sandbox.getModule('metadataEditor').setNodeElement(nodeElement); }, updateCurrentTextElement: function(textElement) { sandbox.getModule('nodeFamilyTree').setElement(textElement); @@ -68,6 +69,7 @@ return function(sandbox) { views.visualEditingSidebar.addTab({icon: 'pencil'}, 'edit', views.currentNodePaneLayout.getAsView()); + var wlxmlDocument, documentIsDirty; /* Events handling */ @@ -87,6 +89,15 @@ 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); @@ -94,6 +105,7 @@ return function(sandbox) { }, 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); @@ -109,6 +121,7 @@ return function(sandbox) { sandbox.getModule('diffViewer').setDiff(diff); }, documentReverted: function(version) { + documentIsDirty = false; sandbox.getModule('mainBar').setCommandEnabled('save', true); sandbox.getModule('indicator').clearMessage({message:'Wersja ' + version + ' przywrócona'}); sandbox.getModule('mainBar').setVersion(version); @@ -238,6 +251,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 */