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 } 45 div.innerHTML = content; 46 getElementsByClass('stylehead', document, 'div')[0].appendChild(div); 47 return div; 48} 49 50function recommend_handle() { 51 if (this.response === "AJAX call '" + recommend_ajax_call + "' unknown!\n") { 52 /* No user logged in. */ 53 return; 54 } 55 if (this.responseStatus[0] === 204) { 56 var div = $('recommend_box'); 57 div.parentNode.removeChild(div); 58 return; 59 } 60 61 var box = recommend_box(this.response); 62 box.getElementsByTagName('label')[0].focus(); 63 change_form_handler(box.getElementsByTagName('form'), 64 function (form) {return sack_form(form, recommend_handle); }); 65} 66 67addInitEvent(function () { 68 change_form_handler(getElementsByClass('btn_recommend', document, 'form'), 69 function (form) {return sack_form(form, recommend_handle); }); 70 }); 71