Просмотр исходного кода

search fields in users.html and memberlist.html

Casper Van Gheluwe 11 лет назад
Родитель
Сommit
798d34a208

+ 9 - 5
flaskbb/forum/views.py

@@ -460,15 +460,19 @@ def who_is_online():
                            online_users=online_users)
                            online_users=online_users)
 
 
 
 
-@forum.route("/memberlist")
+@forum.route("/memberlist", methods=['GET', 'POST'])
 def memberlist():
 def memberlist():
     page = request.args.get('page', 1, type=int)
     page = request.args.get('page', 1, type=int)
 
 
-    users = User.query.order_by(User.id).\
-        paginate(page, current_app.config['POSTS_PER_PAGE'], False)
+    search_form = SearchForm(search_types=['user'])
 
 
-    return render_template("forum/memberlist.html",
-                           users=users)
+    if search_form.validate():
+        users = search_form.get_results()['user'].paginate(page, current_app.config['USERS_PER_PAGE'], False)
+        return render_template("forum/memberlist.html", users=users, search_form=search_form)
+    else:
+        users = User.query. \
+            paginate(page, current_app.config['USERS_PER_PAGE'], False)
+        return render_template("forum/memberlist.html", users=users, search_form=search_form)
 
 
 
 
 @forum.route("/topictracker")
 @forum.route("/topictracker")

+ 10 - 7
flaskbb/templates/admin/users.html

@@ -1,19 +1,22 @@
 {% extends theme("admin/admin_layout.html") %}
 {% extends theme("admin/admin_layout.html") %}
 {% block admin_content %}
 {% block admin_content %}
 {% from theme('macros.html') import render_pagination %}
 {% from theme('macros.html') import render_pagination %}
-{% from theme("macros.html") import render_field, inline_field %}
+{% from theme("macros.html") import render_field, group_field %}
 
 
 <legend>Manage Users | <a href="{{ url_for('admin.add_user') }}">Add User</a></legend>
 <legend>Manage Users | <a href="{{ url_for('admin.add_user') }}">Add User</a></legend>
 
 
 <div class="pull-left" style="padding-bottom: 10px">
 <div class="pull-left" style="padding-bottom: 10px">
     {{ render_pagination(users, url_for('admin.users')) }}
     {{ render_pagination(users, url_for('admin.users')) }}
 </div>
 </div>
-
-<div style="padding-bottom: 10px">
-    <form class="form" role="form" method="post">
-        {{ search_form.hidden_tag() }}
-        {{ inline_field(search_form.search_query, div_class="col-sm-12", rows=12) }}
-        <button type="submit" class="btn btn-primary">Search</button>
+<div class="pull-right" style="padding-bottom: 10px">
+    <form role="form" method="post">
+        <div class="input-group">
+            {{ search_form.hidden_tag() }}
+            {{ group_field(search_form.search_query) }}
+      <span class="input-group-btn">
+        <button class="btn btn-primary" type="button">Search</button>
+      </span>
+        </div>
     </form>
     </form>
 </div>
 </div>
 
 

+ 14 - 11
flaskbb/templates/forum/memberlist.html

@@ -2,24 +2,27 @@
 
 
 {% extends theme("layout.html") %}
 {% extends theme("layout.html") %}
 {% block content %}
 {% block content %}
-{% from theme('macros.html') import render_pagination %}
+{% from theme('macros.html') import render_pagination, group_field %}
 
 
 <ul class="breadcrumb">
 <ul class="breadcrumb">
     <li><a href="{{ url_for('forum.index') }}">Forum</a></li>
     <li><a href="{{ url_for('forum.index') }}">Forum</a></li>
     <li class="active">Memberlist</li>
     <li class="active">Memberlist</li>
 </ul>
 </ul>
 
 
-  <div class="pull-left" style="padding-bottom: 10px">
+<div class="pull-left" style="padding-bottom: 10px">
     {{ render_pagination(users, url_for('forum.memberlist')) }}
     {{ render_pagination(users, url_for('forum.memberlist')) }}
-  </div><!-- /.col-pull-left -->
-  <div class="pull-right" style="padding-bottom: 10px">
-    <div class="input-group">
-      <input type="text" class="form-control" placeholder="Search">
-      <span class="input-group-btn">
-        <button class="btn btn-default" type="button">Search</button>
-      </span>
-    </div><!-- /input-group -->
-</div><!-- /.row -->
+</div><!-- /.col-pull-left -->
+<div class="pull-right" style="padding-bottom: 10px">
+  <form role="form" method="post">
+      <div class="input-group">
+          {{ search_form.hidden_tag() }}
+          {{ group_field(search_form.search_query) }}
+          <span class="input-group-btn">
+            <button class="btn btn-primary" type="button">Search</button>
+          </span>
+      </div>
+  </form>
+</div>
 
 
 <table class="table table-bordered">
 <table class="table table-bordered">
     <thead>
     <thead>

+ 23 - 0
flaskbb/templates/macros.html

@@ -102,6 +102,29 @@
 {%- endmacro -%}
 {%- endmacro -%}
 
 
 
 
+{%- macro group_field(field, label_text='', label_class='') -%}
+    <div class="form-group {%- if field.errors %} has-error{%- endif %}" style="margin-bottom: 0px;">
+        {{field.label(class="sr-only")}}
+
+        {%- if kwargs['required'] or field.flags.required -%}
+            {% if label_text %}
+                {{field(class='form-control form-grouped', placeholder=label_text, required="required", **kwargs)}}
+            {% else %}
+                {{field(class='form-control form-grouped', placeholder=field.label.text, required="required", **kwargs)}}
+            {% endif %}
+        {%- else -%}
+            {% if label_text %}
+                {{field(class='form-control form-grouped', placeholder=label_text, **kwargs)}}
+            {% else %}
+                {{field(class='form-control form-grouped', placeholder=field.label.text, **kwargs)}}
+            {% endif %}
+        {%- endif -%}
+        {{ field_description(field) }}
+        {{ field_errors(field) }}
+    </div>
+{%- endmacro -%}
+
+
 {%- macro horizontal_field(field, label_text='', label_class='') -%}
 {%- macro horizontal_field(field, label_text='', label_class='') -%}
 <div class="form-group row {%- if field.errors %} has-error{%- endif %}">
 <div class="form-group row {%- if field.errors %} has-error{%- endif %}">
 
 

+ 4 - 0
flaskbb/themes/bootstrap3/static/css/flaskbb.css

@@ -153,6 +153,10 @@ margin-bottom: 0px;
   }
   }
 }
 }
 
 
+.form-grouped {
+    border-radius: 5px 0px 0px 5px !important;
+}
+
 .form-signin {
 .form-signin {
   max-width: 330px;
   max-width: 330px;
   padding: 15px;
   padding: 15px;