users.html 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. {% set page_title = _("Users") %}
  2. {% set active_management_user_nav=True %}
  3. {% extends theme("management/management_layout.html") %}
  4. {% block breadcrumb %}
  5. <ol class="breadcrumb flaskbb-breadcrumb">
  6. <li><a href="{{ url_for('forum.index') }}">{% trans %}Forum{% endtrans %}</a></li>
  7. <li><a href="{{ url_for('management.overview') }}">{% trans %}Management{% endtrans %}</a></li>
  8. <li class="active">{% trans %}Manage Users{% endtrans %}</li>
  9. </ol>
  10. {% endblock %}
  11. {% block management_content %}
  12. {% from theme('macros.html') import render_pagination, group_field, navlink with context %}
  13. <div class="col-md-3 settings-col">
  14. <div class="nav-sidebar">
  15. <ul class="nav">
  16. {{ navlink('management.users', _('Manage Users')) }}
  17. {{ navlink('management.banned_users', _('Banned Users')) }}
  18. {% if current_user|is_admin %}
  19. {{ navlink('management.add_user', _("Add User")) }}
  20. {% endif %}
  21. </ul>
  22. </div>
  23. </div><!--/.col-md-3 -->
  24. <div class="col-md-9 settings-col with-left-border">
  25. <div class="panel settings-panel">
  26. <div class="panel-heading settings-head">
  27. <span class="fa fa-user"></span> {% trans %}Users{% endtrans %}
  28. <div class="pull-right action-buttons">
  29. <div class="btn-group pull-right">
  30. <button type="button" class="btn btn-default btn-xs" onclick="return show_management_search()">
  31. <span class="fa fa-search"></span> {% trans %}Search{% endtrans %}
  32. </button>
  33. </div>
  34. </div>
  35. </div>
  36. <div class="panel-body settings-body">
  37. <div class="settings-search">
  38. <form class="search-form" role="form" method="post">
  39. {{ search_form.hidden_tag() }}
  40. <div class="input-group">
  41. {{ group_field(search_form.search_query, css_class="form-control") }}
  42. <span class="input-group-btn">
  43. <button class="btn btn-default" type="button"><span class="fa fa-search"></span></button>
  44. </span>
  45. </div>
  46. </form>
  47. </div>
  48. <div class="settings-content">
  49. <div class="settings-meta row">
  50. <div class="col-md-1 col-sm-1 col-xs-1 meta-item"><input type="checkbox" name="rowtoggle" class="action-checkall" title="Select All"/></div>
  51. <div class="col-md-2 col-sm-2 col-xs-3 meta-item">{% trans %}Username{% endtrans %}</div>
  52. <div class="col-md-2 col-sm-2 col-xs-3 meta-item">{% trans %}Posts{% endtrans %}</div>
  53. <div class="col-md-3 col-sm-3 hidden-xs meta-item">{% trans %}Date registered{% endtrans %}</div>
  54. <div class="col-md-2 col-sm-2 col-xs-3 meta-item">{% trans %}Group{% endtrans %}</div>
  55. <div class="col-md-2 col-sm-2 col-xs-2">
  56. <div class="btn-group">
  57. <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown">
  58. <span class="fa fa-cog"></span> {% trans %}Actions{% endtrans %}
  59. </button>
  60. <ul class="dropdown-menu slidedown">
  61. <li>
  62. <a href="javascript:void(0)" onclick="return bulk_actions.execute('{{ url_for('management.ban_user') }}', '{% trans %}Are you sure you want to ban these Users?{% endtrans %}')">
  63. <span class="fa fa-flag text-warning"></span> {% trans %}Ban selected Users{% endtrans %}
  64. </a>
  65. </li>
  66. <li>
  67. <a href="javascript:void(0)" onclick="return bulk_actions.execute('{{ url_for('management.unban_user') }}', '{% trans %}Are you sure you want to unban these Users?{% endtrans %}')">
  68. <span class="fa fa-flag text-success"></span> {% trans %}Unban selected Users{% endtrans %}
  69. </a>
  70. </li>
  71. <li>
  72. <a href="javascript:void(0)" onclick="return bulk_actions.execute('{{ url_for('management.delete_user') }}', '{% trans %}Are you sure you want to delete these Users?{% endtrans %}')">
  73. <span class="fa fa-trash text-danger"></span> {% trans %}Delete selected Users{% endtrans %}
  74. </a>
  75. </li>
  76. </ul>
  77. </div>
  78. </div>
  79. </div>
  80. {% for user in users.items %}
  81. <div class="row settings-row hover clearfix">
  82. <div class="col-md-1 col-sm-1 col-xs-1"><input type="checkbox" name="rowid" class="action-checkbox" value="{{ user.id }}" title="Select User"/></div>
  83. <div class="col-md-2 col-sm-2 col-xs-3"><a href="{{ user.url }}">{{ user.username }}</a></div>
  84. <div class="col-md-2 col-sm-2 col-xs-3">{{ user.post_count }}</div>
  85. <div class="col-md-3 col-sm-3 hidden-xs">{{ user.date_joined|format_date('%b %d %Y') }}</div>
  86. <div class="col-md-2 col-sm-2 col-xs-3">{{ user.primary_group.name }}</div>
  87. <div class="col-md-2 col-sm-2 col-xs-2">
  88. {% if current_user|can_edit_user and not user|is_admin or current_user|is_admin %}
  89. <a href="{{ url_for('management.edit_user', user_id = user.id) }}" class="btn btn-icon">
  90. <span class="fa fa-pencil" data-toggle="tooltip" data-placement="top" title="{% trans %}Edit{% endtrans %}"></span>
  91. </a>
  92. {% endif %}
  93. {% if current_user|can_ban_user and not user.permissions['banned'] %}
  94. <form class="inline-form" id="ban-{{user.id}}" method="post" action="{{ url_for('management.ban_user', user_id = user.id) }}">
  95. <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
  96. <button class="btn btn-icon">
  97. <span class="fa fa-flag text-warning" data-toggle="tooltip" data-placement="top" title="{% trans %}Ban{% endtrans %}"></span>
  98. </button>
  99. </form>
  100. {% endif %}
  101. {% if current_user|can_ban_user and user.permissions['banned'] %}
  102. <form class="inline-form" id="unban-{{user.id}}" method="post" action="{{ url_for('management.unban_user', user_id = user.id) }}">
  103. <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
  104. <button class="btn btn-icon">
  105. <span class="fa fa-flag text-success" data-toggle="tooltip" data-placement="top" title="{% trans %}Unban{% endtrans %}"></span>
  106. </button>
  107. </form>
  108. {% endif %}
  109. {% if current_user|is_admin %}
  110. <form class="inline-form" id="delete-{{user.id}}" method="post" action="{{ url_for('management.delete_user', user_id = user.id) }}">
  111. <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
  112. <button class="btn btn-icon">
  113. <span class="fa fa-trash text-danger" data-toggle="tooltip" data-placement="top" title="{% trans %}Delete{% endtrans %}"></span>
  114. </button>
  115. </form>
  116. {% endif %}
  117. </div>
  118. </div>
  119. {% else %}
  120. <div class="row settings-row clearfix">
  121. <div class="col-md-12 col-sm-12 col-xs-12">{% trans %}No users found matching your search criteria.{% endtrans %}</div>
  122. </div>
  123. {% endfor %}
  124. </div> <!-- end settings content -->
  125. </div>
  126. <div class="panel-footer settings-footer">
  127. {{ render_pagination(users, url_for('management.users')) }}
  128. </div>
  129. </div>
  130. </div>
  131. {% endblock %}
  132. {% block scripts %}
  133. <script>
  134. var bulk_actions = new BulkActions();
  135. $(function () {
  136. $('[data-toggle="tooltip"]').tooltip()
  137. })
  138. </script>
  139. {% endblock %}