user-group-detail.html 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. {% extends '../layout/admin.html' %}
  2. {% block html_title %}{{ customizeService.generateCustomTitle(t('UserGroup Management') + '/' + userGroup.name) | preventXss }}{% endblock %}
  3. {% block content_header %}
  4. <div class="header-wrap">
  5. <header id="page-header">
  6. <h1 id="admin-title" class="title">{{ t('UserGroup Management') + '/' + userGroup.name | preventXss }}</h1>
  7. </header>
  8. </div>
  9. {% endblock %}
  10. {% block content_main %}
  11. <div class="content-main">
  12. {% set smessage = req.flash('successMessage') %}
  13. {% if smessage.length %}
  14. <div class="alert alert-success">
  15. {{ smessage }}
  16. </div>
  17. {% endif %}
  18. {% set emessage = req.flash('errorMessage') %}
  19. {% if emessage.length %}
  20. <div class="alert alert-danger">
  21. {{ emessage }}
  22. </div>
  23. {% endif %}
  24. <div class="row">
  25. <div class="col-md-3">
  26. {% include './widget/menu.html' with {current: 'user-group'} %}
  27. </div>
  28. <div class="col-md-9">
  29. <a href="/admin/user-groups" class="btn btn-default">
  30. <i class="icon-fw ti-arrow-left" aria-hidden="true"></i>
  31. {{ t('user_group_management.back_to_list') }}
  32. </a>
  33. <div class="modal fade" id="admin-add-user-group-relation-modal">
  34. <div class="modal-dialog">
  35. <div class="modal-content">
  36. <div class="modal-header">
  37. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  38. <h4 class="modal-title">
  39. {{ t('user_group_management.add_user') }}
  40. </h4>
  41. </div>
  42. <div class="modal-body">
  43. <p>
  44. <strong>{{ t('Method') }}1.</strong> {{ t('user_group_management.how_to_add1') }}
  45. </p>
  46. <form class="form-inline" role="form" action="/admin/user-group-relation/create" method="post">
  47. <div class="form-group">
  48. <input type="text" name="user_name" class="form-control input-sm" id="inputRelatedUserName" placeholder="{{ t('User Name')}}">
  49. </div>
  50. <input type="hidden" name="user_group_id" value="{{userGroup.id}}">
  51. <input type="hidden" name="_csrf" value="{{ csrf() }}">
  52. <button type="submit" class="btn btn-sm btn-success">{{ t('Add') }}</button>
  53. </form>
  54. {% if 0 < notRelatedusers.length %}
  55. <hr>
  56. <p>
  57. <strong>{{ t('Method') }}2.</strong> {{ t('user_group_management.how_to_add2') }}
  58. </p>
  59. <ul class="list-inline">
  60. {% for sUser in notRelatedusers %}
  61. <li>
  62. <form role="form" action="/admin/user-group-relation/create" method="post">
  63. <!-- <input type="hidden" name="user_name" value="{{sUser.username}}"> -->
  64. <input type="hidden" name="user_group_id" value="{{userGroup.id}}">
  65. <input type="hidden" name="_csrf" value="{{ csrf() }}">
  66. <button type="submit" name="user_name" value="{{sUser.username}}" class="btn btn-xs btn-primary">{{sUser.username}}</button>
  67. </form>
  68. </li>
  69. {% endfor %}
  70. </ul>
  71. {% endif %}
  72. </div>
  73. </div>
  74. <!-- /.modal-content -->
  75. </div>
  76. <!-- /.modal-dialog -->
  77. </div>
  78. <div class="m-t-20 form-box">
  79. <form action="/admin/user-group/{{userGroup.id}}/update" method="post" class="form-horizontal" role="form">
  80. <fieldset>
  81. <legend>{{ t('Basic Settings') }}</legend>
  82. <div class="form-group">
  83. <label for="name" class="col-sm-2 control-label">{{ t('Name') }}</label>
  84. <div class="col-sm-4">
  85. <input class="form-control" type="text" name="name" value="{{ userGroup.name }}" required>
  86. </div>
  87. </div>
  88. <div class="form-group">
  89. <label class="col-sm-2 control-label">{{ t('Created') }}</label>
  90. <div class="col-sm-4">
  91. <input class="form-control" type="text" disabled value="{{userGroup.createdAt|date('Y-m-d', sRelation.relatedUser.createdAt.getTimezoneOffset()) }}">
  92. </div>
  93. </div>
  94. <div class="form-group">
  95. <div class="col-sm-offset-2 col-sm-10">
  96. <input type="hidden" name="_csrf" value="{{ csrf() }}">
  97. <button type="submit" class="btn btn-primary">{{ t('Update') }}</button>
  98. </div>
  99. </div>
  100. </fieldset>
  101. </form>
  102. </div>
  103. <legend class="m-t-20">{{ t('User List') }}</legend>
  104. <table class="table table-bordered table-user-list">
  105. <thead>
  106. <tr>
  107. <th width="100px">#</th>
  108. <th>
  109. {{ t('User') }}
  110. </th>
  111. <th>{{ t('Name') }}</th>
  112. <th width="100px">{{ t('Created') }}</th>
  113. <th width="150px">{{ t('Last Login')}}</th>
  114. <th width="70px"></th>
  115. </tr>
  116. </thead>
  117. <tbody>
  118. {% for sRelation in userGroupRelations %}
  119. {% set sUser = sRelation.relatedUser%}
  120. <tr>
  121. <td>
  122. <img src="{{ sRelation.relatedUser|picture }}" class="picture img-circle" />
  123. </td>
  124. <td>
  125. <strong>{{ sRelation.relatedUser.username }}</strong>
  126. </td>
  127. <td>{{ sRelation.relatedUser.name }}</td>
  128. <td>{{ sRelation.relatedUser.createdAt|date('Y-m-d', sRelation.relatedUser.createdAt.getTimezoneOffset()) }}</td>
  129. <td>
  130. {% if sRelation.relatedUser.lastLoginAt %} {{ sRelation.relatedUser.lastLoginAt|date('Y-m-d H:i', sRelation.relatedUser.createdAt.getTimezoneOffset()) }} {% endif %}
  131. </td>
  132. <td>
  133. <div class="btn-group admin-user-menu">
  134. <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">
  135. <i class="icon-settings"></i> <span class="caret"></span>
  136. </button>
  137. <ul class="dropdown-menu" role="menu">
  138. <form id="form_removeFromGroup_{{ loop.index }}" action="/admin/user-group-relation/{{userGroup._id.toString()}}/remove-relation/{{ sRelation._id.toString() }}" method="post">
  139. <input type="hidden" name="_csrf" value="{{ csrf() }}">
  140. </form>
  141. <li>
  142. <a href="javascript:form_removeFromGroup_{{ loop.index }}.submit()">
  143. <i class="icon-fw icon-user-unfollow"></i> {{ t('user_group_management.remove_from_group')}}
  144. </a>
  145. </li>
  146. </ul>
  147. </div>
  148. </td>
  149. </tr>
  150. {% endfor %}
  151. {% if 0 < notRelatedusers.length %}
  152. <tr>
  153. <td></td>
  154. <td class="text-center">
  155. <button class="btn btn-default" data-target="#admin-add-user-group-relation-modal" data-toggle="modal">
  156. <i class="ti-plus"></i>
  157. </button>
  158. </td>
  159. <td></td>
  160. <td></td>
  161. <td></td>
  162. <td></td>
  163. </tr>
  164. {% endif %}
  165. </tbody>
  166. </table>
  167. <!-- {% include '../widget/pager.html' with {path: "/admin/user-group-detail", pager: pager} %} -->
  168. <legend class="m-t-20">{{ t('Page') }}</legend>
  169. <div class="page-list">
  170. {% if relatedPages.length == 0 %}<p>{{ t('user_group_management.no_pages') }}</p>{% endif %}
  171. {% include '../widget/page_list.html' with { pages: relatedPages } %}
  172. </div>
  173. </div>
  174. </div>
  175. </div>
  176. {% endblock content_main %}
  177. {% block content_footer %}
  178. {% endblock content_footer %}