public function items()
 {
     $url = 'http://' . $this->model->domain . '/';
     return [['icon' => 'fa-paper-plane', 'label' => Yii::t('hipanel:domain', 'Go to site {link}', ['link' => StringHelper::truncate($url, 15)]), 'url' => $url, 'encode' => false, 'linkOptions' => ['target' => '_blank']], 'view' => ['label' => Yii::t('hipanel', 'View'), 'icon' => 'fa-info', 'url' => ['@domain/view', 'id' => $this->model->id], 'encode' => false], ['label' => Yii::t('hipanel:domain', 'Send FOA again'), 'icon' => 'fa-envelope-o', 'url' => ['@domain/notify-transfer-in'], 'linkOptions' => ['data' => ['method' => 'post', 'pjax' => '0', 'form' => 'notify-transfer-in', 'params' => ['Domain[id]' => $this->model->id]]], 'encode' => false, 'visible' => $this->model->state === Domain::STATE_PREINCOMING], ['label' => Yii::t('hipanel:domain', 'approve-preincoming'), 'url' => '#', 'visible' => false, 'encode' => false], ['label' => Yii::t('hipanel:domain', 'reject-preincoming'), 'url' => '#', 'visible' => false, 'encode' => false], ['label' => Yii::t('hipanel:domain', 'Approve transfer'), 'icon' => 'fa-exclamation-circle', 'url' => ['@domain/approve-transfer'], 'visible' => $this->model->state === Domain::STATE_OUTGOING && Yii::$app->user->can('support') && Domain::notDomainOwner($this->model), 'encode' => false, 'linkOptions' => ['data' => ['confirm' => Yii::t('hipanel:domain', 'Are you sure you want to cancel incoming transfer of domain {domain}?', ['domain' => $this->model->domain]), 'method' => 'post', 'pjax' => '0', 'form' => 'approve-transfer', 'params' => ['Domain[id]' => $this->model->id]]]], ['label' => Yii::t('hipanel:domain', 'Reject transfer'), 'icon' => 'fa-anchor', 'url' => ['reject-transfer', 'id' => $this->model->id], 'visible' => $this->model->state === Domain::STATE_OUTGOING, 'encode' => false], ['label' => Yii::t('hipanel:domain', 'Cancel transfer'), 'icon' => 'fa-exclamation-triangle', 'url' => ['@domain/cancel-transfer'], 'linkOptions' => ['data' => ['confirm' => Yii::t('hipanel:domain', 'Are you sure you want to cancel incoming transfer of domain {domain}?', ['domain' => $this->model->domain]), 'method' => 'post', 'pjax' => '0', 'form' => 'cancel-transfer', 'params' => ['Domain[id]' => $this->model->id]]], 'visible' => $this->model->state === Domain::STATE_INCOMING, 'encode' => false], ['label' => Yii::t('hipanel:domain', 'Synchronize contacts'), 'icon' => 'fa-refresh', 'url' => ['sync', 'id' => $this->model->id], 'visible' => $this->model->isSynchronizable() && in_array($this->model->state, [Domain::STATE_OK, Domain::STATE_EXPIRED], true) && Yii::$app->user->can('support') && Domain::notDomainOwner($this->model), 'encode' => false], ['label' => Yii::t('hipanel:domain', 'Delete by AGP'), 'icon' => 'fa-trash-o', 'url' => ['@domain/delete-agp'], 'linkOptions' => ['confirm' => Yii::t('hipanel:domain', 'Are you sure you want to delete domain {domain}?', ['domain' => $this->model->domain]), 'method' => 'post', 'data-pjax' => '0', 'form' => 'delete-agp', 'params' => ['Domain[id]' => $this->model->id]], 'visible' => Yii::$app->user->can('manage') && in_array($this->model->state, [Domain::STATE_OK], true) && time() <= strtotime('+5 days', strtotime($this->model->created_date)) && strtotime('+1 year', time()) > strtotime($this->model->expires) && in_array(Domain::getZone($this->model->domain), ['com', 'net'], true), 'encode' => false], ['label' => !$this->model->isFreezed() ? Yii::t('hipanel:domain', 'Freeze domain') : Yii::t('hipanel:domain', 'Unfreeze domain'), 'url' => !$this->model->isFreezed() ? ['@domain/enable-freeze'] : ['@domain/disable-freeze'], 'icon' => 'fa-snowflake-o', 'visible' => !$this->model->isRussianZones() && Yii::$app->user->can('support') && Domain::notDomainOwner($this->model), 'linkOptions' => ['data' => ['method' => 'post', 'pjax' => '0', 'form' => 'freeze-' . $this->model->id, 'params' => ['Domain[id]' => $this->model->id]]]], ['label' => !$this->model->isWPFreezed() ? Yii::t('hipanel:domain', 'Enable WHOIS-protect freeze') : Yii::t('hipanel:domain', 'Disable WHOIS-protect freeze'), 'url' => !$this->model->isWPFreezed() ? ['enable-w-p-freeze'] : ['disable-w-p-freeze'], 'icon' => 'fa-snowflake-o', 'visible' => !$this->model->isRussianZones() && Yii::$app->user->can('support') && Domain::notDomainOwner($this->model), 'linkOptions' => ['data' => ['method' => 'post', 'pjax' => '0', 'form' => 'freeze-w-p-' . $this->model->id, 'params' => ['Domain[id]' => $this->model->id]]]], ['label' => !$this->model->isHolded() ? Yii::t('hipanel:domain', 'Enable Hold') : Yii::t('hipanel:domain', 'Disable Hold'), 'url' => !$this->model->isHolded() ? ['@domain/enable-hold'] : ['@domain/disable-hold'], 'icon' => !$this->model->isHolded() ? 'fa-ban' : 'fa-link', 'linkOptions' => ['data' => ['method' => 'post', 'pjax' => '0', 'form' => 'hold-' . $this->model->id, 'params' => ['Domain[id]' => $this->model->id]]], 'visible' => !in_array(Domain::getZone($this->model->domain), ['ru', 'su', 'рф'], true) && (Yii::$app->user->can('support') && Yii::$app->user->not($this->model->client_id) && Yii::$app->user->not($this->model->seller_id))], ['label' => Yii::t('hipanel:domain', 'Manage DNS'), 'icon' => 'fa-globe', 'url' => ['@dns/zone/view', 'id' => $this->model->id], 'visible' => Yii::getAlias('@dns', false), 'encode' => false]];
 }
 public static function defaultColumns()
 {
     return ['domain' => ['class' => MainColumn::class, 'attribute' => 'domain', 'note' => true, 'filterAttribute' => 'domain_like'], 'state' => ['format' => 'raw', 'filter' => function ($grid, $model, $attribute) {
         return Html::activeDropDownList($model, $attribute, Domain::stateOptions(), ['prompt' => '--', 'class' => 'form-control']);
     }, 'filterInputOptions' => ['style' => 'width:120px'], 'value' => function ($model) {
         $out = State::widget(compact('model'));
         if ($model->is_freezed || $model->is_holded) {
             $out .= '<br>';
             $out .= $model->is_freezed ? Html::tag('span', Html::tag('span', '', ['class' => Menu::iconClass('fa-snowflake-o')]) . ' ' . Yii::t('hipanel:domain', 'Froze'), ['class' => 'label label-info']) : '';
             $out .= $model->is_holded ? ' ' . Html::tag('span', Html::tag('span', '', ['class' => Menu::iconClass('fa-ban')]) . ' ' . Yii::t('hipanel:domain', 'Held'), ['class' => 'label label-warning']) : '';
         }
         return $out;
     }], 'whois_protected' => ['class' => BootstrapSwitchColumn::class, 'attribute' => 'whois_protected', 'filter' => false, 'url' => Url::toRoute('set-whois-protect'), 'popover' => 'WHOIS protection', 'pluginOptions' => ['offColor' => 'warning']], 'is_secured' => ['class' => BootstrapSwitchColumn::class, 'filter' => false, 'url' => Url::toRoute('set-lock'), 'attribute' => 'is_secured', 'popover' => Yii::t('hipanel:domain', 'Protection from transfer')], 'note' => ['class' => XEditableColumn::class, 'attribute' => 'note', 'filter' => true, 'popover' => Yii::t('hipanel:domain', 'Make any notes for your convenience'), 'pluginOptions' => ['url' => 'set-note']], 'created_date' => ['attribute' => 'created_date', 'format' => 'date', 'filter' => false, 'contentOptions' => ['class' => 'text-nowrap']], 'expires' => ['format' => 'raw', 'filter' => false, 'headerOptions' => ['style' => 'width:1em'], 'value' => function ($model) {
         return Expires::widget(compact('model'));
     }], 'autorenewal' => ['class' => BootstrapSwitchColumn::class, 'label' => Yii::t('hipanel', 'Autorenew'), 'filter' => false, 'url' => Url::toRoute('set-autorenewal'), 'popover' => Yii::t('hipanel:domain', 'The domain will be autorenewed for one year in a week before it expires if you have enough credit on your account')], 'nameservers' => ['format' => 'raw', 'value' => function ($model) {
         return ArraySpoiler::widget(['data' => $model->nameservers]);
     }], 'actions' => ['class' => MenuColumn::class, 'menuClass' => DomainActionsMenu::class], 'old_actions' => ['class' => ActionColumn::class, 'template' => '{view} {manage-dns} {notify-transfer-in} {approve-preincoming} {reject-preincoming} {approve-transfer} {reject-transfer} {cancel-transfer} {sync} {enable-hold} {disable-hold} {enable-freeze} {disable-freeze} {delete-agp} {delete}', 'header' => Yii::t('hipanel', 'Actions'), 'buttons' => ['notify-transfer-in' => function ($url, $model, $key) {
         return $model->state === 'preincoming' ? Html::a('<i class="fa fa-envelope-o"></i>' . Yii::t('hipanel:domain', 'Send FOA again'), $url, ['data' => ['method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'approve-preincoming' => function ($url, $model, $key) {
     }, 'reject-preincoming' => function ($url, $model, $key) {
     }, 'approve-transfer' => function ($url, $model, $key) {
         return $model->state === 'outgoing' && Yii::$app->user->can('support') && Domain::notDomainOwner($model) ? Html::a('<i class="fa fa-exclamation-circle"></i>' . Yii::t('hipanel:domain', 'Approve transfer'), $url, ['data' => ['confirm' => Yii::t('hipanel:domain', 'Are you sure you want to approve outgoing transfer of domain {domain}?', ['domain' => $model->domain]), 'method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'reject-transfer' => function ($url, $model, $key) {
         return $model->state === 'outgoing' ? Html::a('<i class="fa fa-anchor"></i>' . Yii::t('hipanel:domain', 'Reject transfer'), $url, ['data' => ['confirm' => Yii::t('hipanel:domain', 'Are you sure you want to reject outgoing transfer of domain {domain}?', ['domain' => $model->domain]), 'method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'cancel-transfer' => function ($url, $model, $key) {
         return $model->state === 'incoming' ? Html::a('<i class="fa fa-exclamation-triangle"></i>' . Yii::t('hipanel:domain', 'Cancel transfer'), $url, ['data' => ['confirm' => Yii::t('hipanel:domain', 'Are you sure you want to cancel incoming transfer of domain {domain}?', ['domain' => $model->domain]), 'method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'sync' => function ($url, $model, $key) {
         return in_array($model->state, ['ok', 'expired'], true) && Yii::$app->user->can('support') && Domain::notDomainOwner($model) ? Html::a('<i class="fa ion-ios-loop-strong"></i>' . Yii::t('hipanel:domain', 'Synchronize contacts'), $url, ['data' => ['method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'delete' => function ($url, $model, $key) {
         return in_array($model->state, ['ok', 'expired', 'outgoing'], true) && Yii::$app->user->can('support') ? Html::a('<i class="fa fa-trash-o"></i>' . Yii::t('hipanel', 'Delete'), $url, ['title' => Yii::t('hipanel', 'Delete'), 'aria-label' => Yii::t('hipanel', 'Delete'), 'data' => ['confirm' => Yii::t('hipanel:domain', 'Are you sure you want to delete domain {domain}?', ['domain' => $model->domain]), 'method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'delete-agp' => function ($url, $model, $key) {
         if (!in_array($model->state, ['ok'], true)) {
             return '';
         }
         if (time() >= strtotime('+5 days', strtotime($model->created_date))) {
             return '';
         }
         if (strtotime('+1 year', time()) < strtotime($model->expires)) {
             return '';
         }
         return in_array(Domain::getZone($model->domain), ['com', 'net'], true) ? Html::a('<i class="fa fa-trash-o"></i>' . Yii::t('hipanel:domain', 'Delete by AGP'), $url, ['title' => Yii::t('hipanel:domain', 'Delete by AGP'), 'aria-label' => Yii::t('hipanel:domain', 'Delete by AGP'), 'data' => ['confirm' => Yii::t('hipanel:domain', 'Are you sure you want to delete domain {domain}?', ['domain' => $model->domain]), 'method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'enable-freeze' => function ($url, $model, $key) {
         return !$model->is_freezed && Yii::$app->user->can('support') && Domain::notDomainOwner($model) ? Html::a('<i class="fa fa-lock"></i>' . Yii::t('hipanel:domain', 'Freeze domain'), $url, ['data' => ['method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'disable-freeze' => function ($url, $model, $key) {
         return $model->is_freezed && Yii::$app->user->can('support') && Domain::notDomainOwner($model) ? Html::a('<i class="fa fa-unlock"></i>' . Yii::t('hipanel:domain', 'Unfreeze domain'), $url, ['data' => ['method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'enable-hold' => function ($url, $model, $key) {
         if ($model->is_holded) {
             return '';
         }
         if (Yii::$app->user->can('support') && Yii::$app->user->not($model->client_id) && Yii::$app->user->not($model->seller_id)) {
             return Html::a('<i class="fa fa-bomb"></i>' . Yii::t('hipanel:domain', 'Enable Hold'), $url);
         }
         return '';
     }, 'disable-hold' => function ($url, $model, $key) {
         return $model->is_holded && in_array($model->state, ['ok', 'expired'], true) && Yii::$app->user->can('support') && Domain::notDomainOwner($model) ? Html::a('<i class="fa fa-link"></i>' . Yii::t('hipanel:domain', 'Disable Hold'), $url, ['data' => ['method' => 'post', 'data-pjax' => '0']]) : '';
     }, 'manage-dns' => function ($url, $model, $key) {
         if (Yii::getAlias('@dns', false)) {
             return Html::a('<i class="fa fa-globe"></i>' . Yii::t('hipanel:domain', 'Manage DNS'), ['@dns/zone/view', 'id' => $model->id]);
         }
         return '';
     }]]];
 }
<?php

use hipanel\modules\domain\models\Domain;
use yii\helpers\Html;
$options = ['method' => 'post', 'data-pjax' => '0'];
if (!$model->is_holded && (Yii::$app->user->can('support') && Yii::$app->user->not($model->client_id) && Yii::$app->user->not($model->seller_id))) {
    ?>
    <li>
        <?php 
    echo Html::a('<i class="fa fa-fw fa-bomb"></i> ' . Yii::t('hipanel:domain', 'Enable Hold'), ['@domain/enable-hold', 'id' => $model->id], $options);
    ?>
    </li>
<?php 
} elseif ($model->is_holded && in_array($model->state, ['ok', 'expired'], true) && Yii::$app->user->can('support') && Domain::notDomainOwner($model)) {
    ?>
    <li>
        <?php 
    echo Html::a('<i class="fa fa-fw fa-link"></i> ' . Yii::t('hipanel:domain', 'Disable Hold'), ['@domain/disable-hold', 'id' => $this->model->id], $options);
    ?>
    </li>
<?php 
}