“He was unclassifiable and courageous, he breathed wherever he wanted knowing that his style made him irresistible” notes Evangelos Venizelos
His post in detail:
“Yiannis Boutaris was a spirit who fought to rid Thessaloniki of its ghosts and reconnect it with its historical continuity. He was unclassifiable and courageous, breathing where he wanted knowing that his style made him irresistible.
You didn’t have to agree on everything with Giannis Boutaris because he knew how to disarm any disagreements and handle his contradictions. I thank him because he also gave me the joy of enlisting and working together to restore the city’s identity and memory, especially the memory of its future.
This moves over the infrastructure, plans and functions of such a city. He leaves knowing that he was integrated into the history of our own Thessaloniki.”
Chalkidiki: Litany today on Mount Athos for the ongoing drought
Supermarket: In 10 days the reduced prices on 600 products
Amaliada: Homicide takes over the case
/* — PerfOps by Nuevvo (nuevvo.com) — */
// Utilities
const allScripts = document.getElementsByTagName(‘script’);
window.lst = allScripts[allScripts.length – 1];
window.isMobile=(function() {var ua=navigator.userAgent||navigator.vendor||window.opera;return ((/Android/i).test(ua) && (/Mobile/i).test(ua)) || (/BlackBerry|iPhone|iPod|Opera Mini|IEMobile/i).test(ua);})();
function asyncLoadScript(url) {
var alScript = document.createElement(‘script’);
alScript.src = url;
alScript.async = true;
//window.lst.parentNode.insertBefore(alScript, window.lst);
document.body.appendChild(alScript);
}
function asyncLoadModule(url) {
var alScript = document.createElement(‘script’);
alScript.src = url;
alScript.type=”module”;
//window.lst.parentNode.insertBefore(alScript, window.lst);
document.body.appendChild(alScript);
}
function displaySlot(id) {
if (document.querySelector(‘#’+id)) {
googletag.display(id);
}
}
// Fix OCM JS errors
window.defineSlots = function(t, r){};
/*! instant.page v5.2.0 – (C) 2019-2023 Alexandre Dieulot – */
(function(){
let t,e,n,o,i,a=null,s=65,c=new Set;const r=1111;function d
})();
// InMobi Choice. Consent Manager Tag v3.0 (for TCF 2.2)
setTimeout(() => {
var host=”eleftherostypos.gr”;var element=document.createElement(‘script’);var firstScript=document.getElementsByTagName(‘script’)[0];var url=” uspTries=0;var uspTriesLimit=3;element.async=true;element.type=”text/javascript”;element.src=url;firstScript.parentNode.insertBefore(element,firstScript);function makeStub(){var TCF_LOCATOR_NAME=’__tcfapiLocator’;var queue=[];var win=window;var cmpFrame;function addFrame(){var doc=win.document;var otherCMP=!!(win.frames[TCF_LOCATOR_NAME]);if(!otherCMP){if(doc.body){var iframe=doc.createElement(‘iframe’);iframe.style.cssText=”display:none”;iframe.name=TCF_LOCATOR_NAME;doc.body.appendChild(iframe);} else {setTimeout(addFrame,5);}}return !otherCMP;}function tcfAPIHandler(){var gdprApplies;var args=arguments;if(!args.length){return queue;} else if(args[0]===’setGdprApplies’){if(args.length > 3 &&args[2]===2 &&typeof args[3]===’boolean’){gdprApplies=args[3];if(typeof args[2]===’function’){args[2](‘set’,true);}}} else if(args[0]===’ping’){var retr={gdprApplies: gdprApplies,cmpLoaded: false,cmpStatus: ‘stub’};if(typeof args[2]===’function’){args[2](retr);}} else {if(args[0]===’init’ && typeof args[3]===’object’){args[3]=Object.assign(args[3],{ tag_version: ‘V3′ });}queue.push(args);}}function postMessageEventHandler(event){var msgIsString=typeof event.data===’string’;var json={};try {if(msgIsString){json=JSON.parse(event.data);} else {json=event.data;}} catch (ignore){}var payload=json.__tcfapiCall;if(payload){window.__tcfapi(payload.command,payload.version,function(retValue,success){var returnMsg={__tcfapiReturn: {returnValue: retValue,success: success,callId: payload.callId}};if(msgIsString){returnMsg=JSON.stringify(returnMsg);}if(event && event.source && event.source.postMessage){event.source.postMessage(returnMsg,’*’);}},payload.parameter);}}while (win){try {if(win.frames[TCF_LOCATOR_NAME]){cmpFrame=win;break;}} catch (ignore){}if(win===window.top){break;}win=win.parent;}if(!cmpFrame){addFrame();win.__tcfapi=tcfAPIHandler;win.addEventListener(‘message’,postMessageEventHandler,false);}}makeStub();var uspStubFunction=function(){var arg=arguments;if(typeof window.__uspapi!==uspStubFunction){setTimeout(function(){if(typeof window.__uspapi!==’undefined’){window.__uspapi.apply(window.__uspapi,arg);}},500);}};var checkIfUspIsReady=function(){uspTries++;if(window.__uspapi===uspStubFunction && uspTries 0) {
//asyncLoadScript(‘
adSenseSlots.forEach(function(e){
});
}
// Phaistos Adman
//asyncLoadScript(‘
window.AdmanQueue=window.AdmanQueue||[];
AdmanQueue.push(function(){Adman.adunit({id:338,h:’
// OneSignal
window.OneSignalDeferred = window.OneSignalDeferred || [];
OneSignalDeferred.push(function(OneSignal) {
OneSignal.init({
appId: “487cc53b-3b66-4f84-8803-3a3a133043ab”,
});
});
// Disqus
var disqus_config = function() {
this.page.url=”
this.page.identifier = 1562884;
};
setTimeout(function(){
(function() {
var d = document,
s = d.createElement(‘script’);
s.src=”
s.setAttribute(‘data-timestamp’, +new Date());
(d.head || d.body).appendChild(s);
})();
}, 3000);
function cmpActionCompleted() {
// OCM & DFP
//asyncLoadScript(‘
asyncLoadScript(‘
asyncLoadScript(‘
/*
// CleverCore
(function(document, window) {
var a, c = document.createElement(“script”);
c.id = “CleverCoreLoader57097″;
c.src = ”
c.async = !0;
c.type = “text/javascript”;
c.setAttribute(“data-target”, window.name);
c.setAttribute(“data-callback”, “put-your-callback-macro-here”);
try {
a = parent.document.getElementsByTagName(“script”)[0] || document.getElementsByTagName(“script”)[0];
} catch (e) {
a = !1;
}
a || (a = document.getElementsByTagName(“head”)[0] || document.getElementsByTagName(“body”)[0]);
a.parentNode.insertBefore(c, a);
})(document, window);
*/
// Taboola/Project Agora
asyncLoadScript(‘
asyncLoadScript(‘
// For Google AdSense
if (document.querySelectorAll(‘.adsbygoogle’).length) {
asyncLoadScript(‘
}
// Phaistos Adman
asyncLoadScript(‘
// Glomex
if (document.querySelectorAll(‘glomex-integration’).length) {
setTimeout(function(){
asyncLoadModule(‘
}, 2000);
}
// Dalecta
setTimeout(() => asyncLoadScript(‘ 800);
// Vidoomy
//asyncLoadScript(‘
// Weather
setTimeout(() => asyncLoadScript(‘ 1000);
/*
// Facebook Pixel
!function(f, b, e, v, n, t, s) {
if (f.fbq) return;
n = f.fbq = function() {
n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments)
};
if (!f._fbq) f._fbq = n;
n.push = n;
n.loaded = !0;
n.version = ‘2.0’;
n.queue = [];
t = b.createElement(e);
t.async = !0;
t.src = v;
s = b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t, s)
}(window, document, ‘script’, ‘
fbq(‘init’, ‘618972382017166’);
fbq(‘track’, ‘PageView’);
*/
// OneSignal
setTimeout(() => asyncLoadScript(‘ 5000);
}
// Microsoft Clarity
(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src=”https://www.clarity.ms/tag/”+i+”?ref=wordpress”;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window, document, “clarity”, “script”, “l14tw277rg”);
// Yandex Metrica
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();for(var j=0;j<document.scripts.length;j++){if(document.scripts[j].src===r){return;}}k=e.createElement
#leaves #knowing #integrated #history #Thessaloniki
Based on the provided JavaScript code snippet, it seems to be a part of a larger script that handles the loading and initialization of various advertising and tracking scripts. Let’s break down its functionality and address any missing parts or potential issues.
### Key Features of the Code:
1. **Adsense Removal**:
– The code contains a conditional block that appears to remove Google AdSense ad elements if certain conditions are met (not fully visible in the snippet).
2. **Querying AdSense Slots**:
- It collects all elements with the class `.adsbygoogle` and checks their count. If found, an async script loading function is intended to be called.
3. **Initialization Queues**:
– Sets up queues for various services like Adman, OneSignal, and Disqus.
4. **Disqus Configuration**:
- Contains logic to load Disqus comments after a timeout and assigns the page URL and identifier.
5. **Commented Out Sections**:
- The snippet contains many commented-out sections indicating either incomplete implementations or areas where scripts are expected to be loaded asynchronously.
6. **Asynchronous Script Loading**:
– Several calls to `asyncLoadScript()` and `asyncLoadModule()` are present but are not complete, indicating that the URLs or script sources need to be filled in.
7. **SetTimeout**:
– There are usages of `setTimeout` to delay script loading, which may help in controlling the sequence of execution.
### Suggestions for Improvement and Completion:
1. **Complete asyncLoadScript Calls**:
- Fill in the missing script URLs where async script loading takes place. Each `asyncLoadScript(‘` should have a valid URL string or content inside the quotes.
2. **Proper Bracket and String Closure**:
– Ensure that any JavaScript strings are wrapped correctly with quotes. In multiline comments or code blocks, ensure all brackets `{}`, `[]`, and `()` are matched properly.
3. **Error Handling**:
– Consider adding error handling or callbacks for the asynchronous script loads (`asyncLoadScript` and `asyncLoadModule`) to ensure they execute properly.
4. **Use of Constants**:
– For repeated elements such as ad identifiers or configurations, consider defining them as constants for easier maintenance.
5. **Minimize Global Namespace Pollution**:
– Ensure that variables added to the global namespace are minimized by wrapping your code in an IIFE (Immediately Invoked Function Expression).
6. **Conditional Checks for Existences**:
– There are areas in your script where it checks if elements exist before loading scripts. In cases of conditional loading, make sure the elements you intend to query indeed exist to avoid errors.
Here’s a more structured example of the format with placeholders filled:
“`javascript
} else {
document.querySelectorAll(‘.adsense-for-mobile’).forEach(function(e) {
e.querySelector(‘.adsbygoogle’).remove();
});
}
const adSenseSlots = document.querySelectorAll(‘.adsbygoogle’);
const adSenseSlotCount = adSenseSlots.length;
if (adSenseSlotCount > 0) {
adSenseSlots.forEach(function(e){
// Add script loading logic here
// Example: asyncLoadScript(‘https://your-ad-script-url.js’);
});
}
// Phaistos Adman
window.AdmanQueue = window.AdmanQueue || [];
AdmanQueue.push(function() {
Adman.adunit({ id: 338, h: ‘placeholder-height’ });
});
// OneSignal initialization
window.OneSignalDeferred = window.OneSignalDeferred || [];
OneSignalDeferred.push(function(OneSignal) {
OneSignal.init({
appId: “487cc53b-3b66-4f84-8803-3a3a133043ab”,
});
});
// Disqus configuration
var disqus_config = function() {
this.page.url = window.location.href; // Use the current URL
this.page.identifier = 1562884; // Unique identifier for the page
};
setTimeout(function() {
(function() {
var d = document,
s = d.createElement(‘script’);
s.src = “https://your-disqus-script-url.js”; // Disqus load URL
s.setAttribute(‘data-timestamp’, +new Date());
(d.head || d.body).appendChild(s);
})();
}, 3000);
// Function for handling completed actions
function cmpActionCompleted() {
// Complete asyncLoadScript calls
asyncLoadScript(‘https://your-script-url-here.js’);
// Other async script loads based on conditions…
}
“`
### Conclusion:
This code snippet represents a part of a system designed for managing ad scripts, analytics, and tracking. By filling in the required fields, improving error handling, and ensuring clarity of structure, it can become a robust solution for loading various client-side scripts effectively.