redmine_apijs 6.9.5 → 6.9.7

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README +20 -15
  3. data/app/controllers/apijs_controller.rb +1 -1
  4. data/app/views/application/_browser.html.erb +1 -1
  5. data/app/views/attachments/_links.html.erb +1 -1
  6. data/app/views/settings/_apijs.html.erb +36 -18
  7. data/assets/javascripts/apijs-redmine.js +3 -3
  8. data/assets/javascripts/apijs-redmine.min.js +2 -2
  9. data/assets/javascripts/apijs-redmine.min.js.map +1 -1
  10. data/assets/javascripts/apijs.min.js +3 -3
  11. data/assets/javascripts/apijs.min.js.map +1 -1
  12. data/assets/stylesheets/apijs-print.min.css +2 -2
  13. data/assets/stylesheets/apijs-print.min.css.map +1 -1
  14. data/assets/stylesheets/apijs-redmine-rtl.min.css +2 -2
  15. data/assets/stylesheets/apijs-redmine-rtl.min.css.map +1 -1
  16. data/assets/stylesheets/apijs-redmine.css +8 -10
  17. data/assets/stylesheets/apijs-redmine.min.css +2 -2
  18. data/assets/stylesheets/apijs-redmine.min.css.map +1 -1
  19. data/assets/stylesheets/apijs-screen-rtl.min.css +3 -3
  20. data/assets/stylesheets/apijs-screen-rtl.min.css.map +1 -1
  21. data/assets/stylesheets/apijs-screen.min.css +3 -3
  22. data/assets/stylesheets/apijs-screen.min.css.map +1 -1
  23. data/config/locales/cs.yml +0 -2
  24. data/config/locales/de.yml +0 -2
  25. data/config/locales/el.yml +0 -2
  26. data/config/locales/en.yml +0 -2
  27. data/config/locales/es.yml +0 -2
  28. data/config/locales/fr.yml +0 -2
  29. data/config/locales/hu.yml +0 -2
  30. data/config/locales/it.yml +0 -2
  31. data/config/locales/ja.yml +0 -2
  32. data/config/locales/nl.yml +0 -2
  33. data/config/locales/pl.yml +0 -2
  34. data/config/locales/pt-BR.yml +0 -2
  35. data/config/locales/pt.yml +0 -2
  36. data/config/locales/ro.yml +0 -2
  37. data/config/locales/ru.yml +0 -2
  38. data/config/locales/sk.yml +0 -2
  39. data/config/locales/tr.yml +1 -3
  40. data/config/locales/uk.yml +0 -2
  41. data/config/locales/zh.yml +0 -2
  42. data/config/routes.rb +1 -1
  43. data/init.rb +3 -3
  44. data/lib/apijs_attachment.rb +5 -3
  45. data/lib/apijs_files.rb +1 -1
  46. data/lib/image.py +106 -97
  47. data/lib/redmine_apijs.rb +1 -1
  48. data/lib/useragentparser.rb +17 -11
  49. data/redmine_apijs.gemspec +1 -1
  50. metadata +3 -6
@@ -1,10 +1,10 @@
1
1
  # encoding: utf-8
2
2
  #
3
- # Copyright 2013-2022 | Jesse G. Donat <donatj~gmail~com>
3
+ # Copyright 2013-2024 | Jesse G. Donat <donatj~gmail~com>
4
4
  # https://github.com/donatj/PhpUserAgent
5
5
  #
6
- # Copyright 2019-2022 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
7
- # https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.7.0-fork1)
6
+ # Copyright 2019-2025 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
7
+ # https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.10.0-fork1)
8
8
  #
9
9
  # Parses a user agent string into its important parts
10
10
  # Licensed under the MIT License
@@ -20,13 +20,13 @@ class Useragentparser
20
20
  browser = nil
21
21
  version = nil
22
22
  empty = {'platform' => platform, 'browser' => browser, 'version' => version}
23
- priority = ['Xbox One', 'Xbox', 'Windows Phone', 'Tizen', 'Android', 'FreeBSD', 'NetBSD', 'OpenBSD', 'CrOS', 'X11', 'Sailfish']
23
+ priority = ['Xbox One', 'Xbox', 'Windows Phone', 'Tizen', 'Android', 'FreeBSD', 'NetBSD', 'OpenBSD', 'CrOS', 'Fuchsia', 'X11', 'Sailfish']
24
24
 
25
25
  return empty unless userAgent
26
26
 
27
27
  if (parentMatches = userAgent.match(/\((.*?)\)/m))
28
28
  result = parentMatches[1].scan(
29
- /(?<platform>BB\d+;|Android|Adr|Symbian|Sailfish|CrOS|Tizen|iPhone|iPad|iPod|Linux|(?:Open|Net|Free)BSD|Macintosh|Windows(?:\ Phone)?|Silk|linux-gnu|BlackBerry|PlayBook|X11|(?:New\ )?Nintendo\ (?:WiiU?|3?DS|Switch)|Xbox(?:\ One)?) (?:\ [^;]*)? (?:;|$)/imx
29
+ /(?<platform>BB\d+;|Android|Adr|Symbian|Sailfish|CrOS|Fuchsia|Tizen|iPhone|iPad|iPod|Linux|(?:Open|Net|Free)BSD|Macintosh|Windows(?:\ Phone)?|Silk|linux-gnu|BlackBerry|PlayBook|X11|(?:New\ )?Nintendo\ (?:WiiU?|3?DS|Switch)|Xbox(?:\ One)?) (?:\ [^;]*)? (?:;|$)/imx
30
30
  ).map(&:join)
31
31
  result.uniq!
32
32
  if result.length > 1
@@ -57,13 +57,13 @@ class Useragentparser
57
57
  end
58
58
 
59
59
  result = userAgent.to_enum(:scan, # ["browser" => ["Firefox"...], "version" => ["45.0"...]]
60
- /(?<browser>Camino|Kindle(\ Fire)?|Firefox|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|(?-i:Edge)|EdgA?|CriOS|UCBrowser|Puffin|OculusBrowser|SamsungBrowser|SailfishBrowser|XiaoMi\/MiuiBrowser|Baiduspider|Applebot|Facebot|Googlebot|YandexBot|bingbot|Lynx|Version|Wget|curl|Valve\ Steam\ Tenfoot|NintendoBrowser|PLAYSTATION\ (?:\d|Vita)+)\)?;?(?:[:\/ ](?<version>[\dA-Z.]+)|\/[A-Z]*)/ix
60
+ /(?<browser>Camino|Kindle(\ Fire)?|Firefox|Thunderbird|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|(?-i:Edge)|EdgA?|CriOS|UCBrowser|Puffin|OculusBrowser|SamsungBrowser|SailfishBrowser|XiaoMi\/MiuiBrowser|YaApp_Android|Whale|Baiduspider|Applebot|Facebot|Googlebot|YandexBot|bingbot|Lynx|Version|Wget|curl|ChatGPT-User|GPTBot|OAI-SearchBot|Valve\ Steam\ Tenfoot|Mastodon|NintendoBrowser|PLAYSTATION\ (?:\d|Vita)+)\)?;?(?:[\/ :](?<version>[\dA-Z.]+)|\/[A-Z]*)/ix
61
61
  ).map { Regexp.last_match.names.collect{ |x| {x => $~[x]} }.reduce({}, :merge) }
62
62
  .reduce({}) { |h,pairs| pairs.each {|k,v| (h[k] ||= []) << v}; h }
63
63
 
64
64
  # If nothing matched, return nil (to avoid undefined index errors)
65
65
  if !result['browser'] || !result['browser'][0] || !result['version'] || !result['version'][0]
66
- result = userAgent.match(/^(?!Mozilla)(?<browser>[A-Z\d\-]+)(\/(?<version>[\dA-Z.]+))?/ix)
66
+ result = userAgent.match(/^(?!Mozilla)(?<browser>[A-Z\d\-]+)([\/ :](?<version>[\dA-Z.]+))?/ix)
67
67
  if result
68
68
  return {
69
69
  'platform' => platform ? platform : nil,
@@ -88,7 +88,7 @@ class Useragentparser
88
88
  refpla = [platform]
89
89
  refval = ['']
90
90
 
91
- if findt(lowerBrowser, {'OPR' => 'Opera', 'Facebot' => 'iMessageBot', 'UCBrowser' => 'UC Browser', 'YaBrowser' => 'Yandex', 'Iceweasel' => 'Firefox', 'Icecat' => 'Firefox', 'CriOS' => 'Chrome', 'Edg' => 'Edge', 'EdgA' => 'Edge', 'XiaoMi/MiuiBrowser' => 'MiuiBrowser'}, refkey, refbro)
91
+ if findt(lowerBrowser, {'OPR' => 'Opera', 'Facebot' => 'iMessageBot', 'UCBrowser' => 'UC Browser', 'YaBrowser' => 'Yandex', 'YaApp_Android' => 'Yandex', 'Iceweasel' => 'Firefox', 'Icecat' => 'Firefox', 'CriOS' => 'Chrome', 'Edg' => 'Edge', 'EdgA' => 'Edge', 'XiaoMi/MiuiBrowser' => 'MiuiBrowser'}, refkey, refbro)
92
92
  browser = refbro[0]
93
93
  version = result['version'][refkey[0]][0] =~ /\d/ ? result['version'][refkey[0]] : nil
94
94
  elsif find(lowerBrowser, 'Playstation Vita', refkey, platform)
@@ -124,7 +124,7 @@ class Useragentparser
124
124
  end
125
125
  end
126
126
  end
127
- elsif find(lowerBrowser, ['Applebot', 'IEMobile', 'Edge', 'Midori', 'Vivaldi', 'OculusBrowser', 'SamsungBrowser', 'Valve Steam Tenfoot', 'Chrome', 'HeadlessChrome', 'SailfishBrowser'], refkey, refbro)
127
+ elsif find(lowerBrowser, ['Googlebot', 'Applebot', 'IEMobile', 'Edge', 'Midori', 'Whale', 'Vivaldi', 'OculusBrowser', 'SamsungBrowser', 'Valve Steam Tenfoot', 'Chrome', 'HeadlessChrome', 'SailfishBrowser'], refkey, refbro)
128
128
  version = result['version'][refkey[0]]
129
129
  browser = refbro[0]
130
130
  elsif rv_result && find(lowerBrowser, 'Trident')
@@ -140,9 +140,15 @@ class Useragentparser
140
140
  browser = 'BlackBerry Browser'
141
141
  elsif find(lowerBrowser, 'Safari', refkey, refbro) || find(lowerBrowser, 'TizenBrowser', refkey, refbro)
142
142
  browser = refbro[0]
143
+ version = result['version'][refkey[0]]
144
+ elsif result['browser'].length > 0
145
+ key = result['browser'].length - 1;
146
+ browser = result['browser'][key];
147
+ version = result['version'][key];
148
+ end
149
+ if find(lowerBrowser, 'Version', refkey)
150
+ version = result['version'][refkey[0]]
143
151
  end
144
- find(lowerBrowser, 'Version', refkey)
145
- version = result['version'][refkey[0]]
146
152
  else
147
153
  pKey = result['browser'].grep(/playstation \d/i)
148
154
  if pKey.length > 0
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'redmine_apijs'
4
- s.version = '6.9.5'
4
+ s.version = '6.9.7'
5
5
  s.summary = 'Redmine Apijs plugin'
6
6
  s.description = 'Integrate the apijs JavaScript library into Redmine. Provides a gallery for image and video attachments. Gem for Redmine 3.0+ (tested with 3.0..5.0), for Redmine 4.1+ read https://redmine.org/issues/31110#note-8'
7
7
  s.homepage = 'https://github.com/luigifab/redmine-apijs'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_apijs
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.9.5
4
+ version: 6.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabrice Creuzot
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-10-10 00:00:00.000000000 Z
10
+ date: 2025-04-04 00:00:00.000000000 Z
12
11
  dependencies: []
13
12
  description: Integrate the apijs JavaScript library into Redmine. Provides a gallery
14
13
  for image and video attachments. Gem for Redmine 3.0+ (tested with 3.0..5.0), for
@@ -83,7 +82,6 @@ metadata:
83
82
  bug_tracker_uri: https://github.com/luigifab/redmine-apijs/issues
84
83
  documentation_uri: https://www.luigifab.fr/redmine/apijs
85
84
  homepage_uri: https://www.redmine.org/plugins/apijs
86
- post_install_message:
87
85
  rdoc_options: []
88
86
  require_paths:
89
87
  - lib
@@ -98,8 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
96
  - !ruby/object:Gem::Version
99
97
  version: '0'
100
98
  requirements: []
101
- rubygems_version: 3.3.15
102
- signing_key:
99
+ rubygems_version: 3.6.6
103
100
  specification_version: 4
104
101
  summary: Redmine Apijs plugin
105
102
  test_files: []