diff --git a/app/assets/javascripts/admin/components/admin-user-field-item.js.es6 b/app/assets/javascripts/admin/components/admin-user-field-item.js.es6
index d10280daf..907f803ae 100644
--- a/app/assets/javascripts/admin/components/admin-user-field-item.js.es6
+++ b/app/assets/javascripts/admin/components/admin-user-field-item.js.es6
@@ -43,9 +43,12 @@ export default Ember.Component.extend(bufferedProperty('userField'), {
if (this.get('userField.show_on_profile')) {
ret.push(I18n.t('admin.user_fields.show_on_profile.enabled'));
}
+ if (this.get('userField.show_on_user_card')) {
+ ret.push(I18n.t('admin.user_fields.show_on_user_card.enabled'));
+ }
return ret.join(', ');
- }.property('userField.editable', 'userField.required', 'userField.show_on_profile'),
+ }.property('userField.editable', 'userField.required', 'userField.show_on_profile', 'userField.show_on_user_card'),
actions: {
save() {
@@ -57,6 +60,7 @@ export default Ember.Component.extend(bufferedProperty('userField'), {
'editable',
'required',
'show_on_profile',
+ 'show_on_user_card',
'options');
this.get('userField').save(attrs).then(function() {
diff --git a/app/assets/javascripts/admin/templates/components/admin-user-field-item.hbs b/app/assets/javascripts/admin/templates/components/admin-user-field-item.hbs
index 36fa8c3b8..c5620d84e 100644
--- a/app/assets/javascripts/admin/templates/components/admin-user-field-item.hbs
+++ b/app/assets/javascripts/admin/templates/components/admin-user-field-item.hbs
@@ -29,6 +29,10 @@
{{input type="checkbox" checked=buffered.show_on_profile}} {{i18n 'admin.user_fields.show_on_profile.title'}}
{{/admin-form-row}}
+ {{#admin-form-row wrapLabel="true"}}
+ {{input type="checkbox" checked=buffered.show_on_user_card}} {{i18n 'admin.user_fields.show_on_user_card.title'}}
+ {{/admin-form-row}}
+
{{#admin-form-row}}
{{d-button action="save" class="btn-primary" icon="check" label="admin.user_fields.save"}}
{{d-button action="cancel" class="btn-danger" icon="times" label="admin.user_fields.cancel"}}
diff --git a/app/assets/javascripts/discourse/controllers/user-card.js.es6 b/app/assets/javascripts/discourse/controllers/user-card.js.es6
index a78407f22..0c8f99549 100644
--- a/app/assets/javascripts/discourse/controllers/user-card.js.es6
+++ b/app/assets/javascripts/discourse/controllers/user-card.js.es6
@@ -1,5 +1,6 @@
import DiscourseURL from 'discourse/lib/url';
import { propertyNotEqual, setting } from 'discourse/lib/computed';
+import computed from 'ember-addons/ember-computed-decorators';
export default Ember.Controller.extend({
needs: ['topic', 'application'],
@@ -26,6 +27,19 @@ export default Ember.Controller.extend({
showMoreBadges: Em.computed.gt('moreBadgesCount', 0),
showDelete: Em.computed.and("viewingAdmin", "showName", "user.canBeDeleted"),
+ @computed('model.user_fields.@each.value')
+ publicUserFields() {
+ const siteUserFields = this.site.get('user_fields');
+ if (!Ember.isEmpty(siteUserFields)) {
+ const userFields = this.get('user.user_fields');
+ return siteUserFields.filterProperty('show_on_user_card', true).sortBy('position').map(field => {
+ Ember.set(field, 'dasherized_name', field.get('name').dasherize());
+ const value = userFields ? userFields[field.get('id')] : null;
+ return Ember.isEmpty(value) ? null : Ember.Object.create({ value, field });
+ }).compact();
+ }
+ },
+
moreBadgesCount: function() {
return this.get('user.badge_count') - this.get('user.featured_user_badges.length');
}.property('user.badge_count', 'user.featured_user_badges.@each'),
diff --git a/app/assets/javascripts/discourse/templates/user-card.hbs b/app/assets/javascripts/discourse/templates/user-card.hbs
index 9b8bf40bb..ecbc84d12 100644
--- a/app/assets/javascripts/discourse/templates/user-card.hbs
+++ b/app/assets/javascripts/discourse/templates/user-card.hbs
@@ -65,6 +65,19 @@
{{/if}}
+ {{#if publicUserFields}}
+
+ {{#each uf in publicUserFields}}
+ {{#if uf.value}}
+
+ {{uf.field.name}}:
+ {{uf.value}}
+
+ {{/if}}
+ {{/each}}
+
+ {{/if}}
+
{{#if showBadges}}
{{#each ub in user.featured_user_badges}}
diff --git a/app/controllers/admin/user_fields_controller.rb b/app/controllers/admin/user_fields_controller.rb
index e6bf7b208..596b53e4e 100644
--- a/app/controllers/admin/user_fields_controller.rb
+++ b/app/controllers/admin/user_fields_controller.rb
@@ -1,7 +1,7 @@
class Admin::UserFieldsController < Admin::AdminController
def self.columns
- [:name, :field_type, :editable, :description, :required, :show_on_profile, :position]
+ [:name, :field_type, :editable, :description, :required, :show_on_profile, :show_on_user_card, :position]
end
def create
diff --git a/app/models/user_field.rb b/app/models/user_field.rb
index 7086f1e0e..a63007c9b 100644
--- a/app/models/user_field.rb
+++ b/app/models/user_field.rb
@@ -12,14 +12,15 @@ end
#
# Table name: user_fields
#
-# id :integer not null, primary key
-# name :string not null
-# field_type :string not null
-# created_at :datetime
-# updated_at :datetime
-# editable :boolean default(FALSE), not null
-# description :string not null
-# required :boolean default(TRUE), not null
-# show_on_profile :boolean default(FALSE), not null
-# position :integer default(0)
+# id :integer not null, primary key
+# name :string not null
+# field_type :string not null
+# created_at :datetime
+# updated_at :datetime
+# editable :boolean default(FALSE), not null
+# description :string not null
+# required :boolean default(TRUE), not null
+# show_on_profile :boolean default(FALSE), not null
+# show_on_user_card :boolean default(FALSE), not null
+# position :integer default(0)
#
diff --git a/app/serializers/user_field_serializer.rb b/app/serializers/user_field_serializer.rb
index 7c0689806..22aef424f 100644
--- a/app/serializers/user_field_serializer.rb
+++ b/app/serializers/user_field_serializer.rb
@@ -6,6 +6,7 @@ class UserFieldSerializer < ApplicationSerializer
:editable,
:required,
:show_on_profile,
+ :show_on_user_card,
:position,
:options
diff --git a/config/locales/client.de.yml b/config/locales/client.de.yml
index c298f43e6..74d859adb 100644
--- a/config/locales/client.de.yml
+++ b/config/locales/client.de.yml
@@ -2443,6 +2443,10 @@ de:
title: "Im öffentlichen Profil anzeigen?"
enabled: "wird im Profil angezeigt"
disabled: "wird im Profil nicht angezeigt"
+ show_on_user_card:
+ title: "Auf Benutzerkarte anzeigen?"
+ enabled: "wird auf Benutzerkarte angezeigt"
+ disabled: "wird auf Benutzerkarte nicht angezeigt"
field_types:
text: 'Textfeld'
confirm: 'Bestätigung'
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 194b49a71..b5f27d3b7 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -2640,6 +2640,10 @@ en:
title: "Show on public profile?"
enabled: "shown on profile"
disabled: "not shown on profile"
+ show_on_user_card:
+ title: "Show on user card?"
+ enabled: "shown on user card"
+ disabled: "not shown on user card"
field_types:
text: 'Text Field'
diff --git a/db/migrate/20160408131959_add_show_on_user_card_to_user_fields.rb b/db/migrate/20160408131959_add_show_on_user_card_to_user_fields.rb
new file mode 100644
index 000000000..9713abb4d
--- /dev/null
+++ b/db/migrate/20160408131959_add_show_on_user_card_to_user_fields.rb
@@ -0,0 +1,5 @@
+class AddShowOnUserCardToUserFields < ActiveRecord::Migration
+ def change
+ add_column :user_fields, :show_on_user_card, :boolean, default: false, null: false
+ end
+end
diff --git a/script/import_scripts/ning.rb b/script/import_scripts/ning.rb
index d5a81944b..99d81e2d9 100644
--- a/script/import_scripts/ning.rb
+++ b/script/import_scripts/ning.rb
@@ -26,7 +26,7 @@ class ImportScripts::Ning < ImportScripts::Base
# Example of importing a custom profile field:
# @interests_field = UserField.find_by_name("My interests")
# unless @interests_field
- # @interests_field = UserField.create(name: "My interests", description: "Do you like stuff?", field_type: "text", editable: true, required: false, show_on_profile: true)
+ # @interests_field = UserField.create(name: "My interests", description: "Do you like stuff?", field_type: "text", editable: true, required: false, show_on_profile: true, show_on_user_card: true)
# end
end