| @@ -1,162 +1,32 @@ | ||
| 1 | -jQuery(document).ready(function ($) { | |
| 2 | - /** | |
| 3 | - * Click triggered flyouts, modelled on the popovers WordPress uses for the | |
| 4 | - * publish date. Only one is open at a time; escape and outside clicks close | |
| 5 | - * it and return focus to the trigger it belongs to. | |
| 6 | - */ | |
| 7 | - var flyoutIdCounter = 0; | |
| 8 | - var $openToggle = null; | |
| 9 | - | |
| 10 | - var getPanel = function ($toggle) { | |
| 11 | - return $toggle.next('.uam_flyout_panel'); | |
| 12 | - }; | |
| 13 | - | |
| 14 | - var positionPanel = function ($toggle, $panel) { | |
| 15 | - $panel.removeClass('uam_flyout_panel_above').css('left', 0); | |
| 16 | - | |
| 17 | - var rect = $panel[0].getBoundingClientRect(); | |
| 18 | - var overflowRight = rect.right - (window.innerWidth - 8); | |
| 19 | - | |
| 20 | - if (overflowRight > 0) { | |
| 21 | - $panel.css('left', -overflowRight + 'px'); | |
| 22 | - } | |
| 23 | - | |
| 24 | - var left = $panel[0].getBoundingClientRect().left; | |
| 25 | - | |
| 26 | - if (left < 8) { | |
| 27 | - $panel.css('left', (parseFloat($panel.css('left')) || 0) + (8 - left) + 'px'); | |
| 28 | - } | |
| 29 | - | |
| 30 | - // Flip above the trigger when there is no room below, the way the | |
| 31 | - // publish date popover does. | |
| 32 | - var panelRect = $panel[0].getBoundingClientRect(); | |
| 33 | - var toggleTop = $toggle[0].getBoundingClientRect().top; | |
| 34 | - | |
| 35 | - if (panelRect.bottom > window.innerHeight - 8 && toggleTop > panelRect.height + 8) { | |
| 36 | - $panel.addClass('uam_flyout_panel_above'); | |
| 37 | - } | |
| 38 | - }; | |
| 39 | - | |
| 40 | - var closeFlyout = function (returnFocus) { | |
| 41 | - if ($openToggle === null) { | |
| 42 | - return; | |
| 43 | - } | |
| 44 | - | |
| 45 | - getPanel($openToggle).hide(); | |
| 46 | - $openToggle.attr('aria-expanded', 'false'); | |
| 47 | - | |
| 48 | - if (returnFocus === true) { | |
| 49 | - $openToggle.trigger('focus'); | |
| 50 | - } | |
| 51 | - | |
| 52 | - $openToggle = null; | |
| 53 | - }; | |
| 54 | - | |
| 55 | - var openFlyout = function ($toggle) { | |
| 56 | - var $panel = getPanel($toggle); | |
| 57 | - | |
| 58 | - if ($panel.length === 0) { | |
| 59 | - return; | |
| 60 | - } | |
| 61 | - | |
| 62 | - if (!$panel.attr('id')) { | |
| 63 | - flyoutIdCounter++; | |
| 64 | - $panel.attr('id', 'uam_flyout_panel_' + flyoutIdCounter); | |
| 65 | - } | |
| 66 | - | |
| 67 | - $toggle.attr('aria-controls', $panel.attr('id')); | |
| 68 | - $toggle.attr('aria-expanded', 'true'); | |
| 69 | - $panel.show(); | |
| 70 | - positionPanel($toggle, $panel); | |
| 71 | - $openToggle = $toggle; | |
| 72 | - }; | |
| 73 | - | |
| 74 | - jQuery(document).on('click', '.uam_flyout_toggle', function (event) { | |
| 75 | - var $toggle = jQuery(this); | |
| 76 | - var wasOpen = $toggle.attr('aria-expanded') === 'true'; | |
| 77 | - | |
| 78 | - event.preventDefault(); | |
| 79 | - event.stopPropagation(); | |
| 80 | - closeFlyout(false); | |
| 81 | - | |
| 82 | - if (wasOpen === false) { | |
| 83 | - openFlyout($toggle); | |
| 84 | - } | |
| 85 | - }); | |
| 86 | - | |
| 87 | - // Clearing both fields removes the time restriction on save, because an | |
| 88 | - // empty value makes the server store no date at all. | |
| 89 | - jQuery(document).on('click', '.uam_clear_dates', function () { | |
| 90 | - var $panel = jQuery(this).closest('.uam_flyout_panel'); | |
| 91 | - var $toggle = $panel.prev('.uam_flyout_toggle'); | |
| 92 | - var emptyLabel = $toggle.data('empty-label'); | |
| 93 | - | |
| 94 | - $panel.find('input').val(''); | |
| 95 | - | |
| 96 | - if (emptyLabel) { | |
| 97 | - $toggle.text(emptyLabel); | |
| 98 | - } | |
| 99 | - | |
| 100 | - closeFlyout(true); | |
| 101 | - }); | |
| 102 | - | |
| 103 | - jQuery(document).on('click', function (event) { | |
| 104 | - if ($openToggle !== null && jQuery(event.target).closest('.uam_flyout_panel').length === 0) { | |
| 105 | - closeFlyout(false); | |
| 106 | - } | |
| 107 | - }); | |
| 108 | - | |
| 109 | - jQuery(document).on('keydown', function (event) { | |
| 110 | - if (event.key === 'Escape' && $openToggle !== null) { | |
| 111 | - closeFlyout(true); | |
| 112 | - } | |
| 113 | - }); | |
| 114 | - | |
| 1 | +jQuery(document).ready(function () { | |
| 115 | 2 | //Functions for the setting page |
| 116 | - var toggleGroup = function (group, elementIndex, hiddenFlag, elementsToHide) { | |
| 117 | - hiddenFlag = hiddenFlag || 'true'; | |
| 118 | - var $group = jQuery(group); | |
| 119 | - var $inputs = jQuery('tr:eq('+elementIndex+') input', $group); | |
| 3 | + var toggleGroup = function (groupName) { | |
| 4 | + var $groups = jQuery(groupName); | |
| 120 | 5 | |
| 121 | - var toggleElement = function (element) { | |
| 122 | - var $element = jQuery(element); | |
| 123 | - var $subElements = jQuery('tr:gt('+elementIndex+')', $group); | |
| 124 | - var currentState = ($element.val() === hiddenFlag); | |
| 125 | - elementsToHide = elementsToHide || $subElements.length; | |
| 6 | + jQuery.each($groups, function (key, group) { | |
| 7 | + var $group = jQuery(group); | |
| 8 | + var $firstElements = jQuery('tr:first input', $group); | |
| 126 | 9 | |
| 127 | - for (var index = 0; index < $subElements.length; index++) { | |
| 128 | - var $subElement = jQuery($subElements[index]); | |
| 129 | - var data = $subElement.data('hidden') || {}; | |
| 130 | - data[elementIndex] = (index < elementsToHide) ? currentState : !currentState; | |
| 131 | - $subElement.data('hidden', data); | |
| 10 | + var toggleElements = function (element) { | |
| 11 | + var $element = jQuery(element); | |
| 132 | 12 | |
| 133 | - var showElement = true; | |
| 13 | + if ($element.val() === 'true') { | |
| 14 | + jQuery('tr:not(:first)', $group).hide(); | |
| 15 | + } else { | |
| 16 | + jQuery('tr:not(:first)', $group).show(); | |
| 17 | + } | |
| 18 | + }; | |
| 134 | 19 | |
| 135 | - jQuery.each(data, function(key, value) { | |
| 136 | - if (value === true) { | |
| 137 | - showElement = false; | |
| 138 | - return null; | |
| 139 | - } | |
| 140 | - }); | |
| 20 | + $firstElements.change(function () { | |
| 21 | + toggleElements(this); | |
| 22 | + }); | |
| 141 | 23 | |
| 142 | - $subElement.toggle(showElement); | |
| 143 | - } | |
| 144 | - }; | |
| 145 | - | |
| 146 | - $inputs.on('change', function () { | |
| 147 | - toggleElement(this); | |
| 24 | + toggleElements(jQuery('tr:first input:checked', $group)); | |
| 148 | 25 | }); |
| 149 | - | |
| 150 | - toggleElement($inputs.filter(':checked')); | |
| 151 | 26 | }; |
| 152 | 27 | |
| 153 | - toggleGroup('.uam_settings_group_post_type', 0); | |
| 154 | - toggleGroup('.uam_settings_group_post_type:not(.default)', 1); | |
| 155 | - toggleGroup('.uam_settings_group_taxonomies:not(.default)', 0); | |
| 156 | - toggleGroup('.uam_settings_group_file:not(.default)', 1); | |
| 157 | - toggleGroup('#uam_settings_group_file', 0, 'false'); | |
| 158 | - toggleGroup('#uam_settings_group_file', 4, 'false', 1); | |
| 28 | + toggleGroup('.uam_settings_group_post_type'); | |
| 159 | 29 | |
| 160 | 30 | // Functions for the setup page |
| 161 | 31 | jQuery('#uam_reset_confirm').on('change paste keyup', function () { |
| 162 | 32 | var $button = jQuery('#uam_reset_submit'); |
| @@ -165,15 +35,6 @@ | ||
| 165 | 35 | $button.removeAttr('disabled'); |
| 166 | 36 | } else if (typeof $button.attr('disabled') === 'undefined') { |
| 167 | 37 | $button.attr('disabled', 'disabled'); |
| 168 | 38 | } |
| 169 | - }); | |
| 170 | - | |
| 171 | - jQuery('#uam_settings_group_section').on('change', function () { | |
| 172 | - var $selected = jQuery(this).find(':selected'); | |
| 173 | - window.location.href = $selected.data('link'); | |
| 174 | - }); | |
| 175 | - | |
| 176 | - /** global: ajaxurl */ | |
| 177 | - $('#uam_dynamic_groups').uamGroupSuggest(ajaxurl + '?action=uam-get-dynamic-group', { delay: 500, multiple: true }); | |
| 178 | - $('.uam_time_input').uamTimeInput(); | |
| 39 | + }) | |
| 179 | 40 | }); |