additional_tags 3.0.9 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -10
- data/app/helpers/additional_tags_helper.rb +14 -1
- data/app/models/migrate_tag.rb +1 -1
- data/app/models/migrate_tagging.rb +1 -1
- data/app/views/additional_tags/settings/_general.html.slim +4 -2
- data/app/views/additional_tags/settings/_manage_tags.html.slim +3 -3
- data/app/views/issues/_tags_sidebar_after.html.slim +2 -0
- data/app/views/issues/_tags_sidebar_before.html.slim +2 -0
- data/config/locales/bg.yml +1 -0
- data/config/locales/cs.yml +1 -0
- data/config/locales/de.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fa.yml +45 -0
- data/config/locales/fr.yml +1 -0
- data/config/locales/it.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/pl.yml +1 -0
- data/config/locales/pt-BR.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/config/settings.yml +1 -0
- data/db/migrate/20201123093214_migrate_existing_tags.rb +1 -1
- data/init.rb +6 -6
- data/lib/additional_tags/hooks/view_hook.rb +7 -2
- data/lib/additional_tags/patches/auto_completes_controller_patch.rb +13 -11
- data/lib/additional_tags/patches/issue_patch.rb +2 -2
- data/lib/additional_tags/patches/issue_query_patch.rb +2 -1
- data/lib/additional_tags/plugin_version.rb +1 -1
- data/lib/additional_tags/tags.rb +11 -3
- metadata +9 -7
- data/app/views/auto_completes/_additional_tag_list.slim +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8ed778f6643bfc7ef2e38f292fa92d0dab319705968e9791bb820b0e284124b
|
4
|
+
data.tar.gz: 29db0db1b7c774c387fe46b7294d5be48dc71ab0857cd8fca9eebea610e17e6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c76cb8da0ffab5ef74651cc450150fc1c057e4bfff58633cc4a8aa17fdd0ff91134537bf5cacb9f85783a624b628e21d0705b30b656819583ccc7d62f4fd2f5d
|
7
|
+
data.tar.gz: b12dc1e15cf91fc1514ecda011fd3e7f8186b64be0046fe7df894853b52db7045f2713aa00ae67101e1a42d7b44947256a129c21553021a3892bea0612eab34c
|
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/
|
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/
|
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/
|
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
|
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/
|
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 `>=
|
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
|
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
|
@@ -30,7 +39,7 @@ module AdditionalTagsHelper
|
|
30
39
|
|
31
40
|
def manageable_tag_column_values(tag)
|
32
41
|
columns = []
|
33
|
-
manageable_tag_columns.
|
42
|
+
manageable_tag_columns.each_value do |column_values|
|
34
43
|
cnt = column_values[:counts][tag.id]
|
35
44
|
cnt = 0 if cnt.blank?
|
36
45
|
|
@@ -43,6 +52,10 @@ module AdditionalTagsHelper
|
|
43
52
|
columns
|
44
53
|
end
|
45
54
|
|
55
|
+
def values_for_sort_direction
|
56
|
+
[[l(:label_ascending), 'asc'], [l(:label_descending), 'desc']]
|
57
|
+
end
|
58
|
+
|
46
59
|
def sort_tags_for_list(tags, sort_by: nil, sort_order: nil)
|
47
60
|
return tags if tags.size < 2
|
48
61
|
|
data/app/models/migrate_tag.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class MigrateTag < ActiveRecord::Base
|
3
|
+
class MigrateTag < Rails.version < '7.1' ? ActiveRecord::Base : ApplicationRecord
|
4
4
|
self.table_name = 'tags'
|
5
5
|
has_many :migrate_taggings, dependent: :destroy, foreign_key: :tag_id, inverse_of: :migrate_tag
|
6
6
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class MigrateTagging < ActiveRecord::Base
|
3
|
+
class MigrateTagging < Rails.version < '7.1' ? ActiveRecord::Base : ApplicationRecord
|
4
4
|
self.table_name = 'taggings'
|
5
5
|
belongs_to :migrate_tag, foreign_key: :tag_id, inverse_of: :migrate_taggings
|
6
6
|
belongs_to :taggable, polymorphic: true
|
@@ -15,8 +15,7 @@ fieldset.settings
|
|
15
15
|
@settings[:tags_sort_by])
|
16
16
|
'
|
17
17
|
= select_tag 'settings[tags_sort_order]',
|
18
|
-
options_for_select(
|
19
|
-
@settings[:tags_sort_order])
|
18
|
+
options_for_select(values_for_sort_direction, @settings[:tags_sort_order])
|
20
19
|
|
21
20
|
p
|
22
21
|
= additionals_settings_select :tags_suggestion_order,
|
@@ -37,6 +36,9 @@ fieldset.settings
|
|
37
36
|
p
|
38
37
|
= additionals_settings_checkbox :active_issue_tags
|
39
38
|
|
39
|
+
p
|
40
|
+
= additionals_settings_checkbox :show_tags_after_queries
|
41
|
+
|
40
42
|
p
|
41
43
|
= additionals_settings_checkbox :open_issues_only
|
42
44
|
|
@@ -6,10 +6,10 @@
|
|
6
6
|
tr
|
7
7
|
th.checkbox.hide-when-print
|
8
8
|
= check_box_tag 'ids[]', '', false, class: 'toggle-selection',
|
9
|
-
title: "#{l :button_check_all}
|
9
|
+
title: "#{l :button_check_all} / #{l :button_uncheck_all}"
|
10
10
|
|
11
11
|
th = l :field_name
|
12
|
-
- manageable_tag_columns.
|
12
|
+
- manageable_tag_columns.each_value do |column_values|
|
13
13
|
th = column_values[:label]
|
14
14
|
th
|
15
15
|
tbody
|
@@ -35,7 +35,7 @@
|
|
35
35
|
p.nodata = l :label_no_data
|
36
36
|
|
37
37
|
javascript:
|
38
|
-
$(
|
38
|
+
$(function() {
|
39
39
|
$('#settings form').data('cmUrl', "#{context_menu_additional_tags_path}")
|
40
40
|
})
|
41
41
|
|
data/config/locales/bg.yml
CHANGED
@@ -15,6 +15,7 @@ bg:
|
|
15
15
|
label_manage_tags: "Управление на маркерите"
|
16
16
|
label_merge_selected_tags: "Обединение на избраните маркери"
|
17
17
|
label_open_issues_only: "Показване само на отворените задачи"
|
18
|
+
label_show_tags_after_queries: "Показване на етикети след заявки"
|
18
19
|
label_show_with_count: "Показване на брой маркирани обекти"
|
19
20
|
label_tag_color_theme: "Тема на цвета %{value}"
|
20
21
|
label_tags_color_theme: "Цвят"
|
data/config/locales/cs.yml
CHANGED
@@ -15,6 +15,7 @@ cs:
|
|
15
15
|
label_manage_tags: "Spravovat štítky"
|
16
16
|
label_merge_selected_tags: "Sloučit vybrané značky"
|
17
17
|
label_open_issues_only: "Zobrazit pouze otevřené problémy"
|
18
|
+
label_show_tags_after_queries: "Zobrazit TAGy po dotazech"
|
18
19
|
label_show_with_count: "Zobrazit částku na značce"
|
19
20
|
label_tag_color_theme: "Barevné téma %{value}"
|
20
21
|
label_tags_color_theme: "Barva"
|
data/config/locales/de.yml
CHANGED
@@ -15,6 +15,7 @@ de:
|
|
15
15
|
label_manage_tags: TAGs verwalten
|
16
16
|
label_merge_selected_tags: Ausgewählte TAGs zusammenführen
|
17
17
|
label_open_issues_only: Zeige nur offene Tickets
|
18
|
+
label_show_tags_after_queries: "Zeige TAGs nach Abfragen"
|
18
19
|
label_show_with_count: Zeige Anzahl zu TAG
|
19
20
|
label_tag_color_theme: Farbschema %{value}
|
20
21
|
label_tags_color_theme: Farbe
|
data/config/locales/en.yml
CHANGED
@@ -15,6 +15,7 @@ en:
|
|
15
15
|
label_manage_tags: "Manage tags"
|
16
16
|
label_merge_selected_tags: "Merge selected tags"
|
17
17
|
label_open_issues_only: "Display open issues only"
|
18
|
+
label_show_tags_after_queries: "Show tags after queries"
|
18
19
|
label_show_with_count: "Display amount on tag"
|
19
20
|
label_tag_color_theme: Color theme %{value}
|
20
21
|
label_tags_color_theme: Color
|
data/config/locales/es.yml
CHANGED
@@ -15,6 +15,7 @@ es:
|
|
15
15
|
label_manage_tags: "Manejar tags"
|
16
16
|
label_merge_selected_tags: "Fusionar tags seleccionadas"
|
17
17
|
label_open_issues_only: "Mostrar sólo las peticiones abiertas"
|
18
|
+
label_show_tags_after_queries: "Mostrar TAGs tras las consultas"
|
18
19
|
label_show_with_count: "Mostrar la cantidad en la tags"
|
19
20
|
label_tag_color_theme: "Tema del color %{value}"
|
20
21
|
label_tags_colors: "Color"
|
@@ -0,0 +1,45 @@
|
|
1
|
+
fa:
|
2
|
+
activerecord:
|
3
|
+
errors:
|
4
|
+
messages:
|
5
|
+
invalid_mutually_exclusive_tags: از تگ های منحصر به فرد متقابل استفاده شده است
|
6
|
+
field_issue_tags: تگهای مسئله
|
7
|
+
field_tag_list: تگها
|
8
|
+
field_tags: تگها
|
9
|
+
label_active_issue_tags: "تگهای فعال مسئله"
|
10
|
+
label_active_wiki_tags: "تگهای فعال ویکی"
|
11
|
+
label_add_tags: "افزودن تگ"
|
12
|
+
label_amount_entities_with_tags: "مقدار %{name} با تگها"
|
13
|
+
label_amount_tags: "تگهای مقدار"
|
14
|
+
label_edit_tags: "ویرایش تگها"
|
15
|
+
label_manage_tags: "مدیریت تگها"
|
16
|
+
label_merge_selected_tags: "ادغام تگهای انتخابی"
|
17
|
+
label_open_issues_only: "مشاهده مسائل باز"
|
18
|
+
label_show_tags_after_queries: "Show tags after queries"
|
19
|
+
label_show_with_count: "نمایش مقدار روی تگ"
|
20
|
+
label_tag_color_theme: تم رنگی %{value}
|
21
|
+
label_tags_color_theme: رنگ
|
22
|
+
label_tags_sidebar: "نمایش تگها در حاشیه به عنوان"
|
23
|
+
label_tags_sort_by: "مرتب سازی تگها بر اساس"
|
24
|
+
label_tags_suggestion_order: "سفارش پیشنهاد"
|
25
|
+
label_tags_tag: "تگ"
|
26
|
+
label_tags_without_color: بدون رنگ
|
27
|
+
label_use_colors: استفاده از رنگها
|
28
|
+
label_wiki_index_for_tag: "صفحههای ویکی با تگ"
|
29
|
+
label_with_chart: "با نمودار"
|
30
|
+
label_with_table_of_values: "با جدول مقادیر"
|
31
|
+
notice_failed_to_add_tags: "ناتوانی در افزودن تگها"
|
32
|
+
notice_tags_added: "تگها افزوده شدند"
|
33
|
+
permission_add_wiki_tags: "افزودن تگهای ویکی"
|
34
|
+
permission_create_issue_tags: "افزودن تگهای مسئله"
|
35
|
+
permission_edit_issue_tags: "ویرایش تگهای مسئله"
|
36
|
+
permission_view_issue_tags: "مشاهده تگهای مسئله"
|
37
|
+
tags_order_by_count: "بیشتر استفادهشده"
|
38
|
+
tags_order_by_last_created: "آخرین ساختهشده"
|
39
|
+
tags_order_by_name: "نام"
|
40
|
+
tags_sidebar_cloud: "ابر"
|
41
|
+
tags_sidebar_list: "لیست"
|
42
|
+
tags_sidebar_none: "هیچکدام"
|
43
|
+
tags_sidebar_simple_cloud: "ابر ساده"
|
44
|
+
tags_sort_by_count: "تعداد"
|
45
|
+
tags_sort_by_name: "نام"
|
data/config/locales/fr.yml
CHANGED
@@ -15,6 +15,7 @@ fr:
|
|
15
15
|
label_manage_tags: "Gérer les tags"
|
16
16
|
label_merge_selected_tags: "Fusionner les tags sélectionnées"
|
17
17
|
label_open_issues_only: "Afficher uniquement les demandes ouverts"
|
18
|
+
label_show_tags_after_queries: "Afficher les TAG après les requêtes"
|
18
19
|
label_show_with_count: "Afficher le montant sur l'tags"
|
19
20
|
label_tag_color_theme: "Thème de la couleur %{value}"
|
20
21
|
label_tags_colors: "Couleur"
|
data/config/locales/it.yml
CHANGED
@@ -15,6 +15,7 @@ it:
|
|
15
15
|
label_manage_tags: "Gestire i tag"
|
16
16
|
label_merge_selected_tags: "Unisci i tag selezionati"
|
17
17
|
label_open_issues_only: "Mostra solo i segnalazione"
|
18
|
+
label_show_tags_after_queries: "Mostra i TAG dopo le query"
|
18
19
|
label_show_with_count: "Visualizzare l'importo sul tag"
|
19
20
|
label_tag_color_theme: "Tema colore %{value}"
|
20
21
|
label_tags_colors: Colore
|
data/config/locales/ja.yml
CHANGED
@@ -15,6 +15,7 @@ ja:
|
|
15
15
|
label_manage_tags: "タグの管理"
|
16
16
|
label_merge_selected_tags: "選択したタグをマージ"
|
17
17
|
label_open_issues_only: "開いている問題のみを表示"
|
18
|
+
label_show_tags_after_queries: "クエリーの後にTAGを表示する"
|
18
19
|
label_show_with_count: "タグに金額を表示"
|
19
20
|
label_tag_color_theme: "カラーテーマ%{value}"
|
20
21
|
label_tags_colors: "カラー"
|
data/config/locales/ko.yml
CHANGED
@@ -15,6 +15,7 @@ ko:
|
|
15
15
|
label_manage_tags: "태그 관리"
|
16
16
|
label_merge_selected_tags: "선택한 태그 병합"
|
17
17
|
label_open_issues_only: "미해결 문제 만 표시"
|
18
|
+
label_show_tags_after_queries: "쿼리 뒤에 태그 표시"
|
18
19
|
label_show_with_count: "태그에 금액 표시"
|
19
20
|
label_tag_color_theme: "색상 테마 %{value}"
|
20
21
|
label_tags_colors: "색깔"
|
data/config/locales/pl.yml
CHANGED
@@ -15,6 +15,7 @@ pl:
|
|
15
15
|
label_manage_tags: "Zarządzaj tagami"
|
16
16
|
label_merge_selected_tags: "Łączenie wybranych tagów"
|
17
17
|
label_open_issues_only: "Wyświetlaj tylko sprawy otwarte"
|
18
|
+
label_show_tags_after_queries: "Pokaż TAGi po zapytaniach"
|
18
19
|
label_show_with_count: "Wyświetlanie ilości na etykiecie"
|
19
20
|
label_tag_color_theme: "Kolorowy motyw %{value}"
|
20
21
|
label_tags_colors: Kolor
|
data/config/locales/pt-BR.yml
CHANGED
@@ -15,6 +15,7 @@ pt-BR:
|
|
15
15
|
label_manage_tags: "Gerenciar etiquetas"
|
16
16
|
label_merge_selected_tags: "Fundir tags selecionadas"
|
17
17
|
label_open_issues_only: "Exibir apenas questões em aberto"
|
18
|
+
label_show_tags_after_queries: "Mostrar TAGs após consultas"
|
18
19
|
label_show_with_count: "Mostrar quantidade na etiqueta"
|
19
20
|
label_tag_color_theme: "Tema da cor %{value}"
|
20
21
|
label_tags_colors: "Cor"
|
data/config/locales/ru.yml
CHANGED
@@ -15,6 +15,7 @@ ru:
|
|
15
15
|
label_manage_tags: "Управление метками"
|
16
16
|
label_merge_selected_tags: "Объединить выбранные метки"
|
17
17
|
label_open_issues_only: "Отображать только открытые задачи"
|
18
|
+
label_show_tags_after_queries: "Показывать теги после запросов"
|
18
19
|
label_show_with_count: "Отображать количество на метке"
|
19
20
|
label_tag_color_theme: "Цветовая тема %{value}"
|
20
21
|
label_tags_colors: "Цвет"
|
data/config/settings.yml
CHANGED
@@ -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.
|
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
|
data/init.rb
CHANGED
@@ -5,13 +5,13 @@ require 'additional_tags/plugin_version'
|
|
5
5
|
loader = RedminePluginKit::Loader.new plugin_id: 'additional_tags'
|
6
6
|
|
7
7
|
Redmine::Plugin.register :additional_tags do
|
8
|
-
name
|
9
|
-
author
|
8
|
+
name 'Additional Tags'
|
9
|
+
author 'AlphaNodes GmbH'
|
10
10
|
description 'Redmine tagging support'
|
11
|
-
version
|
12
|
-
url
|
13
|
-
author_url
|
14
|
-
directory
|
11
|
+
version AdditionalTags::PluginVersion::VERSION
|
12
|
+
url 'https://github.com/alphanodes/additional_tags/'
|
13
|
+
author_url 'https://alphanodes.com/'
|
14
|
+
directory File.dirname(__FILE__)
|
15
15
|
|
16
16
|
requires_redmine version_or_higher: '5.0'
|
17
17
|
|
@@ -11,7 +11,8 @@ module AdditionalTags
|
|
11
11
|
partial: 'issues/tags_form_details',
|
12
12
|
locals: { tags_form: 'issues/tags_form' }
|
13
13
|
render_on :view_issues_show_details_bottom, partial: 'issues/tags'
|
14
|
-
render_on :view_issues_sidebar_planning_bottom, partial: 'issues/
|
14
|
+
render_on :view_issues_sidebar_planning_bottom, partial: 'issues/tags_sidebar_before'
|
15
|
+
render_on :view_issues_sidebar_queries_bottom, partial: 'issues/tags_sidebar_after'
|
15
16
|
render_on :view_layouts_base_html_head, partial: 'additional_tags/html_head'
|
16
17
|
render_on :view_layouts_base_body_bottom, partial: 'additional_tags/body_bottom'
|
17
18
|
render_on :view_wiki_form_bottom, partial: 'tags_form_bottom'
|
@@ -19,10 +20,14 @@ module AdditionalTags
|
|
19
20
|
render_on :view_wiki_show_sidebar_bottom, partial: 'wiki/tags_sidebar'
|
20
21
|
|
21
22
|
def controller_issues_edit_before_save(context = {})
|
23
|
+
return unless AdditionalTags.setting? :active_issue_tags
|
24
|
+
|
22
25
|
tags_journal context[:issue], context[:params]
|
23
26
|
end
|
24
27
|
|
25
28
|
def controller_issues_bulk_edit_before_save(context = {})
|
29
|
+
return unless AdditionalTags.setting? :active_issue_tags
|
30
|
+
|
26
31
|
issue = context[:issue]
|
27
32
|
params = context[:params]
|
28
33
|
|
@@ -54,7 +59,7 @@ module AdditionalTags
|
|
54
59
|
|
55
60
|
pdf.ln
|
56
61
|
pdf.SetFontStyle '', 8
|
57
|
-
pdf.RDMCell 190, 5, page.tag_list.
|
62
|
+
pdf.RDMCell 190, 5, page.tag_list.to_comma_list
|
58
63
|
pdf.ln
|
59
64
|
end
|
60
65
|
|
@@ -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
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
20
|
+
tags = AdditionalTags::Tags.sort_tag_list tags if suggestion_order == 'name'
|
20
21
|
|
21
|
-
render
|
22
|
+
render json: format_tags_json(tags)
|
22
23
|
end
|
23
24
|
|
24
25
|
def wiki_tags
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
36
|
-
|
37
|
+
tags = ActsAsTaggableOn::Tag.where(sql_for_where, "%#{q.downcase}%")
|
38
|
+
.order(name: :asc)
|
37
39
|
|
38
|
-
render
|
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
|
|
data/lib/additional_tags/tags.rb
CHANGED
@@ -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.
|
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.
|
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
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AlphaNodes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-27 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: '
|
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: '
|
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
|
@@ -80,6 +79,8 @@ files:
|
|
80
79
|
- app/views/issues/_tags_form.html.slim
|
81
80
|
- app/views/issues/_tags_form_details.html.slim
|
82
81
|
- app/views/issues/_tags_sidebar.html.slim
|
82
|
+
- app/views/issues/_tags_sidebar_after.html.slim
|
83
|
+
- app/views/issues/_tags_sidebar_before.html.slim
|
83
84
|
- app/views/wiki/_tags_form.html.slim
|
84
85
|
- app/views/wiki/_tags_form_bottom.html.slim
|
85
86
|
- app/views/wiki/_tags_show.html.slim
|
@@ -93,6 +94,7 @@ files:
|
|
93
94
|
- config/locales/de.yml
|
94
95
|
- config/locales/en.yml
|
95
96
|
- config/locales/es.yml
|
97
|
+
- config/locales/fa.yml
|
96
98
|
- config/locales/fr.yml
|
97
99
|
- config/locales/it.yml
|
98
100
|
- config/locales/ja.yml
|
@@ -149,14 +151,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
151
|
requirements:
|
150
152
|
- - ">="
|
151
153
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
154
|
+
version: '3.0'
|
153
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
156
|
requirements:
|
155
157
|
- - ">="
|
156
158
|
- !ruby/object:Gem::Version
|
157
159
|
version: '0'
|
158
160
|
requirements: []
|
159
|
-
rubygems_version: 3.
|
161
|
+
rubygems_version: 3.4.19
|
160
162
|
signing_key:
|
161
163
|
specification_version: 4
|
162
164
|
summary: Redmine plugin for adding tag functionality
|
@@ -1 +0,0 @@
|
|
1
|
-
== @tags.collect { |tag| { 'id' => tag.name, 'text' => tag.name } }.to_json
|