diff --git a/app/assets/javascripts/admin/templates/components/site-settings/string.hbs b/app/assets/javascripts/admin/templates/components/site-settings/string.hbs
index 71d7216f273..77e254b42f2 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/string.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/string.hbs
@@ -1,3 +1,8 @@
-{{text-field value=value classNames="input-setting-string"}}
+{{#if setting.textarea}}
+ {{textarea value=value classNames="input-setting-textarea"}}
+{{else}}
+ {{text-field value=value classNames="input-setting-string"}}
+{{/if}}
+
{{setting-validation-message message=validationMessage}}
{{{unbound setting.description}}}
diff --git a/app/assets/stylesheets/common/admin/admin_base.scss b/app/assets/stylesheets/common/admin/admin_base.scss
index de075cb545a..0285fe25b8d 100644
--- a/app/assets/stylesheets/common/admin/admin_base.scss
+++ b/app/assets/stylesheets/common/admin/admin_base.scss
@@ -461,7 +461,7 @@ td.flaggers td {
.setting-controls {
float: left;
}
- .input-setting-string {
+ .input-setting-string, .input-setting-textarea {
box-sizing: border-box;
height: 30px;
width: 100%;
@@ -469,6 +469,9 @@ td.flaggers td {
width: 100%;
}
}
+ .input-setting-textarea {
+ height: 150px;
+ }
.input-setting-list {
@media (max-width: $mobile-breakpoint) {
width: 100%;
@@ -531,7 +534,7 @@ td.flaggers td {
}
.setting.overridden.string {
- input[type=text] {
+ input[type=text], textarea {
background-color: dark-light-diff($highlight, $secondary, 50%, -60%);
}
}
diff --git a/lib/site_setting_extension.rb b/lib/site_setting_extension.rb
index 20dd2818afc..44f35a1220c 100644
--- a/lib/site_setting_extension.rb
+++ b/lib/site_setting_extension.rb
@@ -195,6 +195,8 @@ module SiteSettingExtension
opts.merge!({valid_values: choices[s].map{|c| {name: c, value: c}}, translate_names: false})
end
+ opts[:textarea] = true if static_types[s] == :textarea
+
opts[:choices] = choices[s] if choices.has_key? s
opts
end