redmine_crm 0.0.49 → 0.0.54
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/views/redmine_crm/settings.html.erb +1 -1
- data/bitbucket-pipelines.yml +2 -0
- data/config/locales/en.yml +1 -1
- data/config/locales/ru.yml +1 -1
- data/doc/CHANGELOG +24 -1
- data/lib/redmine_crm/acts_as_draftable/rcrm_acts_as_draftable.rb +4 -2
- data/lib/redmine_crm/liquid/filters/arrays.rb +1 -1
- data/lib/redmine_crm/liquid/filters/base.rb +35 -3
- data/lib/redmine_crm/settings.rb +6 -4
- data/lib/redmine_crm/version.rb +1 -1
- data/redmine_crm.gemspec +1 -0
- data/vendor/assets/javascripts/select2_helpers.js +3 -2
- data/vendor/assets/stylesheets/select2.css +27 -18
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0e9fa1d47785da85bc39db433d55e0ba8df629e
|
4
|
+
data.tar.gz: 2efa0ef9d8a1a0e267ba622b098fcac20c68a378
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f74717a3d2fa3e033a32f3c02b1855d3fa4bad61edfe57c23bf2a2dcc36f26954a1e87b65aa31662455b953ac4cb42e2e3252cd6f49be52edd1b0f6815925388
|
7
|
+
data.tar.gz: 2d242b17ba64c4799e52f07c110b683f3cb61116833384c1bc66571e3a68df9a68f159526de9735234c6b5bba61ebd953351c1a1eed097a1f31d56af5909d6d9
|
data/bitbucket-pipelines.yml
CHANGED
@@ -32,6 +32,8 @@ pipelines:
|
|
32
32
|
- sed -i "s/'pg'/'pg', '~> 0.18.0'/g" redmine_crm.gemspec
|
33
33
|
- sed -i "s/^end/ spec.add_development_dependency 'minitest', '~> 5.11.3'\nend/g" redmine_crm.gemspec
|
34
34
|
- sed -i "s/^end/ spec.add_development_dependency 'sprockets', '~> 3.5.2'\nend/g" redmine_crm.gemspec
|
35
|
+
- sed -i "s/^end/ spec.add_development_dependency 'thor', '~> 0.20.3'\nend/g" redmine_crm.gemspec
|
36
|
+
- sed -i "s/'rubyzip'/'rubyzip', '~> 1.3.0'/g" redmine_crm.gemspec
|
35
37
|
- bundle install
|
36
38
|
- bundle exec rake test DB=sqlite
|
37
39
|
- bundle exec rake test DB=mysql
|
data/config/locales/en.yml
CHANGED
data/config/locales/ru.yml
CHANGED
data/doc/CHANGELOG
CHANGED
@@ -1,9 +1,32 @@
|
|
1
1
|
== Redmine CRM gem changelog
|
2
2
|
|
3
3
|
Redmine crm gem - general functions for plugins (tags, vote, viewing, currency)
|
4
|
-
Copyright (C) 2011-
|
4
|
+
Copyright (C) 2011-2020 RedmineUP
|
5
5
|
https://www.redmineup.com/
|
6
6
|
|
7
|
+
== 2020-08-10 v0.0.54
|
8
|
+
|
9
|
+
* Fixed new JQuery select2 bug
|
10
|
+
|
11
|
+
== 2020-04-07 v0.0.53
|
12
|
+
|
13
|
+
* Multiselect styles cleanup
|
14
|
+
* Added rubyzip dependence
|
15
|
+
|
16
|
+
== 2019-12-26 v0.0.52
|
17
|
+
|
18
|
+
* select2 styles cleanup
|
19
|
+
|
20
|
+
== 2019-12-20 v0.0.51
|
21
|
+
|
22
|
+
* Changed drafts params
|
23
|
+
* Changed Money settings UI
|
24
|
+
* Fixed bug with settings access
|
25
|
+
|
26
|
+
== 2019-11-18 v0.0.50
|
27
|
+
|
28
|
+
* Fixed bug with settings initialization
|
29
|
+
|
7
30
|
== 2019-11-12 v0.0.49
|
8
31
|
|
9
32
|
* Fixed settings compatibility bug
|
@@ -78,8 +78,10 @@ module RedmineCrm
|
|
78
78
|
target
|
79
79
|
end
|
80
80
|
|
81
|
-
def drafts(user)
|
82
|
-
Draft.where(
|
81
|
+
def drafts(user = nil)
|
82
|
+
drafts = Draft.where(target_type: name)
|
83
|
+
drafts = drafts.where(user_id: user.id) if user
|
84
|
+
drafts
|
83
85
|
end
|
84
86
|
end # ClassMethods
|
85
87
|
|
@@ -100,7 +100,7 @@ module RedmineCrm
|
|
100
100
|
def tagged_with(input, tags, match='all')
|
101
101
|
return input unless input.respond_to?(:select)
|
102
102
|
input = input.values if input.is_a?(Hash)
|
103
|
-
tag_list =
|
103
|
+
tag_list = tags.is_a?(Array) ? tags.sort : tags.split(',').map(&:strip).sort
|
104
104
|
case match
|
105
105
|
when "all"
|
106
106
|
input.select do |object|
|
@@ -36,7 +36,7 @@ module RedmineCrm
|
|
36
36
|
|
37
37
|
def md5(input)
|
38
38
|
Digest::MD5.hexdigest(input) unless input.blank?
|
39
|
-
end
|
39
|
+
end
|
40
40
|
|
41
41
|
# example:
|
42
42
|
# {{ "http:://www.example.com?key=hello world" | encode }}
|
@@ -87,8 +87,8 @@ module RedmineCrm
|
|
87
87
|
to_number(input).floor.to_i
|
88
88
|
end
|
89
89
|
|
90
|
-
def currency(input, currency_code =
|
91
|
-
price_to_currency(input, currency_code, :converted => false)
|
90
|
+
def currency(input, currency_code = nil)
|
91
|
+
price_to_currency(input, currency_code || container_currency, :converted => false)
|
92
92
|
end
|
93
93
|
|
94
94
|
def call_method(input, method_name)
|
@@ -121,6 +121,30 @@ module RedmineCrm
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
124
|
+
def multi_line(input)
|
125
|
+
input.to_s.gsub("\n", '<br/>').html_safe
|
126
|
+
end
|
127
|
+
|
128
|
+
def concat(input, *args)
|
129
|
+
result = input.to_s
|
130
|
+
args.flatten.each { |a| result << a.to_s }
|
131
|
+
result
|
132
|
+
end
|
133
|
+
|
134
|
+
# right justify and padd a string
|
135
|
+
def rjust(input, integer, padstr = '')
|
136
|
+
input.to_s.rjust(integer, padstr)
|
137
|
+
end
|
138
|
+
|
139
|
+
# left justify and padd a string
|
140
|
+
def ljust(input, integer, padstr = '')
|
141
|
+
input.to_s.ljust(integer, padstr)
|
142
|
+
end
|
143
|
+
|
144
|
+
def textile(input)
|
145
|
+
::RedCloth3.new(input).to_html
|
146
|
+
end
|
147
|
+
|
124
148
|
protected
|
125
149
|
|
126
150
|
# Convert an array of properties ('key:value') into a hash
|
@@ -210,6 +234,14 @@ module RedmineCrm
|
|
210
234
|
end
|
211
235
|
end
|
212
236
|
end
|
237
|
+
|
238
|
+
def container
|
239
|
+
@container ||= @context.registers[:container]
|
240
|
+
end
|
241
|
+
|
242
|
+
def container_currency
|
243
|
+
container.currency if container.respond_to?(:currency)
|
244
|
+
end
|
213
245
|
end
|
214
246
|
::Liquid::Template.register_filter(RedmineCrm::Liquid::Filters::Base)
|
215
247
|
end
|
data/lib/redmine_crm/settings.rb
CHANGED
@@ -5,11 +5,8 @@ module RedmineCrm
|
|
5
5
|
}.freeze
|
6
6
|
|
7
7
|
class << self
|
8
|
-
# Initialize settings before using with this method
|
9
|
-
# @example
|
10
|
-
# RedmineCrm::Settings.initialize_gem_settings
|
11
8
|
def initialize_gem_settings
|
12
|
-
return if Setting.respond_to?(:plugin_redmine_crm)
|
9
|
+
return if !Object.const_defined?('Setting') || Setting.respond_to?(:plugin_redmine_crm)
|
13
10
|
|
14
11
|
if Setting.respond_to?(:define_setting)
|
15
12
|
Setting.send(:define_setting, 'plugin_redmine_crm', 'default' => default_settings, 'serialized' => true)
|
@@ -24,18 +21,23 @@ module RedmineCrm
|
|
24
21
|
setting.value
|
25
22
|
end)
|
26
23
|
end
|
24
|
+
@settings_initialized
|
27
25
|
end
|
28
26
|
|
29
27
|
# Use apply instead attrs assign because it can rewrite other attributes
|
30
28
|
def apply=(values)
|
29
|
+
initialize_gem_settings unless @settings_initialized
|
30
|
+
|
31
31
|
Setting.plugin_redmine_crm = Setting.plugin_redmine_crm.merge(values)
|
32
32
|
end
|
33
33
|
|
34
34
|
def values
|
35
|
+
initialize_gem_settings unless @settings_initialized
|
35
36
|
Object.const_defined?('Setting') ? Setting.plugin_redmine_crm : {}
|
36
37
|
end
|
37
38
|
|
38
39
|
def [](value)
|
40
|
+
initialize_gem_settings unless @settings_initialized
|
39
41
|
return Setting.plugin_redmine_crm[value] if Object.const_defined?('Setting')
|
40
42
|
|
41
43
|
nil
|
data/lib/redmine_crm/version.rb
CHANGED
data/redmine_crm.gemspec
CHANGED
@@ -80,11 +80,11 @@ function findSelectTagInRowBy(field) {
|
|
80
80
|
};
|
81
81
|
|
82
82
|
function rowHasSelectTag(field) {
|
83
|
-
return findInRowBy(field, '.values select.value').
|
83
|
+
return findInRowBy(field, '.values select.value').length > 0;
|
84
84
|
};
|
85
85
|
|
86
86
|
function rowHasSelect2(field) {
|
87
|
-
return findInRowBy(field, '.values .select2').
|
87
|
+
return findInRowBy(field, '.values .select2').length > 0;
|
88
88
|
};
|
89
89
|
|
90
90
|
function findInRowBy(field, selector) {
|
@@ -137,6 +137,7 @@ function buildSelect2Options(options) {
|
|
137
137
|
result = {
|
138
138
|
placeholder: options['placeholder'] || '',
|
139
139
|
allowClear: !!options['allow_clear'],
|
140
|
+
containerCssClass: options['containerCssClass'],
|
140
141
|
minimumInputLength: options['min_input_length'] || 0,
|
141
142
|
templateResult: window[options['format_state']],
|
142
143
|
templateSelection: window[options['format_selection']],
|
@@ -150,18 +150,26 @@
|
|
150
150
|
}
|
151
151
|
|
152
152
|
.select2-container--default .select2-selection--single {
|
153
|
-
background: #fff url(../images/vcard.png) no-repeat 2px 50
|
154
|
-
|
155
|
-
|
156
|
-
|
153
|
+
/*background: #fff url(../images/vcard.png) no-repeat 2px 50%;*/
|
154
|
+
background-color: #fff;
|
155
|
+
height: 24px;
|
156
|
+
border: 1px solid #ccc;
|
157
|
+
border-radius: 3px;
|
158
|
+
}
|
159
|
+
|
160
|
+
.select2-container--default .select2-selection--single.icon {
|
161
|
+
background-position-x: 3px;
|
157
162
|
}
|
158
163
|
|
159
164
|
.select2-container--default .select2-selection--single .select2-selection__rendered {
|
160
|
-
|
161
|
-
line-height: 18px;
|
165
|
+
line-height: 21px;
|
162
166
|
font-size: 11px;
|
163
167
|
}
|
164
168
|
|
169
|
+
.select2-container--default .select2-selection--single.icon .select2-selection__rendered {
|
170
|
+
padding-left: 2px
|
171
|
+
}
|
172
|
+
|
165
173
|
.select2-container--default .select2-selection--single .select2-selection__clear {
|
166
174
|
cursor: pointer;
|
167
175
|
float: right;
|
@@ -172,7 +180,7 @@
|
|
172
180
|
color: #999;
|
173
181
|
}
|
174
182
|
.select2-container--default .select2-selection--single .select2-selection__arrow {
|
175
|
-
height:
|
183
|
+
height: 24px;
|
176
184
|
position: absolute;
|
177
185
|
top: 0px;
|
178
186
|
right: 1px;
|
@@ -210,8 +218,8 @@
|
|
210
218
|
}
|
211
219
|
.select2-container--default .select2-selection--multiple {
|
212
220
|
background-color: white;
|
213
|
-
border: 1px solid #
|
214
|
-
border-radius:
|
221
|
+
border: 1px solid #ccc;
|
222
|
+
border-radius: 3px;
|
215
223
|
cursor: text;
|
216
224
|
}
|
217
225
|
|
@@ -220,7 +228,7 @@
|
|
220
228
|
box-sizing: border-box;
|
221
229
|
list-style: none;
|
222
230
|
margin: 0;
|
223
|
-
padding: 0 2px
|
231
|
+
padding: 0 2px 1px 2px;
|
224
232
|
width: 100%;
|
225
233
|
}
|
226
234
|
.select2-container--default .select2-selection--multiple .select2-selection__rendered li {
|
@@ -235,8 +243,8 @@
|
|
235
243
|
cursor: pointer;
|
236
244
|
float: right;
|
237
245
|
font-weight: bold;
|
238
|
-
margin-top:
|
239
|
-
margin-right:
|
246
|
+
margin-top: 2px;
|
247
|
+
margin-right: 2px;
|
240
248
|
}
|
241
249
|
|
242
250
|
#sidebar .select2-container--default .select2-selection--multiple .select2-selection__choice,
|
@@ -245,8 +253,8 @@
|
|
245
253
|
border-radius: 2px;
|
246
254
|
cursor: default;
|
247
255
|
float: left;
|
248
|
-
margin-right:
|
249
|
-
margin-top:
|
256
|
+
margin-right: 2px;
|
257
|
+
margin-top: 2px;
|
250
258
|
padding: 0 3px;
|
251
259
|
}
|
252
260
|
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
|
@@ -271,8 +279,8 @@
|
|
271
279
|
margin-right: auto;
|
272
280
|
}
|
273
281
|
.select2-container--default.select2-container--focus .select2-selection--multiple {
|
274
|
-
border: solid #
|
275
|
-
outline:
|
282
|
+
border: 1px solid #5ad;
|
283
|
+
outline: none;
|
276
284
|
}
|
277
285
|
.select2-container--default.select2-container--disabled .select2-selection--multiple {
|
278
286
|
background-color: #eee;
|
@@ -298,6 +306,7 @@
|
|
298
306
|
outline: 0;
|
299
307
|
box-shadow: none;
|
300
308
|
-webkit-appearance: textfield;
|
309
|
+
height: 18px;
|
301
310
|
}
|
302
311
|
.select2-container--default .select2-results > .select2-results__options {
|
303
312
|
max-height: 200px;
|
@@ -355,12 +364,12 @@
|
|
355
364
|
border: 0px !important;
|
356
365
|
height: inherit !important;
|
357
366
|
padding: 0px !important;
|
358
|
-
width: 2em !important;
|
359
367
|
}
|
360
368
|
|
361
369
|
.filter .select2-container--default .select2-selection--multiple .select2-selection__choice {
|
370
|
+
outline: none;
|
362
371
|
border: 0px;
|
363
|
-
padding:
|
372
|
+
padding: 3px 5px;
|
364
373
|
}
|
365
374
|
|
366
375
|
/* == Theming ===
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redmine_crm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.54
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RedmineUP
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "<"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.6.4
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubyzip
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: sqlite3
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|