]> source.dussan.org Git - redmine.git/commitdiff
Added a couple of new formats for the 'date format' setting.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 16 Nov 2007 20:26:36 +0000 (20:26 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 16 Nov 2007 20:26:36 +0000 (20:26 +0000)
Added a 'time format' setting.

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

25 files changed:
app/helpers/application_helper.rb
app/models/setting.rb
app/views/projects/activity.rhtml
app/views/settings/edit.rhtml
config/settings.yml
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/ru.yml
lang/sr.yml
lang/sv.yml
lang/zh.yml
test/unit/helpers/application_helper_test.rb

index c03f073c1a31e370c00694a953e843c542b80537..e9ea74e2d7e3c35b4b0bcac853a2f7b18be82071 100644 (file)
@@ -71,15 +71,17 @@ module ApplicationHelper
   
   def format_date(date)
     return nil unless date
-    @date_format ||= (Setting.date_format.to_i == 0 ? l(:general_fmt_date) : "%Y-%m-%d")
+    # "Setting.date_format.size < 2" is a temporary fix (content of date_format setting changed)
+    @date_format ||= (Setting.date_format.blank? || Setting.date_format.size < 2 ? l(:general_fmt_date) : Setting.date_format)
     date.strftime(@date_format)
   end
   
-  def format_time(time)
+  def format_time(time, include_date = true)
     return nil unless time
-    @date_format_setting ||= Setting.date_format.to_i
     time = time.to_time if time.is_a?(String)
-    @date_format_setting == 0 ? l_datetime(time) : (time.strftime("%Y-%m-%d") + ' ' + l_time(time))
+    @date_format ||= (Setting.date_format.blank? || Setting.date_format.size < 2 ? l(:general_fmt_date) : Setting.date_format)
+    @time_format ||= (Setting.time_format.blank? ? l(:general_fmt_time) : Setting.time_format)
+    include_date ? time.strftime("#{@date_format} #{@time_format}") : time.strftime(@time_format)
   end
   
   def authoring(created, author)
index 1c953f4c8e016b2b5f126426fe6e2fbe4d258071..4d4cf0045e326d82ce0f63dbf1256d984c5e5ebd 100644 (file)
 
 class Setting < ActiveRecord::Base
 
+  DATE_FORMATS = [
+       '%Y-%m-%d',
+       '%d/%m/%Y',
+       '%d.%m.%Y',
+       '%d-%m-%Y',
+       '%m/%d/%Y',
+       '%d %b %Y',
+       '%d %B %Y',
+       '%b %d, %Y',
+       '%B %d, %Y'
+    ]
+    
+  TIME_FORMATS = [
+    '%H:%M',
+    '%I:%M %p'
+    ]
+  
   cattr_accessor :available_settings
   @@available_settings = YAML::load(File.open("#{RAILS_ROOT}/config/settings.yml"))
   Redmine::Plugin.registered_plugins.each do |id, plugin|
index cc54eac95b557b6429881770e219940380fb20ca..c902d60a3d8b6abb38fde29b89738c9c82a52cb5 100644 (file)
@@ -4,7 +4,7 @@
   <h3><%= day_name(day.cwday) %> <%= day.day %></h3>
   <ul>
   <% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| %>
-    <li><p><%= e.event_datetime.strftime("%H:%M") %> <%= link_to truncate(e.event_title, 100), e.event_url %><br />
+    <li><p><%= format_time(e.event_datetime, false) %> <%= link_to truncate(e.event_title, 100), e.event_url %><br />
     <% unless e.event_description.blank? %><em><%= truncate(e.event_description, 500) %></em><br /><% end %>
     <span class="author"><%= e.event_author if e.respond_to?(:event_author) %></span></p></li>
   <% end %>
index b08b707bfe1878909f1333b193e06322dc791308..62aa7974c838a4e378872af2328b9cb4b0c96bbd 100644 (file)
 <%= select_tag 'settings[default_language]', options_for_select( lang_options_for_select(false), Setting.default_language) %></p>
 
 <p><label><%= l(:setting_date_format) %></label>
-<%= select_tag 'settings[date_format]', options_for_select( [[l(:label_language_based), '0'], ['ISO 8601 (YYYY-MM-DD)', '1']], Setting.date_format) %></p>
+<%= select_tag 'settings[date_format]', options_for_select( [[l(:label_language_based), '']] + Setting::DATE_FORMATS.collect {|f| [Date.today.strftime(f), f]}, Setting.date_format) %></p>
+
+<p><label><%= l(:setting_time_format) %></label>
+<%= select_tag 'settings[time_format]', options_for_select( [[l(:label_language_based), '']] + Setting::TIME_FORMATS.collect {|f| [Time.now.strftime(f), f]}, Setting.time_format) %></p>
 
 <p><label><%= l(:setting_attachment_max_size) %></label>
 <%= text_field_tag 'settings[attachment_max_size]', Setting.attachment_max_size, :size => 6 %> KB</p>
index 333203f032aa64c3c77ec8f3889a342c8c8283ee..c59a5242e9b0f1c27d56e6fb5d0540bdf83e926d 100644 (file)
@@ -71,11 +71,10 @@ autologin:
   format: int
   default: 0
 # date format
-# 0: language based
-# 1: ISO format
 date_format:
-  format: int
-  default: 0
+  default: ''
+time_format:
+  default: ''
 cross_project_issue_relations:
   default: 0
 notified_events:
index 06ad0c39decc87377839aa1b7b5f95ff5af23702..09a94397323ccde30e8280249d8fde9cca43b15b 100644 (file)
@@ -537,3 +537,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 261b41d8b33e0ddf55d2efd7d28db5f86cdf2ea0..493bc77a5a140e62d0c047d46007b1e4c6004f3c 100644 (file)
@@ -537,3 +537,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index c0389fb3478e746c581d0c2ad2c268a94f2d718c..7463e93ec3b9dc5c578d86ed2ed21238893380ed 100644 (file)
@@ -537,3 +537,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 00a4886daedeae9b68c4fc85a6122e1b8a05de6a..c51a76c802bd55d7e06cc8cfc0f22cddd4bd2051 100644 (file)
@@ -186,6 +186,7 @@ setting_commit_ref_keywords: Referencing keywords
 setting_commit_fix_keywords: Fixing keywords
 setting_autologin: Autologin
 setting_date_format: Date format
+setting_time_format: Time format
 setting_cross_project_issue_relations: Allow cross-project issue relations
 setting_issue_list_default_columns: Default columns displayed on the issue list
 setting_repositories_encodings: Repositories encodings
@@ -425,7 +426,7 @@ label_month: Month
 label_week: Week
 label_date_from: From
 label_date_to: To
-label_language_based: Language based
+label_language_based: Based on user's language
 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
index ca4ede61020eae56c88ab249b59681d1a4b52e6e..6807cacb962db6a00b6dec09b9456f717b08b7f4 100644 (file)
@@ -540,3 +540,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 3459680882814462fcd4e1b1a22fc7ea08ac9bd7..a44604a0d2a63fcc2780d8a6eb098266bc40da4e 100644 (file)
@@ -186,6 +186,7 @@ setting_commit_ref_keywords: Mot-clés de référencement
 setting_commit_fix_keywords: Mot-clés de résolution
 setting_autologin: Autologin
 setting_date_format: Format de date
+setting_time_format: Format d'heure
 setting_cross_project_issue_relations: Autoriser les relations entre demandes de différents projets
 setting_issue_list_default_columns: Colonnes affichées par défaut sur la liste des demandes
 setting_repositories_encodings: Encodages des dépôts
@@ -425,7 +426,7 @@ label_month: Mois
 label_week: Semaine
 label_date_from: Du
 label_date_to: Au
-label_language_based: Basé sur la langue
+label_language_based: Basé sur la langue de l'utilisateur
 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
index 46015d6f9468453633d353cb269b3a5ecf772ebf..089cfdc7daced475736e73b9aab5b826b5bf36b5 100644 (file)
@@ -537,3 +537,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 2cf222c1b1b0062551c194c4097ec1875df84140..13c8489358804ea8f06dc7fbd28ddaad29579941 100644 (file)
@@ -537,3 +537,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 03544f971c7206fb14c817268a66bebf3b3f2ebf..6fd8dfcc62526564b62e25ca5ca1fc3c9a58c4c7 100644 (file)
@@ -538,3 +538,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 020b70cd896e487186ea0cbf40cd73ca3a511dd2..9998f2f6496aed5f3b25b66b554e0fe8c4e2a0a6 100644 (file)
@@ -537,3 +537,4 @@ label_nobody: nobody
 setting_protocol: Protocol
 mail_body_account_information: Your Redmine account information
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 81f3f0aeb61692ee5cc2d97245ba674cae9c5a54..ab1913e19168abf507c0773c36352289bcd3ba11 100644 (file)
@@ -538,3 +538,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 6ada8c3afb4aeb7ba104bea027bd8f74e111a783..0b433bacbe476b703effb30aa6a2cc0939e92e25 100644 (file)
@@ -537,3 +537,4 @@ mail_body_account_information_external: Możesz użyć twojego "%s" konta do zal
 mail_body_account_information: Twoje konto w Redmine
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 05bd4bcb89ecaa7755b35a43c6643b1529f3c14c..d4f51b61d7c78aaf2a72d34e0edd32cfe612e5c7 100644 (file)
@@ -537,3 +537,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information\r
 setting_protocol: Protocol\r
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"\r
+setting_time_format: Time format\r
index b6c16b45268af6e457ac8005da4b735a99d0c1f7..bfd89bbae373696d792e378c1d0a8f1cc46d017b 100644 (file)
@@ -537,3 +537,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 0f3f5d14434e6021dfb5b72decb1d542d7ec2293..049efa7b1bcb56be0cd5149e237c0a7cbe9fce6e 100644 (file)
@@ -38,10 +38,10 @@ activerecord_error_circular_dependency: Aceasta relatie ar crea dependenta circu
 
 general_fmt_age: %d an
 general_fmt_age_plural: %d ani
-general_fmt_date: %%m/%%d/%%A
-general_fmt_datetime: %%m/%%d/%%A %%Z:%%L %%p
-general_fmt_datetime_short: %%b %%d, %%Z:%%L %%p
-general_fmt_time: %%Z:%%L %%p
+general_fmt_date: %%m/%%d/%%Y
+general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p
+general_fmt_datetime_short: %%b %%d, %%I:%%M %%p
+general_fmt_time: %%I:%%M %%p
 general_text_No: 'Nu'
 general_text_Yes: 'Da'
 general_text_no: 'nu'
@@ -74,9 +74,9 @@ notice_email_sent: Un e-mail a fost trimis la adresa %s
 notice_email_error: Eroare in trimiterea e-mailului (%s)
 notice_feeds_access_key_reseted: Parola de acces RSS a fost resetat.
 
-mail_subject_lost_password: Parola clair.ro|PM
+mail_subject_lost_password: Your Redmine password
 mail_body_lost_password: 'To change your Redmine password, click on the following link:'
-mail_subject_register: Activare cont clair.ro|PM
+mail_subject_register: Redmine account activation
 mail_body_register: 'To activate your Redmine account, click on the following link:'
 
 gui_validation_error: 1 eroare
@@ -537,3 +537,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 3acddd60703a1090dacea180200615a22d96f3e2..77ff6ec5ecf94968cf21d5374e2a2cfa49668a14 100644 (file)
@@ -537,3 +537,4 @@ default_activity_development: Разработка
 enumeration_issue_priorities: Приоритеты задач
 enumeration_doc_categories: Категории документов
 enumeration_activities: Действия (учет времени)
+setting_time_format: Time format
index 7a06ca8a2b0e727a141544ecdd009d9ae10427eb..1072af7eb2fc84c7c3d8472750204d20fbf47ae2 100644 (file)
@@ -538,3 +538,4 @@ label_float: Float
 button_copy: Copy
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index fce6a71d673e52ab5dfa9b4d8210bc49677bb191..d22b5c4781936e5668b8154237cff92304e6cc66 100644 (file)
@@ -538,3 +538,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index 9e4b7e931598fb111729f185891d99b90f2e5a9c..19e5b122b29f92f94e3c18808c860fd7817b2eea 100644 (file)
@@ -540,3 +540,4 @@ mail_body_account_information_external: You can use your "%s" account to log int
 mail_body_account_information: Your Redmine account information
 setting_protocol: Protocol
 label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself"
+setting_time_format: Time format
index b3ed9102e51562f2f7a17aa86ff5fd4425571af5..06446d15e3891cc15a3e3118f657264841120a84 100644 (file)
@@ -75,4 +75,32 @@ class ApplicationHelperTest < HelperTestCase
     text = "{{hello_world}}"
     assert textilizable(text).match(/Hello world!/)
   end
+  
+  def test_date_format_default
+    today = Date.today
+    Setting.date_format = ''    
+    assert_equal l_date(today), format_date(today)
+  end
+  
+  def test_date_format
+    today = Date.today
+    Setting.date_format = '%d %m %Y'
+    assert_equal today.strftime('%d %m %Y'), format_date(today)
+  end
+  
+  def test_time_format_default
+    now = Time.now
+    Setting.date_format = ''
+    Setting.time_format = ''    
+    assert_equal l_datetime(now), format_time(now)
+    assert_equal l_time(now), format_time(now, false)
+  end
+  
+  def test_time_format
+    now = Time.now
+    Setting.date_format = '%d %m %Y'
+    Setting.time_format = '%H %M'
+    assert_equal now.strftime('%d %m %Y %H %M'), format_time(now)
+    assert_equal now.strftime('%H %M'), format_time(now, false)
+  end
 end