mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Merge branch 'master' into addressbook
This commit is contained in:
commit
513b2fcae8
12 changed files with 21 additions and 38 deletions
|
|
@ -233,8 +233,8 @@ export class FilterModel extends AbstractModel {
|
||||||
return filter;
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
cloneSelf() {
|
assignTo(target) {
|
||||||
const filter = new FilterModel();
|
const filter = target || new FilterModel();
|
||||||
|
|
||||||
filter.id = this.id;
|
filter.id = this.id;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,24 +102,15 @@ export class SieveScriptPopupView extends rl.pluginPopupView {
|
||||||
filter.generateID();
|
filter.generateID();
|
||||||
FilterPopupView.showModal([
|
FilterPopupView.showModal([
|
||||||
filter,
|
filter,
|
||||||
() => this.filters.push(filter)
|
() => this.filters.push(filter.assignTo())
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
editFilter(filter) {
|
editFilter(filter) {
|
||||||
const clonedFilter = filter.cloneSelf();
|
const clonedFilter = filter.assignTo();
|
||||||
FilterPopupView.showModal([
|
FilterPopupView.showModal([
|
||||||
clonedFilter,
|
clonedFilter,
|
||||||
() => {
|
() => clonedFilter.assignTo(filter),
|
||||||
const script = this.script(),
|
|
||||||
filters = script.filters(),
|
|
||||||
index = filters.indexOf(filter);
|
|
||||||
if (-1 < index) {
|
|
||||||
// script.filters.splice(index, 1, clonedFilter);
|
|
||||||
filters[index] = clonedFilter;
|
|
||||||
script.filters(filters);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
true
|
true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1231,7 +1231,7 @@ class Actions
|
||||||
$oAccount = $this->getAccountFromToken();
|
$oAccount = $this->getAccountFromToken();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$oAccount->IncConnectAndLoginHelper($this->oPlugins, $this->MailClient(), $this->oConfig);
|
$oAccount->ImapConnectAndLoginHelper($this->oPlugins, $this->MailClient(), $this->oConfig);
|
||||||
} catch (\MailSo\Net\Exceptions\ConnectionException $oException) {
|
} catch (\MailSo\Net\Exceptions\ConnectionException $oException) {
|
||||||
throw new Exceptions\ClientException(Notifications::ConnectionError, $oException);
|
throw new Exceptions\ClientException(Notifications::ConnectionError, $oException);
|
||||||
} catch (\Throwable $oException) {
|
} catch (\Throwable $oException) {
|
||||||
|
|
|
||||||
|
|
@ -790,7 +790,7 @@ trait Messages
|
||||||
$oSmtpClient->SetTimeOuts(10, (int) \RainLoop\Api::Config()->Get('labs', 'smtp_timeout', 60));
|
$oSmtpClient->SetTimeOuts(10, (int) \RainLoop\Api::Config()->Get('labs', 'smtp_timeout', 60));
|
||||||
|
|
||||||
$bUsePhpMail = false;
|
$bUsePhpMail = false;
|
||||||
$oAccount->OutConnectAndLoginHelper($this->Plugins(), $oSmtpClient, $this->Config(), $bUsePhpMail);
|
$oAccount->SmtpConnectAndLoginHelper($this->Plugins(), $oSmtpClient, $this->Config(), $bUsePhpMail);
|
||||||
|
|
||||||
if ($bUsePhpMail)
|
if ($bUsePhpMail)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -434,7 +434,7 @@ trait UserAuth
|
||||||
protected function CheckMailConnection(Account $oAccount, bool $bAuthLog = false): void
|
protected function CheckMailConnection(Account $oAccount, bool $bAuthLog = false): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$oAccount->IncConnectAndLoginHelper($this->Plugins(), $this->MailClient(), $this->Config());
|
$oAccount->ImapConnectAndLoginHelper($this->Plugins(), $this->MailClient(), $this->Config());
|
||||||
} catch (ClientException $oException) {
|
} catch (ClientException $oException) {
|
||||||
throw $oException;
|
throw $oException;
|
||||||
} catch (\MailSo\Net\Exceptions\ConnectionException $oException) {
|
} catch (\MailSo\Net\Exceptions\ConnectionException $oException) {
|
||||||
|
|
|
||||||
|
|
@ -195,7 +195,7 @@ abstract class Account implements \JsonSerializable
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function IncConnectAndLoginHelper(\RainLoop\Plugins\Manager $oPlugins, \MailSo\Mail\MailClient $oMailClient, \RainLoop\Config\Application $oConfig) : bool
|
public function ImapConnectAndLoginHelper(\RainLoop\Plugins\Manager $oPlugins, \MailSo\Mail\MailClient $oMailClient, \RainLoop\Config\Application $oConfig) : bool
|
||||||
{
|
{
|
||||||
$oImapClient = $oMailClient->ImapClient();
|
$oImapClient = $oMailClient->ImapClient();
|
||||||
$oImapClient->__FORCE_SELECT_ON_EXAMINE__ = !!$oConfig->Get('labs', 'use_imap_force_selection');
|
$oImapClient->__FORCE_SELECT_ON_EXAMINE__ = !!$oConfig->Get('labs', 'use_imap_force_selection');
|
||||||
|
|
@ -230,7 +230,7 @@ abstract class Account implements \JsonSerializable
|
||||||
return $this->netClientLogin($oImapClient, $oConfig, $oPlugins, $aCredentials);
|
return $this->netClientLogin($oImapClient, $oConfig, $oPlugins, $aCredentials);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function OutConnectAndLoginHelper(\RainLoop\Plugins\Manager $oPlugins, \MailSo\Smtp\SmtpClient $oSmtpClient, \RainLoop\Config\Application $oConfig, bool &$bUsePhpMail = false) : bool
|
public function SmtpConnectAndLoginHelper(\RainLoop\Plugins\Manager $oPlugins, \MailSo\Smtp\SmtpClient $oSmtpClient, \RainLoop\Config\Application $oConfig, bool &$bUsePhpMail = false) : bool
|
||||||
{
|
{
|
||||||
$aCredentials = \array_merge(
|
$aCredentials = \array_merge(
|
||||||
$this->Domain()->SmtpSettings(),
|
$this->Domain()->SmtpSettings(),
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,9 @@
|
||||||
<div class="row" data-bind="visible: dataFolderAccess">
|
<div class="row" data-bind="visible: dataFolderAccess">
|
||||||
<div class="alert alert-error span8" style="margin-top: 10px;">
|
<div class="alert alert-error span8" style="margin-top: 10px;">
|
||||||
<h4 data-i18n="TAB_GENERAL/ALERT_WARNING"></h4>
|
<h4 data-i18n="TAB_GENERAL/ALERT_WARNING"></h4>
|
||||||
<br>
|
<div data-i18n="TAB_GENERAL/ALERT_DATA_ACCESS"></div>
|
||||||
<span data-i18n="TAB_GENERAL/ALERT_DATA_ACCESS"></span>
|
<a href="https://github.com/the-djmaze/snappymail/wiki/Installation-instructions#secure-data-folder"
|
||||||
|
target="_blank"><strong>https://github.com/the-djmaze/snappymail/wiki/Installation-instructions</strong></a>
|
||||||
<a href="https://www.rainloop.net/docs/installation/#notice"
|
|
||||||
target="_blank"><strong>https://www.rainloop.net/docs/installation</strong></a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-horizontal">
|
<div class="form-horizontal">
|
||||||
|
|
@ -97,7 +95,7 @@
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<b>PHP:</b> <!-- ko text: uploadDataDesc --><!-- /ko -->
|
<b>PHP: </b><!-- ko text: uploadDataDesc --><!-- /ko -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
<div data-bind="visible: packagesUpdate().length">
|
<div data-bind="visible: packagesUpdate().length">
|
||||||
<div class="legend">
|
<div class="legend">
|
||||||
<span data-i18n="TAB_PACKAGES/LEGEND_AVAILABLE_FOR_UPDATE"></span>
|
<span data-i18n="TAB_PACKAGES/LEGEND_AVAILABLE_FOR_UPDATE"></span>
|
||||||
(<span data-bind="text: packagesUpdate().length"></span>)
|
(<span data-bind="text: packagesUpdate().length"></span>)
|
||||||
</div>
|
</div>
|
||||||
<div data-bind="template: { name: 'AdminSettingsPackagesTable', data: {f: packagesUpdate} }"></div>
|
<div data-bind="template: { name: 'AdminSettingsPackagesTable', data: {f: packagesUpdate} }"></div>
|
||||||
|
|
|
||||||
|
|
@ -65,8 +65,7 @@
|
||||||
inline: true
|
inline: true
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
|
<span style="color:red"> (<span data-i18n="HINTS/UNSTABLE"></span>)</span>
|
||||||
<span style="color:red">(<span data-i18n="HINTS/UNSTABLE"></span>)</span>
|
|
||||||
<br>
|
<br>
|
||||||
<div data-bind="component: {
|
<div data-bind="component: {
|
||||||
name: 'Checkbox',
|
name: 'Checkbox',
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,7 @@
|
||||||
<div class="row" data-bind="visible: !edit()" style="margin-bottom: 20px;">
|
<div class="row" data-bind="visible: !edit()" style="margin-bottom: 20px;">
|
||||||
<div class="span5">
|
<div class="span5">
|
||||||
<span data-i18n="POPUPS_DOMAIN/LABEL_NAME"></span>
|
<span data-i18n="POPUPS_DOMAIN/LABEL_NAME"></span>
|
||||||
|
<span style="opacity:0.7"> (<span data-i18n="POPUPS_DOMAIN/NAME_HELPER"></span>)</span>
|
||||||
<span style="color: #aaa">(<span data-i18n="POPUPS_DOMAIN/NAME_HELPER"></span>)</span>
|
|
||||||
<br>
|
<br>
|
||||||
<input type="text" class="span4" autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
<input type="text" class="span4" autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
|
||||||
data-bind="textInput: name">
|
data-bind="textInput: name">
|
||||||
|
|
@ -56,8 +55,7 @@
|
||||||
inline: true
|
inline: true
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
|
<span style="opacity:0.7"> (user@domain.com → user)</span>
|
||||||
<span style="color: #aaa">(user@domain.com → user)</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="radio" name="helptabs" id="tab-help2">
|
<input type="radio" name="helptabs" id="tab-help2">
|
||||||
|
|
@ -98,8 +96,7 @@
|
||||||
inline: true
|
inline: true
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
|
<span style="opacity:0.7"> (user@domain.com → user)</span>
|
||||||
<span style="color: #aaa">(user@domain.com → user)</span>
|
|
||||||
<div data-bind="component: {
|
<div data-bind="component: {
|
||||||
name: 'Checkbox',
|
name: 'Checkbox',
|
||||||
params: {
|
params: {
|
||||||
|
|
@ -126,8 +123,7 @@
|
||||||
inline: true
|
inline: true
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
|
<span style="color:red"> (<span data-i18n="HINTS/BETA"></span>)</span>
|
||||||
<span style="color:red">(<span data-i18n="HINTS/BETA"></span>)</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="radio" name="helptabs" id="tab-help3">
|
<input type="radio" name="helptabs" id="tab-help3">
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
<a href="#" class="close" data-bind="click: close">×</a>
|
<a href="#" class="close" data-bind="click: close">×</a>
|
||||||
<h4>
|
<h4>
|
||||||
<span data-i18n="POPUPS_PLUGIN/TITLE_PLUGIN"></span>
|
<span data-i18n="POPUPS_PLUGIN/TITLE_PLUGIN"></span>
|
||||||
|
|
||||||
"<span data-bind="text: name"></span>"
|
"<span data-bind="text: name"></span>"
|
||||||
</h4>
|
</h4>
|
||||||
<span data-bind="visible: hasReadme, text: readme"></span>
|
<span data-bind="visible: hasReadme, text: readme"></span>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
data-i18n="POPUPS_FILTER/SELECT_MATCH_ALL"></option>
|
data-i18n="POPUPS_FILTER/SELECT_MATCH_ALL"></option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div data-bind="visible: conditions().length, foreach: conditions">
|
<div data-bind="foreach: conditions">
|
||||||
<div class="control-group" data-bind="css: {'error': valueError}" style="display:flex">
|
<div class="control-group" data-bind="css: {'error': valueError}" style="display:flex">
|
||||||
<div style="flex-grow:1" data-bind="css: {'error': valueError}, template: {'name': template(), 'data': $data}"></div>
|
<div style="flex-grow:1" data-bind="css: {'error': valueError}, template: {'name': template(), 'data': $data}"></div>
|
||||||
<span class="delete-action button-delete fontastic" style="margin-top: 5px;"
|
<span class="delete-action button-delete fontastic" style="margin-top: 5px;"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue