X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/e68778f27b18c21c23387d7609d825ab3a192af7..4bec9ecf52da4c7f83bc8bb8c1b7d5ee148e732e:/src/editor/modules/rng/rng.js diff --git a/src/editor/modules/rng/rng.js b/src/editor/modules/rng/rng.js index 4e7ff0c..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); @@ -60,14 +61,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 */ @@ -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 */