Commit dd501aa7a79644919ba0c47d1ed764b6db768c8d
1 parent
f1ecf53c
Exists in
master
and in
4 other branches
Broadcast messages scaffold in admin area
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
5 changed files
with
73 additions
and
0 deletions
Show diff stats
app/assets/stylesheets/gitlab_bootstrap/forms.scss
@@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
1 | +class Admin::BroadcastMessagesController < Admin::ApplicationController | ||
2 | + before_filter :broadcast_messages | ||
3 | + | ||
4 | + def index | ||
5 | + @broadcast_message = BroadcastMessage.new | ||
6 | + end | ||
7 | + | ||
8 | + def create | ||
9 | + @broadcast_message = BroadcastMessage.new(params[:broadcast_message]) | ||
10 | + | ||
11 | + if @broadcast_message.save | ||
12 | + redirect_to admin_broadcast_messages_path, notice: 'Broadcast Message was successfully created.' | ||
13 | + else | ||
14 | + render :index | ||
15 | + end | ||
16 | + end | ||
17 | + | ||
18 | + protected | ||
19 | + | ||
20 | + def broadcast_messages | ||
21 | + @broadcast_messages ||= BroadcastMessage.order("starts_at DESC").page(params[:page]) | ||
22 | + end | ||
23 | +end |
app/models/broadcast_message.rb
@@ -2,4 +2,6 @@ class BroadcastMessage < ActiveRecord::Base | @@ -2,4 +2,6 @@ class BroadcastMessage < ActiveRecord::Base | ||
2 | attr_accessible :alert_type, :ends_at, :message, :starts_at | 2 | attr_accessible :alert_type, :ends_at, :message, :starts_at |
3 | 3 | ||
4 | validates :message, presence: true | 4 | validates :message, presence: true |
5 | + validates :starts_at, presence: true | ||
6 | + validates :ends_at, presence: true | ||
5 | end | 7 | end |
@@ -0,0 +1,41 @@ | @@ -0,0 +1,41 @@ | ||
1 | +%h3.page-title | ||
2 | + Broadcast Messages | ||
3 | +%p.light | ||
4 | + Broadcast messages displayed for every user and can be used to notify application about scheduled maintenance. | ||
5 | +%hr | ||
6 | + | ||
7 | += form_for [:admin, @broadcast_message] do |f| | ||
8 | + -if @broadcast_message.errors.any? | ||
9 | + .alert.alert-error | ||
10 | + - @broadcast_message.errors.full_messages.each do |msg| | ||
11 | + %p= msg | ||
12 | + .control-group | ||
13 | + = f.label :message | ||
14 | + .controls | ||
15 | + = f.text_area :message, class: "input-xxlarge", rows: 2, required: true | ||
16 | + .control-group | ||
17 | + = f.label :starts_at | ||
18 | + .controls.datetime-controls | ||
19 | + = f.datetime_select :starts_at | ||
20 | + .control-group | ||
21 | + = f.label :ends_at | ||
22 | + .controls.datetime-controls | ||
23 | + = f.datetime_select :ends_at | ||
24 | + .form-actions | ||
25 | + = f.submit "Add broadcast message", class: "btn btn-create" | ||
26 | + | ||
27 | +-if @broadcast_messages.any? | ||
28 | + %ul.bordered-list | ||
29 | + - @broadcast_messages.each do |broadcast_message| | ||
30 | + %li | ||
31 | + .pull-right | ||
32 | + - if broadcast_message.starts_at | ||
33 | + %strong | ||
34 | + #{broadcast_message.starts_at.to_s(:short)} | ||
35 | + \... | ||
36 | + - if broadcast_message.ends_at | ||
37 | + %strong | ||
38 | + #{broadcast_message.ends_at.to_s(:short)} | ||
39 | + .message= broadcast_message.message | ||
40 | + | ||
41 | + = paginate @broadcast_messages |
config/routes.rb
@@ -86,6 +86,7 @@ Gitlab::Application.routes.draw do | @@ -86,6 +86,7 @@ Gitlab::Application.routes.draw do | ||
86 | get :test | 86 | get :test |
87 | end | 87 | end |
88 | 88 | ||
89 | + resources :broadcast_messages, only: [:index, :create] | ||
89 | resource :logs, only: [:show] | 90 | resource :logs, only: [:show] |
90 | resource :background_jobs, controller: 'background_jobs', only: [:show] | 91 | resource :background_jobs, controller: 'background_jobs', only: [:show] |
91 | resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, only: [:index, :show] | 92 | resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, only: [:index, :show] |