# set cset_href = href.changeset(new_rev, reponame)
    # set old_drev = display_rev(old_rev)
    # set new_drev = display_rev(new_rev)
    # set newpath
    ${new_path}
    # endset
    # set oldpath
    ${old_path}
    # endset
    # set newrev
    ${new_drev}
    # endset
    # set newrrev
    r${new_drev}
    # endset
    # set shortnewrev
    ${new_drev}
    # endset
    # set oldrrev
    r${old_drev}
    # endset
    # set logoldnew
    [${old_drev}:${new_drev}]
    # endset
    
  # endwith
  # set o = diff.options
  # set optionset = o.ignoreblanklines or o.ignorecase or o.ignorewhitespace
  # if not req.is_xhr and (has_diffs or optionset):
  
  # endif
  # macro node_change(idx, item, cl, kind)
  #   set ndiffs = len(item.diffs) if item.diffs is not none else 0
  #   set nprops = len(item.props)
  #   set is_removal = cl == 'rem'
  #   set path = item.old.get('path') if is_removal else item.new.get('path')
  #   set path = path and path[len(location):].strip('/')
  ## FIXME check path...
  # if reponame: # if changeset and restricted: # trans newrev, newpath, reponame Changeset ${newrev} in ${reponame} for ${newpath} # endtrans # elif not changeset and restricted: # trans newpath, logoldnew, reponame Changes in ${newpath} ${logoldnew} in ${reponame} # endtrans # elif not changeset and not restricted: # trans reponame, oldpath, oldrrev, newpath, newrrev Changes in ${reponame} from ${oldpath} at ${oldrev} to ${newpath} at ${newrev} # endtrans # else: # if annotated: # trans shortnewrev, reponame Changeset ${shortnewrev} in ${reponame} # endtrans # else: # trans new_drev, reponame Changeset ${new_drev} in ${reponame} # endtrans # endif # endif # else: # if changeset and restricted: # trans newrev, newpath=newpath Changeset ${newrev} for ${newpath} # endtrans # elif not changeset and restricted: # trans newpath, logoldnew Changes in ${newpath} ${logoldnew} # endtrans # elif not changeset and not restricted: # trans oldpath, oldrrev, newpath, newrrev Changes from ${oldpath} at ${oldrrev} to ${newpath} at ${newrrev} # endtrans # else: # if annotated: # trans shortnewrev Changeset ${shortnewrev} # endtrans # else: # trans new_drev Changeset ${new_drev} # endtrans # endif # endif # endif
- 
    # if changeset:
    
- ${_("Timestamp:")}
- # with delta = datetime.now(utc) - changeset.date ${format_datetime(changeset.date)} # if delta is lessthan(timedelta(0, 3600)): ${_("(less than one hour ago)")} # else: # trans age = dateinfo(changeset.date) (${age} ago) # endtrans # endif # endwith # for prop in properties: # if prop.rendered:
- ${prop.rendered.name}
- ${prop.rendered.content} # else:
- ${prop.name}:
- ${prop.value} # endif # endfor # endif # if location:
- ${_("Location:")}
- ${ location} # endif
- ${ngettext("File:", "Files:", num=len(files)) if files else _("(No files)")}
- 
      # if filestats:
      # with f = filestats # set added, deleted, edited, copied, moved = ( f.add, f.delete, f.edit, f['copy'], f.move)# endif- 
          # if added:
          
- ${ngettext("%(num)d added", "%(num)d added", num=added)} # endif # if deleted:
- ${ngettext("%(num)d deleted", "%(num)d deleted", num=deleted)} # endif # if edited:
- ${ngettext("%(num)d edited", "%(num)d edited", num=edited)} # endif # if copied:
- ${ngettext("%(num)d copied", "%(num)d copied", num=copied)} # endif # if moved:
- ${ngettext("%(num)d moved", "%(num)d moved", num=moved)} # endif
 
 - 
        # for item in changes:
        
- # if item.change == 'add': ${node_change(loop.index0, item, 'add', _("added"))} # elif item.change == 'delete': ${node_change(loop.index0, item, 'rem', _("deleted"))} # elif item.change == 'copy': ${node_change(loop.index0, item, 'cp', _("copied"))} # elif item.change == 'move': ${node_change(loop.index0, item, 'mv', _("moved"))} # elif item.change == 'edit': ${node_change(loop.index0, item, 'mod', _("modified"))} # else: ## ignored change (maybe because of diff options or ignored prop.) # endif # endfor
 
    # if has_diffs:
    
      
    # endif
    # if show_diffs is sameas false:
    #   if max_diff_bytes and diff_bytes is greaterthan(max_diff_bytes):
    #     if 'WIKI_VIEW' not in perm(Resource('wiki', 'TracIni')):
    #       set pretty_max_bytes = pretty_size(max_diff_bytes)
    #     else:
    #       set pretty_max_bytes
    ${pretty_size(max_diff_bytes)}
    #       endset
    #     endif
    #     set pretty_diff_bytes = pretty_size(diff_bytes)
    
    #   endif
    #   if max_diff_files and diff_files is greaterthan(max_diff_files):
    #     if 'WIKI_VIEW' not in perm(Resource('wiki', 'TracIni')):
    #       set pretty_max_files = max_diff_files
    #     else:
    #       set pretty_max_files
    ${max_diff_files}
    #       endset
    #     endif
    
    #   endif
    # endif
    # with no_id = false
    #   include 'diff_div.html'
    # endwith
    # if jmacros is defined:
    #   call(note, page) jmacros.wikihelp('TracChangeset'):
    #     trans note, page
    ${note} See ${page} for help on using the changeset viewer.
    #     endtrans
    #   endcall
    # endif
  
${_("Legend:")}
- ${_("Unmodified")}
- ${_("Added")}
- ${_("Removed")} # if diff.style != 'inline':
- ${_("Modified")} # endif