summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorStefan Wintermeyer <stefan.wintermeyer@amooma.de>2012-12-22 12:32:36 +0100
committerStefan Wintermeyer <stefan.wintermeyer@amooma.de>2012-12-22 12:32:36 +0100
commitbc4e559c08616de312906903a1c89eb74d09ffd7 (patch)
tree49695b7ea1d4c207f3fc9ea56ada0d35086a5334 /app
parent77a3c41cbb7edb93dcc98b7ae18a1b58e0d2d2ef (diff)
GUI improvement for new acd agents.
Diffstat (limited to 'app')
-rw-r--r--app/controllers/acd_agents_controller.rb4
-rw-r--r--app/models/acd_agent.rb8
-rw-r--r--app/views/acd_agents/_form_core.html.haml10
-rw-r--r--app/views/acd_agents/show.html.haml20
4 files changed, 28 insertions, 14 deletions
diff --git a/app/controllers/acd_agents_controller.rb b/app/controllers/acd_agents_controller.rb
index 1d119b3..4c08f68 100644
--- a/app/controllers/acd_agents_controller.rb
+++ b/app/controllers/acd_agents_controller.rb
@@ -28,6 +28,8 @@ class AcdAgentsController < ApplicationController
@acd_agent.name = "#{t('acd_agents.name')} #{i}"
@acd_agent.status = 'active'
@acd_agent.calls_answered = 0
+
+ @available_sip_accounts = SipAccount.all - @automatic_call_distributor.acd_agents.where(:destination_type => 'SipAccount').map{|acd_agent| acd_agent.destination}
end
def create
@@ -41,6 +43,8 @@ class AcdAgentsController < ApplicationController
def edit
@acd_agent = AcdAgent.find(params[:id])
+
+ @available_sip_accounts = SipAccount.all
end
def update
diff --git a/app/models/acd_agent.rb b/app/models/acd_agent.rb
index a00ac4b..4be4700 100644
--- a/app/models/acd_agent.rb
+++ b/app/models/acd_agent.rb
@@ -3,13 +3,19 @@ class AcdAgent < ActiveRecord::Base
STATUSES = ['active', 'inactive']
attr_accessible :uuid, :name, :status, :automatic_call_distributor_id, :last_call, :calls_answered, :destination_type, :destination_id
-
+
belongs_to :automatic_call_distributor
belongs_to :destination, :polymorphic => true
after_save :set_presence
+ # Validations:
+ #
+ validates_presence_of :name
+ validates_presence_of :destination
+ validates_presence_of :destination_id
+
def to_s
self.name || I18n.t('acd_agents.name') + ' ID ' + self.id.to_s
end
diff --git a/app/views/acd_agents/_form_core.html.haml b/app/views/acd_agents/_form_core.html.haml
index ab4657c..a56fc9a 100644
--- a/app/views/acd_agents/_form_core.html.haml
+++ b/app/views/acd_agents/_form_core.html.haml
@@ -1,7 +1,9 @@
.inputs
= f.input :name, :label => t('acd_agents.form.name.label'), :hint => conditional_hint('acd_agents.form.name.hint')
= f.input :status, :label => t('acd_agents.form.status.label'), :hint => conditional_hint('acd_agents.form.status.hint'), :include_blank => false, :collection => AcdAgent::STATUSES
- = f.input :last_call, :label => t('acd_agents.form.last_call.label'), :hint => conditional_hint('acd_agents.form.last_call.hint')
- = f.input :calls_answered, :label => t('acd_agents.form.calls_answered.label'), :hint => conditional_hint('acd_agents.form.calls_answered.hint')
- = f.input :destination_type, :label => t('acd_agents.form.destination_type.label'), :hint => conditional_hint('acd_agents.form.destination_type.hint'), :include_blank => false, :collection => AcdAgent::DESTINATION_TYPES
- = f.input :destination_id, :label => t('acd_agents.form.destination_id.label'), :hint => conditional_hint('acd_agents.form.destination_id.hint')
+ - if AcdAgent::DESTINATION_TYPES.count == 1 && AcdAgent::DESTINATION_TYPES.first == 'SipAccount' && @available_sip_accounts && @available_sip_accounts.count < 30
+ = f.hidden_field :destination_type, :value => AcdAgent::DESTINATION_TYPES.first
+ = f.input :destination_id, :collection => @available_sip_accounts.map { |r| [r.to_s, r.id] }, :include_blank => false
+ - else
+ = f.input :destination_type, :label => t('acd_agents.form.destination_type.label'), :hint => conditional_hint('acd_agents.form.destination_type.hint'), :include_blank => false, :collection => AcdAgent::DESTINATION_TYPES
+ = f.input :destination_id, :label => t('acd_agents.form.destination_id.label'), :hint => conditional_hint('acd_agents.form.destination_id.hint')
diff --git a/app/views/acd_agents/show.html.haml b/app/views/acd_agents/show.html.haml
index 97881f6..0c90f4b 100644
--- a/app/views/acd_agents/show.html.haml
+++ b/app/views/acd_agents/show.html.haml
@@ -1,9 +1,6 @@
- title t("acd_agents.show.page_title")
%p
- %strong= t('acd_agents.show.uuid') + ":"
- = @acd_agent.uuid
-%p
%strong= t('acd_agents.show.name') + ":"
= @acd_agent.name
%p
@@ -18,11 +15,16 @@
%p
%strong= t('acd_agents.show.calls_answered') + ":"
= @acd_agent.calls_answered
-%p
- %strong= t('acd_agents.show.destination_type') + ":"
- = @acd_agent.destination_type
-%p
- %strong= t('acd_agents.show.destination_id') + ":"
- = @acd_agent.destination_id
+- if @acd_agent.destination_type == 'SipAccount'
+ %p
+ %strong= t('acd_agents.index.destination') + ":"
+ = SipAccount.where(:id => @acd_agent.destination_id).first.try(:to_s)
+- else
+ %p
+ %strong= t('acd_agents.show.destination_type') + ":"
+ = @acd_agent.destination_type
+ %p
+ %strong= t('acd_agents.show.destination_id') + ":"
+ = @acd_agent.destination_id
= render :partial => 'shared/show_edit_destroy_part', :locals => {:parent => @automatic_call_distributor, :child => @acd_agent } \ No newline at end of file