Add Alerts controller
This commit is contained in:
parent
23d5a9f627
commit
01579ce68d
17 changed files with 362 additions and 0 deletions
3
app/assets/javascripts/alerts.js.coffee
Normal file
3
app/assets/javascripts/alerts.js.coffee
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
3
app/assets/stylesheets/alerts.css.scss
Normal file
3
app/assets/stylesheets/alerts.css.scss
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
// Place all the styles related to the Alerts controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
69
app/assets/stylesheets/scaffolds.css.scss
Normal file
69
app/assets/stylesheets/scaffolds.css.scss
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
body {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #333;
|
||||||
|
font-family: verdana, arial, helvetica, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p, ol, ul, td {
|
||||||
|
font-family: verdana, arial, helvetica, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background-color: #eee;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #000;
|
||||||
|
&:visited {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
div {
|
||||||
|
&.field, &.actions {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#notice {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field_with_errors {
|
||||||
|
padding: 2px;
|
||||||
|
background-color: red;
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
|
||||||
|
#error_explanation {
|
||||||
|
width: 450px;
|
||||||
|
border: 2px solid red;
|
||||||
|
padding: 7px;
|
||||||
|
padding-bottom: 0;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
h2 {
|
||||||
|
text-align: left;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 5px 5px 5px 15px;
|
||||||
|
font-size: 12px;
|
||||||
|
margin: -7px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
background-color: #c00;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
ul li {
|
||||||
|
font-size: 12px;
|
||||||
|
list-style: square;
|
||||||
|
}
|
||||||
|
}
|
83
app/controllers/alerts_controller.rb
Normal file
83
app/controllers/alerts_controller.rb
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
class AlertsController < ApplicationController
|
||||||
|
# GET /alerts
|
||||||
|
# GET /alerts.json
|
||||||
|
def index
|
||||||
|
@alerts = Alert.all
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html # index.html.erb
|
||||||
|
format.json { render json: @alerts }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /alerts/1
|
||||||
|
# GET /alerts/1.json
|
||||||
|
def show
|
||||||
|
@alert = Alert.find(params[:id])
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html # show.html.erb
|
||||||
|
format.json { render json: @alert }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /alerts/new
|
||||||
|
# GET /alerts/new.json
|
||||||
|
def new
|
||||||
|
@alert = Alert.new
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html # new.html.erb
|
||||||
|
format.json { render json: @alert }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /alerts/1/edit
|
||||||
|
def edit
|
||||||
|
@alert = Alert.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
# POST /alerts
|
||||||
|
# POST /alerts.json
|
||||||
|
def create
|
||||||
|
@alert = Alert.new(params[:alert])
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @alert.save
|
||||||
|
format.html { redirect_to @alert, notice: 'Alert was successfully created.' }
|
||||||
|
format.json { render json: @alert, status: :created, location: @alert }
|
||||||
|
else
|
||||||
|
format.html { render action: "new" }
|
||||||
|
format.json { render json: @alert.errors, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# PUT /alerts/1
|
||||||
|
# PUT /alerts/1.json
|
||||||
|
def update
|
||||||
|
@alert = Alert.find(params[:id])
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @alert.update_attributes(params[:alert])
|
||||||
|
format.html { redirect_to @alert, notice: 'Alert was successfully updated.' }
|
||||||
|
format.json { head :no_content }
|
||||||
|
else
|
||||||
|
format.html { render action: "edit" }
|
||||||
|
format.json { render json: @alert.errors, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# DELETE /alerts/1
|
||||||
|
# DELETE /alerts/1.json
|
||||||
|
def destroy
|
||||||
|
@alert = Alert.find(params[:id])
|
||||||
|
@alert.destroy
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { redirect_to alerts_url }
|
||||||
|
format.json { head :no_content }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
2
app/helpers/alerts_helper.rb
Normal file
2
app/helpers/alerts_helper.rb
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
module AlertsHelper
|
||||||
|
end
|
3
app/models/alert.rb
Normal file
3
app/models/alert.rb
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
class Alert < ActiveRecord::Base
|
||||||
|
attr_accessible :alerted, :course, :department, :user_id
|
||||||
|
end
|
32
app/views/alerts/_form.html.erb
Normal file
32
app/views/alerts/_form.html.erb
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<%= form_for @alert, :html => { :class => 'form-horizontal' } do |f| %>
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.label :user_id, :class => 'control-label' %>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.number_field :user_id, :class => 'number_field' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.label :department, :class => 'control-label' %>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :department, :class => 'text_field' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.label :course, :class => 'control-label' %>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.text_field :course, :class => 'text_field' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.label :alerted, :class => 'control-label' %>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.check_box :alerted, :class => 'check_box' %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-actions">
|
||||||
|
<%= f.submit nil, :class => 'btn btn-primary' %>
|
||||||
|
<%= link_to t('.cancel', :default => t("helpers.links.cancel")),
|
||||||
|
alerts_path, :class => 'btn' %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
5
app/views/alerts/edit.html.erb
Normal file
5
app/views/alerts/edit.html.erb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<%- model_class = Alert -%>
|
||||||
|
<div class="page-header">
|
||||||
|
<h1><%=t '.title', :default => [:'helpers.titles.edit', 'Edit %{model}'], :model => model_class.model_name.human %></h1>
|
||||||
|
</div>
|
||||||
|
<%= render :partial => 'form' %>
|
42
app/views/alerts/index.html.erb
Normal file
42
app/views/alerts/index.html.erb
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<%- model_class = Alert -%>
|
||||||
|
<div class="page-header">
|
||||||
|
<h1><%=t '.title', :default => model_class.model_name.human.pluralize %></h1>
|
||||||
|
</div>
|
||||||
|
<table class="table table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><%= model_class.human_attribute_name(:id) %></th>
|
||||||
|
<th><%= model_class.human_attribute_name(:user_id) %></th>
|
||||||
|
<th><%= model_class.human_attribute_name(:department) %></th>
|
||||||
|
<th><%= model_class.human_attribute_name(:course) %></th>
|
||||||
|
<th><%= model_class.human_attribute_name(:alerted) %></th>
|
||||||
|
<th><%= model_class.human_attribute_name(:created_at) %></th>
|
||||||
|
<th><%=t '.actions', :default => t("helpers.actions") %></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% @alerts.each do |alert| %>
|
||||||
|
<tr>
|
||||||
|
<td><%= link_to alert.id, alert_path(alert) %></td>
|
||||||
|
<td><%= alert.user_id %></td>
|
||||||
|
<td><%= alert.department %></td>
|
||||||
|
<td><%= alert.course %></td>
|
||||||
|
<td><%= alert.alerted %></td>
|
||||||
|
<td><%=l alert.created_at %></td>
|
||||||
|
<td>
|
||||||
|
<%= link_to t('.edit', :default => t("helpers.links.edit")),
|
||||||
|
edit_alert_path(alert), :class => 'btn btn-mini' %>
|
||||||
|
<%= link_to t('.destroy', :default => t("helpers.links.destroy")),
|
||||||
|
alert_path(alert),
|
||||||
|
:method => :delete,
|
||||||
|
:data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) },
|
||||||
|
:class => 'btn btn-mini btn-danger' %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<%= link_to t('.new', :default => t("helpers.links.new")),
|
||||||
|
new_alert_path,
|
||||||
|
:class => 'btn btn-primary' %>
|
5
app/views/alerts/new.html.erb
Normal file
5
app/views/alerts/new.html.erb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<%- model_class = Alert -%>
|
||||||
|
<div class="page-header">
|
||||||
|
<h1><%=t '.title', :default => [:'helpers.titles.new', 'New %{model}'], :model => model_class.model_name.human %></h1>
|
||||||
|
</div>
|
||||||
|
<%= render :partial => 'form' %>
|
27
app/views/alerts/show.html.erb
Normal file
27
app/views/alerts/show.html.erb
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<%- model_class = Alert -%>
|
||||||
|
<div class="page-header">
|
||||||
|
<h1><%=t '.title', :default => model_class.model_name.human %></h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt><strong><%= model_class.human_attribute_name(:user_id) %>:</strong></dt>
|
||||||
|
<dd><%= @alert.user_id %></dd>
|
||||||
|
<dt><strong><%= model_class.human_attribute_name(:department) %>:</strong></dt>
|
||||||
|
<dd><%= @alert.department %></dd>
|
||||||
|
<dt><strong><%= model_class.human_attribute_name(:course) %>:</strong></dt>
|
||||||
|
<dd><%= @alert.course %></dd>
|
||||||
|
<dt><strong><%= model_class.human_attribute_name(:alerted) %>:</strong></dt>
|
||||||
|
<dd><%= @alert.alerted %></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<div class="form-actions">
|
||||||
|
<%= link_to t('.back', :default => t("helpers.links.back")),
|
||||||
|
alerts_path, :class => 'btn' %>
|
||||||
|
<%= link_to t('.edit', :default => t("helpers.links.edit")),
|
||||||
|
edit_alert_path(@alert), :class => 'btn' %>
|
||||||
|
<%= link_to t('.destroy', :default => t("helpers.links.destroy")),
|
||||||
|
alert_path(@alert),
|
||||||
|
:method => 'delete',
|
||||||
|
:data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) },
|
||||||
|
:class => 'btn btn-danger' %>
|
||||||
|
</div>
|
|
@ -1,4 +1,7 @@
|
||||||
MsuCourseAlerter::Application.routes.draw do
|
MsuCourseAlerter::Application.routes.draw do
|
||||||
|
resources :alerts
|
||||||
|
|
||||||
|
|
||||||
# The priority is based upon order of creation:
|
# The priority is based upon order of creation:
|
||||||
# first created -> highest priority.
|
# first created -> highest priority.
|
||||||
|
|
||||||
|
|
12
db/migrate/20130402064200_create_alerts.rb
Normal file
12
db/migrate/20130402064200_create_alerts.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
class CreateAlerts < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :alerts do |t|
|
||||||
|
t.integer :user_id
|
||||||
|
t.string :department
|
||||||
|
t.string :course
|
||||||
|
t.boolean :alerted
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
13
test/fixtures/alerts.yml
vendored
Normal file
13
test/fixtures/alerts.yml
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
user_id: 1
|
||||||
|
department: MyString
|
||||||
|
course: MyString
|
||||||
|
alerted: false
|
||||||
|
|
||||||
|
two:
|
||||||
|
user_id: 1
|
||||||
|
department: MyString
|
||||||
|
course: MyString
|
||||||
|
alerted: false
|
49
test/functional/alerts_controller_test.rb
Normal file
49
test/functional/alerts_controller_test.rb
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class AlertsControllerTest < ActionController::TestCase
|
||||||
|
setup do
|
||||||
|
@alert = alerts(:one)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should get index" do
|
||||||
|
get :index
|
||||||
|
assert_response :success
|
||||||
|
assert_not_nil assigns(:alerts)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should get new" do
|
||||||
|
get :new
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should create alert" do
|
||||||
|
assert_difference('Alert.count') do
|
||||||
|
post :create, alert: { alerted: @alert.alerted, course: @alert.course, department: @alert.department, user_id: @alert.user_id }
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_redirected_to alert_path(assigns(:alert))
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should show alert" do
|
||||||
|
get :show, id: @alert
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should get edit" do
|
||||||
|
get :edit, id: @alert
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should update alert" do
|
||||||
|
put :update, id: @alert, alert: { alerted: @alert.alerted, course: @alert.course, department: @alert.department, user_id: @alert.user_id }
|
||||||
|
assert_redirected_to alert_path(assigns(:alert))
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should destroy alert" do
|
||||||
|
assert_difference('Alert.count', -1) do
|
||||||
|
delete :destroy, id: @alert
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_redirected_to alerts_path
|
||||||
|
end
|
||||||
|
end
|
7
test/unit/alert_test.rb
Normal file
7
test/unit/alert_test.rb
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class AlertTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
4
test/unit/helpers/alerts_helper_test.rb
Normal file
4
test/unit/helpers/alerts_helper_test.rb
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class AlertsHelperTest < ActionView::TestCase
|
||||||
|
end
|
Loading…
Reference in a new issue