@@ 12-25 (lines=14) @@ | ||
9 | class ApiController extends Controller |
|
10 | { |
|
11 | ||
12 | public function behaviors() |
|
13 | { |
|
14 | return [ |
|
15 | 'access' => [ |
|
16 | 'class' => AccessControl::className(), |
|
17 | 'rules' => [ |
|
18 | [ |
|
19 | 'allow' => true, |
|
20 | 'roles' => ['api manage'], |
|
21 | ], |
|
22 | ], |
|
23 | ], |
|
24 | ]; |
|
25 | } |
|
26 | ||
27 | public function actions() |
|
28 | { |
@@ 19-32 (lines=14) @@ | ||
16 | class BackendMenuController extends Controller |
|
17 | { |
|
18 | ||
19 | public function behaviors() |
|
20 | { |
|
21 | return [ |
|
22 | 'access' => [ |
|
23 | 'class' => AccessControl::className(), |
|
24 | 'rules' => [ |
|
25 | [ |
|
26 | 'allow' => true, |
|
27 | 'roles' => ['setting manage'], |
|
28 | ], |
|
29 | ], |
|
30 | ], |
|
31 | ]; |
|
32 | } |
|
33 | ||
34 | public function actions() |
|
35 | { |
@@ 29-42 (lines=14) @@ | ||
26 | /** |
|
27 | * @inheritdoc |
|
28 | */ |
|
29 | public function behaviors() |
|
30 | { |
|
31 | return [ |
|
32 | 'access' => [ |
|
33 | 'class' => AccessControl::className(), |
|
34 | 'rules' => [ |
|
35 | [ |
|
36 | 'allow' => true, |
|
37 | 'roles' => ['content manage'], |
|
38 | ], |
|
39 | ], |
|
40 | ], |
|
41 | ]; |
|
42 | } |
|
43 | ||
44 | /** |
|
45 | * @inheritdoc |
@@ 14-27 (lines=14) @@ | ||
11 | ||
12 | class ErrorMonitorController extends Controller |
|
13 | { |
|
14 | public function behaviors() |
|
15 | { |
|
16 | return [ |
|
17 | 'access' => [ |
|
18 | 'class' => AccessControl::className(), |
|
19 | 'rules' => [ |
|
20 | [ |
|
21 | 'allow' => true, |
|
22 | 'roles' => ['setting manage'], |
|
23 | ], |
|
24 | ], |
|
25 | ], |
|
26 | ]; |
|
27 | } |
|
28 | ||
29 | public function actionIndex() |
|
30 | { |
@@ 22-35 (lines=14) @@ | ||
19 | class FormController extends Controller |
|
20 | { |
|
21 | ||
22 | public function behaviors() |
|
23 | { |
|
24 | return [ |
|
25 | 'access' => [ |
|
26 | 'class' => AccessControl::className(), |
|
27 | 'rules' => [ |
|
28 | [ |
|
29 | 'allow' => true, |
|
30 | 'roles' => ['form manage'], |
|
31 | ], |
|
32 | ], |
|
33 | ], |
|
34 | ]; |
|
35 | } |
|
36 | ||
37 | public function actionIndex() |
|
38 | { |
@@ 50-63 (lines=14) @@ | ||
47 | return $this->aliases; |
|
48 | } |
|
49 | ||
50 | public function behaviors() |
|
51 | { |
|
52 | return [ |
|
53 | 'access' => [ |
|
54 | 'class' => AccessControl::className(), |
|
55 | 'rules' => [ |
|
56 | [ |
|
57 | 'allow' => true, |
|
58 | 'roles' => ['setting manage'], |
|
59 | ], |
|
60 | ], |
|
61 | ], |
|
62 | ]; |
|
63 | } |
|
64 | ||
65 | public function actionIndex() |
|
66 | { |
@@ 14-27 (lines=14) @@ | ||
11 | ||
12 | class NewsletterController extends Controller |
|
13 | { |
|
14 | public function behaviors() |
|
15 | { |
|
16 | return [ |
|
17 | 'access' => [ |
|
18 | 'class' => AccessControl::className(), |
|
19 | 'rules' => [ |
|
20 | [ |
|
21 | 'allow' => true, |
|
22 | 'roles' => ['newsletter manage'], |
|
23 | ], |
|
24 | ], |
|
25 | ], |
|
26 | ]; |
|
27 | } |
|
28 | ||
29 | public function actionConfig() |
|
30 | { |
@@ 18-31 (lines=14) @@ | ||
15 | ||
16 | class RouteController extends Controller |
|
17 | { |
|
18 | public function behaviors() |
|
19 | { |
|
20 | return [ |
|
21 | 'access' => [ |
|
22 | 'class' => AccessControl::className(), |
|
23 | 'rules' => [ |
|
24 | [ |
|
25 | 'allow' => true, |
|
26 | 'roles' => ['setting manage'], |
|
27 | ], |
|
28 | ], |
|
29 | ], |
|
30 | ]; |
|
31 | } |
|
32 | ||
33 | public function actionIndex() |
|
34 | { |
@@ 30-43 (lines=14) @@ | ||
27 | /** |
|
28 | * @inheritdoc |
|
29 | */ |
|
30 | public function behaviors() |
|
31 | { |
|
32 | return [ |
|
33 | 'access' => [ |
|
34 | 'class' => AccessControl::className(), |
|
35 | 'rules' => [ |
|
36 | [ |
|
37 | 'allow' => true, |
|
38 | 'roles' => ['content manage'], |
|
39 | ], |
|
40 | ], |
|
41 | ], |
|
42 | ]; |
|
43 | } |
|
44 | ||
45 | ||
46 | /** |
@@ 18-31 (lines=14) @@ | ||
15 | /** |
|
16 | * @inheritdoc |
|
17 | */ |
|
18 | public function behaviors() |
|
19 | { |
|
20 | return [ |
|
21 | 'access' => [ |
|
22 | 'class' => AccessControl::className(), |
|
23 | 'rules' => [ |
|
24 | [ |
|
25 | 'allow' => true, |
|
26 | 'roles' => ['setting manage'], |
|
27 | ], |
|
28 | ], |
|
29 | ], |
|
30 | ]; |
|
31 | } |
|
32 | ||
33 | public function actionIndex() |
|
34 | { |
@@ 58-71 (lines=14) @@ | ||
55 | /** |
|
56 | * @inheritdoc |
|
57 | */ |
|
58 | public function behaviors() |
|
59 | { |
|
60 | return [ |
|
61 | 'access' => [ |
|
62 | 'class' => AccessControl::className(), |
|
63 | 'rules' => [ |
|
64 | [ |
|
65 | 'allow' => true, |
|
66 | 'roles' => ['view manage'], |
|
67 | ], |
|
68 | ], |
|
69 | ], |
|
70 | ]; |
|
71 | } |
|
72 | ||
73 | /** |
|
74 | * @inheritdoc |
@@ 24-37 (lines=14) @@ | ||
21 | /** |
|
22 | * @inheritdoc |
|
23 | */ |
|
24 | public function behaviors() |
|
25 | { |
|
26 | return [ |
|
27 | 'access' => [ |
|
28 | 'class' => AccessControl::className(), |
|
29 | 'rules' => [ |
|
30 | [ |
|
31 | 'allow' => true, |
|
32 | 'roles' => ['setting manage'], |
|
33 | ], |
|
34 | ], |
|
35 | ], |
|
36 | ]; |
|
37 | } |
|
38 | ||
39 | /** |
|
40 | * Lists configurables by tabs and saves configuration |
@@ 10-23 (lines=14) @@ | ||
7 | ||
8 | class RoutingController extends BackendController |
|
9 | { |
|
10 | public function behaviors() |
|
11 | { |
|
12 | return [ |
|
13 | 'access' => [ |
|
14 | 'class' => AccessControl::className(), |
|
15 | 'rules' => [ |
|
16 | [ |
|
17 | 'allow' => true, |
|
18 | 'roles' => ['administrate'], |
|
19 | ], |
|
20 | ], |
|
21 | ], |
|
22 | ]; |
|
23 | } |
|
24 | ||
25 | public function actionIndex() |
|
26 | { |
@@ 40-53 (lines=14) @@ | ||
37 | ]; |
|
38 | } |
|
39 | ||
40 | public function behaviors() |
|
41 | { |
|
42 | return [ |
|
43 | 'access' => [ |
|
44 | 'class' => AccessControl::className(), |
|
45 | 'rules' => [ |
|
46 | [ |
|
47 | 'allow' => true, |
|
48 | 'roles' => ['content manage'], |
|
49 | ], |
|
50 | ], |
|
51 | ], |
|
52 | ]; |
|
53 | } |
|
54 | ||
55 | public function actionIndex() |
|
56 | { |
@@ 20-33 (lines=14) @@ | ||
17 | /** |
|
18 | * @return array |
|
19 | */ |
|
20 | public function behaviors() |
|
21 | { |
|
22 | return [ |
|
23 | 'access' => [ |
|
24 | 'class' => AccessControl::className(), |
|
25 | 'rules' => [ |
|
26 | [ |
|
27 | 'allow' => true, |
|
28 | 'roles' => ['data manage'], |
|
29 | ], |
|
30 | ], |
|
31 | ], |
|
32 | ]; |
|
33 | } |
|
34 | ||
35 | public function init() |
|
36 | { |
@@ 28-41 (lines=14) @@ | ||
25 | /** |
|
26 | * @return array |
|
27 | */ |
|
28 | public function behaviors() |
|
29 | { |
|
30 | return [ |
|
31 | 'access' => [ |
|
32 | 'class' => AccessControl::className(), |
|
33 | 'rules' => [ |
|
34 | [ |
|
35 | 'allow' => true, |
|
36 | 'roles' => ['data manage'], |
|
37 | ], |
|
38 | ], |
|
39 | ], |
|
40 | ]; |
|
41 | } |
|
42 | ||
43 | /** |
|
44 | * @return string |
@@ 13-26 (lines=14) @@ | ||
10 | ||
11 | class BackendErrorImagesController extends \app\backend\components\BackendController |
|
12 | { |
|
13 | public function behaviors() |
|
14 | { |
|
15 | return [ |
|
16 | 'access' => [ |
|
17 | 'class' => AccessControl::className(), |
|
18 | 'rules' => [ |
|
19 | [ |
|
20 | 'allow' => true, |
|
21 | 'roles' => ['content manage'], |
|
22 | ], |
|
23 | ], |
|
24 | ], |
|
25 | ]; |
|
26 | } |
|
27 | ||
28 | public function actionIndex() |
|
29 | { |
@@ 11-24 (lines=14) @@ | ||
8 | ||
9 | class BackendThumbnailController extends \app\backend\components\BackendController |
|
10 | { |
|
11 | public function behaviors() |
|
12 | { |
|
13 | return [ |
|
14 | 'access' => [ |
|
15 | 'class' => AccessControl::className(), |
|
16 | 'rules' => [ |
|
17 | [ |
|
18 | 'allow' => true, |
|
19 | 'roles' => ['content manage'], |
|
20 | ], |
|
21 | ], |
|
22 | ], |
|
23 | ]; |
|
24 | } |
|
25 | ||
26 | public function actionIndex() |
|
27 | { |
@@ 13-26 (lines=14) @@ | ||
10 | ||
11 | class BackendThumbnailSizeController extends \app\backend\components\BackendController |
|
12 | { |
|
13 | public function behaviors() |
|
14 | { |
|
15 | return [ |
|
16 | 'access' => [ |
|
17 | 'class' => AccessControl::className(), |
|
18 | 'rules' => [ |
|
19 | [ |
|
20 | 'allow' => true, |
|
21 | 'roles' => ['content manage'], |
|
22 | ], |
|
23 | ], |
|
24 | ], |
|
25 | ]; |
|
26 | } |
|
27 | ||
28 | public function actionIndex() |
|
29 | { |
@@ 14-27 (lines=14) @@ | ||
11 | ||
12 | class BackendWatermarkController extends \app\backend\components\BackendController |
|
13 | { |
|
14 | public function behaviors() |
|
15 | { |
|
16 | return [ |
|
17 | 'access' => [ |
|
18 | 'class' => AccessControl::className(), |
|
19 | 'rules' => [ |
|
20 | [ |
|
21 | 'allow' => true, |
|
22 | 'roles' => ['content manage'], |
|
23 | ], |
|
24 | ], |
|
25 | ], |
|
26 | ]; |
|
27 | } |
|
28 | ||
29 | public function actionIndex() |
|
30 | { |
@@ 14-27 (lines=14) @@ | ||
11 | ||
12 | class BackendRatingController extends BackendController |
|
13 | { |
|
14 | public function behaviors() |
|
15 | { |
|
16 | return [ |
|
17 | 'access' => [ |
|
18 | 'class' => AccessControl::className(), |
|
19 | 'rules' => [ |
|
20 | [ |
|
21 | 'allow' => true, |
|
22 | 'roles' => ['review manage'], |
|
23 | ], |
|
24 | ], |
|
25 | ], |
|
26 | ]; |
|
27 | } |
|
28 | ||
29 | /** |
|
30 | * |
@@ 37-50 (lines=14) @@ | ||
34 | * @inheritdoc |
|
35 | * @return array |
|
36 | */ |
|
37 | public function behaviors() |
|
38 | { |
|
39 | return [ |
|
40 | 'access' => [ |
|
41 | 'class' => AccessControl::className(), |
|
42 | 'rules' => [ |
|
43 | [ |
|
44 | 'allow' => true, |
|
45 | 'roles' => ['product manage'], |
|
46 | ], |
|
47 | ], |
|
48 | ], |
|
49 | ]; |
|
50 | } |
|
51 | ||
52 | /** |
|
53 | * @inheritdoc |
@@ 27-40 (lines=14) @@ | ||
24 | /** |
|
25 | * @inheritdoc |
|
26 | */ |
|
27 | public function behaviors() |
|
28 | { |
|
29 | return [ |
|
30 | 'access' => [ |
|
31 | 'class' => AccessControl::className(), |
|
32 | 'rules' => [ |
|
33 | [ |
|
34 | 'allow' => true, |
|
35 | 'roles' => ['category manage'], |
|
36 | ], |
|
37 | ], |
|
38 | ], |
|
39 | ]; |
|
40 | } |
|
41 | ||
42 | /** |
|
43 | * @inheritdoc |
@@ 18-31 (lines=14) @@ | ||
15 | */ |
|
16 | class BackendCategoryGroupController extends BackendController |
|
17 | { |
|
18 | public function behaviors() |
|
19 | { |
|
20 | return [ |
|
21 | 'access' => [ |
|
22 | 'class' => AccessControl::className(), |
|
23 | 'rules' => [ |
|
24 | [ |
|
25 | 'allow' => true, |
|
26 | 'roles' => ['category manage'], |
|
27 | ], |
|
28 | ], |
|
29 | ], |
|
30 | ]; |
|
31 | } |
|
32 | ||
33 | /** |
|
34 | * Lists all CategoryGroup models. |
@@ 19-32 (lines=14) @@ | ||
16 | /** |
|
17 | * @inheritdoc |
|
18 | */ |
|
19 | public function behaviors() |
|
20 | { |
|
21 | return [ |
|
22 | 'access' => [ |
|
23 | 'class' => AccessControl::className(), |
|
24 | 'rules' => [ |
|
25 | [ |
|
26 | 'allow' => true, |
|
27 | 'roles' => ['order manage'], |
|
28 | ], |
|
29 | ], |
|
30 | ], |
|
31 | ]; |
|
32 | } |
|
33 | ||
34 | /** |
|
35 | * @return string |
@@ 19-32 (lines=14) @@ | ||
16 | /** |
|
17 | * @inheritdoc |
|
18 | */ |
|
19 | public function behaviors() |
|
20 | { |
|
21 | return [ |
|
22 | 'access' => [ |
|
23 | 'class' => AccessControl::className(), |
|
24 | 'rules' => [ |
|
25 | [ |
|
26 | 'allow' => true, |
|
27 | 'roles' => ['shop manage'], |
|
28 | ], |
|
29 | ], |
|
30 | ], |
|
31 | ]; |
|
32 | } |
|
33 | ||
34 | /** |
|
35 | * @inheritdoc |
@@ 17-30 (lines=14) @@ | ||
14 | /** |
|
15 | * @inheritdoc |
|
16 | */ |
|
17 | public function behaviors() |
|
18 | { |
|
19 | return [ |
|
20 | 'access' => [ |
|
21 | 'class' => AccessControl::className(), |
|
22 | 'rules' => [ |
|
23 | [ |
|
24 | 'allow' => true, |
|
25 | 'roles' => ['shop manage'], |
|
26 | ], |
|
27 | ], |
|
28 | ], |
|
29 | ]; |
|
30 | } |
|
31 | ||
32 | /** |
|
33 | * @inheritdoc |
@@ 18-31 (lines=14) @@ | ||
15 | /** |
|
16 | * @inheritdoc |
|
17 | */ |
|
18 | public function behaviors() |
|
19 | { |
|
20 | return [ |
|
21 | 'access' => [ |
|
22 | 'class' => AccessControl::className(), |
|
23 | 'rules' => [ |
|
24 | [ |
|
25 | 'allow' => true, |
|
26 | 'roles' => ['order manage'], |
|
27 | ], |
|
28 | ], |
|
29 | ], |
|
30 | ]; |
|
31 | } |
|
32 | ||
33 | /** |
|
34 | * @return string |
@@ 17-30 (lines=14) @@ | ||
14 | ||
15 | class BackendDiscountController extends BackendController |
|
16 | { |
|
17 | public function behaviors() |
|
18 | { |
|
19 | return [ |
|
20 | 'access' => [ |
|
21 | 'class' => AccessControl::className(), |
|
22 | 'rules' => [ |
|
23 | [ |
|
24 | 'allow' => true, |
|
25 | 'roles' => ['product manage'], |
|
26 | ], |
|
27 | ], |
|
28 | ], |
|
29 | ]; |
|
30 | } |
|
31 | ||
32 | public function actionIndex() |
|
33 | { |
@@ 20-33 (lines=14) @@ | ||
17 | class BackendPrefilteredPagesController extends BackendController |
|
18 | { |
|
19 | ||
20 | public function behaviors() |
|
21 | { |
|
22 | return [ |
|
23 | 'access' => [ |
|
24 | 'class' => AccessControl::className(), |
|
25 | 'rules' => [ |
|
26 | [ |
|
27 | 'allow' => true, |
|
28 | 'roles' => ['shop manage'], |
|
29 | ], |
|
30 | ], |
|
31 | ], |
|
32 | ]; |
|
33 | } |
|
34 | ||
35 | public function actionIndex() |
|
36 | { |
@@ 17-30 (lines=14) @@ | ||
14 | { |
|
15 | use LoadModel; |
|
16 | ||
17 | public function behaviors() |
|
18 | { |
|
19 | return [ |
|
20 | 'access' => [ |
|
21 | 'class' => AccessControl::className(), |
|
22 | 'rules' => [ |
|
23 | [ |
|
24 | 'allow' => true, |
|
25 | 'roles' => ['setting manage'], |
|
26 | ], |
|
27 | ], |
|
28 | ], |
|
29 | ]; |
|
30 | } |
|
31 | ||
32 | public function actionIndex() |
|
33 | { |
@@ 18-31 (lines=14) @@ | ||
15 | ||
16 | class BackendYmlController extends BackendController |
|
17 | { |
|
18 | public function behaviors() |
|
19 | { |
|
20 | return [ |
|
21 | 'access' => [ |
|
22 | 'class' => AccessControl::className(), |
|
23 | 'rules' => [ |
|
24 | [ |
|
25 | 'allow' => true, |
|
26 | 'roles' => ['setting manage'], |
|
27 | ], |
|
28 | ], |
|
29 | ], |
|
30 | ]; |
|
31 | } |
|
32 | ||
33 | /** |
|
34 | * @return string |
@@ 37-50 (lines=14) @@ | ||
34 | const BACKEND_PAGE_EDIT_FORM = 'backend-page-edit-form'; |
|
35 | const BACKEND_PAGE_AFTER_SAVE = 'backend-page-after-save'; |
|
36 | ||
37 | public function behaviors() |
|
38 | { |
|
39 | return [ |
|
40 | 'access' => [ |
|
41 | 'class' => AccessControl::className(), |
|
42 | 'rules' => [ |
|
43 | [ |
|
44 | 'allow' => true, |
|
45 | 'roles' => ['content manage'], |
|
46 | ], |
|
47 | ], |
|
48 | ], |
|
49 | ]; |
|
50 | } |
|
51 | ||
52 | public function actions() |
|
53 | { |
@@ 29-42 (lines=14) @@ | ||
26 | const BACKEND_REVIEW_AFTER_SAVE = 'backend-review-after-save'; |
|
27 | ||
28 | ||
29 | public function behaviors() |
|
30 | { |
|
31 | return [ |
|
32 | 'access' => [ |
|
33 | 'class' => AccessControl::className(), |
|
34 | 'rules' => [ |
|
35 | [ |
|
36 | 'allow' => true, |
|
37 | 'roles' => ['review manage'], |
|
38 | ], |
|
39 | ], |
|
40 | ], |
|
41 | ]; |
|
42 | } |
|
43 | ||
44 | public function actionIndex() |
|
45 | { |
@@ 36-49 (lines=14) @@ | ||
33 | const BACKEND_CATEGORY_EDIT_FORM = 'backend-category-edit-form'; |
|
34 | const BACKEND_CATEGORY_AFTER_SAVE = 'backend-category-after-save'; |
|
35 | ||
36 | public function behaviors() |
|
37 | { |
|
38 | return [ |
|
39 | 'access' => [ |
|
40 | 'class' => AccessControl::className(), |
|
41 | 'rules' => [ |
|
42 | [ |
|
43 | 'allow' => true, |
|
44 | 'roles' => ['category manage'], |
|
45 | ], |
|
46 | ], |
|
47 | ], |
|
48 | ]; |
|
49 | } |
|
50 | ||
51 | public function actions() |
|
52 | { |
@@ 48-61 (lines=14) @@ | ||
45 | * @inheritdoc |
|
46 | * @return array |
|
47 | */ |
|
48 | public function behaviors() |
|
49 | { |
|
50 | return [ |
|
51 | 'access' => [ |
|
52 | 'class' => AccessControl::className(), |
|
53 | 'rules' => [ |
|
54 | [ |
|
55 | 'allow' => true, |
|
56 | 'roles' => ['product manage'], |
|
57 | ], |
|
58 | ], |
|
59 | ], |
|
60 | ]; |
|
61 | } |
|
62 | ||
63 | /** |
|
64 | * @inheritdoc |
@@ 77-90 (lines=14) @@ | ||
74 | } |
|
75 | } |
|
76 | ||
77 | public function behaviors() |
|
78 | { |
|
79 | return [ |
|
80 | 'access' => [ |
|
81 | 'class' => AccessControl::className(), |
|
82 | 'rules' => [ |
|
83 | [ |
|
84 | 'allow' => true, |
|
85 | 'roles' => ['property manage'], |
|
86 | ], |
|
87 | ], |
|
88 | ], |
|
89 | ]; |
|
90 | } |
|
91 | ||
92 | public function actions() |
|
93 | { |
@@ 114-127 (lines=14) @@ | ||
111 | /** |
|
112 | * @inheritdoc |
|
113 | */ |
|
114 | public function behaviors() |
|
115 | { |
|
116 | return [ |
|
117 | 'access' => [ |
|
118 | 'class' => AccessControl::className(), |
|
119 | 'rules' => [ |
|
120 | [ |
|
121 | 'allow' => true, |
|
122 | 'roles' => ['order manage'], |
|
123 | ], |
|
124 | ], |
|
125 | ], |
|
126 | ]; |
|
127 | } |
|
128 | ||
129 | public function beforeAction($action) |
|
130 | { |
@@ 21-34 (lines=14) @@ | ||
18 | ||
19 | class NavigationController extends Controller |
|
20 | { |
|
21 | public function behaviors() |
|
22 | { |
|
23 | return [ |
|
24 | 'access' => [ |
|
25 | 'class' => AccessControl::className(), |
|
26 | 'rules' => [ |
|
27 | [ |
|
28 | 'allow' => true, |
|
29 | 'roles' => ['navigation manage'], |
|
30 | ], |
|
31 | ], |
|
32 | ], |
|
33 | ]; |
|
34 | } |
|
35 | ||
36 | public function actions() |
|
37 | { |
@@ 30-43 (lines=14) @@ | ||
27 | /** |
|
28 | * @inheritdoc |
|
29 | */ |
|
30 | public function behaviors() |
|
31 | { |
|
32 | return [ |
|
33 | 'access' => [ |
|
34 | 'class' => AccessControl::className(), |
|
35 | 'rules' => [ |
|
36 | [ |
|
37 | 'allow' => true, |
|
38 | 'roles' => ['product manage'], |
|
39 | ], |
|
40 | ], |
|
41 | ], |
|
42 | ]; |
|
43 | } |
|
44 | ||
45 | /** |
|
46 | * @inheritdoc |