KayakoClient 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/kayako_client.rb +31 -0
- data/lib/kayako_client/base.rb +23 -0
- data/lib/kayako_client/custom_field.rb +14 -0
- data/lib/kayako_client/department.rb +18 -3
- data/lib/kayako_client/http/http.rb +14 -0
- data/lib/kayako_client/http/http_backend.rb +14 -0
- data/lib/kayako_client/http/http_client.rb +14 -0
- data/lib/kayako_client/http/http_response.rb +14 -0
- data/lib/kayako_client/http/net_http.rb +14 -0
- data/lib/kayako_client/knowledgebase_article.rb +131 -0
- data/lib/kayako_client/knowledgebase_attachment.rb +59 -0
- data/lib/kayako_client/knowledgebase_category.rb +71 -0
- data/lib/kayako_client/knowledgebase_comment.rb +32 -0
- data/lib/kayako_client/mixins/api.rb +14 -0
- data/lib/kayako_client/mixins/article_client.rb +76 -0
- data/lib/kayako_client/mixins/attachment.rb +16 -1
- data/lib/kayako_client/mixins/authentication.rb +14 -0
- data/lib/kayako_client/mixins/client.rb +300 -0
- data/lib/kayako_client/mixins/comment_object.rb +102 -0
- data/lib/kayako_client/mixins/convert_api.rb +39 -0
- data/lib/kayako_client/mixins/creator_api.rb +44 -0
- data/lib/kayako_client/mixins/knowledgebase_article_api.rb +69 -0
- data/lib/kayako_client/mixins/knowledgebase_category_client.rb +51 -0
- data/lib/kayako_client/mixins/logger.rb +14 -0
- data/lib/kayako_client/mixins/news_category_client.rb +51 -0
- data/lib/kayako_client/mixins/news_client.rb +51 -0
- data/lib/kayako_client/mixins/object.rb +24 -7
- data/lib/kayako_client/mixins/post_client.rb +14 -0
- data/lib/kayako_client/mixins/staff_visibility_api.rb +14 -0
- data/lib/kayako_client/mixins/ticket_api.rb +14 -0
- data/lib/kayako_client/mixins/ticket_client.rb +14 -0
- data/lib/kayako_client/mixins/troubleshooter_step_api.rb +69 -0
- data/lib/kayako_client/mixins/troubleshooter_step_client.rb +76 -0
- data/lib/kayako_client/mixins/user_visibility_api.rb +14 -0
- data/lib/kayako_client/news_category.rb +29 -0
- data/lib/kayako_client/news_comment.rb +32 -0
- data/lib/kayako_client/news_item.rb +81 -0
- data/lib/kayako_client/news_subscriber.rb +33 -0
- data/lib/kayako_client/staff.rb +14 -0
- data/lib/kayako_client/staff_group.rb +14 -0
- data/lib/kayako_client/ticket.rb +24 -1
- data/lib/kayako_client/ticket_attachment.rb +18 -0
- data/lib/kayako_client/ticket_count.rb +14 -0
- data/lib/kayako_client/ticket_custom_field.rb +14 -0
- data/lib/kayako_client/ticket_note.rb +14 -1
- data/lib/kayako_client/ticket_post.rb +15 -0
- data/lib/kayako_client/ticket_priority.rb +14 -0
- data/lib/kayako_client/ticket_status.rb +14 -0
- data/lib/kayako_client/ticket_time_track.rb +14 -0
- data/lib/kayako_client/ticket_type.rb +14 -0
- data/lib/kayako_client/troubleshooter_attachment.rb +68 -0
- data/lib/kayako_client/troubleshooter_category.rb +51 -0
- data/lib/kayako_client/troubleshooter_comment.rb +32 -0
- data/lib/kayako_client/troubleshooter_step.rb +100 -0
- data/lib/kayako_client/user.rb +42 -0
- data/lib/kayako_client/user_group.rb +14 -0
- data/lib/kayako_client/user_organization.rb +14 -0
- data/lib/kayako_client/xml/lib_xml.rb +14 -0
- data/lib/kayako_client/xml/rexml_document.rb +14 -0
- data/lib/kayako_client/xml/xml.rb +14 -0
- data/lib/kayako_client/xml/xml_backend.rb +14 -0
- data/test/test_attachment.rb +77 -0
- data/test/test_client.rb +191 -0
- data/test/test_configuration.rb +110 -0
- data/test/test_count.rb +162 -0
- data/test/test_custom_field.rb +86 -0
- data/test/test_department.rb +136 -0
- data/test/test_http.rb +34 -0
- data/test/test_knowledgebase.rb +155 -0
- data/test/test_news.rb +117 -0
- data/test/test_note.rb +64 -0
- data/test/test_post.rb +64 -0
- data/test/test_priority.rb +46 -0
- data/test/test_properties.rb +114 -0
- data/test/test_staff.rb +77 -0
- data/test/test_status.rb +52 -0
- data/test/test_ticket.rb +152 -0
- data/test/test_ticket_custom_field.rb +193 -0
- data/test/test_time_track.rb +68 -0
- data/test/test_troubleshooter.rb +106 -0
- data/test/test_type.rb +65 -0
- data/test/test_user.rb +95 -0
- data/test/test_xml.rb +183 -0
- metadata +89 -42
data/lib/kayako_client.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/http/http_response'
|
2
16
|
require 'kayako_client/http/http_backend'
|
3
17
|
require 'kayako_client/http/http'
|
@@ -10,6 +24,11 @@ require 'kayako_client/mixins/object'
|
|
10
24
|
require 'kayako_client/mixins/client'
|
11
25
|
require 'kayako_client/mixins/ticket_client'
|
12
26
|
require 'kayako_client/mixins/post_client'
|
27
|
+
require 'kayako_client/mixins/article_client'
|
28
|
+
require 'kayako_client/mixins/knowledgebase_category_client'
|
29
|
+
require 'kayako_client/mixins/news_category_client'
|
30
|
+
require 'kayako_client/mixins/news_client'
|
31
|
+
require 'kayako_client/mixins/troubleshooter_step_client'
|
13
32
|
require 'kayako_client/mixins/logger'
|
14
33
|
require 'kayako_client/mixins/authentication'
|
15
34
|
require 'kayako_client/mixins/attachment'
|
@@ -20,6 +39,14 @@ require 'kayako_client/mixins/staff_visibility_api'
|
|
20
39
|
require 'kayako_client/base'
|
21
40
|
require 'kayako_client/custom_field'
|
22
41
|
require 'kayako_client/department'
|
42
|
+
require 'kayako_client/knowledgebase_article'
|
43
|
+
require 'kayako_client/knowledgebase_attachment'
|
44
|
+
require 'kayako_client/knowledgebase_category'
|
45
|
+
require 'kayako_client/knowledgebase_comment'
|
46
|
+
require 'kayako_client/news_category'
|
47
|
+
require 'kayako_client/news_comment'
|
48
|
+
require 'kayako_client/news_item'
|
49
|
+
require 'kayako_client/news_subscriber'
|
23
50
|
require 'kayako_client/staff'
|
24
51
|
require 'kayako_client/staff_group'
|
25
52
|
require 'kayako_client/ticket'
|
@@ -32,6 +59,10 @@ require 'kayako_client/ticket_status'
|
|
32
59
|
require 'kayako_client/ticket_time_track'
|
33
60
|
require 'kayako_client/ticket_type'
|
34
61
|
require 'kayako_client/ticket_count'
|
62
|
+
require 'kayako_client/troubleshooter_attachment'
|
63
|
+
require 'kayako_client/troubleshooter_category'
|
64
|
+
require 'kayako_client/troubleshooter_comment'
|
65
|
+
require 'kayako_client/troubleshooter_step'
|
35
66
|
require 'kayako_client/user'
|
36
67
|
require 'kayako_client/user_group'
|
37
68
|
require 'kayako_client/user_organization'
|
data/lib/kayako_client/base.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
module KayakoClient
|
2
16
|
|
3
17
|
class Base
|
@@ -95,4 +109,13 @@ module KayakoClient
|
|
95
109
|
class Tickets < Base
|
96
110
|
end
|
97
111
|
|
112
|
+
class Knowledgebase < Base
|
113
|
+
end
|
114
|
+
|
115
|
+
class News < Base
|
116
|
+
end
|
117
|
+
|
118
|
+
class Troubleshooter < Base
|
119
|
+
end
|
120
|
+
|
98
121
|
end
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
module KayakoClient
|
2
16
|
|
3
17
|
class CustomFieldOption < KayakoClient::Base
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'kayako_client/mixins/user_visibility_api'
|
2
16
|
|
3
17
|
require 'kayako_client/user_group'
|
@@ -7,14 +21,15 @@ module KayakoClient
|
|
7
21
|
include KayakoClient::UserVisibilityAPI
|
8
22
|
|
9
23
|
DEPARTMENT_TYPES = [ :public, :private ].freeze
|
10
|
-
|
24
|
+
DEPARTMENT_APPS = [ :tickets, :livechat ].freeze
|
11
25
|
|
12
|
-
# NOTE: if :parent_department_id is set :
|
26
|
+
# NOTE: if :parent_department_id is set :app should have the corresponding value
|
13
27
|
|
14
28
|
property :id, :integer, :readonly => true
|
15
29
|
property :title, :string, :required => [ :put, :post ]
|
16
30
|
property :type, :symbol, :in => DEPARTMENT_TYPES, :required => :post
|
17
|
-
property :module, :symbol, :in =>
|
31
|
+
property :module, :symbol, :in => DEPARTMENT_APPS, :readonly => true
|
32
|
+
property :app, :symbol, :in => DEPARTMENT_APPS, :required => :post, :new => true
|
18
33
|
property :display_order, :integer
|
19
34
|
property :parent_department_id, :integer
|
20
35
|
property :user_visibility_custom, :boolean
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
module KayakoClient
|
2
16
|
module HTTP
|
3
17
|
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'uri'
|
2
16
|
|
3
17
|
module KayakoClient
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'httpclient'
|
2
16
|
|
3
17
|
module KayakoClient
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
module KayakoClient
|
2
16
|
|
3
17
|
class HTTPResponse
|
@@ -1,3 +1,17 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
1
15
|
require 'net/https'
|
2
16
|
|
3
17
|
module KayakoClient
|
@@ -0,0 +1,131 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
require 'kayako_client/mixins/convert_api'
|
16
|
+
require 'kayako_client/mixins/creator_api'
|
17
|
+
|
18
|
+
require 'kayako_client/knowledgebase_category'
|
19
|
+
|
20
|
+
require 'kayako_client/staff'
|
21
|
+
require 'kayako_client/user'
|
22
|
+
|
23
|
+
module KayakoClient
|
24
|
+
|
25
|
+
class KnowledgebaseAttachment < KayakoClient::Knowledgebase
|
26
|
+
end
|
27
|
+
|
28
|
+
class KnowledgebaseArticle < KayakoClient::Knowledgebase
|
29
|
+
include KayakoClient::ConvertAPI
|
30
|
+
include KayakoClient::CreatorAPI
|
31
|
+
include KayakoClient::ArticleClient
|
32
|
+
|
33
|
+
path '/Knowledgebase/Article'
|
34
|
+
|
35
|
+
CREATOR_USER = 1
|
36
|
+
CREATOR_STAFF = 2
|
37
|
+
|
38
|
+
STATUS_PUBLISHED = 1
|
39
|
+
STATUS_DRAFT = 2
|
40
|
+
STATUS_PENDINGAPPROVAL = 3
|
41
|
+
|
42
|
+
property :kb_article_id, :integer, :readonly => true
|
43
|
+
property :contents, :string, :required => [ :put, :post ]
|
44
|
+
property :contents_text, :string, :readonly => true
|
45
|
+
property :category_ids, [ :integer ], :get => :categories, :set => :categoryid
|
46
|
+
property :creator_type, :integer, :readonly => true, :get => :creator, :range => 1..2
|
47
|
+
property :creator_id, :integer, :required => :post
|
48
|
+
property :is_edited, :boolean, :readonly => true
|
49
|
+
property :subject, :string, :required => [ :put, :post ]
|
50
|
+
property :edited_date_line, :date, :readonly => true
|
51
|
+
property :edited_staff_id, :integer, :required => :put
|
52
|
+
property :views, :integer, :readonly => true
|
53
|
+
property :is_featured, :boolean
|
54
|
+
property :allow_comments, :boolean
|
55
|
+
property :total_comments, :integer, :readonly => true
|
56
|
+
property :has_attachments, :boolean, :readonly => true
|
57
|
+
property :date_line, :date, :readonly => true
|
58
|
+
property :article_status, :integer, :range => 1..3
|
59
|
+
property :article_rating, :float, :readonly => true
|
60
|
+
property :rating_hits, :integer, :readonly => true
|
61
|
+
property :rating_count, :integer, :readonly => true
|
62
|
+
|
63
|
+
property :attachments, [ :object ], :class => KnowledgebaseAttachment
|
64
|
+
|
65
|
+
associate :categories, :category_ids, KnowledgebaseCategory
|
66
|
+
associate :edited_staff, :edited_staff_id, Staff
|
67
|
+
|
68
|
+
alias_method :id, :kb_article_id
|
69
|
+
|
70
|
+
def in_root_category?
|
71
|
+
!category_ids.nil? && category_ids.include?(0)
|
72
|
+
end
|
73
|
+
|
74
|
+
def in_category?(category)
|
75
|
+
category.respond_to?(:to_i) && !category_ids.nil? && category_ids.include?(category.to_i)
|
76
|
+
end
|
77
|
+
|
78
|
+
if method_defined?(:categories)
|
79
|
+
remove_method(:categories)
|
80
|
+
end
|
81
|
+
|
82
|
+
def categories
|
83
|
+
if @associated.has_key?(:category_ids)
|
84
|
+
@associated[:category_ids]
|
85
|
+
elsif instance_variable_defined?(:@category_ids)
|
86
|
+
category_ids = instance_variable_get(:@category_ids)
|
87
|
+
if category_ids.is_a?(Array)
|
88
|
+
@associated[:category_ids] = category_ids.inject([]) do |array, i|
|
89
|
+
array << KnowledgebaseCategory.get(i.to_i, inherited_options) unless i.to_i == 0
|
90
|
+
array
|
91
|
+
end
|
92
|
+
else
|
93
|
+
@associated[:category_ids] = nil
|
94
|
+
end
|
95
|
+
else
|
96
|
+
@associated[:category_ids] = nil
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.all(*args)
|
101
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
102
|
+
if args.size > 0
|
103
|
+
if args.size == 1
|
104
|
+
options.merge!(:e => "#{path}/ListAll/#{args.first.to_i}")
|
105
|
+
else
|
106
|
+
raise ArgumentError, "too many arguments"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
super(options)
|
110
|
+
end
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def validate(method, params)
|
115
|
+
if method == :put
|
116
|
+
unless changes.include?(:edited_staff_id) && params[:edited_staff_id].to_i > 0
|
117
|
+
raise ArgumentError, ":edited_staff_id is required"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def assign_value(type, value, options = {})
|
123
|
+
if type == :object && value.is_a?(Hash) && options[:class] == KnowledgebaseAttachment
|
124
|
+
value[:kb_article_id] = kb_article_id unless value.has_key?(:kbarticleid)
|
125
|
+
end
|
126
|
+
super(type, value, options)
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
require 'kayako_client/mixins/knowledgebase_article_api'
|
16
|
+
|
17
|
+
require 'kayako_client/knowledgebase_article'
|
18
|
+
|
19
|
+
module KayakoClient
|
20
|
+
class KnowledgebaseAttachment < KayakoClient::Knowledgebase
|
21
|
+
include KayakoClient::KnowledgebaseArticleAPI
|
22
|
+
include KayakoClient::Attachment
|
23
|
+
|
24
|
+
path '/Knowledgebase/Attachment'
|
25
|
+
|
26
|
+
supports :all, :get, :post, :delete
|
27
|
+
|
28
|
+
property :id, :integer, :readonly => true
|
29
|
+
property :kb_article_id, :integer, :required => :post
|
30
|
+
property :file_name, :string, :required => :post
|
31
|
+
property :file_size, :integer, :readonly => true
|
32
|
+
property :file_type, :string, :readonly => true
|
33
|
+
property :date_line, :date, :readonly => true
|
34
|
+
property :contents, :binary, :required => :post, :new => true
|
35
|
+
property :link, :string, :readonly => true
|
36
|
+
|
37
|
+
associate :article, :kb_article_id, KnowledgebaseArticle
|
38
|
+
|
39
|
+
if method_defined?(:contents)
|
40
|
+
remove_method(:contents)
|
41
|
+
end
|
42
|
+
|
43
|
+
def contents
|
44
|
+
if instance_variable_defined?(:@contents)
|
45
|
+
instance_variable_get(:@contents)
|
46
|
+
elsif !new? && id && kb_article_id && id > 0 && kb_article_id > 0
|
47
|
+
logger.debug "contents are missing - trying to reload" if logger
|
48
|
+
if reload!(:e => "#{self.class.path}/#{kb_article_id.to_i}/#{id.to_i}") && instance_variable_defined?(:@contents)
|
49
|
+
instance_variable_get(:@contents)
|
50
|
+
else
|
51
|
+
instance_variable_set(:@contents, nil)
|
52
|
+
end
|
53
|
+
else
|
54
|
+
nil
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#######################################################################
|
2
|
+
#
|
3
|
+
# Kayako Ruby REST API library
|
4
|
+
# _____________________________________________________________________
|
5
|
+
#
|
6
|
+
# @author Andriy Lesyuk
|
7
|
+
#
|
8
|
+
# @package KayakoClient
|
9
|
+
# @copyright Copyright (c) 2011-2013, Kayako
|
10
|
+
# @license FreeBSD
|
11
|
+
# @link http://forge.kayako.com/projects/kayako-ruby-api-library
|
12
|
+
#
|
13
|
+
#######################################################################
|
14
|
+
|
15
|
+
require 'kayako_client/mixins/convert_api'
|
16
|
+
|
17
|
+
require 'kayako_client/staff'
|
18
|
+
require 'kayako_client/user_group'
|
19
|
+
require 'kayako_client/staff_group'
|
20
|
+
|
21
|
+
module KayakoClient
|
22
|
+
class KnowledgebaseCategory < KayakoClient::Knowledgebase
|
23
|
+
include KayakoClient::ConvertAPI
|
24
|
+
include KayakoClient::UserVisibilityAPI
|
25
|
+
include KayakoClient::StaffVisibilityAPI
|
26
|
+
include KayakoClient::KnowledgebaseCategoryClient
|
27
|
+
|
28
|
+
path '/Knowledgebase/Category'
|
29
|
+
|
30
|
+
TYPE_GLOBAL = 1
|
31
|
+
TYPE_PUBLIC = 2
|
32
|
+
TYPE_PRIVATE = 3
|
33
|
+
TYPE_INHERIT = 4
|
34
|
+
|
35
|
+
SORT_INHERIT = 1
|
36
|
+
SORT_TITLE = 2
|
37
|
+
SORT_RATING = 3
|
38
|
+
SORT_CREATIONDATE = 4
|
39
|
+
SORT_DISPLAYORDER = 5
|
40
|
+
|
41
|
+
property :id, :integer, :readonly => true
|
42
|
+
property :parent_kb_category_id, :integer
|
43
|
+
property :staff_id, :integer, :new => true
|
44
|
+
property :title, :string, :required => [ :put, :post ]
|
45
|
+
property :total_articles, :integer, :readonly => true
|
46
|
+
property :category_type, :integer, :required => :post, :range => 1..4
|
47
|
+
property :display_order, :integer
|
48
|
+
property :allow_comments, :boolean
|
49
|
+
property :allow_rating, :boolean
|
50
|
+
property :is_published, :boolean
|
51
|
+
property :article_sort_order, :integer, :range => 1..5
|
52
|
+
property :user_visibility_custom, :boolean
|
53
|
+
property :user_group_ids, [ :integer ], :get => :usergroupidlist, :set => :usergroupidlist, :condition => { :user_visibility_custom => true }
|
54
|
+
property :staff_visibility_custom, :boolean
|
55
|
+
property :staff_group_ids, [ :integer ], :get => :staffgroupidlist, :set => :staffgroupidlist, :condition => { :staff_visibility_custom => true }
|
56
|
+
|
57
|
+
associate :parent_category, :parent_kb_category_id, KnowledgebaseCategory
|
58
|
+
associate :staff, :staff_id, Staff
|
59
|
+
associate :user_groups, :user_group_ids, UserGroup
|
60
|
+
associate :staff_groups, :staff_group_ids, StaffGroup
|
61
|
+
|
62
|
+
def has_parent_category?
|
63
|
+
!parent_kb_category_id.nil? && parent_kb_category_id > 0
|
64
|
+
end
|
65
|
+
|
66
|
+
def parent_is_root?
|
67
|
+
!parent_kb_category_id.nil? && parent_kb_category_id == 0
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|