1 | <?php |
||||
2 | |||||
3 | use hipanel\models\IndexPageUiOptions; |
||||
4 | use hipanel\modules\server\grid\ServerGridLegend; |
||||
5 | use hipanel\modules\server\grid\ServerGridView; |
||||
6 | use hipanel\modules\server\models\OsimageSearch; |
||||
7 | use hipanel\widgets\AjaxModal; |
||||
8 | use hipanel\widgets\AjaxModalWithTemplatedButton; |
||||
9 | use hipanel\widgets\gridLegend\GridLegend; |
||||
10 | use hipanel\widgets\IndexPage; |
||||
11 | use hipanel\widgets\Pjax; |
||||
12 | use yii\bootstrap\Dropdown; |
||||
13 | use yii\bootstrap\Modal; |
||||
14 | use yii\helpers\Html; |
||||
15 | use yii\helpers\Json; |
||||
16 | use yii\helpers\Url; |
||||
17 | use yii\web\JsExpression; |
||||
18 | |||||
19 | /** |
||||
20 | * @var OsimageSearch |
||||
21 | * @var yii\web\View $this |
||||
22 | * @var IndexPageUiOptions $uiModel |
||||
23 | * @var \hiqdev\higrid\representations\RepresentationCollection $representationCollection |
||||
24 | * @var bool $orderIsAllowed |
||||
25 | */ |
||||
26 | $this->title = Yii::t('hipanel:server', 'Servers'); |
||||
27 | $this->params['subtitle'] = array_filter(Yii::$app->request->get($model->formName(), [])) ? Yii::t('hipanel', 'filtered list') : Yii::t('hipanel', 'full list'); |
||||
28 | $this->params['breadcrumbs'][] = $this->title; |
||||
29 | $orderIsAllowed = $this->context->module->orderIsAllowed; |
||||
0 ignored issues
–
show
Bug
introduced
by
![]() |
|||||
30 | |||||
31 | ?> |
||||
32 | |||||
33 | <?php Pjax::begin(array_merge(Yii::$app->params['pjax'], ['enablePushState' => true])) ?> |
||||
34 | <?php $page = IndexPage::begin(compact('model', 'dataProvider')) ?> |
||||
35 | |||||
36 | <?php if (Yii::$app->user->can('support')) : ?> |
||||
0 ignored issues
–
show
The method
can() does not exist on null .
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces. This is most likely a typographical error or the method has been renamed. ![]() |
|||||
37 | <?php $page->beginContent('legend') ?> |
||||
38 | <?= GridLegend::widget(['legendItem' => new ServerGridLegend($model)]) ?> |
||||
39 | <?php $page->endContent() ?> |
||||
40 | <?php endif ?> |
||||
41 | |||||
42 | <?php $page->beginContent('main-actions') ?> |
||||
43 | <?php if (Yii::$app->user->can('server.create')) : ?> |
||||
44 | <?= Html::a(Yii::t('hipanel:server', 'Create server'), ['@server/create'], ['class' => 'btn btn-sm btn-success']) ?> |
||||
45 | <?php endif ?> |
||||
46 | <?php if (Yii::$app->user->can('server.pay') && $orderIsAllowed) : ?> |
||||
47 | <?= Html::a(Yii::t('hipanel:server:order', 'Buy server'), ['/server/order/index'], ['class' => 'btn btn-sm btn-primary']) ?> |
||||
48 | <?php endif ?> |
||||
49 | <?php $page->endContent() ?> |
||||
50 | |||||
51 | <?php $page->beginContent('sorter-actions') ?> |
||||
52 | <?= $page->renderSorter([ |
||||
53 | 'attributes' => array_filter([ |
||||
54 | 'name', 'tariff', 'ip', |
||||
55 | Yii::$app->user->can('support') ? 'client' : null, |
||||
56 | ]), |
||||
57 | ]) ?> |
||||
58 | <?php $page->endContent() ?> |
||||
59 | <?php $page->beginContent('representation-actions') ?> |
||||
60 | <?= $page->renderRepresentations($representationCollection) ?> |
||||
61 | <?php $page->endContent() ?> |
||||
62 | |||||
63 | <?php $page->beginContent('bulk-actions') ?> |
||||
64 | <?php if ($uiModel->representation === 'hardware' |
||||
65 | && Yii::getAlias('@part', false) |
||||
66 | && Yii::$app->user->can('part.read') |
||||
67 | ): ?> |
||||
68 | <?php |
||||
69 | $partsDetailsLink = Json::htmlEncode(Url::to(\hipanel\helpers\Url::toSearch('part'))); |
||||
70 | echo Html::button(Yii::t('hipanel:server', 'View parts'), [ |
||||
71 | 'class' => 'btn btn-sm btn-default', |
||||
72 | 'onClick' => new JsExpression(<<<JS |
||||
73 | const selection = jQuery('div[role="grid"]').yiiGridView('getSelectedRows'); |
||||
74 | window.location.href = $partsDetailsLink + '?' + jQuery.param({PartSearch: {dst_id_in: selection}}); |
||||
75 | JS |
||||
76 | ), ]) ?> |
||||
77 | <?php endif ?> |
||||
78 | <?php if (Yii::$app->user->can('server.sell')): ?> |
||||
79 | <?= AjaxModal::widget([ |
||||
80 | 'id' => 'bulk-sale-modal', |
||||
81 | 'bulkPage' => true, |
||||
82 | 'header' => Html::tag('h4', Yii::t('hipanel:server', 'Sell servers'), ['class' => 'modal-title']), |
||||
83 | 'scenario' => 'bulk-sale', |
||||
84 | 'size' => Modal::SIZE_LARGE, |
||||
85 | 'toggleButton' => ['label' => Yii::t('hipanel:server', 'Sell'), 'class' => 'btn btn-sm btn-default'], |
||||
86 | ]) ?> |
||||
87 | <?php endif ?> |
||||
88 | <div class="dropdown" style="display: inline-block"> |
||||
89 | <?php if ( |
||||
90 | Yii::$app->user->can('server.update') |
||||
91 | || Yii::$app->user->can('server.set-note') |
||||
92 | || Yii::$app->user->can('server.enable-block') |
||||
93 | || Yii::$app->user->can('server.disable-block') |
||||
94 | || Yii::$app->user->can('manage') |
||||
95 | ) : ?> |
||||
96 | <button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
||||
97 | <?= Yii::t('hipanel', 'Basic actions') ?> |
||||
98 | <span class="caret"></span> |
||||
99 | </button> |
||||
100 | <?= Dropdown::widget([ |
||||
101 | 'encodeLabels' => false, |
||||
102 | 'options' => ['class' => 'pull-right'], |
||||
103 | 'items' => array_filter([ |
||||
104 | [ |
||||
105 | 'label' => '<i class="fa fa-plug"></i> ' . Yii::t('hipanel:server', 'Assign hubs'), |
||||
106 | 'url' => '#', |
||||
107 | 'linkOptions' => ['data-action' => 'assign-hubs'], |
||||
108 | 'visible' => Yii::$app->user->can('server.update'), |
||||
109 | ], |
||||
110 | Yii::$app->user->can('server.update') ? AjaxModalWithTemplatedButton::widget([ |
||||
111 | 'ajaxModalOptions' => [ |
||||
112 | 'id' => 'bulk-set-type-modal', |
||||
113 | 'bulkPage' => true, |
||||
114 | 'header' => Html::tag('h4', Yii::t('hipanel:server', 'Change type'), ['class' => 'modal-title']), |
||||
115 | 'scenario' => 'set-type', |
||||
116 | 'toggleButton' => [ |
||||
117 | 'tag' => 'a', |
||||
118 | 'label' => '<i class="fa fa-pencil"></i> ' . Yii::t('hipanel:server', 'Change type'), |
||||
119 | ], |
||||
120 | ], |
||||
121 | 'toggleButtonTemplate' => '<li>{toggleButton}</li>', |
||||
122 | ]) : null, |
||||
123 | [ |
||||
124 | 'label' => '<i class="fa fa-pencil"></i> ' . Yii::t('hipanel:server', 'Set one type to many servers'), |
||||
125 | 'url' => '#', |
||||
126 | 'linkOptions' => ['data-action' => 'set-one-type'], |
||||
127 | 'visible' => Yii::$app->user->can('server.update'), |
||||
128 | ], |
||||
129 | Yii::$app->user->can('server.update') ? [ |
||||
130 | 'label' => '<i class="fa fa-cog"></i> ' . Yii::t('hipanel:server', 'Set units'), |
||||
131 | 'url' => '#', |
||||
132 | 'linkOptions' => ['data-action' => 'set-units'], |
||||
133 | 'visible' => Yii::$app->user->can('server.update'), |
||||
134 | ] : null, |
||||
135 | [ |
||||
136 | 'label' => '<i class="fa fa-cog"></i> ' . Yii::t('hipanel:server', 'Set Rack No.'), |
||||
137 | 'url' => '#', |
||||
138 | 'linkOptions' => ['data-action' => 'set-rack-no'], |
||||
139 | 'visible' => Yii::$app->user->can('server.update'), |
||||
140 | ], |
||||
141 | Yii::$app->user->can('consumption.delete') ? AjaxModalWithTemplatedButton::widget([ |
||||
142 | 'ajaxModalOptions' => [ |
||||
143 | 'id' => 'clear-resources-modal', |
||||
144 | 'bulkPage' => true, |
||||
145 | 'header' => Html::tag('h4', Yii::t('hipanel:server', 'Clear resources'), ['class' => 'modal-title']), |
||||
146 | 'scenario' => 'clear-resources-modal', |
||||
147 | 'toggleButton' => [ |
||||
148 | 'tag' => 'a', |
||||
149 | 'label' => '<i class="fa fa-history"></i> ' . Yii::t('hipanel:server', 'Clear resources'), |
||||
150 | ], |
||||
151 | ], |
||||
152 | 'toggleButtonTemplate' => '<li>{toggleButton}</li>', |
||||
153 | ]) : null, |
||||
154 | Yii::$app->user->can('consumption.delete') ? AjaxModalWithTemplatedButton::widget([ |
||||
155 | 'ajaxModalOptions' => [ |
||||
156 | 'id' => 'flush-modal', |
||||
157 | 'bulkPage' => true, |
||||
158 | 'header' => Html::tag('h4', Yii::t('hipanel:server', 'Flush switch graphs'), ['class' => 'modal-title']), |
||||
159 | 'scenario' => 'flush-switch-graphs-modal', |
||||
160 | 'toggleButton' => [ |
||||
161 | 'tag' => 'a', |
||||
162 | 'label' => '<i class="fa fa-history"></i> ' . Yii::t('hipanel:server', 'Flush switch graphs'), |
||||
163 | ], |
||||
164 | ], |
||||
165 | 'toggleButtonTemplate' => '<li>{toggleButton}</li>', |
||||
166 | ]) : null, |
||||
167 | Yii::$app->user->can('server.disable-block') ? AjaxModalWithTemplatedButton::widget([ |
||||
168 | 'ajaxModalOptions' => [ |
||||
169 | 'bulkPage' => true, |
||||
170 | 'id' => 'bulk-enable-block-modal', |
||||
171 | 'scenario' => 'bulk-enable-block-modal', |
||||
172 | 'header' => Html::tag('h4', Yii::t('hipanel:server', 'Block servers'), ['class' => 'modal-title label-warning']), |
||||
173 | 'headerOptions' => ['class' => 'label-warning'], |
||||
174 | 'toggleButton' => [ |
||||
175 | 'tag' => 'a', |
||||
176 | 'label' => '<i class="fa fa-toggle-on"></i> ' . Yii::t('hipanel', 'Enable block'), |
||||
177 | ], |
||||
178 | ], |
||||
179 | 'toggleButtonTemplate' => '<li>{toggleButton}</li>', |
||||
180 | ]) : null, |
||||
181 | Yii::$app->user->can('server.enable-block') ? AjaxModalWithTemplatedButton::widget([ |
||||
182 | 'ajaxModalOptions' => [ |
||||
183 | 'bulkPage' => true, |
||||
184 | 'id' => 'bulk-disable-block-modal', |
||||
185 | 'scenario' => 'bulk-disable-block-modal', |
||||
186 | 'header' => Html::tag('h4', Yii::t('hipanel:server', 'Unblock servers'), ['class' => 'modal-title']), |
||||
187 | 'headerOptions' => ['class' => 'label-warning'], |
||||
188 | 'toggleButton' => [ |
||||
189 | 'tag' => 'a', |
||||
190 | 'label' => '<i class="fa fa-toggle-off"></i> ' . Yii::t('hipanel', 'Disable block'), |
||||
191 | ], |
||||
192 | ], |
||||
193 | 'toggleButtonTemplate' => '<li>{toggleButton}</li>', |
||||
194 | ]) : null, |
||||
195 | Yii::$app->user->can('server.set-note') ? AjaxModalWithTemplatedButton::widget([ |
||||
196 | 'ajaxModalOptions' => [ |
||||
197 | 'bulkPage' => true, |
||||
198 | 'id' => 'servers-set-note', |
||||
199 | 'scenario' => Yii::$app->user->can('support') ? 'set-label' : 'set-note', |
||||
200 | 'size' => Modal::SIZE_LARGE, |
||||
201 | 'header' => Html::tag('h4', Yii::t('hipanel:server', 'Set notes'), ['class' => 'modal-title']), |
||||
202 | 'toggleButton' => [ |
||||
203 | 'tag' => 'a', |
||||
204 | 'label' => '<i class="fa fa-pencil"></i> ' . Yii::t('hipanel:server', 'Set notes'), |
||||
205 | ], |
||||
206 | ], |
||||
207 | 'toggleButtonTemplate' => '<li>{toggleButton}</li>', |
||||
208 | ]) : null, |
||||
209 | Yii::$app->user->can('server.delete') ? AjaxModalWithTemplatedButton::widget([ |
||||
210 | 'ajaxModalOptions' => [ |
||||
211 | 'id' => 'bulk-delete-modal', |
||||
212 | 'bulkPage' => true, |
||||
213 | 'scenario' => 'bulk-delete-modal', |
||||
214 | 'header' => Html::tag('h4', Yii::t('hipanel', 'Delete'), ['class' => 'modal-title label-danger']), |
||||
215 | 'headerOptions' => ['class' => 'label-danger'], |
||||
216 | 'toggleButton' => [ |
||||
217 | 'tag' => 'a', |
||||
218 | 'label' => '<i class="fa fa-trash"></i> ' . Yii::t('hipanel', 'Delete'), |
||||
219 | ], |
||||
220 | ], |
||||
221 | 'toggleButtonTemplate' => '<li>{toggleButton}</li>', |
||||
222 | ]) : null, |
||||
223 | $model->canControlPower() ? [ |
||||
224 | 'label' => '<i class="fa fw fa-power-off"></i> ' . Yii::t('hipanel:server', 'Reboot'), |
||||
225 | 'url' => '#', |
||||
226 | 'linkOptions' => [ |
||||
227 | 'data-action' => 'reboot', |
||||
228 | 'onclick' => new JsExpression( |
||||
229 | sprintf( |
||||
230 | 'return confirm(\'%s %s\');', |
||||
231 | Yii::t('hipanel:server', 'This may cause data loose!'), |
||||
232 | Yii::t('hipanel:server', 'Reboot will interrupt all processes on the server. Are you sure you want to reset the server?') |
||||
233 | ) |
||||
234 | ), |
||||
235 | ], |
||||
236 | ] : null, |
||||
237 | ]), |
||||
238 | ]) ?> |
||||
239 | <?php endif ?> |
||||
240 | </div> |
||||
241 | <?php $page->endContent() ?> |
||||
242 | |||||
243 | <?php $page->beginContent('table') ?> |
||||
244 | <?php $page->beginBulkForm(); ?> |
||||
245 | <?= ServerGridView::widget([ |
||||
246 | 'dataProvider' => $dataProvider, |
||||
247 | 'boxed' => false, |
||||
248 | 'colorize' => true, |
||||
249 | 'filterModel' => $model, |
||||
250 | 'osImages' => $osimages, |
||||
251 | 'columns' => $representationCollection->getByName($uiModel->representation)->getColumns(), |
||||
252 | 'rowOptions' => function ($model) { |
||||
253 | return GridLegend::create(new ServerGridLegend($model))->gridRowOptions(); |
||||
254 | }, |
||||
255 | ]) ?> |
||||
256 | <?php $page->endBulkForm(); ?> |
||||
257 | <?php $page->endContent() ?> |
||||
258 | <?php $page->end() ?> |
||||
259 | <?php Pjax::end() ?> |
||||
260 |