From 799f66b7768d83055ed1a49e0868e2fb69a517f5 Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Tue, 31 Jul 2012 13:26:36 -0400 Subject: [PATCH 1/3] make search bar configurable --- lms/djangoapps/django_comment_client/forum/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lms/djangoapps/django_comment_client/forum/views.py b/lms/djangoapps/django_comment_client/forum/views.py index 4f8c5e0f3c..e9c7fda4fe 100644 --- a/lms/djangoapps/django_comment_client/forum/views.py +++ b/lms/djangoapps/django_comment_client/forum/views.py @@ -29,11 +29,12 @@ def render_accordion(request, course, discussion_id): return render_to_string('discussion/accordion.html', context) -def render_discussion(request, course_id, threads, discussion_id=None, search_text=''): +def render_discussion(request, course_id, threads, discussion_id=None, with_search_bar=True, search_text=''): context = { 'threads': threads, 'discussion_id': discussion_id, - 'search_bar': render_search_bar(request, course_id, discussion_id, text=search_text), + 'search_bar': '' if not with_search_bar \ + else render_search_bar(request, course_id, discussion_id, text=search_text), 'user_info': comment_client.get_user_info(request.user.id, raw=True), 'tags': comment_client.get_threads_tags(raw=True), 'course_id': course_id, @@ -41,9 +42,8 @@ def render_discussion(request, course_id, threads, discussion_id=None, search_te return render_to_string('discussion/inline.html', context) def inline_discussion(request, course_id, discussion_id): - print "rendering inline" threads = comment_client.get_threads(discussion_id, recursive=False) - html = render_discussion(request, course_id, threads, discussion_id) + html = render_discussion(request, course_id, threads, discussion_id=discussion_id) return HttpResponse(html, content_type="text/plain") def render_search_bar(request, course_id, discussion_id=None, text=''): From 401f57b81a9a8bde7de9537501e10f7cdbb943a9 Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Tue, 31 Jul 2012 13:40:26 -0400 Subject: [PATCH 2/3] show new post form after clicking button --- lms/static/coffee/src/discussion.coffee | 60 ++++++++++++++++++------- lms/static/sass/_discussion.scss | 2 +- lms/templates/discussion/inline.html | 8 +--- 3 files changed, 47 insertions(+), 23 deletions(-) diff --git a/lms/static/coffee/src/discussion.coffee b/lms/static/coffee/src/discussion.coffee index afe1f68357..3e6dc59f5e 100644 --- a/lms/static/coffee/src/discussion.coffee +++ b/lms/static/coffee/src/discussion.coffee @@ -29,6 +29,17 @@ generateDiscussionLink = (cls, txt, handler) -> Discussion = + newPostTemplate: """ +
+
    + +
    + + Submit + Cancel +
    + """ + replyTemplate: """
      @@ -169,9 +180,7 @@ Discussion = watchDiscussion = generateDiscussionLink("discussion-watch-discussion", "Watch", handleWatchDiscussion) $local(".discussion-title-wrapper").append(watchDiscussion) - newPostBody = $(discussion).find(".new-post-body") - if newPostBody.length - Markdown.makeWmdEditor newPostBody, "-new-post-body-#{$(discussion).attr('_id')}", Discussion.urlFor('upload') + initializeWatchThreads = (index, thread) -> $thread = $(thread) @@ -192,7 +201,6 @@ Discussion = Discussion.handleAnchorAndReload(response) , 'json' - if id in $$user_info.subscribed_thread_ids unwatchThread = generateDiscussionLink("discussion-unwatch-thread", "Unwatch", handleUnwatchThread) $local(".info").append(unwatchThread) @@ -207,15 +215,6 @@ Discussion = $local(".thread").each(initializeVote).each(initializeWatchThreads) initializeWatchDiscussion(discussion) - $local(".new-post-tags").tagsInput - autocomplete_url: Discussion.urlFor('tags_autocomplete') - autocomplete: - remoteDataType: 'json' - interactive: true - defaultText: "add a tag" - height: "30px" - removeWithBackspace: true - bindContentEvents: (content) -> $content = $(content) @@ -404,7 +403,7 @@ Discussion = else window.location = Discussion.urlFor('search') + '?text=' + encodeURI(text) - handleSubmitNewThread = (elem) -> + handleSubmitNewPost = (elem) -> title = $local(".new-post-title").val() body = $local("#wmd-input-new-post-body-#{id}").val() tags = $local(".new-post-tags").val() @@ -417,6 +416,37 @@ Discussion = else Discussion.handleAnchorAndReload(response) , 'json' + + handleCancelNewPost = (elem) -> + $local(".new-post-form").hide() + $local(".discussion-new-post").show() + + handleNewPost = (elem) -> + newPostForm = $local(".new-post-form") + if newPostForm.length + newPostForm.show() + $(elem).hide() + else + view = { + discussion_id: id + } + $discussionNonContent.append Mustache.render Discussion.newPostTemplate, view + newPostBody = $(discussion).find(".new-post-body") + if newPostBody.length + Markdown.makeWmdEditor newPostBody, "-new-post-body-#{$(discussion).attr('_id')}", Discussion.urlFor('upload') + $local(".new-post-tags").tagsInput + autocomplete_url: Discussion.urlFor('tags_autocomplete') + autocomplete: + remoteDataType: 'json' + interactive: true + defaultText: "add a tag" + height: "30px" + removeWithBackspace: true + $local(".discussion-submit-post").click -> + handleSubmitNewPost(this) + $local(".discussion-cancel-post").click -> + handleCancelNewPost(this) + $(elem).hide() $local(".discussion-search-form").submit (event) -> event.preventDefault() @@ -425,7 +455,7 @@ Discussion = handleSearch(text, isSearchWithinBoard) $local(".discussion-new-post").click -> - handleSubmitNewThread(this) + handleNewPost(this) $local(".discussion-search").click -> $local(".new-post-form").submit() diff --git a/lms/static/sass/_discussion.scss b/lms/static/sass/_discussion.scss index 4f5c3dd2f1..f6b8edaa39 100644 --- a/lms/static/sass/_discussion.scss +++ b/lms/static/sass/_discussion.scss @@ -127,7 +127,7 @@ $discussion_input_width: 85%; height: 100%; } } - .discussion-content-edit, .discussion-reply-new { + .discussion-content-edit, .discussion-reply-new, .new-post-form { .control-button { display: inline-block; } diff --git a/lms/templates/discussion/inline.html b/lms/templates/discussion/inline.html index 42fac4e110..5901900b0c 100644 --- a/lms/templates/discussion/inline.html +++ b/lms/templates/discussion/inline.html @@ -6,13 +6,7 @@ Discussion ${search_bar} - -
        - -
        - - New Post -
        + New Post % for thread in threads: ${renderer.render_thread(course_id, thread, edit_thread=False, show_comments=False)} From 20f958e6be07718fbe32fd6f48390649c2abe8d4 Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Tue, 31 Jul 2012 14:03:55 -0400 Subject: [PATCH 3/3] bug fix: resize input for defaulttext (tagsinput) --- common/static/js/vendor/jquery.tagsinput.js | 3 ++- lms/static/coffee/src/discussion.coffee | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/common/static/js/vendor/jquery.tagsinput.js b/common/static/js/vendor/jquery.tagsinput.js index 4ce21b026d..b05a87ca99 100644 --- a/common/static/js/vendor/jquery.tagsinput.js +++ b/common/static/js/vendor/jquery.tagsinput.js @@ -227,6 +227,7 @@ markup = markup + '
        '; $(markup).insertAfter(this); + $(data.holder).css('width',settings.width); $(data.holder).css('min-height',settings.height); @@ -240,6 +241,7 @@ $(data.fake_input).css('color',settings.placeholderColor); $(data.fake_input).resetAutosize(settings); + $(data.fake_input).doAutosize(settings); $(data.holder).bind('click',data,function(event) { $(event.data.fake_input).focus(); }); @@ -260,7 +262,6 @@ if (jQuery.Autocompleter !== undefined) { onSelectCallback = settings.autocomplete.onItemSelect; settings.autocomplete.onItemSelect = function() { - console.log("here"); $(data.real_input).addTag($(data.fake_input).val(), {focus: true, unique: (settings.unique)}); $(data.fake_input).resetAutosize(settings); if (onSelectCallback) { diff --git a/lms/static/coffee/src/discussion.coffee b/lms/static/coffee/src/discussion.coffee index 1e6f867ff7..9361d09f22 100644 --- a/lms/static/coffee/src/discussion.coffee +++ b/lms/static/coffee/src/discussion.coffee @@ -439,7 +439,7 @@ Discussion = autocomplete: remoteDataType: 'json' interactive: true - defaultText: "Tag your post" + defaultText: "Tag your post: press enter after each tag" height: "30px" width: "85%" removeWithBackspace: true