mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Restructure Capa
This commit is contained in:
parent
5990addfef
commit
e7c7b8ed53
15 changed files with 74 additions and 140 deletions
|
|
@ -4,23 +4,16 @@
|
||||||
* @enum {string}
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
export const Capa = {
|
export const Capa = {
|
||||||
GnuPG: 'GNUPG',
|
AdditionalAccounts: 'AdditionalAccounts',
|
||||||
OpenPGP: 'OPEN_PGP',
|
AutoLogout: 'AutoLogout',
|
||||||
Prefetch: 'PREFETCH',
|
DangerousActions: 'DangerousActions',
|
||||||
Contacts: 'CONTACTS',
|
GnuPG: 'GnuPG',
|
||||||
Search: 'SEARCH',
|
Identities: 'Identities',
|
||||||
SearchAdv: 'SEARCH_ADV',
|
OpenPGP: 'OpenPGP',
|
||||||
MessageActions: 'MESSAGE_ACTIONS',
|
Search: 'Search',
|
||||||
AttachmentsActions: 'ATTACHMENTS_ACTIONS',
|
SearchAdv: 'SearchAdv',
|
||||||
DangerousActions: 'DANGEROUS_ACTIONS',
|
Themes: 'Themes',
|
||||||
Themes: 'THEMES',
|
UserBackground: 'UserBackground'
|
||||||
UserBackground: 'USER_BACKGROUND',
|
|
||||||
Sieve: 'SIEVE',
|
|
||||||
AttachmentThumbnails: 'ATTACHMENT_THUMBNAILS',
|
|
||||||
AutoLogout: 'AUTOLOGOUT',
|
|
||||||
Kolab: 'KOLAB',
|
|
||||||
AdditionalAccounts: 'ADDITIONAL_ACCOUNTS',
|
|
||||||
Identities: 'IDENTITIES'
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ export class SettingsUserScreen extends AbstractSettingsScreen {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SettingsCapa(Capa.Sieve)) {
|
if (SettingsCapa('Sieve')) {
|
||||||
settingsAddViewModel(FiltersUserSettings, 'SettingsFilters', 'SETTINGS_LABELS/LABEL_FILTERS_NAME', 'filters');
|
settingsAddViewModel(FiltersUserSettings, 'SettingsFilters', 'SETTINGS_LABELS/LABEL_FILTERS_NAME', 'filters');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ export class GeneralAdminSettings /*extends AbstractViewSettings*/ {
|
||||||
capaUserBackground: SettingsCapa(Capa.UserBackground),
|
capaUserBackground: SettingsCapa(Capa.UserBackground),
|
||||||
capaAdditionalAccounts: SettingsCapa(Capa.AdditionalAccounts),
|
capaAdditionalAccounts: SettingsCapa(Capa.AdditionalAccounts),
|
||||||
capaIdentities: SettingsCapa(Capa.Identities),
|
capaIdentities: SettingsCapa(Capa.Identities),
|
||||||
capaAttachmentThumbnails: SettingsCapa(Capa.AttachmentThumbnails),
|
capaAttachmentThumbnails: SettingsCapa('AttachmentThumbnails'),
|
||||||
dataFolderAccess: false
|
dataFolderAccess: false
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Capa } from 'Common/Enums';
|
import { Capa } from 'Common/Enums';
|
||||||
import { Settings, SettingsGet } from 'Common/Globals';
|
import { SettingsGet, SettingsCapa } from 'Common/Globals';
|
||||||
import { addObservablesTo, addSubscribablesTo } from 'External/ko';
|
import { addObservablesTo, addSubscribablesTo } from 'External/ko';
|
||||||
|
|
||||||
import Remote from 'Remote/Admin/Fetch';
|
import Remote from 'Remote/Admin/Fetch';
|
||||||
|
|
@ -27,7 +27,7 @@ export class SecurityAdminSettings /*extends AbstractViewSettings*/ {
|
||||||
adminPasswordUpdateError: false,
|
adminPasswordUpdateError: false,
|
||||||
adminPasswordUpdateSuccess: false,
|
adminPasswordUpdateSuccess: false,
|
||||||
|
|
||||||
capaOpenPGP: Settings.capa(Capa.OpenPGP)
|
capaOpenPGP: SettingsCapa(Capa.OpenPGP)
|
||||||
});
|
});
|
||||||
|
|
||||||
addSubscribablesTo(this, {
|
addSubscribablesTo(this, {
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,10 @@ import { koComputable } from 'External/ko';
|
||||||
|
|
||||||
import { Notification } from 'Common/Enums';
|
import { Notification } from 'Common/Enums';
|
||||||
import { FolderMetadataKeys } from 'Common/EnumsUser';
|
import { FolderMetadataKeys } from 'Common/EnumsUser';
|
||||||
import { Settings } from 'Common/Globals';
|
import { SettingsCapa } from 'Common/Globals';
|
||||||
import { getNotification } from 'Common/Translator';
|
import { getNotification } from 'Common/Translator';
|
||||||
|
|
||||||
import { setFolder, getFolderFromCacheList, removeFolderFromCacheList } from 'Common/Cache';
|
import { setFolder, getFolderFromCacheList, removeFolderFromCacheList } from 'Common/Cache';
|
||||||
import { Capa } from 'Common/Enums';
|
|
||||||
import { defaultOptionsAfterRender } from 'Common/Utils';
|
import { defaultOptionsAfterRender } from 'Common/Utils';
|
||||||
import { sortFolders } from 'Common/Folders';
|
import { sortFolders } from 'Common/Folders';
|
||||||
import { initOnStartOrLangChange, i18n } from 'Common/Translator';
|
import { initOnStartOrLangChange, i18n } from 'Common/Translator';
|
||||||
|
|
@ -27,7 +26,7 @@ const folderForDeletion = ko.observable(null).askDeleteHelper();
|
||||||
|
|
||||||
export class FoldersUserSettings /*extends AbstractViewSettings*/ {
|
export class FoldersUserSettings /*extends AbstractViewSettings*/ {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.showKolab = koComputable(() => FolderUserStore.hasCapability('METADATA') && Settings.capa(Capa.Kolab));
|
this.showKolab = koComputable(() => FolderUserStore.hasCapability('METADATA') && SettingsCapa('Kolab'));
|
||||||
this.defaultOptionsAfterRender = defaultOptionsAfterRender;
|
this.defaultOptionsAfterRender = defaultOptionsAfterRender;
|
||||||
this.kolabTypeOptions = ko.observableArray();
|
this.kolabTypeOptions = ko.observableArray();
|
||||||
let i18nFilter = key => i18n('SETTINGS_FOLDERS/TYPE_' + key);
|
let i18nFilter = key => i18n('SETTINGS_FOLDERS/TYPE_' + key);
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import { koComputable } from 'External/ko';
|
||||||
|
|
||||||
import { pInt, settingsSaveHelperSimpleFunction } from 'Common/Utils';
|
import { pInt, settingsSaveHelperSimpleFunction } from 'Common/Utils';
|
||||||
import { Capa, SaveSettingsStep } from 'Common/Enums';
|
import { Capa, SaveSettingsStep } from 'Common/Enums';
|
||||||
import { Settings } from 'Common/Globals';
|
import { SettingsCapa } from 'Common/Globals';
|
||||||
import { i18n, trigger as translatorTrigger } from 'Common/Translator';
|
import { i18n, trigger as translatorTrigger } from 'Common/Translator';
|
||||||
|
|
||||||
import { SettingsUserStore } from 'Stores/User/Settings';
|
import { SettingsUserStore } from 'Stores/User/Settings';
|
||||||
|
|
@ -12,7 +12,7 @@ import Remote from 'Remote/User/Fetch';
|
||||||
|
|
||||||
export class SecurityUserSettings /*extends AbstractViewSettings*/ {
|
export class SecurityUserSettings /*extends AbstractViewSettings*/ {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.capaAutoLogout = Settings.capa(Capa.AutoLogout);
|
this.capaAutoLogout = SettingsCapa(Capa.AutoLogout);
|
||||||
|
|
||||||
this.autoLogout = SettingsUserStore.autoLogout;
|
this.autoLogout = SettingsUserStore.autoLogout;
|
||||||
this.autoLogoutTrigger = ko.observable(SaveSettingsStep.Idle);
|
this.autoLogoutTrigger = ko.observable(SaveSettingsStep.Idle);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import { SaveSettingsStep, UploadErrorCode, Capa } from 'Common/Enums';
|
||||||
import { changeTheme, convertThemeName } from 'Common/Utils';
|
import { changeTheme, convertThemeName } from 'Common/Utils';
|
||||||
import { themePreviewLink, serverRequest } from 'Common/Links';
|
import { themePreviewLink, serverRequest } from 'Common/Links';
|
||||||
import { i18n } from 'Common/Translator';
|
import { i18n } from 'Common/Translator';
|
||||||
import { Settings } from 'Common/Globals';
|
import { SettingsCapa } from 'Common/Globals';
|
||||||
|
|
||||||
import { ThemeStore } from 'Stores/Theme';
|
import { ThemeStore } from 'Stores/Theme';
|
||||||
|
|
||||||
|
|
@ -26,10 +26,9 @@ export class ThemesUserSettings /*extends AbstractViewSettings*/ {
|
||||||
this.themes = ThemeStore.themes;
|
this.themes = ThemeStore.themes;
|
||||||
this.themesObjects = ko.observableArray();
|
this.themesObjects = ko.observableArray();
|
||||||
|
|
||||||
|
themeBackground.enabled = SettingsCapa(Capa.UserBackground);
|
||||||
this.background = themeBackground;
|
this.background = themeBackground;
|
||||||
|
|
||||||
this.capaUserBackground = Settings.capa(Capa.UserBackground);
|
|
||||||
|
|
||||||
this.themeTrigger = ko.observable(SaveSettingsStep.Idle).extend({ debounce: 100 });
|
this.themeTrigger = ko.observable(SaveSettingsStep.Idle).extend({ debounce: 100 });
|
||||||
|
|
||||||
ThemeStore.theme.subscribe(value => {
|
ThemeStore.theme.subscribe(value => {
|
||||||
|
|
@ -59,7 +58,7 @@ export class ThemesUserSettings /*extends AbstractViewSettings*/ {
|
||||||
|
|
||||||
// initUploader
|
// initUploader
|
||||||
|
|
||||||
if (themeBackground.uploaderButton() && this.capaUserBackground) {
|
if (themeBackground.uploaderButton() && themeBackground.enabled) {
|
||||||
const oJua = new Jua({
|
const oJua = new Jua({
|
||||||
action: serverRequest('UploadBackground'),
|
action: serverRequest('UploadBackground'),
|
||||||
limit: 1,
|
limit: 1,
|
||||||
|
|
@ -112,7 +111,7 @@ export class ThemesUserSettings /*extends AbstractViewSettings*/ {
|
||||||
}
|
}
|
||||||
|
|
||||||
clearBackground() {
|
clearBackground() {
|
||||||
if (this.capaUserBackground) {
|
if (themeBackground.enabled) {
|
||||||
Remote.request('ClearUserBackground', () => {
|
Remote.request('ClearUserBackground', () => {
|
||||||
themeBackground.name('');
|
themeBackground.name('');
|
||||||
themeBackground.hash('');
|
themeBackground.hash('');
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import { IdentityUserStore } from 'Stores/User/Identity';
|
||||||
import { AbstractViewPopup } from 'Knoin/AbstractViews';
|
import { AbstractViewPopup } from 'Knoin/AbstractViews';
|
||||||
|
|
||||||
import { Capa } from 'Common/Enums';
|
import { Capa } from 'Common/Enums';
|
||||||
import { Settings } from 'Common/Globals';
|
import { SettingsCapa } from 'Common/Globals';
|
||||||
|
|
||||||
export class OpenPgpGeneratePopupView extends AbstractViewPopup {
|
export class OpenPgpGeneratePopupView extends AbstractViewPopup {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
|
@ -34,7 +34,7 @@ export class OpenPgpGeneratePopupView extends AbstractViewPopup {
|
||||||
saveGnuPGPrivate: false
|
saveGnuPGPrivate: false
|
||||||
});
|
});
|
||||||
|
|
||||||
this.canGnuPG = Settings.capa(Capa.GnuPG);
|
this.canGnuPG = SettingsCapa(Capa.GnuPG);
|
||||||
|
|
||||||
this.email.subscribe(() => this.emailError(false));
|
this.email.subscribe(() => this.emailError(false));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -828,7 +828,7 @@ export class MailMessageList extends AbstractViewRight {
|
||||||
shortcuts.add('arrowleft', 'meta', Scope.MessageView, ()=>false);
|
shortcuts.add('arrowleft', 'meta', Scope.MessageView, ()=>false);
|
||||||
shortcuts.add('arrowright', 'meta', Scope.MessageView, ()=>false);
|
shortcuts.add('arrowright', 'meta', Scope.MessageView, ()=>false);
|
||||||
|
|
||||||
if (!ThemeStore.isMobile() && SettingsCapa(Capa.Prefetch)) {
|
if (!ThemeStore.isMobile() && SettingsCapa('Prefetch')) {
|
||||||
ifvisible.idle(this.prefetchNextTick.bind(this));
|
ifvisible.idle(this.prefetchNextTick.bind(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,7 @@ import ko from 'ko';
|
||||||
|
|
||||||
import { UNUSED_OPTION_VALUE } from 'Common/Consts';
|
import { UNUSED_OPTION_VALUE } from 'Common/Consts';
|
||||||
|
|
||||||
import {
|
import { Scope } from 'Common/Enums';
|
||||||
Capa,
|
|
||||||
Scope
|
|
||||||
} from 'Common/Enums';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ComposeType,
|
ComposeType,
|
||||||
|
|
@ -93,7 +90,7 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
|
|
||||||
this.moveAction = moveAction;
|
this.moveAction = moveAction;
|
||||||
|
|
||||||
this.allowMessageActions = SettingsCapa(Capa.MessageActions);
|
this.allowMessageActions = SettingsCapa('MessageActions');
|
||||||
|
|
||||||
const attachmentsActions = Settings.app('attachmentsActions');
|
const attachmentsActions = Settings.app('attachmentsActions');
|
||||||
this.attachmentsActions = ko.observableArray(arrayLength(attachmentsActions) ? attachmentsActions : []);
|
this.attachmentsActions = ko.observableArray(arrayLength(attachmentsActions) ? attachmentsActions : []);
|
||||||
|
|
@ -132,7 +129,7 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
this.viewHash = '';
|
this.viewHash = '';
|
||||||
|
|
||||||
this.addComputables({
|
this.addComputables({
|
||||||
allowAttachmentControls: () => this.attachmentsActions.length && SettingsCapa(Capa.AttachmentsActions),
|
allowAttachmentControls: () => this.attachmentsActions.length && SettingsCapa('AttachmentsActions'),
|
||||||
|
|
||||||
downloadAsZipAllowed: () => this.attachmentsActions.includes('zip') && this.allowAttachmentControls(),
|
downloadAsZipAllowed: () => this.attachmentsActions.includes('zip') && this.allowAttachmentControls(),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import { KeyboardShortcutsHelpPopupView } from 'View/Popup/KeyboardShortcutsHelp
|
||||||
import { AccountPopupView } from 'View/Popup/Account';
|
import { AccountPopupView } from 'View/Popup/Account';
|
||||||
import { ContactsPopupView } from 'View/Popup/Contacts';
|
import { ContactsPopupView } from 'View/Popup/Contacts';
|
||||||
|
|
||||||
import { doc, Settings/*, SettingsGet*/, leftPanelDisabled, fireEvent } from 'Common/Globals';
|
import { doc, leftPanelDisabled, fireEvent, SettingsCapa } from 'Common/Globals';
|
||||||
|
|
||||||
import { ThemeStore } from 'Stores/Theme';
|
import { ThemeStore } from 'Stores/Theme';
|
||||||
|
|
||||||
|
|
@ -26,7 +26,7 @@ export class SystemDropDownUserView extends AbstractViewRight {
|
||||||
constructor() {
|
constructor() {
|
||||||
super('SystemDropDown');
|
super('SystemDropDown');
|
||||||
|
|
||||||
this.allowAccounts = Settings.capa(Capa.AdditionalAccounts);
|
this.allowAccounts = SettingsCapa(Capa.AdditionalAccounts);
|
||||||
|
|
||||||
this.accountEmail = AccountUserStore.email;
|
this.accountEmail = AccountUserStore.email;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ win.rl = {
|
||||||
get: name => RL_APP_DATA[name],
|
get: name => RL_APP_DATA[name],
|
||||||
set: (name, value) => RL_APP_DATA[name] = value,
|
set: (name, value) => RL_APP_DATA[name] = value,
|
||||||
app: name => RL_APP_DATA.System[name],
|
app: name => RL_APP_DATA.System[name],
|
||||||
capa: name => name && (RL_APP_DATA.Capa || []).includes(name)
|
capa: name => name && !!(RL_APP_DATA.Capa || {})[name]
|
||||||
},
|
},
|
||||||
setWindowTitle: title =>
|
setWindowTitle: title =>
|
||||||
doc.title = RL_APP_DATA.Title ? (title ? title + ' - ' : '') + RL_APP_DATA.Title : (title ? '' + title : ''),
|
doc.title = RL_APP_DATA.Title ? (title ? title + ' - ' : '') + RL_APP_DATA.Title : (title ? '' + title : ''),
|
||||||
|
|
|
||||||
|
|
@ -1165,89 +1165,36 @@ class Actions
|
||||||
public function Capa(bool $bAdmin, ?Model\Account $oAccount = null): array
|
public function Capa(bool $bAdmin, ?Model\Account $oAccount = null): array
|
||||||
{
|
{
|
||||||
static $aResult;
|
static $aResult;
|
||||||
if ($aResult && !$oAccount) {
|
if (!$aResult) {
|
||||||
return $aResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
$oConfig = $this->oConfig;
|
$oConfig = $this->oConfig;
|
||||||
|
|
||||||
$aResult = array(
|
$aResult = array(
|
||||||
Enumerations\Capa::AUTOLOGOUT
|
'AutoLogout' => true,
|
||||||
|
'AdditionalAccounts' => (bool) $oConfig->Get('webmail', 'allow_additional_accounts', false),
|
||||||
|
'AttachmentThumbnails' => (bool) $oConfig->Get('interface', 'show_attachment_thumbnail', true),
|
||||||
|
'AttachmentsActions' => (bool) $oConfig->Get('capa', 'attachments_actions', false),
|
||||||
|
'Contacts' => (bool) $oConfig->Get('capa', 'contacts', true),
|
||||||
|
'DangerousActions' => (bool) $oConfig->Get('capa', 'dangerous_actions', true),
|
||||||
|
'GnuPG' => (bool) $oConfig->Get('security', 'openpgp', false) && \SnappyMail\PGP\GnuPG::isSupported(),
|
||||||
|
'Identities' => (bool) $oConfig->Get('webmail', 'allow_additional_identities', false),
|
||||||
|
'Kolab' => (bool) $oConfig->Get('labs', 'kolab_enabled', false),
|
||||||
|
'MessageActions' => (bool) $oConfig->Get('capa', 'message_actions', true),
|
||||||
|
'OpenPGP' => (bool) $oConfig->Get('security', 'openpgp', false),
|
||||||
|
'Prefetch' => (bool) $oConfig->Get('labs', 'allow_prefetch', false),
|
||||||
|
'Quota' => (bool) $oConfig->Get('capa', 'quota', true),
|
||||||
|
'Search' => (bool) $oConfig->Get('capa', 'search', true),
|
||||||
|
'SearchAdv' => (bool) $oConfig->Get('capa', 'search', true) && $oConfig->Get('capa', 'search_adv', true),
|
||||||
|
'Sieve' => false,
|
||||||
|
'Themes' => (bool) $oConfig->Get('webmail', 'allow_themes', false),
|
||||||
|
'UserBackground' => (bool) $oConfig->Get('webmail', 'allow_user_background', false)
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($oConfig->Get('capa', 'dangerous_actions', true)) {
|
|
||||||
$aResult[] = Enumerations\Capa::DANGEROUS_ACTIONS;
|
|
||||||
}
|
}
|
||||||
|
$aResult['Sieve'] = $bAdmin || ($oAccount && $oAccount->Domain()->UseSieve());
|
||||||
if ($oConfig->Get('capa', 'quota', true)) {
|
|
||||||
$aResult[] = Enumerations\Capa::QUOTA;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('webmail', 'allow_additional_accounts', false)) {
|
|
||||||
$aResult[] = Enumerations\Capa::ADDITIONAL_ACCOUNTS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('webmail', 'allow_additional_identities', false)) {
|
|
||||||
$aResult[] = Enumerations\Capa::IDENTITIES;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('webmail', 'allow_themes', false)) {
|
|
||||||
$aResult[] = Enumerations\Capa::THEMES;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('webmail', 'allow_user_background', false)) {
|
|
||||||
$aResult[] = Enumerations\Capa::USER_BACKGROUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('security', 'openpgp', false)) {
|
|
||||||
$aResult[] = Enumerations\Capa::OPEN_PGP;
|
|
||||||
if (\SnappyMail\PGP\GnuPG::isSupported()) {
|
|
||||||
$aResult[] = Enumerations\Capa::GNUPG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($bAdmin || ($oAccount && $oAccount->Domain()->UseSieve())) {
|
|
||||||
$aResult[] = Enumerations\Capa::SIEVE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('capa', 'attachments_actions', false)) {
|
|
||||||
$aResult[] = Enumerations\Capa::ATTACHMENTS_ACTIONS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('capa', 'message_actions', true)) {
|
|
||||||
$aResult[] = Enumerations\Capa::MESSAGE_ACTIONS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('capa', 'contacts', true)) {
|
|
||||||
$aResult[] = Enumerations\Capa::CONTACTS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('capa', 'search', true)) {
|
|
||||||
$aResult[] = Enumerations\Capa::SEARCH;
|
|
||||||
|
|
||||||
if ($oConfig->Get('capa', 'search_adv', true)) {
|
|
||||||
$aResult[] = Enumerations\Capa::SEARCH_ADV;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('interface', 'show_attachment_thumbnail', true)) {
|
|
||||||
$aResult[] = Enumerations\Capa::ATTACHMENT_THUMBNAILS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('labs', 'allow_prefetch', false)) {
|
|
||||||
$aResult[] = Enumerations\Capa::PREFETCH;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($oConfig->Get('labs', 'kolab_enabled', false)) {
|
|
||||||
$aResult[] = Enumerations\Capa::KOLAB;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $aResult;
|
return $aResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function GetCapa(string $sName, ?Model\Account $oAccount = null): bool
|
public function GetCapa(string $sName, ?Model\Account $oAccount = null): bool
|
||||||
{
|
{
|
||||||
return \in_array($sName, $this->Capa(false, $oAccount));
|
return !empty($this->Capa(false, $oAccount)[$sName]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function etag(string $sKey): string
|
public function etag(string $sKey): string
|
||||||
|
|
|
||||||
|
|
@ -4,23 +4,22 @@ namespace RainLoop\Enumerations;
|
||||||
|
|
||||||
class Capa
|
class Capa
|
||||||
{
|
{
|
||||||
const GNUPG = 'GNUPG';
|
const GNUPG = 'GnuPG';
|
||||||
const OPEN_PGP = 'OPEN_PGP';
|
const OPEN_PGP = 'OpenPGP';
|
||||||
const PREFETCH = 'PREFETCH';
|
const PREFETCH = 'Prefetch';
|
||||||
const THEMES = 'THEMES';
|
const THEMES = 'Themes';
|
||||||
const USER_BACKGROUND = 'USER_BACKGROUND';
|
const USER_BACKGROUND = 'UserBackground';
|
||||||
const SIEVE = 'SIEVE';
|
const SIEVE = 'Sieve';
|
||||||
const ATTACHMENT_THUMBNAILS = 'ATTACHMENT_THUMBNAILS';
|
const ATTACHMENT_THUMBNAILS = 'AttachmentThumbnails';
|
||||||
const ADDITIONAL_ACCOUNTS = 'ADDITIONAL_ACCOUNTS';
|
const ADDITIONAL_ACCOUNTS = 'AdditionalAccounts';
|
||||||
const IDENTITIES = 'IDENTITIES';
|
const IDENTITIES = 'Identities';
|
||||||
const CONTACTS = 'CONTACTS';
|
const CONTACTS = 'Contacts';
|
||||||
const SEARCH = 'SEARCH';
|
const SEARCH = 'Search';
|
||||||
const SEARCH_ADV = 'SEARCH_ADV';
|
const SEARCH_ADV = 'SearchAdv';
|
||||||
const QUOTA = 'QUOTA';
|
const QUOTA = 'Quota';
|
||||||
const TEMPLATES = 'TEMPLATES';
|
const MESSAGE_ACTIONS = 'MessageActions';
|
||||||
const MESSAGE_ACTIONS = 'MESSAGE_ACTIONS';
|
const ATTACHMENTS_ACTIONS = 'AttachmentsActions';
|
||||||
const ATTACHMENTS_ACTIONS = 'ATTACHMENTS_ACTIONS';
|
const DANGEROUS_ACTIONS = 'DangerousActions';
|
||||||
const DANGEROUS_ACTIONS = 'DANGEROUS_ACTIONS';
|
const AUTOLOGOUT = 'AutoLogout';
|
||||||
const AUTOLOGOUT = 'AUTOLOGOUT';
|
const KOLAB = 'Kolab';
|
||||||
const KOLAB = 'KOLAB';
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<div class="form-horizontal" data-bind="visible: capaUserBackground">
|
<div class="form-horizontal" data-bind="visible: background.enabled">
|
||||||
<div class="legend" data-i18n="SETTINGS_THEMES/LEGEND_THEMES_CUSTOM"></div>
|
<div class="legend" data-i18n="SETTINGS_THEMES/LEGEND_THEMES_CUSTOM"></div>
|
||||||
<div class="control-group g-ui-user-select-none">
|
<div class="control-group g-ui-user-select-none">
|
||||||
<div class="row" data-bind="visible: '' !== background.error()" style="margin-left: 0; margin-bottom: 10px;">
|
<div class="row" data-bind="visible: '' !== background.error()" style="margin-left: 0; margin-bottom: 10px;">
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue