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

Merge pull request #59 from caspervg/master

Adds preview functionality to new posts and topics
sh4nks 10 лет назад
Родитель
Сommit
8a7bb9b7e9

+ 24 - 12
flaskbb/forum/views.py

@@ -159,10 +159,13 @@ def new_topic(forum_id, slug=None):
 
     form = NewTopicForm()
     if form.validate_on_submit():
-        topic = form.save(current_user, forum)
+        if request.form['button'] == 'preview':
+            return render_template("forum/new_topic.html", forum=forum, form=form, preview=form.content.data)
+        else:
+            topic = form.save(current_user, forum)
 
-        # redirect to the new topic
-        return redirect(url_for('forum.view_topic', topic_id=topic.id))
+            # redirect to the new topic
+            return redirect(url_for('forum.view_topic', topic_id=topic.id))
     return render_template("forum/new_topic.html", forum=forum, form=form)
 
 
@@ -282,8 +285,11 @@ def new_post(topic_id, slug=None):
 
     form = ReplyForm()
     if form.validate_on_submit():
-        post = form.save(current_user, topic)
-        return view_post(post.id)
+        if request.form['button'] == 'preview':
+            return render_template("forum/new_post.html", topic=topic, form=form, preview=form.content.data)
+        else:
+            post = form.save(current_user, topic)
+            return view_post(post.id)
 
     return render_template("forum/new_post.html", topic=topic, form=form)
 
@@ -309,8 +315,11 @@ def reply_post(topic_id, post_id):
 
     form = ReplyForm()
     if form.validate_on_submit():
-        form.save(current_user, topic)
-        return redirect(post.topic.url)
+        if request.form['button'] == 'preview':
+            return render_template("forum/new_post.html", topic=topic, form=form, preview=form.content.data)
+        else:
+            form.save(current_user, topic)
+            return redirect(post.topic.url)
     else:
         form.content.data = '[quote]{}[/quote]'.format(post.content)
 
@@ -338,11 +347,14 @@ def edit_post(post_id):
 
     form = ReplyForm()
     if form.validate_on_submit():
-        form.populate_obj(post)
-        post.date_modified = datetime.datetime.utcnow()
-        post.modified_by = current_user.username
-        post.save()
-        return redirect(post.topic.url)
+        if request.form['button'] == 'preview':
+            return render_template("forum/new_post.html", topic=post.topic, form=form, preview=form.content.data)
+        else:
+            form.populate_obj(post)
+            post.date_modified = datetime.datetime.utcnow()
+            post.modified_by = current_user.username
+            post.save()
+            return redirect(post.topic.url)
     else:
         form.content.data = post.content
 

+ 15 - 1
flaskbb/templates/forum/new_post.html

@@ -16,9 +16,23 @@
     {{ form.hidden_tag() }}
     <h3>New Post</h3>
 
+    {% if preview %}
+    <div class="form-group">
+        <div class="col-sm-12">
+            <label>Preview</label>
+            <div class="form-control preview-body">
+                {% autoescape false %}
+                {{ preview|markup }}
+                {% endautoescape %}
+            </div>
+        </div>
+    </div>
+    {% endif %}
+
     {{ render_field(form.content, div_class="col-sm-12", rows=12) }}
 
-    <button type="submit" class="btn btn-success">Reply!</button>
+    <button type="submit" class="btn btn-success" name="button" value="reply">Reply</button>
+    <button type="submit" class="btn btn-success" name="button" value="preview">Preview</button>
 </form>
 
 {% endblock %}

+ 15 - 1
flaskbb/templates/forum/new_topic.html

@@ -15,10 +15,24 @@
     {{ form.hidden_tag() }}
     <h3>New Topic</h3>
 
+    {% if preview %}
+    <div class="form-group">
+        <div class="col-sm-12">
+            <label>Preview</label>
+            <div class="form-control preview-body">
+                {% autoescape false %}
+                {{ preview|markup }}
+                {% endautoescape %}
+            </div>
+        </div>
+    </div>
+    {% endif %}
+
     {{ render_field(form.title, div_class="col-sm-12") }}
     {{ render_field(form.content, div_class="col-sm-12", rows=12) }}
 
-    <button type="submit" class="btn btn-success">Reply!</button>
+    <button type="submit" class="btn btn-success" name="button" value="reply">Reply</button>
+    <button type="submit" class="btn btn-success" name="button" value="preview">Preview</button>
 </form>
 
 {% endblock %}

+ 5 - 0
flaskbb/themes/bootstrap2/static/css/flaskbb.css

@@ -217,3 +217,8 @@ margin-bottom: 0px;
 .blog-content h5 {
     font-weight:500;
 }
+
+/* Reply/Topic previews */
+.preview-body {
+    height: auto;
+}

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

@@ -221,3 +221,8 @@ margin-bottom: 0px;
 .blog-content h5 {
     font-weight:500;
 }
+
+/* Reply/Topic previews */
+.preview-body {
+    height: auto;
+}