Edit post works now.
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
import json
|
||||
import logging
|
||||
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.views.decorators.http import require_POST
|
||||
from django.http import HttpResponse, Http404
|
||||
@@ -15,7 +18,6 @@ from operator import methodcaller
|
||||
from django_comment_client.permissions import check_permissions_by_view
|
||||
from django_comment_client.utils import merge_dict, extract, strip_none, strip_blank, get_courseware_context
|
||||
|
||||
import json
|
||||
import django_comment_client.utils as utils
|
||||
import comment_client as cc
|
||||
import xml.sax.saxutils as saxutils
|
||||
@@ -24,6 +26,7 @@ THREADS_PER_PAGE = 200
|
||||
INLINE_THREADS_PER_PAGE = 5
|
||||
PAGES_NEARBY_DELTA = 2
|
||||
|
||||
log = logging.getLogger("edx.discussions")
|
||||
|
||||
def _general_discussion_id(course_id):
|
||||
return course_id.replace('/', '_').replace('.', '_')
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
class @DiscussionThreadEditView extends Backbone.View
|
||||
|
||||
events:
|
||||
"click .post-update": "update"
|
||||
"click .post-cancel": "cancel_edit"
|
||||
|
||||
template: _.template($("#thread-edit-template").html())
|
||||
|
||||
$: (selector) ->
|
||||
@$el.find(selector)
|
||||
|
||||
initialize: ->
|
||||
super()
|
||||
|
||||
render: ->
|
||||
@$el.html(@template(@model.toJSON()))
|
||||
@delegateEvents()
|
||||
DiscussionUtil.makeWmdEditor @$el, $.proxy(@$, @), "edit-post-body"
|
||||
@$(".edit-post-tags").tagsInput DiscussionUtil.tagsInputOptions()
|
||||
@
|
||||
|
||||
update: (event) ->
|
||||
@trigger "thread:update", event
|
||||
|
||||
cancel_edit: (event) ->
|
||||
@trigger "thread:cancel_edit", event
|
||||
@@ -57,7 +57,6 @@ class @DiscussionThreadShowView extends DiscussionContentView
|
||||
toggleFollowing: (event) ->
|
||||
$elem = $(event.target)
|
||||
url = null
|
||||
console.log "follow"
|
||||
if not @model.get('subscribed')
|
||||
@model.follow()
|
||||
url = @model.urlFor("follow")
|
||||
@@ -113,12 +112,11 @@ class @DiscussionThreadShowView extends DiscussionContentView
|
||||
comment.updateInfo(data.annotated_content_info)
|
||||
comment.set(data.content)
|
||||
|
||||
edit: ->
|
||||
@trigger "thread:edit"
|
||||
window.showView = @
|
||||
edit: (event) ->
|
||||
@trigger "thread:edit", event
|
||||
|
||||
delete: (event) ->
|
||||
@trigger "thread:delete"
|
||||
@trigger "thread:delete", event
|
||||
|
||||
toggleClosed: (event) ->
|
||||
$elem = $(event.target)
|
||||
|
||||
@@ -11,18 +11,13 @@ if Backbone?
|
||||
|
||||
initialize: ->
|
||||
super()
|
||||
@showView = new DiscussionThreadShowView(model: @model)
|
||||
@showView.bind "thread:delete", @delete
|
||||
@showView.bind "thread:edit", @edit
|
||||
@createShowView()
|
||||
|
||||
render: ->
|
||||
@$el.html(@template(@model.toJSON()))
|
||||
@delegateEvents()
|
||||
|
||||
@showView.setElement(@$('.thread-content-wrapper'))
|
||||
@showView.render()
|
||||
@showView.delegateEvents()
|
||||
|
||||
@renderShowView()
|
||||
@renderAttrs()
|
||||
@$("span.timeago").timeago()
|
||||
@makeWmdEditor "reply-body"
|
||||
@@ -76,15 +71,94 @@ if Backbone?
|
||||
comment.updateInfo(data.annotated_content_info)
|
||||
comment.set(data.content)
|
||||
|
||||
edit: ->
|
||||
edit: (event) =>
|
||||
@createEditView()
|
||||
@renderEditView()
|
||||
|
||||
delete: (event) ->
|
||||
update: (event) =>
|
||||
|
||||
newTitle = @editView.$(".edit-post-title").val()
|
||||
newTags = @editView.$(".edit-post-tags").val()
|
||||
newBody = @editView.$(".edit-post-body textarea").val()
|
||||
|
||||
url = DiscussionUtil.urlFor('update_thread', @model.id)
|
||||
|
||||
DiscussionUtil.safeAjax
|
||||
$elem: $(event.target)
|
||||
$loading: $(event.target) if event
|
||||
url: url
|
||||
type: "POST"
|
||||
dataType: 'json'
|
||||
async: false # TODO when the rest of the stuff below is made to work properly..
|
||||
data:
|
||||
title: newTitle
|
||||
body: newBody
|
||||
tags: newTags
|
||||
error: DiscussionUtil.formErrorHandler(@$(".edit-post-form-errors"))
|
||||
success: (response, textStatus) =>
|
||||
|
||||
# TODO: Move this out of the callback, this makes it feel sluggish
|
||||
|
||||
@editView.$(".edit-post-title").val("").attr("prev-text", "")
|
||||
@editView.$(".edit-post-body textarea").val("").attr("prev-text", "")
|
||||
@editView.$(".edit-post-tags").val("")
|
||||
@editView.$(".edit-post-tags").importTags("")
|
||||
@editView.$(".wmd-preview p").html("")
|
||||
|
||||
@model.set
|
||||
title: newTitle
|
||||
body: newBody
|
||||
tags: newTags
|
||||
|
||||
@createShowView()
|
||||
@renderShowView()
|
||||
|
||||
createEditView: () ->
|
||||
|
||||
if @showView?
|
||||
@showView.undelegateEvents()
|
||||
@showView.$el.empty()
|
||||
@showView = null
|
||||
|
||||
@editView = new DiscussionThreadEditView(model: @model)
|
||||
@editView.bind "thread:update", @update
|
||||
@editView.bind "thread:cancel_edit", @cancelEdit
|
||||
|
||||
renderEditView: () ->
|
||||
@editView.setElement(@$('.thread-content-wrapper'))
|
||||
@editView.render()
|
||||
@editView.delegateEvents()
|
||||
|
||||
createShowView: () ->
|
||||
|
||||
if @editView?
|
||||
@editView.undelegateEvents()
|
||||
@editView.$el.empty()
|
||||
@editView = null
|
||||
|
||||
@showView = new DiscussionThreadShowView(model: @model)
|
||||
@showView.bind "thread:delete", @delete
|
||||
@showView.bind "thread:edit", @edit
|
||||
|
||||
renderShowView: () ->
|
||||
@showView.setElement(@$('.thread-content-wrapper'))
|
||||
@showView.render()
|
||||
@showView.delegateEvents()
|
||||
|
||||
cancelEdit: (event) =>
|
||||
@createShowView()
|
||||
@renderShowView()
|
||||
|
||||
|
||||
delete: (event) =>
|
||||
url = @model.urlFor('delete')
|
||||
if not @model.can('can_delete')
|
||||
return
|
||||
if not confirm "Are you sure to delete thread \"#{@model.get('title')}\"?"
|
||||
return
|
||||
@model.remove()
|
||||
@showView.undelegateEvents()
|
||||
@undelegateEvents()
|
||||
@$el.empty()
|
||||
$elem = $(event.target)
|
||||
DiscussionUtil.safeAjax
|
||||
|
||||
@@ -270,6 +270,46 @@ body.discussion {
|
||||
}
|
||||
}
|
||||
|
||||
.edit-post-form {
|
||||
width: 100%;
|
||||
margin-bottom: 20px;
|
||||
@include clearfix;
|
||||
.post-cancel {
|
||||
@include white-button;
|
||||
border-color: #444;
|
||||
float: left;
|
||||
margin: 10px 0 0 15px;
|
||||
}
|
||||
|
||||
.post-update {
|
||||
|
||||
@include blue-button;
|
||||
float: left;
|
||||
height: 37px;
|
||||
margin-top: 10px;
|
||||
border-color: #333;
|
||||
padding-bottom: 2px;
|
||||
|
||||
&:hover {
|
||||
border-color: #222;
|
||||
}
|
||||
}
|
||||
|
||||
.edit-post-title, .edit-post-tags {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #333;
|
||||
font-size: 16px;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
color: #333;
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3) inset;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.new-post-form {
|
||||
width: 100%;
|
||||
margin-bottom: 20px;
|
||||
@@ -369,14 +409,6 @@ body.discussion {
|
||||
&:hover {
|
||||
border-color: #222;
|
||||
}
|
||||
|
||||
.author-moderator:after{
|
||||
content: " (moderator)"
|
||||
}
|
||||
|
||||
.author-administrator:after{
|
||||
content: " (instructor)"
|
||||
}
|
||||
}
|
||||
|
||||
.new-post-cancel {
|
||||
|
||||
@@ -50,6 +50,26 @@
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/template" id="thread-edit-template">
|
||||
<div class="discussion-post edit-post-form">
|
||||
<h1>Editing post</h1>
|
||||
<ul class="edit-post-form-errors"></ul>
|
||||
<div class="form-row">
|
||||
<input type="text" class="edit-post-title" name="title" value=${"<%-title %>"} placeholder="Title">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="edit-post-body" name="body">
|
||||
${"<%- body %>"}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<input type="text" class="edit-post-tags" name="tags" placeholder="Tags" value=${"<%- tags %>"}>
|
||||
</div>
|
||||
<input type="submit" class="post-update" value="Update post">
|
||||
<a href="#" class="post-cancel">Cancel</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/template" id="thread-response-template">
|
||||
<header class="response-local">
|
||||
<a href="javascript:void(0)" class="vote-btn" data-tooltip="vote"><span class="plus-icon"></span><span class="votes-count-number">${"<%- votes['up_count'] %>"}</span></a>
|
||||
|
||||
Reference in New Issue
Block a user