Files @ e99a33d7d7f5
Branch filter:

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

Søren Løvborg
cleanup: use obj.foo_id instead of obj.foo.foo_id

Don't use constructs like obj.user.user_id when obj.user_id works
equally well (and potentially saves a database load).
## -*- 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}" line="${co.line_no}">
    <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-mini" 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="clearfix">
        <div class="comment-help">${_('Commenting on line.')}
          <span style="color:#577632" class="tooltip">${_('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="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>
                <input type="radio" class="status_change_radio" name="changeset_status" id="changeset_status_unchanged" value="" checked="checked" />
                <label for="changeset_status_unchanged">
                  ${_('No change')}
                </label>
                %for status, lbl in c.changeset_statuses:
                    <label>
                      <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>
                    <input id="save_close" type="checkbox" name="save_close">
                    ${_("Close")}
                  </label>
                  <label>
                    <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-small save-inline-form')}
        ${h.reset('hide-inline-form', _('Cancel'), class_='btn btn-small 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-small 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>