summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2023-03-02 04:36:43 +0000
committerGo MAEDA <maeda@farend.jp>2023-03-02 04:36:43 +0000
commit16f303094ddbbff44fa989891e1ee631f05402ae (patch)
tree07ac6592677d8819152970842e260e347a3cabf6 /app
parentac3826ba21d91033e22ee91313b0d3f7b8da50cf (diff)
downloadredmine-16f303094ddbbff44fa989891e1ee631f05402ae.tar.gz
redmine-16f303094ddbbff44fa989891e1ee631f05402ae.zip
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
Diffstat (limited to 'app')
-rw-r--r--app/controllers/issues_controller.rb12
-rw-r--r--app/models/issue.rb4
-rw-r--r--app/views/issues/_edit.html.erb3
3 files changed, 16 insertions, 3 deletions
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 }) %>
</fieldset>
-
+ <% end %>
+ <% if @issue.attachments_addable? %>
<fieldset id="add_attachments"><legend><%= l(:label_attachment_plural) %></legend>
<% if @issue.attachments.any? && @issue.safe_attribute?('deleted_attachment_ids') %>
<div class="contextual"><%= link_to l(:label_edit_attachments), '#', :onclick => "$('#existing-attachments').toggle(); return false;" %></div>