Made online notifications "removable" by user (x).
This commit is contained in:
parent
d88ac684b1
commit
043dd6c11e
5 changed files with 64 additions and 25 deletions
|
@ -88,27 +88,11 @@ class App.OnlineNotificationWidget extends App.Controller
|
|||
|
||||
notificationsContainer.find('.popover-content').css('height', "#{heightPopoverContentNew}px")
|
||||
|
||||
# close notification list on click
|
||||
$('.js-notificationsContainer').on('click', (e) =>
|
||||
@hidePopover()
|
||||
)
|
||||
|
||||
# execute controller again of already open (because hash hasn't changed, we need to do it manually)
|
||||
$('.js-locationVerify').on('click', (e) =>
|
||||
newLocation = $(e.target).attr 'href'
|
||||
if !newLocation
|
||||
newLocation = $(e.target).closest('.js-locationVerify').attr 'href'
|
||||
return if !newLocation
|
||||
currentLocation = Spine.Route.getPath()
|
||||
return if newLocation.replace(/#/, '') isnt currentLocation
|
||||
@log 'debug', "execute controller again for '#{currentLocation}' because of same hash"
|
||||
Spine.Route.matchRoutes(currentLocation)
|
||||
)
|
||||
|
||||
# mark all notifications as read
|
||||
$('.js-markAllAsRead').on('click', (e) =>
|
||||
notificationsContainer.find('.js-markAllAsRead').on('click', (e) =>
|
||||
e.preventDefault()
|
||||
@markAllAsRead()
|
||||
@hidePopover()
|
||||
)
|
||||
|
||||
# add clickCatcher
|
||||
|
@ -154,6 +138,35 @@ class App.OnlineNotificationWidget extends App.Controller
|
|||
$( App.view('widget/online_notification_content')(items: items) )
|
||||
)
|
||||
|
||||
notificationsContainer = $('.js-notificationsContainer .popover-content')
|
||||
|
||||
# execute controller again of already open (because hash hasn't changed, we need to do it manually)
|
||||
notificationsContainer.find('.js-locationVerify').on('click', (e) =>
|
||||
newLocation = $(e.target).attr 'href'
|
||||
if !newLocation
|
||||
newLocation = $(e.target).closest('.js-locationVerify').attr 'href'
|
||||
return if !newLocation
|
||||
currentLocation = Spine.Route.getPath()
|
||||
return if newLocation.replace(/#/, '') isnt currentLocation
|
||||
@hidePopover()
|
||||
@log 'debug', "execute controller again for '#{currentLocation}' because of same hash"
|
||||
Spine.Route.matchRoutes(currentLocation)
|
||||
)
|
||||
|
||||
# close notification list on click
|
||||
notificationsContainer.find('.activity-entry').on('click', (e) =>
|
||||
@hidePopover()
|
||||
)
|
||||
|
||||
# remove
|
||||
notificationsContainer.find('.js-remove').on('click', (e) =>
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
row = $(e.target).closest('.activity-entry')
|
||||
id = row.data('id')
|
||||
App.OnlineNotification.destroy(id)
|
||||
)
|
||||
|
||||
createContainer: =>
|
||||
@removeContainer()
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<% if @items.length: %>
|
||||
<% for item in @items: %>
|
||||
<div class="activity-entry activity-entry--removeable<% if item.seen: %> is-inactive<% end %>">
|
||||
<div class="activity-entry activity-entry--removeable<% if item.seen: %> is-inactive<% end %>" data-id="<%- item.id %>">
|
||||
<a class="activity-avatar user-popover" data-id="<%= item.created_by_id %>" href="<%- item.created_by.uiUrl() %>">
|
||||
<%- item.created_by.avatar() %>
|
||||
</a>
|
||||
|
|
|
@ -80,16 +80,30 @@ curl http://localhost/api/v1/online_notifications -v -u #{login}:#{password} -H
|
|||
=end
|
||||
|
||||
def update
|
||||
notification = OnlineNotification.find(params[:id])
|
||||
if notification.user_id != current_user.id
|
||||
response_access_deny
|
||||
return
|
||||
end
|
||||
return if !access?
|
||||
model_update_render(OnlineNotification, params)
|
||||
end
|
||||
|
||||
=begin
|
||||
|
||||
Resource:
|
||||
DELETE /api/v1/online_notifications/{id}.json
|
||||
|
||||
Response:
|
||||
{}
|
||||
|
||||
Test:
|
||||
curl http://localhost/api/v1/online_notifications/{id}.json -v -u #{login}:#{password} -H "Content-Type: application/json" -X DELETE
|
||||
|
||||
=end
|
||||
|
||||
def destroy
|
||||
return if !access?
|
||||
model_destory_render(OnlineNotification, params)
|
||||
end
|
||||
|
||||
=begin
|
||||
|
||||
Resource:
|
||||
PUT /api/v1/online_notifications/mark_all_as_read
|
||||
|
||||
|
@ -114,4 +128,15 @@ curl http://localhost/api/v1/online_notifications/mark_all_as_read -v -u #{login
|
|||
render json: {}, status: :ok
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def access?
|
||||
notification = OnlineNotification.find(params[:id])
|
||||
if notification.user_id != current_user.id
|
||||
response_access_deny
|
||||
return false
|
||||
end
|
||||
true
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -155,7 +155,7 @@ Response:
|
|||
{}
|
||||
|
||||
Test:
|
||||
curl http://localhost/api/v1/overviews.json -v -u #{login}:#{password} -H "Content-Type: application/json" -X DELETE
|
||||
curl http://localhost/api/v1/overviews/#{id}.json -v -u #{login}:#{password} -H "Content-Type: application/json" -X DELETE
|
||||
|
||||
=end
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ Zammad::Application.routes.draw do
|
|||
# groups
|
||||
match api_path + '/online_notifications', to: 'online_notifications#index', via: :get
|
||||
match api_path + '/online_notifications/:id', to: 'online_notifications#update', via: :put
|
||||
match api_path + '/online_notifications/:id', to: 'online_notifications#destroy', via: :delete
|
||||
match api_path + '/online_notifications/mark_all_as_read', to: 'online_notifications#mark_all_as_read', via: :post
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue