mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 15:45:55 +08:00
TODO: Sieve issue on account switch
When current domain has sieve but the new has not, or current has not and the new has
This commit is contained in:
parent
80d64574a6
commit
1883b407a6
|
@ -25,31 +25,33 @@ export class AbstractSettingsScreen extends AbstractScreen {
|
||||||
let settingsScreen = null,
|
let settingsScreen = null,
|
||||||
viewModelDom = null,
|
viewModelDom = null,
|
||||||
RoutedSettingsViewModel = VIEW_MODELS.find(
|
RoutedSettingsViewModel = VIEW_MODELS.find(
|
||||||
SettingsViewModel => subName === SettingsViewModel.__rlSettingsData.route
|
SettingsViewModel => subName === SettingsViewModel.route
|
||||||
);
|
);
|
||||||
|
|
||||||
if (RoutedSettingsViewModel) {
|
if (RoutedSettingsViewModel) {
|
||||||
// const vmPlace = elementById('V-SettingsPane') || elementById('V-AdminPane);
|
// const vmPlace = elementById('V-SettingsPane') || elementById('V-AdminPane);
|
||||||
const vmPlace = this.viewModels[1].__dom;
|
const vmPlace = this.viewModels[1].__dom,
|
||||||
if (RoutedSettingsViewModel.__vm) {
|
SettingsViewModelClass = RoutedSettingsViewModel.vmc;
|
||||||
settingsScreen = RoutedSettingsViewModel.__vm;
|
if (SettingsViewModelClass.__vm) {
|
||||||
|
settingsScreen = SettingsViewModelClass.__vm;
|
||||||
|
viewModelDom = settingsScreen.viewModelDom;
|
||||||
} else if (vmPlace) {
|
} else if (vmPlace) {
|
||||||
viewModelDom = createElement('div',{
|
viewModelDom = createElement('div',{
|
||||||
id: 'V-Settings-' + RoutedSettingsViewModel.name.replace(/(User|Admin)Settings/,''),
|
id: 'V-Settings-' + SettingsViewModelClass.name.replace(/(User|Admin)Settings/,''),
|
||||||
hidden: ''
|
hidden: ''
|
||||||
})
|
})
|
||||||
vmPlace.append(viewModelDom);
|
vmPlace.append(viewModelDom);
|
||||||
|
|
||||||
settingsScreen = new RoutedSettingsViewModel();
|
settingsScreen = new SettingsViewModelClass();
|
||||||
settingsScreen.viewModelDom = viewModelDom;
|
settingsScreen.viewModelDom = viewModelDom;
|
||||||
|
|
||||||
RoutedSettingsViewModel.__dom = viewModelDom;
|
SettingsViewModelClass.__dom = viewModelDom;
|
||||||
RoutedSettingsViewModel.__vm = settingsScreen;
|
SettingsViewModelClass.__vm = settingsScreen;
|
||||||
|
|
||||||
ko.applyBindingAccessorsToNode(
|
ko.applyBindingAccessorsToNode(
|
||||||
viewModelDom,
|
viewModelDom,
|
||||||
{
|
{
|
||||||
template: () => ({ name: RoutedSettingsViewModel.__rlSettingsData.template })
|
template: () => ({ name: RoutedSettingsViewModel.template })
|
||||||
},
|
},
|
||||||
settingsScreen
|
settingsScreen
|
||||||
);
|
);
|
||||||
|
@ -69,13 +71,13 @@ export class AbstractSettingsScreen extends AbstractScreen {
|
||||||
|
|
||||||
// show
|
// show
|
||||||
settingsScreen.beforeShow?.();
|
settingsScreen.beforeShow?.();
|
||||||
i18nToNodes(settingsScreen.viewModelDom);
|
i18nToNodes(viewModelDom);
|
||||||
settingsScreen.viewModelDom.hidden = false;
|
viewModelDom.hidden = false;
|
||||||
settingsScreen.onShow?.();
|
settingsScreen.onShow?.();
|
||||||
|
|
||||||
this.menu.forEach(item => {
|
this.menu.forEach(item => {
|
||||||
item.selected(
|
item.selected(
|
||||||
item.route === RoutedSettingsViewModel.__rlSettingsData.route
|
item.route === RoutedSettingsViewModel.route
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -92,20 +94,23 @@ export class AbstractSettingsScreen extends AbstractScreen {
|
||||||
let subScreen = this.oCurrentSubScreen;
|
let subScreen = this.oCurrentSubScreen;
|
||||||
if (subScreen) {
|
if (subScreen) {
|
||||||
subScreen.onHide?.();
|
subScreen.onHide?.();
|
||||||
subScreen.viewModelDom.hidden = true;
|
subScreen.
|
||||||
|
.hidden = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onBuild() {
|
onBuild() {
|
||||||
VIEW_MODELS.forEach(SettingsViewModel => this.menu.push(SettingsViewModel.__rlSettingsData));
|
// TODO: issue on account switch
|
||||||
|
// When current domain has sieve but the new has not, or current has not and the new has
|
||||||
|
// SettingsViewModel.disabled() || this.menu.push()
|
||||||
|
VIEW_MODELS.forEach(SettingsViewModel => this.menu.push(SettingsViewModel));
|
||||||
}
|
}
|
||||||
|
|
||||||
routes() {
|
routes() {
|
||||||
const DefaultViewModel = VIEW_MODELS.find(
|
const DefaultViewModel = VIEW_MODELS.find(
|
||||||
SettingsViewModel => SettingsViewModel.__rlSettingsData.isDefault
|
SettingsViewModel => SettingsViewModel.isDefault
|
||||||
),
|
),
|
||||||
defaultRoute =
|
defaultRoute = DefaultViewModel?.route || 'general',
|
||||||
DefaultViewModel ? DefaultViewModel.__rlSettingsData.route : 'general',
|
|
||||||
rules = {
|
rules = {
|
||||||
subname: /^(.*)$/,
|
subname: /^(.*)$/,
|
||||||
normalize_: (rquest, vals) => {
|
normalize_: (rquest, vals) => {
|
||||||
|
@ -132,13 +137,12 @@ export class AbstractSettingsScreen extends AbstractScreen {
|
||||||
*/
|
*/
|
||||||
export function settingsAddViewModel(SettingsViewModelClass, template, labelName, route, isDefault = false) {
|
export function settingsAddViewModel(SettingsViewModelClass, template, labelName, route, isDefault = false) {
|
||||||
let name = SettingsViewModelClass.name.replace(/(User|Admin)Settings/, '');
|
let name = SettingsViewModelClass.name.replace(/(User|Admin)Settings/, '');
|
||||||
SettingsViewModelClass.__rlSettingsData = {
|
VIEW_MODELS.push({
|
||||||
|
vmc: SettingsViewModelClass,
|
||||||
label: labelName || 'SETTINGS_LABELS/' + name.toUpperCase(),
|
label: labelName || 'SETTINGS_LABELS/' + name.toUpperCase(),
|
||||||
route: route || name.toLowerCase(),
|
route: route || name.toLowerCase(),
|
||||||
selected: ko.observable(false),
|
selected: ko.observable(false),
|
||||||
template: template || SettingsViewModelClass.name,
|
template: template || SettingsViewModelClass.name,
|
||||||
isDefault: !!isDefault
|
isDefault: !!isDefault
|
||||||
};
|
});
|
||||||
|
|
||||||
VIEW_MODELS.push(SettingsViewModelClass);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,8 @@ export class SettingsUserScreen extends AbstractSettingsScreen {
|
||||||
views.push(UserSettingsAccounts);
|
views.push(UserSettingsAccounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: issue on account switch
|
||||||
|
// When current domain has sieve but the new has not, or current has not and the new has
|
||||||
if (SettingsCapa('Sieve')) {
|
if (SettingsCapa('Sieve')) {
|
||||||
views.push(UserSettingsFilters);
|
views.push(UserSettingsFilters);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { koComputable, addObservablesTo } from 'External/ko';
|
import { koComputable, addObservablesTo } from 'External/ko';
|
||||||
import { FolderUserStore } from 'Stores/User/Folder';
|
import { FolderUserStore } from 'Stores/User/Folder';
|
||||||
import { SettingsGet } from 'Common/Globals';
|
import { SettingsGet/*, SettingsCapa*/ } from 'Common/Globals';
|
||||||
|
|
||||||
//export class UserSettingsFilters /*extends AbstractViewSettings*/ {
|
//export class UserSettingsFilters /*extends AbstractViewSettings*/ {
|
||||||
export class UserSettingsFilters /*extends AbstractViewSettings*/ {
|
export class UserSettingsFilters /*extends AbstractViewSettings*/ {
|
||||||
|
@ -27,6 +27,14 @@ export class UserSettingsFilters /*extends AbstractViewSettings*/ {
|
||||||
this.scriptForDeletion = ko.observable(null).askDeleteHelper();
|
this.scriptForDeletion = ko.observable(null).askDeleteHelper();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// TODO: issue on account switch
|
||||||
|
// When current domain has sieve but the new has not, or current has not and the new has
|
||||||
|
disabled() {
|
||||||
|
return !SettingsCapa('Sieve');
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
addScript() {
|
addScript() {
|
||||||
this.editScript();
|
this.editScript();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue