From 81d86bec7ca269b8be4f45aaa0cd8c4e34bdd064 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Fri, 19 Jul 2019 13:47:17 +1000 Subject: [PATCH] Add file types setting to upload field --- .../discourse/components/wizard-custom-field.js.es6 | 11 ++++++++++- .../templates/components/wizard-custom-field.hbs | 11 +++++++++++ .../templates/components/wizard-field-upload.hbs | 2 +- config/locales/client.en.yml | 1 + lib/builder.rb | 4 ++++ lib/wizard_edits.rb | 9 +++++++-- 6 files changed, 34 insertions(+), 4 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-custom-field.js.es6 b/assets/javascripts/discourse/components/wizard-custom-field.js.es6 index 8de6cb57..b8ae5fe4 100644 --- a/assets/javascripts/discourse/components/wizard-custom-field.js.es6 +++ b/assets/javascripts/discourse/components/wizard-custom-field.js.es6 @@ -1,8 +1,9 @@ -import { default as computed } from 'ember-addons/ember-computed-decorators'; +import { default as computed, observes, on } from 'ember-addons/ember-computed-decorators'; export default Ember.Component.extend({ classNames: 'wizard-custom-field', isDropdown: Ember.computed.equal('field.type', 'dropdown'), + isUpload: Ember.computed.equal('field.type', 'upload'), disableId: Ember.computed.not('field.isNew'), choicesTypes: ['translation', 'preset', 'custom'], choicesTranslation: Ember.computed.equal('field.choices_type', 'translation'), @@ -27,4 +28,12 @@ export default Ember.Component.extend({ } ]; }, + + @on('didInsertElement') + @observes('isUpload') + setupFileType() { + if (this.get('isUpload') && !this.get('field.file_types')) { + this.set('field.file_types', '.jpg,.png'); + } + } }); diff --git a/assets/javascripts/discourse/templates/components/wizard-custom-field.hbs b/assets/javascripts/discourse/templates/components/wizard-custom-field.hbs index 692454f3..e292371e 100644 --- a/assets/javascripts/discourse/templates/components/wizard-custom-field.hbs +++ b/assets/javascripts/discourse/templates/components/wizard-custom-field.hbs @@ -112,3 +112,14 @@ {{input name="dropdown_none" value=field.dropdown_none placeholder=(i18n 'admin.wizard.field.dropdown_none_placeholder')}} {{/if}} + +{{#if isUpload}} +
+
+

{{i18n 'admin.wizard.field.file_types'}}

+
+
+ {{input value=field.file_types}} +
+
+{{/if}} diff --git a/assets/javascripts/wizard/templates/components/wizard-field-upload.hbs b/assets/javascripts/wizard/templates/components/wizard-field-upload.hbs index 4d984912..0e24849a 100644 --- a/assets/javascripts/wizard/templates/components/wizard-field-upload.hbs +++ b/assets/javascripts/wizard/templates/components/wizard-field-upload.hbs @@ -6,7 +6,7 @@ {{d-icon "upload"}} {{/if}} - + {{#if field.value}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index fdbe87b3..91c6ea75 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -108,6 +108,7 @@ en: required_label: "Field is Required" min_length: "Min Length" min_length_placeholder: "Minimum length in characters" + file_types: "File Types" action: header: "Actions*" include: "Include Fields" diff --git a/lib/builder.rb b/lib/builder.rb index 9d0bfda7..d4f779be 100644 --- a/lib/builder.rb +++ b/lib/builder.rb @@ -203,6 +203,10 @@ class CustomWizard::Builder params[:value] = standardise_boolean(params[:value]) end + if field_template['type'] === 'upload' + params[:file_types] = field_template['file_types'] + end + field = step.add_field(params) if field_template['type'] === 'dropdown' diff --git a/lib/wizard_edits.rb b/lib/wizard_edits.rb index dfab138a..dc6421ab 100644 --- a/lib/wizard_edits.rb +++ b/lib/wizard_edits.rb @@ -23,7 +23,7 @@ require_dependency 'wizard/step' end ::Wizard::Field.class_eval do - attr_reader :label, :description, :image, :key, :min_length + attr_reader :label, :description, :image, :key, :min_length, :file_types attr_accessor :dropdown_none def initialize(attrs) @@ -38,6 +38,7 @@ end @value = attrs[:value] @choices = [] @dropdown_none = attrs[:dropdown_none] + @file_types = attrs[:file_types] end def label @@ -152,7 +153,7 @@ end end ::WizardFieldSerializer.class_eval do - attributes :dropdown_none, :image + attributes :dropdown_none, :image, :file_types def label return object.label if object.label.present? @@ -179,4 +180,8 @@ end def dropdown_none object.dropdown_none end + + def file_types + object.file_types + end end