Commit c5b667351abcda4b5ac134873007a0ce47976e88
1 parent
963a3114
Exists in
master
and in
4 other branches
Show broadcast message to users
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
7 changed files
with
38 additions
and
0 deletions
Show diff stats
app/assets/stylesheets/common.scss
app/helpers/application_helper.rb
app/models/broadcast_message.rb
@@ -4,4 +4,8 @@ class BroadcastMessage < ActiveRecord::Base | @@ -4,4 +4,8 @@ class BroadcastMessage < ActiveRecord::Base | ||
4 | validates :message, presence: true | 4 | validates :message, presence: true |
5 | validates :starts_at, presence: true | 5 | validates :starts_at, presence: true |
6 | validates :ends_at, presence: true | 6 | validates :ends_at, presence: true |
7 | + | ||
8 | + def self.current | ||
9 | + where("ends_at > :now AND starts_at < :now", now: Time.zone.now).last | ||
10 | + end | ||
7 | end | 11 | end |
app/views/layouts/application.html.haml
@@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
2 | %html{ lang: "en"} | 2 | %html{ lang: "en"} |
3 | = render "layouts/head", title: "Dashboard" | 3 | = render "layouts/head", title: "Dashboard" |
4 | %body{class: "#{app_theme} application", :'data-page' => body_data_page } | 4 | %body{class: "#{app_theme} application", :'data-page' => body_data_page } |
5 | + = render "layouts/broadcast" | ||
5 | = render "layouts/head_panel", title: "Dashboard" | 6 | = render "layouts/head_panel", title: "Dashboard" |
6 | = render "layouts/flash" | 7 | = render "layouts/flash" |
7 | %nav.main-nav | 8 | %nav.main-nav |
app/views/layouts/projects.html.haml
@@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
2 | %html{ lang: "en"} | 2 | %html{ lang: "en"} |
3 | = render "layouts/head", title: @project.name_with_namespace | 3 | = render "layouts/head", title: @project.name_with_namespace |
4 | %body{class: "#{app_theme} project", :'data-page' => body_data_page, :'data-project-id' => @project.id } | 4 | %body{class: "#{app_theme} project", :'data-page' => body_data_page, :'data-project-id' => @project.id } |
5 | + = render "layouts/broadcast" | ||
5 | = render "layouts/head_panel", title: project_title(@project) | 6 | = render "layouts/head_panel", title: project_title(@project) |
6 | = render "layouts/init_auto_complete" | 7 | = render "layouts/init_auto_complete" |
7 | = render "layouts/flash" | 8 | = render "layouts/flash" |
spec/models/broadcast_message_spec.rb
@@ -4,4 +4,21 @@ describe BroadcastMessage do | @@ -4,4 +4,21 @@ describe BroadcastMessage do | ||
4 | subject { create(:broadcast_message) } | 4 | subject { create(:broadcast_message) } |
5 | 5 | ||
6 | it { should be_valid } | 6 | it { should be_valid } |
7 | + | ||
8 | + describe :current do | ||
9 | + it "should return last message if time match" do | ||
10 | + broadcast_message = create(:broadcast_message, starts_at: Time.now.yesterday, ends_at: Time.now.tomorrow) | ||
11 | + BroadcastMessage.current.should == broadcast_message | ||
12 | + end | ||
13 | + | ||
14 | + it "should return nil if time not come" do | ||
15 | + broadcast_message = create(:broadcast_message, starts_at: Time.now.tomorrow, ends_at: Time.now + 2.days) | ||
16 | + BroadcastMessage.current.should be_nil | ||
17 | + end | ||
18 | + | ||
19 | + it "should return nil if time has passed" do | ||
20 | + broadcast_message = create(:broadcast_message, starts_at: Time.now - 2.days, ends_at: Time.now.yesterday) | ||
21 | + BroadcastMessage.current.should be_nil | ||
22 | + end | ||
23 | + end | ||
7 | end | 24 | end |