From 1670ed4b67e27373811637a87d26a8ab27120463 Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Wed, 11 Sep 2019 09:30:38 +0100 Subject: [PATCH 01/11] NEW FEATURE: ability to request national flag update in wizard --- .../components/wizard-custom-field.js.es6 | 9 +- .../wizard/initializers/custom.js.es6 | 16 + .../components/wizard-field-dropdown.hbs | 3 + assets/stylesheets/wizard/wizard_custom.scss | 23 +- config/locales/client.en.yml | 1 + lib/builder.rb | 4 + lib/flags.rb | 819 ++++++++++++++++++ plugin.rb | 1 + 8 files changed, 873 insertions(+), 3 deletions(-) create mode 100644 lib/flags.rb diff --git a/assets/javascripts/discourse/components/wizard-custom-field.js.es6 b/assets/javascripts/discourse/components/wizard-custom-field.js.es6 index 56fe9529..1afb1683 100644 --- a/assets/javascripts/discourse/components/wizard-custom-field.js.es6 +++ b/assets/javascripts/discourse/components/wizard-custom-field.js.es6 @@ -20,7 +20,7 @@ export default Ember.Component.extend({ @computed() presetChoices() { - return [ + let presets = [ { id: 'categories', name: I18n.t('admin.wizard.field.choices_preset.categories') @@ -32,6 +32,13 @@ export default Ember.Component.extend({ name: I18n.t('admin.wizard.field.choices_preset.tags') } ]; + if (Discourse.SiteSettings.nationalflag_enabled) { + presets.push({ + id: 'flags', + name: I18n.t('admin.wizard.field.choices_preset.flags') + }) + } + return presets; }, @on('didInsertElement') diff --git a/assets/javascripts/wizard/initializers/custom.js.es6 b/assets/javascripts/wizard/initializers/custom.js.es6 index d2154467..a52f7559 100644 --- a/assets/javascripts/wizard/initializers/custom.js.es6 +++ b/assets/javascripts/wizard/initializers/custom.js.es6 @@ -1,3 +1,5 @@ +import { default as computed } from 'ember-addons/ember-computed-decorators'; + export default { name: 'custom-routes', @@ -16,6 +18,20 @@ export default { const autocomplete = requirejs('discourse/lib/autocomplete').default; const cook = requirejs('discourse/plugins/discourse-custom-wizard/wizard/lib/text-lite').cook; const Singleton = requirejs("discourse/mixins/singleton").default; + const WizardFieldDropdown = requirejs('wizard/components/wizard-field-dropdown').default; + + WizardFieldDropdown.reopen({ + tagName: 'span', + classNames: ['wizard-select-value'], + + @computed + isFlagSelector() { + const field = this.get('field'); + //TODO improve the way this detects a flag dropdown (currently it relies on the string 'Nation', e.g. 'Nationality' or 'National Flag' appearing in label) + return (field.label.includes('Nation')) ? true : false; + } + }); + // IE11 Polyfill - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Polyfill if (!Object.entries) diff --git a/assets/javascripts/wizard/templates/components/wizard-field-dropdown.hbs b/assets/javascripts/wizard/templates/components/wizard-field-dropdown.hbs index f92000e0..011a2e3f 100644 --- a/assets/javascripts/wizard/templates/components/wizard-field-dropdown.hbs +++ b/assets/javascripts/wizard/templates/components/wizard-field-dropdown.hbs @@ -5,3 +5,6 @@ none=(hash id="__none__" label=field.dropdown_none) nameProperty="label" tabindex="9"}} +{{#if isFlagSelector}} + +{{/if}} diff --git a/assets/stylesheets/wizard/wizard_custom.scss b/assets/stylesheets/wizard/wizard_custom.scss index 5209b8e9..88d406ad 100644 --- a/assets/stylesheets/wizard/wizard_custom.scss +++ b/assets/stylesheets/wizard/wizard_custom.scss @@ -229,8 +229,27 @@ margin: 20px 0; } - .wizard-image-row .wizard-btn-upload { - margin: 0; + .wizard-image-row { + + .wizard-btn-upload { + margin: 0; + } + + } + + .wizard-image-preview { + max-width: 200px; + max-height: 200px; + overflow: hidden; + + img { + max-width:100%; + max-height:100%; + } + } + + .wizard-select-value img { + vertical-align: middle; } .wizard-field-upload { diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 1c0bd172..9372570c 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -101,6 +101,7 @@ en: categories: "Categories" groups: "Groups" tags: "Tags" + flags: "Flags" filter: "Preset Filter" choice: value: "Value" diff --git a/lib/builder.rb b/lib/builder.rb index 39180039..82ec20f2 100644 --- a/lib/builder.rb +++ b/lib/builder.rb @@ -277,6 +277,10 @@ class CustomWizard::Builder objects = Tag.top_tags(guardian: guardian).map { |tag| TagStruct.new(tag,tag) } end + if field_template['choices_preset'] === 'flags' + objects = CustomWizard::Flags.list + end + if field_template['choices_filters'] && field_template['choices_filters'].length > 0 field_template['choices_filters'].each do |f| objects.reject! do |o| diff --git a/lib/flags.rb b/lib/flags.rb new file mode 100644 index 00000000..93d5ecc0 --- /dev/null +++ b/lib/flags.rb @@ -0,0 +1,819 @@ +class CustomWizard::Flag + def initialize(id, name, value) + @id = id + @name = name + @value = value + end + + def id + @id + end + + def name + @name + end + + def value + @value + end +end + +class CustomWizard::Flags + + def self.list + + flags = [ + { "id" => 0, + "name"=> "none", + "value"=> "none.png" + }, { + "id"=> 1, + "name"=> "ad", + "value"=> "ad.png" + }, { + "id"=> 2, + "name"=> "ae", + "value"=> "ae.png" + }, { + "name"=> "af", + "value"=> "af.png" + }, { + "name"=> "ag", + "value"=> "ag.png" + }, { + "name"=> "ai", + "value"=> "ai.png" + }, { + "name"=> "al", + "value"=> "al.png" + }, { + "name"=> "am", + "value"=> "am.png" + }, { + "name"=> "ao", + "value"=> "ao.png" + }, { + "name"=> "aq", + "value"=> "aq.png" + }, { + "name"=> "ar", + "value"=> "ar.png" + }, { + "name"=> "as", + "value"=> "as.png" + }, { + "name"=> "at", + "value"=> "at.png" + }, { + "name"=> "au", + "value"=> "au.png" + }, { + "name"=> "aw", + "value"=> "aw.png" + }, { + "name"=> "ax", + "value"=> "ax.png" + }, { + "name"=> "az", + "value"=> "az.png" + }, { + "name"=> "ba", + "value"=> "ba.png" + }, { + "name"=> "bb", + "value"=> "bb.png" + }, { + "name"=> "bd", + "value"=> "bd.png" + }, { + "name"=> "be", + "value"=> "be.png" + }, { + "name"=> "bf", + "value"=> "bf.png" + }, { + "name"=> "bg", + "value"=> "bg.png" + }, { + "name"=> "bh", + "value"=> "bh.png" + }, { + "name"=> "bi", + "value"=> "bi.png" + }, { + "name"=> "bj", + "value"=> "bj.png" + }, { + "name"=> "bl", + "value"=> "bl.png" + }, { + "name"=> "bm", + "value"=> "bm.png" + }, { + "name"=> "bn", + "value"=> "bn.png" + }, { + "name"=> "bo", + "value"=> "bo.png" + }, { + "name"=> "bq", + "value"=> "bq.png" + }, { + "name"=> "br", + "value"=> "br.png" + }, { + "name"=> "bs", + "value"=> "bs.png" + }, { + "name"=> "bt", + "value"=> "bt.png" + }, { + "name"=> "bv", + "value"=> "bv.png" + }, { + "name"=> "bw", + "value"=> "bw.png" + }, { + "name"=> "by", + "value"=> "by.png" + }, { + "name"=> "bz", + "value"=> "bz.png" + }, { + "name"=> "ca", + "value"=> "ca.png" + }, { + "name"=> "cc", + "value"=> "cc.png" + }, { + "name"=> "cd", + "value"=> "cd.png" + }, { + "name"=> "cf", + "value"=> "cf.png" + }, { + "name"=> "cg", + "value"=> "cg.png" + }, { + "name"=> "ch", + "value"=> "ch.png" + }, { + "name"=> "ci", + "value"=> "ci.png" + }, { + "name"=> "ck", + "value"=> "ck.png" + }, { + "name"=> "cl", + "value"=> "cl.png" + }, { + "name"=> "cm", + "value"=> "cm.png" + }, { + "name"=> "cn", + "value"=> "cn.png" + }, { + "name"=> "co", + "value"=> "co.png" + }, { + "name"=> "cr", + "value"=> "cr.png" + }, { + "name"=> "cu", + "value"=> "cu.png" + }, { + "name"=> "cv", + "value"=> "cv.png" + }, { + "name"=> "cw", + "value"=> "cw.png" + }, { + "name"=> "cx", + "value"=> "cx.png" + }, { + "name"=> "cy", + "value"=> "cy.png" + }, { + "name"=> "cz", + "value"=> "cz.png" + }, { + "name"=> "de", + "value"=> "de.png" + }, { + "name"=> "de-at", + "value"=> "de-at.png" + }, { + "name"=> "dj", + "value"=> "dj.png" + }, { + "name"=> "dk", + "value"=> "dk.png" + }, { + "name"=> "dm", + "value"=> "dm.png" + }, { + "name"=> "do", + "value"=> "do.png" + }, { + "name"=> "dz", + "value"=> "dz.png" + }, { + "name"=> "ec", + "value"=> "ec.png" + }, { + "name"=> "ee", + "value"=> "ee.png" + }, { + "name"=> "eg", + "value"=> "eg.png" + }, { + "name"=> "eh", + "value"=> "eh.png" + }, { + "name"=> "er", + "value"=> "er.png" + }, { + "name"=> "es", + "value"=> "es.png" + }, { + "name"=> "et", + "value"=> "et.png" + }, { + "name"=> "eu", + "value"=> "eu.png" + }, { + "name"=> "fi", + "value"=> "fi.png" + }, { + "name"=> "fj", + "value"=> "fj.png" + }, { + "name"=> "fk", + "value"=> "fk.png" + }, { + "name"=> "fm", + "value"=> "fm.png" + }, { + "name"=> "fo", + "value"=> "fo.png" + }, { + "name"=> "fr", + "value"=> "fr.png" + }, { + "name"=> "fr-br", + "value"=> "fr-br.png" + }, { + "name"=> "ga", + "value"=> "ga.png" + }, { + "name"=> "gb-eng", + "value"=> "gb-eng.png" + }, { + "name"=> "gb-nir", + "value"=> "gb-nir.png" + }, { + "name"=> "gb-sct", + "value"=> "gb-sct.png" + }, { + "name"=> "gb-wls", + "value"=> "gb-wls.png" + }, { + "name"=> "gb", + "value"=> "gb.png" + }, { + "name"=> "gd", + "value"=> "gd.png" + }, { + "name"=> "ge", + "value"=> "ge.png" + }, { + "name"=> "gf", + "value"=> "gf.png" + }, { + "name"=> "gg", + "value"=> "gg.png" + }, { + "name"=> "gh", + "value"=> "gh.png" + }, { + "name"=> "gi", + "value"=> "gi.png" + }, { + "name"=> "gl", + "value"=> "gl.png" + }, { + "name"=> "gm", + "value"=> "gm.png" + }, { + "name"=> "gn", + "value"=> "gn.png" + }, { + "name"=> "gp", + "value"=> "gp.png" + }, { + "name"=> "gq", + "value"=> "gq.png" + }, { + "name"=> "gr", + "value"=> "gr.png" + }, { + "name"=> "gs", + "value"=> "gs.png" + }, { + "name"=> "gt", + "value"=> "gt.png" + }, { + "name"=> "gu", + "value"=> "gu.png" + }, { + "name"=> "gw", + "value"=> "gw.png" + }, { + "name"=> "gy", + "value"=> "gy.png" + }, { + "name"=> "hk", + "value"=> "hk.png" + }, { + "name"=> "hm", + "value"=> "hm.png" + }, { + "name"=> "hn", + "value"=> "hn.png" + }, { + "name"=> "hr", + "value"=> "hr.png" + }, { + "name"=> "ht", + "value"=> "ht.png" + }, { + "name"=> "hu", + "value"=> "hu.png" + }, { + "name"=> "id", + "value"=> "id.png" + }, { + "name"=> "ie", + "value"=> "ie.png" + }, { + "name"=> "il", + "value"=> "il.png" + }, { + "name"=> "im", + "value"=> "im.png" + }, { + "name"=> "in", + "value"=> "in.png" + }, { + "name"=> "io", + "value"=> "io.png" + }, { + "name"=> "iq", + "value"=> "iq.png" + }, { + "name"=> "ir", + "value"=> "ir.png" + }, { + "name"=> "is", + "value"=> "is.png" + }, { + "name"=> "it", + "value"=> "it.png" + }, { + "name"=> "je", + "value"=> "je.png" + }, { + "name"=> "jm", + "value"=> "jm.png" + }, { + "name"=> "jo", + "value"=> "jo.png" + }, { + "name"=> "jp", + "value"=> "jp.png" + }, { + "name"=> "ke", + "value"=> "ke.png" + }, { + "name"=> "kg", + "value"=> "kg.png" + }, { + "name"=> "kh", + "value"=> "kh.png" + }, { + "name"=> "ki", + "value"=> "ki.png" + }, { + "name"=> "km", + "value"=> "km.png" + }, { + "name"=> "kn", + "value"=> "kn.png" + }, { + "name"=> "kp", + "value"=> "kp.png" + }, { + "name"=> "kr", + "value"=> "kr.png" + }, { + "name"=> "kw", + "value"=> "kw.png" + }, { + "name"=> "ky", + "value"=> "ky.png" + }, { + "name"=> "kz", + "value"=> "kz.png" + }, { + "name"=> "la", + "value"=> "la.png" + }, { + "name"=> "lb", + "value"=> "lb.png" + }, { + "name"=> "lc", + "value"=> "lc.png" + }, { + "name"=> "li", + "value"=> "li.png" + }, { + "name"=> "lk", + "value"=> "lk.png" + }, { + "name"=> "lr", + "value"=> "lr.png" + }, { + "name"=> "ls", + "value"=> "ls.png" + }, { + "name"=> "lt", + "value"=> "lt.png" + }, { + "name"=> "lu", + "value"=> "lu.png" + }, { + "name"=> "lv", + "value"=> "lv.png" + }, { + "name"=> "ly", + "value"=> "ly.png" + }, { + "name"=> "ma", + "value"=> "ma.png" + }, { + "name"=> "mc", + "value"=> "mc.png" + }, { + "name"=> "md", + "value"=> "md.png" + }, { + "name"=> "me", + "value"=> "me.png" + }, { + "name"=> "mf", + "value"=> "mf.png" + }, { + "name"=> "mg", + "value"=> "mg.png" + }, { + "name"=> "mh", + "value"=> "mh.png" + }, { + "name"=> "mk", + "value"=> "mk.png" + }, { + "name"=> "ml", + "value"=> "ml.png" + }, { + "name"=> "mm", + "value"=> "mm.png" + }, { + "name"=> "mn", + "value"=> "mn.png" + }, { + "name"=> "mo", + "value"=> "mo.png" + }, { + "name"=> "mp", + "value"=> "mp.png" + }, { + "name"=> "mq", + "value"=> "mq.png" + }, { + "name"=> "mr", + "value"=> "mr.png" + }, { + "name"=> "ms", + "value"=> "ms.png" + }, { + "name"=> "mt", + "value"=> "mt.png" + }, { + "name"=> "mu", + "value"=> "mu.png" + }, { + "name"=> "mv", + "value"=> "mv.png" + }, { + "name"=> "mw", + "value"=> "mw.png" + }, { + "name"=> "mx", + "value"=> "mx.png" + }, { + "name"=> "my", + "value"=> "my.png" + }, { + "name"=> "mz", + "value"=> "mz.png" + }, { + "name"=> "na", + "value"=> "na.png" + }, { + "name"=> "nc", + "value"=> "nc.png" + }, { + "name"=> "ne", + "value"=> "ne.png" + }, { + "name"=> "nf", + "value"=> "nf.png" + }, { + "name"=> "ng", + "value"=> "ng.png" + }, { + "name"=> "ni", + "value"=> "ni.png" + }, { + "name"=> "nl", + "value"=> "nl.png" + }, { + "name"=> "no", + "value"=> "no.png" + }, { + "name"=> "np", + "value"=> "np.png" + }, { + "name"=> "nr", + "value"=> "nr.png" + }, { + "name"=> "nu", + "value"=> "nu.png" + }, { + "name"=> "nz", + "value"=> "nz.png" + }, { + "name"=> "om", + "value"=> "om.png" + }, { + "name"=> "pa", + "value"=> "pa.png" + }, { + "name"=> "pe", + "value"=> "pe.png" + }, { + "name"=> "pf", + "value"=> "pf.png" + }, { + "name"=> "pg", + "value"=> "pg.png" + }, { + "name"=> "ph", + "value"=> "ph.png" + }, { + "name"=> "pk", + "value"=> "pk.png" + }, { + "name"=> "pl", + "value"=> "pl.png" + }, { + "name"=> "pm", + "value"=> "pm.png" + }, { + "name"=> "pn", + "value"=> "pn.png" + }, { + "name"=> "pr", + "value"=> "pr.png" + }, { + "name"=> "ps", + "value"=> "ps.png" + }, { + "name"=> "pt", + "value"=> "pt.png" + }, { + "name"=> "pw", + "value"=> "pw.png" + }, { + "name"=> "py", + "value"=> "py.png" + }, { + "name"=> "qa", + "value"=> "qa.png" + }, { + "name"=> "re", + "value"=> "re.png" + }, { + "name"=> "ro", + "value"=> "ro.png" + }, { + "name"=> "rs", + "value"=> "rs.png" + }, { + "name"=> "ru", + "value"=> "ru.png" + }, { + "name"=> "rw", + "value"=> "rw.png" + }, { + "name"=> "sa", + "value"=> "sa.png" + }, { + "name"=> "sb", + "value"=> "sb.png" + }, { + "name"=> "sc", + "value"=> "sc.png" + }, { + "name"=> "sd", + "value"=> "sd.png" + }, { + "name"=> "se", + "value"=> "se.png" + }, { + "name"=> "sg", + "value"=> "sg.png" + }, { + "name"=> "sh", + "value"=> "sh.png" + }, { + "name"=> "si", + "value"=> "si.png" + }, { + "name"=> "sj", + "value"=> "sj.png" + }, { + "name"=> "sk", + "value"=> "sk.png" + }, { + "name"=> "sl", + "value"=> "sl.png" + }, { + "name"=> "sm", + "value"=> "sm.png" + }, { + "name"=> "sn", + "value"=> "sn.png" + }, { + "name"=> "so", + "value"=> "so.png" + }, { + "name"=> "sr", + "value"=> "sr.png" + }, { + "name"=> "ss", + "value"=> "ss.png" + }, { + "name"=> "st", + "value"=> "st.png" + }, { + "name"=> "sv", + "value"=> "sv.png" + }, { + "name"=> "sx", + "value"=> "sx.png" + }, { + "name"=> "sy", + "value"=> "sy.png" + }, { + "name"=> "sz", + "value"=> "sz.png" + }, { + "name"=> "tc", + "value"=> "tc.png" + }, { + "name"=> "td", + "value"=> "td.png" + }, { + "name"=> "tf", + "value"=> "tf.png" + }, { + "name"=> "tg", + "value"=> "tg.png" + }, { + "name"=> "th", + "value"=> "th.png" + }, { + "name"=> "tj", + "value"=> "tj.png" + }, { + "name"=> "tk", + "value"=> "tk.png" + }, { + "name"=> "tl", + "value"=> "tl.png" + }, { + "name"=> "tm", + "value"=> "tm.png" + }, { + "name"=> "tn", + "value"=> "tn.png" + }, { + "name"=> "to", + "value"=> "to.png" + }, { + "name"=> "tr", + "value"=> "tr.png" + }, { + "name"=> "tt", + "value"=> "tt.png" + }, { + "name"=> "tv", + "value"=> "tv.png" + }, { + "name"=> "tw", + "value"=> "tw.png" + }, { + "name"=> "tz", + "value"=> "tz.png" + }, { + "name"=> "ua", + "value"=> "ua.png" + }, { + "name"=> "ug", + "value"=> "ug.png" + }, { + "name"=> "um", + "value"=> "um.png" + }, { + "name"=> "un", + "value"=> "un.png" + }, { + "name"=> "us", + "value"=> "us.png" + }, { + "name"=> "us-at", + "value"=> "us-at.png" + }, { + "name"=> "uy", + "value"=> "uy.png" + }, { + "name"=> "uz", + "value"=> "uz.png" + }, { + "name"=> "va", + "value"=> "va.png" + }, { + "name"=> "vc", + "value"=> "vc.png" + }, { + "name"=> "ve", + "value"=> "ve.png" + }, { + "name"=> "vg", + "value"=> "vg.png" + }, { + "name"=> "vi", + "value"=> "vi.png" + }, { + "name"=> "vn", + "value"=> "vn.png" + }, { + "name"=> "vu", + "value"=> "vu.png" + }, { + "name"=> "wf", + "value"=> "wf.png" + }, { + "name"=> "ws", + "value"=> "ws.png" + }, { + "name"=> "ye", + "value"=> "ye.png" + }, { + "name"=> "yt", + "value"=> "yt.png" + }, { + "name"=> "za", + "value"=> "za.png" + }, { + "name"=> "zm", + "value"=> "zm.png" + }, { + "name"=> "zw", + "value"=> "zw.png" + } + ] + + flagscollection = [] + id = 0 + + flags.each do |f| + flagscollection << CustomWizard::Flag.new(f['name'], f['name'], f['value']) + id += 1 + end + + return flagscollection + end +end + \ No newline at end of file diff --git a/plugin.rb b/plugin.rb index 957682ef..f8dac434 100644 --- a/plugin.rb +++ b/plugin.rb @@ -87,6 +87,7 @@ after_initialize do load File.expand_path('../jobs/set_after_time_wizard.rb', __FILE__) load File.expand_path('../lib/builder.rb', __FILE__) load File.expand_path('../lib/field.rb', __FILE__) + load File.expand_path('../lib/flags.rb', __FILE__) load File.expand_path('../lib/step_updater.rb', __FILE__) load File.expand_path('../lib/template.rb', __FILE__) load File.expand_path('../lib/wizard.rb', __FILE__) From 938e29fe3f8ddb271a1a0d43e697005aa785c448 Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Wed, 11 Sep 2019 12:58:57 +0100 Subject: [PATCH 02/11] NEW FEATURE: can upload avatar in a wizard step --- .../discourse/components/wizard-custom-action.js.es6 | 1 + assets/javascripts/wizard/initializers/custom.js.es6 | 2 ++ lib/builder.rb | 11 +++++++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/assets/javascripts/discourse/components/wizard-custom-action.js.es6 b/assets/javascripts/discourse/components/wizard-custom-action.js.es6 index 3264541b..2514ddce 100644 --- a/assets/javascripts/discourse/components/wizard-custom-action.js.es6 +++ b/assets/javascripts/discourse/components/wizard-custom-action.js.es6 @@ -12,6 +12,7 @@ const ACTION_TYPES = [ const PROFILE_FIELDS = [ 'name', + 'user_avatar', 'date_of_birth', 'title', 'locale', diff --git a/assets/javascripts/wizard/initializers/custom.js.es6 b/assets/javascripts/wizard/initializers/custom.js.es6 index a52f7559..b7a89bd7 100644 --- a/assets/javascripts/wizard/initializers/custom.js.es6 +++ b/assets/javascripts/wizard/initializers/custom.js.es6 @@ -256,6 +256,8 @@ export default { valid = val; } else if (type === 'category') { valid = val && val.toString().length > 0; + } else if (type === 'upload') { + valid = val && val.id > 0; } else if (StandardFieldValidation.indexOf(type) > -1) { valid = val && val.length > 0; } diff --git a/lib/builder.rb b/lib/builder.rb index 9fb66e2c..299cab23 100644 --- a/lib/builder.rb +++ b/lib/builder.rb @@ -476,13 +476,20 @@ class CustomWizard::Builder custom_fields[user_field || custom_field] = data[key] else updater_key = value - if ['profile_background', 'card_background'].include?(value) updater_key = "#{value}_upload_url" end - attributes[updater_key.to_sym] = data[key] if updater_key end + + if ['user_avatar'].include?(value) + this_upload_id = data[key][:id] + user.create_user_avatar unless user.user_avatar + user.user_avatar.custom_upload_id = this_upload_id + user.uploaded_avatar_id = this_upload_id + user.save! + user.user_avatar.save! + end end if custom_fields.present? From 1597e40a8abb1e33e65584d106be9096a9a65fc3 Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Mon, 23 Sep 2019 22:16:41 +0100 Subject: [PATCH 03/11] FEATURE: added image preview for image uploads --- .../wizard/components/wizard-field-upload.js.es6 | 7 +++++++ .../wizard/templates/components/wizard-field-upload.hbs | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/assets/javascripts/wizard/components/wizard-field-upload.js.es6 b/assets/javascripts/wizard/components/wizard-field-upload.js.es6 index f7f82faf..2425fd0a 100644 --- a/assets/javascripts/wizard/components/wizard-field-upload.js.es6 +++ b/assets/javascripts/wizard/components/wizard-field-upload.js.es6 @@ -4,6 +4,7 @@ import { getToken } from "wizard/lib/ajax"; export default Ember.Component.extend({ classNames: ["wizard-field-upload"], uploading: false, + isImage: false, didInsertElement() { this._super(); @@ -30,6 +31,12 @@ export default Ember.Component.extend({ "field.value": response.result, "uploading": false }); + console.log (response.result); + if (['jpg','jpeg','png','gif'].includes(response.result.extension)) { + this.setProperties({ + "isImage": true + }) + } }); $upload.on("fileuploadfail", (e, response) => { diff --git a/assets/javascripts/wizard/templates/components/wizard-field-upload.hbs b/assets/javascripts/wizard/templates/components/wizard-field-upload.hbs index 0e24849a..10e6b0dd 100644 --- a/assets/javascripts/wizard/templates/components/wizard-field-upload.hbs +++ b/assets/javascripts/wizard/templates/components/wizard-field-upload.hbs @@ -11,6 +11,10 @@ {{#if field.value}} - {{field.value.original_filename}} + {{#unless isImage}} + {{field.value.original_filename}} + {{else}} + + {{/unless}} {{/if}} From d376e178b499c88dd84b50fd1b3f798775244368 Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Mon, 23 Sep 2019 23:00:53 +0100 Subject: [PATCH 04/11] removed console log --- assets/javascripts/wizard/components/wizard-field-upload.js.es6 | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/javascripts/wizard/components/wizard-field-upload.js.es6 b/assets/javascripts/wizard/components/wizard-field-upload.js.es6 index 2425fd0a..cd5608fb 100644 --- a/assets/javascripts/wizard/components/wizard-field-upload.js.es6 +++ b/assets/javascripts/wizard/components/wizard-field-upload.js.es6 @@ -31,7 +31,6 @@ export default Ember.Component.extend({ "field.value": response.result, "uploading": false }); - console.log (response.result); if (['jpg','jpeg','png','gif'].includes(response.result.extension)) { this.setProperties({ "isImage": true From f5fc69a90851ef50978ed3fc93312c2f979f2f93 Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Tue, 1 Oct 2019 17:13:15 +0100 Subject: [PATCH 05/11] FIX: add ability for send_message to recognise custom title --- lib/builder.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/builder.rb b/lib/builder.rb index 299cab23..aee20c46 100644 --- a/lib/builder.rb +++ b/lib/builder.rb @@ -185,7 +185,7 @@ class CustomWizard::Builder type: field_template['type'], required: field_template['required'] } - + params[:label] = field_template['label'] if field_template['label'] params[:description] = field_template['description'] if field_template['description'] params[:image] = field_template['image'] if field_template['image'] @@ -422,7 +422,12 @@ class CustomWizard::Builder end def send_message(user, action, data) - title = data[action['title']] + + unless action['custom_title_enabled'] + title = data[action['title']] + else + title = action['custom_title'] + end if action['post_builder'] post = CustomWizard::Builder.fill_placeholders(action['post_template'], user, data) From 979e896d6b27d1f8cf2ace7ac5fe9faafe485cae Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Tue, 1 Oct 2019 18:14:15 +0100 Subject: [PATCH 06/11] leave send_message if there are any empty data fields --- lib/builder.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/builder.rb b/lib/builder.rb index aee20c46..e7a25a80 100644 --- a/lib/builder.rb +++ b/lib/builder.rb @@ -423,6 +423,16 @@ class CustomWizard::Builder def send_message(user, action, data) + empty_data = false + + data.each do |k, v| + if v.empty? + empty_data = true + end + end + # leave if there are any empty fields + return if empty_data + unless action['custom_title_enabled'] title = data[action['title']] else From fe67efdb3cc232cf4ff5d597167da555464abd47 Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Tue, 1 Oct 2019 19:39:39 +0100 Subject: [PATCH 07/11] improve CSS for intellisense results presentation --- assets/stylesheets/wizard/wizard_custom.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/stylesheets/wizard/wizard_custom.scss b/assets/stylesheets/wizard/wizard_custom.scss index 88d406ad..853d371a 100644 --- a/assets/stylesheets/wizard/wizard_custom.scss +++ b/assets/stylesheets/wizard/wizard_custom.scss @@ -434,8 +434,9 @@ div.ac-wrap { width: 98.5% !important; - overflow: auto; + overflow: visible; max-height: 150px; + min-height: 34px; background-color: white; border: 1px solid #e9e9e9; padding: 5px 4px 1px 4px; From f1a310ad4a5f3d09c545540b14dd03cc303e0912 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Thu, 3 Oct 2019 10:40:06 +1000 Subject: [PATCH 08/11] FIX: zeitwork cleanup --- controllers/steps.rb | 2 +- lib/wizard_edits.rb | 4 ++++ plugin.rb | 3 --- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/controllers/steps.rb b/controllers/steps.rb index c66c7bfe..a627b960 100644 --- a/controllers/steps.rb +++ b/controllers/steps.rb @@ -1,4 +1,4 @@ -class CustomWizard::StepsController < ApplicationController +class CustomWizard::StepsController < ::ApplicationController before_action :ensure_logged_in def update diff --git a/lib/wizard_edits.rb b/lib/wizard_edits.rb index 11aa7ed8..9c834808 100644 --- a/lib/wizard_edits.rb +++ b/lib/wizard_edits.rb @@ -89,6 +89,10 @@ end def name object.name end + + def include_name? + object.respond_to?(:name) + end def background object.background diff --git a/plugin.rb b/plugin.rb index f8dac434..9c8b6458 100644 --- a/plugin.rb +++ b/plugin.rb @@ -52,7 +52,6 @@ after_initialize do put ':wizard_id/steps/:step_id' => 'steps#update' end - require_dependency 'admin_constraint' Discourse::Application.routes.append do mount ::CustomWizard::Engine, at: 'w' post 'wizard/authorization/callback' => "custom_wizard/authorization#callback" @@ -76,7 +75,6 @@ after_initialize do delete 'admin/wizards/apis/logs/:name' => 'api#clearlogs' get 'admin/wizards/apis/:name/redirect' => 'api#redirect' get 'admin/wizards/apis/:name/authorize' => 'api#authorize' - #transfer code get 'admin/wizards/transfer' => 'transfer#index' get 'admin/wizards/transfer/export' => 'transfer#export' post 'admin/wizards/transfer/import' => 'transfer#import' @@ -140,7 +138,6 @@ after_initialize do end end - require_dependency 'invites_controller' class ::InvitesController prepend InvitesControllerCustomWizard end From 96d5a189dc0eee746deb1e65b8a26e31935cc0fe Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Fri, 4 Oct 2019 22:13:41 +0100 Subject: [PATCH 09/11] Various PR fixes inc moving flag data to yml, making accepted image upload files a site setting and adding class binding for image uploads --- .../components/wizard-field-upload.js.es6 | 3 +- config/locales/server.en.yml | 1 + config/national_flags.yml | 259 ++++++ config/settings.yml | 6 + lib/builder.rb | 6 +- lib/flags.rb | 793 +----------------- 6 files changed, 275 insertions(+), 793 deletions(-) create mode 100644 config/national_flags.yml diff --git a/assets/javascripts/wizard/components/wizard-field-upload.js.es6 b/assets/javascripts/wizard/components/wizard-field-upload.js.es6 index cd5608fb..ee969eef 100644 --- a/assets/javascripts/wizard/components/wizard-field-upload.js.es6 +++ b/assets/javascripts/wizard/components/wizard-field-upload.js.es6 @@ -3,6 +3,7 @@ import { getToken } from "wizard/lib/ajax"; export default Ember.Component.extend({ classNames: ["wizard-field-upload"], + classNameBindings: ["isImage"], uploading: false, isImage: false, @@ -31,7 +32,7 @@ export default Ember.Component.extend({ "field.value": response.result, "uploading": false }); - if (['jpg','jpeg','png','gif'].includes(response.result.extension)) { + if ( Discourse.SiteSettings.wizard_recognised_image_upload_formats.split('|').includes(response.result.extension)) { this.setProperties({ "isImage": true }) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index d1c42401..e2c2d856 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -22,3 +22,4 @@ en: site_settings: wizard_redirect_exclude_paths: "Routes excluded from wizard redirects." + wizard_recognised_image_upload_formats: "File types which will result in upload displaying an image preview" diff --git a/config/national_flags.yml b/config/national_flags.yml new file mode 100644 index 00000000..9621e37d --- /dev/null +++ b/config/national_flags.yml @@ -0,0 +1,259 @@ +none: none.png +ad: ad.png +ae: ae.png +af: af.png +ag: ag.png +ai: ai.png +al: al.png +am: am.png +ao: ao.png +aq: aq.png +ar: ar.png +as: as.png +at: at.png +au: au.png +aw: aw.png +ax: ax.png +az: az.png +ba: ba.png +bb: bb.png +bd: bd.png +be: be.png +bf: bf.png +bg: bg.png +bh: bh.png +bi: bi.png +bj: bj.png +bl: bl.png +bm: bm.png +bn: bn.png +bo: bo.png +bq: bq.png +br: br.png +bs: bs.png +bt: bt.png +bv: bv.png +bw: bw.png +by: by.png +bz: bz.png +ca: ca.png +cc: cc.png +cd: cd.png +cf: cf.png +cg: cg.png +ch: ch.png +ci: ci.png +ck: ck.png +cl: cl.png +cm: cm.png +cn: cn.png +co: co.png +cr: cr.png +cu: cu.png +cv: cv.png +cw: cw.png +cx: cx.png +cy: cy.png +cz: cz.png +de: de.png +de-at: de-at.png +dj: dj.png +dk: dk.png +dm: dm.png +do: do.png +dz: dz.png +ec: ec.png +ee: ee.png +eg: eg.png +eh: eh.png +er: er.png +es: es.png +et: et.png +eu: eu.png +fi: fi.png +fj: fj.png +fk: fk.png +fm: fm.png +fo: fo.png +fr: fr.png +fr-br: fr-br.png +ga: ga.png +gb-eng: gb-eng.png +gb-nir: gb-nir.png +gb-sct: gb-sct.png +gb-wls: gb-wls.png +gb: gb.png +gd: gd.png +ge: ge.png +gf: gf.png +gg: gg.png +gh: gh.png +gi: gi.png +gl: gl.png +gm: gm.png +gn: gn.png +gp: gp.png +gq: gq.png +gr: gr.png +gs: gs.png +gt: gt.png +gu: gu.png +gw: gw.png +gy: gy.png +hk: hk.png +hm: hm.png +hn: hn.png +hr: hr.png +ht: ht.png +hu: hu.png +id: id.png +ie: ie.png +il: il.png +im: im.png +in: in.png +io: io.png +iq: iq.png +ir: ir.png +is: is.png +it: it.png +je: je.png +jm: jm.png +jo: jo.png +jp: jp.png +ke: ke.png +kg: kg.png +kh: kh.png +ki: ki.png +km: km.png +kn: kn.png +kp: kp.png +kr: kr.png +kw: kw.png +ky: ky.png +kz: kz.png +la: la.png +lb: lb.png +lc: lc.png +li: li.png +lk: lk.png +lr: lr.png +ls: ls.png +lt: lt.png +lu: lu.png +lv: lv.png +ly: ly.png +ma: ma.png +mc: mc.png +md: md.png +me: me.png +mf: mf.png +mg: mg.png +mh: mh.png +mk: mk.png +ml: ml.png +mm: mm.png +mn: mn.png +mo: mo.png +mp: mp.png +mq: mq.png +mr: mr.png +ms: ms.png +mt: mt.png +mu: mu.png +mv: mv.png +mw: mw.png +mx: mx.png +my: my.png +mz: mz.png +na: na.png +nc: nc.png +ne: ne.png +nf: nf.png +ng: ng.png +ni: ni.png +nl: nl.png +no: no.png +np: np.png +nr: nr.png +nu: nu.png +nz: nz.png +om: om.png +pa: pa.png +pe: pe.png +pf: pf.png +pg: pg.png +ph: ph.png +pk: pk.png +pl: pl.png +pm: pm.png +pn: pn.png +pr: pr.png +ps: ps.png +pt: pt.png +pw: pw.png +py: py.png +qa: qa.png +re: re.png +ro: ro.png +rs: rs.png +ru: ru.png +rw: rw.png +sa: sa.png +sb: sb.png +sc: sc.png +sd: sd.png +se: se.png +sg: sg.png +sh: sh.png +si: si.png +sj: sj.png +sk: sk.png +sl: sl.png +sm: sm.png +sn: sn.png +so: so.png +sr: sr.png +ss: ss.png +st: st.png +sv: sv.png +sx: sx.png +sy: sy.png +sz: sz.png +tc: tc.png +td: td.png +tf: tf.png +tg: tg.png +th: th.png +tj: tj.png +tk: tk.png +tl: tl.png +tm: tm.png +tn: tn.png +to: to.png +tr: tr.png +tt: tt.png +tv: tv.png +tw: tw.png +tz: tz.png +ua: ua.png +ug: ug.png +um: um.png +un: un.png +us: us.png +us-at: us-at.png +uy: uy.png +uz: uz.png +va: va.png +vc: vc.png +ve: ve.png +vg: vg.png +vi: vi.png +vn: vn.png +vu: vu.png +wf: wf.png +ws: ws.png +ye: ye.png +yt: yt.png +za: za.png +zm: zm.png +zw: zw.png diff --git a/config/settings.yml b/config/settings.yml index 703f541e..2185676a 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -6,3 +6,9 @@ plugins: choices: - admin - privacy + wizard_recognised_image_upload_formats: + client: true + default: "jpg|jpeg|png|gif" + refresh: true + type: list + list_type: compact diff --git a/lib/builder.rb b/lib/builder.rb index e7a25a80..382a8e39 100644 --- a/lib/builder.rb +++ b/lib/builder.rb @@ -433,10 +433,10 @@ class CustomWizard::Builder # leave if there are any empty fields return if empty_data - unless action['custom_title_enabled'] - title = data[action['title']] + if action['custom_title_enabled'] + title = CustomWizard::Builder.fill_placeholders(action['custom_title'], user, data) else - title = action['custom_title'] + title = data[action['title']] end if action['post_builder'] diff --git a/lib/flags.rb b/lib/flags.rb index 93d5ecc0..175aaa84 100644 --- a/lib/flags.rb +++ b/lib/flags.rb @@ -21,799 +21,14 @@ end class CustomWizard::Flags def self.list - - flags = [ - { "id" => 0, - "name"=> "none", - "value"=> "none.png" - }, { - "id"=> 1, - "name"=> "ad", - "value"=> "ad.png" - }, { - "id"=> 2, - "name"=> "ae", - "value"=> "ae.png" - }, { - "name"=> "af", - "value"=> "af.png" - }, { - "name"=> "ag", - "value"=> "ag.png" - }, { - "name"=> "ai", - "value"=> "ai.png" - }, { - "name"=> "al", - "value"=> "al.png" - }, { - "name"=> "am", - "value"=> "am.png" - }, { - "name"=> "ao", - "value"=> "ao.png" - }, { - "name"=> "aq", - "value"=> "aq.png" - }, { - "name"=> "ar", - "value"=> "ar.png" - }, { - "name"=> "as", - "value"=> "as.png" - }, { - "name"=> "at", - "value"=> "at.png" - }, { - "name"=> "au", - "value"=> "au.png" - }, { - "name"=> "aw", - "value"=> "aw.png" - }, { - "name"=> "ax", - "value"=> "ax.png" - }, { - "name"=> "az", - "value"=> "az.png" - }, { - "name"=> "ba", - "value"=> "ba.png" - }, { - "name"=> "bb", - "value"=> "bb.png" - }, { - "name"=> "bd", - "value"=> "bd.png" - }, { - "name"=> "be", - "value"=> "be.png" - }, { - "name"=> "bf", - "value"=> "bf.png" - }, { - "name"=> "bg", - "value"=> "bg.png" - }, { - "name"=> "bh", - "value"=> "bh.png" - }, { - "name"=> "bi", - "value"=> "bi.png" - }, { - "name"=> "bj", - "value"=> "bj.png" - }, { - "name"=> "bl", - "value"=> "bl.png" - }, { - "name"=> "bm", - "value"=> "bm.png" - }, { - "name"=> "bn", - "value"=> "bn.png" - }, { - "name"=> "bo", - "value"=> "bo.png" - }, { - "name"=> "bq", - "value"=> "bq.png" - }, { - "name"=> "br", - "value"=> "br.png" - }, { - "name"=> "bs", - "value"=> "bs.png" - }, { - "name"=> "bt", - "value"=> "bt.png" - }, { - "name"=> "bv", - "value"=> "bv.png" - }, { - "name"=> "bw", - "value"=> "bw.png" - }, { - "name"=> "by", - "value"=> "by.png" - }, { - "name"=> "bz", - "value"=> "bz.png" - }, { - "name"=> "ca", - "value"=> "ca.png" - }, { - "name"=> "cc", - "value"=> "cc.png" - }, { - "name"=> "cd", - "value"=> "cd.png" - }, { - "name"=> "cf", - "value"=> "cf.png" - }, { - "name"=> "cg", - "value"=> "cg.png" - }, { - "name"=> "ch", - "value"=> "ch.png" - }, { - "name"=> "ci", - "value"=> "ci.png" - }, { - "name"=> "ck", - "value"=> "ck.png" - }, { - "name"=> "cl", - "value"=> "cl.png" - }, { - "name"=> "cm", - "value"=> "cm.png" - }, { - "name"=> "cn", - "value"=> "cn.png" - }, { - "name"=> "co", - "value"=> "co.png" - }, { - "name"=> "cr", - "value"=> "cr.png" - }, { - "name"=> "cu", - "value"=> "cu.png" - }, { - "name"=> "cv", - "value"=> "cv.png" - }, { - "name"=> "cw", - "value"=> "cw.png" - }, { - "name"=> "cx", - "value"=> "cx.png" - }, { - "name"=> "cy", - "value"=> "cy.png" - }, { - "name"=> "cz", - "value"=> "cz.png" - }, { - "name"=> "de", - "value"=> "de.png" - }, { - "name"=> "de-at", - "value"=> "de-at.png" - }, { - "name"=> "dj", - "value"=> "dj.png" - }, { - "name"=> "dk", - "value"=> "dk.png" - }, { - "name"=> "dm", - "value"=> "dm.png" - }, { - "name"=> "do", - "value"=> "do.png" - }, { - "name"=> "dz", - "value"=> "dz.png" - }, { - "name"=> "ec", - "value"=> "ec.png" - }, { - "name"=> "ee", - "value"=> "ee.png" - }, { - "name"=> "eg", - "value"=> "eg.png" - }, { - "name"=> "eh", - "value"=> "eh.png" - }, { - "name"=> "er", - "value"=> "er.png" - }, { - "name"=> "es", - "value"=> "es.png" - }, { - "name"=> "et", - "value"=> "et.png" - }, { - "name"=> "eu", - "value"=> "eu.png" - }, { - "name"=> "fi", - "value"=> "fi.png" - }, { - "name"=> "fj", - "value"=> "fj.png" - }, { - "name"=> "fk", - "value"=> "fk.png" - }, { - "name"=> "fm", - "value"=> "fm.png" - }, { - "name"=> "fo", - "value"=> "fo.png" - }, { - "name"=> "fr", - "value"=> "fr.png" - }, { - "name"=> "fr-br", - "value"=> "fr-br.png" - }, { - "name"=> "ga", - "value"=> "ga.png" - }, { - "name"=> "gb-eng", - "value"=> "gb-eng.png" - }, { - "name"=> "gb-nir", - "value"=> "gb-nir.png" - }, { - "name"=> "gb-sct", - "value"=> "gb-sct.png" - }, { - "name"=> "gb-wls", - "value"=> "gb-wls.png" - }, { - "name"=> "gb", - "value"=> "gb.png" - }, { - "name"=> "gd", - "value"=> "gd.png" - }, { - "name"=> "ge", - "value"=> "ge.png" - }, { - "name"=> "gf", - "value"=> "gf.png" - }, { - "name"=> "gg", - "value"=> "gg.png" - }, { - "name"=> "gh", - "value"=> "gh.png" - }, { - "name"=> "gi", - "value"=> "gi.png" - }, { - "name"=> "gl", - "value"=> "gl.png" - }, { - "name"=> "gm", - "value"=> "gm.png" - }, { - "name"=> "gn", - "value"=> "gn.png" - }, { - "name"=> "gp", - "value"=> "gp.png" - }, { - "name"=> "gq", - "value"=> "gq.png" - }, { - "name"=> "gr", - "value"=> "gr.png" - }, { - "name"=> "gs", - "value"=> "gs.png" - }, { - "name"=> "gt", - "value"=> "gt.png" - }, { - "name"=> "gu", - "value"=> "gu.png" - }, { - "name"=> "gw", - "value"=> "gw.png" - }, { - "name"=> "gy", - "value"=> "gy.png" - }, { - "name"=> "hk", - "value"=> "hk.png" - }, { - "name"=> "hm", - "value"=> "hm.png" - }, { - "name"=> "hn", - "value"=> "hn.png" - }, { - "name"=> "hr", - "value"=> "hr.png" - }, { - "name"=> "ht", - "value"=> "ht.png" - }, { - "name"=> "hu", - "value"=> "hu.png" - }, { - "name"=> "id", - "value"=> "id.png" - }, { - "name"=> "ie", - "value"=> "ie.png" - }, { - "name"=> "il", - "value"=> "il.png" - }, { - "name"=> "im", - "value"=> "im.png" - }, { - "name"=> "in", - "value"=> "in.png" - }, { - "name"=> "io", - "value"=> "io.png" - }, { - "name"=> "iq", - "value"=> "iq.png" - }, { - "name"=> "ir", - "value"=> "ir.png" - }, { - "name"=> "is", - "value"=> "is.png" - }, { - "name"=> "it", - "value"=> "it.png" - }, { - "name"=> "je", - "value"=> "je.png" - }, { - "name"=> "jm", - "value"=> "jm.png" - }, { - "name"=> "jo", - "value"=> "jo.png" - }, { - "name"=> "jp", - "value"=> "jp.png" - }, { - "name"=> "ke", - "value"=> "ke.png" - }, { - "name"=> "kg", - "value"=> "kg.png" - }, { - "name"=> "kh", - "value"=> "kh.png" - }, { - "name"=> "ki", - "value"=> "ki.png" - }, { - "name"=> "km", - "value"=> "km.png" - }, { - "name"=> "kn", - "value"=> "kn.png" - }, { - "name"=> "kp", - "value"=> "kp.png" - }, { - "name"=> "kr", - "value"=> "kr.png" - }, { - "name"=> "kw", - "value"=> "kw.png" - }, { - "name"=> "ky", - "value"=> "ky.png" - }, { - "name"=> "kz", - "value"=> "kz.png" - }, { - "name"=> "la", - "value"=> "la.png" - }, { - "name"=> "lb", - "value"=> "lb.png" - }, { - "name"=> "lc", - "value"=> "lc.png" - }, { - "name"=> "li", - "value"=> "li.png" - }, { - "name"=> "lk", - "value"=> "lk.png" - }, { - "name"=> "lr", - "value"=> "lr.png" - }, { - "name"=> "ls", - "value"=> "ls.png" - }, { - "name"=> "lt", - "value"=> "lt.png" - }, { - "name"=> "lu", - "value"=> "lu.png" - }, { - "name"=> "lv", - "value"=> "lv.png" - }, { - "name"=> "ly", - "value"=> "ly.png" - }, { - "name"=> "ma", - "value"=> "ma.png" - }, { - "name"=> "mc", - "value"=> "mc.png" - }, { - "name"=> "md", - "value"=> "md.png" - }, { - "name"=> "me", - "value"=> "me.png" - }, { - "name"=> "mf", - "value"=> "mf.png" - }, { - "name"=> "mg", - "value"=> "mg.png" - }, { - "name"=> "mh", - "value"=> "mh.png" - }, { - "name"=> "mk", - "value"=> "mk.png" - }, { - "name"=> "ml", - "value"=> "ml.png" - }, { - "name"=> "mm", - "value"=> "mm.png" - }, { - "name"=> "mn", - "value"=> "mn.png" - }, { - "name"=> "mo", - "value"=> "mo.png" - }, { - "name"=> "mp", - "value"=> "mp.png" - }, { - "name"=> "mq", - "value"=> "mq.png" - }, { - "name"=> "mr", - "value"=> "mr.png" - }, { - "name"=> "ms", - "value"=> "ms.png" - }, { - "name"=> "mt", - "value"=> "mt.png" - }, { - "name"=> "mu", - "value"=> "mu.png" - }, { - "name"=> "mv", - "value"=> "mv.png" - }, { - "name"=> "mw", - "value"=> "mw.png" - }, { - "name"=> "mx", - "value"=> "mx.png" - }, { - "name"=> "my", - "value"=> "my.png" - }, { - "name"=> "mz", - "value"=> "mz.png" - }, { - "name"=> "na", - "value"=> "na.png" - }, { - "name"=> "nc", - "value"=> "nc.png" - }, { - "name"=> "ne", - "value"=> "ne.png" - }, { - "name"=> "nf", - "value"=> "nf.png" - }, { - "name"=> "ng", - "value"=> "ng.png" - }, { - "name"=> "ni", - "value"=> "ni.png" - }, { - "name"=> "nl", - "value"=> "nl.png" - }, { - "name"=> "no", - "value"=> "no.png" - }, { - "name"=> "np", - "value"=> "np.png" - }, { - "name"=> "nr", - "value"=> "nr.png" - }, { - "name"=> "nu", - "value"=> "nu.png" - }, { - "name"=> "nz", - "value"=> "nz.png" - }, { - "name"=> "om", - "value"=> "om.png" - }, { - "name"=> "pa", - "value"=> "pa.png" - }, { - "name"=> "pe", - "value"=> "pe.png" - }, { - "name"=> "pf", - "value"=> "pf.png" - }, { - "name"=> "pg", - "value"=> "pg.png" - }, { - "name"=> "ph", - "value"=> "ph.png" - }, { - "name"=> "pk", - "value"=> "pk.png" - }, { - "name"=> "pl", - "value"=> "pl.png" - }, { - "name"=> "pm", - "value"=> "pm.png" - }, { - "name"=> "pn", - "value"=> "pn.png" - }, { - "name"=> "pr", - "value"=> "pr.png" - }, { - "name"=> "ps", - "value"=> "ps.png" - }, { - "name"=> "pt", - "value"=> "pt.png" - }, { - "name"=> "pw", - "value"=> "pw.png" - }, { - "name"=> "py", - "value"=> "py.png" - }, { - "name"=> "qa", - "value"=> "qa.png" - }, { - "name"=> "re", - "value"=> "re.png" - }, { - "name"=> "ro", - "value"=> "ro.png" - }, { - "name"=> "rs", - "value"=> "rs.png" - }, { - "name"=> "ru", - "value"=> "ru.png" - }, { - "name"=> "rw", - "value"=> "rw.png" - }, { - "name"=> "sa", - "value"=> "sa.png" - }, { - "name"=> "sb", - "value"=> "sb.png" - }, { - "name"=> "sc", - "value"=> "sc.png" - }, { - "name"=> "sd", - "value"=> "sd.png" - }, { - "name"=> "se", - "value"=> "se.png" - }, { - "name"=> "sg", - "value"=> "sg.png" - }, { - "name"=> "sh", - "value"=> "sh.png" - }, { - "name"=> "si", - "value"=> "si.png" - }, { - "name"=> "sj", - "value"=> "sj.png" - }, { - "name"=> "sk", - "value"=> "sk.png" - }, { - "name"=> "sl", - "value"=> "sl.png" - }, { - "name"=> "sm", - "value"=> "sm.png" - }, { - "name"=> "sn", - "value"=> "sn.png" - }, { - "name"=> "so", - "value"=> "so.png" - }, { - "name"=> "sr", - "value"=> "sr.png" - }, { - "name"=> "ss", - "value"=> "ss.png" - }, { - "name"=> "st", - "value"=> "st.png" - }, { - "name"=> "sv", - "value"=> "sv.png" - }, { - "name"=> "sx", - "value"=> "sx.png" - }, { - "name"=> "sy", - "value"=> "sy.png" - }, { - "name"=> "sz", - "value"=> "sz.png" - }, { - "name"=> "tc", - "value"=> "tc.png" - }, { - "name"=> "td", - "value"=> "td.png" - }, { - "name"=> "tf", - "value"=> "tf.png" - }, { - "name"=> "tg", - "value"=> "tg.png" - }, { - "name"=> "th", - "value"=> "th.png" - }, { - "name"=> "tj", - "value"=> "tj.png" - }, { - "name"=> "tk", - "value"=> "tk.png" - }, { - "name"=> "tl", - "value"=> "tl.png" - }, { - "name"=> "tm", - "value"=> "tm.png" - }, { - "name"=> "tn", - "value"=> "tn.png" - }, { - "name"=> "to", - "value"=> "to.png" - }, { - "name"=> "tr", - "value"=> "tr.png" - }, { - "name"=> "tt", - "value"=> "tt.png" - }, { - "name"=> "tv", - "value"=> "tv.png" - }, { - "name"=> "tw", - "value"=> "tw.png" - }, { - "name"=> "tz", - "value"=> "tz.png" - }, { - "name"=> "ua", - "value"=> "ua.png" - }, { - "name"=> "ug", - "value"=> "ug.png" - }, { - "name"=> "um", - "value"=> "um.png" - }, { - "name"=> "un", - "value"=> "un.png" - }, { - "name"=> "us", - "value"=> "us.png" - }, { - "name"=> "us-at", - "value"=> "us-at.png" - }, { - "name"=> "uy", - "value"=> "uy.png" - }, { - "name"=> "uz", - "value"=> "uz.png" - }, { - "name"=> "va", - "value"=> "va.png" - }, { - "name"=> "vc", - "value"=> "vc.png" - }, { - "name"=> "ve", - "value"=> "ve.png" - }, { - "name"=> "vg", - "value"=> "vg.png" - }, { - "name"=> "vi", - "value"=> "vi.png" - }, { - "name"=> "vn", - "value"=> "vn.png" - }, { - "name"=> "vu", - "value"=> "vu.png" - }, { - "name"=> "wf", - "value"=> "wf.png" - }, { - "name"=> "ws", - "value"=> "ws.png" - }, { - "name"=> "ye", - "value"=> "ye.png" - }, { - "name"=> "yt", - "value"=> "yt.png" - }, { - "name"=> "za", - "value"=> "za.png" - }, { - "name"=> "zm", - "value"=> "zm.png" - }, { - "name"=> "zw", - "value"=> "zw.png" - } - ] + raw_flags = YAML.safe_load(File.read(File.join(Rails.root, 'plugins', 'discourse-custom-wizard', 'config', 'national_flags.yml'))) flagscollection = [] - id = 0 - flags.each do |f| - flagscollection << CustomWizard::Flag.new(f['name'], f['name'], f['value']) - id += 1 + raw_flags.map do |name, code| + flagscollection << CustomWizard::Flag.new(name, name, code) end - return flagscollection + flagscollection end end - \ No newline at end of file From d1b4a96e2c56c55c9afb5326d56d37d23fe72877 Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Wed, 9 Oct 2019 16:02:06 +0100 Subject: [PATCH 10/11] FIX: better solution for setting a required field for send_message --- .../templates/components/wizard-custom-action.hbs | 11 +++++++++++ lib/builder.rb | 12 +++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs b/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs index 824030bd..9f69294c 100644 --- a/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs +++ b/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs @@ -143,6 +143,17 @@ {{/if}} {{#if sendMessage}} +
+
+

{{i18n 'admin.wizard.required'}}

+
+
+ {{combo-box content=availableFields + nameProperty='label' + none='admin.wizard.select_field' + value=action.required}} +
+

{{i18n "admin.wizard.action.send_message.recipient"}}

diff --git a/lib/builder.rb b/lib/builder.rb index 382a8e39..776687ec 100644 --- a/lib/builder.rb +++ b/lib/builder.rb @@ -423,16 +423,10 @@ class CustomWizard::Builder def send_message(user, action, data) - empty_data = false - - data.each do |k, v| - if v.empty? - empty_data = true - end + if action['required'].present? && data[action['required']].blank? + return end - # leave if there are any empty fields - return if empty_data - + if action['custom_title_enabled'] title = CustomWizard::Builder.fill_placeholders(action['custom_title'], user, data) else From 7e0c2b37f4eb195dadcdc24c62967e864a2fbbfb Mon Sep 17 00:00:00 2001 From: Robert Barrow Date: Sat, 12 Oct 2019 18:55:01 +0100 Subject: [PATCH 11/11] update to fix search for flag dropdown --- lib/flags.rb | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/flags.rb b/lib/flags.rb index 175aaa84..00f29866 100644 --- a/lib/flags.rb +++ b/lib/flags.rb @@ -1,8 +1,7 @@ class CustomWizard::Flag - def initialize(id, name, value) - @id = id - @name = name - @value = value + def initialize(id, name) + @id = id + @name = name end def id @@ -12,10 +11,6 @@ class CustomWizard::Flag def name @name end - - def value - @value - end end class CustomWizard::Flags @@ -25,8 +20,10 @@ class CustomWizard::Flags flagscollection = [] - raw_flags.map do |name, code| - flagscollection << CustomWizard::Flag.new(name, name, code) + raw_flags.map do |name, pic| + # This is super hacky. Adding the trailing space actually stops search breaking in the dropdown! (and doesn't compromise the view!) + # Feeding just name, name will break search + flagscollection << CustomWizard::Flag.new(name, "#{name} ") end flagscollection