additional_tags 1.0.7 → 3.0.9

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: d187e05dfc7655030d62f26afc35392085f43cbac4bb4b4d654da66c643cd58f
4
- data.tar.gz: 88901a08b7c4b38df8b65fd20282f5e4aae393866e5accf7c3a096d7c82f4788
3
+ metadata.gz: c412788c20ba3626ad2707dea2a34a96b9d2e0378c70b55bd5b8f116d92dc8cf
4
+ data.tar.gz: 6b2dd7625fe8b4e4249631bee75ad0e2a0f1be4a481382e1f346026683059246
5
5
  SHA512:
6
- metadata.gz: 34e99763fad968c1f2498dc73b662fb756c4b436e0a4521acd731674c3bebdf8bee52cc55e995457908d39816b61a230fd29d4ac1f3a1662a3e12bb886e6d60e
7
- data.tar.gz: 4aeb8f7bcbaad55d596dd6f816cedbde29f1c707748ff9ce275f7f131959df258c10e2683ce279cf4c26f8a459d53992ae6e4202d9ff9963a637d88b85661c98
6
+ metadata.gz: 9293e12799c232dca72262bf3af55c84a23481e0fd1b0c6a38199f145ce3f7dca95ee218bb661f764eb49251de602abaefef41dc4da1463f4e97714097d0aa93
7
+ data.tar.gz: 57377f76241c07b63651ddece4ee6a14f983dd1faea0544b2d7ca5e3453a302142b19442252b6d71c1884c54fed4083eb84f818dc72e0b0f91927de39b381b8f
@@ -34,8 +34,11 @@ class IssueTagsController < ApplicationController
34
34
 
35
35
  Issue.transaction do
36
36
  @issues.each do |issue|
37
+ issue.init_journal User.current
37
38
  # add tags added in placeholder for a single/multiple issue or overwrite tags for single issue
38
39
  params[:append] == 'true' ? issue.tag_list << tags : issue.tag_list = tags
40
+
41
+ issue.tags_to_journal issue.tag_list_was&.to_s, issue.tag_list.to_s
39
42
  issue.save!
40
43
  end
41
44
  end
@@ -53,7 +53,7 @@ module AdditionalTagsHelper
53
53
  when 'name:desc'
54
54
  tags = AdditionalTags::Tags.sort_tag_list(tags).reverse
55
55
  when 'count:asc'
56
- tags.sort! { |a, b| a.count <=> b.count }
56
+ tags.sort_by!(&:count)
57
57
  when 'count:desc'
58
58
  tags.sort! { |a, b| b.count <=> a.count }
59
59
  else
@@ -190,7 +190,7 @@ module AdditionalTagsHelper
190
190
  end
191
191
 
192
192
  def link_to_issue_tags_totals(entries:, project:, open_issues_only:)
193
- sum = if entries.blank? || entries.size.zero?
193
+ sum = if entries.blank? || entries.empty?
194
194
  0
195
195
  else
196
196
  query = IssueQuery.new project: project, name: '_'
@@ -10,8 +10,18 @@ module AdditionalTagsIssuesHelper
10
10
  AdditionalTags.setting?(:active_issue_tags) && User.current.allowed_to?(:view_issue_tags, @project)
11
11
 
12
12
  api.array :tags do
13
- @issue.tags.each do |tag|
14
- api.tag id: tag.id, name: tag.name
13
+ # support tags, which are not saved to database
14
+ if @issue.tag_list.present?
15
+ if @issue.tags.present? && @issue.tags.map(&:name) == @issue.tag_list
16
+ @issue.tags.each do |tag|
17
+ api.tag id: tag.id, name: tag.name
18
+ end
19
+ else
20
+ @issue.tag_list.each do |tag_name|
21
+ # there is no id for unsaved tags
22
+ api.tag name: tag_name
23
+ end
24
+ end
15
25
  end
16
26
  end
17
27
  end
@@ -15,7 +15,6 @@ bg:
15
15
  label_manage_tags: "Управление на маркерите"
16
16
  label_merge_selected_tags: "Обединение на избраните маркери"
17
17
  label_open_issues_only: "Показване само на отворените задачи"
18
- label_quantity: "Количество"
19
18
  label_show_with_count: "Показване на брой маркирани обекти"
20
19
  label_tag_color_theme: "Тема на цвета %{value}"
21
20
  label_tags_color_theme: "Цвят"
@@ -15,7 +15,6 @@ 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_quantity: "Množství"
19
18
  label_show_with_count: "Zobrazit částku na značce"
20
19
  label_tag_color_theme: "Barevné téma %{value}"
21
20
  label_tags_color_theme: "Barva"
@@ -15,7 +15,6 @@ 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_quantity: Anzahl
19
18
  label_show_with_count: Zeige Anzahl zu TAG
20
19
  label_tag_color_theme: Farbschema %{value}
21
20
  label_tags_color_theme: Farbe
@@ -15,7 +15,6 @@ 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_quantity: "Quantity"
19
18
  label_show_with_count: "Display amount on tag"
20
19
  label_tag_color_theme: Color theme %{value}
21
20
  label_tags_color_theme: Color
@@ -15,7 +15,6 @@ 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_quantity: "Ctd."
19
18
  label_show_with_count: "Mostrar la cantidad en la tags"
20
19
  label_tag_color_theme: "Tema del color %{value}"
21
20
  label_tags_colors: "Color"
@@ -15,7 +15,6 @@ 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_quantity: "Quantité"
19
18
  label_show_with_count: "Afficher le montant sur l'tags"
20
19
  label_tag_color_theme: "Thème de la couleur %{value}"
21
20
  label_tags_colors: "Couleur"
@@ -15,7 +15,6 @@ 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_quantity: "Numero"
19
18
  label_show_with_count: "Visualizzare l'importo sul tag"
20
19
  label_tag_color_theme: "Tema colore %{value}"
21
20
  label_tags_colors: Colore
@@ -15,7 +15,6 @@ ja:
15
15
  label_manage_tags: "タグの管理"
16
16
  label_merge_selected_tags: "選択したタグをマージ"
17
17
  label_open_issues_only: "開いている問題のみを表示"
18
- label_quantity: "数量"
19
18
  label_show_with_count: "タグに金額を表示"
20
19
  label_tag_color_theme: "カラーテーマ%{value}"
21
20
  label_tags_colors: "カラー"
@@ -15,7 +15,6 @@ ko:
15
15
  label_manage_tags: "태그 관리"
16
16
  label_merge_selected_tags: "선택한 태그 병합"
17
17
  label_open_issues_only: "미해결 문제 만 표시"
18
- label_quantity: "수량"
19
18
  label_show_with_count: "태그에 금액 표시"
20
19
  label_tag_color_theme: "색상 테마 %{value}"
21
20
  label_tags_colors: "색깔"
@@ -15,7 +15,6 @@ 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_quantity: "Ilość"
19
18
  label_show_with_count: "Wyświetlanie ilości na etykiecie"
20
19
  label_tag_color_theme: "Kolorowy motyw %{value}"
21
20
  label_tags_colors: Kolor
@@ -15,7 +15,6 @@ 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_quantity: "Quantidade"
19
18
  label_show_with_count: "Mostrar quantidade na etiqueta"
20
19
  label_tag_color_theme: "Tema da cor %{value}"
21
20
  label_tags_colors: "Cor"
@@ -15,7 +15,6 @@ ru:
15
15
  label_manage_tags: "Управление метками"
16
16
  label_merge_selected_tags: "Объединить выбранные метки"
17
17
  label_open_issues_only: "Отображать только открытые задачи"
18
- label_quantity: "Количество"
19
18
  label_show_with_count: "Отображать количество на метке"
20
19
  label_tag_color_theme: "Цветовая тема %{value}"
21
20
  label_tags_colors: "Цвет"
@@ -63,14 +63,14 @@ module AdditionalTags
63
63
  def issues_bulk_tags_fix(issue, params)
64
64
  return unless params && params[:issue]
65
65
 
66
- common_tags =
67
- if params[:common_tags].present?
68
- params[:common_tags].split(ActsAsTaggableOn.delimiter).collect(&:strip)
69
- else
70
- []
71
- end
66
+ common_tags = if params[:common_tags].present?
67
+ params[:common_tags].split(ActsAsTaggableOn.delimiter).map(&:strip)
68
+ else
69
+ []
70
+ end
71
+
72
72
  current_tags = ActsAsTaggableOn::TagList.new issue.tags.to_a
73
- new_tags = Array(params[:issue][:tag_list]).reject(&:empty?)
73
+ new_tags = Array(params[:issue][:tag_list]).compact_blank
74
74
 
75
75
  tags_to_add = new_tags - common_tags
76
76
  tags_to_remove = common_tags - new_tags
@@ -84,8 +84,7 @@ module AdditionalTags
84
84
  def tags_journal(issue, params)
85
85
  return unless params && params[:issue] && params[:issue][:tag_list]
86
86
 
87
- issue.tags_to_journal Issue.find_by(id: issue.id)&.tag_list&.to_s,
88
- issue.tag_list.to_s
87
+ issue.tags_to_journal issue.tag_list_was&.to_s, issue.tag_list.to_s
89
88
  end
90
89
  end
91
90
  end
@@ -101,8 +101,6 @@ module AdditionalTags
101
101
  tags = attrs.delete :tag_list
102
102
  tags = Array(tags).reject(&:empty?)
103
103
 
104
- # Additionals.debug "tags: #{tags.inspect} - project: #{project&.id} - access: #{user.allowed_to? :create_issue_tags, project}"
105
-
106
104
  if user.allowed_to?(:create_issue_tags, project) ||
107
105
  user.allowed_to?(:edit_issue_tags, project) && Issue.allowed_tags?(tags)
108
106
  attrs[:tag_list] = tags # required fix for journal details
@@ -115,7 +113,8 @@ module AdditionalTags
115
113
 
116
114
  copy_from_without_tags arg, **options
117
115
  issue = arg.is_a?(Issue) ? arg : Issue.visible.find(arg)
118
- self.tag_list = issue.tag_list
116
+ self.tags = issue.tags # required for bulk copy
117
+ self.tag_list = tags.map(&:name) # required for copy
119
118
  self
120
119
  end
121
120
 
@@ -15,7 +15,19 @@ module AdditionalTags
15
15
  module InstanceMethods
16
16
  def column_content_with_tags(column, item)
17
17
  if column.name == :issue_tags || item.is_a?(Issue) && column.name == :tags
18
- additional_tag_links item.instance_variable_get(:@visible_tags), tag_controller: 'issues'
18
+ tags = if item.instance_variable_defined? :@visible_tags
19
+ item.instance_variable_get :@visible_tags
20
+ elsif Setting.display_subprojects_issues?
21
+ # permission check required (expensive)
22
+ return unless User.current.allowed_to? :view_issue_tags, item.project
23
+
24
+ column.value item
25
+ else
26
+ # no permission check required
27
+ column.value item
28
+ end
29
+
30
+ additional_tag_links tags, tag_controller: 'issues'
19
31
  else
20
32
  column_content_without_tags column, item
21
33
  end
@@ -69,7 +69,7 @@ module AdditionalTags
69
69
  when '=', '!'
70
70
  ids_list = klass.tagged_with(values, any: true).ids
71
71
  # special case: filter with deleted tag
72
- return '(1=0)' if ids_list.blank? && values.present? && operator == '='
72
+ return AdditionalsQuery::NO_RESULT_CONDITION if ids_list.blank? && values.present? && operator == '='
73
73
  else
74
74
  allowed_projects = Project.where(Project.allowed_to_condition(User.current, permission))
75
75
  .select(:id)
@@ -90,7 +90,7 @@ module AdditionalTags
90
90
  "(#{klass.table_name}.id #{compare} (#{ids_list.join ','}))"
91
91
  elsif values.present? && operator == '='
92
92
  # special case: filter with deleted tag
93
- '(1=0)'
93
+ AdditionalsQuery::NO_RESULT_CONDITION
94
94
  end
95
95
  else
96
96
  entries = ActsAsTaggableOn::Tagging.where taggable_type: klass.name
@@ -2,6 +2,6 @@
2
2
 
3
3
  module AdditionalTags
4
4
  module PluginVersion
5
- VERSION = '1.0.7' unless defined? VERSION
5
+ VERSION = '3.0.9' unless defined? AdditionalTags::PluginVersion::VERSION
6
6
  end
7
7
  end
@@ -208,7 +208,7 @@ module AdditionalTags
208
208
  if projects_allowed.present?
209
209
  "#{Project.table_name}.id IN (#{projects_allowed.join ','})" unless projects_allowed.empty?
210
210
  else
211
- '1=0'
211
+ AdditionalsQuery::NO_RESULT_CONDITION
212
212
  end
213
213
  end
214
214
  end
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: 1.0.7
4
+ version: 3.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - AlphaNodes
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-30 00:00:00.000000000 Z
11
+ date: 2023-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: acts-as-taggable-on
@@ -38,34 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
41
  description: Redmine plugin for adding tag functionality
70
42
  email:
71
43
  - alex@alphanodes.com
@@ -73,18 +45,8 @@ executables: []
73
45
  extensions: []
74
46
  extra_rdoc_files: []
75
47
  files:
76
- - ".eslintrc.yml"
77
- - ".github/workflows/codeql-analysis.yml"
78
- - ".github/workflows/linters.yml"
79
- - ".github/workflows/tests.yml"
80
- - ".gitignore"
81
- - ".rubocop.yml"
82
- - ".slim-lint.yml"
83
- - ".stylelintrc.json"
84
48
  - LICENSE
85
49
  - README.md
86
- - Rakefile
87
- - additional_tags.gemspec
88
50
  - app/controllers/additional_tags_controller.rb
89
51
  - app/controllers/issue_tags_controller.rb
90
52
  - app/helpers/additional_tags_helper.rb
@@ -142,9 +104,6 @@ files:
142
104
  - config/settings.yml
143
105
  - db/migrate/20201116145429_acts_as_taggable_migration.rb
144
106
  - db/migrate/20201123093214_migrate_existing_tags.rb
145
- - doc/images/additional-tags-framework.png
146
- - doc/images/additional-tags.gif
147
- - doc/images/tag-overview.png
148
107
  - init.rb
149
108
  - lib/additional_tags.rb
150
109
  - lib/additional_tags/hooks/model_hook.rb
@@ -177,7 +136,6 @@ files:
177
136
  - lib/additional_tags/plugin_version.rb
178
137
  - lib/additional_tags/tags.rb
179
138
  - lib/tasks/additional_tags.rake
180
- - package.json
181
139
  homepage: https://github.com/alphanodes/additional_tags
182
140
  licenses:
183
141
  - GPL-2.0
@@ -198,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
156
  - !ruby/object:Gem::Version
199
157
  version: '0'
200
158
  requirements: []
201
- rubygems_version: 3.3.26
159
+ rubygems_version: 3.1.6
202
160
  signing_key:
203
161
  specification_version: 4
204
162
  summary: Redmine plugin for adding tag functionality
data/.eslintrc.yml DELETED
@@ -1,17 +0,0 @@
1
- env:
2
- browser: true
3
- jquery: true
4
- extends: 'eslint:recommended'
5
- rules:
6
- indent:
7
- - error
8
- - 2
9
- linebreak-style:
10
- - error
11
- - unix
12
- quotes:
13
- - error
14
- - single
15
- semi:
16
- - error
17
- - always
@@ -1,70 +0,0 @@
1
- # For most projects, this workflow file will not need changing; you simply need
2
- # to commit it to your repository.
3
- #
4
- # You may wish to alter this file to override the set of languages analyzed,
5
- # or to provide custom queries or build logic.
6
- #
7
- # ******** NOTE ********
8
- # We have attempted to detect the languages in your repository. Please check
9
- # the `language` matrix defined below to confirm you have the correct set of
10
- # supported CodeQL languages.
11
- #
12
- name: "CodeQL"
13
-
14
- on:
15
- push:
16
- branches: [ main ]
17
- pull_request:
18
- # The branches below must be a subset of the branches above
19
- branches: [ main ]
20
- schedule:
21
- - cron: '35 20 * * 2'
22
-
23
- jobs:
24
- analyze:
25
- name: Analyze
26
- runs-on: ubuntu-latest
27
- permissions:
28
- actions: read
29
- contents: read
30
- security-events: write
31
-
32
- strategy:
33
- fail-fast: false
34
- matrix:
35
- language: [ 'javascript', 'ruby' ]
36
- # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37
- # Learn more about CodeQL language support at https://git.io/codeql-language-support
38
-
39
- steps:
40
- - name: Checkout repository
41
- uses: actions/checkout@v3
42
-
43
- # Initializes the CodeQL tools for scanning.
44
- - name: Initialize CodeQL
45
- uses: github/codeql-action/init@v2
46
- with:
47
- languages: ${{ matrix.language }}
48
- # If you wish to specify custom queries, you can do so here or in a config file.
49
- # By default, queries listed here will override any specified in a config file.
50
- # Prefix the list here with "+" to use these queries and those in the config file.
51
- # queries: ./path/to/local/query, your-org/your-repo/queries@main
52
-
53
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
54
- # If this step fails, then you should remove it and run the build manually (see below)
55
- - name: Autobuild
56
- uses: github/codeql-action/autobuild@v2
57
-
58
- # ℹ️ Command-line programs to run using the OS shell.
59
- # 📚 https://git.io/JvXDl
60
-
61
- # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
62
- # and modify them (or add more) to build your code if your project
63
- # uses a compiled language
64
-
65
- #- run: |
66
- # make bootstrap
67
- # make release
68
-
69
- - name: Perform CodeQL Analysis
70
- uses: github/codeql-action/analyze@v2
@@ -1,55 +0,0 @@
1
- name: Run Linters
2
- on:
3
- push:
4
- pull_request:
5
-
6
- jobs:
7
- test:
8
- runs-on: ubuntu-latest
9
-
10
- steps:
11
- - uses: actions/checkout@v3
12
-
13
- - name: Install package dependencies
14
- run: >
15
- sudo apt-get install --yes --quiet pandoc
16
-
17
- - name: Setup Gemfile
18
- run: |
19
- touch .enable_linters
20
- sed -i "3isource 'https://rubygems.org'" Gemfile
21
-
22
- - name: Setup Ruby
23
- uses: ruby/setup-ruby@v1
24
- with:
25
- ruby-version: 3.1
26
-
27
- - name: Run bundle install
28
- run: |
29
- bundle install --jobs 4 --retry 3
30
-
31
- - name: Run RuboCop
32
- run: |
33
- bundle exec rubocop -S
34
-
35
- - name: Run Slim-Lint
36
- run: |
37
- bundle exec slim-lint app/views
38
- if: always()
39
-
40
- - name: Run Brakeman
41
- run: |
42
- bundle exec brakeman -5
43
-
44
- - name: Setup node
45
- uses: actions/setup-node@v2
46
- with:
47
- node-version: '16'
48
-
49
- - run: yarn install
50
-
51
- - name: Run Stylelint
52
- run: node_modules/.bin/stylelint assets/stylesheets/
53
-
54
- - name: Run ESLint
55
- run: node_modules/.bin/eslint assets/javascripts/
@@ -1,137 +0,0 @@
1
- name: Tests
2
- on:
3
- push:
4
- pull_request:
5
-
6
- jobs:
7
- test:
8
- name: ${{ matrix.redmine }} ${{ matrix.db }} ruby-${{ matrix.ruby }}
9
- runs-on: ubuntu-latest
10
-
11
- strategy:
12
- matrix:
13
- ruby: ['2.7', '3.0', '3.1', '3.2']
14
- redmine: ['5.0-stable', 'master']
15
- db: ['postgres', 'mysql']
16
- exclude:
17
- - ruby: '3.2'
18
- redmine: 5.0-stable
19
- fail-fast: false
20
-
21
- services:
22
- postgres:
23
- image: postgres:14
24
- env:
25
- POSTGRES_DB: redmine
26
- POSTGRES_USER: postgres
27
- POSTGRES_PASSWORD: postgres
28
- ports:
29
- - 5432:5432
30
-
31
- options: >-
32
- --health-cmd pg_isready
33
- --health-interval 10s
34
- --health-timeout 5s
35
- --health-retries 5
36
-
37
- mysql:
38
- image: mysql:8.0
39
- env:
40
- MYSQL_ROOT_PASSWORD: 'BestPasswordEver'
41
- ports:
42
- # will assign a random free host port
43
- - 3306/tcp
44
- options: >-
45
- --health-cmd="mysqladmin ping"
46
- --health-interval=10s
47
- --health-timeout=5s
48
- --health-retries=3
49
-
50
- steps:
51
- - name: Verify MySQL connection from host
52
- run: |
53
- mysql --host 127.0.0.1 --port ${{ job.services.mysql.ports[3306] }} -uroot -pBestPasswordEver -e "SHOW DATABASES"
54
- if: matrix.db == 'mysql'
55
-
56
- - name: Checkout Redmine
57
- uses: actions/checkout@v3
58
- with:
59
- repository: redmine/redmine
60
- ref: ${{ matrix.redmine }}
61
- path: redmine
62
-
63
- - name: Checkout additionals
64
- uses: actions/checkout@v3
65
- with:
66
- repository: AlphaNodes/additionals
67
- path: redmine/plugins/additionals
68
-
69
- - name: Checkout additional_tags
70
- uses: actions/checkout@v3
71
- with:
72
- path: redmine/plugins/additional_tags
73
-
74
- - name: Update package archives
75
- run: sudo apt-get update --yes --quiet
76
-
77
- - name: Install package dependencies
78
- run: >
79
- sudo apt-get install --yes --quiet
80
- build-essential
81
- cmake
82
- libicu-dev
83
- libpq-dev
84
- libmysqlclient-dev
85
-
86
- - name: Setup Gemfile
87
- run: |
88
- touch .enable_test
89
-
90
- - name: Setup Ruby
91
- uses: ruby/setup-ruby@v1
92
- with:
93
- ruby-version: ${{ matrix.ruby }}
94
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
95
-
96
- - name: Prepare Redmine source
97
- working-directory: redmine
98
- run: |
99
- cp plugins/additional_tags/test/support/database-${{ matrix.db }}.yml config/database.yml
100
- cp plugins/additional_tags/test/support/configuration.yml config/configuration.yml
101
- cp plugins/additionals/test/support/additional_environment.rb config/additional_environment.rb
102
-
103
- - name: Install Ruby dependencies
104
- working-directory: redmine
105
- run: |
106
- bundle config set --local without 'development'
107
- bundle install --jobs=4 --retry=3
108
-
109
- - name: Generate session store secret
110
- env:
111
- RAILS_ENV: test
112
- MYSQL_PORT: ${{ job.services.mysql.ports[3306] }}
113
- working-directory: redmine
114
- run: |
115
- bundle exec rake generate_secret_token
116
-
117
- - name: Run Redmine DB and migration tasks
118
- env:
119
- RAILS_ENV: test
120
- MYSQL_PORT: ${{ job.services.mysql.ports[3306] }}
121
- working-directory: redmine
122
- run: |
123
- bundle exec rake db:create db:migrate redmine:plugins:migrate
124
-
125
- - name: Run tests
126
- env:
127
- RAILS_ENV: test
128
- MYSQL_PORT: ${{ job.services.mysql.ports[3306] }}
129
- working-directory: redmine
130
- run: bundle exec rake redmine:plugins:test NAME=additional_tags RUBYOPT="-W0"
131
-
132
- - name: Run uninstall test
133
- env:
134
- RAILS_ENV: test
135
- MYSQL_PORT: ${{ job.services.mysql.ports[3306] }}
136
- working-directory: redmine
137
- run: bundle exec rake redmine:plugins:migrate NAME=additional_tags VERSION=0
data/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- .DS_Store
2
- .buildpath
3
- coverage/
4
- tmp/
5
- Gemfile.lock
6
- .project
7
- .settings/
8
- .enable_*
9
- ._*
10
- *.gem
11
- /node_modules
12
- /yarn.lock
13
- rails_best_practices_output.html
data/.rubocop.yml DELETED
@@ -1,138 +0,0 @@
1
- require:
2
- - rubocop-performance
3
- - rubocop-rails
4
- - rubocop-minitest
5
-
6
- AllCops:
7
- TargetRubyVersion: 2.7
8
- TargetRailsVersion: 6.1
9
- NewCops: enable
10
- ActiveSupportExtensionsEnabled: true
11
-
12
- Rails:
13
- Enabled: true
14
-
15
- Minitest/MultipleAssertions:
16
- Max: 15
17
- Enabled: true
18
-
19
- Minitest/AssertPredicate:
20
- Enabled: false
21
-
22
- Metrics/AbcSize:
23
- Enabled: false
24
-
25
- Metrics/BlockLength:
26
- Enabled: false
27
-
28
- Metrics/ParameterLists:
29
- Enabled: true
30
- CountKeywordArgs: false
31
-
32
- Metrics/ClassLength:
33
- Enabled: false
34
-
35
- Metrics/CyclomaticComplexity:
36
- Max: 25
37
-
38
- Layout/LineLength:
39
- Max: 140
40
-
41
- Metrics/MethodLength:
42
- Max: 60
43
-
44
- Metrics/ModuleLength:
45
- Enabled: false
46
-
47
- Metrics/PerceivedComplexity:
48
- Max: 25
49
-
50
- Style/ExpandPathArguments:
51
- Enabled: true
52
- Exclude:
53
- - additional_tags.gemspec
54
- - test/**/*
55
-
56
- Rails/ApplicationJob:
57
- Enabled: false
58
-
59
- Lint/AmbiguousOperatorPrecedence:
60
- Enabled: false
61
-
62
- Rails/ContentTag:
63
- Enabled: true
64
- Exclude:
65
- - app/helpers/additional_tags_issues_helper.rb
66
-
67
- Rails/ApplicationRecord:
68
- Enabled: false
69
-
70
- Rails/CreateTableWithTimestamps:
71
- Enabled: false
72
-
73
- Rails/HelperInstanceVariable:
74
- Enabled: false
75
-
76
- Rails/SkipsModelValidations:
77
- Enabled: false
78
-
79
- Performance/ChainArrayAllocation:
80
- Enabled: true
81
-
82
- Style/AutoResourceCleanup:
83
- Enabled: true
84
-
85
- Style/FrozenStringLiteralComment:
86
- Enabled: true
87
- Exclude:
88
- - '/**/*.rsb'
89
-
90
- Style/Documentation:
91
- Enabled: false
92
-
93
- Style/OptionHash:
94
- Enabled: true
95
- SuspiciousParamNames:
96
- - options
97
- - api_options
98
- - opts
99
- - args
100
- - params
101
- - parameters
102
- - settings
103
-
104
- # postgresql and mysql are supported
105
- # autodetect does not work without database configuration
106
- Rails/BulkChangeTable:
107
- Enabled: true
108
- Database: postgresql
109
-
110
- Style/ReturnNil:
111
- Enabled: true
112
-
113
- Style/UnlessLogicalOperators:
114
- Enabled: true
115
-
116
- Style/MethodCallWithArgsParentheses:
117
- Enabled: true
118
- AllowParenthesesInMultilineCall: true
119
- AllowParenthesesInChaining: true
120
- EnforcedStyle: omit_parentheses
121
-
122
- Naming/VariableNumber:
123
- Enabled: true
124
- Exclude:
125
- - 'test/**/*'
126
-
127
- Layout/LineContinuationLeadingSpace:
128
- Enabled: false
129
-
130
- # see https://github.com/rubocop/rubocop-rails/issues/578
131
- # redmine does not use load_defaults: https://rails.rubystyle.guide/#config-defaults
132
- Rails/RedundantPresenceValidationOnBelongsTo:
133
- Enabled: false
134
-
135
- # see https://github.com/rubocop/rubocop-rails/issues/825
136
- # should be removed and corrected in code, if this bug is fixed
137
- Rails/ActionControllerFlashBeforeRender:
138
- Enabled: false
data/.slim-lint.yml DELETED
@@ -1,27 +0,0 @@
1
- linters:
2
- LineLength:
3
- max: 140
4
- RuboCop:
5
- ignored_cops:
6
- - Layout/ArgumentAlignment
7
- - Layout/ArrayAlignment
8
- - Layout/BlockEndNewline
9
- - Layout/EmptyLineAfterGuardClause
10
- - Layout/HashAlignment
11
- - Layout/IndentationWidth
12
- - Layout/MultilineArrayBraceLayout
13
- - Layout/MultilineAssignmentLayout
14
- - Layout/MultilineBlockLayout
15
- - Layout/MultilineHashBraceLayout
16
- - Layout/MultilineMethodCallBraceLayout
17
- - Layout/MultilineMethodCallIndentation
18
- - Layout/MultilineMethodDefinitionBraceLayout
19
- - Layout/MultilineOperationIndentation
20
- - Layout/SpaceBeforeBrackets
21
- - Layout/TrailingEmptyLines
22
- - Lint/Void
23
- - Rails/OutputSafety
24
- - Style/FrozenStringLiteralComment
25
- - Style/IfUnlessModifier
26
- - Style/Next
27
- - Style/WhileUntilModifier
data/.stylelintrc.json DELETED
@@ -1,20 +0,0 @@
1
- {
2
- "extends": "stylelint-config-standard",
3
- "rules": {
4
- "string-quotes": "single",
5
- "selector-class-pattern": "^([a-z][a-z0-9]*)(-[a-z0-9]+)*$|block_column",
6
- "font-family-no-missing-generic-family-keyword": [
7
- true,
8
- {
9
- "ignoreFontFamilies": [
10
- "Font Awesome 5 Free",
11
- "Font Awesome 5 Brands",
12
- "Apple Color Emoji",
13
- "Segoe UI Emoji",
14
- "Segoe UI Symbol",
15
- "Noto Color Emoji"
16
- ]
17
- }
18
- ]
19
- }
20
- }
data/Rakefile DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rake/testtask'
5
-
6
- Rake::TestTask.new do |t|
7
- t.libs << 'test'
8
- files = FileList['test/**/*test.rb']
9
- t.test_files = files
10
- t.verbose = true
11
- end
12
-
13
- task default: :test
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- lib = File.expand_path '../lib', __FILE__
4
- $LOAD_PATH.unshift lib unless $LOAD_PATH.include? lib
5
- require 'additional_tags/plugin_version'
6
-
7
- Gem::Specification.new do |spec|
8
- spec.name = 'additional_tags'
9
- spec.version = AdditionalTags::PluginVersion::VERSION
10
- spec.authors = ['AlphaNodes']
11
- spec.email = ['alex@alphanodes.com']
12
- spec.metadata = { 'rubygems_mfa_required' => 'true' }
13
-
14
- spec.summary = 'Redmine plugin for adding tag functionality'
15
- spec.description = 'Redmine plugin for adding tag functionality'
16
- spec.homepage = 'https://github.com/alphanodes/additional_tags'
17
- spec.license = 'GPL-2.0'
18
-
19
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
- f.match %r{^((test|spec|features)/|Gemfile)}
21
- end
22
- spec.bindir = 'exe'
23
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename f }
24
- spec.require_paths = ['lib']
25
- spec.required_ruby_version = '>= 2.7'
26
-
27
- spec.add_runtime_dependency 'acts-as-taggable-on', '~> 9.0'
28
- spec.add_runtime_dependency 'redmine_plugin_kit'
29
-
30
- spec.add_development_dependency 'bundler'
31
- spec.add_development_dependency 'rake'
32
- end
Binary file
Binary file
data/package.json DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "dependencies": {},
3
- "devDependencies": {
4
- "eslint": "^8.0.0",
5
- "stylelint": "^14.0.0",
6
- "stylelint-config-standard": "^29.0.0"
7
- }
8
- }