From 16f303094ddbbff44fa989891e1ee631f05402ae Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Thu, 2 Mar 2023 04:36:43 +0000 Subject: Merged r22122 from trunk to 5.0-stable (#38297). git-svn-id: https://svn.redmine.org/redmine/branches/5.0-stable@22123 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/issues_controller.rb | 12 ++++++++++-- app/models/issue.rb | 4 ++++ app/views/issues/_edit.html.erb | 3 ++- 3 files changed, 16 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index c3f0bf7e9..2dea54bdc 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -190,8 +190,16 @@ class IssuesController < ApplicationController def update return unless update_issue_from_params - @issue.save_attachments(params[:attachments] || - (params[:issue] && params[:issue][:uploads])) + attachments = params[:attachments] || params.dig(:issue, :uploads) + if @issue.attachments_addable? + @issue.save_attachments(attachments) + else + attachments = attachments.to_unsafe_hash if attachments.respond_to?(:to_unsafe_hash) + if [Hash, Array].any? { |klass| attachments.is_a?(klass) } && attachments.any? + flash[:warning] = l(:warning_attachments_not_saved, attachments.size) + end + end + saved = false begin saved = save_issue_with_child_records diff --git a/app/models/issue.rb b/app/models/issue.rb index a7d15a450..7ae800751 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -195,6 +195,10 @@ class Issue < ActiveRecord::Base ) end + def attachments_addable?(user=User.current) + attributes_editable?(user) || notes_addable?(user) + end + # Overrides Redmine::Acts::Attachable::InstanceMethods#attachments_editable? def attachments_editable?(user=User.current) attributes_editable?(user) diff --git a/app/views/issues/_edit.html.erb b/app/views/issues/_edit.html.erb index 226b6f988..d816ff6fc 100644 --- a/app/views/issues/_edit.html.erb +++ b/app/views/issues/_edit.html.erb @@ -42,7 +42,8 @@ <%= call_hook(:view_issues_edit_notes_bottom, { :issue => @issue, :notes => @notes, :form => f }) %> - + <% end %> + <% if @issue.attachments_addable? %>
<%= l(:label_attachment_plural) %> <% if @issue.attachments.any? && @issue.safe_attribute?('deleted_attachment_ids') %>
<%= link_to l(:label_edit_attachments), '#', :onclick => "$('#existing-attachments').toggle(); return false;" %>
-- cgit v1.2.3