summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2017-06-23 13:15:08 +0200
committerArthur Schiwon <blizzz@arthur-schiwon.de>2017-06-23 13:15:08 +0200
commitd881a3c37b627fa5b5de282df93be3af93ff829c (patch)
tree0b407617ad384f4af323e2cc03e50613ea723dc3
parenta596251d6b8b27ad5ea626d1939adab6866dfe61 (diff)
downloadnextcloud-server-d881a3c37b627fa5b5de282df93be3af93ff829c.tar.gz
nextcloud-server-d881a3c37b627fa5b5de282df93be3af93ff829c.zip
adapt to force language changes
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
-rw-r--r--lib/private/Settings/Personal/PersonalInfo.php23
-rw-r--r--settings/js/settings/personalInfo.js38
-rw-r--r--settings/templates/settings/personal/personal.info.php2
3 files changed, 41 insertions, 22 deletions
diff --git a/lib/private/Settings/Personal/PersonalInfo.php b/lib/private/Settings/Personal/PersonalInfo.php
index eb0ff253db1..fb1f388c599 100644
--- a/lib/private/Settings/Personal/PersonalInfo.php
+++ b/lib/private/Settings/Personal/PersonalInfo.php
@@ -110,7 +110,7 @@ class PersonalInfo implements ISettings {
$totalSpace = \OC_Helper::humanFileSize($storageInfo['total']);
}
- list($activeLanguage, $commonLanguages, $languages) = $this->getLanguages($user);
+ $languageParameters = $this->getLanguages($user);
$messageParameters = $this->getMessageParameters($userData);
$parameters = [
@@ -139,10 +139,7 @@ class PersonalInfo implements ISettings {
'twitterVerification' => $userData[AccountManager::PROPERTY_TWITTER]['verified'],
'groups' => $this->getGroups($user),
'passwordChangeSupported' => \OC_User::canUserChangePassword($uid),
- 'activelanguage' => $activeLanguage,
- 'commonlanguages' => $commonLanguages,
- 'languages' => $languages,
- ] + $messageParameters;
+ ] + $messageParameters + $languageParameters;
return new TemplateResponse('settings', 'settings/personal/personal.info', $parameters, '');
@@ -194,11 +191,19 @@ class PersonalInfo implements ISettings {
* @return array
*/
private function getLanguages(IUser $user) {
+ $forceLanguage = $this->config->getSystemValue('force_language', false);
+ if($forceLanguage !== false) {
+ return [];
+ }
+
$uid = $user->getUID();
- $commonLanguages = [];
$userLang = $this->config->getUserValue($uid, 'core', 'lang', $this->l10nFactory->findLanguage());
$languageCodes = $this->l10nFactory->findAvailableLanguages();
+
+ $commonLanguages = [];
+ $languages = [];
+
foreach($languageCodes as $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
@@ -246,7 +251,11 @@ class PersonalInfo implements ISettings {
return strcmp($a['name'], $b['name']);
});
- return [$userLang, $commonLanguages, $languages];
+ return [
+ 'activelanguage' => $userLang,
+ 'commonlanguages' => $commonLanguages,
+ 'languages' => $languages
+ ];
}
/**
diff --git a/settings/js/settings/personalInfo.js b/settings/js/settings/personalInfo.js
index 9496f65a8f3..306994a7094 100644
--- a/settings/js/settings/personalInfo.js
+++ b/settings/js/settings/personalInfo.js
@@ -259,23 +259,31 @@ $(document).ready(function () {
});
federationSettingsView.render();
- $("#languageinput").change(function () {
- // Serialize the data
- var post = $("#languageinput").serialize();
- // Ajax foo
- $.ajax(
- 'ajax/setlanguage.php',
- {
- method: 'POST',
- data: post
+ var updateLanguage = function () {
+ if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
+ OC.PasswordConfirmation.requirePasswordConfirmation(updateLanguage);
+ return;
+ }
+
+ var selectedLang = $("#languageinput").val(),
+ user = OC.getCurrentUser();
+
+ $.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 = {
pasteZone: null,
diff --git a/settings/templates/settings/personal/personal.info.php b/settings/templates/settings/personal/personal.info.php
index 8cb9aec8af5..db14a4de986 100644
--- a/settings/templates/settings/personal/personal.info.php
+++ b/settings/templates/settings/personal/personal.info.php
@@ -287,6 +287,7 @@ if($_['passwordChangeSupported']) {
}
?>
+<?php if (isset($_['activelanguage'])) { ?>
<form id="language" class="section">
<h2>
<label for="languageinput"><?php p($l->t('Language'));?></label>
@@ -312,3 +313,4 @@ if($_['passwordChangeSupported']) {
<em><?php p($l->t('Help translate'));?></em>
</a>
</form>
+<?php } ?>