redmine_extensions 0.3.11 → 0.4.0.beta

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 97e9d21e0e3d1e1700c7690bbd408ce0d5fa58ab1625265f22b1c046c3b81139
4
- data.tar.gz: 4715f7b62a7cf0562418ff02d8c367d8b7d862203c337e4276c06f8ac2f768df
3
+ metadata.gz: 186ecf1e1604893d9fda643e2b589dbada90b4319c0da5d7a5c2c0f3c53eb176
4
+ data.tar.gz: f956c9668a5926ba5012902dfb2a1c88d2dd020f7ea06428310e3ef3963e9cff
5
5
  SHA512:
6
- metadata.gz: a307a3fe10126d82391432ec790ff99d6b08a0ad50f74d4780d14e92042c8c3b0bd2ac49bb7e7f77ae753a5fdb365e309df85e572be37ccb349121ef3148dcec
7
- data.tar.gz: ba808f7c9a4586dbda97afb9174529c46d74df73e04c4a1c48f5cb2933f5e461a6166eff5551c1af0cea014daf189e1dfcc81b91be510aaf1820c2f22435a062
6
+ metadata.gz: ac84a447270e5d19538c99c5fc6d4dcd95ac936de8645c179ebd497d27d09ff65f2def4d24ee5f1b80aa9ac4d78289feca73edfe1242ac94d4a136e03dd50804
7
+ data.tar.gz: ca999dfd768ba7df0f23f45f5508136eeebd4b09fdef1a92383ec26d0c4d6e3d950252b420913e804eafde49498b00e55122773f490dfce1bb4b53a6de8ea7a4
@@ -88,7 +88,6 @@ EasyGem.schedule.require(function () {
88
88
  },
89
89
  activate_on_input_click: true,
90
90
  load_immediately: false,
91
- show_toggle_button: true,
92
91
  select_first_value: true,
93
92
  autocomplete_options: {},
94
93
  multiselectOnChange: null // onchange of multiselect input function
@@ -103,7 +102,7 @@ EasyGem.schedule.require(function () {
103
102
  if (Array.isArray(this.options.source)) {
104
103
  this.options.preload = true;
105
104
  this._initData(this.options.source);
106
- } else if (this.options.preload && this.options.load_immediately) {
105
+ } else if ( (this.options.preload || this.options.select_first_value) && this.options.load_immediately ) {
107
106
  this.load();
108
107
  } else if (this.selectedValues) {
109
108
  this.setValue(this.selectedValues);
@@ -120,9 +119,6 @@ EasyGem.schedule.require(function () {
120
119
  this.valueElement = $('<span></span>');
121
120
  this.tag.after(this.valueElement);
122
121
 
123
- if (this.options.show_toggle_button)
124
- this._createToggleButton();
125
-
126
122
  this.valueElement.entityArray({
127
123
  inputNames: this.inputName,
128
124
  afterRemove: function (entity) {
@@ -146,33 +142,6 @@ EasyGem.schedule.require(function () {
146
142
  if (fn) select.on("change", fn);
147
143
  },
148
144
 
149
- _createToggleButton: function () {
150
- var that = this;
151
- this.link_ac_toggle = $('<a>').attr('class', 'icon icon-add clear-link');
152
- this.link_ac_toggle.click(function (evt) {
153
- var $elem = $(this);
154
- evt.preventDefault();
155
- that.load(function () {
156
- var select = $('<select>').prop('multiple', true).prop('size', 5).prop('name', that.inputName);
157
- var option;
158
- $.each(that.possibleValues, function (i, v) {
159
- option = $('<option>').prop('value', v.id).text(v.value);
160
- option.prop('selected', that.getValue().indexOf(v.id) > -1);
161
- select.append(option);
162
- });
163
- that.multiselectOnChange(select, that.options.multiselectOnChange);
164
- var $container = $elem.closest('.easy-multiselect-tag-container');
165
- $container.find(':input').prop('disabled', true);
166
- $container.children().hide();
167
- $container.append(select);
168
- that.valueElement = select;
169
- that.expanded = true;
170
- });
171
- });
172
- this.element.parent().addClass('input-append');
173
- this.element.after(this.link_ac_toggle);
174
- },
175
-
176
145
  _createAutocomplete: function () {
177
146
  var that = this;
178
147
 
@@ -286,7 +255,7 @@ EasyGem.schedule.require(function () {
286
255
  this.valuesLoaded = true;
287
256
 
288
257
  this.selectedValues = this.selectedValues ? this.selectedValues : [];
289
- if (this.selectedValues.length === 0 && this.options.preload && this.options.select_first_value && this.possibleValues.length > 0) {
258
+ if (this.selectedValues.length === 0 && this.options.select_first_value && this.possibleValues.length > 0) {
290
259
  this.selectedValues.push(this.possibleValues[0]['id']);
291
260
  }
292
261
 
@@ -381,7 +350,7 @@ EasyGem.schedule.require(function () {
381
350
  for (var i = values.length - 1; i >= 0; i--) {
382
351
  if (values[i] instanceof Object && !Array.isArray(values[i]) && values[i] !== null) {
383
352
  selected.push(values[i]);
384
- } else if (this.options.preload) {
353
+ } else if (this.options.preload || this.options.select_first_value) {
385
354
  var that = this;
386
355
  if (!Array.isArray(that.possibleValues))
387
356
  return;
@@ -20,7 +20,7 @@ module RedmineExtensions
20
20
  else
21
21
  presenter = RedmineExtensions::BasePresenter.present(model, self, options)
22
22
  end
23
- if block_given?
23
+ if block
24
24
  yield presenter
25
25
  else
26
26
  presenter
@@ -110,7 +110,7 @@ module RedmineExtensions
110
110
 
111
111
  def late_javascript_tag(content_or_options_with_block = nil, html_options = {}, &block)
112
112
  content =
113
- if block_given?
113
+ if block
114
114
  html_options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash)
115
115
  capture(&block)
116
116
  else
@@ -264,7 +264,6 @@ module RedmineExtensions
264
264
  # * +load_immediately+ - tells if values should be loaded immediatelly after page loaded, or wait for first use of the field.
265
265
  # Warning! if this option is false, selected values passed in first format will be ignored till it is loaded.
266
266
  # Please use second format for proper functionality.
267
- # * +show_toggle_button+ - only valid with <tt>multiple: true, preload: true</tt> options set. Shows toggle button to expand select to the multiselect tag.
268
267
  # * +select_first_value+ - if selectd_values are empty, with this option first available value will be selected.
269
268
  # Available only with <tt>preload: true</tt> option.
270
269
  # With <tt>load_immediately: false</tt> it will appear kinda weird for user because it will select the value after user starts to interact with input.
@@ -272,7 +271,7 @@ module RedmineExtensions
272
271
  # * +rootElement+ - Has sence only if jsonpath is used for available values. It tells if the json response has values wrapped under root element.
273
272
  # For response like <tt>{projects: [[<name>, <id>], [<name2>, <id2>]]}</tt> user option <tt>rootElement: 'projects'</tt>
274
273
  def autocomplete_field_tag(name, jsonpath_or_array, selected_values, options = {})
275
- options.reverse_merge!({select_first_value: false, show_toggle_button: false, load_immediately: false, preload: true, multiple: true, combo: false})
274
+ options.reverse_merge!({select_first_value: false, load_immediately: false, preload: true, multiple: true, combo: false})
276
275
  options[:id] ||= sanitize_to_id(name)
277
276
 
278
277
  selected_values ||= []
@@ -285,7 +284,7 @@ module RedmineExtensions
285
284
 
286
285
  content_tag(:span, :class => 'easy-multiselect-tag-container') do
287
286
  search_field_tag('', '', (options[:html_options] || {}).merge(id: options[:id])) +
288
- late_javascript_tag("$('##{options[:id]}').easymultiselect({multiple: #{options[:multiple]}, rootElement: #{options[:rootElement].to_json}, inputName: '#{name}', preload: #{options[:preload]}, combo: #{options[:combo]}, source: #{source}, selected: #{selected_values.to_json}, show_toggle_button: #{options[:show_toggle_button]}, select_first_value: #{options[:select_first_value]}, load_immediately: #{options[:load_immediately]}, autocomplete_options: #{(options[:jquery_auto_complete_options]||{}).to_json} });")
287
+ late_javascript_tag("$('##{options[:id]}').easymultiselect({multiple: #{options[:multiple]}, rootElement: #{options[:rootElement].to_json}, inputName: '#{name}', preload: #{options[:preload]}, combo: #{options[:combo]}, source: #{source}, selected: #{selected_values.to_json}, select_first_value: #{options[:select_first_value]}, load_immediately: #{options[:load_immediately]}, autocomplete_options: #{(options[:jquery_auto_complete_options]||{}).to_json} });")
289
288
  end
290
289
  end
291
290
 
@@ -297,13 +296,12 @@ module RedmineExtensions
297
296
  # HTML options can be passed as a hash with +html_options+. These options will be passed to the input element.
298
297
  #
299
298
  # ==== Examples
300
- # autocomplete_field(:issue, :tag_ids, Tag.all.pluck(:name, :id), multiple: true, show_toggle_button: true)
299
+ # autocomplete_field(:issue, :tag_ids, Tag.all.pluck(:name, :id), multiple: true)
301
300
  # # => <span class="easy-multiselect-tag-container"> \
302
301
  # <input type="text" id="issue_tags" /> \
303
302
  # <button type="button" tabindex="-1" class="..." role="button" ...>
304
303
  # <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"></span><span class="ui-button-text">&nbsp;</span>
305
304
  # </button>
306
- # <a class="icon icon-add clear-link"></a> # toggle button to the multiselect tag from show_toggle_button option
307
305
  # ...(wraping service tags)
308
306
  # <input type="hidden" name="issue[tag_ids][]" value="#{@issue.tag_ids.first}" />
309
307
  # <input type="hidden" name="issue[tag_ids][]" value="#{@issue.tag_ids.second}" />
@@ -78,7 +78,7 @@ class EasySetting < ActiveRecord::Base
78
78
  @@mapper = EasySettings::Mapper.new
79
79
 
80
80
  def self.map(&block)
81
- if block_given?
81
+ if block
82
82
  @@mapper.instance_eval(&block)
83
83
  else
84
84
  @@mapper
@@ -119,7 +119,7 @@ module RedmineExtensions
119
119
  end
120
120
 
121
121
  def method_missing(meth, *attrs)
122
- if @plugin && @plugin.settings[:easy_settings] && @plugin.settings[:easy_settings].keys.include?(meth.to_sym)
122
+ if @plugin && @plugin.settings[:easy_settings] && @plugin.settings[:easy_settings].key?(meth.to_sym)
123
123
  EasySetting.value(prefix+meth.to_s, project_id)
124
124
  else
125
125
  super
@@ -385,7 +385,7 @@ module RedmineExtensions
385
385
  end
386
386
 
387
387
  def name_column
388
- 'name' if string_columns.keys.include?('name')
388
+ 'name' if string_columns.key?('name')
389
389
  string_columns.keys.first
390
390
  end
391
391
 
@@ -394,7 +394,7 @@ module RedmineExtensions
394
394
  end
395
395
 
396
396
  def description_column
397
- 'description' if text_columns.keys.include?('description')
397
+ 'description' if text_columns.key?('description')
398
398
  text_columns.keys.first
399
399
  end
400
400
 
@@ -69,12 +69,12 @@ module RedmineExtensions
69
69
  end
70
70
 
71
71
  def render_edit
72
- outputs.map{ |output| output.render_edit }.join('').html_safe
72
+ outputs.map{ |output| output.render_edit }.join.html_safe
73
73
  end
74
74
 
75
75
  def render_data
76
76
  if outputs.any?
77
- outputs.map{ |output| output.render_data }.join('').html_safe
77
+ outputs.map{ |output| output.render_data }.join.html_safe
78
78
  else
79
79
  view_context.l(:label_no_output)
80
80
  end
@@ -10,7 +10,7 @@ module EasySettings
10
10
  def key(name, **options, &block)
11
11
  name = name.to_s
12
12
 
13
- if block_given?
13
+ if block
14
14
  key_dsl = EasySettings::KeyDSL.new
15
15
  key_dsl.instance_eval(&block)
16
16
  options = options.merge(key_dsl.options)
@@ -63,7 +63,7 @@ module RedmineExtensions
63
63
 
64
64
  # include helpers
65
65
  initializer 'redmine_extensions.rails_patching', before: :load_config_initializers do |app|
66
- ActiveSupport.on_load(Rails.version.start_with?('5') ? :action_controller_base : :action_controller) do
66
+ ActiveSupport.on_load(Rails::VERSION::MAJOR >= 5 ? :action_controller_base : :action_controller) do
67
67
  helper RedmineExtensions::ApplicationHelper
68
68
  # helper RedmineExtensions::EasyQueryHelper
69
69
  end
@@ -1,5 +1,5 @@
1
1
  module RedmineExtensions
2
- if Rails.version.start_with?('5')
2
+ if Rails::VERSION::MAJOR >= 5
3
3
  class Migration < ActiveRecord::Migration[4.2]
4
4
  end
5
5
  else
@@ -57,7 +57,7 @@ module RedmineExtensions
57
57
  @@patches_locations[patching_module] = const.methods(false).map{|m| const.method(m) }.first.source_location.first
58
58
  rescue
59
59
  # [0] is register_*_patch
60
- from_location = caller_locations[1]
60
+ from_location = caller_locations(2..2).first
61
61
  @@patches_locations[patching_module] = from_location.absolute_path
62
62
  end
63
63
 
@@ -78,7 +78,7 @@ module RedmineExtensions
78
78
  end
79
79
  section ||= :others
80
80
 
81
- raise ArgumentError, "EasyPatchManager->register_patch: The section (#{section}) must be one of x#{@@registered_patches.keys.join(', ')}x " unless @@registered_patches.keys.include?(section)
81
+ raise ArgumentError, "EasyPatchManager->register_patch: The section (#{section}) must be one of x#{@@registered_patches.keys.join(', ')}x " unless @@registered_patches.key?(section)
82
82
 
83
83
  original_klasses_to_patch.each do |original_klass_to_patch|
84
84
  pcollection = @@registered_patches[section].move_and_get_or_insert( original_klass_to_patch, options )
@@ -191,17 +191,13 @@ module RedmineExtensions
191
191
  # raise ArgumentError, 'Section order has to be a integer!' unless order.is_a?(Numeric)
192
192
  # @name = name
193
193
  # @order = order
194
- @patches_collections = Array.new
194
+ @patches_collections = []
195
195
  @last_order = 0
196
196
  end
197
197
 
198
198
  def each(&block)
199
199
  @patches_collections.each do |patch_collection|
200
- if block_given?
201
- block.call patch_collection
202
- else
203
- yield patch_collection
204
- end
200
+ yield patch_collection
205
201
  end
206
202
  end
207
203
 
@@ -335,11 +331,7 @@ module RedmineExtensions
335
331
  def each(&block)
336
332
 
337
333
  @patches.each do |patch|
338
- if block_given?
339
- block.call patch
340
- else
341
- yield patch
342
- end
334
+ yield patch
343
335
  end
344
336
 
345
337
  end
@@ -1,3 +1,3 @@
1
1
  module RedmineExtensions
2
- VERSION = '0.3.11'
2
+ VERSION = '0.4.0.beta'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.11
4
+ version: 0.4.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Easy Software Ltd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-09 00:00:00.000000000 Z
11
+ date: 2021-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '4.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6.1'
22
+ version: '6.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '4.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6.1'
32
+ version: '6.2'
33
33
  description: Redmine Extensions provide many extended functionalities for Redmine
34
34
  project.
35
35
  email:
@@ -204,14 +204,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
204
204
  requirements:
205
205
  - - ">="
206
206
  - !ruby/object:Gem::Version
207
- version: '2.1'
207
+ version: '2.5'
208
208
  required_rubygems_version: !ruby/object:Gem::Requirement
209
209
  requirements:
210
- - - ">="
210
+ - - ">"
211
211
  - !ruby/object:Gem::Version
212
- version: '0'
212
+ version: 1.3.1
213
213
  requirements: []
214
- rubygems_version: 3.0.4
214
+ rubygems_version: 3.0.8
215
215
  signing_key:
216
216
  specification_version: 4
217
217
  summary: Redmine Extensions is set of usefull features for Redmine. Main focus is