Completed
Push — master ( 878ab0...159d20 )
by Dmitry
02:31
created

Asset::getUsedJs()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Dmitrynaum\SAM;
4
5
use Dmitrynaum\SAM\Component\Manifest;
6
7
/**
8
 * Класс-фасад для удобной работы с AssetManager`ом
9
 *
10
 * @author Naumov Dmitry <[email protected]>
11
 */
12
class Asset
13
{
14
15
    /**
16
     * Путь до manifest файла
17
     * @var string
18
     */
19
    public static $manifestFilePath = 'sam.json';
20
   
21
    /**
22
     * Объект менеджера ассетов
23
     * @var AssetManager
24
     */
25
    protected static $assetManager;
26
    
27
    /**
28
     * Включить режим разработки
29
     */
30
    public static function enableDevelopmentMode()
31
    {
32
        static::assetManager()->enableDevelopmentMode();
33
    }
34
    
35
    /**
36
     * Выключить режим разработки
37
     */
38
    public static function disableDevelopmentMode()
39
    {
40
        static::assetManager()->disableDevelopmentMode();
41
    }
42
    
43
    /**
44
     * Включен ли режим разработки
45
     * @return bool
46
     */
47
    public static function isDevelopmentModeEnabled()
48
    {
49
        return static::assetManager()->isDevelopmentModeEnabled();
50
    }
51
52
    /**
53
     * Использовать JavaScript Asset
54
     * @param string $assetName - имя ассета
55
     */
56
    public static function useJs($assetName)
57
    {
58
        static::assetManager()->useJs($assetName);
59
    }
60
61
    /**
62
     * Использовать CSS Asset
63
     * @param string $assetName - имя ассета
64
     */
65
    public static function useCss($assetName)
66
    {
67
        static::assetManager()->useCss($assetName);
68
    }
69
    
70
    /**
71
     * Использовать удаленный js.
72
     * Ссылка просто оборачивается в тег script
73
     * @param string $jsUrl Ссылка на js файл
74
     */
75
    public static function useRemoteJs($jsUrl)
76
    {
77
        static::assetManager()->useRemoteJs($jsUrl);
78
    }
79
80
    /**
81
     * Использовать удаленный css.
82
     * Ссылка просто оборачивается в тег link
83
     * @param string $cssUrl Ссылка на css файл
84
     */
85
    public static function useRemoteCss($cssUrl)
86
    {
87
        static::assetManager()->useRemoteCss($cssUrl);
88
    }
89
    
90
    /**
91
     * Добавить inline Css код
92
     * @param string $css
93
     */
94
    public static function addInlineCss($css)
95
    {
96
        static::assetManager()->addInlineCss($css);
97
    }
98
    
99
    /**
100
     * Добавить inline JavaScript код
101
     * @param string $js
102
     */
103
    public static function addInlineJs($js)
104
    {
105
        static::assetManager()->addInlineJs($js);
106
    }
107
108
    /**
109
     * Получить html теги script используемых JavaScript asset`ов
110
     * @param array $attributes Массив атрибутов тега
111
     * ['Имя атрибута' => 'значение']
112
     * ['type' => 'text/javascript']
113
     * ['атрибут']
114
     * ['async', 'defer']
115
     * @return string
116
     */
117
    public static function renderJs(array $attributes = [])
118
    {
119
        return static::assetManager()->renderJs($attributes);
120
    }
121
    
122
    /**
123
     * Получить html теги link с используемыми CSS asset`ами
124
     * @return string
125
     */
126
    public static function renderCss()
127
    {
128
        return static::assetManager()->renderCss();
129
    }
130
    
131
    /**
132
     * Получить теги style с inline css или пустую строку если их нет
133
     * @return string
134
     */
135
    public static function renderInlineCss()
136
    {
137
        return static::assetManager()->renderInlineCss();
138
    }
139
    
140
    /**
141
     * Получить теги script с inline js или пустую строку если их нет
142
     * @return string
143
     */
144
    public static function renderInlineJs()
145
    {
146
        return static::assetManager()->renderInlineJs();
147
    }
148
    
149
    /**
150
     * Получить используемые css ассеты
151
     * @return array
152
     */
153
    public static function getUsedCss()
154
    {
155
        return static::assetManager()->getUsedCss();
156
    }
157
    
158
    /**
159
     * Получить используемые js asset`ы
160
     * @return array
161
     */
162
    public static function getUsedJs()
163
    {
164
        return static::assetManager()->getUsedJs();
165
    }
166
167
    /**
168
     * Удалить используемый css asset по его имени
169
     * @param string $cssAssetName
170
     */
171
    public static function removeCss($cssAssetName)
172
    {
173
        static::assetManager()->removeCss($cssAssetName);
174
    }
175
    
176
    /**
177
     * Удалить используемый js asset по его имени
178
     * @param string $jsAssetName
179
     */
180
    public static function removeJs($jsAssetName)
181
    {
182
        static::assetManager()->removeJs($jsAssetName);
183
    }
184
    
185
    /**
186
     * Удалить все используемые js asset`ы
187
     */
188
    public static function removeAlljs()
189
    {
190
        static::assetManager()->removeAllJs();
191
    }
192
    
193
    /**
194
     * Удалить все используемые css asset`ы
195
     */
196
    public static function removeAllCss()
197
    {
198
        static::assetManager()->removeAllCss();
199
    }
200
201
    /**
202
     * Получить AssetManager
203
     * @return AssetManager
204
     */
205
    protected static function assetManager()
206
    {
207
        if (!static::$assetManager) {
208
            $manifest              = new Manifest(static::$manifestFilePath);
209
            static::$assetManager  = new AssetManager($manifest->resultMap());
210
        }
211
        
212
        return static::$assetManager;
213
    }
214
}
215