zendesk_apps_support 4.4.2 → 4.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/locales/en.yml +4 -0
- data/config/locales/translations/zendesk_apps_support.yml +8 -0
- data/lib/zendesk_apps_support.rb +1 -0
- data/lib/zendesk_apps_support/package.rb +10 -0
- data/lib/zendesk_apps_support/validations/banner.rb +1 -1
- data/lib/zendesk_apps_support/validations/svg.rb +57 -0
- metadata +46 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68ec75f6edd58e546096a0264c27bb17652cdac8
|
4
|
+
data.tar.gz: f7941d0e10b8ed005b59e88af3c2c6ac50dbe742
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 006e9e8e880b349aa33a3fcff1925e3fccbe9b12ff0ee950ecba54a79ba73363652f43fddfe27720263c6d949da4b06af14d9ce7a0120fc4c43623fe571e5d20
|
7
|
+
data.tar.gz: 38c4f30c83611fd1e81b13e50df3e5c25027e07348b9dd6352d926cfee0560c156dec281c90e0fd7fbe3ad4fce23c0c9bde28758899ad357ed3c658bd9ffe240
|
data/config/locales/en.yml
CHANGED
@@ -57,6 +57,8 @@ en:
|
|
57
57
|
banner:
|
58
58
|
invalid_format: Banner image must be a PNG file.
|
59
59
|
invalid_size: Invalid banner image dimensions. Must be %{required_banner_width}x%{required_banner_height}px.
|
60
|
+
dirty_svg: "%{svg} contains invalid markup and was unable to be automatically
|
61
|
+
regenerated."
|
60
62
|
oauth_keys:
|
61
63
|
missing:
|
62
64
|
one: 'Missing required oauth field in manifest: %{missing_keys}'
|
@@ -120,3 +122,5 @@ en:
|
|
120
122
|
deprecated_version: You are targeting a deprecated version of the framework.
|
121
123
|
Your app will work, but it might break when the new framework version
|
122
124
|
is deployed.
|
125
|
+
sanitised_svg: The markup in %{svg} has been edited for use in Zendesk,
|
126
|
+
and may not display as intended.
|
@@ -128,6 +128,10 @@ parts:
|
|
128
128
|
key: "txt.apps.admin.error.app_build.banner.invalid_size"
|
129
129
|
title: "App builder job: Banner image invalid size error"
|
130
130
|
value: "Invalid banner image dimensions. Must be %{required_banner_width}x%{required_banner_height}px."
|
131
|
+
- translation:
|
132
|
+
key: "txt.apps.admin.error.app_build.dirty_svg"
|
133
|
+
title: "App builder job: invalid SVG markup error"
|
134
|
+
value: "%{svg} contains invalid markup and was unable to be automatically regenerated."
|
131
135
|
- translation:
|
132
136
|
key: "txt.apps.admin.error.app_build.oauth_keys.missing.one"
|
133
137
|
title: "App builder job: missing oauth fields error"
|
@@ -202,6 +206,10 @@ parts:
|
|
202
206
|
key: "txt.apps.admin.warning.app_build.deprecated_version"
|
203
207
|
title: "App builder job: deprecated version specified"
|
204
208
|
value: 'You are targeting a deprecated version of the framework. Your app will work, but it might break when the new framework version is deployed.'
|
209
|
+
- translation:
|
210
|
+
key: "txt.apps.admin.warning.app_build.sanitised_svg"
|
211
|
+
title: "App builder job: warning that contents of svg have been sanitised and overwritten"
|
212
|
+
value: "The markup in %{svg} has been edited for use in Zendesk, and may not display as intended."
|
205
213
|
- translation:
|
206
214
|
key: "txt.apps.admin.error.app_build.invalid_version"
|
207
215
|
title: "App builder job: invalid framework version"
|
data/lib/zendesk_apps_support.rb
CHANGED
@@ -27,6 +27,7 @@ module ZendeskAppsSupport
|
|
27
27
|
autoload :Stylesheets, 'zendesk_apps_support/validations/stylesheets'
|
28
28
|
autoload :Requirements, 'zendesk_apps_support/validations/requirements'
|
29
29
|
autoload :Banner, 'zendesk_apps_support/validations/banner'
|
30
|
+
autoload :Svg, 'zendesk_apps_support/validations/svg'
|
30
31
|
end
|
31
32
|
|
32
33
|
class Manifest
|
@@ -30,6 +30,7 @@ module ZendeskAppsSupport
|
|
30
30
|
def validate(marketplace: true)
|
31
31
|
[].tap do |errors|
|
32
32
|
errors << Validations::Manifest.call(self)
|
33
|
+
|
33
34
|
if has_manifest?
|
34
35
|
errors << Validations::Marketplace.call(self) if marketplace
|
35
36
|
errors << Validations::Source.call(self)
|
@@ -43,6 +44,7 @@ module ZendeskAppsSupport
|
|
43
44
|
end
|
44
45
|
|
45
46
|
errors << Validations::Banner.call(self) if has_banner?
|
47
|
+
errors << Validations::Svg.call(self) if has_svgs?
|
46
48
|
|
47
49
|
errors.flatten!.compact!
|
48
50
|
end
|
@@ -91,6 +93,10 @@ module ZendeskAppsSupport
|
|
91
93
|
@lib_files ||= js_files.select { |f| f =~ %r{^lib/} }
|
92
94
|
end
|
93
95
|
|
96
|
+
def svg_files
|
97
|
+
@svg_files ||= files.select { |f| f =~ %r{^assets/.*\.svg$} }
|
98
|
+
end
|
99
|
+
|
94
100
|
def template_files
|
95
101
|
files.select { |f| f =~ %r{^templates/.*\.hdbs$} }
|
96
102
|
end
|
@@ -181,6 +187,10 @@ module ZendeskAppsSupport
|
|
181
187
|
File.file?(path_to(path))
|
182
188
|
end
|
183
189
|
|
190
|
+
def has_svgs?
|
191
|
+
svg_files.any?
|
192
|
+
end
|
193
|
+
|
184
194
|
def has_requirements?
|
185
195
|
has_file?(REQUIREMENTS_FILENAME)
|
186
196
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'loofah'
|
3
|
+
|
4
|
+
module ZendeskAppsSupport
|
5
|
+
module Validations
|
6
|
+
module Svg
|
7
|
+
@strip_declaration = Loofah::Scrubber.new do |node|
|
8
|
+
node.remove if node.name == 'xml' && node.children.empty?
|
9
|
+
end
|
10
|
+
|
11
|
+
@empty_malformed_markup = Loofah::Scrubber.new do |node|
|
12
|
+
node.next.remove while node.name == 'svg' && node.next
|
13
|
+
end
|
14
|
+
|
15
|
+
# CRUFT: ignore a (very specific) style attribute which Loofah would otherwise scrub.
|
16
|
+
# This attribute is deprecated (https://www.w3.org/TR/filter-effects/#AccessBackgroundImage)
|
17
|
+
# but is included in many of the test apps used in fixtures for tests in ZAM, ZAT etc.
|
18
|
+
@remove_enable_background = Loofah::Scrubber.new do |node|
|
19
|
+
match_pattern = Regexp.new("enable-background:.*?(\;|\z)")
|
20
|
+
if node.name == 'svg' && node['style']
|
21
|
+
node['style'] = node['style'].gsub(match_pattern, '')
|
22
|
+
node.attributes['style'].remove if node['style'].empty?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class << self
|
27
|
+
def call(package)
|
28
|
+
errors = []
|
29
|
+
|
30
|
+
package.svg_files.each do |svg|
|
31
|
+
markup = Loofah.xml_fragment(svg.read)
|
32
|
+
.scrub!(@strip_declaration)
|
33
|
+
.scrub!(@remove_enable_background)
|
34
|
+
.to_xml.strip
|
35
|
+
|
36
|
+
clean_markup = Loofah.xml_fragment(markup)
|
37
|
+
.scrub!(:prune)
|
38
|
+
.scrub!(@empty_malformed_markup)
|
39
|
+
.to_xml
|
40
|
+
|
41
|
+
filepath = svg.relative_path
|
42
|
+
|
43
|
+
next if clean_markup == markup
|
44
|
+
begin
|
45
|
+
compressed_clean_markup = clean_markup.tr("\n", '').squeeze(' ').gsub(/\>\s+\</, '><')
|
46
|
+
IO.write(filepath, compressed_clean_markup)
|
47
|
+
package.warnings << I18n.t('txt.apps.admin.warning.app_build.sanitised_svg', svg: filepath)
|
48
|
+
rescue
|
49
|
+
errors << ValidationError.new(:dirty_svg, svg: filepath)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
errors
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
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: 4.
|
4
|
+
version: 4.5.0
|
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: 2017-09
|
14
|
+
date: 2017-10-09 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: i18n
|
@@ -111,6 +111,34 @@ dependencies:
|
|
111
111
|
- - "~>"
|
112
112
|
- !ruby/object:Gem::Version
|
113
113
|
version: 0.3.0
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: loofah
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
type: :runtime
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
name: nokogiri
|
130
|
+
requirement: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - "~>"
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 1.6.8
|
135
|
+
type: :runtime
|
136
|
+
prerelease: false
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - "~>"
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.6.8
|
114
142
|
- !ruby/object:Gem::Dependency
|
115
143
|
name: rspec
|
116
144
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,6 +195,20 @@ dependencies:
|
|
167
195
|
- - "~>"
|
168
196
|
- !ruby/object:Gem::Version
|
169
197
|
version: 0.46.0
|
198
|
+
- !ruby/object:Gem::Dependency
|
199
|
+
name: byebug
|
200
|
+
requirement: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - "~>"
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: 9.0.6
|
205
|
+
type: :development
|
206
|
+
prerelease: false
|
207
|
+
version_requirements: !ruby/object:Gem::Requirement
|
208
|
+
requirements:
|
209
|
+
- - "~>"
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: 9.0.6
|
170
212
|
description: Support to help you develop Zendesk Apps.
|
171
213
|
email:
|
172
214
|
- dev@zendesk.com
|
@@ -207,6 +249,7 @@ files:
|
|
207
249
|
- lib/zendesk_apps_support/validations/requirements.rb
|
208
250
|
- lib/zendesk_apps_support/validations/source.rb
|
209
251
|
- lib/zendesk_apps_support/validations/stylesheets.rb
|
252
|
+
- lib/zendesk_apps_support/validations/svg.rb
|
210
253
|
- lib/zendesk_apps_support/validations/templates.rb
|
211
254
|
- lib/zendesk_apps_support/validations/translations.rb
|
212
255
|
- lib/zendesk_apps_support/validations/validation_error.rb
|
@@ -222,7 +265,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
222
265
|
requirements:
|
223
266
|
- - ">="
|
224
267
|
- !ruby/object:Gem::Version
|
225
|
-
version: '0'
|
268
|
+
version: '2.0'
|
226
269
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
270
|
requirements:
|
228
271
|
- - ">="
|