Fixed non-object reference in databaseless template, added locking for Javascript paginator, made comments on AES key size more clear in constants, and disallowed "anonymous" and IP addresses for admin username in install.php; Loch Ness release candidate
function init() { tinyMCEPopup.resizeToInnerSize(); // start with appropiate tab var task = (tinyMCE.getWindowArg("replacestring") != null) ? "replace" : "search"; mcTabs.displayTab(task + '_tab', task +'_panel'); manageReplaceButtons(); var formObj = document.forms[0]; formObj[task + "_panel_searchstring"].value = tinyMCE.getWindowArg("searchstring"); formObj["replace_panel_replacestring"].value = (tinyMCE.getWindowArg("replacestring") != null) ? tinyMCE.getWindowArg("replacestring") : ""; formObj[task + "_panel_casesensitivebox"].checked = tinyMCE.getWindowArg("casesensitive"); formObj[task + "_panel_backwardsu"].checked = tinyMCE.getWindowArg("backwards"); formObj[task + "_panel_backwardsd"].checked = !tinyMCE.getWindowArg("backwards");}function searchNext(replacemode) { // "search" or "replace" mode of operation? var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace"; var formObj = document.forms[0]; if (task == "replace") { // Whats the point? if (formObj[task + "_panel_searchstring"].value == "" || formObj[task + "_panel_searchstring"].value == formObj[task + "_panel_replacestring"].value) return false; } // Do search tinyMCEPopup.execCommand('mceSearch', false, { string : formObj[task + "_panel_searchstring"].value, replacestring : formObj["replace_panel_replacestring"].value, replacemode : replacemode, casesensitive : formObj[task + "_panel_casesensitivebox"].checked, backwards : formObj[task + "_panel_backwardsu"].checked, win : window }, false); window.focus(); return false;}function cancelAction() { tinyMCEPopup.close();}function manageReplaceButtons() { // "search" or "replace" mode of operation? var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace"; document.getElementById("replace_buttons").style.visibility = (task == "replace") ? "visible" : "hidden";}function copyValues(link) { // check if tab is already active var tab = link; while (tab.tagName && tab.tagName.toLowerCase() != "li") tab = tab.parentNode; if (tab.className) return false; // tab is already active -> no need to copy any values! // copy values from one panel to the other (if they exist there) var from_panel_name = tab.id.match(/^search/i) ? "replace_panel" : "search_panel"; var to_panel_name = (from_panel_name == "search_panel") ? "replace_panel" : "search_panel"; // find all elements with IDs to copy their values var elms = document.getElementById(from_panel_name).getElementsByTagName("*"); for (var i = 0; i < elms.length; i++) { if (elms[i].id && elms[i].id != "") { var checked = "undefined"; if (elms[i].type.toLowerCase() == "checkbox" || elms[i].type.toLowerCase() == "radio") checked = elms[i].checked; // copy values if element exists in other panel var to_elm_name = to_panel_name + elms[i].id.substring(from_panel_name.length, elms[i].id.length); var to_elm = document.getElementById(to_elm_name); if (to_elm) { if (checked != "undefined") to_elm.checked = checked; else to_elm.value = elms[i].value; } } } return false;}