mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Small fixes
This commit is contained in:
parent
ff8ef2012b
commit
c9b5194baf
33 changed files with 296 additions and 58 deletions
|
|
@ -10,8 +10,9 @@ function AbstractApp()
|
|||
|
||||
this.oSettings = null;
|
||||
this.oPlugins = null;
|
||||
this.oLink = null;
|
||||
this.oLocal = null;
|
||||
this.oLink = null;
|
||||
this.oSubs = {};
|
||||
|
||||
this.isLocalAutocomplete = true;
|
||||
|
||||
|
|
@ -41,7 +42,10 @@ function AbstractApp()
|
|||
_.extend(AbstractApp.prototype, KnoinAbstractBoot.prototype);
|
||||
|
||||
AbstractApp.prototype.oSettings = null;
|
||||
AbstractApp.prototype.oPlugins = null;
|
||||
AbstractApp.prototype.oLocal = null;
|
||||
AbstractApp.prototype.oLink = null;
|
||||
AbstractApp.prototype.oSubs = {};
|
||||
|
||||
/**
|
||||
* @param {string} sLink
|
||||
|
|
@ -209,6 +213,45 @@ AbstractApp.prototype.getAutocomplete = function (sQuery, fCallback)
|
|||
fCallback([], sQuery);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} sName
|
||||
* @param {Function} fFunc
|
||||
* @param {Object=} oContext
|
||||
* @return {AbstractApp}
|
||||
*/
|
||||
AbstractApp.prototype.sub = function (sName, fFunc, oContext)
|
||||
{
|
||||
if (Utils.isUnd(this.oSubs[sName]))
|
||||
{
|
||||
this.oSubs[sName] = [];
|
||||
}
|
||||
|
||||
this.oSubs[sName].push([fFunc, oContext]);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} sName
|
||||
* @param {Array=} aArgs
|
||||
* @return {AbstractApp}
|
||||
*/
|
||||
AbstractApp.prototype.pub = function (sName, aArgs)
|
||||
{
|
||||
if (!Utils.isUnd(this.oSubs[sName]))
|
||||
{
|
||||
window.console.log(sName);
|
||||
_.each(this.oSubs[sName], function (aItem) {
|
||||
if (aItem[0])
|
||||
{
|
||||
aItem[0].apply(aItem[1] || null, aArgs || []);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
AbstractApp.prototype.bootstart = function ()
|
||||
{
|
||||
Utils.initOnStartOrLangChange(function () {
|
||||
|
|
|
|||
|
|
@ -127,6 +127,16 @@ Selector.prototype.selectItemCallbacks = function (oItem)
|
|||
(this.oCallbacks['onItemSelect'] || this.emptyFunction)(oItem);
|
||||
};
|
||||
|
||||
Selector.prototype.goDown = function ()
|
||||
{
|
||||
this.newSelectPosition(Enums.EventKeyCode.Down, false);
|
||||
};
|
||||
|
||||
Selector.prototype.goUp = function ()
|
||||
{
|
||||
this.newSelectPosition(Enums.EventKeyCode.Up, false);
|
||||
};
|
||||
|
||||
Selector.prototype.init = function (oContentVisible, oContentScrollable)
|
||||
{
|
||||
this.oContentVisible = oContentVisible;
|
||||
|
|
|
|||
|
|
@ -87,14 +87,14 @@
|
|||
.b-appachments {
|
||||
|
||||
.b-attacment {
|
||||
display: inline-block;
|
||||
line-height: 20px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.b-attacment-in-process {
|
||||
|
||||
display: inline-block;
|
||||
line-height: 20px;
|
||||
padding-bottom: 10px;
|
||||
|
||||
.uploading {
|
||||
display: none;
|
||||
|
|
|
|||
|
|
@ -178,6 +178,15 @@ function MailBoxMessageListViewModel()
|
|||
}
|
||||
}, this));
|
||||
|
||||
RL
|
||||
.sub('mailbox.message-list.selector.go-down', function () {
|
||||
this.selector.goDown();
|
||||
}, this)
|
||||
.sub('mailbox.message-list.selector.go-up', function () {
|
||||
this.selector.goUp();
|
||||
}, this)
|
||||
;
|
||||
|
||||
Knoin.constructorEnd(this);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,6 +62,11 @@ function MailBoxMessageViewViewModel()
|
|||
// TODO
|
||||
window.console.log(arguments);
|
||||
}, this.messageVisibility);
|
||||
|
||||
this.spamCommand = Utils.createCommand(this, function () {
|
||||
// TODO
|
||||
window.console.log(arguments);
|
||||
}, this.messageVisibility);
|
||||
|
||||
// viewer
|
||||
this.viewSubject = ko.observable('');
|
||||
|
|
@ -147,6 +152,14 @@ function MailBoxMessageViewViewModel()
|
|||
this.scrollMessageToTop();
|
||||
}, this);
|
||||
|
||||
this.goUpCommand = Utils.createCommand(this, function () {
|
||||
RL.pub('mailbox.message-list.selector.go-up');
|
||||
});
|
||||
|
||||
this.goDownCommand = Utils.createCommand(this, function () {
|
||||
RL.pub('mailbox.message-list.selector.go-down');
|
||||
});
|
||||
|
||||
Knoin.constructorEnd(this);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,17 +56,26 @@ function PopupsComposeViewModel()
|
|||
this.saving = ko.observable(false);
|
||||
this.attachments = ko.observableArray([]);
|
||||
|
||||
this.attachmentsInProcess = ko.computed(function () {
|
||||
return _.filter(this.attachments(), function (oItem) {
|
||||
return oItem && '' === oItem.tempName();
|
||||
});
|
||||
}, this);
|
||||
// this.attachmentsInProcess = ko.computed(function () {
|
||||
// return _.filter(this.attachments(), function (oItem) {
|
||||
// return oItem && '' === oItem.tempName();
|
||||
// });
|
||||
// }, this);
|
||||
//
|
||||
// this.attachmentsInReady = ko.computed(function () {
|
||||
// return _.filter(this.attachments(), function (oItem) {
|
||||
// return oItem && '' !== oItem.tempName();
|
||||
// });
|
||||
// }, this);
|
||||
|
||||
this.attachmentsInReady = ko.computed(function () {
|
||||
return _.filter(this.attachments(), function (oItem) {
|
||||
return oItem && '' !== oItem.tempName();
|
||||
});
|
||||
}, this);
|
||||
|
||||
this.attachmentsInProcess = this.attachments.filter(function (oItem) {
|
||||
return oItem && '' === oItem.tempName();
|
||||
});
|
||||
|
||||
this.attachmentsInReady = this.attachments.filter(function (oItem) {
|
||||
return oItem && '' !== oItem.tempName();
|
||||
});
|
||||
|
||||
this.attachments.subscribe(function () {
|
||||
this.triggerForResize();
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"name": "RainLoop",
|
||||
"title": "RainLoop Webmail",
|
||||
"version": "1.5.0",
|
||||
"release": "531",
|
||||
"release": "532",
|
||||
"description": "Simple, modern & fast web-based email client",
|
||||
"homepage": "http://rainloop.net",
|
||||
"main": "Gruntfile.js",
|
||||
|
|
|
|||
|
|
@ -769,7 +769,7 @@ class Actions
|
|||
public function IsAdminLoggined($bThrowExceptionOnFalse = true)
|
||||
{
|
||||
$bResult = false;
|
||||
if ($this->Config()->Get('labs', 'allow_admin_panel', true))
|
||||
if ($this->Config()->Get('security', 'allow_admin_panel', true))
|
||||
{
|
||||
$aAdminHash = \RainLoop\Utils::DecodeKeyValues($this->getAdminAuthToken());
|
||||
if ((!empty($aAdminHash[0]) && !empty($aAdminHash[1]) &&
|
||||
|
|
@ -884,7 +884,7 @@ class Actions
|
|||
'LoadingDescription' => $oConfig->Get('webmail', 'loading_description', ''),
|
||||
'Token' => $oConfig->Get('security', 'csrf_protection', false) ? \RainLoop\Utils::GetCsrfToken() : '',
|
||||
'InIframe' => (bool) $oConfig->Get('labs', 'in_iframe', false),
|
||||
'AllowAdminPanel' => (bool) $oConfig->Get('labs', 'allow_admin_panel', true),
|
||||
'AllowAdminPanel' => (bool) $oConfig->Get('security', 'allow_admin_panel', true),
|
||||
'CustomLoginLink' => $oConfig->Get('labs', 'custom_login_link', ''),
|
||||
'CustomLogoutLink' => $oConfig->Get('labs', 'custom_logout_link', ''),
|
||||
'AllowAdditionalAccounts' => (bool) $oConfig->Get('webmail', 'allow_additional_accounts', true),
|
||||
|
|
@ -1896,7 +1896,7 @@ class Actions
|
|||
$this->Logger()->AddSecret($sPassword);
|
||||
|
||||
if (0 === strlen($sLogin) || 0 === strlen($sPassword) ||
|
||||
!$this->Config()->Get('labs', 'allow_admin_panel', true) ||
|
||||
!$this->Config()->Get('security', 'allow_admin_panel', true) ||
|
||||
$sLogin !== $this->Config()->Get('security', 'admin_login', '') ||
|
||||
!$this->Config()->ValidatePassword($sPassword))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -222,7 +222,6 @@ Enables caching in the system'),
|
|||
'custom_login_link' => array(''),
|
||||
'custom_logout_link' => array(''),
|
||||
'allow_external_login' => array(false),
|
||||
'allow_admin_panel' => array(true),
|
||||
'fast_cache_memcache_host' => array('127.0.0.1'),
|
||||
'fast_cache_memcache_port' => array(11211),
|
||||
'fast_cache_memcache_expire' => array(43200),
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<div class="b-attacment">
|
||||
<label>
|
||||
<input type="checkbox" data-bind="checked: enabled" />
|
||||
<label data-bind="click: function () { enabled(!enabled()); }">
|
||||
<i class="checkboxAttachment" data-bind="css: enabled() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked'"></i>
|
||||
<!--<input type="checkbox" data-bind="checked: enabled" />-->
|
||||
|
||||
<span class="name" data-bind="text: fileName"></span>
|
||||
(<span class="size" data-bind="text: friendlySize"></span>)
|
||||
</label>
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
|
|
@ -10,5 +10,4 @@
|
|||
<div class="error">
|
||||
<span data-bind="text: error"></span>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
<i class="icon-spinner-2" data-bind="css: {'animated': messageListCompleteLoadingThrottle}"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group"> </div>
|
||||
<div class="btn-group">
|
||||
<a class="btn dropdown-toggle buttonMove" data-toggle="dropdown" data-placement="bottom" data-bind="command: moveCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
|
||||
<i class="icon-legacyfilemanager"></i>
|
||||
|
|
@ -19,19 +20,20 @@
|
|||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group"> </div>
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-danger buttonDelete" data-placement="bottom" data-bind="command: deleteCommand, tooltip: 'MESSAGE_LIST/BUTTON_DELETE'">
|
||||
<i class="icon-trash icon-white"></i>
|
||||
<span data-bind="text: 1 < messageListCheckedOrSelectedUidsWithSubMails().length ? ' (' + messageListCheckedOrSelectedUidsWithSubMails().length + ')' : ''"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group" data-placement="bottom" data-bind="visible: !isSpamFolder(), tooltip: 'MESSAGE_LIST/BUTTON_SPAM'">
|
||||
<a class="btn buttonSpam" data-bind="command: spamCommand">
|
||||
<span style="font-size:10px;"> </span>
|
||||
<a class="btn buttonSpam" data-placement="bottom" data-bind="visible: !isSpamFolder(), command: spamCommand, tooltip: 'MESSAGE_LIST/BUTTON_SPAM'">
|
||||
<i class="icon-bug"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group"> </div>
|
||||
<div class="btn-group">
|
||||
<a class="btn dropdown-toggle buttonMore" data-toggle="dropdown" data-placement="right" data-bind="tooltip: 'MESSAGE_LIST/BUTTON_MORE'">
|
||||
<a class="btn dropdown-toggle buttonMore" data-toggle="dropdown" data-placement="bottom" data-bind="tooltip: 'MESSAGE_LIST/BUTTON_MORE'">
|
||||
<i class="icon-reorder"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu">
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<i class="icon-remove"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group"> </div>
|
||||
<div class="btn-group" data-placement="bottom" data-bind="visible: $root.isDraftFolder(), tooltip: 'MESSAGE/BUTTON_EDIT'">
|
||||
<a class="btn btn-success buttonEdit" data-bind="command: $root.messageEditCommand">
|
||||
<i class="icon-edit2 icon-white"></i>
|
||||
|
|
@ -23,15 +24,19 @@
|
|||
<i class="icon-forward"></i>
|
||||
</a>
|
||||
</div>
|
||||
<!--
|
||||
<!-- <div class="btn-group"> </div>
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-danger buttonDelete" data-placement="bottom" data-bind="command: $root.deleteCommand, tooltip: 'MESSAGE/BUTTON_DELETE'">
|
||||
<i class="icon-trash icon-white"></i>
|
||||
</a>
|
||||
</div>
|
||||
-->
|
||||
<span style="font-size:10px;" data-bind="visible: !$root.isDraftFolder()"> </span>
|
||||
<a class="btn buttonSpam" data-placement="bottom" data-bind="visible: !$root.isDraftFolder(), command: $root.spamCommand, tooltip: 'MESSAGE/BUTTON_SPAM'">
|
||||
<i class="icon-bug"></i>
|
||||
</a>
|
||||
</div>-->
|
||||
<div class="btn-group"> </div>
|
||||
<div class="btn-group">
|
||||
<a class="btn dropdown-toggle buttonMore" data-placement="right" data-toggle="dropdown" data-bind="command: $root.messageVisibilityCommand, tooltip: 'MESSAGE/BUTTON_MORE'">
|
||||
<a class="btn dropdown-toggle buttonMore" data-placement="bottom" data-toggle="dropdown" data-bind="command: $root.messageVisibilityCommand, tooltip: 'MESSAGE/BUTTON_MORE'">
|
||||
<i class="icon-reorder"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu">
|
||||
|
|
@ -74,6 +79,15 @@
|
|||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group"> </div>
|
||||
<div class="btn-group" data-bind="visible: !$root.usePreviewPane()">
|
||||
<a class="btn buttonUp" data-bind="command: $root.goUpCommand">
|
||||
<i class="icon-arrow-left"></i>
|
||||
</a>
|
||||
<a class="btn buttonDown" data-bind="command: $root.goDownCommand">
|
||||
<i class="icon-arrow-right-2"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="b-content thm-message-view-background-color">
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Bearbeiten"
|
|||
BUTTON_BACK = "Zurück"
|
||||
BUTTON_CLOSE = "Schließen"
|
||||
BUTTON_DELETE = "Löschen"
|
||||
BUTTON_SPAM = "Spam"
|
||||
BUTTON_MOVE_TO = "Verschieben nach"
|
||||
BUTTON_MORE = "Mehr"
|
||||
BUTTON_REPLY = "Antworten"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Edit"
|
|||
BUTTON_BACK = "Back"
|
||||
BUTTON_CLOSE = "Close"
|
||||
BUTTON_DELETE = "Delete"
|
||||
BUTTON_SPAM = "Spam"
|
||||
BUTTON_MOVE_TO = "Move To"
|
||||
BUTTON_MORE = "More"
|
||||
BUTTON_REPLY = "Reply"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Editar"
|
|||
BUTTON_BACK = "Atrás"
|
||||
BUTTON_CLOSE = "Cerrar"
|
||||
BUTTON_DELETE = "Eliminar"
|
||||
BUTTON_SPAM = "Spam"
|
||||
BUTTON_MOVE_TO = "Mover a"
|
||||
BUTTON_MORE = "Más"
|
||||
BUTTON_REPLY = "Responder"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Modifier"
|
|||
BUTTON_BACK = "Retour"
|
||||
BUTTON_CLOSE = "Fermer"
|
||||
BUTTON_DELETE = "Supprimer"
|
||||
BUTTON_SPAM = "Spam"
|
||||
BUTTON_MOVE_TO = "Déplacer vers"
|
||||
BUTTON_MORE = "Plus"
|
||||
BUTTON_REPLY = "Répondre"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Breyta"
|
|||
BUTTON_BACK = "Til baka"
|
||||
BUTTON_CLOSE = "Loka"
|
||||
BUTTON_DELETE = "Eyða"
|
||||
BUTTON_SPAM = "Ruslpóstur"
|
||||
BUTTON_MOVE_TO = "Færa í"
|
||||
BUTTON_MORE = "Meira"
|
||||
BUTTON_REPLY = "Svara"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "수정"
|
|||
BUTTON_BACK = "뒤로"
|
||||
BUTTON_CLOSE = "닫기"
|
||||
BUTTON_DELETE = "삭제"
|
||||
BUTTON_SPAM = "스팸"
|
||||
BUTTON_MOVE_TO = "이동"
|
||||
BUTTON_MORE = "더보기"
|
||||
BUTTON_REPLY = "답장"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Labot"
|
|||
BUTTON_BACK = "Atpakaļ"
|
||||
BUTTON_CLOSE = "Aizvērt"
|
||||
BUTTON_DELETE = "Dzēst"
|
||||
BUTTON_SPAM = "Spams"
|
||||
BUTTON_MOVE_TO = "Pārvietot uz"
|
||||
BUTTON_MORE = "Vairāk"
|
||||
BUTTON_REPLY = "Atbildēt"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Aanpassen"
|
|||
BUTTON_BACK = "Terug"
|
||||
BUTTON_CLOSE = "Sluiten"
|
||||
BUTTON_DELETE = "Verwijderen"
|
||||
BUTTON_SPAM = "Spam"
|
||||
BUTTON_MOVE_TO = "Verplaatsen naar"
|
||||
BUTTON_MORE = "Meer"
|
||||
BUTTON_REPLY = "Antwoorden"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Edytuj"
|
|||
BUTTON_BACK = "Wstecz"
|
||||
BUTTON_CLOSE = "Zamknij"
|
||||
BUTTON_DELETE = "Usuń"
|
||||
BUTTON_SPAM = "Oznacz jako spam"
|
||||
BUTTON_MOVE_TO = "Przenieś Do"
|
||||
BUTTON_MORE = "Więcej"
|
||||
BUTTON_REPLY = "Odpowiedz"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Editar"
|
|||
BUTTON_BACK = "Voltar"
|
||||
BUTTON_CLOSE = "Fechar"
|
||||
BUTTON_DELETE = "Excluir"
|
||||
BUTTON_SPAM = "Lixo Eletrônico"
|
||||
BUTTON_MOVE_TO = "Mover para"
|
||||
BUTTON_MORE = "Mais"
|
||||
BUTTON_REPLY = "Responder"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Editar"
|
|||
BUTTON_BACK = "Voltar"
|
||||
BUTTON_CLOSE = "Fechar"
|
||||
BUTTON_DELETE = "Excluir"
|
||||
BUTTON_SPAM = "Lixo Eletrônico"
|
||||
BUTTON_MOVE_TO = "Mover para"
|
||||
BUTTON_MORE = "Mais"
|
||||
BUTTON_REPLY = "Responder"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "Редактировать"
|
|||
BUTTON_BACK = "Назад"
|
||||
BUTTON_CLOSE = "Закрыть"
|
||||
BUTTON_DELETE = "Удалить"
|
||||
BUTTON_SPAM = "В спам"
|
||||
BUTTON_MOVE_TO = "Переместить"
|
||||
BUTTON_MORE = "Еще"
|
||||
BUTTON_REPLY = "Ответить на Письмо"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ BUTTON_EDIT = "编辑"
|
|||
BUTTON_BACK = "返回"
|
||||
BUTTON_CLOSE = "关闭"
|
||||
BUTTON_DELETE = "删除"
|
||||
BUTTON_SPAM = "垃圾邮件"
|
||||
BUTTON_MOVE_TO = "移至"
|
||||
BUTTON_MORE = "更多"
|
||||
BUTTON_REPLY = "回复"
|
||||
|
|
|
|||
|
|
@ -7386,12 +7386,12 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
|
|||
color: red;
|
||||
}
|
||||
.b-compose .b-header .b-appachments .b-attacment {
|
||||
display: inline-block;
|
||||
line-height: 20px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.b-compose .b-header .b-appachments .b-attacment-in-process {
|
||||
display: inline-block;
|
||||
line-height: 20px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.b-compose .b-header .b-appachments .b-attacment-in-process .uploading {
|
||||
display: none;
|
||||
|
|
|
|||
2
rainloop/v/0.0.0/static/css/app.min.css
vendored
2
rainloop/v/0.0.0/static/css/app.min.css
vendored
File diff suppressed because one or more lines are too long
|
|
@ -5231,12 +5231,12 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
|
|||
color: red;
|
||||
}
|
||||
.b-compose .b-header .b-appachments .b-attacment {
|
||||
display: inline-block;
|
||||
line-height: 20px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.b-compose .b-header .b-appachments .b-attacment-in-process {
|
||||
display: inline-block;
|
||||
line-height: 20px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.b-compose .b-header .b-appachments .b-attacment-in-process .uploading {
|
||||
display: none;
|
||||
|
|
|
|||
|
|
@ -6787,8 +6787,9 @@ function AbstractApp()
|
|||
|
||||
this.oSettings = null;
|
||||
this.oPlugins = null;
|
||||
this.oLink = null;
|
||||
this.oLocal = null;
|
||||
this.oLink = null;
|
||||
this.oSubs = {};
|
||||
|
||||
this.isLocalAutocomplete = true;
|
||||
|
||||
|
|
@ -6818,7 +6819,10 @@ function AbstractApp()
|
|||
_.extend(AbstractApp.prototype, KnoinAbstractBoot.prototype);
|
||||
|
||||
AbstractApp.prototype.oSettings = null;
|
||||
AbstractApp.prototype.oPlugins = null;
|
||||
AbstractApp.prototype.oLocal = null;
|
||||
AbstractApp.prototype.oLink = null;
|
||||
AbstractApp.prototype.oSubs = {};
|
||||
|
||||
/**
|
||||
* @param {string} sLink
|
||||
|
|
@ -6986,6 +6990,45 @@ AbstractApp.prototype.getAutocomplete = function (sQuery, fCallback)
|
|||
fCallback([], sQuery);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} sName
|
||||
* @param {Function} fFunc
|
||||
* @param {Object=} oContext
|
||||
* @return {AbstractApp}
|
||||
*/
|
||||
AbstractApp.prototype.sub = function (sName, fFunc, oContext)
|
||||
{
|
||||
if (Utils.isUnd(this.oSubs[sName]))
|
||||
{
|
||||
this.oSubs[sName] = [];
|
||||
}
|
||||
|
||||
this.oSubs[sName].push([fFunc, oContext]);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} sName
|
||||
* @param {Array=} aArgs
|
||||
* @return {AbstractApp}
|
||||
*/
|
||||
AbstractApp.prototype.pub = function (sName, aArgs)
|
||||
{
|
||||
if (!Utils.isUnd(this.oSubs[sName]))
|
||||
{
|
||||
window.console.log(sName);
|
||||
_.each(this.oSubs[sName], function (aItem) {
|
||||
if (aItem[0])
|
||||
{
|
||||
aItem[0].apply(aItem[1] || null, aArgs || []);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
AbstractApp.prototype.bootstart = function ()
|
||||
{
|
||||
Utils.initOnStartOrLangChange(function () {
|
||||
|
|
|
|||
4
rainloop/v/0.0.0/static/js/admin.min.js
vendored
4
rainloop/v/0.0.0/static/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -4325,6 +4325,16 @@ Selector.prototype.selectItemCallbacks = function (oItem)
|
|||
(this.oCallbacks['onItemSelect'] || this.emptyFunction)(oItem);
|
||||
};
|
||||
|
||||
Selector.prototype.goDown = function ()
|
||||
{
|
||||
this.newSelectPosition(Enums.EventKeyCode.Down, false);
|
||||
};
|
||||
|
||||
Selector.prototype.goUp = function ()
|
||||
{
|
||||
this.newSelectPosition(Enums.EventKeyCode.Up, false);
|
||||
};
|
||||
|
||||
Selector.prototype.init = function (oContentVisible, oContentScrollable)
|
||||
{
|
||||
this.oContentVisible = oContentVisible;
|
||||
|
|
@ -7906,17 +7916,26 @@ function PopupsComposeViewModel()
|
|||
this.saving = ko.observable(false);
|
||||
this.attachments = ko.observableArray([]);
|
||||
|
||||
this.attachmentsInProcess = ko.computed(function () {
|
||||
return _.filter(this.attachments(), function (oItem) {
|
||||
return oItem && '' === oItem.tempName();
|
||||
});
|
||||
}, this);
|
||||
// this.attachmentsInProcess = ko.computed(function () {
|
||||
// return _.filter(this.attachments(), function (oItem) {
|
||||
// return oItem && '' === oItem.tempName();
|
||||
// });
|
||||
// }, this);
|
||||
//
|
||||
// this.attachmentsInReady = ko.computed(function () {
|
||||
// return _.filter(this.attachments(), function (oItem) {
|
||||
// return oItem && '' !== oItem.tempName();
|
||||
// });
|
||||
// }, this);
|
||||
|
||||
this.attachmentsInReady = ko.computed(function () {
|
||||
return _.filter(this.attachments(), function (oItem) {
|
||||
return oItem && '' !== oItem.tempName();
|
||||
});
|
||||
}, this);
|
||||
|
||||
this.attachmentsInProcess = this.attachments.filter(function (oItem) {
|
||||
return oItem && '' === oItem.tempName();
|
||||
});
|
||||
|
||||
this.attachmentsInReady = this.attachments.filter(function (oItem) {
|
||||
return oItem && '' !== oItem.tempName();
|
||||
});
|
||||
|
||||
this.attachments.subscribe(function () {
|
||||
this.triggerForResize();
|
||||
|
|
@ -10780,6 +10799,15 @@ function MailBoxMessageListViewModel()
|
|||
}
|
||||
}, this));
|
||||
|
||||
RL
|
||||
.sub('mailbox.message-list.selector.go-down', function () {
|
||||
this.selector.goDown();
|
||||
}, this)
|
||||
.sub('mailbox.message-list.selector.go-up', function () {
|
||||
this.selector.goUp();
|
||||
}, this)
|
||||
;
|
||||
|
||||
Knoin.constructorEnd(this);
|
||||
}
|
||||
|
||||
|
|
@ -11499,6 +11527,11 @@ function MailBoxMessageViewViewModel()
|
|||
// TODO
|
||||
window.console.log(arguments);
|
||||
}, this.messageVisibility);
|
||||
|
||||
this.spamCommand = Utils.createCommand(this, function () {
|
||||
// TODO
|
||||
window.console.log(arguments);
|
||||
}, this.messageVisibility);
|
||||
|
||||
// viewer
|
||||
this.viewSubject = ko.observable('');
|
||||
|
|
@ -11584,6 +11617,14 @@ function MailBoxMessageViewViewModel()
|
|||
this.scrollMessageToTop();
|
||||
}, this);
|
||||
|
||||
this.goUpCommand = Utils.createCommand(this, function () {
|
||||
RL.pub('mailbox.message-list.selector.go-up');
|
||||
});
|
||||
|
||||
this.goDownCommand = Utils.createCommand(this, function () {
|
||||
RL.pub('mailbox.message-list.selector.go-down');
|
||||
});
|
||||
|
||||
Knoin.constructorEnd(this);
|
||||
}
|
||||
|
||||
|
|
@ -15459,8 +15500,9 @@ function AbstractApp()
|
|||
|
||||
this.oSettings = null;
|
||||
this.oPlugins = null;
|
||||
this.oLink = null;
|
||||
this.oLocal = null;
|
||||
this.oLink = null;
|
||||
this.oSubs = {};
|
||||
|
||||
this.isLocalAutocomplete = true;
|
||||
|
||||
|
|
@ -15490,7 +15532,10 @@ function AbstractApp()
|
|||
_.extend(AbstractApp.prototype, KnoinAbstractBoot.prototype);
|
||||
|
||||
AbstractApp.prototype.oSettings = null;
|
||||
AbstractApp.prototype.oPlugins = null;
|
||||
AbstractApp.prototype.oLocal = null;
|
||||
AbstractApp.prototype.oLink = null;
|
||||
AbstractApp.prototype.oSubs = {};
|
||||
|
||||
/**
|
||||
* @param {string} sLink
|
||||
|
|
@ -15658,6 +15703,45 @@ AbstractApp.prototype.getAutocomplete = function (sQuery, fCallback)
|
|||
fCallback([], sQuery);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} sName
|
||||
* @param {Function} fFunc
|
||||
* @param {Object=} oContext
|
||||
* @return {AbstractApp}
|
||||
*/
|
||||
AbstractApp.prototype.sub = function (sName, fFunc, oContext)
|
||||
{
|
||||
if (Utils.isUnd(this.oSubs[sName]))
|
||||
{
|
||||
this.oSubs[sName] = [];
|
||||
}
|
||||
|
||||
this.oSubs[sName].push([fFunc, oContext]);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} sName
|
||||
* @param {Array=} aArgs
|
||||
* @return {AbstractApp}
|
||||
*/
|
||||
AbstractApp.prototype.pub = function (sName, aArgs)
|
||||
{
|
||||
if (!Utils.isUnd(this.oSubs[sName]))
|
||||
{
|
||||
window.console.log(sName);
|
||||
_.each(this.oSubs[sName], function (aItem) {
|
||||
if (aItem[0])
|
||||
{
|
||||
aItem[0].apply(aItem[1] || null, aArgs || []);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
AbstractApp.prototype.bootstart = function ()
|
||||
{
|
||||
Utils.initOnStartOrLangChange(function () {
|
||||
|
|
|
|||
14
rainloop/v/0.0.0/static/js/app.min.js
vendored
14
rainloop/v/0.0.0/static/js/app.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue