dates_helper.rb
3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
require 'noosfero/i18n'
module DatesHelper
# FIXME Date#strftime should translate this for us !!!!
MONTHS = [
N_('January'),
N_('February'),
N_('March'),
N_('April'),
N_('May'),
N_('June'),
N_('July'),
N_('August'),
N_('September'),
N_('October'),
N_('November'),
N_('December')
]
def month_name(n)
_(MONTHS[n-1])
end
# formats a date for displaying.
def show_date(date, use_numbers = false)
if date && use_numbers
_('%{month}/%{day}/%{year}') % { :day => date.day, :month => date.month, :year => date.year }
elsif date
_('%{month} %{day}, %{year}') % { :day => date.day, :month => month_name(date.month), :year => date.year }
else
''
end
end
# formats a datetime for displaying.
def show_time(time)
if time
_('%{day} %{month} %{year}, %{hour}:%{minutes}') % { :year => time.year, :month => month_name(time.month), :day => time.day, :hour => time.hour, :minutes => time.strftime("%M") }
else
''
end
end
def show_period(date1, date2 = nil)
if (date1 == date2) || (date2.nil?)
show_date(date1)
else
_('from %{date1} to %{date2}') % {:date1 => show_date(date1), :date2 => show_date(date2)}
end
end
def show_day_of_week(date, abbreviated = false)
# FIXME Date#strftime should translate this for us !!!!
N_('Sun'); N_('Mon'); N_('Tue'); N_('Wed'); N_('Thu'); N_('Fri'); N_('Sat');
if abbreviated
_(date.strftime("%a"))
else
# FIXME Date#strftime should translate this for us !!!!
_([
N_('Sunday'),
N_('Monday'),
N_('Tuesday'),
N_('Wednesday'),
N_('Thursday'),
N_('Friday'),
N_('Saturday'),
][date.wday])
end
end
def show_month(year, month, opts = {})
date = build_date(year, month)
if opts[:next]
date = date >> 1
elsif opts[:previous]
date = date << 1
end
_('%{month} %{year}') % { :year => date.year, :month => month_name(date.month.to_i) }
end
def build_date(year, month, day = 1)
if year.blank? and month.blank? and day.blank?
Date.today
else
if year.blank?
year = Date.today.year
end
if month.blank?
month = Date.today.month
end
if day.blank?
day = 1
end
Date.new(year.to_i, month.to_i, day.to_i)
end
end
def link_to_previous_month(year, month, label = nil)
date = build_date(year, month)
previous_month_date = date - 1.month
label ||= show_month(previous_month_date.year, previous_month_date.month)
link_to label, :year => previous_month_date.year, :month => previous_month_date.month
end
def link_to_next_month(year, month, label = nil)
date = build_date(year, month)
next_month_date = date + 1.month
label ||= show_month(next_month_date.year, next_month_date.month)
link_to label, :year => next_month_date.year, :month => next_month_date.month
end
def pick_date(object, method, options = {}, html_options = {})
if language == 'en'
order = [:month, :day, :year]
else
order = [:day, :month, :year]
end
date_select(object, method, html_options.merge(options.merge(:include_blank => true, :order => order, :use_month_names => MONTHS.map {|item| gettext(item)})))
end
end