'views/tabs/tabs',
'libs/text!./mainLayout.html',
'libs/text!./editingLayout.html',
'libs/text!./diffLayout.html',
'views/tabs/tabs',
'libs/text!./mainLayout.html',
'libs/text!./editingLayout.html',
'libs/text!./diffLayout.html',
-], function(_, layout, vbox, tabs, mainLayoutTemplate, visualEditingLayoutTemplate, diffLayoutTemplate) {
+], function(_, layout, vbox, logging, tabs, mainLayoutTemplate, visualEditingLayoutTemplate, diffLayoutTemplate) {
function addMainTab(title, slug, view) {
views.mainTabs.addTab(title, slug, view);
function addMainTab(title, slug, view) {
views.mainTabs.addTab(title, slug, view);
sandbox.getModule('nodePane').setNodeElement(nodeElement);
sandbox.getModule('nodeFamilyTree').setElement(nodeElement);
sandbox.getModule('nodeBreadCrumbs').setNodeElement(nodeElement);
sandbox.getModule('nodePane').setNodeElement(nodeElement);
sandbox.getModule('nodeFamilyTree').setElement(nodeElement);
sandbox.getModule('nodeBreadCrumbs').setNodeElement(nodeElement);
},
updateCurrentTextElement: function(textElement) {
sandbox.getModule('nodeFamilyTree').setElement(textElement);
},
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);
- });
sandbox.getDOM().append(views.mainLayout.getAsView());
views.visualEditingSidebar.addTab({icon: 'pencil'}, 'edit', views.currentNodePaneLayout.getAsView());
sandbox.getDOM().append(views.mainLayout.getAsView());
views.visualEditingSidebar.addTab({icon: 'pencil'}, 'edit', views.currentNodePaneLayout.getAsView());
_.each(['sourceEditor', 'documentCanvas', 'documentToolbar', 'nodePane', 'metadataEditor', 'nodeFamilyTree', 'nodeBreadCrumbs', 'mainBar', 'indicator', 'documentHistory', 'diffViewer'], function(moduleName) {
sandbox.getModule(moduleName).start();
});
_.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() {
+ savingStarted: function(what) {
+ var msg = {
+ remote: gettext('Saving document'),
+ local: gettext('Saving local copy')
+ };
},
restoringStarted: function(event) {
sandbox.getModule('mainBar').setCommandEnabled('save', false);
},
restoringStarted: function(event) {
sandbox.getModule('mainBar').setCommandEnabled('save', false);
- documentReverted: function(event) {
- commands.resetDocument(event.document, 'revert');
+ documentReverted: function(version) {
+ documentIsDirty = false;
- 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);
+ var sourceEditor = sandbox.getModule('sourceEditor');
+ if(!sourceEditor.changesCommited()) {
+ logger.debug('Source editor has uncommited changes, commiting...');
+ sourceEditor.commitChanges();
+ }
compare: function(ver1, ver2) {
sandbox.getModule('data').fetchDiff(ver1, ver2);
},
compare: function(ver1, ver2) {
sandbox.getModule('data').fetchDiff(ver1, ver2);
},
+
+ 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
+ });
sandbox.getModule('data').start();
},
handleEvent: function(moduleName, eventName, args) {
sandbox.getModule('data').start();
},
handleEvent: function(moduleName, eventName, args) {