Sha256: ea7ed9e872d1699dfd55961fd4ed9877daef30840fcb1a7008c4da5c09aba099

Contents?: true

Size: 1.87 KB

Versions: 6

Compression:

Stored size: 1.87 KB

Contents

# frozen_string_literal: true

class IssueTagsController < ApplicationController
  before_action :find_issues, only: %i[edit update]

  def edit
    return unless AdditionalTags.setting?(:active_issue_tags) &&
                  User.current.allowed_to?(:edit_issue_tags, @projects.first)

    @issue_ids = params[:ids]
    @is_bulk_editing = @issue_ids.size > 1
    @issue_tags = if @is_bulk_editing
                    issues = @issues.map(&:tag_list)
                    issues.flatten!
                    issues.uniq
                  else
                    @issues.first.tag_list
                  end

    @issue_tags.sort!
    @most_used_tags = Issue.available_tags.most_used 10
    @append = params[:append] == 'true'
  end

  def update
    if AdditionalTags.setting?(:active_issue_tags) &&
       User.current.allowed_to?(:edit_issue_tags, @projects.first)
      tags = params[:issue] && params[:issue][:tag_list] ? params[:issue][:tag_list].reject(&:empty?) : []

      unless User.current.allowed_to?(:create_issue_tags, @projects.first) || Issue.allowed_tags?(tags)
        flash[:error] = t :notice_failed_to_add_tags
        return
      end

      Issue.transaction do
        @issues.each do |issue|
          issue.init_journal User.current
          # add tags added in placeholder for a single/multiple issue or overwrite tags for single issue
          params[:append] == 'true' ? issue.tag_list << tags : issue.tag_list = tags

          issue.tags_to_journal issue.tag_list_was&.to_s, issue.tag_list.to_s
          issue.save!
        end
      end
      flash[:notice] = t :notice_tags_added
    else
      flash[:error] = t :notice_failed_to_add_tags
    end
  rescue StandardError => e
    Rails.logger.warn "Failed to add tags: #{e.inspect}"
    flash[:error] = t :notice_failed_to_add_tags
  ensure
    redirect_to_referer_or { render text: 'Tags updated.', layout: true }
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
additional_tags-3.4.0 app/controllers/issue_tags_controller.rb
additional_tags-3.3.2 app/controllers/issue_tags_controller.rb
additional_tags-3.3.1 app/controllers/issue_tags_controller.rb
additional_tags-3.2.0 app/controllers/issue_tags_controller.rb
additional_tags-3.1.0 app/controllers/issue_tags_controller.rb
additional_tags-3.0.9 app/controllers/issue_tags_controller.rb