mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-09-01 18:54:11 +08:00
CardDAV (pre-release)
This commit is contained in:
parent
7a8fffede8
commit
639d8c58f6
38 changed files with 525 additions and 207 deletions
|
@ -277,6 +277,7 @@ module.exports = function (grunt) {
|
|||
"dev/ViewModels/SettingsPaneViewModel.js",
|
||||
|
||||
"dev/Settings/General.js",
|
||||
"dev/Settings/Contacts.js",
|
||||
"dev/Settings/Accounts.js",
|
||||
"dev/Settings/Identity.js",
|
||||
"dev/Settings/Identities.js",
|
||||
|
|
|
@ -146,7 +146,7 @@ AbstractApp.prototype.settingsSet = function (sName, mValue)
|
|||
|
||||
AbstractApp.prototype.setTitle = function (sTitle)
|
||||
{
|
||||
sTitle = ((0 < sTitle.length) ? sTitle + ' - ' : '') +
|
||||
sTitle = ((Utils.isNormal(sTitle) && 0 < sTitle.length) ? sTitle + ' - ' : '') +
|
||||
RL.settingsGet('Title') || '';
|
||||
|
||||
window.document.title = '_';
|
||||
|
|
|
@ -719,7 +719,12 @@ RainLoopApp.prototype.bootstart = function ()
|
|||
{
|
||||
Utils.removeSettingsViewModel(SettingsChangePasswordScreen);
|
||||
}
|
||||
|
||||
|
||||
if (!RL.settingsGet('ContactsIsAllowed'))
|
||||
{
|
||||
Utils.removeSettingsViewModel(SettingsContacts);
|
||||
}
|
||||
|
||||
if (!RL.settingsGet('AllowAdditionalAccounts'))
|
||||
{
|
||||
Utils.removeSettingsViewModel(SettingsAccounts);
|
||||
|
|
|
@ -13,5 +13,5 @@ _.extend(LoginScreen.prototype, KnoinAbstractScreen.prototype);
|
|||
|
||||
LoginScreen.prototype.onShow = function ()
|
||||
{
|
||||
RL.setTitle(Utils.i18n('TITLES/LOGIN'));
|
||||
RL.setTitle('');
|
||||
};
|
39
dev/Settings/Contacts.js
Normal file
39
dev/Settings/Contacts.js
Normal file
|
@ -0,0 +1,39 @@
|
|||
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
function SettingsContacts()
|
||||
{
|
||||
var oData = RL.data();
|
||||
|
||||
this.contactsAutosave = oData.contactsAutosave;
|
||||
this.showPassword = ko.observable(false);
|
||||
|
||||
this.allowContactsSync = !!RL.settingsGet('ContactsSyncIsAllowed');
|
||||
this.contactsSyncServer = RL.settingsGet('ContactsSyncServer');
|
||||
this.contactsSyncUser = RL.settingsGet('ContactsSyncUser');
|
||||
this.contactsSyncPass = RL.settingsGet('ContactsSyncPassword');
|
||||
this.contactsSyncPabUrl = RL.settingsGet('ContactsSyncPabUrl');
|
||||
}
|
||||
|
||||
Utils.addSettingsViewModel(SettingsContacts, 'SettingsContacts', 'SETTINGS_LABELS/LABEL_CONTACTS_NAME', 'contacts');
|
||||
|
||||
SettingsContacts.prototype.toggleShowPassword = function ()
|
||||
{
|
||||
this.showPassword(!this.showPassword());
|
||||
};
|
||||
|
||||
SettingsContacts.prototype.onBuild = function ()
|
||||
{
|
||||
RL.data().contactsAutosave.subscribe(function (bValue) {
|
||||
RL.remote().saveSettings(Utils.emptyFunction, {
|
||||
'ContactsAutosave': bValue ? '1' : '0'
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
SettingsContacts.prototype.onShow = function ()
|
||||
{
|
||||
this.showPassword(false);
|
||||
};
|
|
@ -12,7 +12,6 @@ function SettingsGeneral()
|
|||
this.mainMessagesPerPageArray = Consts.Defaults.MessagesPerPageArray;
|
||||
this.editorDefaultType = oData.editorDefaultType;
|
||||
this.showImages = oData.showImages;
|
||||
this.contactsAutosave = oData.contactsAutosave;
|
||||
this.interfaceAnimation = oData.interfaceAnimation;
|
||||
this.useDesktopNotifications = oData.useDesktopNotifications;
|
||||
this.threading = oData.threading;
|
||||
|
@ -39,7 +38,6 @@ function SettingsGeneral()
|
|||
this.mppTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
|
||||
|
||||
this.isAnimationSupported = Globals.bAnimationSupported;
|
||||
this.allowContacts = !!RL.settingsGet('ContactsIsAllowed');
|
||||
}
|
||||
|
||||
Utils.addSettingsViewModel(SettingsGeneral, 'SettingsGeneral', 'SETTINGS_LABELS/LABEL_GENERAL_NAME', 'general', true);
|
||||
|
@ -97,12 +95,6 @@ SettingsGeneral.prototype.onBuild = function ()
|
|||
});
|
||||
});
|
||||
|
||||
oData.contactsAutosave.subscribe(function (bValue) {
|
||||
RL.remote().saveSettings(Utils.emptyFunction, {
|
||||
'ContactsAutosave': bValue ? '1' : '0'
|
||||
});
|
||||
});
|
||||
|
||||
oData.interfaceAnimation.subscribe(function (sValue) {
|
||||
RL.remote().saveSettings(Utils.emptyFunction, {
|
||||
'InterfaceAnimation': sValue
|
||||
|
|
|
@ -290,11 +290,12 @@ class Http
|
|||
|
||||
/**
|
||||
* @param bool $bWithRemoteUserData = false
|
||||
* @param bool $bRemoveWWW = true
|
||||
* @param bool $bWithoutWWW = true
|
||||
* @param bool $bWithoutPort = false
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function GetHost($bWithRemoteUserData = false, $bRemoveWWW = true)
|
||||
public function GetHost($bWithRemoteUserData = false, $bWithoutWWW = true, $bWithoutPort = false)
|
||||
{
|
||||
$sHost = $this->GetServer('HTTP_HOST', '');
|
||||
if (0 === \strlen($sHost))
|
||||
|
@ -307,7 +308,7 @@ class Http
|
|||
? $sName : $sName.':'.$iPort;
|
||||
}
|
||||
|
||||
if ($bRemoveWWW)
|
||||
if ($bWithoutWWW)
|
||||
{
|
||||
$sHost = 'www.' === \substr(\strtolower($sHost), 0, 4) ? \substr($sHost, 4) : $sHost;
|
||||
}
|
||||
|
@ -318,6 +319,11 @@ class Http
|
|||
$sHost = (0 < \strlen($sUser) ? $sUser.'@' : '').$sHost;
|
||||
}
|
||||
|
||||
if ($bWithoutPort)
|
||||
{
|
||||
$sHost = \preg_replace('/:[\d]+$/', '', $sHost);
|
||||
}
|
||||
|
||||
return $sHost;
|
||||
}
|
||||
|
||||
|
|
|
@ -930,14 +930,35 @@ class Actions
|
|||
$oAccount = $this->getAccountFromToken(false);
|
||||
if ($oAccount instanceof \RainLoop\Account)
|
||||
{
|
||||
$oPab = $this->PersonalAddressBookProvider($oAccount);
|
||||
|
||||
|
||||
$aResult['Auth'] = true;
|
||||
$aResult['Email'] = $oAccount->Email();
|
||||
$aResult['IncLogin'] = $oAccount->IncLogin();
|
||||
$aResult['OutLogin'] = $oAccount->OutLogin();
|
||||
$aResult['AccountHash'] = $oAccount->Hash();
|
||||
$aResult['ChangePasswordIsAllowed'] = $this->ChangePasswordProvider()->PasswordChangePossibility($oAccount);
|
||||
$aResult['ContactsIsAllowed'] = $this->PersonalAddressBookProvider($oAccount)->IsActive();
|
||||
$aResult['ContactsSharingIsAllowed'] = $this->PersonalAddressBookProvider($oAccount)->IsSharingAllowed();
|
||||
$aResult['ContactsIsAllowed'] = $oPab->IsActive();
|
||||
$aResult['ContactsSharingIsAllowed'] = $oPab->IsSharingAllowed();
|
||||
|
||||
$aResult['ContactsSyncIsAllowed'] = (bool) $oConfig->Get('contacts', 'allow_sync', false);
|
||||
$aResult['ContactsSyncServer'] = '';
|
||||
$aResult['ContactsSyncUser'] = '';
|
||||
$aResult['ContactsSyncPassword'] = '';
|
||||
$aResult['ContactsSyncPabUrl'] = '';
|
||||
|
||||
if ($aResult['ContactsSyncIsAllowed'])
|
||||
{
|
||||
$aResult['ContactsSyncServer'] = $this->Http()->GetHost(false, true, true);
|
||||
$aResult['ContactsSyncUser'] = $oAccount->ParentEmailHelper();
|
||||
$aResult['ContactsSyncPassword'] = $oPab->GetUserHashByEmail($aResult['ContactsSyncUser'], true);
|
||||
|
||||
$sUrl = \rtrim(\trim($this->Http()->GetScheme().'://'.$this->Http()->GetHost(true, false).$this->Http()->GetPath()), '/\\');
|
||||
$sUrl = \preg_replace('/index\.php(.*)$/i', '', $sUrl);
|
||||
|
||||
$aResult['ContactsSyncPabUrl'] = $sUrl.'/index.php/dav/addressbooks/'.$oAccount->ParentEmailHelper().'/default/';
|
||||
}
|
||||
|
||||
$oSettings = $this->SettingsProvider()->Load($oAccount);
|
||||
}
|
||||
|
|
|
@ -88,6 +88,8 @@ class PdoPersonalAddressBook
|
|||
*/
|
||||
public function GetUserUidByEmail($sEmail)
|
||||
{
|
||||
$this->Sync();
|
||||
|
||||
$iId = $this->getUserId($sEmail);
|
||||
return 0 < $iId ? (string) $iId : '';
|
||||
}
|
||||
|
@ -98,6 +100,8 @@ class PdoPersonalAddressBook
|
|||
*/
|
||||
public function GetCtagByEmail($sEmail)
|
||||
{
|
||||
$this->Sync();
|
||||
|
||||
$sResult = '0';
|
||||
$iUserID = $this->getUserId($sEmail);
|
||||
if (0 < $iUserID)
|
||||
|
@ -126,11 +130,13 @@ class PdoPersonalAddressBook
|
|||
*/
|
||||
public function GetUserHashByEmail($sEmail, $bCreate = false)
|
||||
{
|
||||
$this->Sync();
|
||||
|
||||
$sHash = '';
|
||||
$iUserID = $this->getUserId($sEmail);
|
||||
if (0 < $iUserID)
|
||||
{
|
||||
$oStmt = $this->prepareAndExecute('SELECT pass_hash FROM rainloop_pab_users_hashes WHERE id_user = :id_user LIMIT 1',
|
||||
$oStmt = $this->prepareAndExecute('SELECT pass_hash FROM rainloop_pab_users WHERE id_user = :id_user LIMIT 1',
|
||||
array(':id_user' => array($iUserID, \PDO::PARAM_INT)));
|
||||
|
||||
if ($oStmt)
|
||||
|
@ -142,14 +148,15 @@ class PdoPersonalAddressBook
|
|||
}
|
||||
else if ($bCreate)
|
||||
{
|
||||
$this->prepareAndExecute('INSERT INTO rainloop_pab_users_hashes (id_user, pass_hash) VALUES (:id_user, :pass_hash);',
|
||||
$this->prepareAndExecute('INSERT INTO rainloop_pab_users (id_user, email, pass_hash) VALUES (:id_user, :email, :pass_hash);',
|
||||
array(
|
||||
':id_user' => array($iUserID, \PDO::PARAM_INT),
|
||||
':email' => array($sEmail, \PDO::PARAM_STR),
|
||||
':pass_hash' => array(\md5($sEmail.\microtime(true)), \PDO::PARAM_STR)
|
||||
)
|
||||
);
|
||||
|
||||
$this->GetUserHashByEmail($sEmail, false);
|
||||
$sHash = $this->GetUserHashByEmail($sEmail, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -305,6 +312,7 @@ class PdoPersonalAddressBook
|
|||
*/
|
||||
public function DeleteContacts($sEmail, $aContactIds)
|
||||
{
|
||||
$this->Sync();
|
||||
$iUserID = $this->getUserId($sEmail);
|
||||
|
||||
$aContactIds = \array_filter($aContactIds, function (&$mItem) {
|
||||
|
@ -1239,8 +1247,9 @@ SQLITEINITIAL;
|
|||
'ALTER TABLE rainloop_pab_contacts ADD carddav_data MEDIUMTEXT;',
|
||||
'ALTER TABLE rainloop_pab_contacts ADD carddav_hash varchar(128) NOT NULL DEFAULT \'\';',
|
||||
'ALTER TABLE rainloop_pab_contacts ADD carddav_size int UNSIGNED NOT NULL DEFAULT 0;',
|
||||
'CREATE TABLE IF NOT EXISTS rainloop_pab_users_hashes (
|
||||
'CREATE TABLE IF NOT EXISTS rainloop_pab_users (
|
||||
id_user int UNSIGNED NOT NULL,
|
||||
email varchar(128) NOT NULL,
|
||||
pass_hash varchar(128) NOT NULL
|
||||
)/*!40000 ENGINE=INNODB */;'
|
||||
)
|
||||
|
@ -1253,8 +1262,9 @@ SQLITEINITIAL;
|
|||
'ALTER TABLE rainloop_pab_contacts ADD carddav_data TEXT;',
|
||||
'ALTER TABLE rainloop_pab_contacts ADD carddav_hash varchar(128) NOT NULL DEFAULT \'\';',
|
||||
'ALTER TABLE rainloop_pab_contacts ADD carddav_size integer NOT NULL DEFAULT 0;',
|
||||
'CREATE TABLE rainloop_pab_users_hashes (
|
||||
'CREATE TABLE rainloop_pab_users (
|
||||
id_user integer NOT NULL,
|
||||
email varchar(128) NOT NULL,
|
||||
pass_hash varchar(128) NOT NULL
|
||||
);'
|
||||
)
|
||||
|
@ -1267,8 +1277,9 @@ SQLITEINITIAL;
|
|||
'ALTER TABLE rainloop_pab_contacts ADD carddav_data text;',
|
||||
'ALTER TABLE rainloop_pab_contacts ADD carddav_hash text NOT NULL DEFAULT \'\';',
|
||||
'ALTER TABLE rainloop_pab_contacts ADD carddav_size integer NOT NULL DEFAULT 0;',
|
||||
'CREATE TABLE rainloop_pab_users_hashes (
|
||||
'CREATE TABLE rainloop_pab_users (
|
||||
id_user integer NOT NULL,
|
||||
email text NOT NULL,
|
||||
pass_hash text NOT NULL
|
||||
);'
|
||||
)
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal" data-bind="visible: contactsSupported">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
Contacts
|
||||
</div>
|
||||
|
@ -23,12 +22,15 @@
|
|||
<i data-bind="css: contactsSharing() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow contacts sharing
|
||||
</label>
|
||||
<br />
|
||||
<label data-bind="click: function () { contactsSync(!contactsSync()); }">
|
||||
<i data-bind="css: contactsSync() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
Allow contacts sync (CardDAV)
|
||||
</label>
|
||||
<a href="http://rainloop.net/docs/carddav/" target="_blank">read about web server configuration</a>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
Type
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="b-settings-accounts">
|
||||
<div class="b-settings-accounts g-ui-user-select-none">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_ACCOUNTS/LEGEND_ACCOUNTS"></span>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="b-settings-general">
|
||||
<div class="b-settings-general g-ui-user-select-none">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LEGEND_CHANGE_PASSWORD"></span>
|
||||
|
|
66
rainloop/v/0.0.0/app/templates/Views/SettingsContacts.html
Normal file
66
rainloop/v/0.0.0/app/templates/Views/SettingsContacts.html
Normal file
|
@ -0,0 +1,66 @@
|
|||
<div class="b-settings-contacts">
|
||||
<div class="form-horizontal g-ui-user-select-none">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LEGEND_CONTACTS"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { contactsAutosave(!contactsAutosave()); }">
|
||||
<i data-bind="css: contactsAutosave() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LABEL_CONTACTS_AUTOSAVE"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal" data-bind="visible: allowContactsSync">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LEGEND_MOBILE_SYNC"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" style="padding-top: 0;">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LABEL_SYNC_SERVER"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<strong data-bind="text: contactsSyncServer"></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" style="padding-top: 0;">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LABEL_SYNC_USERNAME"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<strong data-bind="text: contactsSyncUser"></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" style="padding-top: 0;">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LABEL_SYNC_PASSWORD"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<div data-bind="visible: showPassword">
|
||||
<strong style="color:red" data-bind="text: contactsSyncPass"></strong>
|
||||
</div>
|
||||
<span class="g-ui-link i18n" data-bind="visible: !showPassword(), click: toggleShowPassword"
|
||||
data-i18n-text="SETTINGS_CONTACTS/LINK_SHOW"></span>
|
||||
<span class="g-ui-link i18n" data-bind="visible: showPassword, click: toggleShowPassword"
|
||||
data-i18n-text="SETTINGS_CONTACTS/LINK_HIDE"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<div class="alert alert-info span8" style="margin-left: 0">
|
||||
<p>
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/DESC_FULL_PAB_URL"></span>
|
||||
</p>
|
||||
<p>
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CONTACTS/LABEL_DESC_PAB"></span>:
|
||||
<br />
|
||||
<a href="javascript:void(0);" target="_blank" data-bind="text: contactsSyncPabUrl, attr: {'href': contactsSyncPabUrl}"></a>
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,4 +1,4 @@
|
|||
<div class="b-settings-folders" data-bind="css: { 'ignore-folder-subscribe': !useImapSubscribe }">
|
||||
<div class="b-settings-folders g-ui-user-select-none" data-bind="css: { 'ignore-folder-subscribe': !useImapSubscribe }">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_FOLDERS/LEGEND_FOLDERS"></span>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="b-settings-general">
|
||||
<div class="b-settings-general g-ui-user-select-none">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LEGEND_GENERAL"></span>
|
||||
|
@ -64,20 +64,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal" data-bind="visible: allowContacts">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LEGEND_CONTACTS"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<label data-bind="click: function () { contactsAutosave(!contactsAutosave()); }">
|
||||
<i data-bind="css: contactsAutosave() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_CONTACTS_AUTOSAVE"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_VIEW_OPTIONS"></span>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="b-settings-identities">
|
||||
<div class="b-settings-identities g-ui-user-select-none">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_IDENTITIES/LEGEND_IDENTITY"></span>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="b-settings b-settins-right g-ui-user-select-none">
|
||||
<div class="b-settings b-settins-right">
|
||||
<div class="b-toolbar">
|
||||
<div class="btn-toolbar">
|
||||
<a class="btn button-back" data-bind="click: backToMailBoxClick">
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="b-settings-social">
|
||||
<div class="b-settings-social g-ui-user-select-none">
|
||||
<div class="form-horizontal" data-bind="visible: googleEnable">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_SOCIAL/LEGEND_GOOGLE"></span>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="b-settings-themes">
|
||||
<div class="b-settings-themes g-ui-user-select-none">
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_THEMES/LEGEND_THEMES"></span>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<div class="b-system-drop-down g-ui-user-select-none">
|
||||
<div class="b-toolbar">
|
||||
<div class="btn-toolbar">
|
||||
<div class="btn-group pull-right">
|
||||
<!-- <div class="btn-group pull-right">
|
||||
<a class="btn btn-narrow" data-bind="click: logoutClick">
|
||||
<i class="icon-power"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btn-group pull-right">
|
||||
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-ellipsis btn-block dropdown-toggle system-dropdown" data-placement="left" data-toggle="dropdown"
|
||||
data-tooltip-class="tooltip-big" data-bind="tooltip2: emailTitle">
|
||||
|
@ -46,7 +46,7 @@
|
|||
<span class="i18n" data-i18n-text="TOP_TOOLBAR/BUTTON_SETTINGS"></span>
|
||||
</a>
|
||||
</li>
|
||||
<!--
|
||||
|
||||
<li class="divider"></li>
|
||||
<li class="e-item">
|
||||
<a class="e-link" data-bind="click: logoutClick">
|
||||
|
@ -55,7 +55,7 @@
|
|||
<span class="i18n" data-i18n-text="TOP_TOOLBAR/BUTTON_LOGOUT"></span>
|
||||
</a>
|
||||
</li>
|
||||
-->
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Alle Textformatierungen und Grafiken gehen verloren. Wo
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Persönlich"
|
||||
LABEL_GENERAL_NAME = "Allgemein"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Ordner"
|
||||
LABEL_ACCOUNTS_NAME = "Konten"
|
||||
LABEL_IDENTITY_NAME = "Identity"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Signatur"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Allgemein"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Sprache"
|
||||
LABEL_EDITOR = "Standard-Text-Editor"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "HTML"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "Nachrichten pro Seite"
|
|||
LABEL_CHROME_NOTIFICATION = "Benachrichtigungen"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Popups einblenden, wenn neue Nachrichten vorhanden sind"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Vom Browser blockiert.)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Text formatting and images will be lost. Are you sure y
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Personal"
|
||||
LABEL_GENERAL_NAME = "General"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Folders"
|
||||
LABEL_ACCOUNTS_NAME = "Accounts"
|
||||
LABEL_IDENTITY_NAME = "Identity"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Signature"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "General"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Language"
|
||||
LABEL_EDITOR = "Default text editor"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "messages on page"
|
|||
LABEL_CHROME_NOTIFICATION = "Notifications"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Show new messages notification popups"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Blocked by the browser)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Se perderá el formato de texto e imágenes. ¿Está se
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Personal"
|
||||
LABEL_GENERAL_NAME = "General"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Carpetas"
|
||||
LABEL_ACCOUNTS_NAME = "Cuentas"
|
||||
LABEL_IDENTITY_NAME = "Identity"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Firma"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "General"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Idioma"
|
||||
LABEL_EDITOR = "Editor de texto predeterminado"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "mensajes en página"
|
|||
LABEL_CHROME_NOTIFICATION = "Notificaciones"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Mostrar notificación de nuevos mensajes en Popup"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Bloqueado por el explorador)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Le formatage du texte et les images seront perdues. Ete
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Personnel"
|
||||
LABEL_GENERAL_NAME = "Général"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Dossiers"
|
||||
LABEL_ACCOUNTS_NAME = "Comptes"
|
||||
LABEL_IDENTITY_NAME = "Identité"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Signature"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Général"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Langue"
|
||||
LABEL_EDITOR = "Éditeur de texte par défaut"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "messages par page"
|
|||
LABEL_CHROME_NOTIFICATION = "Notifications"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Afficher un pop-up de notification pour les nouveaux messages"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Bloqué par le navigateur)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Ajouter automatiquement les destinataires de votre carnet d'adresses"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Texta forsnið og myndir munu týnast. Ertu viss um að
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Persónulegt"
|
||||
LABEL_GENERAL_NAME = "Almennt"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Möppur"
|
||||
LABEL_ACCOUNTS_NAME = "Aðgangar"
|
||||
LABEL_IDENTITY_NAME = "Identity"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Undirskrift"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Almennt"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Tungumál"
|
||||
LABEL_EDITOR = "Sjálfgefinn textaritill"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "bréf á síðu"
|
|||
LABEL_CHROME_NOTIFICATION = "Tilkynningar"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Sýna tilkynningarglugga fyrir ný bréf"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Lokað af vafra)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -266,6 +266,7 @@ TEXT_SWITCHER_CONFIRM = "본문 형식과 이미지가 삭제됩니다. 정말
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "개인"
|
||||
LABEL_GENERAL_NAME = "일반"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "메일함"
|
||||
LABEL_ACCOUNTS_NAME = "계정"
|
||||
LABEL_IDENTITY_NAME = "신원"
|
||||
|
@ -283,7 +284,6 @@ LABEL_SIGNATURE = "서명"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "일반"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "언어"
|
||||
LABEL_EDITOR = "기본 본문 편집 도구"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html 편집기"
|
||||
|
@ -303,6 +303,17 @@ LABEL_MESSAGE_PER_PAGE = "페이지 당 메시지 수"
|
|||
LABEL_CHROME_NOTIFICATION = "알림"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "새 메시지 알림 팝업 사용"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(브라우저에 의해 차단됨)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Bildes un teksta noformējums pazudīs. Vai tiešām tu
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Personīgie"
|
||||
LABEL_GENERAL_NAME = "Vispārējie"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Mapes"
|
||||
LABEL_ACCOUNTS_NAME = "Konti"
|
||||
LABEL_IDENTITY_NAME = "Identity"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Paraksts"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Vispārējie"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Valoda"
|
||||
LABEL_EDITOR = "Galvenais teksta editors"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "ziņojumi lapā"
|
|||
LABEL_CHROME_NOTIFICATION = "Paziņojumi"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Rādīt jaunus paziņojumus kā izlecošus logus"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Parlūkprogramma bloķēja)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Tekst opmaak en formattering zal verloren gaan. Wenst u
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Persoonlijk"
|
||||
LABEL_GENERAL_NAME = "Algemeen"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Mappen"
|
||||
LABEL_ACCOUNTS_NAME = "Accounts"
|
||||
LABEL_IDENTITY_NAME = "Identity"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Handtekening"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Algemeen"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Taal"
|
||||
LABEL_EDITOR = "Standaard tekst editor"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "berichten op pagina"
|
|||
LABEL_CHROME_NOTIFICATION = "Notificaties"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Toon nieuwe berichten popup"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Geblokkeerd door de browser)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Tekst formatering og bilder vil bli tapt . Er du sikker
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Personlig"
|
||||
LABEL_GENERAL_NAME = "Generelt"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Mapper"
|
||||
LABEL_ACCOUNTS_NAME = "Kontoer"
|
||||
LABEL_IDENTITY_NAME = "Identitet"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Signatur"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Generelt"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Språk"
|
||||
LABEL_EDITOR = "Standard teksteditor"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "meldinger på side"
|
|||
LABEL_CHROME_NOTIFICATION = "Varsler"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Vis nye meldinger varslings popups"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "( Blokkert av nettleseren )"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Formatowanie tekstu oraz wszystkie wstawione obrazy zos
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Osobiste"
|
||||
LABEL_GENERAL_NAME = "Ogólne"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Foldery"
|
||||
LABEL_ACCOUNTS_NAME = "Konta"
|
||||
LABEL_IDENTITY_NAME = "Identity"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Sygnatura"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Ogólne"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Język"
|
||||
LABEL_EDITOR = "Domyślny edytor tekstu"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "wiadomości na stronie"
|
|||
LABEL_CHROME_NOTIFICATION = "Powiadomienia"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Wyświetlaj powiadomienia o nowych wiadomościach"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Zablokowane przez przeglądarkę)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "A formatação de texto e as imagens serão perdidas. T
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Pessoal"
|
||||
LABEL_GENERAL_NAME = "Geral"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Pastas"
|
||||
LABEL_ACCOUNTS_NAME = "Contas"
|
||||
LABEL_IDENTITY_NAME = "Identity"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Assinatura"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Geral"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Linguagem"
|
||||
LABEL_EDITOR = "Editor de texto padrão"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "Página de mensagens"
|
|||
LABEL_CHROME_NOTIFICATION = "Notificações"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Mostrar as novas mensagens de notificação"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Bloqueado pelo navegador)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "A formatação de texto e as imagens serão perdidas. T
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Pessoal"
|
||||
LABEL_GENERAL_NAME = "Geral"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "Pastas"
|
||||
LABEL_ACCOUNTS_NAME = "Contas"
|
||||
LABEL_IDENTITY_NAME = "Identity"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Assinatura"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Geral"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "Linguagem"
|
||||
LABEL_EDITOR = "Editor de texto padrão"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "Página de mensagens"
|
|||
LABEL_CHROME_NOTIFICATION = "Notificações"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Mostrar as novas mensagens de notificação"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Bloqueado pelo navegador)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "Форматирование текста и изобр
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "Персональные"
|
||||
LABEL_GENERAL_NAME = "Основные"
|
||||
LABEL_CONTACTS_NAME = "Контакты"
|
||||
LABEL_FOLDERS_NAME = "Папки"
|
||||
LABEL_ACCOUNTS_NAME = "Аккаунты"
|
||||
LABEL_IDENTITY_NAME = "Профиль"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "Подпись"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Основные Настройки"
|
||||
LEGEND_CONTACTS = "Контакты"
|
||||
LABEL_LANGUAGE = "Язык"
|
||||
LABEL_EDITOR = "Редактор текста по умолчанию"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Форматированный"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "сообщений на одной странице"
|
|||
LABEL_CHROME_NOTIFICATION = "Уведомления"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "Показывать уведомления о новых сообщениях в всплывающих подсказках"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Блокировано браузером)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Контакты"
|
||||
LEGEND_MOBILE_SYNC = "Мобильная Синхронизация"
|
||||
LABEL_SYNC_SERVER = "Сервер"
|
||||
LABEL_SYNC_USERNAME = "Пользователь"
|
||||
LABEL_SYNC_PASSWORD = "Пароль"
|
||||
LINK_HIDE = "спрятать"
|
||||
LINK_SHOW = "показать"
|
||||
LABEL_DESC_PAB = "Персональная адресная книга"
|
||||
DESC_FULL_PAB_URL = "Если вашему приложению (например как Mozilla Thunderbird (SOGo Connector Thunderbird extension) или Evolution) необходим полный путь к CardDAV адресной книге, используйте URL ниже."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Автоматически добавлять получателей писем в адресную книгу"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -269,6 +269,7 @@ TEXT_SWITCHER_CONFIRM = "文件格式及图片将丢失,您确定继续这么
|
|||
[SETTINGS_LABELS]
|
||||
LABEL_PERSONAL_NAME = "个人"
|
||||
LABEL_GENERAL_NAME = "一般设置"
|
||||
LABEL_CONTACTS_NAME = "Contacts"
|
||||
LABEL_FOLDERS_NAME = "文件夹"
|
||||
LABEL_ACCOUNTS_NAME = "账户"
|
||||
LABEL_IDENTITY_NAME = "签名"
|
||||
|
@ -286,7 +287,6 @@ LABEL_SIGNATURE = "签名"
|
|||
|
||||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "一般设置"
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LABEL_LANGUAGE = "语言"
|
||||
LABEL_EDITOR = "默认格式"
|
||||
LABEL_EDITOR_HTML_AS_DEFAULT = "Html"
|
||||
|
@ -306,6 +306,17 @@ LABEL_MESSAGE_PER_PAGE = "封邮件每页"
|
|||
LABEL_CHROME_NOTIFICATION = "通知"
|
||||
LABEL_CHROME_NOTIFICATION_DESC = "显示新邮件弹窗"
|
||||
LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(被浏览器阻止)"
|
||||
|
||||
[SETTINGS_CONTACTS]
|
||||
LEGEND_CONTACTS = "Contacts"
|
||||
LEGEND_MOBILE_SYNC = "Mobile Sync"
|
||||
LABEL_SYNC_SERVER = "Server"
|
||||
LABEL_SYNC_USERNAME = "User Name"
|
||||
LABEL_SYNC_PASSWORD = "Password"
|
||||
LINK_HIDE = "hide"
|
||||
LINK_SHOW = "show"
|
||||
LABEL_DESC_PAB = "Pesonal Address Book"
|
||||
DESC_FULL_PAB_URL = "If your application (such as Mozilla Thunderbird (SOGo Connector Thunderbird extension) or Evolution) requires the full path to the CardDAV address book, use the URL below."
|
||||
LABEL_CONTACTS_AUTOSAVE = "Automatically add recipients to your address book"
|
||||
|
||||
[SETTINGS_THEMES]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*! RainLoop Webmail Admin Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
|
||||
(function (window, $, ko, crossroads, hasher, _) {
|
||||
/*! RainLoop Webmail Admin Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
|
||||
(function (window, $, ko, crossroads, hasher, _) {
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -70,14 +70,14 @@ var
|
|||
$document = $(window.document),
|
||||
|
||||
NotificationClass = window.Notification && window.Notification.requestPermission ? window.Notification : null
|
||||
;
|
||||
;
|
||||
/*jshint onevar: false*/
|
||||
/**
|
||||
* @type {?AdminApp}
|
||||
*/
|
||||
var RL = null;
|
||||
/*jshint onevar: true*/
|
||||
|
||||
|
||||
/**
|
||||
* @type {?}
|
||||
*/
|
||||
|
@ -138,7 +138,7 @@ Globals.bDisableNanoScroll = Globals.bMobileDevice;
|
|||
Globals.bAnimationSupported = !Globals.bMobileDevice && $html.hasClass('csstransitions');
|
||||
|
||||
Globals.sAnimationType = '';
|
||||
|
||||
|
||||
Consts.Defaults = {};
|
||||
Consts.Values = {};
|
||||
Consts.DataImages = {};
|
||||
|
@ -256,7 +256,7 @@ Consts.DataImages.UserDotPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA
|
|||
* @type {string}
|
||||
*/
|
||||
Consts.DataImages.TranspPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=';
|
||||
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
|
@ -590,7 +590,7 @@ Enums.Notification = {
|
|||
'UnknownNotification': 999,
|
||||
'UnknownError': 999
|
||||
};
|
||||
|
||||
|
||||
Utils.trim = $.trim;
|
||||
Utils.inArray = $.inArray;
|
||||
Utils.isArray = _.isArray;
|
||||
|
@ -2099,7 +2099,7 @@ Utils.computedPagenatorHelper = function (koCurrentPage, koPageCount)
|
|||
return aResult;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
// Base64 encode / decode
|
||||
// http://www.webtoolkit.info/
|
||||
|
||||
|
@ -2262,7 +2262,7 @@ Base64 = {
|
|||
}
|
||||
};
|
||||
|
||||
/*jslint bitwise: false*/
|
||||
/*jslint bitwise: false*/
|
||||
ko.bindingHandlers.tooltip = {
|
||||
'init': function (oElement, fValueAccessor) {
|
||||
if (!Globals.bMobileDevice)
|
||||
|
@ -2889,7 +2889,7 @@ ko.observable.fn.validateFunc = function (fFunc)
|
|||
return this;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -3162,7 +3162,7 @@ LinkBuilder.prototype.socialFacebook = function ()
|
|||
{
|
||||
return this.sServer + 'SocialFacebook' + ('' !== this.sSpecSuffix ? '/' + this.sSpecSuffix + '/' : '');
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @type {Object}
|
||||
*/
|
||||
|
@ -3256,7 +3256,7 @@ Plugins.settingsGet = function (sPluginSection, sName)
|
|||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -3330,7 +3330,7 @@ CookieDriver.prototype.get = function (sKey)
|
|||
|
||||
return mResult;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -3402,7 +3402,7 @@ LocalStorageDriver.prototype.get = function (sKey)
|
|||
|
||||
return mResult;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -3445,7 +3445,7 @@ LocalStorage.prototype.get = function (iKey)
|
|||
{
|
||||
return this.oDriver ? this.oDriver.get('p' + iKey) : null;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -3458,7 +3458,7 @@ KnoinAbstractBoot.prototype.bootstart = function ()
|
|||
{
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {string=} sPosition = ''
|
||||
* @param {string=} sTemplate = ''
|
||||
|
@ -3518,7 +3518,7 @@ KnoinAbstractViewModel.prototype.viewModelPosition = function ()
|
|||
KnoinAbstractViewModel.prototype.cancelCommand = KnoinAbstractViewModel.prototype.closeCommand = function ()
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {string} sScreenName
|
||||
* @param {?=} aViewModels = []
|
||||
|
@ -3594,7 +3594,7 @@ KnoinAbstractScreen.prototype.__start = function ()
|
|||
this.oCross = oRoute;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -3982,7 +3982,7 @@ Knoin.prototype.bootstart = function ()
|
|||
};
|
||||
|
||||
kn = new Knoin();
|
||||
|
||||
|
||||
/**
|
||||
* @param {string=} sEmail
|
||||
* @param {string=} sName
|
||||
|
@ -4346,7 +4346,7 @@ EmailModel.prototype.inputoTagLine = function ()
|
|||
{
|
||||
return 0 < this.name.length ? this.name + ' (' + this.email + ')' : this.email;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -4566,7 +4566,7 @@ PopupsDomainViewModel.prototype.clearForm = function ()
|
|||
this.smtpAuth(true);
|
||||
this.whiteList('');
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -4703,7 +4703,7 @@ PopupsPluginViewModel.prototype.onBuild = function ()
|
|||
return bResult;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -4813,7 +4813,7 @@ PopupsActivateViewModel.prototype.validateSubscriptionKey = function ()
|
|||
{
|
||||
var sValue = this.key();
|
||||
return '' === sValue || !!/^RL[\d]+-[A-Z0-9\-]+Z$/.test(Utils.trim(sValue));
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -4887,7 +4887,7 @@ PopupsLanguagesViewModel.prototype.changeLanguage = function (sLang)
|
|||
RL.data().mainLanguage(sLang);
|
||||
this.cancelCommand();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -5002,7 +5002,7 @@ PopupsAskViewModel.prototype.onBuild = function ()
|
|||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -5089,7 +5089,7 @@ AdminLoginViewModel.prototype.onHide = function ()
|
|||
{
|
||||
this.loginFocus(false);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {?} oScreen
|
||||
*
|
||||
|
@ -5111,7 +5111,7 @@ AdminMenuViewModel.prototype.link = function (sRoute)
|
|||
{
|
||||
return '#/' + sRoute;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -5133,7 +5133,7 @@ AdminPaneViewModel.prototype.logoutClick = function ()
|
|||
RL.remote().adminLogout(function () {
|
||||
RL.loginAndLogoutReload();
|
||||
});
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -5252,7 +5252,7 @@ AdminGeneral.prototype.selectLanguage = function ()
|
|||
{
|
||||
kn.showScreenPopup(PopupsLanguagesViewModel);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -5304,7 +5304,7 @@ AdminLogin.prototype.onBuild = function ()
|
|||
|
||||
}, 50);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -5524,7 +5524,7 @@ AdminContacts.prototype.onBuild = function ()
|
|||
|
||||
}, 50);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -5613,7 +5613,7 @@ AdminDomains.prototype.onDomainListChangeRequest = function ()
|
|||
{
|
||||
RL.reloadDomainList();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -5694,7 +5694,7 @@ AdminSecurity.prototype.phpInfoLink = function ()
|
|||
{
|
||||
return RL.link().phpInfo();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -5810,7 +5810,7 @@ AdminSocial.prototype.onBuild = function ()
|
|||
|
||||
}, 50);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -5907,7 +5907,7 @@ AdminPlugins.prototype.onPluginDisableRequest = function (sResult, oData)
|
|||
|
||||
RL.reloadPluginList();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -6011,7 +6011,7 @@ AdminPackages.prototype.installPackage = function (oPackage)
|
|||
RL.remote().packageInstall(this.requestHelper(oPackage, true), oPackage);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -6062,7 +6062,7 @@ AdminLicensing.prototype.licenseExpiredMomentValue = function ()
|
|||
{
|
||||
var oDate = moment.unix(this.licenseExpired());
|
||||
return oDate.format('LL') + ' (' + oDate.from(moment()) + ')';
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -6131,7 +6131,7 @@ AbstractData.prototype.populateDataOnStart = function()
|
|||
|
||||
this.contactsIsAllowed(!!RL.settingsGet('ContactsIsAllowed'));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractData
|
||||
|
@ -6165,7 +6165,7 @@ _.extend(AdminDataStorage.prototype, AbstractData.prototype);
|
|||
AdminDataStorage.prototype.populateDataOnStart = function()
|
||||
{
|
||||
AbstractData.prototype.populateDataOnStart.call(this);
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -6439,7 +6439,7 @@ AbstractAjaxRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
|
|||
'Version': sVersion
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractAjaxRemoteStorage
|
||||
|
@ -6683,7 +6683,7 @@ AdminAjaxRemoteStorage.prototype.adminPing = function (fCallback)
|
|||
{
|
||||
this.defaultRequest(fCallback, 'AdminPing');
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -6749,7 +6749,7 @@ AbstractCacheStorage.prototype.setEmailsPicsHashesData = function (oData)
|
|||
{
|
||||
this.oEmailsPicsHashes = oData;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractCacheStorage
|
||||
|
@ -6760,7 +6760,7 @@ function AdminCacheStorage()
|
|||
}
|
||||
|
||||
_.extend(AdminCacheStorage.prototype, AbstractCacheStorage.prototype);
|
||||
|
||||
|
||||
/**
|
||||
* @param {Array} aViewModels
|
||||
* @constructor
|
||||
|
@ -6937,7 +6937,7 @@ AbstractSettings.prototype.routes = function ()
|
|||
['', oRules]
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractScreen
|
||||
|
@ -6952,7 +6952,7 @@ _.extend(AdminLoginScreen.prototype, KnoinAbstractScreen.prototype);
|
|||
AdminLoginScreen.prototype.onShow = function ()
|
||||
{
|
||||
RL.setTitle('');
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractSettings
|
||||
|
@ -6972,7 +6972,7 @@ AdminSettingsScreen.prototype.onShow = function ()
|
|||
// AbstractSettings.prototype.onShow.call(this);
|
||||
|
||||
RL.setTitle('');
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractBoot
|
||||
|
@ -7119,7 +7119,7 @@ AbstractApp.prototype.settingsSet = function (sName, mValue)
|
|||
|
||||
AbstractApp.prototype.setTitle = function (sTitle)
|
||||
{
|
||||
sTitle = ((0 < sTitle.length) ? sTitle + ' - ' : '') +
|
||||
sTitle = ((Utils.isNormal(sTitle) && 0 < sTitle.length) ? sTitle + ' - ' : '') +
|
||||
RL.settingsGet('Title') || '';
|
||||
|
||||
window.document.title = '_';
|
||||
|
@ -7234,7 +7234,7 @@ AbstractApp.prototype.bootstart = function ()
|
|||
Utils.windowResize();
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractApp
|
||||
|
@ -7481,7 +7481,7 @@ AdminApp.prototype.bootstart = function ()
|
|||
* @type {AdminApp}
|
||||
*/
|
||||
RL = new AdminApp();
|
||||
|
||||
|
||||
$html.addClass(Globals.bMobileDevice ? 'mobile' : 'no-mobile');
|
||||
|
||||
$window.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
|
||||
|
@ -7529,9 +7529,9 @@ window['__RLBOOT'] = function (fCall) {
|
|||
window['__RLBOOT'] = null;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
if (window.SimplePace) {
|
||||
window.SimplePace.add(10);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}(window, jQuery, ko, crossroads, hasher, _));
|
2
rainloop/v/0.0.0/static/js/admin.min.js
vendored
2
rainloop/v/0.0.0/static/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
|||
/*! RainLoop Webmail Main Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
|
||||
(function (window, $, ko, crossroads, hasher, moment, Jua, _) {
|
||||
/*! RainLoop Webmail Main Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
|
||||
(function (window, $, ko, crossroads, hasher, moment, Jua, _) {
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -70,14 +70,14 @@ var
|
|||
$document = $(window.document),
|
||||
|
||||
NotificationClass = window.Notification && window.Notification.requestPermission ? window.Notification : null
|
||||
;
|
||||
;
|
||||
/*jshint onevar: false*/
|
||||
/**
|
||||
* @type {?RainLoopApp}
|
||||
*/
|
||||
var RL = null;
|
||||
/*jshint onevar: true*/
|
||||
|
||||
|
||||
/**
|
||||
* @type {?}
|
||||
*/
|
||||
|
@ -138,7 +138,7 @@ Globals.bDisableNanoScroll = Globals.bMobileDevice;
|
|||
Globals.bAnimationSupported = !Globals.bMobileDevice && $html.hasClass('csstransitions');
|
||||
|
||||
Globals.sAnimationType = '';
|
||||
|
||||
|
||||
Consts.Defaults = {};
|
||||
Consts.Values = {};
|
||||
Consts.DataImages = {};
|
||||
|
@ -256,7 +256,7 @@ Consts.DataImages.UserDotPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA
|
|||
* @type {string}
|
||||
*/
|
||||
Consts.DataImages.TranspPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=';
|
||||
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
|
@ -590,7 +590,7 @@ Enums.Notification = {
|
|||
'UnknownNotification': 999,
|
||||
'UnknownError': 999
|
||||
};
|
||||
|
||||
|
||||
Utils.trim = $.trim;
|
||||
Utils.inArray = $.inArray;
|
||||
Utils.isArray = _.isArray;
|
||||
|
@ -2099,7 +2099,7 @@ Utils.computedPagenatorHelper = function (koCurrentPage, koPageCount)
|
|||
return aResult;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
// Base64 encode / decode
|
||||
// http://www.webtoolkit.info/
|
||||
|
||||
|
@ -2262,7 +2262,7 @@ Base64 = {
|
|||
}
|
||||
};
|
||||
|
||||
/*jslint bitwise: false*/
|
||||
/*jslint bitwise: false*/
|
||||
ko.bindingHandlers.tooltip = {
|
||||
'init': function (oElement, fValueAccessor) {
|
||||
if (!Globals.bMobileDevice)
|
||||
|
@ -2889,7 +2889,7 @@ ko.observable.fn.validateFunc = function (fFunc)
|
|||
return this;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -3162,7 +3162,7 @@ LinkBuilder.prototype.socialFacebook = function ()
|
|||
{
|
||||
return this.sServer + 'SocialFacebook' + ('' !== this.sSpecSuffix ? '/' + this.sSpecSuffix + '/' : '');
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @type {Object}
|
||||
*/
|
||||
|
@ -3256,7 +3256,7 @@ Plugins.settingsGet = function (sPluginSection, sName)
|
|||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -4152,7 +4152,7 @@ HtmlEditor.htmlFunctions = {
|
|||
}, this), this.toolbar);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {koProperty} oKoList
|
||||
|
@ -4686,7 +4686,7 @@ Selector.prototype.on = function (sEventName, fCallback)
|
|||
{
|
||||
this.oCallbacks[sEventName] = fCallback;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -4760,7 +4760,7 @@ CookieDriver.prototype.get = function (sKey)
|
|||
|
||||
return mResult;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -4832,7 +4832,7 @@ LocalStorageDriver.prototype.get = function (sKey)
|
|||
|
||||
return mResult;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -4875,7 +4875,7 @@ LocalStorage.prototype.get = function (iKey)
|
|||
{
|
||||
return this.oDriver ? this.oDriver.get('p' + iKey) : null;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -4888,7 +4888,7 @@ KnoinAbstractBoot.prototype.bootstart = function ()
|
|||
{
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {string=} sPosition = ''
|
||||
* @param {string=} sTemplate = ''
|
||||
|
@ -4948,7 +4948,7 @@ KnoinAbstractViewModel.prototype.viewModelPosition = function ()
|
|||
KnoinAbstractViewModel.prototype.cancelCommand = KnoinAbstractViewModel.prototype.closeCommand = function ()
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {string} sScreenName
|
||||
* @param {?=} aViewModels = []
|
||||
|
@ -5024,7 +5024,7 @@ KnoinAbstractScreen.prototype.__start = function ()
|
|||
this.oCross = oRoute;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -5412,7 +5412,7 @@ Knoin.prototype.bootstart = function ()
|
|||
};
|
||||
|
||||
kn = new Knoin();
|
||||
|
||||
|
||||
/**
|
||||
* @param {string=} sEmail
|
||||
* @param {string=} sName
|
||||
|
@ -5776,7 +5776,7 @@ EmailModel.prototype.inputoTagLine = function ()
|
|||
{
|
||||
return 0 < this.name.length ? this.name + ' (' + this.email + ')' : this.email;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -5898,7 +5898,7 @@ ContactModel.prototype.lineAsCcc = function ()
|
|||
|
||||
return aResult.join(' ');
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {number=} iType = Enums.ContactPropertyType.Unknown
|
||||
* @param {string=} sValue = ''
|
||||
|
@ -5920,7 +5920,7 @@ function ContactPropertyModel(iType, sValue, bFocused, sPlaceholder)
|
|||
return sPlaceholder ? Utils.i18n(sPlaceholder) : '';
|
||||
}, this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -6147,7 +6147,7 @@ AttachmentModel.prototype.iconClass = function ()
|
|||
|
||||
return sClass;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {string} sId
|
||||
|
@ -6208,7 +6208,7 @@ ComposeAttachmentModel.prototype.initByUploadJson = function (oJsonAttachment)
|
|||
}
|
||||
|
||||
return bResult;
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -7163,7 +7163,7 @@ MessageModel.prototype.showInternalImages = function (bLazy)
|
|||
Utils.windowResize(500);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -7487,7 +7487,7 @@ FolderModel.prototype.printableFullName = function ()
|
|||
{
|
||||
return this.fullName.split(this.delimiter).join(' / ');
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {string} sEmail
|
||||
* @param {boolean=} bCanBeDelete = true
|
||||
|
@ -7508,7 +7508,7 @@ AccountModel.prototype.email = '';
|
|||
AccountModel.prototype.changeAccountLink = function ()
|
||||
{
|
||||
return RL.link().change(this.email);
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @param {string} sId
|
||||
* @param {string} sEmail
|
||||
|
@ -7544,7 +7544,7 @@ IdentityModel.prototype.formattedNameForEmail = function ()
|
|||
var sName = this.name();
|
||||
return '' === sName ? this.email() : '"' + Utils.quoteName(sName) + '" <' + this.email() + '>';
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -7654,7 +7654,7 @@ PopupsFolderClearViewModel.prototype.onBuild = function ()
|
|||
return bResult;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -7774,7 +7774,7 @@ PopupsFolderCreateViewModel.prototype.onBuild = function ()
|
|||
return bResult;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -7893,7 +7893,7 @@ PopupsFolderSystemViewModel.prototype.onBuild = function ()
|
|||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -9298,7 +9298,7 @@ PopupsComposeViewModel.prototype.triggerForResize = function ()
|
|||
this.resizer(!this.resizer());
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -9893,7 +9893,7 @@ PopupsContactsViewModel.prototype.onHide = function ()
|
|||
oItem.checked(false);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -10034,7 +10034,7 @@ PopupsAdvancedSearchViewModel.prototype.onBuild = function ()
|
|||
return bResult;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -10158,7 +10158,7 @@ PopupsAddAccountViewModel.prototype.onBuild = function ()
|
|||
return bResult;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -10317,7 +10317,7 @@ PopupsIdentityViewModel.prototype.onBuild = function ()
|
|||
return bResult;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -10391,7 +10391,7 @@ PopupsLanguagesViewModel.prototype.changeLanguage = function (sLang)
|
|||
RL.data().mainLanguage(sLang);
|
||||
this.cancelCommand();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -10506,7 +10506,7 @@ PopupsAskViewModel.prototype.onBuild = function ()
|
|||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -10776,7 +10776,7 @@ LoginViewModel.prototype.selectLanguage = function ()
|
|||
kn.showScreenPopup(PopupsLanguagesViewModel);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -10843,7 +10843,7 @@ AbstractSystemDropDownViewModel.prototype.logoutClick = function ()
|
|||
|
||||
RL.loginAndLogoutReload(true, RL.settingsGet('ParentEmail') && 0 < RL.settingsGet('ParentEmail').length);
|
||||
});
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractSystemDropDownViewModel
|
||||
|
@ -10855,7 +10855,7 @@ function MailBoxSystemDropDownViewModel()
|
|||
}
|
||||
|
||||
Utils.extendAsViewModel('MailBoxSystemDropDownViewModel', MailBoxSystemDropDownViewModel, AbstractSystemDropDownViewModel);
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractSystemDropDownViewModel
|
||||
|
@ -10867,7 +10867,7 @@ function SettingsSystemDropDownViewModel()
|
|||
}
|
||||
|
||||
Utils.extendAsViewModel('SettingsSystemDropDownViewModel', SettingsSystemDropDownViewModel, AbstractSystemDropDownViewModel);
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -10982,7 +10982,7 @@ MailBoxFolderListViewModel.prototype.contactsClick = function ()
|
|||
kn.showScreenPopup(PopupsContactsViewModel);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -11850,7 +11850,7 @@ MailBoxMessageListViewModel.prototype.initUploaderForAppend = function ()
|
|||
;
|
||||
|
||||
return !!oJua;
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -12189,7 +12189,7 @@ MailBoxMessageViewViewModel.prototype.showImages = function (oMessage)
|
|||
oMessage.showExternalImages(true);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {?} oScreen
|
||||
*
|
||||
|
@ -12216,7 +12216,7 @@ SettingsMenuViewModel.prototype.backToMailBoxClick = function ()
|
|||
{
|
||||
kn.setHash(RL.link().inbox());
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractViewModel
|
||||
|
@ -12239,7 +12239,7 @@ SettingsPaneViewModel.prototype.backToMailBoxClick = function ()
|
|||
{
|
||||
kn.setHash(RL.link().inbox());
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -12252,7 +12252,6 @@ function SettingsGeneral()
|
|||
this.mainMessagesPerPageArray = Consts.Defaults.MessagesPerPageArray;
|
||||
this.editorDefaultType = oData.editorDefaultType;
|
||||
this.showImages = oData.showImages;
|
||||
this.contactsAutosave = oData.contactsAutosave;
|
||||
this.interfaceAnimation = oData.interfaceAnimation;
|
||||
this.useDesktopNotifications = oData.useDesktopNotifications;
|
||||
this.threading = oData.threading;
|
||||
|
@ -12279,7 +12278,6 @@ function SettingsGeneral()
|
|||
this.mppTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
|
||||
|
||||
this.isAnimationSupported = Globals.bAnimationSupported;
|
||||
this.allowContacts = !!RL.settingsGet('ContactsIsAllowed');
|
||||
}
|
||||
|
||||
Utils.addSettingsViewModel(SettingsGeneral, 'SettingsGeneral', 'SETTINGS_LABELS/LABEL_GENERAL_NAME', 'general', true);
|
||||
|
@ -12337,12 +12335,6 @@ SettingsGeneral.prototype.onBuild = function ()
|
|||
});
|
||||
});
|
||||
|
||||
oData.contactsAutosave.subscribe(function (bValue) {
|
||||
RL.remote().saveSettings(Utils.emptyFunction, {
|
||||
'ContactsAutosave': bValue ? '1' : '0'
|
||||
});
|
||||
});
|
||||
|
||||
oData.interfaceAnimation.subscribe(function (sValue) {
|
||||
RL.remote().saveSettings(Utils.emptyFunction, {
|
||||
'InterfaceAnimation': sValue
|
||||
|
@ -12401,7 +12393,45 @@ SettingsGeneral.prototype.selectLanguage = function ()
|
|||
{
|
||||
kn.showScreenPopup(PopupsLanguagesViewModel);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
function SettingsContacts()
|
||||
{
|
||||
var oData = RL.data();
|
||||
|
||||
this.contactsAutosave = oData.contactsAutosave;
|
||||
this.showPassword = ko.observable(false);
|
||||
|
||||
this.allowContactsSync = !!RL.settingsGet('ContactsSyncIsAllowed');
|
||||
this.contactsSyncServer = RL.settingsGet('ContactsSyncServer');
|
||||
this.contactsSyncUser = RL.settingsGet('ContactsSyncUser');
|
||||
this.contactsSyncPass = RL.settingsGet('ContactsSyncPassword');
|
||||
this.contactsSyncPabUrl = RL.settingsGet('ContactsSyncPabUrl');
|
||||
}
|
||||
|
||||
Utils.addSettingsViewModel(SettingsContacts, 'SettingsContacts', 'SETTINGS_LABELS/LABEL_CONTACTS_NAME', 'contacts');
|
||||
|
||||
SettingsContacts.prototype.toggleShowPassword = function ()
|
||||
{
|
||||
this.showPassword(!this.showPassword());
|
||||
};
|
||||
|
||||
SettingsContacts.prototype.onBuild = function ()
|
||||
{
|
||||
RL.data().contactsAutosave.subscribe(function (bValue) {
|
||||
RL.remote().saveSettings(Utils.emptyFunction, {
|
||||
'ContactsAutosave': bValue ? '1' : '0'
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
SettingsContacts.prototype.onShow = function ()
|
||||
{
|
||||
this.showPassword(false);
|
||||
};
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -12467,7 +12497,7 @@ SettingsAccounts.prototype.deleteAccount = function (oAccountToRemove)
|
|||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -12518,7 +12548,7 @@ SettingsIdentity.prototype.onBuild = function ()
|
|||
|
||||
}, 50);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -12639,7 +12669,7 @@ SettingsIdentities.prototype.onBuild = function (oDom)
|
|||
});
|
||||
|
||||
}, 50);
|
||||
};
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -12706,7 +12736,7 @@ function SettingsSocialScreen()
|
|||
}
|
||||
|
||||
Utils.addSettingsViewModel(SettingsSocialScreen, 'SettingsSocial', 'SETTINGS_LABELS/LABEL_SOCIAL_NAME', 'social');
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -12770,7 +12800,7 @@ SettingsChangePasswordScreen.prototype.onChangePasswordResponse = function (sRes
|
|||
this.passwordUpdateError(true);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -12965,7 +12995,7 @@ SettingsFolders.prototype.unSubscribeFolder = function (oFolder)
|
|||
|
||||
oFolder.subScribed(false);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -13182,7 +13212,7 @@ SettingsThemes.prototype.initCustomThemeUploader = function ()
|
|||
return false;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -13251,7 +13281,7 @@ AbstractData.prototype.populateDataOnStart = function()
|
|||
|
||||
this.contactsIsAllowed(!!RL.settingsGet('ContactsIsAllowed'));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractData
|
||||
|
@ -14199,7 +14229,7 @@ WebMailDataStorage.prototype.setMessageList = function (oData, bCached)
|
|||
));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -14473,7 +14503,7 @@ AbstractAjaxRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
|
|||
'Version': sVersion
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractAjaxRemoteStorage
|
||||
|
@ -15151,7 +15181,7 @@ WebMailAjaxRemoteStorage.prototype.socialUsers = function (fCallback)
|
|||
this.defaultRequest(fCallback, 'SocialUsers');
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
*/
|
||||
|
@ -15217,7 +15247,7 @@ AbstractCacheStorage.prototype.setEmailsPicsHashesData = function (oData)
|
|||
{
|
||||
this.oEmailsPicsHashes = oData;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractCacheStorage
|
||||
|
@ -15534,7 +15564,7 @@ WebMailCacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function
|
|||
this.setMessageFlagsToCache(sFolder, sUid, aFlags);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {Array} aViewModels
|
||||
* @constructor
|
||||
|
@ -15711,7 +15741,7 @@ AbstractSettings.prototype.routes = function ()
|
|||
['', oRules]
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractScreen
|
||||
|
@ -15725,8 +15755,8 @@ _.extend(LoginScreen.prototype, KnoinAbstractScreen.prototype);
|
|||
|
||||
LoginScreen.prototype.onShow = function ()
|
||||
{
|
||||
RL.setTitle(Utils.i18n('TITLES/LOGIN'));
|
||||
};
|
||||
RL.setTitle('');
|
||||
};
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractScreen
|
||||
|
@ -15891,7 +15921,7 @@ MailBoxScreen.prototype.routes = function ()
|
|||
[/^([^\/]*)$/, {'normalize_': fNormS}]
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractSettings
|
||||
|
@ -15919,7 +15949,7 @@ SettingsScreen.prototype.onShow = function ()
|
|||
|
||||
RL.setTitle(this.sSettingsTitle);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends KnoinAbstractBoot
|
||||
|
@ -16066,7 +16096,7 @@ AbstractApp.prototype.settingsSet = function (sName, mValue)
|
|||
|
||||
AbstractApp.prototype.setTitle = function (sTitle)
|
||||
{
|
||||
sTitle = ((0 < sTitle.length) ? sTitle + ' - ' : '') +
|
||||
sTitle = ((Utils.isNormal(sTitle) && 0 < sTitle.length) ? sTitle + ' - ' : '') +
|
||||
RL.settingsGet('Title') || '';
|
||||
|
||||
window.document.title = '_';
|
||||
|
@ -16181,7 +16211,7 @@ AbstractApp.prototype.bootstart = function ()
|
|||
Utils.windowResize();
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends AbstractApp
|
||||
|
@ -16901,7 +16931,12 @@ RainLoopApp.prototype.bootstart = function ()
|
|||
{
|
||||
Utils.removeSettingsViewModel(SettingsChangePasswordScreen);
|
||||
}
|
||||
|
||||
|
||||
if (!RL.settingsGet('ContactsIsAllowed'))
|
||||
{
|
||||
Utils.removeSettingsViewModel(SettingsContacts);
|
||||
}
|
||||
|
||||
if (!RL.settingsGet('AllowAdditionalAccounts'))
|
||||
{
|
||||
Utils.removeSettingsViewModel(SettingsAccounts);
|
||||
|
@ -17097,7 +17132,7 @@ RainLoopApp.prototype.bootstart = function ()
|
|||
* @type {RainLoopApp}
|
||||
*/
|
||||
RL = new RainLoopApp();
|
||||
|
||||
|
||||
$html.addClass(Globals.bMobileDevice ? 'mobile' : 'no-mobile');
|
||||
|
||||
$window.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
|
||||
|
@ -17145,9 +17180,9 @@ window['__RLBOOT'] = function (fCall) {
|
|||
window['__RLBOOT'] = null;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
if (window.SimplePace) {
|
||||
window.SimplePace.add(10);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}(window, jQuery, ko, crossroads, hasher, moment, Jua, _));
|
16
rainloop/v/0.0.0/static/js/app.min.js
vendored
16
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
Reference in a new issue