mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-12-25 00:21:29 +08: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
|
@ -304,7 +304,7 @@
|
|||
'EqualTo': 'EqualTo',
|
||||
'NotEqualTo': 'NotEqualTo'
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
this.enabled = ko.observable(true);
|
||||
|
||||
this.id = '';
|
||||
|
||||
this.name = ko.observable('');
|
||||
this.name.error = ko.observable(false);
|
||||
this.name.focused = ko.observable(false);
|
||||
|
@ -33,6 +35,7 @@
|
|||
// Actions
|
||||
this.actionValue = ko.observable('');
|
||||
this.actionMarkAsRead = ko.observable(false);
|
||||
this.actionSkipOthers = ko.observable(false);
|
||||
|
||||
this.actionType = ko.observable(Enums.FiltersAction.Move);
|
||||
|
||||
|
@ -74,18 +77,27 @@
|
|||
|
||||
_.extend(FilterModel.prototype, AbstractModel.prototype);
|
||||
|
||||
FilterModel.prototype.generateID = function ()
|
||||
{
|
||||
this.id = Utils.fakeMd5();
|
||||
};
|
||||
|
||||
FilterModel.prototype.toJson = function ()
|
||||
{
|
||||
return {
|
||||
'ID': this.id,
|
||||
'Enabled': this.enabled(),
|
||||
'Name': this.name(),
|
||||
'ConditionsType': this.conditionsType(),
|
||||
'Conditions': _.map(this.conditions(), function (oItem) {
|
||||
return oItem.toJson();
|
||||
}),
|
||||
'ActionMarkAsRead': this.actionMarkAsRead(),
|
||||
|
||||
'ActionValue': this.actionValue(),
|
||||
'ActionType': this.actionType()
|
||||
'ActionType': this.actionType(),
|
||||
|
||||
'MarkAsRead': this.actionMarkAsRead() ? '1' : '0',
|
||||
'SkipOthers': this.actionSkipOthers() ? '1' : '0'
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -105,6 +117,7 @@
|
|||
var bResult = false;
|
||||
if (oItem && 'Object/Filter' === oItem['@Object'])
|
||||
{
|
||||
this.ID = Utils.pString(oItem['ID']);
|
||||
this.name(Utils.pString(oItem['Name']));
|
||||
|
||||
bResult = true;
|
||||
|
@ -117,6 +130,8 @@
|
|||
{
|
||||
var oClone = new FilterModel();
|
||||
|
||||
oClone.ID = this.ID;
|
||||
|
||||
oClone.enabled(this.enabled());
|
||||
|
||||
oClone.name(this.name());
|
||||
|
@ -125,6 +140,8 @@
|
|||
oClone.conditionsType(this.conditionsType());
|
||||
|
||||
oClone.actionMarkAsRead(this.actionMarkAsRead());
|
||||
oClone.actionSkipOthers(this.actionSkipOthers());
|
||||
|
||||
oClone.actionValue(this.actionValue());
|
||||
|
||||
oClone.actionType(this.actionType());
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
;
|
||||
|
||||
/**
|
||||
* @param {*} oKoList
|
||||
* @constructor
|
||||
*/
|
||||
function FilterConditionModel()
|
||||
|
|
1490
dev/Model/Message.js
1490
dev/Model/Message.js
File diff suppressed because it is too large
Load diff
|
@ -44,7 +44,7 @@
|
|||
{'toggleSubscribeProperty': [this, 'deleteAccess']});
|
||||
|
||||
this.saveChanges = Utils.createCommand(this, function () {
|
||||
|
||||
|
||||
if (!this.filters.saving())
|
||||
{
|
||||
this.filters.saving(true);
|
||||
|
@ -70,8 +70,8 @@
|
|||
});
|
||||
|
||||
this.filters.subscribe(function () {
|
||||
this.haveChanges(true);
|
||||
}, this);
|
||||
this.haveChanges(true);
|
||||
}, this);
|
||||
}
|
||||
|
||||
FiltersUserSettings.prototype.scrollableOptions = function ()
|
||||
|
@ -105,6 +105,7 @@
|
|||
oNew = new FilterModel()
|
||||
;
|
||||
|
||||
oNew.generateID();
|
||||
require('Knoin/Knoin').showScreenPopup(
|
||||
require('View/Popup/Filter'), [oNew, function () {
|
||||
self.filters.push(oNew);
|
||||
|
|
|
@ -493,9 +493,10 @@
|
|||
* @param {(Array|null)} aDraftInfo
|
||||
* @param {string} sInReplyTo
|
||||
* @param {string} sReferences
|
||||
* @param {boolean} bMarkAsImportant
|
||||
*/
|
||||
RemoteUserStorage.prototype.saveMessage = function (fCallback, sMessageFolder, sMessageUid, sDraftFolder,
|
||||
sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences)
|
||||
sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences, bMarkAsImportant)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SaveMessage', {
|
||||
'MessageFolder': sMessageFolder,
|
||||
|
@ -511,6 +512,7 @@
|
|||
'DraftInfo': aDraftInfo,
|
||||
'InReplyTo': sInReplyTo,
|
||||
'References': sReferences,
|
||||
'MarkAsImportant': bMarkAsImportant ? '1' : '0',
|
||||
'Attachments': aAttachments
|
||||
}, Consts.Defaults.SaveMessageAjaxTimeout);
|
||||
};
|
||||
|
@ -552,9 +554,11 @@
|
|||
* @param {string} sInReplyTo
|
||||
* @param {string} sReferences
|
||||
* @param {boolean} bRequestReadReceipt
|
||||
* @param {boolean} bMarkAsImportant
|
||||
*/
|
||||
RemoteUserStorage.prototype.sendMessage = function (fCallback, sMessageFolder, sMessageUid, sSentFolder,
|
||||
sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences, bRequestReadReceipt)
|
||||
sFrom, sTo, sCc, sBcc, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences,
|
||||
bRequestReadReceipt, bMarkAsImportant)
|
||||
{
|
||||
this.defaultRequest(fCallback, 'SendMessage', {
|
||||
'MessageFolder': sMessageFolder,
|
||||
|
@ -571,6 +575,7 @@
|
|||
'InReplyTo': sInReplyTo,
|
||||
'References': sReferences,
|
||||
'ReadReceiptRequest': bRequestReadReceipt ? '1' : '0',
|
||||
'MarkAsImportant': bMarkAsImportant ? '1' : '0',
|
||||
'Attachments': aAttachments
|
||||
}, Consts.Defaults.SendMessageAjaxTimeout);
|
||||
};
|
||||
|
|
|
@ -47,6 +47,8 @@
|
|||
|
||||
this.bCapaAdditionalIdentities = Settings.capa(Enums.Capa.AdditionalIdentities);
|
||||
|
||||
this.allowContacts = !!Settings.settingsGet('ContactsIsAllowed');
|
||||
|
||||
var
|
||||
self = this,
|
||||
fCcAndBccCheckHelper = function (aValue) {
|
||||
|
@ -76,6 +78,7 @@
|
|||
this.isHtml = ko.observable(false);
|
||||
|
||||
this.requestReadReceipt = ko.observable(false);
|
||||
this.markAsImportant = ko.observable(false);
|
||||
|
||||
this.sendError = ko.observable(false);
|
||||
this.sendSuccessButSaveError = ko.observable(false);
|
||||
|
@ -298,7 +301,8 @@
|
|||
this.aDraftInfo,
|
||||
this.sInReplyTo,
|
||||
this.sReferences,
|
||||
this.requestReadReceipt()
|
||||
this.requestReadReceipt(),
|
||||
this.markAsImportant()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -334,7 +338,8 @@
|
|||
this.prepearAttachmentsForSendOrSave(),
|
||||
this.aDraftInfo,
|
||||
this.sInReplyTo,
|
||||
this.sReferences
|
||||
this.sReferences,
|
||||
this.markAsImportant()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -354,6 +359,21 @@
|
|||
|
||||
}, this.canBeSendedOrSaved);
|
||||
|
||||
this.contactsCommand = Utils.createCommand(this, function () {
|
||||
|
||||
if (this.allowContacts)
|
||||
{
|
||||
this.skipCommand();
|
||||
|
||||
_.delay(function () {
|
||||
kn.showScreenPopup(require('View/Popup/Contacts'), [true]);
|
||||
}, 200);
|
||||
}
|
||||
|
||||
}, function () {
|
||||
return this.allowContacts;
|
||||
});
|
||||
|
||||
Events.sub('interval.2m', function () {
|
||||
|
||||
if (this.modalVisibility() && !Data.draftFolderNotEnabled() && !this.isEmptyForm(false) &&
|
||||
|
@ -800,6 +820,10 @@
|
|||
self.initOnShow(sType, oMessageOrArray, aToEmails, sCustomSubject, sCustomPlainText);
|
||||
}, null, null, null, false]);
|
||||
}
|
||||
else if (aToEmails && 0 < aToEmails.length)
|
||||
{
|
||||
this.addEmailsToTo(aToEmails);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -807,6 +831,23 @@
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {Array} aEmails
|
||||
*/
|
||||
ComposePopupView.prototype.addEmailsToTo = function (aEmails)
|
||||
{
|
||||
var
|
||||
sTo = Utils.trim(this.to()),
|
||||
aTo = []
|
||||
;
|
||||
|
||||
aTo = _.uniq(_.compact(_.map(aEmails, function (oItem) {
|
||||
return oItem ? oItem.toLine(false) : null;
|
||||
})));
|
||||
|
||||
this.to(sTo + ('' === sTo ? '' : ', ') + Utils.trim(aTo.join(', ')));
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string=} sType = Enums.ComposeType.Empty
|
||||
* @param {?MessageModel|Array=} oMessageOrArray = null
|
||||
|
@ -1826,6 +1867,7 @@
|
|||
this.subject('');
|
||||
|
||||
this.requestReadReceipt(false);
|
||||
this.markAsImportant(false);
|
||||
|
||||
this.aDraftInfo = null;
|
||||
this.sInReplyTo = '';
|
||||
|
|
|
@ -46,6 +46,8 @@
|
|||
}
|
||||
;
|
||||
|
||||
this.bBackToCompose = false;
|
||||
|
||||
this.allowContactsSync = Data.allowContactsSync;
|
||||
this.enableContactsSync = Data.enableContactsSync;
|
||||
this.allowExport = !Globals.bMobileDevice;
|
||||
|
@ -261,8 +263,13 @@
|
|||
|
||||
if (Utils.isNonEmptyArray(aE))
|
||||
{
|
||||
self.bBackToCompose = false;
|
||||
|
||||
kn.hideScreenPopup(require('View/Popup/Contacts'));
|
||||
kn.showScreenPopup(require('View/Popup/Compose'), [Enums.ComposeType.Empty, null, aE]);
|
||||
|
||||
_.delay(function () {
|
||||
kn.showScreenPopup(require('View/Popup/Compose'), [Enums.ComposeType.Empty, null, aE]);
|
||||
}, 200);
|
||||
}
|
||||
|
||||
}, function () {
|
||||
|
@ -716,8 +723,10 @@
|
|||
this.initUploader();
|
||||
};
|
||||
|
||||
ContactsPopupView.prototype.onShow = function ()
|
||||
ContactsPopupView.prototype.onShow = function (bBackToCompose)
|
||||
{
|
||||
this.bBackToCompose = Utils.isUnd(bBackToCompose) ? false : !!bBackToCompose;
|
||||
|
||||
kn.routeOff();
|
||||
this.reloadContactList(true);
|
||||
};
|
||||
|
@ -732,6 +741,13 @@
|
|||
|
||||
Utils.delegateRunOnDestroy(this.contacts());
|
||||
this.contacts([]);
|
||||
|
||||
if (this.bBackToCompose)
|
||||
{
|
||||
this.bBackToCompose = false;
|
||||
|
||||
kn.showScreenPopup(require('View/Popup/Compose'));
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = ContactsPopupView;
|
||||
|
|
|
@ -165,6 +165,7 @@
|
|||
this.viewDownloadLink = ko.observable('');
|
||||
this.viewUserPic = ko.observable(Consts.DataImages.UserDotPic);
|
||||
this.viewUserPicVisible = ko.observable(false);
|
||||
this.viewIsImportant = ko.observable(false);
|
||||
|
||||
this.viewPgpPassword = ko.observable('');
|
||||
this.viewPgpSignedVerifyStatus = ko.computed(function () {
|
||||
|
@ -202,6 +203,7 @@
|
|||
this.viewLineAsCcc(oMessage.lineAsCcc());
|
||||
this.viewViewLink(oMessage.viewLink());
|
||||
this.viewDownloadLink(oMessage.downloadLink());
|
||||
this.viewIsImportant(oMessage.isImportant());
|
||||
|
||||
sLastEmail = oMessage.fromAsSingleEmail();
|
||||
Cache.getUserPic(sLastEmail, function (sPic, $sEmail) {
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -227,6 +227,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Заглавие"
|
|||
EMPTY_TO_ERROR_DESC = "Моля, изберте поне един получател"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Все още не са качени всички прикрепени файлове"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Поискайте разписка за прочитане на съобщението"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Да"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Betreff"
|
|||
EMPTY_TO_ERROR_DESC = "Geben Sie bitte mindestens einen Empfänger an"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Empfangsbestätigung anfordern"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Ja"
|
||||
|
|
|
@ -227,6 +227,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Subject"
|
|||
EMPTY_TO_ERROR_DESC = "Please specify at least one recipient"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Yes"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Asunto"
|
|||
EMPTY_TO_ERROR_DESC = "Por favor especifique al menos un destinatario"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Solicitar confirmación de lectura"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Sí"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Sujet"
|
|||
EMPTY_TO_ERROR_DESC = "Merci de spécifier au minimum un destinataire"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Demander une confirmation de lecture"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Oui"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Tárgy"
|
|||
EMPTY_TO_ERROR_DESC = "Please specify at least one recipient"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Igen"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Viðfangsefni"
|
|||
EMPTY_TO_ERROR_DESC = "Vinsamlegast taktu fram að minnsta kosti einn viðtakanda"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Yes"
|
||||
|
|
|
@ -227,6 +227,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Oggetto"
|
|||
EMPTY_TO_ERROR_DESC = "Specifica almeno un destinatario"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Richiedi conferma di lettura"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Si"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Subject"
|
|||
EMPTY_TO_ERROR_DESC = "Please specify at least one recipient"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "開封確認を要求しますか?"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "はい"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "제목"
|
|||
EMPTY_TO_ERROR_DESC = "수신인을 한 명 이상 선택하세요"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Yes"
|
||||
|
|
|
@ -227,6 +227,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Tema"
|
|||
EMPTY_TO_ERROR_DESC = "Prašome nurodyti bent vieną gavėją"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Dar ne visi priedai buvo įkelti"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Prašyti pranešti kada bus perskaitytas"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Taip"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Tēma"
|
|||
EMPTY_TO_ERROR_DESC = "Pievienojat vismaz vienu saņēmēju"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Yes"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Onderwerp"
|
|||
EMPTY_TO_ERROR_DESC = "Kies ten minste één ontvanger voordat u het bericht verstuurd"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Toevoegen van bijlage(n) is nog niet gereed"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Leesbevestiging vragen"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Ja"
|
||||
|
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Emne"
|
|||
EMPTY_TO_ERROR_DESC = "Vennligst oppgi minst én mottaker"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Alle vedleggene er ikke lastet opp ennå"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Be om en lesebekreftelse når meldingen er lest"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Ja"
|
||||
|
|
|
@ -227,6 +227,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Temat"
|
|||
EMPTY_TO_ERROR_DESC = "Wprowadź co najmniej jednego odbiorcę"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Nie przesłano jeszcze wszystkich załączników"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Żądaj potwierdzenia odbioru"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Tak"
|
||||
|
|
|
@ -227,6 +227,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Assunto"
|
|||
EMPTY_TO_ERROR_DESC = "Por favor, especifique pelo menos um destinatário"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Alguns anexos ainda não foram completamente enviados"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Pedir recibo de leitura"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Sim"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Assunto"
|
|||
EMPTY_TO_ERROR_DESC = "Por favor, especifique pelo menos um destinatário"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Pedir um recibo de leitura"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Sim"
|
||||
|
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Subiect"
|
|||
EMPTY_TO_ERROR_DESC = "Vă rugăm să specificați cel puțin un destinatar"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Cere confirmare de citire"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Da"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Тема"
|
|||
EMPTY_TO_ERROR_DESC = "Укажите как минимум одного получателя"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Запрос о прочтении письма"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Да"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Predmet"
|
|||
EMPTY_TO_ERROR_DESC = "Zadajte prosím aspoň jedného príjemcu"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Vyžiadať potvrdenie o prečítaní"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Áno"
|
||||
|
|
|
@ -227,6 +227,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Ämne"
|
|||
EMPTY_TO_ERROR_DESC = "Ange minst en mottagare"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Alla bilagor är inte uppladddade än"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Begär mottagningskvitto"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Ja"
|
||||
|
|
|
@ -227,6 +227,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Konu"
|
|||
EMPTY_TO_ERROR_DESC = "En az bir alıcı belirtin"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Okundu bilgisi iste"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Evet"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "Тема"
|
|||
EMPTY_TO_ERROR_DESC = "Вкажіть як мінімум одного отримувача"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Запит про прочитання листа"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "Так"
|
||||
|
|
|
@ -226,6 +226,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "主题"
|
|||
EMPTY_TO_ERROR_DESC = "请至少选择一位接收人"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "是"
|
||||
|
|
|
@ -227,6 +227,8 @@ FORWARD_MESSAGE_TOP_SUBJECT = "主題"
|
|||
EMPTY_TO_ERROR_DESC = "請至少選擇一位接收人"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
||||
[POPUPS_ASK]
|
||||
BUTTON_YES = "是"
|
||||
|
|
Loading…
Reference in a new issue