diff options
Diffstat (limited to 'phpBB/styles/prosilver/template/forum_fn.js')
-rw-r--r-- | phpBB/styles/prosilver/template/forum_fn.js | 277 |
1 files changed, 145 insertions, 132 deletions
diff --git a/phpBB/styles/prosilver/template/forum_fn.js b/phpBB/styles/prosilver/template/forum_fn.js index eccb12e827..693211983f 100644 --- a/phpBB/styles/prosilver/template/forum_fn.js +++ b/phpBB/styles/prosilver/template/forum_fn.js @@ -25,8 +25,19 @@ function popup(url, width, height, name) { /** * Jump to page */ -function jumpto() { - var page = prompt(jump_page, on_page); +function jumpto(item) { + if (!item || !item.length) { + item = $('a.pagination-trigger[data-lang-jump-page]'); + if (!item.length) { + return; + } + } + + var jump_page = item.attr('data-lang-jump-page'), + on_page = item.attr('data-on-page'), + per_page = item.attr('data-per-page'), + base_url = item.attr('data-base-url'), + page = prompt(jump_page, on_page); if (page !== null && !isNaN(page) && page == Math.floor(page) && page > 0) { if (base_url.indexOf('?') === -1) { @@ -42,19 +53,12 @@ function jumpto() { * id = ID of parent container, name = name prefix, state = state [true/false] */ function marklist(id, name, state) { - var parent = document.getElementById(id) || document[id]; - - if (!parent) { - return; - } - - var rb = parent.getElementsByTagName('input'); - - for (var r = 0; r < rb.length; r++) { - if (rb[r].name.substr(0, name.length) === name) { - rb[r].checked = state; + jQuery('#' + id + ' input[type=checkbox][name]').each(function() { + var $this = jQuery(this); + if ($this.attr('name').substr(0, name.length) == name) { + $this.prop('checked', state); } - } + }); } /** @@ -124,29 +128,15 @@ jQuery(document).ready(function() { } function subPanels(p) { - var i, e, t; + var i; if (typeof(p) === 'string') { show_panel = p; } for (i = 0; i < panels.length; i++) { - e = document.getElementById(panels[i]); - t = document.getElementById(panels[i] + '-tab'); - - if (e) { - if (panels[i] === show_panel) { - e.style.display = 'block'; - if (t) { - t.className = 'activetab'; - } - } else { - e.style.display = 'none'; - if (t) { - t.className = ''; - } - } - } + jQuery('#' + panels[i]).css('display', panels[i] === show_panel ? 'block' : 'none'); + jQuery('#' + panels[i] + '-tab').toggleClass('activetab', panels[i] === show_panel); } } }); @@ -255,57 +245,6 @@ function play_qt_file(obj) { obj.Play(); } -/** -* Check if the nodeName of elem is name -* @author jQuery -*/ -function is_node_name(elem, name) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); -} - -/** -* Check if elem is in array, return position -* @author jQuery -*/ -function is_in_array(elem, array) { - for (var i = 0, length = array.length; i < length; i++) { - // === is correct (IE) - if (array[i] === elem) { - return i; - } - } - - return -1; -} - -/** -* Find Element, type and class in tree -* Not used, but may come in handy for those not using JQuery -* @author jQuery.find, Meik Sievertsen -*/ -function find_in_tree(node, tag, type, class_name) { - var result, element, i = 0, length = node.childNodes.length; - - for (element = node.childNodes[0]; i < length; element = node.childNodes[++i]) { - if (!element || element.nodeType !== 1) { - continue; - } - - if ((!tag || is_node_name(element, tag)) && (!type || element.type === type) - && (!class_name || is_in_array(class_name, (element.className || element).toString().split(/\s+/)) > -1)) { - return element; - } - - if (element.childNodes.length) { - result = find_in_tree(element, tag, type, class_name); - } - - if (result) { - return result; - } - } -} - var in_autocomplete = false; var last_key_entered = ''; @@ -337,50 +276,7 @@ function phpbb_check_key(event) { } /** -* Usually used for onkeypress event, to submit a form on enter -*/ -function submit_default_button(event, selector, class_name) { - // Add which for key events - if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode)) { - event.which = event.charCode || event.keyCode; - } - - if (phpbb_check_key(event)) { - return true; - } - - var current = selector.parentNode; - - // Search parent form element - while (current && (!current.nodeName || current.nodeType !== 1 || !is_node_name(current, 'form')) && current !== document) { - current = current.parentNode; - } - - // Find the input submit button with the class name - //current = find_in_tree(current, 'input', 'submit', class_name); - var input_tags = current.getElementsByTagName('input'); - current = false; - - for (var i = 0, element = input_tags[0]; i < input_tags.length; element = input_tags[++i]) { - if (element.type === 'submit' && is_in_array(class_name, (element.className || element).toString().split(/\s+/)) > -1) { - current = element; - } - } - - if (!current) { - return true; - } - - // Submit form - current.focus(); - current.click(); - return false; -} - -/** * Apply onkeypress event for forcing default submit button on ENTER key press -* The jQuery snippet used is based on http://greatwebguy.com/programming/dom/default-html-button-submit-on-enter-with-jquery/ -* The non-jQuery code is a mimick of the jQuery code ;) */ function apply_onkeypress_event() { jQuery('form input[type=text], form input[type=password]').on('keypress', function (e) { @@ -406,20 +302,137 @@ function apply_onkeypress_event() { jQuery(document).ready(apply_onkeypress_event); /** -* Adjust HTML code for IE8 and older versions +* Run MSN action +*/ +function msn_action(action, address) +{ + // Does the browser support the MSNM object? + var app = document.getElementById('objMessengerApp'); + + if (!app || !app.MyStatus) { + var lang = $('form[data-lang-im-msnm-browser]'); + if (lang.length) { + alert(lang.attr('data-lang-im-msnm-browser')); + } + return false; + } + + // Is MSNM connected? + if (app.MyStatus == 1) { + var lang = $('form[data-lang-im-msnm-connect]'); + if (lang.length) { + alert(lang.attr('data-lang-im-msnm-connect')); + } + return false; + } + + // Do stuff + try { + switch (action) { + case 'add': + app.AddContact(0, address); + break; + + case 'im': + app.InstantMessage(address); + break; + } + } + catch (e) { + return; + } +} + +/** +* Add to your contact list +*/ +function add_contact(address) +{ + msn_action('add', address); +} + +/** +* Write IM to contact +*/ +function im_contact(address) +{ + msn_action('im', address); +} + +/** +* Functions for user search popup +*/ +function insert_user(formId, value) +{ + var form = jQuery(formId), + formName = form.attr('data-form-name'), + fieldName = form.attr('data-field-name'), + item = opener.document.forms[formName][fieldName]; + + if (item.value.length && item.type == 'textarea') { + value = item.value + "\n" + value; + } + + item.value = value; +} + +function insert_marked_users(formId, users) +{ + if (typeof(users.length) == "undefined") + { + if (users.checked) + { + insert_user(formId, users.value); + } + } + else if (users.length > 0) + { + for (i = 0; i < users.length; i++) + { + if (users[i].checked) + { + insert_user(formId, users[i].value); + } + } + } + + self.close(); +} + +function insert_single_user(formId, user) +{ + insert_user(formId, user); + self.close(); +} + +/** +* Run onload functions */ (function($) { $(document).ready(function() { + // Focus forms + $('form[data-focus]:first').each(function() { + $('#' + this.getAttribute('data-focus')).focus(); + }); + + // Reset avatar dimensions when changing URL or EMAIL + $('input[data-reset-on-edit]').bind('keyup', function() { + $(this.getAttribute('data-reset-on-edit')).val(''); + }); + + // Pagination + $('a.pagination-trigger').click(function() { + jumpto($(this)); + }); + + // Adjust HTML code for IE8 and older versions var test = document.createElement('div'), oldBrowser = (typeof test.style.borderRadius == 'undefined'); delete test; - if (!oldBrowser) { - return; + if (oldBrowser) { + // Fix .linkslist.bulletin lists + $('ul.linklist.bulletin li:first-child, ul.linklist.bulletin li.rightside:last-child').addClass('no-bulletin'); } - - // Fix .linkslist.bulletin lists - $('ul.linklist.bulletin li:first-child, ul.linklist.bulletin li.rightside:last-child').addClass('no-bulletin'); }); })(jQuery); - |