Skip to content

Instantly share code, notes, and snippets.

@gmorel
Created February 19, 2014 13:19
Show Gist options
  • Select an option

  • Save gmorel/9091805 to your computer and use it in GitHub Desktop.

Select an option

Save gmorel/9091805 to your computer and use it in GitHub Desktop.

Revisions

  1. gmorel revised this gist Feb 19, 2014. No changes.
  2. gmorel created this gist Feb 19, 2014.
    42 changes: 42 additions & 0 deletions gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,42 @@
    public function computeAssetUrl($assetType, $params, \Smarty_Internal_Template $template)
    {
    $file = $params['file'];
    $assetOrigin = isset($params['source']) ? $params['source'] : "0";
    $filters = isset($params['filters']) ? $params['filters'] : '';
    $debug = isset($params['debug']) ? trim(strtolower($params['debug'])) == 'true' : false;
    $webAssetTemplate = isset($params['template']) ? $params['template'] : false;

    /* we trick here relative thinking for file attribute */
    $file = ltrim($file, '/');
    while (substr($file, 0, 3) == '../') {
    $file = substr($file, 3);
    }

    $smartyParser = $template->smarty;
    $templateDefinition = $smartyParser->getTemplateDefinition();

    $templateDirectories = $smartyParser->getTemplateDirectories($templateDefinition->getType());

    if (! isset($templateDirectories[$templateDefinition->getName()][$assetOrigin])) {
    throw new \Exception("Failed to get real path of '/".dirname($file)."'");
    }

    $assetSource = $templateDirectories[$templateDefinition->getName()][$assetOrigin];
    if ($webAssetTemplate) {
    $assetSource = str_replace($templateDefinition->getName(), $webAssetTemplate, $assetSource);
    }

    $url = $this->assetsManager->processAsset(
    $assetSource . DS . $file,
    $assetSource . DS . self::$assetsDirectory,
    $this->web_root . $this->path_relative_to_web_root,
    $templateDefinition->getPath(),
    $assetOrigin,
    URL::getInstance()->absoluteUrl($this->path_relative_to_web_root, null, URL::PATH_TO_FILE /* path only */),
    $assetType,
    $filters,
    $debug
    );

    return $url;
    }