aboutsummaryrefslogtreecommitdiffstats
path: root/js/lib_xmlloader.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/lib_xmlloader.js')
-rw-r--r--js/lib_xmlloader.js150
1 files changed, 150 insertions, 0 deletions
diff --git a/js/lib_xmlloader.js b/js/lib_xmlloader.js
new file mode 100644
index 00000000000..14fd3ee8af1
--- /dev/null
+++ b/js/lib_xmlloader.js
@@ -0,0 +1,150 @@
+/**
+* ownCloud - ajax frontend
+*
+* @author Robin Appelman
+* @copyright 2010 Robin Appelman icewind1991@gmail.com
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either
+* version 3 of the License, or any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+
+var READY_STATE_UNINITIALIZED=0;
+var READY_STATE_LOADING=1;
+var READY_STATE_LOADED=2;
+var READY_STATE_INTERACTIVE=3;
+var READY_STATE_COMPLETE=4;
+
+/**
+* Class for loaded browser independant xml loading
+*/
+OCXMLLoader=function(){
+ this.errorCallBack=this.defaultError;
+}
+
+OCXMLLoader.prototype={
+ contentType:'',
+ method:'GET',
+ request:'',
+ callBack:null,
+ async:true,
+
+ /**
+ * Loads an XML document
+ * @param string url
+ * @param string request
+ * @none
+ */
+ load:function(url,request){
+ request=(request)?request:"";
+ method=this.method;
+ contentType=(!this.contentType && method=="POST")?"application/x-www-form-urlencoded":this.contentType;
+ if(window.XDomainRequest){
+ req=new XDomainRequest();
+ }else if(window.XMLHttpRequest){
+ req=new XMLHttpRequest();
+ }else if(window.ActiveXObject){
+ req=new ActiveXObject('Microsoft.XMLHTTP')
+ }
+ if (req){
+ try{
+ var loader=this;
+ req.onreadystatechange=function(){
+ loader.onReadyState.call(loader,req)
+ }
+ req.open(method,url,this.async);
+ if (contentType){
+ req.setRequestHeader("Content-Type",contentType);
+ }
+ if(method=="POST"){
+ req.setRequestHeader("Content-length", request.length);
+ req.setRequestHeader("Connection", "close");
+ }
+ req.send(request);
+ }catch (err){
+ this.errorCallBack(req);
+ }
+ }
+ },
+ onReadyState:function(req){
+ var ready=req.readyState;
+ if (ready==READY_STATE_COMPLETE){
+ var HttpStatus=req.status;
+ if (HttpStatus==200 || HttpStatus==0){
+ //alert("response: "+this.req.responseText);
+ this.callBack(req);
+ }else{
+ this.errorCallBack(req);
+ }
+ }
+ },
+ defaultError:function(req){
+ alert("Error fetching data!"
+ +"\n\n<br/><br/>ReadyState: "+req.readyState
+ +"\n<br/>Status: "+req.status
+ +"\n<br/>Headers: "+req.getAllResponseHeaders()
+ +"\n<br/>File: "+req.url
+ +"\n<br/>Response: "+req.responseText);
+ },
+ /**
+ * Sets the request method
+ * @param string method
+ * @none
+ */
+ setMethod:function(method){
+ this.method=method;
+ },
+ /**
+ * Sets the content type
+ * @param string type
+ * @none
+ */
+ setType:function(type){
+ this.type=type;
+ },
+ /**
+ * Sets the callback function
+ * @param function callBack
+ * @none
+ */
+ setCallBack:function(callBack){
+ this.callBack=callBack;
+ },
+ /**
+ * Sets the error callback function
+ * @param function errorCallBack
+ * @none
+ */
+ setErrorCallBack:function(errorCallBack){
+ this.errorCallBack=errorCallBack;
+ }
+}
+
+testClass=function(){
+}
+
+testClass.prototype={
+ testFunc:function(){
+ this.test="test";
+ test=new OCXMLLoader(this);
+ test.setCallBack(this.callBack);
+ test.load(parseUri('%root%/data/sites/index.xml'));
+ },
+ callBack:function(req){
+ alert(this.test);
+ alert(req.responseText);
+ }
+}
+test=new testClass()
+test.testFunc
+// mainLoadStack.append(test.testFunc,test);