Skip to content

Commit

Permalink
Hdomain aliases operation improved
Browse files Browse the repository at this point in the history
  • Loading branch information
SilverFire committed Sep 10, 2015
1 parent e70c777 commit 5140898
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 56 deletions.
11 changes: 11 additions & 0 deletions src/controllers/HdomainController.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,17 @@ public function actions()
'class' => 'hipanel\actions\SmartPerformAction',
'success' => Yii::t('app', 'Premium autorenewal has been disabled'),
],
'delete' => [
'class' => 'hipanel\actions\SmartDeleteAction',
'success' => Yii::t('app', 'Domain delete task has been created successfully'),
'error' => Yii::t('app', 'Error while deleting domain'),
],
'delete-alias' => [
'class' => 'hipanel\actions\SmartDeleteAction',
'scenario' => 'delete',
'success' => Yii::t('app', 'Alias delete task has been created successfully'),
'error' => Yii::t('app', 'Error while deleting alias'),
]
];
}

Expand Down
25 changes: 21 additions & 4 deletions src/models/Hdomain.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use hipanel\modules\hosting\validators\LoginValidator as AccountLoginValidator;
use hipanel\validators\IpValidator;
use Yii;
use yii\web\JsExpression;

class Hdomain extends \hipanel\base\Model
{
Expand All @@ -27,7 +28,6 @@ class Hdomain extends \hipanel\base\Model
*/
public $aliases;


/** @inheritdoc */
public function rules()
{
Expand Down Expand Up @@ -56,6 +56,7 @@ public function rules()
'type',
'backuping_type',
'state_label',
'alias_type',
],
'safe'
],
Expand All @@ -78,24 +79,40 @@ public function rules()
'on' => ['create']
],
[
['sub'],
['subdomain'],
'match',
'pattern' => '/^(\*|[a-z0-9][a-z0-9-]*)$/i',
'message' => \Yii::t('app', '{attribute} does not look like a domain part'),
'on' => ['create-alias']
],

[
[
'server',
'account',
'vhost_id',
'domain',
'with_www',
],
'required',
'on' => ['create-alias']
],
[
[
'domain',
],
'required',
'when' => function ($model) {
return $model->alias_type === 'new';
},
'whenClient' => new JsExpression("function (attribute, value) {
return false;
}"),
'on' => ['create-alias']
],
[
['id'],
'required',
'on' => ['delete']
]
];
}

Expand Down
2 changes: 1 addition & 1 deletion src/views/db/view.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
<li>
<?= ModalButton::widget([
'model' => $model,
'scenario' => 'truncate',
'scenario' => 'delete',
'button' => [
'label' => '<i class="fa fa-trash-o"></i>' . Yii::t('app', 'Delete'),
],
Expand Down
49 changes: 28 additions & 21 deletions src/views/hdomain/_form-alias.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
'enableClientValidation' => true,
'validateOnBlur' => true,
'enableAjaxValidation' => true,
'validationUrl' => Url::toRoute(['validate-form', 'scenario' => $model->isNewRecord ? $model->scenario : 'update']),
'validationUrl' => Url::toRoute(['validate-form', 'scenario' => $model->scenario]),
]); ?>

<div class="container-items">
Expand All @@ -42,22 +42,22 @@
]);
print $form->field($model, "[$i]vhost_id")->widget(VhostCombo::className(), ['formElementSelector' => '.form-instance']);

print Html::label(Yii::t('app', 'Domain')
. '<br />' . Html::radio("[$i]vhost_type", true, [
$model->alias_type = 'subdomain';
print $form->field($model, "[$i]alias_type")->radio([
'value' => 'subdomain',
'class' => 'vhost-type',
'label' => Yii::t('app', 'Subdomain of existing domain')
])
. '<br />' . Html::radio("[$i]vhost_type", false, [
'class' => 'alias-type',
'label' => Yii::t('app', 'Subdomain of existing domain'),
]);
print $form->field($model, "[$i]alias_type")->radio([
'id' => $model->formName() . '-' . $i . '-alias_type-new',
'value' => 'new',
'class' => 'vhost-type',
'class' => 'alias-type',
'label' => Yii::t('app', 'New domain')
])
);
]);
?>

<div class="vhost-subdomain form-inline">
<?= $form->field($model, "[$i]sub")->input('text', ['data-field' => 'sub'])->label(false) ?>
<div class="alias-subdomain form-inline">
<?= $form->field($model, "[$i]subdomain")->input('text', ['data-field' => 'subdomain'])->label(false) ?>
<?= Html::tag('span', '.') ?>
<?= $form->field($model, "[$i]dns_hdomain_id")->widget(HdomainCombo::className(), [
'formElementSelector' => '.form-instance',
Expand All @@ -71,10 +71,17 @@
")
]
])->label(false) ?>
<?= $form->field($model, "[$i]domain")->hiddenInput(['data-field' => 'sub-with-domain'])->label(false) ?>
<?= $form->field($model, "[$i]domain")->hiddenInput([
'id' => $model->formName() . '-' . $i . '-domain-sub',
'data-field' => 'sub-with-domain'
])->label(false) ?>
</div>
<div class="vhost-newdomain">
<?= $form->field($model, "[$i]domain")->input('text', ['data-field' => 'domain', 'disabled' => true, 'class' => 'form-control collapse'])->label(false) ?>
<div class="alias-newdomain">
<?= $form->field($model, "[$i]domain")->input('text', [
'data-field' => 'domain',
'disabled' => true,
'class' => 'form-control collapse'
])->label(false) ?>
</div>
<?= $form->field($model, "[$i]with_www")->checkbox() ?>
</div>
Expand All @@ -90,11 +97,11 @@
<?php ActiveForm::end();

$this->registerJs(<<<'JS'
$(this).on('change', '.vhost-type', function (e) {
$(this).on('change', '.alias-type', function (e) {
var $form = $(this).closest('.form-instance');
var $sub_inputs = $form.find('.vhost-subdomain, input[data-field="sub"], input[data-field="sub-with-domain"]');
var $new_inputs = $form.find('.vhost-newdomain, input[data-field="domain"]');
var $sub_inputs = $form.find('.alias-subdomain, input[data-field="subdomain"], input[data-field="sub-with-domain"]');
var $new_inputs = $form.find('.alias-newdomain, input[data-field="domain"]');
if ($(this).attr('value') == 'subdomain') {
$sub_inputs.show().prop('disabled', false);
Expand All @@ -107,17 +114,17 @@
$('#dynamic-form').on('update', 'input[data-field="sub-with-domain"]', function (event) {
var $form = $(this).closest('.form-instance');
var sub = $form.find('input[data-field="sub"]').val();
var subdomain = $form.find('input[data-field="subdomain"]').val();
var domain = $form.find('input[data-field="dns_hdomain_id"]').select2('data');
var value = '';
if (domain && domain.text) {
value = sub + '.' + domain.text;
value = (subdomain.length > 0 ? (subdomain + '.') : '') + domain.text;
}
$(this).val(value).trigger('change');
});
$('#dynamic-form').on('change', 'input[data-field="sub"]', function () {
$('#dynamic-form').on('change', 'input[data-field="subdomain"]', function () {
var $form = $(this).closest('.form-instance');
$form.find('input[data-field="sub-with-domain"]').trigger('update');
});
Expand Down
98 changes: 68 additions & 30 deletions src/views/hdomain/view.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
<?php

use hipanel\modules\hosting\grid\HdomainGridView;
use hipanel\modules\hosting\models\Hdomain;
use hipanel\widgets\Box;
use yii\bootstrap\Modal;
use hipanel\widgets\ModalButton;
use yii\helpers\Html;
use yii\web\JsExpression;

$this->title = $model->domain;
$this->subtitle = Yii::t('app', 'hosting domain detailed information') . ' #' . $model->id;
Expand Down Expand Up @@ -35,34 +37,26 @@
<div class="profile-usermenu">
<ul class="nav">
<li>
<?= Html::a('<i class="fa fa-trash-o"></i>' . Yii::t('app', 'Delete'), '#', [
'data-toggle' => 'modal',
'data-target' => "#modal_{$model->id}_delete",
]); ?>

<?php
echo Html::beginForm(['delete'], "POST", ['data' => ['pjax' => 1, 'pjax-push' => 0], 'class' => 'inline']);
echo Html::activeHiddenInput($model, 'id');
Modal::begin([
'id' => "modal_{$model->id}_delete",
'toggleButton' => false,
'header' => Html::tag('h4', Yii::t('app', 'Confirm domain deleting')),
'headerOptions' => ['class' => 'label-danger'],
'footer' => Html::button(Yii::t('app', 'Delete domain'), [
'class' => 'btn btn-danger',
'data-loading-text' => Yii::t('app', 'Deleting domain...'),
'onClick' => new \yii\web\JsExpression("
$(this).closest('form').trigger('submit');
$(this).button('loading');
")
])
]);
echo Yii::t('app',
'Are you sure, that you want to delete hosting domain {name}? All files on the server will stay untouched. You can delete them manually.',
['name' => $model->domain]);
Modal::end();
echo Html::endForm();
?>
<?= ModalButton::widget([
'model' => $model,
'scenario' => 'delete',
'button' => [
'label' => '<i class="fa fa-trash-o"></i>' . Yii::t('app', 'Delete'),
],
'modal' => [
'header' => Html::tag('h4', Yii::t('app', 'Confirm domain deleting')),
'headerOptions' => ['class' => 'label-info'],
'footer' => [
'label' => Yii::t('app', 'Delete domain'),
'data-loading-text' => Yii::t('app', 'Deleting domain...'),
'class' => 'btn btn-danger',
]
],
'body' => Yii::t('app',
'Are you sure, that you want to delete hosting domain {name}? All files under domain root on the server will stay untouched. You can delete them manually later.',
['name' => $model->domain]
)
]) ?>
</li>
</ul>
</div>
Expand Down Expand Up @@ -90,7 +84,51 @@
'ip',
'state',
'dns_on',
'aliases',
[
'attribute' => 'aliases',
'format' => 'raw',
'value' => function ($model) {
$html = [];
foreach ((array)$model->getAttribute('aliases') as $id => $alias) {
$aliasModel = Yii::createObject([
'class' => Hdomain::className(),
'id' => $id,
'domain' => $alias
]);
$item = Html::a($aliasModel->domain, ['view', 'id' => $aliasModel->id]) . ' ';
$item .= ModalButton::widget([
'model' => $aliasModel,
'scenario' => 'delete-alias',
'submit' => ModalButton::SUBMIT_AJAX,
'button' => [
'label' => '<i class="fa fa-trash-o"></i>',
],
'modal' => [
'header' => Html::tag('h4', Yii::t('app', 'Confirm alias deleting')),
'headerOptions' => ['class' => 'label-info'],
'footer' => [
'label' => Yii::t('app', 'Delete alias'),
'data-loading-text' => Yii::t('app', 'Deleting alias...'),
'class' => 'btn btn-danger',
]
],
'body' => Yii::t('app',
'Are you sure, that you want to delete alias {name}?',
['name' => $aliasModel->domain]
),
'ajaxOptions' => [
'success' => new JsExpression("
function (data) {
form.closest('.alias-item').remove();
}
")
]
]);
$html[] = Html::tag('div', $item, ['class' => 'alias-item']);
}
return implode("\n", $html);
}
]
],
]);
$box->endBody();
Expand Down

0 comments on commit 5140898

Please sign in to comment.