Commit 4efab810 authored by Boris Kocherov's avatar Boris Kocherov

remove gateway dependence as gadget changes requeried

parent e7385210
/*
*
* (c) Copyright Ascensio System Limited 2010-2017
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
if (Common === undefined) {
var Common = {};
}
Common.Gateway = new(function() {
var me = this,
$me = $(me);
var commandMap = {
'init': function(data) {
$me.trigger('init', data);
},
'openDocument': function(data) {
$me.trigger('opendocument', data);
},
'showMessage': function(data) {
$me.trigger('showmessage', data);
},
'applyEditRights': function(data) {
$me.trigger('applyeditrights', data);
},
'processSaveResult': function(data) {
$me.trigger('processsaveresult', data);
},
'processRightsChange': function(data) {
$me.trigger('processrightschange', data);
},
'refreshHistory': function(data) {
$me.trigger('refreshhistory', data);
},
'setHistoryData': function(data) {
$me.trigger('sethistorydata', data);
},
'setEmailAddresses': function(data) {
$me.trigger('setemailaddresses', data);
},
'processMailMerge': function(data) {
$me.trigger('processmailmerge', data);
},
'downloadAs': function() {
$me.trigger('downloadas');
},
'processMouse': function(data) {
$me.trigger('processmouse', data);
},
'internalCommand': function(data) {
$me.trigger('internalcommand', data);
},
'resetFocus': function(data) {
$me.trigger('resetfocus', data);
}
};
var _postMessage = function(msg) {
// TODO: specify explicit origin
if (window.parent && window.JSON) {
msg.frameEditorId = window.frameEditorId;
window.parent.postMessage(window.JSON.stringify(msg), "*");
}
};
var _onMessage = function(msg) {
// TODO: check message origin
var data = msg.data;
if (Object.prototype.toString.apply(data) !== '[object String]' || !window.JSON) {
return;
}
var cmd, handler;
try {
cmd = window.JSON.parse(data)
} catch(e) {
cmd = '';
}
if (cmd) {
handler = commandMap[cmd.command];
if (handler) {
handler.call(this, cmd.data);
}
}
};
var fn = function(e) { _onMessage(e); };
if (window.attachEvent) {
window.attachEvent('onmessage', fn);
} else {
window.addEventListener('message', fn, false);
}
return {
appReady: function() {
_postMessage({ event: 'onAppReady' });
},
requestEditRights: function() {
_postMessage({ event: 'onRequestEditRights' });
},
requestHistory: function() {
_postMessage({ event: 'onRequestHistory' });
},
requestHistoryData: function(revision) {
_postMessage({
event: 'onRequestHistoryData',
data: revision
});
},
requestRestore: function(version, url) {
_postMessage({
event: 'onRequestRestore',
data: {
version: version,
url: url
}
});
},
requestEmailAddresses: function() {
_postMessage({ event: 'onRequestEmailAddresses' });
},
requestStartMailMerge: function() {
_postMessage({event: 'onRequestStartMailMerge'});
},
requestHistoryClose: function(revision) {
_postMessage({event: 'onRequestHistoryClose'});
},
reportError: function(code, description) {
_postMessage({
event: 'onError',
data: {
errorCode: code,
errorDescription: description
}
});
},
sendInfo: function(info) {
_postMessage({
event: 'onInfo',
data: info
});
},
setDocumentModified: function(modified) {
_postMessage({
event: 'onDocumentStateChange',
data: modified
});
},
internalMessage: function(type, data) {
_postMessage({
event: 'onInternalMessage',
data: {
type: type,
data: data
}
});
},
updateVersion: function() {
_postMessage({ event: 'onOutdatedVersion' });
},
downloadAs: function(url) {
_postMessage({
event: 'onDownloadAs',
data: url
});
},
collaborativeChanges: function() {
_postMessage({event: 'onCollaborativeChanges'});
},
requestRename: function(title) {
_postMessage({event: 'onRequestRename', data: title});
},
metaChange: function(meta) {
_postMessage({event: 'onMetaChange', data: meta});
},
documentReady: function() {
_postMessage({ event: 'onDocumentReady' });
},
on: function(event, handler){
var localHandler = function(event, data){
handler.call(me, data)
};
$me.on(event, localHandler);
}
}
})();
<!DOCTYPE html>
<html>
<head>
<base href="./">
<title>OFFICE Document Editor</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=IE8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<meta name="description" content="" />
<meta name="keywords" content="" />
<style type="text/css">
.loadmask {
left: 0;
top: 0;
position: absolute;
height: 100%;
width: 100%;
overflow: hidden;
border: none;
background-color: #f4f4f4;
z-index: 100;
}
.loader-page {
width: 100%;
height: 170px;
bottom: 42%;
margin-bottom: 50px;
position: absolute;
text-align: center;
}
.loader-page-text {
width: 100%;
bottom: 42%;
position: absolute;
text-align: center;
color: #888;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
line-height: 20px;
}
.loader-page-text-loading {
font-size: 14px;
}
.loader-page-text-customer {
font-size: 16px;
margin-bottom: 5px;
}
</style>
<script src="../rsvp.js" type="text/javascript"></script>
<script src="../renderjs.js" type="text/javascript"></script>
<script src="../jiodev.js" type="text/javascript"></script>
<script src="../zipfilestorage-with-jszip.js" type="text/javascript"></script>
<script src="../Xmla.js" type="text/javascript"></script>
<script src="./vendor/requirejs/require.js" type="text/javascript"></script>
<!--script src="./sdkjs/common/applyDocumentChanges.js" type="text/javascript"></script-->
<script src="./gadget_ooffice.js" type="text/javascript"></script>
</head>
<body>
<div id="loading-mask" class="loadmask">
<div class="loader-page">
<div class="loader-page-text">
<div class="loader-page-text-customer">OFFICE</div>
<div class="loader-page-text-loading">Loading...</div>
</div>
</div>
</div>
<div id="viewport"></div>
</body>
</html>
\ No newline at end of file
/*global window, rJS, RSVP, DocsAPI, console, document,
Common, require, jIO, URL, FileReader, atob, ArrayBuffer,
Uint8Array, XMLHttpRequest, Blob, Rusha*/
/*jslint nomen: true, maxlen:80, indent:2*/
if (Common === undefined) {
var Common = {};
}
var DocsAPI = {DocEditor: {}};
DocsAPI.DocEditor.version = function() {
return null;
};
(function (rJS, RSVP, require, jIO) {
"use strict";
var rusha = new Rusha();
function hexdigest(blob) {
return new RSVP.Queue()
.push(function () {
return jIO.util.readBlobAsArrayBuffer(blob)
.then(function (evt) {
return rusha.digest(evt.target.result);
});
});
}
function display_error(gadget, error) {
var display_error_element;
display_error_element = gadget.props.element;
display_error_element.innerHTML =
'<br/><p style="color: red"></p><br/><br/>';
display_error_element.querySelector('p').textContent = error;
throw error;
}
function dataURLtoBlob(url) {
if (url === 'data:') {
return new Blob();
}
var byteString = atob(url.split(',')[1]),
mimeString = url.split(',')[0].split(':')[1].split(';')[0],
ab = new ArrayBuffer(byteString.length),
ia = new Uint8Array(ab),
i;
for (i = 0; i < byteString.length; i += 1) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ab], {type: mimeString});
}
rJS(window)
.ready(function (g) {
g.props = {
save_defer: null,
handlers: {}
};
})
.ready(function (g) {
return g.getElement()
.push(function (element) {
g.props.element = element;
return {};
});
})
.declareAcquiredMethod("triggerSubmit", "triggerSubmit")
.declareAcquiredMethod("triggerMaximize", "triggerMaximize")
.declareAcquiredMethod("setFillStyle", "setFillStyle")
.declareAcquiredMethod('getSetting', 'getSetting')
.declareMethod("jio_getAttachment", function (docId, attId, opt) {
var g = this,
queue;
if (attId === 'body.txt') {
opt = 'asText';
if (!docId) {
docId = '/';
}
} else {
if (!docId) {
docId = '/media/';
}
}
queue = g.props.value_zip_storage.getAttachment(docId, attId)
.push(function (blob) {
var data;
if (opt === "asText") {
data = jIO.util.readBlobAsText(blob)
.then(function (evt) {
return evt.target.result;
});
} else if (opt === "asBlobURL") {
data = URL.createObjectURL(blob);
} else if (opt === "asDataURL") {
data = new RSVP.Promise(function (resolve, reject) {
var reader = new FileReader();
reader.addEventListener('load', function () {
resolve(reader.result);
});
reader.addEventListener('error', reject);
reader.readAsDataURL(blob);
});
} else {
data = blob;
}
return data;
});
return queue;
})
.declareMethod("jio_putAttachment", function (docId, atId, data) {
var g = this,
zip = g.props.value_zip_storage,
queue,
content_type,
start = data.slice(0, 5);
if (!docId) {
docId = '/media/';
}
if (typeof data === 'string' && start === "data:") {
data = dataURLtoBlob(data);
}
if (atId) {
queue = zip.putAttachment(docId, atId, data)
.push(undefined, function (error) {
if (error.status_code === 404) {
// make dir
return zip.put(docId, {})
.push(function () {
return zip.putAttachment(docId, atId, data);
});
}
throw error;
});
} else {
queue = hexdigest(data)
.push(function (digest) {
content_type = data.type;
if (!content_type) {
content_type = "application/binary";
}
content_type = content_type.split('/');
atId = content_type[0] + ',' + digest
+ '.' + content_type[1];
return zip.allAttachments(docId)
.push(undefined, function (error) {
if (error.status_code === 404) {
// make dir
return zip.put(docId, {});
}
throw error;
})
.push(function (list) {
if (list.hasOwnProperty(atId)) {
return {};
}
return zip.putAttachment(docId, atId, data);
});
})
.push(function () {
return atId;
});
}
return queue;
})
// methods emulating Gateway used for connection with ooffice begin.
.declareMethod('appReady', function () {
var g = this;
console.log('appReady');
g.props.handlers.init({
config: {
lang: 'en',
canAutosave: false,
canCoAuthoring: false,
canBackToFolder: true,
canCreateNew: false,
canAnalytics: false,
customization: {
about: false,
feedback: false
}
}
});
g.props.handlers.opendocument({
doc: {
key: g.props.jio_key,
//title: g.props.doc.title || "",
//fileType: undefined,
//vkey: undefined,
url: "_offline_",
permissions: {
edit: true,
download: true,
reader: true
}
}
});
})
.declareMethod('documentReady', function () {
console.log();
})
.declareMethod('goBack', function (new_window) {
var g = this;
g.triggerMaximize()
.push(function (size) {
var iframe = g.props.element.querySelector('iframe');
iframe.style.height = size.height;
iframe.style.width = size.width;
});
})
.declareMethod('requestEditRights', function () {
var g = this;
g.props.handlers.applyEditRights({
allowed: true,
message: ""
});
})
.declareMethod('requestHistory', function () {
})
.declareMethod('requestHistoryData', function (revision) {
})
.declareMethod('requestHistoryClose', function () {
})
.declareMethod('reportError', function (code, description) {
console.log(['reportError', code, description]);
})
.declareMethod('sendInfo', function (info) {
console.log(['sendInfo', info]);
})
.declareMethod('setDocumentModified', function (modified) {
})
.declareMethod('internalMessage', function (event_name, data) {
console.log(['internalMessage', event_name, data]);
})
.declareMethod('updateVersion', function () {
})
.declareMethod('on', function (event_name, handler) {
var g = this;
g.props.handlers[event_name] = handler;
})
// methods emulating Gateway used for connection with ooffice end.
.declareMethod('render', function (options) {
console.log('begin render');
var g = this,
queue = new RSVP.Queue();
return queue
.push(function () {
return g.getSetting('portal_type');
})
.push(undefined, function (error) {
return "";
})
.push(function (portal_type) {
var value;
g.props.jio_key = options.jio_key;
g.props.key = options.key || "text_content";
g.props.documentType = portal_type.toLowerCase();
value = options.value;
if (value === "data:" || value === undefined) {
// fix empty value
value = "";
}
if (value) {
if (value.slice === undefined) {
throw "not suported type of variable containing the document: " +
typeof value;
}
if (value.slice(0, 5) === "data:") {
value = atob(value.split(',')[1]);
}
}
if (value) {
switch (value.slice(0, 4)) {
case "PK\x03\x04":
case "PK\x05\x06":
g.props.value_zip_storage = jIO.createJIO({
type: "zipfile",
file: value
});
return g.props.value_zip_storage.getAttachment('/', 'body.txt')
.push(undefined, function (error) {
if (error.status_code === 404) {
throw 'not supported format of document: "' + value.slice(0, 100) + '"';
}
throw error;
})
.push(jIO.util.readBlobAsText)
.push(function (evt) {
return evt.target.result;
});
}
}
return value;
})
.push(function (value) {
var magic, documentType;
g.props.value = value;
if (!g.props.documentType && value === "") {
throw "can not create empty document because portal_type is unknown";
}
if (value) {
magic = g.props.value.slice(0, 4);
switch (magic) {
case 'XLSY':
documentType = "spreadsheet";
break;
case 'PPTY':
documentType = "presentation";
break;
case 'DOCY':
documentType = "text";
break;
default:
throw "can not detect document type by magic: " + magic;
}
if (g.props.documentType) {
if (documentType !== g.props.documentType) {
throw "editor not fit the document type";
}
} else {
//set editor type by docuementType
g.props.documentType = documentType;
}
}
if (!g.props.value_zip_storage) {
g.props.value_zip_storage = jIO.createJIO({type: "zipfile"});
}
return g.setFillStyle();
})
.push(function (size) {
var element = g.props.element,
sdkPath,
nameSpace,
backboneControllers,
styles;
element.style.height = size.height;
element.style.width = size.width;
// g.fullscreen();
switch (g.props.documentType) {
case 'spreadsheet':
sdkPath = 'cell';
nameSpace = 'SSE';
backboneControllers = [
'Viewport',
'DocumentHolder',
'CellEditor',
'FormulaDialog',
'Print',
'Toolbar',
'Statusbar',
'RightMenu',
'LeftMenu',
'Main',
'Common.Controllers.Fonts',
'Common.Controllers.Chat',
'Common.Controllers.Comments',
'Common.Controllers.Plugins'
];
styles = [
// sdk changed to sdk/Excel/sdk-all
'css!sdk/../css/main.css',
'css!spreadsheeteditor/main/resources/css/app.css'
];
break;
case 'text':
sdkPath = 'word';
nameSpace = 'DE';
backboneControllers = [
'Viewport',
'DocumentHolder',
'Toolbar',
'Statusbar',
'RightMenu',
'LeftMenu',
'Main',
'Common.Controllers.Fonts',
'Common.Controllers.History',
'Common.Controllers.Chat',
'Common.Controllers.Comments',
'Common.Controllers.Plugins',
'Common.Controllers.ExternalDiagramEditor',
'Common.Controllers.ExternalMergeEditor',
'Common.Controllers.ReviewChanges'
];
styles = [
'css!documenteditor/main/resources/css/app.css'
];
break;
case 'presentation':
sdkPath = 'slide';
nameSpace = 'PE';
backboneControllers = [
'Viewport',
'DocumentHolder',
'Toolbar',
'Statusbar',
'RightMenu',
'LeftMenu',
'Main',
'Common.Controllers.Fonts',
'Common.Controllers.Chat',
'Common.Controllers.Comments',
'Common.Controllers.ExternalDiagramEditor'
];
styles = [
'css!presentationeditor/main/resources/css/app.css'
];
break;
}
Common.Gateway = g;
require.config({
baseUrl: "apps/",
waitSeconds: 360,
paths: {
jquery: '../vendor/jquery/jquery',
underscore: '../vendor/underscore/underscore',
backbone: '../vendor/backbone/backbone',
bootstrap: '../vendor/bootstrap/dist/js/bootstrap',
text: '../vendor/requirejs-text/text',
perfectscrollbar: 'common/main/lib/mods/perfect-scrollbar',
jmousewheel: '../vendor/perfect-scrollbar/src/jquery.mousewheel',
xregexp: '../vendor/xregexp/xregexp-all-min',
sockjs: '../vendor/sockjs/sockjs.min',
jsziputils: '../vendor/jszip-utils/jszip-utils.min',
jsrsasign: '../vendor/jsrsasign/jsrsasign-latest-all-min',
allfonts: '../sdkjs/common/AllFonts',
sdk: '../sdkjs/' + sdkPath + '/sdk-all-min',
api: 'api/documents/api',
core: 'common/main/lib/core/application',
notification: 'common/main/lib/core/NotificationCenter',
keymaster: 'common/main/lib/core/keymaster',
tip: 'common/main/lib/util/Tip',
localstorage: 'common/main/lib/util/LocalStorage',
analytics: 'common/Analytics',
locale: 'common/locale',
irregularstack: 'common/IrregularStack'
},
shim: {
underscore: {
exports: "_"
},
backbone: {
deps: [
"underscore",
"jquery"
],
exports: "Backbone"
},
bootstrap: {
deps: [
'jquery'
]
},
perfectscrollbar: {
deps: [
'jmousewheel'
]
},
notification: {
deps: [
'backbone'
]
},
core: {
deps: [
'backbone',
'notification',
'irregularstack'
]
},
sdk: {
deps: [
'jquery',
'underscore',
'allfonts',
'xregexp',
'sockjs',
'jsziputils',
'jsrsasign'
]
}
}
});
require([
'backbone',
'bootstrap',
'core',
'analytics',
'locale'
].concat(styles), function (Backbone) {
Backbone.history.start();
var app = new Backbone.Application({
nameSpace: nameSpace,
autoCreate: false,
controllers: backboneControllers
});
Common.Locale.apply();
switch (g.props.documentType) {
case 'spreadsheet':
require([
'spreadsheeteditor/main/app/controller/Viewport',
'spreadsheeteditor/main/app/controller/DocumentHolder',
'spreadsheeteditor/main/app/controller/CellEditor',
'spreadsheeteditor/main/app/controller/Toolbar',
'spreadsheeteditor/main/app/controller/Statusbar',
'spreadsheeteditor/main/app/controller/RightMenu',
'spreadsheeteditor/main/app/controller/LeftMenu',
'spreadsheeteditor/main/app/controller/Main',
'spreadsheeteditor/main/app/controller/Print',
'spreadsheeteditor/main/app/view/ParagraphSettings',
'spreadsheeteditor/main/app/view/ImageSettings',
'spreadsheeteditor/main/app/view/ChartSettings',
'spreadsheeteditor/main/app/view/ShapeSettings',
'spreadsheeteditor/main/app/view/TextArtSettings',
'common/main/lib/util/utils',
'common/main/lib/util/LocalStorage',
'common/main/lib/controller/Fonts',
'common/main/lib/controller/Comments',
'common/main/lib/controller/Chat',
'common/main/lib/controller/Plugins'
], function () {
app.start();
});
break;
case 'text':
require([
'documenteditor/main/app/controller/Viewport',
'documenteditor/main/app/controller/DocumentHolder',
'documenteditor/main/app/controller/Toolbar',
'documenteditor/main/app/controller/Statusbar',
'documenteditor/main/app/controller/RightMenu',
'documenteditor/main/app/controller/LeftMenu',
'documenteditor/main/app/controller/Main',
'documenteditor/main/app/view/ParagraphSettings',
'documenteditor/main/app/view/HeaderFooterSettings',
'documenteditor/main/app/view/ImageSettings',
'documenteditor/main/app/view/TableSettings',
'documenteditor/main/app/view/ShapeSettings',
'common/main/lib/util/utils',
'common/main/lib/util/LocalStorage',
'common/main/lib/controller/Fonts',
'common/main/lib/controller/History',
'common/main/lib/controller/Comments',
'common/main/lib/controller/Chat',
'common/main/lib/controller/Plugins',
'documenteditor/main/app/view/ChartSettings',
'common/main/lib/controller/ExternalDiagramEditor',
'common/main/lib/controller/ExternalMergeEditor',
'common/main/lib/controller/ReviewChanges'
], function () {
app.start();
});
break;
case 'presentation':
require([
'presentationeditor/main/app/controller/Viewport',
'presentationeditor/main/app/controller/DocumentHolder',
'presentationeditor/main/app/controller/Toolbar',
'presentationeditor/main/app/controller/Statusbar',
'presentationeditor/main/app/controller/RightMenu',
'presentationeditor/main/app/controller/LeftMenu',
'presentationeditor/main/app/controller/Main',
'presentationeditor/main/app/view/ParagraphSettings',
'presentationeditor/main/app/view/ImageSettings',
'presentationeditor/main/app/view/ShapeSettings',
'presentationeditor/main/app/view/SlideSettings',
'presentationeditor/main/app/view/TableSettings',
'presentationeditor/main/app/view/TextArtSettings',
'common/main/lib/util/utils',
'common/main/lib/util/LocalStorage',
'common/main/lib/controller/Fonts',
'common/main/lib/controller/Comments',
'common/main/lib/controller/Chat',
'presentationeditor/main/app/view/ChartSettings',
'common/main/lib/controller/ExternalDiagramEditor'
], function () {
window.compareVersions = true;
app.start();
});
break;
}
}, function (err) {
throw err;
});
return {};
})
.push(undefined, function (error) {
display_error(g, error);
});
})
.declareMethod('getContent', function () {
var g = this,
zip = g.props.value_zip_storage,
queue = new RSVP.Queue(),
save_defer = RSVP.defer();
g.props.save_defer = save_defer;
g.props.handlers.save();
return queue.push(function () {
return save_defer.promise;
})
.push(function (data) {
var body = data[g.props.key];
return zip.putAttachment('/', 'body.txt', body);
})
.push(function () {
return zip.getAttachment('/', '/');
})
.push(function (zip_blob) {
return jIO.util.readBlobAsDataURL(zip_blob);
})
.push(function (evt) {
var data = {};
data[g.props.key] = evt.target.result;
return data;
});
});
}(rJS, RSVP, require, jIO));
\ No newline at end of file
......@@ -44,7 +44,6 @@ define([
'jquery',
'underscore',
'backbone',
'gateway',
'common/main/lib/util/utils',
'common/main/lib/component/Menu',
'common/main/lib/view/InsertTableDialog',
......@@ -53,7 +52,7 @@ define([
'documenteditor/main/app/view/HyperlinkSettingsDialog',
'documenteditor/main/app/view/ParagraphSettingsAdvanced',
'documenteditor/main/app/view/TableSettingsAdvanced'
], function ($, _, Backbone, gateway) { 'use strict';
], function ($, _, Backbone) { 'use strict';
DE.Views.DocumentHolder = Backbone.View.extend(_.extend({
el: '#editor_sdk',
......
......@@ -34,7 +34,6 @@ define([
'jquery',
'underscore',
'backbone',
'gateway',
'common/main/lib/util/utils',
'common/main/lib/component/Menu',
'common/main/lib/view/CopyWarningDialog',
......@@ -43,7 +42,7 @@ define([
'presentationeditor/main/app/view/ParagraphSettingsAdvanced',
'presentationeditor/main/app/view/ShapeSettingsAdvanced',
'presentationeditor/main/app/view/TableSettingsAdvanced'
], function ($, _, Backbone, gateway) { 'use strict';
], function ($, _, Backbone) { 'use strict';
PE.Views.DocumentHolder = Backbone.View.extend(_.extend({
el: '#editor_sdk',
......
......@@ -44,12 +44,11 @@ define([
'jquery',
'underscore',
'backbone',
'gateway',
'common/main/lib/component/Menu'
// 'spreadsheeteditor/main/app/view/HyperlinkSettingsDialog',
// 'spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced',
// 'spreadsheeteditor/main/app/view/TableSettingsAdvanced'
], function ($, _, Backbone, gateway) { 'use strict';
], function ($, _, Backbone) { 'use strict';
SSE.Views.DocumentHolder = Backbone.View.extend(_.extend({
el: '#editor_sdk',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment