/* DOKUWIKI:include lib/Supa.js */ // vim :set ts=4 sw=4 expandtab /** * Supa helper plugin * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Christoph Linder */ var supa_handler = { preview_scaler: "", preview_width: "100px", preview_height: "100px", sectok: "", namespace: "", default_filename: "", applet_id: "Supa__Applet", applet_name: "Supa__Applet", file_extension: "png", msg: function (text, style) { var msgbox = $('media__left'), div = document.createElement('div'), tn = document.createTextNode(text), c = "", before = null; if (!msgbox) { alert(text); } div.appendChild(tn); switch (style) { case 0: c = "success"; break; case 1: c = 'info'; break; default: c = "error"; } div.setAttribute("class", c); if (msgbox.childNodes) { before = msgbox.childNodes[0]; } msgbox.insertBefore(div, before); }, pasteButtonHandler: function (e) { cleanMsgArea(); var s = new Supa(), supaApplet = document.getElementsByName(supa_handler.applet_name)[0], err; if (!s.ping(supaApplet)) { alert(LANG['plugins']['supa']["err_not_loaded_yet"]); return; } try { err = supaApplet.pasteFromClipboard(); switch (err) { case 0: /* no error */ break; case 1: alert(LANG['plugins']['supa']["err_clipboard_unknown_error"]); break; case 2: alert(LANG['plugins']['supa']["err_clipboard_empty"]); break; case 3: alert(LANG['plugins']['supa']["err_clipboard_content_unsupported"]); break; default: alert(LANG['plugins']['supa']["err_clipboard_error_code_unknown"] + err); } } catch (ex) { if (typeof ex === "object") { alert("Internal exception: " + ex.toString()); } else { alert("Internal exception: " + ex); } } }, uploadButtonHandler: function () { cleanMsgArea(); var e_filename = $("supa__filename"), filename = e_filename.value, s, supaApplet, encodedData, response, loc; if (!filename) { alert(LANG['plugins']['supa']['err_need_filename']); e_filename.focus(); return; } //FIXME: check the backslashing! if (!e_filename.value.toLowerCase().match("\." + supa_handler.file_extension + "$")) { e_filename.value += "." + supa_handler.file_extension; } //var encodedData = "Hello World"; s = new Supa(); supaApplet = document.getElementsByName(supa_handler.applet_name)[0]; if (!s.ping(supaApplet)) { alert(LANG['plugins']['supa']["err_not_loaded_yet"]); return; } encodedData = supaApplet.getEncodedString(); if (!encodedData) { alert(LANG['plugins']['supa']['err_paste_image_first']); return; } //FIXME: implement overwriting try { response = s.ajax_post( DOKU_BASE + 'lib/exe/mediamanager.php', encodedData, 'Filedata', filename + ".supascreenshot", [ { name: 'sectok', value: $("supa__sectok").value }, { name: 'ns', value: $("supa__ns").value }, { name: 'id', value: $("supa__filename").value + ".supascreenshot" }, { name: 'ow', value: '1' } ] ); //alert( "response: "+response ); if (response === "ok") { // list() requires a location... // as I don't know how to instantiate one, we're simulating... loc = { search: "?ns=" + $("supa__ns").value }; media_manager.list(null, loc); //FIXME: both mediamanager.list and buildElements should paint the button! // as we're overriding media_manager.list() this should already work but it dowsn't :( // but neither does a direct call to buildElements :( //supa_handler.buildElements(); } else { supa_handler.msg(response); } } catch (ex) { supa_handler.msg("Exception: " + ex); } }, createSupaApplet: function () { var where, root, html; function t(txt) { return LANG['plugins']['supa'][txt]; } function insertAfter(ref, newNode) { ref.parentNode.insertBefore(newNode, ref.nextSibling); } where = $("dw__flashupload"); if (!where) { return false; } root = document.createElement("div"); root.id = "supa__upload"; root.style.display = "none"; html = ""; html += "