1/* Lib */ 2 3var recommend_ajax_call = 'plugin_recommend'; 4 5function sack_form(form, fnc) { 6 var ajax = new sack(DOKU_BASE + 'lib/exe/ajax.php'); 7 ajax.setVar('call', recommend_ajax_call); 8 function serializeByTag(tag) { 9 var inps = form.getElementsByTagName(tag); 10 for (var inp in inps) { 11 if (inps[inp].name) { 12 ajax.setVar(inps[inp].name, inps[inp].value); 13 } 14 } 15 } 16 serializeByTag('input'); 17 serializeByTag('textarea'); 18 ajax.onCompletion = fnc; 19 ajax.runAJAX(); 20 return false; 21} 22 23function bind(fnc, val) { 24 return function () { 25 return fnc(val); 26 }; 27} 28 29function change_form_handler(forms, handler) { 30 if (!forms) return; 31 for (var formid in forms) { 32 var form = forms[formid]; 33 form.onsubmit = bind(handler, form); 34 } 35} 36 37/* Recommend */ 38 39function recommend_box(content) { 40 var div = $('recommend_box'); 41 if (!div) { 42 div = document.createElement('div'); 43 div.id = 'recommend_box'; 44 } else if (content === '') { 45 div.parentNode.removeChild(div); 46 return; 47 } 48 div.innerHTML = content; 49 document.body.appendChild(div); 50 return div; 51} 52 53function recommend_handle() { 54 if (this.response === "AJAX call '" + recommend_ajax_call + "' unknown!\n") { 55 /* No user logged in. */ 56 return; 57 } 58 if (this.responseStatus[0] === 204) { 59 var box = recommend_box('<form id="recommend_plugin" accept-charset="utf-8" method="post" action="?do=recommend"><div class="no"><fieldset><legend>Finished</legend<p>Thanks for recommending our site.</p><input type="submit" class="button" value="Cancel" name="do[cancel]"/></fieldset></div></form>'); 60 } else { 61 62 var box = recommend_box(this.response); 63 box.getElementsByTagName('label')[0].focus(); 64 change_form_handler(box.getElementsByTagName('form'), 65 function (form) {return sack_form(form, recommend_handle); }); 66 } 67 var inputs = box.getElementsByTagName('input'); 68 inputs[inputs.length - 1].onclick = function() {recommend_box(''); return false;}; 69} 70 71addInitEvent(function () { 72 change_form_handler(getElementsByClass('btn_recommend', document, 'form'), 73 function (form) {return sack_form(form, recommend_handle); }); 74 }); 75