Sync with webodf 1875ef27bc220bc49dc6092e7de9b5e184c2e855
* adds support for direct text styling: + bold + italic + underline + strikethrough, + font + fontsize * fixes broken OT on selections vs. other editing operations * performance improvements with big documents
This commit is contained in:
parent
d968b2afe5
commit
15b7bdfd9d
62
js/3rdparty/webodf/editor/Editor.js
vendored
62
js/3rdparty/webodf/editor/Editor.js
vendored
@ -127,6 +127,36 @@ define("webodf/editor/Editor", [
|
||||
initDocLoading(docUrl, memberId, editorReadyCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* Closes a single-user document, and does cleanup.
|
||||
* @param {!function(!Object=)} callback, passing an error object in case of error
|
||||
* @return undefined;
|
||||
*/
|
||||
this.closeDocument = function (callback) {
|
||||
runtime.assert(session, "session should exist here.");
|
||||
session.close(function (err) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
editorSession.destroy(function (err) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
editorSession = undefined;
|
||||
session.destroy(function (err) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
session = undefined;
|
||||
callback();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {!string} filename
|
||||
* @param {?function()} callback
|
||||
@ -188,34 +218,26 @@ define("webodf/editor/Editor", [
|
||||
* @param {!function(!Object=)} callback, passing an error object in case of error
|
||||
* @return {undefined}
|
||||
*/
|
||||
this.close = function (callback) {
|
||||
this.closeSession = function (callback) {
|
||||
runtime.assert(session, "session should exist here.");
|
||||
// TODO: there is a better pattern for this instead of unrolling
|
||||
editorSession.close(function(err) {
|
||||
session.close(function(err) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
session.close(function(err) {
|
||||
// now also destroy session, will not be reused for new document
|
||||
memberListView.setEditorSession(undefined);
|
||||
editorSession.destroy(function(err) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
// now also destroy session, will not be reused for new document
|
||||
if (memberListView) {
|
||||
memberListView.setEditorSession(undefined);
|
||||
}
|
||||
editorSession.destroy(function(err) {
|
||||
editorSession = undefined;
|
||||
session.destroy(function(err) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
editorSession = undefined;
|
||||
session.destroy(function(err) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
session = undefined;
|
||||
callback();
|
||||
}
|
||||
});
|
||||
session = undefined;
|
||||
callback();
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -294,7 +316,7 @@ define("webodf/editor/Editor", [
|
||||
canvasElement = document.getElementById("canvas"),
|
||||
memberListElement = document.getElementById('memberList'),
|
||||
collabEditing = Boolean(server),
|
||||
directStylingEnabled = (! collabEditing) || args.unstableFeaturesEnabled,
|
||||
directParagraphStylingEnabled = (! collabEditing) || args.unstableFeaturesEnabled,
|
||||
imageInsertingEnabled = (! collabEditing) || args.unstableFeaturesEnabled,
|
||||
// annotations not yet properly supported for OT
|
||||
annotationsEnabled = (! collabEditing) || args.unstableFeaturesEnabled,
|
||||
@ -360,7 +382,7 @@ define("webodf/editor/Editor", [
|
||||
loadOdtFile: loadOdtFile,
|
||||
saveOdtFile: saveOdtFile,
|
||||
close: close,
|
||||
directStylingEnabled: directStylingEnabled,
|
||||
directParagraphStylingEnabled: directParagraphStylingEnabled,
|
||||
imageInsertingEnabled: imageInsertingEnabled,
|
||||
annotationsEnabled: annotationsEnabled,
|
||||
undoRedoEnabled: undoRedoEnabled
|
||||
@ -380,7 +402,7 @@ define("webodf/editor/Editor", [
|
||||
session = new ops.Session(odfCanvas);
|
||||
editorSession = new EditorSession(session, pendingMemberId, {
|
||||
viewOptions: viewOptions,
|
||||
directStylingEnabled: directStylingEnabled,
|
||||
directParagraphStylingEnabled: directParagraphStylingEnabled,
|
||||
imageInsertingEnabled: imageInsertingEnabled
|
||||
});
|
||||
if (undoRedoEnabled) {
|
||||
|
26
js/3rdparty/webodf/editor/EditorSession.js
vendored
26
js/3rdparty/webodf/editor/EditorSession.js
vendored
@ -65,7 +65,7 @@ define("webodf/editor/EditorSession", [
|
||||
* Instantiate a new editor session attached to an existing operation session
|
||||
* @param {!ops.Session} session
|
||||
* @param {!string} localMemberId
|
||||
* @param {{viewOptions:gui.SessionViewOptions,directStylingEnabled:boolean}} config
|
||||
* @param {{viewOptions:gui.SessionViewOptions,directParagraphStylingEnabled:boolean}} config
|
||||
* @constructor
|
||||
*/
|
||||
var EditorSession = function EditorSession(session, localMemberId, config) {
|
||||
@ -512,28 +512,6 @@ define("webodf/editor/EditorSession", [
|
||||
self.sessionController.getTextManipulator().removeCurrentSelection();
|
||||
self.sessionController.getImageManager().insertImage(mimetype, content, width, height);
|
||||
};
|
||||
/**
|
||||
* @param {!function(!Object=)} callback, passing an error object in case of error
|
||||
* @return {undefined}
|
||||
*/
|
||||
this.close = function (callback) {
|
||||
callback();
|
||||
/*
|
||||
self.sessionView.close(function(err) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
caretManager.close(function(err) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else {
|
||||
self.sessionController.close(callback);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {!function(!Object=)} callback, passing an error object in case of error
|
||||
@ -592,7 +570,7 @@ define("webodf/editor/EditorSession", [
|
||||
head.appendChild(fontStyles);
|
||||
|
||||
self.sessionController = new gui.SessionController(session, localMemberId, shadowCursor, {
|
||||
directStylingEnabled: config.directStylingEnabled
|
||||
directParagraphStylingEnabled: config.directParagraphStylingEnabled
|
||||
});
|
||||
caretManager = new gui.CaretManager(self.sessionController);
|
||||
selectionViewManager = new gui.SelectionViewManager();
|
||||
|
16
js/3rdparty/webodf/editor/Tools.js
vendored
16
js/3rdparty/webodf/editor/Tools.js
vendored
@ -141,17 +141,15 @@ define("webodf/editor/Tools", [
|
||||
}
|
||||
|
||||
// Simple Style Selector [B, I, U, S]
|
||||
if (args.directStylingEnabled) {
|
||||
simpleStyles = new SimpleStyles(function (widget) {
|
||||
widget.placeAt(toolbar);
|
||||
widget.startup();
|
||||
});
|
||||
sessionSubscribers.push(simpleStyles);
|
||||
simpleStyles.onToolDone = onToolDone;
|
||||
}
|
||||
simpleStyles = new SimpleStyles(function (widget) {
|
||||
widget.placeAt(toolbar);
|
||||
widget.startup();
|
||||
});
|
||||
sessionSubscribers.push(simpleStyles);
|
||||
simpleStyles.onToolDone = onToolDone;
|
||||
|
||||
// Paragraph direct alignment buttons
|
||||
if (args.directStylingEnabled) {
|
||||
if (args.directParagraphStylingEnabled) {
|
||||
paragraphAlignment = new ParagraphAlignment(function (widget) {
|
||||
widget.placeAt(toolbar);
|
||||
widget.startup();
|
||||
|
1398
js/3rdparty/webodf/webodf-debug.js
vendored
1398
js/3rdparty/webodf/webodf-debug.js
vendored
File diff suppressed because it is too large
Load Diff
1766
js/3rdparty/webodf/webodf.js
vendored
1766
js/3rdparty/webodf/webodf.js
vendored
File diff suppressed because one or more lines are too long
@ -278,7 +278,7 @@ var documentsMain = {
|
||||
parent.location.hash = "";
|
||||
|
||||
documentsMain.webodfEditorInstance.endEditing();
|
||||
documentsMain.webodfEditorInstance.close(function() {
|
||||
documentsMain.webodfEditorInstance.closeSession(function() {
|
||||
// successfull shutdown - all is good.
|
||||
// TODO: proper session leaving call to server, either by webodfServerInstance or custom
|
||||
// documentsMain.webodfServerInstance.leaveSession(sessionId, memberId, function() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user