/** * @return string the template path */ public function getTemplatePath() { return $this->templateDefinition->getPath(); }
/** * Retrieve asset URL * * @param string $assetType js|css|image * @param array $params Parameters * - file File path in the default template * - source module asset * - filters filter to apply * - debug * - template if you want to load asset from another template * @param \Smarty_Internal_Template $template Smarty Template * * @return string * @throws \Exception */ public function computeAssetUrl($assetType, $params, \Smarty_Internal_Template $template) { $assetUrl = ""; $file = $params['file']; // The 'file' parameter is mandatory if (empty($file)) { throw new \InvalidArgumentException("The 'file' parameter is missing in an asset directive (type is '{$assetType}')"); } $assetOrigin = isset($params['source']) ? $params['source'] : SmartyParser::TEMPLATE_ASSETS_KEY; $filters = isset($params['filters']) ? $params['filters'] : ''; $debug = isset($params['debug']) ? trim(strtolower($params['debug'])) == 'true' : false; $templateName = isset($params['template']) ? $params['template'] : false; Tlog::getInstance()->debug("Searching asset {$file} in source {$assetOrigin}, with template {$templateName}"); /** @var \TheliaSmarty\Template\SmartyParser $smartyParser */ $smartyParser = $template->smarty; if (false !== $templateName) { // We have to be sure that this external template assets have been properly prepared. // We will assume the following: // 1) this template have the same type as the current template, // 2) this template assets have the same structure as the current template // (which is in self::$assetsDirectory) $currentTemplate = $smartyParser->getTemplateDefinition(); $templateDefinition = new TemplateDefinition($templateName, $currentTemplate->getType()); /* Add this templates directory to the current list */ $smartyParser->addTemplateDirectory($templateDefinition->getType(), $templateDefinition->getName(), THELIA_TEMPLATE_DIR . $templateDefinition->getPath(), SmartyParser::TEMPLATE_ASSETS_KEY); $this->prepareTemplateAssets($templateDefinition, self::$assetsDirectory, $smartyParser); } $assetSource = $this->assetsResolver->resolveAssetSourcePath($assetOrigin, $templateName, $file, $smartyParser); if (null !== $assetSource) { $assetUrl = $this->assetsResolver->resolveAssetURL($assetOrigin, $file, $assetType, $smartyParser, $filters, $debug, self::$assetsDirectory, $templateName); } else { // Log the problem Tlog::getInstance()->addError("Failed to find asset source file " . $params['file']); } return $assetUrl; }