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

Merge pull request #82 from sh4nks/highlight-trivialize

Adds highlighting functionality for topics
Peter Justin 10 лет назад
Родитель
Сommit
6fc2c79b08

+ 2 - 2
flaskbb/forum/models.py

@@ -825,11 +825,11 @@ class Forum(db.Model):
                           db.and_(TopicsRead.topic_id == Topic.id,
                                   TopicsRead.user_id == user.id)).\
                 add_entity(TopicsRead).\
-                order_by(Topic.last_updated.desc()).\
+                order_by(Topic.important.desc(), Topic.last_updated.desc()).\
                 paginate(page, per_page, True)
         else:
             topics = Topic.query.filter_by(forum_id=forum_id).\
-                order_by(Topic.last_updated.desc()).\
+                order_by(Topic.important.desc(), Topic.last_updated.desc()).\
                 paginate(page, per_page, True)
 
             topics.items = [(topic, None) for topic in topics.items]

+ 31 - 0
flaskbb/forum/views.py

@@ -229,6 +229,37 @@ def unlock_topic(topic_id, slug=None):
     return redirect(topic.url)
 
 
+@forum.route("/topic/<int:topic_id>/highlight")
+@forum.route("/topic/<int:topic_id>-<slug>/highlight")
+@login_required
+def highlight_topic(topic_id, slug=None):
+    topic = Topic.query.filter_by(id=topic_id).first_or_404()
+
+    if not can_moderate(user=current_user, forum=topic.forum):
+        flash("You do not have the permissions to highlight this topic", "danger")
+        return redirect(topic.url)
+
+    topic.important = True
+    topic.save()
+    return redirect(topic.url)
+
+
+@forum.route("/topic/<int:topic_id>/trivialize")
+@forum.route("/topic/<int:topic_id>-<slug>/trivialize")
+@login_required
+def trivialize_topic(topic_id, slug=None):
+    topic = Topic.query.filter_by(id=topic_id).first_or_404()
+
+    # Unlock is basically the same as lock
+    if not can_moderate(user=current_user, forum=topic.forum):
+        flash("Yo do not have the permissions to trivialize this topic", "danger")
+        return redirect(topic.url)
+
+    topic.important = False
+    topic.save()
+    return redirect(topic.url)
+
+
 @forum.route("/topic/<int:topic_id>/move/<int:forum_id>")
 @forum.route(
     "/topic/<int:topic_id>-<topic_slug>/move/<int:forum_id>-<forum_slug>"

+ 6 - 0
flaskbb/templates/forum/forum.html

@@ -61,6 +61,12 @@
             <td width="4%" style="vertical-align: middle; text-align: center;">
             {% if topic.locked %}
                 <span class="fa fa-lock" style="font-size: 2em"></span>
+            {% elif topic.important %}
+                {% if topic|topic_is_unread(topicread, current_user, forumsread) %}
+                    <span class="fa fa-star" style="font-size: 2em"></span>
+                {% else %}
+                    <span class="fa fa-star-o" style="font-size: 2em"></span>
+                {% endif %}
             {% else %}
                 {% if topic|topic_is_unread(topicread, current_user, forumsread) %}
                     <span class="fa fa-comment" style="font-size: 2em"></span>

+ 20 - 11
flaskbb/templates/forum/topic_controls.html

@@ -10,27 +10,36 @@
         </a>
         {% endif %}
         {% if current_user|can_moderate(topic.forum) %}
-        {% if not topic.locked %}
-        <a href="{{ url_for('forum.lock_topic', topic_id=topic.id, slug=topic.slug) }}" class="btn btn-warning">
-            <span class="fa fa-lock"></span> Lock Topic
-        </a>
-        {% else %}
-        <a href="{{ url_for('forum.unlock_topic', topic_id=topic.id, slug=topic.slug) }}" class="btn btn-warning">
-            <span class="fa fa-unlock"></span> Unlock Topic
-        </a>
-        {% endif %}
+            {% if not topic.locked %}
+            <a href="{{ url_for('forum.lock_topic', topic_id=topic.id, slug=topic.slug) }}" class="btn btn-warning">
+                <span class="fa fa-lock"></span> Lock Topic
+            </a>
+            {% else %}
+            <a href="{{ url_for('forum.unlock_topic', topic_id=topic.id, slug=topic.slug) }}" class="btn btn-warning">
+                <span class="fa fa-unlock"></span> Unlock Topic
+            </a>
+            {% endif %}
+            {% if not topic.important %}
+            <a href="{{ url_for('forum.highlight_topic', topic_id=topic.id, slug=topic.slug) }}" class="btn btn-success">
+                    <span class="fa fa-star"></span> Highlight Topic
+            </a>
+            {% else %}
+            <a href="{{ url_for('forum.trivialize_topic', topic_id=topic.id, slug=topic.slug) }}" class="btn btn-success">
+                <span class="fa fa-star-o"></span> Trivialize Topic
+            </a>
+            {% endif %}
         {% endif %}
     </div>
 
     {% if current_user.is_authenticated() %}
     <div class="btn btn-group">
         {% if current_user.is_tracking_topic(topic) %}
-        <a href="{{ url_for('forum.untrack_topic', topic_id=topic.id, slug=topic.slug) }}" class="btn btn-default"><span class="fa fa-star">
+        <a href="{{ url_for('forum.untrack_topic', topic_id=topic.id, slug=topic.slug) }}" class="btn btn-default"><span class="fa fa-tag">
             </span> Untrack Topic
         </a>
         {% else %}
         <a href="{{ url_for('forum.track_topic', topic_id=topic.id, slug=topic.slug) }}" class="btn btn-default">
-            <span class="fa fa-star"></span> Track Topic
+            <span class="fa fa-tag"></span> Track Topic
         </a>
         {% endif %}