Commit 40e6c158 authored by Boris Kocherov's avatar Boris Kocherov Committed by Boris Kocherov

erp5_officejs_ooffice: integrate jio inside ooffice

parent 74302ba0
......@@ -3,6 +3,12 @@
(function (window, document, RSVP, rJS, Handlebars, loopEventListener) {
"use strict";
function this_func_link(name) {
return function () {
return this[name].apply(this, arguments[0]);
};
}
function saveContent(gadget, submit_event) {
var i,
doc = gadget.options.doc;
......@@ -22,7 +28,7 @@
})
.push(function (data) {
doc.data = data.text_content;
return gadget.put(gadget.options.jio_key, doc);
return gadget.jio_put(gadget.options.jio_key, doc);
});
}
......@@ -96,11 +102,17 @@
})
.declareAcquiredMethod("updateHeader", "updateHeader")
.declareAcquiredMethod("jio_get", "jio_get")
.declareAcquiredMethod("translateHtml", "translateHtml")
.declareAcquiredMethod("put", "jio_put")
.declareAcquiredMethod('allDocs', 'jio_allDocs')
.declareAcquiredMethod("redirect", "redirect")
.declareAcquiredMethod("jio_get", "jio_get")
.allowPublicAcquisition("jio_get", this_func_link("jio_get"))
.declareAcquiredMethod("jio_put", "jio_put")
.allowPublicAcquisition("jio_put", this_func_link("jio_put"))
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")
.allowPublicAcquisition("jio_getAttachment", this_func_link("jio_getAttachment"))
.declareAcquiredMethod("jio_putAttachment", "jio_putAttachment")
.allowPublicAcquisition("jio_putAttachment", function (jio_key, part_name, blob){
this.jio_putAttachment(jio_key, part_name, new Blob());
})
.allowPublicAcquisition('setFillStyle', function () {
return setFillStyle(this);
......@@ -183,14 +195,20 @@
text_gadget = text_content_gadget;
gadget.setFillStyle();
// switchMaximizeMode(gadget);
return text_content_gadget;
})
.push(function (text_content_gadget) {
console.log('prerender');
return text_content_gadget.render({
"key": 'text_content',
"value": gadget.options.doc.data,
"portal_type": gadget.options.doc.portal_type
"jio_key": gadget.options.jio_key
});
})
.push(function () {
console.log('getelement');
return text_gadget.getElement();
})
.push(undefined, function (error) {
console.log('render subgadget error:' + error);
});
})
......
......@@ -8,20 +8,29 @@ if (Common === undefined) {
rJS(window)
.ready(function (g) {
console.log('gadget_ooffice.js ready 1');
g.props = {
save_defer: null,
handlers: {}
};
})
.ready(function (g) {
console.log('gadget_ooffice.js ready 2');
return g.getElement()
.push(function (element) {
console.log('gadget_ooffice.js ready 3');
g.props.element = element;
return {};
});
})
.declareAcquiredMethod("triggerSubmit", "triggerSubmit")
.declareAcquiredMethod("triggerMaximize", "triggerMaximize")
.declareAcquiredMethod("setFillStyle", "setFillStyle")
.declareAcquiredMethod("jio_get", "jio_get")
.declareAcquiredMethod("jio_put", "jio_put")
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")
.declareAcquiredMethod("jio_putAttachment", "jio_putAttachment")
// methods emulating Gateway used for connection with ooffice begin.
.declareMethod('ready', function () {
......@@ -42,10 +51,11 @@ if (Common === undefined) {
});
g.props.handlers.opendocument({
doc: {
title: g.props.title,
key: g.props.jio_key,
title: g.props.doc.title || "",
//fileType: undefined,
//vkey: undefined,
data: g.props.value,
data: g.props.doc.data,
permissions: {
edit: true,
download: true,
......@@ -69,7 +79,7 @@ if (Common === undefined) {
if (g.props.save_defer === null) {
g.triggerSubmit();
} else {
result[g.props.key] = url;;
result[g.props.key] = url;
g.props.save_defer.resolve(result);
g.props.save_defer = null;
}
......@@ -85,27 +95,17 @@ if (Common === undefined) {
message: ""
});
})
.declareMethod('requestHistory', function () {
})
.declareMethod('requestHistoryData', function (revision) {
})
.declareMethod('requestHistoryClose', function () {
})
.declareMethod('requestHistory', function () {})
.declareMethod('requestHistoryData', function (revision) {})
.declareMethod('requestHistoryClose', function () {})
.declareMethod('reportError', function (code, description) {
console.log(['reportError', code, description])
})
.declareMethod('setDocumentModified', function (modified) {
console.log(['reportError', code, description]);
})
.declareMethod('setDocumentModified', function (modified) {})
.declareMethod('internalMessage', function (event_name, data) {
console.log(['internalMessage', event_name, data])
})
.declareMethod('updateVersion', function () {
console.log(['internalMessage', event_name, data]);
})
.declareMethod('updateVersion', function () {})
.declareMethod('on', function (event_name, handler) {
var g = this;
g.props.handlers[event_name] = handler;
......@@ -113,31 +113,32 @@ if (Common === undefined) {
// methods emulating Gateway used for connection with ooffice end.
.declareMethod('render', function (options) {
var g = this,
documentType,
magic_to_format_map = {
console.log('begin render');
var g = this;
g.props.jio_key = options.jio_key;
return new RSVP.Queue()
.push(function() {
return g.jio_get(options.jio_key);
})
.push(function(doc) {
var magic_to_format_map = {
'DOCY;': 'text',
'XLSY;': 'spreadsheet',
'PPTY;': 'presentation'
};
if (options.value === undefined) {
documentType = options.portal_type;
g.props.value = '';
g.props.doc = doc;
if (doc.data === undefined) {
g.props.documentType = doc.portal_type.toLowerCase();
} else {
documentType = magic_to_format_map[options.value.substring(0, 5)];
if (documentType === undefined) {
g.props
.element
.getElementsByClassName(placeholder)[0]
.textContent = options.value;
g.props.documentType =
magic_to_format_map[doc.data.substring(0, 5)];
if (g.props.documentType === undefined) {
return {};
}
g.props.value = options.value;
}
g.props.title = options.title;
g.props.key = options.key || "text_content";
return g.setFillStyle()
return g.setFillStyle();
})
.push(function (size) {
var element = g.props.element,
sdkPath,
......@@ -147,7 +148,7 @@ if (Common === undefined) {
element.style.height = size.height;
element.style.width = size.width;
// g.fullscreen();
switch (documentType) {
switch (g.props.documentType) {
case 'spreadsheet':
sdkPath = 'Excel';
nameSpace = "SSE";
......@@ -279,7 +280,7 @@ if (Common === undefined) {
controllers: backboneControllers
});
Common.Locale.apply();
switch (documentType) {
switch (g.props.documentType) {
case 'spreadsheet':
require([
"spreadsheeteditor/main/app/controller/Viewport",
......@@ -355,9 +356,13 @@ if (Common === undefined) {
}
});
return {};
})
.push(undefined, function (error) {
console.log('gadget_ooffice.js redner error:' + error);
});
})
.declareMethod('getContent', function () {
var g = this;
g.props.save_defer = RSVP.defer();
......
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