1
0
Fork 0

Add custom user fields to actions

Dieser Commit ist enthalten in:
Angus McLeod 2018-02-04 15:52:53 +08:00
Ursprung 080bb7e49c
Commit d837a7c9bc
2 geänderte Dateien mit 31 neuen und 5 gelöschten Zeilen

Datei anzeigen

@ -179,6 +179,7 @@
{{wizard-custom-input inputs=action.profile_updates {{wizard-custom-input inputs=action.profile_updates
valueContent=profileFields valueContent=profileFields
keyContent=availableFields keyContent=availableFields
noneValue='admin.wizard.action.update_profile.profile_field'}} noneValue='admin.wizard.action.update_profile.profile_field'
optionalCustom=true}}
</div> </div>
{{/if}} {{/if}}

Datei anzeigen

@ -80,7 +80,11 @@ class CustomWizard::Builder
profile_actions.each do |action| profile_actions.each do |action|
if update = action['profile_updates'].select { |u| u['key'] === f['id'] }.first if update = action['profile_updates'].select { |u| u['key'] === f['id'] }.first
attribute = update['value'] attribute = update['value']
if UserProfile.column_names.include? attribute custom_field = update['value_custom']
if custom_field
name = custom_field.split('.').try(:last) || nil
params[:value] = UserCustomField.where(user_id: @wizard.user.id, name: name).pluck(:value)
elsif UserProfile.column_names.include? attribute
params[:value] = UserProfile.find_by(user_id: @wizard.user.id).send(attribute) params[:value] = UserProfile.find_by(user_id: @wizard.user.id).send(attribute)
elsif User.column_names.include? attribute elsif User.column_names.include? attribute
params[:value] = User.find(@wizard.user.id).send(attribute) params[:value] = User.find(@wizard.user.id).send(attribute)
@ -285,12 +289,33 @@ class CustomWizard::Builder
end end
if a['type'] === 'update_profile' && a['profile_updates'].length && data if a['type'] === 'update_profile' && a['profile_updates'].length && data
user_updater = UserUpdater.new(user, user)
attributes = {} attributes = {}
custom_fields = {}
a['profile_updates'].each do |pu| a['profile_updates'].each do |pu|
attributes[pu['value'].to_sym] = data[pu['key']] value = pu['value']
custom_value = pu['value_custom']
key = pu['key']
if custom_value
name = custom_value.split('.').try(:last) || nil
custom_fields[name] = data[key]
else
attributes[value.to_sym] = data[key]
end
end
if custom_fields.present?
custom_fields.each do |k, v|
user.custom_fields[k] = v
end
user.save_custom_fields(true)
end
if attributes.present?
user_updater = UserUpdater.new(user, user)
user_updater.update(attributes)
end end
user_updater.update(attributes) if attributes.present?
end end
end end
end end