From 4591090e8cd10362344510d65a155201685c9909 Mon Sep 17 00:00:00 2001 From: Anne Smolders Date: Thu, 4 Jun 2026 15:40:49 +0200 Subject: [PATCH 1/2] Enable tags per project. --- app/controllers/additional_tags_controller.rb | 8 ++++++++ app/helpers/additional_tags_issues_helper.rb | 1 + app/views/projects/settings/_additional_tags.html.erb | 4 ++++ config/locales/en.yml | 1 + ...60604000000_add_additional_tags_enabled_to_projects.rb | 6 ++++++ init.rb | 6 ++++++ 6 files changed, 26 insertions(+) create mode 100644 app/views/projects/settings/_additional_tags.html.erb create mode 100644 db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb diff --git a/app/controllers/additional_tags_controller.rb b/app/controllers/additional_tags_controller.rb index f01506d..00506be 100755 --- a/app/controllers/additional_tags_controller.rb +++ b/app/controllers/additional_tags_controller.rb @@ -5,6 +5,8 @@ class AdditionalTagsController < ApplicationController before_action :find_tag, only: %i[edit update] before_action :bulk_find_tags, only: %i[context_menu merge destroy] before_action :set_tag_list_path + before_action :find_project_by_project_id, if: -> { params[:project_id] } + before_action :authorize, if: -> { @project.present? } helper :additional_tags_issues include AdditionalTagsHelper @@ -13,6 +15,7 @@ class AdditionalTagsController < ApplicationController # used by api calls def index + return render_403 unless allow_tags? raise 'type is not provided' if params[:type].blank? type_info = manageable_tag_columns.detect { |m| m.first.to_s == params[:type] } @@ -101,4 +104,9 @@ def find_tag rescue ActiveRecord::RecordNotFound render_404 end + + def allow_tags? + @project && @project.module_enabled?(:additional_tags) + end + end diff --git a/app/helpers/additional_tags_issues_helper.rb b/app/helpers/additional_tags_issues_helper.rb index 983184d..6deab41 100644 --- a/app/helpers/additional_tags_issues_helper.rb +++ b/app/helpers/additional_tags_issues_helper.rb @@ -4,6 +4,7 @@ module AdditionalTagsIssuesHelper # Hacked render_api_custom_values to add plugin values to issue api def render_api_custom_values(custom_values, api) rc = super + return '' unless project.module_enabled?(:additional_tags) if @issue.present? && (defined?(controller_name) && controller_name == 'issues' && action_name == 'show' || !defined?(controller_name)) && diff --git a/app/views/projects/settings/_additional_tags.html.erb b/app/views/projects/settings/_additional_tags.html.erb new file mode 100644 index 0000000..9478f98 --- /dev/null +++ b/app/views/projects/settings/_additional_tags.html.erb @@ -0,0 +1,4 @@ +

+ <%= check_box_tag 'settings[additional_tags_enabled]', 1, @project.additional_tags_enabled? %> + <%= label_tag 'settings[additional_tags_enabled]', l(:label_additional_tags_enabled) %> +

\ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index a81d7a5..d3fe440 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -43,3 +43,4 @@ en: tags_sidebar_simple_cloud: "Simple cloud" tags_sort_by_count: "Count" tags_sort_by_name: "Name" + label_additional_tags_enabled: "Enable Additional Tags" diff --git a/db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb b/db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb new file mode 100644 index 0000000..180412e --- /dev/null +++ b/db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb @@ -0,0 +1,6 @@ +# db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb +class AddAdditionalTagsEnabledToProjects < ActiveRecord::Migration[6.0] + def change + add_column :projects, :additional_tags_enabled, :boolean, default: true + end +end \ No newline at end of file diff --git a/init.rb b/init.rb index 2aa8999..faf745a 100644 --- a/init.rb +++ b/init.rb @@ -20,6 +20,12 @@ permission :view_issue_tags, {}, read: true end + project_module :additional_tags do + permission :view_project_tags, { tags: [:index, :show] } + permission :manage_project_tags, { tags: [:new, :create, :edit, :destroy] } + end + + project_module :wiki do permission :add_wiki_tags, wiki: %i[update_tags] end From 7bd20b19287b9fca6624af425817e6d3df9649c0 Mon Sep 17 00:00:00 2001 From: Anne Smolders Date: Fri, 5 Jun 2026 12:00:58 +0200 Subject: [PATCH 2/2] Fix linting errors --- app/controllers/additional_tags_controller.rb | 9 ++++----- app/helpers/additional_tags_issues_helper.rb | 4 ++-- app/views/issues/_tags.html.slim | 2 +- ...4000000_add_additional_tags_enabled_to_projects.rb | 11 +++++------ init.rb | 5 ++--- 5 files changed, 14 insertions(+), 17 deletions(-) diff --git a/app/controllers/additional_tags_controller.rb b/app/controllers/additional_tags_controller.rb index 00506be..3db8704 100755 --- a/app/controllers/additional_tags_controller.rb +++ b/app/controllers/additional_tags_controller.rb @@ -15,7 +15,7 @@ class AdditionalTagsController < ApplicationController # used by api calls def index - return render_403 unless allow_tags? + raise 'tags are not enabled for project' unless allow_tags? raise 'type is not provided' if params[:type].blank? type_info = manageable_tag_columns.detect { |m| m.first.to_s == params[:type] } @@ -104,9 +104,8 @@ def find_tag rescue ActiveRecord::RecordNotFound render_404 end - + def allow_tags? - @project && @project.module_enabled?(:additional_tags) + @project.nil? || @project.module_enabled?(:additional_tags) end - -end +end \ No newline at end of file diff --git a/app/helpers/additional_tags_issues_helper.rb b/app/helpers/additional_tags_issues_helper.rb index 6deab41..4814127 100644 --- a/app/helpers/additional_tags_issues_helper.rb +++ b/app/helpers/additional_tags_issues_helper.rb @@ -4,11 +4,11 @@ module AdditionalTagsIssuesHelper # Hacked render_api_custom_values to add plugin values to issue api def render_api_custom_values(custom_values, api) rc = super - return '' unless project.module_enabled?(:additional_tags) if @issue.present? && (defined?(controller_name) && controller_name == 'issues' && action_name == 'show' || !defined?(controller_name)) && - AdditionalTags.setting?(:active_issue_tags) && User.current.allowed_to?(:view_issue_tags, @project) + AdditionalTags.setting?(:active_issue_tags) && User.current.allowed_to?(:view_issue_tags, @project) && + project.module_enabled?(:additional_tags) api.array :tags do # support tags, which are not saved to database diff --git a/app/views/issues/_tags.html.slim b/app/views/issues/_tags.html.slim index b928264..004b757 100644 --- a/app/views/issues/_tags.html.slim +++ b/app/views/issues/_tags.html.slim @@ -1,4 +1,4 @@ -- if AdditionalTags.setting?(:active_issue_tags) && User.current.allowed_to?(:view_issue_tags, issue.project) +- if AdditionalTags.setting?(:active_issue_tags) && User.current.allowed_to?(:view_issue_tags, issue.project) && @project && project.module_enabled?(:additional_tags) = render 'additional_tags/tag_list', entry: issue, show_always: true, diff --git a/db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb b/db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb index 180412e..047eae0 100644 --- a/db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb +++ b/db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb @@ -1,6 +1,5 @@ -# db/migrate/20260604000000_add_additional_tags_enabled_to_projects.rb -class AddAdditionalTagsEnabledToProjects < ActiveRecord::Migration[6.0] - def change - add_column :projects, :additional_tags_enabled, :boolean, default: true - end -end \ No newline at end of file +class AddAdditionalTagsEnabledToProjects < ActiveRecord::Migration[6.0] + def change + add_column :projects, :additional_tags_enabled, :boolean, default: true, null: false + end +end diff --git a/init.rb b/init.rb index faf745a..806cc0c 100644 --- a/init.rb +++ b/init.rb @@ -21,11 +21,10 @@ end project_module :additional_tags do - permission :view_project_tags, { tags: [:index, :show] } - permission :manage_project_tags, { tags: [:new, :create, :edit, :destroy] } + permission :view_project_tags, { tags: %i[index, show] } + permission :manage_project_tags, { tags: %i[new, create, edit, destroy] } end - project_module :wiki do permission :add_wiki_tags, wiki: %i[update_tags] end