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