Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
8506cbcd
Commit
8506cbcd
authored
Sep 14, 2012
by
Arjun Singh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Response editing
parent
9197efc3
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
425 additions
and
230 deletions
+425
-230
lms/static/coffee/src/discussion/views/discussion_thread_edit_view.coffee
+20
-19
lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee
+139
-137
lms/static/coffee/src/discussion/views/response_comment_show_view.coffee
+35
-0
lms/static/coffee/src/discussion/views/thread_response_edit_view.coffee
+25
-0
lms/static/coffee/src/discussion/views/thread_response_show_view.coffee
+91
-0
lms/static/coffee/src/discussion/views/thread_response_view.coffee
+92
-67
lms/templates/discussion/_underscore_templates.html
+23
-7
No files found.
lms/static/coffee/src/discussion/views/discussion_thread_edit_view.coffee
View file @
8506cbcd
class
@
DiscussionThreadEditView
extends
Backbone
.
View
if
Backbone
?
class
@
DiscussionThreadEditView
extends
Backbone
.
View
events
:
events
:
"click .post-update"
:
"update"
"click .post-update"
:
"update"
"click .post-cancel"
:
"cancel_edit"
"click .post-cancel"
:
"cancel_edit"
$
:
(
selector
)
->
$
:
(
selector
)
->
@
$el
.
find
(
selector
)
@
$el
.
find
(
selector
)
initialize
:
->
initialize
:
->
super
()
super
()
render
:
->
render
:
->
@
template
=
_
.
template
(
$
(
"#thread-edit-template"
).
html
())
@
template
=
_
.
template
(
$
(
"#thread-edit-template"
).
html
())
@
$el
.
html
(
@
template
(
@
model
.
toJSON
()))
@
$el
.
html
(
@
template
(
@
model
.
toJSON
()))
@
delegateEvents
()
@
delegateEvents
()
DiscussionUtil
.
makeWmdEditor
@
$el
,
$
.
proxy
(
@
$
,
@
),
"edit-post-body"
DiscussionUtil
.
makeWmdEditor
@
$el
,
$
.
proxy
(
@
$
,
@
),
"edit-post-body"
@
$
(
".edit-post-tags"
).
tagsInput
DiscussionUtil
.
tagsInputOptions
()
@
$
(
".edit-post-tags"
).
tagsInput
DiscussionUtil
.
tagsInputOptions
()
@
@
update
:
(
event
)
->
update
:
(
event
)
->
@
trigger
"thread:update"
,
event
@
trigger
"thread:update"
,
event
cancel_edit
:
(
event
)
->
cancel_edit
:
(
event
)
->
@
trigger
"thread:cancel_edit"
,
event
@
trigger
"thread:cancel_edit"
,
event
lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee
View file @
8506cbcd
class
@
DiscussionThreadShowView
extends
DiscussionContentView
if
Backbone
?
class
@
DiscussionThreadShowView
extends
DiscussionContentView
events
:
"click .discussion-vote"
:
"toggleVote"
events
:
"click .action-follow"
:
"toggleFollowing"
"click .discussion-vote"
:
"toggleVote"
"click .action-edit"
:
"edit"
"click .action-follow"
:
"toggleFollowing"
"click .action-delete"
:
"delete"
"click .action-edit"
:
"edit"
"click .action-openclose"
:
"toggleClosed"
"click .action-delete"
:
"delete"
"click .action-openclose"
:
"toggleClosed"
$
:
(
selector
)
->
@
$el
.
find
(
selector
)
$
:
(
selector
)
->
@
$el
.
find
(
selector
)
initialize
:
->
super
()
initialize
:
->
@
model
.
on
"change"
,
@
updateModelDetails
super
()
@
model
.
on
"change"
,
@
updateModelDetails
renderTemplate
:
->
@
template
=
_
.
template
(
$
(
"#thread-show-template"
).
html
())
renderTemplate
:
->
@
template
(
@
model
.
toJSON
())
@
template
=
_
.
template
(
$
(
"#thread-show-template"
).
html
())
render
:
->
@
template
(
@
model
.
toJSON
())
@
$el
.
html
(
@
renderTemplate
())
@
delegateEvents
()
render
:
->
@
renderDogear
()
@
$el
.
html
(
@
renderTemplate
())
@
renderVoted
()
@
delegateEvents
()
@
renderAttrs
()
@
renderDogear
()
@
$
(
"span.timeago"
).
timeago
()
@
renderVoted
()
@
convertMath
()
@
renderAttrs
()
@
highlight
@
$
(
".post-body"
)
@
$
(
"span.timeago"
).
timeago
()
@
highlight
@
$
(
"h1,h3"
)
@
convertMath
()
@
@
highlight
@
$
(
".post-body"
)
@
highlight
@
$
(
"h1,h3"
)
renderDogear
:
->
@
if
window
.
user
.
following
(
@
model
)
@
$
(
".dogear"
).
addClass
(
"is-followed"
)
renderDogear
:
->
if
window
.
user
.
following
(
@
model
)
renderVoted
:
=>
@
$
(
".dogear"
).
addClass
(
"is-followed"
)
if
window
.
user
.
voted
(
@
model
)
@
$
(
"[data-role=discussion-vote]"
).
addClass
(
"is-cast"
)
renderVoted
:
=>
else
if
window
.
user
.
voted
(
@
model
)
@
$
(
"[data-role=discussion-vote]"
).
removeClass
(
"is-cast"
)
@
$
(
"[data-role=discussion-vote]"
).
addClass
(
"is-cast"
)
else
updateModelDetails
:
=>
@
$
(
"[data-role=discussion-vote]"
).
removeClass
(
"is-cast"
)
@
renderVoted
()
@
$
(
"[data-role=discussion-vote] .votes-count-number"
).
html
(
@
model
.
get
(
"votes"
)[
"up_count"
])
updateModelDetails
:
=>
@
renderVoted
()
convertMath
:
->
@
$
(
"[data-role=discussion-vote] .votes-count-number"
).
html
(
@
model
.
get
(
"votes"
)[
"up_count"
])
element
=
@
$
(
".post-body"
)
element
.
html
DiscussionUtil
.
postMathJaxProcessor
DiscussionUtil
.
markdownWithHighlight
element
.
html
()
convertMath
:
->
MathJax
.
Hub
.
Queue
[
"Typeset"
,
MathJax
.
Hub
,
element
[
0
]]
element
=
@
$
(
".post-body"
)
element
.
html
DiscussionUtil
.
postMathJaxProcessor
DiscussionUtil
.
markdownWithHighlight
element
.
html
()
toggleVote
:
(
event
)
->
MathJax
.
Hub
.
Queue
[
"Typeset"
,
MathJax
.
Hub
,
element
[
0
]]
event
.
preventDefault
()
if
window
.
user
.
voted
(
@
model
)
toggleVote
:
(
event
)
->
@
unvote
()
event
.
preventDefault
()
else
if
window
.
user
.
voted
(
@
model
)
@
vote
()
@
unvote
()
else
toggleFollowing
:
(
event
)
->
@
vote
()
$elem
=
$
(
event
.
target
)
url
=
null
toggleFollowing
:
(
event
)
->
if
not
@
model
.
get
(
'subscribed'
)
$elem
=
$
(
event
.
target
)
@
model
.
follow
()
url
=
null
url
=
@
model
.
urlFor
(
"follow"
)
if
not
@
model
.
get
(
'subscribed'
)
else
@
model
.
follow
()
@
model
.
unfollow
()
url
=
@
model
.
urlFor
(
"follow"
)
url
=
@
model
.
urlFor
(
"unfollow"
)
else
DiscussionUtil
.
safeAjax
@
model
.
unfollow
()
$elem
:
$elem
url
=
@
model
.
urlFor
(
"unfollow"
)
url
:
url
DiscussionUtil
.
safeAjax
type
:
"POST"
$elem
:
$elem
url
:
url
vote
:
->
type
:
"POST"
window
.
user
.
vote
(
@
model
)
url
=
@
model
.
urlFor
(
"upvote"
)
vote
:
->
DiscussionUtil
.
safeAjax
window
.
user
.
vote
(
@
model
)
$elem
:
@
$
(
".discussion-vote"
)
url
=
@
model
.
urlFor
(
"upvote"
)
url
:
url
DiscussionUtil
.
safeAjax
type
:
"POST"
$elem
:
@
$
(
".discussion-vote"
)
success
:
(
response
,
textStatus
)
=>
url
:
url
if
textStatus
==
'success'
type
:
"POST"
@
model
.
set
(
response
,
{
silent
:
true
})
success
:
(
response
,
textStatus
)
=>
if
textStatus
==
'success'
unvote
:
->
@
model
.
set
(
response
,
{
silent
:
true
})
window
.
user
.
unvote
(
@
model
)
url
=
@
model
.
urlFor
(
"unvote"
)
unvote
:
->
DiscussionUtil
.
safeAjax
window
.
user
.
unvote
(
@
model
)
$elem
:
@
$
(
".discussion-vote"
)
url
=
@
model
.
urlFor
(
"unvote"
)
url
:
url
DiscussionUtil
.
safeAjax
type
:
"POST"
$elem
:
@
$
(
".discussion-vote"
)
success
:
(
response
,
textStatus
)
=>
url
:
url
if
textStatus
==
'success'
type
:
"POST"
@
model
.
set
(
response
,
{
silent
:
true
})
success
:
(
response
,
textStatus
)
=>
if
textStatus
==
'success'
edit
:
(
event
)
->
@
model
.
set
(
response
,
{
silent
:
true
})
@
trigger
"thread:edit"
,
event
edit
:
(
event
)
->
delete
:
(
event
)
->
@
trigger
"thread:edit"
,
event
@
trigger
"thread:delete"
,
event
delete
:
(
event
)
->
toggleClosed
:
(
event
)
->
@
trigger
"thread:delete"
,
event
$elem
=
$
(
event
.
target
)
url
=
@
model
.
urlFor
(
'close'
)
toggleClosed
:
(
event
)
->
closed
=
@
model
.
get
(
'closed'
)
$elem
=
$
(
event
.
target
)
data
=
{
closed
:
not
closed
}
url
=
@
model
.
urlFor
(
'close'
)
DiscussionUtil
.
safeAjax
closed
=
@
model
.
get
(
'closed'
)
$elem
:
$elem
data
=
{
closed
:
not
closed
}
url
:
url
DiscussionUtil
.
safeAjax
data
:
data
$elem
:
$elem
type
:
"POST"
url
:
url
success
:
(
response
,
textStatus
)
=>
data
:
data
@
model
.
set
(
'closed'
,
not
closed
)
type
:
"POST"
@
model
.
set
(
'ability'
,
response
.
ability
)
success
:
(
response
,
textStatus
)
=>
@
model
.
set
(
'closed'
,
not
closed
)
toggleEndorse
:
(
event
)
->
@
model
.
set
(
'ability'
,
response
.
ability
)
$elem
=
$
(
event
.
target
)
url
=
@
model
.
urlFor
(
'endorse'
)
toggleEndorse
:
(
event
)
->
endorsed
=
@
model
.
get
(
'endorsed'
)
$elem
=
$
(
event
.
target
)
data
=
{
endorsed
:
not
endorsed
}
url
=
@
model
.
urlFor
(
'endorse'
)
DiscussionUtil
.
safeAjax
endorsed
=
@
model
.
get
(
'endorsed'
)
$elem
:
$elem
data
=
{
endorsed
:
not
endorsed
}
url
:
url
DiscussionUtil
.
safeAjax
data
:
data
$elem
:
$elem
type
:
"POST"
url
:
url
success
:
(
response
,
textStatus
)
=>
data
:
data
@
model
.
set
(
'endorsed'
,
not
endorsed
)
type
:
"POST"
success
:
(
response
,
textStatus
)
=>
highlight
:
(
el
)
->
@
model
.
set
(
'endorsed'
,
not
endorsed
)
if
el
.
html
()
el
.
html
(
el
.
html
().
replace
(
/<mark>/g
,
"<mark>"
).
replace
(
/<\/mark>/g
,
"</mark>"
))
highlight
:
(
el
)
->
if
el
.
html
()
class
@
DiscussionThreadInlineShowView
extends
DiscussionThreadShowView
el
.
html
(
el
.
html
().
replace
(
/<mark>/g
,
"<mark>"
).
replace
(
/<\/mark>/g
,
"</mark>"
))
renderTemplate
:
->
@
template
=
DiscussionUtil
.
getTemplate
(
'_inline_thread_show'
)
class
@
DiscussionThreadInlineShowView
extends
DiscussionThreadShowView
params
=
@
model
.
toJSON
()
renderTemplate
:
->
if
not
@
model
.
get
(
'anonymous'
)
@
template
=
DiscussionUtil
.
getTemplate
(
'_inline_thread_show'
)
params
=
$
.
extend
(
params
,
user
:
{
username
:
@
model
.
username
,
user_url
:
@
model
.
user_url
})
params
=
@
model
.
toJSON
()
Mustache
.
render
(
@
template
,
params
)
if
not
@
model
.
get
(
'anonymous'
)
params
=
$
.
extend
(
params
,
user
:
{
username
:
@
model
.
username
,
user_url
:
@
model
.
user_url
})
Mustache
.
render
(
@
template
,
params
)
lms/static/coffee/src/discussion/views/response_comment_show_view.coffee
0 → 100644
View file @
8506cbcd
if
Backbone
?
class
@
ResponseCommentShowView
extends
DiscussionContentView
tagName
:
"li"
render
:
->
@
template
=
_
.
template
(
$
(
"#response-comment-show-template"
).
html
())
params
=
@
model
.
toJSON
()
# Only things that are nested under comments get parents
params
[
'deep'
]
=
@
model
.
hasOwnProperty
(
'parent'
)
if
@
model
.
hasOwnProperty
(
'parent'
)
params
[
'parent_id'
]
=
@
model
.
parent
.
id
params
[
'parent_username'
]
=
@
model
.
parent
.
get
(
'username'
)
@
$el
.
html
(
@
template
(
params
))
@
initLocal
()
@
delegateEvents
()
@
renderAttrs
()
@
markAsStaff
()
@
$el
.
find
(
".timeago"
).
timeago
()
@
convertMath
()
@
convertMath
:
->
body
=
@
$el
.
find
(
".response-body"
)
body
.
html
DiscussionUtil
.
postMathJaxProcessor
DiscussionUtil
.
markdownWithHighlight
body
.
html
()
# This removes paragraphs so that comments are more compact
body
.
children
(
"p"
).
each
(
index
,
elem
)
->
$
(
elem
).
replaceWith
(
$
(
elem
).
html
())
MathJax
.
Hub
.
Queue
[
"Typeset"
,
MathJax
.
Hub
,
body
[
0
]]
markAsStaff
:
->
if
DiscussionUtil
.
isStaff
(
@
model
.
get
(
"user_id"
))
@
$el
.
find
(
"a.profile-link"
).
after
(
'<span class="staff-label">staff</span>'
)
lms/static/coffee/src/discussion/views/thread_response_edit_view.coffee
0 → 100644
View file @
8506cbcd
if
Backbone
?
class
@
ThreadResponseEditView
extends
Backbone
.
View
events
:
"click .post-update"
:
"update"
"click .post-cancel"
:
"cancel_edit"
$
:
(
selector
)
->
@
$el
.
find
(
selector
)
initialize
:
->
super
()
render
:
->
@
template
=
_
.
template
(
$
(
"#thread-response-edit-template"
).
html
())
@
$el
.
html
(
@
template
(
@
model
.
toJSON
()))
@
delegateEvents
()
DiscussionUtil
.
makeWmdEditor
@
$el
,
$
.
proxy
(
@
$
,
@
),
"edit-post-body"
@
update
:
(
event
)
->
@
trigger
"response:update"
,
event
cancel_edit
:
(
event
)
->
@
trigger
"response:cancel_edit"
,
event
lms/static/coffee/src/discussion/views/thread_response_show_view.coffee
0 → 100644
View file @
8506cbcd
if
Backbone
?
class
@
ThreadResponseShowView
extends
DiscussionContentView
events
:
"click .vote-btn"
:
"toggleVote"
"click .action-endorse"
:
"toggleEndorse"
"click .action-delete"
:
"delete"
"click .action-edit"
:
"edit"
$
:
(
selector
)
->
@
$el
.
find
(
selector
)
initialize
:
->
super
()
@
model
.
on
"change"
,
@
updateModelDetails
renderTemplate
:
->
@
template
=
_
.
template
(
$
(
"#thread-response-show-template"
).
html
())
@
template
(
@
model
.
toJSON
())
render
:
->
@
$el
.
html
(
@
renderTemplate
())
@
delegateEvents
()
if
window
.
user
.
voted
(
@
model
)
@
$
(
".vote-btn"
).
addClass
(
"is-cast"
)
@
renderAttrs
()
@
$el
.
find
(
".posted-details"
).
timeago
()
@
convertMath
()
@
markAsStaff
()
@
convertMath
:
->
element
=
@
$
(
".response-body"
)
element
.
html
DiscussionUtil
.
postMathJaxProcessor
DiscussionUtil
.
markdownWithHighlight
element
.
html
()
MathJax
.
Hub
.
Queue
[
"Typeset"
,
MathJax
.
Hub
,
element
[
0
]]
markAsStaff
:
->
if
DiscussionUtil
.
isStaff
(
@
model
.
get
(
"user_id"
))
@
$el
.
addClass
(
"staff"
)
@
$el
.
prepend
(
'<div class="staff-banner">staff</div>'
)
toggleVote
:
(
event
)
->
event
.
preventDefault
()
@
$
(
".vote-btn"
).
toggleClass
(
"is-cast"
)
if
@
$
(
".vote-btn"
).
hasClass
(
"is-cast"
)
@
vote
()
else
@
unvote
()
vote
:
->
url
=
@
model
.
urlFor
(
"upvote"
)
@
$
(
".votes-count-number"
).
html
(
parseInt
(
@
$
(
".votes-count-number"
).
html
())
+
1
)
DiscussionUtil
.
safeAjax
$elem
:
@
$
(
".discussion-vote"
)
url
:
url
type
:
"POST"
success
:
(
response
,
textStatus
)
=>
if
textStatus
==
'success'
@
model
.
set
(
response
)
unvote
:
->
url
=
@
model
.
urlFor
(
"unvote"
)
@
$
(
".votes-count-number"
).
html
(
parseInt
(
@
$
(
".votes-count-number"
).
html
())
-
1
)
DiscussionUtil
.
safeAjax
$elem
:
@
$
(
".discussion-vote"
)
url
:
url
type
:
"POST"
success
:
(
response
,
textStatus
)
=>
if
textStatus
==
'success'
@
model
.
set
(
response
)
edit
:
(
event
)
->
@
trigger
"response:edit"
,
event
delete
:
(
event
)
->
@
trigger
"response:delete"
,
event
toggleEndorse
:
(
event
)
->
event
.
preventDefault
()
if
not
@
model
.
can
(
'can_endorse'
)
return
$elem
=
$
(
event
.
target
)
url
=
@
model
.
urlFor
(
'endorse'
)
endorsed
=
@
model
.
get
(
'endorsed'
)
data
=
{
endorsed
:
not
endorsed
}
@
model
.
set
(
'endorsed'
,
not
endorsed
)
@
trigger
"comment:endorse"
,
not
endorsed
DiscussionUtil
.
safeAjax
$elem
:
$elem
url
:
url
data
:
data
type
:
"POST"
lms/static/coffee/src/discussion/views/thread_response_view.coffee
View file @
8506cbcd
...
@@ -3,35 +3,28 @@ if Backbone?
...
@@ -3,35 +3,28 @@ if Backbone?
tagName
:
"li"
tagName
:
"li"
events
:
events
:
"click .vote-btn"
:
"toggleVote"
"submit .comment-form"
:
"submitComment"
"submit .comment-form"
:
"submitComment"
"click .action-endorse"
:
"toggleEndorse"
"click .action-delete"
:
"delete"
render
:
->
$
:
(
selector
)
->
@
$el
.
find
(
selector
)
initialize
:
->
@
createShowView
()
renderTemplate
:
->
@
template
=
_
.
template
(
$
(
"#thread-response-template"
).
html
())
@
template
=
_
.
template
(
$
(
"#thread-response-template"
).
html
())
@
$el
.
html
(
@
template
(
@
model
.
toJSON
()))
@
template
(
@
model
.
toJSON
())
@
initLocal
()
render
:
->
@
$el
.
html
(
@
renderTemplate
())
@
delegateEvents
()
@
delegateEvents
()
if
window
.
user
.
voted
(
@
model
)
@
$
(
".vote-btn"
).
addClass
(
"is-cast"
)
@
renderShowView
(
)
@
renderAttrs
()
@
renderAttrs
()
@
$el
.
find
(
".posted-details"
).
timeago
()
@
convertMath
()
@
markAsStaff
()
@
renderComments
()
@
renderComments
()
@
@
convertMath
:
->
element
=
@
$
(
".response-body"
)
element
.
html
DiscussionUtil
.
postMathJaxProcessor
DiscussionUtil
.
markdownWithHighlight
element
.
html
()
MathJax
.
Hub
.
Queue
[
"Typeset"
,
MathJax
.
Hub
,
element
[
0
]]
markAsStaff
:
->
if
DiscussionUtil
.
isStaff
(
@
model
.
get
(
"user_id"
))
@
$el
.
addClass
(
"staff"
)
@
$el
.
prepend
(
'<div class="staff-banner">staff</div>'
)
renderComments
:
->
renderComments
:
->
comments
=
new
Comments
()
comments
=
new
Comments
()
comments
.
comparator
=
(
comment
)
->
comments
.
comparator
=
(
comment
)
->
...
@@ -52,36 +45,6 @@ if Backbone?
...
@@ -52,36 +45,6 @@ if Backbone?
@
$el
.
find
(
".comments li:last"
).
before
(
view
.
el
)
@
$el
.
find
(
".comments li:last"
).
before
(
view
.
el
)
view
view
toggleVote
:
(
event
)
->
event
.
preventDefault
()
@
$
(
".vote-btn"
).
toggleClass
(
"is-cast"
)
if
@
$
(
".vote-btn"
).
hasClass
(
"is-cast"
)
@
vote
()
else
@
unvote
()
vote
:
->
url
=
@
model
.
urlFor
(
"upvote"
)
@
$
(
".votes-count-number"
).
html
(
parseInt
(
@
$
(
".votes-count-number"
).
html
())
+
1
)
DiscussionUtil
.
safeAjax
$elem
:
@
$
(
".discussion-vote"
)
url
:
url
type
:
"POST"
success
:
(
response
,
textStatus
)
=>
if
textStatus
==
'success'
@
model
.
set
(
response
)
unvote
:
->
url
=
@
model
.
urlFor
(
"unvote"
)
@
$
(
".votes-count-number"
).
html
(
parseInt
(
@
$
(
".votes-count-number"
).
html
())
-
1
)
DiscussionUtil
.
safeAjax
$elem
:
@
$
(
".discussion-vote"
)
url
:
url
type
:
"POST"
success
:
(
response
,
textStatus
)
=>
if
textStatus
==
'success'
@
model
.
set
(
response
)
submitComment
:
(
event
)
->
submitComment
:
(
event
)
->
event
.
preventDefault
()
event
.
preventDefault
()
url
=
@
model
.
urlFor
(
'reply'
)
url
=
@
model
.
urlFor
(
'reply'
)
...
@@ -103,14 +66,14 @@ if Backbone?
...
@@ -103,14 +66,14 @@ if Backbone?
success
:
(
response
,
textStatus
)
->
success
:
(
response
,
textStatus
)
->
comment
.
set
(
response
.
content
)
comment
.
set
(
response
.
content
)
view
.
render
()
# This is just to update the id for the most part, but might be useful in general
view
.
render
()
# This is just to update the id for the most part, but might be useful in general
delete
:
(
event
)
->
delete
:
(
event
)
=>
event
.
preventDefault
()
event
.
preventDefault
()
if
not
@
model
.
can
(
'can_delete'
)
if
not
@
model
.
can
(
'can_delete'
)
return
return
console
.
log
$
(
event
.
target
)
url
=
@
model
.
urlFor
(
'delete'
)
if
not
confirm
"Are you sure to delete this response? "
if
not
confirm
"Are you sure to delete this response? "
return
return
url
=
@
model
.
urlFor
(
'delete'
)
@
model
.
remove
()
@
model
.
remove
()
@
$el
.
remove
()
@
$el
.
remove
()
$elem
=
$
(
event
.
target
)
$elem
=
$
(
event
.
target
)
...
@@ -120,18 +83,80 @@ if Backbone?
...
@@ -120,18 +83,80 @@ if Backbone?
type
:
"POST"
type
:
"POST"
success
:
(
response
,
textStatus
)
=>
success
:
(
response
,
textStatus
)
=>
toggleEndorse
:
(
event
)
->
createEditView
:
()
->
if
@
showView
?
@
showView
.
undelegateEvents
()
@
showView
.
$el
.
empty
()
@
showView
=
null
@
editView
=
new
ThreadResponseEditView
(
model
:
@
model
)
@
editView
.
bind
"response:update"
,
@
update
@
editView
.
bind
"response:cancel_edit"
,
@
cancelEdit
renderSubView
:
(
view
)
->
view
.
setElement
(
@
$
(
'.discussion-response'
))
view
.
render
()
view
.
delegateEvents
()
renderEditView
:
()
->
@
renderSubView
(
@
editView
)
hideCommentForm
:
()
->
@
$
(
'.comment-form'
).
closest
(
'li'
).
hide
()
showCommentForm
:
()
->
@
$
(
'.comment-form'
).
closest
(
'li'
).
show
()
createShowView
:
()
->
if
@
editView
?
@
editView
.
undelegateEvents
()
@
editView
.
$el
.
empty
()
@
editView
=
null
@
showView
=
new
ThreadResponseShowView
(
model
:
@
model
)
@
showView
.
bind
"response:delete"
,
@
delete
@
showView
.
bind
"response:edit"
,
@
edit
renderShowView
:
()
->
@
renderSubView
(
@
showView
)
cancelEdit
:
(
event
)
=>
event
.
preventDefault
()
event
.
preventDefault
()
if
not
@
model
.
can
(
'can_endorse'
)
@
createShowView
()
return
@
renderShowView
()
$elem
=
$
(
event
.
target
)
@
showCommentForm
()
url
=
@
model
.
urlFor
(
'endorse'
)
endorsed
=
@
model
.
get
(
'endorsed'
)
edit
:
(
event
)
=>
data
=
{
endorsed
:
not
endorsed
}
@
createEditView
()
@
model
.
set
(
'endorsed'
,
not
endorsed
)
@
renderEditView
()
@
trigger
"comment:endorse"
,
not
endorsed
@
hideCommentForm
()
update
:
(
event
)
=>
newBody
=
@
editView
.
$
(
".edit-post-body textarea"
).
val
()
url
=
DiscussionUtil
.
urlFor
(
'update_comment'
,
@
model
.
id
)
DiscussionUtil
.
safeAjax
DiscussionUtil
.
safeAjax
$elem
:
$elem
$elem
:
$
(
event
.
target
)
url
:
url
$loading
:
$
(
event
.
target
)
if
event
data
:
data
url
:
url
type
:
"POST"
type
:
"POST"
dataType
:
'json'
async
:
false
# TODO when the rest of the stuff below is made to work properly..
data
:
body
:
newBody
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-body textarea"
).
val
(
""
).
attr
(
"prev-text"
,
""
)
@
editView
.
$
(
".wmd-preview p"
).
html
(
""
)
@
model
.
set
body
:
newBody
@
createShowView
()
@
renderShowView
()
@
showCommentForm
()
lms/templates/discussion/_underscore_templates.html
View file @
8506cbcd
...
@@ -72,6 +72,17 @@
...
@@ -72,6 +72,17 @@
</script>
</script>
<script
type=
"text/template"
id=
"thread-response-template"
>
<script
type=
"text/template"
id=
"thread-response-template"
>
<
div
class
=
"discussion-response"
><
/div
>
<
ol
class
=
"comments"
>
<
li
class
=
"response-local"
>
<
form
class
=
"comment-form"
>
<
input
type
=
"text"
placeholder
=
"Comment…"
class
=
"comment-form-input"
>
<
/form
>
<
/li
>
<
/ol
>
</script>
<script
type=
"text/template"
id=
"thread-response-show-template"
>
<
header
class
=
"response-local"
>
<
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
>
<
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
>
<
a
href
=
"javascript:void(0)"
class
=
"endorse-btn${'<% if (endorsed) { %> is-endorsed<% } %>'} action-endorse"
style
=
"cursor: default"
data
-
tooltip
=
"endorse"
><
span
class
=
"check-icon"
style
=
"pointer-events: none; "
><
/span></
a
>
<
a
href
=
"javascript:void(0)"
class
=
"endorse-btn${'<% if (endorsed) { %> is-endorsed<% } %>'} action-endorse"
style
=
"cursor: default"
data
-
tooltip
=
"endorse"
><
span
class
=
"check-icon"
style
=
"pointer-events: none; "
><
/span></
a
>
...
@@ -84,13 +95,18 @@
...
@@ -84,13 +95,18 @@
<
li
style
=
"display: none"
><
a
class
=
"action-delete"
href
=
"javascript:void(0)"
><
span
class
=
"delete-icon"
><
/span> Delete</
a
><
/li
>
<
li
style
=
"display: none"
><
a
class
=
"action-delete"
href
=
"javascript:void(0)"
><
span
class
=
"delete-icon"
><
/span> Delete</
a
><
/li
>
<
li
style
=
"display: none"
><
a
class
=
"action-openclose"
href
=
"javascript:void(0)"
><
span
class
=
"edit-icon"
><
/span> Close</
a
><
/li
>
<
li
style
=
"display: none"
><
a
class
=
"action-openclose"
href
=
"javascript:void(0)"
><
span
class
=
"edit-icon"
><
/span> Close</
a
><
/li
>
<
/ul
>
<
/ul
>
<
ol
class
=
"comments"
>
</script>
<
li
class
=
"response-local"
>
<
form
class
=
"comment-form"
>
<script
type=
"text/template"
id=
"thread-response-edit-template"
>
<
input
type
=
"text"
placeholder
=
"Comment…"
class
=
"comment-form-input"
>
<
div
class
=
"edit-post-form"
>
<
/form
>
<
h1
>
Editing
response
<
/h1
>
<
/li
>
<
ul
class
=
"edit-post-form-errors"
><
/ul
>
<
/ol
>
<
div
class
=
"form-row"
>
<
div
class
=
"edit-post-body"
name
=
"body"
>
$
{
"<%- body %>"
}
<
/div
>
<
/div
>
<
input
type
=
"submit"
class
=
"post-update"
value
=
"Update response"
>
<
a
href
=
"#"
class
=
"post-cancel"
>
Cancel
<
/a
>
<
/div
>
</script>
</script>
<script
type=
"text/template"
id=
"response-comment-show-template"
>
<script
type=
"text/template"
id=
"response-comment-show-template"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment