merbiful-release 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +4 -1
- data/lib/merbiful-release.rb~ +28 -1
- data/lib/merbiful-release/admin.rb +25 -0
- data/lib/merbiful-release/admin.rb~ +275 -3
- data/lib/merbiful-release/body.rb~ +27 -6
- data/lib/merbiful-release/css.rb~ +20 -5
- data/lib/merbiful-release/erubis.rb~ +4 -2
- data/lib/merbiful-release/filters.rb~ +22 -0
- data/lib/merbiful-release/haml.rb~ +13 -1
- data/lib/merbiful-release/images.rb~ +14 -0
- data/lib/merbiful-release/js.rb~ +25 -11
- data/lib/merbiful-release/layout.rb~ +46 -18
- data/lib/merbiful-release/page.rb~ +76 -24
- data/lib/merbiful-release/string.rb~ +16 -0
- data/templates/admin.css~ +13 -2
- data/templates/admin_layout.html.haml +4 -0
- data/templates/admin_layout.html.haml~ +7 -5
- data/templates/css.html.haml~ +10 -7
- data/templates/images.html.haml~ +17 -0
- data/templates/js.html.haml~ +22 -22
- data/templates/layouts.html.haml~ +26 -0
- data/templates/page_form.html.haml~ +41 -1
- metadata +139 -35
- data/lib/merbiful-release/controller.rb~ +0 -12
- data/lib/merbiful-release/eruby.rb~ +0 -11
- data/lib/merbiful-release/merbiful.rb~ +0 -8
- data/lib/merbiful-release/relative_time.rb~ +0 -78
- data/lib/merbiful-release/routes.rb~ +0 -4
- data/lib/merbiful-release/version.rb~ +0 -45
- data/templates/admin_layout.html.rhtml~ +0 -10
- data/templates/index.html.haml~ +0 -2
- data/templates/pages.html.haml~ +0 -3
@@ -0,0 +1,17 @@
|
|
1
|
+
- if Merbiful::Images.upload_possible?
|
2
|
+
%form{:action => url(:merbiful_admin, :action => "upload_image"), :enctype => "multipart/form-data", :method => "post"}
|
3
|
+
Upload new image
|
4
|
+
%input{:name => "image", :size => "30", :type => "file"}
|
5
|
+
%input{:type => "submit", :value => "Upload"}
|
6
|
+
- else
|
7
|
+
%p Upload seems to be impossible, perhaps the 'public/images' directory is not writable?
|
8
|
+
%ul{:class => "images"}
|
9
|
+
- Merbiful::Images.images.each do |image|
|
10
|
+
%li{:class => "image"}
|
11
|
+
%ul{:class => "image_info info"}
|
12
|
+
%a{:href => image}
|
13
|
+
%li{:class => "picture"}
|
14
|
+
%img{:height => 20, :src => image.to_s, :alt => image.to_s}
|
15
|
+
%li{:class => "path"}= image
|
16
|
+
- if Merbiful::Images.delete_possible?(image)
|
17
|
+
%a{:href => url(:merbiful_admin, :action => "delete_image", :path => image)} -
|
data/templates/js.html.haml~
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
%a{:href => url(:merbiful_admin, :action => "
|
2
|
-
%ul{:class => "
|
3
|
-
- Merbiful::
|
4
|
-
%li{:class => "
|
5
|
-
%ul{:class => "
|
6
|
-
%a{:href => url(:merbiful_admin, :action => "
|
7
|
-
%li{:class => "
|
8
|
-
%li{:class => "
|
9
|
-
%li= link_to("-", url(:merbiful_admin, :action => "
|
10
|
-
- if params[:
|
11
|
-
%table.
|
12
|
-
%form{:action => url(:merbiful_admin, :action => "
|
1
|
+
%a{:href => url(:merbiful_admin, :action => "create_js")} New js
|
2
|
+
%ul{:class => "js"}
|
3
|
+
- Merbiful::Js.all.each do |js|
|
4
|
+
%li{:class => "js"}
|
5
|
+
%ul{:class => "js_info info"}
|
6
|
+
%a{:href => url(:merbiful_admin, :action => "js", :js_id => js.id)}
|
7
|
+
%li{:class => "js_name"}= js.name
|
8
|
+
%li{:class => "js_version"}= "ver##{js.latest.id} (#{time_ago_in_words(js.latest.created_at)} ago)"
|
9
|
+
%li= link_to("-", url(:merbiful_admin, :action => "destroy_js", :js_id => js.id))
|
10
|
+
- if params[:js_id].to_s == js.id.to_s
|
11
|
+
%table.js
|
12
|
+
%form{:action => url(:merbiful_admin, :action => "js", :js_id => js.id), :method => "post"}
|
13
|
+
%tr{:class => "version"}
|
14
|
+
%td Viewing version
|
15
|
+
%td= @form_js.js_versions(:order => [:id.desc]).collect do |v| "<a class='#{v.id == @form_version.id ? 'active' : 'inactive'}' href='#{url(:merbiful_admin, :action => "js", :js_id => @form_js.id, :version_id => v.id)}'>#{v.id}</a>" end.join(", ")
|
13
16
|
%tr
|
14
|
-
%td Name
|
15
|
-
%td= text_field(:name => "
|
17
|
+
%td Name (not versioned)
|
18
|
+
%td= text_field(:name => "js[name]", :value => @form_js.name) + errors(@form_js, :name)
|
16
19
|
%tr
|
17
20
|
%td Body
|
18
|
-
%td~ text_area(@
|
21
|
+
%td~ text_area(@form_version.body, :name => "version[body]", :cols => 80, :rows => text_area_rows) + errors(@form_version, :body)
|
19
22
|
%tr{:class => "filter"}
|
20
23
|
%td Filter
|
21
|
-
%td= select(:name => "version[filter]", :collection => Merbiful::filters, :selected => @
|
22
|
-
%tr
|
23
|
-
%td Media
|
24
|
-
%td= text_field(:name => "css[media]", :value => @form_css.media) + errors(@form_css, :media)
|
24
|
+
%td= select(:name => "version[filter]", :collection => Merbiful::Filter.filters, :selected => @form_version.filter) + errors(@form_version, :filter)
|
25
25
|
%tr{:class => "cached"}
|
26
|
-
%td Cached
|
27
|
-
%td= check_box(:name => "
|
26
|
+
%td Cached (not versioned)
|
27
|
+
%td= check_box(:name => "js[cached]", :checked => @form_js.cached) + errors(@form_js, :cached)
|
28
28
|
%tr{:class => "submit"}
|
29
|
-
%td{:colspan => "2"}= submit("Save")
|
29
|
+
%td{:colspan => "2"}= submit("Save as new version")
|
@@ -0,0 +1,26 @@
|
|
1
|
+
%a{:href => url(:merbiful_admin, :action => "create_layout")} New layout
|
2
|
+
%ul{:class => "layouts"}
|
3
|
+
- Merbiful::Layout.all.each do |layout|
|
4
|
+
%li{:class => "layout"}
|
5
|
+
%ul{:class => "layout_info info"}
|
6
|
+
%a{:href => url(:merbiful_admin, :action => "layouts", :layout_id => layout.id)}
|
7
|
+
%li{:class => "layout_name"}= layout.name
|
8
|
+
%li{:class => "layout_version"}= "ver##{layout.latest.id} (#{time_ago_in_words(layout.latest.created_at)} ago)"
|
9
|
+
%li= link_to("-", url(:merbiful_admin, :action => "destroy_layout", :layout_id => layout.id))
|
10
|
+
- if params[:layout_id].to_s == layout.id.to_s
|
11
|
+
%table.layout
|
12
|
+
%form{:action => url(:merbiful_admin, :action => "layouts", :layout_id => layout.id), :method => "post"}
|
13
|
+
%tr{:class => "version"}
|
14
|
+
%td Viewing version
|
15
|
+
%td= @form_layout.layout_versions(:order => [:id.desc]).collect do |v| "<a class='#{v.id == @form_version.id ? 'active' : 'inactive'}' href='#{url(:merbiful_admin, :action => "layouts", :layout_id => @form_layout.id, :version_id => v.id)}'>#{v.id}</a>" end.join(", ")
|
16
|
+
%tr
|
17
|
+
%td Name (not versioned)
|
18
|
+
%td= text_field(:name => "layout[name]", :value => @form_layout.name) + errors(@form_layout, :name)
|
19
|
+
%tr
|
20
|
+
%td Body
|
21
|
+
%td~ text_area(@form_version.body, :name => "version[body]", :cols => 80, :rows => text_area_rows) + errors(@form_version, :body)
|
22
|
+
%tr{:class => "filter"}
|
23
|
+
%td Filter
|
24
|
+
%td= select(:name => "version[filter]", :collection => Merbiful::Filter.filters, :selected => @form_version.filter) + errors(@form_version, :filter)
|
25
|
+
%tr{:class => "submit"}
|
26
|
+
%td{:colspan => "2"}= submit("Save as new version")
|
@@ -1 +1,41 @@
|
|
1
|
-
%
|
1
|
+
%table.page
|
2
|
+
%form{:action => url(:merbiful_admin, :action => "pages", :page_id => @form_page.id), :method => "post"}
|
3
|
+
%tr{:class => "path"}
|
4
|
+
%td Path
|
5
|
+
%td= text_field(:name => "page[path]", :value => @form_page.path) + errors(@form_page, :path)
|
6
|
+
%tr{:class => "title"}
|
7
|
+
%td Title
|
8
|
+
%td= text_field(:name => "version[title]", :value => @form_page.title) + errors(@form_version, :title)
|
9
|
+
%tr{:class => "keywords"}
|
10
|
+
%td Keywords
|
11
|
+
%td= text_field(:name => "version[keywords]", :value => @form_page.keywords) + errors(@form_version, :keywords)
|
12
|
+
%tr{:class => "body"}
|
13
|
+
%td Body
|
14
|
+
%td~ text_area(@form_page.body, :name => "version[body]", :cols => 80, :rows => text_area_rows) + errors(@form_version, :body)
|
15
|
+
%tr{:class => "filter"}
|
16
|
+
%td Filter
|
17
|
+
%td= select(:name => "version[filter]", :collection => Merbiful::filters, :selected => @form_page.latest.filter) + errors(@form_version, :filter)
|
18
|
+
%tr{:class => "layout"}
|
19
|
+
%td Layout
|
20
|
+
%td= select(:name => "version[layout_id]", :collection => Merbiful::Layout.all, :include_blank => true, :text_method => :name, :value_method => :id, :selected => @form_page.latest.layout_id) + errors(@form_version, :layout)
|
21
|
+
%tr{:class => "cached"}
|
22
|
+
%td Cached
|
23
|
+
%td= check_box(:name => "page[cached]", :checked => @form_page.cached) + errors(@form_page, :cached)
|
24
|
+
- Merbiful::Css.all.each_with_index do |css, index|
|
25
|
+
- if index == 0
|
26
|
+
%tr{:class => "css"}
|
27
|
+
%td{:rowspan => Merbiful::Css.count, :valign => "top"} Css
|
28
|
+
%td= check_box(:name => "version[css][]", :value => css.id, :checked => @form_page.csses.include?(css)) + css.name
|
29
|
+
- else
|
30
|
+
%tr{:class => "css"}
|
31
|
+
%td= check_box(:name => "version[css][]", :value => css.id, :checked => @form_page.csses.include?(css)) + css.name
|
32
|
+
- Merbiful::Js.all.each_with_index do |js, index|
|
33
|
+
- if index == 0
|
34
|
+
%tr{:class => "js"}
|
35
|
+
%td{:rowspan => Merbiful::Js.count, :valign => "top"} Js
|
36
|
+
%td= check_box(:name => "version[js][]", :value => js.id, :checked => @form_page.jses.include?(js)) + js.name
|
37
|
+
- else
|
38
|
+
%tr{:class => "js"}
|
39
|
+
%td= check_box(:name => "version[js][]", :value => js.id, :checked => @form_page.jses.include?(js)) + js.name
|
40
|
+
%tr{:class => "submit"}
|
41
|
+
%td{:colspan => 2}= submit("Save")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merbiful-release
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Kihlgren
|
@@ -9,10 +9,119 @@ autorequire: merbiful-release
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-10-
|
12
|
+
date: 2008-10-18 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: merb-core
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: merb_helpers
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: merb_datamapper
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0"
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: merb-action-args
|
47
|
+
type: :runtime
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: "0"
|
54
|
+
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: merb-assets
|
57
|
+
type: :runtime
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: merb-haml
|
67
|
+
type: :runtime
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: "0"
|
74
|
+
version:
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: dm-core
|
77
|
+
type: :runtime
|
78
|
+
version_requirement:
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: "0"
|
84
|
+
version:
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: dm-aggregates
|
87
|
+
type: :runtime
|
88
|
+
version_requirement:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: "0"
|
94
|
+
version:
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: dm-migrations
|
97
|
+
type: :runtime
|
98
|
+
version_requirement:
|
99
|
+
version_requirements: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: "0"
|
104
|
+
version:
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
name: dm-timestamps
|
107
|
+
type: :runtime
|
108
|
+
version_requirement:
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: "0"
|
114
|
+
version:
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: dm-validations
|
117
|
+
type: :runtime
|
118
|
+
version_requirement:
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: "0"
|
124
|
+
version:
|
16
125
|
description: Merb plugin that provides a simple CMS
|
17
126
|
email: martin@wemind.se
|
18
127
|
executables: []
|
@@ -25,51 +134,46 @@ files:
|
|
25
134
|
- Rakefile
|
26
135
|
- LICENSE
|
27
136
|
- lib/merbiful-release
|
28
|
-
- lib/merbiful-release/
|
29
|
-
- lib/merbiful-release/layout.rb~
|
30
|
-
- lib/merbiful-release/merbiful.rb~
|
31
|
-
- lib/merbiful-release/routes.rb~
|
32
|
-
- lib/merbiful-release/routes.rb
|
137
|
+
- lib/merbiful-release/admin.rb
|
33
138
|
- lib/merbiful-release/admin.rb~
|
34
|
-
- lib/merbiful-release/
|
35
|
-
- lib/merbiful-release/controller.rb
|
36
|
-
- lib/merbiful-release/haml.rb~
|
37
|
-
- lib/merbiful-release/version.rb~
|
139
|
+
- lib/merbiful-release/body.rb
|
38
140
|
- lib/merbiful-release/body.rb~
|
141
|
+
- lib/merbiful-release/controller.rb
|
142
|
+
- lib/merbiful-release/css.rb
|
39
143
|
- lib/merbiful-release/css.rb~
|
40
|
-
- lib/merbiful-release/js.rb~
|
41
|
-
- lib/merbiful-release/eruby.rb~
|
42
144
|
- lib/merbiful-release/erubis.rb~
|
43
|
-
- lib/merbiful-release/
|
44
|
-
- lib/merbiful-release/
|
145
|
+
- lib/merbiful-release/filters.rb
|
146
|
+
- lib/merbiful-release/filters.rb~
|
147
|
+
- lib/merbiful-release/haml.rb~
|
45
148
|
- lib/merbiful-release/images.rb
|
46
|
-
- lib/merbiful-release/
|
47
|
-
- lib/merbiful-release/admin.rb
|
48
|
-
- lib/merbiful-release/body.rb
|
49
|
-
- lib/merbiful-release/css.rb
|
149
|
+
- lib/merbiful-release/images.rb~
|
50
150
|
- lib/merbiful-release/js.rb
|
151
|
+
- lib/merbiful-release/js.rb~
|
152
|
+
- lib/merbiful-release/layout.rb
|
153
|
+
- lib/merbiful-release/layout.rb~
|
51
154
|
- lib/merbiful-release/page.rb
|
155
|
+
- lib/merbiful-release/page.rb~
|
156
|
+
- lib/merbiful-release/relative_time.rb
|
157
|
+
- lib/merbiful-release/routes.rb
|
52
158
|
- lib/merbiful-release/string.rb
|
53
|
-
- lib/merbiful-release/
|
54
|
-
- lib/merbiful-release.rb~
|
159
|
+
- lib/merbiful-release/string.rb~
|
55
160
|
- lib/merbiful-release.rb
|
56
|
-
-
|
57
|
-
- templates/index.html.haml
|
58
|
-
- templates/admin_layout.html.haml~
|
59
|
-
- templates/pages.html.haml~
|
60
|
-
- templates/admin.css~
|
61
|
-
- templates/page_form.html.haml~
|
62
|
-
- templates/layouts.html.haml~
|
63
|
-
- templates/admin_layout.html.rhtml~
|
64
|
-
- templates/css.html.haml~
|
65
|
-
- templates/js.html.haml~
|
161
|
+
- lib/merbiful-release.rb~
|
66
162
|
- templates/admin.css
|
163
|
+
- templates/admin.css~
|
67
164
|
- templates/admin_layout.html.haml
|
68
|
-
- templates/
|
69
|
-
- templates/page_form.html.haml
|
165
|
+
- templates/admin_layout.html.haml~
|
70
166
|
- templates/css.html.haml
|
167
|
+
- templates/css.html.haml~
|
168
|
+
- templates/images.html.haml
|
169
|
+
- templates/images.html.haml~
|
170
|
+
- templates/index.html.haml
|
71
171
|
- templates/js.html.haml
|
172
|
+
- templates/js.html.haml~
|
72
173
|
- templates/layouts.html.haml
|
174
|
+
- templates/layouts.html.haml~
|
175
|
+
- templates/page_form.html.haml
|
176
|
+
- templates/page_form.html.haml~
|
73
177
|
has_rdoc: true
|
74
178
|
homepage: ""
|
75
179
|
post_install_message:
|
@@ -1,78 +0,0 @@
|
|
1
|
-
module Merbiful
|
2
|
-
|
3
|
-
module RelativeTimeHelpers
|
4
|
-
mattr_accessor :time_class
|
5
|
-
mattr_accessor :time_output
|
6
|
-
|
7
|
-
self.time_class = Time
|
8
|
-
self.time_output = {
|
9
|
-
:today => 'today',
|
10
|
-
:yesterday => 'yesterday',
|
11
|
-
:tomorrow => 'tomorrow',
|
12
|
-
:initial_format => '%b %d',
|
13
|
-
:year_format => ', %Y'
|
14
|
-
}
|
15
|
-
|
16
|
-
def relative_date(time)
|
17
|
-
date = time.to_date
|
18
|
-
today = time_class.now.to_date
|
19
|
-
if date == today
|
20
|
-
time_output[:today]
|
21
|
-
elsif date == (today - 1)
|
22
|
-
time_output[:yesterday]
|
23
|
-
elsif date == (today + 1)
|
24
|
-
time_output[:tomorrow]
|
25
|
-
else
|
26
|
-
fmt = time_output[:initial_format].dup
|
27
|
-
fmt << time_output[:year_format] unless date.year == today.year
|
28
|
-
time.strftime_ordinalized(fmt)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def relative_date_span(times)
|
33
|
-
times = [times.first, times.last].collect!(&:to_date)
|
34
|
-
times.sort!
|
35
|
-
if times.first == times.last
|
36
|
-
relative_date(times.first)
|
37
|
-
else
|
38
|
-
first = times.first; last = times.last; now = time_class.now
|
39
|
-
[first.strftime_ordinalized('%b %d')].tap do |arr|
|
40
|
-
arr << ", #{first.year}" unless first.year == last.year
|
41
|
-
arr << ' - '
|
42
|
-
arr << last.strftime('%b') << ' ' unless first.year == last.year && first.month == last.month
|
43
|
-
arr << last.day.ordinalize
|
44
|
-
arr << ", #{last.year}" unless first.year == last.year && last.year == now.year
|
45
|
-
end.to_s
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def relative_time_span(times)
|
50
|
-
times = [times.first, times.last].collect!(&:to_time)
|
51
|
-
times.sort!
|
52
|
-
if times.first == times.last
|
53
|
-
"#{prettier_time(times.first)} #{relative_date(times.first)}"
|
54
|
-
elsif times.first.to_date == times.last.to_date
|
55
|
-
same_half = (times.first.hour/12 == times.last.hour/12)
|
56
|
-
"#{prettier_time(times.first, !same_half)} - #{prettier_time(times.last)} #{relative_date(times.first)}"
|
57
|
-
|
58
|
-
else
|
59
|
-
first = times.first; last = times.last; now = time_class.now
|
60
|
-
[prettier_time(first)].tap do |arr|
|
61
|
-
arr << ' '
|
62
|
-
arr << first.strftime_ordinalized('%b %d')
|
63
|
-
arr << ", #{first.year}" unless first.year == last.year
|
64
|
-
arr << ' - '
|
65
|
-
arr << prettier_time(last)
|
66
|
-
arr << ' '
|
67
|
-
arr << last.strftime('%b') << ' ' unless first.year == last.year && first.month == last.month
|
68
|
-
arr << last.day.ordinalize
|
69
|
-
arr << ", #{last.year}" unless first.year == last.year && last.year == now.year
|
70
|
-
end.to_s
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def prettier_time(time, ampm=true)
|
75
|
-
time.strftime("%I:%M#{" %p" if ampm}").sub(/^0/, '')
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|