$ -> if !window.$$contents window.$$contents = {} $.fn.extend loading: -> @$_loading = $("
Loading content
") $(this).after(@$_loading) loaded: -> @$_loading.remove() class @DiscussionUtil @wmdEditors: {} @getTemplate: (id) -> $("script##{id}").html() @loadRoles: (roles)-> @roleIds = roles @loadFlagModerator: (what)-> @isFlagModerator = ((what=="True") or (what == 1)) @loadRolesFromContainer: -> @loadRoles($("#discussion-container").data("roles")) @loadFlagModerator($("#discussion-container").data("flag-moderator")) @isStaff: (user_id) -> staff = _.union(@roleIds['Moderator'], @roleIds['Administrator']) _.include(staff, parseInt(user_id)) @isTA: (user_id) -> ta = _.union(@roleIds['Community TA']) _.include(ta, parseInt(user_id)) @bulkUpdateContentInfo: (infos) -> for id, info of infos Content.getContent(id).updateInfo(info) @generateDiscussionLink: (cls, txt, handler) -> $("").addClass("discussion-link") .attr("href", "javascript:void(0)") .addClass(cls).html(txt) .click -> handler(this) @urlFor: (name, param, param1, param2) -> { follow_discussion : "/courses/#{$$course_id}/discussion/#{param}/follow" unfollow_discussion : "/courses/#{$$course_id}/discussion/#{param}/unfollow" create_thread : "/courses/#{$$course_id}/discussion/#{param}/threads/create" search_similar_threads : "/courses/#{$$course_id}/discussion/#{param}/threads/search_similar" update_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/update" create_comment : "/courses/#{$$course_id}/discussion/threads/#{param}/reply" delete_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/delete" flagAbuse_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/flagAbuse" unFlagAbuse_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/unFlagAbuse" flagAbuse_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/flagAbuse" unFlagAbuse_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/unFlagAbuse" upvote_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/upvote" downvote_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/downvote" pin_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/pin" un_pin_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/unpin" undo_vote_for_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/unvote" follow_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/follow" unfollow_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/unfollow" update_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/update" endorse_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/endorse" create_sub_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/reply" delete_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/delete" upvote_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/upvote" downvote_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/downvote" undo_vote_for_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/unvote" upload : "/courses/#{$$course_id}/discussion/upload" search : "/courses/#{$$course_id}/discussion/forum/search" tags_autocomplete : "/courses/#{$$course_id}/discussion/threads/tags/autocomplete" retrieve_discussion : "/courses/#{$$course_id}/discussion/forum/#{param}/inline" retrieve_single_thread : "/courses/#{$$course_id}/discussion/forum/#{param}/threads/#{param1}" update_moderator_status : "/courses/#{$$course_id}/discussion/users/#{param}/update_moderator_status" openclose_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/close" permanent_link_thread : "/courses/#{$$course_id}/discussion/forum/#{param}/threads/#{param1}" permanent_link_comment : "/courses/#{$$course_id}/discussion/forum/#{param}/threads/#{param1}##{param2}" user_profile : "/courses/#{$$course_id}/discussion/forum/users/#{param}" followed_threads : "/courses/#{$$course_id}/discussion/forum/users/#{param}/followed" threads : "/courses/#{$$course_id}/discussion/forum" "enable_notifications" : "/notification_prefs/enable/" "disable_notifications" : "/notification_prefs/disable/" "notifications_status" : "/notification_prefs/status" }[name] @makeFocusTrap: (elem) -> elem.keydown( (event) -> if event.which == 9 # Tab event.preventDefault() ) @discussionAlert: (header, body) -> if $("#discussion-alert").length == 0 alertDiv = $("