Commit 4f0ab6f9 by cahrens

Optimize account settings and learner profile.

Also remove RequireJS dependency on mustache, and delete extra copy.
parent 7b5f9b80
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
requirejs.config({ requirejs.config({
paths: { paths: {
'gettext': 'xmodule_js/common_static/js/test/i18n', 'gettext': 'xmodule_js/common_static/js/test/i18n',
'mustache': 'xmodule_js/common_static/js/vendor/mustache',
'codemirror': 'xmodule_js/common_static/js/vendor/CodeMirror/codemirror', 'codemirror': 'xmodule_js/common_static/js/vendor/CodeMirror/codemirror',
'jquery': 'xmodule_js/common_static/js/vendor/jquery.min', 'jquery': 'xmodule_js/common_static/js/vendor/jquery.min',
'jquery.ui': 'xmodule_js/common_static/js/vendor/jquery-ui.min', 'jquery.ui': 'xmodule_js/common_static/js/vendor/jquery-ui.min',
...@@ -61,7 +60,6 @@ ...@@ -61,7 +60,6 @@
// Manually specify LMS files that are not converted to RequireJS // Manually specify LMS files that are not converted to RequireJS
'history': 'js/vendor/history', 'history': 'js/vendor/history',
'js/mustache': 'js/mustache',
'js/staff_debug_actions': 'js/staff_debug_actions', 'js/staff_debug_actions': 'js/staff_debug_actions',
'js/vendor/jquery.qubit': 'js/vendor/jquery.qubit', 'js/vendor/jquery.qubit': 'js/vendor/jquery.qubit',
......
;(function (define, undefined) { ;(function (define, undefined) {
'use strict'; 'use strict';
define([ define([
'gettext', 'jquery', 'underscore', 'backbone', 'js/mustache', 'js/views/fields' 'gettext', 'jquery', 'underscore', 'backbone', 'js/views/fields'
], function (gettext, $, _, Backbone, RequireMustache, FieldViews) { ], function (gettext, $, _, Backbone, FieldViews) {
var AccountSettingsFieldViews = {}; var AccountSettingsFieldViews = {};
......
...@@ -8,7 +8,8 @@ ...@@ -8,7 +8,8 @@
'js/student_profile/views/learner_profile_fields', 'js/student_profile/views/learner_profile_fields',
'js/student_profile/views/learner_profile_view', 'js/student_profile/views/learner_profile_view',
'js/student_account/views/account_settings_fields', 'js/student_account/views/account_settings_fields',
'js/views/message_banner' 'js/views/message_banner',
'string_utils'
], function (gettext, $, _, Backbone, Logger, AccountSettingsModel, AccountPreferencesModel, FieldsView, ], function (gettext, $, _, Backbone, Logger, AccountSettingsModel, AccountPreferencesModel, FieldsView,
LearnerProfileFieldsView, LearnerProfileView, AccountSettingsFieldViews, MessageBannerView) { LearnerProfileFieldsView, LearnerProfileView, AccountSettingsFieldViews, MessageBannerView) {
......
;(function (define, undefined) { ;(function (define, undefined) {
'use strict'; 'use strict';
define([ define([
'gettext', 'jquery', 'underscore', 'backbone', 'js/mustache', 'backbone-super' 'gettext', 'jquery', 'underscore', 'backbone', 'backbone-super', 'jquery.fileupload'
], function (gettext, $, _, Backbone, RequireMustache) { ], function (gettext, $, _, Backbone) {
var Mustache = window.Mustache || RequireMustache;
var messageRevertDelay = 6000; var messageRevertDelay = 6000;
var FieldViews = {}; var FieldViews = {};
...@@ -127,7 +125,7 @@ ...@@ -127,7 +125,7 @@
if (xhr.status === 400) { if (xhr.status === 400) {
try { try {
var errors = JSON.parse(xhr.responseText), var errors = JSON.parse(xhr.responseText),
validationErrorMessage = Mustache.escapeHtml( validationErrorMessage = _.escape(
errors.field_errors[this.options.valueAttribute].user_message errors.field_errors[this.options.valueAttribute].user_message
), ),
message = this.indicators.validationError + validationErrorMessage; message = this.indicators.validationError + validationErrorMessage;
...@@ -253,7 +251,7 @@ ...@@ -253,7 +251,7 @@
}, },
updateValueInField: function () { updateValueInField: function () {
this.$('.u-field-value input').val(Mustache.escapeHtml(this.modelValue())); this.$('.u-field-value input').val(_.escape(this.modelValue()));
} }
}); });
...@@ -290,7 +288,7 @@ ...@@ -290,7 +288,7 @@
updateValueInField: function () { updateValueInField: function () {
var value = (_.isUndefined(this.modelValue()) || _.isNull(this.modelValue())) ? '' : this.modelValue(); var value = (_.isUndefined(this.modelValue()) || _.isNull(this.modelValue())) ? '' : this.modelValue();
this.$('.u-field-value input').val(Mustache.escapeHtml(value)); this.$('.u-field-value input').val(_.escape(value));
}, },
saveValue: function () { saveValue: function () {
...@@ -375,7 +373,7 @@ ...@@ -375,7 +373,7 @@
value = this.options.placeholderValue || ''; value = this.options.placeholderValue || '';
} }
this.$('.u-field-value').attr('aria-label', this.options.title); this.$('.u-field-value').attr('aria-label', this.options.title);
this.$('.u-field-value-readonly').html(Mustache.escapeHtml(value)); this.$('.u-field-value-readonly').html(_.escape(value));
if (this.mode === 'display') { if (this.mode === 'display') {
this.updateDisplayModeClass(); this.updateDisplayModeClass();
......
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
* done. * done.
*/ */
modules: getModulesList([ modules: getModulesList([
'teams/js/teams_tab_factory' 'teams/js/teams_tab_factory',
'js/student_profile/views/learner_profile_factory',
'js/student_account/views/account_settings_factory'
]), ]),
/** /**
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<script type="text/javascript" src="${static.url('js/jquery.autocomplete.js')}"></script> <script type="text/javascript" src="${static.url('js/jquery.autocomplete.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/jquery.timeago.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/jquery.timeago.js')}"></script>
<script type="text/javascript" src="${static.url('js/src/jquery.timeago.locale.js')}"></script> <script type="text/javascript" src="${static.url('js/src/jquery.timeago.locale.js')}"></script>
<script type="text/javascript" src="${static.url('js/mustache.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/mustache.js')}"></script>
<script type="text/javascript" src="${static.url('js/src/tooltip_manager.js')}"></script> <script type="text/javascript" src="${static.url('js/src/tooltip_manager.js')}"></script>
<link href="${static.url('css/vendor/jquery.autocomplete.css')}" rel="stylesheet" type="text/css"> <link href="${static.url('css/vendor/jquery.autocomplete.css')}" rel="stylesheet" type="text/css">
...@@ -37,21 +37,16 @@ from microsite_configuration import microsite ...@@ -37,21 +37,16 @@ from microsite_configuration import microsite
<%block name="headextra"> <%block name="headextra">
<%static:css group='style-course'/> <%static:css group='style-course'/>
</%block>
<script> <%block name="js_extra">
(function (require) { <%static:require_module module_name="js/student_account/views/account_settings_factory" class_name="AccountSettingsFactory">
require(['js/student_account/views/account_settings_factory'], function(setupAccountSettingsSection) { var fieldsData = ${ json.dumps(fields) };
var authData = ${ json.dumps(auth) };
var fieldsData = ${ json.dumps(fields) }; var platformName = ${ json.dumps(microsite.get_value('platform_name', settings.PLATFORM_NAME))};
var authData = ${ json.dumps(auth) };
var platformName = ${ json.dumps(microsite.get_value('platform_name', settings.PLATFORM_NAME))};
setupAccountSettingsSection(
fieldsData, authData, '${user_accounts_api_url}', '${user_preferences_api_url}', ${user.id},
platformName
);
});
}).call(this, require || RequireJS.require);
</script>
AccountSettingsFactory(
fieldsData, authData, '${user_accounts_api_url}', '${user_preferences_api_url}', ${user.id}, platformName
);
</%static:require_module>
</%block> </%block>
...@@ -34,16 +34,11 @@ from openedx.core.lib.json_utils import EscapedEdxJSONEncoder ...@@ -34,16 +34,11 @@ from openedx.core.lib.json_utils import EscapedEdxJSONEncoder
</div> </div>
<%block name="headextra"> <%block name="headextra">
<%static:css group='style-course'/> <%static:css group='style-course'/>
</%block>
<script type="text/javascript" src="${static.url('js/vendor/jQuery-File-Upload/js/jquery.fileupload.js')}"></script> <%block name="js_extra">
<%static:require_module module_name="js/student_profile/views/learner_profile_factory" class_name="LearnerProfileFactory">
<script> var options = ${ json.dumps(data, cls=EscapedEdxJSONEncoder) };
(function (require) { LearnerProfileFactory(options);
require(['js/student_profile/views/learner_profile_factory'], function(setupLearnerProfile) { </%static:require_module>
var options = ${ json.dumps(data, cls=EscapedEdxJSONEncoder) };
setupLearnerProfile(options);
});
}).call(this, require || RequireJS.require);
</script>
</%block> </%block>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment