1(function ($, Drupal) { 2 3 'use strict' 4 5 $(document).ready(function () { 6 // Global variables 7 var popup_settings = drupalSettings.simple_popup_blocks.settings, 8 _html = document.documentElement 9 10 $.each(popup_settings, function (index, values) { 11 12 // Declaring variable inside foreach - so it will not global. 13 var modal_class = '', 14 block_id = values.identifier, 15 visit_counts_arr = values.visit_counts.split(','), 16 allow_cookie = true, 17 read_cookie = '', 18 cookie_val = 1, 19 match = 0, 20 css_identity = '', 21 spb_popup_id = '', 22 modal_close_class = '', 23 modal_minimize_class = '', 24 modal_minimized_class = '', 25 layout_class = '', 26 class_exists = false, 27 delays = '', 28 browser_close_trigger = true 29 // Always show popup, so prevent from creating cookie 30 if (visit_counts_arr.length == 1 && visit_counts_arr[0] == 0) { 31 allow_cookie = false 32 } 33 // Creating cookie 34 if (allow_cookie == true) { 35 read_cookie = readCookie('spb_' + block_id) 36 if (read_cookie) { 37 cookie_val = +read_cookie + 1 38 createCookie('spb_' + block_id, cookie_val, 100) 39 } 40 else { 41 createCookie('spb_' + block_id, cookie_val, 100) 42 } 43 } 44 // Match cookie 45 cookie_val = cookie_val.toString() 46 match = $.inArray(cookie_val, visit_counts_arr) 47 // Set css selector 48 css_identity = '.' 49 if (values.css_selector == 1) { 50 css_identity = '#' 51 } 52 53 // Assign dynamic css classes 54 spb_popup_id = 'spb-' + block_id 55 modal_class = block_id + '-modal' 56 modal_close_class = block_id + '-modal-close' 57 modal_minimize_class = block_id + '-modal-minimize' 58 modal_minimized_class = block_id + '-modal-minimized' 59 layout_class = '.' + modal_class + ' .spb-popup-main-wrapper' 60 // Wrap arround elements 61 $(css_identity + block_id). 62 wrap($('<div class="' + modal_class + '"></div>')) 63 // Hide the popup initially 64 $('.' + modal_class).hide() 65 // Skip the popup based on visit counts settings 66 if (match == -1 && allow_cookie == true) { 67 return true 68 } 69 // Wrap remaining elements 70 $(css_identity + block_id). 71 wrap($('<div class="spb-popup-main-wrapper"></div>')) 72 $('.' + modal_class). 73 wrap('<div id="' + spb_popup_id + 74 '" class="simple-popup-blocks-global"></div>') 75 $(css_identity + block_id). 76 before($('<div class="spb-controls"></div>')) 77 78 // Skip code for non popup pages. 79 class_exists = $('#' + spb_popup_id). 80 hasClass('simple-popup-blocks-global') 81 if (!class_exists) { 82 return true 83 } 84 // Minimize button wrap 85 if (values.minimize === "1") { 86 $("#"+spb_popup_id + " .spb-controls"). 87 prepend($('<span class="' + modal_minimize_class + 88 ' spb_minimize">-</span>')) 89 $('.' + modal_class). 90 before($('<span class="' + modal_minimized_class + 91 ' spb_minimized"></span>')) 92 } 93 // Close button wrap 94 if (values.close == 1) { 95 $("#"+spb_popup_id + " .spb-controls"). 96 prepend($('<span class="' + modal_close_class + 97 ' spb_close">×</span>')) 98 } 99 // Overlay 100 if (values.overlay == 1) { 101 $('.' + modal_class).addClass('spb_overlay') 102 } 103 // Inject layout class. 104 switch (values.layout) { 105 // Top left. 106 case '0': 107 $(layout_class).addClass('spb_top_left') 108 $(layout_class).css({ 109 'width': values.width, 110 }) 111 break 112 // Top right. 113 case '1': 114 $(layout_class).addClass('spb_top_right') 115 $(layout_class).css({ 116 'width': values.width, 117 }) 118 break 119 // Bottom left. 120 case '2': 121 $(layout_class).addClass('spb_bottom_left') 122 $(layout_class).css({ 123 'width': values.width, 124 }) 125 break 126 // Bottom right. 127 case '3': 128 $(layout_class).addClass('spb_bottom_right') 129 $(layout_class).css({ 130 'width': values.width, 131 }) 132 break 133 // Center. 134 case '4': 135 $(layout_class).addClass('spb_center') 136 $(layout_class).css({ 137 'width': values.width, 138 }) 139 break 140 // Top Center. 141 case '5': 142 $(layout_class).addClass('spb_top_center') 143 $(layout_class).css({}) 144 break 145 // Top bar. 146 case '6': 147 $(layout_class).addClass('spb_top_bar') 148 $(layout_class).css({}) 149 break 150 // Right bar. 151 case '7': 152 $(layout_class).addClass('spb_bottom_bar') 153 $(layout_class).css({}) 154 break 155 // Bottom bar. 156 case '8': 157 $(layout_class).addClass('spb_left_bar') 158 $(layout_class).css({ 159 'width': values.width, 160 }) 161 break 162 // Right bar. 163 case '9': 164 $(layout_class).addClass('spb_right_bar') 165 $(layout_class).css({ 166 'width': values.width, 167 }) 168 break 169 } 170 // Automatic trigger with delay 171 if (values.trigger_method == 0 && values.delay > 0) { 172 delays = values.delay * 1000 173 $('.' + modal_class).delay(delays).fadeIn('slow')
174 if (values.overlay == 1) { 175 setTimeout(stopTheScroll, delays) 176 } 177 } 178 // Automatic trigger without delay 179 else if (values.trigger_method == 0) { 180 $('.' + modal_class).show() 181 $(css_identity + block_id).show() 182 if (values.overlay == 1) { 183 stopTheScroll() 184 } 185 } 186 // Manual trigger 187 else if (values.trigger_method == 1) { 188 $(values.trigger_selector).click(function () { 189 $('.' + modal_class).show() 190 $(css_identity + block_id).show() 191 if (values.overlay == 1) { 192 stopTheScroll() 193 } 194 return false; 195 }) 196 } 197 // Browser close trigger 198 else if (values.trigger_method == 2) { 199 $(_html).mouseleave(function (e) { 200 // Trigger only when mouse leave on top view port 201 if (e.clientY > 20) { return } 202 // Trigger only once per page 203 if (!browser_close_trigger) { return } 204 browser_close_trigger = false 205 $('.' + modal_class).show() 206 $(css_identity + block_id).show() 207 if (values.overlay == 1) { 208 stopTheScroll() 209 } 210 }) 211 } 212 // Trigger for close button click 213 $('.' + modal_close_class).click(function () { 214 $('.' + modal_class).hide() 215 startTheScroll() 216 }) 217 // Trigger for minimize button click 218 $('.' + modal_minimize_class).click(function () { 219 $('.' + modal_class).hide() 220 startTheScroll() 221 $('.' + modal_minimized_class).show() 222 }) 223 // Trigger for minimized button click 224 $('.' + modal_minimized_class).click(function () { 225 $('.' + modal_class).show() 226 $(css_identity + block_id).show() 227 if (values.overlay == 1) { 228 stopTheScroll() 229 } 230 $('.' + modal_minimized_class).hide() 231 }) 232 // Trigger for ESC button click 233 if (values.escape == 1) { 234 $(document).keyup(function (e) { 235 if (e.keyCode == 27) { // Escape key maps to keycode `27`. 236 $('.' + modal_class).hide() 237 startTheScroll() 238 $('.' + modal_minimized_class).show() 239 } 240 }) 241 } 242 }) // Foreach end. 243 }) // document.ready end. 244 245 // Remove the scrolling while overlay active 246 function stopTheScroll () { 247 $('body').css({ 248 'overflow': 'hidden', 249 }) 250 } 251 252 // Enable the scrolling while overlay inactive 253 function startTheScroll () { 254 $('body').css({ 255 'overflow': '', 256 }) 257 } 258 259 // Creating cookie 260 function createCookie (name, value, days) { 261 if (days) { 262 var date = new Date() 263 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)) 264 var expires = '; expires=' + date.toGMTString() 265 } 266 else { 267 var expires = '' 268 } 269 document.cookie = name + '=' + value + expires + '; path=/' 270 } 271 272 // Reading cookie 273 function readCookie (name) { 274 var nameEQ = name + '=' 275 var ca = document.cookie.split(';') 276 for (var i = 0; i < ca.length; i++) { 277 var c = ca[i] 278 while (c.charAt(0) == ' ') { 279 c = c.substring(1, c.length) 280 } 281 if (c.indexOf(nameEQ) == 0) { 282 return c.substring(nameEQ.length, c.length) 283 } 284 } 285 return null 286 } 287 288})(jQuery, Drupal)
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.