changeset 1674:6f0143e5efe5 beta

#71 code review - added delete of comments by owner or admin
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 12 Nov 2011 17:09:17 +0200
parents 333b3e7c991f
children 7c487d2678c7
files rhodecode/config/routing.py rhodecode/controllers/changeset.py rhodecode/public/css/style.css rhodecode/public/js/rhodecode.js rhodecode/templates/changeset/changeset.html rhodecode/templates/changeset/changeset_file_comment.html
diffstat 6 files changed, 40 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/config/routing.py	Sat Nov 12 12:20:50 2011 +0200
+++ b/rhodecode/config/routing.py	Sat Nov 12 17:09:17 2011 +0200
@@ -352,7 +352,7 @@
 
     rmap.connect('changeset_comment_delete', '/{repo_name:.*}/changeset/comment/{comment_id}/delete',
                 controller='changeset', action='delete_comment',
-                conditions=dict(function=check_repo))
+                conditions = dict(function=check_repo, method=["DELETE"]))
 
     rmap.connect('raw_changeset_home',
                  '/{repo_name:.*}/raw-changeset/{revision}',
--- a/rhodecode/controllers/changeset.py	Sat Nov 12 12:20:50 2011 +0200
+++ b/rhodecode/controllers/changeset.py	Sat Nov 12 17:09:17 2011 +0200
@@ -44,6 +44,7 @@
     ChangesetDoesNotExistError
 from vcs.nodes import FileNode
 from vcs.utils import diffs as differ
+from webob.exc import HTTPForbidden
 
 log = logging.getLogger(__name__)
 
@@ -278,8 +279,13 @@
                               revision=revision))
 
     @jsonify
-    @HasRepoPermissionAnyDecorator('hg.admin', 'repository.admin')
     def delete_comment(self, comment_id):
-        ccmodel = ChangesetCommentsModel()
-        ccmodel.delete(comment_id=comment_id)
-        return True
+        co = ChangesetComment.get(comment_id)
+        if (h.HasPermissionAny('hg.admin', 'repository.admin')() or
+            co.author.user_id == c.rhodecode_user.user_id):
+            ccmodel = ChangesetCommentsModel()
+            ccmodel.delete(comment_id=comment_id)
+            return True
+        else:
+            raise HTTPForbidden()
+
--- a/rhodecode/public/css/style.css	Sat Nov 12 12:20:50 2011 +0200
+++ b/rhodecode/public/css/style.css	Sat Nov 12 17:09:17 2011 +0200
@@ -3263,9 +3263,8 @@
 }
 
 .comments .comment .text {
-    margin-top: 7px;
-    padding: 6px;
-    padding-bottom: 13px;
+    padding: 8px 6px 6px 14px;
+    background-color: #FAFAFA;
 }
 
 .comments .comments-number{
@@ -3330,6 +3329,6 @@
 }
 
 .comment .buttons {
-    float: right;
-    display: none;
-}
+    position: absolute;
+    right:40px;
+}
--- a/rhodecode/public/js/rhodecode.js	Sat Nov 12 12:20:50 2011 +0200
+++ b/rhodecode/public/js/rhodecode.js	Sat Nov 12 17:09:17 2011 +0200
@@ -286,5 +286,15 @@
 	}	
 }
 
+var ajaxPOST = function(url,postData,success) {
+    var sUrl = url;
+    var callback = {
+        success: success,
+        failure: function (o) {
+            alert("error");
+        },
+    };
+    var postData = postData;
+    var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
+};
 
-
--- a/rhodecode/templates/changeset/changeset.html	Sat Nov 12 12:20:50 2011 +0200
+++ b/rhodecode/templates/changeset/changeset.html	Sat Nov 12 17:09:17 2011 +0200
@@ -158,6 +158,17 @@
         </div>
         %endif
     </div>
-    
+    <script type="text/javascript">
+      var deleteComment = function(comment_id){
+
+          var url = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}".replace('__COMMENT_ID__',comment_id);
+          var postData = '_method=delete';
+          var success = function(o){
+              var n = YUD.get('comment-'+comment_id);
+              n.parentNode.removeChild(n);
+          }
+          ajaxPOST(url,postData,success);
+      } 
+    </script> 
   </div>	
 </%def>
--- a/rhodecode/templates/changeset/changeset_file_comment.html	Sat Nov 12 12:20:50 2011 +0200
+++ b/rhodecode/templates/changeset/changeset_file_comment.html	Sat Nov 12 17:09:17 2011 +0200
@@ -22,7 +22,7 @@
   	<div class="text">
   		%if h.HasPermissionAny('hg.admin', 'repository.admin')() or co.author.user_id == c.rhodecode_user.user_id:
   			<div class="buttons">
-  				<a href="javascript:void(0);" onClick="deleteComment(${co.comment_id})" class="">${_('Delete')}</a>
+  				<span onClick="deleteComment(${co.comment_id})" class="delete-comment ui-button-small">${_('Delete')}</span>
   			</div>
   		%endif
   		${h.rst(co.text)|n}