api_authorize.html 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <include file="public@header"/>
  2. </head>
  3. <body>
  4. <div class="wrap ">
  5. <ul class="nav nav-tabs">
  6. <li><a href="{:url('Rbac/authorize',['id'=>$role_id])}">后台界面授权</a></li>
  7. <li class="active"><a href="{:url('Rbac/apiAuthorize',['id'=>$role_id])}">后台API授权</a></li>
  8. </ul>
  9. <form class="js-ajax-form margin-top-20" action="{:url('Rbac/apiAuthorizePost')}" method="post">
  10. <div><a href="javascript:openApiImportDialog()" class="btn btn-xs btn-primary">导入API</a></div>
  11. <div class="panel-group margin-top-10" id="accordion" role="tablist" aria-multiselectable="true">
  12. <foreach name="tags_admin_apis" item="tag_admin_apis" key="tag" index="tags_admin_apis_index">
  13. <div class="panel panel-default">
  14. <div class="panel-heading" role="tab" id="heading{$tags_admin_apis_index}">
  15. <h4 class="panel-title">
  16. <a role="button" data-toggle="collapse" data-parent="#accordion1"
  17. href="#collapse{$tags_admin_apis_index}" aria-expanded="true"
  18. aria-controls="collapse{$tags_admin_apis_index}">
  19. {$tag|default='未分组'}
  20. </a>
  21. </h4>
  22. </div>
  23. <div id="collapse{$tags_admin_apis_index}" class="panel-collapse collapse in" role="tabpanel"
  24. aria-labelledby="heading{$tags_admin_apis_index}">
  25. <table class="table js-check-wrap table-hover" style="table-layout: fixed;">
  26. <thead>
  27. <tr>
  28. <th width="30"><input type="checkbox" class="js-check-all" data-direction="x"
  29. data-checklist="js-check-x{$tags_admin_apis_index}"></th>
  30. <th>名称</th>
  31. <th>API</th>
  32. <th>备注</th>
  33. </tr>
  34. </thead>
  35. <foreach name="tag_admin_apis" item="admin_api">
  36. <tr>
  37. <td><input type="checkbox" class="js-check" data-yid="js-check-y"
  38. data-xid="js-check-x{$tags_admin_apis_index}" name="ids[]"
  39. value="{$admin_api.id}" {$admin_api._checked?'checked':''}>
  40. </td>
  41. <td>{$admin_api.name}</td>
  42. <td>{$admin_api.url}</td>
  43. <td>{$admin_api.remark}</td>
  44. </tr>
  45. </foreach>
  46. </table>
  47. </div>
  48. </div>
  49. </foreach>
  50. </div>
  51. <div class="form-actions text-center">
  52. <input type="hidden" name="role_id" value="{$role_id}"/>
  53. <button class="btn btn-primary js-ajax-submit" type="submit">{:lang('SAVE')}</button>
  54. </div>
  55. </form>
  56. </div>
  57. <script src="__STATIC__/js/admin.js?v={$_static_version}"></script>
  58. <script type="text/javascript">
  59. $(document).ready(function () {
  60. Wind.css('treeTable');
  61. Wind.use('treeTable', function () {
  62. $("#authrule-tree").treeTable({
  63. indent: 20
  64. });
  65. });
  66. });
  67. function openApiImportDialog() {
  68. parent.openIframeLayer("{:url('Api/import')}", '导入API', {
  69. end: function () {
  70. window.location.reload();
  71. }
  72. });
  73. }
  74. $('.js-check-wrap').each(function () {
  75. $(this).find('.js-check:eq(0)').change();
  76. });
  77. function checknode(obj) {
  78. var chk = $("input[type='checkbox']");
  79. var count = chk.length;
  80. var num = chk.index(obj);
  81. var level_top = level_bottom = chk.eq(num).attr('level');
  82. for (var i = num; i >= 0; i--) {
  83. var le = chk.eq(i).attr('level');
  84. if (le < level_top) {
  85. chk.eq(i).prop("checked", true);
  86. var level_top = level_top - 1;
  87. }
  88. }
  89. for (var j = num + 1; j < count; j++) {
  90. var le = chk.eq(j).attr('level');
  91. if (chk.eq(num).prop("checked")) {
  92. if (le > level_bottom) {
  93. chk.eq(j).prop("checked", true);
  94. } else if (le == level_bottom) {
  95. break;
  96. }
  97. } else {
  98. if (le > level_bottom) {
  99. chk.eq(j).prop("checked", false);
  100. } else if (le == level_bottom) {
  101. break;
  102. }
  103. }
  104. }
  105. }
  106. </script>
  107. </body>
  108. </html>