adding messages mvc to allow users to send messages.
This commit is contained in:
@@ -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
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
module MessagesHelper
|
||||||
|
end
|
||||||
@@ -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
|
Performance
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</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=""></span>
|
||||||
|
</div>
|
||||||
|
Messages
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -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=""></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>
|
||||||
|
© 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>
|
||||||
@@ -28,6 +28,9 @@ resources :users do
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
resources :messages do
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
get "download" => "benefit_forms#download"
|
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
@@ -11,13 +11,22 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# 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|
|
create_table "benefits", :force => true do |t|
|
||||||
t.datetime "created_at", :null => false
|
t.datetime "created_at", :null => false
|
||||||
t.datetime "updated_at", :null => false
|
t.datetime "updated_at", :null => false
|
||||||
end
|
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|
|
create_table "paid_time_offs", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.integer "sick_days_taken"
|
t.integer "sick_days_taken"
|
||||||
|
|||||||
+30
-1
@@ -234,7 +234,30 @@ paid_time_off = [
|
|||||||
:date_submitted => Date.new(2013, 01, 01),
|
:date_submitted => Date.new(2013, 01, 01),
|
||||||
:score => 2
|
:score => 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
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|
|
users.each do |user_info|
|
||||||
@@ -273,3 +296,9 @@ performance.each do |perf|
|
|||||||
p.user_id = perf[:user_id]
|
p.user_id = perf[:user_id]
|
||||||
p.save
|
p.save
|
||||||
end
|
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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Message do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user