stapel_eliz Posted June 25, 2018 Report Posted June 25, 2018 I am trying to coordinate between a GDPR cookie-setting script and Revive. The cookie-setting script starts out as "false" (so no cookies are supposed to be set) and asks the user to pick the user's "level" of cookies ("necessary", "preferences", "statistics", and "marketing"). The script then sets a cookie as either a "0" (meaning "opts out of everything non-necessary") or else as a more standard type cookie (containing something along the lines of "necessary:true,preferences:[value],statistics:[value],marketing:[value]", where [value] is "true" or "false"). For the purposes of discussion, let's call the cookie "CB". I have figured out how to have a Javascript check CB, and return either "true" for marketing, or else "false", writing this value (as a string) into a global variable "cb2ox" (for "converting CB's "marketing" value to an OpenX tag value"). I have figured out how to have another Javascript add "data-revive-cb2ox=[value of cb2ox]" to the "ins" tag in the HTML of a given webpage. (That is, if you view the DOM for the page, the new name-value pair is displayed within the "ins" tag.) I've done this scripting set-up on a page that I'm using for testing. I have set a Delivery Rule (that is, "Only display this banner when:") as: "(Site-PageURL DoesNotContain [testing page's URL]) OR (Site-Variable cb2ox Contains true)" If I'm understanding the Rule correctly, this means that ads will be displayed in the customary way on all pages other than [testing page's URL]. However, when the URL is [testing page's URL], the other rule should be checked; that is, the value of "data-revive-cb2ox" should be checked and, if NOT "true", then no ads should display. However, ads are still displaying. So clearly I'm doing something wrong. There is no documentation for "Site - Variable", so the error may lie there. Or maybe I've got the Delivery Rule set up wrong. Either way, I'd appreciate advice, instruction, links,... commiseration, sympathy,... whatever.... Thank you! Eliz. Quote
stapel_eliz Posted June 27, 2018 Author Report Posted June 27, 2018 (edited) I may have found a fix, and it involves editing the "async.js" file. I am NOT a coder, so USE AT YOUR OWN RISK! In the "development" folder at the github page for Revive, the "www/delivery_dev/async.js" file contains the following: 74 /** 75 * The start event handler. Delivery can be prevented by setting e.detail.start = false. 76 * 77 * @param {CustomEvent} e 78 */ 79 start: function (e) 80 { 81 if (e.detail && e.detail.hasOwnProperty('start') && !e.detail.start) { 82 return; 83 } 84 85 rv.removeEventListener('start', rv.start); 86 87 rv.dispatchEvent('refresh'); 88 }, I took the comment to heart, and decided to copy my Javascript (which was functioning correctly in reading the GDPR cookie value) into the "async.js" file. Note: In the actual "async.js" file, everything is in one line, rather than nicely broken up so as to be easily read. For testing, I first inserted my coding without stripping all of the empty spaces, line returns, etc. So my new "start: function (e)" looks like this: start:function(g){ // Begin my custom coding for reading the cookie value var CB_value, CB_consent, cb2ox; if (document.cookie.split(';').filter(function(item){return item.indexOf('CookieConsent=') >= 0}).length){ function getCBval(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i <ca.length; i++) { var c = ca; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } } var CBval = getCBval("CookieConsent"); if (CBval == '0'){ CB_value = 0; CB_consent = false; } else{ CB_split = CBval.split(","); CB_array = new Array(); for(i=0;i<=5;i++){ CB_array = CB_split; } CB_value = CB_array[4]; if (CB_value == "marketing:true"){ CB_consent = true; } else{ CB_consent = false; } } } else{ CB_consent = false; } cb2ox = CB_consent.toString(); // End of my custom coding for reading the cookie value // Added "or cb2ox = 'false'" to "if" statement // "if" was "(g.detail&&g.detail.hasOwnProperty("start")&&!g.detail.start)" // I added an extra set of parentheses around the "if" condition // Then I added "||(cb2ox=="false")" inside the "if" condition, after the original condition if((g.detail&&g.detail.hasOwnProperty("start")&&!g.detail.start)||(cb2ox=="false")){ return } f.removeEventListener("start",f.start); f.dispatchEvent("refresh") }, In the above, I've included comments delineating my cookie coding, and also the addition in the "if" statement. I have tested the above script in each of Firefox and Internet Explorer, and it appears to work. My cookie script determines if the current website visitor has selected "true" or "false" for accepting "marketing" cookies (this information being available in the "CookieConsent" cookie). If the user has elected NOT to accept marketing cookies (so ads should not display, and the "cb2ox" variable reads "false") or if the user is seeing the GDPR screen for the first time (so GDPR regs require that no cookies be set - yet), then nothing is displayed for any of my Revive "zones". Phew! Eliz. Edited June 27, 2018 by stapel_eliz Fixing link; removing unintended italicisation of text. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.