redmineup 1.1.2 → 1.1.4

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: 2fcf43fcb4e8ea71cdf32906bcceb05b8067aa7fb2da33d8df7d72e7775ffd74
4
- data.tar.gz: 436a088ae472041d086ec6ae0c896858a9f84d168b5a999bdc541e183b3d4b07
3
+ metadata.gz: e16d0fd8b57ea9d77f2c2b769ee99e3f00adb3de950f2b856d206d6db9d7f66d
4
+ data.tar.gz: ae312cd72499e910065b8661485cb483e8798b6ed26887e18cf54660a3a8c03d
5
5
  SHA512:
6
- metadata.gz: bdda671371d9f8163d9eb0d346b2b71549351f7534ab4e5db080e2317ae46c5be5408ecc0386e9a3dfbb66340d6167513118cbea3f48ce91956b362f8cadc3c6
7
- data.tar.gz: 185c02c2ed3924b13dc93e00c11bf8e90080fe3be00a88729aa278f573cc1c3f60725fddbdcbc90d25fb0a4408838e9ffc04dfb158b112070ab5f7b016ab899e
6
+ metadata.gz: d273c6a8db3effbdce540bdd545576020f0f57083ba686739618894d6b8599951b7bf27ecdcd6677110d1db32f761148ad0f87b83c88a996bae3ff51a5036887
7
+ data.tar.gz: 61df5ba9902c47fd6c1257b018c6513ac393f51d2b75095c27e5f5b6dc04bf927d6fdaca8666189262f0580afb0b0f9ec76d75d81a9e24e47bbadc4c75d23729
data/.gitlab-ci.yml CHANGED
@@ -27,9 +27,7 @@ ruby-2.4.1:
27
27
 
28
28
  ruby-3.4.4:
29
29
  stage: test
30
- tags:
31
- - local
32
- image: ruby:3.4.4
30
+ image: ruby:3.4.4-bookworm
33
31
  script:
34
32
  - sed -i "s/'sqlite3'/'sqlite3', '~> 1.4.4'/g" redmineup.gemspec
35
33
  - sed -i "s/'mysql2'/'mysql2', '~> 0.5.0'/g" redmineup.gemspec
@@ -38,6 +36,7 @@ ruby-3.4.4:
38
36
  - sed -i "s/'rubyzip'/'rubyzip'\n spec.add_runtime_dependency 'bigdecimal', '3.1.8'/g" redmineup.gemspec
39
37
  - sed -i "s/'rubyzip'/'rubyzip'\n spec.add_runtime_dependency 'mutex_m'/g" redmineup.gemspec
40
38
  - sed -i "s/'rubyzip'/'rubyzip'\n spec.add_runtime_dependency 'drb'/g" redmineup.gemspec
39
+ - sed -i "s/'rubyzip'/'rubyzip'\n spec.add_runtime_dependency 'minitest', '< 6'/g" redmineup.gemspec
41
40
  - bundle install
42
41
  - bundle exec rake test DB=sqlite
43
42
  - bundle exec rake test DB=postgresql
@@ -24,6 +24,16 @@ class activeCableConsumer {
24
24
  this.consumer.process(message);
25
25
  }
26
26
 
27
+ send(data) {
28
+ if (this.isOpen()) {
29
+ this.socket.send(JSON.stringify(data));
30
+ return true;
31
+ } else {
32
+ console.warn("WebSocket is not open");
33
+ return false;
34
+ }
35
+ }
36
+
27
37
  isOpen() {
28
38
  return this.socket.readyState === this.OPEN;
29
39
  }
data/doc/CHANGELOG CHANGED
@@ -1,9 +1,18 @@
1
1
  == RedmineUP gem changelog
2
2
 
3
3
  Redmine UP gem - general functions for plugins (tags, vote, viewing, currency)
4
- Copyright (C) 2011-2025 Kirill Bezrukov (RedmineUP)
4
+ Copyright (C) 2011-2026 Kirill Bezrukov (RedmineUP)
5
5
  https://www.redmineup.com/
6
6
 
7
+ == 2026-04-10 v1.1.4
8
+
9
+ * Fixed tags queries for MSSQL adapter
10
+
11
+ == 2026-03-10 v1.1.3
12
+
13
+ * Fixed ActionCable compatibility
14
+ * Added send method for ActionCable
15
+
7
16
  == 2025-11-07 v1.1.2
8
17
 
9
18
  * Fixed assets loading error
@@ -1,8 +1,6 @@
1
-
2
1
  module ActionCable
3
2
  module Server
4
3
  class RupConfiguration < ActionCable::Server::Configuration
5
-
6
4
  def initialize(connection_klass: 'ActionCable::Connection::Base')
7
5
  super()
8
6
 
@@ -12,13 +10,7 @@ module ActionCable
12
10
  end
13
11
 
14
12
  def cable
15
- @cable ||= { 'adapter' => detect_adapter_type }.with_indifferent_access
16
- end
17
-
18
- private
19
-
20
- def detect_adapter_type
21
- ActionCable.server.config.cable ? (ActionCable.server.config.cable.fetch('adapter') { 'async' }) : 'async'
13
+ @cable ||= ActionCable.server.config.cable || { 'adapter' => 'async' }.with_indifferent_access
22
14
  end
23
15
  end
24
16
  end
@@ -74,7 +74,7 @@ module Redmineup
74
74
  having = 'COUNT(*) > 0'
75
75
  having = [having, at_least, at_most].compact.join(' AND ')
76
76
  group_by = "#{Tag.table_name}.id, #{Tag.table_name}.name"
77
- # group_by << " AND #{having}" unless having.blank?
77
+ group_by << ", #{Tag.table_name}.color" if column_names.include?('color')
78
78
 
79
79
  select_condition = if self.column_names.include?('color')
80
80
  "#{Tag.table_name}.id, #{Tag.table_name}.name, #{Tag.table_name}.color, COUNT(*) AS count"
@@ -147,6 +147,7 @@ module Redmineup
147
147
  group_fields = ''
148
148
  group_fields << ", #{Tag.table_name}.created_at" if Tag.respond_to?(:created_at)
149
149
  group_fields << ", #{Tag.table_name}.updated_at" if Tag.respond_to?(:updated_at)
150
+ group_fields << ", #{Tag.table_name}.color" if Tag.column_names.include?('color')
150
151
 
151
152
  if base_class.respond_to?(:visible_condition)
152
153
  visible_condition = base_class.visible_condition(User.current)
@@ -9,5 +9,10 @@ module Redmineup
9
9
  yield tag, classes[index]
10
10
  end
11
11
  end
12
+
13
+ def tag_color(tag_name)
14
+ "##{'%06x' % (tag_name.unpack('H*').first.hex % 0xffffff)}"
15
+ end
16
+
12
17
  end
13
18
  end
@@ -1,3 +1,3 @@
1
1
  module Redmineup
2
- VERSION = '1.1.2'
2
+ VERSION = '1.1.4'
3
3
  end
data/lib/redmineup.rb CHANGED
@@ -106,6 +106,7 @@ if defined?(ActionView::Base)
106
106
  ActionView::Base.send :include, Redmineup::CalendarsHelper
107
107
  ActionView::Base.send :include, Redmineup::ExternalAssetsHelper
108
108
  ActionView::Base.send :include, Redmineup::FormTagHelper
109
+ ActionView::Base.send :include, Redmineup::TagsHelper
109
110
  end
110
111
 
111
112
  def requires_redmineup(arg)
data/test/test_helper.rb CHANGED
@@ -1,25 +1,26 @@
1
1
  require 'rails/all'
2
2
  require 'redmineup'
3
3
  require 'minitest/autorun'
4
+ require 'minitest/mock'
4
5
 
5
6
  ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + '/debug.log')
6
7
  ActiveRecord::Base.configurations = YAML.load_file(File.dirname(__FILE__) + '/database.yml')
7
8
  ActiveRecord::Base.establish_connection(ENV['DB'].try(:to_sym) || :sqlite)
8
9
 
9
10
  load(File.dirname(__FILE__) + '/schema.rb')
10
- Dir.glob(File.expand_path('../models/*.rb', __FILE__)).each { |f| require f }
11
+ Dir.glob(File.expand_path('models/*.rb', __dir__)).each { |f| require f }
11
12
 
12
- class ActiveSupport::TestCase #:nodoc:
13
+ class ActiveSupport::TestCase # :nodoc:
13
14
  include ActiveRecord::TestFixtures
14
15
 
15
16
  self.fixture_path = File.dirname(__FILE__) + '/fixtures/'
16
17
 
17
18
  self.use_transactional_tests = true if RUBY_VERSION > '1.9.3'
18
19
  self.use_instantiated_fixtures = false
19
- set_fixture_class :tags => Redmineup::ActsAsTaggable::Tag
20
- set_fixture_class :taggings => Redmineup::ActsAsTaggable::Tagging
20
+ set_fixture_class tags: Redmineup::ActsAsTaggable::Tag
21
+ set_fixture_class taggings: Redmineup::ActsAsTaggable::Tagging
21
22
 
22
- set_fixture_class :votable_caches => VotableCache
23
+ set_fixture_class votable_caches: VotableCache
23
24
  fixtures :all
24
25
 
25
26
  def assert_equivalent(expected, actual, message = nil)
@@ -32,9 +33,8 @@ class ActiveSupport::TestCase #:nodoc:
32
33
 
33
34
  def assert_tag_counts(tags, expected_values)
34
35
  # Map the tag fixture names to real tag names
35
- expected_values = expected_values.inject({}) do |hash, (tag, count)|
36
+ expected_values = expected_values.each_with_object({}) do |(tag, count), hash|
36
37
  hash[tags(tag).name] = count
37
- hash
38
38
  end
39
39
 
40
40
  tags.each do |tag|
@@ -44,14 +44,14 @@ class ActiveSupport::TestCase #:nodoc:
44
44
  assert_equal value, tag.count, "Expected value of #{value} for #{tag.name}, but was #{tag.count}"
45
45
  end
46
46
 
47
- unless expected_values.empty?
48
- assert false, "The following tag counts were not present: #{expected_values.inspect}"
49
- end
47
+ return if expected_values.empty?
48
+
49
+ assert false, "The following tag counts were not present: #{expected_values.inspect}"
50
50
  end
51
51
 
52
52
  # From Rails trunk
53
53
  def assert_difference(expressions, difference = 1, message = nil, &block)
54
- expression_evaluations = [expressions].flatten.collect{ |expression| lambda { eval(expression, block.binding) } }
54
+ expression_evaluations = [expressions].flatten.collect { |expression| -> { eval(expression, block.binding) } }
55
55
 
56
56
  original_values = expression_evaluations.inject([]) { |memo, expression| memo << expression.call }
57
57
  yield
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmineup
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - RedmineUP
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-11-07 00:00:00.000000000 Z
11
+ date: 2026-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails