_role-form.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2017-09-12 14:46
  7. */
  8. /**
  9. * @var $this yii\web\View
  10. * @var $model backend\models\form\RBACRoleForm
  11. * @var $permissions []
  12. * @var $roles []
  13. */
  14. use backend\widgets\ActiveForm;
  15. use common\widgets\JsBlock;
  16. use yii\helpers\Html;
  17. $this->title = "Roles";
  18. ?>
  19. <div class="row">
  20. <div class="col-sm-12">
  21. <div class="ibox">
  22. <?= $this->render('/widgets/_ibox-title') ?>
  23. <div class="ibox-content">
  24. <?php $form = ActiveForm::begin(); ?>
  25. <?= $form->field($model, 'name')->textInput() ?>
  26. <div class="hr-line-dashed"></div>
  27. <?= $form->field($model, 'description')->textInput() ?>
  28. <div class="hr-line-dashed"></div>
  29. <?= $form->field($model, 'sort')->textInput() ?>
  30. <div class="hr-line-dashed"></div>
  31. <?= $form->field($model, 'roles', [
  32. 'labelOptions' => [
  33. 'label' => yii::t('app', 'Roles'),
  34. ]
  35. ])->checkboxList($roles) ?>
  36. <div class="hr-line-dashed"></div>
  37. <div class="form-group">
  38. <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>
  39. <div class="col-sm-10">
  40. <?php
  41. foreach ($permissions as $key => $value){
  42. 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>";
  43. echo "<div class='col-sm-11'>";
  44. foreach ($value as $k => $val){
  45. 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>";
  46. echo "<div class='col-sm-11'>";
  47. foreach ($val as $v) {
  48. echo $form->field($model, "permissions[{$v['name']}]", ['options'=>['style'=>'display:inline'], 'labelOptions'=>['class'=>'col-sm-12 control-label']])->checkbox(['value'=>$v['name']])->label($v['description']);
  49. }
  50. echo "</div><div class='col-sm-12' style='height: 20px'></div>";
  51. }
  52. echo "</div><div class='col-sm-12' style='height: 20px'></div>";
  53. }
  54. ?>
  55. <div class="help-block m-b-none"></div>
  56. </div>
  57. </div>
  58. <div class="hr-line-dashed"></div>
  59. <?= $form->defaultButtons() ?>
  60. <?php ActiveForm::end(); ?>
  61. </div>
  62. </div>
  63. </div>
  64. </div>
  65. <?php JsBlock::begin()?>
  66. <script>
  67. $(document).ready(function () {
  68. var chooseAll = $(".col-sm-11 .col-sm-1 .chooseAll");
  69. var middle = $(".col-sm-1 .chooseAll");
  70. var top = $("label .chooseAll");
  71. for( var i=0; i<middle.length; i++ ){
  72. chooseAll.push( middle[i] );
  73. }
  74. for( var i=0; i<top.length; i++ ){
  75. chooseAll.push( top[i] );
  76. }
  77. chooseAll.each(function(){
  78. var that = $(this);
  79. if( that.attr('id') == 'permission-all' ) {
  80. var checkboxs = $(this).parents("span").next().find("input[type=checkbox]");
  81. }else{
  82. var checkboxs = $(this).parents(".col-sm-1").next().find("input[type=checkbox]");
  83. }
  84. var atLeastOneUnchecked = false;
  85. checkboxs.each(function () {
  86. if( $(this).is(":checked") == false ){
  87. atLeastOneUnchecked = true;
  88. }
  89. })
  90. if( atLeastOneUnchecked == false && that.is(":checked") == false ){
  91. that.trigger('click');
  92. }
  93. });
  94. $(".chooseAll").change(function () {
  95. var type = $(this).is(':checked');
  96. var checkboxs = $(this).parents("span").next().find("input[type=checkbox]");
  97. if( checkboxs.length == 0 ) {
  98. checkboxs = $(this).parents(".col-sm-1").next().find("input[type=checkbox]");
  99. }
  100. checkboxs.each(function () {
  101. if(type != $(this).is(':checked')){
  102. $(this).trigger('click');
  103. }
  104. })
  105. })
  106. })
  107. </script>
  108. <?php JsBlock::end()?>