Split up Email views

This commit is contained in:
Johannes Zellner
2025-04-16 17:59:03 +02:00
parent ec20fb453b
commit 024d057e03
7 changed files with 265 additions and 211 deletions
+32 -26
View File
@@ -16,12 +16,13 @@ import AppstoreView from './views/AppstoreView.vue';
import BackupsView from './views/BackupsView.vue';
import BrandingView from './views/BrandingView.vue';
import DomainsView from './views/DomainsView.vue';
import EmailView from './views/EmailView.vue';
import EmailDomainView from './views/EmailDomainView.vue';
import EmailsEventlogView from './views/EmailsEventlogView.vue';
import EmailMailboxesView from './views/EmailMailboxesView.vue';
import EmailMailinglistsView from './views/EmailMailinglistsView.vue';
import EmailSettingsView from './views/EmailSettingsView.vue';
import EmailEventlogView from './views/EmailEventlogView.vue';
import EmailStatusView from './views/EmailStatusView.vue';
import EventlogView from './views/EventlogView.vue';
import MailboxesView from './views/MailboxesView.vue';
import MailinglistsView from './views/MailinglistsView.vue';
import NetworkView from './views/NetworkView.vue';
import ProfileView from './views/ProfileView.vue';
import ServicesView from './views/ServicesView.vue';
@@ -39,11 +40,12 @@ const VIEWS = {
BACKUPS: 'backups',
BRANDING: 'branding',
DOMAINS: 'domains',
EMAIL: 'email',
EMAIL_DOMAIN: 'email-domain',
EMAILS_EVENTLOG: 'emails-eventlog',
EMAILS_MAILBOXES: 'emails-mailboxes',
EMAILS_MAILINGLISTS: 'emails-mailinglists',
EMAIL_MAILBOXES: 'email-mailboxes',
EMAIL_MAILINGLISTS: 'email-mailinglists',
EMAIL_SETTINGS: 'email-settings',
EMAIL_EVENTLOG: 'email-eventlog',
EMAIL_STATUS: 'email-status',
EVENTLOG: 'eventlog',
NETWORK: 'network',
PROFILE: 'profile',
@@ -131,16 +133,18 @@ function onHashChange() {
view.value = VIEWS.BRANDING;
} else if (v === VIEWS.DOMAINS && profile.value.isAtLeastAdmin) {
view.value = VIEWS.DOMAINS;
} else if (v === VIEWS.EMAIL && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAIL;
} else if (v === VIEWS.EMAILS_EVENTLOG && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAILS_EVENTLOG;
} else if (v === VIEWS.EMAILS_MAILBOXES && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAILS_MAILBOXES;
} else if (v === VIEWS.EMAILS_MAILINGLISTS && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAILS_MAILINGLISTS;
} else if (v.indexOf(VIEWS.EMAIL+'/') === 0 && profile.value.isAtLeastMailManager) {
} else if (v === VIEWS.EMAIL_DOMAIN && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAIL_DOMAIN;
} else if (v === VIEWS.EMAIL_MAILBOXES && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAIL_MAILBOXES;
} else if (v === VIEWS.EMAIL_MAILINGLISTS && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAIL_MAILINGLISTS;
} else if (v === VIEWS.EMAIL_SETTINGS && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAIL_SETTINGS;
} else if (v === VIEWS.EMAIL_EVENTLOG && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAIL_EVENTLOG;
} else if (v === VIEWS.EMAIL_STATUS && profile.value.isAtLeastMailManager) {
view.value = VIEWS.EMAIL_STATUS;
} else if (v === VIEWS.EVENTLOG && profile.value.isAtLeastAdmin) {
view.value = VIEWS.EVENTLOG;
} else if (v === VIEWS.NETWORK && profile.value.isAtLeastAdmin) {
@@ -242,11 +246,12 @@ onMounted(async () => {
<Transition name="sidebar-item-group-animation">
<div class="sidebar-item-group" v-if="activeSidebarGroup === 'email'">
<!-- TODO separate the views -->
<!-- <a class="sidebar-item" :class="{ active: activeSidebarItem === 'email1' }" href="#/email" @click="onSidebarClose()"><i class="fa fa-cog fa-fw"></i> Domains</a> -->
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'emails-mailboxes' }" href="#/emails-mailboxes" @click="onSidebarClose()"><i class="fa fa-inbox fa-fw"></i> {{ $t('email.incoming.mailboxes.title') }}</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'emails-mailinglists' }" href="#/emails-mailinglists" @click="onSidebarClose()"><i class="fa-solid fa-envelopes-bulk fa-fw"></i> {{ $t('email.incoming.mailinglists.title') }}</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'email' }" href="#/email" @click="onSidebarClose()"><i class="fa fa-cog fa-fw"></i> {{ $t('settings.title') }}</a>
<!-- <a class="sidebar-item" :class="{ active: activeSidebarItem === 'email2' }" href="#/email" @click="onSidebarClose()"><i class="fa fa-cog fa-fw"></i> Status</a> -->
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'email-domain' }" href="#/email-domain" @click="onSidebarClose()"><i class="fa fa-fw fa-wrench"></i> Domains</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'email-mailboxes' }" href="#/email-mailboxes" @click="onSidebarClose()"><i class="fa fa-fw fa-inbox"></i> {{ $t('email.incoming.mailboxes.title') }}</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'email-mailinglists' }" href="#/email-mailinglists" @click="onSidebarClose()"><i class="fa fa-fw-solid fa-envelopes-bulk"></i> {{ $t('email.incoming.mailinglists.title') }}</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'email-eventlog' }" href="#/email-eventlog" @click="onSidebarClose()"><i class="fa fa-fw fa-list-alt"></i> Logs</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'email-status' }" href="#/email-status" @click="onSidebarClose()"><i class="fa fa-fw fa-clipboard-check"></i> Status</a>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'email-settings' }" href="#/email-settings" @click="onSidebarClose()"><i class="fa fa-fw fa-cog"></i> {{ $t('settings.title') }}</a>
</div>
</Transition>
<a class="sidebar-item" :class="{ active: activeSidebarItem === 'eventlog' }" v-show="profile.isAtLeastAdmin" href="#/eventlog" @click="onSidebarClose()"><i class="fa fa-list-alt fa-fw"></i> {{ $t('eventlog.title') }}</a>
@@ -271,12 +276,13 @@ onMounted(async () => {
<BackupsView v-else-if="view === VIEWS.BACKUPS" />
<BrandingView v-else-if="view === VIEWS.BRANDING" />
<DomainsView v-else-if="view === VIEWS.DOMAINS" />
<EmailView v-else-if="view === VIEWS.EMAIL" />
<EmailDomainView v-else-if="view === VIEWS.EMAIL_DOMAIN" />
<EmailsEventlogView v-else-if="view === VIEWS.EMAILS_EVENTLOG" />
<EmailMailboxesView v-else-if="view === VIEWS.EMAIL_MAILBOXES" />
<EmailMailinglistsView v-else-if="view === VIEWS.EMAIL_MAILINGLISTS" />
<EmailSettingsView v-else-if="view === VIEWS.EMAIL_SETTINGS" />
<EmailEventlogView v-else-if="view === VIEWS.EMAIL_EVENTLOG" />
<EmailStatusView v-else-if="view === VIEWS.EMAIL_STATUS" />
<EventlogView v-else-if="view === VIEWS.EVENTLOG" />
<MailboxesView v-else-if="view === VIEWS.EMAILS_MAILBOXES" />
<MailinglistsView v-else-if="view === VIEWS.EMAILS_MAILINGLISTS" />
<NetworkView v-else-if="view === VIEWS.NETWORK" />
<ProfileView v-else-if="view === VIEWS.PROFILE" />
<ServicesView v-else-if="view === VIEWS.SERVICES" />