Skip to content
Snippets Groups Projects
Unverified Commit 8bca1558 authored by John Molakvoæ's avatar John Molakvoæ
Browse files

Settings users list new user language

parent 82e1f182
No related branches found
No related tags found
No related merge requests found
Source diff could not be displayed: it is too large. Options to address this: view the blob.
...@@ -73,7 +73,13 @@ ...@@ -73,7 +73,13 @@
@tag="validateQuota" > @tag="validateQuota" >
</multiselect> </multiselect>
</div> </div>
<div class="languages" v-if="showConfig.showLanguages"></div> <div class="languages" v-if="showConfig.showLanguages">
<multiselect :options="languages" v-model="newUser.language"
:placeholder="t('settings', 'Default language')"
label="name" track-by="code" class="multiselect-vue"
:allowEmpty="false" group-values="languages" group-label="label">
</multiselect>
</div>
<div class="storageLocation" v-if="showConfig.showStoragePath"></div> <div class="storageLocation" v-if="showConfig.showStoragePath"></div>
<div class="userBackend" v-if="showConfig.showUserBackend"></div> <div class="userBackend" v-if="showConfig.showUserBackend"></div>
<div class="lastLogin" v-if="showConfig.showLastLogin"></div> <div class="lastLogin" v-if="showConfig.showLastLogin"></div>
...@@ -86,7 +92,7 @@ ...@@ -86,7 +92,7 @@
</form> </form>
<user-row v-for="(user, key) in filteredUsers" :user="user" :key="key" :settings="settings" :showConfig="showConfig" <user-row v-for="(user, key) in filteredUsers" :user="user" :key="key" :settings="settings" :showConfig="showConfig"
:groups="groups" :subAdminsGroups="subAdminsGroups" :quotaOptions="quotaOptions" /> :groups="groups" :subAdminsGroups="subAdminsGroups" :quotaOptions="quotaOptions" :languages="languages" />
<infinite-loading @infinite="infiniteHandler" ref="infiniteLoading"> <infinite-loading @infinite="infiniteHandler" ref="infiniteLoading">
<div slot="spinner"><div class="users-icon-loading icon-loading"></div></div> <div slot="spinner"><div class="users-icon-loading icon-loading"></div></div>
<div slot="no-more"><div class="users-list-end">{{t('settings', 'no more results')}}</div></div> <div slot="no-more"><div class="users-list-end">{{t('settings', 'no more results')}}</div></div>
...@@ -104,6 +110,7 @@ ...@@ -104,6 +110,7 @@
import userRow from './userList/userRow'; import userRow from './userList/userRow';
import Multiselect from 'vue-multiselect'; import Multiselect from 'vue-multiselect';
import InfiniteLoading from 'vue-infinite-loading'; import InfiniteLoading from 'vue-infinite-loading';
import Vue from 'vue';
export default { export default {
name: 'userList', name: 'userList',
...@@ -128,14 +135,21 @@ export default { ...@@ -128,14 +135,21 @@ export default {
mailAddress:'', mailAddress:'',
groups: [], groups: [],
subAdminsGroups: [], subAdminsGroups: [],
quota: defaultQuota quota: defaultQuota,
language: {code: 'en', name: t('settings', 'Default language')}
} }
}; };
}, },
mounted() { mounted() {
if (!this.settings.canChangePassword) { if (!this.settings.canChangePassword) {
OC.Notification.showTemporary(t('settings','Password change is disabled because the master key is disabled')); OC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));
} }
/**
* Init default language from server data. The use of this.settings
* requires a computed variable,vwhich break the v-model binding of the form,
* this is a much easier solution than getter and setter
*/
Vue.set(this.newUser.language, 'code', this.settings.defaultLanguage);
}, },
computed: { computed: {
settings() { settings() {
...@@ -190,6 +204,20 @@ export default { ...@@ -190,6 +204,20 @@ export default {
} }
} }
return ''; return '';
},
/* LANGUAGES */
languages() {
return Array(
{
label: t('settings', 'Common languages'),
languages: this.settings.languages.commonlanguages
},
{
label: t('settings', 'All languages'),
languages: this.settings.languages.languages
}
);
} }
}, },
watch: { watch: {
...@@ -240,7 +268,8 @@ export default { ...@@ -240,7 +268,8 @@ export default {
email: this.newUser.mailAddress, email: this.newUser.mailAddress,
groups: this.newUser.groups.map(group => group.id), groups: this.newUser.groups.map(group => group.id),
subadmin: this.newUser.subAdminsGroups.map(group => group.id), subadmin: this.newUser.subAdminsGroups.map(group => group.id),
quota: this.newUser.quota.id quota: this.newUser.quota.id,
language: this.newUser.language.code,
}).then(() => this.resetForm()); }).then(() => this.resetForm());
} }
} }
......
...@@ -89,7 +89,7 @@ import Multiselect from 'vue-multiselect'; ...@@ -89,7 +89,7 @@ import Multiselect from 'vue-multiselect';
export default { export default {
name: 'userRow', name: 'userRow',
props: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig'], props: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig', 'languages'],
components: { components: {
popoverMenu, popoverMenu,
Multiselect Multiselect
...@@ -175,19 +175,7 @@ export default { ...@@ -175,19 +175,7 @@ export default {
return this.$store.getters.getPasswordPolicyMinLength; return this.$store.getters.getPasswordPolicyMinLength;
}, },
/* LANGUAGES */ /* LANGUAGE */
languages() {
return Array(
{
label: t('settings', 'Common languages'),
languages: this.settings.languages.commonlanguages
},
{
label: t('settings', 'All languages'),
languages: this.settings.languages.languages
}
);
},
userLanguage() { userLanguage() {
let availableLanguages = this.languages[0].languages.concat(this.languages[1].languages); let availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);
let userLang = availableLanguages.find(lang => lang.code === this.user.language); let userLang = availableLanguages.find(lang => lang.code === this.user.language);
......
...@@ -342,14 +342,10 @@ const actions = { ...@@ -342,14 +342,10 @@ const actions = {
* @param {string} options.quota User email * @param {string} options.quota User email
* @returns {Promise} * @returns {Promise}
*/ */
addUser({context, dispatch}, { userid, password, email, groups, subadmin, quota }) { addUser({context, dispatch}, { userid, password, email, groups, subadmin, quota, language }) {
console.log(subadmin, quota);
return api.requireAdmin().then((response) => { return api.requireAdmin().then((response) => {
return api.post(OC.linkToOCS(`cloud/users`, 2), { userid, password, email, groups, subadmin, quota }) return api.post(OC.linkToOCS(`cloud/users`, 2), { userid, password, email, groups, subadmin, quota, language })
.then((response) => { .then((response) => dispatch('addUserData', userid))
//let quotaDis = dispatch('setUserData', { userid, key: 'quota', value:quota });
//let subadminDis = dispatch('addUserSubAdmin', userid);
})
.catch((error) => {throw error;}); .catch((error) => {throw error;});
}).catch((error) => context.commit('API_FAILURE', { userid, error })); }).catch((error) => context.commit('API_FAILURE', { userid, error }));
}, },
......
...@@ -144,6 +144,7 @@ $serverData['sortGroups'] = $sortGroupsBy; ...@@ -144,6 +144,7 @@ $serverData['sortGroups'] = $sortGroupsBy;
$serverData['quotaPreset'] = $quotaPreset; $serverData['quotaPreset'] = $quotaPreset;
$serverData['userCount'] = $userCount-$disabledUsers; $serverData['userCount'] = $userCount-$disabledUsers;
$serverData['languages'] = $languages; $serverData['languages'] = $languages;
$serverData['defaultLanguage'] = $config->getSystemValue('default_language', 'en');
// Settings // Settings
$serverData['defaultQuota'] = $defaultQuota; $serverData['defaultQuota'] = $defaultQuota;
$serverData['canChangePassword'] = $canChangePassword; $serverData['canChangePassword'] = $canChangePassword;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment