/* */ /* q=jshelper */ /* file=jshelper.js */ var jshelper = { /** * expandit * @param elementOrId - the element or element ID clicked to instiagte the action * @param hideCSV - comma separated list of additional element IDs that are to be hidden * this is not used by core e107 but kept for compatibility with any plugin/theme that uses it */ expandit: function(elementOrId, hideCSV) { folder = (Object.isString(elementOrId)) ? $(elementOrId) : folder=$(elementOrId).next(); new Effect.toggle(folder, 'slide'); if (typeof hideCSV != 'undefined') { hideCSV.split(",").each(function(id) { // No effects - just hide it to avoid animation glitches $(id.strip()).hide(); }); } }, /** * showhideit * @param showId - ID of element to show * @param hideId - ID of element to hide */ showhideit: function (showID, hideID) { var showEl = $(showID); if (showEl.visible()) { return; } var hideEl = $(hideID); new Effect.BlindUp(hideEl, { duration: 0.5, afterFinish: function () { new Effect.BlindDown(showEl, {duration: 0.5}); } }); }, /** * log * @param thing - the thing (string, element, object, etc.) to be logged */ log: function(thing) { if (console && console.log) { console.log(thing); } } } document.observe("dom:loaded", function() { var loc = document.location.href; var adminPage = loc.match(/.*\/e107_admin\/.*/); //TODO needs to be pulled in from PHP // ************************************************************************* // Chatbox auto refresh // ************************************************************************* if ($("xchatbox_posts")) { function spyonChatBox() { setTimeout(function() { $("cmessage").observe("keyup", function(ev) { if (ev.element().getValue().length > 0 && !chatUpdater.stopped) { chatUpdater.stopped = true; chatUpdater.stop(); } else if (ev.element().getValue().length == 0 && chatUpdater.stopped) { chatUpdater.stopped = false; chatUpdater.start(); } }); $("chat_submit").observe("click", function(ev) { chatUpdater.stopped = false; setTimeout(function() { spyonChatBox(); chatUpdater.start(); }, 2500); }); }, 1500); } var params = {chat_submit: "Submit", cmessage: ""}; if ($("chatbox_ajax")) { params.chatbox_ajax = $("chatbox_ajax").getValue(); } var chatUpdater = new Ajax.PeriodicalUpdater( "chatbox_posts", "http://localhost/plugins.e107.org/e107_plugins/chatbox_menu/chatbox_menu.php", { parameters: params, frequency: 1, decay: 2, onSuccess: function() { console.log(new Date()+"jshelper onSuccess"); spyonChatBox(); } } ); } // ************************************************************************* // JSCaptcha // ************************************************************************* // See if we have a form we need to observe //var forms = $w("chatbox searchform") var forms = $w("") forms.each(function(id) { var url = "http://localhost/plugins.e107.org/e107_plugins/jshelpers/ajax_jscaptcha.php"; var f = $(id); if (f) { var did = id+"_jscaptcha"; f.insert({top: new Element("div", {id:did})}); new Ajax.Updater(did, url, { method:"get", parameters: "get."+id }); f.observe("submit", function(ev) { ev.stop(); new Ajax.Request(url, { method: "get", parameters: "check."+$F(id+'_code')+"."+$F(id+'_verify'), onSuccess: function(transport) { if (transport.responseText == "true") { //TODO - duplicate submit button as some forms check for it being submitted and it isn't if you don't actually click it //TODO - what if more none? //TODO - what if more than 1? var subbutton = f.select("input[type=submit]")[0]; f.insert({top: new Element("input", {type:"hidden",name:subbutton.name,value:subbutton.value})}); f.submit(); } else { new Ajax.Updater(did, url, { method:"get", parameters: "get."+id+"."+transport.responseText }); } } }); }); } }); // Admin menus if (adminPage) { $$("[onclick]").each(function (el) { el.observe("click", function(ev) { new Effect.Pulsate(this); new Effect.Highlight(this); }); }); } // Admin form submit if (el = $('jshelper_save_prefs')) { el.observe('click', function() { $('jshelper_admin_page_form').submit(); }); } // Admin File Serving radio buttons $$("input[name=jshelper_file_serving]").each(function (el) { el.observe("click", function(ev) { var options = {duration: 0.25}; $(ev.element().id+"_info").show().siblings().invoke('hide'); }); }) }); // Redefine some e107's JavaScript functions (from e107.js) showhideit = function(showID) { jshelper.showhideit(showID, hideid); hideid = showID; // global e107 variable } eover = function(object, over) { // Honour what e107 would do object.className = over; object = $(object); } expandit = function(elementOrId, hideCSV) { jshelper.expandit(elementOrId, hideCSV); }