Merge pull request #16611 from edx/afzaledx/WL-1219
Added extended profile fields to the Account settings page.
This commit is contained in:
@@ -24,7 +24,8 @@
|
||||
requires_parental_consent: true,
|
||||
profile_image: null,
|
||||
accomplishments_shared: false,
|
||||
default_public_account_fields: []
|
||||
default_public_account_fields: [],
|
||||
extended_profile: []
|
||||
},
|
||||
|
||||
parse: function(response) {
|
||||
|
||||
@@ -26,14 +26,15 @@
|
||||
syncLearnerProfileData,
|
||||
enterpriseName,
|
||||
enterpriseReadonlyAccountFields,
|
||||
edxSupportUrl
|
||||
edxSupportUrl,
|
||||
extendedProfileFields
|
||||
) {
|
||||
var $accountSettingsElement, userAccountModel, userPreferencesModel, aboutSectionsData,
|
||||
accountsSectionData, ordersSectionData, accountSettingsView, showAccountSettingsPage,
|
||||
showLoadingError, orderNumber, getUserField, userFields, timeZoneDropdownField, countryDropdownField,
|
||||
emailFieldView, socialFields, platformData,
|
||||
aboutSectionMessageType, aboutSectionMessage, fullnameFieldView, countryFieldView,
|
||||
fullNameFieldData, emailFieldData, countryFieldData;
|
||||
fullNameFieldData, emailFieldData, countryFieldData, additionalFields, fieldItem;
|
||||
|
||||
$accountSettingsElement = $('.wrapper-account-settings');
|
||||
|
||||
@@ -231,6 +232,37 @@
|
||||
}
|
||||
];
|
||||
|
||||
// Add the extended profile fields
|
||||
additionalFields = aboutSectionsData[1];
|
||||
for (var field in extendedProfileFields) { // eslint-disable-line guard-for-in, no-restricted-syntax, vars-on-top, max-len
|
||||
fieldItem = extendedProfileFields[field];
|
||||
if (fieldItem.field_type === 'TextField') {
|
||||
additionalFields.fields.push({
|
||||
view: new AccountSettingsFieldViews.ExtendedFieldTextFieldView({
|
||||
model: userAccountModel,
|
||||
title: fieldItem.field_label,
|
||||
fieldName: fieldItem.field_name,
|
||||
valueAttribute: 'extended_profile',
|
||||
persistChanges: true
|
||||
})
|
||||
});
|
||||
} else {
|
||||
if (fieldItem.field_type === 'ListField') {
|
||||
additionalFields.fields.push({
|
||||
view: new AccountSettingsFieldViews.ExtendedFieldListFieldView({
|
||||
model: userAccountModel,
|
||||
title: fieldItem.field_label,
|
||||
fieldName: fieldItem.field_name,
|
||||
options: fieldItem.field_options,
|
||||
valueAttribute: 'extended_profile',
|
||||
persistChanges: true
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Add the social link fields
|
||||
socialFields = {
|
||||
title: gettext('Social Media Links'),
|
||||
|
||||
@@ -217,9 +217,10 @@
|
||||
}
|
||||
},
|
||||
saveValue: function() {
|
||||
var attributes = {},
|
||||
value = '';
|
||||
if (this.persistChanges === true) {
|
||||
var attributes = {},
|
||||
value = this.fieldValue() ? [{code: this.fieldValue()}] : [];
|
||||
value = this.fieldValue() ? [{code: this.fieldValue()}] : [];
|
||||
attributes[this.options.valueAttribute] = value;
|
||||
this.saveAttributes(attributes);
|
||||
}
|
||||
@@ -258,6 +259,61 @@
|
||||
}
|
||||
}
|
||||
}),
|
||||
ExtendedFieldTextFieldView: FieldViews.TextFieldView.extend({
|
||||
render: function() {
|
||||
HtmlUtils.setHtml(this.$el, HtmlUtils.template(field_text_account_template)({
|
||||
id: this.options.valueAttribute + '_' + this.options.field_name,
|
||||
title: this.options.title,
|
||||
value: this.modelValue(),
|
||||
message: this.options.helpMessage,
|
||||
placeholder: this.options.placeholder || ''
|
||||
}));
|
||||
this.delegateEvents();
|
||||
return this;
|
||||
},
|
||||
|
||||
modelValue: function() {
|
||||
var extendedProfileFields = this.model.get(this.options.valueAttribute);
|
||||
for (var i = 0; i < extendedProfileFields.length; i++) { // eslint-disable-line vars-on-top
|
||||
if (extendedProfileFields[i].field_name === this.options.fieldName) {
|
||||
return extendedProfileFields[i].field_value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
saveValue: function() {
|
||||
var attributes, value;
|
||||
if (this.persistChanges === true) {
|
||||
attributes = {};
|
||||
value = this.fieldValue() != null ? [{field_name: this.options.fieldName,
|
||||
field_value: this.fieldValue()}] : [];
|
||||
attributes[this.options.valueAttribute] = value;
|
||||
this.saveAttributes(attributes);
|
||||
}
|
||||
}
|
||||
}),
|
||||
ExtendedFieldListFieldView: FieldViews.DropdownFieldView.extend({
|
||||
fieldTemplate: field_dropdown_account_template,
|
||||
modelValue: function() {
|
||||
var extendedProfileFields = this.model.get(this.options.valueAttribute);
|
||||
for (var i = 0; i < extendedProfileFields.length; i++) { // eslint-disable-line vars-on-top
|
||||
if (extendedProfileFields[i].field_name === this.options.fieldName) {
|
||||
return extendedProfileFields[i].field_value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
saveValue: function() {
|
||||
var attributes = {},
|
||||
value;
|
||||
if (this.persistChanges === true) {
|
||||
value = this.fieldValue() ? [{field_name: this.options.fieldName,
|
||||
field_value: this.fieldValue()}] : [];
|
||||
attributes[this.options.valueAttribute] = value;
|
||||
this.saveAttributes(attributes);
|
||||
}
|
||||
}
|
||||
}),
|
||||
AuthFieldView: FieldViews.LinkFieldView.extend({
|
||||
fieldTemplate: field_social_link_template,
|
||||
className: function() {
|
||||
|
||||
Reference in New Issue
Block a user