Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

229 wiersze
15 KiB

  1. <!-- Wappler include head-page="layouts/admin" is="dmx-app" id="usermanage" appConnect="local" components="{dmxBootstrap5TableGenerator:{},dmxTyped:{},dmxBootstrap5Modal:{},dmxFormRepeat:{},dmxFormatter:{},dmxAutocomplete:{},dmxValidator:{}}" bootstrap5="cdn" bootstrap_icons="cdn" fontawesome_5="cdn" -->
  2. <dmx-serverconnect id="conn_deleterole" url="/api/roles/delete"></dmx-serverconnect>
  3. <dmx-serverconnect id="conn_userinrole" url="/api/Users/userinrole" noload="true"></dmx-serverconnect>
  4. <dmx-serverconnect id="conn_permissions" url="/api/roles/permissions"></dmx-serverconnect>
  5. <dmx-serverconnect id="conn_depts" url="/api/roles/depts"></dmx-serverconnect>
  6. <dmx-serverconnect id="conn_userroles" url="/api/Users/readroles" noload="true"></dmx-serverconnect>
  7. <dmx-serverconnect id="conn_userdepts" url="/api/Users/readdepts"></dmx-serverconnect>
  8. <dmx-serverconnect id="conn_singleuser" url="/api/Users/read" noload="true"></dmx-serverconnect>
  9. <meta name="ac:route" content="/wadmin/usermanage">
  10. <dmx-serverconnect id="conn_users" url="/api/Users/search" dmx-param:filter="inp_search.value"></dmx-serverconnect>
  11. <div class="modal" id="modal1" is="dmx-bs5-modal" tabindex="-1" dmx-on:hide-bs-modal="serverconnectform1.reset()">
  12. <div class="modal-dialog" role="document">
  13. <div class="modal-content">
  14. <div class="modal-header">
  15. <h5 class="modal-title">Edit User</h5>
  16. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  17. </div>
  18. <div class="modal-body">
  19. <div class="container">
  20. <div class="row">
  21. <div class="col">
  22. <form is="dmx-serverconnect-form" id="serverconnectform1" method="post" action="/api/Users/update" dmx-generator="bootstrap5" dmx-form-type="horizontal" dmx-populate="conn_singleuser.data.query" dmx-on:success="conn_users.load({});serverconnectform1.reset();modal1.hide()">
  23. <input type="hidden" name="id" id="inp_id" dmx-bind:value="conn_singleuser.data.query.id" dmxorgdomid="d468">
  24. <div class="form-group mb-3 row">
  25. <label for="inp_firstname" class="col-sm-2 col-form-label">Firstname</label>
  26. <div class="col-sm-10">
  27. <input type="text" class="form-control" id="inp_firstname" name="firstname" dmx-bind:value="conn_singleuser.data.query.firstname" aria-describedby="inp_firstname_help" placeholder="Enter Firstname" dmxorgdomid="d472">
  28. </div>
  29. </div>
  30. <div class="form-group mb-3 row">
  31. <label for="inp_lastname" class="col-sm-2 col-form-label">Lastname</label>
  32. <div class="col-sm-10">
  33. <input type="text" class="form-control" id="inp_lastname" name="lastname" dmx-bind:value="conn_singleuser.data.query.lastname" aria-describedby="inp_lastname_help" placeholder="Enter Lastname" dmxorgdomid="d476">
  34. </div>
  35. </div>
  36. <div class="form-group mb-3 row">
  37. <label for="inp_newuseremail" class="col-sm-2 col-form-label">Email</label>
  38. <div class="col-sm-10">
  39. <input type="text" class="form-control" id="inp_email" name="email" dmx-bind:value="conn_singleuser.data.query.email" aria-describedby="inp_email_help" placeholder="Enter Email" dmxorgdomid="d480">
  40. </div>
  41. </div>
  42. <div class="form-group mb-3 row">
  43. <legend class="col-sm-2 col-form-label">Validated</legend>
  44. <div class="col-sm-10 align-self-center">
  45. <div class="form-check">
  46. <input class="form-check-input" type="checkbox" value="1" id="inp_validated" name="validated" dmx-bind:value="conn_singleuser.data.query.validated" dmxorgdomid="d485" dmx-bind:checked="conn_singleuser.data.query.validated">
  47. </div>
  48. </div>
  49. </div>
  50. <div class="form-group mb-3 row">
  51. <div class="text-end col-sm-12">
  52. <button type="submit" class="btn btn-primary" dmx-bind:value="conn_singleuser.data.query.Save" dmx-bind:disabled="state.executing" dmxorgdomid="d490">Save <span class="spinner-border spinner-border-sm" role="status" dmx-show="state.executing" dmxorgdomid="d491"></span></button>
  53. </div>
  54. </div>
  55. </form>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. <div class="modal w-100" id="modal_permissiosn" is="dmx-bs5-modal" tabindex="-1" dmx-on:hide-bs-modal="frm_dept.reset();frm_role.reset()">
  64. <div class="modal-dialog modal-lg" role="document">
  65. <div class="modal-content">
  66. <div class="modal-header">
  67. <h5 class="modal-title">Edit Permissions</h5>
  68. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  69. </div>
  70. <div class="modal-body">
  71. <div class="container">
  72. <div class="row">
  73. <div class="col">
  74. <form id="frm_dept" is="dmx-serverconnect-form" method="post" action="/api/roles/create" dmx-on:success="conn_userdepts.load({userid: inp_deptuserid.value})">
  75. <input id="inp_deptuserid" name="userid" class="form-control" type="hidden">
  76. <div class="form-group md-3"> <label for="inp_department" class="form-label">Department</label>
  77. <input type="text" class="form-control" id="inp_department" name="roleid" aria-describedby="input1_help" placeholder="Enter some text" is="dmx-autocomplete" dmx-bind:data="conn_depts.data.query" optiontext="name" optionvalue="id" optionsearch="name">
  78. </div>
  79. <button id="btn_adddepartment" class="btn btn-primary" type="submit">Add</button>
  80. </form>
  81. </div>
  82. <div class="col">
  83. <form id="frm_role" is="dmx-serverconnect-form" method="post" action="/api/roles/create" dmx-on:success="conn_userroles.load({id: inp_roleuserid.value})">
  84. <input id="inp_roleuserid" name="userid" type="hidden" class="form-control">
  85. <div class="form-group md-3"> <label for="inp_role" class="form-label">Role</label>
  86. <input type="text" class="form-control" id="inp_role" name="roleid" aria-describedby="input1_help" placeholder="Enter some text" is="dmx-autocomplete" dmx-bind:data="conn_permissions.data.query" optiontext="name" optionvalue="id" optionsearch="name">
  87. </div>
  88. <button id="btn_addrole" class="btn btn-primary" type="submit">Button</button>
  89. </form>
  90. </div>
  91. </div>
  92. <div class="row">
  93. <div class="col">
  94. <div class="table-responsive">
  95. <table class="table table-striped table-bordered table-hover table-sm">
  96. <thead>
  97. <tr>
  98. <th scope="row"></th>
  99. <th scope="row" class="visually-hidden">idHeader</th>
  100. <th class="visually-hidden">Role IdId</th>
  101. <th>Name</th>
  102. </tr>
  103. </thead>
  104. <tbody is="dmx-repeat" dmx-generator="bs5table" dmx-bind:repeat="conn_userdepts.data.query" id="tableRepeat3">
  105. <tr>
  106. <td>
  107. <button id="btn_deletedept" class="btn btn-danger" dmx-on:click="conn_deleterole.load({id: id});conn_userdepts.load({userid: frm_dept.inp_deptuserid.value})">X</button>
  108. </td>
  109. <td dmx-text="id" class="visually-hidden"></td>
  110. <td dmx-text="roleid" class="visually-hidden"></td>
  111. <td dmx-text="name"></td>
  112. </tr>
  113. </tbody>
  114. </table>
  115. </div>
  116. </div>
  117. <div class="col">
  118. <div class="table-responsive">
  119. <table class="table table-striped table-bordered table-hover table-sm">
  120. <thead>
  121. <tr>
  122. <th scope="row"></th>
  123. <th scope="row" class="visually-hidden">idHeader</th>
  124. <th class="visually-hidden">Role IdId</th>
  125. <th>Name</th>
  126. </tr>
  127. </thead>
  128. <tbody is="dmx-repeat" dmx-generator="bs5table" dmx-bind:repeat="conn_userroles.data.query" id="tableRepeat2">
  129. <tr>
  130. <td>
  131. <button id="btn_deleterole" class="btn btn-danger" dmx-on:click="conn_deleterole.load({id: id});conn_userroles.load({id: frm_role.inp_roleuserid.value})">X</button>
  132. </td>
  133. <td dmx-text="id" class="visually-hidden">Cell</td>
  134. <td dmx-text="rolid" class="visually-hidden"></td>
  135. <td dmx-text="name"></td>
  136. </tr>
  137. </tbody>
  138. </table>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. </div>
  144. <div class="modal-footer text-end">
  145. <button id="btn_done" class="btn btn-primary" dmx-on:click="frm_role.reset();frm_dept.reset();modal_permissiosn.hide()">Done</button>
  146. </div>
  147. </div>
  148. </div>
  149. </div>
  150. <div class="modal" id="modal_newuser" is="dmx-bs5-modal" tabindex="-1">
  151. <div class="modal-dialog" role="document">
  152. <div class="modal-content">
  153. <div class="modal-header">
  154. <h5 class="modal-title">Modal title</h5>
  155. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  156. </div>
  157. <div class="modal-body">
  158. <form id="frm_newuser" is="dmx-serverconnect-form" method="post" action="/api/Users/create" dmx-on:success="frm_newuser.reset();modal_newuser.hide();conn_users.load({})">
  159. <div class="form-group md-3"> <label for="inp_newuseremail" class="form-label">Email Address</label>
  160. <input type="text" class="form-control" id="inp_newuseremail" name="email" aria-describedby="input1_help" placeholder="email address">
  161. </div>
  162. <div class="form-group md-3"> <label for="inp_newuserdept" class="form-label">Department</label>
  163. <input type="text" class="form-control" id="inp_newuserdept" name="department" aria-describedby="input1_help" placeholder="Enter some text" is="dmx-autocomplete" dmx-bind:data="conn_depts.data.query" optiontext="name" optionvalue="id" optionsearch="name" required="">
  164. </div>
  165. <button id="btn_addnewuser" class="btn btn-primary" type="submit">Submit</button>
  166. </form>
  167. </div>
  168. </div>
  169. </div>
  170. </div>
  171. <div class="container mt-4">
  172. <div class="row">
  173. <div class="col">
  174. <div class="form-group mb-3 row">
  175. <label for="inp_search" class="col-sm-2 col-form-label">Search</label>
  176. <div class="col-sm-8">
  177. <input type="text" class="form-control" id="inp_search" name="search" aria-describedby="input1_help" placeholder="Enter Keyword">
  178. </div>
  179. </div>
  180. </div>
  181. </div>
  182. <div class="row">
  183. <div class="col">
  184. <button id="btn_newuser" class="btn" dmx-on:click="modal_newuser.show()">New User</button>
  185. </div>
  186. </div>
  187. <div class="row">
  188. <div class="col">
  189. <div class="table-responsive">
  190. <table class="table table-striped table-bordered table-hover table-sm">
  191. <thead>
  192. <tr>
  193. <th scope="row"></th>
  194. <th scope="row"></th>
  195. <th scope="row"></th>
  196. <th>User ID</th>
  197. <th>First Name</th>
  198. <th>Last Name</th>
  199. <th>Email</th>
  200. <th>Validated</th>
  201. </tr>
  202. </thead>
  203. <tbody is="dmx-repeat" dmx-generator="bs5table" dmx-bind:repeat="conn_users.data.query" id="tableRepeat1">
  204. <tr>
  205. <td>
  206. <button id="btn_edituser" class="btn btn-success w-100" dmx-bind:value="id" dmx-on:click="conn_singleuser.load({id: id});modal1.show();conn_userroles.load({id: id})">Edit
  207. </button>
  208. </td>
  209. <td>
  210. <button id="btn_deleteuser" class="btn btn-danger w-100">Delete</button>
  211. </td>
  212. <td>
  213. <button id="btn_userpermissions" class="btn w-100 btn-warning" dmx-on:click="modal_permissiosn.show();conn_userroles.load({id: id},true);conn_userdepts.load({userid: id});modal_permissiosn.frm_dept.inp_deptuserid.setValue(id);modal_permissiosn.frm_role.inp_roleuserid.setValue(id)">Roles</button>
  214. </td>
  215. <td dmx-text="id"></td>
  216. <td dmx-text="firstname"></td>
  217. <td dmx-text="lastname"></td>
  218. <td dmx-text="email"></td>
  219. <td dmx-text="validated">
  220. </td>
  221. </tr>
  222. </tbody>
  223. </table>
  224. </div>
  225. </div>
  226. </div>
  227. </div>