PageSourceSearch

https://www.ponteceso.gal/ihavecookies/jquery.ihavecookies.js

js ponteceso.gal collected 2026-10-02 12:51:02 UTC 11,615 bytes, 275 lines download raw bytes

1/*!
2 * ihavecookies - jQuery plugin for displaying cookie/privacy message
3 * v0.3.2
4 *
5 * Copyright (c) 2018 Ketan Mistry (https://iamketan.com.au)
6 * Licensed under the MIT license:
7 * http://www.opensource.org/licenses/mit-license.php
8 *
9 */
10(function($) {
11
12    /*
13    |--------------------------------------------------------------------------
14    | Cookie Message
15    |--------------------------------------------------------------------------
16    |
17    | Displays the cookie message on first visit or 30 days after their
18    | last visit.
19    |
20    | @param event - 'reinit' to reopen the cookie message
21    |
22    */
23    $.fn.ihavecookies = function(options, event) {
24
25        var $element = $(this);
26
27        // Set defaults
28        var settings = $.extend({
29            cookieTypes: [
30                /*{
31                    type: 'Preferencias del sitio',
32                    value: 'preferences',
33                    description: 'Estas son cookies que están relacionadas con las preferencias de su sitio, colores del sitio.'
34                },*/
35                {
36                    type: 'Analíticas',
37                    value: 'analytics',
38                    description: 'Cookies related to site visits, browser types, etc.'
39                },
40                /*{
41                    type: 'Marketing',
42                    value: 'marketing',
43                    description: 'Cookies related to marketing, e.g. newsletters, social media, etc'
44                }*/
45            ],
46            title: 'Cookies & Privacy',
47            message: 'En esta web recabamos datos personales con cookies propias y de terceros, para gestionar el funcionamiento y la seguridad de la página, y con fines analíticos. Puede configurar sus preferencias a través del botón de “Ajustar preferencias”. Si desea obtener más información puede consultar nuestra ',
48            link: '/privacy-policy',
49            delay: 2000,
50            expires: 30,
51            moreInfoLabel: 'Política de cookies',
52			editPreferences: 'Gestionar preferencias de las cookies',
53            acceptBtnLabel: 'Acepto cookies',
54			acceptBtnLabelNecessary: 'Rechazar',
55            advancedBtnLabel: 'Ajustar preferencias',
56            cookieTypesTitle: 'Seleccionar cookies para aceptar',
57            fixedCookieTypeLabel:'Necesaria',
58            fixedCookieTypeDesc: 'Son cookies imprescindibles para que el sitio web funcione correctamente.',
59            onAccept: function(){},
60            uncheckBoxes: false
61        }, options);
62
63        var myCookie = getCookie('cookieControl');
64        var myCookiePrefs = getCookie('cookieControlPrefs');
65        if (!myCookie || !myCookiePrefs || event == 'reinit') {
66            // Remove all instances of the cookie message so it's not duplicated
67            $('#gdpr-cookie-message').remove();
68
69            // Set the 'necessary' cookie type checkbox which can not be unchecked
70            var cookieTypes = '<li><input type="checkbox" name="gdpr[]" value="necessary" checked="checked" id="necessary-cookies" disabled="disabled"> <label title="' + settings.fixedCookieTypeDesc + '">' + settings.fixedCookieTypeLabel + '</label></li>';
71
72            // Generate list of cookie type checkboxes
73            preferences = JSON.parse(myCookiePrefs);
74            $.each(settings.cookieTypes, function(index, field) {
75                if (field.type !== '' && field.value !== '') {
76                    var cookieTypeDescription = '';
77                    if (field.description !== false) {
78                        cookieTypeDescription = ' title="' + field.description + '"';
79                    }
80                    cookieTypes += '<li><input type="checkbox" checked="checked" id="gdpr-cookietype-' + field.value + '" name="gdpr[]" value="' + field.value + '" data-auto="on"> <label for="gdpr-cookietype-' + field.value + '"' + cookieTypeDescription + '>' + field.type + '</label></li>';
81                }
82            });
83
84            // Display cookie message on page
85            var cookieMessage = '<div id="gdpr-cookie-message"><h4>' + settings.title + '</h4><p>' + settings.message + '<div id="gdpr-cookie-types" style="display:none;"><h5>' + settings.cookieTypesTitle + '</h5><ul>' + cookieTypes + '</ul></div><p><button id="gdpr-cookie-accept-necessary" type="button">' + settings.acceptBtnLabelNecessary + '</button><button id="gdpr-cookie-accept" type="button">' + settings.acceptBtnLabel + '</button><button id="gdpr-cookie-advanced" type="button">' + settings.advancedBtnLabel + '</button></p></div>';
86			
87			//econdo la gestión de preferencias
88			$("#capa-gestionar-preferencias").hide();
89			
90            setTimeout(function(){
91                $($element).append(cookieMessage);
92                $('#gdpr-cookie-message').hide().fadeIn('slow', function(){
93                    // If reinit'ing, open the advanced section of message
94                    // and re-check all previously selected options.
95                    if (event == 'reinit') {
96                        $('#gdpr-cookie-advanced').trigger('click');
97                        $.each(preferences, function(index, field) {
98                            $('input#gdpr-cookietype-' + field).prop('checked', true);
99                        });
100                    }
101                });
102            }, settings.delay);
103
104            // When accept button is clicked drop cookie
105            $('body').on('click','#gdpr-cookie-accept', function(){
106                // Set cookie
107                dropCookie(true, settings.expires);
108
109                // If 'data-auto' is set to ON, tick all checkboxes because
110                // the user hasn't clicked the customise cookies button
111                $('input[name="gdpr[]"]').prop('checked', true);
112
113                // Save users cookie preferences (in a cookie!)
114                var prefs = [];
115                $.each($('input[name="gdpr[]"]').serializeArray(), function(i, field){
116                    prefs.push(field.value);
117                });
118                setCookie('cookieControlPrefs', encodeURIComponent(JSON.stringify(prefs)), 365);
119
120                // Run callback function
121                settings.onAccept.call(this);
122				
123				//recargo al aceptar para que no se pierda la estadística
124				location.reload();
125            });
126			
127			// Solo aceptar necesarias
128            $('body').on('click','#gdpr-cookie-accept-necessary', function(){
129                // Set cookie
130                dropCookie(true, settings.expires);
131
132				                
133				//marco solo necesarias
134                $('input[name="gdpr[]"][id="necessary-cookies"]').prop('checked', true);
135
136                // Save users cookie preferences (in a cookie!)
137                var prefs = [];
138                
139				//solo el valor de las necesarias
140                prefs.push("necessary");
141              
142                setCookie('cookieControlPrefs', encodeURIComponent(JSON.stringify(prefs)), 365);
143
144                // Run callback function
145                settings.onAccept.call(this);
146				
147				//recargo al aceptar para que no se pierda la estadística
148				location.reload();
149            });
150
151			
152			
153            // Toggle advanced cookie options
154            $('body').on('click', '#gdpr-cookie-advanced', function(){
155                // Uncheck all checkboxes except for the disabled 'necessary'
156                // one and set 'data-auto' to OFF for all. The user can now
157                // select the cookies they want to accept.
158                $('input[name="gdpr[]"]:not(:disabled)').attr('data-auto', 'off').prop('checked', false);
159                $('#gdpr-cookie-types').slideDown('fast', function(){
160                    $('#gdpr-cookie-advanced').prop('disabled', true);
161                });
162            });
163
164        } else {
165			
166			$('body').on('click','#ihavecookiesBtnReopen', function(){
167				console.log("click");
168				$('body').ihavecookies(options, 'reinit');
169			});
170			
171			var cookieMessageEdit = '<div id="capa-gestionar-preferencias"><a href="javascript:;" id="ihavecookiesBtnReopen">'+settings.editPreferences+'</a></div>';
172            setTimeout(function(){
173                $($element).append(cookieMessageEdit);
174                $('#gdpr-cookie-message').hide().fadeIn('slow', function(){
175                    // If reinit'ing, open the advanced section of message
176                    // and re-check all previously selected options.
177                    if (event == 'reinit') {
178                        $('#gdpr-cookie-advanced').trigger('click');
179                        $.each(preferences, function(index, field) {
180                            $('input#gdpr-cookietype-' + field).prop('checked', true);
181                        });
182                    }
183                });
184            }, settings.delay);
185			
186            var cookieVal = true;
187            if (myCookie == 'false') {
188                cookieVal = false;
189            }
190            dropCookie(cookieVal, settings.expires);
191        }
192
193        // Uncheck any checkboxes on page load
194        if (settings.uncheckBoxes === true) {
195            $('input[type="checkbox"].ihavecookies').prop('checked', true);
196        }
197
198    };
199
200    // Method to get cookie value
201    $.fn.ihavecookies.cookie = function() {
202        var preferences = getCookie('cookieControlPrefs');
203        return JSON.parse(preferences);
204    };
205
206    // Method to check if user cookie preference exists
207    $.fn.ihavecookies.preference = function(cookieTypeValue) {
208        var control = getCookie('cookieControl');
209        var preferences = getCookie('cookieControlPrefs');
210        preferences = JSON.parse(preferences);
211        if (control === false) {
212            return false;
213        }
214        if (preferences === false || preferences.indexOf(cookieTypeValue) === -1) {
215            return false;
216        }
217        return true;
218    };
219
220    /*
221    |--------------------------------------------------------------------------
222    | Drop Cookie
223    |--------------------------------------------------------------------------
224    |
225    | Function to drop the cookie with a boolean value of true.
226    |
227    */
228    var dropCookie = function(value, expiryDays) {
229        setCookie('cookieControl', value, expiryDays);
230        $('#gdpr-cookie-message').fadeOut('fast', function() {
231            $(this).remove();
232        });
233    };
234
235    /*
236    |--------------------------------------------------------------------------
237    | Set Cookie
238    |--------------------------------------------------------------------------
239    |
240    | Sets cookie with 'name' and value of 'value' for 'expiry_days'.
241    |
242    */
243    var setCookie = function(name, value, expiry_days) {
244        var d = new Date();
245        d.setTime(d.getTime() + (expiry_days*24*60*60*1000));
246        var expires = "expires=" + d.toUTCString();
247        document.cookie = name + "=" + value + ";" + expires + ";path=/";
248        return getCookie(name);
249    };
250
251    /*
252    |--------------------------------------------------------------------------
253    | Get Cookie
254    |--------------------------------------------------------------------------
255    |
256    | Gets cookie called 'name'.
257    |
258    */
259    var getCookie = function(name) {
260        var cookie_name = name + "=";
261        var decodedCookie = decodeURIComponent(document.cookie);
262        var ca = decodedCookie.split(';');
263        for (var i = 0; i < ca.length; i++) {
264            var c = ca[i];
265            while (c.charAt(0) == ' ') {
266                c = c.substring(1);
267            }
268            if (c.indexOf(cookie_name) === 0) {
269                return c.substring(cookie_name.length, c.length);
270            }
271        }
272        return false;
273    };
274
275}(jQuery));

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.