Code refactoring

a lot of small fixes (Closes #173)
Added login field (ownCloud package)
This commit is contained in:
RainLoop Team 2014-05-24 02:14:16 +04:00
parent a059b3d063
commit fed896776f
129 changed files with 1016 additions and 804 deletions

View file

@ -60,7 +60,7 @@ class HtmlUtils
{
$sHtmlAttrs = $aMatch[1];
}
$aMatch = array();
if (preg_match('/<body([^>]+)>/im', $sHtml, $aMatch) && !empty($aMatch[1]))
{
@ -71,7 +71,7 @@ class HtmlUtils
$sHtml = \preg_replace('/<\/body>/im', '', $sHtml);
$sHtml = \preg_replace('/<html([^>]*)>/im', '', $sHtml);
$sHtml = \preg_replace('/<\/html>/im', '', $sHtml);
return $sHtml;
}
@ -83,8 +83,8 @@ class HtmlUtils
public static function ClearTags($sHtml)
{
$aRemoveTags = array(
'head', 'link', 'base', 'meta', 'title', 'style', 'script', 'bgsound',
'object', 'embed', 'applet', 'mocha', 'iframe', 'frame', 'frameset'
'head', 'link', 'base', 'meta', 'title', 'style', 'script', 'bgsound', 'keygen', 'source',
'object', 'embed', 'applet', 'mocha', 'iframe', 'frame', 'frameset', 'video', 'audio'
);
$aToRemove = array(
@ -116,6 +116,7 @@ class HtmlUtils
'/on(DblClick)/si',
'/on(Error)/si',
'/on(Focus)/si',
'/on(FormChange)/si',
'/on(KeyDown)/si',
'/on(KeyPress)/si',
'/on(KeyUp)/si',
@ -418,7 +419,7 @@ class HtmlUtils
foreach ($aNodes as /* @var $oElement \DOMElement */ $oElement)
{
$sTagNameLower = \strtolower($oElement->tagName);
// convert body attributes to styles
if ('body' === $sTagNameLower)
{
@ -429,7 +430,7 @@ class HtmlUtils
'bottommargin' => '',
'rightmargin' => ''
);
if (isset($oElement->attributes))
{
foreach ($oElement->attributes as $sAttributeName => /* @var $oAttributeNode \DOMNode */ $oAttributeNode)
@ -451,7 +452,7 @@ class HtmlUtils
if (\is_array($aItem))
{
$oElement->removeAttribute($aItem[0]);
switch ($sIndex)
{
case 'text':
@ -484,7 +485,7 @@ class HtmlUtils
{
$oElement->setAttribute('src', 'javascript:false');
}
if (\in_array($sTagNameLower, array('a', 'form', 'area')))
{
$oElement->setAttribute('target', '_blank');
@ -500,12 +501,22 @@ class HtmlUtils
// $oElement->removeAttribute('style');
// }
@$oElement->removeAttribute('id');
@$oElement->removeAttribute('class');
@$oElement->removeAttribute('contenteditable');
@$oElement->removeAttribute('designmode');
@$oElement->removeAttribute('data-bind');
@$oElement->removeAttribute('xmlns');
foreach (array(
'id', 'class', 'contenteditable', 'designmode', 'formaction', 'data-bind', 'xmlns'
) as $sAttr)
{
@$oElement->removeAttribute($sAttr);
}
foreach (array(
'load', 'blur', 'error', 'focus', 'formchange', 'change',
'click', 'dblclick', 'keydown', 'keypress', 'keyup',
'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup',
'move', 'resize', 'resizeend', 'resizestart', 'scroll', 'select', 'submit', 'upload'
) as $sAttr)
{
@$oElement->removeAttribute('on'.$sAttr);
}
if ($oElement->hasAttribute('href'))
{
@ -544,7 +555,7 @@ class HtmlUtils
{
$oElement->setAttribute('data-x-src', $sSrc);
}
$bHasExternals = true;
}
else if ('data:image/' === \strtolower(\substr(\trim($sSrc), 0, 11)))
@ -626,7 +637,7 @@ class HtmlUtils
foreach ($aNodes as /* @var $oElement \DOMElement */ $oElement)
{
$sTagNameLower = \strtolower($oElement->tagName);
if ($oElement->hasAttribute('data-x-src-cid'))
{
$sCid = $oElement->getAttribute('data-x-src-cid');
@ -640,7 +651,7 @@ class HtmlUtils
$oElement->setAttribute('src', 'cid:'.$sCid);
}
}
if ($oElement->hasAttribute('data-x-src-location'))
{
$sSrc = $oElement->getAttribute('data-x-src-location');
@ -838,10 +849,10 @@ class HtmlUtils
return $sText;
}
/**
* @param string $sText
*
*
* @return string
*/
public static function ConvertHtmlToPlain($sText)
@ -937,7 +948,7 @@ class HtmlUtils
'\'',
''
), $sText);
$sText = str_ireplace('<div>',"\n<div>", $sText);
$sText = strip_tags($sText, '');
$sText = preg_replace("/\n\\s+\n/", "\n", $sText);

View file

@ -1295,7 +1295,7 @@ class Actions
$aResult['Language'] = $this->ValidateLanguage($sLanguage);
$aResult['UserLanguage'] = $bUserLanguage;
$aResult['LangLink'] = APP_INDEX_FILE.'?/Lang/0/'.($bAdmin ? 'en' : $aResult['Language']).'/'.$sStaticCache.'/';
$aResult['TemplatesLink'] = APP_INDEX_FILE.'?/Templates/0/'.$sStaticCache.'/';
$aResult['TemplatesLink'] = APP_INDEX_FILE.'?/Templates/0/'.($bAdmin ? 'Admin' : 'App').'/'.$sStaticCache.'/';
$aResult['PluginsLink'] = $sPluginsLink;
$aResult['EditorDefaultType'] = 'Html' === $aResult['EditorDefaultType'] ? 'Html' : 'Plain';
@ -6079,7 +6079,10 @@ class Actions
{
$oConfig = $this->Config();
$aResult = array(\RainLoop\Enumerations\Capa::PREM);
$aResult = array(
\RainLoop\Enumerations\Capa::PREM,
\RainLoop\Enumerations\Capa::FILTERS
);
if ($oConfig->Get('webmail', 'allow_additional_accounts', false))
{

View file

@ -1,15 +1,16 @@
<?php
namespace RainLoop\Enumerations;
class Capa
{
const PREM = 'PREM';
const TWO_FACTOR = 'TWO_FACTOR';
const OPEN_PGP = 'OPEN_PGP';
const PREFETCH = 'PREFETCH';
const GRAVATAR = 'GRAVATAR';
const THEMES = 'THEMES';
const ADDITIONAL_ACCOUNTS = 'ADDITIONAL_ACCOUNTS';
const ADDITIONAL_IDENTITIES = 'ADDITIONAL_IDENTITIES';
}
<?php
namespace RainLoop\Enumerations;
class Capa
{
const PREM = 'PREM';
const TWO_FACTOR = 'TWO_FACTOR';
const OPEN_PGP = 'OPEN_PGP';
const PREFETCH = 'PREFETCH';
const GRAVATAR = 'GRAVATAR';
const THEMES = 'THEMES';
const FILTERS = 'FILTERS';
const ADDITIONAL_ACCOUNTS = 'ADDITIONAL_ACCOUNTS';
const ADDITIONAL_IDENTITIES = 'ADDITIONAL_IDENTITIES';
}

View file

@ -19,6 +19,11 @@ class ServiceActions
*/
protected $aPaths;
/**
* @var string
*/
protected $sQuery;
/**
* @param \MailSo\Base\Http $oHttp
* @param \RainLoop\Actions $oActions
@ -30,6 +35,7 @@ class ServiceActions
$this->oHttp = $oHttp;
$this->oActions = $oActions;
$this->aPaths = array();
$this->sQuery = '';
}
/**
@ -449,16 +455,18 @@ class ServiceActions
$this->oActions->verifyCacheByKey($this->sQuery);
}
$bAdmin = false !== \strpos($this->sQuery, 'Admin');
$sCacheFileName = '';
if ($bCacheEnabled)
{
$sCacheFileName = 'TEMPLATES:'.$this->oActions->Plugins()->Hash().APP_VERSION;
$sCacheFileName = 'TEMPLATES:'.($bAdmin ? 'Admin/' : 'App/').$this->oActions->Plugins()->Hash().APP_VERSION;
$sResult = $this->Cacher()->Get($sCacheFileName);
}
if (0 === \strlen($sResult))
{
$sResult = $this->compileTemplates(false);
$sResult = $this->compileTemplates($bAdmin);
if ($bCacheEnabled && 0 < \strlen($sCacheFileName))
{
$this->Cacher()->Set($sCacheFileName, $sResult);
@ -1021,20 +1029,16 @@ class ServiceActions
/**
* @param bool $bAdmin = false
* @param bool $bWrapByScriptTag = true
*
* @return string
*/
private function compileTemplates($bAdmin = false, $bWrapByScriptTag = false)
private function compileTemplates($bAdmin = false)
{
$sHtml = \RainLoop\Utils::CompileTemplates(APP_VERSION_ROOT_PATH.'app/templates/Views', $this->oActions).
$sHtml = \RainLoop\Utils::CompileTemplates(APP_VERSION_ROOT_PATH.'app/templates/Views/'.($bAdmin ? 'Admin' : 'App'), $this->oActions).
\RainLoop\Utils::CompileTemplates(APP_VERSION_ROOT_PATH.'app/templates/Views/Common', $this->oActions).
$this->oActions->Plugins()->CompileTemplate($bAdmin);
return
($bWrapByScriptTag ? '<script type="text/javascript" data-cfasync="false">' : '').
'window.rainloopTEMPLATES='.\MailSo\Base\Utils::Php2js(array($sHtml)).';'.
($bWrapByScriptTag ? '</script>' : '')
;
return 'window.rainloopTEMPLATES='.\MailSo\Base\Utils::Php2js(array($sHtml)).';';
}
/**

View file

@ -11,7 +11,7 @@
<!--[if lte IE 7]>
<meta http-equiv="refresh" content="0; URL={{BaseAppIndexFile}}?/BadBrowser" />
<![endif]-->
<script type="text/javascript">
<script type="text/javascript" data-cfasync="false">
function __fIncludeScr(sSrc) {
document.write(unescape('%3Csc' + 'ript data-cfasync="false" type="text/jav' + 'ascr' + 'ipt" sr' + 'c="' + sSrc + '"%3E%3C/' + 'scr' + 'ipt%3E'));
}

View file

@ -1,24 +1,24 @@
<div class="b-admin-left g-ui-user-select-none">
<div class="b-toolbar">
<div class="btn-group show-on-panel-disabled">
<a class="btn buttonResize" data-bind="click: function () { leftPanelDisabled(!leftPanelDisabled()); }">
<i data-bind="css: {'icon-resize-out': leftPanelDisabled(), 'icon-resize-in': !leftPanelDisabled()}"></i>
</a>
</div>
</div>
<div class="b-content thm-settings-menu opacity-on-panel-disabled">
<div class="b-admin-menu" data-bind="foreach: menu">
<!-- ko if: disabled -->
<span class="e-item disabled">
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
</span>
<!-- /ko -->
<!-- ko ifnot: disabled -->
<a class="e-item selectable" href="#" data-bind="css: {'selected': selected }, attr: { 'href': $root.link(route) }">
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
</a>
<!-- /ko -->
</div>
</div>
<div class="b-content show-on-panel-disabled" data-bind="click: function () { leftPanelDisabled(false); }"></div>
<div class="b-admin-left g-ui-user-select-none">
<div class="b-toolbar">
<div class="btn-group show-on-panel-disabled">
<a class="btn buttonResize" data-bind="click: function () { leftPanelDisabled(!leftPanelDisabled()); }">
<i data-bind="css: {'icon-resize-out': leftPanelDisabled(), 'icon-resize-in': !leftPanelDisabled()}"></i>
</a>
</div>
</div>
<div class="b-content thm-settings-menu opacity-on-panel-disabled">
<div class="b-admin-menu" data-bind="foreach: menu">
<!-- ko if: disabled -->
<span class="e-item disabled">
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
</span>
<!-- /ko -->
<!-- ko ifnot: disabled -->
<a class="e-item selectable" href="#" data-bind="css: {'selected': selected }, attr: { 'href': $root.link(route) }">
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
</a>
<!-- /ko -->
</div>
</div>
<div class="b-content show-on-panel-disabled" data-bind="click: function () { leftPanelDisabled(false); }"></div>
</div>

View file

@ -16,28 +16,41 @@
<h1 style="margin-bottom: 0;">RainLoop</h1>
<h4 style="margin-top: 0;"><span data-bind="text: version"></span></h4>
<h4 style="color: #aaa; font-weight: normal;">Simple, modern & fast web-based email client</h4>
<h5 style="color: #aaa; font-weight: normal; margin-top: 40px;">
<h5 style="font-weight: normal; margin-top: 40px;">
<div data-bind="visible: 'error' === statusType()">
<i class="icon-warning" style="color: red"></i>
&nbsp;&nbsp;
<span data-bind="text: errorDesc">Error</span>
<span data-bind="text: errorDesc"></span>
</div>
<div data-bind="visible: 'available' === statusType()">
<i class="icon-warning" style="color: blue"></i>
<i class="icon-bolt" style="color: red"></i>
&nbsp;&nbsp;
New <b data-bind="text: coreRemoteVersion"></b> version is available.
<span data-bind="visible: '' !== coreRemoteRelease()">
(<span data-bind="text: coreRemoteRelease"></span>)
</span>
<br />
<br />
<span data-bind="visible: coreUpdatable() && coreAccess()">
<span class="g-ui-link" data-bind="click: updateCoreData">Update</span>
<a class="btn" data-bind="click: updateCoreData">
<i class="icon-sync"></i>
&nbsp;&nbsp;
Update
</a>
&nbsp;&nbsp;&nbsp;
</span>
<span data-bind="visible: coreAccess()">
<a class="g-ui-link" href="http://rainloop.net/downloads/" target="_blank">Download</a>
<a class="btn" href="http://rainloop.net/downloads/" target="_blank">
<i class="icon-download"></i>
&nbsp;&nbsp;
Download
</a>
&nbsp;&nbsp;&nbsp;
<a class="g-ui-link" href="http://rainloop.net/changelog/" target="_blank">Changelog</a>
<a class="btn" href="http://rainloop.net/changelog/" target="_blank">
<i class="icon-file-text"></i>
&nbsp;&nbsp;
Changelog
</a>
</span>
</div>
<div data-bind="visible: 'up-to-date' === statusType()">

View file

@ -36,7 +36,7 @@
<div data-bind="visible: licensingProcess()">
<i class="icon-spinner animated"></i>
&nbsp;&nbsp;
checking...
Checking&hellip;
</div>
<div data-bind="visible: !licensingProcess()">
<div class="alert alert-block span8" style="margin-left: 0" data-bind="visible: !licensing()">

View file

@ -1,28 +1,28 @@
<div class="b-admin-plugin-property">
<label class="control-label">
<span data-bind="text: Label, visible: 5 !== Type"></span>
</label>
<div class="controls">
<!-- ko if: 0 === Type || 1 === Type -->
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: value" />
<!-- /ko -->
<!-- ko if: 3 === Type -->
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: value" />
<!-- /ko -->
<!-- ko if: 2 === Type -->
<textarea autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: value"></textarea>
<!-- /ko -->
<!-- ko if: 4 === Type -->
<select data-bind="options: Default, value: value"></select>
<!-- /ko -->
<!-- ko if: 5 === Type -->
<label data-bind="click: function () { value(!value()); }">
<i data-bind="css: value() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
&nbsp;&nbsp;
<span data-bind="text: Label"></span>
</label>
<!-- /ko -->
<span class="help-block" style="color: #ccc" data-bind="text: Desc, visible: '' !== Desc"></span>
</div>
<br />
<div class="b-admin-plugin-property">
<label class="control-label">
<span data-bind="text: Label, visible: 5 !== Type"></span>
</label>
<div class="controls">
<!-- ko if: 0 === Type || 1 === Type -->
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: value" />
<!-- /ko -->
<!-- ko if: 3 === Type -->
<input type="password" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: value" />
<!-- /ko -->
<!-- ko if: 2 === Type -->
<textarea autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: value"></textarea>
<!-- /ko -->
<!-- ko if: 4 === Type -->
<select data-bind="options: Default, value: value"></select>
<!-- /ko -->
<!-- ko if: 5 === Type -->
<label data-bind="click: function () { value(!value()); }">
<i data-bind="css: value() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
&nbsp;&nbsp;
<span data-bind="text: Label"></span>
</label>
<!-- /ko -->
<span class="help-block" style="color: #ccc" data-bind="text: Desc, visible: '' !== Desc"></span>
</div>
<br />
</div>

View file

@ -3,15 +3,6 @@
<div class="legend">
Security
</div>
<div class="control-group">
<div class="controls">
<label data-bind="click: function () { csrfProtection(!csrfProtection()); }">
<i data-bind="css: csrfProtection() ? 'icon-checkbox-checked' : 'icon-checkbox-unchecked'"></i>
&nbsp;&nbsp;
<abbr title="Cross-site request forgery" class="initialism">CSRF</abbr> protection
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<label data-bind="click: function () { capaOpenPGP(!capaOpenPGP()); }">
@ -36,6 +27,7 @@
</div>
</div>
</div>
<br />
<div class="form-horizontal">
<div class="legend">
Changer Admin Password

View file

@ -1,7 +1,7 @@
<div class="e-item b-folder-system-item">
<a class="e-link" data-bind="droppable: function (oEvent, oUi) { $root.messagesDrop($data, oUi); }, css: { 'selected': selected, 'selectable': selectable, 'print-count': 0 < printableUnreadCount().length, 'anim-action-class': actionBlink }">
<span class="badge pull-right count" data-bind="text: printableUnreadCount"></span>
&nbsp;
<span class="name" data-bind="text: localName()"></span>
</a>
<div class="e-item b-folder-system-item">
<a class="e-link" data-bind="droppable: function (oEvent, oUi) { $root.messagesDrop($data, oUi); }, css: { 'selected': selected, 'selectable': selectable, 'print-count': 0 < printableUnreadCount().length, 'anim-action-class': actionBlink }">
<span class="badge pull-right count" data-bind="text: printableUnreadCount"></span>
&nbsp;
<span class="name" data-bind="text: localName()"></span>
</a>
</div>

View file

@ -1,56 +1,56 @@
<style>
html, body {
margin: 0;
padding: 0;
background-color: #fff;
font-family: arial, sans-serif;
}
.tbl {width:100%;font-family:normal 11px Tahoma, Arial, Helvetica, "sans-serif"}
.tt {padding:5px;border:solid #ddd;border-width:0px 0px 1px 0px}
.tv {padding:5px;border:solid #ddd;border-width:0px 0px 1px 1px}
.tb {padding:15px}
a {color: blue; text-decoration: underline}
a:visited {color: #609}
a:active {color: red}
blockquote {border-left: 2px solid black; margin: 0; padding: 0px 10px}
pre {margin: 0px; padding: 0px; font-family: arial, sans-serif; background: #fff; border: none; white-space: normal}
</style>
<table cellpadding="0" cellspacing="0" class="tbl">
<tbody>
<tr>
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_FROM"></td>
<td class="tv" data-bind="text: popupFrom"></td>
</tr>
<tr>
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_TO"></td>
<td class="tv" data-bind="text: popupTo"></td>
</tr>
<tr data-bind="visible: '' !== popupCc">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_CC"></td>
<td class="tv" data-bind="text: popupCc"></td>
</tr>
<tr data-bind="visible: '' !== popupBcc">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_BCC"></td>
<td class="tv" data-bind="text: popupBcc"></td>
</tr>
<tr data-bind="visible: '' !== popupDate">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_DATE"></td>
<td class="tv" data-bind="text: popupDate"></td>
</tr>
<tr>
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_SUBJECT"></td>
<td class="tv" data-bind="text: popupSubject"></td>
</tr>
<tr data-bind="visible: '' !== popupAttachments">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_ATTACHMENTS"></td>
<td class="tv" data-bind="text: popupAttachments"></td>
</tr>
<tr>
<td colspan="2" class="tb">
<div data-bind="html: popupBody"></div>
</td>
</tr>
</tbody>
<style>
html, body {
margin: 0;
padding: 0;
background-color: #fff;
font-family: arial, sans-serif;
}
.tbl {width:100%;font-family:normal 11px Tahoma, Arial, Helvetica, "sans-serif"}
.tt {padding:5px;border:solid #ddd;border-width:0px 0px 1px 0px}
.tv {padding:5px;border:solid #ddd;border-width:0px 0px 1px 1px}
.tb {padding:15px}
a {color: blue; text-decoration: underline}
a:visited {color: #609}
a:active {color: red}
blockquote {border-left: 2px solid black; margin: 0; padding: 0px 10px}
pre {margin: 0px; padding: 0px; font-family: arial, sans-serif; background: #fff; border: none; white-space: normal}
</style>
<table cellpadding="0" cellspacing="0" class="tbl">
<tbody>
<tr>
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_FROM"></td>
<td class="tv" data-bind="text: popupFrom"></td>
</tr>
<tr>
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_TO"></td>
<td class="tv" data-bind="text: popupTo"></td>
</tr>
<tr data-bind="visible: '' !== popupCc">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_CC"></td>
<td class="tv" data-bind="text: popupCc"></td>
</tr>
<tr data-bind="visible: '' !== popupBcc">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_BCC"></td>
<td class="tv" data-bind="text: popupBcc"></td>
</tr>
<tr data-bind="visible: '' !== popupDate">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_DATE"></td>
<td class="tv" data-bind="text: popupDate"></td>
</tr>
<tr>
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_SUBJECT"></td>
<td class="tv" data-bind="text: popupSubject"></td>
</tr>
<tr data-bind="visible: '' !== popupAttachments">
<td class="tt i18n" data-i18n-text="MESSAGE/PRINT_LABEL_ATTACHMENTS"></td>
<td class="tv" data-bind="text: popupAttachments"></td>
</tr>
<tr>
<td colspan="2" class="tb">
<div data-bind="html: popupBody"></div>
</td>
</tr>
</tbody>
</table>

View file

@ -1,3 +1,3 @@
<div class="settingsCustom">
CUSTOM
<div class="settingsCustom">
CUSTOM
</div>

View file

@ -0,0 +1,38 @@
<div class="b-settings-filters g-ui-user-select-none">
<div class="form-horizontal">
<div class="legend">
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/LEGEND_FILTERS"></span>
</div>
</div>
<div class="row">
<div data-bind="foreach: filters">
<div class="filter" style="background-color: #ddd">
FILTER
<div data-bind="foreach: conditions">
COND
<br />
<span class="delete-condition" data-bind="click: function (oCondition) { $parent.deleteCondition(oCondition); }">
<i class="icon-trash"></i>
</span>
<br />
</div>
<br />
<a class="btn" data-bind="click: addCondition">
<i class="icon-plus"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/BUTTON_ADD_CONDITION"></span>
</a>
<br />
<span class="delete-filter" data-bind="click: function (oFilter) { $parent.deleteFilter(oFilter); }">
<i class="icon-trash"></i>
</span>
</div>
<br />
</div>
</div>
<a class="btn" data-bind="click: addFilter">
<i class="icon-filter"></i>
&nbsp;&nbsp;
<span class="i18n" data-i18n-text="SETTINGS_FILTERS/BUTTON_ADD_FILTER"></span>
</a>
</div>

View file

@ -1,24 +1,24 @@
<div class="b-settins-left g-ui-user-select-none">
<div class="b-toolbar">
<div class="btn-group">
<a class="btn buttonResize" data-bind="click: function () { leftPanelDisabled(!leftPanelDisabled()); }">
<i data-bind="css: {'icon-resize-out': leftPanelDisabled(), 'icon-resize-in': !leftPanelDisabled()}"></i>
</a>
</div>
</div>
<div class="b-content thm-settings-menu opacity-on-panel-disabled">
<div class="b-settings-menu" data-bind="foreach: menu">
<!-- ko if: disabled -->
<span class="e-item disabled">
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
</span>
<!-- /ko -->
<!-- ko ifnot: disabled -->
<a class="e-item selectable" href="#" data-bind="css: {'selected': selected }, attr: { 'href': $root.link(route) }">
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
</a>
<!-- /ko -->
</div>
</div>
<div class="b-content show-on-panel-disabled" data-bind="click: function () { leftPanelDisabled(false); }"></div>
<div class="b-settins-left g-ui-user-select-none">
<div class="b-toolbar">
<div class="btn-group">
<a class="btn buttonResize" data-bind="click: function () { leftPanelDisabled(!leftPanelDisabled()); }">
<i data-bind="css: {'icon-resize-out': leftPanelDisabled(), 'icon-resize-in': !leftPanelDisabled()}"></i>
</a>
</div>
</div>
<div class="b-content thm-settings-menu opacity-on-panel-disabled">
<div class="b-settings-menu" data-bind="foreach: menu">
<!-- ko if: disabled -->
<span class="e-item disabled">
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
</span>
<!-- /ko -->
<!-- ko ifnot: disabled -->
<a class="e-item selectable" href="#" data-bind="css: {'selected': selected }, attr: { 'href': $root.link(route) }">
<span class="i18n e-link" data-bind="attr: { 'data-i18n-text': label }"></span>
</a>
<!-- /ko -->
</div>
</div>
<div class="b-content show-on-panel-disabled" data-bind="click: function () { leftPanelDisabled(false); }"></div>
</div>

View file

@ -1,14 +1,6 @@
<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">
<a class="btn btn-narrow" data-bind="click: logoutClick">
<i class="icon-power"></i>
</a>
</div>
<div class="btn-group pull-right">
&nbsp;&nbsp;&nbsp;
</div>-->
<div class="btn-group pull-right dropdown colored-toggle" data-bind="registrateBootstrapDropdown: true, openDropdownTrigger: accountMenuDropdownTrigger">
<a id="top-system-dropdown-id" href="#" tabindex="-1" class="btn btn-ellipsis btn-block dropdown-toggle system-dropdown"
data-toggle="dropdown" data-tooltip-placement="left"

View file

@ -134,7 +134,7 @@ PRINT_LABEL_DATE = "Datum"
PRINT_LABEL_SUBJECT = "Thema"
PRINT_LABEL_ATTACHMENTS = "Anhänge"
MESSAGE_LOADING = "es wird geladen"
MESSAGE_VIEW_DESC = "Wählen Sie eine Nachricht aus der Liste aus um sie anzuzeigen."
MESSAGE_VIEW_DESC = "Wählen Sie eine Nachricht aus der Liste aus um sie anzuzeigen."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Password"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP signed message (click to verify)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP encrypted message (click to decrypt)"
@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "None"
BUTTON_SHARE_ALL = "Everyone"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -349,6 +349,7 @@ LABEL_FOLDERS_NAME = "Folders"
LABEL_ACCOUNTS_NAME = "Accounts"
LABEL_IDENTITY_NAME = "Identity"
LABEL_IDENTITIES_NAME = "Identities"
LABEL_FILTERS_NAME = "Filters"
LABEL_SECURITY_NAME = "Security"
LABEL_SOCIAL_NAME = "Social"
LABEL_THEMES_NAME = "Themes"
@ -356,6 +357,11 @@ LABEL_CHANGE_PASSWORD_NAME = "Password"
LABEL_OPEN_PGP_NAME = "OpenPGP"
BUTTON_BACK = "Back"
[SETTINGS_FILTERS]
LEGEND_FILTERS = "Filters"
BUTTON_ADD_FILTER = "Add Filter"
BUTTON_ADD_CONDITION = "Add Condition"
[SETTINGS_IDENTITY]
LEGEND_IDENTITY = "Identity"
LABEL_DISPLAY_NAME = "Name"
@ -375,8 +381,6 @@ BUTTON_CLEAR = "Clear"
BUTTON_TEST = "Test"
BUTTON_SHOW_SECRET = "Show Secret"
BUTTON_HIDE_SECRET = "Hide Secret"
BUTTON_SHOW_SECRET = "Show Secret"
BUTTON_HIDE_SECRET = "Hide Secret"
TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."

View file

@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Teléfono"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Dirección"
ADD_MENU_BIRTHDAY = "Cumpleaños"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "Ninguno"
BUTTON_SHARE_ALL = "Todos"
BUTTON_SYNC = "Sincronización (CardDAV)"

View file

@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Téléphone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Adresse"
ADD_MENU_BIRTHDAY = "Anniversaire"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "Personne"
BUTTON_SHARE_ALL = "Tout le monde"
BUTTON_SYNC = "Synchronisation (CardDAV)"

View file

@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Telefonszám"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Cím"
ADD_MENU_BIRTHDAY = "Születésnap"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "Nem"
BUTTON_SHARE_ALL = "Mindenki"
BUTTON_SYNC = "Szinkronizálás (CardDAV)"

View file

@ -134,7 +134,7 @@ PRINT_LABEL_DATE = "Dagsetning"
PRINT_LABEL_SUBJECT = "Viðhengi"
PRINT_LABEL_ATTACHMENTS = "Viðhengi"
MESSAGE_LOADING = "Hleð"
MESSAGE_VIEW_DESC = "Veldu bréf úr listanum til að skoða hér."
MESSAGE_VIEW_DESC = "Veldu bréf úr listanum til að skoða hér."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Password"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP signed message (click to verify)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP encrypted message (click to decrypt)"
@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "None"
BUTTON_SHARE_ALL = "Everyone"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -187,6 +187,7 @@ ADD_MENU_PHONE = "Telefono"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Indirizzo"
ADD_MENU_BIRTHDAY = "Compleanno"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "Nessuno"
BUTTON_SHARE_ALL = "Tutti"
BUTTON_SYNC = "Sincronizzazione (CardDAV)"

View file

@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "None"
BUTTON_SHARE_ALL = "Everyone"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -134,7 +134,7 @@ PRINT_LABEL_DATE = "날짜"
PRINT_LABEL_SUBJECT = "제목"
PRINT_LABEL_ATTACHMENTS = "첨부파일"
MESSAGE_LOADING = "여는 중..."
MESSAGE_VIEW_DESC = "목록에서 선택한 메시지가 여기에 표시됩니다."
MESSAGE_VIEW_DESC = "목록에서 선택한 메시지가 여기에 표시됩니다."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Password"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP signed message (click to verify)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP encrypted message (click to decrypt)"
@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "None"
BUTTON_SHARE_ALL = "Everyone"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -134,7 +134,7 @@ PRINT_LABEL_DATE = "Datums"
PRINT_LABEL_SUBJECT = "Tēma"
PRINT_LABEL_ATTACHMENTS = "Pielikumi"
MESSAGE_LOADING = "Lādējās"
MESSAGE_VIEW_DESC = "Izvēlaties ziņojumu no saraksta lai to apskatītu."
MESSAGE_VIEW_DESC = "Izvēlaties ziņojumu no saraksta lai to apskatītu."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Password"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP signed message (click to verify)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP encrypted message (click to decrypt)"
@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "None"
BUTTON_SHARE_ALL = "Everyone"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -30,7 +30,7 @@ LABEL_ADV_UNSEEN = "Ongelezen"
LABEL_ADV_DATE = "Datum"
LABEL_ADV_DATE_ALL = "Alles"
LABEL_ADV_DATE_3_DAYS = "Meer dan 3 dagen oud"
LABEL_ADV_DATE_7_DAYS = "Meer dan 1 week oud"
LABEL_ADV_DATE_7_DAYS = "Meer dan 1 week oud"
LABEL_ADV_DATE_MONTH = "Meer dan 1 maand oud"
LABEL_ADV_DATE_3_MONTHS = "Meer dan 3 maanden oud"
LABEL_ADV_DATE_6_MONTHS = "Meer dan 6 maanden oud"
@ -134,7 +134,7 @@ PRINT_LABEL_DATE = "Datum"
PRINT_LABEL_SUBJECT = "Onderwerp"
PRINT_LABEL_ATTACHMENTS = "Bijlages"
MESSAGE_LOADING = "Bericht ophalen"
MESSAGE_VIEW_DESC = "Selecteer het bericht in de lijst om hier te bekijken."
MESSAGE_VIEW_DESC = "Selecteer het bericht in de lijst om hier te bekijken."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Password"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP signed message (click to verify)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP encrypted message (click to decrypt)"
@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "None"
BUTTON_SHARE_ALL = "Everyone"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "None"
BUTTON_SHARE_ALL = "Everyone"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -134,7 +134,7 @@ PRINT_LABEL_DATE = "Data"
PRINT_LABEL_SUBJECT = "Temat"
PRINT_LABEL_ATTACHMENTS = "Załączniki"
MESSAGE_LOADING = "Ładowanie..."
MESSAGE_VIEW_DESC = "Wybierz wiadomość z listy w celu jej wyświetlenia."
MESSAGE_VIEW_DESC = "Wybierz wiadomość z listy w celu jej wyświetlenia."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Password"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP signed message (click to verify)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP encrypted message (click to decrypt)"
@ -185,6 +185,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "Nikomu"
BUTTON_SHARE_ALL = "Wszystkim"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -3,8 +3,8 @@ LABEL_EMAIL = "Email"
LABEL_LOGIN = "Usuário"
LABEL_PASSWORD = "Senha"
LABEL_SIGN_ME = "Lembre-me"
LABEL_VERIFICATION_CODE = "Verification Code"
LABEL_DONT_ASK_VERIFICATION_CODE = "Don't ask for the code for 2 weeks"
LABEL_VERIFICATION_CODE = "Código de verificação"
LABEL_DONT_ASK_VERIFICATION_CODE = "Não perguntar o código por 2 semanas"
BUTTON_SIGN_IN = "Entre"
TITLE_SIGN_IN_GOOGLE = "Entre com a conta do Google"
TITLE_SIGN_IN_FACEBOOK = "Entre com a conta do Facebook"
@ -13,7 +13,7 @@ TITLE_SIGN_IN_TWITTER = "Entre com a conta do Twitter"
[TOP_TOOLBAR]
BUTTON_ADD_ACCOUNT = "Adicionar Conta"
BUTTON_SETTINGS = "Configurações"
BUTTON_HELP = "Help"
BUTTON_HELP = "Ajuda"
BUTTON_LOGOUT = "Sair"
[SEARCH]
@ -23,10 +23,10 @@ LABEL_ADV_FROM = "De"
LABEL_ADV_TO = "Para"
LABEL_ADV_SUBJECT = "Assunto"
LABEL_ADV_TEXT = "Texto"
LABEL_ADV_HAS_ATTACHMENT = "Has attachment"
LABEL_ADV_HAS_ATTACHMENTS = "Tem Anexos"
LABEL_ADV_FLAGGED = "Flagged"
LABEL_ADV_UNSEEN = "Unseen"
LABEL_ADV_HAS_ATTACHMENT = "Tem anexo"
LABEL_ADV_HAS_ATTACHMENTS = "Tem anexos"
LABEL_ADV_FLAGGED = "Sinalizado"
LABEL_ADV_UNSEEN = "Não visto"
LABEL_ADV_DATE = "Data"
LABEL_ADV_DATE_ALL = "Todos"
LABEL_ADV_DATE_3_DAYS = "Até 3 dias atrás"
@ -47,14 +47,14 @@ IMAGE_ERROR = "<a href="%url%" target=\"_blank\">Imagem</a> não pode ser carreg
AJAX_ERROR = "<a href="%url%" target=\"_blank\">Conteúdo</a> não pode ser carregado."
[FOLDER_LIST]
BUTTON_COMPOSE = "Escrever"
BUTTON_COMPOSE = "Compor"
BUTTON_CONTACTS = "Contatos"
INBOX_NAME = "Caixa de Entrada"
SENT_NAME = "Enviar"
DRAFTS_NAME = "Rascunhos"
SPAM_NAME = "Lixo Eletrônico"
TRASH_NAME = "Lixeira"
ARCHIVE_NAME = "Archive"
ARCHIVE_NAME = "Arquivo"
[QUOTA]
TITLE = "Uso da Cota"
@ -63,9 +63,9 @@ TITLE = "Uso da Cota"
BUTTON_RELOAD = "Atualizar Lista de Mensagens"
BUTTON_MOVE_TO = "Mover Para"
BUTTON_DELETE = "Excluir"
BUTTON_ARCHIVE = "Archive"
BUTTON_ARCHIVE = "Arquivo"
BUTTON_SPAM = "Lixo Eletrônico"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_NOT_SPAM = "Não é Lixo Eletrônico"
BUTTON_EMPTY_FOLDER = "Limpar Pasta"
BUTTON_MULTY_FORWARD = "Encaminhar mensagens"
BUTTON_DELETE_WITHOUT_MOVE = "Excluir penmanentemente"
@ -99,9 +99,9 @@ BUTTON_EDIT = "Editar"
BUTTON_BACK = "Voltar"
BUTTON_CLOSE = "Fechar"
BUTTON_DELETE = "Excluir"
BUTTON_ARCHIVE = "Archive"
BUTTON_ARCHIVE = "Arquivo"
BUTTON_SPAM = "Lixo Eletrônico"
BUTTON_NOT_SPAM = "Not Spam"
BUTTON_NOT_SPAM = "Não é Lixo Eletrônico"
BUTTON_MOVE_TO = "Mover para"
BUTTON_MORE = "Mais"
BUTTON_REPLY = "Responder"
@ -134,10 +134,10 @@ PRINT_LABEL_DATE = "Data"
PRINT_LABEL_SUBJECT = "Assunto"
PRINT_LABEL_ATTACHMENTS = "Anexos"
MESSAGE_LOADING = "Carregando"
MESSAGE_VIEW_DESC = "Selecione a lista de mensagens para visuzalizá-la aqui."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Password"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP signed message (click to verify)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP encrypted message (click to decrypt)"
MESSAGE_VIEW_DESC = "Selecione a lista de mensagens para visuzalizá-la aqui."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Senha"
PGP_SIGNED_MESSAGE_DESC = "Mensagem assinada com OpenPGP (clique para verificar)"
PGP_ENCRYPTED_MESSAGE_DESC = "Mensagem criptografada com OpenPGP (clique para descriptografar)"
[READ_RECEIPT]
SUBJECT = "Aviso de recepção (informado) - %SUBJECT%"
@ -155,9 +155,9 @@ SEARCH_INPUT_PLACEHOLDER = "Procurar"
BUTTON_ADD_CONTACT = "Adicionar Contatos"
BUTTON_CREATE_CONTACT = "Criar"
BUTTON_UPDATE_CONTACT = "Atualizar"
BUTTON_IMPORT = "Import (csv, vcf, vCard)"
BUTTON_EXPORT_VCARD = "Export (vcf, vCard)"
BUTTON_EXPORT_CSV = "Export (csv)"
BUTTON_IMPORT = "Importar (csv, vcf, vCard)"
BUTTON_EXPORT_VCARD = "Exportar (vcf, vCard)"
BUTTON_EXPORT_CSV = "Exportar (csv)"
ERROR_IMPORT_FILE = "Erro ao importat (formato do arquivo inválido)"
LIST_LOADING = "Carregando"
EMPTY_LIST = "Nenhum contato aqui"
@ -168,27 +168,29 @@ LABEL_DISPLAY_NAME = "Nome público"
LABEL_EMAIL = "Email"
LABEL_PHONE = "Telefone"
LABEL_WEB = "Web"
LABEL_BIRTHDAY = "Birthday"
LABEL_BIRTHDAY = "Aniversário"
LABEL_TAGS = "Tags"
LINK_ADD_EMAIL = "Adicionar um endereço e-mail"
LINK_ADD_PHONE = "Adicionar um telefone"
LINK_BIRTHDAY = "Birthday"
LINK_BIRTHDAY = "Aniversário"
PLACEHOLDER_ENTER_DISPLAY_NAME = "Digite um nome público"
PLACEHOLDER_ENTER_LAST_NAME = "Digite seu último nome"
PLACEHOLDER_ENTER_FIRST_NAME = "Digite seu primeiro nome"
PLACEHOLDER_ENTER_NICK_NAME = "Enter nickname"
PLACEHOLDER_ENTER_NICK_NAME = "Digite seu apelido"
LABEL_READ_ONLY = "Ler somente"
LABEL_SHARE = "Compartilhar"
ADD_MENU_LABEL = "Add"
ADD_MENU_NICKNAME = "Nickname"
ADD_MENU_NOTES = "Notes"
ADD_MENU_EMAIL = "Email"
ADD_MENU_PHONE = "Phone"
ADD_MENU_LABEL = "Adicionar"
ADD_MENU_NICKNAME = "Apelido"
ADD_MENU_NOTES = "Observações"
ADD_MENU_EMAIL = "E-mail"
ADD_MENU_PHONE = "Telefone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_ADDRESS = "Endereço"
ADD_MENU_BIRTHDAY = "Aniversário"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "Ninguém"
BUTTON_SHARE_ALL = "Todo mundo"
BUTTON_SYNC = "Synchronization (CardDAV)"
BUTTON_SYNC = "Sincronização (CardDAV)"
[COMPOSE]
TITLE_FROM = "De"
@ -200,7 +202,7 @@ TITLE_SUBJECT = "Assunto"
LINK_SHOW_INPUTS = "Mostrar todos os campos"
BUTTON_SEND = "Enviar"
BUTTON_SAVE = "Salvar"
BUTTON_DELETE = "Eccluir"
BUTTON_DELETE = "Excluir"
BUTTON_CANCEL = "Cancelar"
SAVED_TIME = "Salvo em %TIME%"
SAVED_ERROR_ON_SEND = "Sua mensagem foi enviada, mas não salva a pasta de itens enviados."
@ -263,60 +265,62 @@ DANGER_DESC_HTML_2 = "Uma vez iniciado, o processo não pode ser interrompido ou
TITLE_CLEARING_PROCESS = "Excluindo a pasta..."
[POPUPS_IMPORT_OPEN_PGP_KEY]
TITLE_IMPORT_OPEN_PGP_KEY = "Import OpenPGP key"
BUTTON_IMPORT_OPEN_PGP_KEY = "Import"
TITLE_IMPORT_OPEN_PGP_KEY = "Importar chave OpenPGP"
BUTTON_IMPORT_OPEN_PGP_KEY = "Importar"
[POPUPS_VIEW_OPEN_PGP_KEY]
TITLE_VIEW_OPEN_PGP_KEY = "View OpenPGP key"
BUTTON_SELECT = "Select"
BUTTON_CLOSE = "Close"
TITLE_VIEW_OPEN_PGP_KEY = "Ver chave OpenPGP"
BUTTON_SELECT = "Selecionar"
BUTTON_CLOSE = "Fechar"
[POPUPS_GENERATE_OPEN_PGP_KEYS]
TITLE_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP keys"
LABEL_EMAIL = "Email"
LABEL_NAME = "Name"
LABEL_PASSWORD = "Password"
LABEL_KEY_BIT_LENGTH = "Key length"
BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate"
TITLE_GENERATE_OPEN_PGP_KEYS = "Gerar chave OpenPGP"
LABEL_EMAIL = "E-mail"
LABEL_NAME = "Nome"
LABEL_PASSWORD = "Senha"
LABEL_KEY_BIT_LENGTH = "Tamanho da chave"
BUTTON_GENERATE_OPEN_PGP_KEYS = "Gerar"
[POPUPS_COMPOSE_OPEN_PGP]
TITLE_COMPOSE_OPEN_PGP = "OpenPGP Sign/Encrypt"
TITLE_COMPOSE_OPEN_PGP = "OpenPGP Assinar/Criptografar"
LABEL_SIGN = "Sign"
LABEL_ENCRYPT = "Encrypt"
LABEL_PASSWORD = "Password"
BUTTON_SIGN = "Sign"
BUTTON_ENCRYPT = "Encrypt"
BUTTON_SIGN_AND_ENCRYPT = "Sign and encrypt"
LABEL_ENCRYPT = "Criptografar"
LABEL_PASSWORD = "Senha"
BUTTON_SIGN = "Assinar"
BUTTON_ENCRYPT = "Criptografar"
BUTTON_SIGN_AND_ENCRYPT = "Assinar e criptografar"
[POPUPS_TWO_FACTOR_TEST]
TITLE_TEST_CODE = "2-Step verification test"
LABEL_CODE = "Code"
BUTTON_TEST = "Test"
TITLE_TEST_CODE = "Testar verificação de duas etapas"
LABEL_CODE = "Código"
BUTTON_TEST = "Testar"
[POPUPS_SYSTEM_FOLDERS]
TITLE_SYSTEM_FOLDERS = "Selecione as pastas do sistema"
SELECT_CHOOSE_ONE = "Escolha um"
SELECT_UNUSE_NAME = "Não use"
SELECT_UNUSE_NAME = "Não usar"
LABEL_SENT = "Enviar"
LABEL_DRAFTS = "Rascunhos"
LABEL_SPAM = "Lixo Eletrônico"
LABEL_TRASH = "Lixo"
LABEL_ARCHIVE = "Archive"
LABEL_TRASH = "Lixeira"
LABEL_ARCHIVE = "Arquivo"
BUTTON_CANCEL = "Cancelar"
BUTTON_CLOSE = "Fechar"
NOTIFICATION_SENT = "Você não selecionou \"Sent\" as mensagens da pasta de sistema que são colocados após o envio.
Se você não quiser salvar a mensagem enviada, por favor selecione a opção\"Do not use\"."
NOTIFICATION_SENT = "Você não selecionou a pasta de sistema que serão colocadas as mensagens após o envio.
Se você não quiser salvar a mensagem enviada, por favor selecione a opção\"Não usar\"."
NOTIFICATION_DRAFTS = "Você não selecionou \"Drafts\" as mensagens da pasta são salvas ao autor."
NOTIFICATION_DRAFTS = "Você não selecionou a pasta de sistema que serão colocadas as mensagens salvas ao autor.
Se você não quiser salvar a mensagem enviada, por favor selecione a opção\"Não usar\"."
NOTIFICATION_SPAM = "Você não selecionou \"Spam\" a pasta de mensagens Lixo Eletrônico do sistema, são colocados para.
Se você deseja remover as mensagens permanentemente, por favor selecione a opção \"Do not use\"."
NOTIFICATION_SPAM = "Você não selecionou a pasta de sistema que será guardado o lixo eletrônico.
Se você não quiser salvar a mensagem enviada, por favor selecione a opção\"Não usar\"."
NOTIFICATION_TRASH = "Você não selecionou \"Trash\" a pasta de mensagens excluídas do sistema que são colocadas para.
Se você deseja remover as mensagens permanentemente, por favor selecione a opção \"Do not use\"."
NOTIFICATION_TRASH = "Você não selecionou a pasta de sistema que serão colocadas as mensagens excluídas.
Se você não quiser salvar a mensagem enviada, por favor selecione a opção\"Não usar\"."
NOTIFICATION_ARCHIVE = "You haven't selected \"Archive\" system folder achived messages are placed to."
NOTIFICATION_ARCHIVE = "Você não selecionou a pasta de sistema que serão colocadas as mensagens arquivadas.
Se você não quiser salvar a mensagem enviada, por favor selecione a opção\"Não usar\"."
[TITLES]
LOADING = "Carregando"
@ -347,7 +351,7 @@ LABEL_FOLDERS_NAME = "Pastas"
LABEL_ACCOUNTS_NAME = "Contas"
LABEL_IDENTITY_NAME = "Identidade"
LABEL_IDENTITIES_NAME = "Identidades"
LABEL_SECURITY_NAME = "Security"
LABEL_SECURITY_NAME = "Segurança"
LABEL_SOCIAL_NAME = "Social"
LABEL_THEMES_NAME = "Temas"
LABEL_CHANGE_PASSWORD_NAME = "Senha"
@ -362,21 +366,21 @@ LABEL_SIGNATURE = "Assinatura"
LABEL_ADD_SIGNATURE_TO_ALL = "Adicionar a sua assinatura a todas as mensagens de saída"
[SETTINGS_SECURITY]
LEGEND_TWO_FACTOR_AUTH = "2-Step Verification (Google Authenticator)"
LABEL_ENABLE_TWO_FACTOR = "Enable 2-Step verification"
LABEL_TWO_FACTOR_USER = "User"
LEGEND_TWO_FACTOR_AUTH = "Verificação de duas etapas (Google Authenticator)"
LABEL_ENABLE_TWO_FACTOR = "Habilitar verificação de duas etapas"
LABEL_TWO_FACTOR_USER = "Usuário"
LABEL_TWO_FACTOR_STATUS = "Status"
LABEL_TWO_FACTOR_SECRET = "Secret"
LABEL_TWO_FACTOR_BACKUP_CODES = "Backup codes"
BUTTON_CREATE = "Create New Secret"
BUTTON_CLEAR = "Clear"
BUTTON_TEST = "Test"
BUTTON_SHOW_SECRET = "Show Secret"
BUTTON_HIDE_SECRET = "Hide Secret"
TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configured"
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Not configured"
TWO_FACTOR_SECRET_DESC = "Import this info into your Google Authenticator client (or other TOTP client) using the provided QR code below or by entering the code manually."
TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authenticator, you can use backup codes to sign in. After youve used a backup code to sign in, it will become inactive."
LABEL_TWO_FACTOR_SECRET = "Segredo"
LABEL_TWO_FACTOR_BACKUP_CODES = "Códigos de backup"
BUTTON_CREATE = "Criar novo segredo"
BUTTON_CLEAR = "Limpar"
BUTTON_TEST = "Testar"
BUTTON_SHOW_SECRET = "Mostrar segredo"
BUTTON_HIDE_SECRET = "Esconder segredo"
TWO_FACTOR_SECRET_CONFIGURED_DESC = "Configurado"
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC = "Não configurado"
TWO_FACTOR_SECRET_DESC = "Importe este código no seu cliente Google Authenticator (ou outro cliente TOTP) usando o QR code abaixo ou informando o código manualmente."
TWO_FACTOR_BACKUP_CODES_DESC = "Se você não receber códigos via Google Authenticator, você pode usar esses códigos de backup para acessar sua conta. Depois de você usar um código de backup, ele se torna inativo."
[SETTINGS_GENERAL]
LEGEND_GENERAL = "Geral"
@ -403,12 +407,12 @@ LABEL_CHROME_NOTIFICATION_DESC_DENIED = "(Bloqueado pelo navegador)"
[SETTINGS_CONTACTS]
LEGEND_CONTACTS = "Contatos"
LABEL_CONTACTS_AUTOSAVE = "Adicionar automaticamente destinatários a sua lista de endereços"
LEGEND_CONTACTS_SYNC = "Remote Synchronization (CardDAV)"
LABEL_CONTACTS_SYNC_ENABLE = "Enable remote synchronization"
LABEL_CONTACTS_SYNC_SERVER = "Server"
LABEL_CONTACTS_SYNC_AB_URL = "Addressbook URL"
LABEL_CONTACTS_SYNC_USER = "User"
LABEL_CONTACTS_SYNC_PASSWORD = "Password"
LEGEND_CONTACTS_SYNC = "Sincronização remota (CardDAV)"
LABEL_CONTACTS_SYNC_ENABLE = "Habilitar sincronização remota"
LABEL_CONTACTS_SYNC_SERVER = "Servidor"
LABEL_CONTACTS_SYNC_AB_URL = "URL da lista de contatos"
LABEL_CONTACTS_SYNC_USER = "Usuário"
LABEL_CONTACTS_SYNC_PASSWORD = "Senha"
[SETTINGS_THEMES]
LEGEND_THEMES = "Temas"
@ -419,7 +423,7 @@ LABEL_CUSTOM_TYPE_DARK = "Escuro"
LABEL_CUSTOM_BACKGROUND_IMAGE = "Plano de fundo"
BUTTON_UPLOAD_BACKGROUND_IMAGE = "Upload imagem de plano de fundo (JPG, PNG)"
ERROR_FILE_IS_TOO_BIG = "Arquivo muito grande (1MB+)"
ERROR_FILE_TYPE_ERROR = "Tipo de arquivo inválido (JPG and PNG only)"
ERROR_FILE_TYPE_ERROR = "Tipo de arquivo inválido (somente JPG e PNG)"
ERROR_UNKNOWN = "Ocorreu um erro de upload de arquivo desconhecido"
[SETTINGS_SOCIAL]
@ -478,62 +482,63 @@ ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
[SETTINGS_OPEN_PGP]
LEGEND_OPEN_PGP = "OpenPGP"
BUTTON_ADD_OPEN_PGP_KEY = "Import OpenPGP Key"
BUTTON_GENERATE_OPEN_PGP_KEYS = "Generate OpenPGP Keys"
TITLE_PRIVATE = "Private"
TITLE_PUBLIC = "Public"
DELETING_ASK = "Are you sure?"
BUTTON_ADD_OPEN_PGP_KEY = "Importa chave OpenPGP"
BUTTON_GENERATE_OPEN_PGP_KEYS = "Gerar chave OpenPGP"
TITLE_PRIVATE = "Privado"
TITLE_PUBLIC = "Público"
DELETING_ASK = "Você tem certeza?"
[SHORTCUTS_HELP]
LEGEND_SHORTCUTS_HELP = "Keyboard shortcuts help"
TAB_MAILBOX = "Mailbox"
TAB_MESSAGE_LIST = "Message list"
TAB_MESSAGE_VIEW = "Message view"
TAB_COMPOSE = "Compose"
LABEL_OPEN_USER_DROPDOWN = "Open user dropdown"
LABEL_REPLY = "Reply"
LABEL_REPLY_ALL = "Reply All"
LABEL_FORWARD = "Forward"
LABEL_FORWARD_MULTIPLY = "Forward (multiply)"
LABEL_HELP = "Help"
LEGEND_SHORTCUTS_HELP = "Ajuda com os atalhos de teclado"
TAB_MAILBOX = "Caixa de correio"
TAB_MESSAGE_LIST = "Lista de mensagens"
TAB_MESSAGE_VIEW = "Ver mensagem"
TAB_COMPOSE = "Compor"
LABEL_OPEN_USER_DROPDOWN = "Abrir menu de usuário"
LABEL_REPLY = "Responder"
LABEL_REPLY_ALL = "Responder todos"
LABEL_FORWARD = "Encaminhar"
LABEL_FORWARD_MULTIPLY = "Encaminhar (múltiplos)"
LABEL_HELP = "Ajuda"
LABEL_CHECK_ALL = "Check All messages"
LABEL_ARCHIVE = "Archive"
LABEL_DELETE = "Delete"
LABEL_MOVE = "Move"
LABEL_READ = "Read selected messages"
LABEL_UNREAD = "Unread selected messages"
LABEL_IMPORTANT = "Important, star/flag selected messages"
LABEL_SEARCH = "Search"
LABEL_CANCEL_SEARCH = "Cancel search"
LABEL_FULLSCREEN_ENTER = "Fullscreen (Preview pane layout)"
LABEL_VIEW_MESSAGE_ENTER = "View message (No preview pane layout)"
LABEL_SWITCH_TO_MESSAGE = "Switch focus to selected message"
LABEL_CHECK_ALL = "Selecionar todas as mensagens"
LABEL_ARCHIVE = "Arquivo"
LABEL_DELETE = "Deletar"
LABEL_MOVE = "Mover"
LABEL_READ = "Marcar mensagens selecionadas como lida"
LABEL_UNREAD = "Marcar mensagens selecionadas como não lida"
LABEL_IMPORTANT = "Sinalizar mensagens selecionadas"
LABEL_SEARCH = "Procurar"
LABEL_CANCEL_SEARCH = "Cancelar pesquisa"
LABEL_FULLSCREEN_ENTER = "Tela-cheia (Com pré-visualização)"
LABEL_VIEW_MESSAGE_ENTER = "Ver mensagem (Sem pré-visualização)"
LABEL_SWITCH_TO_MESSAGE = "Mudar o foco para mensagem selecionada"
LABEL_SWITCH_TO_FOLDER_LIST = "Switch focus to folder list"
LABEL_FULLSCREEN_TOGGLE = "Toggle fullscreen mode"
LABEL_BLOCKQUOTES_TOGGLE = "Toggle message blockquotes"
LABEL_PRINT = "Print"
LABEL_EXIT_FULLSCREEN = "Exit fullscreen mode"
LABEL_CLOSE_MESSAGE = "Close message (No preview pane layout)"
LABEL_SWITCH_TO_LIST = "Switch focus back to message list"
LABEL_FULLSCREEN_TOGGLE = "Alternar modo tela-cheia"
LABEL_BLOCKQUOTES_TOGGLE = "Alternar blocos de citações de mensagem"
LABEL_PRINT = "Imprimir"
LABEL_EXIT_FULLSCREEN = "Sair do modo tela-cheia"
LABEL_CLOSE_MESSAGE = "Fechar mensagem (Sem pré-visualização)"
LABEL_SWITCH_TO_LIST = "Mudar o foco volta para a lista de mensagens"
LABEL_OPEN_COMPOSE_POPUP = "Open compose popup"
LABEL_OPEN_IDENTITIES_DROPDOWN = "Open identities dropdown"
LABEL_SAVE_MESSAGE = "Save message"
LABEL_SEND_MESSAGE = "Send message"
LABEL_CLOSE_COMPOSE = "Close compose"
LABEL_OPEN_COMPOSE_POPUP = "Abrir pop-up de composição"
LABEL_OPEN_IDENTITIES_DROPDOWN = "Abrir menu de identidades"
LABEL_SAVE_MESSAGE = "Salvar mensagem"
LABEL_SEND_MESSAGE = "Enviar mensagem"
LABEL_CLOSE_COMPOSE = "Fechar composição"
[PGP_NOTIFICATIONS]
NO_PUBLIC_KEYS_FOUND = "No public keys found"
NO_PUBLIC_KEYS_FOUND_FOR = "No public keys found for "%EMAIL%" email"
NO_PRIVATE_KEY_FOUND = "No private key found"
NO_PRIVATE_KEY_FOUND_FOR = "No private key found for "%EMAIL%" email"
UNVERIFIRED_SIGNATURE = "Unverified signature"
DECRYPTION_ERROR = "OpenPGP decryption error"
GOOD_SIGNATURE = "Good signature from %USER%"
PGP_ERROR = "OpenPGP error: %ERROR%"
SPECIFY_FROM_EMAIL = "Please specify FROM email address"
SPECIFY_AT_LEAST_ONE_RECIPIENT = "Please specify at least one recipient"
NO_PUBLIC_KEYS_FOUND = "Nenhuma chave pública encontrada"
NO_PUBLIC_KEYS_FOUND_FOR = "Nenhuma chave pública encontrada para o e-mail "%EMAIL%""
NO_PRIVATE_KEY_FOUND = "Nenhuma chave privada encontrada"
NO_PRIVATE_KEY_FOUND_FOR = "Nenhuma chave privada encontrada para o e-mail "%EMAIL%""
UNVERIFIRED_SIGNATURE = "Assinatura não verificada"
DECRYPTION_ERROR = "Erro de decripitação de OpenPGP"
GOOD_SIGNATURE = "Boa assinatura de %USER%"
PGP_ERROR = "Erro OpenPGP: %ERROR%"
SPECIFY_FROM_EMAIL = "Por favor, especifique endereço de email remetente"
SPECIFY_AT_LEAST_ONE_RECIPIENT = "Especifique pelo menos um destinatário"
[NOTIFICATIONS]
INVALID_TOKEN = "Senha inválida"
@ -545,15 +550,15 @@ SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE = "Esta ID social não é atribuído para q
SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE = "Esta ID social não é atribuído para qualquer conta de e-mail ainda. Entrar usando credenciais de e-mail e adicione ativar esse recurso em configurações de conta."
SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE = "Esta ID social não é atribuído para qualquer conta de e-mail ainda. Entrar usando credenciais de e-mail e adicione ativar esse recurso em configurações de conta."
DOMAIN_NOT_ALLOWED = "Este domínio não é permitido"
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
NEW_PASSWORD_SHORT = "Password is too short"
NEW_PASSWORD_WEAK = "Password is too easy"
ACCOUNT_NOT_ALLOWED = "Conta não permitida"
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Verificação de duas etapas requerida"
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Erro na verificação de duas etapas"
COULD_NOT_SAVE_NEW_PASSWORD = "Não foi possível salvar a nova senha"
CURRENT_PASSWORD_INCORRECT = "Senha atual incorreta"
NEW_PASSWORD_SHORT = "A senha é muito curta"
NEW_PASSWORD_WEAK = "A senha é muito fácil"
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
CONTACTS_SYNC_ERROR = "Contacts synchronization error"
CONTACTS_SYNC_ERROR = "A senha contém caracteres proibidos"
CANT_GET_MESSAGE_LIST = "Não é possível obter a lista de mensagens"
CANT_GET_MESSAGE = "Não é possível obter a mensagem"
CANT_DELETE_MESSAGE = "Não é possível excluir a mensagem"

View file

@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "Ninguém"
BUTTON_SHARE_ALL = "Todo mundo"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -134,7 +134,7 @@ PRINT_LABEL_DATE = "Data"
PRINT_LABEL_SUBJECT = "Subiect"
PRINT_LABEL_ATTACHMENTS = "Atașament"
MESSAGE_LOADING = "Se încarcă..."
MESSAGE_VIEW_DESC = "Selectați un mesaj pentru al vizualiza."
MESSAGE_VIEW_DESC = "Selectați un mesaj pentru al vizualiza."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Password"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP signed message (click to verify)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP encrypted message (click to decrypt)"
@ -185,6 +185,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "Nimic"
BUTTON_SHARE_ALL = "Toate"
BUTTON_SYNC = "Synchronization (CardDAV)"
@ -593,9 +594,9 @@ NO_SCRIPT_DESC = "Aparent, JavaScript nu este instalat, sau nu este acceptat de
Activați JavaScript, schimband optiunile browserului dvs., apoi încercați din nou."
NO_COOKIE_TITLE = "Cererea necesită Cookie-uri."
NO_COOKIE_DESC = "Aparent, Cookie sau nu este acceptat de browser-ul dvs. sau oprit.
NO_COOKIE_DESC = "Aparent, Cookie sau nu este acceptat de browser-ul dvs. sau oprit.
Întoarceți Cookie, schimband optiunile browserului dvs., apoi încercați din nou."
BAD_BROWSER_TITLE = "Browser-ul dvs. este depășit."
BAD_BROWSER_DESC = "Pentru a utiliza toate caracteristicile cererii,
BAD_BROWSER_DESC = "Pentru a utiliza toate caracteristicile cererii,
descărcați și instalați unul dintre aceste browsere:"

View file

@ -134,7 +134,7 @@ PRINT_LABEL_DATE = "Дата"
PRINT_LABEL_SUBJECT = "Тема"
PRINT_LABEL_ATTACHMENTS = "Файлы"
MESSAGE_LOADING = "Загрузка"
MESSAGE_VIEW_DESC = "Выберите сообщение для просмотра."
MESSAGE_VIEW_DESC = "Выберите сообщение для просмотра."
PGP_PASSWORD_INPUT_PLACEHOLDER = "Пароль"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP подписанное сообщение (нажмите, чтобы подтвердить)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP шифрованное сообщение (нажмите, чтобы расшифровать)"
@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Телефон"
ADD_MENU_URL = "Сайт"
ADD_MENU_ADDRESS = "Адрес"
ADD_MENU_BIRTHDAY = "День рождения"
ADD_MENU_TAGS = "Тэги"
BUTTON_SHARE_NONE = "Отменить"
BUTTON_SHARE_ALL = "Всем"
BUTTON_SYNC = "Синхронизация (CardDAV)"

View file

@ -186,6 +186,7 @@ ADD_MENU_PHONE = "Phone"
ADD_MENU_URL = "URL"
ADD_MENU_ADDRESS = "Address"
ADD_MENU_BIRTHDAY = "Birthday"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "Žiadne"
BUTTON_SHARE_ALL = "Všetko"
BUTTON_SYNC = "Synchronization (CardDAV)"

View file

@ -134,7 +134,7 @@ PRINT_LABEL_DATE = "日期"
PRINT_LABEL_SUBJECT = "主题"
PRINT_LABEL_ATTACHMENTS = "附件"
MESSAGE_LOADING = "加载中"
MESSAGE_VIEW_DESC = "在此查看列表中选中的邮件。"
MESSAGE_VIEW_DESC = "在此查看列表中选中的邮件。"
PGP_PASSWORD_INPUT_PLACEHOLDER = "Password"
PGP_SIGNED_MESSAGE_DESC = "OpenPGP signed message (click to verify)"
PGP_ENCRYPTED_MESSAGE_DESC = "OpenPGP encrypted message (click to decrypt)"
@ -186,6 +186,7 @@ ADD_MENU_PHONE = "电话"
ADD_MENU_URL = "网址"
ADD_MENU_ADDRESS = "地址"
ADD_MENU_BIRTHDAY = "生日"
ADD_MENU_TAGS = "Tags"
BUTTON_SHARE_NONE = "无"
BUTTON_SHARE_ALL = "所有人"
BUTTON_SYNC = "同步 (CardDAV)"
@ -305,7 +306,7 @@ LABEL_ARCHIVE = "存档"
BUTTON_CANCEL = "取消"
BUTTON_CLOSE = "关闭"
NOTIFICATION_SENT = "您没有选择 已发邮件 文件夹来存储已发送邮件。
NOTIFICATION_SENT = "您没有选择 已发邮件 文件夹来存储已发送邮件。
如果您不希望保存已发邮件,请选择 不使用 选项。"
NOTIFICATION_DRAFTS = "您没有选择 草稿 文件夹来存储邮件草稿。"

View file

@ -637,7 +637,7 @@
border-radius: 8px;
}
/*! normalize.css 2012-03-11T12:53 UTC - http://github.com/necolas/normalize.css */
/* =============================================================================
@ -1142,7 +1142,7 @@ table {
border-collapse: collapse;
border-spacing: 0;
}
@charset "UTF-8";
@font-face {
@ -1513,7 +1513,7 @@ table {
.icon-resize-out:before {
content: "\e06d";
}
/** initial setup **/
.nano {
/*
@ -1630,7 +1630,7 @@ table {
.nano > .pane2:hover > .slider2, .nano > .pane2.active > .slider2 {
background-color: rgba(0, 0, 0, 0.4);
}
/* Magnific Popup CSS */
.mfp-bg {
top: 0;
@ -1995,7 +1995,7 @@ img.mfp-img {
right: 0;
padding-top: 0; }
/* overlay at start */
.mfp-fade.mfp-bg {
@ -2041,7 +2041,7 @@ img.mfp-img {
-moz-transform: translateX(50px);
transform: translateX(50px);
}
.simple-pace {
-webkit-pointer-events: none;
pointer-events: none;
@ -2112,7 +2112,7 @@ img.mfp-img {
@keyframes simple-pace-stripe-animation {
0% { transform: none; transform: none; }
100% { transform: translate(-32px, 0); transform: translate(-32px, 0); }
}
}
.inputosaurus-container {
background-color:#fff;
border:1px solid #bcbec0;
@ -2180,7 +2180,7 @@ img.mfp-img {
box-shadow:none;
}
.inputosaurus-input-hidden { display:none; }
.flag-wrapper {
width: 24px;
height: 16px;
@ -2224,7 +2224,7 @@ img.mfp-img {
.flag.flag-pt-br {background-position: -192px -11px}
.flag.flag-cn, .flag.flag-zh-tw, .flag.flag-zh-cn, .flag.flag-zh-hk {background-position: -208px -22px}
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
.clearfix {
*zoom: 1;
@ -6348,21 +6348,26 @@ html.rgba.textshadow .btn.btn-primary {
.tooltip {
font-size: 14px;
z-index: 2000 !important;
overflow: hidden;
text-overflow: ellipsis;
}
.tooltip.in {
opacity: 1;
filter: alpha(opacity=100);
}
.tooltip .tooltip-big {
font-size: 18px;
padding: 0 10px;
}
.tooltip-inner {
.tooltip .tooltip-inner {
max-width: 400px;
text-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);
padding: 5px 10px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
}
.tooltip .tooltip-big {
font-size: 18px;
padding: 0 10px;
white-space: nowrap;
}
.btn-group > .btn:first-child {
-webkit-border-top-left-radius: 3px;
-moz-border-radius-topleft: 3px;
@ -6851,6 +6856,9 @@ html.cssanimations .e-spinner .e-bounce {
height: 15px;
background-color: #ddd;
margin: 0 5px;
-webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);
box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3);
border-radius: 100%;
display: inline-block;
-webkit-animation: bouncedelay 1.4s infinite ease-in-out;
@ -7186,17 +7194,17 @@ html.rl-ctrl-key-pressed .hidden-on-ctrl {
position: absolute;
left: 0;
width: 100%;
height: 2px;
height: 10px;
z-index: 102;
-webkit-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.5);
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.3);
box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.3);
}
.nano:before {
top: -2px;
top: -10px;
}
.nano:after {
bottom: -2px;
bottom: -10px;
}
.nano.nano-scrolllimit-top:before,
.nano.nano-scrolllimit-bottom:after {
@ -7363,6 +7371,7 @@ html.rl-ctrl-key-pressed .hidden-on-ctrl {
right: 0;
overflow: hidden;
overflow-y: auto;
min-width: 100px;
}
.b-folders .b-content .content {
-webkit-overflow-scrolling: touch;

File diff suppressed because one or more lines are too long

View file

@ -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';
@ -77,14 +77,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 {?}
*/
@ -238,7 +238,7 @@ if (Globals.bAllowPdfPreview && navigator && navigator.mimeTypes)
return oType && 'application/pdf' === oType.type;
});
}
Consts.Defaults = {};
Consts.Values = {};
Consts.DataImages = {};
@ -356,7 +356,7 @@ Consts.DataImages.UserDotPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA
* @type {string}
*/
Consts.DataImages.TranspPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=';
/**
* @enum {string}
*/
@ -394,6 +394,7 @@ Enums.Capa = {
'Prefetch': 'PREFETCH',
'Gravatar': 'GRAVATAR',
'Themes': 'THEMES',
'Filters': 'FILTERS',
'AdditionalAccounts': 'ADDITIONAL_ACCOUNTS',
'AdditionalIdentities': 'ADDITIONAL_IDENTITIES'
};
@ -635,6 +636,34 @@ Enums.Layout = {
'BottomPreview': 2
};
/**
* @enum {number}
*/
Enums.FilterConditionField = {
'From': 0,
'To': 1,
'Subject': 2
};
/**
* @enum {number}
*/
Enums.FilterConditionType = {
'contains': 0,
'NotContains': 1,
'EqualTo': 2,
'NotEqualTo': 3
};
/**
* @enum {number}
*/
Enums.FiltersAction = {
'None': 0,
'Move': 1,
'Delete': 2
};
/**
* @enum {number}
*/
@ -702,7 +731,7 @@ Enums.Notification = {
'NewPasswordShort': 132,
'NewPasswordWeak': 133,
'NewPasswordForbidden': 134,
'ContactsSyncError': 140,
'CantGetMessageList': 201,
@ -731,13 +760,13 @@ Enums.Notification = {
'CantDeletePackage': 702,
'InvalidPluginPackage': 703,
'UnsupportedPluginPackage': 704,
'LicensingServerIsUnavailable': 710,
'LicensingExpired': 711,
'LicensingBanned': 712,
'DemoSendMessageError': 750,
'AccountAlreadyExists': 801,
'MailServerError': 901,
@ -745,7 +774,7 @@ Enums.Notification = {
'UnknownNotification': 999,
'UnknownError': 999
};
Utils.trim = $.trim;
Utils.inArray = $.inArray;
Utils.isArray = _.isArray;
@ -2495,7 +2524,7 @@ Utils.detectDropdownVisibility = _.debounce(function () {
return oItem.hasClass('open');
}));
}, 50);
// Base64 encode / decode
// http://www.webtoolkit.info/
@ -2658,7 +2687,7 @@ Base64 = {
}
};
/*jslint bitwise: false*/
/*jslint bitwise: false*/
ko.bindingHandlers.tooltip = {
'init': function (oElement, fValueAccessor) {
if (!Globals.bMobileDevice)
@ -2739,7 +2768,7 @@ ko.bindingHandlers.tooltip3 = {
$document.click(function () {
$oEl.tooltip('hide');
});
Globals.tooltipTrigger.subscribe(function () {
$oEl.tooltip('hide');
});
@ -3475,7 +3504,7 @@ ko.observable.fn.validateFunc = function (fFunc)
return this;
};
/**
* @constructor
*/
@ -3787,7 +3816,7 @@ LinkBuilder.prototype.socialFacebook = function ()
{
return this.sServer + 'SocialFacebook' + ('' !== this.sSpecSuffix ? '/' + this.sSpecSuffix + '/' : '');
};
/**
* @type {Object}
*/
@ -3881,7 +3910,7 @@ Plugins.settingsGet = function (sPluginSection, sName)
};
/**
* @constructor
*/
@ -3955,7 +3984,7 @@ CookieDriver.prototype.get = function (sKey)
return mResult;
};
/**
* @constructor
*/
@ -4026,7 +4055,7 @@ LocalStorageDriver.prototype.get = function (sKey)
return mResult;
};
/**
* @constructor
*/
@ -4069,7 +4098,7 @@ LocalStorage.prototype.get = function (iKey)
{
return this.oDriver ? this.oDriver.get('p' + iKey) : null;
};
/**
* @constructor
*/
@ -4082,7 +4111,7 @@ KnoinAbstractBoot.prototype.bootstart = function ()
{
};
/**
* @param {string=} sPosition = ''
* @param {string=} sTemplate = ''
@ -4175,7 +4204,7 @@ KnoinAbstractViewModel.prototype.registerPopupKeyDown = function ()
return true;
});
};
/**
* @param {string} sScreenName
* @param {?=} aViewModels = []
@ -4251,7 +4280,7 @@ KnoinAbstractScreen.prototype.__start = function ()
this.oCross = oRoute;
}
};
/**
* @constructor
*/
@ -4656,7 +4685,7 @@ Knoin.prototype.bootstart = function ()
};
kn = new Knoin();
/**
* @param {string=} sEmail
* @param {string=} sName
@ -5020,7 +5049,7 @@ EmailModel.prototype.inputoTagLine = function ()
{
return 0 < this.name.length ? this.name + ' (' + this.email + ')' : this.email;
};
/**
* @constructor
*/
@ -5064,7 +5093,7 @@ ContactTagModel.prototype.toLine = function (bEncodeHtml)
return (Utils.isUnd(bEncodeHtml) ? false : !!bEncodeHtml) ?
Utils.encodeHtml(this.name()) : this.name();
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5359,7 +5388,7 @@ PopupsDomainViewModel.prototype.clearForm = function ()
this.smtpAuth(true);
this.whiteList('');
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5496,7 +5525,7 @@ PopupsPluginViewModel.prototype.onBuild = function ()
}
}, this));
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5612,7 +5641,7 @@ PopupsActivateViewModel.prototype.validateSubscriptionKey = function ()
{
var sValue = this.key();
return '' === sValue || !!/^RL[\d]+-[A-Z0-9\-]+Z$/.test(Utils.trim(sValue));
};
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5672,7 +5701,7 @@ PopupsLanguagesViewModel.prototype.changeLanguage = function (sLang)
RL.data().mainLanguage(sLang);
this.cancelCommand();
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5778,7 +5807,7 @@ PopupsAskViewModel.prototype.onBuild = function ()
}, this));
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5865,7 +5894,7 @@ AdminLoginViewModel.prototype.onHide = function ()
{
this.loginFocus(false);
};
/**
* @param {?} oScreen
*
@ -5889,7 +5918,7 @@ AdminMenuViewModel.prototype.link = function (sRoute)
{
return '#/' + sRoute;
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5913,7 +5942,7 @@ AdminPaneViewModel.prototype.logoutClick = function ()
RL.remote().adminLogout(function () {
RL.loginAndLogoutReload();
});
};
};
/**
* @constructor
*/
@ -6013,7 +6042,7 @@ AdminGeneral.prototype.selectLanguage = function ()
{
kn.showScreenPopup(PopupsLanguagesViewModel);
};
/**
* @constructor
*/
@ -6065,7 +6094,7 @@ AdminLogin.prototype.onBuild = function ()
}, 50);
};
/**
* @constructor
*/
@ -6134,7 +6163,7 @@ AdminBranding.prototype.onBuild = function ()
}, 50);
};
/**
* @constructor
*/
@ -6354,7 +6383,7 @@ AdminContacts.prototype.onBuild = function ()
}, 50);
};
/**
* @constructor
*/
@ -6443,13 +6472,12 @@ AdminDomains.prototype.onDomainListChangeRequest = function ()
{
RL.reloadDomainList();
};
/**
* @constructor
*/
function AdminSecurity()
{
this.csrfProtection = ko.observable(!!RL.settingsGet('UseTokenProtection'));
this.capaOpenPGP = ko.observable(RL.capa(Enums.Capa.OpenPGP));
this.capaTwoFactorAuth = ko.observable(RL.capa(Enums.Capa.TwoFactor));
@ -6472,13 +6500,13 @@ function AdminSecurity()
this.adminPasswordUpdateSuccess(false);
this.adminPasswordNewError(false);
}, this);
this.adminPasswordNew2.subscribe(function () {
this.adminPasswordUpdateError(false);
this.adminPasswordUpdateSuccess(false);
this.adminPasswordNewError(false);
}, this);
this.saveNewAdminPasswordCommand = Utils.createCommand(this, function () {
if (this.adminPasswordNew() !== this.adminPasswordNew2())
@ -6522,12 +6550,6 @@ AdminSecurity.prototype.onNewAdminPasswordResponse = function (sResult, oData)
AdminSecurity.prototype.onBuild = function ()
{
this.csrfProtection.subscribe(function (bValue) {
RL.remote().saveAdminConfig(Utils.emptyFunction, {
'TokenProtection': bValue ? '1' : '0'
});
});
this.capaOpenPGP.subscribe(function (bValue) {
RL.remote().saveAdminConfig(Utils.emptyFunction, {
'CapaOpenPGP': bValue ? '1' : '0'
@ -6555,7 +6577,7 @@ AdminSecurity.prototype.phpInfoLink = function ()
{
return RL.link().phpInfo();
};
/**
* @constructor
*/
@ -6671,7 +6693,7 @@ AdminSocial.prototype.onBuild = function ()
}, 50);
};
/**
* @constructor
*/
@ -6768,7 +6790,7 @@ AdminPlugins.prototype.onPluginDisableRequest = function (sResult, oData)
RL.reloadPluginList();
};
/**
* @constructor
*/
@ -6866,7 +6888,7 @@ AdminPackages.prototype.installPackage = function (oPackage)
RL.remote().packageInstall(this.requestHelper(oPackage, true), oPackage);
}
};
/**
* @constructor
*/
@ -6917,7 +6939,7 @@ AdminLicensing.prototype.licenseExpiredMomentValue = function ()
{
var oDate = moment.unix(this.licenseExpired());
return oDate.format('LL') + ' (' + oDate.from(moment()) + ')';
};
};
/**
* @constructor
*/
@ -6992,7 +7014,7 @@ AdminAbout.prototype.updateCoreData = function ()
RL.updateCoreData();
}
};
/**
* @constructor
*/
@ -7123,7 +7145,7 @@ AbstractData.prototype.populateDataOnStart = function()
this.contactsIsAllowed(!!RL.settingsGet('ContactsIsAllowed'));
};
/**
* @constructor
* @extends AbstractData
@ -7174,7 +7196,7 @@ _.extend(AdminDataStorage.prototype, AbstractData.prototype);
AdminDataStorage.prototype.populateDataOnStart = function()
{
AbstractData.prototype.populateDataOnStart.call(this);
};
};
/**
* @constructor
*/
@ -7448,7 +7470,7 @@ AbstractAjaxRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
'Version': sVersion
});
};
/**
* @constructor
* @extends AbstractAjaxRemoteStorage
@ -7709,7 +7731,7 @@ AdminAjaxRemoteStorage.prototype.adminPing = function (fCallback)
{
this.defaultRequest(fCallback, 'AdminPing');
};
/**
* @constructor
*/
@ -7792,7 +7814,7 @@ AbstractCacheStorage.prototype.setEmailsPicsHashesData = function (oData)
{
this.oEmailsPicsHashes = oData;
};
/**
* @constructor
* @extends AbstractCacheStorage
@ -7803,7 +7825,7 @@ function AdminCacheStorage()
}
_.extend(AdminCacheStorage.prototype, AbstractCacheStorage.prototype);
/**
* @param {Array} aViewModels
* @constructor
@ -7983,7 +8005,7 @@ AbstractSettings.prototype.routes = function ()
['', oRules]
];
};
/**
* @constructor
* @extends KnoinAbstractScreen
@ -7998,7 +8020,7 @@ _.extend(AdminLoginScreen.prototype, KnoinAbstractScreen.prototype);
AdminLoginScreen.prototype.onShow = function ()
{
RL.setTitle('');
};
};
/**
* @constructor
* @extends AbstractSettings
@ -8016,7 +8038,7 @@ _.extend(AdminSettingsScreen.prototype, AbstractSettings.prototype);
AdminSettingsScreen.prototype.onShow = function ()
{
RL.setTitle('');
};
};
/**
* @constructor
* @extends KnoinAbstractBoot
@ -8374,7 +8396,7 @@ AbstractApp.prototype.bootstart = function ()
ssm.ready();
};
/**
* @constructor
* @extends AbstractApp
@ -8675,7 +8697,7 @@ AdminApp.prototype.bootstart = function ()
* @type {AdminApp}
*/
RL = new AdminApp();
$html.addClass(Globals.bMobileDevice ? 'mobile' : 'no-mobile');
$window.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
@ -8726,9 +8748,9 @@ window['__RLBOOT'] = function (fCall) {
window['__RLBOOT'] = null;
});
};
if (window.SimplePace) {
window.SimplePace.add(10);
}
}
}(window, jQuery, ko, crossroads, hasher, _));

File diff suppressed because one or more lines are too long

View file

@ -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, _, ifvisible, key) {
/*! RainLoop Webmail Main Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (window, $, ko, crossroads, hasher, moment, Jua, _, ifvisible, key) {
'use strict';
@ -77,7 +77,7 @@ var
$document = $(window.document),
NotificationClass = window.Notification && window.Notification.requestPermission ? window.Notification : null
;
;
/*jshint onevar: false*/
/**
* @type {?RainLoopApp}
@ -88,7 +88,7 @@ var
$proxyDiv = $('<div></div>')
;
/*jshint onevar: true*/
/**
* @type {?}
*/
@ -242,7 +242,7 @@ if (Globals.bAllowPdfPreview && navigator && navigator.mimeTypes)
return oType && 'application/pdf' === oType.type;
});
}
Consts.Defaults = {};
Consts.Values = {};
Consts.DataImages = {};
@ -360,7 +360,7 @@ Consts.DataImages.UserDotPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA
* @type {string}
*/
Consts.DataImages.TranspPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=';
/**
* @enum {string}
*/
@ -398,6 +398,7 @@ Enums.Capa = {
'Prefetch': 'PREFETCH',
'Gravatar': 'GRAVATAR',
'Themes': 'THEMES',
'Filters': 'FILTERS',
'AdditionalAccounts': 'ADDITIONAL_ACCOUNTS',
'AdditionalIdentities': 'ADDITIONAL_IDENTITIES'
};
@ -639,6 +640,34 @@ Enums.Layout = {
'BottomPreview': 2
};
/**
* @enum {number}
*/
Enums.FilterConditionField = {
'From': 0,
'To': 1,
'Subject': 2
};
/**
* @enum {number}
*/
Enums.FilterConditionType = {
'contains': 0,
'NotContains': 1,
'EqualTo': 2,
'NotEqualTo': 3
};
/**
* @enum {number}
*/
Enums.FiltersAction = {
'None': 0,
'Move': 1,
'Delete': 2
};
/**
* @enum {number}
*/
@ -706,7 +735,7 @@ Enums.Notification = {
'NewPasswordShort': 132,
'NewPasswordWeak': 133,
'NewPasswordForbidden': 134,
'ContactsSyncError': 140,
'CantGetMessageList': 201,
@ -735,13 +764,13 @@ Enums.Notification = {
'CantDeletePackage': 702,
'InvalidPluginPackage': 703,
'UnsupportedPluginPackage': 704,
'LicensingServerIsUnavailable': 710,
'LicensingExpired': 711,
'LicensingBanned': 712,
'DemoSendMessageError': 750,
'AccountAlreadyExists': 801,
'MailServerError': 901,
@ -749,7 +778,7 @@ Enums.Notification = {
'UnknownNotification': 999,
'UnknownError': 999
};
Utils.trim = $.trim;
Utils.inArray = $.inArray;
Utils.isArray = _.isArray;
@ -2499,7 +2528,7 @@ Utils.detectDropdownVisibility = _.debounce(function () {
return oItem.hasClass('open');
}));
}, 50);
// Base64 encode / decode
// http://www.webtoolkit.info/
@ -2662,7 +2691,7 @@ Base64 = {
}
};
/*jslint bitwise: false*/
/*jslint bitwise: false*/
ko.bindingHandlers.tooltip = {
'init': function (oElement, fValueAccessor) {
if (!Globals.bMobileDevice)
@ -2743,7 +2772,7 @@ ko.bindingHandlers.tooltip3 = {
$document.click(function () {
$oEl.tooltip('hide');
});
Globals.tooltipTrigger.subscribe(function () {
$oEl.tooltip('hide');
});
@ -3479,7 +3508,7 @@ ko.observable.fn.validateFunc = function (fFunc)
return this;
};
/**
* @constructor
*/
@ -3791,7 +3820,7 @@ LinkBuilder.prototype.socialFacebook = function ()
{
return this.sServer + 'SocialFacebook' + ('' !== this.sSpecSuffix ? '/' + this.sSpecSuffix + '/' : '');
};
/**
* @type {Object}
*/
@ -3885,7 +3914,7 @@ Plugins.settingsGet = function (sPluginSection, sName)
};
function NewHtmlEditorWrapper(oElement, fOnBlur, fOnReady, fOnModeChange)
{
var self = this;
@ -4105,7 +4134,7 @@ NewHtmlEditorWrapper.prototype.clear = function (bFocus)
this.setHtml('', bFocus);
};
/**
* @constructor
* @param {koProperty} oKoList
@ -4814,7 +4843,7 @@ Selector.prototype.on = function (sEventName, fCallback)
{
this.oCallbacks[sEventName] = fCallback;
};
/**
* @constructor
*/
@ -4888,7 +4917,7 @@ CookieDriver.prototype.get = function (sKey)
return mResult;
};
/**
* @constructor
*/
@ -4959,7 +4988,7 @@ LocalStorageDriver.prototype.get = function (sKey)
return mResult;
};
/**
* @constructor
*/
@ -5002,7 +5031,7 @@ LocalStorage.prototype.get = function (iKey)
{
return this.oDriver ? this.oDriver.get('p' + iKey) : null;
};
/**
* @constructor
*/
@ -5015,7 +5044,7 @@ KnoinAbstractBoot.prototype.bootstart = function ()
{
};
/**
* @param {string=} sPosition = ''
* @param {string=} sTemplate = ''
@ -5108,7 +5137,7 @@ KnoinAbstractViewModel.prototype.registerPopupKeyDown = function ()
return true;
});
};
/**
* @param {string} sScreenName
* @param {?=} aViewModels = []
@ -5184,7 +5213,7 @@ KnoinAbstractScreen.prototype.__start = function ()
this.oCross = oRoute;
}
};
/**
* @constructor
*/
@ -5589,7 +5618,7 @@ Knoin.prototype.bootstart = function ()
};
kn = new Knoin();
/**
* @param {string=} sEmail
* @param {string=} sName
@ -5953,7 +5982,7 @@ EmailModel.prototype.inputoTagLine = function ()
{
return 0 < this.name.length ? this.name + ' (' + this.email + ')' : this.email;
};
/**
* @constructor
*/
@ -6077,7 +6106,7 @@ ContactModel.prototype.lineAsCcc = function ()
return aResult.join(' ');
};
/**
* @param {number=} iType = Enums.ContactPropertyType.Unknown
* @param {string=} sTypeStr = ''
@ -6106,7 +6135,7 @@ function ContactPropertyModel(iType, sTypeStr, sValue, bFocused, sPlaceholder)
}, this);
}
/**
* @constructor
*/
@ -6150,7 +6179,7 @@ ContactTagModel.prototype.toLine = function (bEncodeHtml)
return (Utils.isUnd(bEncodeHtml) ? false : !!bEncodeHtml) ?
Utils.encodeHtml(this.name()) : this.name();
};
/**
* @constructor
*/
@ -6386,7 +6415,7 @@ AttachmentModel.prototype.iconClass = function ()
return sClass;
};
/**
* @constructor
* @param {string} sId
@ -6447,7 +6476,7 @@ ComposeAttachmentModel.prototype.initByUploadJson = function (oJsonAttachment)
}
return bResult;
};
};
/**
* @constructor
*/
@ -7641,7 +7670,7 @@ MessageModel.prototype.flagHash = function ()
return [this.deleted(), this.unseen(), this.flagged(), this.answered(), this.forwarded(),
this.isReadReceipt()].join('');
};
/**
* @constructor
*/
@ -7973,7 +8002,7 @@ FolderModel.prototype.printableFullName = function ()
{
return this.fullName.split(this.delimiter).join(' / ');
};
/**
* @param {string} sEmail
* @param {boolean=} bCanBeDelete = true
@ -7994,7 +8023,7 @@ AccountModel.prototype.email = '';
AccountModel.prototype.changeAccountLink = function ()
{
return RL.link().change(this.email);
};
};
/**
* @param {string} sId
* @param {string} sEmail
@ -8030,7 +8059,49 @@ IdentityModel.prototype.formattedNameForEmail = function ()
var sName = this.name();
return '' === sName ? this.email() : '"' + Utils.quoteName(sName) + '" <' + this.email() + '>';
};
/**
* @constructor
*/
function FilterConditionModel()
{
}
/**
* @constructor
*/
function FilterModel()
{
this.enabled = ko.observable(true);
this.conditions = ko.observableArray([]);
this.action = ko.observable(Enums.FiltersAction.None);
}
FilterModel.prototype.deleteCondition = function (oCondition)
{
this.conditions.remove(oCondition);
};
FilterModel.prototype.addCondition = function ()
{
this.conditions.push(new FilterConditionModel());
};
FilterModel.prototype.parse = function (oItem)
{
var bResult = false;
if (oItem && 'Object/Filter' === oItem['@Object'])
{
this.name(Utils.pString(oItem['Name']));
bResult = true;
}
return bResult;
};
/**
* @param {string} iIndex
* @param {string} sGuID
@ -8061,7 +8132,7 @@ OpenPgpKeyModel.prototype.user = '';
OpenPgpKeyModel.prototype.email = '';
OpenPgpKeyModel.prototype.armor = '';
OpenPgpKeyModel.prototype.isPrivate = false;
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -8157,7 +8228,7 @@ PopupsFolderClearViewModel.prototype.onShow = function (oFolder)
this.selectedFolder(oFolder);
}
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -8267,7 +8338,7 @@ PopupsFolderCreateViewModel.prototype.onFocus = function ()
{
this.folderName.focused(true);
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -8380,7 +8451,7 @@ PopupsFolderSystemViewModel.prototype.onShow = function (iNotificationType)
this.notification(sNotification);
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -9868,7 +9939,7 @@ PopupsComposeViewModel.prototype.triggerForResize = function ()
this.editorResizeThrottle();
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -10610,7 +10681,7 @@ PopupsContactsViewModel.prototype.onHide = function ()
// oItem.checked(false);
// });
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -10746,7 +10817,7 @@ PopupsAdvancedSearchViewModel.prototype.onFocus = function ()
{
this.fromFocus(true);
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -10858,7 +10929,7 @@ PopupsAddAccountViewModel.prototype.onFocus = function ()
{
this.emailFocus(true);
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -10944,7 +11015,7 @@ PopupsAddOpenPgpKeyViewModel.prototype.onFocus = function ()
{
this.key.focus(true);
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -10984,7 +11055,7 @@ PopupsViewOpenPgpKeyViewModel.prototype.onShow = function (oOpenPgpKey)
this.key(oOpenPgpKey.armor);
}
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11079,7 +11150,7 @@ PopupsGenerateNewOpenPgpKeyViewModel.prototype.onFocus = function ()
{
this.email.focus(true);
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11319,7 +11390,7 @@ PopupsComposeOpenPgpViewModel.prototype.onShow = function (fCallback, sText, sFr
this.to(aRec);
this.text(sText);
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11467,7 +11538,7 @@ PopupsIdentityViewModel.prototype.onFocus = function ()
this.email.focused(true);
}
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11527,7 +11598,7 @@ PopupsLanguagesViewModel.prototype.changeLanguage = function (sLang)
RL.data().mainLanguage(sLang);
this.cancelCommand();
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11581,7 +11652,7 @@ PopupsTwoFactorTestViewModel.prototype.onFocus = function ()
{
this.code.focused(true);
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11687,7 +11758,7 @@ PopupsAskViewModel.prototype.onBuild = function ()
}, this));
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11732,7 +11803,7 @@ PopupsKeyboardShortcutsHelpViewModel.prototype.onBuild = function (oDom)
}
}, this));
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -12044,7 +12115,7 @@ LoginViewModel.prototype.selectLanguage = function ()
kn.showScreenPopup(PopupsLanguagesViewModel);
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -12054,7 +12125,7 @@ function AbstractSystemDropDownViewModel()
KnoinAbstractViewModel.call(this, 'Right', 'SystemDropDown');
var oData = RL.data();
this.accounts = oData.accounts;
this.accountEmail = oData.accountEmail;
this.accountsLoading = oData.accountsLoading;
@ -12082,7 +12153,7 @@ AbstractSystemDropDownViewModel.prototype.accountClick = function (oAccount, oEv
self.accountsLoading(false);
}, 1000);
}
return true;
};
@ -12140,7 +12211,7 @@ AbstractSystemDropDownViewModel.prototype.onBuild = function ()
}
});
};
/**
* @constructor
* @extends AbstractSystemDropDownViewModel
@ -12152,7 +12223,7 @@ function MailBoxSystemDropDownViewModel()
}
Utils.extendAsViewModel('MailBoxSystemDropDownViewModel', MailBoxSystemDropDownViewModel, AbstractSystemDropDownViewModel);
/**
* @constructor
* @extends AbstractSystemDropDownViewModel
@ -12164,7 +12235,7 @@ function SettingsSystemDropDownViewModel()
}
Utils.extendAsViewModel('SettingsSystemDropDownViewModel', SettingsSystemDropDownViewModel, AbstractSystemDropDownViewModel);
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -12373,7 +12444,7 @@ MailBoxFolderListViewModel.prototype.contactsClick = function ()
kn.showScreenPopup(PopupsContactsViewModel);
}
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -13276,7 +13347,7 @@ MailBoxMessageListViewModel.prototype.initUploaderForAppend = function ()
;
return !!oJua;
};
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -13968,7 +14039,7 @@ MailBoxMessageViewViewModel.prototype.readReceipt = function (oMessage)
RL.reloadFlagsCurrentMessageListAndMessageFromCache();
}
};
/**
* @param {?} oScreen
*
@ -13997,7 +14068,7 @@ SettingsMenuViewModel.prototype.backToMailBoxClick = function ()
{
kn.setHash(RL.link().inbox());
};
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -14028,7 +14099,7 @@ SettingsPaneViewModel.prototype.backToMailBoxClick = function ()
{
kn.setHash(RL.link().inbox());
};
/**
* @constructor
*/
@ -14188,7 +14259,7 @@ SettingsGeneral.prototype.selectLanguage = function ()
{
kn.showScreenPopup(PopupsLanguagesViewModel);
};
/**
* @constructor
*/
@ -14238,7 +14309,7 @@ SettingsContacts.prototype.onBuild = function ()
//{
//
//};
/**
* @constructor
*/
@ -14319,7 +14390,7 @@ SettingsAccounts.prototype.deleteAccount = function (oAccountToRemove)
}
}
};
/**
* @constructor
*/
@ -14407,7 +14478,7 @@ SettingsIdentity.prototype.onBuild = function ()
}, 50);
};
/**
* @constructor
*/
@ -14565,7 +14636,37 @@ SettingsIdentities.prototype.onBuild = function (oDom)
});
}, 50);
};
};
/**
* @constructor
*/
function SettingsFilters()
{
// var oData = RL.data();
this.filters = ko.observableArray([]);
this.filters.loading = ko.observable(false);
}
Utils.addSettingsViewModel(SettingsFilters, 'SettingsFilters', 'SETTINGS_LABELS/LABEL_FILTERS_NAME', 'filters');
//SettingsFilters.prototype.onBuild = function ()
//{
//};
SettingsFilters.prototype.deleteFilter = function (oFilter)
{
this.filters.remove(oFilter);
};
SettingsFilters.prototype.addFilter = function ()
{
var oFilter = new FilterModel();
oFilter.addCondition();
this.filters.push(oFilter);
};
/**
* @constructor
*/
@ -14715,7 +14816,7 @@ SettingsSecurity.prototype.onBuild = function ()
this.processing(true);
RL.remote().getTwoFactor(this.onResult);
};
/**
* @constructor
*/
@ -14782,7 +14883,7 @@ function SettingsSocialScreen()
}
Utils.addSettingsViewModel(SettingsSocialScreen, 'SettingsSocial', 'SETTINGS_LABELS/LABEL_SOCIAL_NAME', 'social');
/**
* @constructor
*/
@ -14887,7 +14988,7 @@ SettingsChangePasswordScreen.prototype.onChangePasswordResponse = function (sRes
Utils.getNotification(Enums.Notification.CouldNotSaveNewPassword));
}
};
/**
* @constructor
*/
@ -15082,7 +15183,7 @@ SettingsFolders.prototype.unSubscribeFolder = function (oFolder)
oFolder.subScribed(false);
};
/**
* @constructor
*/
@ -15196,7 +15297,7 @@ SettingsThemes.prototype.onBuild = function ()
};
}));
};
/**
* @constructor
*/
@ -15264,7 +15365,7 @@ SettingsOpenPGP.prototype.deleteOpenPgpKey = function (oOpenPgpKeyToRemove)
RL.reloadOpenPgpKeys();
}
}
};
};
/**
* @constructor
*/
@ -15395,7 +15496,7 @@ AbstractData.prototype.populateDataOnStart = function()
this.contactsIsAllowed(!!RL.settingsGet('ContactsIsAllowed'));
};
/**
* @constructor
* @extends AbstractData
@ -16648,7 +16749,7 @@ WebMailDataStorage.prototype.findSelfPrivateKey = function (sPassword)
{
return this.findPrivateKeyByEmail(this.accountEmail(), sPassword);
};
/**
* @constructor
*/
@ -16922,7 +17023,7 @@ AbstractAjaxRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
'Version': sVersion
});
};
/**
* @constructor
* @extends AbstractAjaxRemoteStorage
@ -17715,7 +17816,7 @@ WebMailAjaxRemoteStorage.prototype.socialUsers = function (fCallback)
this.defaultRequest(fCallback, 'SocialUsers');
};
/**
* @constructor
*/
@ -17798,7 +17899,7 @@ AbstractCacheStorage.prototype.setEmailsPicsHashesData = function (oData)
{
this.oEmailsPicsHashes = oData;
};
/**
* @constructor
* @extends AbstractCacheStorage
@ -18116,7 +18217,7 @@ WebMailCacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function
this.setMessageFlagsToCache(sFolder, sUid, aFlags);
}
};
/**
* @param {Array} aViewModels
* @constructor
@ -18296,7 +18397,7 @@ AbstractSettings.prototype.routes = function ()
['', oRules]
];
};
/**
* @constructor
* @extends KnoinAbstractScreen
@ -18311,7 +18412,7 @@ _.extend(LoginScreen.prototype, KnoinAbstractScreen.prototype);
LoginScreen.prototype.onShow = function ()
{
RL.setTitle('');
};
};
/**
* @constructor
* @extends KnoinAbstractScreen
@ -18482,7 +18583,7 @@ MailBoxScreen.prototype.routes = function ()
[/^([^\/]*)$/, {'normalize_': fNormS}]
];
};
/**
* @constructor
* @extends AbstractSettings
@ -18509,7 +18610,7 @@ SettingsScreen.prototype.onShow = function ()
RL.setTitle(this.sSettingsTitle);
RL.data().keyScope(Enums.KeyState.Settings);
};
/**
* @constructor
* @extends KnoinAbstractBoot
@ -18867,7 +18968,7 @@ AbstractApp.prototype.bootstart = function ()
ssm.ready();
};
/**
* @constructor
* @extends AbstractApp
@ -19940,6 +20041,11 @@ RainLoopApp.prototype.bootstart = function ()
Utils.removeSettingsViewModel(SettingsThemes);
}
if (!RL.capa(Enums.Capa.Filters))
{
Utils.removeSettingsViewModel(SettingsFilters);
}
if (!bGoogle && !bFacebook && !bTwitter)
{
Utils.removeSettingsViewModel(SettingsSocialScreen);
@ -20169,7 +20275,7 @@ RainLoopApp.prototype.bootstart = function ()
* @type {RainLoopApp}
*/
RL = new RainLoopApp();
$html.addClass(Globals.bMobileDevice ? 'mobile' : 'no-mobile');
$window.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
@ -20220,9 +20326,9 @@ window['__RLBOOT'] = function (fCall) {
window['__RLBOOT'] = null;
});
};
if (window.SimplePace) {
window.SimplePace.add(10);
}
}
}(window, jQuery, ko, crossroads, hasher, moment, Jua, _, ifvisible, key));

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
/*! See http://www.JSON.org/js.html */
var JSON;JSON||(JSON={}),function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c<f;c+=1)h[c]=str(c,i)||"null";e=h.length===0?"[]":gap?"[\n"+gap+h.join(",\n"+gap)+"\n"+g+"]":"["+h.join(",")+"]",gap=g;return e}if(rep&&typeof rep=="object"){f=rep.length;for(c=0;c<f;c+=1)d=rep[c],typeof d=="string"&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e))}else for(d in i)Object.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e));e=h.length===0?"{}":gap?"{\n"+gap+h.join(",\n"+gap)+"\n"+g+"}":"{"+h.join(",")+"}",gap=g;return e}}function quote(a){escapable.lastIndex=0;return escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return typeof b=="string"?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function f(a){return a<10?"0"+a:a}"use strict",typeof Date.prototype.toJSON!="function"&&(Date.prototype.toJSON=function(a){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;typeof JSON.stringify!="function"&&(JSON.stringify=function(a,b,c){var d;gap="",indent="";if(typeof c=="number")for(d=0;d<c;d+=1)indent+=" ";else typeof c=="string"&&(indent=c);rep=b;if(b&&typeof b!="function"&&(typeof b!="object"||typeof b.length!="number"))throw new Error("JSON.stringify");return str("",{"":a})}),typeof JSON.parse!="function"&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&typeof e=="object")for(c in e)Object.hasOwnProperty.call(e,c)&&(d=walk(e,c),d!==undefined?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver=="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")})}();
/*! See http://www.JSON.org/js.html */
var JSON;JSON||(JSON={}),function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c<f;c+=1)h[c]=str(c,i)||"null";e=h.length===0?"[]":gap?"[\n"+gap+h.join(",\n"+gap)+"\n"+g+"]":"["+h.join(",")+"]",gap=g;return e}if(rep&&typeof rep=="object"){f=rep.length;for(c=0;c<f;c+=1)d=rep[c],typeof d=="string"&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e))}else for(d in i)Object.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e));e=h.length===0?"{}":gap?"{\n"+gap+h.join(",\n"+gap)+"\n"+g+"}":"{"+h.join(",")+"}",gap=g;return e}}function quote(a){escapable.lastIndex=0;return escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return typeof b=="string"?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function f(a){return a<10?"0"+a:a}"use strict",typeof Date.prototype.toJSON!="function"&&(Date.prototype.toJSON=function(a){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;typeof JSON.stringify!="function"&&(JSON.stringify=function(a,b,c){var d;gap="",indent="";if(typeof c=="number")for(d=0;d<c;d+=1)indent+=" ";else typeof c=="string"&&(indent=c);rep=b;if(b&&typeof b!="function"&&(typeof b!="object"||typeof b.length!="number"))throw new Error("JSON.stringify");return str("",{"":a})}),typeof JSON.parse!="function"&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&typeof e=="object")for(c in e)Object.hasOwnProperty.call(e,c)&&(d=walk(e,c),d!==undefined?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver=="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")})}();
/*! RainLoop Simple Pace v1.0 (c) 2013 RainLoop Team; Licensed under MIT */
!function(a){function b(){var b=this;b.el=null,b.done=!1,b.progress=0,b.addInterval=0,b.addSpeed=3,b.stopProgress=100,b.interval=a.setInterval(function(){var c=b.build();c&&a.clearInterval(b.interval)},100)}if(b.prototype.startAddInterval=function(){var b=this;b.stopAddInterval(),b.addInterval=a.setInterval(function(){0<b.progress&&b.stopProgress>b.progress&&b.add(b.addSpeed)},500)},b.prototype.stopAddInterval=function(){a.clearInterval(this.addInterval),this.addInterval=0},b.prototype.build=function(){if(null===this.el){var a=document.querySelector("body");a&&(this.el=document.createElement("div"),this.el.className="simple-pace simple-pace-active",this.el.innerHTML='<div class="simple-pace-progress"><div class="simple-pace-progress-inner"></div></div><div class="simple-pace-activity"></div>',a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el))}return this.el},b.prototype.reset=function(){return this.progress=0,this.render()},b.prototype.update=function(b){var c=a.parseInt(b,10);return c>this.progress&&(this.progress=c,this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress),this.render()},b.prototype.add=function(b){return this.progress+=a.parseInt(b,10),this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress,this.render()},b.prototype.setSpeed=function(a,b){this.addSpeed=a,this.stopProgress=b||100},b.prototype.render=function(){var b=this.build();b&&b.children&&b.children[0]&&b.children[0].setAttribute("style","width:"+this.progress+"%"),100!==this.progress||this.done?100>this.progress&&this.done?(this.done=!1,this.startAddInterval(),b.className=b.className.replace("simple-pace-inactive",""),b.className+=" simple-pace-inactive"):100>this.progress&&!this.done&&0===this.addInterval&&this.startAddInterval():(this.done=!0,this.stopAddInterval(),a.setTimeout(function(){b.className=b.className.replace("simple-pace-active",""),b.className+=" simple-pace-inactive"},500))},!a.SimplePace){var c=new b;a.SimplePace={sleep:function(){c.setSpeed(2,95)},set:function(a){c.update(a)},add:function(a){c.add(a)}}}}(window);
!function(a){function b(){var b=this;b.el=null,b.done=!1,b.progress=0,b.addInterval=0,b.addSpeed=3,b.stopProgress=100,b.interval=a.setInterval(function(){var c=b.build();c&&a.clearInterval(b.interval)},100)}if(b.prototype.startAddInterval=function(){var b=this;b.stopAddInterval(),b.addInterval=a.setInterval(function(){0<b.progress&&b.stopProgress>b.progress&&b.add(b.addSpeed)},500)},b.prototype.stopAddInterval=function(){a.clearInterval(this.addInterval),this.addInterval=0},b.prototype.build=function(){if(null===this.el){var a=document.querySelector("body");a&&(this.el=document.createElement("div"),this.el.className="simple-pace simple-pace-active",this.el.innerHTML='<div class="simple-pace-progress"><div class="simple-pace-progress-inner"></div></div><div class="simple-pace-activity"></div>',a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el))}return this.el},b.prototype.reset=function(){return this.progress=0,this.render()},b.prototype.update=function(b){var c=a.parseInt(b,10);return c>this.progress&&(this.progress=c,this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress),this.render()},b.prototype.add=function(b){return this.progress+=a.parseInt(b,10),this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress,this.render()},b.prototype.setSpeed=function(a,b){this.addSpeed=a,this.stopProgress=b||100},b.prototype.render=function(){var b=this.build();b&&b.children&&b.children[0]&&b.children[0].setAttribute("style","width:"+this.progress+"%"),100!==this.progress||this.done?100>this.progress&&this.done?(this.done=!1,this.startAddInterval(),b.className=b.className.replace("simple-pace-inactive",""),b.className+=" simple-pace-inactive"):100>this.progress&&!this.done&&0===this.addInterval&&this.startAddInterval():(this.done=!0,this.stopAddInterval(),a.setTimeout(function(){b.className=b.className.replace("simple-pace-active",""),b.className+=" simple-pace-inactive"},500))},!a.SimplePace){var c=new b;a.SimplePace={sleep:function(){c.setSpeed(2,95)},set:function(a){c.update(a)},add:function(a){c.add(a)}}}}(window);
/*! RainLoop Top Driver v1.0 (c) 2013 RainLoop Team; Licensed under MIT */
!function(a,b){function c(){}c.prototype.s=a.sessionStorage,c.prototype.t=a.top||a,c.prototype.getHash=function(){var a=null;if(this.s)a=this.s.getItem("__rlA")||null;else if(this.t){var c=this.t.name&&b&&"{"===this.t.name.toString().substr(0,1)?b.parse(this.t.name.toString()):null;a=c?c.__rlA||null:null}return a},c.prototype.setHash=function(){var c=a.rainloopAppData,d=null;this.s?this.s.setItem("__rlA",c&&c.AuthAccountHash?c.AuthAccountHash:""):this.t&&b&&(d={},d.__rlA=c&&c.AuthAccountHash?c.AuthAccountHash:"",this.t.name=b.stringify(d))},c.prototype.clearHash=function(){this.s?this.s.setItem("__rlA",""):this.t&&(this.t.name="")},a._rlhh=new c,a.__rlah=function(){return a._rlhh?a._rlhh.getHash():null},a.__rlah_set=function(){a._rlhh&&a._rlhh.setHash()},a.__rlah_clear=function(){a._rlhh&&a._rlhh.clearHash()}}(window,window.JSON);

File diff suppressed because one or more lines are too long