zendesk_apps_support 1.14.3 → 1.14.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2739e242f4b1d7e65cda16d7defdb0abad01d3ca
4
- data.tar.gz: a6a7b977ba95950a17140bab5f2e4a8148f45ba7
3
+ metadata.gz: 42facf839227ec97b70c5ddb1777a8fc35750da2
4
+ data.tar.gz: d8e73edd9f09a0db0894fe701ce63ac742e2f221
5
5
  SHA512:
6
- metadata.gz: 09a9020134872ac37b4f13bea94162e1ffb877115288165a28b8f26d4fa61f682f5ad2c479b9dbd51d4ff89b6774e982ff12fbca77afb5cfcd05387471de5b16
7
- data.tar.gz: f212352b4c2648e1d8fbcb83e92acc3b14dace379a87a76274a8105613b901c981a99a45213f300cc425c41f6c4e72cf703b42241f1a5dd0c14e090490fcd584
6
+ metadata.gz: 8c4de5166b970b0b8e1c01bffab99e38f62da6602899934e23ec6d26d7bb22b40139de64870e63e99c94e12da8385d20eff9c098054bc6cb92632a5b838c28b7
7
+ data.tar.gz: 3c8e1d7b0044c330457881e3050e24f6932f26d08d648fceda214e22405ad209942a0194b0487df55e90e2ae71cf40cb56926952ad2cfb3fa420b7c7b478df45
@@ -23,12 +23,19 @@ en:
23
23
  one: 'Missing required field in manifest: %{missing_keys}'
24
24
  other: 'Missing required fields in manifest: %{missing_keys}'
25
25
  requirements_not_json: requirements.json is not proper JSON. %{errors}
26
+ excessive_requirements: The requirements.json file contains too many requirements.
27
+ The current limit is %{max} requirements.
28
+ missing_required_fields: 'Missing required fields in requirements.json:
29
+ "%{field}" is required in "%{identifier}"'
26
30
  duplicate_requirements:
27
31
  one: 'requirements.json contains a duplicate key: %{duplicate_keys}'
28
32
  other: 'requirements.json contains duplicate keys: %{duplicate_keys}'
29
33
  invalid_requirements_types:
30
34
  one: 'requirements.json contains an invalid type: %{invalid_types}'
31
35
  other: 'requirements.json contains invalid types: %{invalid_types}'
36
+ banner:
37
+ invalid_format: 'Banner image must be a PNG file'
38
+ invalid_size: 'Invalid banner image dimensions. Must be %{required_banner_width}x%{required_banner_height}px'
32
39
  oauth_keys:
33
40
  missing:
34
41
  one: 'Missing required oauth field in manifest: %{missing_keys}'
@@ -5,7 +5,6 @@ title: "Apps Support"
5
5
  packages:
6
6
  - default
7
7
  - apps_support
8
- - classic
9
8
 
10
9
  parts:
11
10
  - translation:
@@ -52,6 +51,14 @@ parts:
52
51
  key: "txt.apps.admin.error.app_build.requirements_not_json"
53
52
  title: "App builder job: requirements file is invalid JSON error"
54
53
  value: "requirements.json is not proper JSON. %{errors}"
54
+ - translation:
55
+ key: "txt.apps.admin.error.app_build.excessive_requirements"
56
+ title: "App builder job: requirements file contains too many requirements"
57
+ value: "The requirements.json file contains too many requirements. The current limit is %{max} requirements."
58
+ - translation:
59
+ key: "txt.apps.admin.error.app_build.missing_required_fields"
60
+ title: "App builder job: required key missing in requirements, e.g. \"title\" is required in \"my_custom_email_target\""
61
+ value: "Missing required fields in requirements.json: \"%{field}\" is required in \"%{identifier}\""
55
62
  - translation:
56
63
  key: "txt.apps.admin.error.app_build.duplicate_requirements.one"
57
64
  title: "App builder job: requirements file contains duplicate key error"
@@ -22,3 +22,5 @@
22
22
  ZendeskApps[<%= name.to_json %>].install({"id": <%= app_id %>, "app_id": <%= app_id %>, "settings": <%= settings.to_json %>});
23
23
 
24
24
  }());
25
+
26
+ ZendeskApps.trigger && ZendeskApps.trigger('ready');
@@ -38,6 +38,10 @@ module ZendeskAppsSupport
38
38
  end
39
39
  end
40
40
 
41
+ if has_banner?
42
+ errors << Validations::Banner.call(self)
43
+ end
44
+
41
45
  errors.flatten!
42
46
  end
43
47
  end
@@ -98,7 +102,7 @@ module ZendeskAppsSupport
98
102
  end
99
103
 
100
104
  def customer_css
101
- css_file = File.join(root, 'app.css')
105
+ css_file = file_path('app.css')
102
106
  customer_css = File.exist?(css_file) ? File.read(css_file) : ""
103
107
  end
104
108
 
@@ -118,6 +122,14 @@ module ZendeskAppsSupport
118
122
  file_exists?("requirements.json")
119
123
  end
120
124
 
125
+ def has_banner?
126
+ file_exists?("assets/banner.png")
127
+ end
128
+
129
+ def file_path(path)
130
+ File.join(root, path)
131
+ end
132
+
121
133
  private
122
134
 
123
135
  def compiled_templates(app_id, asset_url_prefix)
@@ -151,12 +163,11 @@ module ZendeskAppsSupport
151
163
  end
152
164
 
153
165
  def file_exists?(path)
154
- File.exist?(File.join(root, path))
166
+ File.exist?(file_path(path))
155
167
  end
156
168
 
157
169
  def read_file(path)
158
- file_path = File.join(root, path)
159
- File.read(File.join(root, path))
170
+ File.read(file_path(path))
160
171
  end
161
172
 
162
173
  def read_json(path, symbolize_names = true)
@@ -0,0 +1,33 @@
1
+ require 'image_size'
2
+
3
+ module ZendeskAppsSupport
4
+ module Validations
5
+ module Banner
6
+ BANNER_WIDTH = 830
7
+ BANNER_HEIGHT = 200
8
+
9
+ class <<self
10
+ def call(package)
11
+ File.open(package.file_path('assets/banner.png'), 'rb') do |fh|
12
+ begin
13
+ image = ImageSize.new(fh)
14
+
15
+ unless image.format == :png
16
+ return [ValidationError.new('banner.invalid_format')]
17
+ end
18
+
19
+ unless (image.width == BANNER_WIDTH && image.height == BANNER_HEIGHT) ||
20
+ (image.width == 2*BANNER_WIDTH && image.height == 2*BANNER_HEIGHT)
21
+ return [ValidationError.new('banner.invalid_size', :required_banner_width => BANNER_WIDTH,
22
+ :required_banner_height => BANNER_HEIGHT)]
23
+ end
24
+ rescue => e
25
+ return [ValidationError.new('banner.invalid_format')]
26
+ end
27
+ end
28
+ []
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,11 +1,12 @@
1
1
  require 'multi_json'
2
2
  require 'json/stream'
3
- require 'pp'
4
3
 
5
4
  module ZendeskAppsSupport
6
5
  module Validations
7
6
  module Requirements
8
7
 
8
+ MAX_REQUIREMENTS = 10
9
+
9
10
  class <<self
10
11
  def call(package)
11
12
  requirements_file = package.files.find { |f| f.relative_path == 'requirements.json' }
@@ -21,6 +22,9 @@ module ZendeskAppsSupport
21
22
  requirements = MultiJson.load(requirements_stream)
22
23
  [].tap do |errors|
23
24
  errors << invalid_requirements_types(requirements)
25
+ errors << excessive_requirements(requirements)
26
+ errors << missing_required_fields(requirements)
27
+ errors.flatten!
24
28
  errors.compact!
25
29
  end
26
30
  rescue MultiJson::DecodeError => e
@@ -29,6 +33,30 @@ module ZendeskAppsSupport
29
33
 
30
34
  private
31
35
 
36
+ def missing_required_fields(requirements)
37
+ [].tap do |errors|
38
+ requirements.values.each do |requirement|
39
+ requirement.each do |identifier, fields|
40
+ next if fields.include? 'title'
41
+ errors << ValidationError.new(:missing_required_fields, :field => 'title', :identifier => identifier)
42
+ end
43
+ end
44
+
45
+ unless requirements['user_fields'].nil?
46
+ requirements['user_fields'].each do |identifier, fields|
47
+ next if fields.include? 'key'
48
+ errors << ValidationError.new(:missing_required_fields, :field => 'key', :identifier => identifier)
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ def excessive_requirements(requirements)
55
+ if requirements.values.map(&:values).flatten.size > MAX_REQUIREMENTS
56
+ ValidationError.new(:excessive_requirements, :max => MAX_REQUIREMENTS)
57
+ end
58
+ end
59
+
32
60
  def invalid_requirements_types(requirements)
33
61
  invalid_types = requirements.keys - ZendeskAppsSupport::AppRequirement::TYPES
34
62
 
@@ -14,7 +14,8 @@ module ZendeskAppsSupport
14
14
  :laxcomma => true,
15
15
 
16
16
  # predefined globals:
17
- :predef => %w(_ console services helpers alert JSON Base64 clearInterval clearTimeout setInterval setTimeout)
17
+ :predef => %w(_ console services helpers alert window document self
18
+ JSON Base64 clearInterval clearTimeout setInterval setTimeout)
18
19
  }.freeze
19
20
 
20
21
  class <<self
@@ -20,5 +20,6 @@ module ZendeskAppsSupport
20
20
  autoload :JSHintValidationError, 'zendesk_apps_support/validations/validation_error'
21
21
  autoload :Stylesheets, 'zendesk_apps_support/validations/stylesheets'
22
22
  autoload :Requirements, 'zendesk_apps_support/validations/requirements'
23
+ autoload :Banner, 'zendesk_apps_support/validations/banner'
23
24
  end
24
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk_apps_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.3
4
+ version: 1.14.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - James A. Rosen
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-02-25 00:00:00.000000000 Z
14
+ date: 2014-04-15 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: i18n
@@ -83,6 +83,20 @@ dependencies:
83
83
  - - '>='
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
+ - !ruby/object:Gem::Dependency
87
+ name: image_size
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ type: :runtime
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
86
100
  - !ruby/object:Gem::Dependency
87
101
  name: erubis
88
102
  requirement: !ruby/object:Gem::Requirement
@@ -146,11 +160,6 @@ executables: []
146
160
  extensions: []
147
161
  extra_rdoc_files: []
148
162
  files:
149
- - LICENSE
150
- - README.md
151
- - config/locales/en.yml
152
- - config/locales/translations/zendesk_apps_support.yml
153
- - lib/zendesk_apps_support.rb
154
163
  - lib/zendesk_apps_support/app_file.rb
155
164
  - lib/zendesk_apps_support/app_requirement.rb
156
165
  - lib/zendesk_apps_support/app_version.rb
@@ -163,6 +172,7 @@ files:
163
172
  - lib/zendesk_apps_support/package.rb
164
173
  - lib/zendesk_apps_support/sass_functions.rb
165
174
  - lib/zendesk_apps_support/stylesheet_compiler.rb
175
+ - lib/zendesk_apps_support/validations/banner.rb
166
176
  - lib/zendesk_apps_support/validations/manifest.rb
167
177
  - lib/zendesk_apps_support/validations/requirements.rb
168
178
  - lib/zendesk_apps_support/validations/source.rb
@@ -170,6 +180,11 @@ files:
170
180
  - lib/zendesk_apps_support/validations/templates.rb
171
181
  - lib/zendesk_apps_support/validations/translations.rb
172
182
  - lib/zendesk_apps_support/validations/validation_error.rb
183
+ - lib/zendesk_apps_support.rb
184
+ - config/locales/en.yml
185
+ - config/locales/translations/zendesk_apps_support.yml
186
+ - README.md
187
+ - LICENSE
173
188
  homepage: http://github.com/zendesk/zendesk_apps_support
174
189
  licenses:
175
190
  - Apache License Version 2.0
@@ -190,9 +205,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
205
  version: 1.3.6
191
206
  requirements: []
192
207
  rubyforge_project:
193
- rubygems_version: 2.2.2
208
+ rubygems_version: 2.0.14
194
209
  signing_key:
195
210
  specification_version: 4
196
211
  summary: Support to help you develop Zendesk Apps.
197
212
  test_files: []
198
- has_rdoc: