xref: /plugin/googletagmanager/action.php (revision 31d01fc3c4f3ceafe88f7d1eaa38d066d1969d87)
1bfa47fb6SAlex<?php
2bfa47fb6SAlexif(!defined('DOKU_INC')) die();
3bfa47fb6SAlexif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
4bfa47fb6SAlexrequire_once(DOKU_PLUGIN.'action.php');
5bfa47fb6SAlex
6bfa47fb6SAlexclass action_plugin_googletagmanager extends DokuWiki_Action_Plugin {
7bfa47fb6SAlex
8*31d01fc3SNickeau    const GTMID = 'GTMID';
9*31d01fc3SNickeau
10bfa47fb6SAlex    /**
11bfa47fb6SAlex	 * return some info
12bfa47fb6SAlex	 */
13bfa47fb6SAlex	function getInfo(){
14bfa47fb6SAlex		return array(
15bfa47fb6SAlex			'author' => 'Alexander Lehmann',
16bfa47fb6SAlex			'email'  => 'alexlehm@gmail.com',
17bfa47fb6SAlex			'date'   => '2014-02-01',
18bfa47fb6SAlex			'name'   => 'Google Tag Manager Plugin',
19bfa47fb6SAlex			'desc'   => 'Plugin to embed Google Tag Manager in your wiki.',
20bfa47fb6SAlex			'url'    => 'http://www.lehmann.cx/wiki/projects:dokuwiki_gtm',
21bfa47fb6SAlex		);
22bfa47fb6SAlex	}
23bfa47fb6SAlex
24bfa47fb6SAlex	/**
25bfa47fb6SAlex	 * Register its handlers with the DokuWiki's event controller
26bfa47fb6SAlex	 */
274747d7b2SAndreas Gohr	function register(Doku_Event_Handler $controller) {
28bfa47fb6SAlex	    $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE',  $this, '_addHeaders');
29bfa47fb6SAlex	}
30bfa47fb6SAlex
31bfa47fb6SAlex	function _addHeaders (&$event, $param) {
32*31d01fc3SNickeau
33*31d01fc3SNickeau		if(!$this->getConf(self::GTMID)) return;
34bfa47fb6SAlex		$event->data['noscript'][] = array (
35*31d01fc3SNickeau		  '_data' => '<iframe src="//www.googletagmanager.com/ns.html?id='.$this->getConf(self::GTMID).'" height="0" width="0" style="display:none;visibility:hidden"></iframe>',
36bfa47fb6SAlex		);
37bfa47fb6SAlex		$event->data['script'][] = array (
38bfa47fb6SAlex		  'type' => 'text/javascript',
39bfa47fb6SAlex		  '_data' => "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
40bfa47fb6SAlexnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
41bfa47fb6SAlexj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
42bfa47fb6SAlex'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
43*31d01fc3SNickeau})(window,document,'script','dataLayer','".$this->getConf(self::GTMID)."');",
44bfa47fb6SAlex		);
45bfa47fb6SAlex	}
46bfa47fb6SAlex}
47bfa47fb6SAlex?>
48