zendesk_apps_support 4.4.2 → 4.5.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/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
|
- - ">="
|