class KayakoClient::TicketCustomField
Constants
- TYPE_CHECKBOX
- TYPE_CUSTOM
- TYPE_DATE
- TYPE_FILE
- TYPE_LINKED_SELECT
- TYPE_MULTI_SELECT
- TYPE_PASSWORD
- TYPE_RADIO
- TYPE_SELECT
- TYPE_TEXT
- TYPE_TEXT_AREA
Attributes
ticket_id[RW]
Public Class Methods
get(*args)
click to toggle source
Calls superclass method
# File lib/kayako_client/ticket_custom_field.rb, line 253 def self.get(*args) object = super if object && object.respond_to?(:ticket_id=) object.ticket_id = args[0] object.loaded! end object end
new(*args)
click to toggle source
NOTE: when a new field is added returns (for old tickets): [Notice]: Undefined offset: 11 (api/class.Controller_TicketCustomField.php:279)
Calls superclass method
KayakoClient::Base::new
# File lib/kayako_client/ticket_custom_field.rb, line 79 def initialize(*args) properties = {} if args.last.is_a?(Hash) args.last.keys.each do |property| if property.is_a?(String) properties[property] = args.last.delete(property) end end if args.last.has_key?(:ticket_id) self.ticket_id = args.last.delete(:ticket_id) end end super if properties.size > 0 properties.each do |property, value| self[property] = value end end end
Public Instance Methods
[](name)
click to toggle source
Calls superclass method
KayakoClient::Object#[]
# File lib/kayako_client/ticket_custom_field.rb, line 155 def [](name) value = custom_field(name) unless name.is_a?(Symbol) value || super end
[]=(name, value)
click to toggle source
Calls superclass method
KayakoClient::Object#[]=
# File lib/kayako_client/ticket_custom_field.rb, line 172 def []=(name, value) if defined?(@groups) && @groups.size > 0 if name.is_a?(Numeric) if name.to_i > 0 @groups.each do |group| next unless group.fields && !group.fields.empty? group.fields.each do |field| if field.id == name.to_i field.contents = value.to_s return field.contents end end end raise ArgumentError, "use custom field name" else raise ArgumentError, "invalid custom field ID" end elsif name.is_a?(String) @groups.each do |group| next unless group.fields && !group.fields.empty? group.fields.each do |field| if field.title == name field.contents = value.to_s return field.contents end end end @groups.each do |group| next unless group.fields && !group.fields.empty? group.fields.each do |field| if field.name == name field.contents = value.to_s return field.contents end end end end end if name =~ %r{^[a-z0-9]{12}$} @new_group ||= [] @new_group << TicketCustomFieldValue.new(:name => name.to_s, :contents => value.to_s) return value.to_s end super end
custom_field(name)
click to toggle source
# File lib/kayako_client/ticket_custom_field.rb, line 109 def custom_field(name) if defined?(@groups) && @groups.size > 0 if name.is_a?(Numeric) if name.to_i > 0 @groups.each do |group| next unless group.fields && !group.fields.empty? group.fields.each do |field| if field.id == name.to_i return field.contents end end end end elsif name.is_a?(String) @groups.each do |group| next unless group.fields && !group.fields.empty? group.fields.each do |field| if field.title == name return field.contents end end end @groups.each do |group| next unless group.fields && !group.fields.empty? group.fields.each do |field| if field.name == name return field.contents end end end end end if defined?(@new_group) && @new_group.size > 0 if name.is_a?(String) @new_group.each do |field| if field.name == name return field.contents end end end end nil end
each(&block)
click to toggle source
# File lib/kayako_client/ticket_custom_field.rb, line 160 def each(&block) if defined?(@groups) && @groups.size > 0 @groups.each do |group| group.fields.each(&block) end end if defined?(@new_group) && @new_group.size > 0 @new_group.each(&block) end end
empty?()
click to toggle source
# File lib/kayako_client/ticket_custom_field.rb, line 99 def empty? if groups && groups.size > 0 false elsif defined?(@new_group) && @new_group.size > 0 false else true end end
post()
click to toggle source
# File lib/kayako_client/ticket_custom_field.rb, line 220 def post raise RuntimeError, "client not configured" unless configured? raise RuntimeError, "missing ticket ID" unless ticket_id.to_i > 0 params = {} each do |field| params[field.name] = field.contents end random = self.class.salt e = "#{self.class.path}/#{ticket_id.to_i}" response = client.post(api_url, params.merge(:e => e, :apikey => api_key, :salt => random, :signature => self.class.signature(random, secret_key))) if response.is_a?(KayakoClient::HTTPOK) if logger logger.debug "Response:" logger.debug response.body end payload = xml_backend.new(response.body, { :logger => logger }) clean import(payload.to_hash) loaded! logger.info ":post successful" if logger true else unless response.is_a?(Hash) logger.error "Response: #{response.status} #{response.body}" if logger raise StandardError, "server returned #{response.status}: #{response.body}" end false end end