mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-25 18:19:22 +03:00
Release fixes
This commit is contained in:
parent
5e31c01344
commit
9a98bff931
30 changed files with 143 additions and 76 deletions
|
|
@ -20,7 +20,7 @@ class FolderCollection extends \MailSo\Base\Collection
|
|||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $sNamespace;
|
||||
public $Namespace;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
|
|
@ -49,7 +49,7 @@ class FolderCollection extends \MailSo\Base\Collection
|
|||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->sNamespace = '';
|
||||
$this->Namespace = '';
|
||||
$this->FoldersHash = '';
|
||||
$this->SystemFolders = array();
|
||||
$this->IsThreadsSupported = false;
|
||||
|
|
@ -96,12 +96,30 @@ class FolderCollection extends \MailSo\Base\Collection
|
|||
return $mResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function CountRec()
|
||||
{
|
||||
$iResult = $this->Count();
|
||||
foreach ($this->aItems as /* @var $oFolder \MailSo\Mail\Folder */ $oFolder)
|
||||
{
|
||||
if ($oFolder)
|
||||
{
|
||||
$oSub = $oFolder->SubFolders();
|
||||
$iResult += $oSub ? $oSub->CountRec() : 0;
|
||||
}
|
||||
}
|
||||
|
||||
return $iResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function GetNamespace()
|
||||
{
|
||||
return $this->sNamespace;
|
||||
return $this->Namespace;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -110,7 +128,7 @@ class FolderCollection extends \MailSo\Base\Collection
|
|||
public function FindDelimiter()
|
||||
{
|
||||
$sDelimiter = '/';
|
||||
|
||||
|
||||
$oFolder = $this->GetByFullNameRaw('INBOX');
|
||||
if (!$oFolder)
|
||||
{
|
||||
|
|
@ -132,7 +150,7 @@ class FolderCollection extends \MailSo\Base\Collection
|
|||
*/
|
||||
public function SetNamespace($sNamespace)
|
||||
{
|
||||
$this->sNamespace = $sNamespace;
|
||||
$this->Namespace = $sNamespace;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1373,7 +1373,11 @@ class MailClient
|
|||
$sCriteriasResult = \trim($sCriteriasResult);
|
||||
if ('' === $sCriteriasResult)
|
||||
{
|
||||
$sCriteriasResult = 'ALL';
|
||||
$sCriteriasResult = 'NOT DELETED'; // ALL
|
||||
}
|
||||
else
|
||||
{
|
||||
$sCriteriasResult .= ' NOT DELETED';
|
||||
}
|
||||
|
||||
return $sCriteriasResult;
|
||||
|
|
|
|||
|
|
@ -201,6 +201,8 @@ class Email
|
|||
}
|
||||
|
||||
$sEmail = \trim(\trim($sEmail), '<>');
|
||||
$sEmail = \rtrim(\trim($sEmail), '.');
|
||||
$sEmail = \trim($sEmail);
|
||||
|
||||
$sName = \trim(\trim($sName), '"');
|
||||
$sName = \trim($sName, '\'');
|
||||
|
|
|
|||
|
|
@ -1353,6 +1353,7 @@ class Actions
|
|||
'UseImapSubscribe' => (bool) $oConfig->Get('labs', 'use_imap_list_subscribe', true),
|
||||
'AllowAppendMessage' => (bool) $oConfig->Get('labs', 'allow_message_append', false),
|
||||
'MaterialDesign' => (bool) $oConfig->Get('labs', 'use_material_design', true),
|
||||
'FolderSpecLimit' => (int) $oConfig->Get('labs', 'folders_spec_limit', 50),
|
||||
'Community' => true,
|
||||
'PremType' => false,
|
||||
'Admin' => array(),
|
||||
|
|
@ -9496,6 +9497,7 @@ class Actions
|
|||
'FoldersHash' => isset($mResponse->FoldersHash) ? $mResponse->FoldersHash : '',
|
||||
'IsThreadsSupported' => $mResponse->IsThreadsSupported,
|
||||
'Optimized' => $mResponse->Optimized,
|
||||
'CountRec' => $mResponse->CountRec(),
|
||||
'SystemFolders' => isset($mResponse->SystemFolders) && \is_array($mResponse->SystemFolders) ?
|
||||
$mResponse->SystemFolders : array()
|
||||
));
|
||||
|
|
|
|||
|
|
@ -304,6 +304,7 @@ Enables caching in the system'),
|
|||
'smtp_show_server_errors' => array(false),
|
||||
'sieve_allow_raw_script' => array(false),
|
||||
'sieve_utf8_folder_name' => array(true),
|
||||
'folders_spec_limit' => array(50),
|
||||
'owncloud_save_folder' => array('Attachments'),
|
||||
'curl_proxy' => array(''),
|
||||
'curl_proxy_auth' => array(''),
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + language()" style=""></span>
|
||||
</span>
|
||||
<span class="flag-name" tabindex="0" data-bind="text: languageFullName, click: selectLanguage, keypress: selectLanguage"></span>
|
||||
<span class="flag-name" tabindex="0" data-bind="text: languageFullName, click: selectLanguage, onSpace: selectLanguage, onEnter: selectLanguage"></span>
|
||||
|
||||
<div data-bind="component: {
|
||||
name: 'SaveTrigger',
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + languageAdmin()" style=""></span>
|
||||
</span>
|
||||
<span class="flag-name" tabindex="0" data-bind="text: languageAdminFullName, click: selectLanguageAdmin, keypress: selectLanguageAdmin"></span>
|
||||
<span class="flag-name" tabindex="0" data-bind="text: languageAdminFullName, click: selectLanguageAdmin, onSpace: selectLanguageAdmin, onEnter: selectLanguageAdmin"></span>
|
||||
|
||||
<div data-bind="component: {
|
||||
name: 'SaveTrigger',
|
||||
|
|
|
|||
|
|
@ -2,14 +2,8 @@
|
|||
<div class="row">
|
||||
<div class="alert alert-info span8" style="margin-top: 10px;">
|
||||
<span data-i18n="[html]TAB_LICENSING/HTML_ALERT_TOP_1"></span>
|
||||
<br />
|
||||
<b>Creative Commons Attribution-NonCommercial-ShareAlike 3.0 (CC BY-NC-SA)</b>.
|
||||
<br />
|
||||
<br />
|
||||
<span data-i18n="[html]TAB_LICENSING/HTML_ALERT_TOP_2"></span>
|
||||
<br />
|
||||
<br />
|
||||
<span data-i18n="[html]TAB_LICENSING/HTML_ALERT_TOP_3"></span>
|
||||
|
||||
<a href=http://www.rainloop.net/licensing/ target=_blank>RainLoop Software License</a>.
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<span class="e-component e-checkbox inline" tabindex="0" data-bind="click: click, keypress: keypress, css: { 'disabled': disable() || !enable() }">
|
||||
<span class="e-component e-checkbox inline" tabindex="0" data-bind="click: click, onSpace: click, css: { 'disabled': disable() || !enable() }">
|
||||
<i role="checkbox" class="e-checkbox-icon" data-bind="css: value() ?
|
||||
(inverted ? 'icon-checkbox-unchecked' : 'icon-checkbox-checked') :
|
||||
(inverted ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked')
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<span class="e-component e-checkbox material-design inline" tabindex="0" data-bind="click: click, keypress: keypress, css: { 'disabled': disable() || !enable() }">
|
||||
<span class="e-component e-checkbox material-design inline" tabindex="0" data-bind="click: click, onSpace: click, css: { 'disabled': disable() || !enable() }">
|
||||
<div class="sub-checkbox-container" role="checkbox">
|
||||
<div class="sub-checkbox" data-bind="css: {'checked': (value() && !inverted) || (!value() && inverted),
|
||||
'unchecked': (!value() && !inverted) || (value() && inverted),
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@
|
|||
<label class="flag-selector">
|
||||
<i data-bind="css: langRequest() ? 'icon-spinner animated' : 'icon-world'"></i>
|
||||
|
||||
<span class="flag-name" tabindex="0" data-bind="text: languageFullName, click: selectLanguage, keypress: selectLanguage, onTab: selectLanguageOnTab"></span>
|
||||
<span class="flag-name" tabindex="0" data-bind="text: languageFullName, click: selectLanguage, onSpace: selectLanguage, onEnter: selectLanguage, onTab: selectLanguageOnTab"></span>
|
||||
</label>
|
||||
</div>
|
||||
{{INCLUDE/BottomFooter/PLACE}}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<i class="icon-eye"></i>
|
||||
</span>
|
||||
</td>
|
||||
<td class="check-folder-parent">
|
||||
<td class="check-folder-parent" data-bind="visible: $root.displaySpecSetting">
|
||||
<span class="uncheck-folder" data-bind="visible: canBeChecked() && subScribed() && !checkable(), click: function(oFolder) { $root.checkableTrueFolder(oFolder); }">
|
||||
<i class="icon-check-mark-circle-two"></i>
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
<col />
|
||||
<col style="width: 1%" />
|
||||
<col style="width: 1%" />
|
||||
<col style="width: 1%" />
|
||||
<col style="width: 1%" data-bind="visible: displaySpecSetting" />
|
||||
</colgroup>
|
||||
<tbody data-bind="template: { name: 'SettingsFolderItem', foreach: folderList }"></tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
<span class="flag-wrapper">
|
||||
<span data-bind="css: 'flag flag-' + language()" style=""></span>
|
||||
</span>
|
||||
<span class="flag-name" tabindex="0" data-bind="text: languageFullName, click: selectLanguage, keypress: selectLanguage"></span>
|
||||
<span class="flag-name" tabindex="0" data-bind="text: languageFullName, click: selectLanguage, onSpace: selectLanguage, onEnter: selectLanguage"></span>
|
||||
|
||||
<div data-bind="component: {
|
||||
name: 'SaveTrigger',
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
<div class="controls">
|
||||
<i class="icon-lock" />
|
||||
|
||||
<span class="i18n g-ui-link" tabindex="0" data-i18n="SETTINGS_SECURITY/LABEL_CONFIGURATE_TWO_FACTOR" data-bind="click: configureTwoFactor, keypress: configureTwoFactor"></span>
|
||||
<span class="i18n g-ui-link" tabindex="0" data-i18n="SETTINGS_SECURITY/LABEL_CONFIGURATE_TWO_FACTOR" data-bind="click: configureTwoFactor, onSpace: configureTwoFactor, onEnter: configureTwoFactor"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue