webmcp

annotate framework/js/partialload.js @ 57:6a830c1479b0

Removed doubled "end" leading to parsing error
author bsw
date Sun Dec 18 22:14:03 2011 +0100 (2011-12-18)
parents 89030e955845
children
rev   line source
jbe/bsw@11 1
jbe/bsw@11 2 partialload_queue = [];
jbe/bsw@11 3 partialload_queueRPos = 0;
jbe/bsw@11 4 partialload_queueWPos = 0;
jbe/bsw@11 5
jbe/bsw@11 6 function partialload_getFormKeyValuePairs(form) {
jbe/bsw@11 7 var result = {};
jbe/bsw@11 8 for (var i=0; i<form.elements.length; i++) {
jbe/bsw@11 9 var inputElement = form.elements[i];
jbe/bsw@11 10 var key = inputElement.name;
jbe/bsw@11 11 var value = inputElement.value;
jbe/bsw@11 12 if (result[key] == null) result[key] = value;
jbe/bsw@11 13 else if (typeof(result[key]) == "object") {
jbe/bsw@11 14 result[key][result[key].length] = value;
jbe/bsw@11 15 } else {
jbe/bsw@11 16 result[key] = [result[key], value];
jbe/bsw@11 17 }
jbe/bsw@11 18 }
jbe/bsw@11 19 return result;
jbe/bsw@11 20 }
jbe/bsw@11 21
jbe/bsw@11 22 function partialload_encodeFormData(params) {
jbe/bsw@11 23 var result = "";
jbe/bsw@11 24 for (var key in params) {
jbe/bsw@11 25 var value = params[key];
jbe@54 26 if (value instanceof Array) {
jbe/bsw@11 27 var i;
jbe/bsw@11 28 for (i=0; i<value.length; i++) {
jbe/bsw@11 29 if (result != "") result += "&";
jbe@54 30 result += encodeURIComponent(key) + "=" + encodeURIComponent(value[i].toString());
jbe/bsw@11 31 }
jbe@54 32 } else {
jbe@54 33 if (result != "") result += "&";
jbe@54 34 result += encodeURIComponent(key) + "=" + encodeURIComponent(value.toString());
jbe/bsw@11 35 }
jbe/bsw@11 36 }
jbe/bsw@11 37 return result;
jbe/bsw@11 38 }
jbe/bsw@11 39
jbe/bsw@11 40 function partialload_addFormDataToUrl(url, params) {
jbe/bsw@11 41 if (params != null && typeof(params) != "string") {
jbe/bsw@11 42 params = partialload_encodeFormData(params);
jbe/bsw@11 43 }
jbe/bsw@11 44 if (params != null) {
jbe/bsw@11 45 if (url.search(/\?/) >= 0) {
jbe/bsw@11 46 if (url.search(/&$/) >= 0) {
jbe/bsw@11 47 url = url + params;
jbe/bsw@11 48 } else {
jbe/bsw@11 49 url = url + "&" + params;
jbe/bsw@11 50 }
jbe/bsw@11 51 } else {
jbe/bsw@11 52 url = url + "?" + params;
jbe/bsw@11 53 }
jbe/bsw@11 54 }
jbe/bsw@11 55 return url;
jbe/bsw@11 56 }
jbe/bsw@11 57
jbe/bsw@11 58 function partialload_mergeEncodedFormData(data1, data2) {
jbe/bsw@11 59 if (data2 == null || data2 == "") return data1;
jbe/bsw@11 60 if (data1 == null || data1 == "") return data2;
jbe/bsw@11 61 return data1 + "&" + data2;
jbe/bsw@11 62 }
jbe/bsw@11 63
jbe/bsw@11 64 function partialload_startNextRequest() {
jbe/bsw@11 65 var entry = partialload_queue[partialload_queueRPos++];
jbe/bsw@11 66 var req = new XMLHttpRequest();
jbe/bsw@11 67 req.open(entry.method, entry.url, true);
jbe/bsw@11 68 req.onreadystatechange = function() {
jbe/bsw@11 69 if (req.readyState == 4) {
jbe/bsw@11 70 if (req.status == 200) {
jbe/bsw@11 71 if (entry.successHandler != null) entry.successHandler(req.responseText);
jbe/bsw@11 72 } else {
jbe/bsw@11 73 if (entry.failureHandler != null) entry.failureHandler();
jbe/bsw@11 74 }
jbe/bsw@11 75 if (partialload_queue[partialload_queueRPos]) {
jbe/bsw@11 76 partialload_startNextRequest();
jbe/bsw@11 77 } else {
jbe/bsw@11 78 partialload_queue = [];
jbe/bsw@11 79 partialload_queueRPos = 0;
jbe/bsw@11 80 partialload_queueWPos = 0;
jbe/bsw@11 81 }
jbe/bsw@11 82 }
jbe/bsw@11 83 }
jbe/bsw@11 84 if (entry.data) {
jbe/bsw@11 85 req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
jbe/bsw@11 86 }
jbe/bsw@11 87 req.send(entry.data);
jbe/bsw@11 88 }
jbe/bsw@11 89
jbe/bsw@11 90 function queuedHttpRequest(
jbe/bsw@11 91 url_or_form,
jbe/bsw@11 92 urlParams,
jbe/bsw@11 93 postParams,
jbe/bsw@11 94 successHandler,
jbe/bsw@11 95 failureHandler
jbe/bsw@11 96 ) {
jbe/bsw@11 97 var method;
jbe/bsw@11 98 var data = null;
jbe/bsw@11 99 if (typeof(postParams) == "string") {
jbe/bsw@11 100 data = postParams;
jbe/bsw@11 101 } else if (postParams != null) {
jbe/bsw@11 102 data = partialload_encodeFormData(postParams);
jbe/bsw@11 103 }
jbe/bsw@11 104 var url;
jbe/bsw@11 105 if (typeof(url_or_form) == "object") {
jbe/bsw@11 106 // form element given
jbe/bsw@11 107 var form = url_or_form;
jbe/bsw@11 108 url = partialload_addFormDataToUrl(form.action, urlParams);
jbe/bsw@11 109 var dataFromForm = partialload_encodeFormData(
jbe/bsw@11 110 partialload_getFormKeyValuePairs(form)
jbe/bsw@11 111 );
jbe/bsw@11 112 if (form.method != null && form.method.search(/^POST$/i) >= 0) {
jbe/bsw@11 113 method = "POST";
jbe/bsw@11 114 data = partialload_mergeEncodedFormData(data, dataFromForm);
jbe/bsw@11 115 } else {
jbe/bsw@11 116 method = (postParams == NULL) ? "GET" : "POST";
jbe/bsw@11 117 url = partialload_addFormDataToUrl(url, dataFromForm);
jbe/bsw@11 118 }
jbe/bsw@11 119 } else {
jbe/bsw@11 120 // URL given
jbe/bsw@11 121 url = partialload_addFormDataToUrl(url_or_form, urlParams);
jbe/bsw@11 122 if (postParams == null) {
jbe/bsw@11 123 method = "GET";
jbe/bsw@11 124 } else {
jbe/bsw@11 125 method = "POST";
jbe/bsw@11 126 if (typeof(postParams) == "string") {
jbe/bsw@11 127 data = postParams;
jbe/bsw@11 128 } else {
jbe/bsw@11 129 data = partialload_encodeFormData(postParams);
jbe/bsw@11 130 }
jbe/bsw@11 131 }
jbe/bsw@11 132 }
jbe/bsw@11 133 partialload_queue[partialload_queueWPos++] = {
jbe/bsw@11 134 method: method,
jbe/bsw@11 135 url: url,
jbe/bsw@11 136 data: data,
jbe/bsw@11 137 successHandler: successHandler,
jbe/bsw@11 138 failureHandler: failureHandler
jbe/bsw@11 139 };
jbe/bsw@11 140 if (partialload_queueRPos == 0) {
jbe/bsw@11 141 partialload_startNextRequest();
jbe/bsw@11 142 }
jbe/bsw@11 143 }
jbe/bsw@11 144
jbe/bsw@11 145 function setHtmlContent(node, htmlWithScripts) {
jbe/bsw@11 146 var uniquePrefix = "placeholder" + Math.floor(Math.random()*10e16) + "_";
jbe/bsw@11 147 var i = 0;
jbe/bsw@11 148 var scripts = [];
jbe/bsw@11 149 var htmlWithPlaceholders = "";
jbe/bsw@11 150 // NOTE: This function can not handle CDATA blocks at random positions.
jbe/bsw@11 151 htmlWithPlaceholders = htmlWithScripts.replace(
jbe/bsw@11 152 /<script[^>]*>(.*?)<\/script>/ig,
jbe/bsw@11 153 function(all, inside) {
jbe/bsw@11 154 scripts[i] = inside;
jbe/bsw@11 155 var placeholder = '<span id="' + uniquePrefix + i + '"></span>';
jbe/bsw@11 156 i++;
jbe/bsw@11 157 return placeholder;
jbe/bsw@11 158 }
jbe/bsw@11 159 )
jbe/bsw@11 160 node.innerHTML = htmlWithPlaceholders;
jbe/bsw@11 161 var documentWriteBackup = document.write;
jbe/bsw@11 162 var documentWritelnBackup = document.writeln;
jbe/bsw@11 163 var output;
jbe/bsw@11 164 document.write = function(str) { output += str; }
jbe/bsw@11 165 document.writeln = function(str) { output += str + "\n"; }
jbe/bsw@11 166 for (i=0; i<scripts.length; i++) {
jbe/bsw@11 167 var placeholderNode = document.getElementById(uniquePrefix + i);
jbe/bsw@11 168 output = "";
jbe/bsw@11 169 eval(scripts[i]);
jbe/bsw@11 170 if (output != "") {
jbe/bsw@11 171 placeholderNode.innerHTML = output;
jbe/bsw@11 172 while (placeholderNode.childNodes.length > 0) {
jbe/bsw@11 173 var childNode = placeholderNode.childNodes[0];
jbe/bsw@11 174 placeholderNode.removeChild(childNode);
jbe/bsw@11 175 placeholderNode.parentNode.insertBefore(childNode, placeholderNode);
jbe/bsw@11 176 }
jbe/bsw@11 177 }
jbe/bsw@11 178 placeholderNode.parentNode.removeChild(placeholderNode);
jbe/bsw@11 179 }
jbe/bsw@11 180 document.write = documentWriteBackup;
jbe/bsw@11 181 document.writeln = documentWritelnBackup;
jbe/bsw@11 182 }
jbe/bsw@11 183
jbe/bsw@11 184 function partialLoad(
jbe/bsw@11 185 node,
jbe/bsw@11 186 tempLoadingContent,
jbe/bsw@11 187 failureContent,
jbe/bsw@11 188 url_or_form,
jbe/bsw@11 189 urlParams,
jbe/bsw@11 190 postParams,
jbe/bsw@11 191 successHandler,
jbe/bsw@11 192 failureHandler
jbe/bsw@11 193 ) {
jbe/bsw@11 194 if (typeof(node) == "string") node = document.getElementById(node);
jbe/bsw@11 195 if (tempLoadingContent != null) setHtmlContent(node, tempLoadingContent);
jbe/bsw@11 196 queuedHttpRequest(
jbe/bsw@11 197 url_or_form,
jbe/bsw@11 198 urlParams,
jbe/bsw@11 199 postParams,
jbe/bsw@11 200 function(response) {
jbe/bsw@11 201 setHtmlContent(node, response);
jbe/bsw@11 202 if (successHandler != null) successHandler();
jbe/bsw@11 203 },
jbe/bsw@11 204 function() {
jbe/bsw@11 205 if (failureContent != null) setHtmlContent(node, failureContent);
jbe/bsw@11 206 if (failureHandler != null) failureHandler();
jbe/bsw@11 207 }
jbe/bsw@11 208 );
jbe/bsw@11 209 }
jbe/bsw@11 210
jbe/bsw@11 211 function partialMultiLoad(
jbe/bsw@11 212 mapping,
jbe/bsw@11 213 tempLoadingContents,
jbe/bsw@11 214 failureContents,
jbe/bsw@11 215 url_or_form,
jbe/bsw@11 216 urlParams,
jbe/bsw@11 217 postParams,
jbe/bsw@11 218 successHandler,
jbe/bsw@11 219 failureHandler
jbe/bsw@11 220 ) {
jbe/bsw@11 221 if (mapping instanceof Array) {
jbe/bsw@11 222 var mappingHash = {}
jbe/bsw@11 223 for (var i=0; i<mapping.length; i++) {
jbe/bsw@11 224 mappingHash[mapping[i]] = mapping[i];
jbe/bsw@11 225 }
jbe/bsw@11 226 mapping = mappingHash;
jbe/bsw@11 227 }
jbe/bsw@11 228 if (typeof(tempLoadingContents) == "string") {
jbe/bsw@11 229 for (var key in mapping) {
jbe/bsw@11 230 var node = key;
jbe/bsw@11 231 if (typeof(node) == "string") node = document.getElementById(node);
jbe/bsw@11 232 setHtmlContent(node, tempLoadingContents);
jbe/bsw@11 233 }
jbe/bsw@11 234 } else if (tempLoadingContents != null) {
jbe/bsw@11 235 for (var key in tempLoadingContents) {
jbe/bsw@11 236 var node = key;
jbe/bsw@11 237 if (typeof(node) == "string") node = document.getElementById(node);
jbe/bsw@11 238 setHtmlContent(node, tempLoadingContents[key]);
jbe/bsw@11 239 }
jbe/bsw@11 240 }
jbe/bsw@11 241 queuedHttpRequest(
jbe/bsw@11 242 url_or_form,
jbe/bsw@11 243 urlParams,
jbe/bsw@11 244 postParams,
jbe/bsw@11 245 function(response) {
jbe/bsw@11 246 var data = eval("(" + response + ")");
jbe/bsw@11 247 for (var key in mapping) {
jbe/bsw@11 248 var node = key;
jbe/bsw@11 249 if (typeof(node) == "string") node = document.getElementById(node);
jbe/bsw@11 250 setHtmlContent(node, data[mapping[key]]);
jbe/bsw@11 251 }
jbe/bsw@11 252 if (successHandler != null) successHandler();
jbe/bsw@11 253 },
jbe/bsw@11 254 function() {
jbe/bsw@11 255 if (typeof(failureContents) == "string") {
jbe/bsw@11 256 for (var key in mapping) {
jbe/bsw@11 257 var node = key;
jbe/bsw@11 258 if (typeof(node) == "string") node = document.getElementById(node);
jbe/bsw@11 259 setHtmlContent(node, failureContents);
jbe/bsw@11 260 }
jbe/bsw@11 261 } else if (failureContents != null) {
jbe/bsw@11 262 for (var key in failureContents) {
jbe/bsw@11 263 var node = key;
jbe/bsw@11 264 if (typeof(node) == "string") node = document.getElementById(node);
jbe/bsw@11 265 setHtmlContent(node, failureContents[key]);
jbe/bsw@11 266 }
jbe/bsw@11 267 }
jbe/bsw@11 268 if (failureHandler != null) failureHandler();
jbe/bsw@11 269 }
jbe/bsw@11 270 );
jbe/bsw@11 271 }

Impressum / About Us