zendesk2 1.8.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -1
- data/lib/zendesk2/attributes.rb +1 -1
- data/lib/zendesk2/audit_event.rb +1 -1
- data/lib/zendesk2/category.rb +3 -3
- data/lib/zendesk2/collection.rb +2 -2
- data/lib/zendesk2/create_category.rb +2 -2
- data/lib/zendesk2/create_forum.rb +2 -2
- data/lib/zendesk2/create_group.rb +1 -1
- data/lib/zendesk2/create_membership.rb +1 -1
- data/lib/zendesk2/create_organization.rb +1 -1
- data/lib/zendesk2/create_ticket.rb +9 -9
- data/lib/zendesk2/create_ticket_field.rb +1 -1
- data/lib/zendesk2/create_topic.rb +1 -1
- data/lib/zendesk2/create_topic_comment.rb +1 -1
- data/lib/zendesk2/create_user.rb +3 -3
- data/lib/zendesk2/create_user_field.rb +2 -2
- data/lib/zendesk2/create_user_identity.rb +4 -4
- data/lib/zendesk2/create_view.rb +2 -2
- data/lib/zendesk2/destroy_user.rb +2 -2
- data/lib/zendesk2/forum.rb +3 -3
- data/lib/zendesk2/get_assignable_groups.rb +1 -1
- data/lib/zendesk2/get_ccd_tickets.rb +1 -1
- data/lib/zendesk2/get_current_user.rb +1 -1
- data/lib/zendesk2/get_user_identities.rb +1 -1
- data/lib/zendesk2/group.rb +3 -3
- data/lib/zendesk2/groups.rb +2 -2
- data/lib/zendesk2/help_center.rb +9 -0
- data/lib/zendesk2/help_center/access_policy.rb +1 -1
- data/lib/zendesk2/help_center/article.rb +9 -3
- data/lib/zendesk2/help_center/articles.rb +1 -1
- data/lib/zendesk2/help_center/category.rb +11 -5
- data/lib/zendesk2/help_center/create_help_center_article.rb +2 -2
- data/lib/zendesk2/help_center/create_help_center_category.rb +2 -2
- data/lib/zendesk2/help_center/create_help_center_section.rb +4 -4
- data/lib/zendesk2/help_center/create_help_center_translation.rb +37 -0
- data/lib/zendesk2/help_center/destroy_help_center_translation.rb +13 -0
- data/lib/zendesk2/help_center/get_help_center_translation.rb +13 -0
- data/lib/zendesk2/help_center/get_help_center_translations.rb +25 -0
- data/lib/zendesk2/help_center/section.rb +12 -6
- data/lib/zendesk2/help_center/sections.rb +1 -1
- data/lib/zendesk2/help_center/translation.rb +48 -0
- data/lib/zendesk2/help_center/translation_source.rb +45 -0
- data/lib/zendesk2/help_center/translations.rb +29 -0
- data/lib/zendesk2/help_center/update_help_center_translation.rb +16 -0
- data/lib/zendesk2/mark_user_identity_primary.rb +1 -1
- data/lib/zendesk2/membership.rb +3 -3
- data/lib/zendesk2/memberships.rb +3 -3
- data/lib/zendesk2/mock.rb +2 -1
- data/lib/zendesk2/organization.rb +8 -8
- data/lib/zendesk2/organizations.rb +2 -2
- data/lib/zendesk2/paged_collection.rb +3 -3
- data/lib/zendesk2/real.rb +6 -6
- data/lib/zendesk2/request.rb +9 -9
- data/lib/zendesk2/search.rb +2 -2
- data/lib/zendesk2/searchable.rb +1 -1
- data/lib/zendesk2/ticket.rb +9 -9
- data/lib/zendesk2/ticket_audit.rb +2 -2
- data/lib/zendesk2/ticket_audits.rb +3 -3
- data/lib/zendesk2/ticket_comment.rb +1 -1
- data/lib/zendesk2/ticket_comment_privacy_change.rb +1 -1
- data/lib/zendesk2/ticket_comments.rb +2 -2
- data/lib/zendesk2/ticket_field.rb +3 -3
- data/lib/zendesk2/ticket_metric.rb +1 -1
- data/lib/zendesk2/ticket_voice_comment.rb +1 -1
- data/lib/zendesk2/tickets.rb +1 -1
- data/lib/zendesk2/topic.rb +3 -3
- data/lib/zendesk2/topic_comment.rb +4 -4
- data/lib/zendesk2/update_organization.rb +1 -1
- data/lib/zendesk2/update_ticket.rb +5 -5
- data/lib/zendesk2/update_user.rb +4 -4
- data/lib/zendesk2/user.rb +13 -13
- data/lib/zendesk2/user_field.rb +3 -3
- data/lib/zendesk2/user_identity.rb +5 -5
- data/lib/zendesk2/users.rb +1 -1
- data/lib/zendesk2/version.rb +1 -1
- data/lib/zendesk2/view.rb +4 -4
- data/spec/help_center/articles_spec.rb +18 -0
- data/spec/help_center/categories_spec.rb +13 -0
- data/spec/help_center/sections_spec.rb +14 -1
- data/spec/support/client_helper.rb +0 -1
- metadata +10 -2
data/lib/zendesk2/help_center.rb
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
module Zendesk2::HelpCenter; end
|
2
2
|
|
3
|
+
require 'zendesk2/help_center/translation_source'
|
4
|
+
|
3
5
|
require 'zendesk2/help_center/create_help_center_article'
|
4
6
|
require 'zendesk2/help_center/create_help_center_category'
|
5
7
|
require 'zendesk2/help_center/create_help_center_section'
|
8
|
+
require 'zendesk2/help_center/create_help_center_translation'
|
6
9
|
require 'zendesk2/help_center/destroy_help_center_article'
|
7
10
|
require 'zendesk2/help_center/destroy_help_center_category'
|
8
11
|
require 'zendesk2/help_center/destroy_help_center_section'
|
12
|
+
require 'zendesk2/help_center/destroy_help_center_translation'
|
9
13
|
require 'zendesk2/help_center/get_help_center_access_policy'
|
10
14
|
require 'zendesk2/help_center/get_help_center_article'
|
11
15
|
require 'zendesk2/help_center/get_help_center_articles'
|
@@ -16,17 +20,22 @@ require 'zendesk2/help_center/get_help_center_category'
|
|
16
20
|
require 'zendesk2/help_center/get_help_center_section'
|
17
21
|
require 'zendesk2/help_center/get_help_center_sections'
|
18
22
|
require 'zendesk2/help_center/get_help_center_sections_articles'
|
23
|
+
require 'zendesk2/help_center/get_help_center_translation'
|
24
|
+
require 'zendesk2/help_center/get_help_center_translations'
|
19
25
|
require 'zendesk2/help_center/search_help_center_articles'
|
20
26
|
require 'zendesk2/help_center/update_help_center_access_policy'
|
21
27
|
require 'zendesk2/help_center/update_help_center_article'
|
22
28
|
require 'zendesk2/help_center/update_help_center_category'
|
23
29
|
require 'zendesk2/help_center/update_help_center_section'
|
30
|
+
require 'zendesk2/help_center/update_help_center_translation'
|
24
31
|
|
25
32
|
require 'zendesk2/help_center/access_policy'
|
26
33
|
require 'zendesk2/help_center/article'
|
27
34
|
require 'zendesk2/help_center/category'
|
28
35
|
require 'zendesk2/help_center/section'
|
36
|
+
require 'zendesk2/help_center/translation'
|
29
37
|
|
30
38
|
require 'zendesk2/help_center/articles'
|
31
39
|
require 'zendesk2/help_center/categories'
|
32
40
|
require 'zendesk2/help_center/sections'
|
41
|
+
require 'zendesk2/help_center/translations'
|
@@ -20,7 +20,7 @@ class Zendesk2::HelpCenter::AccessPolicy
|
|
20
20
|
def save!
|
21
21
|
requires :section_id
|
22
22
|
|
23
|
-
response =
|
23
|
+
response = cistern.update_help_center_access_policy("access_policy" => self.attributes, "section_id" => self.section_id)
|
24
24
|
merge_attributes(response.body["access_policy"])
|
25
25
|
end
|
26
26
|
end
|
@@ -45,15 +45,21 @@ class Zendesk2::HelpCenter::Article
|
|
45
45
|
|
46
46
|
assoc_accessor :section, collection: :help_center_sections
|
47
47
|
|
48
|
+
def translations
|
49
|
+
requires :identity
|
50
|
+
|
51
|
+
cistern.help_center_translations(source_id: self.identity, source_type: "Article")
|
52
|
+
end
|
53
|
+
|
48
54
|
def save!
|
49
55
|
response = if new_record?
|
50
56
|
requires :title, :locale, :section_id
|
51
57
|
|
52
|
-
|
58
|
+
cistern.create_help_center_article("article" => self.attributes)
|
53
59
|
else
|
54
60
|
requires :identity
|
55
61
|
|
56
|
-
|
62
|
+
cistern.update_help_center_article("article" => self.attributes)
|
57
63
|
end
|
58
64
|
|
59
65
|
merge_attributes(response.body["article"])
|
@@ -62,6 +68,6 @@ class Zendesk2::HelpCenter::Article
|
|
62
68
|
def destroy!
|
63
69
|
requires :identity
|
64
70
|
|
65
|
-
|
71
|
+
cistern.destroy_help_center_article("article" => { "id" => self.identity })
|
66
72
|
end
|
67
73
|
end
|
@@ -28,7 +28,7 @@ class Zendesk2::HelpCenter::Articles
|
|
28
28
|
:get_help_center_articles
|
29
29
|
end
|
30
30
|
|
31
|
-
body =
|
31
|
+
body = cistern.send(collection_method, Cistern::Hash.stringify_keys(self.attributes.merge(params))).body
|
32
32
|
|
33
33
|
self.load(body[collection_root]) # 'results' is the key for paged searches
|
34
34
|
self.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
|
@@ -32,30 +32,36 @@ class Zendesk2::HelpCenter::Category
|
|
32
32
|
def articles
|
33
33
|
requires :identity
|
34
34
|
|
35
|
-
|
35
|
+
cistern.help_center_articles(category_id: self.identity)
|
36
36
|
end
|
37
37
|
|
38
38
|
def destroy!
|
39
39
|
requires :identity
|
40
40
|
|
41
|
-
|
41
|
+
cistern.destroy_help_center_category("category" => { "id" => self.identity })
|
42
42
|
end
|
43
43
|
|
44
44
|
def sections
|
45
45
|
requires :identity
|
46
46
|
|
47
|
-
|
47
|
+
cistern.help_center_sections(category_id: self.identity)
|
48
|
+
end
|
49
|
+
|
50
|
+
def translations
|
51
|
+
requires :identity
|
52
|
+
|
53
|
+
cistern.help_center_translations(source_id: self.identity, source_type: "Category")
|
48
54
|
end
|
49
55
|
|
50
56
|
def save!
|
51
57
|
response = if new_record?
|
52
58
|
requires :name, :locale
|
53
59
|
|
54
|
-
|
60
|
+
cistern.create_help_center_category("category" => self.attributes)
|
55
61
|
else
|
56
62
|
requires :identity
|
57
63
|
|
58
|
-
|
64
|
+
cistern.update_help_center_category("category" => self.attributes)
|
59
65
|
end
|
60
66
|
|
61
67
|
merge_attributes(response.body["category"])
|
@@ -24,7 +24,7 @@ class Zendesk2::CreateHelpCenterArticle
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def mock
|
27
|
-
identity =
|
27
|
+
identity = cistern.serial_id
|
28
28
|
|
29
29
|
locale = params["locale"] ||= "en-us"
|
30
30
|
position = self.data[:help_center_articles].values.select { |a| a["section_id"] == section_id }.size
|
@@ -33,7 +33,7 @@ class Zendesk2::CreateHelpCenterArticle
|
|
33
33
|
"id" => identity,
|
34
34
|
"url" => url_for("/help_center/#{locale}/articles/#{identity}.json"),
|
35
35
|
"html_url" => html_url_for("/hc/#{locale}/articles/#{identity}.json"),
|
36
|
-
"author_id" =>
|
36
|
+
"author_id" => cistern.current_user["id"],
|
37
37
|
"comments_disabled" => false,
|
38
38
|
"label_names" => [],
|
39
39
|
"draft" => false,
|
@@ -14,7 +14,7 @@ class Zendesk2::CreateHelpCenterCategory
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def mock
|
17
|
-
identity =
|
17
|
+
identity = cistern.serial_id
|
18
18
|
|
19
19
|
locale = params["locale"] ||= "en-us"
|
20
20
|
position = self.data[:help_center_categories].size
|
@@ -23,7 +23,7 @@ class Zendesk2::CreateHelpCenterCategory
|
|
23
23
|
"id" => identity,
|
24
24
|
"url" => url_for("/help_center/#{locale}/categories/#{identity}.json"),
|
25
25
|
"html_url" => html_url_for("/hc/#{locale}/categories/#{identity}.json"),
|
26
|
-
"author_id" =>
|
26
|
+
"author_id" => cistern.current_user["id"],
|
27
27
|
"position" => position,
|
28
28
|
"created_at" => Time.now.iso8601,
|
29
29
|
"updated_at" => Time.now.iso8601,
|
@@ -18,7 +18,7 @@ class Zendesk2::CreateHelpCenterSection
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def mock
|
21
|
-
identity =
|
21
|
+
identity = cistern.serial_id
|
22
22
|
|
23
23
|
locale = params["locale"] ||= "en-us"
|
24
24
|
position = self.data[:help_center_sections].values.select { |a| a["category_id"] == category_id }.size
|
@@ -27,7 +27,7 @@ class Zendesk2::CreateHelpCenterSection
|
|
27
27
|
"id" => identity,
|
28
28
|
"url" => url_for("/help_center/#{locale}/sections/#{identity}.json"),
|
29
29
|
"html_url" => html_url_for("/hc/#{locale}/sections/#{identity}.json"),
|
30
|
-
"author_id" =>
|
30
|
+
"author_id" => cistern.current_user["id"],
|
31
31
|
"comments_disabled" => false,
|
32
32
|
"label_names" => [],
|
33
33
|
"draft" => false,
|
@@ -44,7 +44,7 @@ class Zendesk2::CreateHelpCenterSection
|
|
44
44
|
"outdated" => false,
|
45
45
|
}.merge(section_params)
|
46
46
|
|
47
|
-
|
47
|
+
cistern.data[:help_center_sections][identity] = record
|
48
48
|
|
49
49
|
access_policy = {
|
50
50
|
"viewable_by" => "everyone",
|
@@ -54,7 +54,7 @@ class Zendesk2::CreateHelpCenterSection
|
|
54
54
|
"required_tags" => [],
|
55
55
|
"section_id" => identity
|
56
56
|
}
|
57
|
-
|
57
|
+
cistern.data[:help_center_access_policies][identity] = access_policy
|
58
58
|
|
59
59
|
mock_response("section" => record)
|
60
60
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class Zendesk2::CreateHelpCenterTranslation
|
2
|
+
include Zendesk2::Request
|
3
|
+
include Zendesk2::HelpCenter::TranslationSource::Request
|
4
|
+
|
5
|
+
request_method :post
|
6
|
+
request_path { |r| "/help_center/#{r.source_type_url}/#{r.source_id}/translations/#{r.locale}.json" }
|
7
|
+
request_body { |r| { "translation" => r.translation_params } }
|
8
|
+
|
9
|
+
def self.accepted_attributes
|
10
|
+
%w[locale title body outdated draft]
|
11
|
+
end
|
12
|
+
|
13
|
+
def translation_params
|
14
|
+
Cistern::Hash.slice(params.fetch("translation"), *self.class.accepted_attributes)
|
15
|
+
end
|
16
|
+
|
17
|
+
def mock
|
18
|
+
identity = cistern.serial_id
|
19
|
+
|
20
|
+
record = {
|
21
|
+
"id" => identity,
|
22
|
+
"url" => url_for("/help_center/#{source_type_url}/#{source_id}/translation/#{locale}.json"),
|
23
|
+
"html_url" => html_url_for("/hc/#{locale}/#{source_type_url}/#{source_id}"),
|
24
|
+
"created_at" => Time.now.iso8601,
|
25
|
+
"updated_at" => Time.now.iso8601,
|
26
|
+
"title" => params.fetch("translation").fetch("title"),
|
27
|
+
"body" => (params.fetch("translation")["body"] || ""),
|
28
|
+
"outdated" => false,
|
29
|
+
"draft" => false,
|
30
|
+
"locale" => locale,
|
31
|
+
}.merge(translation_params)
|
32
|
+
|
33
|
+
cistern.data[:help_center_translations][mock_translation_key] = record
|
34
|
+
|
35
|
+
mock_response("translation" => record)
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class Zendesk2::DestroyHelpCenterTranslation
|
2
|
+
include Zendesk2::Request
|
3
|
+
include Zendesk2::HelpCenter::TranslationSource::Request
|
4
|
+
|
5
|
+
request_method :delete
|
6
|
+
request_path { |r| "/help_center/#{r.source_type_url}/#{r.source_id}/translations/#{r.locale}.json" }
|
7
|
+
|
8
|
+
def mock
|
9
|
+
self.delete!(:help_center_translations, mock_translation_key)
|
10
|
+
|
11
|
+
mock_response(nil)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class Zendesk2::GetHelpCenterTranslation
|
2
|
+
include Zendesk2::Request
|
3
|
+
include Zendesk2::HelpCenter::TranslationSource::Request
|
4
|
+
|
5
|
+
request_method :get
|
6
|
+
request_path { |r|
|
7
|
+
"/help_center/#{r.source_type_url}/#{r.source_id}/translations/#{r.locale}.json"
|
8
|
+
}
|
9
|
+
|
10
|
+
def mock(params={})
|
11
|
+
mock_response("translation" => self.find!(:help_center_translations, mock_translation_key))
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Zendesk2::GetHelpCenterTranslations
|
2
|
+
include Zendesk2::Request
|
3
|
+
include Zendesk2::HelpCenter::TranslationSource::Request
|
4
|
+
|
5
|
+
request_path { |r| "/help_center/#{r.source_type_url}/#{r.source_id}/translations.json" }
|
6
|
+
request_params { |r| r.translation_params }
|
7
|
+
|
8
|
+
page_params!
|
9
|
+
|
10
|
+
def translation_params
|
11
|
+
new_params = Cistern::Hash.slice(params, :outdated, :draft)
|
12
|
+
|
13
|
+
# Extract locales and dedup "locale"
|
14
|
+
locales = params["locales"] || []
|
15
|
+
locales << params["locale"] unless !params["locale"] || params["locale"].empty?
|
16
|
+
locales.uniq!
|
17
|
+
new_params["locales"] = locales.join(",") unless locales.empty?
|
18
|
+
|
19
|
+
return new_params
|
20
|
+
end
|
21
|
+
|
22
|
+
def mock
|
23
|
+
page(:help_center_translations, root: "translations")
|
24
|
+
end
|
25
|
+
end
|
@@ -39,18 +39,18 @@ class Zendesk2::HelpCenter::Section
|
|
39
39
|
def destroy!
|
40
40
|
requires :identity
|
41
41
|
|
42
|
-
|
42
|
+
cistern.destroy_help_center_section("section" => { "id" => self.identity })
|
43
43
|
end
|
44
44
|
|
45
45
|
def save!
|
46
46
|
response = if new_record?
|
47
47
|
requires :name, :locale, :category_id
|
48
48
|
|
49
|
-
|
49
|
+
cistern.create_help_center_section("section" => self.attributes)
|
50
50
|
else
|
51
51
|
requires :identity
|
52
52
|
|
53
|
-
|
53
|
+
cistern.update_help_center_section("section" => self.attributes)
|
54
54
|
end
|
55
55
|
|
56
56
|
merge_attributes(response.body["section"])
|
@@ -59,17 +59,23 @@ class Zendesk2::HelpCenter::Section
|
|
59
59
|
def articles
|
60
60
|
requires :identity
|
61
61
|
|
62
|
-
|
62
|
+
cistern.help_center_articles(section_id: self.identity)
|
63
63
|
end
|
64
64
|
|
65
65
|
def access_policy
|
66
66
|
requires :identity
|
67
67
|
|
68
|
-
response =
|
68
|
+
response = cistern.get_help_center_access_policy(section_id: self.identity).body["access_policy"]
|
69
69
|
response.merge!({
|
70
70
|
"section_id" => self.identity
|
71
71
|
})
|
72
72
|
|
73
|
-
|
73
|
+
cistern.help_center_access_policy(response)
|
74
|
+
end
|
75
|
+
|
76
|
+
def translations
|
77
|
+
requires :identity
|
78
|
+
|
79
|
+
cistern.help_center_translations(source_id: self.identity, source_type: "Section")
|
74
80
|
end
|
75
81
|
end
|
@@ -22,7 +22,7 @@ class Zendesk2::HelpCenter::Sections
|
|
22
22
|
:get_help_center_sections
|
23
23
|
end
|
24
24
|
|
25
|
-
body =
|
25
|
+
body = cistern.send(collection_method, Cistern::Hash.stringify_keys(self.attributes.merge(params))).body
|
26
26
|
|
27
27
|
self.load(body[collection_root]) # 'results' is the key for paged searches
|
28
28
|
self.merge_attributes(Cistern::Hash.slice(body, "count", "next_page", "previous_page"))
|
@@ -0,0 +1,48 @@
|
|
1
|
+
class Zendesk2::HelpCenter::Translation
|
2
|
+
include Zendesk2::Model
|
3
|
+
include Zendesk2::HelpCenter::TranslationSource::Model
|
4
|
+
|
5
|
+
extend Zendesk2::Attributes
|
6
|
+
|
7
|
+
# @return [Integer] Automatically assigned when the translation is created
|
8
|
+
identity :id, type: :integer # ro:yes required:no
|
9
|
+
|
10
|
+
# @return [String] The API url of the translation
|
11
|
+
attribute :url, type: :string # ro:yes required:no
|
12
|
+
# @return [String] The url of the translation in Help Center
|
13
|
+
attribute :html_url, type: :string # ro:yes required:no
|
14
|
+
# @return [Integer] The id of the item that has this translation
|
15
|
+
attribute :source_id, type: :integer # ro:yes required:no
|
16
|
+
# @return [String] The type of the item that has this translation. Can be Article, Section, or Category
|
17
|
+
attribute :source_type, type: :string # ro:yes required:no
|
18
|
+
# @return [String] The locale of the translation
|
19
|
+
attribute :locale, type: :string # ro:no required:yes
|
20
|
+
# @return [String] The title of the translation
|
21
|
+
attribute :title, type: :string # ro:no required:yes
|
22
|
+
# @return [String] The body of the translation. Empty by default
|
23
|
+
attribute :body, type: :string # ro:no required:no
|
24
|
+
# @return [Boolean] True if the translation is outdated; false otherwise. False by default
|
25
|
+
attribute :outdated, type: :boolean # ro:no required:no
|
26
|
+
# @return [Boolean] True if the translation is a draft; false otherwise. False by default
|
27
|
+
attribute :draft, type: :boolean # ro:no required:no
|
28
|
+
|
29
|
+
def destroy!
|
30
|
+
requires :locale, :source_id, :source_type
|
31
|
+
|
32
|
+
cistern.destroy_help_center_translation("translation" => Cistern::Hash.slice(self.attributes, :source_id, :source_type, :locale))
|
33
|
+
end
|
34
|
+
|
35
|
+
def save!
|
36
|
+
response = if new_record?
|
37
|
+
requires :locale, :source_id, :source_type
|
38
|
+
|
39
|
+
cistern.create_help_center_translation("translation" => self.attributes)
|
40
|
+
else
|
41
|
+
requires :identity
|
42
|
+
|
43
|
+
cistern.update_help_center_translation("translation" => self.attributes)
|
44
|
+
end
|
45
|
+
|
46
|
+
merge_attributes(response.body["translation"])
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Zendesk2::HelpCenter::TranslationSource
|
2
|
+
module Model
|
3
|
+
def source=(source)
|
4
|
+
if source.is_a?(Zendesk2::HelpCenter::Article)
|
5
|
+
self.source_type = "Article"
|
6
|
+
elsif source.is_a?(Zendesk2::HelpCenter::Section)
|
7
|
+
self.source_type = "Section"
|
8
|
+
elsif source.is_a?(Zendesk2::HelpCenter::Category)
|
9
|
+
self.source_type = "Category"
|
10
|
+
end
|
11
|
+
self.source_id = source.id
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module Request
|
16
|
+
def source_id
|
17
|
+
Integer((params["translation"] || params).fetch("source_id"))
|
18
|
+
end
|
19
|
+
|
20
|
+
def source_type
|
21
|
+
(params["translation"] || params).fetch("source_type")
|
22
|
+
end
|
23
|
+
|
24
|
+
def source_type_url
|
25
|
+
case source_type
|
26
|
+
when "Article"
|
27
|
+
"articles"
|
28
|
+
when "Section"
|
29
|
+
"sections"
|
30
|
+
when "Category"
|
31
|
+
"categories"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def locale
|
36
|
+
(params["translation"] || params).fetch("locale") || "en-us"
|
37
|
+
end
|
38
|
+
|
39
|
+
# Since Zendesk2::Request#find! calls .to_i on hash keys, we need an integer
|
40
|
+
# key for this.
|
41
|
+
def mock_translation_key
|
42
|
+
[source_type, source_id, locale].join("-").each_byte.inject(0) {|char, acc| acc + char }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|