Commit 961b9922 authored by Romain Courteaud's avatar Romain Courteaud

erp5_xhtml_style: 0.22

parent 8bb6f285
...@@ -2103,7 +2103,8 @@ if (typeof document.contains !== 'function') { ...@@ -2103,7 +2103,8 @@ if (typeof document.contains !== 'function') {
(new DOMParser()).parseFromString(xhr.responseText, "text/html"); (new DOMParser()).parseFromString(xhr.responseText, "text/html");
parsed_html = renderJS.parseGadgetHTMLDocument( parsed_html = renderJS.parseGadgetHTMLDocument(
tmp_constructor.__template_element, tmp_constructor.__template_element,
url url,
true
); );
for (key in parsed_html) { for (key in parsed_html) {
if (parsed_html.hasOwnProperty(key)) { if (parsed_html.hasOwnProperty(key)) {
...@@ -2208,7 +2209,8 @@ if (typeof document.contains !== 'function') { ...@@ -2208,7 +2209,8 @@ if (typeof document.contains !== 'function') {
// renderJS.parseGadgetHTMLDocument // renderJS.parseGadgetHTMLDocument
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
renderJS.parseGadgetHTMLDocument = renderJS.parseGadgetHTMLDocument =
function parseGadgetHTMLDocument(document_element, url) { function parseGadgetHTMLDocument(document_element, url,
update_relative_url) {
var settings = { var settings = {
title: "", title: "",
interface_list: [], interface_list: [],
...@@ -2218,12 +2220,20 @@ if (typeof document.contains !== 'function') { ...@@ -2218,12 +2220,20 @@ if (typeof document.contains !== 'function') {
}, },
i, i,
element, element,
element_list,
j,
url_attribute_list = ['src', 'href', 'srcset'],
url_attribute,
base_found = false; base_found = false;
if (!url || !isAbsoluteOrDataURL.test(url)) { if (!url || !isAbsoluteOrDataURL.test(url)) {
throw new Error("The url should be absolute: " + url); throw new Error("The url should be absolute: " + url);
} }
if (update_relative_url === undefined) {
update_relative_url = false;
}
if (document_element.nodeType === 9) { if (document_element.nodeType === 9) {
settings.title = document_element.title; settings.title = document_element.title;
...@@ -2264,6 +2274,25 @@ if (typeof document.contains !== 'function') { ...@@ -2264,6 +2274,25 @@ if (typeof document.contains !== 'function') {
} }
} }
} }
if (update_relative_url && (document_element.body !== null)) {
// Resolve all relativeurl configure in the dom as absolute from
// the gadget url
for (j = 0; j < url_attribute_list.length; j += 1) {
url_attribute = url_attribute_list[j];
element_list = document_element.body.querySelectorAll(
'[' + url_attribute + ']'
);
for (i = 0; i < element_list.length; i += 1) {
element = element_list[i];
element.setAttribute(url_attribute, renderJS.getAbsoluteURL(
element.getAttribute(url_attribute),
settings.path
));
}
}
}
} else { } else {
throw new Error("The first parameter should be an HTMLDocument"); throw new Error("The first parameter should be an HTMLDocument");
} }
......
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