|
@@ -4,14 +4,16 @@
|
|
|
|
|
|
{% block breadcrumb %}
|
|
|
<ol class="breadcrumb flaskbb-breadcrumb">
|
|
|
- <li><a href="{{ url_for('forum.index') }}">{% trans %}Forum{% endtrans %}</a></li>
|
|
|
- <li><a href="{{ url_for('management.overview') }}">{% trans %}Management{% endtrans %}</a></li>
|
|
|
- <li class="active">{% trans %}Manage Users{% endtrans %}</li>
|
|
|
+ <li class="breadcrumb-item"><a href="{{ url_for('forum.index') }}">{% trans %}Forum{% endtrans %}</a></li>
|
|
|
+ <li class="breadcrumb-item"><a href="{{ url_for('management.overview') }}">{% trans %}Management{% endtrans %}</a></li>
|
|
|
+ <li class="breadcrumb-item active">{% trans %}Manage Users{% endtrans %}</li>
|
|
|
</ol>
|
|
|
{% endblock %}
|
|
|
|
|
|
{% block management_content %}
|
|
|
-{% from theme('macros.html') import render_pagination, group_field, navlink with context %}
|
|
|
+{%- from theme('_macros/pagination.html') import render_pagination -%}
|
|
|
+{%- from theme('_macros/navigation.html') import navlink with context -%}
|
|
|
+{%- from theme('_macros/form.html') import render_input_field -%}
|
|
|
|
|
|
<div class="col-md-3 settings-col">
|
|
|
<div class="nav-sidebar">
|
|
@@ -27,128 +29,128 @@
|
|
|
</div><!--/.col-md-3 -->
|
|
|
|
|
|
<div class="col-md-9 settings-col with-left-border">
|
|
|
- <div class="panel settings-panel">
|
|
|
- <div class="panel-heading settings-head">
|
|
|
-
|
|
|
- <span class="fa fa-user"></span> {% trans %}Users{% endtrans %}
|
|
|
-
|
|
|
- <div class="pull-right action-buttons">
|
|
|
- <div class="btn-group pull-right">
|
|
|
- <button type="button" class="btn btn-default btn-xs" onclick="return window.app.show_management_search()">
|
|
|
- <span class="fa fa-search"></span> {% trans %}Search{% endtrans %}
|
|
|
+ <div class="card settings">
|
|
|
+ <div class="card-header settings-header">
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-auto me-auto">
|
|
|
+ <span class="far fa-user"></span> {% trans %}Users{% endtrans %}
|
|
|
+ </div>
|
|
|
+ <div class="col-auto">
|
|
|
+ <button type="button" class="btn btn-white btn-xs" onclick="return window.app.show_management_search()">
|
|
|
+ <span class="fas fa-search"></span> {% trans %}Search{% endtrans %}
|
|
|
</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
</div>
|
|
|
- <div class="panel-body settings-body">
|
|
|
+ <div class="card-body settings-body">
|
|
|
|
|
|
<div class="settings-search">
|
|
|
<form class="search-form" role="form" method="post">
|
|
|
{{ search_form.hidden_tag() }}
|
|
|
<div class="input-group">
|
|
|
- {{ group_field(search_form.search_query, css_class="form-control") }}
|
|
|
- <span class="input-group-btn">
|
|
|
- <button class="btn btn-default" type="button"><span class="fa fa-search"></span></button>
|
|
|
- </span>
|
|
|
+ {{ render_input_field(search_form.search_query, class="form-control") }}
|
|
|
+ <button class="btn btn-white" type="button"><span class="fas fa-search"></span></button>
|
|
|
</div>
|
|
|
</form>
|
|
|
</div>
|
|
|
|
|
|
<div class="settings-content">
|
|
|
<div class="settings-meta row">
|
|
|
- <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>
|
|
|
- <div class="col-md-2 col-sm-2 col-xs-3 meta-item">{% trans %}Username{% endtrans %}</div>
|
|
|
- <div class="col-md-2 col-sm-2 col-xs-3 meta-item">{% trans %}Posts{% endtrans %}</div>
|
|
|
- <div class="col-md-3 col-sm-3 hidden-xs meta-item">{% trans %}Date registered{% endtrans %}</div>
|
|
|
- <div class="col-md-2 col-sm-2 col-xs-3 meta-item">{% trans %}Group{% endtrans %}</div>
|
|
|
- <div class="col-md-2 col-sm-2 col-xs-2">
|
|
|
- <div class="btn-group">
|
|
|
- <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown">
|
|
|
- <span class="fa fa-fw fa-cog"></span> {% trans %}Actions{% endtrans %}
|
|
|
- </button>
|
|
|
- <ul class="dropdown-menu slidedown">
|
|
|
- <li>
|
|
|
- <button class="btn btn-link" onclick="return bulk_actions.execute('{{ url_for('management.ban_user') }}')">
|
|
|
- <span class="fa fa-fw fa-flag text-warning"></span> {% trans %}Ban selected Users{% endtrans %}
|
|
|
- </button>
|
|
|
- </li>
|
|
|
-
|
|
|
- <li>
|
|
|
- <button class="btn btn-link" onclick="return bulk_actions.execute('{{ url_for('management.unban_user') }}')">
|
|
|
- <span class="fa fa-fw fa-flag text-success"></span> {% trans %}Unban selected Users{% endtrans %}
|
|
|
- </button>
|
|
|
- </li>
|
|
|
-
|
|
|
- <li>
|
|
|
- <button class="btn btn-link" onclick="return bulk_actions.execute('{{ url_for('management.delete_user') }}')">
|
|
|
- <span class="fa fa-fw fa-trash text-danger"></span> {% trans %}Delete selected Users{% endtrans %}
|
|
|
- </button>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
+ <div class="col-md-1 col-sm-1 col-1 meta-item"><input type="checkbox" name="rowtoggle" class="action-checkall" title="Select All"/></div>
|
|
|
+ <div class="col-md-2 col-sm-2 col-3 meta-item">{% trans %}Username{% endtrans %}</div>
|
|
|
+ <div class="col-md-2 col-sm-2 col-3 meta-item">{% trans %}Posts{% endtrans %}</div>
|
|
|
+ <div class="col-md-3 col-sm-3 d-none d-sm-block meta-item">{% trans %}Date registered{% endtrans %}</div>
|
|
|
+ <div class="col-md-2 col-sm-2 col-3 meta-item">{% trans %}Group{% endtrans %}</div>
|
|
|
+ <div class="col-md-2 col-sm-2 col-2">
|
|
|
+
|
|
|
+ <div class="dropdown">
|
|
|
+ <a class="dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">
|
|
|
+ <span class="fa fa-fw fa-cog"></span> {% trans %}Actions{% endtrans %}
|
|
|
+ </a>
|
|
|
+ <ul class="dropdown-menu">
|
|
|
+ <li><a class="dropdown-item" href="#">Action</a></li>
|
|
|
+ <li>
|
|
|
+ <button class="btn btn-link" onclick="return bulk_actions.execute('{{ url_for('management.ban_user') }}')">
|
|
|
+ <span class="far fa-fw fa-flag text-warning"></span> {% trans %}Ban selected Users{% endtrans %}
|
|
|
+ </button>
|
|
|
+ </li>
|
|
|
+
|
|
|
+ <li>
|
|
|
+ <button class="btn btn-link" onclick="return bulk_actions.execute('{{ url_for('management.unban_user') }}')">
|
|
|
+ <span class="far fa-fw fa-flag text-success"></span> {% trans %}Unban selected Users{% endtrans %}
|
|
|
+ </button>
|
|
|
+ </li>
|
|
|
+
|
|
|
+ <li>
|
|
|
+ <button class="btn btn-link" onclick="return bulk_actions.execute('{{ url_for('management.delete_user') }}')">
|
|
|
+ <span class="far fa-fw fa-trash text-danger"></span> {% trans %}Delete selected Users{% endtrans %}
|
|
|
+ </button>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+
|
|
|
</div>
|
|
|
</div>
|
|
|
{% for user in users.items %}
|
|
|
- <div class="row settings-row hover clearfix">
|
|
|
- <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>
|
|
|
- <div class="col-md-2 col-sm-2 col-xs-3"><a href="{{ user.url }}">{{ user.username }}</a></div>
|
|
|
- <div class="col-md-2 col-sm-2 col-xs-3">{{ user.post_count }}</div>
|
|
|
- <div class="col-md-3 col-sm-3 hidden-xs">{{ user.date_joined|format_date }}</div>
|
|
|
- <div class="col-md-2 col-sm-2 col-xs-3">{{ user.primary_group.name }}</div>
|
|
|
- <div class="col-md-2 col-sm-2 col-xs-2">
|
|
|
+ <div class="row settings-row hover">
|
|
|
+ <div class="col-md-1 col-sm-1 col-1"><input type="checkbox" name="rowid" class="action-checkbox" value="{{ user.id }}" title="Select User"/></div>
|
|
|
+ <div class="col-md-2 col-sm-2 col-3"><a href="{{ user.url }}">{{ user.username }}</a></div>
|
|
|
+ <div class="col-md-2 col-sm-2 col-3">{{ user.post_count }}</div>
|
|
|
+ <div class="col-md-3 col-sm-3 d-none d-sm-block">{{ user.date_joined|format_date }}</div>
|
|
|
+ <div class="col-md-2 col-sm-2 col-3">{{ user.primary_group.name }}</div>
|
|
|
+ <div class="col-2">
|
|
|
{% if current_user|can_edit_user and not user|is_admin or current_user|is_admin %}
|
|
|
<a href="{{ url_for('management.edit_user', user_id = user.id) }}" class="btn btn-icon">
|
|
|
- <span class="fa fa-pencil" data-toggle="tooltip" data-placement="top" title="{% trans %}Edit{% endtrans %}"></span>
|
|
|
+ <span class="fa fa-edit text-primary" data-toggle="tooltip" data-placement="top" title="{% trans %}Edit{% endtrans %}"></span>
|
|
|
</a>
|
|
|
{% endif %}
|
|
|
|
|
|
{% if current_user|can_ban_user and not user.permissions['banned'] %}
|
|
|
- <form class="inline-form" id="ban-{{user.id}}" method="post" action="{{ url_for('management.ban_user', user_id = user.id) }}">
|
|
|
+ <form class="d-inline" id="ban-{{user.id}}" method="post" action="{{ url_for('management.ban_user', user_id = user.id) }}">
|
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
|
|
|
|
|
<button class="btn btn-icon" name="confirmDialog" data-toggle="tooltip" data-placement="top" title="{% trans %}Ban{% endtrans %}">
|
|
|
- <span class="fa fa-flag text-warning"></span>
|
|
|
+ <span class="fas fa-flag text-warning"></span>
|
|
|
</button>
|
|
|
</form>
|
|
|
{% endif %}
|
|
|
|
|
|
{% if current_user|can_ban_user and user.permissions['banned'] %}
|
|
|
- <form class="inline-form" id="ban-{{user.id}}" method="post" action="{{ url_for('management.unban_user', user_id = user.id) }}">
|
|
|
+ <form class="d-inline" id="ban-{{user.id}}" method="post" action="{{ url_for('management.unban_user', user_id = user.id) }}">
|
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
|
|
|
|
|
<button class="btn btn-icon" name="confirmDialog">
|
|
|
- <span class="fa fa-flag text-success" data-toggle="tooltip" data-placement="top" title="{% trans %}Unban{% endtrans %}"></span>
|
|
|
+ <span class="fas fa-flag text-success" data-toggle="tooltip" data-placement="top" title="{% trans %}Unban{% endtrans %}"></span>
|
|
|
</button>
|
|
|
</form>
|
|
|
{% endif %}
|
|
|
|
|
|
{% if current_user|is_admin %}
|
|
|
- <form class="inline-form" id="delete-{{user.id}}" method="post" action="{{ url_for('management.delete_user', user_id = user.id) }}">
|
|
|
+ <form class="d-inline" id="delete-{{user.id}}" method="post" action="{{ url_for('management.delete_user', user_id = user.id) }}">
|
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
|
|
|
|
|
<button class="btn btn-icon" name="confirmDialog" data-toggle="tooltip" data-placement="top" title="{% trans %}Delete{% endtrans %}">
|
|
|
- <span class="fa fa-trash text-danger"></span>
|
|
|
+ <span class="far fa-trash-alt text-danger"></span>
|
|
|
</button>
|
|
|
</form>
|
|
|
{% endif %}
|
|
|
</div>
|
|
|
</div>
|
|
|
{% else %}
|
|
|
- <div class="row settings-row clearfix">
|
|
|
- <div class="col-md-12 col-sm-12 col-xs-12">{% trans %}No users found matching your search criteria.{% endtrans %}</div>
|
|
|
+ <div class="row settings-row">
|
|
|
+ <div class="col-12">{% trans %}No users found matching your search criteria.{% endtrans %}</div>
|
|
|
</div>
|
|
|
{% endfor %}
|
|
|
|
|
|
</div> <!-- end settings content -->
|
|
|
</div>
|
|
|
|
|
|
- <div class="panel-footer settings-footer">
|
|
|
+ <div class="card-footer settings-footer p-2">
|
|
|
{{ render_pagination(users, url_for('management.users')) }}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
-{% include theme('confirm_dialog.html') %}
|
|
|
+{% include theme('_partials/confirm_dialog.html') %}
|
|
|
{% endblock %}
|
|
|
|
|
|
{% block scripts %}
|