summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-12-01 17:15:42 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-12-01 17:15:42 +0000
commitdb002edabdec9050e6d512ae8759783894b9624a (patch)
treea7f455c3b01a3c59380808b44ffb8b0d767acf82
parent3baf086e2d8e5d969ce12217e1e143e5b4ec971a (diff)
downloadredmine-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.rb14
-rw-r--r--app/controllers/timelog_controller.rb2
-rw-r--r--app/models/changeset.rb10
-rw-r--r--app/views/repositories/revision.rhtml22
-rw-r--r--public/stylesheets/application.css2
-rw-r--r--test/fixtures/repositories.yml7
-rw-r--r--test/functional/projects_controller_test.rb2
-rw-r--r--test/functional/repositories_controller_test.rb46
-rw-r--r--test/unit/changeset_test.rb20
-rw-r--r--test/unit/repository_test.rb4
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 %>
+ &#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>
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