Completed
Push — master ( 159d20...dbc6fd )
by Dmitry
02:25
created

Asset::useRemoteCss()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 1
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 или js по его url
54
     * @param string $assetNameOrUrl - имя asset`а или url
55
     */
56
    public static function useJs($assetNameOrUrl)
57
    {
58
        static::assetManager()->useJs($assetNameOrUrl);
59
    }
60
61
    /**
62
     * Использовать CSS Asset или CSS по его url
63
     * @param string $assetNameOrUrl - имя asset`а или url
64
     */
65
    public static function useCss($assetNameOrUrl)
66
    {
67
        static::assetManager()->useCss($assetNameOrUrl);
68
    }
69
    
70
    /**
71
     * Добавить inline Css код
72
     * @param string $css
73
     */
74
    public static function addInlineCss($css)
75
    {
76
        static::assetManager()->addInlineCss($css);
77
    }
78
    
79
    /**
80
     * Добавить inline JavaScript код
81
     * @param string $js
82
     */
83
    public static function addInlineJs($js)
84
    {
85
        static::assetManager()->addInlineJs($js);
86
    }
87
88
    /**
89
     * Получить html теги script используемых JavaScript asset`ов
90
     * @param array $attributes Массив атрибутов тега
91
     * ['Имя атрибута' => 'значение']
92
     * ['type' => 'text/javascript']
93
     * ['атрибут']
94
     * ['async', 'defer']
95
     * @return string
96
     */
97
    public static function renderJs(array $attributes = [])
98
    {
99
        return static::assetManager()->renderJs($attributes);
100
    }
101
    
102
    /**
103
     * Получить html теги link с используемыми CSS asset`ами
104
     * @return string
105
     */
106
    public static function renderCss()
107
    {
108
        return static::assetManager()->renderCss();
109
    }
110
    
111
    /**
112
     * Получить теги style с inline css или пустую строку если их нет
113
     * @return string
114
     */
115
    public static function renderInlineCss()
116
    {
117
        return static::assetManager()->renderInlineCss();
118
    }
119
    
120
    /**
121
     * Получить теги script с inline js или пустую строку если их нет
122
     * @return string
123
     */
124
    public static function renderInlineJs()
125
    {
126
        return static::assetManager()->renderInlineJs();
127
    }
128
    
129
    /**
130
     * Получить используемые css ассеты
131
     * @return array
132
     */
133
    public static function getUsedCss()
134
    {
135
        return static::assetManager()->getUsedCss();
136
    }
137
    
138
    /**
139
     * Получить используемые js asset`ы
140
     * @return array
141
     */
142
    public static function getUsedJs()
143
    {
144
        return static::assetManager()->getUsedJs();
145
    }
146
147
    /**
148
     * Удалить используемый css asset по его названию или url
149
     * @param string $cssAssetNameOrUrl - название asset`а или url
150
     */
151
    public static function removeCss($cssAssetNameOrUrl)
152
    {
153
        static::assetManager()->removeCss($cssAssetNameOrUrl);
154
    }
155
    
156
    /**
157
     * Удалить используемый js asset по его названию или url
158
     * @param string $jsAssetNameOrUrl название asset`а или url
159
     */
160
    public static function removeJs($jsAssetNameOrUrl)
161
    {
162
        static::assetManager()->removeJs($jsAssetNameOrUrl);
163
    }
164
    
165
    /**
166
     * Удалить все используемые js asset`ы
167
     */
168
    public static function removeAlljs()
169
    {
170
        static::assetManager()->removeAllJs();
171
    }
172
    
173
    /**
174
     * Удалить все используемые css asset`ы
175
     */
176
    public static function removeAllCss()
177
    {
178
        static::assetManager()->removeAllCss();
179
    }
180
181
    /**
182
     * Получить AssetManager
183
     * @return AssetManager
184
     */
185
    protected static function assetManager()
186
    {
187
        if (!static::$assetManager) {
188
            $manifest              = new Manifest(static::$manifestFilePath);
189
            static::$assetManager  = new AssetManager($manifest->resultMap());
190
        }
191
        
192
        return static::$assetManager;
193
    }
194
}
195