mirror of
				https://github.com/redmine/redmine.git
				synced 2025-10-31 10:25:55 +01:00 
			
		
		
		
	* Added links to previous and next revisions on revision view (patch by Cyril Mougel slightly edited)
* 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
This commit is contained in:
		| @@ -19,6 +19,9 @@ require 'SVG/Graph/Bar' | |||||||
| require 'SVG/Graph/BarHorizontal' | require 'SVG/Graph/BarHorizontal' | ||||||
| require 'digest/sha1' | require 'digest/sha1' | ||||||
|  |  | ||||||
|  | class ChangesetNotFound < Exception | ||||||
|  | end | ||||||
|  |  | ||||||
| class RepositoriesController < ApplicationController | class RepositoriesController < ApplicationController | ||||||
|   layout 'base' |   layout 'base' | ||||||
|   before_filter :find_repository, :except => :edit |   before_filter :find_repository, :except => :edit | ||||||
| @@ -94,14 +97,19 @@ class RepositoriesController < ApplicationController | |||||||
|    |    | ||||||
|   def revision |   def revision | ||||||
|     @changeset = @repository.changesets.find_by_revision(@rev) |     @changeset = @repository.changesets.find_by_revision(@rev) | ||||||
|     show_error and return unless @changeset |     raise ChangesetNotFound unless @changeset | ||||||
|     @changes_count = @changeset.changes.size |     @changes_count = @changeset.changes.size | ||||||
|     @changes_pages = Paginator.new self, @changes_count, 150, params['page']								 |     @changes_pages = Paginator.new self, @changes_count, 150, params['page']								 | ||||||
|     @changes = @changeset.changes.find(:all, |     @changes = @changeset.changes.find(:all, | ||||||
|   						:limit  =>  @changes_pages.items_per_page, |   						:limit  =>  @changes_pages.items_per_page, | ||||||
|   						:offset =>  @changes_pages.current.offset) |   						: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 |   end | ||||||
|    |    | ||||||
|   def diff |   def diff | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ class TimelogController < ApplicationController | |||||||
|       begin; @date_to = params[:date_to].to_date; rescue; end |       begin; @date_to = params[:date_to].to_date; rescue; end | ||||||
|     end |     end | ||||||
|     @date_from ||= Date.civil(Date.today.year, 1, 1) |     @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? |     unless @criterias.empty? | ||||||
|       sql_select = @criterias.collect{|criteria| @available_criterias[criteria][:sql] + " AS " + criteria}.join(', ') |       sql_select = @criterias.collect{|criteria| @available_criterias[criteria][:sql] + " AS " + criteria}.join(', ') | ||||||
|   | |||||||
| @@ -91,4 +91,14 @@ class Changeset < ActiveRecord::Base | |||||||
|      |      | ||||||
|     self.issues = referenced_issues.uniq |     self.issues = referenced_issues.uniq | ||||||
|   end |   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 | end | ||||||
|   | |||||||
| @@ -1,8 +1,22 @@ | |||||||
| <div class="contextual"> | <div class="contextual"> | ||||||
| <% form_tag do %> |   « | ||||||
| <%= l(:label_revision) %>: <%= text_field_tag 'rev', @rev, :size => 5 %> |   <% unless @changeset.previous.nil? -%> | ||||||
| <%= submit_tag 'OK' %> |     <%= link_to l(:label_previous), :controller => 'repositories', :action => 'revision', :id => @project, :rev => @changeset.previous.revision %> | ||||||
| <% end %> |   <% 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 -%> | ||||||
|  |   »  | ||||||
|  |    | ||||||
|  |   <% form_tag do %> | ||||||
|  |     <%= text_field_tag 'rev', @rev, :size => 5 %> | ||||||
|  |     <%= submit_tag 'OK' %> | ||||||
|  |   <% end %> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <h2><%= l(:label_revision) %> <%= @changeset.revision %></h2> | <h2><%= l(:label_revision) %> <%= @changeset.revision %></h2> | ||||||
|   | |||||||
| @@ -111,6 +111,8 @@ div.square { | |||||||
| } | } | ||||||
|  |  | ||||||
| .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px;font-size:0.9em;} | .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%;} | .splitcontentleft{float:left; width:49%;} | ||||||
| .splitcontentright{float:right; width:49%;} | .splitcontentright{float:right; width:49%;} | ||||||
| form {display: inline;} | form {display: inline;} | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								test/fixtures/repositories.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								test/fixtures/repositories.yml
									
									
									
									
										vendored
									
									
								
							| @@ -6,3 +6,10 @@ repositories_001: | |||||||
|   root_url: svn://localhost |   root_url: svn://localhost | ||||||
|   password: "" |   password: "" | ||||||
|   login: "" |   login: "" | ||||||
|  | repositories_002:  | ||||||
|  |   project_id: 2 | ||||||
|  |   url: svn://localhost/test | ||||||
|  |   id: 11 | ||||||
|  |   root_url: svn://localhost | ||||||
|  |   password: "" | ||||||
|  |   login: "" | ||||||
|   | |||||||
| @@ -89,7 +89,7 @@ class ProjectsControllerTest < Test::Unit::TestCase | |||||||
|   end |   end | ||||||
|  |  | ||||||
|   def test_activity |   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_response :success | ||||||
|     assert_template 'activity' |     assert_template 'activity' | ||||||
|     assert_not_nil assigns(:events_by_day) |     assert_not_nil assigns(:events_by_day) | ||||||
|   | |||||||
							
								
								
									
										46
									
								
								test/functional/repositories_controller_test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								test/functional/repositories_controller_test.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||||
| @@ -39,4 +39,24 @@ class ChangesetTest < Test::Unit::TestCase | |||||||
|     assert fixed.closed? |     assert fixed.closed? | ||||||
|     assert_equal 90, fixed.done_ratio |     assert_equal 90, fixed.done_ratio | ||||||
|   end |   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 | end | ||||||
|   | |||||||
| @@ -25,14 +25,14 @@ class RepositoryTest < Test::Unit::TestCase | |||||||
|   end |   end | ||||||
|    |    | ||||||
|   def test_create |   def test_create | ||||||
|     repository = Repository::Subversion.new(:project => Project.find(2)) |     repository = Repository::Subversion.new(:project => Project.find(3)) | ||||||
|     assert !repository.save |     assert !repository.save | ||||||
|    |    | ||||||
|     repository.url = "svn://localhost" |     repository.url = "svn://localhost" | ||||||
|     assert repository.save |     assert repository.save | ||||||
|     repository.reload |     repository.reload | ||||||
|      |      | ||||||
|     project = Project.find(2) |     project = Project.find(3) | ||||||
|     assert_equal repository, project.repository |     assert_equal repository, project.repository | ||||||
|   end |   end | ||||||
|    |    | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user