RhodeCode / rhodecode / templates / changeset / changeset.html

## -*- coding: utf-8 -*-

<%inherit file="/base/base.html"/>

<%def name="title()">
    ${c.repo_name} ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} - ${c.rhodecode_name}
</%def>

<%def name="breadcrumbs_links()">
    ${h.link_to(u'Home',h.url('/'))}
    &raquo;
    ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))}
    &raquo;
    ${_('Changeset')} - <span class='hash'>r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}</span>
</%def>

<%def name="page_nav()">
    ${self.menu('changelog')}
</%def>

<%def name="main()">
<div class="box">
    <!-- box / title -->
    <div class="title">
        ${self.breadcrumbs()}
    </div>
    <div class="table">
		<div class="diffblock">
			<div class="code-header">
                <div class="hash">
                 r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
                </div>
                <div class="date">
                  ${c.changeset.date}
                </div>
                <div class="diff-actions">
                  <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show')}" title="${_('raw diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
                  <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}" title="${_('download diff')}" class="tooltip"><img class="icon" src="${h.url('/images/icons/page_white_get.png')}"/></a>
                  ${c.ignorews_url()}
                  ${c.context_url()}
                </div>
                <div class="comments-number" style="float:right;padding-right:5px">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
			</div>
		</div>
	    <div id="changeset_content">
			<div class="container">
	             <div class="left">
	                 <div class="author">
	                     <div class="gravatar">
	                         <img alt="gravatar" src="${h.gravatar_url(h.email(c.changeset.author),20)}"/>
	                     </div>
	                     <span>${h.person(c.changeset.author)}</span><br/>
	                     <span><a href="mailto:${h.email_or_none(c.changeset.author)}">${h.email_or_none(c.changeset.author)}</a></span><br/>
	                 </div>
	                 <div class="message">${h.urlify_commit(h.wrap_paragraphs(c.changeset.message),c.repo_name)}</div>
	             </div>
	             <div class="right">
		             <div class="changes">
                        % if len(c.changeset.affected_files) <= c.affected_files_cut_off:
		                 <span class="removed" title="${_('removed')}">${len(c.changeset.removed)}</span>
		                 <span class="changed" title="${_('changed')}">${len(c.changeset.changed)}</span>
		                 <span class="added" title="${_('added')}">${len(c.changeset.added)}</span>
	                    % else:
                         <span class="removed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
                         <span class="changed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
                         <span class="added"   title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span>
	                    % endif
		             </div>

		            %if c.changeset.parents:
		             %for p_cs in reversed(c.changeset.parents):
		                 <div class="parent">${_('Parent')}
                     <span class="changeset_id">${p_cs.revision}:<span class="changeset_hash">${h.link_to(h.short_id(p_cs.raw_id),
		                     h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}</span></span>
		                 </div>
		             %endfor
                    %else:
                        <div class="parent">${_('No parents')}</div>
                    %endif
		         <span class="logtags">
                 %if len(c.changeset.parents)>1:
                 <span class="merge">${_('merge')}</span>
                 %endif
		             <span class="branchtag" title="${'%s %s' % (_('branch'),c.changeset.branch)}">
		             ${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
		             %for tag in c.changeset.tags:
		                 <span class="tagtag"  title="${'%s %s' % (_('tag'),tag)}">
		                 ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span>
		             %endfor
		         </span>
	                </div>
	        </div>
	        <span>
	        ${_('%s files affected with %s additions and %s deletions:') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
	        </span>
	        <div class="cs_files">
	                %for change,filenode,diff,cs1,cs2,stat in c.changes:
	                    <div class="cs_${change}">
                            <div class="node">
                            %if change != 'removed':
                                ${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path)+"_target")}
                            %else:
                                ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID('',filenode.path)))}
                            %endif
                            </div>
		                    <div class="changes">${h.fancy_file_stats(stat)}</div>
	                    </div>
	                %endfor
	                % if c.cut_off:
	                  ${_('Changeset was too big and was cut off...')}
	                % endif
	        </div>
	    </div>

    </div>

    ## diff block
    <%namespace name="diff_block" file="/changeset/diff_block.html"/>
    ${diff_block.diff_block(c.changes)}

    ## template for inline comment form
    <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
    ${comment.comment_inline_form(c.changeset)}

    ${comment.comments(c.changeset)}

    <script type="text/javascript">
      var deleteComment = function(comment_id){

          var url = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}".replace('__COMMENT_ID__',comment_id);
          var postData = '_method=delete';
          var success = function(o){
              var n = YUD.get('comment-'+comment_id);
              n.parentNode.removeChild(n);
          }
          ajaxPOST(url,postData,success);
      }

      YUE.onDOMReady(function(){

          YUE.on(YUQ('.show-inline-comments'),'change',function(e){
              var show = 'none';
              var target = e.currentTarget;
              if(target.checked){
                  var show = ''
              }
              var boxid = YUD.getAttribute(target,'id_for');
              var comments = YUQ('#{0} .inline-comments'.format(boxid));
              for(c in comments){
                 YUD.setStyle(comments[c],'display',show);
              }
              var btns = YUQ('#{0} .inline-comments-button'.format(boxid));
              for(c in btns){
                  YUD.setStyle(btns[c],'display',show);
               }
          })

          YUE.on(YUQ('.line'),'click',function(e){
              var tr = e.currentTarget;
              injectInlineForm(tr);
          });

          // inject comments into they proper positions
          var file_comments = YUQ('.inline-comment-placeholder');

          for (f in file_comments){
              var box = file_comments[f];
              var inlines = box.children;
              for(var i=0; i<inlines.length; i++){
                  try{

                    var inline = inlines[i];
                    var lineno = YUD.getAttribute(inlines[i],'line');
                    var lineid = "{0}_{1}".format(YUD.getAttribute(inline,'target_id'),lineno);
                    var target_line = YUD.get(lineid);

                    var add = createInlineAddButton(target_line.parentNode,'${_("add another comment")}');
                    YUD.insertAfter(add,target_line.parentNode);

                    var comment = new YAHOO.util.Element(tableTr('inline-comments',inline.innerHTML))
                    YUD.insertAfter(comment,target_line.parentNode);
                  }catch(e){
                	  console.log(e);
                  }
              }
          }
      })

    </script>

    </div>
</%def>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.