]> source.dussan.org Git - redmine.git/commitdiff
* Added links to previous and next revisions on revision view (patch by Cyril Mougel...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 1 Dec 2007 17:15:42 +0000 (17:15 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 1 Dec 2007 17:15:42 +0000 (17:15 +0000)
* Fixed TimelogController#report december error
* Fixed ProjectsControllerTest#test_activity 1st and 2nd day of the month failure

git-svn-id: http://redmine.rubyforge.org/svn/trunk@938 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/repositories_controller.rb
app/controllers/timelog_controller.rb
app/models/changeset.rb
app/views/repositories/revision.rhtml
public/stylesheets/application.css
test/fixtures/repositories.yml
test/functional/projects_controller_test.rb
test/functional/repositories_controller_test.rb [new file with mode: 0644]
test/unit/changeset_test.rb
test/unit/repository_test.rb

index 8ff464c5bc4f77bc66b6c86e013e18efc2861507..b332c72131c1c8fa84f0ad7a9fb5644e6ca25748 100644 (file)
@@ -19,6 +19,9 @@ require 'SVG/Graph/Bar'
 require 'SVG/Graph/BarHorizontal'
 require 'digest/sha1'
 
+class ChangesetNotFound < Exception
+end
+
 class RepositoriesController < ApplicationController
   layout 'base'
   before_filter :find_repository, :except => :edit
@@ -94,14 +97,19 @@ class RepositoriesController < ApplicationController
   
   def revision
     @changeset = @repository.changesets.find_by_revision(@rev)
-    show_error and return unless @changeset
+    raise ChangesetNotFound unless @changeset
     @changes_count = @changeset.changes.size
     @changes_pages = Paginator.new self, @changes_count, 150, params['page']                                                           
     @changes = @changeset.changes.find(:all,
                                                :limit  =>  @changes_pages.items_per_page,
                                                :offset =>  @changes_pages.current.offset)
-       
-       render :action => "revision", :layout => false if request.xhr?  
+
+    respond_to do |format|
+      format.html
+      format.js {render :layout => false}
+    end
+  rescue ChangesetNotFound
+    show_error
   end
   
   def diff
index 1a1bace3a8620f751cd28e4767119e84028527e9..f90c4527eb7e679bb62349c6179ce69b8788ccd6 100644 (file)
@@ -54,7 +54,7 @@ class TimelogController < ApplicationController
       begin; @date_to = params[:date_to].to_date; rescue; end
     end
     @date_from ||= Date.civil(Date.today.year, 1, 1)
-    @date_to ||= Date.civil(Date.today.year, Date.today.month+1, 1) - 1
+    @date_to ||= (Date.civil(Date.today.year, Date.today.month, 1) >> 1) - 1
     
     unless @criterias.empty?
       sql_select = @criterias.collect{|criteria| @available_criterias[criteria][:sql] + " AS " + criteria}.join(', ')
index 355a5754c308e27760cebcb416e7dd700fc23ce6..1b79104c4ce9f7553be78337d218d80c0b3c0bdc 100644 (file)
@@ -91,4 +91,14 @@ class Changeset < ActiveRecord::Base
     
     self.issues = referenced_issues.uniq
   end
+
+  # Returns the previous changeset
+  def previous
+    @previous ||= Changeset.find(:first, :conditions => ['revision < ? AND repository_id = ?', self.revision, self.repository_id], :order => 'revision DESC')
+  end
+
+  # Returns the next changeset
+  def next
+    @next ||= Changeset.find(:first, :conditions => ['revision > ? AND repository_id = ?', self.revision, self.repository_id], :order => 'revision ASC')
+  end
 end
index 32f8583a7e7492390c9468fef367c5bc7ce1017d..64d1668bcbd47e7143372522217d57b049f2c969 100644 (file)
@@ -1,8 +1,22 @@
 <div class="contextual">
-<% form_tag do %>
-<%= l(:label_revision) %>: <%= text_field_tag 'rev', @rev, :size => 5 %>
-<%= submit_tag 'OK' %>
-<% end %>
+  &#171;
+  <% unless @changeset.previous.nil? -%>
+    <%= link_to l(:label_previous), :controller => 'repositories', :action => 'revision', :id => @project, :rev => @changeset.previous.revision %>
+  <% else -%>
+    <%= l(:label_previous) %>
+  <% end -%>
+|
+  <% unless @changeset.next.nil? -%>
+    <%= link_to l(:label_next), :controller => 'repositories', :action => 'revision', :id => @project, :rev => @changeset.next.revision %>
+  <% else -%>
+    <%= l(:label_next) %>
+  <% end -%>
+  &#187;&nbsp;
+  
+  <% form_tag do %>
+    <%= text_field_tag 'rev', @rev, :size => 5 %>
+    <%= submit_tag 'OK' %>
+  <% end %>
 </div>
 
 <h2><%= l(:label_revision) %> <%= @changeset.revision %></h2>
index 1e3200135a12667dceb8945f2685d36506771024..acdb40cd0962d10d4ed38e554a4d2c0459e103eb 100644 (file)
@@ -111,6 +111,8 @@ div.square {
 }
 
 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px;font-size:0.9em;}
+.contextual input {font-size:0.9em;}
+
 .splitcontentleft{float:left; width:49%;}
 .splitcontentright{float:right; width:49%;}
 form {display: inline;}
index 6d288b192092a5aaa800452f0194c32cf5419f95..46afed2457bb2b62f9b744f2cd9d9baf1ca31690 100644 (file)
@@ -6,3 +6,10 @@ repositories_001:
   root_url: svn://localhost\r
   password: ""\r
   login: ""\r
+repositories_002: \r
+  project_id: 2\r
+  url: svn://localhost/test\r
+  id: 11\r
+  root_url: svn://localhost\r
+  password: ""\r
+  login: ""\r
index c41adaa6cf4fa1af9e6add984648deea2920f056..a48fa26bc5a1598ac32ff402f9bad325453f8602 100644 (file)
@@ -89,7 +89,7 @@ class ProjectsControllerTest < Test::Unit::TestCase
   end
 
   def test_activity
-    get :activity, :id => 1
+    get :activity, :id => 1, :year => 2.days.ago.to_date.year, :month => 2.days.ago.to_date.month
     assert_response :success
     assert_template 'activity'
     assert_not_nil assigns(:events_by_day)
diff --git a/test/functional/repositories_controller_test.rb b/test/functional/repositories_controller_test.rb
new file mode 100644 (file)
index 0000000..d5ccc66
--- /dev/null
@@ -0,0 +1,46 @@
+# redMine - project management software
+# Copyright (C) 2006-2007  Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+require File.dirname(__FILE__) + '/../test_helper'
+require 'repositories_controller'
+
+# Re-raise errors caught by the controller.
+class RepositoriesController; def rescue_action(e) raise e end; end
+
+class RepositoriesControllerTest < Test::Unit::TestCase
+  fixtures :projects, :users, :roles, :members, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
+  
+  def setup
+    @controller = RepositoriesController.new
+    @request    = ActionController::TestRequest.new
+    @response   = ActionController::TestResponse.new
+    User.current = nil
+  end
+  
+  def test_revision_with_before_nil_and_afer_normal
+    get :revision, {:id => 1, :rev => 1}
+    assert_response :success
+    assert_template 'revision'
+    assert_no_tag :tag => "div", :attributes => { :class => "contextual" },
+      :child => { :tag => "a", :attributes => { :href => '/repositories/revision/1?rev=0'}
+    }
+    assert_tag :tag => "div", :attributes => { :class => "contextual" },
+        :child => { :tag => "a", :attributes => { :href => '/repositories/revision/1?rev=2'}
+    }
+  end
+
+end
index ee53f18ffe9396554da452dc1c81ab6199696d3e..2442a8b8c59082692efcb288aba84292a9ae0c42 100644 (file)
@@ -39,4 +39,24 @@ class ChangesetTest < Test::Unit::TestCase
     assert fixed.closed?
     assert_equal 90, fixed.done_ratio
   end
+
+  def test_previous
+    changeset = Changeset.find_by_revision(3)
+    assert_equal Changeset.find_by_revision(2), changeset.previous
+  end
+
+  def test_previous_nil
+    changeset = Changeset.find_by_revision(1)
+    assert_nil changeset.previous
+  end
+
+  def test_next
+    changeset = Changeset.find_by_revision(2)
+    assert_equal Changeset.find_by_revision(3), changeset.next
+  end
+
+  def test_next_nil
+    changeset = Changeset.find_by_revision(4)
+    assert_nil changeset.next
+  end
 end
index 843b0b42ccef929d5a7dc8f5a0e0ce86bb0bcea3..5e0432c6060412cb432bac151a916441441118cd 100644 (file)
@@ -25,14 +25,14 @@ class RepositoryTest < Test::Unit::TestCase
   end
   \r
   def test_create\r
-    repository = Repository::Subversion.new(:project => Project.find(2))
+    repository = Repository::Subversion.new(:project => Project.find(3))
     assert !repository.save
   
     repository.url = "svn://localhost"\r
     assert repository.save
     repository.reload
     
-    project = Project.find(2)
+    project = Project.find(3)
     assert_equal repository, project.repository\r
   end