[Trac-tickets] [The Trac Project] #2556: Easy switching between revisions while previewing a file in browser

The Trac Project noreply at edgewall.com
Wed Jan 4 09:44:03 CST 2006


#2556: Easy switching between revisions while previewing a file in browser
------------------------------+---------------------------------------------
 Reporter:  pete at parkmed.com  |       Owner:  jonas
     Type:  enhancement       |      Status:  new  
 Priority:  normal            |   Milestone:  0.9.3
Component:  browser           |     Version:  0.9.2
 Severity:  normal            |    Keywords:       
------------------------------+---------------------------------------------
 While previewing a file in the browser it is helpful to be able to quickly
 jump back and forth between revisions. Attatched is a patch to the current
 /trunk/versioncontrol/web/browser.py to add links to the oldest, previous,
 next, and most recent revisions to a file being previewed. I'm not
 familiar with hacking the templates, so the links simply appear in the
 'alternate' file downloads area.

 {{{
 --- browser.py  2006-01-04 10:16:03.000000000 -0500
 +++ browser.py  2006-01-04 10:19:30.000000000 -0500
 @@ -25,6 +25,7 @@
  from trac.web.chrome import add_link, add_stylesheet,
 INavigationContributor
  from trac.wiki import wiki_to_html, wiki_to_oneliner, IWikiSyntaxProvider
  from trac.versioncontrol.web_ui.util import *
 +from trac.versioncontrol.svn_authz import SubversionAuthorizer


  IMG_RE = re.compile(r"\.(gif|jpg|jpeg|png)(\?.*)?$", re.IGNORECASE)
 @@ -211,6 +212,34 @@
              mime_type = get_mime_type(content)
              use_rev = rev and node.rev

 +            newestchgset = repos.get_youngest_rev()
 +            nodehistory = repos.get_path_history(node.path, newestchgset)
 +            allrevs = list(nodehistory)
 +            oldest_rev_num = len(allrevs) - 1
 +            oldest_rev = allrevs[oldest_rev_num]
 +            oldest_path = '%s' % oldest_rev[0]
 +            youngest_rev = allrevs[0]
 +            youngest_path = '%s' % youngest_rev[0]
 +            temprev = 0
 +       ##find the current rev
 +            for revision in allrevs:
 +               if revision[1] == int(node.rev):
 +                       break
 +               else:
 +                       temprev += 1
 +                       continue
 +
 +            current_rev = allrevs[temprev]
 +
 +            if current_rev != oldest_rev:
 +               previous_rev = allrevs[temprev + 1]
 +               prev_path = '%s' % previous_rev[0]
 +               if previous_rev != oldest_rev:
 +                       add_link(req, 'alternate',
 self.env.href.browser(oldest_path, rev=oldest_rev[1]), 'Oldest Revision')
 +                       add_link(req, 'alternate',
 self.env.href.browser(prev_path, rev=previous_rev[1]), 'Previous
 Revision')
 +                else:
 +                       add_link(req, 'alternate',
 self.env.href.browser(oldest_path, rev=oldest_rev[1]), 'Previous (Oldest)
 Revision')
 +
              if not is_binary(content):
                  if mime_type != 'text/plain':
                      plain_href = self.env.href.browser(node.path,
 rev=use_rev,
 @@ -230,6 +259,16 @@
              add_link(req, 'alternate', raw_href, 'Original Format',
 mime_type)
              req.hdf['file.raw_href'] = raw_href

 +            if current_rev != youngest_rev:
 +               next_rev = allrevs[temprev - 1]
 +               next_path = '%s' % next_rev[0]
 +                if temprev - 1 > 0 and next_rev != youngest_rev:
 +                       add_link(req, 'alternate',
 self.env.href.browser(next_path, rev=next_rev[1]), 'Next Revision')
 +                       add_link(req, 'alternate',
 self.env.href.browser(youngest_path, rev=youngest_rev[1]), 'Most Recent
 Revision')
 +                else:
 +                       add_link(req, 'alternate',
 self.env.href.browser(youngest_path, rev=youngest_rev[1]), 'Next (Most
 Recent) Revision')
 +
 +
              add_stylesheet(req, 'common/css/code.css')

      # IWikiSyntaxProvider methods
 }}}

-- 
Ticket URL: <http://projects.edgewall.com/trac/ticket/2556>
The Trac Project <http://trac.edgewall.com/>


More information about the Trac-Tickets mailing list