]> source.dussan.org Git - redmine.git/commitdiff
Show recent documents first (#29725).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 15 Mar 2019 10:51:22 +0000 (10:51 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 15 Mar 2019 10:51:22 +0000 (10:51 +0000)
Patch by Yuichi HARADA.

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

app/controllers/documents_controller.rb
app/views/documents/index.html.erb
test/fixtures/attachments.yml
test/fixtures/documents.yml
test/functional/documents_controller_test.rb
test/unit/project_copy_test.rb

index e458d838a3485be2d03ce269b8d858db46915d6e..fbd2b4136c3a1d813c9f36c6b7c6e20d67ffa874 100644 (file)
@@ -33,7 +33,8 @@ class DocumentsController < ApplicationController
     documents = @project.documents.includes(:attachments, :category).to_a
     case @sort_by
     when 'date'
-      @grouped = documents.group_by {|d| d.updated_on.to_date }
+      documents.sort!{|a,b| b.updated_on <=> a.updated_on}
+      @grouped = documents.group_by {|d| d.updated_on.to_date}
     when 'title'
       @grouped = documents.group_by {|d| d.title.first.upcase}
     when 'author'
index fc4090f555bf99e9f99f1394b7ee5157fa4d2b1b..c0458f8bfd8ad104f4d2442a4bf6e9229f085e86 100644 (file)
@@ -18,7 +18,7 @@
 
 <% if @grouped.empty? %><p class="nodata"><%= l(:label_no_data) %></p><% end %>
 
-<% @grouped.keys.sort.each do |group| %>
+<% @grouped.keys.sort.__send__(@sort_by == 'date' ? :reverse_each : :each) do |group| %>
     <h3><%= group %></h3>
     <%= render :partial => 'documents/document', :collection => @grouped[group] %>
 <% end %>
index 1b8740f49024406f165bc5395458170e4652cc12..15556c6c651b55adfe5b9a4ff14ecbf5b1a23574 100644 (file)
@@ -268,3 +268,16 @@ attachments_020:
   filename: root_attachment.txt
   filesize: 54
   author_id: 2
+attachments_021:
+  created_on: 2007-03-05 15:08:27 +01:00
+  container_type: Document
+  container_id: 3
+  downloads: 0
+  disk_filename: 060719210727_archive.zip
+  disk_directory: "2006/07"
+  digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+  id: 21
+  filesize: 157
+  filename: archive.zip
+  author_id: 1
+  content_type: application/zip
index eda9a104624b32df35fc5492aeeeb757e803f26d..b96fab6cf2ddce691af96c755ca75bf5f7a47ff7 100644 (file)
@@ -12,3 +12,10 @@ documents_002:
   id: 2
   description: ""
   category_id: 1
+documents_003:
+  created_on: 2007-03-05 15:08:27 +01:00
+  project_id: 1
+  title: "An other document 2"
+  id: 3
+  description: ""
+  category_id: 3
index ce43b50977b48078bd04c2631f9d0e6ad6141c4c..81cfec4c79b00f11ed0c646d85fe6b5d8a54114a 100644 (file)
@@ -47,13 +47,32 @@ class DocumentsControllerTest < Redmine::ControllerTest
     end
   end
 
+  def test_index_grouped_by_category
+    get :index, :params => {
+        :project_id => 'ecookbook',
+        :sort_by => 'category'
+      }
+    assert_response :success
+    assert_select '#content' do
+      # ascending order of DocumentCategory#id.
+      ['Uncategorized', 'Technical documentation'].each_with_index do |text,idx|
+        assert_select "h3:nth-of-type(#{idx + 1})", :text => text
+      end
+    end
+  end
+
   def test_index_grouped_by_date
     get :index, :params => {
         :project_id => 'ecookbook',
         :sort_by => 'date'
       }
     assert_response :success
-    assert_select 'h3', :text => '2007-02-12'
+    assert_select '#content' do
+      # descending order of date.
+      ['2007-03-05', '2007-02-12'].each_with_index do |text,idx|
+        assert_select "h3:nth-of-type(#{idx + 1})", :text => text
+      end
+    end
   end
 
   def test_index_grouped_by_title
@@ -62,7 +81,12 @@ class DocumentsControllerTest < Redmine::ControllerTest
         :sort_by => 'title'
       }
     assert_response :success
-    assert_select 'h3', :text => 'T'
+    assert_select '#content' do
+      # ascending order of title.
+      ['A', 'T'].each_with_index do |text,idx|
+        assert_select "h3:nth-of-type(#{idx + 1})", :text => text
+      end
+    end
   end
 
   def test_index_grouped_by_author
@@ -71,8 +95,13 @@ class DocumentsControllerTest < Redmine::ControllerTest
         :sort_by => 'author'
       }
     assert_response :success
-    assert_select 'h3', :text => 'John Smith'
-  end
+    assert_select '#content' do
+      # ascending order of author.
+      ['John Smith', 'Redmine Admin'].each_with_index do |text,idx|
+        assert_select "h3:nth-of-type(#{idx + 1})", :text => text
+      end
+    end
+   end
 
   def test_index_with_long_description
     # adds a long description to the first document
index 371de906cbf79fc6bde1c916246f0e8810f130f3..318251c3998f681830f26b75921b1617b86b17d0 100644 (file)
@@ -371,7 +371,7 @@ class ProjectCopyTest < ActiveSupport::TestCase
     source_project = Project.find(1)
     assert @project.copy(source_project)
 
-    assert_equal 2, @project.documents.size
+    assert_equal 3, @project.documents.size
     @project.documents.each do |document|
       assert !source_project.documents.include?(document)
     end