Road to the MIT

This commit is contained in:
RainLoop Team 2022-08-31 18:15:45 +00:00
parent 13d05dc2ff
commit aa5d3fc89d
75 changed files with 392 additions and 2283 deletions

View file

@ -239,7 +239,8 @@ class HtmlUtils
$oWrapHtml->setAttribute($sKey, $sValue);
}
$oWrapDom = $oDom->createElement('div', '___xxx___');
$sRndId = '__wrp__'.md5(APP_START.rand(10000, 99999).APP_START).'__';
$oWrapDom = $oDom->createElement('div', $sRndId);
$oWrapDom->setAttribute('data-x-div-type', 'body');
foreach ($aBodylAttrs as $sKey => $sValue)
{
@ -250,7 +251,7 @@ class HtmlUtils
$sWrp = $oDom->saveHTML($oWrapHtml);
$sResult = \str_replace('___xxx___', $sResult, $sWrp);
$sResult = \str_replace($sRndId, $sResult, $sWrp);
}
$sResult = \str_replace(\MailSo\Base\HtmlUtils::$KOS, ':', $sResult);

View file

@ -112,9 +112,9 @@ class Actions
private $oTwoFactorAuthProvider;
/**
* @var \RainLoop\Providers\Prem
* @var \RainLoop\Providers\Version
*/
private $oPremProvider;
private $oVersionProvider;
/**
* @var \RainLoop\Config\Application
@ -157,7 +157,7 @@ class Actions
$this->oSuggestionsProvider = null;
$this->oChangePasswordProvider = null;
$this->oTwoFactorAuthProvider = null;
$this->oPremProvider = null;
$this->oVersionProvider = null;
$this->sSpecAuthToken = '';
$this->sUpdateAuthToken = '';
@ -841,25 +841,18 @@ class Actions
}
/**
* @return \RainLoop\Providers\Prem
* @return \RainLoop\Providers\Version
*/
public function PremProvider()
public function VersionProvider()
{
if (null === $this->oPremProvider)
if (null === $this->oVersionProvider)
{
if (\file_exists(APP_VERSION_ROOT_PATH.'app/libraries/RainLoop/Providers/Prem.php'))
{
$this->oPremProvider = new \RainLoop\Providers\Prem(
$this->Config(), $this->Logger(), $this->Cacher(null, true)
);
}
else
{
$this->oPremProvider = false;
}
$this->oVersionProvider = new \RainLoop\Providers\Version(
$this->Config(), $this->Logger()
);
}
return $this->oPremProvider;
return $this->oVersionProvider;
}
/**
@ -1428,14 +1421,6 @@ class Actions
return $this->GetAccountFromCustomToken($this->getLocalAuthToken(), $bThrowExceptionOnFalse, true, true);
}
/**
* @return bool
*/
public function IsOpen()
{
return !$this->PremProvider();
}
/**
* @param bool $bAdmin = false
* @param bool $bMobile = false
@ -1482,7 +1467,7 @@ class Actions
'customLogoutLink' => $oConfig->Get('labs', 'custom_logout_link', ''),
'forgotPasswordLinkUrl' => \trim($oConfig->Get('login', 'forgot_password_link_url', '')),
'registrationLinkUrl' => \trim($oConfig->Get('login', 'registration_link_url', '')),
'hideSubmitButton' => (bool) $oConfig->Get('login', 'hide_submit_button', true),
'hideSubmitButton' => (bool) $oConfig->Get('login', 'hide_submit_button', false),
'jsHash' => \md5(\RainLoop\Utils::GetConnectionToken()),
'useImapThread' => (bool) $oConfig->Get('labs', 'use_imap_thread', false),
'useImapSubscribe' => (bool) $oConfig->Get('labs', 'use_imap_list_subscribe', true),
@ -1496,7 +1481,6 @@ class Actions
'themes' => $this->GetThemes($bMobile, false),
'languages' => $this->GetLanguages(false),
'languagesAdmin' => $this->GetLanguages(true),
'appVersionType' => APP_VERSION_TYPE,
'attachmentsActions' => $aAttachmentsActions
), $bAdmin ? array(
'adminHostUse' => '' !== $oConfig->Get('security', 'admin_panel_host', ''),
@ -1561,8 +1545,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
'ContactsIsAllowed' => false,
'ChangePasswordIsAllowed' => false,
'RequireTwoFactor' => false,
'Community' => true,
'PremType' => false,
'Admin' => array(),
'Capa' => array(),
'Plugins' => array(),
@ -1574,11 +1556,17 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
$aResult['AuthAccountHash'] = $sAuthAccountHash;
}
$oPremProvider = $this->PremProvider();
if ($oPremProvider)
{
$oPremProvider->PopulateAppData($aResult);
}
$aResult['LoginLogo'] = $oConfig->Get('branding', 'login_logo', '');
$aResult['LoginBackground'] = $oConfig->Get('branding', 'login_background', '');
$aResult['LoginCss'] = $oConfig->Get('branding', 'login_css', '');
$aResult['LoginDescription'] = $oConfig->Get('branding', 'login_desc', '');
$aResult['UserLogo'] = $oConfig->Get('branding', 'user_logo', '');
$aResult['UserLogoTitle'] = $oConfig->Get('branding', 'user_logo_title', '');
$aResult['UserLogoMessage'] = $oConfig->Get('branding', 'user_logo_message', '');
$aResult['UserIframeMessage'] = $oConfig->Get('branding', 'user_iframe_message', '');
$aResult['UserCss'] = $oConfig->Get('branding', 'user_css', '');
$aResult['WelcomePageUrl'] = $oConfig->Get('branding', 'welcome_page_url', '');
$aResult['WelcomePageDisplay'] = \strtolower($oConfig->Get('branding', 'welcome_page_display', 'none'));
if ('' !== $aResult['LoadingDescription'] && 'RainLoop' !== $aResult['LoadingDescription'])
{
@ -1811,9 +1799,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
$aResult['AllowDropboxSocial'] = (bool) $oConfig->Get('social', 'dropbox_enable', false);
$aResult['DropboxApiKey'] = (string) $oConfig->Get('social', 'dropbox_api_key', '');
$aResult['SubscriptionEnabled'] = (bool) \MailSo\Base\Utils::ValidateDomain($aResult['AdminDomain'], true);
// || \MailSo\Base\Utils::ValidateIP($aResult['AdminDomain']);
$aResult['WeakPassword'] = (bool) $oConfig->ValidatePassword('12345');
$aResult['CoreAccess'] = (bool) $this->rainLoopCoreAccess();
@ -3638,11 +3623,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
}
else if ($bVersionsCache)
{
$oPremProvider = $this->PremProvider();
if ($oPremProvider)
{
$oPremProvider->ClearOldVersion();
}
$this->VersionProvider()->ClearOldVersion();
}
$this->Plugins()->RunHook('service.app-delay-start-end');
@ -3884,11 +3865,19 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
$this->setConfigFromParams($oConfig, 'DropboxEnable', 'social', 'dropbox_enable', 'bool');
$this->setConfigFromParams($oConfig, 'DropboxApiKey', 'social', 'dropbox_api_key', 'string');
$oPremProvider = $this->PremProvider();
if ($oPremProvider)
{
$oPremProvider->PremSection($this, $oConfig);
}
$this->setConfigFromParams($oConfig, 'LoginLogo', 'branding', 'login_logo', 'string');
$this->setConfigFromParams($oConfig, 'LoginBackground', 'branding', 'login_background', 'string');
$this->setConfigFromParams($oConfig, 'LoginDescription', 'branding', 'login_desc', 'string');
$this->setConfigFromParams($oConfig, 'LoginCss', 'branding', 'login_css', 'string');
$this->setConfigFromParams($oConfig, 'UserLogo', 'branding', 'user_logo', 'string');
$this->setConfigFromParams($oConfig, 'UserLogoTitle', 'branding', 'user_logo_title', 'string');
$this->setConfigFromParams($oConfig, 'UserLogoMessage', 'branding', 'user_logo_message', 'string');
$this->setConfigFromParams($oConfig, 'UserIframeMessage', 'branding', 'user_iframe_message', 'string');
$this->setConfigFromParams($oConfig, 'UserCss', 'branding', 'user_css', 'string');
$this->setConfigFromParams($oConfig, 'WelcomePageUrl', 'branding', 'welcome_page_url', 'string');
$this->setConfigFromParams($oConfig, 'WelcomePageDisplay', 'branding', 'welcome_page_display', 'string');
return $this->DefaultResponse(__FUNCTION__, $oConfig->Save());
}
@ -3971,48 +3960,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
public function DoAdminLicensing()
{
$this->IsAdminLoggined();
$bForce = '1' === (string) $this->GetActionParam('Force', '0');
$mResult = false;
$iErrorCode = -1;
$oPremProvider = $this->PremProvider();
if ($oPremProvider && 2 < \strlen(APP_SITE))
{
$sValue = $oPremProvider->Fetcher($bForce);
$this->requestSleep();
$iExpired = 0;
if ($oPremProvider->Parser($sValue, $iExpired))
{
$mResult = array(
'Banned' => false,
'Expired' => $iExpired,
);
}
else if ($sValue === 'NO' || \preg_match('/^EXPIRED:[\d]+$/', $sValue))
{
$iErrorCode = -1;
}
else if ($sValue === 'TOO_MANY_CONNECTIONS')
{
$iErrorCode = -1;
}
else
{
$iErrorCode = \RainLoop\Notifications::LicensingServerIsUnavailable;
}
}
if (0 < $iErrorCode && !$mResult)
{
throw new \RainLoop\Exceptions\ClientException($iErrorCode);
}
return $this->DefaultResponse(__FUNCTION__, $mResult);
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::LicensingServerIsUnavailable);
}
/**
@ -4021,50 +3969,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
public function DoAdminLicensingActivate()
{
$this->IsAdminLoggined();
$sDomain = (string) $this->GetActionParam('Domain', '');
$sKey = (string) $this->GetActionParam('Key', '');
$mResult = false;
$iErrorCode = -1;
$oPrem = $this->PremProvider();
if ($oPrem && 2 < \strlen($sDomain) && 2 < \strlen($sKey) && $sDomain === APP_SITE)
{
$iCode = 0;
$sValue = $oPrem->Activate($sDomain, $sKey, $iCode);
$this->requestSleep();
$aMatch = array();
if ('OK' === $sValue)
{
$mResult = true;
}
else if ('TOO_MANY_CONNECTIONS' === $sValue)
{
$mResult = 'Too many connections. Please try again later.';
}
else if (\preg_match('/^ERROR:(.+)$/', $sValue, $aMatch) && !empty($aMatch[1]))
{
$mResult = trim($aMatch[1]);
$this->Logger()->Write('Activation error for: '.$sKey.' ('.$sDomain.')', \MailSo\Log\Enumerations\Type::ERROR);
$this->Logger()->Write($mResult, \MailSo\Log\Enumerations\Type::ERROR);
}
else
{
$iErrorCode = \RainLoop\Notifications::LicensingServerIsUnavailable;
}
}
if (0 < $iErrorCode && !$mResult)
{
throw new \RainLoop\Exceptions\ClientException($iErrorCode);
}
return $this->DefaultResponse(__FUNCTION__, $mResult);
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::LicensingServerIsUnavailable);
}
/**
@ -4670,7 +4575,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
$bRainLoopUpdatable = $this->rainLoopUpdatable();
$bRainLoopAccess = $this->rainLoopCoreAccess();
$oPremProvider = $this->PremProvider();
$aData = array();
if ($bRainLoopUpdatable && $bRainLoopAccess)
@ -4679,9 +4583,9 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
}
$bResult = false;
if ($bReal && $oPremProvider && !empty($aData['file']))
if ($bReal && !empty($aData['file']))
{
$bResult = $oPremProvider->UpdateCore($this, $aData['file']);
$bResult = $this->VersionProvider()->UpdateCore($this, $aData['file']);
}
return $this->DefaultResponse(__FUNCTION__, $bResult);
@ -9701,9 +9605,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc LangLink IncludeBackground Plugins
*/
public function StaticPath($sPath)
{
$sKey = defined('APP_VERSION_TYPE') && 0 < strlen(APP_VERSION_TYPE) ? APP_VERSION_TYPE :
($this->IsOpen() ? 'community' : 'standard');
$sKey = 'legacy';
$sResult = \RainLoop\Utils::WebStaticPath().$sPath;
return $sResult.(false === \strpos($sResult, '?') ? '?' : '&').$sKey;
}

View file

@ -269,7 +269,7 @@ class Application extends \RainLoop\Config\AbstractConfig
'welcome_page' => array(false, ''),
'hide_submit_button' => array(true),
'hide_submit_button' => array(false),
'forgot_password_link_url' => array('', ''),
'registration_link_url' => array('', ''),

View file

@ -4,7 +4,6 @@ namespace RainLoop\Enumerations;
class Capa
{
const PREM = 'PREM';
const TWO_FACTOR = 'TWO_FACTOR';
const TWO_FACTOR_FORCE = 'TWO_FACTOR_FORCE';
const OPEN_PGP = 'OPEN_PGP';

View file

@ -1,390 +0,0 @@
<?php
namespace RainLoop\Providers;
class Prem
{
/**
* @return void
*/
public function __construct($oConfig, $oLogger, $oCacher)
{
$this->oConfig = $oConfig;
$this->oLogger = $oLogger;
$this->oCacher = $oCacher;
}
/**
* @return bool
*/
public function Type()
{
static $bResult = null;
if (null === $bResult)
{
$bResult = $this->Parser($this->Fetcher(false, true));
}
return $bResult;
}
/**
* @return bool
*/
public function IsActive()
{
return true;
}
/**
* @param string $sInput
* @param int $iExpired = 0
*
* @return bool
*/
public function Parser($sInput, &$iExpired = 0)
{
$aMatch = array();
if (\preg_match('/^EXPIRED:([\d]+)$/', $sInput, $aMatch))
{
$iExpired = (int) $aMatch[1];
return \time() < $iExpired;
}
return false;
}
/**
* @param array $aAppData
*/
public function PopulateAppData(&$aAppData)
{
if (\is_array($aAppData))
{
$aAppData['Community'] = false;
$oConfig = $this->oConfig;
if ($oConfig && $this->Type())
{
$aAppData['PremType'] = true;
$aAppData['LoginLogo'] = $oConfig->Get('branding', 'login_logo', '');
$aAppData['LoginBackground'] = $oConfig->Get('branding', 'login_background', '');
$aAppData['LoginCss'] = $oConfig->Get('branding', 'login_css', '');
$aAppData['LoginDescription'] = $oConfig->Get('branding', 'login_desc', '');
$aAppData['UserLogo'] = $oConfig->Get('branding', 'user_logo', '');
$aAppData['UserLogoTitle'] = $oConfig->Get('branding', 'user_logo_title', '');
$aAppData['UserLogoMessage'] = $oConfig->Get('branding', 'user_logo_message', '');
$aAppData['UserIframeMessage'] = $oConfig->Get('branding', 'user_iframe_message', '');
$aAppData['UserCss'] = $oConfig->Get('branding', 'user_css', '');
$aAppData['WelcomePageUrl'] = $oConfig->Get('branding', 'welcome_page_url', '');
$aAppData['WelcomePageDisplay'] = \strtolower($oConfig->Get('branding', 'welcome_page_display', 'none'));
}
}
}
public function PremSection(&$oActions, &$oConfig)
{
if ($oActions && $oActions->HasOneOfActionParams(array(
'LoginLogo', 'LoginBackground', 'LoginDescription', 'LoginCss',
'UserLogo', 'UserLogoTitle', 'UserLogoMessage', 'UserIframeMessage', 'UserCss',
'WelcomePageUrl', 'WelcomePageDisplay'
)) && $this->Type())
{
$oActions->setConfigFromParams($oConfig, 'LoginLogo', 'branding', 'login_logo', 'string');
$oActions->setConfigFromParams($oConfig, 'LoginBackground', 'branding', 'login_background', 'string');
$oActions->setConfigFromParams($oConfig, 'LoginDescription', 'branding', 'login_desc', 'string');
$oActions->setConfigFromParams($oConfig, 'LoginCss', 'branding', 'login_css', 'string');
$oActions->setConfigFromParams($oConfig, 'UserLogo', 'branding', 'user_logo', 'string');
$oActions->setConfigFromParams($oConfig, 'UserLogoTitle', 'branding', 'user_logo_title', 'string');
$oActions->setConfigFromParams($oConfig, 'UserLogoMessage', 'branding', 'user_logo_message', 'string');
$oActions->setConfigFromParams($oConfig, 'UserIframeMessage', 'branding', 'user_iframe_message', 'string');
$oActions->setConfigFromParams($oConfig, 'UserCss', 'branding', 'user_css', 'string');
$oActions->setConfigFromParams($oConfig, 'WelcomePageUrl', 'branding', 'welcome_page_url', 'string');
$oActions->setConfigFromParams($oConfig, 'WelcomePageDisplay', 'branding', 'welcome_page_display', 'string');
}
}
/**
* @return string
*/
public function Activate($sDomain, $sKey, &$iCode)
{
$iCode = 0;
$sContentType = '';
$oHttp = \MailSo\Base\Http::SingletonInstance();
$sResult = $oHttp->GetUrlAsString(APP_API_PATH.'activate/'.\urlencode($sDomain).'/'.\urlencode($sKey),
'RainLoop/'.APP_VERSION, $sContentType, $iCode, $this->oLogger, 10,
$this->oConfig->Get('labs', 'curl_proxy', ''), $this->oConfig->Get('labs', 'curl_proxy_auth', ''),
array(), false
);
if (200 !== $iCode)
{
$sResult = '';
}
return $sResult;
}
/**
* @return string
*/
public function Fetcher($sForce = false, $bLongCache = false, $iFastCacheTimeInMin = 10, $iLongCacheTimeInDays = 3)
{
$sDomain = \trim(APP_SITE);
$oConfig = $this->oConfig;
$oLogger = $this->oLogger;
$oCacher = $this->oCacher;
$oHttp = \MailSo\Base\Http::SingletonInstance();
if (0 === \strlen($sDomain) || $oHttp->CheckLocalhost($sDomain) || !$oCacher || !$oConfig || !$oCacher->Verify(true))
{
return 'NO';
}
$sDomainKeyValue = \RainLoop\KeyPathHelper::LicensingDomainKeyValue($sDomain);
$sDomainLongKeyValue = \RainLoop\KeyPathHelper::LicensingDomainKeyOtherValue($sDomain);
$sValue = '';
if (!$sForce)
{
if ($bLongCache)
{
$bLock = $oCacher->GetLock($sDomainLongKeyValue);
$iTime = $bLock ? 0 : $oCacher->GetTimer($sDomainLongKeyValue);
if ($bLock || (0 < $iTime && \time() < $iTime + (60 * 60 * 24) * $iLongCacheTimeInDays))
{
$sValue = $oCacher->Get($sDomainLongKeyValue);
}
}
else
{
$iTime = $oCacher->GetTimer($sDomainKeyValue);
if (0 < $iTime && \time() < $iTime + 60 * $iFastCacheTimeInMin)
{
$sValue = $oCacher->Get($sDomainKeyValue);
}
}
}
if (0 === \strlen($sValue))
{
if ($bLongCache)
{
if (!$oCacher->SetTimer($sDomainLongKeyValue))
{
return 'NO';
}
$oCacher->SetLock($sDomainLongKeyValue);
}
$iCode = 0;
$sContentType = '';
$sValue = $oHttp->GetUrlAsString(APP_API_PATH.'status/'.\urlencode($sDomain),
'RainLoop/'.APP_VERSION, $sContentType, $iCode, $oLogger, 5,
$oConfig->Get('labs', 'curl_proxy', ''), $oConfig->Get('labs', 'curl_proxy_auth', ''),
array(), false
);
if ($oLogger)
{
$oLogger->Write($sValue);
}
if (404 === $iCode)
{
$sValue = 'NO';
}
else if (200 !== $iCode)
{
$sValue = '';
}
$oCacher->SetTimer($sDomainKeyValue);
$oCacher->Set($sDomainKeyValue, $sValue);
$oCacher->Set($sDomainLongKeyValue, $sValue);
if ($bLongCache)
{
$oCacher->RemoveLock($sDomainLongKeyValue);
}
}
return $sValue;
}
public function ClearOldVersion()
{
$sVPath = APP_INDEX_ROOT_PATH.'rainloop/v/';
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: Begin');
}
$aDirs = @\array_map('basename', @\array_filter(@\glob($sVPath.'*'), 'is_dir'));
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: Count:'.(\is_array($aDirs) ? \count($aDirs) : 0));
}
if (\is_array($aDirs) && 5 < \count($aDirs))
{
\uasort($aDirs, 'version_compare');
foreach ($aDirs as $sName)
{
if (APP_DEV_VERSION !== $sName && APP_VERSION !== $sName)
{
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: Begin to remove "'.$sVPath.$sName.'" version');
}
if (@\unlink($sVPath.$sName.'/index.php'))
{
@\MailSo\Base\Utils::RecRmDir($sVPath.$sName);
}
else
{
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC (Error): index file cant be removed from"'.$sVPath.$sName.'"',
\MailSo\Log\Enumerations\Type::ERROR);
}
}
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: End to remove "'.$sVPath.$sName.'" version');
}
break;
}
}
}
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: End');
}
}
public function UpdateCore($oActions, $sFile)
{
$bResult = false;
$sNewVersion = '';
$sTmp = $oActions->downloadRemotePackageByUrl($sFile);
if (!empty($sTmp))
{
include_once APP_VERSION_ROOT_PATH.'app/libraries/pclzip/pclzip.lib.php';
$oArchive = new \PclZip($sTmp);
$sTmpFolder = APP_PRIVATE_DATA.\md5($sTmp);
\mkdir($sTmpFolder);
if (\is_dir($sTmpFolder))
{
$bResult = 0 !== $oArchive->extract(PCLZIP_OPT_PATH, $sTmpFolder);
if (!$bResult)
{
if ($this->oLogger)
{
$this->oLogger->Write('Cannot extract package files: '.$oArchive->errorInfo(), \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
if ($bResult && \file_exists($sTmpFolder.'/index.php') &&
\is_writable(APP_INDEX_ROOT_PATH.'rainloop/') &&
\is_writable(APP_INDEX_ROOT_PATH.'index.php') &&
\is_dir($sTmpFolder.'/rainloop/'))
{
$aMatch = array();
$sIndexFile = \file_get_contents($sTmpFolder.'/index.php');
if (\preg_match('/\'APP_VERSION\', \'([^\']+)\'/', $sIndexFile, $aMatch) && !empty($aMatch[1]))
{
$sNewVersion = \trim($aMatch[1]);
}
if (empty($sNewVersion))
{
if ($this->oLogger)
{
$this->oLogger->Write('Unknown version', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
else if (!\is_dir(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion))
{
\MailSo\Base\Utils::CopyDir($sTmpFolder.'/rainloop/', APP_INDEX_ROOT_PATH.'rainloop/');
if (\is_dir(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion) &&
\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
{
if ($this->oLogger)
{
$this->oLogger->Write('Cannot copy new package files', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
$this->oLogger->Write($sTmpFolder.'/rainloop/ -> '.APP_INDEX_ROOT_PATH.'rainloop/', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
}
else if (!empty($sNewVersion))
{
if ($this->oLogger)
{
$this->oLogger->Write('"'.$sNewVersion.'" version already installed', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
}
else if ($bResult)
{
if ($this->oLogger)
{
$this->oLogger->Write('Cannot validate package files', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
\MailSo\Base\Utils::RecRmDir($sTmpFolder);
}
else
{
if ($this->oLogger)
{
$this->oLogger->Write('Cannot create tmp folder: '.$sTmpFolder, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
@\unlink($sTmp);
}
return $bResult;
}
}

View file

@ -0,0 +1,188 @@
<?php
namespace RainLoop\Providers;
class Version
{
/**
* @return void
*/
public function __construct($oConfig, $oLogger)
{
$this->oConfig = $oConfig;
$this->oLogger = $oLogger;
}
/**
* @return bool
*/
public function IsActive()
{
return true;
}
public function ClearOldVersion()
{
$sVPath = APP_INDEX_ROOT_PATH.'rainloop/v/';
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: Begin');
}
$aDirs = @\array_map('basename', @\array_filter(@\glob($sVPath.'*'), 'is_dir'));
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: Count:'.(\is_array($aDirs) ? \count($aDirs) : 0));
}
if (\is_array($aDirs) && 5 < \count($aDirs))
{
\uasort($aDirs, 'version_compare');
foreach ($aDirs as $sName)
{
if (APP_DEV_VERSION !== $sName && APP_VERSION !== $sName)
{
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: Begin to remove "'.$sVPath.$sName.'" version');
}
if (@\unlink($sVPath.$sName.'/index.php'))
{
@\MailSo\Base\Utils::RecRmDir($sVPath.$sName);
}
else
{
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC (Error): index file cant be removed from"'.$sVPath.$sName.'"',
\MailSo\Log\Enumerations\Type::ERROR);
}
}
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: End to remove "'.$sVPath.$sName.'" version');
}
break;
}
}
}
if ($this->oLogger)
{
$this->oLogger->Write('Versions GC: End');
}
}
public function UpdateCore($oActions, $sFile)
{
$bResult = false;
$sNewVersion = '';
$sTmp = $oActions->downloadRemotePackageByUrl($sFile);
if (!empty($sTmp))
{
include_once APP_VERSION_ROOT_PATH.'app/libraries/pclzip/pclzip.lib.php';
$oArchive = new \PclZip($sTmp);
$sTmpFolder = APP_PRIVATE_DATA.\md5($sTmp);
\mkdir($sTmpFolder);
if (\is_dir($sTmpFolder))
{
$bResult = 0 !== $oArchive->extract(PCLZIP_OPT_PATH, $sTmpFolder);
if (!$bResult)
{
if ($this->oLogger)
{
$this->oLogger->Write('Cannot extract package files: '.$oArchive->errorInfo(), \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
if ($bResult && \file_exists($sTmpFolder.'/index.php') &&
\is_writable(APP_INDEX_ROOT_PATH.'rainloop/') &&
\is_writable(APP_INDEX_ROOT_PATH.'index.php') &&
\is_dir($sTmpFolder.'/rainloop/'))
{
$aMatch = array();
$sIndexFile = \file_get_contents($sTmpFolder.'/index.php');
if (\preg_match('/\'APP_VERSION\', \'([^\']+)\'/', $sIndexFile, $aMatch) && !empty($aMatch[1]))
{
$sNewVersion = \trim($aMatch[1]);
}
if (empty($sNewVersion))
{
if ($this->oLogger)
{
$this->oLogger->Write('Unknown version', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
else if (!\is_dir(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion))
{
\MailSo\Base\Utils::CopyDir($sTmpFolder.'/rainloop/', APP_INDEX_ROOT_PATH.'rainloop/');
if (\is_dir(APP_INDEX_ROOT_PATH.'rainloop/v/'.$sNewVersion) &&
\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
{
if ($this->oLogger)
{
$this->oLogger->Write('Cannot copy new package files', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
$this->oLogger->Write($sTmpFolder.'/rainloop/ -> '.APP_INDEX_ROOT_PATH.'rainloop/', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
}
else if (!empty($sNewVersion))
{
if ($this->oLogger)
{
$this->oLogger->Write('"'.$sNewVersion.'" version already installed', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
}
else if ($bResult)
{
if ($this->oLogger)
{
$this->oLogger->Write('Cannot validate package files', \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
\MailSo\Base\Utils::RecRmDir($sTmpFolder);
}
else
{
if ($this->oLogger)
{
$this->oLogger->Write('Cannot create tmp folder: '.$sTmpFolder, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
}
}
@\unlink($sTmp);
}
return $bResult;
}
}

View file

@ -230,16 +230,7 @@ class Service
$sResult .= '<!--';
$sResult .= '[time:'.\substr(\microtime(true) - APP_START, 0, 6);
// $sResult .= '][version:'.APP_VERSION;
if ($this->oActions->IsOpen())
{
$sResult .= '][AGPLv3';
}
$sResult .= '][cached:'.($bCached ? 'true' : 'false');
// $sResult .= '][hash:'.$aTemplateParameters['{{BaseHash}}'];
// $sResult .= '][session:'.\md5(\RainLoop\Utils::GetShortToken());
if ($bMobile)
{

View file

@ -4,7 +4,6 @@ en:
LABEL_PASSWORD: "Password"
BUTTON_LOGIN: "Log into the admin panel"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Admin Panel"
TABS_LABELS:
LABEL_GENERAL_NAME: "General"
@ -71,7 +70,6 @@ en:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "None"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Once"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Always"
HTML_ALERT_PREMIUM: "This functionality is available for <strong><a href=\"#/licensing\">Premium</a></strong> subscribers."
TAB_CONTACTS:
LEGEND_CONTACTS: "Contacts"
LEGEND_STORAGE: "Storage (PDO)"
@ -147,22 +145,6 @@ en:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Available for Installation"
LEGEND_INSTALLED_PACKAGES: "Installed Packages"
ALERT_CANNOT_ACCESS_REPOSITORY: "Cannot access the repository at the moment."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Your domain"
LABEL_VERSION: "Version"
LABEL_CHECKING: "Checking"
TYPE_BASIC_HINT: "This domain isn't licensed for commercial use (with additional features)."
TYPE_BASIC_HINT_2: "This domain can't be licensed."
HTML_ALERT_TOP_1: "RainLoop Webmail is licensed under"
HTML_ALERT_TOP_2: "You are <b>free</b> to use it for your <b>personal</b> projects."
HTML_ALERT_TOP_3: |
Commercial use (with additional features) of <b>RainLoop Webmail</b> requires getting a
<a href="http://www.rainloop.net/purchase/" target="_blank">subscription</a>.
TYPE_PREMIUM_LIFETIME: "Lifetime"
LABEL_SUB_EXPIRES: "Subscription expires"
BUTTON_ACTIVATE: "Activate Subscription Key for this domain"
BUTTON_PURCHASE: "Purchase"
BUTTON_TRIAL: "Trial"
TAB_ABOUT:
LEGEND_ABOUT: "About"
LABEL_TAG_HINT: "Simple, modern & fast web-based email client"

View file

@ -4,7 +4,6 @@ ca:
LABEL_PASSWORD: "Contrasenya"
BUTTON_LOGIN: "Entreu al tauler d'administració"
TOP_PANEL:
LABEL_PREMIUM: "Prèmium"
LABEL_ADMIN_PANEL: "Tauler d'administració"
TABS_LABELS:
LABEL_GENERAL_NAME: "General"
@ -71,7 +70,6 @@ ca:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Cap"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Un cop"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Sempre"
HTML_ALERT_PREMIUM: "Aquesta funcionalitat està disponible per als subscriptors de <strong><a href=\"#/licensing\">Prèmium</a></strong>."
TAB_CONTACTS:
LEGEND_CONTACTS: "Contactes"
LEGEND_STORAGE: "Emmagatzeatge (PDO)"
@ -146,22 +144,6 @@ ca:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Disponible per instal·lar"
LEGEND_INSTALLED_PACKAGES: "Paquets instal·lats"
ALERT_CANNOT_ACCESS_REPOSITORY: "Ara no es pot accedir al repositori."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Domini"
LABEL_VERSION: "Versió"
LABEL_CHECKING: "Es comprova"
TYPE_BASIC_HINT: "Aquest domini no té llicència per a l'ús comercial (amb funcions addicionals)."
TYPE_BASIC_HINT_2: "Aquest domini no pot tenir llicència."
HTML_ALERT_TOP_1: "El RainLoop Webmail té llicència de"
HTML_ALERT_TOP_2: "Teniu <b>llibertat</b> per usar-lo per als vostres projectes <b>personals</b>."
HTML_ALERT_TOP_3: |
L'ús comercial (amb funcions addicionals) del <b>RainLoop Webmail</b> requereix obtenir una
<a href="http://www.rainloop.net/purchase/" target="_blank">subscripció</a>.
TYPE_PREMIUM_LIFETIME: "Per sempre"
LABEL_SUB_EXPIRES: "La subscripció caduca"
BUTTON_ACTIVATE: "Activa la clau de subscripció per a aquest domini"
BUTTON_PURCHASE: "Compreu-la"
BUTTON_TRIAL: "Proveu-la"
TAB_ABOUT:
LEGEND_ABOUT: "Quant a"
LABEL_TAG_HINT: "Client de correu electrònic senzill, modern i ràpid basat en la web"

View file

@ -4,7 +4,6 @@ ca_ES:
LABEL_PASSWORD: "Contrasenya"
BUTTON_LOGIN: "Entreu al tauler d'administració"
TOP_PANEL:
LABEL_PREMIUM: "Prèmium"
LABEL_ADMIN_PANEL: "Tauler d'administració"
TABS_LABELS:
LABEL_GENERAL_NAME: "General"
@ -71,7 +70,6 @@ ca_ES:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Cap"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Un cop"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Sempre"
HTML_ALERT_PREMIUM: "Aquesta funcionalitat està disponible per als subscriptors de <strong><a href=\"#/licensing\">Prèmium</a></strong>."
TAB_CONTACTS:
LEGEND_CONTACTS: "Contactes"
LEGEND_STORAGE: "Emmagatzeatge (PDO)"
@ -146,22 +144,6 @@ ca_ES:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Disponible per instal·lar"
LEGEND_INSTALLED_PACKAGES: "Paquets instal·lats"
ALERT_CANNOT_ACCESS_REPOSITORY: "Ara no es pot accedir al repositori."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Domini"
LABEL_VERSION: "Versió"
LABEL_CHECKING: "Es comprova"
TYPE_BASIC_HINT: "Aquest domini no té llicència per a l'ús comercial (amb funcions addicionals)."
TYPE_BASIC_HINT_2: "Aquest domini no pot tenir llicència."
HTML_ALERT_TOP_1: "El RainLoop Webmail té llicència de"
HTML_ALERT_TOP_2: "Teniu <b>llibertat</b> per usar-lo per als vostres projectes <b>personals</b>."
HTML_ALERT_TOP_3: |
L'ús comercial (amb funcions addicionals) del <b>RainLoop Webmail</b> requereix obtenir una
<a href="http://www.rainloop.net/purchase/" target="_blank">subscripció</a>.
TYPE_PREMIUM_LIFETIME: "Per sempre"
LABEL_SUB_EXPIRES: "La subscripció caduca"
BUTTON_ACTIVATE: "Activa la clau de subscripció per a aquest domini"
BUTTON_PURCHASE: "Compreu-la"
BUTTON_TRIAL: "Proveu-la"
TAB_ABOUT:
LEGEND_ABOUT: "Quant a"
LABEL_TAG_HINT: "Client de correu electrònic senzill, modern i ràpid basat en la web"

View file

@ -4,7 +4,6 @@ cs_CZ:
LABEL_PASSWORD: "Heslo"
BUTTON_LOGIN: "Přihlásit do administrace"
TOP_PANEL:
LABEL_PREMIUM: "Prémium"
LABEL_ADMIN_PANEL: "Administrační panel"
TABS_LABELS:
LABEL_GENERAL_NAME: "Základní"
@ -70,7 +69,6 @@ cs_CZ:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Nikdy"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Jednou"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Vždy"
HTML_ALERT_PREMIUM: "Tato funkce je dostupná pouze pro <strong><a href=\"#/licensing\">Prémiovou</a></strong> verzi."
TAB_CONTACTS:
LEGEND_CONTACTS: "Kontakty"
LEGEND_STORAGE: "Úložiště (PDO)"
@ -146,23 +144,6 @@ cs_CZ:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Dostupné pro instalaci"
LEGEND_INSTALLED_PACKAGES: "Nainstalované balíčky"
ALERT_CANNOT_ACCESS_REPOSITORY: "V tento moment se nelze připojit k repozitáři."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Vaše doména"
LABEL_VERSION: "Verze"
LABEL_CHECKING: "Kontrolování"
TYPE_BASIC_HINT: "Tato doména není licencována pro komerční užití."
TYPE_BASIC_HINT_2: "Tato doména nemůže být licencována."
HTML_ALERT_TOP_1: "RainLoop Webmail je licencován pod"
HTML_ALERT_TOP_2: "Můžete tento nástroj <b>volně</b> používat pro vaše <b>osobní</b> projekty."
HTML_ALERT_TOP_3: |
Komerční užívání (s přidanými doplňky) <b>RainLoop Webmail</b> vyžaduje získání
<a href="http://www.rainloop.net/purchase/" target="_blank">licence</a>.
TYPE_PREMIUM_LIFETIME: "Lifetime"
LABEL_SUB_EXPIRES: "Licence vyprší"
BUTTON_ACTIVATE: "Aktivační licenční klíč pro tuto doménu"
BUTTON_PURCHASE: "Koupit"
BUTTON_TRIAL: "Trial"
TAB_ABOUT:
LEGEND_ABOUT: "Info"
LABEL_TAG_HINT: "Jednoduchý, moderní a rychlý webový emailový klient"

View file

@ -4,7 +4,6 @@ da_DK:
LABEL_PASSWORD: "Adgangskode"
BUTTON_LOGIN: "Log ind i administrationspanelet"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Admin Panel"
TABS_LABELS:
LABEL_GENERAL_NAME: "Generelt"
@ -70,7 +69,6 @@ da_DK:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Ingen"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "én enkelt gang"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Altid"
HTML_ALERT_PREMIUM: "Denne funktionalitet er tilgængelig for <strong><a href=\"#/licensing\">Premium</a></strong> abonnenter."
TAB_CONTACTS:
LEGEND_CONTACTS: "Kontakter"
LEGEND_STORAGE: "Lagring (PDO)"
@ -145,22 +143,6 @@ da_DK:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Installation tilgængelig"
LEGEND_INSTALLED_PACKAGES: "Installerede pakker"
ALERT_CANNOT_ACCESS_REPOSITORY: "Kan ikke tilgå depotet lige nu."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Dit domæne"
LABEL_VERSION: "Version"
LABEL_CHECKING: "Tjekker"
TYPE_BASIC_HINT: "Dette domæne er ikke licenseret til kommercielt brug (med ekstra funktioner)."
TYPE_BASIC_HINT_2: "Dette domæne kan ikke licenseret."
HTML_ALERT_TOP_1: "RainLoop Webmail er licenseret under"
HTML_ALERT_TOP_2: "Du er velkommen til at bruge det til personlige projekter."
HTML_ALERT_TOP_3: |
Kommercielt brug (med ekstra funktioner) af <b>RainLoop Webmail</b> kræver et
<a href="http://www.rainloop.net/purchase/" target="_blank">abonnement</a>.
TYPE_PREMIUM_LIFETIME: "Livstid"
LABEL_SUB_EXPIRES: "Abonnement udløber"
BUTTON_ACTIVATE: "Aktiver abonnements kode for dette domæne"
BUTTON_PURCHASE: "Køb"
BUTTON_TRIAL: "Prøv"
TAB_ABOUT:
LEGEND_ABOUT: "Om"
LABEL_TAG_HINT: "Simpel, moderne & hurtig web-baseret e-mail klient"

View file

@ -4,7 +4,6 @@ de_DE:
LABEL_PASSWORD: "Passwort"
BUTTON_LOGIN: "Im Adminpanel anmelden"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Adminpanel"
TABS_LABELS:
LABEL_GENERAL_NAME: "Allgemein"
@ -70,7 +69,6 @@ de_DE:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Nie"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Einmal"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Immer"
HTML_ALERT_PREMIUM: "Diese Funktionalität ist für <strong><a href=\"#/licensing\">Premium</a></strong>-Abonnenten verfügbar."
TAB_CONTACTS:
LEGEND_CONTACTS: "Kontakte"
LEGEND_STORAGE: "Speicher (PDO)"
@ -145,22 +143,6 @@ de_DE:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Zur Installation verfügbar"
LEGEND_INSTALLED_PACKAGES: "Installierte Pakete"
ALERT_CANNOT_ACCESS_REPOSITORY: "Auf das Plugin-Repository kann derzeit nicht zugegriffen werden."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Ihre Domain"
LABEL_VERSION: "Version"
LABEL_CHECKING: "Überprüfe"
TYPE_BASIC_HINT: "Diese Domain ist nicht für die kommerzielle Nutzung (mit zusätzlichen Funktionen) lizenziert."
TYPE_BASIC_HINT_2: "Diese Domain kann nicht lizenziert werden."
HTML_ALERT_TOP_1: "RainLoop Webmail steht unter folgender Lizenz:"
HTML_ALERT_TOP_2: "Sie <b>dürfen</b> es für <b>persönliche</b> Projekte nutzen."
HTML_ALERT_TOP_3: |
Kommerzielle Nutzung (mit zusätzlichen Funktionen) von <b>RainLoop Webmail</b> erfordert eine
<a href=http://www.rainloop.net/purchase/ target=_blank>Subscription</a>.
TYPE_PREMIUM_LIFETIME: "Lebenszeit"
LABEL_SUB_EXPIRES: "Ablauf der Subscription"
BUTTON_ACTIVATE: "Subscription-Schlüssel für diese Domain aktivieren"
BUTTON_PURCHASE: "Erwerben"
BUTTON_TRIAL: "Testversion"
TAB_ABOUT:
LEGEND_ABOUT: "Über"
LABEL_TAG_HINT: "Einfacher, moderner und schneller webbasierter E-Mail-Client"

View file

@ -4,7 +4,6 @@ en_US:
LABEL_PASSWORD: "Password"
BUTTON_LOGIN: "Log into the admin panel"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Admin Panel"
TABS_LABELS:
LABEL_GENERAL_NAME: "General"
@ -69,7 +68,6 @@ en_US:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "None"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Once"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Always"
HTML_ALERT_PREMIUM: "This functionality is available for <strong><a href=\"#/licensing\">Premium</a></strong> subscribers."
TAB_CONTACTS:
LEGEND_CONTACTS: "Contacts"
LEGEND_STORAGE: "Storage (PDO)"
@ -144,22 +142,6 @@ en_US:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Available for Installation"
LEGEND_INSTALLED_PACKAGES: "Installed Packages"
ALERT_CANNOT_ACCESS_REPOSITORY: "Cannot access the repository at the moment."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Your domain"
LABEL_VERSION: "Version"
LABEL_CHECKING: "Checking"
TYPE_BASIC_HINT: "This domain isn't licensed for commercial use (with additional features)."
TYPE_BASIC_HINT_2: "This domain can't be licensed."
HTML_ALERT_TOP_1: "RainLoop Webmail is licensed under"
HTML_ALERT_TOP_2: "You are <b>free</b> to use it for your <b>personal</b> projects."
HTML_ALERT_TOP_3: |
Commercial use (with additional features) of <b>RainLoop Webmail</b> requires getting a
<a href="http://www.rainloop.net/purchase/" target="_blank">subscription</a>.
TYPE_PREMIUM_LIFETIME: "Lifetime"
LABEL_SUB_EXPIRES: "Subscription expires"
BUTTON_ACTIVATE: "Activate Subscription Key for this domain"
BUTTON_PURCHASE: "Purchase"
BUTTON_TRIAL: "Trial"
TAB_ABOUT:
LEGEND_ABOUT: "About"
LABEL_TAG_HINT: "Simple, modern & fast web-based email client"

View file

@ -4,7 +4,6 @@ es_ES:
LABEL_PASSWORD: "Contraseña"
BUTTON_LOGIN: "Ingresar al panel de control"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Panel de Control"
TABS_LABELS:
LABEL_GENERAL_NAME: "General"
@ -70,7 +69,6 @@ es_ES:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Ninguno"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Una vez"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Siempre"
HTML_ALERT_PREMIUM: "Esta función se encuentra disponible para <strong><a href=\"#/licensing\">Usuarios Premium</a></strong>."
TAB_CONTACTS:
LEGEND_CONTACTS: "Contactos"
LEGEND_STORAGE: "Almacenamiento (PDO)"
@ -145,22 +143,6 @@ es_ES:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Instalación disponible"
LEGEND_INSTALLED_PACKAGES: "Paquetes instalados"
ALERT_CANNOT_ACCESS_REPOSITORY: "No se puede acceder al repositorio en estos momentos."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Tu dominio"
LABEL_VERSION: "Versión"
LABEL_CHECKING: "Verificando"
TYPE_BASIC_HINT: "Este dominio no ha sido licenciado para uso comercial (algunas características no disponibles)."
TYPE_BASIC_HINT_2: "Este dominio no puede ser licenciado."
HTML_ALERT_TOP_1: "RainLoop Webmail está licenciado bajo"
HTML_ALERT_TOP_2: "Eres <b>libre</b> de usarlo para un uso <b>personal</b>."
HTML_ALERT_TOP_3: |
Para utilizar <b>RainLoop Webmail</b> de forma comercial (con características adicionales) debes adquirir una licencia
<a href="http://www.rainloop.net/purchase/" target="_blank">Premium</a>.
TYPE_PREMIUM_LIFETIME: "De por vida"
LABEL_SUB_EXPIRES: "La suscripción finaliza"
BUTTON_ACTIVATE: "Activar clave de suscripción para este dominio"
BUTTON_PURCHASE: "Comprar"
BUTTON_TRIAL: "Versión de Prueba"
TAB_ABOUT:
LEGEND_ABOUT: "Acerca"
LABEL_TAG_HINT: "Moderno, simple y rápido cliente web de correo electrónico"

View file

@ -4,7 +4,6 @@ eu:
LABEL_PASSWORD: "Pasahitza"
BUTTON_LOGIN: "Hasi saioa administrazio panelean"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Administrazio panela"
TABS_LABELS:
LABEL_GENERAL_NAME: "Orokorra"
@ -71,7 +70,6 @@ eu:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Bat ere ez"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Behin"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Beti"
HTML_ALERT_PREMIUM: "Funtzionalitate hau <strong><a href=\"#/licensing\">Premium</a></strong> erabiltzaileentzat soilik dago eskuragarri."
TAB_CONTACTS:
LEGEND_CONTACTS: "Kontaktuak"
LEGEND_STORAGE: "Biltegiratzea (PDO)"
@ -146,22 +144,6 @@ eu:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Instalatzeko erabilgarri"
LEGEND_INSTALLED_PACKAGES: "Instalatutako paketeak"
ALERT_CANNOT_ACCESS_REPOSITORY: "Une honetan ezin da sartu errepositorioan "
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Zure domeinua"
LABEL_VERSION: "Bertsioa"
LABEL_CHECKING: "Frogatzen"
TYPE_BASIC_HINT: "Domeinu honek ez dauka lizentziarik erabilera komertzialerako (eginbide gehigarriekin)"
TYPE_BASIC_HINT_2: "Domeinu hau ezin da lizentziatu"
HTML_ALERT_TOP_1: "RainLoop Webmail-ek honako lizentzia dauka"
HTML_ALERT_TOP_2: "<b>Erabili</b> dezakezu zure proiektu <b>pertsonaletarako</b>."
HTML_ALERT_TOP_3: |
<b>RainLoop Webmail</b>-aren erabilera komertzialak
(eginbide gehigarriekin) <a href="http://www.rainloop.net/purchase/" target="_blank">harpidetza</a> behar du.
TYPE_PREMIUM_LIFETIME: "Iraupena"
LABEL_SUB_EXPIRES: "Harpidetza iraungitzen da"
BUTTON_ACTIVATE: "Aktibatu harpidetza domeinu honetarako"
BUTTON_PURCHASE: "Erosketa"
BUTTON_TRIAL: "Proba"
TAB_ABOUT:
LEGEND_ABOUT: "Honi buruz"
LABEL_TAG_HINT: "Web-posta bezero sinple, moderno eta azkarra"

View file

@ -4,7 +4,6 @@ fa_IR:
LABEL_PASSWORD: "گذرواژه"
BUTTON_LOGIN: "ورود به صفحه مدیریت"
TOP_PANEL:
LABEL_PREMIUM: "پریمیوم"
LABEL_ADMIN_PANEL: "صفحه مدیریت"
TABS_LABELS:
LABEL_GENERAL_NAME: "عمومی"
@ -72,7 +71,6 @@ fa_IR:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "هیچ‌کدام"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "یک‌بار"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "همیشه"
HTML_ALERT_PREMIUM: "این قابلیت برای نسخه <strong><a href=\"#/licensing\">Premium</a></strong> مشترکین در دسترس هست."
TAB_CONTACTS:
LEGEND_CONTACTS: "تماس‌ها"
LEGEND_STORAGE: "فضای‌ ذخیره‌سازی (pdo)"
@ -147,21 +145,6 @@ fa_IR:
LEGEND_AVAILABLE_FOR_INSTALLATION: "برای نصب در دسترس هست"
LEGEND_INSTALLED_PACKAGES: "بسته‌های نصب شده"
ALERT_CANNOT_ACCESS_REPOSITORY: "در این لحظه دسترسی به مخزن امکان‌پذیر نیست"
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "دامنه شما"
LABEL_VERSION: "نسخه"
LABEL_CHECKING: "در حال چک کردن"
TYPE_BASIC_HINT: "این دامنه مجوز استفاده تجاری را ندارد (با قابلیت‌های بیشتر)"
TYPE_BASIC_HINT_2: "به این دامنه مجوز داده نشده است."
HTML_ALERT_TOP_1: "وبمیل RainLoop تحت مجوز"
HTML_ALERT_TOP_2: " شما <b>برای استفاده از آن </b> آزاد <b>personal</b> projects. هستید"
HTML_ALERT_TOP_3: |
استفاده تجاری (با قابلیت‌های بیشتر) از <b>RainLoop Webmail</b> نیاز به پرداخت <a href="http://www.rainloop.net/purchase/" target="_blank">حق اشتراک</a> دارد.
TYPE_PREMIUM_LIFETIME: "مادام العمر"
LABEL_SUB_EXPIRES: "انقضای حق اشتراک"
BUTTON_ACTIVATE: "فعال‌کردن حق اشتراک این دامنه"
BUTTON_PURCHASE: "خرید"
BUTTON_TRIAL: "آزمایشی"
TAB_ABOUT:
LEGEND_ABOUT: "درباره"
LABEL_TAG_HINT: "یک رابط کاربری پست الکترونیک ساده، پیشرفته و سریع"

View file

@ -4,7 +4,6 @@ fi_FI:
LABEL_PASSWORD: "Salasana"
BUTTON_LOGIN: "Kirjaudu hallintapaneliin"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Halintapaneli"
TABS_LABELS:
LABEL_GENERAL_NAME: "Yleiset"
@ -69,7 +68,6 @@ fi_FI:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Ei mitään"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Kerran"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Aina"
HTML_ALERT_PREMIUM: "Tämä toiminto on saatavissa vain <strong><a href=\"#/licensing\">Premium</a></strong> tilaajille."
TAB_CONTACTS:
LEGEND_CONTACTS: "Yhteystiedot"
LEGEND_STORAGE: "Tallennus (PDO)"
@ -144,22 +142,6 @@ fi_FI:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Voidaan asentaa"
LEGEND_INSTALLED_PACKAGES: "Aennetut pakkaukset"
ALERT_CANNOT_ACCESS_REPOSITORY: "Pääsy varastoon ei toimi tällä hetkellä."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Sinun domain"
LABEL_VERSION: "Versio"
LABEL_CHECKING: "Tarkastaa"
TYPE_BASIC_HINT: "Tämä domain ei ole lisensoitu kaupalliseen käyttöön (lisäominaisuuksilla)."
TYPE_BASIC_HINT_2: "Tätä verkkotunnusta ei voi lisensoida."
HTML_ALERT_TOP_1: "RainLoop Webmail on lisensoitu"
HTML_ALERT_TOP_2: "Voit käyttää <b>ilmaiseksi omissa</b> projekteissasi. "
HTML_ALERT_TOP_3: |
<b>RainLoop Webmail</b>in kaupallinen käyttö (lisäominaisuuksilla) vaatii
<a href="http://www.rainloop.net/purchase/" target="_blank">tilauksen</a>.
TYPE_PREMIUM_LIFETIME: "Kesto"
LABEL_SUB_EXPIRES: "Tilaus päättyy"
BUTTON_ACTIVATE: "Aktivoi Tilaus Avain tälle verkkotunnukselle"
BUTTON_PURCHASE: "Osta"
BUTTON_TRIAL: "Koeaika"
TAB_ABOUT:
LEGEND_ABOUT: "Tietoja"
LABEL_TAG_HINT: "Helppo, moderni ja nopea web-pohjainen sähköpostiohjelma"

View file

@ -4,7 +4,6 @@ fr_FR:
LABEL_PASSWORD: "Mot de passe"
BUTTON_LOGIN: "Se connecter au panneau d'administration"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Panneau d'Administration"
TABS_LABELS:
LABEL_GENERAL_NAME: "Général"
@ -70,7 +69,6 @@ fr_FR:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Aucun"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Une seule fois"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Toujours"
HTML_ALERT_PREMIUM: "Cette fonctionnalité est réservé aux utilisateurs <strong><a href=\"#/licensing\">Premium</a></strong>."
TAB_CONTACTS:
LEGEND_CONTACTS: "Contacts"
LEGEND_STORAGE: "Stockage (PDO)"
@ -145,22 +143,6 @@ fr_FR:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Disponible pour l'installation"
LEGEND_INSTALLED_PACKAGES: "Paquets installés"
ALERT_CANNOT_ACCESS_REPOSITORY: "Impossible d'accéder au dépôt pour l'instant."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Votre domaine"
LABEL_VERSION: "Version"
LABEL_CHECKING: "Vérification"
TYPE_BASIC_HINT: "Ce domaine ne possède pas de licence pour un usage commercial (avec des fonctionnalités supplémentaires)."
TYPE_BASIC_HINT_2: "Ce domaine ne peut pas obtenir de licence."
HTML_ALERT_TOP_1: "La licence RainLoop Webmail appartient à"
HTML_ALERT_TOP_2: "Vous êtes <b>libre</b> de l'utiliser pour vos projets <b>personnels</b>"
HTML_ALERT_TOP_3: |
L'usage commercial (avec des fonctionnalités supplémentaires) de <b>RainLoop Webmail</b> nécessite une
<a href="http://www.rainloop.net/purchase/" target="_blank">souscription</a>.
TYPE_PREMIUM_LIFETIME: "A vie"
LABEL_SUB_EXPIRES: "La souscription expire"
BUTTON_ACTIVATE: "Activer une clé de souscription pour ce domaine"
BUTTON_PURCHASE: "Acheter"
BUTTON_TRIAL: "Essai"
TAB_ABOUT:
LEGEND_ABOUT: "A propos"
LABEL_TAG_HINT: "Un client webmail simple, moderne et rapide "

View file

@ -4,7 +4,6 @@ hu_HU:
LABEL_PASSWORD: "Jelszó"
BUTTON_LOGIN: "Bejelentkezés az admin felületre"
TOP_PANEL:
LABEL_PREMIUM: "Prémuim"
LABEL_ADMIN_PANEL: "Adminisztrációs felület"
TABS_LABELS:
LABEL_GENERAL_NAME: "Általános"
@ -71,7 +70,6 @@ hu_HU:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Semmi"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Egyszer"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Mindig"
HTML_ALERT_PREMIUM: "Ez a funkció csak a <strong><a href=\"#/licensing\">Prémium</a></strong> előfizetők számára érhető el."
TAB_CONTACTS:
LEGEND_CONTACTS: "Névjegyek"
LEGEND_STORAGE: "Tárhely (PDO)"
@ -146,21 +144,6 @@ hu_HU:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Telepíthető"
LEGEND_INSTALLED_PACKAGES: "Telepített csomagok"
ALERT_CANNOT_ACCESS_REPOSITORY: "Jelenleg nem lehet csatlakozni a tárolóhoz"
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Domained"
LABEL_VERSION: "Verzió"
LABEL_CHECKING: "Ellenőrzés"
TYPE_BASIC_HINT: "Ez a domain nem licencelt kereskedelmi használatra (hozzáadott funkciókkal)."
TYPE_BASIC_HINT_2: "Ez a domain nem licencelhető."
HTML_ALERT_TOP_1: "RainLoop Webmail licence:"
HTML_ALERT_TOP_2: "<strong>Szabadon</strong> felhasználható a <strong>személyes</strong> projektjeidhez."
HTML_ALERT_TOP_3: |
A <b>RainLoop Webmail</b> kereskedelmi használatához (további funkciókkal) <a href="http://www.rainloop.net/purchase/" target="_blank">előfizetés</a> szükséges.
TYPE_PREMIUM_LIFETIME: "Örökös"
LABEL_SUB_EXPIRES: "Előfizetés lejár"
BUTTON_ACTIVATE: "Előfizetési kulcs aktiválása ehhez a domainhez"
BUTTON_PURCHASE: "Vásárlás"
BUTTON_TRIAL: "Próba"
TAB_ABOUT:
LEGEND_ABOUT: "Névjegy"
LABEL_TAG_HINT: "Egyszerű, modern és gyors webes email kliens"

View file

@ -4,7 +4,6 @@ id_ID:
LABEL_PASSWORD: "Password"
BUTTON_LOGIN: "Login ke panel admin"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Panel Admin"
TABS_LABELS:
LABEL_GENERAL_NAME: "Umum"
@ -71,7 +70,6 @@ id_ID:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Tidak ada"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Sekali"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Selalu"
HTML_ALERT_PREMIUM: "Fungsi ini tersedia hanya untuk pengguna <strong><a href=\"#/licensing\">Premium</a></strong>."
TAB_CONTACTS:
LEGEND_CONTACTS: "Kontak"
LEGEND_STORAGE: "Media simpan (PDO)"
@ -146,22 +144,6 @@ id_ID:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Tersedia untuk Instalasi"
LEGEND_INSTALLED_PACKAGES: "Paket Terinstal"
ALERT_CANNOT_ACCESS_REPOSITORY: "Tidak bisa menjangkau repositori saat ini"
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Domain anda"
LABEL_VERSION: "Versi"
LABEL_CHECKING: "Memeriksa"
TYPE_BASIC_HINT: "Domain ini belum dilisensikan untuk penggunaan komersil (dengan fitur tambahan)."
TYPE_BASIC_HINT_2: "Domain ini tidak bisa dilinsensikan"
HTML_ALERT_TOP_1: "RainLoop Webmail dilisensi di bawah"
HTML_ALERT_TOP_2: "Anda <b>gratis </b> jika ditujukan <b>proyek </b> pribadi."
HTML_ALERT_TOP_3: |
Tujuan penggunaan komersil (dengan fitur tambahan) <b>RainLoop Webmail</b> harus
<a href="http://www.rainloop.net/purchase/" target="_blank">langganan</a>.
TYPE_PREMIUM_LIFETIME: "Seumur hidup"
LABEL_SUB_EXPIRES: "Langganan berakhir"
BUTTON_ACTIVATE: "Aktifkan Kunci Langganan untuk domain ini"
BUTTON_PURCHASE: "Beli"
BUTTON_TRIAL: "Percobaan"
TAB_ABOUT:
LEGEND_ABOUT: "Tentang"
LABEL_TAG_HINT: "Klien web-based email yang simpel, modern & cepat"

View file

@ -4,7 +4,6 @@ it_IT:
LABEL_PASSWORD: "Password"
BUTTON_LOGIN: "Accedi all'amministrazione"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Amministrazione"
TABS_LABELS:
LABEL_GENERAL_NAME: "Generali"
@ -70,7 +69,6 @@ it_IT:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Mai"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Solo una volta"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Sempre"
HTML_ALERT_PREMIUM: "Questa funzionalità è disponibile solo per coloro che hanno acquistato una licenza <strong><a href=\"#/licensing\">Premium</a></strong>.\n"
TAB_CONTACTS:
LEGEND_CONTACTS: "Contatti"
LEGEND_STORAGE: "Metodo di salvataggio (PDO)"
@ -145,22 +143,6 @@ it_IT:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Disponibili per l'installazione"
LEGEND_INSTALLED_PACKAGES: "Pacchetti installati"
ALERT_CANNOT_ACCESS_REPOSITORY: "Impossibile accedere al repository in questo momento."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Il tuo dominio"
LABEL_VERSION: "Licenza"
LABEL_CHECKING: "Controllo in corso..."
TYPE_BASIC_HINT: "Questo dominio non possiede una licenza commerciale (con funzionalità aggiuntive)."
TYPE_BASIC_HINT_2: "Questo dominio non può possedere una licenza."
HTML_ALERT_TOP_1: "RainLoop Webmail è rilasciato sotto la licenza"
HTML_ALERT_TOP_2: "Sei <b>libero</b> di usarla per i tuoi progetti <b>personali</b>."
HTML_ALERT_TOP_3: |
L'uso commerciale (con funzionalità aggiuntive) di <b>RainLoop Webmail</b> richiede di ottenere una
<a href=http://www.rainloop.net/purchase/ target=_blank>licenza</a>.
TYPE_PREMIUM_LIFETIME: "A vita"
LABEL_SUB_EXPIRES: "La licenza scade il"
BUTTON_ACTIVATE: "Attiva una chiave di licenza per questo dominio"
BUTTON_PURCHASE: "Compra una licenza"
BUTTON_TRIAL: "Versione di prova"
TAB_ABOUT:
LEGEND_ABOUT: "Informazioni"
LABEL_TAG_HINT: "Semplice, moderno e veloce client email online"

View file

@ -4,7 +4,6 @@ ja_JP:
LABEL_PASSWORD: "パスワード"
BUTTON_LOGIN: "管理画面へログイン"
TOP_PANEL:
LABEL_PREMIUM: "プレミアム"
LABEL_ADMIN_PANEL: "管理画面"
TABS_LABELS:
LABEL_GENERAL_NAME: "全般"
@ -71,7 +70,6 @@ ja_JP:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "なし"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "1回だけ"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "いつも"
HTML_ALERT_PREMIUM: "この機能には<strong><a href=\"#/licensing\">プレミアム</a></strong>が必要です"
TAB_CONTACTS:
LEGEND_CONTACTS: "連絡先"
LEGEND_STORAGE: "ストレージ (PDO)"
@ -147,22 +145,6 @@ ja_JP:
LEGEND_AVAILABLE_FOR_INSTALLATION: "インストール可能なパッケージ"
LEGEND_INSTALLED_PACKAGES: "インストールされたパッケージ"
ALERT_CANNOT_ACCESS_REPOSITORY: "現時点でリポジトリにアクセスすることはできません。"
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "ドメイン"
LABEL_VERSION: "バージョン"
LABEL_CHECKING: "チェック中"
TYPE_BASIC_HINT: "このドメインは、 (追加の機能を備えた)商業的使用のためにライセンスされていません。"
TYPE_BASIC_HINT_2: "このドメインはライセンスされていません"
HTML_ALERT_TOP_1: "RainLoop Webmail is licensed under"
HTML_ALERT_TOP_2: "You are <b>free</b> to use it for your <b>personal</b> projects."
HTML_ALERT_TOP_3: |
<b>RainLoop Webmail</b>の(付加的な機能を備えた)商業的使用は、
<a href="http://www.rainloop.net/purchase/" target="_blank">サブスクリプション</a>を取得する必要があります。
TYPE_PREMIUM_LIFETIME: "ライフタイム"
LABEL_SUB_EXPIRES: "サブスクリプションの有効期限切れ"
BUTTON_ACTIVATE: "このドメインサブスクリプションキーをアクティベートする"
BUTTON_PURCHASE: "購入"
BUTTON_TRIAL: "試用"
TAB_ABOUT:
LEGEND_ABOUT: "RainLoop について"
LABEL_TAG_HINT: "シンプル・モダン・高速なウェブベースのメールクライアント"

View file

@ -4,7 +4,6 @@ lt_LT:
LABEL_PASSWORD: "Slaptažodis"
BUTTON_LOGIN: "Prisijungti prie valdymo skydo"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Administratoriaus valdymo skydas"
TABS_LABELS:
LABEL_GENERAL_NAME: "Pagrindiniai"
@ -71,7 +70,6 @@ lt_LT:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Nieko"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Kartą"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Visada"
HTML_ALERT_PREMIUM: "Ši funkcija leidžiama tik <strong><a href=\"#/licensing\">Premium</a></strong> vartotojams."
TAB_CONTACTS:
LEGEND_CONTACTS: "Kontaktai"
LEGEND_STORAGE: "Saugykla (PDO)"
@ -145,22 +143,6 @@ lt_LT:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Galima diegti"
LEGEND_INSTALLED_PACKAGES: "Įdiegti paketai"
ALERT_CANNOT_ACCESS_REPOSITORY: "Šiuo momentu negaliu prisijungti prie saugyklos."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Jūsų domenas"
LABEL_VERSION: "Versija"
LABEL_CHECKING: "Tikrinu"
TYPE_BASIC_HINT: "Šis domenas nelicencijuotas komerciniam naudojimui (su papildomomis galimybėmis)"
TYPE_BASIC_HINT_2: "Šis domenas negali būti licencijuotas."
HTML_ALERT_TOP_1: "RainLoop Webmail licencijuotas"
HTML_ALERT_TOP_2: "Jūs galite <b>nemokamai</b> naudoti savo <b>asmeniniams</b> projektams."
HTML_ALERT_TOP_3: |
Komerciniam <b>RainLoop Webmail</b> naudojimui (su papildomomis galimybėmis) turite įsigyti
<a href="http://www.rainloop.net/purchase/" target="_blank">prenumeratą</a>.
TYPE_PREMIUM_LIFETIME: "Visam laikui"
LABEL_SUB_EXPIRES: "Prenumerata baigiasi"
BUTTON_ACTIVATE: "Aktyvuoti prenumeratos raktą šiam domenui"
BUTTON_PURCHASE: "Pirkti"
BUTTON_TRIAL: "Bandomasis"
TAB_ABOUT:
LEGEND_ABOUT: "Apie"
LABEL_TAG_HINT: "Paprastas, modernus ir greitas web pašto klientas"

View file

@ -4,7 +4,6 @@ nb_NO:
LABEL_PASSWORD: "Passord"
BUTTON_LOGIN: "Logg inn på admin-panel"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Admin-panel"
TABS_LABELS:
LABEL_GENERAL_NAME: "Generelt"
@ -71,7 +70,6 @@ nb_NO:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Ingen"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Én gang"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Alltid"
HTML_ALERT_PREMIUM: "Denne funksjonaliteten er bare tilgjengelig for <strong><a href=\"#/licensing\">Premium</a></strong>-brukere."
TAB_CONTACTS:
LEGEND_CONTACTS: "Kontakter"
LEGEND_STORAGE: "Lagring (PDO)"
@ -146,22 +144,6 @@ nb_NO:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Tilgjengelig for installasjon"
LEGEND_INSTALLED_PACKAGES: "Installerte pakker"
ALERT_CANNOT_ACCESS_REPOSITORY: "Fikk ikke tilgang til pakkelageret."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Domenenavn"
LABEL_VERSION: "Versjon"
LABEL_CHECKING: "Sjekker"
TYPE_BASIC_HINT: "Dette domenet har ikke lisens for kommersiell bruk (med ekstrafunksjoner)."
TYPE_BASIC_HINT_2: "Dette domenet kan ikke brukes med lisens for ekstrafunksjoner."
HTML_ALERT_TOP_1: "RainLoop Webmail er utgitt på betingelsene i"
HTML_ALERT_TOP_2: "Du står <b>fritt</b> til å bruke programmet til <b>personlige</b> formål."
HTML_ALERT_TOP_3: |
Hvis du vil bruke <b>RainLoop Webmail</b> kommersielt (med ekstrafunksjoner), må du kjøpe et
<a href=http://www.rainloop.net/purchase/ target=_blank>abonnement</a>.
TYPE_PREMIUM_LIFETIME: "Livstid"
LABEL_SUB_EXPIRES: "Abonnement utgår"
BUTTON_ACTIVATE: "Ta i bruk abonnementsnøkkel for dette domenet"
BUTTON_PURCHASE: "Kjøp"
BUTTON_TRIAL: "Prøv"
TAB_ABOUT:
LEGEND_ABOUT: "Om"
LABEL_TAG_HINT: "Rask, enkel, moderne og web-basert e-postklient"

View file

@ -4,7 +4,6 @@ nl_NL:
LABEL_PASSWORD: "Wachtwoord"
BUTTON_LOGIN: "Aanmelden in het beheer paneel"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Beheer paneel"
TABS_LABELS:
LABEL_GENERAL_NAME: "Algemeen"
@ -70,7 +69,6 @@ nl_NL:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Nooit"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Eenmalig"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Altijd"
HTML_ALERT_PREMIUM: "Deze functionaliteit is alleen beschikbaar voor <strong><a href=\"#/licensing\">Premium</a></strong> abonnees.\n"
TAB_CONTACTS:
LEGEND_CONTACTS: "Contactpersonen"
LEGEND_STORAGE: "Opslag (PDO)"
@ -145,21 +143,6 @@ nl_NL:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Gereed voor installatie"
LEGEND_INSTALLED_PACKAGES: "Geïnstalleerde pakketten"
ALERT_CANNOT_ACCESS_REPOSITORY: "De installatie bron is op het moment niet beschikbaar."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Uw domein"
LABEL_VERSION: "Versie"
LABEL_CHECKING: "Controleren"
TYPE_BASIC_HINT: "Dit domein is niet gelicentieerd voor commercieel gebruik (met aditionele functies)."
TYPE_BASIC_HINT_2: "Dit domein kan niet worden gelicentieerd."
HTML_ALERT_TOP_1: "RainLoop Webmail is gelicentieerd onder de"
HTML_ALERT_TOP_2: "U staat u <b>vrij</b> om dit voor uw <b>persoonlijk</b> project te gebruiken."
HTML_ALERT_TOP_3: |
Voor commercieel gebruik (met additionele functies) van <b>RainLoop Webmail</b> moet u een <a href=http://www.rainloop.net/purchase/ target=_blank>activatie code</a>.
TYPE_PREMIUM_LIFETIME: "Levenslang"
LABEL_SUB_EXPIRES: "Activatie verloopt"
BUTTON_ACTIVATE: "Activeer de activatie code voor dit domein."
BUTTON_PURCHASE: "Aanschaffen"
BUTTON_TRIAL: "Proefperiode"
TAB_ABOUT:
LEGEND_ABOUT: "Over"
LABEL_TAG_HINT: "Simpel, modern en snelle web-based e-mail client"

View file

@ -4,7 +4,6 @@ pl_PL:
LABEL_PASSWORD: "Hasło"
BUTTON_LOGIN: "Zaloguj do panelu administracjnego"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Panel administracyjny"
TABS_LABELS:
LABEL_GENERAL_NAME: "Ogólne"
@ -71,7 +70,6 @@ pl_PL:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Nigdy"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Tylko raz"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Zawsze"
HTML_ALERT_PREMIUM: "Ta opcja dostępna jest tylko dla subskrybentów licencji <strong><a href=\"#/licensing\">Premium</a></strong>."
TAB_CONTACTS:
LEGEND_CONTACTS: "Kontakty"
LEGEND_STORAGE: "Baza danych (PDO)"
@ -146,22 +144,6 @@ pl_PL:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Dostępne do zainstalowania"
LEGEND_INSTALLED_PACKAGES: "Zainstalowane pakiety"
ALERT_CANNOT_ACCESS_REPOSITORY: "Nie można uzyskać dostępu do repozytorium."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Twoja domena"
LABEL_VERSION: "Wersja"
LABEL_CHECKING: "Sprawdzanie..."
TYPE_BASIC_HINT: "Ta domena nie jest licencjonowana do użytku komercyjnego."
TYPE_BASIC_HINT_2: "Nie można dodać licencji dla tej domeny."
HTML_ALERT_TOP_1: "RainLoop Webmail korzysta z licencji"
HTML_ALERT_TOP_2: "Możesz używać tego klienta <b>za darmo</b>, tylko do celów <b>prywatnych</b>."
HTML_ALERT_TOP_3: |
Do użytku komercyjnego (z dodatkowymi opcjami) <b>RainLoop Webmail</b>, wymagane jest posiadanie
<a href=http://www.rainloop.net/purchase/ target=_blank>ważnej subskrypcji</a>.
TYPE_PREMIUM_LIFETIME: "Dożywotnia"
LABEL_SUB_EXPIRES: "Subskrypcja wygasa"
BUTTON_ACTIVATE: "Aktywuj klucz dla tej domeny"
BUTTON_PURCHASE: "Kup klucz"
BUTTON_TRIAL: "Wersja testowa"
TAB_ABOUT:
LEGEND_ABOUT: "O programie"
LABEL_TAG_HINT: "Prosty, nowoczesny i szybki klient pocztowy"

View file

@ -4,7 +4,6 @@ pt_BR:
LABEL_PASSWORD: "Senha"
BUTTON_LOGIN: "Entrar no painel administrativo"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Painel Administrativo"
TABS_LABELS:
LABEL_GENERAL_NAME: "Geral"
@ -71,7 +70,6 @@ pt_BR:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Nunca"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Única vez"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Sempre"
HTML_ALERT_PREMIUM: "Essa funcionalidade está disponível apenas para usuários <strong><a href=\"#/licensing\">Premium</a></strong>."
TAB_CONTACTS:
LEGEND_CONTACTS: "Contatos"
LEGEND_STORAGE: "Armazenamento (PDO)"
@ -146,22 +144,6 @@ pt_BR:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Disponíveis para instalação"
LEGEND_INSTALLED_PACKAGES: "Pacotes já instalados"
ALERT_CANNOT_ACCESS_REPOSITORY: "Não foi possível acessar o repositório no momento."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Seu domínio"
LABEL_VERSION: "Versão"
LABEL_CHECKING: "Checando"
TYPE_BASIC_HINT: "Esse domínio não está licenciado para uso comercial (com recursos adicionais)."
TYPE_BASIC_HINT_2: "Esse domínio não pode ser licenciado."
HTML_ALERT_TOP_1: "RainLoop Webmail é licenciado sob"
HTML_ALERT_TOP_2: "Você é <b>livre</b> para usá-lo em seus projetos <b>pessoais</b>."
HTML_ALERT_TOP_3: |
Uso comercial (com recursos adicionais) do <b>RainLoop Webmail</b>
requer uma <a href="http://www.rainloop.net/purchase/" target="_blank">assinatura</a>.
TYPE_PREMIUM_LIFETIME: "Lifetime"
LABEL_SUB_EXPIRES: "A assinatura expira em"
BUTTON_ACTIVATE: "Ative a chave de assinatura para este domínio"
BUTTON_PURCHASE: "Comprar assinatura"
BUTTON_TRIAL: "Trial"
TAB_ABOUT:
LEGEND_ABOUT: "Sobre"
LABEL_TAG_HINT: "Leitor de email web simples, moderno & rápido."

View file

@ -4,7 +4,6 @@ ru_RU:
LABEL_PASSWORD: "Пароль"
BUTTON_LOGIN: "Войти в админ панель"
TOP_PANEL:
LABEL_PREMIUM: "Премиум"
LABEL_ADMIN_PANEL: "Админка"
TABS_LABELS:
LABEL_GENERAL_NAME: "Основные"
@ -70,7 +69,6 @@ ru_RU:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Никогда"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Один раз"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Всегда"
HTML_ALERT_PREMIUM: "Эти функции доступны для <strong><a href=\"#/licensing\">премиум</a></strong> подписчиков."
TAB_CONTACTS:
LEGEND_CONTACTS: "Контакты"
LEGEND_STORAGE: "Хранилище (PDO)"
@ -145,22 +143,6 @@ ru_RU:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Доступно для установки"
LEGEND_INSTALLED_PACKAGES: "Установленные пакеты"
ALERT_CANNOT_ACCESS_REPOSITORY: "Не удается получить доступ к хранилищу пакетов в данный момент."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Ваш домен"
LABEL_VERSION: "Версия"
LABEL_CHECKING: "Проверка"
TYPE_BASIC_HINT: "Этот домен не имеет лицензию для коммерческого использования (с дополнительными функциями)."
TYPE_BASIC_HINT_2: "Этот домен не может быть лицензирован."
HTML_ALERT_TOP_1: "Код RainLoop Webmail лицензирован под"
HTML_ALERT_TOP_2: "Вы можете <b>свободно</b> использовать его в своих <b>личных</b> проектах."
HTML_ALERT_TOP_3: |
Коммерческое использование (с дополнительными функциями) <b>RainLoop Webmail</b> требует получение
<a href=http://www.rainloop.net/purchase/ target=_blank>лицензии</a>.
TYPE_PREMIUM_LIFETIME: "бесконечная"
LABEL_SUB_EXPIRES: "Подписка истекает"
BUTTON_ACTIVATE: "Активировать ключ для этого домена"
BUTTON_PURCHASE: "Купить"
BUTTON_TRIAL: "Пробная лицензия"
TAB_ABOUT:
LEGEND_ABOUT: "О программе"
LABEL_TAG_HINT: "Простой, современный и быстрый веб-клиент электронной почты\n"

View file

@ -4,7 +4,6 @@ sk_SK:
LABEL_PASSWORD: "Heslo"
BUTTON_LOGIN: "Prihlásiť sa do admin panelu"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Admin Panel"
TABS_LABELS:
LABEL_GENERAL_NAME: "Všeobecné"
@ -117,15 +116,6 @@ sk_SK:
LEGEND_AVAILABLE_FOR_UPDATE: "Dostupné na aktualizáciu"
LEGEND_AVAILABLE_FOR_INSTALLATION: "Dostupné na inštaláciu"
LEGEND_INSTALLED_PACKAGES: "Nainštalované balíčky"
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Vaša doména"
LABEL_VERSION: "Verzia"
LABEL_CHECKING: "Kontrolujem"
TYPE_BASIC_HINT_2: "Táto doména nemôže byť licencovaná"
HTML_ALERT_TOP_1: "RainLoop Webmail je licencovaný pod"
TYPE_PREMIUM_LIFETIME: "Doživotná"
BUTTON_PURCHASE: "Kúpiť"
BUTTON_TRIAL: "Skúšobná verzia"
TAB_ABOUT:
LEGEND_ABOUT: "O programe"
LABEL_TAG_HINT: "Jednoduchý, moderný a rýchly webmail klient"

View file

@ -4,7 +4,6 @@ sl_SI:
LABEL_PASSWORD: "Geslo"
BUTTON_LOGIN: "Prijava v administracijsko ploščo"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Administracijska plošča"
TABS_LABELS:
LABEL_GENERAL_NAME: "Splošno"
@ -71,7 +70,6 @@ sl_SI:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Brez"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Enkrat"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Vedno"
HTML_ALERT_PREMIUM: "Ta funkcija je na voljo samo za <strong><a href=\"#/licensing\">Premium</a></strong> uporabnike."
TAB_CONTACTS:
LEGEND_CONTACTS: "Stiki"
LEGEND_STORAGE: "Shramba (PDO)"
@ -146,22 +144,6 @@ sl_SI:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Na voljo za namestitev"
LEGEND_INSTALLED_PACKAGES: "Nameščeni paketi"
ALERT_CANNOT_ACCESS_REPOSITORY: "Trenutno ni možen dostop do repozitorija"
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Vaša domena"
LABEL_VERSION: "Verzija"
LABEL_CHECKING: "Preverjanje"
TYPE_BASIC_HINT: "Ta domena nima licence za komercialno uporabo (z dodatnimi funkcijami)."
TYPE_BASIC_HINT_2: "Ni mogoče pridobiti licence za to domeno."
HTML_ALERT_TOP_1: "RainLoop Webmail izdana pod licenco"
HTML_ALERT_TOP_2: "Smete jo <b>prosto in zastonj</b> uporabljati za <b>osebne</b> projekte."
HTML_ALERT_TOP_3: |
Za komercialno uporabo (z dodatnimi funkcijami) <b>RainLoop Webmail</b> je potrebno pridobiti
<a href="http://www.rainloop.net/purchase/" target="_blank">naročnino</a>.
TYPE_PREMIUM_LIFETIME: "Obdobje"
LABEL_SUB_EXPIRES: "Naročnina poteče"
BUTTON_ACTIVATE: "Aktiviraj naročniški ključ za to domeno"
BUTTON_PURCHASE: "Kupi"
BUTTON_TRIAL: "Preizkusi"
TAB_ABOUT:
LEGEND_ABOUT: "Več o"
LABEL_TAG_HINT: "Preprost, sodoben, in hiter spletni e-poštni odjemalec"

View file

@ -4,7 +4,6 @@ sv_SE:
LABEL_PASSWORD: "Lösenord"
BUTTON_LOGIN: "Logga in till admin-panelen"
TOP_PANEL:
LABEL_PREMIUM: "Premium"
LABEL_ADMIN_PANEL: "Adminpanel"
TABS_LABELS:
LABEL_GENERAL_NAME: "Allmän"
@ -71,7 +70,6 @@ sv_SE:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Ingen"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "En gång"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Alltid"
HTML_ALERT_PREMIUM: "Denna funktion är tillgänglig för <strong> <a href=\"#/licensing\"> Premium </a> </ strong> abonnenter."
TAB_CONTACTS:
LEGEND_CONTACTS: "Kontakter"
LEGEND_STORAGE: "Storage (PDO)"
@ -146,22 +144,6 @@ sv_SE:
LEGEND_AVAILABLE_FOR_INSTALLATION: "Tillåt installation"
LEGEND_INSTALLED_PACKAGES: "installerade paket"
ALERT_CANNOT_ACCESS_REPOSITORY: "Det går inte att komma åt arkivet för tillfället."
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "Din domän"
LABEL_VERSION: "Version"
LABEL_CHECKING: "Kontroll"
TYPE_BASIC_HINT: "Denna domän är inte godkänt för kommersiellt bruk (med ytterligare funktioner)."
TYPE_BASIC_HINT_2: "Denna domän kan inte licensieras."
HTML_ALERT_TOP_1: "RainLoop Webmail är licensierat under"
HTML_ALERT_TOP_2: "Du är <b>gratis</ b> för att använda den för dina <b>personliga</ b> projekt."
HTML_ALERT_TOP_3: |
Kommersiellt bruk (med ytterligare funktioner) av <b>RainLoop Webmail</ b> kräver att få
<a href="http://www.rainloop.net/purchase/" target="_blank"> prenumerations</a>.
TYPE_PREMIUM_LIFETIME: "Livstid"
LABEL_SUB_EXPIRES: "Abonnemang löper ut"
BUTTON_ACTIVATE: "Aktivera prenumerationsnyckel för den här domänen"
BUTTON_PURCHASE: "Inköp"
BUTTON_TRIAL: "Rättegång"
TAB_ABOUT:
LEGEND_ABOUT: "Om"
LABEL_TAG_HINT: "Enkel, modern & snabb e-postklient"

View file

@ -4,7 +4,6 @@ zh_CN:
LABEL_PASSWORD: "密码"
BUTTON_LOGIN: "登录到控制面板"
TOP_PANEL:
LABEL_PREMIUM: "高级"
LABEL_ADMIN_PANEL: "控制面板"
TABS_LABELS:
LABEL_GENERAL_NAME: "常规"
@ -71,7 +70,6 @@ zh_CN:
OPTION_WELCOME_PAGE_DISPLAY_NONE: "无"
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "一次"
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "永远"
HTML_ALERT_PREMIUM: "此功能仅限于<strong><a href=\"#/licensing\">高级</a></strong> 订阅者."
TAB_CONTACTS:
LEGEND_CONTACTS: "联系人"
LEGEND_STORAGE: "存储(PDO)"
@ -146,21 +144,6 @@ zh_CN:
LEGEND_AVAILABLE_FOR_INSTALLATION: "可用于安装"
LEGEND_INSTALLED_PACKAGES: "已安装的插件包"
ALERT_CANNOT_ACCESS_REPOSITORY: "目前无法使用仓库"
TAB_LICENSING:
LABEL_YOUR_DOMAIN: "你的域名"
LABEL_VERSION: "版本"
LABEL_CHECKING: "检查中"
TYPE_BASIC_HINT: "此域名不被许可用于商业用途(包括额外功能)."
TYPE_BASIC_HINT_2: "此域名无法被许可"
HTML_ALERT_TOP_1: "RainLoop Webmail位于的许可证下"
HTML_ALERT_TOP_2: "你可以<b>自由地</b>将它用于你的 <b>私人</b> 项目."
HTML_ALERT_TOP_3: |
商业版的<b>RainLoop Webmail</b>自带更多功能,需要<a href="http://www.rainloop.net/purchase/" target="_blank">订阅</a>。
TYPE_PREMIUM_LIFETIME: "永久"
LABEL_SUB_EXPIRES: "订阅失效"
BUTTON_ACTIVATE: "为此域名启用订阅密钥"
BUTTON_PURCHASE: "订购"
BUTTON_TRIAL: "试用"
TAB_ABOUT:
LEGEND_ABOUT: "关于"
LABEL_TAG_HINT: "简洁,现代化&快捷的基于网络的邮件客户端"

View file

@ -5,11 +5,10 @@
<i class="icon-spinner animated" style="margin-top: 2px" data-bind="style: {'visibility': adminManLoadingVisibility }"></i>
&nbsp;&nbsp;
RainLoop
<span data-bind="visible: capa && !community">(<span data-i18n="TOP_PANEL/LABEL_PREMIUM"></span>)</span>
&mdash;
<span data-i18n="TOP_PANEL/LABEL_ADMIN_PANEL"></span>
&nbsp;&nbsp;
<span data-bind="visible: !community">(<span data-bind="text: adminDomain"></span>)</span>
<span>(<span data-bind="text: adminDomain"></span>)</span>
</h4>
<div class="btn-group pull-right">
<a class="btn single btn-narrow" data-bind="click: logoutClick">

View file

@ -5,9 +5,9 @@
<div class="span4">
<div class="rl-logo"></div>
<div style="margin-left: 30px;">
2019 &copy; <span data-i18n="TAB_ABOUT/LABEL_ALL_RIGHTS_RESERVED"></span>
2022 &copy; <span data-i18n="TAB_ABOUT/LABEL_ALL_RIGHTS_RESERVED"></span>
<br />
<a class="g-ui-link" href="http://www.rainloop.net/" target="_blank" style="padding-left: 0">http://rainloop.net/</a>
<a class="g-ui-link" href="https://www.rainloop.net/" target="_blank" style="padding-left: 0">https://www.rainloop.net/</a>
</div>
</div>
<div class="rl-desc" style="float: left">
@ -19,7 +19,7 @@
</span>
</h4>
<h4 style="color: #aaa; font-weight: normal;" data-i18n="TAB_ABOUT/LABEL_TAG_HINT"></h4>
<h5 style="font-weight: normal; margin-top: 40px;" data-bind="visible: !community">
<h5 style="font-weight: normal; margin-top: 40px;">
<div data-bind="visible: 'error' === statusType()">
<i class="icon-warning" style="color: red"></i>
&nbsp;&nbsp;
@ -52,13 +52,13 @@
&nbsp;&nbsp;&nbsp;
</span>
<span data-bind="visible: coreAccess()">
<a class="btn" href="http://www.rainloop.net/downloads/" target="_blank">
<a class="btn" href="https://www.rainloop.net/downloads/" target="_blank">
<i class="icon-download"></i>
&nbsp;&nbsp;
<span data-i18n="TAB_ABOUT/BUTTON_DOWNLOAD"></span>
</a>
&nbsp;&nbsp;&nbsp;
<a class="btn" href="http://www.rainloop.net/changelog/" target="_blank">
<a class="btn" href="https://www.rainloop.net/changelog/" target="_blank">
<i class="icon-file-text"></i>
&nbsp;&nbsp;
<span data-i18n="TAB_ABOUT/BUTTON_CHANGELOG"></span>

View file

@ -43,7 +43,7 @@
</div>
</div>
<br />
<ul class="nav nav-tabs" data-bind="visible: !community">
<ul class="nav nav-tabs">
<li class="active">
<a class="i18n" data-i18n="TAB_BRANDING/LEGEND_LOGIN"
href="#branding-login-section-id" data-toggle="tab"></a>
@ -57,12 +57,12 @@
href="#branding-welcome-page-section-id" data-toggle="tab"></a>
</li>
</ul>
<br />
<div class="row" data-bind="visible: !community">
<br />
<div class="row">
<div class="tab-content span12">
<div class="tab-pane active" id="branding-login-section-id">
<div class="form-horizontal" data-bind="css: {'disabled-form': !capa()}">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_LOGO"></label>
<div class="controls">
@ -72,8 +72,7 @@
value: loginLogo,
trigger: loginLogo.trigger,
placeholder: 'https://',
size: 5,
enable: capa
size: 5
}
}"></div>
</div>
@ -86,8 +85,7 @@
params: {
value: loginDescription,
trigger: loginDescription.trigger,
size: 5,
enable: capa
size: 5
}
}"></div>
</div>
@ -101,8 +99,7 @@
value: loginBackground,
trigger: loginBackground.trigger,
placeholder: 'https://',
size: 5,
enable: capa
size: 5
}
}"></div>
</div>
@ -116,7 +113,6 @@
value: loginCss,
trigger: loginCss.trigger,
width: 495,
enable: capa,
rows: 7
}
}"></div>
@ -127,7 +123,7 @@
</div>
<div class="tab-pane" id="branding-user-section-id">
<div class="form-horizontal" data-bind="css: {'disabled-form': !capa()}">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_LOGO"></label>
<div class="controls">
@ -137,8 +133,7 @@
value: userLogo,
trigger: userLogo.trigger,
placeholder: 'https://',
size: 5,
enable: capa
size: 5
}
}"></div>
</div>
@ -151,8 +146,7 @@
params: {
value: userLogoTitle,
trigger: userLogoTitle.trigger,
size: 5,
enable: capa
size: 5
}
}"></div>
</div>
@ -166,8 +160,7 @@
value: userLogoMessage,
trigger: userLogoMessage.trigger,
placeholder: 'https://',
size: 5,
enable: capa
size: 5
}
}"></div>
</div>
@ -181,7 +174,6 @@
value: userCss,
trigger: userCss.trigger,
width: 495,
enable: capa,
rows: 7
}
}"></div>
@ -192,7 +184,7 @@
</div>
<div class="tab-pane" id="branding-welcome-page-section-id">
<div class="form-horizontal" data-bind="css: {'disabled-form': !capa()}">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_WELCOME_PAGE_URL"></label>
<div class="controls">
@ -202,8 +194,7 @@
value: welcomePageUrl,
trigger: welcomePageUrl.trigger,
placeholder: 'https://',
size: 5,
enable: capa
size: 5
}
}"></div>
</div>
@ -219,8 +210,7 @@
trigger: welcomePageDisplay.trigger,
optionsText: 'optText',
optionsValue: 'optValue',
size: 2,
enable: capa
size: 2
}
}"></div>
</div>
@ -230,9 +220,4 @@
</div>
</div>
</div>
<div class="row" data-bind="visible: !capa() && !community">
<div class="alert span8" style="margin-top: 10px;" data-i18n="[html]TAB_BRANDING/HTML_ALERT_PREMIUM"></div>
</div>
</div>

View file

@ -1,87 +0,0 @@
<div class="b-admin-licensing" >
<div class="row">
<div class="alert alert-info span8" style="margin-top: 10px;">
<span data-i18n="[html]TAB_LICENSING/HTML_ALERT_TOP_1"></span>
&nbsp;
<a href=http://www.rainloop.net/licensing/ target=_blank>RainLoop Software License</a>.
</div>
</div>
<br />
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" data-i18n="TAB_LICENSING/LABEL_YOUR_DOMAIN"></label>
<div class="controls">
<span class="help-inline" style="padding-top: 5px;">
<strong data-bind="text: adminDomain"></strong>
</span>
</div>
</div>
<div class="control-group" data-bind="visible: !subscriptionEnabled()">
<label class="control-label" style="padding-top: 14px" data-i18n="TAB_LICENSING/LABEL_VERSION"></label>
<div class="controls">
<div class="alert alert-block span6" style="margin-left: 0">
<h4>Basic</h4>
<br />
<p data-i18n="TAB_LICENSING/TYPE_BASIC_HINT_2"></p>
</div>
</div>
</div>
<div class="control-group" data-bind="visible: subscriptionEnabled">
<label class="control-label" style="padding-top: 20px" data-i18n="TAB_LICENSING/LABEL_VERSION"></label>
<div class="controls">
<div data-bind="visible: licensingProcess()" style="padding-top: 20px">
<i class="icon-spinner animated"></i>
&nbsp;&nbsp;
<span data-i18n="TAB_LICENSING/LABEL_CHECKING"></span>&hellip;
</div>
<div data-bind="visible: !licensingProcess()">
<div class="alert alert-block span6" style="margin-left: 0; padding-top: 20px" data-bind="visible: !licensing()">
<h4>Basic</h4>
<br />
<p data-i18n="TAB_LICENSING/TYPE_BASIC_HINT"></p>
</div>
<div data-bind="visible: licensing()">
<div class="alert alert-success span6" style="margin-left: 0; margin-top: 10px; padding-top: 20px" data-bind="visible: licenseValid() && '' === licenseError()">
<h4>
<snan>Premium</snan>
<span data-bind="visible: licenseIsUnlim()">
&nbsp;
(<snan data-i18n="TAB_LICENSING/TYPE_PREMIUM_LIFETIME"></snan>)
</span>
</h4>
<p data-bind="visible: 0 < licenseExpired()" style="padding-top: 10px">
<b data-i18n="TAB_LICENSING/LABEL_SUB_EXPIRES"></b>:
&nbsp;
<span data-bind="text: licenseExpiredMomentValue()"></span>
</p>
</div>
<div class="alert alert-error span6" style="margin-left: 0; margin-top: 10px;" data-bind="visible: !licenseValid() && '' !== licenseError(), text: licenseError"></div>
</div>
</div>
</div>
</div>
<div class="control-group" data-bind="visible: subscriptionEnabled() && !licensingProcess()">
<div class="controls">
<a class="btn" data-bind="click: showActivationForm">
<i class="icon-happy-smiley"></i>
&nbsp;&nbsp;
<span data-i18n="TAB_LICENSING/BUTTON_ACTIVATE"></span>
</a>
&nbsp;&nbsp;
<a class="btn" href="http://www.rainloop.net/purchase/" target="_black">
<i class="icon-purchase"></i>
&nbsp;&nbsp;
<span data-i18n="TAB_LICENSING/BUTTON_PURCHASE"></span>
</a>
<!--
&nbsp;&nbsp;
<a class="btn" data-bind="click: showTrialForm, visible: !licensing()">
<i class="icon-eye"></i>
&nbsp;&nbsp;
<span data-i18n="TAB_LICENSING/BUTTON_TRIAL"></span>
</a>
-->
</div>
</div>
</div>
</div>

View file

@ -3,7 +3,7 @@
<div class="alert alert-info span8" style="margin-top: 10px;">
<span data-i18n="TAB_INTEGRATIONS/TOP_ALERT"></span>
&nbsp;
<a href="http://rainloop.net/docs/social/" target="_blank">http://rainloop.net/docs/social/</a>
<a href="https://www.rainloop.net/docs/social/" target="_blank">https://www.rainloop.net/docs/social/</a>
</div>
</div>
<div class="form-horizontal g-ui-user-select-none">

View file

@ -1,50 +0,0 @@
<div class="popups">
<div class="modal hide b-activate-content" data-bind="modal: modalVisibility">
<div>
<div class="modal-header">
<button type="button" class="close" data-bind="command: cancelCommand">&times;</button>
<h3>
<span data-bind="visible: !activateProcess()" data-i18n="POPUPS_ACTIVATE/TITLE_ACTIVATE"></span>
<span data-bind="visible: activateProcess" data-i18n="POPUPS_ACTIVATE/TITLE_ACTIVATION"></span>
</h3>
</div>
<div class="modal-body">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" data-i18n="POPUPS_ACTIVATE/LABEL_DOMAIN"></label>
<div class="controls">
<h4 class="help-inline" data-bind="text: domain" style="margin-top: 5px;"></h4>
</div>
</div>
<div class="control-group" data-bind="css: {'error': '' !== activateText() && activateText.isError(), 'success': '' !== activateText() && !activateText.isError() }">
<label class="control-label" data-i18n="POPUPS_ACTIVATE/LABEL_SUB_KEY"></label>
<div class="controls ">
<input type="text" class="span5" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
data-bind="visible: !activateProcess() && !activationSuccessed(), textInput: key, hasFocus: key.focus"></input>
<h4 class="help-inline" style="margin-top: 5px;" data-bind="text: key, visible: activateProcess() || activationSuccessed()"></h4>
<div class="help-block" data-bind="text: activateText"></div>
</div>
</div>
</div>
<br />
<div class="alert">
<p data-bind="html: htmlDescription" style="margin-bottom: 0"></p>
</div>
</div>
<div class="modal-footer">
<a class="btn buttonActivate" data-bind="visible: !activationSuccessed(), command: activateCommand">
<i class="icon-key" data-bind="css: {'icon-key': !activateProcess(), 'icon-spinner animated': activateProcess()}" ></i>
&nbsp;&nbsp;
<span data-i18n="POPUPS_ACTIVATE/BUTTON_ACTIVATE"></span>
</a>
<span style="color: green" data-bind="visible: activationSuccessed">
&nbsp;&nbsp;&nbsp;
<i class="icon-ok"></i>
&nbsp;&nbsp;
<span data-i18n="POPUPS_ACTIVATE/LABEL_ACTIVATED"></span>
</span>
</div>
</div>
</div>
</div>

View file

@ -2,5 +2,5 @@
<h1 style="display: inline; color: #fff; text-shadow: 1px 2px 0px rgba(0, 0, 0, 0.5);">RainLoop Webmail</h1>
&nbsp;&nbsp;&nbsp;
<h3 style="display: inline; color: #fff; text-shadow: 1px 2px 0px rgba(0, 0, 0, 0.5);">(<span data-bind="text: version"></span>)</h3>
<h3><a href="http://rainloop.net/" target="_blank">http://rainloop.net</a></h3>
<h3><a href="https://www.rainloop.net/" target="_blank">https://www.rainloop.net</a></h3>
</div>

View file

@ -40,9 +40,6 @@
define('APP_DUMMY', '********');
define('APP_DEV_VERSION', '0.0.0');
define('APP_GOOGLE_ACCESS_TOKEN_PREFIX', ':GAT:');
define('APP_WEB_SITE', 'http://www.rainloop.net/');
define('APP_API_PATH', 'http://api.rainloop.net/');
define('APP_STATUS_PATH', 'http://status.rainloop.net/');
define('APP_REPOSITORY_PATH', 'http://repository.rainloop.net/v1/');
define('APP_REPO_CORE_FILE', 'http://repository.rainloop.net/v2/core.{{channel}}.json');