additional_tags 3.0.9 → 3.1.0

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: c412788c20ba3626ad2707dea2a34a96b9d2e0378c70b55bd5b8f116d92dc8cf
4
- data.tar.gz: 6b2dd7625fe8b4e4249631bee75ad0e2a0f1be4a481382e1f346026683059246
3
+ metadata.gz: 30f90dcfc93dd66550bb8087b9f3a94fa411484f4876ccb9d837548edf0b64ae
4
+ data.tar.gz: df63312af11e2ce492b5b36bb3b0b1ce9f3e0b28c7d901512301226e06dcd65b
5
5
  SHA512:
6
- metadata.gz: 9293e12799c232dca72262bf3af55c84a23481e0fd1b0c6a38199f145ce3f7dca95ee218bb661f764eb49251de602abaefef41dc4da1463f4e97714097d0aa93
7
- data.tar.gz: 57377f76241c07b63651ddece4ee6a14f983dd1faea0544b2d7ca5e3453a302142b19442252b6d71c1884c54fed4083eb84f818dc72e0b0f91927de39b381b8f
6
+ metadata.gz: 40e8517cddee11354aa8979506352abdbbb4e10774ce74f7f3d5c637b7bb2c03fd1fc75bd0e51f39ea23525aa8da2a54cb8089e3738b49d42718e5ea54031657
7
+ data.tar.gz: 429ea55984a5c3225db53f9a5699bf897a54ae09f9c4bf76fb24b5358702a6bb7547c9efba57938bfeb3c6e3b877f3ce7bffafef7069f645914d6b9b38f8f4a9
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Additional Tags - Tags for Redmine
2
2
 
3
- [![Rate at redmine.org](https://img.shields.io/badge/rate%20at-redmine.org-blue.svg?style=flat)](https://www.redmine.org/plugins/additional_tags) [![Run Linters](https://github.com/AlphaNodes/additional_tags/workflows/Run%20Linters/badge.svg)](https://github.com/AlphaNodes/additional_tags/actions?query=workflow%3A%22Run+Linters%22) [![Run Tests](https://github.com/AlphaNodes/additional_tags/workflows/Tests/badge.svg)](https://github.com/AlphaNodes/additional_tags/actions?query=workflow%3ATests)
3
+ [![Rate at redmine.org](https://img.shields.io/badge/rate%20at-redmine.org-blue.svg?style=flat)](https://www.redmine.org/plugins/additional_tags) [![Run Linters](https://github.com/alphanodes/additional_tags/workflows/Run%20Linters/badge.svg)](https://github.com/alphanodes/additional_tags/actions?query=workflow%3A%22Run+Linters%22) [![Run Tests](https://github.com/alphanodes/additional_tags/workflows/Tests/badge.svg)](https://github.com/alphanodes/additional_tags/actions?query=workflow%3ATests)
4
4
 
5
5
  ## Features
6
6
 
@@ -8,15 +8,15 @@
8
8
  - *Activate issue tags* in the plugin configuration
9
9
  - and update your role permissions in the Redmine administration *Roles & permissions / Issue tracking*.
10
10
  - Tags for wiki pages. To use them you need to:
11
- - *Activate wiki tags* in the plugin configuration
11
+ - *Activate wiki tags* in the plugin configuration
12
12
  - and update your role permissions in the Redmine administration *Roles & permissions / Wiki*
13
- - Available role permissions for issue tags (section *Issue tracking*):
13
+ - Available role permissions for issue tags (section *Issue tracking*):
14
14
  - Add issue tags
15
15
  - Edit issue tags
16
16
  - Display issue tags
17
17
  - Available role permissions wiki tags (section *Wiki*):
18
18
  - Add wiki tags
19
- - Managing tags centrally in the plugin settings (edit, delete, merge)-
19
+ - Managing tags centrally in the plugin settings (edit, delete, merge)-
20
20
  - Grouped tags.
21
21
  - Grouping of tags possible, when using a colon in tag (all tags with same base name get the same color). Typo example: ``Plugin:HRM``
22
22
  - Scoped tags:
@@ -29,11 +29,11 @@
29
29
  used tags or tagging tables for issue or wiki tagging, tags will be migrated automatically there
30
30
  - Based on the very popular [acts-as-taggable-on](https://github.com/mbleigh/acts-as-taggable-on)
31
31
 
32
- ![screenshot](https://raw.githubusercontent.com/AlphaNodes/additional_tags/master/doc/images/tag-overview.png)
32
+ ![screenshot](https://raw.githubusercontent.com/alphanodes/additional_tags/master/doc/images/tag-overview.png)
33
33
 
34
34
  The screenshot shows: regular tags, grouped tags and scoped tags. The colors are assigned randomly. But you can change the color by choosing a *Color theme* in the plugin settings.
35
35
 
36
- ![screenshot](https://raw.githubusercontent.com/AlphaNodes/additional_tags/master/doc/images/additional-tags.gif)
36
+ ![screenshot](https://raw.githubusercontent.com/alphanodes/additional_tags/master/doc/images/additional-tags.gif)
37
37
 
38
38
  Other plugins use additional_tags as framework in order to support tags for their entities.
39
39
  At the moment this are:
@@ -42,11 +42,12 @@ At the moment this are:
42
42
  - redmine_passwords (password tagging)
43
43
  - redmine_reporting (project tagging)
44
44
  - redmine_hrm (holiday tagging)
45
- - redmine_servicedesk (contact tagging)
45
+ - redmine_servicedesk (tagging of contact, canned responses, invoices, helpdesk issues)
46
+ - redmine_wiki_guide (wiki page tagging)
46
47
 
47
48
  Start using it, too. The example image shows the centralized tag management in the plugin configuration.
48
49
 
49
- ![screenshot](https://raw.githubusercontent.com/AlphaNodes/additional_tags/master/doc/images/additional-tags-framework.png)
50
+ ![screenshot](https://raw.githubusercontent.com/alphanodes/additional_tags/master/doc/images/additional-tags-framework.png)
50
51
 
51
52
  ## Why another Tag plugin?
52
53
 
@@ -58,12 +59,12 @@ Start using it, too. The example image shows the centralized tag management in t
58
59
  ## Requirements
59
60
 
60
61
  - Redmine `>= 5.0`
61
- - Ruby `>= 2.7`
62
+ - Ruby `>= 3.0`
62
63
  - Redmine plugins: [additionals](https://www.redmine.org/plugins/additionals)
63
64
 
64
65
  ## Installing
65
66
 
66
- ### 1. Get right plugin version
67
+ ### 1. Get correct plugin version
67
68
 
68
69
  To install stable version of additional_tags, use
69
70
 
@@ -3,6 +3,15 @@
3
3
  module AdditionalTagsHelper
4
4
  include ActsAsTaggableOn::TagsHelper
5
5
 
6
+ def format_tags_json(tags)
7
+ tags.map do |tag|
8
+ {
9
+ 'id' => tag.name,
10
+ 'text' => tag.name
11
+ }
12
+ end
13
+ end
14
+
6
15
  def manageable_tags
7
16
  AdditionalTags::Tags.sort_tag_list ActsAsTaggableOn::Tag.where({})
8
17
  end
@@ -35,7 +35,7 @@
35
35
  p.nodata = l :label_no_data
36
36
 
37
37
  javascript:
38
- $(document).ready(function(){
38
+ $(function() {
39
39
  $('#settings form').data('cmUrl', "#{context_menu_additional_tags_path}")
40
40
  })
41
41
 
@@ -6,7 +6,7 @@ class MigrateExistingTags < ActiveRecord::Migration[5.2]
6
6
 
7
7
  excluded_taggable_types = %w[Question Contact DriveEntry]
8
8
 
9
- MigrateTag.all.each do |old_tag|
9
+ MigrateTag.find_each do |old_tag|
10
10
  ActsAsTaggableOn::Tagging.transaction do
11
11
  tag = ActsAsTaggableOn::Tag.find_by name: old_tag.name
12
12
  cnt = 0
@@ -19,10 +19,14 @@ module AdditionalTags
19
19
  render_on :view_wiki_show_sidebar_bottom, partial: 'wiki/tags_sidebar'
20
20
 
21
21
  def controller_issues_edit_before_save(context = {})
22
+ return unless AdditionalTags.setting? :active_issue_tags
23
+
22
24
  tags_journal context[:issue], context[:params]
23
25
  end
24
26
 
25
27
  def controller_issues_bulk_edit_before_save(context = {})
28
+ return unless AdditionalTags.setting? :active_issue_tags
29
+
26
30
  issue = context[:issue]
27
31
  params = context[:params]
28
32
 
@@ -54,7 +58,7 @@ module AdditionalTags
54
58
 
55
59
  pdf.ln
56
60
  pdf.SetFontStyle '', 8
57
- pdf.RDMCell 190, 5, page.tag_list.to_list
61
+ pdf.RDMCell 190, 5, page.tag_list.to_comma_list
58
62
  pdf.ln
59
63
  end
60
64
 
@@ -6,25 +6,27 @@ module AdditionalTags
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  included do
9
+ include AdditionalTagsHelper
9
10
  include InstanceMethods
10
11
  end
11
12
 
12
13
  module InstanceMethods
13
14
  def issue_tags
14
15
  suggestion_order = AdditionalTags.setting(:tags_suggestion_order) || 'name'
15
- @tags = Issue.available_tags name_like: build_search_query_term(params),
16
- sort_by: suggestion_order,
17
- order: (suggestion_order == 'name' ? 'ASC' : 'DESC')
16
+ tags = Issue.available_tags name_like: build_search_query_term(params),
17
+ sort_by: suggestion_order,
18
+ order: (suggestion_order == 'name' ? 'ASC' : 'DESC')
18
19
 
19
- @tags = AdditionalTags::Tags.sort_tag_list @tags if suggestion_order == 'name'
20
+ tags = AdditionalTags::Tags.sort_tag_list tags if suggestion_order == 'name'
20
21
 
21
- render layout: false, partial: 'additional_tag_list', locals: { unsorted: true }
22
+ render json: format_tags_json(tags)
22
23
  end
23
24
 
24
25
  def wiki_tags
25
- @tags = WikiPage.available_tags project: nil,
26
- name_like: build_search_query_term(params)
27
- render layout: false, partial: 'additional_tag_list', locals: { unsorted: true }
26
+ tags = WikiPage.available_tags project: nil,
27
+ name_like: build_search_query_term(params)
28
+
29
+ render json: format_tags_json(tags)
28
30
  end
29
31
 
30
32
  def all_tags
@@ -32,10 +34,10 @@ module AdditionalTags
32
34
 
33
35
  q = build_search_query_term params
34
36
  sql_for_where = "LOWER(#{ActiveRecord::Base.connection.quote_table_name ActsAsTaggableOn.tags_table}.name) LIKE ?"
35
- @tags = ActsAsTaggableOn::Tag.where(sql_for_where, "%#{q.downcase}%")
36
- .order(name: :asc)
37
+ tags = ActsAsTaggableOn::Tag.where(sql_for_where, "%#{q.downcase}%")
38
+ .order(name: :asc)
37
39
 
38
- render layout: false, partial: 'additional_tag_list', locals: { unsorted: true }
40
+ render json: format_tags_json(tags)
39
41
  end
40
42
  end
41
43
  end
@@ -10,8 +10,8 @@ module AdditionalTags
10
10
  include InstanceMethods
11
11
  acts_as_ordered_taggable
12
12
 
13
- before_save :prepare_save_tag_change
14
- before_save :sort_tag_list
13
+ before_save :prepare_save_tag_change, if: proc { AdditionalTags.setting?(:active_issue_tags) }
14
+ before_save :sort_tag_list, if: proc { AdditionalTags.setting?(:active_issue_tags) }
15
15
 
16
16
  validate :validate_tags, if: proc { AdditionalTags.setting?(:active_issue_tags) }
17
17
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module AdditionalTags
4
4
  module PluginVersion
5
- VERSION = '3.0.9' unless defined? AdditionalTags::PluginVersion::VERSION
5
+ VERSION = '3.1.0' unless defined? AdditionalTags::PluginVersion::VERSION
6
6
  end
7
7
  end
@@ -27,6 +27,15 @@ module AdditionalTags
27
27
  elsif options[:visible_condition]
28
28
  scope = scope.where klass.visible_condition(user)
29
29
  end
30
+
31
+ # @TODO: this should be activated and replace next line
32
+ # Additionals::EntityMethodsGlobal should be included for this
33
+ #
34
+ # if options[:name_like]
35
+ # scope = scope.like_with_wildcard columns: "#{TAG_TABLE_NAME}.name",
36
+ # value: options[:name_like],
37
+ # wildcard: :both
38
+ # end
30
39
  scope = scope.where "LOWER(#{TAG_TABLE_NAME}.name) LIKE ?", "%#{options[:name_like].downcase}%" if options[:name_like]
31
40
  scope = scope.where "#{TAG_TABLE_NAME}.name=?", options[:name] if options[:name]
32
41
  scope = scope.where "#{TAGGING_TABLE_NAME}.taggable_id!=?", options[:exclude_id] if options[:exclude_id]
@@ -39,8 +48,7 @@ module AdditionalTags
39
48
  end
40
49
 
41
50
  def all_type_tags(klass, without_projects: false)
42
- ActsAsTaggableOn::Tag.all
43
- .joins(tag_for_joins(klass, without_projects: without_projects))
51
+ ActsAsTaggableOn::Tag.joins(tag_for_joins(klass, without_projects: without_projects))
44
52
  .distinct
45
53
  .order(:name)
46
54
  end
@@ -146,7 +154,7 @@ module AdditionalTags
146
154
  "COUNT(DISTINCT #{TAGGING_TABLE_NAME}.taggable_id) AS count"]
147
155
 
148
156
  columns << "MIN(#{TAGGING_TABLE_NAME}.created_at) AS last_created" if sort_by == 'last_created'
149
- columns.to_list
157
+ columns.to_comma_list
150
158
  end
151
159
 
152
160
  def status_for_tag_value(scope:, tag_id:, group_id: nil, group_id_is_bool: false)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: additional_tags
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.9
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AlphaNodes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-18 00:00:00.000000000 Z
11
+ date: 2023-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: acts-as-taggable-on
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '9.0'
19
+ version: '10.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '9.0'
26
+ version: '10.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: redmine_plugin_kit
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -68,7 +68,6 @@ files:
68
68
  - app/views/additional_tags/settings/_general.html.slim
69
69
  - app/views/additional_tags/settings/_manage_tags.html.slim
70
70
  - app/views/additional_tags/settings/_settings.html.slim
71
- - app/views/auto_completes/_additional_tag_list.slim
72
71
  - app/views/common/_tag_summary_block.html.slim
73
72
  - app/views/context_menus/_issues_tags.html.slim
74
73
  - app/views/dashboards/blocks/_issue_tags.html.slim
@@ -149,14 +148,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
148
  requirements:
150
149
  - - ">="
151
150
  - !ruby/object:Gem::Version
152
- version: '2.7'
151
+ version: '3.0'
153
152
  required_rubygems_version: !ruby/object:Gem::Requirement
154
153
  requirements:
155
154
  - - ">="
156
155
  - !ruby/object:Gem::Version
157
156
  version: '0'
158
157
  requirements: []
159
- rubygems_version: 3.1.6
158
+ rubygems_version: 3.4.10
160
159
  signing_key:
161
160
  specification_version: 4
162
161
  summary: Redmine plugin for adding tag functionality
@@ -1 +0,0 @@
1
- == @tags.collect { |tag| { 'id' => tag.name, 'text' => tag.name } }.to_json