summaryrefslogtreecommitdiff
path: root/app/helpers/issuables_description_templates_helper.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/helpers/issuables_description_templates_helper.rb')
-rw-r--r--app/helpers/issuables_description_templates_helper.rb29
1 files changed, 17 insertions, 12 deletions
diff --git a/app/helpers/issuables_description_templates_helper.rb b/app/helpers/issuables_description_templates_helper.rb
index a82a5ac0fb0..58b86dca1e0 100644
--- a/app/helpers/issuables_description_templates_helper.rb
+++ b/app/helpers/issuables_description_templates_helper.rb
@@ -5,8 +5,12 @@ module IssuablesDescriptionTemplatesHelper
include GitlabRoutingHelper
def template_dropdown_tag(issuable, &block)
- selected_template = selected_template(issuable)
- title = selected_template || _('Choose a template')
+ template_names = template_names(issuable)
+
+ selected_template = selected_template_name(template_names)
+ default_template = default_template_name(template_names, issuable)
+ title = _('Choose a template')
+
options = {
toggle_class: 'js-issuable-selector',
title: title,
@@ -17,6 +21,7 @@ module IssuablesDescriptionTemplatesHelper
data: issuable_templates(ref_project, issuable.to_ability_name),
field_name: 'issuable_template',
selected: selected_template,
+ default: default_template,
project_id: ref_project.id
}
}
@@ -32,19 +37,19 @@ module IssuablesDescriptionTemplatesHelper
@template_types[project.id][issuable_type] ||= TemplateFinder.all_template_names(project, issuable_type.pluralize)
end
- def selected_template(issuable)
- all_templates = issuable_templates(ref_project, issuable.to_ability_name)
-
- # Only local templates will be listed if licenses for inherited templates are not present
- all_templates = all_templates.values.flatten.map { |tpl| tpl[:name] }.compact.uniq
+ def selected_template_name(template_names)
+ template_names.find { |tmpl_name| tmpl_name == params[:issuable_template] }
+ end
- template = all_templates.find { |tmpl_name| tmpl_name == params[:issuable_template] }
+ def default_template_name(template_names, issuable)
+ return if issuable.description.present? || issuable.persisted?
- unless issuable.description.present?
- template ||= all_templates.find { |tmpl_name| tmpl_name.casecmp?('default') }
- end
+ template_names.find { |tmpl_name| tmpl_name.casecmp?('default') }
+ end
- template
+ def template_names(issuable)
+ # Only local templates will be listed if licenses for inherited templates are not present
+ issuable_templates(ref_project, issuable.to_ability_name).values.flatten.map { |tpl| tpl[:name] }.compact.uniq
end
def available_service_desk_templates_for(project)