1<!DOCTYPE html><html lang="en-gb"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>About us - Ancient Egypt Magazine</title><meta name="description" content="The World's leading Egyptology magazine"><meta name="generator" content="Publii Open-Source CMS for Static Site">
1<script type="gdpr-blocker/analytics">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 2 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 3 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 4 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 5 })(window,document,'script','dataLayer','G-66K2THJXL8');</script>
5<link rel="canonical" href="https://ancientegyptmagazine.com/about-us.html"><meta property="og:title" content="About us"><meta property="og:image" content="https://ancientegyptmagazine.com/media/website/ae-logo-2.png"><meta property="og:image:width" content="217"><meta property="og:image:height" content="80"><meta property="og:site_name" content="Ancient Egypt Magazine"><meta property="og:description" content="The World's leading Egyptology magazine"><meta property="og:url" content="https://ancientegyptmagazine.com/about-us.html"><meta property="og:type" content="article"><meta name="twitter:card" content="summary"><meta name="twitter:site" content="@AncientEgyptMag"><meta name="twitter:title" content="About us"><meta name="twitter:description" content="The World's leading Egyptology magazine"><meta name="twitter:image" content="https://ancientegyptmagazine.com/media/website/ae-logo-2.png"><link rel="alternate" type="application/atom+xml" href="https://ancientegyptmagazine.com/feed.xml" title="Ancient Egypt Magazine - RSS"><link rel="alternate" type="application/json" href="https://ancientegyptmagazine.com/feed.json" title="Ancient Egypt Magazine - JSON"><link rel="shortcut icon" href="https://ancientegyptmagazine.com/media/website/favicon.ico" type="image/x-icon"><link rel="preload" href="https://ancientegyptmagazine.com/assets/dynamic/fonts/lora/lora.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://ancientegyptmagazine.com/assets/dynamic/fonts/lora/lora-italic.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://ancientegyptmagazine.com/assets/dynamic/fonts/bitter/bitter.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://ancientegyptmagazine.com/assets/dynamic/fonts/bitter/bitter-italic.woff2" as="font" type="font/woff2" crossorigin><link rel="stylesheet" href="https://ancientegyptmagazine.com/assets/css/style.css?v=4d0e1de44a6a55499f5b1a1eba5f09df">
5<script type="application/ld+json">{"@context":"http://schema.org","@type":"Article","mainEntityOfPage":{"@type":"WebPage","@id":"https://ancientegyptmagazine.com/about-us.html"},"headline":"About us","datePublished":"2022-09-29T17:53+01:00","dateModified":"2025-05-06T15:05+01:00","image":{"@type":"ImageObject","url":"https://ancientegyptmagazine.com/media/website/ae-logo-2.png","height":80,"width":217},"description":"The World's leading Egyptology magazine","author":{"@type":"Person","name":"Current Publishing","url":"https://ancientegyptmagazine.com/authors/current-publishing/"},"publisher":{"@type":"Organization","name":"Current Publishing","logo":{"@type":"ImageObject","url":"https://ancientegyptmagazine.com/media/website/ae-logo-2.png","height":80,"width":217}}}</script>
5<noscript><style>img[loading] { 6 opacity: 1; 7 }</style></noscript>
7<script type="text/javascript">(function() { 8 window.sib = { 9 equeue: [], 10 client_key: "g7mp6v0g8568slg5u0mae" 11 }; 12 /* OPTIONAL: email for identify request*/ 13 // window.sib.email_id = '[email protected]'; 14 window.sendinblue = {}; 15 for (var j = ['track', 'identify', 'trackLink', 'page'], i = 0; i < j.length; i++) { 16 (function(k) { 17 window.sendinblue[k] = function() { 18 var arg = Array.prototype.slice.call(arguments); 19 (window.sib[k] || function() { 20 var t = {}; 21 t[k] = arg; 22 window.sib.equeue.push(t); 23 })(arg[0], arg[1], arg[2], arg[3]); 24 }; 25 })(j[i]); 26 } 27 var n = document.createElement("script"), 28 i = document.getElementsByTagName("script")[0]; 29 n.type = "text/javascript", n.id = "sendinblue-js", n.async = !0, n.src = "https://sibautomation.com/sa.js?key=" + window.sib.client_key, i.parentNode.insertBefore(n, i), window.sendinblue.page(); 30})();</script>
30<script>
vendor: 398 bytes, lines 30-38
30!function(f,b,e,v,n,t,s) 31{if(f.fbq)return;n=f.fbq=function(){n.callMethod? 32n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 33if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 34n.queue=[];t=b.createElement(e);t.async=!0; 35t.src=v;s=b.getElementsByTagName(e)[0]; 36s.parentNode.insertBefore(t,s)}(window, document,'script', 37'https://connect.facebook.net/en_US/fbevents.js'); 38fbq('init', '
38566830136242437
vendor: 29 bytes, lines 38-39
38'); 39fbq('track', 'PageView');
39</script>
39<noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=566830136242437&ev=PageView&noscript=1"></noscript>
39<script>
vendor: 398 bytes, lines 39-47
39!function(f,b,e,v,n,t,s) 40{if(f.fbq)return;n=f.fbq=function(){n.callMethod? 41n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 42if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 43n.queue=[];t=b.createElement(e);t.async=!0; 44t.src=v;s=b.getElementsByTagName(e)[0]; 45s.parentNode.insertBefore(t,s)}(window, document,'script', 46'https://connect.facebook.net/en_US/fbevents.js'); 47fbq('init', '
47483149976725689
vendor: 29 bytes, lines 47-48
47'); 48fbq('track', 'PageView');
48</script>
48<noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=483149976725689&ev=PageView&noscript=1"></noscript></head><body class="post-template"><header class="header header--separator" id="js-header"><div class="wrapper"><a class="logo" href="https://ancientegyptmagazine.com/"><img src="https://ancientegyptmagazine.com/media/website/ae-logo-2.png" alt="Ancient Egypt Magazine" width="217" height="80"></a><nav class="navbar js-navbar"><button class="navbar__toggle js-toggle" aria-label="Menu" aria-haspopup="true" aria-expanded="false"><span class="navbar__toggle-box"><span class="navbar__toggle-inner">Menu</span></span></button><ul class="navbar__menu"><li class="active"><a href="https://ancientegyptmagazine.com/about-us.html" target="_self">About us</a></li><li><a href="https://ancientegyptmagazine.com/tags/feature/" target="_self">Features</a></li><li><a href="https://ancientegyptmagazine.com/tags/issues/" target="_self">Recent Issues</a></li><li><a href="https://ancientegyptmagazine.com/back-issues.html" target="_self">Complete Index</a></li><li><a href="https://ancientegyptmagazine.com/egyptology-societies.html" target="_self">Societies</a></li><li class="btn-subscribe"><a href="https://ancientegyptmagazine.com/subscribe.html" target="_self">Subscribe</a></li></ul></nav></div></header><main class="main post"><div class="wrapper"><div class="content"><article><header class="content__inner content__header content__header--full"><h1 class="content__title">About us</h1></header><div class="content__inner content__entry"><p class="p1"><em>Ancient Egypt</em> is the world's leading Egyptology magazine, exploring the history, people and culture of the Nile Valley. Now in a larger format with a fresh new design, <em>AE</em> brings you the latest news and discoveries, and feature articles covering more than 5000 years of Egyptian history.</p><p class="p1"><span class="s1">Published bimonthly, this glossy well-presented magazine brings readers up to date with the latest news, discoveries, excavations and research into the history of Egypt from Predynastic times through to the modern era.</span></p><figure class="post__image post__image--wide"><span class="s1"><img loading="lazy" src="https://ancientegyptmagazine.com/media/posts/11/ba-bird-2.jpg" alt="" width="1800" height="511" sizes="(max-width: 1200px) 100vw, 1200px" srcset="https://ancientegyptmagazine.com/media/posts/11/responsive/ba-bird-2-xs.webp 300w, https://ancientegyptmagazine.com/media/posts/11/responsive/ba-bird-2-sm.webp 480w, https://ancientegyptmagazine.com/media/posts/11/responsive/ba-bird-2-md.webp 768w, https://ancientegyptmagazine.com/media/posts/11/responsive/ba-bird-2-xl.webp 1200w, https://ancientegyptmagazine.com/media/posts/11/responsive/ba-bird-2-xxl.webp 1600w, https://ancientegyptmagazine.com/media/posts/11/responsive/ba-bird-2-xxxl.webp 2560w"></span></figure>There are in-depth articles on the building of the pyramids, the lives of the great pharaohs, brewing and agriculture, health and disease, gods and goddesses, tombs and temples and ancient Egyptian art and culture. Find out about great Egyptologists and explorers, and ancient priests and peasants; discover more about Egyptian technology and the latest DNA and scanning techniques. How did Tutankhamun die? How did hieroglyphic writing work? What did ancient Egyptians eat for breakfast?<p></p><p class="p1"><span class="s1">All this plus guides to museum collections, reviews of the latest books and major worldwide conferences and exhibitions.</span></p><h2 class="p1"><span class="s1">Editorial team</span></h2><h4 class="p1"><span class="s1">J. Peter Phillips, Editor</span></h4><p class="p1"><span class="s1">Peter has written and published books on ancient Egypt. He lectures on the subject to Egyptology societies in the UK and abroad, and is Chair of the Manchester Ancient Egypt Society. He is a retired IT professional and has a particular interest in ancient Egyptian architecture.</span></p><h4 class="p1"><span class="s1">Sarah Griffiths, Deputy Editor</span></h4><p class="p1"><span class="s1">Sarah is a writer, teacher and broadcaster with over 18 years' experience with the BBC. She holds the Certificate in Egyptology from the University of Manchester, where she also studied for the BSc Zoology and Postgraduate Certificate in Education, and was awarded a Master of Science in Animal Breeding from Edinburgh University.</span></p><h4 class="p1"><span class="s1">Professor Rosalie David OBE, Consultant Editor</span></h4><p class="p1"><span class="s1">
48Professor Rosalie David </span><span class="s1">has achieved world renown for her pioneering work in investigating mummies using non-destructive techniques. A former Keeper of Egyptology at the Manchester Museum, Rosalie became Director of the KNH Centre for Biological and Forensic Studies in Egyptology at The University of Manchester. Her research work into the Schistosomiasis disease has been recognised with a prestigious award from the Anglo-French Medical Society and she was awarded an OBE in recognition of her services in Egyptology.</span></p><h4>Professor Aidan Dodson, FSA, Consultant Editor</h4><p>Aidan is Honorary Professor of Egyptology at the University of Bristol, where he has taught since 1996, and was elected a Fellow of the Society of Antiquaries of London in 2003. He studied archaeology, museology and Egyptology at the Universities of Durham, Liverpool and Cambridge, gaining his PhD from the latter in 1995. Also an historian of 19th/20th century modern navies, Aidan is the author of some 30 books and over 400 articles and reviews.</p></div></article></div></div></main><footer class="footer s-t-2 s-b-2"><div class="wrapper footer__inner"><a class="footer__logo" href="https://ancientegyptmagazine.com/"><img src="https://ancientegyptmagazine.com/media/website/ae-logo-2.png" alt="Ancient Egypt Magazine"></a><div class="footer__social"><a href="https://www.facebook.com/AncientEgyptMagazine/" aria-label="Facebook" target="_blank"><svg><use xlink:href="https://ancientegyptmagazine.com/assets/svg/svg-map.svg#facebook"/></svg> </a><a href="https://twitter.com/AncientEgyptMag/" aria-label="Twitter" target="_blank"><svg><use xlink:href="https://ancientegyptmagazine.com/assets/svg/svg-map.svg#twitter"/></svg></a></div><ul class="footer__nav"><li><a href="https://currentpublishing.com" target="_self">Current Publishing</a></li><li><a href="https://ancientegyptmagazine.com/subscribe.html" target="_self">Subscribe</a></li><li><a href="https://ancientegyptmagazine.com/contact-us.html" target="_self">Contact Us</a></li><li><a href="https://ancientegyptmagazine.com/privacy-policy.html" target="_self">Privacy Policy</a></li></ul><div class="footer__copy">© 2026 Current Publishing Ltd<br>Registered Office: Office 120, 295 Chiswick High Road, London W4 4HH</div></div><button onclick="backToTopFunction()" id="backToTop" class="footer__bttop" aria-label="Back to top" title="Back to top"><svg><use xlink:href="https://ancientegyptmagazine.com/assets/svg/svg-map.svg#toparrow"/></svg></button></footer>
48<script defer="defer" src="https://ancientegyptmagazine.com/assets/js/scripts.min.js?v=a2f166b35e58753d38a89c4cb3fb61bd"></script>
48<script>window.publiiThemeMenuConfig = { 49 mobileMenuMode: 'sidebar', 50 animationSpeed: 300, 51 submenuWidth: 'auto', 52 doubleClickTime: 500, 53 mobileMenuExpandableSubmenus: true, 54 relatedContainerForOverlayMenuSelector: '.navbar', 55 };</script>
55<script>var images = document.querySelectorAll('img[loading]'); 56 57 for (var i = 0; i < images.length; i++) { 58 if (images[i].complete) { 59 images[i].classList.add('is-loaded'); 60 } else { 61 images[i].addEventListener('load', function () { 62 this.classList.add('is-loaded'); 63 }, false); 64 } 65 }</script>
65<div class="pcb" data-behaviour="link" data-behaviour-link="#cookie-settings" data-revision="1" data-config-ttl="90" data-debug-mode="false"><div role="dialog" aria-modal="true" aria-hidden="true" aria-labelledby="pcb-title" aria-describedby="pcb-txt" class="pcb__banner pcb__banner--left"><div class="pcb__inner"><div id="pcb-title" role="heading" aria-level="2" class="pcb__title">This website uses cookies</div><div id="pcb-txt" class="pcb__txt">Select which cookies to opt-in to via the checkboxes below; our website uses cookies to examine site traffic and user activity while on our site, for marketing, and to provide social media functionality.</div><div class="pcb__buttons"><button type="button" class="pcb__btn pcb__btn--link pcb__btn--configure" aria-haspopup="dialog">Manage preferences</button> <button type="button" class="pcb__btn pcb__btn--solid pcb__btn--accept">Save</button></div></div></div><div class="pcb__popup" role="dialog" aria-modal="true" aria-hidden="true" aria-labelledby="pcb-popup-title"><div class="pcb__popup__wrapper"><div class="pcb__inner pcb__popup__inner"><div class="pcb__popup__heading"><div id="pcb-popup-title" role="heading" aria-level="2" class="pcb__title">Cookie settings</div><button class="pcb__popup__close" aria-label="Close"></button></div><div class="pcb__popup__content"><div class="pcb__txt pcb__popup__txt">We use cookies to enhance your browsing experience, serve personalized ads or content, and analyze our traffic. By clicking "Accept All", you consent to our use of cookies.</div><ul class="pcb__groups"><li class="pcb__group"><details><summary class="pcb__group__title no-desc">Required</summary></details><div class="pcb__popup__switch is-checked"><input type="checkbox" data-group-name="" id="pcb-group-0" checked="checked"> <label for="pcb-group-0">Required</label></div></li><li class="pcb__group"><details><summary class="pcb__group__title no-desc">Functionality</summary></details><div class="pcb__popup__switch"><input type="checkbox" data-group-name="functions" id="functions-cookies"> <label for="functions-cookies">Functionality</label></div></li><li class="pcb__group"><details><summary class="pcb__group__title no-desc">Analytical</summary></details><div class="pcb__popup__switch"><input type="checkbox" data-group-name="analytics" id="analytics-cookies"> <label for="analytics-cookies">Analytical</label></div></li><li class="pcb__group"><details><summary class="pcb__group__title no-desc">Marketing</summary></details><div class="pcb__popup__switch"><input type="checkbox" data-group-name="marketing" id="marketing-cookies"> <label for="marketing-cookies">Marketing</label></div></li></ul></div><div class="pcb__buttons pcb__popup__buttons"><button type="button" class="pcb__btn pcb__btn--solid pcb__btn--accept">Accept all</button> <button type="button" class="pcb__btn pcb__btn--reject">Reject all</button> <button type="button" class="pcb__btn pcb__btn--save">Save settings</button></div></div></div></div><div class="pcb__overlay" aria-hidden="true"></div></div>
65<script>(function(win) { 66 if (!document.querySelector('.pcb')) { 67 return; 68 } 69 70 var cbConfig = { 71 behaviour: document.querySelector('.pcb').getAttribute('data-behaviour'), 72 behaviourLink: document.querySelector('.pcb').getAttribute('data-behaviour-link'), 73 revision: document.querySelector('.pcb').getAttribute('data-revision'), 74 configTTL: parseInt(document.querySelector('.pcb').getAttribute('data-config-ttl'), 10), 75 debugMode: document.querySelector('.pcb').getAttribute('data-debug-mode') === 'true', 76 initialState: null, 77 initialLsState: null, 78 previouslyAccepted: [] 79 }; 80 81 var cbUI = { 82 wrapper: document.querySelector('.pcb'), 83 banner: { 84 element: null, 85 btnAccept: null, 86 btnReject: null, 87 btnConfigure: null 88 }, 89 popup: { 90 element: null, 91 btnClose: null, 92 btnSave: null, 93 btnAccept: null, 94 btnReject: null, 95 checkboxes: null, 96 }, 97 overlay: null, 98 badge: null, 99 blockedScripts: document.querySelectorAll('script[type^="gdpr-blocker/"]'), 100 triggerLinks: cbConfig.behaviourLink ? document.querySelectorAll('a[href*="' + cbConfig.behaviourLink + '"]') : null 101 }; 102 103 function initUI () { 104 // setup banner elements 105 cbUI.banner.element = cbUI.wrapper.querySelector('.pcb__banner'); 106 cbUI.banner.btnAccept = cbUI.banner.element.querySelector('.pcb__btn--accept'); 107 cbUI.banner.btnReject = cbUI.banner.element.querySelector('.pcb__btn--reject'); 108 cbUI.banner.btnConfigure = cbUI.banner.element.querySelector('.pcb__btn--configure'); 109 110 // setup popup elements 111 if (cbUI.wrapper.querySelector('.pcb__popup')) { 112 cbUI.popup.element = cbUI.wrapper.querySelector('.pcb__popup'); 113 cbUI.popup.btnClose = cbUI.wrapper.querySelector('.pcb__popup__close'); 114 cbUI.popup.btnSave = cbUI.popup.element.querySelector('.pcb__btn--save'); 115 cbUI.popup.btnAccept = cbUI.popup.element.querySelector('.pcb__btn--accept'); 116 cbUI.popup.btnReject = cbUI.popup.element.querySelector('.pcb__btn--reject'); 117 cbUI.popup.checkboxes = cbUI.popup.element.querySelector('input[type="checkbox"]'); 118 // setup overlay 119 cbUI.overlay = cbUI.wrapper.querySelector('.pcb__overlay'); 120 } 121 122 cbUI.badge = cbUI.wrapper.querySelector('.pcb__badge'); 123 124 if (cbConfig.behaviour.indexOf('link') > -1) { 125 for (var i = 0; i < cbUI.triggerLinks.length; i++) { 126 cbUI.triggerLinks[i].addEventListener('click', function(e) { 127 e.preventDefault(); 128 showBannerOrPopup(); 129 }); 130 } 131 } 132 } 133 134 function initState () { 135 var lsKeyName = getConfigName(); 136 var currentConfig = localStorage.getItem(lsKeyName); 137 var configIsFresh = checkIfConfigIsFresh(); 138 139 if (!configIsFresh || currentConfig === null) { 140 if (cbConfig.debugMode) { 141 console.log('ðª Config not found, or configuration expired'); 142 } 143 144 if (window.publiiCBGCM) { 145 gtag('consent', 'default', { 146 'ad_storage': window.publiiCBGCM.defaultState.ad_storage ? 'granted' : 'denied', 147 'ad_personalization': window.publiiCBGCM.defaultState.ad_personalization ? 'granted' : 'denied', 148 'ad_user_data': window.publiiCBGCM.defaultState.ad_user_data ? 'granted' : 'denied', 149 'analytics_storage': window.publiiCBGCM.defaultState.analytics_storage ? 'granted' : 'denied', 150 'personalization_storage': window.publiiCBGCM.defaultState.personalization_storage ? 'granted' : 'denied', 151 'functionality_storage': window.publiiCBGCM.defaultState.functionality_storage ? 'granted' : 'denied', 152 'security_storage': window.publiiCBGCM.defaultState.security_storage ? 'granted' : 'denied' 153 }); 154 155 if (cbConfig.debugMode) { 156 console.log('ðª GCMv2 DEFAULT STATE: ' + JSON.stringify({ 157 'ad_storage': window.publiiCBGCM.defaultState.ad_storage ? 'granted' : 'denied', 158 'ad_personalization': window.publiiCBGCM.defaultState.ad_personalization ? 'granted' : 'denied', 159 'ad_user_data': window.publiiCBGCM.defaultState.ad_user_data ? 'granted' : 'denied',
160 'analytics_storage': window.publiiCBGCM.defaultState.analytics_storage ? 'granted' : 'denied', 161 'personalization_storage': window.publiiCBGCM.defaultState.personalization_storage ? 'granted' : 'denied', 162 'functionality_storage': window.publiiCBGCM.defaultState.functionality_storage ? 'granted' : 'denied', 163 'security_storage': window.publiiCBGCM.defaultState.security_storage ? 'granted' : 'denied' 164 })); 165 } 166 } 167 168 showBanner(); 169 } else if (typeof currentConfig === 'string') { 170 if (cbConfig.debugMode) { 171 console.log('ðª Config founded'); 172 } 173 174 cbConfig.initialLsState = currentConfig.split(','); 175 176 if (window.publiiCBGCM) { 177 gtag('consent', 'default', { 178 'ad_storage': getDefaultConsentState(currentConfig, 'ad_storage'), 179 'ad_personalization': getDefaultConsentState(currentConfig, 'ad_personalization'), 180 'ad_user_data': getDefaultConsentState(currentConfig, 'ad_user_data'), 181 'analytics_storage': getDefaultConsentState(currentConfig, 'analytics_storage'), 182 'personalization_storage': getDefaultConsentState(currentConfig, 'personalization_storage'), 183 'functionality_storage': getDefaultConsentState(currentConfig, 'functionality_storage'), 184 'security_storage': getDefaultConsentState(currentConfig, 'security_storage') 185 }); 186 187 if (cbConfig.debugMode) { 188 console.log('ðª GCMv2 DEFAULT STATE: ' + JSON.stringify({ 189 'ad_storage': getDefaultConsentState(currentConfig, 'ad_storage'), 190 'ad_personalization': getDefaultConsentState(currentConfig, 'ad_personalization'), 191 'ad_user_data': getDefaultConsentState(currentConfig, 'ad_user_data'), 192 'analytics_storage': getDefaultConsentState(currentConfig, 'analytics_storage'), 193 'personalization_storage': getDefaultConsentState(currentConfig, 'personalization_storage'), 194 'functionality_storage': getDefaultConsentState(currentConfig, 'functionality_storage'), 195 'security_storage': getDefaultConsentState(currentConfig, 'security_storage') 196 })); 197 } 198 } 199 200 showBadge(); 201 202 if (cbUI.popup.element) { 203 var allowedGroups = currentConfig.split(','); 204 var checkedCheckboxes = cbUI.popup.element.querySelectorAll('input[type="checkbox"]:checked'); 205 206 for (var j = 0; j < checkedCheckboxes.length; j++) { 207 var name = checkedCheckboxes[j].getAttribute('data-group-name'); 208 209 if (name && name !== '-' && allowedGroups.indexOf(name) === -1) { 210 checkedCheckboxes[j].checked = false; 211 } 212 } 213 214 for (var i = 0; i < allowedGroups.length; i++) { 215 var checkbox = cbUI.popup.element.querySelector('input[type="checkbox"][data-group-name="' + allowedGroups[i] + '"]'); 216 217 if (checkbox) { 218 checkbox.checked = true; 219 } 220 221 allowCookieGroup(allowedGroups[i]); 222 } 223 } 224 } 225 226 setTimeout(function () { 227 cbConfig.initialState = getInitialStateOfConsents(); 228 }, 0); 229 } 230 231 function checkIfConfigIsFresh () { 232 var lastConfigSave = localStorage.getItem('publii-gdpr-cookies-config-save-date'); 233 234 if (lastConfigSave === null) { 235 return false; 236 } 237 238 lastConfigSave = parseInt(lastConfigSave, 10); 239 240 if (lastConfigSave === 0) { 241 return true; 242 } 243 244 if (+new Date() - lastConfigSave < cbConfig.configTTL * 24 * 60 * 60 * 1000) { 245 return true; 246 } 247 248 return false;
249 } 250 251 function getDefaultConsentState (currentConfig, consentGroup) { 252 let configGroups = currentConfig.split(','); 253 254 for (let i = 0; i < configGroups.length; i++) { 255 let groupName = configGroups[i]; 256 let group = window.publiiCBGCM.groups.find(group => group.cookieGroup === groupName); 257 258 if (group && group[consentGroup]) { 259 return 'granted'; 260 } 261 } 262 263 if (window.publiiCBGCM.defaultState[consentGroup]) { 264 return 'granted'; 265 } 266 267 return 'denied'; 268 } 269 270 function initBannerEvents () { 271 cbUI.banner.btnAccept.addEventListener('click', function (e) { 272 e.preventDefault(); 273 acceptAllCookies('banner'); 274 showBadge(); 275 }, false); 276 277 if (cbUI.banner.btnReject) { 278 cbUI.banner.btnReject.addEventListener('click', function (e) { 279 e.preventDefault(); 280 rejectAllCookies(); 281 showBadge(); 282 }, false); 283 } 284 285 if (cbUI.banner.btnConfigure) { 286 cbUI.banner.btnConfigure.addEventListener('click', function (e) { 287 e.preventDefault(); 288 hideBanner(); 289 showAdvancedPopup(); 290 showBadge(); 291 }, false); 292 } 293 } 294 295 function initPopupEvents () { 296 if (!cbUI.popup.element) { 297 return; 298 } 299 300 cbUI.overlay.addEventListener('click', function (e) { 301 hideAdvancedPopup(); 302 }, false); 303 304 cbUI.popup.element.addEventListener('click', function (e) { 305 e.stopPropagation(); 306 }, false); 307 308 cbUI.popup.btnAccept.addEventListener('click', function (e) { 309 e.preventDefault(); 310 acceptAllCookies('popup'); 311 }, false); 312 313 cbUI.popup.btnReject.addEventListener('click', function (e) { 314 e.preventDefault(); 315 rejectAllCookies(); 316 }, false); 317 318 cbUI.popup.btnSave.addEventListener('click', function (e) { 319 e.preventDefault(); 320 saveConfiguration(); 321 }, false); 322 323 cbUI.popup.btnClose.addEventListener('click', function (e) { 324 e.preventDefault(); 325 hideAdvancedPopup(); 326 }, false); 327 } 328 329 function initBadgeEvents () { 330 if (!cbUI.badge) { 331 return; 332 } 333 334 cbUI.badge.addEventListener('click', function (e) { 335 showBannerOrPopup(); 336 }, false); 337 } 338 339 initUI(); 340 initState(); 341 initBannerEvents(); 342 initPopupEvents(); 343 initBadgeEvents(); 344 345 /** 346 * API 347 */ 348 function addScript (src, inline) { 349 var newScript = document.createElement('script'); 350 351 if (src) { 352 newScript.setAttribute('src', src); 353 } 354 355 if (inline) { 356 newScript.text = inline; 357 } 358 359 document.body.appendChild(newScript); 360 } 361 362 function allowCookieGroup (allowedGroup) { 363 var scripts = document.querySelectorAll('script[type="gdpr-blocker/' + allowedGroup + '"]'); 364 cbConfig.previouslyAccepted.push(allowedGroup); 365 366 for (var j = 0; j < scripts.length; j++) { 367 addScript(scripts[j].src, scripts[j].text); 368 } 369 370 var groupEvent = new Event('publii-cookie-banner-unblock-' + allowedGroup); 371 document.body.dispatchEvent(groupEvent); 372 unlockEmbeds(allowedGroup); 373 374 if (cbConfig.debugMode) { 375 console.log('ðª Allowed group: ' + allowedGroup); 376 } 377 378 if (window.publiiCBGCM && (!cbConfig.initialLsState || cbConfig.initialLsState.indexOf(allowedGroup) === -1)) { 379 let consentResult = {}; 380 let group = window.publiiCBGCM.groups.find(group => group.cookieGroup === allowedGroup); 381 382 if (group) { 383 let foundSomeConsents = false; 384 385 Object.keys(group).forEach(key => { 386 if (key !== 'cookieGroup' && group[key] === true) { 387 consentResult[key] = 'granted'; 388 foundSomeConsents = true; 389 } 390 }); 391 392 if (foundSomeConsents) { 393 gtag('consent', 'update', consentResult); 394 395 if (cbConfig.debugMode) { 396 console.log('ðª GCMv2 UPDATE: ' + JSON.stringify(consentResult)); 397 } 398 } 399 } 400 } 401 } 402 403 function showBannerOrPopup () { 404 if (cbUI.popup.element) { 405 showAdvancedPopup(); 406 } else { 407 showBanner(); 408 } 409 } 410 411 function showAdvancedPopup () { 412 cbUI.popup.element.classList.add('is-visible'); 413 cbUI.overlay.classList.add('is-visible'); 414 cbUI.popup.element.setAttribute('aria-hidden', 'false'); 415 cbUI.overlay.setAttribute('aria-hidden', 'false'); 416 } 417 418 function hideAdvancedPopup () { 419 cbUI.popup.element.classList.remove('is-visible'); 420 cbUI.overlay.classList.remove('is-visible'); 421 cbUI.popup.element.setAttribute('aria-hidden', 'true'); 422 cbUI.overlay.setAttribute('aria-hidden', 'true'); 423 } 424 425 function showBanner () { 426 cbUI.banner.element.classList.add('is-visible'); 427 cbUI.banner.element.setAttribute('aria-hidden', 'false'); 428 } 429 430 function hideBanner () { 431 cbUI.banner.element.classList.remove('is-visible'); 432 cbUI.banner.element.setAttribute('aria-hidden', 'true'); 433 } 434 435 function showBadge () { 436 if (!cbUI.badge) { 437 return; 438 } 439 440 cbUI.badge.classList.add('is-visible'); 441 cbUI.badge.setAttribute('aria-hidden', 'false'); 442 } 443 444 function getConfigName () { 445 var lsKeyName = 'publii-gdpr-allowed-cookies'; 446 447 if (cbConfig.revision) { 448 lsKeyName = lsKeyName + '-v' + parseInt(cbConfig.revision, 10); 449 } 450 451 return lsKeyName; 452 } 453 454 function storeConfiguration (allowedGroups) { 455 var lsKeyName = getConfigName(); 456 var dataToStore = allowedGroups.join(','); 457 localStorage.setItem(lsKeyName, dataToStore); 458 459 if (cbConfig.configTTL === 0) { 460 localStorage.setItem('publii-gdpr-cookies-config-save-date', 0); 461 462 if (cbConfig.debugMode) { 463 console.log('ðª Store never expiring configuration'); 464 } 465 } else { 466 localStorage.setItem('publii-gdpr-cookies-config-save-date', +new Date()); 467 } 468 } 469 470 function getInitialStateOfConsents () { 471 if (!cbUI.popup.element) { 472 return []; 473 } 474 475 var checkedGroups = cbUI.popup.element.querySelectorAll('input[type="checkbox"]:checked'); 476 var groups = []; 477 478 for (var i = 0; i < checkedGroups.length; i++) { 479 var allowedGroup = checkedGroups[i].getAttribute('data-group-name'); 480 481 if (allowedGroup !== '') { 482 groups.push(allowedGroup); 483 } 484 } 485 486 if (cbConfig.debugMode) { 487 console.log('ðª Initial state: ' + groups.join(', ')); 488 } 489 490 return groups; 491 } 492 493 function getCurrentStateOfConsents () { 494 if (!cbUI.popup.element) { 495 return []; 496 } 497 498 var checkedGroups = cbUI.popup.element.querySelectorAll('input[type="checkbox"]:checked'); 499 var groups = []; 500 501 for (var i = 0; i < checkedGroups.length; i++) { 502 var allowedGroup = checkedGroups[i].getAttribute('data-group-name'); 503 504 if (allowedGroup !== '') { 505 groups.push(allowedGroup); 506 } 507 } 508 509 if (cbConfig.debugMode) { 510 console.log('ðª State to save: ' + groups.join(', ')); 511 } 512 513 return groups; 514 } 515 516 function getAllGroups () { 517 if (!cbUI.popup.element) { 518 return []; 519 } 520 521 var checkedGroups = cbUI.popup.element.querySelectorAll('input[type="checkbox"]'); 522 var groups = []; 523 524 for (var i = 0; i < checkedGroups.length; i++) { 525 var allowedGroup = checkedGroups[i].getAttribute('data-group-name'); 526 527 if (allowedGroup !== '') { 528 groups.push(allowedGroup); 529 } 530 } 531 532 return groups; 533 } 534 535 function acceptAllCookies (source) { 536 var groupsToAccept = getAllGroups(); 537 storeConfiguration(groupsToAccept); 538 539 for (var i = 0; i < groupsToAccept.length; i++) { 540 var group = groupsToAccept[i]; 541 542 if (cbConfig.initialState.indexOf(group) > -1 || cbConfig.previouslyAccepted.indexOf(group) > -1) { 543 if (cbConfig.debugMode) { 544 console.log('ðª Skip previously activated group: ' + group); 545 } 546 547 continue; 548 } 549 550 allowCookieGroup(group); 551 } 552 553 if (cbUI.popup.element) { 554 var checkboxesToCheck = cbUI.popup.element.querySelectorAll('input[type="checkbox"]'); 555 556 for (var j = 0; j < checkboxesToCheck.length; j++) { 557 checkboxesToCheck[j].checked = true; 558 } 559 } 560 561 if (cbConfig.debugMode) { 562 console.log('ðª Accept all cookies: ', groupsToAccept.join(', ')); 563 } 564 565 if (source === 'popup') { 566 hideAdvancedPopup(); 567 } else if (source === 'banner') { 568 hideBanner(); 569 } 570 } 571 572 function rejectAllCookies () { 573 if (cbConfig.debugMode) {
574 console.log('ðª Reject all cookies'); 575 } 576 577 storeConfiguration([]); 578 setTimeout(function () { 579 window.location.reload(); 580 }, 100); 581 } 582 583 function saveConfiguration () { 584 var groupsToAccept = getCurrentStateOfConsents(); 585 storeConfiguration(groupsToAccept); 586 587 if (cbConfig.debugMode) { 588 console.log('ðª Save new config: ', groupsToAccept.join(', ')); 589 } 590 591 if (reloadIsNeeded(groupsToAccept)) { 592 setTimeout(function () { 593 window.location.reload(); 594 }, 100); 595 return; 596 } 597 598 for (var i = 0; i < groupsToAccept.length; i++) { 599 var group = groupsToAccept[i]; 600 601 if (cbConfig.initialState.indexOf(group) > -1 || cbConfig.previouslyAccepted.indexOf(group) > -1) { 602 if (cbConfig.debugMode) { 603 console.log('ðª Skip previously activated group: ' + group); 604 } 605 606 continue; 607 } 608 609 allowCookieGroup(group); 610 } 611 612 hideAdvancedPopup(); 613 } 614 615 function reloadIsNeeded (groupsToAccept) { 616 // check if user rejected consent for initial groups 617 var initialGroups = cbConfig.initialState; 618 var previouslyAcceptedGroups = cbConfig.previouslyAccepted; 619 var groupsToCheck = initialGroups.concat(previouslyAcceptedGroups); 620 621 for (var i = 0; i < groupsToCheck.length; i++) { 622 var groupToCheck = groupsToCheck[i]; 623 624 if (groupToCheck !== '' && groupsToAccept.indexOf(groupToCheck) === -1) { 625 if (cbConfig.debugMode) { 626 console.log('ðª Reload is needed due lack of: ', groupToCheck); 627 } 628 629 return true; 630 } 631 } 632 633 return false; 634 } 635 636 function unlockEmbeds (cookieGroup) { 637 var iframesToUnlock = document.querySelectorAll('.pec-wrapper[data-consent-group-id="' + cookieGroup + '"]'); 638 639 for (var i = 0; i < iframesToUnlock.length; i++) { 640 var iframeWrapper = iframesToUnlock[i]; 641 iframeWrapper.querySelector('.pec-overlay').classList.remove('is-active'); 642 iframeWrapper.querySelector('.pec-overlay').setAttribute('aria-hidden', 'true'); 643 var iframe = iframeWrapper.querySelector('iframe'); 644 iframe.setAttribute('src', iframe.getAttribute('data-consent-src')); 645 } 646 } 647 648 win.publiiEmbedConsentGiven = function (cookieGroup) { 649 // it will unlock embeds 650 allowCookieGroup(cookieGroup); 651 652 var checkbox = cbUI.popup.element.querySelector('input[type="checkbox"][data-group-name="' + cookieGroup + '"]'); 653 654 if (checkbox) { 655 checkbox.checked = true; 656 } 657 658 var groupsToAccept = getCurrentStateOfConsents(); 659 storeConfiguration(groupsToAccept); 660 661 if (cbConfig.debugMode) { 662 console.log('ðª Save new config: ', groupsToAccept.join(', ')); 663 } 664 } 665})(window);</script>
665<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"2352c54adb814c639385a94c04d80b26","r":1,"spa":2}' crossorigin="anonymous"></script>
665 666</body></html>
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.