]> source.dussan.org Git - redmine.git/commitdiff
Added radio buttons on the documents list to sort documents by category, date, title...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 4 Nov 2007 11:15:04 +0000 (11:15 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 4 Nov 2007 11:15:04 +0000 (11:15 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@879 e93f8b46-1217-0410-a6f0-8f06a7374b81

22 files changed:
app/controllers/projects_controller.rb
app/helpers/sort_helper.rb
app/models/enumeration.rb
app/views/projects/list_documents.rhtml
lang/bg.yml
lang/cs.yml
lang/de.yml
lang/en.yml
lang/es.yml
lang/fr.yml
lang/he.yml
lang/it.yml
lang/ja.yml
lang/ko.yml
lang/nl.yml
lang/pl.yml
lang/pt-br.yml
lang/pt.yml
lang/ro.yml
lang/sr.yml
lang/sv.yml
lang/zh.yml

index 394e545d00a7b7f9509cfa7c8b4ee9e96ae12d62..ae9c242e09e90d611fc05c7f53549445a645462e 100644 (file)
@@ -188,7 +188,19 @@ class ProjectsController < ApplicationController
   
   # Show documents list of @project
   def list_documents
-    @documents = @project.documents.find :all, :include => :category
+    @sort_by = %w(category date title author).include?(params[:sort_by]) ? params[:sort_by] : 'category'
+    documents = @project.documents.find :all, :include => [:attachments, :category]
+    case @sort_by
+    when 'date'
+      @grouped = documents.group_by {|d| d.created_on.to_date }
+    when 'title'
+      @grouped = documents.group_by {|d| d.title.first.upcase}
+    when 'author'
+      @grouped = documents.select{|d| d.attachments.any?}.group_by {|d| d.attachments.last.author}
+    else
+      @grouped = documents.group_by(&:category)
+    end
+    render :layout => false if request.xhr?
   end
 
   # Add a new issue to @project
index e1e87cbbbc5bdc1059985dad91bfef7a063a7bc3..dfd681fff509b52cc2b2f9ede72877f3e89ff188 100644 (file)
@@ -138,7 +138,7 @@ module SortHelper
   #
   def sort_header_tag(column, options = {})
     caption = options.delete(:caption) || titleize(Inflector::humanize(column))
-    options[:title]= l(:label_sort_by, caption) unless options[:title]
+    options[:title]= l(:label_sort_by, "\"#{caption}\"") unless options[:title]
     content_tag('th', sort_link(column, caption), options)
   end
 
index 744bc1a88544fd5195ecb4a49cf31d7580cacc32..400681a43821b7db7b1f29eee993262293ff44c5 100644 (file)
@@ -47,6 +47,10 @@ class Enumeration < ActiveRecord::Base
     Enumeration.update_all("is_default = #{connection.quoted_false}", {:opt => opt}) if is_default?
   end
   
+  def <=>(enumeration)
+    position <=> enumeration.position
+  end
+  
   def to_s; name end
   
 private
index 595b15fd18bf62aa9318d0ddb5eae880abc3ec86..bb272ee865ef22507a410cec96a33c03ad72692d 100644 (file)
 
 <h2><%=l(:label_document_plural)%></h2>
 
-<% if @documents.empty? %>
-<p class="nodata"><%= l(:label_no_data) %></p>
+<% if @grouped.empty? %><p class="nodata"><%= l(:label_no_data) %></p><% end %>
+
+<% @grouped.keys.sort.each do |group| %>
+    <h3><%= group %></h3>
+    <%= render :partial => 'documents/document', :collection => @grouped[group] %>
 <% end %>
 
-<% documents = @documents.group_by {|d| d.category } %>
-<% documents.each do |category, docs| %>
-    <h3><%= category.name %></h3>
-    <%= render :partial => 'documents/document', :collection => docs %>
-<% end %>
\ No newline at end of file
+<% content_for :sidebar do %>
+    <h3><%= l(:label_sort_by, '') %></h3>
+    <% form_tag({}, :method => :get) do %>
+    <label><%= radio_button_tag 'sort_by', 'category', (@sort_by == 'category'), :onclick => 'this.form.submit();' %> <%= l(:field_category) %></label><br />
+    <label><%= radio_button_tag 'sort_by', 'date', (@sort_by == 'date'), :onclick => 'this.form.submit();' %> <%= l(:label_date) %></label><br />
+    <label><%= radio_button_tag 'sort_by', 'title', (@sort_by == 'title'), :onclick => 'this.form.submit();' %> <%= l(:field_title) %></label><br />
+    <label><%= radio_button_tag 'sort_by', 'author', (@sort_by == 'author'), :onclick => 'this.form.submit();' %> <%= l(:field_author) %></label>
+    <% end %>
+<% end %>
index 4697925353a40d69624ce9a21f32f712a7fe037f..07360a3c47efd51167a1ec04845a0dd935c546d1 100644 (file)
@@ -416,7 +416,7 @@ label_week: Седмица
 label_date_from: От
 label_date_to: До
 label_language_based: В зависимост от езика
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 label_send_test_email: Изпращане на тестов e-mail
 label_feeds_access_key_created_on: %s от създаването на RSS ключа
 label_module_plural: Модули
index d62746633a3ae8f0564c66d64d975ed2e7f95ce6..86d9a494cd40f7c0fcbbbe1c86d088d4c659ac17 100644 (file)
@@ -414,7 +414,7 @@ label_week: Týden
 label_date_from: Od
 label_date_to: Do
 label_language_based: Language based
-label_sort_by: Seřadit podle "%s"
+label_sort_by: Seřadit podle %s
 label_send_test_email: Poslat testovací email
 label_feeds_access_key_created_on: Přístupový klíč pro RSS byl vytvořen před %s
 
index 9a5fcee2b107dc4fbe610dac395775a3d302453e..c1acaa3670c3777d42872b2a80c794898e19a983 100644 (file)
@@ -416,7 +416,7 @@ label_week: Woche
 label_date_from: Von
 label_date_to: Bis
 label_language_based: Sprachabhängig
-label_sort_by: Sortiert nach "%s"
+label_sort_by: Sortiert nach %s
 label_send_test_email: Test-E-Mail senden
 label_feeds_access_key_created_on: RSS-Zugriffsschlüssel vor %s erstellt
 label_module_plural: Module
index 2ab4c11a2a9fb90422a4975779ae0b9bd58803ff..480f30a13ffa0a9e72bce23d8cd9bea6f7ebbfd5 100644 (file)
@@ -427,7 +427,7 @@ label_week: Week
 label_date_from: From
 label_date_to: To
 label_language_based: Language based
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 label_send_test_email: Send a test email
 label_feeds_access_key_created_on: RSS access key created %s ago
 label_module_plural: Modules
index e93fb5bd877642fd41a3a8e4e3273417c54708e0..16a2d3ac358c29246cecc257bedf2a7d2c02e6fd 100644 (file)
@@ -501,7 +501,7 @@ label_this_week: this week
 label_index_by_title: Index by title
 label_jump_to_a_project: Jump to a project...
 field_assignable: Issues can be assigned to this role
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 setting_issue_list_default_columns: Default columns displayed on the issue list
 text_issue_updated: Issue %s has been updated.
 notice_feeds_access_key_reseted: Your RSS access key was reseted.
index 1f35272c127607c916e00f19f2b43aebbff65565..9bd28c08234d6967d0dc8f13f5cc2cb32f48f463 100644 (file)
@@ -427,7 +427,7 @@ label_week: Semaine
 label_date_from: Du
 label_date_to: Au
 label_language_based: Basé sur la langue
-label_sort_by: Trier par "%s"
+label_sort_by: Trier par %s
 label_send_test_email: Envoyer un email de test
 label_feeds_access_key_created_on: Clé d'accès RSS créée il y a %s
 label_module_plural: Modules
index 73f72d5bbe4567787012289234b27f3d28daf1db..97fa51e064b7bdf848cd32f2b3c04d1fdd81e5ae 100644 (file)
@@ -421,7 +421,7 @@ label_week: שבו
 label_date_from: מאת
 label_date_to: אל
 label_language_based: מבוסס שפה
-label_sort_by: מין לפי "%s"
+label_sort_by: מין לפי %s
 label_send_test_email: שלח דו"ל בדיקה
 label_feeds_access_key_created_on: מפתח הזנת RSS נוצר לפני%s
 label_module_plural: מודולים
index 224843e0ef7fd29e93b55c1ea17ef8036ed97d9c..03442eb41428abcbdd75201ccaab11a857e84776 100644 (file)
@@ -416,7 +416,7 @@ label_week: Week
 label_date_from: From
 label_date_to: To
 label_language_based: Language based
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 label_send_test_email: Send a test email
 label_feeds_access_key_created_on: RSS access key created %s ago
 label_module_plural: Modules
index caf0f292e600372f5f1413d5930ad1b825a48379..226f565699cdf2175a1309da7806096fbc214dfd 100644 (file)
@@ -417,7 +417,7 @@ label_week: Week
 label_date_from: From
 label_date_to: To
 label_language_based: 既定の言語の設定に従う
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 label_send_test_email: テストメールを送信
 label_feeds_access_key_created_on: RSS access key created %s ago
 label_module_plural: Modules
index 6629a14b005277704b19f6feb3d0194653e3bcf8..2ff051e804645c854d8f477ef79fe32ae0110b01 100644 (file)
@@ -423,7 +423,7 @@ label_week: 주
 label_date_from: From
 label_date_to: To
 label_language_based: Language based
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 label_send_test_email: Send a test email
 label_feeds_access_key_created_on: RSS access key created %s ago
 label_module_plural: Modules
index f43f5a5b99e0d438e1da8d11ff8bcfc9282d7170..8202428696da6bda52b36b9f58bd524f0ed3a9c1 100644 (file)
@@ -416,7 +416,7 @@ label_week: Week
 label_date_from: From
 label_date_to: To
 label_language_based: Language based
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 label_send_test_email: Send a test email
 label_feeds_access_key_created_on: RSS access key created %s ago
 label_module_plural: Modules
index e636afe5b468d5fea7e4ff58c3d8dfa1d236ba16..ea7485d2d39b64c104986e375598a954c4095d14 100644 (file)
@@ -497,7 +497,7 @@ label_module_plural: Moduły
 label_this_week: ten tydzień
 label_jump_to_a_project: Skocz do projektu...
 field_assignable: Zgłoszenia mogą być przypisane do tej roli
-label_sort_by: Sortuj po "%s"
+label_sort_by: Sortuj po %s
 text_issue_updated: Zgłoszenie %s zostało zaktualizowane.
 notice_feeds_access_key_reseted: Twój klucz dostępu RSS został zrestetowany.
 field_redirect_existing_links: Przekierowanie istniejących odnośników
index 707baffcdfbdc11f32518da4ac7320b2811e18a1..bce1d2630262b9e45ce61737509aa36e9c419fbe 100644 (file)
@@ -416,7 +416,7 @@ label_week: Week
 label_date_from: From\r
 label_date_to: To\r
 label_language_based: Language based\r
-label_sort_by: Sort by "%s"\r
+label_sort_by: Sort by %s\r
 label_send_test_email: Send a test email\r
 label_feeds_access_key_created_on: RSS access key created %s ago\r
 label_module_plural: Modules\r
index 687ab512ba4b449faf87a4bd7cdd4042e233531e..e9233f33327d0b5b5873fdcdc6bf542023200d54 100644 (file)
@@ -416,7 +416,7 @@ label_week: Week
 label_date_from: From
 label_date_to: To
 label_language_based: Language based
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 label_send_test_email: Send a test email
 label_feeds_access_key_created_on: RSS access key created %s ago
 label_module_plural: Modules
index f31bd6f84478cb8f43ac2cdb69051d9ba4be488c..b6002ac8794ba71e0522ede7b59b4efa8a79f1ed 100644 (file)
@@ -414,7 +414,7 @@ label_week: Saptamana
 label_date_from: De la
 label_date_to: Pentru
 label_language_based: Bazat pe limbaj
-label_sort_by: Sortare dupa "%s"
+label_sort_by: Sortare dupa %s
 label_send_test_email: trimite un e-mail de test
 label_feeds_access_key_created_on: Parola de acces RSS creat cu %s mai devreme
 label_module_plural: Module
index d958557310cfe173526e4ec00d0a2597d3d678e4..39ae09da3b11d5248f0da0563eac0e635c562928 100644 (file)
@@ -426,7 +426,7 @@ label_week: Nedelja
 label_date_from: Od
 label_date_to: Do
 label_language_based: Bazirano na jeziku
-label_sort_by: Sortiraj po "%s"
+label_sort_by: Sortiraj po %s
 label_send_test_email: Pošalji probni email
 label_feeds_access_key_created_on: RSS ključ za pristup je kreiran pre %s 
 label_module_plural: Modulovi
index 0cd4f1a1fae96a5863207fdac516449555739a9b..df814fbae8819c0fb233f005131d7c1d33290eb0 100644 (file)
@@ -416,7 +416,7 @@ label_week: Week
 label_date_from: From
 label_date_to: To
 label_language_based: Language based
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 label_send_test_email: Send a test email
 label_feeds_access_key_created_on: RSS access key created %s ago
 label_module_plural: Modules
index 7150109229dcc51751bb08b215e8821ff1e7e265..6b3d095e50bf07a395a51fda7ccc23bcfb362a3b 100644 (file)
@@ -418,7 +418,7 @@ label_week: Week
 label_date_from: From
 label_date_to: To
 label_language_based: Language based
-label_sort_by: Sort by "%s"
+label_sort_by: Sort by %s
 label_send_test_email: Send a test email
 label_feeds_access_key_created_on: RSS access key created %s ago
 label_module_plural: Modules