diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js index 388f31698f..37975065e8 100644 --- a/phpBB/assets/javascript/core.js +++ b/phpBB/assets/javascript/core.js @@ -3,7 +3,7 @@ phpbb.alertTime = 100; (function($) { // Avoid conflicts with other libraries -"use strict"; +'use strict'; // define a couple constants for keydown functions. var keymap = { @@ -12,8 +12,8 @@ var keymap = { ESC: 27 }; -var dark = $('#darkenwrapper'); -var loadingIndicator = $('#loading_indicator'); +var $dark = $('#darkenwrapper'); +var $loadingIndicator = $('#loading_indicator'); var phpbbAlertTimer = null; phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined'); @@ -24,18 +24,20 @@ phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined'); * @returns object Returns loadingIndicator. */ phpbb.loadingIndicator = function() { - if (!loadingIndicator.is(':visible')) { - loadingIndicator.fadeIn(phpbb.alertTime); + if (!$loadingIndicator.is(':visible')) { + $loadingIndicator.fadeIn(phpbb.alertTime); // Wait fifteen seconds and display an error if nothing has been returned by then. phpbb.clearLoadingTimeout(); phpbbAlertTimer = setTimeout(function() { - if (loadingIndicator.is(':visible')) { - phpbb.alert($('#phpbb_alert').attr('data-l-err'), $('#phpbb_alert').attr('data-l-timeout-processing-req')); + var $alert = $('#phpbb_alert'); + + if ($loadingIndicator.is(':visible')) { + phpbb.alert($alert.attr('data-l-err'), $alert.attr('data-l-timeout-processing-req')); } }, 15000); } - return loadingIndicator; + return $loadingIndicator; }; /** @@ -73,24 +75,24 @@ phpbb.closeDarkenWrapper = function(delay) { * @returns object Returns the div created. */ phpbb.alert = function(title, msg, fadedark) { - var div = $('#phpbb_alert'); - div.find('.alert_title').html(title); - div.find('.alert_text').html(msg); + var $alert = $('#phpbb_alert'); + $alert.find('.alert_title').html(title); + $alert.find('.alert_text').html(msg); - if (!dark.is(':visible')) { - dark.fadeIn(phpbb.alertTime); + if (!$dark.is(':visible')) { + $dark.fadeIn(phpbb.alertTime); } - div.bind('click', function(e) { + $alert.on('click', function(e) { e.stopPropagation(); }); - dark.one('click', function(e) { + $dark.one('click', function(e) { var fade; - div.find('.alert_close').unbind('click'); - fade = (typeof fadedark !== 'undefined' && !fadedark) ? div : dark; + $alert.find('.alert_close').off('click'); + fade = (typeof fadedark !== 'undefined' && !fadedark) ? $alert : $dark; fade.fadeOut(phpbb.alertTime, function() { - div.hide(); + $alert.hide(); }); e.preventDefault(); @@ -98,35 +100,35 @@ phpbb.alert = function(title, msg, fadedark) { }); $(document).keydown(function(e) { - if ((e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) && dark.is(':visible')) { - dark.trigger('click'); + if ((e.keyCode === keymap.ENTER || e.keyCode === keymap.ESC) && $dark.is(':visible')) { + $dark.trigger('click'); e.preventDefault(); e.stopPropagation(); } }); - div.find('.alert_close').one('click', function(e) { - dark.trigger('click'); + $alert.find('.alert_close').one('click', function(e) { + $dark.trigger('click'); e.preventDefault(); }); - if (loadingIndicator.is(':visible')) { - loadingIndicator.fadeOut(phpbb.alertTime, function() { - dark.append(div); - div.fadeIn(phpbb.alertTime); + if ($loadingIndicator.is(':visible')) { + $loadingIndicator.fadeOut(phpbb.alertTime, function() { + $dark.append($alert); + $alert.fadeIn(phpbb.alertTime); }); - } else if (dark.is(':visible')) { - dark.append(div); - div.fadeIn(phpbb.alertTime); + } else if ($dark.is(':visible')) { + $dark.append($alert); + $alert.fadeIn(phpbb.alertTime); } else { - dark.append(div); - div.show(); - dark.fadeIn(phpbb.alertTime); + $dark.append($alert); + $alert.show(); + $dark.fadeIn(phpbb.alertTime); } - return div; + return $alert; }; /** @@ -143,24 +145,24 @@ phpbb.alert = function(title, msg, fadedark) { * @returns object Returns the div created. */ phpbb.confirm = function(msg, callback, fadedark) { - var div = $('#phpbb_confirm'); - div.find('.alert_text').html(msg); + var $confirmDiv = $('#phpbb_confirm'); + $confirmDiv.find('.alert_text').html(msg); - if (!dark.is(':visible')) { - dark.fadeIn(phpbb.alertTime); + if (!$dark.is(':visible')) { + $dark.fadeIn(phpbb.alertTime); } - div.bind('click', function(e) { + $confirmDiv.on('click', function(e) { e.stopPropagation(); }); var clickHandler = function(e) { var res = this.name === 'confirm'; - var fade = (typeof fadedark !== 'undefined' && !fadedark && res) ? div : dark; - fade.fadeOut(phpbb.alertTime, function() { - div.hide(); + var $fade = (typeof fadedark !== 'undefined' && !fadedark && res) ? $confirmDiv : $dark; + $fade.fadeOut(phpbb.alertTime, function() { + $confirmDiv.hide(); }); - div.find('input[type="button"]').unbind('click', clickHandler); + $confirmDiv.find('input[type="button"]').off('click', clickHandler); callback(res); if (e) { @@ -168,12 +170,12 @@ phpbb.confirm = function(msg, callback, fadedark) { e.stopPropagation(); } }; - div.find('input[type="button"]').one('click', clickHandler); + $confirmDiv.find('input[type="button"]').one('click', clickHandler); - dark.one('click', function(e) { - div.find('.alert_close').unbind('click'); - dark.fadeOut(phpbb.alertTime, function() { - div.hide(); + $dark.one('click', function(e) { + $confirmDiv.find('.alert_close').unbind('click'); + $dark.fadeOut(phpbb.alertTime, function() { + $confirmDiv.hide(); }); callback(false); @@ -181,7 +183,7 @@ phpbb.confirm = function(msg, callback, fadedark) { e.stopPropagation(); }); - $(document).bind('keydown', function(e) { + $(document).on('keydown', function(e) { if (e.keyCode === keymap.ENTER) { $('input[name="confirm"]').trigger('click'); e.preventDefault(); @@ -193,31 +195,31 @@ phpbb.confirm = function(msg, callback, fadedark) { } }); - div.find('.alert_close').one('click', function(e) { - var fade = (typeof fadedark !== 'undefined' && fadedark) ? div : dark; - fade.fadeOut(phpbb.alertTime, function() { - div.hide(); + $confirmDiv.find('.alert_close').one('click', function(e) { + var $fade = (typeof fadedark !== 'undefined' && fadedark) ? $confirmDiv : $dark; + $fade.fadeOut(phpbb.alertTime, function() { + $confirmDiv.hide(); }); callback(false); e.preventDefault(); }); - if (loadingIndicator.is(':visible')) { - loadingIndicator.fadeOut(phpbb.alertTime, function() { - dark.append(div); - div.fadeIn(phpbb.alertTime); + if ($loadingIndicator.is(':visible')) { + $loadingIndicator.fadeOut(phpbb.alertTime, function() { + $dark.append($confirmDiv); + $confirmDiv.fadeIn(phpbb.alertTime); }); - } else if (dark.is(':visible')) { - dark.append(div); - div.fadeIn(phpbb.alertTime); + } else if ($dark.is(':visible')) { + $dark.append($confirmDiv); + $confirmDiv.fadeIn(phpbb.alertTime); } else { - dark.append(div); - div.show(); - dark.fadeIn(phpbb.alertTime); + $dark.append($confirmDiv); + $confirmDiv.show(); + $dark.fadeIn(phpbb.alertTime); } - return div; + return $confirmDiv; }; /** @@ -257,12 +259,12 @@ phpbb.parseQuerystring = function(string) { * that was returned and (if it is a form) the form action. */ phpbb.ajaxify = function(options) { - var elements = $(options.selector), + var $elements = $(options.selector), refresh = options.refresh, callback = options.callback, overlay = (typeof options.overlay !== 'undefined') ? options.overlay : true, - isForm = elements.is('form'), - isText = elements.is('input[type="text"], textarea'), + isForm = $elements.is('form'), + isText = $elements.is('input[type="text"], textarea'), eventName; if (isForm) { @@ -273,7 +275,7 @@ phpbb.ajaxify = function(options) { eventName = 'click'; } - elements.bind(eventName, function(event) { + $elements.on(eventName, function(event) { var action, method, data, submit, that = this, $this = $(this); if ($this.find('input[type="submit"][data-clicked]').attr('data-ajax') === 'false') { @@ -293,11 +295,12 @@ phpbb.ajaxify = function(options) { errorText = errorThrown; } else { - errorText = dark.attr('data-ajax-error-text-' + textStatus); - if (typeof errorText !== 'string' || !errorText.length) - errorText = dark.attr('data-ajax-error-text'); + errorText = $dark.attr('data-ajax-error-text-' + textStatus); + if (typeof errorText !== 'string' || !errorText.length) { + errorText = $dark.attr('data-ajax-error-text'); + } } - phpbb.alert(dark.attr('data-ajax-error-title'), errorText); + phpbb.alert($dark.attr('data-ajax-error-title'), errorText); } /** @@ -322,7 +325,7 @@ phpbb.ajaxify = function(options) { if (typeof res.MESSAGE_TITLE !== 'undefined') { alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT); } else { - dark.fadeOut(phpbb.alertTime); + $dark.fadeOut(phpbb.alertTime); } if (typeof phpbb.ajaxCallbacks[callback] === 'function') { @@ -345,7 +348,7 @@ phpbb.ajaxify = function(options) { // Hide the alert even if we refresh the page, in case the user // presses the back button. - dark.fadeOut(phpbb.alertTime, function() { + $dark.fadeOut(phpbb.alertTime, function() { if (typeof alert !== 'undefined') { alert.hide(); } @@ -355,17 +358,19 @@ phpbb.ajaxify = function(options) { } else { // If confirmation is required, display a dialog to the user. phpbb.confirm(res.MESSAGE_BODY, function(del) { - if (del) { - phpbb.loadingIndicator(); - data = $('
').serialize(); - $.ajax({ - url: res.S_CONFIRM_ACTION, - type: 'POST', - data: data + '&confirm=' + res.YES_VALUE + '&' + $('#phpbb_confirm form').serialize(), - success: returnHandler, - error: errorHandler - }); + if (!del) { + return; } + + phpbb.loadingIndicator(); + data = $('').serialize(); + $.ajax({ + url: res.S_CONFIRM_ACTION, + type: 'POST', + data: data + '&confirm=' + res.YES_VALUE + '&' + $('form', '#phpbb_confirm').serialize(), + success: returnHandler, + error: errorHandler + }); }, false); } } @@ -373,7 +378,7 @@ phpbb.ajaxify = function(options) { // If the element is a form, POST must be used and some extra data must // be taken from the form. var runFilter = (typeof options.filter === 'function'); - var data = {}; + data = {}; if (isForm) { action = $this.attr('action').replace('&', '&'); @@ -388,7 +393,7 @@ phpbb.ajaxify = function(options) { }); } } else if (isText) { - var name = ($this.attr('data-name') !== undefined) ? $this.attr('data-name') : this['name']; + var name = $this.attr('data-name') || this.name; action = $this.attr('data-url').replace('&', '&'); data[name] = this.value; method = 'POST'; @@ -399,7 +404,8 @@ phpbb.ajaxify = function(options) { } var sendRequest = function() { - if (overlay && (typeof $this.attr('data-overlay') === 'undefined' || $this.attr('data-overlay') === 'true')) { + var dataOverlay = $this.attr('data-overlay'); + if (overlay && (typeof dataOverlay === 'undefined' || dataOverlay === 'true')) { phpbb.loadingIndicator(); } @@ -411,7 +417,7 @@ phpbb.ajaxify = function(options) { error: errorHandler }); request.always(function() { - loadingIndicator.fadeOut(phpbb.alertTime); + $loadingIndicator.fadeOut(phpbb.alertTime); }); }; @@ -426,7 +432,7 @@ phpbb.ajaxify = function(options) { }); if (isForm) { - elements.find('input:submit').click(function () { + $elements.find('input:submit').click(function () { var $this = $(this); $this.siblings('[data-clicked]').removeAttr('data-clicked'); @@ -437,7 +443,13 @@ phpbb.ajaxify = function(options) { return this; }; -phpbb.search = {cache: {data: []}, tpl: [], container: []}; +phpbb.search = { + cache: { + data: [] + }, + tpl: [], + container: [] +}; /** * Get cached search data. @@ -478,7 +490,7 @@ phpbb.search.cache.set = function(id, key, value) { * @return undefined */ phpbb.search.cache.setResults = function(id, keyword, value) { - this.data[id]['results'][keyword] = value; + this.data[id].results[keyword] = value; }; /** @@ -504,7 +516,7 @@ phpbb.search.cleanKeyword = function(keyword) { phpbb.search.getKeyword = function(el, keyword, multiline) { if (multiline) { var line = phpbb.search.getKeywordLine(el); - keyword = keyword.split("\n").splice(line, 1); + keyword = keyword.split('\n').splice(line, 1); } return phpbb.search.cleanKeyword(keyword); }; @@ -517,7 +529,7 @@ phpbb.search.getKeyword = function(el, keyword, multiline) { * @return int */ phpbb.search.getKeywordLine = function (el) { - return el.val().substr(0, el.get(0).selectionStart).split("\n").length - 1; + return el.val().substr(0, el.get(0).selectionStart).split('\n').length - 1; }; /** @@ -533,9 +545,9 @@ phpbb.search.getKeywordLine = function (el) { phpbb.search.setValue = function(el, value, multiline) { if (multiline) { var line = phpbb.search.getKeywordLine(el), - lines = el.val().split("\n"); + lines = el.val().split('\n'); lines[line] = value; - value = lines.join("\n"); + value = lines.join('\n'); } el.val(value); }; @@ -578,29 +590,29 @@ phpbb.search.filter = function(data, event, sendRequest) { proceed = true; data[dataName] = keyword; - if (cache['timeout']) { - clearTimeout(cache['timeout']); + if (cache.timeout) { + clearTimeout(cache.timeout); } var timeout = setTimeout(function() { // Check min length and existence of cache. if (minLength > keyword.length) { proceed = false; - } else if (cache['last_search']) { + } else if (cache.last_search) { // Has the keyword actually changed? - if (cache['last_search'] === keyword) { + if (cache.last_search === keyword) { proceed = false; } else { // Do we already have results for this? - if (cache['results'][keyword]) { - var response = {keyword: keyword, results: cache['results'][keyword]}; + if (cache.results[keyword]) { + var response = {keyword: keyword, results: cache.results[keyword]}; phpbb.search.handleResponse(response, el, true); proceed = false; } // If the previous search didn't yield results and the string only had characters added to it, // then we won't bother sending a request. - if (keyword.indexOf(cache['last_search']) === 0 && cache['results'][cache['last_search']].length === 0) { + if (keyword.indexOf(cache.last_search) === 0 && cache.results[cache.last_search].length === 0) { phpbb.search.cache.set(searchID, 'last_search', keyword); phpbb.search.cache.setResults(searchID, keyword, []); proceed = false; @@ -635,8 +647,8 @@ phpbb.search.handleResponse = function(res, el, fromCache, callback) { var searchID = el.attr('data-results'), container = $(searchID); - if (this.cache.get(searchID)['callback']) { - callback = this.cache.get(searchID)['callback']; + if (this.cache.get(searchID).callback) { + callback = this.cache.get(searchID).callback; } else if (typeof callback === 'function') { this.cache.set(searchID, 'callback', callback); } @@ -718,10 +730,8 @@ phpbb.history = {}; * @return bool Returns true if the method is supported. */ phpbb.history.isSupported = function(fn) { - if (typeof history === 'undefined' || typeof history[fn] === 'undefined') { - return false; - } - return true; + return !(typeof history === 'undefined' || typeof history[fn] === 'undefined'); + }; /** @@ -783,36 +793,43 @@ phpbb.history.pushUrl = function(url, title, obj) { * @param bool keepSelection Shall we keep the value selected, or shall the user be forced to repick one. */ phpbb.timezoneSwitchDate = function(keepSelection) { - if ($('#timezone_copy').length === 0) { + var $timezoneCopy = $('#timezone_copy'); + var $timezone = $('#timezone'); + var $tzDate = $('#tz_date'); + var $tzSelectDateSuggest = $('#tz_select_date_suggest'); + + if ($timezoneCopy.length === 0) { // We make a backup of the original dropdown, so we can remove optgroups // instead of setting display to none, because IE and chrome will not // hide options inside of optgroups and selects via css - $('#timezone').clone().attr('id', 'timezone_copy').css('display', 'none').attr('name', 'tz_copy').insertAfter('#timezone'); + $timezone.clone().attr('id', 'timezone_copy').css('display', 'none').attr('name', 'tz_copy').insertAfter('#timezone'); } else { // Copy the content of our backup, so we can remove all unneeded options - $('#timezone').replaceWith($('#timezone_copy').clone().attr('id', 'timezone').css('display', 'block').attr('name', 'tz')); + $timezone.replaceWith($timezoneCopy.clone().attr('id', 'timezone').css('display', 'block').attr('name', 'tz')); } - if ($('#tz_date').val() !== '') { - $('#timezone > optgroup').remove(":not([label='" + $('#tz_date').val() + "'])"); + if ($tzDate.val() !== '') { + $timezone.children('optgroup').remove(':not([label="' + $('#tz_date').val() + '"])'); } - if ($('#tz_date').val() === $('#tz_select_date_suggest').attr('data-suggested-tz')) { - $('#tz_select_date_suggest').css('display', 'none'); + if ($tzDate.val() === $tzSelectDateSuggest.attr('data-suggested-tz')) { + $tzSelectDateSuggest.css('display', 'none'); } else { - $('#tz_select_date_suggest').css('display', 'inline'); + $tzSelectDateSuggest.css('display', 'inline'); } + + var $tzOptions = $timezone.children('optgroup[label="' + $tzDate.val() + '"]').children('option') - if ($("#timezone > optgroup[label='" + $('#tz_date').val() + "'] > option").size() === 1) { + if ($tzOptions.length === 1) { // If there is only one timezone for the selected date, we just select that automatically. - $("#timezone > optgroup[label='" + $('#tz_date').val() + "'] > option:first").prop('selected', true); + $tzOptions.prop('selected', true); keepSelection = true; } if (typeof keepSelection !== 'undefined' && !keepSelection) { - var timezoneOptions = $('#timezone > optgroup option'); - if (timezoneOptions.filter(':selected').length <= 0) { - timezoneOptions.filter(':first').prop('selected', true); + var $timezoneOptions = $timezone.find('optgroup option'); + if ($timezoneOptions.filter(':selected').length <= 0) { + $timezoneOptions.filter(':first').prop('selected', true); } } }; @@ -832,7 +849,6 @@ phpbb.timezoneEnableDateSelection = function() { phpbb.timezonePreselectSelect = function(forceSelector) { // The offset returned here is in minutes and negated. - // http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp var offset = (new Date()).getTimezoneOffset(); var sign = '-'; @@ -858,9 +874,11 @@ phpbb.timezonePreselectSelect = function(forceSelector) { var prefix = 'GMT' + sign + hours + ':' + minutes; var prefixLength = prefix.length; - var selectorOptions = $('#tz_date > option'); + var selectorOptions = $('option', '#tz_date'); var i; + var $tzSelectDateSuggest = $('#tz_select_date_suggest'); + for (i = 0; i < selectorOptions.length; ++i) { var option = selectorOptions[i]; @@ -869,16 +887,18 @@ phpbb.timezonePreselectSelect = function(forceSelector) { // We do not select the option for the user, but notify him, // that we would suggest a different setting. phpbb.timezoneSwitchDate(true); - $('#tz_select_date_suggest').css('display', 'inline'); + $tzSelectDateSuggest.css('display', 'inline'); } else { option.selected = true; phpbb.timezoneSwitchDate(!forceSelector); - $('#tz_select_date_suggest').css('display', 'none'); + $tzSelectDateSuggest.css('display', 'none'); } - $('#tz_select_date_suggest').attr('title', $('#tz_select_date_suggest').attr('data-l-suggestion').replace("%s", option.innerHTML)); - $('#tz_select_date_suggest').attr('value', $('#tz_select_date_suggest').attr('data-l-suggestion').replace("%s", option.innerHTML.substring(0, 9))); - $('#tz_select_date_suggest').attr('data-suggested-tz', option.innerHTML); + var suggestion = $tzSelectDateSuggest.attr('data-l-suggestion'); + + $tzSelectDateSuggest.attr('title', suggestion.replace('%s', option.innerHTML)); + $tzSelectDateSuggest.attr('value', suggestion.replace('%s', option.innerHTML.substring(0, 9))); + $tzSelectDateSuggest.attr('data-suggested-tz', option.innerHTML); // Found the suggestion, there cannot be more, so return from here. return; @@ -916,22 +936,22 @@ phpbb.addAjaxCallback('member_search', function(res) { * current text so that the process can be repeated. */ phpbb.addAjaxCallback('alt_text', function() { - var el, + var $el, updateAll = $(this).data('update-all'), altText; if (updateAll !== undefined && updateAll.length) { - el = $(updateAll); + $el = $(updateAll); } else { - el = $(this); + $el = $(this); } - el.each(function() { - var el = $(this); - altText = el.attr('data-alt-text'); - el.attr('data-alt-text', el.text()); - el.attr('title', $.trim(altText)); - el.text(altText); + $el.each(function() { + var $this = $(this); + altText = $this.attr('data-alt-text'); + $this.attr('data-alt-text', $this.text()); + $this.attr('title', $.trim(altText)); + $this.text(altText); }); }); @@ -945,36 +965,36 @@ phpbb.addAjaxCallback('alt_text', function() { * and changes the link itself. */ phpbb.addAjaxCallback('toggle_link', function() { - var el, + var $el, updateAll = $(this).data('update-all') , toggleText, toggleUrl, toggleClass; if (updateAll !== undefined && updateAll.length) { - el = $(updateAll); + $el = $(updateAll); } else { - el = $(this); + $el = $(this); } - el.each(function() { - var el = $(this); + $el.each(function() { + var $this = $(this); // Toggle link text - toggleText = el.attr('data-toggle-text'); - el.attr('data-toggle-text', el.text()); - el.attr('title', $.trim(toggleText)); - el.text(toggleText); + toggleText = $this.attr('data-toggle-text'); + $this.attr('data-toggle-text', $this.text()); + $this.attr('title', $.trim(toggleText)); + $this.text(toggleText); // Toggle link url - toggleUrl = el.attr('data-toggle-url'); - el.attr('data-toggle-url', el.attr('href')); - el.attr('href', toggleUrl); + toggleUrl = $this.attr('data-toggle-url'); + $this.attr('data-toggle-url', $this.attr('href')); + $this.attr('href', toggleUrl); // Toggle class of link parent - toggleClass = el.attr('data-toggle-class'); - el.attr('data-toggle-class', el.parent().attr('class')); - el.parent().attr('class', toggleClass); + toggleClass = $this.attr('data-toggle-class'); + $this.attr('data-toggle-class', $this.parent().attr('class')); + $this.parent().attr('class', toggleClass); }); }); @@ -984,7 +1004,7 @@ phpbb.addAjaxCallback('toggle_link', function() { * This function automatically resizes textarea elements when user * types text. * -* @param {jQuery} items jQuery object(s) to resize +* @param {jQuery} $items jQuery object(s) to resize * @param {object} options Optional parameter that adjusts default * configuration. See configuration variable * @@ -1000,25 +1020,26 @@ phpbb.addAjaxCallback('toggle_link', function() { * this points to DOM object * item is a jQuery object, same as this */ -phpbb.resizeTextArea = function(items, options) { +phpbb.resizeTextArea = function($items, options) { // Configuration var configuration = { minWindowHeight: 500, minHeight: 200, maxHeight: 500, heightDiff: 200, - resizeCallback: function(item) { }, - resetCallback: function(item) { } + resizeCallback: function() {}, + resetCallback: function() {} }; - if (phpbb.isTouch) return; + if (phpbb.isTouch) { + return; + } if (arguments.length > 1) { configuration = $.extend(configuration, options); } - function resetAutoResize(item) - { + function resetAutoResize(item) { var $item = $(item); if ($item.hasClass('auto-resized')) { $(item).css({height: '', resize: ''}).removeClass('auto-resized'); @@ -1026,10 +1047,8 @@ phpbb.resizeTextArea = function(items, options) { } } - function autoResize(item) - { - function setHeight(height) - { + function autoResize(item) { + function setHeight(height) { height += parseInt($item.css('height')) - $item.height(); $item.css({height: height + 'px', resize: 'none'}).addClass('auto-resized'); configuration.resizeCallback.call(item, $item); @@ -1059,14 +1078,14 @@ phpbb.resizeTextArea = function(items, options) { } } - items.bind('focus change keyup', function() { + $items.on('focus change keyup', function() { $(this).each(function() { autoResize(this); }); }).change(); $(window).resize(function() { - items.each(function() { + $items.each(function() { if ($(this).hasClass('auto-resized')) { autoResize(this); } @@ -1104,7 +1123,9 @@ phpbb.inBBCodeTag = function(textarea, startTags, endTags) { lastStart = Math.max(lastStart, index); } } - if (lastStart == -1) return false; + if (lastStart == -1) { + return false; + } if (start > 0) { for (i = 0; i < endTags.length; i++) { @@ -1114,7 +1135,7 @@ phpbb.inBBCodeTag = function(textarea, startTags, endTags) { } return (lastEnd < lastStart); -} +}; /** @@ -1158,7 +1179,7 @@ phpbb.applyCodeEditor = function(textarea) { function getLastLine(stripCodeStart) { var start = textarea.selectionStart, value = textarea.value, - index = value.lastIndexOf("\n", start - 1); + index = value.lastIndexOf('\n', start - 1); value = value.substring(index + 1, start); @@ -1207,7 +1228,7 @@ phpbb.applyCodeEditor = function(textarea) { !event.altKey && !event.metaKey) { if (inTag()) { - appendText("\t"); + appendText('\t'); event.preventDefault(); return; } @@ -1220,9 +1241,8 @@ phpbb.applyCodeEditor = function(textarea) { code = '' + /^\s*/g.exec(lastLine); if (code.length > 0) { - appendText("\n" + code); + appendText('\n' + code); event.preventDefault(); - return; } } } @@ -1247,22 +1267,22 @@ phpbb.toggleDropdown = function() { var $this = $(this), options = $this.data('dropdown-options'), parent = options.parent, - visible = parent.hasClass('dropdown-visible'); + visible = parent.hasClass('dropdown-visible'), + direction; if (!visible) { // Hide other dropdown menus $(phpbb.dropdownHandles).each(phpbb.toggleDropdown); // Figure out direction of dropdown - var direction = options.direction, - verticalDirection = options.verticalDirection, + direction = options.direction; + var verticalDirection = options.verticalDirection, offset = $this.offset(); if (direction == 'auto') { if (($(window).width() - $this.outerWidth(true)) / 2 > offset.left) { direction = 'right'; - } - else { + } else { direction = 'left'; } } @@ -1272,12 +1292,7 @@ phpbb.toggleDropdown = function() { var height = $(window).height(), top = offset.top - $(window).scrollTop(); - if (top < height * 0.7) { - verticalDirection = 'down'; - } - else { - verticalDirection = 'up'; - } + verticalDirection = (top < height * 0.7) ? 'down' : 'up'; } parent.toggleClass(options.upClass, verticalDirection == 'up').toggleClass(options.downClass, verticalDirection == 'down'); } @@ -1304,8 +1319,7 @@ phpbb.toggleDropdown = function() { if (offset < 2) { $this.css('left', (2 - offset) + 'px'); - } - else if ((offset + width + 2) > windowWidth) { + } else if ((offset + width + 2) > windowWidth) { $this.css('margin-left', (windowWidth - offset - width - 2) + 'px'); } @@ -1342,8 +1356,7 @@ phpbb.toggleDropdown = function() { var e = arguments[0]; e.preventDefault(); e.stopPropagation(); - } - catch (error) { } + } catch (error) { } } return false; }; @@ -1354,7 +1367,7 @@ phpbb.toggleDropdown = function() { phpbb.toggleSubmenu = function(e) { $(this).siblings('.dropdown-submenu').toggle(); e.preventDefault(); -} +}; /** * Register dropdown menu @@ -1364,8 +1377,7 @@ phpbb.toggleSubmenu = function(e) { * @param {jQuery} dropdown Dropdown menu. * @param {Object} options List of options. Optional. */ -phpbb.registerDropdown = function(toggle, dropdown, options) -{ +phpbb.registerDropdown = function(toggle, dropdown, options) { var ops = { parent: toggle.parent(), // Parent item to add classes to direction: 'auto', // Direction of dropdown menu. Possible values: auto, left, right @@ -1411,8 +1423,8 @@ phpbb.colorPalette = function(dir, width, height) { numberList[3] = 'BF'; numberList[4] = 'FF'; - var table_class = (dir == 'h') ? 'horizontal-palette' : 'vertical-palette'; - html += '