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
|
||||
<% 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=""></span>
|
||||
</div>
|
||||
Messages
|
||||
<% end %>
|
||||
</li>
|
||||
</ul>
|
||||
</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
|
||||
|
||||
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
@@ -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"
|
||||
|
||||
+30
-1
@@ -234,7 +234,30 @@ paid_time_off = [
|
||||
:date_submitted => Date.new(2013, 01, 01),
|
||||
: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|
|
||||
@@ -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
|
||||
@@ -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