Files @ 0ed42ca7ff9e
Branch filter:

Location: kallithea/rhodecode/templates/changeset/diff_block.html

Marcin Kuzminski
Fixed issue with inproper handling of diff parsing that could lead to infinit loops.
This was an edge case when diff contained diff data inside. Regresion test was
added
## -*- coding: utf-8 -*-
##usage:
## <%namespace name="diff_block" file="/changeset/diff_block.html"/>
## ${diff_block.diff_block(change)}
##
<%def name="diff_block(change)">

%for FID,(cs1, cs2, change, path, diff, stats) in change.iteritems():
    ##%if op !='removed':
    <div id="${FID}_target" style="clear:both;margin-top:25px"></div>
    <div id="${FID}" class="diffblock  margined comm">
        <div class="code-header">
            <div class="changeset_header">
                <div class="changeset_file">
                    ${h.link_to_if(change!='removed',h.safe_unicode(path),h.url('files_home',repo_name=c.repo_name,
                    revision=cs2,f_path=h.safe_unicode(path)))}
                </div>
                <div class="diff-actions">
                  <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(path),diff2=cs2,diff1=cs1,diff='diff',fulldiff=1)}" class="tooltip" title="${h.tooltip(_('show full diff for this file'))}"><img class="icon" src="${h.url('/images/icons/page_white_go.png')}"/></a>
                  <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(path),diff2=cs2,diff1=cs1,diff='raw')}" class="tooltip" title="${h.tooltip(_('raw diff'))}"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
                  <a href="${h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(path),diff2=cs2,diff1=cs1,diff='download')}" class="tooltip" title="${h.tooltip(_('download diff'))}"><img class="icon" src="${h.url('/images/icons/page_save.png')}"/></a>
                  ${c.ignorews_url(request.GET, h.FID(cs2,path))}
                  ${c.context_url(request.GET, h.FID(cs2,path))}
                </div>
                <span style="float:right;margin-top:-3px">
                  <label>
                  ${_('show inline comments')}
                  ${h.checkbox('',checked="checked",class_="show-inline-comments",id_for=h.FID(cs2,path))}
                  </label>
                </span>
            </div>
        </div>
        <div class="code-body">
            <div class="full_f_path" path="${h.safe_unicode(path)}"></div>
            ${diff|n}
        </div>
    </div>
    ##%endif
%endfor

</%def>

<%def name="diff_block_simple(change)">

  %for op,filenode_path,diff in change:
    <div id="${h.FID('',filenode_path)}_target" style="clear:both;margin-top:25px"></div>
    <div id="${h.FID('',filenode_path)}" class="diffblock  margined comm">
      <div class="code-header">
          <div class="changeset_header">
              <div class="changeset_file">
                  <a href="#">${h.safe_unicode(filenode_path)}</a>
              </div>
          </div>
      </div>
        <div class="code-body">
            <div class="full_f_path" path="${h.safe_unicode(filenode_path)}"></div>
            ${diff|n}
        </div>
    </div>
  %endfor
</%def>