mirror of
https://github.com/correl/codereview.git
synced 2024-12-27 11:07:33 +00:00
Added line commenting in reviews (not yet ajax)
This commit is contained in:
parent
fe601d1f22
commit
95ff757050
7 changed files with 61 additions and 3 deletions
|
@ -103,3 +103,9 @@ table.diff td {
|
|||
table.diff tr.annotation td {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.comment-form textarea {
|
||||
display: block;
|
||||
width: 90%;
|
||||
height: 3em;
|
||||
}
|
||||
|
|
|
@ -5,3 +5,7 @@ class NewCommitReviewForm(forms.Form):
|
|||
author = forms.IntegerField(widget=forms.HiddenInput)
|
||||
repo = forms.IntegerField(widget=forms.HiddenInput)
|
||||
ref = forms.CharField(widget=forms.HiddenInput)
|
||||
class CommentForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Comment
|
||||
fields = ('review', 'line_a', 'line_b', 'text')
|
||||
|
|
|
@ -40,6 +40,6 @@ class Comment(models.Model):
|
|||
author = models.ForeignKey(User)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
path = models.TextField()
|
||||
line_a = models.IntegerField()
|
||||
line_a = models.IntegerField(null=True)
|
||||
line_b = models.IntegerField(null=True)
|
||||
text = models.TextField()
|
||||
|
|
|
@ -3,4 +3,5 @@ from django.conf.urls.defaults import *
|
|||
urlpatterns = patterns('',
|
||||
(r'^(?P<review_id>\d+)/$', 'codereview.review.views.edit'),
|
||||
(r'^new/$', 'codereview.review.views.new'),
|
||||
(r'^comment/new/$', 'codereview.review.views.add_comment'),
|
||||
)
|
||||
|
|
|
@ -6,7 +6,7 @@ from django.contrib.auth.decorators import permission_required
|
|||
from codereview.browser import vcs
|
||||
from codereview.dashboard.models import Repository
|
||||
from codereview.review.models import Review, Comment
|
||||
from codereview.review.forms import NewCommitReviewForm
|
||||
from codereview.review.forms import NewCommitReviewForm, CommentForm
|
||||
|
||||
@permission_required('review.add_review')
|
||||
def new(request):
|
||||
|
@ -38,3 +38,21 @@ def edit(request, review_id):
|
|||
"diffs": diffs,
|
||||
})
|
||||
return render_to_response('review/edit.html', data)
|
||||
@permission_required('review.add_comment')
|
||||
def add_comment(request):
|
||||
review_id = request.POST.get('review')
|
||||
try:
|
||||
review = Review.objects.get(pk=review_id)
|
||||
path = int(request.POST.get('path'))
|
||||
except:
|
||||
raise Http404
|
||||
repo = vcs.create(review.repo.type, review.repo.path)
|
||||
diffs = repo.diff(review.ref, review.parent if review.parent else None)
|
||||
|
||||
form = CommentForm(request.POST)
|
||||
comment = form.save(commit=False)
|
||||
diff = diffs[path]
|
||||
comment.author = request.user
|
||||
comment.path = diff.b.path if diff.b else diff.a.path
|
||||
comment.save()
|
||||
return HttpResponseRedirect(reverse(edit, args=[review.pk]))
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
<td colspan="3">{{ change.text }}</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr class="{% if change.type == '+' %}add{% endif %}{% if change.type == '-' %}del{% endif %}">
|
||||
<tr id="{{ review.pk }}_{{ forloop.parentloop.counter0 }}_{% if change.type != '+' %}{{ change.line_a }}{% else %}0{% endif %}_{% if change.type != '-' %}{{ change.line_b }}{% else %}0{% endif %}"
|
||||
class="{% if change.type == '+' %}add{% endif %}{% if change.type == '-' %}del{% endif %}">
|
||||
<td class="number">{% if change.type != '+' %}{{ change.line_a }}{% endif %}</td>
|
||||
<td class="number">{% if change.type != '-' %}{{ change.line_b }}{% endif %}</td>
|
||||
<td class="text">{{ change.text }}</td>
|
||||
|
|
|
@ -4,6 +4,34 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('.diff tr:has(.number)').click(function(e) {
|
||||
// Do stuff
|
||||
var form_id = this.id + '_form';
|
||||
var info = this.id.split('_');
|
||||
var path = info[1];
|
||||
var line_a = info[2];
|
||||
var line_b = info[3];
|
||||
if ($('#' + form_id).length == 0) {
|
||||
// Show the comment form
|
||||
$(this).after(
|
||||
'<tr class="comment-form" id="' + form_id + '" ><td colspan="3">' +
|
||||
'<form method="post" action="{% url codereview.review.views.add_comment %}">' +
|
||||
"{% csrf_token %}" +
|
||||
'<input type="hidden" name="review" value="{{ review.pk }}" />' +
|
||||
'<input type="hidden" name="path" value="' + path + '" />' +
|
||||
'<input type="hidden" name="line_a" value="' + line_a + '" />' +
|
||||
'<input type="hidden" name="line_b" value="' + line_b + '" />' +
|
||||
'<textarea name="text" />' +
|
||||
'<input type="submit" value="Add Comment" />' +
|
||||
'<input type="button" value="Cancel" onclick="$(this.form).parent().parent().remove();"/>' +
|
||||
'</form>' +
|
||||
'</td></tr>');
|
||||
}
|
||||
})
|
||||
});
|
||||
</script>
|
||||
<h2>#{{ review.pk }} - <span id="review-description">{{ review.description }}</span></h2>
|
||||
|
||||
{% for diff in diffs %}
|
||||
|
|
Loading…
Reference in a new issue