adapt to force language changes

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
Arthur Schiwon 2017-06-23 13:15:08 +02:00
parent a596251d6b
commit d881a3c37b
No known key found for this signature in database
GPG Key ID: 7424F1874854DF23
3 changed files with 41 additions and 22 deletions

View File

@ -110,7 +110,7 @@ class PersonalInfo implements ISettings {
$totalSpace = \OC_Helper::humanFileSize($storageInfo['total']); $totalSpace = \OC_Helper::humanFileSize($storageInfo['total']);
} }
list($activeLanguage, $commonLanguages, $languages) = $this->getLanguages($user); $languageParameters = $this->getLanguages($user);
$messageParameters = $this->getMessageParameters($userData); $messageParameters = $this->getMessageParameters($userData);
$parameters = [ $parameters = [
@ -139,10 +139,7 @@ class PersonalInfo implements ISettings {
'twitterVerification' => $userData[AccountManager::PROPERTY_TWITTER]['verified'], 'twitterVerification' => $userData[AccountManager::PROPERTY_TWITTER]['verified'],
'groups' => $this->getGroups($user), 'groups' => $this->getGroups($user),
'passwordChangeSupported' => \OC_User::canUserChangePassword($uid), 'passwordChangeSupported' => \OC_User::canUserChangePassword($uid),
'activelanguage' => $activeLanguage, ] + $messageParameters + $languageParameters;
'commonlanguages' => $commonLanguages,
'languages' => $languages,
] + $messageParameters;
return new TemplateResponse('settings', 'settings/personal/personal.info', $parameters, ''); return new TemplateResponse('settings', 'settings/personal/personal.info', $parameters, '');
@ -194,11 +191,19 @@ class PersonalInfo implements ISettings {
* @return array * @return array
*/ */
private function getLanguages(IUser $user) { private function getLanguages(IUser $user) {
$forceLanguage = $this->config->getSystemValue('force_language', false);
if($forceLanguage !== false) {
return [];
}
$uid = $user->getUID(); $uid = $user->getUID();
$commonLanguages = [];
$userLang = $this->config->getUserValue($uid, 'core', 'lang', $this->l10nFactory->findLanguage()); $userLang = $this->config->getUserValue($uid, 'core', 'lang', $this->l10nFactory->findLanguage());
$languageCodes = $this->l10nFactory->findAvailableLanguages(); $languageCodes = $this->l10nFactory->findAvailableLanguages();
$commonLanguages = [];
$languages = [];
foreach($languageCodes as $lang) { foreach($languageCodes as $lang) {
$l = \OC::$server->getL10N('settings', $lang); $l = \OC::$server->getL10N('settings', $lang);
// TRANSLATORS this is the language name for the language switcher in the personal settings and should be the localized version // TRANSLATORS this is the language name for the language switcher in the personal settings and should be the localized version
@ -246,7 +251,11 @@ class PersonalInfo implements ISettings {
return strcmp($a['name'], $b['name']); return strcmp($a['name'], $b['name']);
}); });
return [$userLang, $commonLanguages, $languages]; return [
'activelanguage' => $userLang,
'commonlanguages' => $commonLanguages,
'languages' => $languages
];
} }
/** /**

View File

@ -259,23 +259,31 @@ $(document).ready(function () {
}); });
federationSettingsView.render(); federationSettingsView.render();
$("#languageinput").change(function () { var updateLanguage = function () {
// Serialize the data if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
var post = $("#languageinput").serialize(); OC.PasswordConfirmation.requirePasswordConfirmation(updateLanguage);
// Ajax foo return;
$.ajax( }
'ajax/setlanguage.php',
{ var selectedLang = $("#languageinput").val(),
method: 'POST', user = OC.getCurrentUser();
data: post
$.ajax({
url: OC.linkToOCS('cloud/users', 2) + user['uid'],
method: 'PUT',
data: {
key: 'language',
value: selectedLang
},
success: function() {
location.reload();
},
fail: function() {
OC.Notification.showTemporary(t('settings', 'An error occured while changing your language. Please reload the page and try again.'));
} }
).done(function() {
location.reload();
}).fail(function(jqXHR) {
$('#passworderror').text(jqXHR.responseJSON.message);
}); });
return false; };
}); $("#languageinput").change(updateLanguage);
var uploadparms = { var uploadparms = {
pasteZone: null, pasteZone: null,

View File

@ -287,6 +287,7 @@ if($_['passwordChangeSupported']) {
} }
?> ?>
<?php if (isset($_['activelanguage'])) { ?>
<form id="language" class="section"> <form id="language" class="section">
<h2> <h2>
<label for="languageinput"><?php p($l->t('Language'));?></label> <label for="languageinput"><?php p($l->t('Language'));?></label>
@ -312,3 +313,4 @@ if($_['passwordChangeSupported']) {
<em><?php p($l->t('Help translate'));?></em> <em><?php p($l->t('Help translate'));?></em>
</a> </a>
</form> </form>
<?php } ?>