diff options
Diffstat (limited to 'wiki/lib/scripts/behaviour.js')
-rw-r--r-- | wiki/lib/scripts/behaviour.js | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/wiki/lib/scripts/behaviour.js b/wiki/lib/scripts/behaviour.js deleted file mode 100644 index 18308d6..0000000 --- a/wiki/lib/scripts/behaviour.js +++ /dev/null @@ -1,195 +0,0 @@ -/** - * Hides elements with a slide animation - * - * @param {function} fn optional callback to run after hiding - * @param {bool} noaria supress aria-expanded state setting - * @author Adrian Lang <mail@adrianlang.de> - */ -jQuery.fn.dw_hide = function(fn, noaria) { - if(!noaria) this.attr('aria-expanded', 'false'); - return this.slideUp('fast', fn); -}; - -/** - * Unhides elements with a slide animation - * - * @param {function} fn optional callback to run after hiding - * @param {bool} noaria supress aria-expanded state setting - * @author Adrian Lang <mail@adrianlang.de> - */ -jQuery.fn.dw_show = function(fn, noaria) { - if(!noaria) this.attr('aria-expanded', 'true'); - return this.slideDown('fast', fn); -}; - -/** - * Toggles visibility of an element using a slide element - * - * @param {bool} state the current state of the element (optional) - * @param {function} fn callback after the state has been toggled - * @param {bool} noaria supress aria-expanded state setting - */ -jQuery.fn.dw_toggle = function(state, fn, noaria) { - return this.each(function() { - var $this = jQuery(this); - if (typeof state === 'undefined') { - state = $this.is(':hidden'); - } - $this[state ? "dw_show" : "dw_hide" ](fn, noaria); - }); -}; - -/** - * Automatic behaviours - * - * This class wraps various JavaScript functionalities that are triggered - * automatically whenever a certain object is in the DOM or a certain CSS - * class was found - */ -var dw_behaviour = { - - init: function(){ - dw_behaviour.focusMarker(); - dw_behaviour.scrollToMarker(); - dw_behaviour.removeHighlightOnClick(); - dw_behaviour.quickSelect(); - dw_behaviour.checkWindowsShares(); - dw_behaviour.subscription(); - - dw_behaviour.revisionBoxHandler(); - jQuery(document).on('click','#page__revisions input[type=checkbox]', - dw_behaviour.revisionBoxHandler - ); - - jQuery('.bounce').effect('bounce', {times:10}, 2000 ); - }, - - /** - * Looks for an element with the ID scroll__here at scrolls to it - */ - scrollToMarker: function(){ - var $obj = jQuery('#scroll__here'); - if($obj.length) { - if($obj.offset().top != 0) { - jQuery('html, body').animate({ - scrollTop: $obj.offset().top - 100 - }, 500); - } else { - // hidden object have no offset but can still be scrolled into view - $obj[0].scrollIntoView(); - } - } - }, - - /** - * Looks for an element with the ID focus__this at sets focus to it - */ - focusMarker: function(){ - jQuery('#focus__this').focus(); - }, - - /** - * Remove all search highlighting when clicking on a highlighted term - */ - removeHighlightOnClick: function(){ - jQuery('span.search_hit').click( - function(e){ - jQuery(e.target).removeClass('search_hit', 1000); - } - ); - }, - - /** - * Autosubmit quick select forms - * - * When a <select> tag has the class "quickselect", this script will - * automatically submit its parent form when the select value changes. - * It also hides the submit button of the form. - * - * @author Andreas Gohr <andi@splitbrain.org> - */ - quickSelect: function(){ - jQuery('select.quickselect') - .change(function(e){ e.target.form.submit(); }) - .closest('form').find(':button').not('.show').hide(); - }, - - /** - * Display error for Windows Shares on browsers other than IE - * - * @author Michael Klier <chi@chimeric.de> - */ - checkWindowsShares: function() { - if(!LANG.nosmblinks || navigator.userAgent.match(/(Trident|MSIE)/)) { - // No warning requested or none necessary - return; - } - - jQuery('a.windows').on('click', function(){ - alert(LANG.nosmblinks.replace(/\\n/,"\n")); - }); - }, - - /** - * Hide list subscription style if target is a page - * - * @author Adrian Lang <lang@cosmocode.de> - * @author Pierre Spring <pierre.spring@caillou.ch> - */ - subscription: function(){ - var $form, $list, $digest; - - $form = jQuery('#subscribe__form'); - if (0 === $form.length) return; - - $list = $form.find("input[name='sub_style'][value='list']"); - $digest = $form.find("input[name='sub_style'][value='digest']"); - - $form.find("input[name='sub_target']") - .click( - function () { - var $this = jQuery(this), show_list; - if (!$this.prop('checked')) { - return; - } - - show_list = $this.val().match(/:$/); - $list.parent().dw_toggle(show_list); - if (!show_list && $list.prop('checked')) { - $digest.prop('checked', 'checked'); - } - } - ) - .filter(':checked') - .click(); - }, - - /** - * disable multiple revisions checkboxes if two are checked - * - * @author Andreas Gohr <andi@splitbrain.org> - * @author Anika Henke <anika@selfthinker.org> - */ - revisionBoxHandler: function() { - var $revisions = jQuery('#page__revisions'); - var $all = jQuery('input[type=checkbox]', $revisions); - var $checked = $all.filter(':checked'); - var $button = jQuery('button', $revisions); - - if($checked.length < 2) { - $all.removeAttr('disabled'); - $button.attr('disabled', true); - } else { - $all.attr('disabled', true); - $button.removeAttr('disabled'); - $checked.each(function(i) { - jQuery(this).removeAttr('disabled'); - if(i>1) { - jQuery(this).attr('checked', false); - } - }); - } - } -}; - -jQuery(dw_behaviour.init); |