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] |