changeset 884:322b53be49cc beta

Fixed url bug when using numeric revision in file browser, added follow branch checkbox for browsing only changesets from current branch
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 28 Dec 2010 18:17:04 +0100
parents 20ed6f6a6329
children 94f7585af8a1
files rhodecode/controllers/files.py rhodecode/public/css/style.css rhodecode/templates/files/files_browser.html
diffstat 3 files changed, 49 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/files.py	Tue Dec 28 01:57:53 2010 +0100
+++ b/rhodecode/controllers/files.py	Tue Dec 28 18:17:04 2010 +0100
@@ -57,28 +57,43 @@
     def index(self, repo_name, revision, f_path):
         hg_model = ScmModel()
         c.repo = hg_model.get_repo(c.repo_name)
-        revision = request.POST.get('at_rev', None) or revision
-
-        c.f_path = f_path
 
         try:
+            #reditect to given revision from form
+            post_revision = request.POST.get('at_rev', None)
+            if post_revision:
+                post_revision = c.repo.get_changeset(post_revision).raw_id
+                redirect(url('files_home', repo_name=c.repo_name,
+                             revision=post_revision, f_path=f_path))
+
+            c.branch = request.GET.get('branch', None)
+
+            c.f_path = f_path
+
             c.changeset = c.repo.get_changeset(revision)
             cur_rev = c.changeset.revision
 
+            #prev link
             try:
-                prev_rev = c.repo.get_changeset(cur_rev).prev().raw_id
+                prev_rev = c.repo.get_changeset(cur_rev).prev(c.branch).raw_id
                 c.url_prev = url('files_home', repo_name=c.repo_name,
                              revision=prev_rev, f_path=f_path)
+                if c.branch:
+                    c.url_prev += '?branch=%s' % c.branch
             except ChangesetDoesNotExistError:
                 c.url_prev = '#'
 
+            #next link
             try:
-                next_rev = c.repo.get_changeset(cur_rev).next().raw_id
+                next_rev = c.repo.get_changeset(cur_rev).next(c.branch).raw_id
                 c.url_next = url('files_home', repo_name=c.repo_name,
                          revision=next_rev, f_path=f_path)
+                if c.branch:
+                    c.url_next += '?branch=%s' % c.branch
             except ChangesetDoesNotExistError:
                 c.url_next = '#'
 
+            #files
             try:
                 c.files_list = c.changeset.get_node(f_path)
                 c.file_history = self._get_history(c.repo, c.files_list, f_path)
--- a/rhodecode/public/css/style.css	Tue Dec 28 01:57:53 2010 +0100
+++ b/rhodecode/public/css/style.css	Tue Dec 28 18:17:04 2010 +0100
@@ -1614,10 +1614,18 @@
 }
 
 div.browserblock .browser-header {
-border-bottom:1px solid #CCC;
 background:#FFF;
-color:blue;
 padding:10px 0;
+float:left;
+}
+
+div.browserblock .browser-branch {
+background:#FFF;
+padding:20px 0 0 0;
+float:left;
+}
+div.browserblock .browser-branch label {
+color:#4A4A4A;	
 }
 
 div.browserblock .browser-header span {
@@ -1627,6 +1635,7 @@
 
 div.browserblock .browser-body {
 background:#EEE;
+border-top:1px solid #CCC;
 }
 
 table.code-browser {
--- a/rhodecode/templates/files/files_browser.html	Tue Dec 28 01:57:53 2010 +0100
+++ b/rhodecode/templates/files/files_browser.html	Tue Dec 28 18:17:04 2010 +0100
@@ -17,6 +17,24 @@
 	    </div>           
 		${h.end_form()}
 	</div>
+    <div class="browser-branch">
+       ${h.checkbox('stay_at_branch',c.changeset.branch,c.changeset.branch==c.branch)}
+       <label>${_('follow current branch')}</label>
+       <script type="text/javascript">
+        YUE.on('stay_at_branch','click',function(e){
+        	if(e.target.checked){
+        		var uri = "${h.url.current(branch='__BRANCH__')}"
+        		uri = uri.replace('__BRANCH__',e.target.value);
+        		window.location = uri;
+        	}
+        	else{
+        		window.location = "${h.url.current()}";
+        	}
+        	
+        })
+       </script>
+    </div>
+    <div style="clear:both"></div>
 	<div class="browser-body">
 		<table class="code-browser">
 		         <thead>