diff -ur redmine-3.4.4.orig/app/controllers/previews_controller.rb redmine-3.4.4/app/controllers/previews_controller.rb --- redmine-3.4.4.orig/app/controllers/previews_controller.rb 2018-02-05 16:49:08.167636001 +0900 +++ redmine-3.4.4/app/controllers/previews_controller.rb 2018-02-06 17:25:39.826994006 +0900 @@ -16,10 +16,41 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class PreviewsController < ApplicationController - before_action :find_project, :find_attachments + before_action :find_project, :find_attachments, :except => [:project] + + def project + @project = nil + @project = Project.visible.find_by_id(params[:id]) unless params[:id].blank? + @fulltexts = {} + if @project + @description = (params[:project] ? params[:project][:description] : nil) + if @description && @description.gsub(/(\r?\n|\n\r?)/, "\n") == @proj.description.to_s.gsub(/(\r?\n|\n\r?)/, "\n") + @description = nil + end + + @project.custom_values.each do |value| + cf = value.custom_field + next unless cf.field_format == "text" && cf.text_formatting == "full" + text = params[:project] && params[:project][:custom_field_values] && params[:project][:custom_field_values][cf.id.to_s.to_sym] + next if text && text.gsub(/(\r?\n|\n\r?)/, "\n") == value.to_s.gsub(/(\r?\n|\n\r?)/, "\n") + @fulltexts[cf.name] = text + end + + else + @description = (params[:project] ? params[:project][:description] : nil) + + CustomField.where(:type=>"ProjectCustomField", :field_format=>"text").each do |cf| + next unless cf.text_formatting == "full" + text = params[:project] && params[:project][:custom_field_values] && params[:project][:custom_field_values][cf.id.to_s.to_sym] + @fulltexts[cf.name] = text if text + end + end + render :layout => false + end def issue @issue = Issue.visible.find_by_id(params[:id]) unless params[:id].blank? + @fulltexts = {} if @issue @description = params[:issue] && params[:issue][:description] if @description && @description.gsub(/(\r?\n|\n\r?)/, "\n") == @issue.description.to_s.gsub(/(\r?\n|\n\r?)/, "\n") @@ -27,8 +58,22 @@ end @notes = params[:journal] ? params[:journal][:notes] : nil @notes ||= params[:issue] ? params[:issue][:notes] : nil + + @issue.editable_custom_field_values.each do |value| + cf = value.custom_field + next unless cf.field_format == "text" && cf.text_formatting == "full" + text = params[:issue] && params[:issue][:custom_field_values] && params[:issue][:custom_field_values][cf.id.to_s.to_sym] + next if text && text.gsub(/(\r?\n|\n\r?)/, "\n") == value.to_s.gsub(/(\r?\n|\n\r?)/, "\n") + @fulltexts[cf.name] = text + end else @description = (params[:issue] ? params[:issue][:description] : nil) + + CustomField.where(:type=>"IssueCustomField", :field_format=>"text").each do |cf| + next unless cf.text_formatting == "full" + text = params[:issue] && params[:issue][:custom_field_values] && params[:issue][:custom_field_values][cf.id.to_s.to_sym] + @fulltexts[cf.name] = text if text + end end render :layout => false end diff -ur redmine-3.4.4.orig/app/helpers/custom_fields_helper.rb redmine-3.4.4/app/helpers/custom_fields_helper.rb --- redmine-3.4.4.orig/app/helpers/custom_fields_helper.rb 2018-01-09 04:38:16.000000000 +0900 +++ redmine-3.4.4/app/helpers/custom_fields_helper.rb 2018-02-07 10:55:48.002986236 +0900 @@ -79,11 +79,16 @@ # Return custom field html tag corresponding to its format def custom_field_tag(prefix, custom_value) - custom_value.custom_field.format.edit_tag self, - custom_field_tag_id(prefix, custom_value.custom_field), - custom_field_tag_name(prefix, custom_value.custom_field), + cf = custom_value.custom_field + tag = cf.format.edit_tag self, + custom_field_tag_id(prefix, cf), + custom_field_tag_name(prefix, cf), custom_value, - :class => "#{custom_value.custom_field.field_format}_cf" + :class => "#{cf.field_format}_cf" + if cf.field_format == "text" && cf.text_formatting == "full" + tag += wikitoolbar_for custom_field_tag_id(prefix, cf) + end + tag end # Return custom field name tag diff -ur redmine-3.4.4.orig/app/views/previews/issue.html.erb redmine-3.4.4/app/views/previews/issue.html.erb --- redmine-3.4.4.orig/app/views/previews/issue.html.erb 2018-02-05 16:45:54.690948920 +0900 +++ redmine-3.4.4/app/views/previews/issue.html.erb 2018-02-05 16:48:29.432277998 +0900 @@ -9,3 +9,9 @@ <%= textilizable @description, :attachments => @attachments, :object => @issue %> <% end %> + +<% @fulltexts.each do |name, text| %> +
<%= name %> + <%= textilizable text, :attachments => @attachments, :object => @issue %> +
+<% end %> diff -ur redmine-3.4.4.orig/app/views/previews/project.html.erb redmine-3.4.4/app/views/previews/project.html.erb --- redmine-3.4.4.orig/app/views/previews/project.html.erb 2018-02-06 17:36:22.461695994 +0900 +++ redmine-3.4.4/app/views/previews/project.html.erb 2018-02-06 15:18:41.023496004 +0900 @@ -0,0 +1,11 @@ +<% if @description %> +
<%= l(:field_description) %> + <%= textilizable @description, :object => @project %> +
+<% end %> + +<% @fulltexts.each do |name, text| %> +
<%= name %> + <%= textilizable text, :object => @project %> +
+<% end %> diff -ur redmine-3.4.4.orig/app/views/projects/_edit.html.erb redmine-3.4.4/app/views/projects/_edit.html.erb --- redmine-3.4.4.orig/app/views/projects/_edit.html.erb 2018-01-09 04:38:17.000000000 +0900 +++ redmine-3.4.4/app/views/projects/_edit.html.erb 2018-02-06 17:13:00.155348000 +0900 @@ -1,4 +1,6 @@ <%= labelled_form_for @project, :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> +<%= preview_link preview_edit_project_path(:id => @project), "edit_project_#{@project.id}" %> <% end %> +
diff -ur redmine-3.4.4.orig/app/views/projects/new.html.erb redmine-3.4.4/app/views/projects/new.html.erb --- redmine-3.4.4.orig/app/views/projects/new.html.erb 2018-01-09 04:38:17.000000000 +0900 +++ redmine-3.4.4/app/views/projects/new.html.erb 2018-02-07 11:04:02.330986236 +0900 @@ -4,4 +4,7 @@ <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_create) %> <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> +<%= preview_link preview_new_project_path, 'new_project' %> <% end %> +
+ diff -ur redmine-3.4.4.orig/config/routes.rb redmine-3.4.4/config/routes.rb --- redmine-3.4.4.orig/config/routes.rb 2018-01-09 04:38:18.000000000 +0900 +++ redmine-3.4.4/config/routes.rb 2018-02-06 15:08:40.059163999 +0900 @@ -26,6 +26,9 @@ get 'account/activation_email', :to => 'account#activation_email', :as => 'activation_email' match '/news/preview', :controller => 'previews', :action => 'news', :as => 'preview_news', :via => [:get, :post, :put, :patch] + match '/projects/preview/new', :to => 'previews#project', :as => 'preview_new_project', :via => [:get, :post, :put, :patch] + match '/projects/preview/edit/:id', :to => 'previews#project', :as => 'preview_edit_project', :via => [:get, :post, :put, :patch] + match '/projects/preview', :to => 'previews#project', :as => 'preview_project', :via => [:get, :post, :put, :patch] match '/issues/preview/new/:project_id', :to => 'previews#issue', :as => 'preview_new_issue', :via => [:get, :post, :put, :patch] match '/issues/preview/edit/:id', :to => 'previews#issue', :as => 'preview_edit_issue', :via => [:get, :post, :put, :patch] match '/issues/preview', :to => 'previews#issue', :as => 'preview_issue', :via => [:get, :post, :put, :patch]