From bea800d9b0069b156269b2af79693c47d34f326e Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Sat, 7 Dec 2019 11:32:30 +0900 Subject: [PATCH 01/14] Open pull request to fix this issue. From 61e889f5f178d5d175ef15915b30712deabb0aaa Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Sat, 7 Dec 2019 11:32:30 +0900 Subject: [PATCH 02/14] Pull request to prevent the project setting tab's conflict. From e0fc468b42bf058f95954bd30b82e199c18675ac Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Sat, 7 Dec 2019 21:03:00 +0900 Subject: [PATCH 03/14] Bugfix: Tooltip for template body preview is hidden. --- assets/stylesheets/issue_templates.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/assets/stylesheets/issue_templates.css b/assets/stylesheets/issue_templates.css index 478395c0..090ef8c8 100644 --- a/assets/stylesheets/issue_templates.css +++ b/assets/stylesheets/issue_templates.css @@ -194,6 +194,8 @@ a.template_tooltip { table.list.template_list { width: 480px; margin: 8px 0; + border: 2px solid #e4e4e4; + overflow: overlay; } td.template_title { From b608f43c889311b3fd51d9025b8a2f54feef401b Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Sun, 8 Dec 2019 22:28:27 +0900 Subject: [PATCH 04/14] Add 'menu_items' for project menu. --- app/controllers/issue_templates_controller.rb | 4 ++++ app/controllers/issue_templates_settings_controller.rb | 4 ++++ app/controllers/note_templates_controller.rb | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/app/controllers/issue_templates_controller.rb b/app/controllers/issue_templates_controller.rb index a9f3792e..bdc04532 100644 --- a/app/controllers/issue_templates_controller.rb +++ b/app/controllers/issue_templates_controller.rb @@ -119,6 +119,10 @@ def list_templates end end + def menu_items + { issue_templates: { default: :issue_templates, actions: {} } } + end + # preview def preview issue_template = params[:issue_template] diff --git a/app/controllers/issue_templates_settings_controller.rb b/app/controllers/issue_templates_settings_controller.rb index 03dbff96..4a19b476 100644 --- a/app/controllers/issue_templates_settings_controller.rb +++ b/app/controllers/issue_templates_settings_controller.rb @@ -16,6 +16,10 @@ def preview render partial: 'common/preview' end + def menu_items + { issue_templates_settings: { default: :issue_templates, actions: {} } } + end + private def find_user diff --git a/app/controllers/note_templates_controller.rb b/app/controllers/note_templates_controller.rb index 39a4605b..036a8b5c 100644 --- a/app/controllers/note_templates_controller.rb +++ b/app/controllers/note_templates_controller.rb @@ -90,6 +90,10 @@ def destroy redirect_to action: 'index', project_id: @project end + def menu_items + { note_templates: { default: :issue_templates, actions: {} } } + end + private def find_object From 81a9329300abc0f00eb35ea5933c959e634f5d61 Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Sun, 8 Dec 2019 22:29:59 +0900 Subject: [PATCH 05/14] Add translation. --- config/locales/en.yml | 2 ++ config/locales/ja.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index 39830162..eb4fb9ed 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -72,3 +72,5 @@ en: roles: to these roles only open: to any users please_select_at_least_one_role: "Please select at least one role." + issue_templates_settings: Issue Templates Setting + issue_templates_optional_settings: Templates Optional Settings diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 92cd8626..aa3d2e88 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -73,3 +73,5 @@ ja: roles: 次のロールのみ open: すべてのユーザー please_select_at_least_one_role: 1つ以上のロールを指定してください。 + issue_templates_settings: チケットテンプレート設定 + issue_templates_optional_settings: テンプレートオプション設定 From e608a64ac1265dd34589d8912765e86da5c8881c Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Sun, 8 Dec 2019 22:32:58 +0900 Subject: [PATCH 06/14] Add index action to IssueTemplatesSettings. Change redirect from project setting tab to IssueTemplatesSettings#index. --- .../issue_templates_settings_controller.rb | 8 +++-- .../{_show.html.erb => index.html.erb} | 29 +++---------------- config/routes.rb | 4 ++- init.rb | 2 +- ...ssue_templates_settings_controller_test.rb | 4 +-- 5 files changed, 16 insertions(+), 31 deletions(-) rename app/views/issue_templates_settings/{_show.html.erb => index.html.erb} (67%) diff --git a/app/controllers/issue_templates_settings_controller.rb b/app/controllers/issue_templates_settings_controller.rb index 4a19b476..e04cf3ec 100644 --- a/app/controllers/issue_templates_settings_controller.rb +++ b/app/controllers/issue_templates_settings_controller.rb @@ -1,14 +1,18 @@ # noinspection RubocopInspection class IssueTemplatesSettingsController < ApplicationController before_action :find_project, :find_user - before_action :authorize, except: %i[show_help preview] + + def index + @issue_templates_setting = IssueTemplateSetting.find_or_create(@project.id) + end def edit + @issue_templates_setting = IssueTemplateSetting.find(@project.id) return if params[:settings].blank? update_template_setting flash[:notice] = l(:notice_successful_update) - redirect_to controller: 'projects', action: 'settings', id: @project, tab: 'issue_templates' + redirect_to action: 'index', project_id: @project end def preview diff --git a/app/views/issue_templates_settings/_show.html.erb b/app/views/issue_templates_settings/index.html.erb similarity index 67% rename from app/views/issue_templates_settings/_show.html.erb rename to app/views/issue_templates_settings/index.html.erb index 819dcb3a..25007f64 100644 --- a/app/views/issue_templates_settings/_show.html.erb +++ b/app/views/issue_templates_settings/index.html.erb @@ -1,36 +1,14 @@
<%= render partial: "common/nodata", locals: { trackers: @project.trackers } %> -

<%= l(:link_to_index_edit_template) %>

-
- - -
+

<%= l(:issue_templates_settings, default: 'Issue Templates Setting') %>

-

Optional settings

+

<%= l(:issue_templates_optional_settings, default: 'Templates Optional Settings') %>

<%= l(:about_help_message) %>

<%= labelled_form_for :settings, @issue_templates_setting, url: { controller: 'issue_templates_settings', - action: 'edit', project_id: @project, tab: 'issue_templates', + action: 'edit', project_id: @project, setting_id: @issue_templates_setting.id }, html: { id: 'issue_templates_settings' } do |f| %> <%= error_messages_for 'issue_templates_setting' %> @@ -82,3 +60,4 @@
+
<%= render partial: "common/template_links" %>
diff --git a/config/routes.rb b/config/routes.rb index dea80366..3b05f86f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -19,10 +19,12 @@ get 'list_templates', on: :collection end - resources :issue_templates_settings, only: [], concerns: [:previewable] do + resources :issue_templates_settings, only: [:edit], concerns: [:previewable] do patch 'edit', on: :collection end + get 'issue_templates_settings', to: 'issue_templates_settings#index' + resources :note_templates, except: [:edit] end diff --git a/init.rb b/init.rb index 516afa59..209f9606 100644 --- a/init.rb +++ b/init.rb @@ -60,7 +60,7 @@ def issue_template_version_message(original_message = nil) permission :edit_issue_templates, issue_templates: %i[new create edit update destroy move], note_templates: %i[new create edit update destroy move] permission :show_issue_templates, issue_templates: %i[index show load set_pulldown list_templates orphaned_templates], note_templates: %i[index show load list_templates] - permission :manage_issue_templates, { issue_templates_settings: %i[show edit] }, require: :member + permission :manage_issue_templates, { issue_templates_settings: %i[index edit] }, require: :member end rescue ::Redmine::PluginRequirementError => e raise ::Redmine::PluginRequirementError.new(issue_template_version_message(e.message)) # rubocop:disable Style/RaiseArgs diff --git a/test/functional/issue_templates_settings_controller_test.rb b/test/functional/issue_templates_settings_controller_test.rb index 6006a6ba..4fdd9006 100644 --- a/test/functional/issue_templates_settings_controller_test.rb +++ b/test/functional/issue_templates_settings_controller_test.rb @@ -43,8 +43,8 @@ def test_update_with_permission_and_redirect settings: { enabled: '1', help_message: 'Hoo', project_id: 2, inherit_templates: true }, setting_id: 1, tab: 'issue_templates' } assert_response :redirect - assert_redirected_to controller: 'projects', - action: 'settings', id: @project, tab: 'issue_templates' + assert_redirected_to controller: 'issue_templates_settings', + action: 'index', project_id: @project end def test_preview_template_setting From 60f933cd3718301ede8d94b0ab805147f93c352c Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Sun, 8 Dec 2019 22:41:01 +0900 Subject: [PATCH 07/14] Remove patch file for project setting tab. Update link to each view files. --- app/views/common/_template_links.html.erb | 9 ++++++++- app/views/issue_templates/new.html.erb | 1 + app/views/issue_templates/show.html.erb | 2 ++ app/views/note_templates/new.html.erb | 1 + app/views/note_templates/show.html.erb | 2 ++ init.rb | 11 ++++++++++- lib/issue_templates/projects_helper_patch.rb | 20 -------------------- test/functional/projects_controller_test.rb | 6 +++--- 8 files changed, 27 insertions(+), 25 deletions(-) delete mode 100644 lib/issue_templates/projects_helper_patch.rb diff --git a/app/views/common/_template_links.html.erb b/app/views/common/_template_links.html.erb index 5f8c0143..bb679bb0 100644 --- a/app/views/common/_template_links.html.erb +++ b/app/views/common/_template_links.html.erb @@ -1,4 +1,4 @@ -
+ +
diff --git a/app/views/issue_templates/new.html.erb b/app/views/issue_templates/new.html.erb index 674ae221..c2d8f987 100644 --- a/app/views/issue_templates/new.html.erb +++ b/app/views/issue_templates/new.html.erb @@ -18,3 +18,4 @@ <% end %> <% end %> +
<%= render partial: "common/template_links" %>
\ No newline at end of file diff --git a/app/views/issue_templates/show.html.erb b/app/views/issue_templates/show.html.erb index b835fa28..d23d963f 100644 --- a/app/views/issue_templates/show.html.erb +++ b/app/views/issue_templates/show.html.erb @@ -114,3 +114,5 @@

+ +<%= render partial: "common/template_links" %> \ No newline at end of file diff --git a/app/views/note_templates/new.html.erb b/app/views/note_templates/new.html.erb index f8d3aa62..008d9b13 100644 --- a/app/views/note_templates/new.html.erb +++ b/app/views/note_templates/new.html.erb @@ -16,3 +16,4 @@ <% end %> <% end %> +<%= render partial: "common/template_links" %> \ No newline at end of file diff --git a/app/views/note_templates/show.html.erb b/app/views/note_templates/show.html.erb index bd9b5a82..f0b865e9 100644 --- a/app/views/note_templates/show.html.erb +++ b/app/views/note_templates/show.html.erb @@ -85,3 +85,5 @@

+ +<%= render partial: "common/template_links" %> \ No newline at end of file diff --git a/init.rb b/init.rb index 209f9606..e65d406d 100644 --- a/init.rb +++ b/init.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + # Redmine Issue Template Plugin # # This is a plugin for Redmine to generate and use issue templates @@ -21,7 +23,6 @@ require 'redmine' require 'issue_templates/issues_hook' require 'issue_templates/journals_hook' -require 'issue_templates/projects_helper_patch' # NOTE: Keep error message for a while to support Redmine3.x users. def issue_template_version_message(original_message = nil) @@ -37,6 +38,10 @@ def issue_template_version_message(original_message = nil) USAGE end +def template_menu_allowed? + proc { |p| User.current.allowed_to?({ controller: 'issue_templates', action: 'show' }, p) } +end + Redmine::Plugin.register :redmine_issue_templates do begin name 'Redmine Issue Templates plugin' @@ -56,6 +61,10 @@ def issue_template_version_message(original_message = nil) menu :admin_menu, :redmine_issue_templates, { controller: 'global_issue_templates', action: 'index' }, caption: :global_issue_templates, html: { class: 'icon icon-global_issue_templates' } + menu :project_menu, :issue_templates, { :controller => 'issue_templates', :action => 'index' }, + caption: :issue_templates, param: :project_id, + after: :settings, if: template_menu_allowed? + project_module :issue_templates do permission :edit_issue_templates, issue_templates: %i[new create edit update destroy move], note_templates: %i[new create edit update destroy move] permission :show_issue_templates, issue_templates: %i[index show load set_pulldown list_templates orphaned_templates], diff --git a/lib/issue_templates/projects_helper_patch.rb b/lib/issue_templates/projects_helper_patch.rb deleted file mode 100644 index 74294f23..00000000 --- a/lib/issue_templates/projects_helper_patch.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -require 'projects_helper' - -module IssueTemplates - module ProjectsHelperPatch - def project_settings_tabs - tabs = super - @issue_templates_setting = IssueTemplateSetting.find_or_create(@project.id) - action = { name: 'issue_templates', - controller: 'issue_templates_settings', - action: :show, - partial: 'issue_templates_settings/show', label: :project_module_issue_templates } - tabs << action if User.current.allowed_to?(action, @project) - tabs - end - end -end - -ProjectsHelper.prepend(IssueTemplates::ProjectsHelperPatch) unless ProjectsHelper.included_modules.include?(IssueTemplates::ProjectsHelperPatch) diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index ff07b11e..66478143 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -7,7 +7,7 @@ class ProjectsControllerTest < Redmine::ControllerTest def setup # as project admin @request.session[:user_id] = 2 - Role.find(1).add_permission! :manage_issue_templates + Role.find(1).add_permission! :show_issue_templates # Enabled Template module @project = Project.find(1) @project.enabled_modules << EnabledModule.new(name: 'issue_templates') @@ -15,8 +15,8 @@ def setup end def test_settings - get :settings, params: { id: 1 } + get :show, params: { id: 1 } assert_response :success - assert_select 'a#tab-issue_templates' + assert_select '#main-menu > ul > li > a.issue-templates' end end From 987ed7fb6710c1e2fb309416f9b3c71be39aa6d7 Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Sun, 8 Dec 2019 22:42:03 +0900 Subject: [PATCH 08/14] Apply refactor. --- app/controllers/issue_templates_controller.rb | 7 ++++--- .../issue_templates_settings_controller.rb | 11 +++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/controllers/issue_templates_controller.rb b/app/controllers/issue_templates_controller.rb index bdc04532..ef220463 100644 --- a/app/controllers/issue_templates_controller.rb +++ b/app/controllers/issue_templates_controller.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true # noinspection ALL class IssueTemplatesController < ApplicationController layout 'base' @@ -64,7 +65,7 @@ def update def load issue_template_id = params[:template_id] template_type = params[:template_type] - issue_template = if !template_type.blank? && template_type == 'global' + issue_template = if template_type.present? && template_type == 'global' GlobalIssueTemplate.find(issue_template_id) else IssueTemplate.find(issue_template_id) @@ -97,8 +98,8 @@ def set_pulldown def list_templates (default_global, default_inherit, default_project) = default_templates - default_template = default_inherit.present? ? default_inherit : default_global - default_template = default_project.present? ? default_project : default_template + default_template = default_inherit.presence || default_global + default_template = default_project.presence || default_template respond_to do |format| format.html do diff --git a/app/controllers/issue_templates_settings_controller.rb b/app/controllers/issue_templates_settings_controller.rb index e04cf3ec..acc7ffa3 100644 --- a/app/controllers/issue_templates_settings_controller.rb +++ b/app/controllers/issue_templates_settings_controller.rb @@ -1,6 +1,9 @@ +# frozen_string_literal: true + # noinspection RubocopInspection class IssueTemplatesSettingsController < ApplicationController before_action :find_project, :find_user + before_action :authorize, except: %i[preview] def index @issue_templates_setting = IssueTemplateSetting.find_or_create(@project.id) @@ -39,9 +42,9 @@ def find_project def update_template_setting issue_templates_setting = IssueTemplateSetting.find_or_create(@project.id) attribute = params[:settings] - issue_templates_setting.update_attributes(enabled: attribute[:enabled], - help_message: attribute[:help_message], - inherit_templates: attribute[:inherit_templates], - should_replaced: attribute[:should_replaced]) + issue_templates_setting.update(enabled: attribute[:enabled], + help_message: attribute[:help_message], + inherit_templates: attribute[:inherit_templates], + should_replaced: attribute[:should_replaced]) end end From 2d893db5459cff7c491b640fbfcebcbd83fd9f58 Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Sat, 7 Dec 2019 21:03:00 +0900 Subject: [PATCH 09/14] Bugfix: Tooltip for template body preview is hidden. --- assets/stylesheets/issue_templates.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/assets/stylesheets/issue_templates.css b/assets/stylesheets/issue_templates.css index e0cc1a82..899c9b8d 100644 --- a/assets/stylesheets/issue_templates.css +++ b/assets/stylesheets/issue_templates.css @@ -158,6 +158,8 @@ a.template_tooltip { table.list.template_list { width: 480px; margin: 8px 0; + border: 2px solid #e4e4e4; + overflow: overlay; } td.template_title { From 022bf7cef135ac222399eb7a3eaf3b29868910e0 Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Mon, 9 Dec 2019 07:52:18 +0900 Subject: [PATCH 10/14] Update css. --- assets/stylesheets/issue_templates.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/assets/stylesheets/issue_templates.css b/assets/stylesheets/issue_templates.css index 899c9b8d..33f1a8a2 100644 --- a/assets/stylesheets/issue_templates.css +++ b/assets/stylesheets/issue_templates.css @@ -155,6 +155,11 @@ a.template_tooltip { font-style: italic; } +table.list { + overflow: overlay; + border: 2px solid #e4e4e4; +} + table.list.template_list { width: 480px; margin: 8px 0; From 1ad552c00fbb02d9b16c6c7d9a588bb9405b131c Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Mon, 9 Dec 2019 13:04:46 +0900 Subject: [PATCH 11/14] Fix code style. --- init.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.rb b/init.rb index e65d406d..9c707632 100644 --- a/init.rb +++ b/init.rb @@ -61,7 +61,7 @@ def template_menu_allowed? menu :admin_menu, :redmine_issue_templates, { controller: 'global_issue_templates', action: 'index' }, caption: :global_issue_templates, html: { class: 'icon icon-global_issue_templates' } - menu :project_menu, :issue_templates, { :controller => 'issue_templates', :action => 'index' }, + menu :project_menu, :issue_templates, { controller: 'issue_templates', action: 'index' }, caption: :issue_templates, param: :project_id, after: :settings, if: template_menu_allowed? From 31f1bb5cb61f7a3db0d45faa299875ae33006674 Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Mon, 9 Dec 2019 13:20:57 +0900 Subject: [PATCH 12/14] Add newline. --- app/views/note_templates/show.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/note_templates/show.html.erb b/app/views/note_templates/show.html.erb index f0b865e9..5edee1a1 100644 --- a/app/views/note_templates/show.html.erb +++ b/app/views/note_templates/show.html.erb @@ -86,4 +86,4 @@ -<%= render partial: "common/template_links" %> \ No newline at end of file +<%= render partial: "common/template_links" %> From b2ddfc90b3f98f25ace6bed9ef1cd9a946447e95 Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Mon, 9 Dec 2019 13:21:49 +0900 Subject: [PATCH 13/14] Update version to 0.3.7 --- init.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.rb b/init.rb index 9c707632..77f82f09 100644 --- a/init.rb +++ b/init.rb @@ -47,7 +47,7 @@ def template_menu_allowed? name 'Redmine Issue Templates plugin' author 'Akiko Takano' description 'Plugin to generate and use issue templates for each project to assist issue creation.' - version '0.3.6' + version '0.3.7' author_url 'http://twitter.com/akiko_pusu' requires_redmine version_or_higher: '4.0' url 'https://github.com/akiko-pusu/redmine_issue_templates' From 5ed9855c619d818e83b3734f3a0e995e8e45e187 Mon Sep 17 00:00:00 2001 From: Akiko Takano Date: Mon, 9 Dec 2019 13:29:25 +0900 Subject: [PATCH 14/14] Update README --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 096e552d..ac8b9980 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,16 @@ If you have any requests, bug reports, please use GitHub issues.