]> git.openstreetmap.org Git - osqa.git/commitdiff
Improving the canned comments feature, now we can use Django style template syntax...
authorjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 7 Jul 2011 15:28:31 +0000 (15:28 +0000)
committerjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 7 Jul 2011 15:28:31 +0000 (15:28 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1111 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/settings/moderation.py
forum/skins/default/media/js/osqa.main.js
forum/skins/default/templates/node/canned_comments.html [deleted file]
forum/skins/default/templates/node/comments.html
forum/templatetags/node_tags.py
forum/urls.py
forum/views/commands.py

index 19763b40cd27a914c5866f44c12268bdef507768..d6f1b3ddb5a8ffdaae3262a2bfcabf75341950cc 100644 (file)
@@ -18,7 +18,11 @@ CANNED_COMMENTS = Setting('CANNED_COMMENTS',
 ],
 MODERATION_SET, dict(
 label = _("Canned comments"),
-help_text = _("Create some canned comments to be used for easier moderation."),
+help_text = _("""
+<p>Create some canned comments to be used for easier moderation. You can access the {{ post }} and {{ settings }} variables.</p>
+<p>If you want to access the current post author username you can use {{ post.author }}, for the question title use {{ post.title }}.</p>
+<p>To get the application title use {{ settings.APP_TITLE }}. All settings are accessible through the settings object.</p>
+"""),
 widget=StringListWidget))
 
 FLAG_TYPES = Setting('FLAG_TYPES',
index 8a3dbf9a44b227e90cd333e4404fd95a0ded063b..0c532e37adbfc7da84bd61d7c26c9066311e55ad 100644 (file)
@@ -2,6 +2,7 @@
  * We do not want the CSRF protection enabled for the AJAX post requests, it causes only trouble.\r
  * Get the csrftoken cookie and pass it to the X-CSRFToken HTTP request property.\r
  */\r
+\r
 $('html').ajaxSend(function(event, xhr, settings) {\r
     function getCookie(name) {\r
         var cookieValue = null;\r
@@ -24,6 +25,10 @@ $('html').ajaxSend(function(event, xhr, settings) {
     }\r
 });\r
 \r
+function canned_comment(post_id, comment) {\r
+    $('#comment-' + post_id + '-form textarea').val(comment);\r
+}\r
+\r
 var response_commands = {\r
     refresh_page: function() {\r
         window.location.reload(true)\r
@@ -123,10 +128,6 @@ var response_commands = {
         $('#comment-' + comment_id).slideDown('slow');\r
     },\r
 \r
-    canned_comment: function(post_id, comment) {\r
-        $('#comment-' + post_id + '-form textarea').val(comment);\r
-    },\r
-\r
     update_comment: function(comment_id, comment_text) {\r
         var $comment = $('#comment-' + comment_id);\r
         $comment.find('.comment-text').html(comment_text);\r
@@ -732,7 +733,7 @@ function pickedTags(){
                 tag_link.attr('rel','tag');\r
                 tag_link.attr('href', scriptUrl + $.i18n._('tags/') + tagname + '/');\r
                 tag_link.html(tagname);\r
-                var del_link = $('<img></img>');\r
+                var del_link = $('<img />');\r
                 del_link.addClass('delete-icon');\r
                 del_link.attr('src', mediaUrl('media/images/close-small-dark.png'));\r
 \r
diff --git a/forum/skins/default/templates/node/canned_comments.html b/forum/skins/default/templates/node/canned_comments.html
deleted file mode 100644 (file)
index 356f83f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{% load i18n %}
-<style type="text/css">
-    table.canned_comments {
-        font-size: 13px;
-    }
-    table.canned_comments td {
-        vertical-align: top;
-        padding: 0 0 5px 3px;
-    }
-</style>
-
-<p>{% trans "Choose from the canned comments." %}</p>
-
-<p>
-<input type="hidden" name="comment" id="hidden_comment_wrapper" value="" />
-<table class="canned_comments" cellpadding="0" cellspacing="0">
-    {% for comment in canned_comments %}
-    <tr>
-        <td><input type="radio" name="comment_radio" onchange="jQuery('#hidden_comment_wrapper').val(jQuery(this).val())" id="canned_comment_{{ forloop.counter }}" value="{{ comment }}" /></td>
-        <td>
-            <label for="canned_comment_{{ forloop.counter }}">{{ comment }}</label>
-        </td>
-    </tr>
-    {% endfor %}
-</table>
-</p>
\ No newline at end of file
index f67e079e93512639c901f6dfae3be1379b8cebc5..41a97aa822e77d88d1296ede2eb213e4467ced8c 100644 (file)
             <div class="clear"></div>\r
             {% if user.can_use_canned_comments %}\r
             <div class="canned_comment">\r
-                <a href="{% url canned_comments post.id %}" class="ajax-command withprompt">{% trans "Use canned comment" %}</a>\r
+                <span id="post-{{ post.id }}-menu" class="context-menu">\r
+                    <span id="post-{{ post.id }}-menu-trigger" class="action-link context-menu-trigger">{% trans "Use canned comment" %}</span>\r
+                    <ul id="post-{{ post.id }}-menu-dropdown" class="context-menu-dropdown" style="width: 275px;">\r
+                        {% for canned_comment in canned_comments %}\r
+                        <li class="item">\r
+                            <a style="white-space: pre-wrap;" href="javascript:void(0);" onclick="canned_comment({{ post.id }}, jQuery(this).text())">{{ canned_comment }}</a>\r
+                        </li>\r
+                        {% endfor %}\r
+                    </ul>\r
+                </span>\r
             </div>\r
             {% endif %}\r
         </div>\r
index c7fcba03a47a2772efc4e0e38a8cdfd5de6c2322..4eebaf7fadba8064ffde7a60d46faac4934f3cc7 100644 (file)
@@ -2,6 +2,7 @@ from datetime import datetime, timedelta
 import re\r
 \r
 from forum.models import Question, Action\r
+from django.template import Template, Context\r
 from django.utils.translation import ungettext, ugettext as _\r
 from django.utils.html import strip_tags\r
 from django.utils.encoding import smart_unicode\r
@@ -203,8 +204,19 @@ def comments(post, user):
         context.update(dict(c.__dict__))\r
         comments.append(context)\r
 \r
+    # Generate canned comments\r
+    canned_comments = []\r
+    for comment in settings.CANNED_COMMENTS:\r
+        t = Template(smart_unicode(comment))\r
+        c = Context({\r
+            'post' : post,\r
+            'settings' : settings,\r
+        })\r
+        canned_comments.append(t.render(c))\r
+\r
     return {\r
         'comments': comments,\r
+        'canned_comments': canned_comments,\r
         'post': post,\r
         'can_comment': user.can_comment(post),\r
         'max_length': settings.FORM_MAX_COMMENT_BODY,\r
index 0168b8efb114309fdad957edd0c805f9f25b9a58..a6c496d00e8bd94053848ef887785f524eababe0 100644 (file)
@@ -46,7 +46,6 @@ core_urls = (
     url(r'^%s(?P<id>\d+)/$' % _('revisions/'), app.readers.revisions, name='revisions'),
     url(r'^%s$' % _('questions/'), app.readers.questions, name='questions'),
     url(r'^%s%s$' % (_('questions/'), _('ask/')), app.writers.ask, name='ask'),
-    url(r'^canned_comments/(?P<post_id>\d+)/$', app.commands.canned_comments, name='canned_comments'),
     url(r'^%s%s$' % (_('questions/'), _('related_questions/')), app.commands.related_questions, name='related_questions'),
 
     url(r'^%s%s$' % (_('questions/'), _('unanswered/')), app.readers.unanswered, name='unanswered'),
index 95895e382a92b072cc97520d1b6a893df57d4a4d..0e0108670a8cf016c17705509b3c910a197fd3e9 100644 (file)
@@ -493,31 +493,6 @@ def subscribe(request, id, user=None):
         }
     }
 
-@decorate.withfn(command)
-def canned_comments(request, post_id):
-    user = request.user
-
-    # Check whether the user has the required permissions to use the tool.
-    if not user.can_use_canned_comments:
-        raise CommandException(_("You cannot use the canned comments tool."))
-
-    if not request.POST:
-        canned_comments = []
-        for comment in settings.CANNED_COMMENTS:
-            canned_comments.append(smart_unicode(comment))
-
-        return render_to_response('node/canned_comments.html', {
-            'canned_comments' : canned_comments,
-        }, RequestContext(request))
-
-    comment = request.POST.get('comment', '')
-
-    return {
-        'commands' : {
-            'canned_comment' : [post_id, comment],
-        }
-    }
-
 #internally grouped views - used by the tagging system
 @ajax_login_required
 def mark_tag(request, tag=None, **kwargs):#tagging system