Files
edx-platform/common/static/js/src/lang_edx.js
Syed Ali Abbas Zaidi f1fb38ed83 fix: multi lines and spaces issues (#31885)
* fix: multi lines and spaces issues

* fix: eslint operator-linebreak issue

* fix: eslint quotes issue

* fix: remaining quotes issues

* fix: eslint object curly newline issue

* fix: eslint object curly spacing issue

* fix: eslint brace-style issues

* fix: react jsx indent and props issues

* fix: eslint trailing spaces issues

* fix: eslint linbreak style issue

* fix: eslint space unary operator issue

* fix: eslint line around directives issue

* fix: void and typeof space unary ops issue
2023-05-03 12:22:46 +05:00

71 lines
2.3 KiB
JavaScript

var Language = (function() {
'use strict';
var $settings_language_selector,
self = null;
return {
init: function() {
$settings_language_selector = $('#settings-language-value');
self = this;
this.listenForLanguagePreferenceChange();
},
/**
* Listener on changing language from selector.
* Send an ajax request to save user language preferences.
*/
listenForLanguagePreferenceChange: function() {
$settings_language_selector.change(function(event) {
var language = this.value,
url = $('.url-endpoint').val(),
is_user_authenticated = JSON.parse($('.url-endpoint').data('user-is-authenticated'));
event.preventDefault();
self.submitAjaxRequest(language, url, function() {
if (is_user_authenticated) {
// User language preference has been set successfully
// Now submit the form in success callback.
$('#language-settings-form').submit();
} else {
self.refresh();
}
});
});
},
/**
* Send an ajax request to set user language preferences.
*/
submitAjaxRequest: function(language, url, callback) {
$.ajax({
type: 'PATCH',
data: JSON.stringify({'pref-lang': language}),
url: url,
dataType: 'json',
contentType: 'application/merge-patch+json',
notifyOnError: false,
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRFToken', $.cookie('csrftoken'));
}
}).done(function() {
callback();
}).fail(function() {
self.refresh();
});
},
/**
* refresh the page.
*/
refresh: function() {
// reloading the page so we can get the latest state of released languages from model
location.reload();
}
};
}());
$(document).ready(function() {
'use strict';
Language.init();
});