aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvijeth-aradhya <vijthaaa@gmail.com>2017-01-22 23:57:16 +0530
committerBoris Bobrov <breton@cynicmansion.ru>2017-01-29 16:52:26 +0300
commitc427278e5047f2cc3bc2ffde58de01d4726d1871 (patch)
tree5e11e9b3ee9107b91b76d13c9c4fb15571024456
parentbe44e006264381998cd452c949d2bfdf84ccf70d (diff)
downloadmediagoblin-c427278e5047f2cc3bc2ffde58de01d4726d1871.tar.lz
mediagoblin-c427278e5047f2cc3bc2ffde58de01d4726d1871.tar.xz
mediagoblin-c427278e5047f2cc3bc2ffde58de01d4726d1871.zip
post_comment.js, media.html: Add AJAX for posting comments
Stop reloading the page when a comment is posted which helps in not stopping the media being played (for example, a song) Fixes https://issues.mediagoblin.org/ticket/868
-rw-r--r--mediagoblin/static/js/post_comment.js63
-rw-r--r--mediagoblin/templates/mediagoblin/user_pages/media.html3
2 files changed, 66 insertions, 0 deletions
diff --git a/mediagoblin/static/js/post_comment.js b/mediagoblin/static/js/post_comment.js
new file mode 100644
index 00000000..431c222f
--- /dev/null
+++ b/mediagoblin/static/js/post_comment.js
@@ -0,0 +1,63 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+$(document).ready(function(){
+ $(function() {
+ // Hide this button if script is enabled
+ $('.form_submit_buttons').find('input').hide();
+
+ // Include this link if script is enabled
+ $('.form_submit_buttons').append(
+ '<a class="button_action" id="post_comment" type="button">' +
+ 'Add this comment </a>');
+
+ $('#post_comment').click(function() {
+ $.ajax({
+ url: $('#postCommentURL').val(),
+ data: $('#form_comment').serialize(),
+ type: 'POST',
+ success: function(response) {
+ var message = $(response).find('.mediagoblin_messages');
+ var commentsInResponse = $($(response).find('.media_comments')).find('li');
+ var commentsInPage = $('.media_comments').find('ul');
+
+ // Post the message
+ message.css({"position":"fixed", "top":"50px", "width":"100%"});
+ $('body').append(message);
+ message.delay(1500).fadeOut();
+
+ // Checking if there is new comment
+ if(commentsInResponse.length != $(commentsInPage).find('li').length) {
+ // Post comment and scroll down to it
+ var newComment = commentsInResponse[commentsInResponse.length - 1];
+ $('#form_comment').fadeOut('fast');
+ $('#button_addcomment').fadeIn('fast');
+ $('#comment_preview').replaceWith("<div id=comment_preview></div>");
+ $(commentsInPage).append(newComment);
+ $('html, body').animate({
+ scrollTop: $(newComment).offset().top
+ }, 1000);
+ }
+ },
+ error: function(error) {
+ console.log(error);
+ }
+ });
+ });
+ });
+}); \ No newline at end of file
diff --git a/mediagoblin/templates/mediagoblin/user_pages/media.html b/mediagoblin/templates/mediagoblin/user_pages/media.html
index 7278ad61..ce19717f 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/media.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/media.html
@@ -29,6 +29,8 @@
src="{{ request.staticdirect('/js/comment_show.js') }}"></script>
<script type="text/javascript"
src="{{ request.staticdirect('/js/keyboard_navigation.js') }}"></script>
+ <script type="text/javascript"
+ src="{{ request.staticdirect('/js/post_comment.js') }}"></script>
{% template_hook("location_head") %}
{% template_hook("media_head") %}
@@ -117,6 +119,7 @@
<input type="submit" value="{% trans %}Add this comment{% endtrans %}" class="button_action" />
{{ csrf_token }}
</div>
+ <input type="hidden" value="{{ request.urlgen('mediagoblin.user_pages.media_post_comment', user= media.get_actor.username, media_id=media.id) }}" id="postCommentURL" />
<input type="hidden" value="{{ request.urlgen('mediagoblin.user_pages.media_preview_comment') }}" id="previewURL" />
<input type="hidden" value="{% trans %}Comment Preview{% endtrans %}" id="previewText"/>
</form>