1: <?php
2: /*
3: * Smarty plugin
4: * ------------------------------------------------------------
5: * Type: block
6: * Name: asset
7: * Purpose: XOOPS smarty plugin for Assetic assets
8: * Author: Pierre-Jean Parra, Dejian Xu https://github.com/xudejian/assetic-smarty
9: * Richard Griffith <richard@geekwright.com>
10: * Version: 1.0
11: *
12: * Parameters
13: * assets - comma separated list of assets to process. Assets should be absolute
14: * file paths, or Xoops::path resolveable
15: * output - type of output, css = Stylesheet, js = Javascript
16: * debug - boolean, true for debug mode, defaults to false
17: * filters - list of assetic filters to apply to asset. The following filters are supported
18: * cssembed - PhpCssEmbedFilter()
19: * cssmin - CssMinFilter()
20: * cssimport - CssImportFilter()
21: * cssrewrite - CssRewriteFilter()
22: * lessphp - LessphpFilter()
23: * scssphp - ScssphpFilter()
24: * jsmin - JSMinFilter()
25: * asset_url - smarty variable to assign asset path
26: *
27: * Example:
28: * {assets
29: * assets="modules/demo/assets/css/reset.css,modules/demo/assets/css/common.css"
30: * output="css"
31: * debug=false
32: * filters="cssimport,cssembed,?cssmin"
33: * asset_url=asset_url}
34: * <link rel="stylesheet" href="{$asset_url}">
35: * {/assets}
36: * ------------------------------------------------------------
37: */
38:
39: function smarty_block_assets($params, $content, $template, &$repeat)
40: {
41: // Opening tag (first call only)
42: if ($repeat) {
43: $xoops = \Xoops::getInstance();
44:
45: $assets = explode(',', $params['assets']);
46:
47: if (isset($params['filters'])) {
48: $filters = $params['filters'];
49: } else {
50: $filters = 'default';
51: }
52:
53: $output = strtolower($params['output']);
54:
55: $debug = isset($params['debug'])? (boolean)$params['debug'] : false;
56: if ($debug) {
57: $xoops->assets()->setDebug();
58: }
59:
60: $url = $xoops->assets()->getUrlToAssets($output, $assets, $filters);
61:
62: if (isset($params['asset_url'])) {
63: $asset_url = $params['asset_url'];
64: } else {
65: $asset_url = 'asset_url';
66: }
67:
68: $template->assign($asset_url, $url);
69: } else { // Closing tag
70: if (isset($content)) {
71: return $content;
72: }
73: }
74: }
75: