AJAX
Der wichtigste Teil in dieser Anwendung besteht in der Interaktion mit Drupal. Die Daten werden per XML gesendet und mittels Javascript in die entsprechende Objekte eingefügt.
Drupal XML Interaktion: ajax.js
1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 2526 27 28 29 3031 32 33 34 3536 37 38 39 4041 42 43 44 4546 47 48 49 5051 52 53 54 5556 57 58 59 6061 62 63 64 6566 67 68 69 7071 72 73 74 7576 77 78 79 8081 82 83 84 8586 87 88 89 9091 92 93 94 9596 97 98 99 100101 102 103 104 105106 107 108 109 110111 112 113 114 115116 117 118 119 120121 122 123 124 125126 127 128 129 130131 132 133 134 135136 137 138 139 140141 142 143 144 145146 147 148 149 150151 152 153 154 155156 157 158 159 160161 162 163 164 165166 167 168 | window.addEventListener("load", checkAuth, false); window.addEventListener("load", reloadTags, false); var actual_uname = ""; <strong>var base_url = 'http://192.168.0.11/linked/'; /* your drupal base path */</strong> var auth_request = createXMLHttpRequest();if (!auth_request) { alert('Cannot create XMLHTTP instance. Appz will not work ...'); } var tags_request = createXMLHttpRequest(); var post_request = createXMLHttpRequest();interval_auth = window.setInterval(function() { checkAuth(); }, 57000); interval_tags = window.setInterval(function() { reloadTags(); }, 25000); function createXMLHttpRequest() { try { return new XMLHttpRequest(); } catch(e) {} try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} alert("XMLHttpRequest not supported"); return null; } function doLogin() { var uname=document.getElementById('loginname'); var pwd=document.getElementById('loginpwd'); } function postData() { var url=document.getElementById('urllocation'); var site=document.getElementById('urltitle'); var tags=document.getElementById('usertags'); /*var share=document.getElementById('shared');*/ parameters = "url="+ encodeURI( url.value ) + "&title=" + encodeURI( site.value ) + "&uname=" + actual_uname + "&tags=" + tags.value; /* + "&share=" + share.value + "&tags=" +tags.value;*/ //Send the proper header information along with the request // normal HTTP post .. // let user wait until posted .. progress meter .. url = base_url + 'postdata.php?'; window.location = url + parameters; /* url = base_url + 'postdata.php'; post_request.onreadystatechange = checkResponse; post_request.open('POST', url, true); post_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); post_request.setRequestHeader("Content-length", parameters.length); post_request.setRequestHeader("Connection", "close"); post_request.send(parameters);*/ }function reloadTags() { parameters = ""; url = base_url + 'tagdata.php'; tags_request.onreadystatechange = refreshTags; tags_request.open('GET', url + parameters, true); tags_request.send(null); } function checkAuth() { parameters = ""; url = base_url + 'checkauth.php'; auth_request.onreadystatechange = setUname; auth_request.open('GET', url + parameters, true); auth_request.send(null); } function refreshTags() { if (tags_request.readyState != 4) { return; } if (tags_request.readyState == 4) { if (tags_request.status == 200) { var aBox = document.getElementById("dyntags"); var xmldoc = tags_request.responseXML; var markers = xmldoc.getElementsByTagName('tag'); for (var i = 0; i < markers.length; i++) { var title = markers[i].getAttribute("title"); if (document.getElementById(title)) {aBox.removeChild(document.getElementById(title));} var label = document.createElement("label"); label.setAttribute("value",title); label.setAttribute("id",title); aBox.appendChild(label); } } } } function setUname() { if (auth_request.readyState != 4) { return; } if (auth_request.readyState == 4) { var serverResponse = auth_request.responseText; if (auth_request.status == 200) { var aBox = document.getElementById("uname"); var bBox = document.getElementById("srvresponse"); var xmldoc = auth_request.responseXML; var markers = xmldoc.getElementsByTagName('response'); for (var i = 0; i < markers.length; i++) { var title = markers[i].getAttribute("title"); actual_uname = title; aBox.value = title; if (actual_uname != 0) { bBox.value = "Authenticated."; } else { bBox.value = "Please login first .. add bug here"; } } } } } function checkResponse() { if (auth_request.readyState != 4) { return; } if (auth_request.readyState == 4) { var serverResponse = auth_request.responseText; if (auth_request.status == 200) { var aBox = document.getElementById("srvresponse"); var xmldoc = auth_request.responseXML; var markers = xmldoc.getElementsByTagName('response'); for (var i = 0; i < markers.length; i++) { var title = markers[i].getAttribute("title"); aBox.value = title; } } } } function aboutme() { var url=document.getElementById('urllocation'); url.value = window.content.document.location; var site=document.getElementById('urltitle'); site.value = window.content.document.title; var win = window.open("chrome://fabforge/content/about.xul", "aboutMyExtension", "chrome,centerscreen");} function tagthis() { var url=document.getElementById('urllocation'); url.value = window.content.document.location; var site=document.getElementById('urltitle'); site.value = window.content.document.title; /*var win = window.open("chrome://fabforge/content/post.xul", "aboutMyExtension", "chrome,centerscreen"); win.document.getElementById('urllocation').value = window.content.document.location;*/ <a href="/de/freelinking/OpenWindow" class="freelinking">OpenWindow</a>(); }// Called once when the dialog displays function onLoad() { window.sizeToContent(); // Use the arguments passed to us by the caller document.getElementById("urllocation").value = window.arguments[0].inn.name; document.getElementById("urltitle").value = window.arguments[0].inn.site; } function <a href="/de/freelinking/OpenWindow" class="freelinking">OpenWindow</a>() { var url=document.getElementById('urllocation'); var site=document.getElementById('urltitle'); var params = {inn:{name:url.value,site:site.value}, out:null}; window.openDialog("chrome://fabforge/content/post.xul", "","chrome, dialog, modal, resizable=yes", params).focus(); if (params.out) { // User clicked ok. Process changed arguments; e.g. write them to disk or whatever } else { // User clicked cancel. Typically, nothing is done here. } };function doSave(){ /*onOK();*/ postData(); //doSomething() return true;} // Called once if and only if the user clicks OK function onOK() { // Return the changed arguments. // Notice if user clicks cancel, window.arguments[0].out remains null // because this function is never called window.arguments[0].out = {name:document.getElementById("name").value}; window.arguments[1].out = {site:document.getElementById("site").value}; /*return true;*/ }function doCancel(){ return true; } |
Gruppen: