adding messages mvc to allow users to send messages.

This commit is contained in:
Mike McCabe
2013-10-11 16:03:20 -04:00
parent dbd0c2548d
commit 8686f6b9d3
13 changed files with 312 additions and 2 deletions
+21
View File
@@ -0,0 +1,21 @@
class MessagesController < ApplicationController
def index
@messages = Message.where(:receiver_id => current_user.id)
end
def show
@message = Message.where(:id => params[:id])
end
def delete
end
def new
@message = Message.new
end
def create
end
end
+2
View File
@@ -0,0 +1,2 @@
module MessagesHelper
end
+5
View File
@@ -0,0 +1,5 @@
class Message < ActiveRecord::Base
belongs_to :user
attr_accessible :creator_id, :message, :read, :receiver_id
end
@@ -58,6 +58,14 @@
Performance
<% end %>
</li>
<li id="messages">
<%= link_to user_messages_path(:user_id => current_user.user_id) do %>
<div class="icon">
<span class="fs1" aria-hidden="true" data-icon="&#xe040;"></span>
</div>
Messages
<% end %>
</li>
</ul>
</div>
+171
View File
@@ -0,0 +1,171 @@
<div class="dashboard-wrapper">
<div class="main-container">
<div class="row-fluid">
<div class="span12">
<div class="widget">
<div class="widget-header">
<div class="title">
<span class="fs1" aria-hidden="true" data-icon="&#xe088;"></span> Messages for <%= current_user.full_name %>
</div>
</div>
<div class="widget-body">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="width:10%">From:</th>
<th style="width:8%">Date</th>
<th style="width:16%">Message</th>
</tr>
</thead>
<% @messages.each do |message| %>
<tbody>
<tr>
<td><%= message.creator_id %></td>
<td><%= message.created_at %></td>
<td><%= message.message %></td>
</tr>
</tbody>
<% end %>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<!--/.fluid-container-->
</div>
<footer>
<p>
&copy; BlackForest 2013
</p>
</footer>
<script src="js/jquery.min.js">
</script>
<script src="js/bootstrap.js">
</script>
<script type="text/javascript" src="js/date-picker/date.js">
</script>
<script type="text/javascript" src="js/date-picker/daterangepicker.js">
</script>
<script type="text/javascript">
//ScrollUp
$(function () {
$.scrollUp({
scrollName: 'scrollUp', // Element ID
topDistance: '300', // Distance from top before showing element (px)
topSpeed: 300, // Speed back to top (ms)
animation: 'fade', // Fade, slide, none
animationInSpeed: 400, // Animation in speed (ms)
animationOutSpeed: 400, // Animation out speed (ms)
scrollText: 'Scroll to top', // Text for element
activeOverlay: false, // Set CSS color to display scrollUp active point, e.g '#00FFFF'
});
});
//Tooltip
$('a').tooltip('hide');
//Main menu navigation
$('.submenu > a').click(function(e){
e.preventDefault();
var submenu = $(this).siblings('ul');
var li = $(this).parents('li');
var submenus = $('#mainnav li.submenu ul');
var submenus_parents = $('#mainnav li.submenu');
if(li.hasClass('open'))
{
if(($(window).width() > 768) || ($(window).width() < 479)) {
submenu.slideUp();
} else {
submenu.fadeOut(250);
}
li.removeClass('open');
} else
{
if(($(window).width() > 768) || ($(window).width() < 479)) {
submenus.slideUp();
submenu.slideDown();
} else {
submenus.fadeOut(250);
submenu.fadeIn(250);
}
submenus_parents.removeClass('open');
li.addClass('open');
}
});
var ul = $('#mainnav > ul');
$('#mainnav > a').click(function(e)
{
e.preventDefault();
var mainnav = $('#mainnav');
if(mainnav.hasClass('open'))
{
mainnav.removeClass('open');
ul.slideUp(250);
} else
{
mainnav.addClass('open');
ul.slideDown(250);
}
});
//Range Date Picker
$('.report_range').daterangepicker({
ranges: {
'Today': ['today', 'today'],
'Yesterday': ['yesterday', 'yesterday'],
'Last 7 Days': [Date.today().add({
days: -6
}), 'today'],
'Last 30 Days': [Date.today().add({
days: -29
}), 'today'],
'This Month': [Date.today().moveToFirstDayOfMonth(), Date.today().moveToLastDayOfMonth()],
'Last Month': [Date.today().moveToFirstDayOfMonth().add({
months: -1
}), Date.today().moveToFirstDayOfMonth().add({
days: -1
})]
},
opens: 'left',
format: 'MM/dd/yyyy',
separator: ' to ',
startDate: Date.today().add({
days: -29
}),
endDate: Date.today(),
minDate: '01/01/2012',
maxDate: '12/31/2013',
locale: {
applyLabel: 'Submit',
fromLabel: 'From',
toLabel: 'To',
customRangeLabel: 'Custom Range',
daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
monthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
firstDay: 1
},
showWeekNumbers: true,
buttonClasses: ['btn-danger']
},
function (start, end) {
$('.report_range span').html(start.toString('MMMM d, yyyy') + ' - ' + end.toString('MMMM d, yyyy'));
});
//Set the initial state of the picker label
$('.report_range span').html(Date.today().add({
days: -29
}).toString('MMMM d, yyyy') + ' - ' + Date.today().toString('MMMM d, yyyy'));
</script>
</body>
</html>
+3
View File
@@ -28,6 +28,9 @@ resources :users do
end
resources :messages do
end
end
get "download" => "benefit_forms#download"
@@ -0,0 +1,12 @@
class CreateMessages < ActiveRecord::Migration
def change
create_table :messages do |t|
t.integer :creator_id
t.integer :receiver_id
t.text :message
t.boolean :read
t.timestamps
end
end
end
+10 -1
View File
@@ -11,13 +11,22 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20130708202859) do
ActiveRecord::Schema.define(:version => 20131011180207) do
create_table "benefits", :force => true do |t|
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "messages", :force => true do |t|
t.integer "creator_id"
t.integer "receiver_id"
t.text "message"
t.boolean "read"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "paid_time_offs", :force => true do |t|
t.integer "user_id"
t.integer "sick_days_taken"
+29
View File
@@ -236,6 +236,29 @@ paid_time_off = [
}
]
messages = [
{
:receiver_id => 2,
:creator_id => 5,
:message => 'Your benefits have been updated.'
},
{
:receiver_id => 3,
:creator_id => 4,
:message => 'Please update your profile.'
},
{
:receiver_id => 4,
:creator_id => 3,
:message => 'Welcome to Railsgoat.'
},
{
:receiver_id => 5,
:creator_id => 2,
:message => 'Hello friend.'
}
]
users.each do |user_info|
user = User.new(user_info.reject {|k| k == :user_id })
@@ -273,3 +296,9 @@ performance.each do |perf|
p.user_id = perf[:user_id]
p.save
end
messages.each do |message|
m = Message.new(message.reject {|k| k == :creator_id})
m.creator_id = message[:creator_id]
m.save
end
@@ -0,0 +1,5 @@
require 'spec_helper'
describe MessagesController do
end
+15
View File
@@ -0,0 +1,15 @@
require 'spec_helper'
# Specs in this file have access to a helper object that includes
# the MessagesHelper. For example:
#
# describe MessagesHelper do
# describe "string concat" do
# it "concats two strings with spaces" do
# expect(helper.concat_strings("this","that")).to eq("this that")
# end
# end
# end
describe MessagesHelper do
pending "add some examples to (or delete) #{__FILE__}"
end
+25
View File
@@ -0,0 +1,25 @@
require 'spec_helper.rb'
describe User do
before(:all) do
UserFixture.reset_all_users
DatabaseCleaner.strategy = :transaction
end
after(:all) do
DatabaseCleaner.strategy = :truncation
end
it "can be instantiated" do
Benefits.new.should be_an_instance_of(Benefits)
end
it "name can be updated" do
new_name = "Bobby"
user = User.all.first
user.first_name = new_name
user.save!
User.all.first.first_name.should == new_name
end
end
+5
View File
@@ -0,0 +1,5 @@
require 'spec_helper'
describe Message do
pending "add some examples to (or delete) #{__FILE__}"
end