##// END OF EJS Templates
Enabled inline comments in pull-requests
marcink -
r2489:a0adf8db beta
parent child Browse files
Show More
@@ -463,6 +463,11 b' def make_map(config):'
463 463 action='comment', conditions=dict(function=check_repo,
464 464 method=["POST"]))
465 465
466 rmap.connect('pullrequest_comment_delete',
467 '/{repo_name:.*}/pull-request-comment/{comment_id}/delete',
468 controller='pullrequests', action='delete_comment',
469 conditions=dict(function=check_repo, method=["DELETE"]))
470
466 471 rmap.connect('summary_home', '/{repo_name:.*}/summary',
467 472 controller='summary', conditions=dict(function=check_repo))
468 473
@@ -25,7 +25,7 b''
25 25 import logging
26 26 import traceback
27 27
28 from webob.exc import HTTPNotFound
28 from webob.exc import HTTPNotFound, HTTPForbidden
29 29 from collections import defaultdict
30 30 from itertools import groupby
31 31
@@ -39,7 +39,8 b' from rhodecode.lib.auth import LoginRequ'
39 39 from rhodecode.lib import helpers as h
40 40 from rhodecode.lib import diffs
41 41 from rhodecode.lib.utils import action_logger
42 from rhodecode.model.db import User, PullRequest, ChangesetStatus
42 from rhodecode.model.db import User, PullRequest, ChangesetStatus,\
43 ChangesetComment
43 44 from rhodecode.model.pull_request import PullRequestModel
44 45 from rhodecode.model.meta import Session
45 46 from rhodecode.model.repo import RepoModel
@@ -189,7 +190,8 b' class PullrequestsController(BaseRepoCon'
189 190 for f in _parsed:
190 191 fid = h.FID('', f['filename'])
191 192 c.files.append([fid, f['operation'], f['filename'], f['stats']])
192 diff = diff_processor.as_html(enable_comments=False, diff_lines=[f])
193 diff = diff_processor.as_html(enable_comments=True,
194 diff_lines=[f])
193 195 c.changes[fid] = [f['operation'], f['filename'], diff]
194 196
195 197 def show(self, repo_name, pull_request_id):
@@ -295,3 +297,14 b' class PullrequestsController(BaseRepoCon'
295 297 render('changeset/changeset_comment_block.html')})
296 298
297 299 return data
300
301 @jsonify
302 def delete_comment(self, repo_name, comment_id):
303 co = ChangesetComment.get(comment_id)
304 owner = lambda: co.author.user_id == c.rhodecode_user.user_id
305 if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner:
306 ChangesetCommentsModel().delete(comment=co)
307 Session.commit()
308 return True
309 else:
310 raise HTTPForbidden() No newline at end of file
@@ -125,6 +125,8 b''
125 125 <script>
126 126 var _USERS_AC_DATA = ${c.users_array|n};
127 127 var _GROUPS_AC_DATA = ${c.users_groups_array|n};
128 AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
129 AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
128 130 </script>
129 131 ## diff block
130 132 <%namespace name="diff_block" file="/changeset/diff_block.html"/>
@@ -132,16 +134,15 b''
132 134
133 135 ## template for inline comment form
134 136 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
135 ${comment.comment_inline_form(c.changeset)}
137 ${comment.comment_inline_form()}
136 138
137 139 ## render comments main comments form and it status
138 140 ${comment.comments(h.url('changeset_comment', repo_name=c.repo_name, revision=c.changeset.raw_id),
139 141 h.changeset_status(c.rhodecode_db_repo, c.changeset.raw_id))}
140 142
143 ## FORM FOR MAKING JS ACTION AS CHANGESET COMMENTS
141 144 <script type="text/javascript">
142 145 YUE.onDOMReady(function(){
143 AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
144 AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}"
145 146 YUE.on(YUQ('.show-inline-comments'),'change',function(e){
146 147 var show = 'none';
147 148 var target = e.currentTarget;
@@ -167,7 +168,6 b''
167 168 // inject comments into they proper positions
168 169 var file_comments = YUQ('.inline-comment-placeholder');
169 170 renderInlineComments(file_comments);
170
171 171 })
172 172
173 173 </script>
@@ -35,12 +35,12 b''
35 35 </%def>
36 36
37 37
38 <%def name="comment_inline_form(changeset)">
38 <%def name="comment_inline_form()">
39 39 <div id='comment-inline-form-template' style="display:none">
40 40 <div class="comment-inline-form ac">
41 41 %if c.rhodecode_user.username != 'default':
42 42 <div class="overlay"><div class="overlay-text">${_('Submitting...')}</div></div>
43 ${h.form(h.url('changeset_comment', repo_name=c.repo_name, revision=changeset.raw_id),class_='inline-form')}
43 ${h.form('#', class_='inline-form')}
44 44 <div class="clearfix">
45 45 <div class="comment-help">${_('Commenting on line {1}.')}
46 46 ${(_('Comments parsed using %s syntax with %s support.') % (
@@ -83,6 +83,8 b''
83 83 <script>
84 84 var _USERS_AC_DATA = ${c.users_array|n};
85 85 var _GROUPS_AC_DATA = ${c.users_groups_array|n};
86 AJAX_COMMENT_URL = "${url('pullrequest_comment',repo_name=c.repo_name,pull_request_id=c.pull_request.pull_request_id)}";
87 AJAX_COMMENT_DELETE_URL = "${url('pullrequest_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
86 88 </script>
87 89
88 90 ## diff block
@@ -93,12 +95,46 b''
93 95
94 96 ## template for inline comment form
95 97 <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
96 ##${comment.comment_inline_form(c.changeset)}
98 ${comment.comment_inline_form()}
97 99
98 100 ## render comments main comments form and it status
99 101 ${comment.comments(h.url('pullrequest_comment', repo_name=c.repo_name, pull_request_id=c.pull_request.pull_request_id),
100 102 c.current_changeset_status)}
101 103
104
105 <script type="text/javascript">
106 YUE.onDOMReady(function(){
107
108 YUE.on(YUQ('.show-inline-comments'),'change',function(e){
109 var show = 'none';
110 var target = e.currentTarget;
111 if(target.checked){
112 var show = ''
113 }
114 var boxid = YUD.getAttribute(target,'id_for');
115 var comments = YUQ('#{0} .inline-comments'.format(boxid));
116 for(c in comments){
117 YUD.setStyle(comments[c],'display',show);
118 }
119 var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
120 for(c in btns){
121 YUD.setStyle(btns[c],'display',show);
122 }
123 })
124
125 YUE.on(YUQ('.line'),'click',function(e){
126 var tr = e.currentTarget;
127 injectInlineForm(tr);
128 });
129
130 // inject comments into they proper positions
131 var file_comments = YUQ('.inline-comment-placeholder');
132 renderInlineComments(file_comments);
133 })
134
135 </script>
136
137
102 138 </div>
103 139
104 140 </%def>
General Comments 0
You need to be logged in to leave comments. Login now