metadata_presenter 2.19.4 → 2.20.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 287793ad62c89ad266e3c05508365cf24bcd5269d4c08e28f9a631aa50f5762a
4
- data.tar.gz: 885cc9f6bc43d4d1bd86ba1fb376d1994905000e4f14bfe7173076db7d531633
3
+ metadata.gz: 4d37f521b151efebea9c3e73254a6ca349499a19e5bf0428c64e8a76f612dff9
4
+ data.tar.gz: 6cfdaa83747659decd5e3d2f9819845bb986a5e8717f0477429e89ab6222144b
5
5
  SHA512:
6
- metadata.gz: c3ab0c526f54ea3d22925baa1da1b4260deceb51bbd720695635b55ff3629116f0a93479fc8118e83bef39cc8ccd52bb718a1128fa573ad851247597e1c04821
7
- data.tar.gz: '024489fcbd77662977c8684f2949fcd1b4bc5126e7933feba40a6acd689f12a63de3ad112a8eb92a00113c77979c0fcba90f6c65f05e6e6a1eda9d607f02546b'
6
+ metadata.gz: 847ffda48c7f1c52419f47b8a37154d53f3b4ec977f3abaf4a3c2d6ae1c193eac558b9225220f9281959518921d6da8e41a122e6fb16501c8e35f2ad2a38a035
7
+ data.tar.gz: 42abc6cde28dc7ea3256e03caba1fcb5ba1f38799fd2be44a1477db6f93bc3eb02288fe0bd61ea3ae48aa9a6d9f6faddd7a9550ae78442628918f2621d47a17b
data/README.md CHANGED
@@ -97,6 +97,9 @@ The `autocomplete_items` takes the components on a page and retrieves any items
97
97
 
98
98
  `save_and_return_enabled?` method checks whether save and return is enabled in the Runner or Editor app. In the Runner save and return is enabled when the `ENV['SAVE_AND_RETURN']` environment variable is present. In the Editor, save and return enabled can be ascertained by checking the `ServiceConfiguration` table.
99
99
 
100
+ `service_slug_config` method checks whether the user has configured their own service URL. In the Editor this will be a `SERVICE_SLUG` row in the `ServiceConfiguration` table. In the Runner, it will be the `ENV['SERVICE_SLUG']` config.
101
+ If it does not exist, we use the current method of parameterizing the `service_name`.
102
+
100
103
  ## Generate documentation
101
104
 
102
105
  Run `rake doc` and open the doc/index.html
@@ -22,6 +22,14 @@ module MetadataPresenter
22
22
  end
23
23
  end
24
24
 
25
+ def update_count_matching_filenames(original_filename, user_data)
26
+ extname = File.extname(original_filename)
27
+ basename = File.basename(original_filename, extname)
28
+ filename_regex = /^#{Regexp.quote(basename)}(?>-\((\d)\))?#{Regexp.quote(extname)}/
29
+
30
+ user_data.select { |_k, v| v.instance_of?(Hash) && v['original_filename'] =~ filename_regex }.count
31
+ end
32
+
25
33
  private
26
34
 
27
35
  def page
@@ -72,6 +80,12 @@ module MetadataPresenter
72
80
  @page_answers.page.upload_components.each do |component|
73
81
  answer = user_data[component.id]
74
82
 
83
+ original_filename = answer.nil? ? @page_answers.send(component.id)['original_filename'] : answer['original_filename']
84
+
85
+ if original_filename.present?
86
+ @page_answers.count = update_count_matching_filenames(original_filename, user_data)
87
+ end
88
+
75
89
  @page_answers.uploaded_files.push(uploaded_file(answer, component))
76
90
  end
77
91
  end
@@ -1,7 +1,7 @@
1
1
  module MetadataPresenter
2
2
  class OfflineUploadAdapter
3
3
  include ActiveModel::Model
4
- attr_accessor :session, :file_details, :allowed_file_types
4
+ attr_accessor :session, :file_details, :allowed_file_types, :count
5
5
 
6
6
  def call
7
7
  {}
@@ -4,6 +4,7 @@ module MetadataPresenter
4
4
  include ActiveModel::Validations
5
5
  include ActionView::Helpers
6
6
  attr_reader :page, :answers, :uploaded_files, :autocomplete_items
7
+ attr_accessor :count
7
8
 
8
9
  def initialize(page, answers, autocomplete_items = nil)
9
10
  @page = page
@@ -28,7 +29,7 @@ module MetadataPresenter
28
29
  if component && component.type == 'date'
29
30
  date_answer(component.id)
30
31
  elsif component && component.type == 'upload'
31
- upload_answer(component.id)
32
+ upload_answer(component.id, count)
32
33
  elsif component && component.type == 'checkboxes'
33
34
  answers[method_name.to_s].to_a
34
35
  else
@@ -36,15 +37,13 @@ module MetadataPresenter
36
37
  end
37
38
  end
38
39
 
39
- def upload_answer(component_id)
40
+ def upload_answer(component_id, _count)
40
41
  file_details = answers[component_id.to_s]
41
42
 
42
43
  return {} unless file_details
43
44
 
44
45
  if file_details.is_a?(Hash) || file_details.is_a?(ActionController::Parameters)
45
-
46
46
  file_details.merge('original_filename' => sanitize(filename(file_details['original_filename'])))
47
-
48
47
  else
49
48
  {
50
49
  'original_filename' => sanitize(filename(file_details.original_filename)),
@@ -75,7 +74,16 @@ module MetadataPresenter
75
74
  def filename(path)
76
75
  return sanitize(path) if path.nil?
77
76
 
78
- sanitize(path).gsub(/&gt;/, '').gsub(/&lt;/, '').delete('>"[]{}*?:|]/<').delete('\\')
77
+ filename = sanitize(path).gsub(/&gt;/, '').gsub(/&lt;/, '').delete('>"[]{}*?:|]/<').delete('\\')
78
+
79
+ if count.present? && count.positive?
80
+ extname = File.extname(filename)
81
+ basename = File.basename(filename, extname)
82
+
83
+ filename = "#{basename}-(#{count})#{extname}"
84
+ end
85
+
86
+ filename
79
87
  end
80
88
  end
81
89
  end
@@ -38,6 +38,8 @@ class MetadataPresenter::Service < MetadataPresenter::Metadata
38
38
  end
39
39
 
40
40
  def service_slug
41
+ return service_slug_config if service_slug_config.present?
42
+
41
43
  service_name.gsub(/['’]/, '').parameterize
42
44
  end
43
45
 
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.19.4'.freeze
2
+ VERSION = '2.20.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.19.4
4
+ version: 2.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-18 00:00:00.000000000 Z
11
+ date: 2023-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -216,16 +216,16 @@ dependencies:
216
216
  name: site_prism
217
217
  requirement: !ruby/object:Gem::Requirement
218
218
  requirements:
219
- - - ">="
219
+ - - '='
220
220
  - !ruby/object:Gem::Version
221
- version: '0'
221
+ version: '4.0'
222
222
  type: :development
223
223
  prerelease: false
224
224
  version_requirements: !ruby/object:Gem::Requirement
225
225
  requirements:
226
- - - ">="
226
+ - - '='
227
227
  - !ruby/object:Gem::Version
228
- version: '0'
228
+ version: '4.0'
229
229
  - !ruby/object:Gem::Dependency
230
230
  name: sqlite3
231
231
  requirement: !ruby/object:Gem::Requirement