mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-06 07:57:02 +03:00
Interface optimization
Mark as important (compose)
This commit is contained in:
parent
821991a263
commit
d5eacb6a4d
43 changed files with 1069 additions and 780 deletions
|
|
@ -82,6 +82,10 @@ LANG_KO_KR = "한국어"
|
|||
LANG_BG = "Български"
|
||||
LANG_BG_BG = "Български"
|
||||
|
||||
LANG_VI = "Tiếng Việt"
|
||||
LANG_VI_VI = "Tiếng Việt"
|
||||
LANG_VI_VN = "Tiếng Việt"
|
||||
|
||||
[LANGS_NAMES_EN]
|
||||
LANG_EN = "English"
|
||||
LANG_EN_US = "English (US)"
|
||||
|
|
@ -166,3 +170,7 @@ LANG_KO_KR = "Korean"
|
|||
|
||||
LANG_BG = "Bulgarian"
|
||||
LANG_BG_BG = "Bulgarian"
|
||||
|
||||
LANG_VI = "Vietnamese"
|
||||
LANG_VI_VI = "Vietnamese"
|
||||
LANG_VI_VN = "Vietnamese"
|
||||
|
|
|
|||
|
|
@ -2751,12 +2751,12 @@ class Actions
|
|||
*/
|
||||
public function licenseHelper($sForce = false, $bLongCache = false, $iFastCacheTimeInMin = 10, $iLongCacheTimeInDays = 3)
|
||||
{
|
||||
$sDomain = APP_SITE;
|
||||
$sDomain = \trim(APP_SITE);
|
||||
|
||||
$oCacher = $this->Cacher();
|
||||
$oHttp = \MailSo\Base\Http::SingletonInstance();
|
||||
|
||||
if ($oHttp->CheckLocalhost($sDomain) || !$oCacher)
|
||||
if (0 === \strlen($sDomain) || $oHttp->CheckLocalhost($sDomain) || !$oCacher)
|
||||
{
|
||||
return 'NO';
|
||||
}
|
||||
|
|
@ -4761,6 +4761,7 @@ class Actions
|
|||
$sSubject = $this->GetActionParam('Subject', '');
|
||||
$bTextIsHtml = '1' === $this->GetActionParam('TextIsHtml', '0');
|
||||
$bReadReceiptRequest = '1' === $this->GetActionParam('ReadReceiptRequest', '0');
|
||||
$bMarkAsImportant = '1' === $this->GetActionParam('MarkAsImportant', '0');
|
||||
$sText = $this->GetActionParam('Text', '');
|
||||
$aAttachments = $this->GetActionParam('Attachments', null);
|
||||
|
||||
|
|
@ -4801,6 +4802,11 @@ class Actions
|
|||
$oMessage->SetReadReceipt($oAccount->Email());
|
||||
}
|
||||
|
||||
if ($bMarkAsImportant)
|
||||
{
|
||||
$oMessage->SetPriority(\MailSo\Mime\Enumerations\MessagePriority::HIGH);
|
||||
}
|
||||
|
||||
$oMessage->SetSubject($sSubject);
|
||||
|
||||
$oToEmails = \MailSo\Mime\EmailCollection::NewInstance($sTo);
|
||||
|
|
|
|||
|
|
@ -150,7 +150,22 @@ class Filter
|
|||
*/
|
||||
public function FromJSON($aFilter)
|
||||
{
|
||||
//
|
||||
if (\is_array($aFilter))
|
||||
{
|
||||
$this->sID = isset($aFilter['ID']) ? $aFilter['ID'] : '';
|
||||
$this->sName = isset($aFilter['Name']) ? $aFilter['Name'] : '';
|
||||
|
||||
$this->sFilterRulesType = isset($aFilter['FilterRulesType']) ? $aFilter['FilterRulesType'] :
|
||||
\RainLoop\Providers\Filters\Enumerations\FilterRulesType::ALL;
|
||||
|
||||
$this->sActionType = isset($aFilter['ActionType']) ? $aFilter['ActionType'] :
|
||||
\RainLoop\Providers\Filters\Enumerations\ActionType::MOVE_TO;
|
||||
|
||||
$this->sActionValue = isset($aFilter['ActionValue']) ? $aFilter['ActionValue'] : '';
|
||||
|
||||
$this->bMarkAsRead = isset($aFilter['MarkAsRead']) ? $aFilter['MarkAsRead'] : false;
|
||||
$this->bSkipOthers = isset($aFilter['SkipOthers']) ? $aFilter['SkipOthers'] : false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -160,7 +175,15 @@ class Filter
|
|||
*/
|
||||
public function ToSimpleJSON($bAjax = false)
|
||||
{
|
||||
$aConditions = $this->Conditions();
|
||||
$aConditions = array();
|
||||
foreach ($this->Conditions() as $oItem)
|
||||
{
|
||||
if ($oItem)
|
||||
{
|
||||
$aConditions[] = $oItem->ToSimpleJSON($bAjax);
|
||||
}
|
||||
}
|
||||
|
||||
return array(
|
||||
'ID' => $this->ID(),
|
||||
'Name' => $this->Name(),
|
||||
|
|
|
|||
|
|
@ -0,0 +1,90 @@
|
|||
<?php
|
||||
|
||||
namespace RainLoop\Providers\Filters\Classes;
|
||||
|
||||
class FilterCondition
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $sField;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $sType;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $sValue;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->Clear();
|
||||
}
|
||||
|
||||
public function Clear()
|
||||
{
|
||||
$this->sField = \RainLoop\Providers\Filters\Enumerations\ConditionField::FROM;
|
||||
$this->sType = \RainLoop\Providers\Filters\Enumerations\ConditionType::EQUAL_TO;
|
||||
$this->sValue = '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function Field()
|
||||
{
|
||||
return $this->sField;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function Type()
|
||||
{
|
||||
return $this->sType;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function Value()
|
||||
{
|
||||
return $this->sValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aFilter
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function FromJSON($aFilter)
|
||||
{
|
||||
if (\is_array($aFilter))
|
||||
{
|
||||
$this->sField = isset($aFilter['Field']) ? $aFilter['Field'] :
|
||||
\RainLoop\Providers\Filters\Enumerations\ConditionField::FROM;
|
||||
|
||||
$this->sType = isset($aFilter['Type']) ? $aFilter['Type'] :
|
||||
\RainLoop\Providers\Filters\Enumerations\ConditionType::EQUAL_TO;
|
||||
|
||||
$this->sValue = isset($aFilter['Value']) ? $aFilter['Value'] : '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $bAjax = false
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function ToSimpleJSON($bAjax = false)
|
||||
{
|
||||
return array(
|
||||
'Field' => $this->Field(),
|
||||
'Type' => $this->Type(),
|
||||
'Value' => $this->Value()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -8,4 +8,4 @@ class ConditionType
|
|||
const NOT_EQUAL_TO = 'NotEqualTo';
|
||||
const CONTAINS = 'Contains';
|
||||
const NOT_CONTAINS = 'NotContains';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@
|
|||
</span>
|
||||
</div>
|
||||
<div class="subjectParent actionHandle dragHandle">
|
||||
<b style="color:red;margin-right:5px" data-bind="visible: isImportant">!</b>
|
||||
<span class="subject emptySubjectText" data-bind="text: $root.emptySubjectValue"></span>
|
||||
<!--<span class="subject" data-bind="text: subject"></span>-->
|
||||
<span class="subject-prefix" data-bind="text: subjectPrefix"></span><span class="subject-suffix" data-bind="text: subjectSuffix"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@
|
|||
</span>
|
||||
</div>
|
||||
<div class="subjectParent actionHandle dragHandle">
|
||||
<b style="color:red;margin-right:5px" data-bind="visible: isImportant">!</b>
|
||||
<span class="subject emptySubjectText" data-bind="text: $root.emptySubjectValue"></span>
|
||||
<!--<span class="subject" data-bind="text: subject"></span>-->
|
||||
<span class="subject-prefix" data-bind="text: subjectPrefix"></span><span class="subject-suffix" data-bind="text: subjectSuffix"></span>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
|
|
|
|||
|
|
@ -195,6 +195,7 @@
|
|||
<img class="fromPic" data-bind="visible: viewUserPicVisible, attr: {'src': viewUserPic() }">
|
||||
<div style="overflow: hidden;">
|
||||
<div class="subjectParent" data-bind="event: { 'dblclick': toggleFullScreen }">
|
||||
<b style="color:red;margin-right:5px" data-bind="visible: viewIsImportant">!</b>
|
||||
<span class="subject" data-bind="text: viewSubject, title: viewSubject"></span>
|
||||
<span class="i18n emptySubjectText" data-i18n-text="MESSAGE/EMPTY_SUBJECT_TEXT"></span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -50,6 +50,42 @@
|
|||
</ul>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<div class="btn-group dropdown colored-toggle pull-right">
|
||||
<a class="btn dropdown-toggle buttonMore" data-toggle="dropdown">
|
||||
<i class="icon-list"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu" role="menu">
|
||||
<li class="e-item" data-bind="click: function () { requestReadReceipt(!requestReadReceipt()); }">
|
||||
<a class="e-link">
|
||||
<i class="icon-checkbox-unchecked" data-bind="css: {'icon-checkbox-checked': requestReadReceipt(), 'icon-checkbox-unchecked': !requestReadReceipt() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="COMPOSE/BUTTON_REQUEST_READ_RECEIPT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" data-bind="click: function () { markAsImportant(!markAsImportant()); }">
|
||||
<a class="e-link">
|
||||
<i class="icon-checkbox-unchecked" data-bind="css: {'icon-checkbox-checked': markAsImportant(), 'icon-checkbox-unchecked': !markAsImportant() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="COMPOSE/BUTTON_MARK_AS_IMPORTANT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" data-bind="visible: capaOpenPGP"></li>
|
||||
<li class="e-item" data-bind="visible: capaOpenPGP, click: openOpenPgpPopup, css: {'disabled': isHtml()}">
|
||||
<a class="e-link">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="COMPOSE/BUTTON_OPEN_PGP"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group pull-right"> </div>
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn" data-tooltip-placement="bottom" data-bind="visible: allowContacts, command: contactsCommand, tooltip: 'FOLDER_LIST/BUTTON_CONTACTS'">
|
||||
<i class="icon-address-book"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group pull-right"> </div>
|
||||
<span class="pull-right" data-bind="visible: !showCcAndBcc()">
|
||||
<span class="i18n g-ui-link" data-i18n-text="COMPOSE/LINK_SHOW_INPUTS" data-bind="click: function () { showCcAndBcc(true); }"></span>
|
||||
</span>
|
||||
|
|
@ -115,29 +151,6 @@
|
|||
<span class="i18n" data-i18n-text="COMPOSE/ATTACH_DROP_FILES_DESC"></span>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<div class="btn-group dropdown colored-toggle pull-right">
|
||||
<a class="btn dropdown-toggle buttonMore" data-toggle="dropdown">
|
||||
<i class="icon-list"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu" role="menu">
|
||||
<li class="e-item" data-bind="click: function () { requestReadReceipt(!requestReadReceipt()); }">
|
||||
<a class="e-link">
|
||||
<i class="icon-checkbox-unchecked" data-bind="css: {'icon-checkbox-checked': requestReadReceipt(), 'icon-checkbox-unchecked': !requestReadReceipt() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="COMPOSE/BUTTON_REQUEST_READ_RECEIPT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" data-bind="visible: capaOpenPGP"></li>
|
||||
<li class="e-item" data-bind="visible: capaOpenPGP, click: openOpenPgpPopup, css: {'disabled': isHtml()}">
|
||||
<a class="e-link">
|
||||
<i class="icon-key"></i>
|
||||
|
||||
OpenPGP (Plain Text Only)
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group pull-right"> </div>
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn" data-tooltip-placement="top" data-bind="visible: addAttachmentEnabled(), initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES'">
|
||||
<i class="icon-attachment"></i>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue