ability to mark as read/unread
This commit is contained in:
parent
7dd37c50d3
commit
dcb70e86e2
5 changed files with 76 additions and 5 deletions
|
@ -1,19 +1,71 @@
|
||||||
class NotificationsController < ApplicationController
|
class NotificationsController < ApplicationController
|
||||||
|
before_action :set_receipts, only: [:index, :show, :mark_read, :mark_unread]
|
||||||
|
before_action :set_notification, only: [:show, :mark_read, :mark_unread]
|
||||||
|
before_action :set_receipt, only: [:show, :mark_read, :mark_unread]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@notifications = current_user.mailbox.notifications
|
@notifications = current_user.mailbox.notifications
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.json { render json: @notifications.to_json }
|
format.json do
|
||||||
|
render json: @notifications.map do |notification|
|
||||||
|
receipt = @receipts.find_by(notification_id: notification.id)
|
||||||
|
notification.as_json.merge(is_read: receipt.is_read)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@notification = current_user.mailbox.notifications.find_by(id: params[:id])
|
@receipt.update(is_read: true)
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.json { render json: @notification.to_json }
|
format.json do
|
||||||
|
render json: @notification.as_json.merge(
|
||||||
|
is_read: @receipt.is_read
|
||||||
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def mark_read
|
||||||
|
@receipt.update(is_read: true)
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
format.json do
|
||||||
|
render json: @notification.as_json.merge(
|
||||||
|
is_read: @receipt.is_read
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def mark_unread
|
||||||
|
@receipt.update(is_read: false)
|
||||||
|
respond_to do |format|
|
||||||
|
format.js
|
||||||
|
format.json do
|
||||||
|
render json: @notification.as_json.merge(
|
||||||
|
is_read: @receipt.is_read
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def set_receipts
|
||||||
|
@receipts = current_user.mailbox.receipts
|
||||||
|
.includes(:notification).where(mailbox_type: nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_notification
|
||||||
|
@notification = current_user.mailbox.notifications.find_by(id: params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_receipt
|
||||||
|
@receipt = @receipts.find_by(notification_id: params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
|
@ -6,11 +6,19 @@
|
||||||
<h4>Notifications</h4>
|
<h4>Notifications</h4>
|
||||||
<ul>
|
<ul>
|
||||||
<% @notifications.each do |notification| %>
|
<% @notifications.each do |notification| %>
|
||||||
|
<% receipt = @receipts.find_by(notification_id: notification.id) %>
|
||||||
<li>
|
<li>
|
||||||
<strong>
|
<strong>
|
||||||
<%= link_to notification.subject, notification_path(notification.id) %>
|
<%= link_to notification.subject, notification_path(notification.id) %>
|
||||||
</strong>
|
</strong>
|
||||||
<%= notification.body.truncate(140) %>
|
<%= notification.body.truncate(140) %>
|
||||||
|
<span id="notification-<%= notification.id %>" class="read-unread">
|
||||||
|
<% if receipt.is_read? %>
|
||||||
|
<%= link_to '(read)', mark_unread_notification_path(notification.id), remote: true, method: :put %>
|
||||||
|
<% else %>
|
||||||
|
<%= link_to '(unread)', mark_read_notification_path(notification.id), remote: true, method: :put %>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
3
app/views/notifications/mark_read.js.erb
Normal file
3
app/views/notifications/mark_read.js.erb
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
$('#notification-<%= @notification.id %> > a')
|
||||||
|
.text('(read)')
|
||||||
|
.attr('href', '<%= mark_unread_notification_path(@notification.id) %>')
|
3
app/views/notifications/mark_unread.js.erb
Normal file
3
app/views/notifications/mark_unread.js.erb
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
$('#notification-<%= @notification.id %> > a')
|
||||||
|
.text('(unread)')
|
||||||
|
.attr('href', '<%= mark_read_notification_path(@notification.id) %>')
|
|
@ -36,7 +36,12 @@ Metamaps::Application.routes.draw do
|
||||||
resources :mappings, except: [:index, :new, :edit]
|
resources :mappings, except: [:index, :new, :edit]
|
||||||
|
|
||||||
resources :messages, only: [:show, :create, :update, :destroy]
|
resources :messages, only: [:show, :create, :update, :destroy]
|
||||||
resources :notifications, only: [:index, :show]
|
resources :notifications, only: [:index, :show] do
|
||||||
|
member do
|
||||||
|
put :mark_read
|
||||||
|
put :mark_unread
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
resources :metacode_sets, except: [:show]
|
resources :metacode_sets, except: [:show]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue