Files @ 5610fd9b6803
Branch filter:

Location: kallithea/rhodecode/templates/changeset/changeset.html - annotation

Marcin Kuzminski
added line context control to diffs
1cecc7db3106
1cecc7db3106
1e757ac98988
1e757ac98988
1e757ac98988
ffd07396d315
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
ffd07396d315
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
28524453bb76
1e757ac98988
1e757ac98988
f23828b00b21
ffd07396d315
1e757ac98988
ffd07396d315
f23828b00b21
f23828b00b21
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
ffd07396d315
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
ffd07396d315
1e757ac98988
1e757ac98988
1e757ac98988
1cecc7db3106
1e757ac98988
1e757ac98988
1e757ac98988
1cecc7db3106
1cecc7db3106
1cecc7db3106
1cecc7db3106
1cecc7db3106
1e757ac98988
1e757ac98988
1e757ac98988
e86191684f4b
1e757ac98988
f57aaf673743
f57aaf673743
f57aaf673743
1e757ac98988
ffd07396d315
ffd07396d315
1e757ac98988
1e757ac98988
f57aaf673743
f57aaf673743
f57aaf673743
1e757ac98988
1e757ac98988
ffd07396d315
1e757ac98988
1e757ac98988
ffd07396d315
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
0a2a10a1912f
0a2a10a1912f
0a2a10a1912f
1e757ac98988
0a2a10a1912f
0a2a10a1912f
e21ec97aca1f
e21ec97aca1f
e21ec97aca1f
e21ec97aca1f
e21ec97aca1f
e21ec97aca1f
e21ec97aca1f
0a2a10a1912f
0a2a10a1912f
1e757ac98988
1cecc7db3106
aaec08ad9daf
1cecc7db3106
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
0a2a10a1912f
1e757ac98988
1e757ac98988
b702d0d4b030
6ff8bcb783e9
555b68f94c45
555b68f94c45
014c9a58a0d9
014c9a58a0d9
1e757ac98988
1e757ac98988
014c9a58a0d9
1e757ac98988
014c9a58a0d9
1e757ac98988
014c9a58a0d9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
1e757ac98988
1e757ac98988
7276b170ce8b
7276b170ce8b
7276b170ce8b
7276b170ce8b
7276b170ce8b
7276b170ce8b
7276b170ce8b
1e757ac98988
1e757ac98988
1e757ac98988
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
7276b170ce8b
7276b170ce8b
d2de0c2f02cd
d2de0c2f02cd
7276b170ce8b
7276b170ce8b
7276b170ce8b
1f2ba96de73e
7276b170ce8b
1f2ba96de73e
7276b170ce8b
7276b170ce8b
7276b170ce8b
7276b170ce8b
7276b170ce8b
7276b170ce8b
7276b170ce8b
7276b170ce8b
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
7276b170ce8b
d2de0c2f02cd
1bf03daafaf0
1bf03daafaf0
1bf03daafaf0
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
d2de0c2f02cd
6f0143e5efe5
6f0143e5efe5
6f0143e5efe5
6f0143e5efe5
6f0143e5efe5
6f0143e5efe5
6f0143e5efe5
6f0143e5efe5
6f0143e5efe5
6f0143e5efe5
7276b170ce8b
7276b170ce8b
7276b170ce8b
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
6ff8bcb783e9
7276b170ce8b
7276b170ce8b
7276b170ce8b
5e4827a8e942
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
1f2ba96de73e
e21ec97aca1f
3efc47f59639
e21ec97aca1f
e21ec97aca1f
e21ec97aca1f
e21ec97aca1f
5e4827a8e942
5e4827a8e942
5e4827a8e942
5e4827a8e942
3efc47f59639
3efc47f59639
e21ec97aca1f
1f2ba96de73e
1f2ba96de73e
7276b170ce8b
7276b170ce8b
6f0143e5efe5
d2de0c2f02cd
aaec08ad9daf
## -*- 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')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)}
</%def>

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

<%def name="fid(raw_id,path)" filter="strip">
  <% 
    return 'C-%s-%s' % (h.short_id(raw_id),h.safeid(h.safe_unicode(path))) 
  %>
</%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>
                <span>${h.link_to(_('raw diff'),
				h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show'))}</span>
				 &raquo; <span>${h.link_to(_('download diff'),
				h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download'))}</span>
				<div class="comments-number" style="float:right;padding-right:5px">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
                </div>
			</div>
		</div>
	    <div id="changeset_content">
			<div class="container">
	             <div class="left">
	                 <div class="date">${_('commit')} ${c.changeset.revision}: ${h.short_id(c.changeset.raw_id)}@${c.changeset.date}</div>
	                 <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.link_to(h.wrap_paragraphs(c.changeset.message),h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</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 len(c.changeset.parents)>1:
		                 <div class="merge">
		                     ${_('merge')}<img alt="merge" src="${h.url('/images/icons/arrow_join.png')}"/>
		                 </div>
		                 %endif
		                 
		            %if c.changeset.parents:
		             %for p_cs in reversed(c.changeset.parents):
		                 <div class="parent">${_('Parent')} ${p_cs.revision}: ${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)}
		                 </div>
		             %endfor
                    %else: 
                        <div class="parent">${_('No parents')}</div>   
                    %endif		             
		         <span class="logtags">
		             <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 style="font-size:1.1em;font-weight: bold">
	        ${_('%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),h.url.current(anchor=self.fid(filenode.changeset.raw_id,filenode.path)))}
                            %else:
                                ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=self.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>
    	
	%for change,filenode,diff,cs1,cs2,stat in c.changes:
		%if change !='removed':
		<div style="clear:both;height:10px"></div>
		<div class="diffblock  margined comm" id="${self.fid(filenode.changeset.raw_id,filenode.path)}">
			<div class="code-header">
				<div class="changeset_header">
					<span class="changeset_file">
						${h.link_to_if(change!='removed',h.safe_unicode(filenode.path),h.url('files_home',repo_name=c.repo_name,
						revision=filenode.changeset.raw_id,f_path=h.safe_unicode(filenode.path)))}
					</span>
					&raquo; <span>${h.link_to(_('diff'),
					h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='diff'))}</span>
					&raquo; <span>${h.link_to(_('raw diff'),
					h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='raw'))}</span>
					&raquo; <span>${h.link_to(_('download diff'),
					h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='download'))}</span>
                    <span style="float:right">
                      <label>
                      ${_('show inline comments')}
                      ${h.checkbox('',checked="checked",class_="show-inline-comments",id_for=self.fid(filenode.changeset.raw_id,filenode.path))}
                      </label>
                    </span>
				</div>
			</div>
			<div class="code-body">
                <div class="full_f_path" path="${filenode.path}"></div>        
				%if diff:
					${diff|n}
				%else:
					${_('No changes in this file')}
				%endif
			</div>
		</div>
		%endif
	%endfor
  
    <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
    ## template for inline comment form
    ${comment.comment_inline_form()}
    
    <div class="comments">
        <div class="comments-number">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div>
        
        %for path, lines in c.inline_comments:
            <div style="display:none" class="inline-comment-placeholder" path="${path}" target_id="${self.fid(c.changeset.raw_id,path)}">
            % for line,comments in lines.iteritems():
                <div class="inline-comment-placeholder-line" line="${line}" target_id="${h.safeid(h.safe_unicode(path))}"> 
                %for co in comments:
                    ${comment.comment_block(co)}
                %endfor
                </div>
            %endfor
            </div>
        %endfor        
        
        %for co in c.comments:
            ${comment.comment_block(co)}
        %endfor
        %if c.rhodecode_user.username != 'default':
        <div class="comment-form">
            ${h.form(h.url('changeset_comment', repo_name=c.repo_name, revision=c.changeset.raw_id))}
            <strong>${_('Leave a comment')}</strong>
            <div class="clearfix">
                <div class="comment-help">
                    ${_('Comments parsed using')} <a href="${h.url('rst_help')}">RST</a> ${_('syntax')}
                </div>
                    ${h.textarea('text')}
            </div>
            <div class="comment-button">
            ${h.submit('save', _('Comment'), class_='ui-button')}
            </div>
            ${h.end_form()}
        </div>
        %endif
    </div>
    <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);
    		  }
    	  })
          
          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){}
        	  }
          }
      })
      
    </script> 
  </div>	
</%def>