_form.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2016-03-25 11:15
  7. */
  8. /**
  9. * @var $this yii\web\View
  10. * @var $model common\models\AdminUser
  11. * @var $assignModel backend\models\form\AssignPermissionForm
  12. * @var $permissions []
  13. * @var $roles []
  14. */
  15. use backend\widgets\ActiveForm;
  16. use common\models\AdminUser;
  17. use common\widgets\JsBlock;
  18. use yii\helpers\Html;
  19. $this->title = "Admin";
  20. ?>
  21. <div class="row">
  22. <div class="col-sm-12">
  23. <div class="ibox">
  24. <?= $this->render('/widgets/_ibox-title') ?>
  25. <div class="ibox-content">
  26. <?php $form = ActiveForm::begin([
  27. 'options' => [
  28. 'enctype' => 'multipart/form-data',
  29. 'class' => 'form-horizontal'
  30. ]
  31. ]); ?>
  32. <?= $form->field($model, 'username')->textInput(['maxlength' => 64]) ?>
  33. <div class="hr-line-dashed"></div>
  34. <?= $form->field($model, 'avatar')->imgInput() ?>
  35. <div class="hr-line-dashed"></div>
  36. <?= $form->field($model, 'email')->textInput(['maxlength' => 64]) ?>
  37. <div class="hr-line-dashed"></div>
  38. <?= $form->field($model, 'password')->passwordInput(['maxlength' => 512]) ?>
  39. <div class="hr-line-dashed"></div>
  40. <?= $form->field($model, 'status')->radioList( AdminUser::getStatuses() ) ?>
  41. <div class="hr-line-dashed"></div>
  42. <?php
  43. $itemsOptions = [];
  44. if(in_array( $model->getId(), Yii::$app->getBehavior('access')->superAdminUserIds)){
  45. $itemsOptions = ['disabled'=>'true'];
  46. }
  47. ?>
  48. <?= $form->field($assignModel, 'roles', [
  49. 'labelOptions' => [
  50. 'label' => Yii::t('app', 'Roles'),
  51. ]
  52. ])->checkboxList($roles, ['itemOptions'=>$itemsOptions]) ?>
  53. <div class="hr-line-dashed"></div>
  54. <div class="form-group field-permissions">
  55. <span class="col-sm-2 control-label checkbox checkbox-success"><?= Html::checkbox("", false, ['id'=>'permission-all','class'=>'chooseAll'])?><label for='permission-all'><h4><?=Yii::t('app', 'Permissions')?></h4></label></span>
  56. <div class="col-sm-10">
  57. <?php
  58. foreach ($permissions as $key => $value){
  59. echo "<div class='col-sm-1 text-left'><span class='checkbox checkbox-success checkbox-inline'>" . Html::checkbox("", false, ['id'=>"permission-all-{$key}", 'class'=>'chooseAll']) . "<label for='permission-all-{$key}'><h4>{$key}</h4></label></span></div>";
  60. echo "<div class='col-sm-11'>";
  61. foreach ($value as $k => $val){
  62. echo "<div class='col-sm-1 text-left'><span class='checkbox checkbox-success checkbox-inline'>" . Html::checkbox("", false, ['id'=>"permission-all-{$k}", 'class'=>'chooseAll']) . "<label for='permission-all-{$k}'><h5>{$k}</h5></label></span></div>";
  63. echo "<div class='col-sm-11'>";
  64. foreach ($val as $v) {
  65. echo $form->field($assignModel, "permissions[{$v['name']}]", ['options'=>['style'=>'display:inline'], 'labelOptions'=>['class'=>'col-sm-12 control-label']])->checkbox(['value'=>$v['name']])->label($v['description']);
  66. }
  67. echo "</div><div class='col-sm-12' style='height: 20px'></div>";
  68. }
  69. echo "</div><div class='col-sm-12' style='height: 20px'></div>";
  70. }
  71. ?>
  72. <div class="help-block m-b-none"></div>
  73. </div>
  74. </div>
  75. <div class="hr-line-dashed"></div>
  76. <?= $form->defaultButtons() ?>
  77. <?php ActiveForm::end(); ?>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. <?php JsBlock::begin()?>
  83. <script>
  84. $(document).ready(function () {
  85. var isSuperAdmin = <?php if(in_array($model->getId(), Yii::$app->getBehavior('access')->superAdminUserIds)){echo 1;}else{echo 0;}?>;
  86. if( isSuperAdmin ){
  87. var forbiddens = $(".field-permissions, .field-user-roles").find("input[type=checkbox]");
  88. forbiddens.each(function(){
  89. $(this).attr('disabled', true).attr('checked', true);
  90. })
  91. }else{
  92. var chooseAll = $(".col-sm-11 .col-sm-1 .chooseAll");
  93. var middle = $(".col-sm-1 .chooseAll");
  94. var top = $("label .chooseAll");
  95. for (var i = 0; i < middle.length; i++) {
  96. chooseAll.push(middle[i]);
  97. }
  98. for (var i = 0; i < top.length; i++) {
  99. chooseAll.push(top[i]);
  100. }
  101. chooseAll.each(function () {
  102. var that = $(this);
  103. if (that.attr('id') == 'permission-all') {
  104. var checkboxs = $(this).parents("span").next().find("input[type=checkbox]");
  105. } else {
  106. var checkboxs = $(this).parents(".col-sm-1").next().find("input[type=checkbox]");
  107. }
  108. var atLeastOneUnchecked = false;
  109. checkboxs.each(function () {
  110. if ($(this).is(":checked") == false) {
  111. atLeastOneUnchecked = true;
  112. }
  113. })
  114. if (atLeastOneUnchecked == false && that.is(":checked") == false) {
  115. that.trigger('click');
  116. }
  117. });
  118. }
  119. $(".chooseAll").change(function () {
  120. var type = $(this).is(':checked');
  121. var checkboxs = $(this).parents("span").next().find("input[type=checkbox]");
  122. if( checkboxs.length == 0 ) {
  123. checkboxs = $(this).parents(".col-sm-1").next().find("input[type=checkbox]");
  124. }
  125. checkboxs.each(function () {
  126. if(type != $(this).is(':checked')){
  127. $(this).trigger('click');
  128. }
  129. })
  130. })
  131. })
  132. </script>
  133. <?php JsBlock::end()?>