Export a version as changelog text (#36679).

Patch by Mizuki ISHIKAWA.


git-svn-id: https://svn.redmine.org/redmine/trunk@22179 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2023-04-13 04:20:25 +00:00
parent cba427ec25
commit 2d7d01e633
5 changed files with 59 additions and 0 deletions

View File

@@ -27,6 +27,7 @@ class VersionsController < ApplicationController
accept_api_auth :index, :show, :create, :update, :destroy
include VersionsHelper
helper :custom_fields
helper :projects
@@ -73,6 +74,9 @@ class VersionsController < ApplicationController
to_a
end
format.api
format.text do
send_data(version_to_text(@version), type: 'text/plain', filename: "#{@version.name}.txt")
end
end
end

View File

@@ -18,6 +18,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module VersionsHelper
include Redmine::Export::Text::VersionsTextHelper
def version_anchor(version)
if @project == version.project

View File

@@ -56,6 +56,10 @@
<% end %>
</div>
<% other_formats_links do |f| %>
<%= f.link_to_with_query_parameters 'TXT' %>
<% end %>
<%= call_hook :view_versions_show_bottom, :version => @version %>
<% html_title @version.name %>

View File

@@ -0,0 +1,37 @@
# frozen_string_literal: true
# Redmine - project management software
# Copyright (C) 2006-2023 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module Redmine
module Export
module Text
module VersionsTextHelper
def version_to_text(version)
[
"# #{version.name}",
format_date(version.effective_date),
version.description,
version.fixed_issues.visible.map do |issue|
"* #{issue.tracker.name} ##{issue.id}: #{issue.subject}\n"
end.join
].compact.join("\n\n")
end
end
end
end
end

View File

@@ -20,6 +20,7 @@
require_relative '../test_helper'
class VersionsControllerTest < Redmine::ControllerTest
include Redmine::I18n
fixtures :projects, :enabled_modules,
:trackers, :projects_trackers,
:versions, :issue_statuses, :issue_categories, :enumerations,
@@ -220,6 +221,18 @@ class VersionsControllerTest < Redmine::ControllerTest
assert_select 'a.icon.icon-add', :text => 'New issue'
end
def test_show_with_text_format
version = Version.find(2)
get :show, params: {id: version.id, format: :text}
assert_response :success
assert_equal 'text/plain', response.media_type
result = response.body.split("\n\n")
assert_equal "# #{version.name}", result[0]
assert_equal format_date(version.effective_date), result[1]
assert_equal version.description, result[2]
end
def test_new
@request.session[:user_id] = 2
get :new, :params => {:project_id => '1'}