Files
@ 3fcb60a152f3
Branch filter:
Location: kallithea/kallithea/templates/changeset/changeset_file_comment.html
3fcb60a152f3
7.0 KiB
text/html
controllers: avoid setting constants as controller instance variables in __before__
Setting constants in __before__ is a weird pattern and we can do fine without doing it.
That makes it more clear that there is no state in the controller instances.
Real constants can just be set at the module level.
Some values depend on configuration and can thus probably not be set as
constants at module import time but could perhaps be set in __init__. But
reading configuration directly when needed will probably be just as good.
Setting constants in __before__ is a weird pattern and we can do fine without doing it.
That makes it more clear that there is no state in the controller instances.
Real constants can just be set at the module level.
Some values depend on configuration and can thus probably not be set as
constants at module import time but could perhaps be set in __init__. But
reading configuration directly when needed will probably be just as good.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | ## -*- coding: utf-8 -*-
## usage:
## <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
## ${comment.comment_block(co)}
##
<%def name="comment_block(co)">
<div class="comment" id="comment-${co.comment_id}">
<div class="comment-prev-next-links"></div>
<div class="comment-wrapp">
<div class="meta">
${h.gravatar_div(co.author.email, size=20, div_style="float:left")}
<div class="user">
${co.author.full_name_and_username}
</div>
<span>
${h.age(co.modified_at)}
%if co.pull_request:
${_('on pull request')}
<a href="${co.pull_request.url()}">"${co.pull_request.title or _("No title")}"</a>
%else:
${_('on this changeset')}
%endif
<a class="permalink" href="${co.url()}">¶</a>
</span>
%if co.author_id == c.authuser.user_id or h.HasRepoPermissionAny('repository.admin')(c.repo_name):
%if co.deletable():
<div onClick="confirm('${_('Delete comment?')}') && deleteComment(${co.comment_id})" class="buttons delete-comment btn btn-default btn-xs" style="margin:0 5px">${_('Delete')}</div>
%endif
%endif
</div>
<div class="text">
%if co.status_change:
<div class="automatic-comment">
<p>
<span title="${_('Changeset status')}" class="changeset-status-lbl">${_("Status change")}: ${co.status_change[0].status_lbl}</span>
<span class="changeset-status-ico"><i class="icon-circle changeset-status-${co.status_change[0].status}"></i></span>
</p>
</div>
%endif
%if co.text:
${h.render_w_mentions(co.text, c.repo_name)|n}
%endif
</div>
</div>
</div>
</%def>
<%def name="comment_inline_form()">
<div id='comment-inline-form-template' style="display:none">
<div class="ac">
%if c.authuser.username != 'default':
${h.form('#', class_='inline-form')}
<div class="well well-sm clearfix">
<div class="comment-help">${_('Commenting on line.')}
<span class="text-muted">${_('Comments are in plain text. Use @username inside this text to notify another user.')|n}</span>
</div>
<div class="mentions-container"></div>
<textarea name="text" class="form-control comment-block-ta yui-ac-input"></textarea>
<div id="status_block_container" class="status-block general-only hidden">
%if c.pull_request is None:
${_('Set changeset status')}:
%else:
${_('Vote for pull request status')}:
%endif
<span class="general-only cs-only">
</span>
<label class="radio-inline">
<input type="radio" class="status_change_radio" name="changeset_status" id="changeset_status_unchanged" value="" checked="checked" />
${_('No change')}
</label>
%for status, lbl in c.changeset_statuses:
<label class="radio-inline">
<input type="radio" class="status_change_radio" name="changeset_status" id="${status}" value="${status}">
${lbl}<i class="icon-circle changeset-status-${status}"></i>
</label>
%endfor
%if c.pull_request is not None and ( \
h.HasPermissionAny('hg.admin')() or h.HasRepoPermissionAny('repository.admin')(c.repo_name) \
or c.pull_request.owner_id == c.authuser.user_id):
<div>
${_('Finish pull request')}:
<label class="checkbox-inline">
<input id="save_close" type="checkbox" name="save_close">
${_("Close")}
</label>
<label class="checkbox-inline">
<input id="save_delete" type="checkbox" name="save_delete" value="delete">
${_("Delete")}
</label>
</div>
%endif
</div>
</div>
<div class="comment-button">
<div class="submitting-overlay">${_('Submitting ...')}</div>
${h.submit('save', _('Comment'), class_='btn btn-default btn-sm save-inline-form')}
${h.reset('hide-inline-form', _('Cancel'), class_='btn btn-default btn-sm hide-inline-form')}
</div>
${h.end_form()}
%else:
${h.form('')}
<div class="clearfix">
<div class="comment-help">
${_('You need to be logged in to comment.')} <a href="${h.url('login_home', came_from=request.path_qs)}">${_('Login now')}</a>
</div>
</div>
<div class="comment-button">
${h.reset('hide-inline-form', _('Hide'), class_='btn btn-default btn-sm hide-inline-form')}
</div>
${h.end_form()}
%endif
</div>
</div>
</%def>
## show comment count as "x comments (y inline, z general)"
<%def name="comment_count(inline_cnt, general_cnt)">
${'%s (%s, %s)' % (
ungettext("%d comment", "%d comments", inline_cnt + general_cnt) % (inline_cnt + general_cnt),
ungettext("%d inline", "%d inline", inline_cnt) % inline_cnt,
ungettext("%d general", "%d general", general_cnt) % general_cnt
)}
<span class="firstlink"></span>
</%def>
## generate inline comments and the main ones
<%def name="generate_comments()">
## original location of comments ... but the ones outside diff context remains here
<div class="comments inline-comments">
%for f_path, lines in c.inline_comments:
%for line_no, comments in lines.iteritems():
<div class="comments-list-chunk" data-f_path="${f_path}" data-line_no="${line_no}" data-target-id="${h.safeid(h.safe_unicode(f_path))}_${line_no}">
%for co in comments:
${comment_block(co)}
%endfor
</div>
%endfor
%endfor
<div class="comments-list-chunk" data-f_path="" data-line_no="" data-target-id="general-comments">
%for co in c.comments:
${comment_block(co)}
%endfor
</div>
</div>
<div class="comments-number">
${comment_count(c.inline_cnt, len(c.comments))}
</div>
</%def>
## MAIN COMMENT FORM
<%def name="comments(change_status=True)">
## global, shared for all edit boxes
<div class="mentions-container" id="mentions_container"></div>
<div class="inline-comments inline-comments-general
${'show-general-status' if change_status else ''}">
<div id="comments-general-comments" class="">
## comment_div for general comments
</div>
</div>
<script>
$(document).ready(function () {
$(window).on('beforeunload', function(){
var $textareas = $('.comment-inline-form textarea[name=text]');
if($textareas.size() > 1 ||
$textareas.val()) {
// this message will not be displayed on all browsers
// (e.g. some versions of Firefox), but the user will still be warned
return 'There are uncommitted comments.';
}
});
});
</script>
</%def>
|