/** * Returns script code for detecting whether WCPP is installed at the client machine. * * The WCPP-detection script code ends with a 'success' or 'failure' status. * You can handle both situation by creating two javascript functions which names * must be wcppDetectOnSuccess() and wcppDetectOnFailure(). * These two functions will be automatically invoked by the WCPP-detection script code. * * The WCPP-detection script uses a delay time variable which by default is 10000 ms (10 sec). * You can change it by creating a javascript global variable which name must be wcppPingDelay_ms. * For example, to use 5 sec instead of 10, you should add this to your script: * * var wcppPingDelay_ms = 5000; * * @return string A [script] tag linking to the WCPP-detection script code. * @throws Exception */ public static function createWcppDetectionScript() { if (Utils::isNullOrEmptyString(self::$webClientPrintAbsoluteUrl)) { throw new Exception('WebClientPrint absolute URL is missing, please specify it.'); } $buffer = '<script type="text/javascript">'; if (Utils::isIE6to9() || Utils::isIE10orGreater()) { $buffer .= 'var wcppPingNow=false;'; } else { $buffer .= 'var wcppPingNow=true;'; } $buffer .= '</script>'; $wcpHandler = self::$webClientPrintAbsoluteUrl . '?' . self::WCP . '&d=' . session_id(); $buffer .= '<script src="' . $wcpHandler . '" type="text/javascript"></script>'; if (Utils::isIE6to9() || Utils::isIE10orGreater()) { $crlf = chr(13) . chr(10); $buffer .= $crlf . $crlf; $buffer .= '<!--[if WCPP]>' . $crlf; $buffer .= '<script type="text/javascript">' . $crlf; $buffer .= '$(document).ready(function(){jsWCPP.ping();});' . $crlf; $buffer .= '</script>' . $crlf; $buffer .= '<![endif]-->' . $crlf; $buffer .= '<!--[if !WCPP]>' . $crlf; $buffer .= '<script type="text/javascript">' . $crlf; $buffer .= '$(document).ready(function(){wcppDetectOnFailure();});' . $crlf; $buffer .= '</script>' . $crlf; $buffer .= '<![endif]-->' . $crlf; } return $buffer; }