zendesk_apps_support 1.14.3 → 1.14.4

Sign up to get free protection for your applications and to get access to all the features.
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: