mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-03 19:17:02 -05:00 
			
		
		
		
	Add a CMP to the manual
This commit is contained in:
		
							parent
							
								
									7bfe9e3e1a
								
							
						
					
					
						commit
						05ad3f3970
					
				@ -1,5 +1,166 @@
 | 
				
			|||||||
{% extends "!layout.html" %}
 | 
					{% extends "!layout.html" %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{%- block extrahead %}
 | 
				
			||||||
 | 
					<!-- Quantcast Choice. Consent Manager Tag v2.0 (for TCF 2.0) -->
 | 
				
			||||||
 | 
					<!-- See https://www.quantcast.com/protect/sites username is email -->
 | 
				
			||||||
 | 
					<script type="text/javascript" async=true>
 | 
				
			||||||
 | 
					(function() {
 | 
				
			||||||
 | 
					  var host = window.location.hostname;
 | 
				
			||||||
 | 
					  var element = document.createElement('script');
 | 
				
			||||||
 | 
					  var firstScript = document.getElementsByTagName('script')[0];
 | 
				
			||||||
 | 
					  var url = 'https://quantcast.mgr.consensu.org'
 | 
				
			||||||
 | 
					    .concat('/choice/', '593Yp13RM2k2D', '/', host, '/choice.js')
 | 
				
			||||||
 | 
					  var 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 {
 | 
				
			||||||
 | 
					        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);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            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 < uspTriesLimit) {
 | 
				
			||||||
 | 
					      console.warn('USP is not accessible');
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      clearInterval(uspInterval);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (typeof window.__uspapi === 'undefined') {
 | 
				
			||||||
 | 
					    window.__uspapi = uspStubFunction;
 | 
				
			||||||
 | 
					    var uspInterval = setInterval(checkIfUspIsReady, 6000);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					})();
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					<!-- End Quantcast Choice. Consent Manager Tag v2.0 (for TCF 2.0) -->
 | 
				
			||||||
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{%- block relbar1 %}{{ relbar() }}{% endblock %}
 | 
					{%- block relbar1 %}{{ relbar() }}{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{%- block content %}
 | 
					{%- block content %}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user