Skip to content
This repository was archived by the owner on Sep 19, 2023. It is now read-only.

Commit 59f7b84

Browse files
authored
Merge pull request #6 from justcoded/feature/breadcrumbs_parent_child_managing
Feature/breadcrumbs parent child managing
2 parents 208b019 + 6e76ee9 commit 59f7b84

File tree

5 files changed

+16
-8
lines changed

5 files changed

+16
-8
lines changed

src/controllers/PermissionsController.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,16 @@ public function actionAddRelation($name)
137137
$model = new PermissionRelForm();
138138
if ($model->load(Yii::$app->request->post())) {
139139
$model->setPermission($perm);
140-
if ($model->addRelations()) {
141-
Yii::$app->session->setFlash('success', 'New relations added successfully.');
142-
} else {
143-
$errors = $model->getFirstErrors();
144-
Yii::$app->session->setFlash('warning', $errors ? reset($errors) : 'Some error occured.');
140+
//TODO make it no possible to choose loop created items
141+
try {
142+
if ($model->addRelations()) {
143+
Yii::$app->session->setFlash('success', 'New relations added successfully.');
144+
} else {
145+
$errors = $model->getFirstErrors();
146+
Yii::$app->session->setFlash('warning', $errors ? reset($errors) : 'Some error occured.');
147+
}
148+
} catch (\Exception $e) {
149+
Yii::$app->session->setFlash('warning', 'Relations can\'t be added because of hierarchy loop or impossible nesting.');
145150
}
146151
}
147152

src/views/permissions/_form.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
'emptyMsg' => 'Permission is not assigned to any roles.',
7474
'searchMsg' => 'Search roles...',
7575
'options' => \justcoded\yii2\rbac\models\Role::getList(),
76+
'opposite' => [],
7677
'selected' => $permission->getRoles(),
7778
'btnTxt' => 'Assign',
7879
]);
@@ -86,6 +87,7 @@
8687
'emptyMsg' => 'Permission doesn\'t have parents.',
8788
'searchMsg' => 'Search permissions...',
8889
'options' => \justcoded\yii2\rbac\models\Permission::getList(),
90+
'opposite' => $permission->getChildren(),
8991
'selected' => $permission->getParents(),
9092
'btnTxt' => 'Add Parents',
9193
]);
@@ -99,6 +101,7 @@
99101
'emptyMsg' => 'Permission doesn\'t have children.',
100102
'searchMsg' => 'Search permissions...',
101103
'options' => \justcoded\yii2\rbac\models\Permission::getList(),
104+
'opposite' => $permission->getParents(),
102105
'selected' => $permission->getChildren(),
103106
'btnTxt' => 'Add Childs',
104107
]); ?>

src/views/permissions/_relations-box.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
<?= Select2::widget([
6565
'model' => $relModel,
6666
'attribute' => 'names',
67-
'data' => array_diff($options, array_keys($selected), [$model->name]),
67+
'data' => array_diff($options, array_keys(array_merge($selected, $opposite)), [$model->name]),
6868
'options' => [
6969
'id' => $form->id . '-search',
7070
'placeholder' => $searchMsg,

src/views/roles/create.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/* @var $model \justcoded\yii2\rbac\forms\RoleForm */
44

55
$this->title = 'Add role';
6-
$this->params['breadcrumbs'][] = ['label' => 'Permissions', 'url' => ['index']];
6+
$this->params['breadcrumbs'][] = ['label' => 'Permissions', 'url' => ['permissions/index']];
77
$this->params['breadcrumbs'][] = $this->title;
88
$this->params['heading'] = 'Permissions';
99
$this->params['subheading'] = 'Add Role';

src/views/roles/update.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
/* @var $role \justcoded\yii2\rbac\models\Role */
55

66
$this->title = 'Update role';
7-
$this->params['breadcrumbs'][] = ['label' => 'Permissions', 'url' => ['index']];
7+
$this->params['breadcrumbs'][] = ['label' => 'Permissions', 'url' => ['permissions/index']];
88
$this->params['breadcrumbs'][] = $this->title;
99
$this->params['heading'] = 'Permissions';
1010
$this->params['subheading'] = 'Update Role';

0 commit comments

Comments
 (0)