]> source.dussan.org Git - redmine.git/commitdiff
Removes routes for time entries nested under project/issues.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 4 Oct 2014 09:14:17 +0000 (09:14 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 4 Oct 2014 09:14:17 +0000 (09:14 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@13424 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/routes_helper.rb
app/views/timelog/_date_range.html.erb
app/views/timelog/index.html.erb
app/views/timelog/report.html.erb
config/routes.rb
test/functional/time_entry_reports_controller_test.rb
test/functional/timelog_controller_test.rb
test/integration/routing/timelog_test.rb
test/unit/helpers/routes_helper_test.rb [new file with mode: 0644]

index 4ebce94efe0e284790b4acfde6687c1f0687e7d0..d1370229aea83e77e44c53eec8d03d66bd796244 100644 (file)
@@ -36,4 +36,34 @@ module RoutesHelper
   def _project_gantt_path(project, *args)
     project ? project_gantt_path(project, *args) : issues_gantt_path(*args)
   end
+
+  def _time_entries_path(project, issue, *args)
+    if issue
+      issue_time_entries_path(issue, *args)
+    elsif project
+      project_time_entries_path(project, *args)
+    else
+      time_entries_path(*args)
+    end
+  end
+
+  def _report_time_entries_path(project, issue, *args)
+    if issue
+      report_issue_time_entries_path(issue, *args)
+    elsif project
+      report_project_time_entries_path(project, *args)
+    else
+      report_time_entries_path(*args)
+    end
+  end
+
+  def _new_time_entry_path(project, issue, *args)
+    if issue
+      new_issue_time_entry_path(issue, *args)
+    elsif project
+      new_project_time_entry_path(project, *args)
+    else
+      new_time_entry_path(*args)
+    end
+  end
 end
index 2b3dbf268a7bc07e5602e1b7fa1afc09b419ac8b..0c72012c179d31960cce9487a937abd687a48eea 100644 (file)
@@ -28,9 +28,9 @@
 <div class="tabs hide-when-print">
 <% query_params = params.slice(:f, :op, :v, :sort) %>
 <ul>
-    <li><%= link_to(l(:label_details), query_params.merge({:controller => 'timelog', :action => 'index', :project_id => @project, :issue_id => @issue }),
+    <li><%= link_to(l(:label_details), _time_entries_path(@project, @issue, query_params),
                                        :class => (action_name == 'index' ? 'selected' : nil)) %></li>
-    <li><%= link_to(l(:label_report), query_params.merge({:controller => 'timelog', :action => 'report', :project_id => @project, :issue_id => @issue}),
+    <li><%= link_to(l(:label_report), _report_time_entries_path(@project, @issue, query_params),
                                        :class => (action_name == 'report' ? 'selected' : nil)) %></li>
 </ul>
 </div>
index fa0c20ff35d644e53acc8f7e336e40eeb580e723..ad1854f3619fd4dc29f6ae386aec774366efddfc 100644 (file)
@@ -1,6 +1,6 @@
 <div class="contextual">
 <%= link_to l(:button_log_time), 
-            {:controller => 'timelog', :action => 'new', :project_id => @project, :issue_id => @issue},
+            _new_time_entry_path(@project, @issue),
             :class => 'icon icon-time-add' if User.current.allowed_to?(:log_time, @project, :global => true) %>
 </div>
 
@@ -8,7 +8,7 @@
 
 <h2><%= l(:label_spent_time) %></h2>
 
-<%= form_tag({:controller => 'timelog', :action => 'index', :project_id => @project, :issue_id => @issue}, :method => :get, :id => 'query_form') do %>
+<%= form_tag(params.slice(:project_id, :issue_id), :method => :get, :id => 'query_form') do %>
 <%= render :partial => 'date_range' %>
 <% end %>
 
index ac2637ef131bfe3a8d74cf0394e5affb3d2cb84e..cb556a6565161092cd0eaba4b473e719418a4d24 100644 (file)
@@ -1,14 +1,14 @@
 <div class="contextual">
-<%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'new', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time-add' %>
+<%= link_to l(:button_log_time), 
+            _new_time_entry_path(@project, @issue),
+            :class => 'icon icon-time-add' if User.current.allowed_to?(:log_time, @project, :global => true) %>
 </div>
 
 <%= render_timelog_breadcrumb %>
 
 <h2><%= l(:label_spent_time) %></h2>
 
-<%= form_tag({:controller => 'timelog', :action => 'report',
-              :project_id => @project, :issue_id => @issue},
-            :method => :get, :id => 'query_form') do %>
+<%= form_tag(params.slice(:project_id, :issue_id), :method => :get, :id => 'query_form') do %>
   <% @report.criteria.each do |criterion| %>
     <%= hidden_field_tag 'criteria[]', criterion, :id => nil %>
   <% end %>
index c9aea1961cbe88d0a2e7a9f46e95b3f5e425efb7..bb2c5bb12f141f3220a0565a62aa3d36a49073d9 100644 (file)
@@ -111,13 +111,7 @@ RedmineApp::Application.routes.draw do
     resource :enumerations, :controller => 'project_enumerations', :only => [:update, :destroy]
 
     get 'issues/:copy_from/copy', :to => 'issues#new', :as => 'copy_issue'
-    resources :issues, :only => [:index, :new, :create] do
-      resources :time_entries, :controller => 'timelog' do
-        collection do
-          get 'report'
-        end
-      end
-    end
+    resources :issues, :only => [:index, :new, :create]
     # issue form update
     match 'issues/update_form', :controller => 'issues', :action => 'update_form', :via => [:put, :post], :as => 'issue_form'
 
index 56e23f935849791e352ff569d78b74cbb97962c4..bbc4d3c1db941999220cf9fa9fb68a4827c5cec2 100644 (file)
@@ -130,13 +130,13 @@ class TimeEntryReportsControllerTest < ActionController::TestCase
   end
 
   def test_report_at_issue_level
-    get :report, :project_id => 1, :issue_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criteria => ["user", "activity"]
+    get :report, :issue_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criteria => ["user", "activity"]
     assert_response :success
     assert_template 'report'
     assert_not_nil assigns(:report)
     assert_equal "154.25", "%.2f" % assigns(:report).total_hours
     assert_tag :form,
-      :attributes => {:action => "/projects/ecookbook/issues/1/time_entries/report", :id => 'query_form'}
+      :attributes => {:action => "/issues/1/time_entries/report", :id => 'query_form'}
   end
 
   def test_report_by_week_should_use_commercial_year
index 4760b288d57e32935f484c9a2a5b7e939a8397fe..cc76cba218aad943f1a034ffa1e2a1be4563d18f 100644 (file)
@@ -581,7 +581,7 @@ class TimelogControllerTest < ActionController::TestCase
     assert_nil assigns(:from)
     assert_nil assigns(:to)
     assert_tag :form,
-      :attributes => {:action => "/projects/ecookbook/issues/1/time_entries", :id => 'query_form'}
+      :attributes => {:action => "/issues/1/time_entries", :id => 'query_form'}
   end
 
   def test_index_should_sort_by_spent_on_and_created_on
@@ -693,11 +693,11 @@ class TimelogControllerTest < ActionController::TestCase
   end
 
   def test_index_at_issue_level_should_include_csv_export_dialog
-    get :index, :project_id => 'ecookbook', :issue_id => 3
+    get :index, :issue_id => 3
     assert_response :success
 
     assert_select '#csv-export-options' do
-      assert_select 'form[action=?][method=get]', '/projects/ecookbook/issues/3/time_entries.csv'
+      assert_select 'form[action=?][method=get]', '/issues/3/time_entries.csv'
     end
   end
 
index eaba22c3b735322bbcf33c51f44aece7ec012daf..96bbfeb3960f0c235fa3dfcd9461d888f85ca95c 100644 (file)
@@ -134,57 +134,6 @@ class RoutingTimelogsTest < ActionController::IntegrationTest
       )
   end
 
-  def test_timelogs_scoped_under_project_and_issues
-    assert_routing(
-        { :method => 'get',
-          :path => "/projects/ecookbook/issues/234/time_entries" },
-        { :controller => 'timelog', :action => 'index',
-          :issue_id => '234', :project_id => 'ecookbook' }
-      )
-    assert_routing(
-        { :method => 'get',
-          :path => "/projects/ecookbook/issues/234/time_entries.csv" },
-        { :controller => 'timelog', :action => 'index',
-          :issue_id => '234', :project_id => 'ecookbook', :format => 'csv' }
-      )
-    assert_routing(
-        { :method => 'get',
-          :path => "/projects/ecookbook/issues/234/time_entries.atom" },
-        { :controller => 'timelog', :action => 'index',
-          :issue_id => '234', :project_id => 'ecookbook', :format => 'atom' }
-      )
-    assert_routing(
-        { :method => 'get',
-          :path => "/projects/ecookbook/issues/234/time_entries/new" },
-        { :controller => 'timelog', :action => 'new',
-          :issue_id => '234', :project_id => 'ecookbook' }
-      )
-    assert_routing(
-        { :method => 'get',
-          :path => "/projects/ecookbook/issues/234/time_entries/22/edit" },
-        { :controller => 'timelog', :action => 'edit', :id => '22',
-          :issue_id => '234', :project_id => 'ecookbook' }
-      )
-    assert_routing(
-        { :method => 'post',
-          :path => "/projects/ecookbook/issues/234/time_entries" },
-        { :controller => 'timelog', :action => 'create',
-          :issue_id => '234', :project_id => 'ecookbook' }
-      )
-    assert_routing(
-        { :method => 'put',
-          :path => "/projects/ecookbook/issues/234/time_entries/22" },
-        { :controller => 'timelog', :action => 'update', :id => '22',
-          :issue_id => '234', :project_id => 'ecookbook' }
-      )
-    assert_routing(
-        { :method => 'delete',
-          :path => "/projects/ecookbook/issues/234/time_entries/55" },
-        { :controller => 'timelog', :action => 'destroy', :id => '55',
-          :issue_id => '234', :project_id => 'ecookbook' }
-      )
-  end
-
   def test_timelogs_report
     assert_routing(
         { :method => 'get',
diff --git a/test/unit/helpers/routes_helper_test.rb b/test/unit/helpers/routes_helper_test.rb
new file mode 100644 (file)
index 0000000..f7fb9fb
--- /dev/null
@@ -0,0 +1,45 @@
+# encoding: utf-8
+#
+# Redmine - project management software
+# Copyright (C) 2006-2014  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.expand_path('../../../test_helper', __FILE__)
+
+class RoutesHelperTest < ActionView::TestCase
+  include Rails.application.routes.url_helpers
+
+  def test_time_entries_path
+    assert_equal '/projects/ecookbook/time_entries', _time_entries_path(Project.find(1), nil)
+    assert_equal '/issues/1/time_entries', _time_entries_path(Project.find(1), Issue.find(1))
+    assert_equal '/issues/1/time_entries', _time_entries_path(nil, Issue.find(1))
+    assert_equal '/time_entries', _time_entries_path(nil, nil)
+  end
+
+  def test_report_time_entries_path
+    assert_equal '/projects/ecookbook/time_entries/report', _report_time_entries_path(Project.find(1), nil)
+    assert_equal '/issues/1/time_entries/report', _report_time_entries_path(Project.find(1), Issue.find(1))
+    assert_equal '/issues/1/time_entries/report', _report_time_entries_path(nil, Issue.find(1))
+    assert_equal '/time_entries/report', _report_time_entries_path(nil, nil)
+  end
+
+  def test_new_time_entry_path
+    assert_equal '/projects/ecookbook/time_entries/new', _new_time_entry_path(Project.find(1), nil)
+    assert_equal '/issues/1/time_entries/new', _new_time_entry_path(Project.find(1), Issue.find(1))
+    assert_equal '/issues/1/time_entries/new', _new_time_entry_path(nil, Issue.find(1))
+    assert_equal '/time_entries/new', _new_time_entry_path(nil, nil)
+  end
+end