diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_renderjs_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_renderjs_js.xml index fba1b56a0bf1aa2a6e1c9ddd36ebae8fdb54e4f7..989453194a25880b47766e9eb872b1c40530edf7 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_renderjs_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_renderjs_js.xml @@ -769,137 +769,81 @@ if (typeof document.contains !== \'function\') {\n }\n }\n ;/*! RenderJs */\n -/*global console*/\n /*jslint nomen: true*/\n -function loopEventListener(target, type, useCapture, callback) {\n - "use strict";\n - //////////////////////////\n - // Infinite event listener (promise is never resolved)\n - // eventListener is removed when promise is cancelled/rejected\n - //////////////////////////\n - var handle_event_callback,\n - callback_promise;\n -\n - function cancelResolver() {\n - if ((callback_promise !== undefined) &&\n - (typeof callback_promise.cancel === "function")) {\n - callback_promise.cancel();\n - }\n - }\n -\n - function canceller() {\n - if (handle_event_callback !== undefined) {\n - target.removeEventListener(type, handle_event_callback, useCapture);\n - }\n - cancelResolver();\n - }\n - function itsANonResolvableTrap(resolve, reject) {\n -\n - handle_event_callback = function (evt) {\n - evt.stopPropagation();\n - evt.preventDefault();\n - cancelResolver();\n - callback_promise = new RSVP.Queue()\n - .push(function () {\n - return callback(evt);\n - })\n - .push(undefined, function (error) {\n - if (!(error instanceof RSVP.CancellationError)) {\n - canceller();\n - reject(error);\n - }\n - });\n - };\n -\n - target.addEventListener(type, handle_event_callback, useCapture);\n - }\n - return new RSVP.Promise(itsANonResolvableTrap, canceller);\n -}\n \n /*\n * renderJs - Generic Gadget library renderer.\n * http://www.renderjs.org/documentation\n */\n (function (document, window, RSVP, DOMParser, Channel, MutationObserver,\n - Node) {\n + Node, FileReader, Blob) {\n "use strict";\n \n - var gadget_model_dict = {},\n - javascript_registration_dict = {},\n - stylesheet_registration_dict = {},\n - gadget_loading_klass,\n - loading_klass_promise,\n - renderJS,\n - Monitor;\n -\n - /////////////////////////////////////////////////////////////////\n - // Helper functions\n - /////////////////////////////////////////////////////////////////\n - function listenHashChange(gadget) {\n -\n - function extractHashAndDispatch(evt) {\n - var hash = (evt.newURL || window.location.toString()).split(\'#\')[1],\n - subhashes,\n - subhash,\n - keyvalue,\n - index,\n - options = {};\n - if (hash === undefined) {\n - hash = "";\n - } else {\n - hash = hash.split(\'?\')[0];\n - }\n + function readBlobAsDataURL(blob) {\n + var fr = new FileReader();\n + return new RSVP.Promise(function (resolve, reject) {\n + fr.addEventListener("load", function (evt) {\n + resolve(evt.target.result);\n + });\n + fr.addEventListener("error", reject);\n + fr.readAsDataURL(blob);\n + }, function () {\n + fr.abort();\n + });\n + }\n \n - function optionalize(key, value, dict) {\n - var key_list = key.split("."),\n - kk,\n - i;\n - for (i = 0; i < key_list.length; i += 1) {\n - kk = key_list[i];\n - if (i === key_list.length - 1) {\n - dict[kk] = value;\n - } else {\n - if (!dict.hasOwnProperty(kk)) {\n - dict[kk] = {};\n + function ajax(url) {\n + var xhr;\n + function resolver(resolve, reject) {\n + function handler() {\n + try {\n + if (xhr.readyState === 0) {\n + // UNSENT\n + reject(xhr);\n + } else if (xhr.readyState === 4) {\n + // DONE\n + if ((xhr.status < 200) || (xhr.status >= 300) ||\n + (!/^text\\/html[;]?/.test(\n + xhr.getResponseHeader("Content-Type") || ""\n + ))) {\n + reject(xhr);\n + } else {\n + resolve(xhr);\n }\n - dict = dict[kk];\n }\n + } catch (e) {\n + reject(e);\n }\n }\n \n - subhashes = hash.split(\'&\');\n - for (index in subhashes) {\n - if (subhashes.hasOwnProperty(index)) {\n - subhash = subhashes[index];\n - if (subhash !== \'\') {\n - keyvalue = subhash.split(\'=\');\n - if (keyvalue.length === 2) {\n -\n - optionalize(decodeURIComponent(keyvalue[0]),\n - decodeURIComponent(keyvalue[1]),\n - options);\n -\n - }\n - }\n - }\n - }\n + xhr = new XMLHttpRequest();\n + xhr.open("GET", url);\n + xhr.onreadystatechange = handler;\n + xhr.setRequestHeader(\'Accept\', \'text/html\');\n + xhr.withCredentials = true;\n + xhr.send();\n + }\n \n - if (gadget.render !== undefined) {\n - return gadget.render(options);\n + function canceller() {\n + if ((xhr !== undefined) && (xhr.readyState !== xhr.DONE)) {\n + xhr.abort();\n }\n }\n -\n - var result = loopEventListener(window, \'hashchange\', false,\n - extractHashAndDispatch),\n - event = document.createEvent("Event");\n -\n - event.initEvent(\'hashchange\', true, true);\n - event.newURL = window.location.toString();\n - window.dispatchEvent(event);\n - return result;\n + return new RSVP.Promise(resolver, canceller);\n }\n \n + var gadget_model_dict = {},\n + javascript_registration_dict = {},\n + stylesheet_registration_dict = {},\n + gadget_loading_klass,\n + loading_klass_promise,\n + renderJS,\n + Monitor,\n + isAbsoluteOrDataURL = new RegExp(\'^(?:[a-z]+:)?//|data:\', \'i\');\n \n + /////////////////////////////////////////////////////////////////\n + // Helper functions\n + /////////////////////////////////////////////////////////////////\n function removeHash(url) {\n var index = url.indexOf(\'#\');\n if (index > 0) {\n @@ -1229,8 +1173,6 @@ function loopEventListener(target, type, useCapture, callback) {\n };\n RenderJSGadget.declareAcquiredMethod("aq_reportServiceError",\n "reportServiceError");\n - RenderJSGadget.declareAcquiredMethod("aq_pleasePublishMyState",\n - "pleasePublishMyState");\n \n /////////////////////////////////////////////////////////////////\n // RenderJSGadget.allowPublicAcquisition\n @@ -1250,22 +1192,6 @@ function loopEventListener(target, type, useCapture, callback) {\n argument_list]);\n };\n }\n -\n - function pleasePublishMyState(param_list, child_gadget_scope) {\n - var new_param = {},\n - key;\n - for (key in this.state_parameter_dict) {\n - if (this.state_parameter_dict.hasOwnProperty(key)) {\n - new_param[key] = this.state_parameter_dict[key];\n - }\n - }\n - if (child_gadget_scope === undefined) {\n - throw new Error("gadget scope is mandatory");\n - }\n - new_param[child_gadget_scope] = param_list[0];\n - param_list = [new_param];\n - return this.aq_pleasePublishMyState.apply(this, param_list);\n - }\n \n /////////////////////////////////////////////////////////////////\n // RenderJSEmbeddedGadget\n @@ -1452,6 +1378,33 @@ function loopEventListener(target, type, useCapture, callback) {\n RSVP.timeout(5000)\n ]);\n }\n +\n + /////////////////////////////////////////////////////////////////\n + // privateDeclareDataUrlGadget\n + /////////////////////////////////////////////////////////////////\n + function privateDeclareDataUrlGadget(url, options, parent_gadget) {\n +\n + return new RSVP.Queue()\n + .push(function () {\n + return ajax(url);\n + })\n + .push(function (xhr) {\n + // Insert a "base" element, in order to resolve all relative links\n + // which could get broken with a data url\n + var doc = (new DOMParser()).parseFromString(xhr.responseText,\n + \'text/html\'),\n + base = doc.createElement(\'base\'),\n + blob;\n + base.href = url;\n + doc.head.insertBefore(base, doc.head.firstChild);\n + blob = new Blob([doc.documentElement.outerHTML],\n + {type: "text/html;charset=UTF-8"});\n + return readBlobAsDataURL(blob);\n + })\n + .push(function (data_url) {\n + return privateDeclareIframeGadget(data_url, options, parent_gadget);\n + });\n + }\n \n /////////////////////////////////////////////////////////////////\n // RenderJSGadget.declareGadget\n @@ -1488,6 +1441,8 @@ function loopEventListener(target, type, useCapture, callback) {\n method = privateDeclarePublicGadget;\n } else if (options.sandbox === "iframe") {\n method = privateDeclareIframeGadget;\n + } else if (options.sandbox === "dataurl") {\n + method = privateDeclareDataUrlGadget;\n } else {\n throw new Error("Unsupported sandbox options \'" +\n options.sandbox + "\'");\n @@ -1600,8 +1555,7 @@ function loopEventListener(target, type, useCapture, callback) {\n /////////////////////////////////////////////////////////////////\n renderJS.getAbsoluteURL = function (url, base_url) {\n var doc, base, link,\n - html = "<!doctype><html><head></head></html>",\n - isAbsoluteOrDataURL = new RegExp(\'^(?:[a-z]+:)?//|data:\', \'i\');\n + html = "<!doctype><html><head></head></html>";\n \n if (url && base_url && !isAbsoluteOrDataURL.test(url)) {\n doc = (new DOMParser()).parseFromString(html, \'text/html\');\n @@ -1679,10 +1633,9 @@ function loopEventListener(target, type, useCapture, callback) {\n // renderJS.declareGadgetKlass\n /////////////////////////////////////////////////////////////////\n renderJS.declareGadgetKlass = function (url) {\n - var result,\n - xhr;\n + var result;\n \n - function parse() {\n + function parse(xhr) {\n var tmp_constructor,\n key,\n parsed_html;\n @@ -1707,8 +1660,6 @@ function loopEventListener(target, type, useCapture, callback) {\n tmp_constructor.prototype.constructor = tmp_constructor;\n tmp_constructor.prototype.__path = url;\n tmp_constructor.prototype.__acquired_method_dict = {};\n - tmp_constructor.allowPublicAcquisition("pleasePublishMyState",\n - pleasePublishMyState);\n // https://developer.mozilla.org/en-US/docs/HTML_in_XMLHttpRequest\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n // https://developer.mozilla.org/en-US/docs/Code_snippets/HTML_to_DOM\n @@ -1729,51 +1680,19 @@ function loopEventListener(target, type, useCapture, callback) {\n \n return gadget_model_dict[url];\n }\n -\n - function resolver(resolve, reject) {\n - function handler() {\n - var tmp_result;\n - try {\n - if (xhr.readyState === 0) {\n - // UNSENT\n - reject(xhr);\n - } else if (xhr.readyState === 4) {\n - // DONE\n - if ((xhr.status < 200) || (xhr.status >= 300) ||\n - (!/^text\\/html[;]?/.test(\n - xhr.getResponseHeader("Content-Type") || ""\n - ))) {\n - reject(xhr);\n - } else {\n - tmp_result = parse();\n - resolve(tmp_result);\n - }\n - }\n - } catch (e) {\n - reject(e);\n - }\n - }\n -\n - xhr = new XMLHttpRequest();\n - xhr.open("GET", url);\n - xhr.onreadystatechange = handler;\n - xhr.setRequestHeader(\'Accept\', \'text/html\');\n - xhr.withCredentials = true;\n - xhr.send();\n - }\n -\n - function canceller() {\n - if ((xhr !== undefined) && (xhr.readyState !== xhr.DONE)) {\n - xhr.abort();\n - }\n - }\n \n if (gadget_model_dict.hasOwnProperty(url)) {\n // Return klass object if it already exists\n result = RSVP.resolve(gadget_model_dict[url]);\n } else {\n // Fetch the HTML page and parse it\n - result = new RSVP.Promise(resolver, canceller);\n + result = new RSVP.Queue()\n + .push(function () {\n + return ajax(url);\n + })\n + .push(function (xhr) {\n + return parse(xhr);\n + });\n }\n return result;\n };\n @@ -1799,10 +1718,9 @@ function loopEventListener(target, type, useCapture, callback) {\n required_js_list: []\n },\n i,\n - element,\n - isAbsoluteURL = new RegExp(\'^(?:[a-z]+:)?//\', \'i\');\n + element;\n \n - if (!url || !isAbsoluteURL.test(url)) {\n + if (!url || !isAbsoluteOrDataURL.test(url)) {\n throw new Error("The url should be absolute: " + url);\n }\n \n @@ -1851,39 +1769,6 @@ function loopEventListener(target, type, useCapture, callback) {\n ///////////////////////////////////////////////////\n // Bootstrap process. Register the self gadget.\n ///////////////////////////////////////////////////\n -\n - function mergeSubDict(dict) {\n - var subkey,\n - subkey2,\n - subresult2,\n - value,\n - result = {};\n - for (subkey in dict) {\n - if (dict.hasOwnProperty(subkey)) {\n - value = dict[subkey];\n - if (value instanceof Object) {\n - subresult2 = mergeSubDict(value);\n - for (subkey2 in subresult2) {\n - if (subresult2.hasOwnProperty(subkey2)) {\n - // XXX key should not have an . inside\n - if (result.hasOwnProperty(subkey + "." + subkey2)) {\n - throw new Error("Key " + subkey + "." +\n - subkey2 + " already present");\n - }\n - result[subkey + "." + subkey2] = subresult2[subkey2];\n - }\n - }\n - } else {\n - if (result.hasOwnProperty(subkey)) {\n - throw new Error("Key " + subkey + " already present");\n - }\n - result[subkey] = value;\n - }\n - }\n - }\n - return result;\n -\n - }\n \n function bootstrap() {\n var url = removeHash(window.location.href),\n @@ -1911,26 +1796,6 @@ function loopEventListener(target, type, useCapture, callback) {\n },\n reportServiceError: function (param_list) {\n letsCrash(param_list[0]);\n - },\n - pleaseRedirectMyHash: function (param_list) {\n - window.location.replace(param_list[0]);\n - },\n - pleasePublishMyState: function (param_list) {\n - var key,\n - first = true,\n - hash = "#";\n - param_list[0] = mergeSubDict(param_list[0]);\n - for (key in param_list[0]) {\n - if (param_list[0].hasOwnProperty(key)) {\n - if (!first) {\n - hash += "&";\n - }\n - hash += encodeURIComponent(key) + "=" +\n - encodeURIComponent(param_list[0][key]);\n - first = false;\n - }\n - }\n - return hash;\n }\n };\n // Stop acquisition on the last acquisition gadget\n @@ -1971,10 +1836,6 @@ function loopEventListener(target, type, useCapture, callback) {\n \n // Create the root gadget instance and put it in the loading stack\n root_gadget = new gadget_model_dict[url]();\n -\n - tmp_constructor.declareService(function () {\n - return listenHashChange(this);\n - });\n \n setAqParent(root_gadget, last_acquisition_gadget);\n \n @@ -2062,8 +1923,6 @@ function loopEventListener(target, type, useCapture, callback) {\n }\n \n tmp_constructor.prototype.__acquired_method_dict = {};\n - tmp_constructor.allowPublicAcquisition("pleasePublishMyState",\n - pleasePublishMyState);\n gadget_loading_klass = tmp_constructor;\n \n function init() {\n @@ -2216,9 +2075,6 @@ function loopEventListener(target, type, useCapture, callback) {\n //we consider current gadget is parent gadget\n //redifine last acquisition gadget\n iframe_top_gadget = true;\n - tmp_constructor.declareService(function () {\n - return listenHashChange(this);\n - });\n setAqParent(root_gadget, last_acquisition_gadget);\n } else {\n throw error;\n @@ -2267,7 +2123,8 @@ function loopEventListener(target, type, useCapture, callback) {\n }\n bootstrap();\n \n -}(document, window, RSVP, DOMParser, Channel, MutationObserver, Node)); +}(document, window, RSVP, DOMParser, Channel, MutationObserver, Node,\n + FileReader, Blob)); ]]></string> </value> </item> @@ -2337,7 +2194,7 @@ function loopEventListener(target, type, useCapture, callback) {\n </item> <item> <key> <string>actor</string> </key> - <value> <string>romain</string> </value> + <value> <string>cedric.le.ninivin</string> </value> </item> <item> <key> <string>comment</string> </key> @@ -2359,8 +2216,8 @@ function loopEventListener(target, type, useCapture, callback) {\n </tuple> <state> <tuple> - <float>1406898405.75</float> - <string>GMT</string> + <float>1440175545.67</float> + <string>UTC</string> </tuple> </state> </object> @@ -2390,7 +2247,7 @@ function loopEventListener(target, type, useCapture, callback) {\n </item> <item> <key> <string>actor</string> </key> - <value> <string>super_sven</string> </value> + <value> <string>cedric.le.ninivin</string> </value> </item> <item> <key> <string>comment</string> </key> @@ -2404,7 +2261,7 @@ function loopEventListener(target, type, useCapture, callback) {\n </item> <item> <key> <string>serial</string> </key> - <value> <string>939.51246.32089.52411</string> </value> + <value> <string>945.18151.43412.19831</string> </value> </item> <item> <key> <string>state</string> </key> @@ -2422,8 +2279,8 @@ function loopEventListener(target, type, useCapture, callback) {\n </tuple> <state> <tuple> - <float>1419342867.69</float> - <string>GMT</string> + <float>1440428114.52</float> + <string>UTC</string> </tuple> </state> </object> @@ -2445,13 +2302,11 @@ function loopEventListener(target, type, useCapture, callback) {\n <dictionary> <item> <key> <string>action</string> </key> - <value> - <none/> - </value> + <value> <string>detect_converted_file</string> </value> </item> <item> <key> <string>actor</string> </key> - <value> <string>romain</string> </value> + <value> <string>cedric.le.ninivin</string> </value> </item> <item> <key> <string>comment</string> </key> @@ -2463,7 +2318,7 @@ function loopEventListener(target, type, useCapture, callback) {\n </item> <item> <key> <string>external_processing_state</string> </key> - <value> <string>empty</string> </value> + <value> <string>converted</string> </value> </item> <item> <key> <string>serial</string> </key> @@ -2481,8 +2336,8 @@ function loopEventListener(target, type, useCapture, callback) {\n </tuple> <state> <tuple> - <float>1404995958.41</float> - <string>GMT</string> + <float>1440175328.89</float> + <string>UTC</string> </tuple> </state> </object>