Added notification management.

This commit is contained in:
Martin Edenhofer 2015-01-05 00:55:48 +01:00
parent 8a9ddb6d5d
commit e780d0d0af
2 changed files with 195 additions and 0 deletions

View file

@ -0,0 +1,149 @@
class Index extends App.Controller
events:
'submit form': 'update'
constructor: ->
super
return if !@authenticate()
@render()
render: =>
# matrix
config = {}
config['matrix'] = {}
config['matrix']['create'] = {}
config['matrix']['create']['name'] = 'new Ticket'
config['matrix']['create']['criteria'] = {}
config['matrix']['create']['criteria']['owned_by_me'] = true
config['matrix']['create']['criteria']['owned_by_nobody'] = true
config['matrix']['create']['criteria']['no'] = false
config['matrix']['create']['channel'] = {}
config['matrix']['create']['channel']['email'] = true
config['matrix']['create']['channel']['online'] = false
config['matrix']['update'] = {}
config['matrix']['update']['name'] = 'Ticket update'
config['matrix']['update']['criteria'] = {}
config['matrix']['update']['criteria']['owned_by_me'] = true
config['matrix']['update']['criteria']['owned_by_nobody'] = false
config['matrix']['update']['criteria']['no'] = false
config['matrix']['update']['channel'] = {}
config['matrix']['update']['channel']['email'] = true
config['matrix']['update']['channel']['online'] = false
config['matrix']['move_into'] = {}
config['matrix']['move_into']['name'] = 'Ticket moved into my group'
config['matrix']['move_into']['criteria'] = {}
config['matrix']['move_into']['criteria']['owned_by_me'] = true
config['matrix']['move_into']['criteria']['owned_by_nobody'] = true
config['matrix']['move_into']['criteria']['no'] = false
config['matrix']['move_into']['channel'] = {}
config['matrix']['move_into']['channel']['email'] = true
config['matrix']['move_into']['channel']['online'] = false
config['matrix']['escalation'] = {}
config['matrix']['escalation']['name'] = 'Ticket escalation'
config['matrix']['escalation']['criteria'] = {}
config['matrix']['escalation']['criteria']['owned_by_me'] = true
config['matrix']['escalation']['criteria']['owned_by_nobody'] = true
config['matrix']['escalation']['criteria']['no'] = false
config['matrix']['escalation']['channel'] = {}
config['matrix']['escalation']['channel']['email'] = true
config['matrix']['escalation']['channel']['online'] = false
user_config = @Session.get('preferences').notification_config
if user_config
config = $.extend(true, {}, config, user_config)
console.log('oo', config)
# groups
groups = []
group_ids = @Session.get('group_ids')
if group_ids
for group_id in group_ids
group = App.Group.find(group_id)
groups.push group
@html App.view('profile/notification')( groups: groups, config: config )
update: (e) =>
#notification_config
e.preventDefault()
params = {}
params.notification_config = {}
form_params = @formParam(e.target)
console.log('P',form_params)
for key, value of form_params
if key is 'group_ids'
if typeof value isnt 'object'
value = [value]
params.notification_config[key] = value
else
area = key.split('.')
if value is 'true'
value = true
if area[0] is 'matrix'
if area[2] is 'criteria'
if !params.notification_config[area[0]]
params.notification_config[area[0]] = {}
if !params.notification_config[area[0]][area[1]]
params.notification_config[area[0]][area[1]] = {}
if !params.notification_config[area[0]][area[1]][area[2]]
params.notification_config[area[0]][area[1]][area[2]] = {
owned_by_me: false
owned_by_nobody: false
no: false
}
params.notification_config[area[0]][area[1]][area[2]][area[3]] = value
if area[2] is 'channel'
if !params.notification_config[area[0]]
params.notification_config[area[0]] = {}
if !params.notification_config[area[0]][area[1]]
params.notification_config[area[0]][area[1]] = {}
if value is 'online'
params.notification_config[area[0]][area[1]][area[2]] = {
email: false
online: true
}
else
params.notification_config[area[0]][area[1]][area[2]] = {
email: true
online: false
}
console.log('P2',params)
@formDisable(e)
# get data
@ajax(
id: 'preferences'
type: 'PUT'
url: @apiPath + '/users/preferences'
data: JSON.stringify({user:params})
processData: true
success: @success
error: @error
)
success: (data, status, xhr) =>
App.User.full(
App.Session.get( 'id' ),
=>
App.Event.trigger( 'ui:rerender' )
App.Event.trigger( 'ui:page:rerender' )
@notify(
type: 'success'
msg: App.i18n.translateContent( 'Successfully!' )
)
,
true
)
error: (xhr, status, error) =>
@render()
data = JSON.parse( xhr.responseText )
@notify(
type: 'error'
msg: App.i18n.translateContent( data.message )
)
App.Config.set( 'Notifications', { prio: 2600, name: 'Notifications', parent: '#profile', target: '#profile/notifications', role: ['Agent'], controller: Index }, 'NavBarProfile' )

View file

@ -0,0 +1,46 @@
<h2><%- @T( 'Notifications' ) %></h2>
<form>
<h3><%- @T( 'Matrix' ) %></h3>
<div class="settings-entry">
<table class="table">
<tr>
<td><%- @T('On') %></td><td colspan="3"><%- @T('Criteria') %></td><td colspan="2"><%- @T('Channel') %></td>
</tr>
<tr>
<td></td><td><%- @T('Owned by me') %></td><td><%- @T('Owned by nobody') %></td><td><%- @T('no criteria') %></td><td><%- @T('Email & Online') %></td><td><%- @T('Online') %></td>
</tr>
<% if @config.matrix: %>
<% for key, value of @config.matrix: %>
<tr>
<td><%= value.name %></td>
<td><input type="checkbox" name="matrix.<%= key %>.criteria.owned_by_me" value="true" <% if value.criteria.owned_by_me: %>checked<% end %>/></td>
<td><input type="checkbox" name="matrix.<%= key %>.criteria.owned_by_nobody" value="true" <% if value.criteria.owned_by_nobody: %>checked<% end %>/></td>
<td><input type="checkbox" name="matrix.<%= key %>.criteria.no" value="true" <% if value.criteria.no: %>checked<% end %>/></td>
<td><input type="radio" name="matrix.<%= key %>.channel" value="email" <% if value.channel.email: %>checked<% end %>/></td>
<td><input type="radio" name="matrix.<%= key %>.channel" value="online" <% if value.channel.online: %>checked<% end %>/></td>
</tr>
<% end %>
<% end %>
</table>
</div>
<h3><%- @T( 'Groups' ) %></h3>
<div class="settings-entry">
<table class="table">
<% if @groups: %>
<% for group in @groups: %>
<tr>
<td><%= group.displayName() %></td><td><input type="checkbox" name="group_ids" value="<%= group.id %>" checked/></td>
</tr>
<% end %>
<% end %>
</table>
</div>
<button type="submit" class="btn btn--primary"><%- @T( 'Submit' ) %></button>
</form>