redmine_apijs 6.5.0 → 6.8.1
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/README +9 -8
- data/app/controllers/apijs_controller.rb +25 -6
- data/app/views/application/_browser.html.erb +1 -1
- data/app/views/attachments/_links.html.erb +1 -1
- data/app/views/settings/_apijs.html.erb +7 -4
- data/assets/javascripts/{app.js → apijs-redmine.js} +22 -6
- data/assets/javascripts/apijs-redmine.min.js +4 -3
- data/assets/javascripts/apijs-redmine.min.js.map +1 -0
- data/assets/javascripts/apijs.min.js +5 -4
- data/assets/javascripts/apijs.min.js.map +1 -0
- data/assets/stylesheets/apijs-print.min.css +5 -5
- data/assets/stylesheets/apijs-print.min.css.map +1 -0
- data/assets/stylesheets/apijs-redmine-rtl.min.css +4 -4
- data/assets/stylesheets/apijs-redmine-rtl.min.css.map +1 -0
- data/assets/stylesheets/{styles.css → apijs-redmine.css} +6 -4
- data/assets/stylesheets/apijs-redmine.min.css +4 -4
- data/assets/stylesheets/apijs-redmine.min.css.map +1 -0
- data/assets/stylesheets/apijs-screen-rtl.min.css +5 -5
- data/assets/stylesheets/apijs-screen-rtl.min.css.map +1 -0
- data/assets/stylesheets/apijs-screen.min.css +5 -5
- data/assets/stylesheets/apijs-screen.min.css.map +1 -0
- data/config/locales/cs.yml +3 -1
- data/config/locales/de.yml +3 -1
- data/config/locales/el.yml +34 -0
- data/config/locales/en.yml +3 -1
- data/config/locales/es.yml +3 -1
- data/config/locales/fr.yml +3 -1
- data/config/locales/hu.yml +34 -0
- data/config/locales/it.yml +3 -1
- data/config/locales/ja.yml +3 -1
- data/config/locales/nl.yml +3 -1
- data/config/locales/pl.yml +3 -1
- data/config/locales/pt-BR.yml +3 -1
- data/config/locales/pt.yml +3 -1
- data/config/locales/ro.yml +34 -0
- data/config/locales/ru.yml +3 -1
- data/config/locales/sk.yml +3 -1
- data/config/locales/tr.yml +3 -1
- data/config/locales/uk.yml +34 -0
- data/config/locales/zh.yml +3 -1
- data/config/routes.rb +9 -2
- data/init.rb +4 -4
- data/lib/apijs_attachment.rb +10 -5
- data/lib/apijs_const.rb +1 -1
- data/lib/apijs_files.rb +1 -1
- data/lib/image.py +168 -119
- data/lib/redmine_apijs.rb +1 -1
- data/lib/useragentparser.rb +11 -9
- data/lib/video.py +8 -6
- data/redmine_apijs.gemspec +15 -4
- metadata +18 -6
data/lib/useragentparser.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#
|
3
|
-
# Copyright 2013-
|
3
|
+
# Copyright 2013-2021 | Jesse G. Donat <donatj~gmail~com>
|
4
4
|
# https://github.com/donatj/PhpUserAgent
|
5
5
|
#
|
6
|
-
# Copyright 2019-
|
7
|
-
# https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.
|
6
|
+
# Copyright 2019-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
7
|
+
# https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.5.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']
|
23
|
+
priority = ['Xbox One', 'Xbox', 'Windows Phone', 'Tizen', 'Android', 'FreeBSD', 'NetBSD', 'OpenBSD', 'CrOS', '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|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|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
|
@@ -44,10 +44,12 @@ class Useragentparser
|
|
44
44
|
platform = 'Linux'
|
45
45
|
elsif platform == 'CrOS'
|
46
46
|
platform = 'Chrome OS'
|
47
|
+
elsif platform == 'Adr'
|
48
|
+
platform = 'Android'
|
47
49
|
end
|
48
50
|
|
49
51
|
result = userAgent.to_enum(:scan, # ["browser" => ["Firefox"...], "version" => ["45.0"...]]
|
50
|
-
/(?<browser>Camino|Kindle(\ Fire)?|Firefox|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|Edge|Edg|CriOS|UCBrowser|Puffin|OculusBrowser|SamsungBrowser|Baiduspider|Applebot|Googlebot|YandexBot|bingbot|Lynx|Version|Wget|curl|Valve\ Steam\ Tenfoot|NintendoBrowser|PLAYSTATION\ (\d|Vita)+)
|
52
|
+
/(?<browser>Camino|Kindle(\ Fire)?|Firefox|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|Edge|Edg|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>[0-9A-Z.]+)|\/[A-Z]*)/ix
|
51
53
|
).map { Regexp.last_match.names.collect{ |x| {x => $~[x]} }.reduce({}, :merge) }
|
52
54
|
.reduce({}) { |h,pairs| pairs.each {|k,v| (h[k] ||= []) << v}; h }
|
53
55
|
|
@@ -78,9 +80,9 @@ class Useragentparser
|
|
78
80
|
refpla = [platform]
|
79
81
|
refval = ['']
|
80
82
|
|
81
|
-
if findt(lowerBrowser, {'OPR' => 'Opera', 'UCBrowser' => 'UC Browser', 'YaBrowser' => 'Yandex', 'Iceweasel' => 'Firefox', 'Icecat' => 'Firefox', 'CriOS' => 'Chrome', 'Edg' => 'Edge'}, refkey, refbro)
|
83
|
+
if findt(lowerBrowser, {'OPR' => 'Opera', 'Facebot' => 'iMessageBot', 'UCBrowser' => 'UC Browser', 'YaBrowser' => 'Yandex', 'Iceweasel' => 'Firefox', 'Icecat' => 'Firefox', 'CriOS' => 'Chrome', 'Edg' => 'Edge', 'XiaoMi/MiuiBrowser' => 'MiuiBrowser'}, refkey, refbro)
|
82
84
|
browser = refbro[0]
|
83
|
-
version = result['version'][refkey[0]]
|
85
|
+
version = result['version'][refkey[0]][0] =~ /[0-9]/ ? result['version'][refkey[0]] : nil
|
84
86
|
elsif find(lowerBrowser, 'Playstation Vita', refkey, platform)
|
85
87
|
platform = 'PlayStation Vita'
|
86
88
|
browser = 'Browser'
|
@@ -114,7 +116,7 @@ class Useragentparser
|
|
114
116
|
end
|
115
117
|
end
|
116
118
|
end
|
117
|
-
elsif find(lowerBrowser, ['Applebot', 'IEMobile', 'Edge', 'Midori', 'Vivaldi', 'OculusBrowser', 'SamsungBrowser', 'Valve Steam Tenfoot', 'Chrome', 'HeadlessChrome'], refkey, refbro)
|
119
|
+
elsif find(lowerBrowser, ['Applebot', 'IEMobile', 'Edge', 'Midori', 'Vivaldi', 'OculusBrowser', 'SamsungBrowser', 'Valve Steam Tenfoot', 'Chrome', 'HeadlessChrome', 'SailfishBrowser'], refkey, refbro)
|
118
120
|
version = result['version'][refkey[0]]
|
119
121
|
browser = refbro[0]
|
120
122
|
elsif rv_result && find(lowerBrowser, 'Trident')
|
data/lib/video.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
#!/usr/bin/python3
|
2
2
|
# -*- coding: utf8 -*-
|
3
3
|
# Created J/26/12/2013
|
4
|
-
# Updated
|
4
|
+
# Updated W/16/12/2020
|
5
5
|
#
|
6
|
-
# Copyright 2008-
|
6
|
+
# Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
7
7
|
# https://www.luigifab.fr/redmine/apijs
|
8
8
|
#
|
9
9
|
# This program is free software, you can redistribute it or modify
|
@@ -44,13 +44,14 @@ else:
|
|
44
44
|
|
45
45
|
# Standard resizing
|
46
46
|
source.thumbnail(size, Image.ANTIALIAS)
|
47
|
-
offset_x = int(
|
48
|
-
offset_y = int(
|
47
|
+
offset_x = max(int((size[0] - source.size[0]) / 2), 0)
|
48
|
+
offset_y = max(int((size[1] - source.size[1]) / 2), 0)
|
49
49
|
|
50
50
|
# Color detection
|
51
|
+
# white background black player OR black background white player
|
51
52
|
pixels = source.getcolors(size[0] * size[1])
|
52
53
|
pixels = sorted(pixels, key=lambda t: t[0])
|
53
|
-
if (pixels[-1][1] > (127,127,127)):
|
54
|
+
if (pixels[-1][1] > (127,127,127)):
|
54
55
|
dest = Image.new('RGBA', size, (255,255,255,0))
|
55
56
|
dest.paste(source, (offset_x, offset_y))
|
56
57
|
# https://stackoverflow.com/a/59082116 (replace only last lib)
|
@@ -75,4 +76,5 @@ if quality < 1:
|
|
75
76
|
quality = 75
|
76
77
|
elif quality > 95:
|
77
78
|
quality = 95
|
78
|
-
|
79
|
+
|
80
|
+
dest.convert('RGB').save(fileout, 'JPEG', optimize=True, subsampling=0, quality=quality)
|
data/redmine_apijs.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'redmine_apijs'
|
4
|
-
s.version = '6.
|
4
|
+
s.version = '6.8.1'
|
5
5
|
s.summary = 'Redmine Apijs plugin'
|
6
|
-
s.description = 'Integrate the apijs
|
6
|
+
s.description = 'Integrate the apijs JavaScript library into Redmine. Provides a gallery for image and video attachments.'
|
7
7
|
s.homepage = 'https://github.com/luigifab/redmine-apijs'
|
8
8
|
s.license = 'GPL-2.0-or-later'
|
9
9
|
s.authors = ['Fabrice Creuzot']
|
@@ -27,29 +27,40 @@ Gem::Specification.new do |s|
|
|
27
27
|
assets/images/apijs/player-white-200.png
|
28
28
|
assets/images/apijs/player-white-400.png
|
29
29
|
assets/images/apijs/tv.gif
|
30
|
+
assets/javascripts/apijs-redmine.js
|
30
31
|
assets/javascripts/apijs-redmine.min.js
|
32
|
+
assets/javascripts/apijs-redmine.min.js.map
|
31
33
|
assets/javascripts/apijs.min.js
|
32
|
-
assets/javascripts/
|
34
|
+
assets/javascripts/apijs.min.js.map
|
33
35
|
assets/stylesheets/apijs-print.min.css
|
36
|
+
assets/stylesheets/apijs-print.min.css.map
|
34
37
|
assets/stylesheets/apijs-redmine-rtl.min.css
|
38
|
+
assets/stylesheets/apijs-redmine-rtl.min.css.map
|
39
|
+
assets/stylesheets/apijs-redmine.css
|
35
40
|
assets/stylesheets/apijs-redmine.min.css
|
41
|
+
assets/stylesheets/apijs-redmine.min.css.map
|
36
42
|
assets/stylesheets/apijs-screen-rtl.min.css
|
43
|
+
assets/stylesheets/apijs-screen-rtl.min.css.map
|
37
44
|
assets/stylesheets/apijs-screen.min.css
|
38
|
-
assets/stylesheets/
|
45
|
+
assets/stylesheets/apijs-screen.min.css.map
|
39
46
|
config/locales/cs.yml
|
40
47
|
config/locales/de.yml
|
48
|
+
config/locales/el.yml
|
41
49
|
config/locales/en.yml
|
42
50
|
config/locales/es.yml
|
43
51
|
config/locales/fr.yml
|
52
|
+
config/locales/hu.yml
|
44
53
|
config/locales/it.yml
|
45
54
|
config/locales/ja.yml
|
46
55
|
config/locales/nl.yml
|
47
56
|
config/locales/pl.yml
|
48
57
|
config/locales/pt-BR.yml
|
49
58
|
config/locales/pt.yml
|
59
|
+
config/locales/ro.yml
|
50
60
|
config/locales/ru.yml
|
51
61
|
config/locales/sk.yml
|
52
62
|
config/locales/tr.yml
|
63
|
+
config/locales/uk.yml
|
53
64
|
config/locales/zh.yml
|
54
65
|
config/routes.rb
|
55
66
|
Gemfile
|
metadata
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redmine_apijs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabrice Creuzot
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Integrate the apijs
|
13
|
+
description: Integrate the apijs JavaScript library into Redmine. Provides a gallery
|
14
|
+
for image and video attachments.
|
14
15
|
email: code@luigifab.fr
|
15
16
|
executables: []
|
16
17
|
extensions: []
|
@@ -31,29 +32,40 @@ files:
|
|
31
32
|
- assets/images/apijs/player-white-200.png
|
32
33
|
- assets/images/apijs/player-white-400.png
|
33
34
|
- assets/images/apijs/tv.gif
|
35
|
+
- assets/javascripts/apijs-redmine.js
|
34
36
|
- assets/javascripts/apijs-redmine.min.js
|
37
|
+
- assets/javascripts/apijs-redmine.min.js.map
|
35
38
|
- assets/javascripts/apijs.min.js
|
36
|
-
- assets/javascripts/
|
39
|
+
- assets/javascripts/apijs.min.js.map
|
37
40
|
- assets/stylesheets/apijs-print.min.css
|
41
|
+
- assets/stylesheets/apijs-print.min.css.map
|
38
42
|
- assets/stylesheets/apijs-redmine-rtl.min.css
|
43
|
+
- assets/stylesheets/apijs-redmine-rtl.min.css.map
|
44
|
+
- assets/stylesheets/apijs-redmine.css
|
39
45
|
- assets/stylesheets/apijs-redmine.min.css
|
46
|
+
- assets/stylesheets/apijs-redmine.min.css.map
|
40
47
|
- assets/stylesheets/apijs-screen-rtl.min.css
|
48
|
+
- assets/stylesheets/apijs-screen-rtl.min.css.map
|
41
49
|
- assets/stylesheets/apijs-screen.min.css
|
42
|
-
- assets/stylesheets/
|
50
|
+
- assets/stylesheets/apijs-screen.min.css.map
|
43
51
|
- config/locales/cs.yml
|
44
52
|
- config/locales/de.yml
|
53
|
+
- config/locales/el.yml
|
45
54
|
- config/locales/en.yml
|
46
55
|
- config/locales/es.yml
|
47
56
|
- config/locales/fr.yml
|
57
|
+
- config/locales/hu.yml
|
48
58
|
- config/locales/it.yml
|
49
59
|
- config/locales/ja.yml
|
50
60
|
- config/locales/nl.yml
|
51
61
|
- config/locales/pl.yml
|
52
62
|
- config/locales/pt-BR.yml
|
53
63
|
- config/locales/pt.yml
|
64
|
+
- config/locales/ro.yml
|
54
65
|
- config/locales/ru.yml
|
55
66
|
- config/locales/sk.yml
|
56
67
|
- config/locales/tr.yml
|
68
|
+
- config/locales/uk.yml
|
57
69
|
- config/locales/zh.yml
|
58
70
|
- config/routes.rb
|
59
71
|
- init.rb
|
@@ -87,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
99
|
- !ruby/object:Gem::Version
|
88
100
|
version: '0'
|
89
101
|
requirements: []
|
90
|
-
rubygems_version: 3.2.
|
102
|
+
rubygems_version: 3.2.27
|
91
103
|
signing_key:
|
92
104
|
specification_version: 4
|
93
105
|
summary: Redmine Apijs plugin
|