PageSourceSearch

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

js ponteceso.gal collected 2026-10-02 12:50:53 UTC 11,478 bytes, 271 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: 'Preferenzas del sitio',
32                    value: 'preferences',
33                    description: 'Estas son cookies que están relacionadas coas preferenzas do 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: 'Nesta web gardamos datos pesoais con cookies propias e de terceiros, para xestionar o funcionamento e a seguridade da páxina, e con fins analíticos. Pode configurar a suas preferencias premendo no botón "Axustar preferencias". Se desexa obter mais información pode consultar a nosa ',
48            link: '/privacy-policy',
49            delay: 2000,
50            expires: 30,
51            moreInfoLabel: 'Política de cookies',
52			editPreferences: 'Xestionar preferencias das cookies',
53            acceptBtnLabel: 'Acepto cookies',
54			acceptBtnLabelNecessary: 'Rexeitar',
55            advancedBtnLabel: 'Configuración de cookies',
56            cookieTypesTitle: 'Seleccionar cookies para aceptar',
57            fixedCookieTypeLabel:'Necesaria',
58            fixedCookieTypeDesc: 'Son cookies imprescindibles para que o 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[]" id="necessary-cookies" value="necessary" checked="checked" 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				//marco todas para aceptarlas
110                $('input[name="gdpr[]"]').prop('checked', true);
111
112                // Save users cookie preferences (in a cookie!)
113                var prefs = [];
114                $.each($('input[name="gdpr[]"]').serializeArray(), function(i, field){
115                    prefs.push(field.value);
116                });
117                setCookie('cookieControlPrefs', encodeURIComponent(JSON.stringify(prefs)), 365);
118
119                // Run callback function
120                settings.onAccept.call(this);
121				
122				//recargo al aceptar para que no se pierda la estadística
123				location.reload();
124            });
125			
126			// Solo aceptar necesarias
127            $('body').on('click','#gdpr-cookie-accept-necessary', function(){
128                // Set cookie
129                dropCookie(true, settings.expires);
130
131				                
132				//marco solo necesarias
133                $('input[name="gdpr[]"][id="necessary-cookies"]').prop('checked', true);
134
135                // Save users cookie preferences (in a cookie!)
136                var prefs = [];
137                
138				//solo el valor de las necesarias
139                prefs.push("necessary");
140              
141                setCookie('cookieControlPrefs', encodeURIComponent(JSON.stringify(prefs)), 365);
142
143                // Run callback function
144                settings.onAccept.call(this);
145				
146				//recargo al aceptar para que no se pierda la estadística
147				location.reload();
148            });
149            // Toggle advanced cookie options
150            $('body').on('click', '#gdpr-cookie-advanced', function(){
151                // Uncheck all checkboxes except for the disabled 'necessary'
152                // one and set 'data-auto' to OFF for all. The user can now
153                // select the cookies they want to accept.
154                $('input[name="gdpr[]"]:not(:disabled)').attr('data-auto', 'off').prop('checked', false);
155                $('#gdpr-cookie-types').slideDown('fast', function(){
156                    $('#gdpr-cookie-advanced').prop('disabled', true);
157                });
158            });
159
160        } else {
161			
162			$('body').on('click','#ihavecookiesBtnReopen', function(){
163				console.log("click");
164				$('body').ihavecookies(options, 'reinit');
165			});
166			
167			var cookieMessageEdit = '<div id="capa-gestionar-preferencias"><a href="javascript:;" id="ihavecookiesBtnReopen">'+settings.editPreferences+'</a></div>';
168            setTimeout(function(){
169                $($element).append(cookieMessageEdit);
170                $('#gdpr-cookie-message').hide().fadeIn('slow', function(){
171                    // If reinit'ing, open the advanced section of message
172                    // and re-check all previously selected options.
173                    if (event == 'reinit') {
174                        $('#gdpr-cookie-advanced').trigger('click');
175                        $.each(preferences, function(index, field) {
176                            $('input#gdpr-cookietype-' + field).prop('checked', true);
177                        });
178                    }
179                });
180            }, settings.delay);
181			
182            var cookieVal = true;
183            if (myCookie == 'false') {
184                cookieVal = false;
185            }
186            dropCookie(cookieVal, settings.expires);
187        }
188
189        // Uncheck any checkboxes on page load
190        if (settings.uncheckBoxes === true) {
191            $('input[type="checkbox"].ihavecookies').prop('checked', true);
192        }
193
194    };
195
196    // Method to get cookie value
197    $.fn.ihavecookies.cookie = function() {
198        var preferences = getCookie('cookieControlPrefs');
199        return JSON.parse(preferences);
200    };
201
202    // Method to check if user cookie preference exists
203    $.fn.ihavecookies.preference = function(cookieTypeValue) {
204        var control = getCookie('cookieControl');
205        var preferences = getCookie('cookieControlPrefs');
206        preferences = JSON.parse(preferences);
207        if (control === false) {
208            return false;
209        }
210        if (preferences === false || preferences.indexOf(cookieTypeValue) === -1) {
211            return false;
212        }
213        return true;
214    };
215
216    /*
217    |--------------------------------------------------------------------------
218    | Drop Cookie
219    |--------------------------------------------------------------------------
220    |
221    | Function to drop the cookie with a boolean value of true.
222    |
223    */
224    var dropCookie = function(value, expiryDays) {
225        setCookie('cookieControl', value, expiryDays);
226        $('#gdpr-cookie-message').fadeOut('fast', function() {
227            $(this).remove();
228        });
229    };
230
231    /*
232    |--------------------------------------------------------------------------
233    | Set Cookie
234    |--------------------------------------------------------------------------
235    |
236    | Sets cookie with 'name' and value of 'value' for 'expiry_days'.
237    |
238    */
239    var setCookie = function(name, value, expiry_days) {
240        var d = new Date();
241        d.setTime(d.getTime() + (expiry_days*24*60*60*1000));
242        var expires = "expires=" + d.toUTCString();
243        document.cookie = name + "=" + value + ";" + expires + ";path=/";
244        return getCookie(name);
245    };
246
247    /*
248    |--------------------------------------------------------------------------
249    | Get Cookie
250    |--------------------------------------------------------------------------
251    |
252    | Gets cookie called 'name'.
253    |
254    */
255    var getCookie = function(name) {
256        var cookie_name = name + "=";
257        var decodedCookie = decodeURIComponent(document.cookie);
258        var ca = decodedCookie.split(';');
259        for (var i = 0; i < ca.length; i++) {
260            var c = ca[i];
261            while (c.charAt(0) == ' ') {
262                c = c.substring(1);
263            }
264            if (c.indexOf(cookie_name) === 0) {
265                return c.substring(cookie_name.length, c.length);
266            }
267        }
268        return false;
269    };
270
271}(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.