2007-06-19 19:58:21 +02:00
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE var:component>
2008-08-21 04:36:04 +02:00
<var:component
2015-02-25 23:21:07 +01:00
xmlns="http://www.w3.org/1999/xhtml"
xmlns:var="http://www.skyrix.com/od/binding"
xmlns:const="http://www.skyrix.com/od/constant"
xmlns:rsrc="OGo:url"
xmlns:label="OGo:label"
className="UIxPageFrame"
title="title"
2020-05-15 17:03:39 +02:00
const:jsFiles="vendor/ckeditor/ckeditor.js, Common/sgCkeditor.component.js, vendor/angular-file-upload.min.js, vendor/ng-sortable.min.js, vendor/qrcode.min.js, Common.js, Preferences.js, Preferences.services.js, Mailer.services.js, Contacts.services.js">
2015-02-25 23:21:07 +01:00
2016-03-29 18:15:37 +02:00
<main layout-fill="layout-fill" ui-view="preferences"
2015-03-16 16:53:50 +01:00
ng-controller="navController"><!-- preferences --> </main>
2015-02-25 23:21:07 +01:00
2015-04-03 17:34:05 +02:00
<script type="text/javascript">
var mailCustomFromEnabled = <var:string value="mailCustomFromEnabled" const:escapeHTML="NO"/>;
2016-02-09 20:15:23 +01:00
var forwardEnabled = <var:string value="forwardEnabled" const:escapeHTML="NO"/>;
var vacationEnabled = <var:string value="isVacationEnabled" const:escapeHTML="NO"/>;
2015-07-21 21:21:57 +02:00
var timeZonesList = <var:string value="timeZonesList" const:escapeHTML="NO"/>;
2020-06-02 20:22:20 +02:00
var defaultEmailAddresses = <var:string value="defaultEmailAddresses" const:escapeHTML="NO"/>;
2018-09-08 03:38:31 +02:00
var defaultCalendarCategories = <var:string value="defaultCalendarCategoriesColors" const:escapeHTML="NO"/>;
2020-07-03 16:43:20 +02:00
var defaultContactsCategories = <var:string value="defaultContactsCategories" const:escapeHTML="NO"/>;
2015-08-18 21:25:51 +02:00
var forwardConstraints = <var:string value="forwardConstraints" const:escapeHTML="NO"/>;
2019-08-15 18:48:53 +02:00
var forwardConstraintsDomains = <var:string value="forwardConstraintsDomains" const:escapeHTML="NO"/>;
2015-08-19 14:47:33 +02:00
var sieveCapabilities = <var:string value="sieveCapabilities" const:escapeHTML="NO"/>;
2015-04-03 17:34:05 +02:00
</script>
<script type="text/ng-template" id="preferences.html">
2016-03-29 18:15:37 +02:00
<form name="preferencesForm" class="view"
layout="row" layout-fill="layout-fill">
2015-12-04 21:00:58 +01:00
<md-sidenav id="left-sidenav" class="md-sidenav-left md-whiteframe-z1" layout="column"
md-component-id="left" md-is-locked-open="isGtMedium"
2016-03-08 19:20:34 +01:00
ng-class="{ 'sg-close': leftIsClose }">
2015-04-03 17:34:05 +02:00
<var:component className="UIxSidenavToolbarTemplate" />
2016-12-01 17:14:38 +01:00
<md-content md-scroll-y="md-scroll-y" class="md-flex"
md-colors="::{ backgroundColor: 'default-background-300' }">
<md-subheader
md-colors="::{background: 'default-background-300'}">{{ ::'Preferences' | loc }}</md-subheader>
2015-04-03 17:34:05 +02:00
<md-list>
2016-03-29 18:15:37 +02:00
<md-list-item ng-click="app.go('general', preferencesForm)"
ng-disabled="preferencesForm.$invalid"
2015-07-28 02:11:57 +02:00
ui-sref="preferences.general"
2015-09-09 22:35:09 +02:00
ui-sref-active="md-default-theme md-background md-bg md-hue-1">
<md-icon>settings</md-icon>
2015-07-28 02:11:57 +02:00
<p class="sg-item-name"><var:string label:value="General"/></p>
2015-04-09 20:46:54 +02:00
</md-list-item>
2015-08-14 08:31:27 +02:00
<var:if condition="userHasCalendarAccess">
2016-03-29 18:15:37 +02:00
<md-list-item ng-click="app.go('calendars', preferencesForm)"
ng-disabled="preferencesForm.$invalid"
2015-08-14 08:31:27 +02:00
ui-sref="preferences.calendars"
2015-09-09 22:35:09 +02:00
ui-sref-active="md-default-theme md-background md-bg md-hue-1">
<md-icon>event</md-icon>
2015-08-14 08:31:27 +02:00
<p class="sg-item-name"><var:string label:value="Calendar"/></p>
</md-list-item>
</var:if>
2016-03-29 18:15:37 +02:00
<md-list-item ng-click="app.go('addressbooks', preferencesForm)"
ng-disabled="preferencesForm.$invalid"
2015-07-28 02:11:57 +02:00
ui-sref="preferences.addressbooks"
2015-09-09 22:35:09 +02:00
ui-sref-active="md-default-theme md-background md-bg md-hue-1">
<md-icon>contacts</md-icon>
2015-07-28 02:11:57 +02:00
<p class="sg-item-name"><var:string label:value="Contacts"/></p>
2015-04-09 20:46:54 +02:00
</md-list-item>
2015-08-14 08:31:27 +02:00
<var:if condition="userHasMailAccess">
2016-03-29 18:15:37 +02:00
<md-list-item ng-click="app.go('mailer', preferencesForm)"
ng-disabled="preferencesForm.$invalid"
2015-08-14 08:31:27 +02:00
ui-sref="preferences.mailer"
2015-09-09 22:35:09 +02:00
ui-sref-active="md-default-theme md-background md-bg md-hue-1">
<md-icon>email</md-icon>
2015-08-14 08:31:27 +02:00
<p class="sg-item-name"><var:string label:value="Mail"/></p>
</md-list-item>
</var:if>
2015-04-03 17:34:05 +02:00
</md-list>
</md-content>
</md-sidenav>
2016-03-08 19:20:34 +01:00
<section layout="column" layout-fill="layout-fill">
2015-04-28 19:40:27 +02:00
2015-04-03 17:34:05 +02:00
<!-- TOP RIGHT TOOLBAR -->
<md-toolbar layout="row" layout-align="space-between start" class="md-tall">
2016-03-30 03:59:21 +02:00
<var:component className="UIxTopnavToolbar" const:navButtonClick="app.confirmChanges($event, preferencesForm)"/>
2015-08-14 08:31:27 +02:00
<md-button type="button" class="md-fab md-fab-bottom-right md-fab-overlap-bottom"
2016-03-29 18:15:37 +02:00
ng-disabled="preferencesForm.$invalid || preferencesForm.$pristine"
ng-click="app.save(preferencesForm)">
2015-08-14 08:31:27 +02:00
<md-icon>save</md-icon>
</md-button>
2015-04-03 17:34:05 +02:00
</md-toolbar>
2016-03-29 18:15:37 +02:00
<md-content layout="column">
2015-08-14 08:31:27 +02:00
<div ui-view="module"><!-- view --></div>
2015-05-19 16:55:40 +02:00
</md-content>
2015-04-03 17:34:05 +02:00
</section>
2016-03-29 18:15:37 +02:00
</form>
2015-04-03 17:34:05 +02:00
</script>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
<!--
GENERAL PREFERENCE PANEL
-->
<script type="text/ng-template" id="generalPreferences.html">
<md-tabs class="md-flex" md-border-bottom="md-border-bottom" md-dynamic-height="true">
<!-- GENERAL OPTIONS -->
<md-tab id="generalOptionsView" aria-controls="generalOptionsView-content" label:label="General">
<md-content layout="row"
aria-labelledby="generalOptionsView"
2016-06-14 22:11:12 +02:00
id="generalOptionsView-content" class="md-inline-form md-padding">
2015-08-14 08:31:27 +02:00
<div layout="column" flex="100">
<md-input-container>
<label><var:string label:value="SOGo Version"/></label>
<input type="text" ng-readonly="true" var:value="sogoVersion"/>
</md-input-container>
<div layout="row">
2015-12-11 21:11:53 +01:00
<md-input-container class="md-block" flex="50">
<label><var:string label:value="Language"/></label>
<md-select ng-model="app.preferences.defaults.SOGoLanguage"
2016-03-29 18:15:37 +02:00
ng-change="app.onLanguageChange(preferencesForm)">
2015-12-11 21:11:53 +01:00
<var:foreach list="languages" item="item">
<md-option var:value="item">
2017-01-10 16:35:06 +01:00
<var:string value="languageText"/> <small md-colors="::{ color: 'default-background-500'}"><var:string value="languageLocale.NSLocaleCode"/></small>
2015-12-11 21:11:53 +01:00
</md-option>
</var:foreach>
</md-select>
</md-input-container>
<md-autocomplete
class="md-block" flex="50"
md-search-text="app.timeZonesSearchText"
md-selected-item="app.preferences.defaults.SOGoTimeZone"
md-items="timezone in app.timeZonesListFilter(app.timeZonesSearchText)"
md-item-text="timezone"
md-min-length="3"
md-select-on-match="true"
2016-03-29 18:15:37 +02:00
md-match-case-insensitive="true"
ng-required="true"
sg-select-only="sg-select-only"
2020-07-03 16:45:11 +02:00
label:md-floating-label="Time Zone">
2016-03-29 18:15:37 +02:00
<md-item-template>
<span md-highlight-text="app.timeZonesSearchText">{{timezone}}</span>
</md-item-template>
<md-not-found>
<var:string label:value="No matches found."/>
</md-not-found>
2015-12-11 21:11:53 +01:00
</md-autocomplete>
2015-08-14 08:31:27 +02:00
</div>
2015-07-03 17:29:40 +02:00
2020-11-04 22:47:12 +01:00
<div layout="row" layout-xs="column">
2015-12-23 04:05:05 +01:00
<md-input-container class="md-block" flex="30" flex-xs="100">
2015-12-11 21:11:53 +01:00
<label><var:string label:value="Short Date Format"/></label>
<md-select ng-model="app.preferences.defaults.SOGoShortDateFormat">
<var:foreach list="shortDateFormatsList" item="item">
<md-option var:value="item">
<var:string value="itemShortDateFormatText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-12-23 04:05:05 +01:00
<md-input-container class="md-block" flex="40" flex-xs="100">
2015-12-11 21:11:53 +01:00
<label><var:string label:value="Long Date Format"/></label>
<md-select ng-model="app.preferences.defaults.SOGoLongDateFormat">
<var:foreach list="longDateFormatsList" item="item">
<md-option var:value="item">
<var:string value="itemLongDateFormatText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-12-23 04:05:05 +01:00
<md-input-container class="md-block" flex="30" flex-xs="100">
2015-12-11 21:11:53 +01:00
<label><var:string label:value="Time Format"/></label>
<md-select ng-model="app.preferences.defaults.SOGoTimeFormat">
<var:foreach list="timeFormatsList" item="item">
<md-option var:value="item">
<var:string value="itemTimeFormatText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-08-14 08:31:27 +02:00
</div>
2015-07-03 17:29:40 +02:00
2015-08-14 08:31:27 +02:00
<md-input-container>
<label><var:string label:value="Default Module"/></label>
<md-select ng-model="app.preferences.defaults.SOGoLoginModule">
<var:foreach list="availableModules" item="item">
<md-option var:value="item">
<var:string value="itemModuleText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
<md-input-container>
<label><var:string label:value="Refresh View"/></label>
<md-select ng-model="app.preferences.defaults.SOGoRefreshViewCheck">
<var:foreach list="refreshViewList" item="item">
<md-option var:value="item">
<var:string value="itemRefreshViewCheckText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-11-27 22:04:12 +01:00
2020-07-29 22:31:19 +02:00
<div layout="row" layout-align="start start" ng-if="app.preferences.supportsNotifications()">
2020-11-13 23:19:53 +01:00
<md-checkbox
2020-07-29 22:31:19 +02:00
ng-model="app.preferences.defaults.SOGoDesktopNotifications"
ng-true-value="1"
ng-false-value="0"
ng-change="app.onDesktopNotificationsChange()"
label:aria-label="Enable Desktop Notifications">
<var:string label:value="Enable Desktop Notifications"/>
</md-checkbox>
</div>
2016-05-25 22:04:58 +02:00
<var:if condition="externalAvatarsEnabled">
<div layout="row" layout-align="start start">
<md-checkbox flex="20"
ng-model="app.preferences.defaults.SOGoGravatarEnabled"
ng-true-value="1"
ng-false-value="0"
label:aria-label="Use Gravatar">
<var:string label:value="Use Gravatar"/>
</md-checkbox>
<md-input-container class="md-flex">
<label><var:string label:value="Alternate Avatar"/></label>
<md-select ng-model="app.preferences.defaults.SOGoAlternateAvatar"
ng-disabled="!app.preferences.defaults.SOGoGravatarEnabled">
<var:foreach list="alternateAvatar" item="item">
<md-option var:value="item">
<var:string value="itemAlternateAvatarText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
</div>
</var:if>
2017-04-25 22:35:39 +02:00
<md-input-container class="md-block md-input-has-value">
<label><var:string label:value="Animation Level"/></label>
<md-radio-group ng-model="app.preferences.defaults.SOGoAnimationMode">
<md-radio-button value="normal"><var:string label:value="animation_NORMAL"/></md-radio-button>
<md-radio-button value="limited"><var:string label:value="animation_LIMITED"/></md-radio-button>
<md-radio-button value="none"><var:string label:value="animation_NONE"/></md-radio-button>
</md-radio-group>
</md-input-container>
2021-06-16 20:59:02 +02:00
<var:if condition="isTotpEnabled">
<md-checkbox ng-model="app.preferences.defaults.SOGoTOTPEnabled"
2020-05-07 13:22:24 +02:00
ng-true-value="1"
ng-false-value="0"
2021-06-16 15:49:30 +02:00
label:aria-label="Enable two-factor authentication using a TOTP application">
<var:string label:value="Enable two-factor authentication using a TOTP application"/>
2020-05-07 13:22:24 +02:00
</md-checkbox>
2020-11-04 22:47:12 +01:00
<div layout="row" layout-align="start center" layout-xs="column"
2020-05-07 22:45:37 +02:00
layout-padding="layout-padding" layout-margin="layout-margin"
2021-06-16 20:59:02 +02:00
ng-show="app.preferences.defaults.SOGoTOTPEnabled">
2020-05-07 22:45:37 +02:00
<div>
2021-06-16 20:59:02 +02:00
<sg-qr-code var:text="totpKey" />
2020-05-07 22:45:37 +02:00
</div>
<div flex="100" flex-sm="60" flex-gt-sm="50">
2021-06-16 15:49:30 +02:00
<var:string label:value="You must enter this key into your TOTP application."/> <b><var:string label:value="If you do not and you log out you will not be able to login again."/></b>
2020-05-07 22:45:37 +02:00
</div>
</div>
2020-05-07 13:22:24 +02:00
</var:if>
2015-08-14 08:31:27 +02:00
</div>
</md-content>
</md-tab>
<!-- PASSWORD OPTIONS -->
<var:if condition="shouldDisplayPasswordChange">
<md-tab id="generalPasswordView"
aria-controls="generalPasswordView-content"
label:label="Password">
2015-12-07 17:08:39 +01:00
<md-content id="passwordView" class="md-padding">
2020-11-04 22:47:12 +01:00
<div layout="row" layout-xs="column">
<md-input-container class="md-block" flex="flex">
2020-07-27 16:12:22 +02:00
<label><var:string label:value="Current password"/>
</label>
<input type="password" sg-no-dirty-check="true" ng-model="app.passwords.oldPassword"/>
</md-input-container>
2020-11-04 22:47:12 +01:00
<md-input-container class="md-block" flex="flex">
2015-08-14 08:31:27 +02:00
<label><var:string label:value="New password"/>
</label>
2020-07-27 16:12:22 +02:00
<input type="password" sg-no-dirty-check="true" ng-model="app.passwords.newPassword"/>
2015-07-03 17:29:40 +02:00
</md-input-container>
2020-11-04 22:47:12 +01:00
<md-input-container class="md-block" flex="flex">
2015-08-14 08:31:27 +02:00
<label><var:string label:value="Confirmation"/>
</label>
2020-07-27 16:20:38 +02:00
<input type="password" name="newPasswordConfirmation" sg-no-dirty-check="true" ng-model="app.passwords.newPasswordConfirmation"/>
<div ng-messages="preferencesForm.newPasswordConfirmation.$error">
<div ng-message="newPasswordMismatch"><var:string label:value="Passwords don't match"/></div>
</div>
2015-07-03 17:29:40 +02:00
</md-input-container>
2010-08-06 17:34:05 +02:00
</div>
2015-08-14 08:31:27 +02:00
<div layout="row" layout-align="end center">
2020-07-27 16:20:38 +02:00
<md-button ng-click="app.changePassword()" type="button" ng-disabled="!app.canChangePassword(preferencesForm)">
2015-08-14 08:31:27 +02:00
<var:string label:value="Change"/>
</md-button>
</div>
</md-content>
</md-tab>
</var:if>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
</md-tabs>
</script>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
<!--
CALENDAR PREFERENCE PANEL
-->
<script type="text/ng-template" id="calendarsPreferences.html">
<var:if condition="userHasCalendarAccess">
<md-tabs md-border-bottom="md-border-bottom" md-dynamic-height="true">
<!-- CALENDAR - GENERAL -->
<md-tab id="calendarOptionsView"
aria-controls="calendarOptionsView-content"
label:label="General">
<md-content layout="row" layout-align="center center"
aria-labelledby="calendarOptionsView"
2015-12-07 17:08:39 +01:00
class="md-padding"
2015-08-14 08:31:27 +02:00
id="calendarOptionsView-content">
<div layout="column" flex="100">
<div layout="row">
2015-12-11 21:11:53 +01:00
<md-input-container class="md-block" flex="33">
2015-08-03 16:56:24 +02:00
<label><var:string label:value="Week begins on" /></label>
2015-07-03 17:29:40 +02:00
<md-select ng-model="app.preferences.defaults.SOGoFirstDayOfWeek">
<var:foreach list="daysList" item="item">
<md-option var:value="item">
<var:string value="itemWeekStartDay"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-02-25 23:21:07 +01:00
2015-12-11 21:11:53 +01:00
<md-input-container class="md-block" flex="33">
2015-08-03 16:56:24 +02:00
<label><var:string label:value="Day start time" /></label>
2015-07-03 17:29:40 +02:00
<md-select ng-model="app.preferences.defaults.SOGoDayStartTime">
<var:foreach list="hoursList" item="item">
<md-option var:value="item">
<var:string value="item"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-02-25 23:21:07 +01:00
2015-12-11 21:11:53 +01:00
<md-input-container class="md-block" flex="33">
2015-08-03 16:56:24 +02:00
<label><var:string label:value="Day end time" /></label>
2015-07-03 17:29:40 +02:00
<md-select ng-model="app.preferences.defaults.SOGoDayEndTime">
<var:foreach list="hoursList" item="item">
<md-option var:value="item">
<var:string value="item"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-08-14 08:31:27 +02:00
</div>
2015-02-25 23:21:07 +01:00
2016-05-06 20:14:45 +02:00
<div class="pseudo-input-container"
layout="row" layout-align="center center">
<label class="pseudo-input-label"><var:string label:value="Week days to display"/></label>
<md-grid-list md-cols="7" md-row-height="2em" md-gutter="0.5em"
flex="50" flex-sm="80" flex-xs="100"
2016-05-06 22:49:47 +02:00
ng-model="app.preferences.defaults.SOGoCalendarWeekdays"
2017-02-27 18:55:15 +01:00
ng-required="true"
2016-05-06 22:49:47 +02:00
sg-toggle-grid="sg-toggle-grid">
2016-05-06 20:14:45 +02:00
<var:foreach list="shortWeekDaysList" item="item">
<md-grid-tile var:value="valueForWeekDay"><var:string value="item"/></md-grid-tile>
</var:foreach>
</md-grid-list>
</div>
<md-checkbox layout-padding="layout-padding"
2015-08-14 08:31:27 +02:00
ng-model="app.preferences.defaults.SOGoBusyOffHours"
ng-true-value="1"
ng-false-value="0">
<var:string label:value="Show time as busy outside working hours"/>
</md-checkbox>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
<md-input-container>
<label><var:string label:value="First week of year"/></label>
<md-select label:aria-label="First week of year"
ng-model="app.preferences.defaults.SOGoFirstWeekOfYear">
<var:foreach list="firstWeekList" item="item">
<md-option var:value="item">
<var:string value="itemFirstWeekText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
<md-input-container>
<label><var:string label:value="Default calendar" /></label>
<md-select ng-model="app.preferences.defaults.SOGoDefaultCalendar">
<var:foreach list="defaultCalendarList" item="item">
<md-option var:value="item">
<var:string value="itemCalendarText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
<div layout="row">
2015-12-11 21:11:53 +01:00
<md-input-container class="md-block" flex="50">
2015-08-03 16:56:24 +02:00
<label><var:string label:value="Default events classification" /></label>
2015-07-03 17:29:40 +02:00
<md-select ng-model="app.preferences.defaults.SOGoCalendarEventsDefaultClassification">
<var:foreach list="calendarClassificationsList" item="item">
<md-option var:value="item">
<var:string value="itemClassificationText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-02-25 23:21:07 +01:00
2015-12-11 21:11:53 +01:00
<md-input-container class="md-block" flex="50">
2015-08-03 16:56:24 +02:00
<label><var:string label:value="Default tasks classification"/></label>
2015-07-03 17:29:40 +02:00
<md-select ng-model="app.preferences.defaults.SOGoCalendarTasksDefaultClassification">
<var:foreach list="calendarClassificationsList" item="item">
<md-option var:value="item">
<var:string value="itemClassificationText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-02-25 23:21:07 +01:00
</div>
2015-08-14 08:31:27 +02:00
<md-input-container>
<label><var:string label:value="Default reminder"/></label>
<md-select ng-model="app.preferences.defaults.SOGoCalendarDefaultReminder">
<var:foreach list="reminderValues" item="item">
<md-option var:value="item">
<var:string value="itemReminderText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-05-19 16:55:40 +02:00
</div>
2015-08-14 08:31:27 +02:00
</md-content>
</md-tab>
<!-- CALENDAR - CATEGORIES -->
<md-tab id="calendarCategories"
aria-controls="calendarCategories-content"
label:label="Categories">
2015-12-07 17:08:39 +01:00
<md-content class="md-padding">
2015-08-14 08:31:27 +02:00
<div layout="column" flex="100">
<md-list layout="row" layout-wrap="layout-wrap">
2015-12-09 22:52:54 +01:00
<md-list-item flex="50" flex-xs="100"
2015-08-14 08:31:27 +02:00
ng-repeat="item in
app.preferences.defaults.SOGoCalendarCategories
track by $index">
2018-09-11 21:17:31 +02:00
<sg-color-picker ng-model="app.preferences.defaults.SOGoCalendarCategoriesColorsValues[$index]"><!-- color picker--></sg-color-picker>
2015-12-11 21:11:53 +01:00
<md-input-container class="md-block md-flex">
2018-08-02 15:29:33 +02:00
<input type="text" label:aria-label="Calendar Category" required="required"
name="calendarCategory_{{$index}}"
2015-12-10 17:46:56 +01:00
ng-model="app.preferences.defaults.SOGoCalendarCategories[$index]"
2018-08-02 15:29:33 +02:00
ng-change="app.resetCalendarCategoryValidity($index, preferencesForm)"
2015-12-10 17:46:56 +01:00
sg-focus-on="calendarCategory_{{$index}}"/>
2018-08-02 15:29:33 +02:00
<div ng-messages="preferencesForm['calendarCategory_' + $index].$error">
<div ng-message="duplicate"><var:string label:value="Duplicate name"/></div>
</div>
2015-08-14 08:31:27 +02:00
</md-input-container>
<md-button class="sg-icon-button" type="button"
layout="row" layout-align="end center"
label:aria-label="Remove Calendar Category"
2016-03-29 18:15:37 +02:00
ng-click="app.removeCalendarCategory($index, preferencesForm)">
2015-08-14 08:31:27 +02:00
<md-icon>remove_circle</md-icon>
</md-button>
</md-list-item>
</md-list>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
<div layout="row" layout-align="end center">
<md-button type="button"
2018-09-08 03:38:31 +02:00
label:aria-label="Reset to defaults"
ng-click="app.resetCalendarCategories(preferencesForm)">
<var:string label:value="Reset to defaults"/>
</md-button>
<md-button type="button"
2015-08-14 08:31:27 +02:00
label:aria-label="Add Calendar Category"
2016-03-29 18:15:37 +02:00
ng-click="app.addCalendarCategory(preferencesForm)">
2015-08-14 08:31:27 +02:00
<var:string label:value="Add Calendar Category"/>
</md-button>
2015-02-25 23:21:07 +01:00
</div>
2010-02-22 16:12:42 +01:00
</div>
2015-08-14 08:31:27 +02:00
</md-content>
</md-tab>
<!-- CALENDAR - INVITATIONS -->
<md-tab id="calendarInvitationsTab"
aria-controls="calendarInvitationsTab-content"
label:label="Invitations">
2015-12-07 17:05:01 +01:00
<md-content layout="row" layout-align="space-around start"
class="md-padding"
aria-labelledby="calendarInvitationsTab"
id="calendarInvitationsTab-content">
2015-02-25 23:21:07 +01:00
2015-12-07 17:05:01 +01:00
<div layout="column" flex="100">
<md-checkbox
ng-model="app.preferences.settings.Calendar.PreventInvitations"
ng-true-value="1"
ng-false-value="0">
<var:string label:value="Prevent from being invited to appointments"/>
</md-checkbox>
<div flex-offset="5"
ng-show="app.preferences.settings.Calendar.PreventInvitations == 1">
<label>
<var:string label:value="White list for appointment invitations"/>
</label>
<md-contact-chips
flex="100"
2016-06-22 03:29:44 +02:00
class="sg-chips-autocomplete"
2015-12-07 17:05:01 +01:00
ng-model="app.preferences.settings.Calendar.PreventInvitationsWhitelist"
md-contacts="app.userFilter($query, app.preferences.settings.Calendar.PreventInvitationsWhitelist)"
md-contact-name="cn"
md-contact-image="$$image"
md-contact-email="c_email"
2016-01-19 02:08:54 +01:00
md-require-match="true"
2016-06-22 03:29:44 +02:00
md-highlight-flags="i"
2015-12-07 17:05:01 +01:00
filter-selected="false"
label:placeholder="Add"><!-- users --></md-contact-chips>
</div>
</div>
</md-content>
2015-08-14 08:31:27 +02:00
</md-tab>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
</md-tabs>
</var:if>
</script>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
<!--
CONTACTS PREFERENCE PANEL
-->
<script type="text/ng-template" id="addressbooksPreferences.html">
2016-07-12 16:54:38 +02:00
<md-tabs md-dynamic-height="true">
2015-08-14 08:31:27 +02:00
2016-07-12 16:54:38 +02:00
<!-- CONTACT > CATEGORIES -->
<md-tab id="contactsCategoriesTab" aria-controls="contactsCategoriesTab-content" label:label="Categories">
2015-08-14 08:31:27 +02:00
2016-07-12 16:54:38 +02:00
<md-content role="tabpanel" aria-labelledby="contactsCategoriesView"
id="contactsCategoriesView-content" class="md-padding">
<div layout="column" flex="100">
<md-list layout="row" layout-wrap="layout-wrap">
<md-list-item flex="50" flex-sm="100"
ng-repeat="item in
app.preferences.defaults.SOGoContactsCategories
track by $index">
<md-input-container class="md-block md-flex">
<input type="text"
label:aria-label="Contact Category"
2017-10-10 20:55:22 +02:00
required="required"
2019-08-08 16:11:42 +02:00
name="contactCategory_{{$index}}"
2016-07-12 16:54:38 +02:00
ng-model="app.preferences.defaults.SOGoContactsCategories[$index]"
sg-focus-on="contactCategory_{{$index}}"/>
2019-08-08 16:11:42 +02:00
<div ng-messages="preferencesForm['contactCategory_' + $index].$error">
<div ng-message="duplicate"><var:string label:value="Duplicate name"/></div>
</div>
2016-07-12 16:54:38 +02:00
</md-input-container>
<md-button type="button" class="sg-icon-button"
label:aria-label="Remove Contact Category"
2017-02-17 17:01:42 +01:00
ng-click="app.removeContactCategory($index, preferencesForm)">
2016-07-12 16:54:38 +02:00
<md-icon>remove_circle</md-icon>
2015-02-25 23:21:07 +01:00
</md-button>
2016-07-12 16:54:38 +02:00
</md-list-item>
</md-list>
<div layout="row" layout-align="end center">
2020-07-03 16:43:20 +02:00
<md-button type="button"
label:aria-label="Reset to defaults"
ng-click="app.resetContactsCategories(preferencesForm)">
<var:string label:value="Reset to defaults"/>
</md-button>
2016-07-12 16:54:38 +02:00
<md-button type="button"
label:aria-label="Add Contact Category"
2016-10-21 14:59:04 +02:00
ng-click="app.addContactCategory(preferencesForm)">
2016-07-12 16:54:38 +02:00
<var:string label:value="Add Contact Category"/>
</md-button>
2015-08-14 08:31:27 +02:00
</div>
2016-07-12 16:54:38 +02:00
</div>
</md-content>
2015-08-14 08:31:27 +02:00
2016-07-12 16:54:38 +02:00
</md-tab>
<!-- END OF CONTACT > CATEGORIES -->
2015-08-14 08:31:27 +02:00
2016-07-12 16:54:38 +02:00
</md-tabs>
2015-08-14 08:31:27 +02:00
</script>
<!--
MAIL PREFERENCE PANEL
-->
<script type="text/ng-template" id="mailerPreferences.html">
<var:if condition="userHasMailAccess">
<md-tabs md-dynamic-height="true">
<!-- MAIL > GENERAL -->
<md-tab id="mailGeneralTab" aria-controls="mailGeneralTab-content" label:label="General">
<md-content role="tabpanel" aria-labelledby="mailGeneralView"
2016-06-14 22:11:12 +02:00
id="mailGeneralView-content" class="md-padding md-inline-form">
2015-12-07 17:08:39 +01:00
<div>
<md-checkbox
ng-model="app.preferences.defaults.SOGoMailShowSubscribedFoldersOnly"
ng-true-value="1"
ng-false-value="0"
label:aria-label="Show subscribed mailboxes only">
<var:string label:value="Show subscribed mailboxes only"/>
</md-checkbox>
</div>
2016-01-07 15:24:29 +01:00
<div>
<md-checkbox
ng-model="app.preferences.defaults.SOGoMailSynchronizeOnlyDefaultFolders"
ng-true-value="1"
ng-false-value="0"
label:aria-label="Synchronize only default mail folders (EAS)">
<var:string label:value="Synchronize only default mail folders (EAS)"/>
</md-checkbox>
</div>
2019-03-22 16:57:57 +01:00
<div>
<md-checkbox
ng-model="app.preferences.defaults.SOGoMailFetchAllUnseenCountFolders"
ng-true-value="1"
ng-false-value="0"
label:aria-label="Fetch count of unseen messages for all mailboxes">
<var:string label:value="Fetch count of unseen messages for all mailboxes"/>
</md-checkbox>
</div>
2019-06-27 23:43:11 +02:00
<div>
2015-12-07 17:08:39 +01:00
<md-checkbox
ng-model="app.preferences.defaults.SOGoMailSortByThreads"
ng-true-value="1"
ng-false-value="0"
label:aria-label="Sort messages by threads">
<var:string label:value="Sort messages by threads"/>
</md-checkbox>
</div>
2015-08-14 08:31:27 +02:00
2017-09-20 22:50:41 +02:00
<div class="hide-xs" layout="row" layout-align="start center" flex="50">
<md-checkbox
class="md-align-top-left"
ng-model="app.preferences.defaults.SOGoMailComposeWindowEnabled"
label:aria-label="Always show mail composer">
<!-- SOGoMailComposeWindow -->
</md-checkbox>
2020-11-13 23:19:53 +01:00
<md-input-container class="md-block md-flex hide-xs">
2017-09-20 22:50:41 +02:00
<label><var:string label:value="Always open mail composer"/></label>
<md-select
ng-disabled="!app.preferences.defaults.SOGoMailComposeWindowEnabled"
ng-model="app.preferences.defaults.SOGoMailComposeWindow">
<md-option value="inline">
<var:string label:value="Inside current window"/>
</md-option>
<md-option value="popup">
<var:string label:value="In a popup window"/>
</md-option>
</md-select>
</md-input-container>
</div>
2016-02-11 22:45:58 +01:00
<div layout="row" layout-align="start center" flex="50" flex-xs="100">
2015-08-14 08:31:27 +02:00
<md-checkbox
2016-08-30 23:49:17 +02:00
class="md-align-top-left"
ng-model="app.preferences.defaults.SOGoMailAddOutgoingAddresses"
2015-08-14 08:31:27 +02:00
ng-true-value="1"
ng-false-value="0"
2016-08-30 23:49:17 +02:00
label:aria-label="When sending mail, add unknown recipients to my">
<!-- SOGoMailAddOutgoingAddresses -->
2015-08-14 08:31:27 +02:00
</md-checkbox>
2015-02-25 23:21:07 +01:00
2016-02-11 22:45:58 +01:00
<md-input-container class="md-block md-flex">
<label><var:string label:value="When sending mail, add unknown recipients to my"/></label>
2015-08-14 08:31:27 +02:00
<md-select
2016-02-11 22:45:58 +01:00
ng-disabled="app.preferences.defaults.SOGoMailAddOutgoingAddresses != 1"
2015-08-14 08:31:27 +02:00
ng-model="app.preferences.defaults.SOGoSelectedAddressBook">
<var:foreach list="addressBookList" item="item">
<md-option var:value="item.id">
<var:string value="item.name"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2010-02-22 16:12:42 +01:00
</div>
2015-02-25 23:21:07 +01:00
2016-02-11 22:45:58 +01:00
<md-input-container class="md-block" flex="50" flex-xs="100">
2015-08-14 08:31:27 +02:00
<label><var:string label:value="Forward messages"/></label>
<md-select ng-model="app.preferences.defaults.SOGoMailMessageForwarding">
<var:foreach list="messageForwardingList" item="item">
<md-option var:value="item">
<var:string value="itemMessageForwardingText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2020-11-04 22:47:12 +01:00
<div layout="row" layout-xs="column">
<md-input-container class="md-block" flex="flex">
2015-08-14 08:31:27 +02:00
<label><var:string label:value="When replying to a message"/></label>
<md-select ng-model="app.preferences.defaults.SOGoMailReplyPlacement">
<var:foreach list="replyPlacementList" item="item">
<md-option var:value="item">
<var:string value="itemReplyPlacementText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2015-02-25 23:21:07 +01:00
2020-11-04 22:47:12 +01:00
<md-input-container class="md-block" flex="flex">
2015-08-14 08:31:27 +02:00
<label><var:string label:value="And place my signature"/></label>
<md-select ng-model="app.preferences.defaults.SOGoMailSignaturePlacement">
<var:foreach list="signaturePlacementList" item="item">
<md-option var:value="item">
<var:string value="itemSignaturePlacementText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
</div>
2015-02-25 23:21:07 +01:00
2020-11-04 22:47:12 +01:00
<div layout="row">
2016-02-11 22:45:58 +01:00
<md-input-container class="md-block" flex="50">
<label><var:string label:value="Compose messages in"/></label>
<md-select ng-model="app.preferences.defaults.SOGoMailComposeMessageType">
<var:foreach list="composeMessagesType" item="item">
<md-option var:value="item">
<var:string value="itemComposeMessagesText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2020-11-04 22:47:12 +01:00
<div class="md-auto-horizontal-margin" flex="50">
<div layout="row" ng-show="app.preferences.defaults.SOGoMailComposeMessageType == 'html'">
<md-checkbox
ng-model="app.preferences.defaults.SOGoMailComposeFontSizeEnabled"
label:aria-label="Default font size"><!-- default font size -->
</md-checkbox>
<md-input-container class="md-block md-flex">
<label><var:string label:value="Default font size"/></label>
<md-select label:aria-label="Default font size"
ng-disabled="!app.preferences.defaults.SOGoMailComposeFontSizeEnabled"
ng-required="app.preferences.defaults.SOGoMailComposeFontSizeEnabled"
ng-model="app.preferences.defaults.SOGoMailComposeFontSize">
<var:foreach list="fontSizesList" item="item">
<md-option var:value="item">
<var:string value="itemFontSizeText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
</div>
2016-02-11 22:45:58 +01:00
</div>
</div>
2015-08-14 08:31:27 +02:00
2016-02-11 22:45:58 +01:00
<md-input-container class="md-block" flex="50" flex-xs="100">
2015-08-14 08:31:27 +02:00
<label><var:string label:value="Display remote inline images"/></label>
<md-select ng-model="app.preferences.defaults.SOGoMailDisplayRemoteInlineImages">
<var:foreach list="displayRemoteInlineImages" item="item">
<md-option var:value="item">
<var:string value="itemDisplayRemoteInlineImagesText"/>
</md-option>
</var:foreach>
</md-select>
</md-input-container>
<div layout="row" layout-align="start center">
2015-12-11 21:11:53 +01:00
<p><var:string label:value="Auto save every"/></p>
<md-input-container class="md-input-number" md-no-float="md-no-float">
2016-02-11 17:40:36 +01:00
<input type="number" min="0" label:aria-label="minutes"
ng-model="app.preferences.defaults.SOGoMailAutoSave"/>
2015-08-14 08:31:27 +02:00
</md-input-container>
<var:string label:value="minutes"/>
</div>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
</md-content>
</md-tab>
<!-- END OF MAIL > GENERAL -->
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
<!-- MAIL > LABELS -->
<md-tab id="mailLabelsTab"
aria-controls="mailLabelsTab-content" label:label="Labels">
<md-content role="tabpanel" aria-labelledby="mailLabelsView"
2015-12-07 17:08:39 +01:00
id="mailLabelsView-content" class="md-padding">
2015-12-11 21:11:53 +01:00
<md-list layout="row" layout-xs="column" layout-wrap="layout-wrap">
<md-list-item flex="50" flex-xs="100"
2017-10-12 21:44:14 +02:00
ng-repeat="key in app.preferences.defaults.SOGoMailLabelsColorsKeys
track by $index">
<sg-color-picker ng-model="app.preferences.defaults.SOGoMailLabelsColorsValues[$index][1]"><!-- color picker--></sg-color-picker>
<div layout="row" class="md-flex">
<md-input-container class="md-block md-flex">
<label><var:string label:value="Label"/></label>
<input type="text"
label:aria-label="Label"
ng-model="app.preferences.defaults.SOGoMailLabelsColorsValues[$index][0]"
sg-focus-on="mailLabel_{{$index}}"/>
</md-input-container>
<md-input-container class="md-block md-flex">
<label><var:string label:value="IMAP Label"/></label>
<input type="text"
name="mailIMAPLabel_{{$index}}"
label:aria-label="IMAP Label"
ng-model="app.preferences.defaults.SOGoMailLabelsColorsKeys[$index]"
ng-change="app.resetMailLabelValidity($index, preferencesForm)"
ng-pattern="app.mailLabelKeyRE" />
<div ng-messages="preferencesForm['mailIMAPLabel_' + $index].$error">
<div ng-message="pattern"><var:string label:value="Invalid label"/></div>
<div ng-message="duplicate"><var:string label:value="Duplicate label"/></div>
</div>
</md-input-container>
</div>
2015-12-11 21:11:53 +01:00
<md-button class="md-icon-button" type="button"
2015-08-14 08:31:27 +02:00
layout="row" layout-align="end center"
label:aria-label="Delete Label"
2017-10-12 21:44:14 +02:00
ng-click="app.removeMailLabel($index, preferencesForm)">
2015-08-14 08:31:27 +02:00
<md-icon>remove_circle</md-icon>
</md-button>
</md-list-item>
</md-list>
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
<div layout="row" layout-align="end center">
<md-button type="button"
label:aria-label="Create Label"
2016-03-29 18:15:37 +02:00
ng-click="app.addMailLabel(preferencesForm)">
2015-08-14 08:31:27 +02:00
<var:string label:value="Create Label"/>
</md-button>
</div>
</md-content>
</md-tab>
<!-- END OF MAIL > LABELS -->
<!-- MAIL > ACCOUNTS -->
<md-tab id="mailAccountsTab"
aria-controls="mailAccountsTab-content"
2015-10-14 16:31:15 +02:00
label:label="IMAP Accounts">
2015-08-14 08:31:27 +02:00
2015-12-07 17:08:39 +01:00
<md-list class="md-padding">
2015-08-14 08:31:27 +02:00
<md-list-item ng-repeat="item in
app.preferences.defaults.AuxiliaryMailAccounts
track by $index">
2015-12-11 21:11:53 +01:00
<md-input-container class="md-block md-flex">
2015-08-14 08:31:27 +02:00
<input type="text"
label:aria-label="Mail Account"
ng-model="app.preferences.defaults.AuxiliaryMailAccounts[$index].name"
ng-readonly="$index == 0"/>
</md-input-container>
<md-button class="sg-icon-button" type="button"
2016-04-04 21:33:31 +02:00
ng-click="app.editMailAccount($event, $index, preferencesForm)"
2015-08-14 08:31:27 +02:00
layout="row"
layout-align="end center"
label:aria-label="Edit Account">
<md-icon>edit</md-icon>
</md-button>
<md-button class="sg-icon-button" type="button"
2016-04-04 21:33:31 +02:00
ng-click="app.removeMailAccount($index, preferencesForm)"
2015-08-14 08:31:27 +02:00
ng-show="$index > 0"
layout="row"
layout-align="end center"
label:aria-label="Delete Account">
<md-icon>remove_circle</md-icon>
</md-button>
</md-list-item>
</md-list>
<var:if condition="mailAuxiliaryUserAccountsEnabled">
<div layout="row" layout-align="end center">
<md-button type="button"
2016-04-04 21:33:31 +02:00
ng-click="app.addMailAccount($event, preferencesForm)"
2015-08-14 08:31:27 +02:00
label:aria-label="Create Account">
<var:string label:value="New Mail Account"/>
</md-button>
</div>
</var:if>
</md-tab>
<!-- END OF MAIL > ACCOUNTS -->
2019-11-07 21:18:28 +01:00
<!-- MAIL > FILTERS -->
<var:if condition="isSieveScriptsEnabled">
<md-tab id="mailFiltersTab"
aria-controls="mailFiltersTab-content"
label:label="Filters"
sg-labels="MailerUI">
2019-11-15 20:37:35 +01:00
<md-content class="md-padding"
ng-include="'hasActiveExternalSieveScripts.html'"
ng-show="app.preferences.defaults.hasActiveExternalSieveScripts">
<!-- external Sieve script detected -->
</md-content>
<md-content role="tabpanel" aria-labelledby="mailFiltersView">
2019-11-07 21:18:28 +01:00
<div class="sg-list-sortable"
ng-model="app.preferences.defaults.SOGoSieveFilters"
as-sortable="{ scrollableContainer: '.sg-list-sortable', containment: '.sg-list-sortable', containerPositioning: 'relative', orderChanged: app.onFiltersOrderChanged(preferencesForm) }">
<div layout="row" layout-align="start center"
ng-repeat="item in app.preferences.defaults.SOGoSieveFilters"
as-sortable-item="as-sortable-item">
<md-button class="md-icon-button" md-no-ink="md-no-ink"
as-sortable-item-handle="as-sortable-item-handle">
<md-icon class="sg-sortable-grip">drag_handle</md-icon>
</md-button>
<md-checkbox
style="margin-bottom: 0;"
label:aria-label="Enable filter"
ng-model="app.preferences.defaults.SOGoSieveFilters[$index].active"
ng-true-value="1"
ng-false-value="0">
<!-- active or not-->
</md-checkbox>
<md-input-container class="md-flex">
<input type="text" label:aria-label="Filter name"
ng-model="app.preferences.defaults.SOGoSieveFilters[$index].name"/>
</md-input-container>
<md-button class="sg-icon-button" type="button"
ng-click="app.editMailFilter($event, $index, preferencesForm)"
layout="row" layout-align="end center"
label:aria-label="Edit Filter">
<md-icon>edit</md-icon>
</md-button>
<md-button class="sg-icon-button" type="button"
ng-click="app.removeMailFilter($index, preferencesForm)"
layout="row" layout-align="end center"
label:aria-label="Delete Filter">
<md-icon>remove_circle</md-icon>
</md-button>
</div>
</div>
<div layout="row" layout-align="end center">
<md-button type="button"
ng-click="app.addMailFilter($event, preferencesForm)"
label:aria-label="Create Filter">
<var:string label:value="Create Filter"/>
</md-button>
</div>
</md-content>
</md-tab>
</var:if>
<!-- END OF MAIL > FILTERS -->
2015-08-14 08:31:27 +02:00
<!-- MAIL > VACATION -->
<var:if condition="isVacationEnabled">
<md-tab id="mailVacationTab" aria-controls="mailVacationTab-content" label:label="Vacation">
2019-11-15 20:37:35 +01:00
<md-content class="md-padding"
ng-include="'hasActiveExternalSieveScripts.html'"
ng-show="app.preferences.defaults.hasActiveExternalSieveScripts">
<!-- external Sieve script detected -->
</md-content>
2015-08-14 08:31:27 +02:00
<div role="tabpanel" aria-labelledby="mailVacationView"
2019-11-15 20:37:35 +01:00
id="mailVacationView-content" class="md-padding">
2015-02-25 23:21:07 +01:00
2015-08-14 08:31:27 +02:00
<md-checkbox
ng-model="app.preferences.defaults.Vacation.enabled"
ng-true-value="1"
ng-false-value="0"
2016-10-19 22:14:27 +02:00
ng-change="app.updateVacationDates()"
2015-08-14 08:31:27 +02:00
label:aria-label="Enable vacation auto reply">
<var:string label:value="Enable vacation auto reply"/>
</md-checkbox>
2016-12-19 16:25:04 +01:00
<div class="md-inline-form" layout="column" flex-offset="5"
2019-10-10 21:37:50 +02:00
ng-show="app.preferences.defaults.Vacation.enabled == 1">
2016-06-14 22:11:12 +02:00
2016-06-15 22:02:12 +02:00
<div layout="row">
<md-checkbox
ng-model="app.preferences.defaults.Vacation.customSubjectEnabled"
ng-true-value="1"
ng-false-value="0"
label:aria-label="Enable custom auto reply subject">
<!-- enable auto reply subject --></md-checkbox>
<md-input-container class="md-block md-flex">
<label><var:string label:value="Auto reply subject"/></label>
<input type="text"
2016-12-01 17:21:59 +01:00
ng-required="app.preferences.defaults.Vacation.customSubjectEnabled"
2016-06-15 22:02:12 +02:00
ng-disabled="!app.preferences.defaults.Vacation.customSubjectEnabled"
ng-model="app.preferences.defaults.Vacation.customSubject"/>
<div class="sg-hint" ng-show="app.sieveVariablesCapability">
<var:string label:value="You can write ${subject} to insert the original subject"/>
</div>
</md-input-container>
</div>
2017-03-08 21:17:40 +01:00
<md-input-container class="md-block md-flex md-input-has-placeholder">
2015-08-14 08:31:27 +02:00
<label><var:string label:value="Auto reply message"/></label>
2016-06-14 20:10:17 +02:00
<var:if condition="vacationHeader.length">
<p class="text-preview" md-colors="::{color: 'default-background-600'}"><var:string value="vacationHeader"/></p>
</var:if>
2019-10-10 21:37:50 +02:00
<textarea name="autoReplyText"
id="autoReplyText"
2020-10-15 20:07:04 +02:00
ng-required="app.preferences.defaults.Vacation.enabled == 1"
2015-08-14 08:31:27 +02:00
ng-model="app.preferences.defaults.Vacation.autoReplyText"/>
2016-06-14 20:10:17 +02:00
<var:if condition="vacationFooter.length">
<p class="text-preview" md-colors="::{color: 'default-background-600'}"><var:string value="vacationFooter"/></p>
</var:if>
2015-07-03 17:29:40 +02:00
</md-input-container>
2015-08-14 08:31:27 +02:00
2015-12-11 21:11:53 +01:00
<div layout="row" layout-align="start center">
<md-input-container class="md-block md-flex">
2020-06-02 20:22:20 +02:00
<label><var:string label:value="Email addresses"/></label>
<md-chips
id="autoReplyEmailAddresses"
name="autoReplyEmailAddresses"
ng-model="app.preferences.defaults.Vacation.autoReplyEmailAddresses"
ng-required="app.preferences.defaults.Vacation.enabled == 1"
md-separator-keys="app.emailSeparatorKeys"
md-add-on-blur="true"
md-autocomplete-snap="width">
<md-autocomplete
md-menu-class="md-2-line"
md-search-text="app.addressesSearchText"
md-items="address in app.filterEmailAddresses(app.addressesSearchText)"
md-no-cache="true"
md-min-length="0"
md-autofocus="true"
md-autoselect="true"
2020-06-22 21:06:40 +02:00
label:placeholder="Enter an email"
label:secondary-placeholder="Add another email">>
2020-06-02 20:22:20 +02:00
<md-item-template>
<div class="sg-tile-content">
<div class="sg-md-subhead">
<div md-highlight-text="app.addressesSearchText"
md-highlight-flags="gi">{{ address }}</div>
</div>
</div>
</md-item-template>
</md-autocomplete>
</md-chips>
2015-12-11 21:11:53 +01:00
</md-input-container>
2016-03-29 18:15:37 +02:00
<md-button ng-click="app.addDefaultEmailAddresses(preferencesForm)">
2020-06-02 20:22:20 +02:00
<var:string label:value="Add default email addresses"/>
2015-08-14 08:31:27 +02:00
</md-button>
</div>
2015-02-25 23:21:07 +01:00
2020-11-13 23:19:53 +01:00
<div layout="row">
<md-input-container class="md-block" flex="50" flex-xs="100">
2015-08-14 08:31:27 +02:00
<label><var:string label:value="Days between responses"/></label>
<md-select label:aria-label="Days between responses"
ng-model="app.preferences.defaults.Vacation.daysBetweenResponse">
<var:foreach list="daysBetweenResponsesList" item="item">
2015-07-03 17:29:40 +02:00
<md-option var:value="item">
2015-08-14 08:31:27 +02:00
<var:string value="item"/>
2015-07-03 17:29:40 +02:00
</md-option>
</var:foreach>
</md-select>
</md-input-container>
2020-11-13 23:19:53 +01:00
</div>
2015-02-25 23:21:07 +01:00
2015-12-07 17:08:39 +01:00
<div>
<md-checkbox
ng-model="app.preferences.defaults.Vacation.ignoreLists"
ng-true-value="1"
ng-false-value="0">
<var:string label:value="Do not send responses to mailing lists" />
</md-checkbox>
</div>
2015-04-28 19:40:27 +02:00
2019-11-05 21:33:16 +01:00
<var:if condition="isVacationPeriodEnabled">
<div>
<md-checkbox
ng-model="app.preferences.defaults.Vacation.startDateEnabled"
ng-true-value="1"
ng-false-value="0"
ng-change="app.toggleVacationStartDate()">
<var:string label:value="Enable auto reply on" />
</md-checkbox>
<md-input-container>
<label class="md-no-truncate"><var:string label:value="First day of vacation"/></label>
<md-datepicker
name="vacationStartDate"
label:md-placeholder="Enter date"
ng-disabled="!app.preferences.defaults.Vacation.startDateEnabled"
ng-required="app.preferences.defaults.Vacation.startDateEnabled"
ng-model="app.preferences.defaults.Vacation.startDate"
md-date-filter="app.validateVacationStartDate"
sg-reset-on-disabled="sg-reset-on-disabled"><!-- datepicker --></md-datepicker>
</md-input-container>
</div>
<div>
<md-checkbox
ng-model="app.preferences.defaults.Vacation.endDateEnabled"
ng-true-value="1"
ng-false-value="0"
ng-change="app.toggleVacationEndDate()">
<var:string label:value="Disable auto reply on" />
</md-checkbox>
<md-input-container>
<label class="md-no-truncate"><var:string label:value="Last day of vacation"/></label>
<md-datepicker
name="vacationEndDate"
label:md-placeholder="Enter date"
ng-disabled="!app.preferences.defaults.Vacation.endDateEnabled"
ng-required="app.preferences.defaults.Vacation.endDateEnabled"
ng-model="app.preferences.defaults.Vacation.endDate"
md-date-filter="app.validateVacationEndDate"
sg-reset-on-disabled="sg-reset-on-disabled"><!-- datepicker --></md-datepicker>
</md-input-container>
</div>
</var:if>
2015-02-25 23:21:07 +01:00
2015-12-07 17:08:39 +01:00
<div>
<md-checkbox
ng-model="app.preferences.defaults.Vacation.alwaysSend"
ng-true-value="1"
ng-false-value="0">
<var:string label:value="Always send vacation message response"/>
2019-03-22 16:58:51 +01:00
<div class="sg-hint"><var:string label:value="The vacation message is sent prior to apply your filters."/></div>
2015-12-07 17:08:39 +01:00
</md-checkbox>
</div>
2017-06-01 20:49:09 +02:00
<div>
<md-checkbox
ng-model="app.preferences.defaults.Vacation.discardMails"
ng-true-value="1"
ng-false-value="0">
<var:string label:value="Discard incoming mails during vacation"/>
2019-03-22 16:58:51 +01:00
<div class="sg-hint"><var:string label:value="The vacation message is sent but incoming messages are not delivered to your inbox."/></div>
2017-06-01 20:49:09 +02:00
</md-checkbox>
</div>
2015-08-14 08:31:27 +02:00
</div>
</div>
</md-tab>
</var:if>
<!-- END OF MAIL > VACATION -->
<!-- MAIL > FORWARD -->
<var:if condition="isForwardEnabled">
<md-tab id="mailForwardTab" aria-controls="mailForwardTab-content" label:label="Forward">
2019-11-15 20:37:35 +01:00
<md-content class="md-padding"
ng-include="'hasActiveExternalSieveScripts.html'"
ng-show="app.preferences.defaults.hasActiveExternalSieveScripts">
<!-- external Sieve script detected -->
</md-content>
2015-08-14 08:31:27 +02:00
<div role="tabpanel" aria-labelledby="mailForwardView"
2019-11-15 20:37:35 +01:00
id="mailForwardView-content" class="md-padding">
2015-12-07 17:08:39 +01:00
2015-08-14 08:31:27 +02:00
<md-checkbox
ng-model="app.preferences.defaults.Forward.enabled"
ng-true-value="1"
ng-false-value="0">
<var:string label:value="Forward incoming messages"/>
</md-checkbox>
2015-02-25 23:21:07 +01:00
2015-12-07 17:08:39 +01:00
<div flex-offset="5" ng-show="app.preferences.defaults.Forward.enabled == 1">
2015-12-11 21:11:53 +01:00
<md-input-container class="md-block md-flex">
2020-06-02 20:22:20 +02:00
<label><var:string label:value="Email addresses"/></label>
<md-chips
id="forwardAddress"
name="forwardAddress"
ng-model="app.preferences.defaults.Forward.forwardAddress"
ng-required="app.preferences.defaults.Forward.enabled == 1"
md-separator-keys="app.emailSeparatorKeys"
md-add-on-blur="true"
2020-06-22 21:06:40 +02:00
md-autocomplete-snap="width"
2020-06-22 15:58:11 +02:00
label:placeholder="Enter an email"
label:secondary-placeholder="Add another email">
2020-06-02 20:22:20 +02:00
<!-- forward addresses -->
</md-chips>
2015-08-14 08:31:27 +02:00
</md-input-container>
2015-02-25 23:21:07 +01:00
2015-12-07 17:08:39 +01:00
<div>
<md-checkbox
ng-model="app.preferences.defaults.Forward.keepCopy"
ng-true-value="1"
ng-false-value="0">
<var:string label:value="Keep a copy" />
</md-checkbox>
</div>
2015-04-28 19:40:27 +02:00
2015-08-14 08:31:27 +02:00
</div>
</div>
</md-tab>
</var:if>
<!-- END OF MAIL > FORWARD -->
2015-06-19 20:52:00 +02:00
2015-08-14 08:31:27 +02:00
</md-tabs>
</var:if>
</script>
2019-11-15 20:37:35 +01:00
<script type="text/ng-template" id="hasActiveExternalSieveScripts.html">
<md-card>
<md-card-title>
<md-card-title-text>
<span class="md-headline"><var:string label:value="An external Sieve script is active"/></span>
<span class="md-subhead"><var:string label:value="Sieve is a programming language that can be used for email filtering. If you let SOGo handle your filters, vacation and forward settings, your active script will be disabled." /></span>
</md-card-title-text>
</md-card-title>
<md-card-actions layout="row" layout-align="end center">
<md-button type="button" class="md-raised md-warn"
ng-click="app.manageSieveScript(preferencesForm)">
<var:string label:value="Let SOGo handle everything" />
</md-button>
</md-card-actions>
</md-card>
</script>
2015-02-25 23:21:07 +01:00
2007-06-19 19:58:21 +02:00
</var:component>