diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-12-01 17:15:42 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-12-01 17:15:42 +0000 |
commit | db002edabdec9050e6d512ae8759783894b9624a (patch) | |
tree | a7f455c3b01a3c59380808b44ffb8b0d767acf82 | |
parent | 3baf086e2d8e5d969ce12217e1e143e5b4ec971a (diff) | |
download | redmine-db002edabdec9050e6d512ae8759783894b9624a.tar.gz redmine-db002edabdec9050e6d512ae8759783894b9624a.zip |
* 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
-rw-r--r-- | app/controllers/repositories_controller.rb | 14 | ||||
-rw-r--r-- | app/controllers/timelog_controller.rb | 2 | ||||
-rw-r--r-- | app/models/changeset.rb | 10 | ||||
-rw-r--r-- | app/views/repositories/revision.rhtml | 22 | ||||
-rw-r--r-- | public/stylesheets/application.css | 2 | ||||
-rw-r--r-- | test/fixtures/repositories.yml | 7 | ||||
-rw-r--r-- | test/functional/projects_controller_test.rb | 2 | ||||
-rw-r--r-- | test/functional/repositories_controller_test.rb | 46 | ||||
-rw-r--r-- | test/unit/changeset_test.rb | 20 | ||||
-rw-r--r-- | test/unit/repository_test.rb | 4 |
10 files changed, 118 insertions, 11 deletions
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 8ff464c5b..b332c7213 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -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 diff --git a/app/controllers/timelog_controller.rb b/app/controllers/timelog_controller.rb index 1a1bace3a..f90c4527e 100644 --- a/app/controllers/timelog_controller.rb +++ b/app/controllers/timelog_controller.rb @@ -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(', ') diff --git a/app/models/changeset.rb b/app/models/changeset.rb index 355a5754c..1b79104c4 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -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 diff --git a/app/views/repositories/revision.rhtml b/app/views/repositories/revision.rhtml index 32f8583a7..64d1668bc 100644 --- a/app/views/repositories/revision.rhtml +++ b/app/views/repositories/revision.rhtml @@ -1,8 +1,22 @@ <div class="contextual"> -<% form_tag do %> -<%= l(:label_revision) %>: <%= text_field_tag 'rev', @rev, :size => 5 %> -<%= submit_tag 'OK' %> -<% end %> + « + <% 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 -%> + » + + <% form_tag do %> + <%= text_field_tag 'rev', @rev, :size => 5 %> + <%= submit_tag 'OK' %> + <% end %> </div> <h2><%= l(:label_revision) %> <%= @changeset.revision %></h2> diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 1e3200135..acdb40cd0 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -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;} diff --git a/test/fixtures/repositories.yml b/test/fixtures/repositories.yml index 6d288b192..46afed245 100644 --- a/test/fixtures/repositories.yml +++ b/test/fixtures/repositories.yml @@ -6,3 +6,10 @@ repositories_001: root_url: svn://localhost
password: ""
login: ""
+repositories_002:
+ project_id: 2
+ url: svn://localhost/test
+ id: 11
+ root_url: svn://localhost
+ password: ""
+ login: ""
diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index c41adaa6c..a48fa26bc 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -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 index 000000000..d5ccc660d --- /dev/null +++ b/test/functional/repositories_controller_test.rb @@ -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 diff --git a/test/unit/changeset_test.rb b/test/unit/changeset_test.rb index ee53f18ff..2442a8b8c 100644 --- a/test/unit/changeset_test.rb +++ b/test/unit/changeset_test.rb @@ -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 diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb index 843b0b42c..5e0432c60 100644 --- a/test/unit/repository_test.rb +++ b/test/unit/repository_test.rb @@ -25,14 +25,14 @@ class RepositoryTest < Test::Unit::TestCase end def test_create
- repository = Repository::Subversion.new(:project => Project.find(2)) + repository = Repository::Subversion.new(:project => Project.find(3)) assert !repository.save repository.url = "svn://localhost"
assert repository.save repository.reload - project = Project.find(2) + project = Project.find(3) assert_equal repository, project.repository
end |