diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_erp5_configurator_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_erp5_configurator_js.js index 85c369b6426ad2768cc0115e602801f9e4784561..fcd9332668dc0f6b68620de9de82347c2f7fd5f4 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_erp5_configurator_js.js +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_erp5_configurator_js.js @@ -11,7 +11,8 @@ return RSVP.all([ gadget.getSetting("portal_type"), gadget.getSetting("erp5_attachment_synchro", undefined), - gadget.getSetting("default_view_reference", "jio_view") + gadget.getSetting("default_view_reference", "jio_view"), + gadget.getSetting("storage_attachment_issue", false) ]); }) .push(function (result) { @@ -19,6 +20,7 @@ portal_type = result[0], attachment_synchro = result[1] !== undefined, extended_attachment_url = result[1]; + configuration = { type: "replicate", // XXX This drop the signature lists... @@ -41,15 +43,12 @@ check_remote_creation: true, check_remote_deletion: true, local_sub_storage: { - type: "fix_local", + type: "query", sub_storage: { - type: "query", + type: "uuid", sub_storage: { - type: "uuid", - sub_storage: { - type: "indexeddb", - database: "officejs-erp5" - } + type: "indexeddb", + database: "officejs-erp5" } } }, @@ -72,17 +71,28 @@ sub_storage: { type: "erp5", url: (new URI("hateoas")) - .absoluteTo(erp5_url) - .toString(), + .absoluteTo(erp5_url) + .toString(), default_view_reference: result[2] } } }; + // This is only for onlyoffice + if (extended_attachment_url === "/{+id}/Document_downloadForOnlyOfficeApp") { + configuration = { + type: "fix_local", + is_fixed: result[3], + sub_storage: configuration + }; + } return gadget.setSetting('jio_storage_description', configuration); }) .push(function () { return gadget.setSetting('jio_storage_name', "ERP5"); }) + .push(function () { + return gadget.setSetting('storage_attachment_issue', true); + }) .push(function () { return gadget.setGlobalSetting('erp5_url', erp5_url); }) diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_erp5_configurator_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_erp5_configurator_js.xml index e15927a376ce747be36c93411a1c08ee40f03631..7e893147381a84eb0f5576d40f2da18d6c58f051 100644 --- a/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_erp5_configurator_js.xml +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/gadget_officejs_page_jio_erp5_configurator_js.xml @@ -273,7 +273,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>960.25496.14411.56081</string> </value> + <value> <string>960.32726.32486.40567</string> </value> </item> <item> <key> <string>state</string> </key> @@ -291,7 +291,7 @@ </tuple> <state> <tuple> - <float>1498834693.92</float> + <float>1499160764.83</float> <string>UTC</string> </tuple> </state> diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/jio_fixstorage_js.js b/bt5/erp5_officejs/PathTemplateItem/web_page_module/jio_fixstorage_js.js new file mode 100644 index 0000000000000000000000000000000000000000..f631c23649ba0d6193bf93df2c3a36e7b15a7331 --- /dev/null +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/jio_fixstorage_js.js @@ -0,0 +1,96 @@ +/*globals jIO, Blob, Rusha, RSVP, URI*/ +/*jslint indent: 2, maxlen: 80, nomen: true*/ +(function (jIO, Blob, Rusha, RSVP, URI) { + "use strict"; + + var rusha = new Rusha(), stringify = jIO.util.stringify; + + function CompatibilityStorage(spec) { + this._sub_storage = jIO.createJIO(spec.sub_storage); + this._is_fixed = spec.is_fixed; + } + + CompatibilityStorage.prototype.get = function () { + return this._sub_storage.get.apply(this._sub_storage, arguments); + }; + + CompatibilityStorage.prototype.put = function () { + return this._sub_storage.put.apply(this._sub_storage, arguments); + }; + + CompatibilityStorage.prototype.post = function () { + return this._sub_storage.post.apply(this._sub_storage, arguments); + }; + + CompatibilityStorage.prototype.remove = function () { + return this._sub_storage.remove.apply(this._sub_storage, arguments); + }; + + CompatibilityStorage.prototype.hasCapacity = function () { + return this._sub_storage.hasCapacity.apply(this._sub_storage, arguments); + }; + + CompatibilityStorage.prototype.repair = function () { + var context = this; + // Here fix the local storage for some cases. + + if (!context._is_fixed) { + return context._sub_storage.allDocs({ + select_list: ["content_type"] + }) + .push(function (result) { + var i, promise_list = [], doc_list = result.data.rows; + for (i = 0; i < result.data.total_rows; i += 1) { + if (doc_list[i].value.content_type !== undefined && + !doc_list[i].value.content_type.startsWith("application/x-asc")) { + promise_list.push( + context._sub_storage.remove(doc_list[i].id) + ); + } + } + return RSVP.all(promise_list); + }) + .push(function () { + return context._sub_storage.repair.apply( + context._sub_storage, arguments + ); + }); + } + }; + + CompatibilityStorage.prototype.allAttachments = function (doc_id) { + return this._sub_storage.allAttachments.apply( + this._sub_storage, + arguments + ); + }; + + CompatibilityStorage.prototype.getAttachment = function (doc_id) { + var context = this; + return context._sub_storage.getAttachment.apply( + this._sub_storage, + arguments + ); + }; + + CompatibilityStorage.prototype.putAttachment = function () { + return this._sub_storage.putAttachment.apply(this._sub_storage, arguments); + }; + + CompatibilityStorage.prototype.removeAttachment = function () { + return this._sub_storage.removeAttachment.apply( + this._sub_storage, + arguments + ); + }; + + CompatibilityStorage.prototype.buildQuery = function () { + return this._sub_storage.buildQuery.apply( + this._sub_storage, + arguments + ); + }; + + jIO.addStorage('fix_local', CompatibilityStorage); + +}(jIO, Blob, Rusha, RSVP, URI)); \ No newline at end of file diff --git a/bt5/erp5_officejs/PathTemplateItem/web_page_module/jio_fixstorage_js.xml b/bt5/erp5_officejs/PathTemplateItem/web_page_module/jio_fixstorage_js.xml new file mode 100644 index 0000000000000000000000000000000000000000..3665c7acaac229232e2e9a36b790f6d95500d8f7 --- /dev/null +++ b/bt5/erp5_officejs/PathTemplateItem/web_page_module/jio_fixstorage_js.xml @@ -0,0 +1,321 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Web Script" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Access_contents_information_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + <string>Owner</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Add_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Change_local_roles_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Modify_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_View_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + <string>Owner</string> + </tuple> + </value> + </item> + <item> + <key> <string>content_md5</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/javascript</string> </value> + </item> + <item> + <key> <string>default_reference</string> </key> + <value> <string>jio_fixstorage.js</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>jio_fixstorage_js</string> </value> + </item> + <item> + <key> <string>language</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Web Script</string> </value> + </item> + <item> + <key> <string>short_title</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>version</string> </key> + <value> <string>001</string> </value> + </item> + <item> + <key> <string>workflow_history</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary> + <item> + <key> <string>document_publication_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>edit_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>processing_status_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>publish</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1498817425.15</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published</string> </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>edit</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>960.25570.27528.1382</string> </value> + </item> + <item> + <key> <string>state</string> </key> + <value> <string>current</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1499160625.83</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_processing_state</string> </key> + <value> <string>empty</string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>0.0.0.0</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1498814308.48</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> +</ZopeData>