Small fixes

This commit is contained in:
RainLoop Team 2013-12-13 03:23:47 +04:00
parent ff8ef2012b
commit c9b5194baf
33 changed files with 296 additions and 58 deletions

View file

@ -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 () {

View file

@ -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;

View file

@ -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;

View file

@ -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);
}

View file

@ -63,6 +63,11 @@ function MailBoxMessageViewViewModel()
window.console.log(arguments);
}, this.messageVisibility);
this.spamCommand = Utils.createCommand(this, function () {
// TODO
window.console.log(arguments);
}, this.messageVisibility);
// viewer
this.viewSubject = ko.observable('');
this.viewFromShort = 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);
}

View file

@ -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();

View file

@ -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",

View file

@ -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))
{

View file

@ -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),

View file

@ -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" />-->
&nbsp;&nbsp;
<span class="name" data-bind="text: fileName"></span>
(<span class="size" data-bind="text: friendlySize"></span>)
</label>
</div>
<br />

View file

@ -11,4 +11,3 @@
<span data-bind="text: error"></span>
</div>
</div>
<br />

View file

@ -7,6 +7,7 @@
<i class="icon-spinner-2" data-bind="css: {'animated': messageListCompleteLoadingThrottle}"></i>
</a>
</div>
<div class="btn-group">&nbsp;</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">&nbsp;</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;">&nbsp;</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">&nbsp;</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">

View file

@ -7,6 +7,7 @@
<i class="icon-remove"></i>
</a>
</div>
<div class="btn-group">&nbsp;</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">&nbsp;</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()">&nbsp;</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">&nbsp;</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">&nbsp;</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">

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -90,6 +90,7 @@ BUTTON_EDIT = "수정"
BUTTON_BACK = "뒤로"
BUTTON_CLOSE = "닫기"
BUTTON_DELETE = "삭제"
BUTTON_SPAM = "스팸"
BUTTON_MOVE_TO = "이동"
BUTTON_MORE = "더보기"
BUTTON_REPLY = "답장"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -90,6 +90,7 @@ BUTTON_EDIT = "Редактировать"
BUTTON_BACK = "Назад"
BUTTON_CLOSE = "Закрыть"
BUTTON_DELETE = "Удалить"
BUTTON_SPAM = "В спам"
BUTTON_MOVE_TO = "Переместить"
BUTTON_MORE = "Еще"
BUTTON_REPLY = "Ответить на Письмо"

View file

@ -90,6 +90,7 @@ BUTTON_EDIT = "编辑"
BUTTON_BACK = "返回"
BUTTON_CLOSE = "关闭"
BUTTON_DELETE = "删除"
BUTTON_SPAM = "垃圾邮件"
BUTTON_MOVE_TO = "移至"
BUTTON_MORE = "更多"
BUTTON_REPLY = "回复"

View file

@ -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;

File diff suppressed because one or more lines are too long

View file

@ -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;

View file

@ -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 () {

File diff suppressed because one or more lines are too long

View file

@ -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);
}
@ -11500,6 +11528,11 @@ function MailBoxMessageViewViewModel()
window.console.log(arguments);
}, this.messageVisibility);
this.spamCommand = Utils.createCommand(this, function () {
// TODO
window.console.log(arguments);
}, this.messageVisibility);
// viewer
this.viewSubject = ko.observable('');
this.viewFromShort = 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 () {

File diff suppressed because one or more lines are too long