mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-29 12:09:20 +03:00
Interface redesign (attachments, new preview pane layout)
This commit is contained in:
parent
6755a0ce51
commit
e3e7c1d963
64 changed files with 1286 additions and 1009 deletions
|
|
@ -882,7 +882,6 @@ class Utils
|
|||
'p7c' => 'application/pkcs7-mime',
|
||||
'p7m' => 'application/pkcs7-mime',
|
||||
'p7s' => 'application/pkcs7-signature',
|
||||
'ttf' => 'application/x-ttf',
|
||||
'torrent' => 'application/x-bittorrent',
|
||||
|
||||
// scripts
|
||||
|
|
@ -963,7 +962,6 @@ class Utils
|
|||
'flv' => 'video/x-flv',
|
||||
'qt' => 'video/quicktime',
|
||||
'mov' => 'video/quicktime',
|
||||
'wmv' => 'video/windows-media',
|
||||
'avi' => 'video/x-msvideo',
|
||||
'mpg' => 'video/mpeg',
|
||||
'mpeg' => 'video/mpeg',
|
||||
|
|
@ -976,6 +974,7 @@ class Utils
|
|||
'h263' => 'video/h263',
|
||||
'h264' => 'video/h264',
|
||||
'jpgv' => 'video/jpgv',
|
||||
'mp4' => 'video/mp4',
|
||||
'mp4v' => 'video/mp4',
|
||||
'mpg4' => 'video/mp4',
|
||||
'ogv' => 'video/ogg',
|
||||
|
|
|
|||
|
|
@ -2067,7 +2067,7 @@ class Actions
|
|||
}
|
||||
|
||||
return $this->TrueResponse(__FUNCTION__);
|
||||
return $this->DefaultResponse(__FUNCTION__, $this->FiltersProvider()->Save($aFilters));
|
||||
// return $this->DefaultResponse(__FUNCTION__, $this->FiltersProvider()->Save($aFilters));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -2539,6 +2539,9 @@ class Actions
|
|||
case \RainLoop\Enumerations\Capa::GRAVATAR:
|
||||
$this->setConfigFromParams($oConfig, $sParamName, 'labs', 'allow_gravatar', 'bool');
|
||||
break;
|
||||
case \RainLoop\Enumerations\Capa::ATTACHMENT_THUMBNAILS:
|
||||
$this->setConfigFromParams($oConfig, $sParamName, 'interface', 'show_attachment_thumbnail', 'bool');
|
||||
break;
|
||||
case \RainLoop\Enumerations\Capa::THEMES:
|
||||
$this->setConfigFromParams($oConfig, $sParamName, 'webmail', 'allow_themes', 'bool');
|
||||
break;
|
||||
|
|
@ -2636,6 +2639,7 @@ class Actions
|
|||
$this->setCapaFromParams($oConfig, 'CapaGravatar', \RainLoop\Enumerations\Capa::GRAVATAR);
|
||||
$this->setCapaFromParams($oConfig, 'CapaThemes', \RainLoop\Enumerations\Capa::THEMES);
|
||||
$this->setCapaFromParams($oConfig, 'CapaUserBackground', \RainLoop\Enumerations\Capa::USER_BACKGROUND);
|
||||
$this->setCapaFromParams($oConfig, 'CapaAttachmentThumbnails', \RainLoop\Enumerations\Capa::ATTACHMENT_THUMBNAILS);
|
||||
|
||||
$this->setConfigFromParams($oConfig, 'DetermineUserLanguage', 'login', 'determine_user_language', 'bool');
|
||||
$this->setConfigFromParams($oConfig, 'DetermineUserDomain', 'login', 'determine_user_domain', 'bool');
|
||||
|
|
@ -3538,6 +3542,19 @@ class Actions
|
|||
\is_file(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion.'/index.php'))
|
||||
{
|
||||
$bResult = \copy($sTmpFolder.'/index.php', APP_INDEX_ROOT_PATH.'index.php');
|
||||
|
||||
if ($bResult)
|
||||
{
|
||||
if (\MailSo\Base\Utils::FunctionExistsAndEnabled('opcache_invalidate'))
|
||||
{
|
||||
@\opcache_invalidate(APP_INDEX_ROOT_PATH.'index.php', true);
|
||||
}
|
||||
|
||||
if (\MailSo\Base\Utils::FunctionExistsAndEnabled('apc_delete_file'))
|
||||
{
|
||||
@\apc_delete_file(APP_INDEX_ROOT_PATH.'index.php');
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -3577,6 +3594,7 @@ class Actions
|
|||
$aDirs = @\array_map('basename', @\array_filter(@\glob($sVPath.'*'), 'is_dir'));
|
||||
|
||||
$this->Logger()->Write('Versions GC: Count:'.(\is_array($aDirs) ? \count($aDirs) : 0));
|
||||
|
||||
if (\is_array($aDirs) && 5 < \count($aDirs))
|
||||
{
|
||||
\uasort($aDirs, 'version_compare');
|
||||
|
|
@ -6945,6 +6963,11 @@ class Actions
|
|||
$aResult[] = \RainLoop\Enumerations\Capa::GRAVATAR;
|
||||
}
|
||||
|
||||
if ($oConfig->Get('interface', 'show_attachment_thumbnail', true))
|
||||
{
|
||||
$aResult[] = \RainLoop\Enumerations\Capa::ATTACHMENT_THUMBNAILS;
|
||||
}
|
||||
|
||||
if ($oConfig->Get('labs', 'allow_prefetch', false))
|
||||
{
|
||||
$aResult[] = \RainLoop\Enumerations\Capa::PREFETCH;
|
||||
|
|
@ -8017,6 +8040,7 @@ class Actions
|
|||
$bHook = true;
|
||||
$sClassName = \get_class($mResponse);
|
||||
$bHasSimpleJsonFunc = \method_exists($mResponse, 'ToSimpleJSON');
|
||||
$bThumb = $this->GetCapa(false, \RainLoop\Enumerations\Capa::ATTACHMENT_THUMBNAILS);
|
||||
|
||||
if ($bHasSimpleJsonFunc)
|
||||
{
|
||||
|
|
@ -8278,7 +8302,7 @@ class Actions
|
|||
'CID' => $mResponse->Cid(),
|
||||
'ContentLocation' => $mResponse->ContentLocation(),
|
||||
'IsInline' => $mResponse->IsInline(),
|
||||
'IsThumbnail' => !!$this->Config()->Get('interface', 'show_attachment_thumbnail', true),
|
||||
'IsThumbnail' => $bThumb,
|
||||
'IsLinked' => ($mFoundedCIDs && \in_array(\trim(\trim($mResponse->Cid()), '<>'), $mFoundedCIDs)) ||
|
||||
($mFoundedContentLocationUrls && \in_array(\trim($mResponse->ContentLocation()), $mFoundedContentLocationUrls))
|
||||
));
|
||||
|
|
@ -8300,8 +8324,6 @@ class Actions
|
|||
'FileName' => $mResult['FileName'],
|
||||
'Framed' => $mResult['Framed']
|
||||
));
|
||||
|
||||
$this->Logger()->WriteDump($mResult);
|
||||
}
|
||||
else if ('MailSo\Mail\Folder' === $sClassName)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ abstract class AbstractConfig
|
|||
if (\is_int($iMTime) && 0 < $iMTime)
|
||||
{
|
||||
$sKey = $this->cacheKey();
|
||||
|
||||
|
||||
\apc_store($sKey.'time', $iMTime);
|
||||
\apc_store($sKey.'data', $this->aData);
|
||||
|
||||
|
|
@ -161,7 +161,7 @@ abstract class AbstractConfig
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
|
|
@ -192,7 +192,7 @@ abstract class AbstractConfig
|
|||
return true;
|
||||
}
|
||||
|
||||
$aData = @\parse_ini_file($this->sFile, true);
|
||||
$aData = \RainLoop\Utils::CustomParseIniFile($this->sFile, true);
|
||||
if (\is_array($aData) && 0 < count($aData))
|
||||
{
|
||||
foreach ($aData as $sSectionKey => $aSectionValue)
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ class Capa
|
|||
const THEMES = 'THEMES';
|
||||
const USER_BACKGROUND = 'USER_BACKGROUND';
|
||||
const SIEVE = 'SIEVE';
|
||||
const ATTACHMENT_THUMBNAILS = 'ATTACHMENT_THUMBNAILS';
|
||||
const ADDITIONAL_ACCOUNTS = 'ADDITIONAL_ACCOUNTS';
|
||||
const ADDITIONAL_IDENTITIES = 'ADDITIONAL_IDENTITIES';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -166,7 +166,7 @@ class DefaultDomain implements \RainLoop\Providers\Domain\DomainAdminInterface
|
|||
if (\file_exists($this->sDomainPath.'/'.$sRealFileName.'.ini') &&
|
||||
(!$bCheckDisabled || 0 === \strlen($sDisabled) || false === \strpos(','.$sDisabled.',', ','.\MailSo\Base\Utils::IdnToAscii($sName, true).',')))
|
||||
{
|
||||
$aDomain = @\parse_ini_file($this->sDomainPath.'/'.$sRealFileName.'.ini');
|
||||
$aDomain = \RainLoop\Utils::CustomParseIniFile($this->sDomainPath.'/'.$sRealFileName.'.ini');
|
||||
// fix misspellings (#119)
|
||||
if (\is_array($aDomain))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -149,16 +149,16 @@ class Utils
|
|||
}
|
||||
|
||||
/**
|
||||
* @param string $FileName
|
||||
* @param string $sFileName
|
||||
* @param array $aResultLang
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function ReadAndAddLang($FileName, &$aResultLang)
|
||||
public static function ReadAndAddLang($sFileName, &$aResultLang)
|
||||
{
|
||||
if (\file_exists($FileName))
|
||||
if (\file_exists($sFileName))
|
||||
{
|
||||
$aLang = @\parse_ini_file($FileName, true);
|
||||
$aLang = \RainLoop\Utils::CustomParseIniFile($sFileName, true);
|
||||
if (\is_array($aLang))
|
||||
{
|
||||
foreach ($aLang as $sKey => $mValue)
|
||||
|
|
@ -307,6 +307,23 @@ class Utils
|
|||
@\setcookie($sName, '', \time() - 3600 * 24 * 30, '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sFileName
|
||||
* @param bool $bProcessSections = false
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function CustomParseIniFile($sFileName, $bProcessSections = false)
|
||||
{
|
||||
if (\MailSo\Base\Utils::FunctionExistsAndEnabled('parse_ini_file'))
|
||||
{
|
||||
return @\parse_ini_file($sFileName, !!$bProcessSections);
|
||||
}
|
||||
|
||||
$sData = @\file_get_contents($sFileName);
|
||||
return \is_string($sData) ? @\parse_ini_string($sData, !!$bProcessSections) : null;
|
||||
}
|
||||
|
||||
public static function CustomBaseConvert($sNumberInput, $sFromBaseInput = '0123456789', $sToBaseInput = '0123456789')
|
||||
{
|
||||
if ($sFromBaseInput === $sToBaseInput)
|
||||
|
|
|
|||
|
|
@ -76,6 +76,14 @@
|
|||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'Show thumbnails (attachments)',
|
||||
value: capaAttachmentThumbnails,
|
||||
inline: false
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,18 @@
|
|||
<div class="b-attacment">
|
||||
<label data-bind="click: function () { enabled(!enabled()); }">
|
||||
<i class="checkboxAttachment" data-bind="css: enabled() ? 'checkboxMessage icon-checkbox-checked' : 'checkboxMessage icon-checkbox-unchecked'"></i>
|
||||
|
||||
<span class="name" data-bind="text: fileName"></span>
|
||||
(<span class="size" data-bind="text: friendlySize"></span>)
|
||||
</label>
|
||||
</div>
|
||||
<li class="attachmentItem clearfix" data-tooltip-placement="bottom" data-bind="attr: { 'title': title }, css: {'waiting': waiting, 'error': '' !== error()}">
|
||||
<div class="attachmentIconParent pull-left">
|
||||
<div class="iconMain">
|
||||
<i class="attachmentIcon attachmentMainIcon" data-bind="css: iconClass(), visible: !uploading() || 0 === progress()"></i>
|
||||
</div>
|
||||
<div class="iconProgress" data-bind="attr: { 'style': progressStyle }, visible: uploading"></div>
|
||||
<div class="iconBG" data-bind="text: progressText, visible: uploading"></div>
|
||||
</div>
|
||||
<div class="attachmentNameParent">
|
||||
<button type="button" class="close pull-right" style="margin-top:-4px;" data-bind="click: cancel">×</button>
|
||||
<div style="white-space: nowrap; text-overflow: ellipsis; overflow: hidden;">
|
||||
<span class="attachmentName" data-bind="text: fileName"></span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="attachmentSize" data-bind="text: friendlySize"></span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<div class="b-attacment-in-process" data-bind="css: {'error': '' !== error(), 'uploading': uploading, 'waiting': waiting }, in18nInit: true">
|
||||
<a class="close" data-bind="click: cancel">×</a>
|
||||
<span class="uploading"><i class="icon-spinner animated"></i></span>
|
||||
<span class="namedStr">
|
||||
<span class="name" data-bind="text: fileName"></span>
|
||||
|
||||
(<span class="size" data-bind="text: friendlySize"></span>)
|
||||
<span class="upload-progress" data-bind="text: progress"></span>
|
||||
</span>
|
||||
<div class="error">
|
||||
<span data-bind="text: error"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<!-- ko template: { name: 'PhotoSwipe' } --><!-- /ko -->
|
||||
<div id="rl-sub-right">
|
||||
<div class="messageView" data-bind="css: {'message-selected': isMessageSelected, 'message-focused': message.focused}">
|
||||
<div class="toolbar g-ui-user-select-none">
|
||||
<div class="toolbar top-toolbar g-ui-user-select-none" data-bind="visible: !usePreviewPane()">
|
||||
<nobr>
|
||||
<div class="messageButtons btn-toolbar">
|
||||
<div class="btn-group" data-tooltip-placement="bottom" data-bind="visible: !usePreviewPane(), tooltip: 'MESSAGE/BUTTON_CLOSE'">
|
||||
<div class="btn-group" data-tooltip-placement="bottom" data-bind="tooltip: 'MESSAGE/BUTTON_CLOSE'">
|
||||
<a class="btn btn-dark-disabled-border buttonClose" data-bind="command: closeMessage">
|
||||
<i class="icon-remove"></i>
|
||||
</a>
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
</div>
|
||||
</nobr>
|
||||
</div>
|
||||
<div class="b-content thm-message-view-background-color">
|
||||
<div class="b-content b-message-view-wrapper thm-message-view-background-color">
|
||||
<div>
|
||||
<div class="b-message-view-checked-helper" data-bind="visible: !message() && '' === messageError() && hasCheckedMessages()">
|
||||
<span data-bind="text: printableCheckedMessageCount()"></span>
|
||||
|
|
@ -57,124 +57,131 @@
|
|||
|
||||
<div data-bind="visible: message">
|
||||
|
||||
<div class="btn-group colored-toggle pull-right messageItemDropdown">
|
||||
<a class="btn btn-dark-disabled-border buttonReply" data-tooltip-placement="bottom"
|
||||
data-bind="command: replyCommand, tooltip: 'MESSAGE/BUTTON_REPLY'">
|
||||
<i class="icon-reply"></i>
|
||||
</a>
|
||||
<!--
|
||||
<a class="btn btn-dark-disabled-border buttonReplyAll" data-tooltip-placement="bottom"
|
||||
data-bind="command: replyAllCommand, tooltip: 'MESSAGE/BUTTON_REPLY_ALL'">
|
||||
<i class="icon-reply-all"></i>
|
||||
</a>
|
||||
<a class="btn btn-dark-disabled-border buttonForward" data-tooltip-placement="bottom"
|
||||
data-bind="command: forwardCommand, tooltip: 'MESSAGE/BUTTON_FORWARD'">
|
||||
<i class="icon-reply-all"></i>
|
||||
</a>
|
||||
-->
|
||||
<a id="more-view-dropdown-id" class="btn btn-dark-disabled-border dropdown-toggle buttonMore"
|
||||
href="#" tabindex="-1" data-toggle="dropdown" data-tooltip-placement="bottom"
|
||||
data-bind="command: messageVisibilityCommand, tooltip: 'MESSAGE/BUTTON_MORE'">
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="more-view-dropdown-id">
|
||||
<div class="message-fixed-button-toolbar clearfix">
|
||||
<div class="btn-group colored-toggle pull-right">
|
||||
<a class="btn btn-dark-disabled-border buttonReply" data-tooltip-placement="bottom"
|
||||
data-bind="command: replyCommand, tooltip: 'MESSAGE/BUTTON_REPLY'">
|
||||
<i class="icon-reply"></i>
|
||||
</a>
|
||||
<!--
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: replyCommand">
|
||||
<i class="icon-reply"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_REPLY"></span>
|
||||
</a>
|
||||
</li>
|
||||
<a class="btn btn-dark-disabled-border buttonReplyAll" data-tooltip-placement="bottom"
|
||||
data-bind="command: replyAllCommand, tooltip: 'MESSAGE/BUTTON_REPLY_ALL'">
|
||||
<i class="icon-reply-all"></i>
|
||||
</a>
|
||||
<a class="btn btn-dark-disabled-border buttonForward" data-tooltip-placement="bottom"
|
||||
data-bind="command: forwardCommand, tooltip: 'MESSAGE/BUTTON_FORWARD'">
|
||||
<i class="icon-reply-all"></i>
|
||||
</a>
|
||||
-->
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: replyAllCommand">
|
||||
<i class="icon-reply-all"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_REPLY_ALL"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: forwardCommand">
|
||||
<i class="icon-forward"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_FORWARD"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: editAsNewCommand">
|
||||
<i class="icon-pencil"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_EDIT_AS_NEW"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: forwardAsAttachmentCommand">
|
||||
<i class="icon-forward"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_FORWARD_AS_ATTACHMENT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation" data-bind="visible: !isDraftFolder()"></li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isArchiveFolder() && !isArchiveDisabled()">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: archiveCommand">
|
||||
<i class="icon-archive"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_ARCHIVE"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isSentFolder() && !isSpamFolder() && !isSpamDisabled()">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: spamCommand">
|
||||
<i class="icon-angry-smiley"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_SPAM"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isSentFolder() && isSpamFolder() && !isSpamDisabled()">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: notSpamCommand">
|
||||
<i class="icon-happy-smiley"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_NOT_SPAM"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane()">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: deleteCommand">
|
||||
<i class="icon-trash"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_DELETE"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation" data-bind="visible: usePreviewPane()"></li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="click: function () { if (message()) { message().printMessage(); }} ">
|
||||
<i class="icon-print"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_PRINT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="click: function () { if (message()) { message().viewPopupMessage(); }}">
|
||||
<i class="icon-popup"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_IN_NEW_WINDOW"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation"></li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="link: viewViewLink()">
|
||||
<i class="icon-file-code"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_VIEW_ORIGINAL"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="link: viewDownloadLink()">
|
||||
<i class="icon-download"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_DOWNLOAD_ORIGINAL"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a id="more-view-dropdown-id" class="btn btn-dark-disabled-border dropdown-toggle buttonMore"
|
||||
href="#" tabindex="-1" data-toggle="dropdown" data-tooltip-placement="bottom"
|
||||
data-bind="command: messageVisibilityCommand, tooltip: 'MESSAGE/BUTTON_MORE'">
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu g-ui-menu" role="menu" aria-labelledby="more-view-dropdown-id">
|
||||
<!--
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: replyCommand">
|
||||
<i class="icon-reply"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_REPLY"></span>
|
||||
</a>
|
||||
</li>
|
||||
-->
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: replyAllCommand">
|
||||
<i class="icon-reply-all"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_REPLY_ALL"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: forwardCommand">
|
||||
<i class="icon-forward"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_FORWARD"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: editAsNewCommand">
|
||||
<i class="icon-pencil"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_EDIT_AS_NEW"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: !isDraftFolder()">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" data-bind="command: forwardAsAttachmentCommand">
|
||||
<i class="icon-forward"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_FORWARD_AS_ATTACHMENT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation" data-bind="visible: !isDraftFolder()"></li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isArchiveFolder() && !isArchiveDisabled()">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: archiveCommand">
|
||||
<i class="icon-archive"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_ARCHIVE"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isSentFolder() && !isSpamFolder() && !isSpamDisabled()">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: spamCommand">
|
||||
<i class="icon-angry-smiley"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_SPAM"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane() && !isDraftFolder() && !isSentFolder() && isSpamFolder() && !isSpamDisabled()">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: notSpamCommand">
|
||||
<i class="icon-happy-smiley"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_NOT_SPAM"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation" data-bind="visible: usePreviewPane()">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="command: deleteCommand">
|
||||
<i class="icon-trash"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_DELETE"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation" data-bind="visible: usePreviewPane()"></li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="click: function () { if (message()) { message().printMessage(); }} ">
|
||||
<i class="icon-print"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_PRINT"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="click: function () { if (message()) { message().viewPopupMessage(); }}">
|
||||
<i class="icon-popup"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/BUTTON_IN_NEW_WINDOW"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider" role="presentation"></li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="link: viewViewLink()">
|
||||
<i class="icon-file-code"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_VIEW_ORIGINAL"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="e-item" role="presentation">
|
||||
<a target="_blank" class="e-link menuitem" href="#" tabindex="-1" data-bind="link: viewDownloadLink()">
|
||||
<i class="icon-download"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="MESSAGE/MENU_DOWNLOAD_ORIGINAL"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group pull-right" data-bind="visible: isDraftFolder()" style="margin-right: 5px">
|
||||
<a class="btn btn-success buttonEdit" data-bind="command: messageEditCommand">
|
||||
<i class="icon-pencil icon-white"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="messageItem" data-bind="css: viewLineAsCcc(), nano: true">
|
||||
|
|
@ -295,7 +302,8 @@
|
|||
</div>
|
||||
<div class="attachmentsPlace" data-bind="visible: message() && message().hasVisibleAttachments()">
|
||||
<ul class="attachmentList" data-bind="foreach: message() ? message().attachments() : []">
|
||||
<li class="attachmentItem clearfix" draggable="true" data-bind="visible: !isLinked, title: fileName, event: { 'dragstart': eventDragStart }">
|
||||
<li class="attachmentItem clearfix" draggable="true" data-tooltip-placement="bottom"
|
||||
data-bind="visible: !isLinked, event: { 'dragstart': eventDragStart }, attr: { 'title': fileName }">
|
||||
<div class="attachmentIconParent pull-left" data-bind="css: { 'hasPreview': hasPreview() }">
|
||||
<div class="hidePreview">
|
||||
<div class="iconMain">
|
||||
|
|
@ -303,7 +311,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="showPreview">
|
||||
<a data-bind="css: {'attachmentImagePreview': isImage()}, attr: {'href': linkPreviewMain(), title: fileName, 'data-index': $index}">
|
||||
<a data-bind="css: {'attachmentImagePreview': isImage()}, attr: {'href': linkPreviewMain(), 'data-index': $index}" target="_blank">
|
||||
<div class="iconMain">
|
||||
<i class="attachmentIcon attachmentMainIcon" data-bind="css: iconClass()"></i>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
<div>
|
||||
<div class="b-header g-ui-user-select-none">
|
||||
<div class="g-ui-table">
|
||||
<div class="e-row">
|
||||
<div class="e-row" style="height: 40px;">
|
||||
<div class="e-cell e-label">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/TITLE_FROM"></span>
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
</ul>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<div class="btn-group dropdown colored-toggle pull-right">
|
||||
<div class="btn-group dropdown colored-toggle pull-right" style="margin-right: 4px;">
|
||||
<a class="btn dropdown-toggle buttonMore" data-toggle="dropdown">
|
||||
<i class="icon-list"></i>
|
||||
</a>
|
||||
|
|
@ -139,18 +139,33 @@
|
|||
<div class="e-row">
|
||||
<div class="e-cell e-label"></div>
|
||||
<div class="e-cell e-value">
|
||||
<div class="b-appachments pull-left" data-bind="visible: 0 < attachments().length">
|
||||
<div data-bind="template: { name: 'ComposeAttachment', foreach: attachmentsInReady }"></div>
|
||||
<div data-bind="template: { name: 'ComposeAttachmentInProcess', foreach: attachmentsInProcess }"></div>
|
||||
<span class="help-block error-desc" data-bind="visible: attachmentsInProcessError">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/ATTACHMENTS_UPLOAD_ERROR_DESC"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<div class="b-attachment-place" data-bind="visible: addAttachmentEnabled() && dragAndDropEnabled() && dragAndDropVisible(), initDom: composeUploaderDropPlace, css: {'dragAndDropOver': dragAndDropOver}">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/ATTACH_DROP_FILES_DESC"></span>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<div class="pull-left">
|
||||
<div class="btn-group" data-toggle="buttons-radio">
|
||||
<button type="button" class="btn" data-bind="click: function () { attachmentsPlace(false); },
|
||||
css: { 'active': !attachmentsPlace() }">
|
||||
<i class="icon-file-text"></i>
|
||||
</button>
|
||||
<button type="button" class="btn" data-bind="click: function () { attachmentsPlace(true); },
|
||||
css: { 'btn-danger': 0 < attachmentsInErrorCount(), 'active': attachmentsPlace() }">
|
||||
<span data-bind="visible: 0 < attachmentsCount()">
|
||||
<b data-bind="text: attachmentsCount"></b>
|
||||
|
||||
</span>
|
||||
<i data-bind="css: { 'icon-attachment': 0 === attachmentsInProcessCount(), 'icon-spinner animated': 0 < attachmentsInProcessCount(), 'icon-white': 0 < attachmentsInErrorCount() }"></i>
|
||||
</button>
|
||||
</div>
|
||||
<span class="help-block error-desc" data-bind="visible: attachmentsInProcessError">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/ATTACHMENTS_UPLOAD_ERROR_DESC"></span>
|
||||
</span>
|
||||
<span class="help-block error-desc" data-bind="visible: !attachmentsInProcessError() && attachmentsInErrorError()">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/ATTACHMENTS_ERROR_DESC"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="pull-right" style="margin-right: 4px;">
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn" data-tooltip-placement="top" data-bind="visible: addAttachmentEnabled(), initDom: composeUploaderButton, tooltip: 'COMPOSE/ATTACH_FILES'">
|
||||
<i class="icon-attachment"></i>
|
||||
|
|
@ -169,8 +184,19 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="attachmentAreaParent b-content" style="height: 200px; min-height: 200px" data-bind="nano: true, visible: attachmentsPlace, initResizeTrigger: [resizer(), 200, 47]">
|
||||
<div class="content g-scrollbox">
|
||||
<div class="content-wrapper">
|
||||
<ul class="attachmentList" data-bind="template: { name: 'ComposeAttachment', foreach: attachments }"></ul>
|
||||
<div class="no-attachments-desc" data-bind="visible: 0 === attachments().length">
|
||||
<span class="i18n" data-i18n-text="COMPOSE/NO_ATTACHMENTS_HERE_DESC"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="textAreaParent" style="height: 200px; min-height: 200px"
|
||||
data-bind="initDom: composeEditorArea, initResizeTrigger: [resizer(), 200, 30]"></div>
|
||||
data-bind="visible: !attachmentsPlace(), initDom: composeEditorArea, initResizeTrigger: [resizer(), 200, 30]"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -38,6 +38,23 @@
|
|||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" style="padding-top: 0;">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_GENERAL/LABEL_LAYOUT"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<div data-bind="component: {
|
||||
name: 'Select',
|
||||
params: {
|
||||
options: layoutTypes,
|
||||
value: layout,
|
||||
trigger: layoutTrigger,
|
||||
optionsText: 'name',
|
||||
optionsValue: 'id'
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal">
|
||||
<div class="legend">
|
||||
|
|
@ -74,13 +91,6 @@
|
|||
value: useCheckboxesInList
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
label: 'SETTINGS_GENERAL/LABEL_USE_PREVIEW_PANE',
|
||||
value: usePreviewPaneCheckbox
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="visible: threading, component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
<div class="b-system-drop-down g-ui-user-select-none">
|
||||
<div class="b-toolbar">
|
||||
<div class="btn-toolbar">
|
||||
<div class="accountPlace" data-bind="text: emailTitle()"></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" data-tooltip-i18n="off"
|
||||
data-tooltip-class="tooltip-big" data-bind="tooltip: emailTitle">
|
||||
|
||||
<a id="top-system-dropdown-id" href="#" tabindex="-1" class="btn btn-ellipsis btn-block dropdown-toggle system-dropdown" data-toggle="dropdown">
|
||||
<i data-bind="css: {'icon-user': !loading(), 'icon-spinner animated': loading()}"></i>
|
||||
|
||||
<span class="caret"></span>
|
||||
|
|
|
|||
212
rainloop/v/0.0.0/include.php
Normal file
212
rainloop/v/0.0.0/include.php
Normal file
|
|
@ -0,0 +1,212 @@
|
|||
<?php
|
||||
|
||||
if (defined('APP_VERSION'))
|
||||
{
|
||||
if (!defined('APP_START'))
|
||||
{
|
||||
define('APP_START', microtime(true));
|
||||
|
||||
@ini_set('register_globals', 0);
|
||||
@ini_set('zend.ze1_compatibility_mode', 0);
|
||||
@ini_set('magic_quotes_gpc', 0);
|
||||
@ini_set('magic_quotes_runtime', 0);
|
||||
|
||||
define('APP_DEFAULT_DENY_ALL_HTACCESS', 'Deny from all
|
||||
<IfModule mod_autoindex.c>
|
||||
Options -Indexes
|
||||
</ifModule>');
|
||||
|
||||
define('APP_START_TIME', time());
|
||||
define('APP_REQUEST_RND', md5(APP_START.rand(10000, 99999).APP_START));
|
||||
define('APP_VERSION_ROOT_PATH', APP_INDEX_ROOT_PATH.'rainloop/v/'.APP_VERSION.'/');
|
||||
|
||||
define('APP_USE_APC_CACHE', true);
|
||||
|
||||
$sCustomDataPath = '';
|
||||
if (file_exists(APP_INDEX_ROOT_PATH.'include.php'))
|
||||
{
|
||||
include_once APP_INDEX_ROOT_PATH.'include.php';
|
||||
$sCustomDataPath = function_exists('__get_custom_data_full_path') ? rtrim(trim(__get_custom_data_full_path()), '\\/') : '';
|
||||
}
|
||||
|
||||
define('APP_DATA_FOLDER_PATH', 0 === strlen($sCustomDataPath) ? APP_INDEX_ROOT_PATH.'data/' : $sCustomDataPath.'/');
|
||||
unset($sCustomDataPath);
|
||||
|
||||
if (function_exists('date_default_timezone_set'))
|
||||
{
|
||||
date_default_timezone_set('UTC');
|
||||
}
|
||||
|
||||
$sSite = strtolower(trim(empty($_SERVER['HTTP_HOST']) ? (empty($_SERVER['SERVER_NAME']) ? '' : $_SERVER['SERVER_NAME']) : $_SERVER['HTTP_HOST']));
|
||||
$sSite = 'www.' === substr($sSite, 0, 4) ? substr($sSite, 4) : $sSite;
|
||||
$sSite = preg_replace('/^.+@/', '', preg_replace('/:[\d]+$/', '', $sSite));
|
||||
$sSite = in_array($sSite, array('localhost', '127.0.0.1', '::1', '::1/128', '0:0:0:0:0:0:0:1')) ? 'localhost' : $sSite;
|
||||
|
||||
define('APP_SITE', $sSite);
|
||||
define('APP_SITE_CLEAR', 0 < strlen(APP_SITE) ? trim(preg_replace('/[^a-zA-Z0-9_.\-]+/', '_', trim(strtolower(APP_SITE))), ' _') : '');
|
||||
|
||||
define('APP_DEFAULT_PRIVATE_DATA_NAME', '_default_');
|
||||
|
||||
$sPrivateDataFolderInternalName = @file_exists(APP_INDEX_ROOT_PATH.'MULTIPLY') ? APP_SITE : '';
|
||||
define('APP_PRIVATE_DATA_NAME', 0 === strlen($sPrivateDataFolderInternalName) ? APP_DEFAULT_PRIVATE_DATA_NAME : $sPrivateDataFolderInternalName);
|
||||
define('APP_MULTIPLY', 0 < strlen($sPrivateDataFolderInternalName) && APP_DEFAULT_PRIVATE_DATA_NAME !== APP_PRIVATE_DATA_NAME);
|
||||
|
||||
define('APP_DUMMY', '********');
|
||||
define('APP_DEV_VERSION', '0.0.0');
|
||||
define('APP_API_PATH', 'http://api.rainloop.net/');
|
||||
define('APP_REP_PATH', 'http://repository.rainloop.net/v1/');
|
||||
define('APP_REPO_CORE_FILE', 'http://repository.rainloop.net/v2/core.{{channel}}.json');
|
||||
define('APP_WEB_PATH', 'rainloop/v/'.APP_VERSION.'/');
|
||||
define('APP_WEB_STATIC_PATH', APP_WEB_PATH.'static/');
|
||||
define('APP_DATA_FOLDER_PATH_UNIX', str_replace('\\', '/', APP_DATA_FOLDER_PATH));
|
||||
|
||||
$sSalt = @file_get_contents(APP_DATA_FOLDER_PATH.'SALT.php');
|
||||
$sData = @file_get_contents(APP_DATA_FOLDER_PATH.'DATA.php');
|
||||
$sInstalled = @file_get_contents(APP_DATA_FOLDER_PATH.'INSTALLED');
|
||||
|
||||
// installation checking data folder
|
||||
if (APP_VERSION !== $sInstalled)
|
||||
{
|
||||
include APP_VERSION_ROOT_PATH.'check.php';
|
||||
|
||||
$sCheckName = 'delete_if_you_see_it_after_install';
|
||||
$sCheckFolder = APP_DATA_FOLDER_PATH.$sCheckName;
|
||||
$sCheckFilePath = APP_DATA_FOLDER_PATH.$sCheckName.'/'.$sCheckName.'.file';
|
||||
|
||||
@unlink($sCheckFilePath);
|
||||
@rmdir($sCheckFolder);
|
||||
|
||||
if (!@is_dir(APP_DATA_FOLDER_PATH))
|
||||
{
|
||||
@mkdir(APP_DATA_FOLDER_PATH, 0755);
|
||||
}
|
||||
else
|
||||
{
|
||||
@chmod(APP_DATA_FOLDER_PATH, 0755);
|
||||
}
|
||||
|
||||
$sTest = '';
|
||||
switch (true)
|
||||
{
|
||||
case !@is_dir(APP_DATA_FOLDER_PATH):
|
||||
$sTest = 'is_dir';
|
||||
break;
|
||||
case !@is_readable(APP_DATA_FOLDER_PATH):
|
||||
$sTest = 'is_readable';
|
||||
break;
|
||||
case !@is_writable(APP_DATA_FOLDER_PATH):
|
||||
$sTest = 'is_writable';
|
||||
break;
|
||||
case !@mkdir($sCheckFolder, 0755):
|
||||
$sTest = 'mkdir';
|
||||
break;
|
||||
case false === @file_put_contents($sCheckFilePath, time()):
|
||||
$sTest = 'file_put_contents';
|
||||
break;
|
||||
case !@unlink($sCheckFilePath):
|
||||
$sTest = 'unlink';
|
||||
break;
|
||||
case !@rmdir($sCheckFolder):
|
||||
$sTest = 'rmdir';
|
||||
break;
|
||||
}
|
||||
|
||||
if (!empty($sTest))
|
||||
{
|
||||
echo '[202] Data folder permisions error ['.$sTest.']';
|
||||
exit(202);
|
||||
}
|
||||
|
||||
unset($sCheckName, $sCheckFilePath, $sCheckFolder, $sTest);
|
||||
}
|
||||
|
||||
if (false === $sSalt || false === $sData)
|
||||
{
|
||||
if (false === $sSalt)
|
||||
{
|
||||
// random salt
|
||||
$sSalt = '<'.'?php //'
|
||||
.md5(microtime(true).rand(1000, 5000))
|
||||
.md5(microtime(true).rand(5000, 9999))
|
||||
.md5(microtime(true).rand(1000, 5000));
|
||||
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'SALT.php', $sSalt);
|
||||
}
|
||||
|
||||
if (false === $sData)
|
||||
{
|
||||
// random data folder name
|
||||
$sData = '<'.'?php //'.md5(microtime(true).rand(1000, 9999));
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'DATA.php', $sData);
|
||||
}
|
||||
}
|
||||
|
||||
define('APP_SALT', md5($sSalt.APP_PRIVATE_DATA_NAME.$sSalt));
|
||||
define('APP_PRIVATE_DATA', APP_DATA_FOLDER_PATH.'_data_'.md5($sData).'/'.APP_PRIVATE_DATA_NAME.'/');
|
||||
define('APP_PLUGINS_PATH', APP_PRIVATE_DATA.'plugins/');
|
||||
|
||||
if (APP_VERSION !== $sInstalled || (APP_MULTIPLY && !@is_dir(APP_PRIVATE_DATA)))
|
||||
{
|
||||
define('APP_INSTALLED_START', true);
|
||||
define('APP_INSTALLED_VERSION', $sInstalled);
|
||||
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'INSTALLED', APP_VERSION);
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'index.html', 'Forbidden');
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'index.php', 'Forbidden');
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'.htaccess', APP_DEFAULT_DENY_ALL_HTACCESS);
|
||||
|
||||
if (!@is_dir(APP_PRIVATE_DATA))
|
||||
{
|
||||
@mkdir(APP_PRIVATE_DATA, 0755, true);
|
||||
}
|
||||
|
||||
foreach (array('logs', 'cache', 'configs', 'plugins', 'storage') as $sName)
|
||||
{
|
||||
if (!@is_dir(APP_PRIVATE_DATA.$sName))
|
||||
{
|
||||
@mkdir(APP_PRIVATE_DATA.$sName, 0755, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (!@file_exists(APP_PRIVATE_DATA.'domains/disabled'))
|
||||
{
|
||||
if (!@is_dir(APP_PRIVATE_DATA.'domains'))
|
||||
{
|
||||
@mkdir(APP_PRIVATE_DATA.'domains', 0755);
|
||||
}
|
||||
|
||||
if (@is_dir(APP_PRIVATE_DATA.'domains'))
|
||||
{
|
||||
$sFile = $sNewFile = '';
|
||||
$aFiles = @glob(APP_VERSION_ROOT_PATH.'app/domains/*');
|
||||
|
||||
if (is_array($aFiles) && 0 < \count($aFiles))
|
||||
{
|
||||
foreach ($aFiles as $sFile)
|
||||
{
|
||||
if (@is_file($sFile))
|
||||
{
|
||||
$sNewFile = APP_PRIVATE_DATA.'domains/'.basename($sFile);
|
||||
if (!@file_exists($sNewFile))
|
||||
{
|
||||
@copy($sFile, $sNewFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($aFiles, $sFile, $sNewFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($sSite, $sSalt, $sData, $sInstalled, $sPrivateDataFolderInternalName);
|
||||
}
|
||||
|
||||
include APP_VERSION_ROOT_PATH.'app/handle.php';
|
||||
|
||||
if (defined('RAINLOOP_EXIT_ON_END') && RAINLOOP_EXIT_ON_END)
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,197 +0,0 @@
|
|||
<?php
|
||||
|
||||
if (defined('APP_VERSION'))
|
||||
{
|
||||
if (!defined('APP_START'))
|
||||
{
|
||||
define('APP_START', microtime(true));
|
||||
|
||||
@ini_set('register_globals', 0);
|
||||
@ini_set('zend.ze1_compatibility_mode', 0);
|
||||
@ini_set('magic_quotes_gpc', 0);
|
||||
@ini_set('magic_quotes_runtime', 0);
|
||||
|
||||
define('APP_DEFAULT_DENY_ALL_HTACCESS', 'Deny from all
|
||||
<IfModule mod_autoindex.c>
|
||||
Options -Indexes
|
||||
</ifModule>');
|
||||
|
||||
define('APP_START_TIME', time());
|
||||
define('APP_REQUEST_RND', md5(APP_START.rand(10000, 99999).APP_START));
|
||||
define('APP_VERSION_ROOT_PATH', APP_INDEX_ROOT_PATH.'rainloop/v/'.APP_VERSION.'/');
|
||||
|
||||
define('APP_USE_APC_CACHE', true);
|
||||
|
||||
$sCustomDataPath = '';
|
||||
if (file_exists(APP_INDEX_ROOT_PATH.'include.php'))
|
||||
{
|
||||
include_once APP_INDEX_ROOT_PATH.'include.php';
|
||||
$sCustomDataPath = function_exists('__get_custom_data_full_path') ? rtrim(trim(__get_custom_data_full_path()), '\\/') : '';
|
||||
}
|
||||
|
||||
define('APP_DATA_FOLDER_PATH', 0 === strlen($sCustomDataPath) ? APP_INDEX_ROOT_PATH.'data/' : $sCustomDataPath.'/');
|
||||
unset($sCustomDataPath);
|
||||
|
||||
if (function_exists('date_default_timezone_set'))
|
||||
{
|
||||
date_default_timezone_set('UTC');
|
||||
}
|
||||
|
||||
$sSite = strtolower(trim(empty($_SERVER['HTTP_HOST']) ? (empty($_SERVER['SERVER_NAME']) ? '' : $_SERVER['SERVER_NAME']) : $_SERVER['HTTP_HOST']));
|
||||
$sSite = 'www.' === substr($sSite, 0, 4) ? substr($sSite, 4) : $sSite;
|
||||
$sSite = preg_replace('/^.+@/', '', preg_replace('/:[\d]+$/', '', $sSite));
|
||||
$sSite = in_array($sSite, array('localhost', '127.0.0.1', '::1', '::1/128', '0:0:0:0:0:0:0:1')) ? 'localhost' : $sSite;
|
||||
|
||||
define('APP_SITE', $sSite);
|
||||
define('APP_SITE_CLEAR', 0 < strlen(APP_SITE) ? trim(preg_replace('/[^a-zA-Z0-9_.\-]+/', '_', trim(strtolower(APP_SITE))), ' _') : '');
|
||||
|
||||
define('APP_DEFAULT_PRIVATE_DATA_NAME', '_default_');
|
||||
|
||||
$sPrivateDataFolderInternalName = @file_exists(APP_INDEX_ROOT_PATH.'MULTIPLY') ? APP_SITE : '';
|
||||
define('APP_PRIVATE_DATA_NAME', 0 === strlen($sPrivateDataFolderInternalName) ? APP_DEFAULT_PRIVATE_DATA_NAME : $sPrivateDataFolderInternalName);
|
||||
define('APP_MULTIPLY', 0 < strlen($sPrivateDataFolderInternalName) && APP_DEFAULT_PRIVATE_DATA_NAME !== APP_PRIVATE_DATA_NAME);
|
||||
|
||||
define('APP_DUMMY', '********');
|
||||
define('APP_DEV_VERSION', '0.0.0');
|
||||
define('APP_API_PATH', 'http://api.rainloop.net/');
|
||||
define('APP_REP_PATH', 'http://repository.rainloop.net/v1/');
|
||||
define('APP_REPO_CORE_FILE', 'http://repository.rainloop.net/v2/core.{{channel}}.json');
|
||||
define('APP_WEB_PATH', 'rainloop/v/'.APP_VERSION.'/');
|
||||
define('APP_WEB_STATIC_PATH', APP_WEB_PATH.'static/');
|
||||
define('APP_DATA_FOLDER_PATH_UNIX', str_replace('\\', '/', APP_DATA_FOLDER_PATH));
|
||||
|
||||
$sSalt = @file_get_contents(APP_DATA_FOLDER_PATH.'SALT.php');
|
||||
$sData = @file_get_contents(APP_DATA_FOLDER_PATH.'DATA.php');
|
||||
$sInstalled = @file_get_contents(APP_DATA_FOLDER_PATH.'INSTALLED');
|
||||
|
||||
// installation checking data folder
|
||||
if (APP_VERSION !== $sInstalled)
|
||||
{
|
||||
include APP_VERSION_ROOT_PATH.'check.php';
|
||||
|
||||
$sCheckName = 'delete_if_you_see_it_after_install';
|
||||
$sCheckFolder = APP_DATA_FOLDER_PATH.$sCheckName;
|
||||
$sCheckFilePath = APP_DATA_FOLDER_PATH.$sCheckName.'/'.$sCheckName.'.file';
|
||||
|
||||
@unlink($sCheckFilePath);
|
||||
@rmdir($sCheckFolder);
|
||||
|
||||
if (!@is_dir(APP_DATA_FOLDER_PATH))
|
||||
{
|
||||
@mkdir(APP_DATA_FOLDER_PATH, 0755);
|
||||
}
|
||||
else
|
||||
{
|
||||
@chmod(APP_DATA_FOLDER_PATH, 0755);
|
||||
}
|
||||
|
||||
$sTest = '';
|
||||
switch (true)
|
||||
{
|
||||
case !@is_dir(APP_DATA_FOLDER_PATH):
|
||||
$sTest = 'is_dir';
|
||||
break;
|
||||
case !@is_readable(APP_DATA_FOLDER_PATH):
|
||||
$sTest = 'is_readable';
|
||||
break;
|
||||
case !@is_writable(APP_DATA_FOLDER_PATH):
|
||||
$sTest = 'is_writable';
|
||||
break;
|
||||
case !@mkdir($sCheckFolder, 0755):
|
||||
$sTest = 'mkdir';
|
||||
break;
|
||||
case false === @file_put_contents($sCheckFilePath, time()):
|
||||
$sTest = 'file_put_contents';
|
||||
break;
|
||||
case !@unlink($sCheckFilePath):
|
||||
$sTest = 'unlink';
|
||||
break;
|
||||
case !@rmdir($sCheckFolder):
|
||||
$sTest = 'rmdir';
|
||||
break;
|
||||
}
|
||||
|
||||
if (!empty($sTest))
|
||||
{
|
||||
echo '[202] Data folder permisions error ['.$sTest.']';
|
||||
exit(202);
|
||||
}
|
||||
|
||||
unset($sCheckName, $sCheckFilePath, $sCheckFolder, $sTest);
|
||||
}
|
||||
|
||||
if (false === $sSalt || false === $sData)
|
||||
{
|
||||
if (false === $sSalt)
|
||||
{
|
||||
// random salt
|
||||
$sSalt = '<'.'?php //'
|
||||
.md5(microtime(true).rand(1000, 5000))
|
||||
.md5(microtime(true).rand(5000, 9999))
|
||||
.md5(microtime(true).rand(1000, 5000));
|
||||
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'SALT.php', $sSalt);
|
||||
}
|
||||
|
||||
if (false === $sData)
|
||||
{
|
||||
// random data folder name
|
||||
$sData = '<'.'?php //'.md5(microtime(true).rand(1000, 9999));
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'DATA.php', $sData);
|
||||
}
|
||||
}
|
||||
|
||||
define('APP_SALT', md5($sSalt.APP_PRIVATE_DATA_NAME.$sSalt));
|
||||
define('APP_PRIVATE_DATA', APP_DATA_FOLDER_PATH.'_data_'.md5($sData).'/'.APP_PRIVATE_DATA_NAME.'/');
|
||||
define('APP_PLUGINS_PATH', APP_PRIVATE_DATA.'plugins/');
|
||||
|
||||
if (APP_VERSION !== $sInstalled || (APP_MULTIPLY && !@is_dir(APP_PRIVATE_DATA)))
|
||||
{
|
||||
define('APP_INSTALLED_START', true);
|
||||
define('APP_INSTALLED_VERSION', $sInstalled);
|
||||
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'INSTALLED', APP_VERSION);
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'index.html', 'Forbidden');
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'index.php', 'Forbidden');
|
||||
@file_put_contents(APP_DATA_FOLDER_PATH.'.htaccess', APP_DEFAULT_DENY_ALL_HTACCESS);
|
||||
|
||||
if (!@is_dir(APP_PRIVATE_DATA))
|
||||
{
|
||||
@mkdir(APP_PRIVATE_DATA, 0755, true);
|
||||
}
|
||||
|
||||
foreach (array('logs', 'cache', 'configs', 'plugins', 'storage') as $sName)
|
||||
{
|
||||
if (!@is_dir(APP_PRIVATE_DATA.$sName))
|
||||
{
|
||||
@mkdir(APP_PRIVATE_DATA.$sName, 0755, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (!@file_exists(APP_PRIVATE_DATA.'domains/default.ini'))
|
||||
{
|
||||
if (!@is_dir(APP_PRIVATE_DATA.'domains'))
|
||||
{
|
||||
@mkdir(APP_PRIVATE_DATA.'domains', 0755);
|
||||
|
||||
@copy(APP_VERSION_ROOT_PATH.'app/domains/disabled', APP_PRIVATE_DATA.'domains/disabled');
|
||||
@copy(APP_VERSION_ROOT_PATH.'app/domains/gmail.com.ini', APP_PRIVATE_DATA.'domains/gmail.com.ini');
|
||||
@copy(APP_VERSION_ROOT_PATH.'app/domains/yahoo.com.ini', APP_PRIVATE_DATA.'domains/yahoo.com.ini');
|
||||
@copy(APP_VERSION_ROOT_PATH.'app/domains/outlook.com.ini', APP_PRIVATE_DATA.'domains/outlook.com.ini');
|
||||
@copy(APP_VERSION_ROOT_PATH.'app/domains/qq.com.ini', APP_PRIVATE_DATA.'domains/qq.com.ini');
|
||||
}
|
||||
|
||||
@copy(APP_VERSION_ROOT_PATH.'app/domains/default.ini.dist', APP_PRIVATE_DATA.'domains/default.ini');
|
||||
}
|
||||
}
|
||||
|
||||
unset($sSite, $sSalt, $sData, $sInstalled, $sPrivateDataFolderInternalName);
|
||||
}
|
||||
|
||||
include APP_VERSION_ROOT_PATH.'app/handle.php';
|
||||
|
||||
if (defined('RAINLOOP_EXIT_ON_END') && RAINLOOP_EXIT_ON_END)
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Изпратено"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Заглавие"
|
||||
EMPTY_TO_ERROR_DESC = "Моля, изберте поне един получател"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Все още не са качени всички прикрепени файлове"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Поискайте разписка за прочитане на съобщението"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -395,6 +397,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Общи"
|
||||
LABEL_LANGUAGE = "Език"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Текстов редактор по подразбиране"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Обикновен"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Gesendet"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Betreff"
|
||||
EMPTY_TO_ERROR_DESC = "Geben Sie bitte mindestens einen Empfänger an"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Empfangsbestätigung anfordern"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -395,6 +397,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Wenn Sie keine Codes via Google Authenticator er
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Allgemein"
|
||||
LABEL_LANGUAGE = "Sprache"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Standard-Text-Editor"
|
||||
LABEL_EDITOR_HTML = "HTML"
|
||||
LABEL_EDITOR_PLAIN = "Text"
|
||||
|
|
|
|||
|
|
@ -225,7 +225,9 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Sent"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Subject"
|
||||
EMPTY_TO_ERROR_DESC = "Please specify at least one recipient"
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet."
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
BUTTON_OPEN_PGP = "OpenPGP (Plain Text Only)"
|
||||
|
|
@ -409,6 +411,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "General"
|
||||
LABEL_LANGUAGE = "Language"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Default text editor"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Plain"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Enviado"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Asunto"
|
||||
EMPTY_TO_ERROR_DESC = "Por favor especifique al menos un destinatario"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Solicitar confirmación de lectura"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Si usted no puede recibir los códigos a través
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "General"
|
||||
LABEL_LANGUAGE = "Idioma"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Editor de texto predeterminado"
|
||||
LABEL_EDITOR_HTML = "HTML"
|
||||
LABEL_EDITOR_PLAIN = "Texto plano"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Envoyé"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Sujet"
|
||||
EMPTY_TO_ERROR_DESC = "Merci de spécifier au minimum un destinataire"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Demander une confirmation de lecture"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Si vous ne pouvez pas recevoir les codes par Goo
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Général"
|
||||
LABEL_LANGUAGE = "Langue"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Éditeur de texte par défaut"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Brut"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Küldő"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Tárgy"
|
||||
EMPTY_TO_ERROR_DESC = "Please specify at least one recipient"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "General"
|
||||
LABEL_LANGUAGE = "Language"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Default text editor"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Plain"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Sent"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Viðfangsefni"
|
||||
EMPTY_TO_ERROR_DESC = "Vinsamlegast taktu fram að minnsta kosti einn viðtakanda"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Almennt"
|
||||
LABEL_LANGUAGE = "Tungumál"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Sjálfgefinn textaritill"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Venjulegur"
|
||||
|
|
|
|||
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Inviato il"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Oggetto"
|
||||
EMPTY_TO_ERROR_DESC = "Specifica almeno un destinatario"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Richiedi conferma di lettura"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -395,6 +397,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Se non puoi ricevere codici da Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Generali"
|
||||
LABEL_LANGUAGE = "Lingua"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Editor di testo di default"
|
||||
LABEL_EDITOR_HTML = "HTML"
|
||||
LABEL_EDITOR_PLAIN = "Testo semplice"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Sent"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Subject"
|
||||
EMPTY_TO_ERROR_DESC = "Please specify at least one recipient"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "開封確認を要求しますか?"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "全般"
|
||||
LABEL_LANGUAGE = "言語"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "メール形式"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "プレーンテキスト"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "참조"
|
|||
FORWARD_MESSAGE_TOP_SENT = "보냄"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "제목"
|
||||
EMPTY_TO_ERROR_DESC = "수신인을 한 명 이상 선택하세요"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -391,6 +393,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "일반"
|
||||
LABEL_LANGUAGE = "언어"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "기본 본문 편집 도구"
|
||||
LABEL_EDITOR_HTML = "Html 편집기"
|
||||
LABEL_EDITOR_PLAIN = "텍스트 편집기"
|
||||
|
|
|
|||
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_CC = "Kopija CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Išsiųstas"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Tema"
|
||||
EMPTY_TO_ERROR_DESC = "Prašome nurodyti bent vieną gavėją"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Dar ne visi priedai buvo įkelti"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Prašyti pranešti kada bus perskaitytas"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -395,6 +397,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Jei negaunate kodo per Google autentifikavimo kl
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Pagrindiniai"
|
||||
LABEL_LANGUAGE = "Kalba"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Numatytas teksto redaktorius"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Paprastas"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Nosūtīts"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Tēma"
|
||||
EMPTY_TO_ERROR_DESC = "Pievienojat vismaz vienu saņēmēju"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Vispārējie"
|
||||
LABEL_LANGUAGE = "Valoda"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Galvenais teksta editors"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Teksts"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Verzonden"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Onderwerp"
|
||||
EMPTY_TO_ERROR_DESC = "Kies ten minste één ontvanger voordat u het bericht verstuurd"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Toevoegen van bijlage(n) is nog niet gereed"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Leesbevestiging vragen"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Als u geen codes ontvangt via de Google Authenti
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Algemeen"
|
||||
LABEL_LANGUAGE = "Taal"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Standaard tekst editor"
|
||||
LABEL_EDITOR_HTML = "HTML"
|
||||
LABEL_EDITOR_PLAIN = "Platte tekst"
|
||||
|
|
|
|||
|
|
@ -223,6 +223,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Sendt"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Emne"
|
||||
EMPTY_TO_ERROR_DESC = "Vennligst oppgi minst én mottaker"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Alle vedleggene er ikke lastet opp ennå"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Be om en lesebekreftelse når meldingen er lest"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -393,6 +395,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Om du ikke mottar koder fra Google Authenticator
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Generelt"
|
||||
LABEL_LANGUAGE = "Språk"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Standard teksteditor"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Ren tekst"
|
||||
|
|
|
|||
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Wysłany"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Temat"
|
||||
EMPTY_TO_ERROR_DESC = "Wprowadź co najmniej jednego odbiorcę"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Nie przesłano jeszcze wszystkich załączników"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Żądaj potwierdzenia odbioru"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -409,6 +411,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Jeżeli nie możesz otrzymać kodu poprzez apika
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Ogólne"
|
||||
LABEL_LANGUAGE = "Język"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Format wiadomości"
|
||||
LABEL_EDITOR_HTML = "HTML"
|
||||
LABEL_EDITOR_PLAIN = "Zwykły tekst"
|
||||
|
|
|
|||
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Recebida"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Assunto"
|
||||
EMPTY_TO_ERROR_DESC = "Por favor, especifique pelo menos um destinatário"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Alguns anexos ainda não foram completamente enviados"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Pedir recibo de leitura"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -395,6 +397,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Se você não puder receber os códigos via Goog
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Geral"
|
||||
LABEL_LANGUAGE = "Idioma"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Editor de texto padrão"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Texto Simples"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Enviar"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Assunto"
|
||||
EMPTY_TO_ERROR_DESC = "Por favor, especifique pelo menos um destinatário"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Pedir um recibo de leitura"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Geral"
|
||||
LABEL_LANGUAGE = "Linguagem"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Editor de texto padrão"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Simples"
|
||||
|
|
|
|||
|
|
@ -223,6 +223,8 @@ FORWARD_MESSAGE_TOP_CC = "Copie"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Primit la"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Subiect"
|
||||
EMPTY_TO_ERROR_DESC = "Vă rugăm să specificați cel puțin un destinatar"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Cere confirmare de citire"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -393,6 +395,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Setări de bază"
|
||||
LABEL_LANGUAGE = "Limbă"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Editor de text implicit"
|
||||
LABEL_EDITOR_HTML = "Formatat"
|
||||
LABEL_EDITOR_PLAIN = "Simplu"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "Копия"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Отправлено"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Тема"
|
||||
EMPTY_TO_ERROR_DESC = "Укажите как минимум одного получателя"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Запрос о прочтении письма"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Если вы не можете получить
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Основные Настройки"
|
||||
LABEL_LANGUAGE = "Язык"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Редактор текста по умолчанию"
|
||||
LABEL_EDITOR_HTML = "Форматированный"
|
||||
LABEL_EDITOR_PLAIN = "Простой"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "Kópia"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Odoslať"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Predmet"
|
||||
EMPTY_TO_ERROR_DESC = "Zadajte prosím aspoň jedného príjemcu"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Vyžiadať potvrdenie o prečítaní"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Všeobecné"
|
||||
LABEL_LANGUAGE = "Jazyk"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Predvolený editor správ"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Text"
|
||||
|
|
|
|||
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Skickat"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Ämne"
|
||||
EMPTY_TO_ERROR_DESC = "Ange minst en mottagare"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Alla bilagor är inte uppladddade än"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Begär mottagningskvitto"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -395,6 +397,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Om du inte kan ta emot koderna med Google Authen
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Allmänt"
|
||||
LABEL_LANGUAGE = "Språk"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Textredigerare"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Enkel"
|
||||
|
|
|
|||
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_CC = "CC"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Gönder"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Konu"
|
||||
EMPTY_TO_ERROR_DESC = "En az bir alıcı belirtin"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Okundu bilgisi iste"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -393,6 +395,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Google Şifrematik'te aracılığıyla kodları
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Genel"
|
||||
LABEL_LANGUAGE = "Dil"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Varsayılan text editör"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Düz"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "Копія"
|
|||
FORWARD_MESSAGE_TOP_SENT = "Надіслано"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "Тема"
|
||||
EMPTY_TO_ERROR_DESC = "Вкажіть як мінімум одного отримувача"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Запит про прочитання листа"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "Якщо Ви не можете отримати
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "Основні Налаштування"
|
||||
LABEL_LANGUAGE = "Мова"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "Редактор тексту за змовчуванням"
|
||||
LABEL_EDITOR_HTML = "Форматований"
|
||||
LABEL_EDITOR_PLAIN = "Простий"
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@ FORWARD_MESSAGE_TOP_CC = "抄送"
|
|||
FORWARD_MESSAGE_TOP_SENT = "发送"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "主题"
|
||||
EMPTY_TO_ERROR_DESC = "请至少选择一位接收人"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -394,6 +396,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "一般设置"
|
||||
LABEL_LANGUAGE = "语言"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "默认格式"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Plain"
|
||||
|
|
|
|||
|
|
@ -225,6 +225,8 @@ FORWARD_MESSAGE_TOP_CC = "複本"
|
|||
FORWARD_MESSAGE_TOP_SENT = "發送"
|
||||
FORWARD_MESSAGE_TOP_SUBJECT = "主題"
|
||||
EMPTY_TO_ERROR_DESC = "請至少選擇一位接收人"
|
||||
NO_ATTACHMENTS_HERE_DESC = "No attachments here."
|
||||
ATTACHMENTS_ERROR_DESC = "Warning! Not all attachments have been uploaded."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC = "Not all attachments have been uploaded yet"
|
||||
BUTTON_REQUEST_READ_RECEIPT = "Request a read receipt"
|
||||
BUTTON_MARK_AS_IMPORTANT = "Mark as important"
|
||||
|
|
@ -395,6 +397,10 @@ TWO_FACTOR_BACKUP_CODES_DESC = "If you can't receive codes via Google Authentica
|
|||
[SETTINGS_GENERAL]
|
||||
LEGEND_GENERAL = "一般設置"
|
||||
LABEL_LANGUAGE = "語言"
|
||||
LABEL_LAYOUT = "Layout"
|
||||
LABEL_LAYOUT_NO_SPLIT = "No Split"
|
||||
LABEL_LAYOUT_VERTICAL_SPLIT = "Vertical Split"
|
||||
LABEL_LAYOUT_HORIZONTAL_SPLIT = "Horizontal Split"
|
||||
LABEL_EDITOR = "默認格式"
|
||||
LABEL_EDITOR_HTML = "Html"
|
||||
LABEL_EDITOR_PLAIN = "Plain"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue