Change call log to display inactive users with strikethrough (fixes #2096)
This commit is contained in:
parent
abd3332524
commit
4ec3f1324d
4 changed files with 80 additions and 21 deletions
|
@ -26,8 +26,10 @@
|
||||||
<% if caller_id.user_id && App.User.exists(caller_id.user_id): %>
|
<% if caller_id.user_id && App.User.exists(caller_id.user_id): %>
|
||||||
<% shown = true %>
|
<% shown = true %>
|
||||||
<% user = App.User.find(caller_id.user_id) %>
|
<% user = App.User.find(caller_id.user_id) %>
|
||||||
|
<% classes = ['user-popover'] %>
|
||||||
|
<% classes.push('is-inactive') if !user.active %>
|
||||||
<% if caller_id.level isnt 'known': %><%- @T('maybe') %> <% end %>
|
<% if caller_id.level isnt 'known': %><%- @T('maybe') %> <% end %>
|
||||||
<span class="user-popover" data-id="<%- user.id %>"><%= user.displayNameLong() %></span><br>
|
<span class="<%= classes.join(' ') %>" data-id="<%- user.id %>"><%= user.displayNameLong() %></span><br>
|
||||||
<% else if caller_id.comment: %>
|
<% else if caller_id.comment: %>
|
||||||
<% shown = true %>
|
<% shown = true %>
|
||||||
<%- @T('maybe') %> <%= caller_id.comment %><br>
|
<%- @T('maybe') %> <%= caller_id.comment %><br>
|
||||||
|
@ -52,8 +54,10 @@
|
||||||
<% if caller_id.user_id && App.User.exists(caller_id.user_id): %>
|
<% if caller_id.user_id && App.User.exists(caller_id.user_id): %>
|
||||||
<% shown = true %>
|
<% shown = true %>
|
||||||
<% user = App.User.find(caller_id.user_id) %>
|
<% user = App.User.find(caller_id.user_id) %>
|
||||||
|
<% classes = ['user-popover'] %>
|
||||||
|
<% classes.push('is-inactive') if !user.active %>
|
||||||
<% if caller_id.level isnt 'known': %><%- @T('maybe') %> <% end %>
|
<% if caller_id.level isnt 'known': %><%- @T('maybe') %> <% end %>
|
||||||
<span class="user-popover" data-id="<%- user.id %>"><%= user.displayNameLong() %></span><br>
|
<span class="<%= classes.join(' ') %>" data-id="<%- user.id %>"><%= user.displayNameLong() %></span><br>
|
||||||
<% else if caller_id.comment: %>
|
<% else if caller_id.comment: %>
|
||||||
<% shown = true %>
|
<% shown = true %>
|
||||||
<%- @T('maybe') %> <%= caller_id.comment %><br>
|
<%- @T('maybe') %> <%= caller_id.comment %><br>
|
||||||
|
|
|
@ -1053,7 +1053,7 @@ th.align-right {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table tr.is-inactive {
|
.table tr.is-inactive, .table tr td span.is-inactive {
|
||||||
color: #bbb;
|
color: #bbb;
|
||||||
text-decoration: line-through;
|
text-decoration: line-through;
|
||||||
|
|
||||||
|
|
|
@ -47,25 +47,17 @@ returns
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def self.lookup(caller_id)
|
def self.lookup(caller_id)
|
||||||
|
lookup_ids =
|
||||||
|
['known', 'maybe', nil].lazy.map do |level|
|
||||||
|
Cti::CallerId.select('MAX(id) as caller_id')
|
||||||
|
.where({ caller_id: caller_id, level: level }.compact)
|
||||||
|
.group(:user_id)
|
||||||
|
.order('caller_id DESC')
|
||||||
|
.limit(20)
|
||||||
|
.map(&:caller_id)
|
||||||
|
end.find(&:present?)
|
||||||
|
|
||||||
result = []
|
Cti::CallerId.where(id: lookup_ids).order(id: :desc).to_a
|
||||||
['known', 'maybe', nil].each do |level|
|
|
||||||
|
|
||||||
search_params = {
|
|
||||||
caller_id: caller_id,
|
|
||||||
}
|
|
||||||
|
|
||||||
if level
|
|
||||||
search_params[:level] = level
|
|
||||||
end
|
|
||||||
|
|
||||||
caller_ids = Cti::CallerId.select('MAX(id) as caller_id').where(search_params).group(:user_id).order('caller_id DESC').limit(20).map(&:caller_id)
|
|
||||||
Cti::CallerId.where(id: caller_ids).order(id: :desc).each do |record|
|
|
||||||
result.push record
|
|
||||||
end
|
|
||||||
break if result.present?
|
|
||||||
end
|
|
||||||
result
|
|
||||||
end
|
end
|
||||||
|
|
||||||
=begin
|
=begin
|
||||||
|
|
|
@ -150,4 +150,67 @@ class IntegrationCtiTest < TestCase
|
||||||
value: '+49 30 609811111',
|
value: '+49 30 609811111',
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Regression test for #2096
|
||||||
|
def test_inactive_users_displayed_with_strikethrough_in_caller_log
|
||||||
|
id = rand(99_999_999)
|
||||||
|
|
||||||
|
@browser = browser_instance
|
||||||
|
login(
|
||||||
|
username: 'master@example.com',
|
||||||
|
password: 'test',
|
||||||
|
url: browser_url,
|
||||||
|
)
|
||||||
|
|
||||||
|
# create inactive user with phone number (via API)
|
||||||
|
user_create(
|
||||||
|
data: {
|
||||||
|
login: 'test_user',
|
||||||
|
firstname: 'John',
|
||||||
|
lastname: 'Doe'
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
click(css: 'table.user-list > tbody > tr:first-of-type > td:first-of-type')
|
||||||
|
set(css: 'input[name="phone"]', value: '1234567890')
|
||||||
|
select(css: 'select[name="active"]', value: 'inactive')
|
||||||
|
click(css: 'button[type="submit"]')
|
||||||
|
|
||||||
|
# enable CTI
|
||||||
|
click(css: 'a[href="#manage"]')
|
||||||
|
click(css: 'a[href="#system/integration"]')
|
||||||
|
click(css: 'a[href="#system/integration/cti"]')
|
||||||
|
|
||||||
|
switch(
|
||||||
|
css: '.content.active .js-switch',
|
||||||
|
type: 'on'
|
||||||
|
)
|
||||||
|
|
||||||
|
watch_for(
|
||||||
|
css: 'a[href="#cti"]'
|
||||||
|
)
|
||||||
|
|
||||||
|
click(css: 'a[href="#cti"]')
|
||||||
|
|
||||||
|
# simulate CTI callback to/from inactive user
|
||||||
|
url = URI.join(browser_url, "api/v1/cti/#{ENV['CTI_TOKEN']}")
|
||||||
|
params = {
|
||||||
|
direction: 'in',
|
||||||
|
from: '1234567890',
|
||||||
|
to: '1234567890',
|
||||||
|
callId: "4991155921769858278-#{id}",
|
||||||
|
cause: 'busy'
|
||||||
|
}
|
||||||
|
Net::HTTP.post_form(url, params.merge(event: 'newCall'))
|
||||||
|
Net::HTTP.post_form(url, params.merge(event: 'hangup'))
|
||||||
|
|
||||||
|
# view caller log
|
||||||
|
click(css: 'a[href="#cti"]')
|
||||||
|
|
||||||
|
# assertion: names appear in strikethrough
|
||||||
|
match(
|
||||||
|
css: 'span.is-inactive',
|
||||||
|
value: 'John Doe',
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue