From f476fb7648fd235642233b2bbe5bb90cb57e8549 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Thu, 14 Mar 2013 18:57:24 +0100 Subject: Bugfix --- app/controllers/trigger_controller.rb | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/app/controllers/trigger_controller.rb b/app/controllers/trigger_controller.rb index 623ea94..0c635b9 100644 --- a/app/controllers/trigger_controller.rb +++ b/app/controllers/trigger_controller.rb @@ -92,28 +92,21 @@ class TriggerController < ApplicationController def sip_account_update sip_account = SipAccount.find(params[:id]) - if sip_account + if sip_account && sip_account.switchboard_entries.any? # push the partial to the webbrowser # sip_account.switchboard_entries.each do |switchboard_entry| new_html = ActionController::Base.helpers.escape_javascript(render_to_string("switchboard_entries/_switchboard_entry", :layout => false, :locals => {:switchboard_entry => switchboard_entry})) PrivatePub.publish_to("/switchboards/#{switchboard_entry.switchboard.id}", "$('#switchboard_entry_id_" + switchboard_entry.id.to_s + "').replaceWith('#{new_html}');") - end - - render( - :status => 200, - :layout => false, - :content_type => 'text/plain', - :text => "", - ) - else - render( - :status => 501, - :layout => false, - :content_type => 'text/plain', - :text => "", - ) + end end + + render( + :status => 200, + :layout => false, + :content_type => 'text/plain', + :text => "", + ) end def fax -- cgit v1.2.3 From 3a0ea10cdd6084a8beb235f5c1573c22a5d733f0 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Thu, 14 Mar 2013 20:21:59 +0100 Subject: Added a dashboard for Switchboard. --- app/controllers/trigger_controller.rb | 19 ++++++++------- .../_switchboard_entry.html.haml | 28 +++++++++++++--------- .../switchboards/_current_user_dashboard.html.haml | 26 ++++++++++++++++++++ app/views/switchboards/show.html.haml | 23 +++++++++--------- 4 files changed, 66 insertions(+), 30 deletions(-) create mode 100644 app/views/switchboards/_current_user_dashboard.html.haml diff --git a/app/controllers/trigger_controller.rb b/app/controllers/trigger_controller.rb index 0c635b9..fc0556b 100644 --- a/app/controllers/trigger_controller.rb +++ b/app/controllers/trigger_controller.rb @@ -92,15 +92,18 @@ class TriggerController < ApplicationController def sip_account_update sip_account = SipAccount.find(params[:id]) - if sip_account && sip_account.switchboard_entries.any? - # push the partial to the webbrowser - # - sip_account.switchboard_entries.each do |switchboard_entry| - new_html = ActionController::Base.helpers.escape_javascript(render_to_string("switchboard_entries/_switchboard_entry", :layout => false, :locals => {:switchboard_entry => switchboard_entry})) - PrivatePub.publish_to("/switchboards/#{switchboard_entry.switchboard.id}", "$('#switchboard_entry_id_" + switchboard_entry.id.to_s + "').replaceWith('#{new_html}');") - end + # TO-DO: Only update the neccessary entries. + # + SwitchboardEntry.all.each do |switchboard_entry| + new_html = ActionController::Base.helpers.escape_javascript(render_to_string("switchboard_entries/_switchboard_entry", :layout => false, :locals => {:switchboard_entry => switchboard_entry})) + PrivatePub.publish_to("/switchboards/#{switchboard_entry.switchboard.id}", "$('#switchboard_entry_id_" + switchboard_entry.id.to_s + "').replaceWith('#{new_html}');") end - + + Switchboard.all.each do |switchboard| + new_html = ActionController::Base.helpers.escape_javascript(render_to_string("switchboards/_current_user_dashboard", :layout => false, :locals => {:current_user => switchboard.user})) + PrivatePub.publish_to("/switchboards/#{switchboard.id}", "$('.dashboard').replaceWith('#{new_html}');") + end + render( :status => 200, :layout => false, diff --git a/app/views/switchboard_entries/_switchboard_entry.html.haml b/app/views/switchboard_entries/_switchboard_entry.html.haml index b2b6bff..8d4ee92 100644 --- a/app/views/switchboard_entries/_switchboard_entry.html.haml +++ b/app/views/switchboard_entries/_switchboard_entry.html.haml @@ -12,16 +12,22 @@ %small = truncate(switchboard_entry.to_s, :length => 10) %br - - if !switchboard_entry.sip_account.registration - %span.label.label-inverse - %i.icon-ban-circle.icon-white - - else - - if switchboard_entry.sip_account.call_legs(:where => ["HELD", "ACTIVE"]).size != 0 - %span.label.label-success - %i.icon-user.icon-white - - if switchboard_entry.sip_account.call_legs(:where => ["RINGING"]).size != 0 - %span.label.label-info - %i.icon-bell.icon-white - if switchboard_entry.sip_account.phone_numbers.any? %span.label - = switchboard_entry.sip_account.phone_numbers.first.number + = switchboard_entry.sip_account.phone_numbers.first.number + + %br + + - if switchboard_entry.sip_account.registration + - switchboard_entry.sip_account.calls.each do |call| + - if call.callstate == 'RINGING' + %span.label.label-info + %i.icon-bell.icon-white + = "from #{call.callee_number}" + + - if call.callstate == 'EARLY' + %span.label.label-info + = "calls #{call.destination}" + - else + %span.label.label-inverse + %i.icon-ban-circle.icon-white diff --git a/app/views/switchboards/_current_user_dashboard.html.haml b/app/views/switchboards/_current_user_dashboard.html.haml new file mode 100644 index 0000000..1c57a0d --- /dev/null +++ b/app/views/switchboards/_current_user_dashboard.html.haml @@ -0,0 +1,26 @@ +.dashboard + - current_user.sip_accounts.each do |sip_account| + %table.table.table-striped + %thead + %tr + %td + SIP Account + %td + Direction + %td + StartStamp + %td + Destination + %td + CalleeName + %tbody + - sip_account.calls.each do |call| + %tr + %td + - current_user.sip_accounts.each do |sip_account| + %span.label.label-info + =sip_account.phone_numbers.first.to_s + %td=call.direction + %td=l Time.at(call.start_stamp) + %td=call.destination + %td=call.callee_name \ No newline at end of file diff --git a/app/views/switchboards/show.html.haml b/app/views/switchboards/show.html.haml index 2932366..a825806 100644 --- a/app/views/switchboards/show.html.haml +++ b/app/views/switchboards/show.html.haml @@ -1,20 +1,21 @@ -- content_for :title, @switchboard.name +- content_for :title, "Switchboard #{@switchboard.name}" .row .span12 - .well.pull-right - %p - =current_user + = render :partial => "current_user_dashboard", :current_user => current_user %ul.thumbnails = render :partial => "switchboard_entries/switchboard_entry", :collection => @switchboard_entries -- if can? :edit, @switchboard - .row - .span12 - %a.btn.btn-small.btn-warning{:href => switchboard_switchboard_entries_path(@switchboard) } - %i.icon-edit.icon-white - %span.hidden-phone - =t("switchboard_entries.index.page_title") + - if can? :edit, @switchboard + .row + .span12 + %a.btn.btn-small.btn-warning{:href => switchboard_switchboard_entries_path(@switchboard) } + %i.icon-edit.icon-white + %span.hidden-phone + =t("switchboard_entries.index.page_title") + + .span6 + = subscribe_to "/switchboards/#{@switchboard.id}" \ No newline at end of file -- cgit v1.2.3 From 0b4e3dfd031b21c26f7bc9c7c05cd931950ecbd6 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Thu, 14 Mar 2013 21:34:06 +0100 Subject: Switchboard stuff --- app/controllers/trigger_controller.rb | 7 +++-- .../_switchboard_entry.html.haml | 34 +++++++++++++-------- .../switchboards/_current_user_dashboard.html.haml | 35 +++++++++++++--------- 3 files changed, 47 insertions(+), 29 deletions(-) diff --git a/app/controllers/trigger_controller.rb b/app/controllers/trigger_controller.rb index fc0556b..a858e33 100644 --- a/app/controllers/trigger_controller.rb +++ b/app/controllers/trigger_controller.rb @@ -100,8 +100,11 @@ class TriggerController < ApplicationController end Switchboard.all.each do |switchboard| - new_html = ActionController::Base.helpers.escape_javascript(render_to_string("switchboards/_current_user_dashboard", :layout => false, :locals => {:current_user => switchboard.user})) - PrivatePub.publish_to("/switchboards/#{switchboard.id}", "$('.dashboard').replaceWith('#{new_html}');") + if sip_account.call_legs.where(:sip_account_id => switchboard.user.sip_account_ids).any? || + sip_account.b_call_legs.where(:sip_account_id => switchboard.user.sip_account_ids).any? + new_html = ActionController::Base.helpers.escape_javascript(render_to_string("switchboards/_current_user_dashboard", :layout => false, :locals => {:current_user => switchboard.user})) + PrivatePub.publish_to("/switchboards/#{switchboard.id}", "$('.dashboard').replaceWith('#{new_html}');") + end end render( diff --git a/app/views/switchboard_entries/_switchboard_entry.html.haml b/app/views/switchboard_entries/_switchboard_entry.html.haml index 8d4ee92..b82bb74 100644 --- a/app/views/switchboard_entries/_switchboard_entry.html.haml +++ b/app/views/switchboard_entries/_switchboard_entry.html.haml @@ -1,16 +1,16 @@ -%li.span1{:id => "switchboard_entry_id_#{switchboard_entry.id}"} +%li.span2{:id => "switchboard_entry_id_#{switchboard_entry.id}"} %div.thumbnail %a.thumbnail{:href => tenant_user_path(switchboard_entry.sip_account.sip_accountable.current_tenant, switchboard_entry.sip_account.sip_accountable)} - if switchboard_entry.sip_account.sip_accountable.image? - = image_tag(switchboard_entry.sip_account.sip_accountable.image_url(:small).to_s, :class => 'img-rounded') + = image_tag(switchboard_entry.sip_account.sip_accountable.image_url(:profile).to_s, :class => 'img-rounded', :style => 'width: 100px;') - else - if switchboard_entry.sip_account.sip_accountable.male? - = image_tag 'icons/user-male-16x.png', :class => 'img-rounded' + = image_tag('icons/user-male-16x.png', :class => 'img-rounded', :style => 'width: 100px;') - else - = image_tag 'icons/user-female-16x.png', :class => 'img-rounded' + = image_tag('icons/user-female-16x.png', :class => 'img-rounded', :style => 'width: 100px;') %p %small - = truncate(switchboard_entry.to_s, :length => 10) + = truncate(switchboard_entry.to_s, :length => 23) %br - if switchboard_entry.sip_account.phone_numbers.any? %span.label @@ -19,15 +19,23 @@ %br - if switchboard_entry.sip_account.registration - - switchboard_entry.sip_account.calls.each do |call| - - if call.callstate == 'RINGING' - %span.label.label-info - %i.icon-bell.icon-white - = "from #{call.callee_number}" + - switchboard_entry.sip_account.call_legs.where(callstate: 'RINGING').each do |call_leg| + %span.label.label-warning + %i.icon-bell.icon-white + = "#{call_leg.caller_id_number}" + + - switchboard_entry.sip_account.call_legs.where(callstate: 'EARLY').each do |call_leg| + %span.label.label-info + = "calls #{call_leg.destination}" + + - switchboard_entry.sip_account.call_legs.where(callstate: 'ACTIVE').each do |call_leg| + %span.label.label-info + = "#{call_leg.b_caller_id_number} => #{call_leg.callee_number}" + + - switchboard_entry.sip_account.b_call_legs.where(b_callstate: 'ACTIVE').each do |b_call_leg| + %span.label.label-info + = "#{b_call_leg.b_caller_id_number} => #{b_call_leg.destination}" - - if call.callstate == 'EARLY' - %span.label.label-info - = "calls #{call.destination}" - else %span.label.label-inverse %i.icon-ban-circle.icon-white diff --git a/app/views/switchboards/_current_user_dashboard.html.haml b/app/views/switchboards/_current_user_dashboard.html.haml index 1c57a0d..8dd75b9 100644 --- a/app/views/switchboards/_current_user_dashboard.html.haml +++ b/app/views/switchboards/_current_user_dashboard.html.haml @@ -4,23 +4,30 @@ %thead %tr %td - SIP Account - %td - Direction - %td - StartStamp %td Destination %td - CalleeName + Start + %td{:span => '2'} + Caller %tbody - - sip_account.calls.each do |call| + - sip_account.call_legs.where(callstate: 'RINGING').each do |call_leg| + %tr.warning + %td + %i.icon-bell + %td + %span.label.label-info + =sip_account.phone_numbers.first.to_s + %td=l Time.at(call_leg.start_stamp) + %td=call_leg.callee_name + %td=call_leg.callee_number + + - sip_account.b_call_legs.where(direction: 'inbound').each do |call_leg| %tr %td - - current_user.sip_accounts.each do |sip_account| - %span.label.label-info - =sip_account.phone_numbers.first.to_s - %td=call.direction - %td=l Time.at(call.start_stamp) - %td=call.destination - %td=call.callee_name \ No newline at end of file + %td + %span.label.label-info + =sip_account.phone_numbers.first.to_s + %td=l Time.at(call_leg.start_stamp) + %td=call_leg.b_caller_id_name + %td=call_leg.b_caller_id_number -- cgit v1.2.3 From 5ed3837a8688e46a33d3ad3b0eb0343eb1a5ba85 Mon Sep 17 00:00:00 2001 From: Stefan Wintermeyer Date: Thu, 14 Mar 2013 21:41:33 +0100 Subject: Switchboard UI improvements. --- app/views/switchboard_entries/_switchboard_entry.html.haml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/views/switchboard_entries/_switchboard_entry.html.haml b/app/views/switchboard_entries/_switchboard_entry.html.haml index b82bb74..8c44153 100644 --- a/app/views/switchboard_entries/_switchboard_entry.html.haml +++ b/app/views/switchboard_entries/_switchboard_entry.html.haml @@ -12,7 +12,7 @@ %small = truncate(switchboard_entry.to_s, :length => 23) %br - - if switchboard_entry.sip_account.phone_numbers.any? + - if switchboard_entry.sip_account.phone_numbers.any? && !switchboard_entry.sip_account.call_legs.where(callstate: 'ACTIVE').any? && !switchboard_entry.sip_account.b_call_legs.where(b_callstate: 'ACTIVE').any? %span.label = switchboard_entry.sip_account.phone_numbers.first.number @@ -29,12 +29,16 @@ = "calls #{call_leg.destination}" - switchboard_entry.sip_account.call_legs.where(callstate: 'ACTIVE').each do |call_leg| + %span.label + = "#{switchboard_entry.sip_account.phone_numbers.first.number} => " %span.label.label-info - = "#{call_leg.b_caller_id_number} => #{call_leg.callee_number}" + = "#{call_leg.callee_number}" - switchboard_entry.sip_account.b_call_legs.where(b_callstate: 'ACTIVE').each do |b_call_leg| %span.label.label-info - = "#{b_call_leg.b_caller_id_number} => #{b_call_leg.destination}" + = "#{b_call_leg.b_caller_id_number} =>" + %span.label + = switchboard_entry.sip_account.phone_numbers.first.number - else %span.label.label-inverse -- cgit v1.2.3