public function trackingJsAction(Request $request) { // Take care of old path to tracking.js if ($request->getPathInfo() == self::TRACKING_JS_URI_OLD) { $trackingIdName = <<<EOT if(window.location.href.toLowerCase().indexOf("campaignchain-id") >= 0) { this.idName = "campaignchain-id"; } else { this.idName = " EOT; $trackingIdName .= $this->getParameter('campaignchain_core.tracking.id_name'); $trackingIdName .= <<<EOT "; } EOT; $twigParams = array('tracking_id_name' => $trackingIdName, 'tracking_js_class' => 'CampaignChain', 'tracking_js_init' => 'init', 'tracking_init_compatibility' => <<<EOT window["init"](window.campaignchainChannel); EOT ); } else { $twigParams = array('tracking_id_name' => 'this.idName = "' . $this->getParameter('campaignchain_core.tracking.id_name') . '";', 'tracking_js_class' => $this->getParameter('campaignchain_core.tracking.js_class'), 'tracking_js_init' => $this->getParameter('campaignchain_core.tracking.js_init'), 'tracking_init_compatibility' => ''); } $twigParams['tracking_js_mode'] = $this->getParameter('campaignchain_core.tracking.js_mode'); $twigParams['tracking_report_base_url_name'] = self::TRACKING_REPORT_BASE_URL_NAME; $trackingJs = $this->renderView('CampaignChainCoreBundle:Tracking:tracking.js.twig', $twigParams); // Uglify tracking JavaScript if in prod environment. if ($this->get('kernel')->getEnvironment() == 'prod') { $packer = new JavascriptPacker($trackingJs); $trackingJs = $packer->pack(); } $response = new Response($trackingJs); $response->headers->set('Content-Type', 'application/javascript'); return $response; }
private function getTrackingSnippet(Channel $channel) { $trackingSnippet = $this->renderView('CampaignChainCoreBundle:Channel:_cta_tracking_snippet.js.twig', array('channel' => $channel, 'tracking_js_init' => $this->getParameter('campaignchain_core.tracking.js_init'), 'tracking_js_route' => $this->getParameter('campaignchain.tracking.js_route'))); $packer = new JavascriptPacker($trackingSnippet, 'None'); return $packer->pack(); }