Files @ 3fcb60a152f3
Branch filter:

Location: kallithea/kallithea/templates/changeset/changeset_file_comment.html

Mads Kiilerich
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.
## -*- 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()}">&para;</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>