Commit 3b8bb434 authored by Boris Kocherov's avatar Boris Kocherov

erp5_officejs_ooffice: integrate jio inside ooffice

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