middleware
The middleware module is accessible via the waitforit module.
Attributes
a TEMPLATE
'<html>\n <head>\n <title>Please wait</title>\n <script type="text/javascript">\n waitforit_url = "{{waitforit_url}}";\n poll_time = {{poll_time}};\n function getXMLHttpRequest() {\n var tryThese = [\n function () { return new XMLHttpRequest(); },\n function () { return new ActiveXObject(\'Msxml2.XMLHTTP\'); },\n function () { return new ActiveXObject(\'Microsoft.XMLHTTP\'); },\n function () { return new ActiveXObject(\'Msxml2.XMLHTTP.4.0\'); }\n ];\n for (var i = 0; i < tryThese.length; i++) {\n var func = tryThese[i];\n try {\n return func();\n } catch (e) {\n // pass\n }\n }\n}\n\nfunction checkStatus() {\n var xhr = getXMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState == 4) {\n statusReceived(xhr);\n }\n };\n if (waitforit_url.indexOf("?") != -1) {\n var parts = waitforit_url.split("?");\n var base = parts[0];\n var qs = "?" + parts[1];\n } else {\n var base = waitforit_url;\n var qs = \'\';\n }\n var status_url = base + "status.json" + qs;\n xhr.open("GET", status_url);\n xhr.send(null);\n}\n\nvar percent_inner = null;\n\nfunction statusReceived(req) {\n if (req.status != 200) {\n var el = document.getElementById("error-box");\n el.innerHTML = req.responseText;\n return;\n }\n var status = eval("dummy="+req.responseText);\n if (typeof status.done == "undefined") {\n // Something went wrong\n var el = document.getElementById("error-box");\n el.innerHTML = req.responseText;\n return;\n }\n if (status.done) {\n window.location.href = window.location.href + "&send";\n return;\n }\n if (status.progress.message) {\n var el = document.getElementById("progress-box");\n el.innerHTML = status.progress.message;\n }\n if (status.progress.percent) {\n if (! percent_inner) {\n var outer = document.createElement("div");\n outer.setAttribute("id", "percent-container");\n percent_inner = document.createElement("div");\n percent_inner.setAttribute("id", "percent-inner");\n //percent_inner.innerHTML = " ";\n outer.appendChild(percent_inner);\n var parent = document.getElementById("percent-box");\n parent.appendChild(outer);\n }\n percent_inner.style.width = ""+Math.round(status.progress.percent) + "%";\n }\n setTimeout("checkStatus()", poll_time*1000);\n}\n\n </script>\n <style type="text/css">\n body {\n font-family: sans-serif;\n}\ndiv#percent-container {\n border: 1px solid #000;\n width: 100%;\n height: 20px;\n}\ndiv#percent-inner {\n background-color: #999;\n height: 100%;\n}\n\n </style>\n </head>\n <body onload="checkStatus()">\n\n <h1>Please wait...</h1>\n\n <p>\n The page you have requested is taking a while to generate...\n </p>\n\n <p id="progress-box">\n </p>\n\n <p id="percent-box">\n\n <p id="error-box">\n </p>\n \n </body>\n</html>\n'
a JAVASCRIPT
'function getXMLHttpRequest() {\n var tryThese = [\n function () { return new XMLHttpRequest(); },\n function () { return new ActiveXObject(\'Msxml2.XMLHTTP\'); },\n function () { return new ActiveXObject(\'Microsoft.XMLHTTP\'); },\n function () { return new ActiveXObject(\'Msxml2.XMLHTTP.4.0\'); }\n ];\n for (var i = 0; i < tryThese.length; i++) {\n var func = tryThese[i];\n try {\n return func();\n } catch (e) {\n // pass\n }\n }\n}\n\nfunction checkStatus() {\n var xhr = getXMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState == 4) {\n statusReceived(xhr);\n }\n };\n if (waitforit_url.indexOf("?") != -1) {\n var parts = waitforit_url.split("?");\n var base = parts[0];\n var qs = "?" + parts[1];\n } else {\n var base = waitforit_url;\n var qs = \'\';\n }\n var status_url = base + "status.json" + qs;\n xhr.open("GET", status_url);\n xhr.send(null);\n}\n\nvar percent_inner = null;\n\nfunction statusReceived(req) {\n if (req.status != 200) {\n var el = document.getElementById("error-box");\n el.innerHTML = req.responseText;\n return;\n }\n var status = eval("dummy="+req.responseText);\n if (typeof status.done == "undefined") {\n // Something went wrong\n var el = document.getElementById("error-box");\n el.innerHTML = req.responseText;\n return;\n }\n if (status.done) {\n window.location.href = window.location.href + "&send";\n return;\n }\n if (status.progress.message) {\n var el = document.getElementById("progress-box");\n el.innerHTML = status.progress.message;\n }\n if (status.progress.percent) {\n if (! percent_inner) {\n var outer = document.createElement("div");\n outer.setAttribute("id", "percent-container");\n percent_inner = document.createElement("div");\n percent_inner.setAttribute("id", "percent-inner");\n //percent_inner.innerHTML = " ";\n outer.appendChild(percent_inner);\n var parent = document.getElementById("percent-box");\n parent.appendChild(outer);\n }\n percent_inner.style.width = ""+Math.round(status.progress.percent) + "%";\n }\n setTimeout("checkStatus()", poll_time*1000);\n}\n'
a CSS
'body {\n font-family: sans-serif;\n}\ndiv#percent-container {\n border: 1px solid #000;\n width: 100%;\n height: 20px;\n}\ndiv#percent-inner {\n background-color: #999;\n height: 100%;\n}\n'
Functions
Classes
C WaitForIt(...) ...
This class contains 10 members.
See the source for more information.