Added: Plugin: Contacts suggestion from ldap

Added: Custom favicon setting
+ Small fixes
This commit is contained in:
RainLoop Team 2015-09-08 00:15:39 +03:00
parent d6d19c99bf
commit 7312b2854b
25 changed files with 526 additions and 25 deletions

View file

@ -175,6 +175,11 @@ END;
public static function NormalizeCharset($sEncoding, $bAsciAsUtf8 = false)
{
$sEncoding = \strtolower($sEncoding);
$sEncoding = \preg_replace('/^iso8/', 'iso-8', $sEncoding);
$sEncoding = \preg_replace('/^cp-([\d])/', 'cp$1', $sEncoding);
$sEncoding = \preg_replace('/^windows?12/', 'windows-12', $sEncoding);
switch ($sEncoding)
{
case 'asci':
@ -185,6 +190,8 @@ END;
\MailSo\Base\Enumerations\Charset::ISO_8859_1;
break;
case 'unicode-1-1-utf-7':
case 'unicode-1-utf-7':
case 'unicode-utf-7':
$sEncoding = \MailSo\Base\Enumerations\Charset::UTF_7;
break;
case 'utf8':

View file

@ -1378,6 +1378,7 @@ class Actions
'Title' => 'RainLoop Webmail',
'LoadingDescription' => 'RainLoop',
'LoadingDescriptionEsc' => 'RainLoop',
'FaviconUrl' => '',
'LoginDescription' => '',
'LoginPowered' => true,
'LoginLogo' => '',
@ -1472,6 +1473,7 @@ class Actions
$aResult['Title'] = $oConfig->Get('webmail', 'title', '');
$aResult['LoadingDescription'] = $oConfig->Get('webmail', 'loading_description', '');
$aResult['FaviconUrl'] = $oConfig->Get('webmail', 'favicon_url', '');
if ($oPremProvider)
{
@ -3686,6 +3688,7 @@ class Actions
$this->setConfigFromParams($oConfig, 'Title', 'webmail', 'title', 'string');
$this->setConfigFromParams($oConfig, 'LoadingDescription', 'webmail', 'loading_description', 'string');
$this->setConfigFromParams($oConfig, 'FaviconUrl', 'webmail', 'favicon_url', 'string');
$this->setConfigFromParams($oConfig, 'TokenProtection', 'security', 'csrf_protection', 'bool');
$this->setConfigFromParams($oConfig, 'EnabledPlugins', 'plugins', 'enable', 'bool');
@ -7030,7 +7033,7 @@ class Actions
}
$aResult = \RainLoop\Utils::RemoveSuggestionsdDuplicates($aResult);
$aResult = \RainLoop\Utils::RemoveSuggestionDuplicates($aResult);
if ($iLimit < \count($aResult))
{
$aResult = \array_slice($aResult, 0, $iLimit);
@ -7038,7 +7041,7 @@ class Actions
$this->Plugins()->RunHook('ajax.suggestions-post', array(&$aResult, $sQuery, $oAccount, $iLimit));
$aResult = \RainLoop\Utils::RemoveSuggestionsdDuplicates($aResult);
$aResult = \RainLoop\Utils::RemoveSuggestionDuplicates($aResult);
if ($iLimit < \count($aResult))
{
$aResult = \array_slice($aResult, 0, $iLimit);

View file

@ -61,6 +61,7 @@ class Application extends \RainLoop\Config\AbstractConfig
'title' => array('RainLoop Webmail', 'Text displayed as page title'),
'loading_description' => array('RainLoop', 'Text displayed on startup'),
'favicon_url' => array('', ''),
'theme' => array('Default', 'Theme used by default'),
'allow_themes' => array(true, 'Allow theme selection on settings screen'),

View file

@ -35,7 +35,6 @@ class Suggestions extends \RainLoop\Providers\AbstractProvider
*/
public function Process($oAccount, $sQuery, $iLimit = 20)
{
$aSuggestions = array();
if ($oAccount instanceof \RainLoop\Model\Account &&
$this->IsActive() && \is_array($this->aDrivers) && 0 < \strlen($sQuery))
@ -54,7 +53,7 @@ class Suggestions extends \RainLoop\Providers\AbstractProvider
}
}
$aResult = \RainLoop\Utils::RemoveSuggestionsdDuplicates($aSuggestions);
$aResult = \RainLoop\Utils::RemoveSuggestionDuplicates($aSuggestions);
if ($iLimit < \count($aResult))
{

View file

@ -235,14 +235,15 @@ class Service
$bAppJsDebug = !!$this->oActions->Config()->Get('labs', 'use_app_debug_js', false);
$bAppCssDebug = !!$this->oActions->Config()->Get('labs', 'use_app_debug_css', false);
$sFaviconUrl = (string) $this->oActions->Config()->Get('webmail', 'favicon_url', '');
$sStaticPrefix = \RainLoop\Utils::WebStaticPath();
$aData = array(
'Language' => $sLanguage,
'Theme' => $sTheme,
'FaviconIcoLink' => $sStaticPrefix.'favicon.ico',
'FaviconPngLink' => $sStaticPrefix.'favicon.png',
'AppleTouchLink' => $sStaticPrefix.'apple-touch-icon.png',
'FaviconPngLink' => $sFaviconUrl ? $sFaviconUrl : $sStaticPrefix.'favicon.png',
'AppleTouchLink' => $sFaviconUrl ? '' : $sStaticPrefix.'apple-touch-icon.png',
'AppCssLink' => $sStaticPrefix.'css/app'.($bAppCssDebug ? '' : '.min').'.css',
'BootJsLink' => $sStaticPrefix.'js/min/boot.js',
'ComponentsJsLink' => $sStaticPrefix.'js/'.($bAppJsDebug ? '' : 'min/').'components.js',
@ -255,8 +256,8 @@ class Service
$aTemplateParameters = array(
'{{BaseAppDataScriptLink}}' => ($bAdmin ? './?/AdminAppData/' : './?/AppData/'),
'{{BaseAppFaviconIcoFile}}' => $aData['FaviconIcoLink'],
'{{BaseAppFaviconPngFile}}' => $aData['FaviconPngLink'],
'{{BaseAppFaviconPngLinkTag}}' => $aData['FaviconPngLink'] ? '<link rel="shortcut icon" href="'.$aData['FaviconPngLink'].'" type="image/png" />' : '',
'{{BaseAppFaviconTouchLinkTag}}' => $aData['AppleTouchLink'] ? '<link rel="apple-touch-icon" href="'.$aData['AppleTouchLink'].'" type="image/png" />' : '',
'{{BaseAppAppleTouchFile}}' => $aData['AppleTouchLink'],
'{{BaseAppMainCssLink}}' => $aData['AppCssLink'],
'{{BaseAppBootScriptLink}}' => $aData['BootJsLink'],

View file

@ -613,7 +613,7 @@ class Utils
*
* @return array
*/
public static function RemoveSuggestionsdDuplicates($aSuggestions)
public static function RemoveSuggestionDuplicates($aSuggestions)
{
$aResult = array();

View file

@ -22,8 +22,7 @@
<meta name="app-version" content="{{BaseVersion}}" id="rlAppVersion" />
<title></title>
<style>#rl-content{display:none;}</style>
<link rel="shortcut icon" href="{{BaseAppFaviconPngFile}}" type="image/png" />
<link rel="apple-touch-icon" href="{{BaseAppAppleTouchFile}}" type="image/png" />
{{BaseAppFaviconPngLinkTag}}{{BaseAppFaviconTouchLinkTag}}
<link type="text/css" rel="stylesheet" href="{{BaseAppMainCssLink}}" />
<link type="text/css" rel="stylesheet" id="rlThemeLink" />
<script data-cfasync="false" src="{{BaseAppBootScriptLink}}"></script>

View file

@ -27,6 +27,20 @@
}"></div>
</div>
</div>
<div class="control-group">
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_FAVICON_URL"></label>
<div class="controls">
<div data-bind="component: {
name: 'Input',
params: {
value: faviconUrl,
trigger: faviconUrl.trigger,
placeholder: 'https://',
size: 5
}
}"></div>
</div>
</div>
</div>
<br />
<ul class="nav nav-tabs" data-bind="visible: !community">

View file

@ -53,6 +53,7 @@ LABEL_DETERMINE_USER_LANGUAGE = "Versuche Sprache des Benutzers zu ermitteln"
LEGEND_BRANDING = "Branding"
LABEL_PAGE_TITLE = "Seitentitel"
LABEL_LOADING_DESCRIPTION = "Ladevorgang-Beschreibung"
LABEL_FAVICON_URL = "Favicon"
LEGEND_LOGIN = "Anmeldung"
LABEL_LOGIN_LOGO = "Logo"
LABEL_LOGIN_DESCRIPTION = "Beschreibung"

View file

@ -54,6 +54,7 @@ LABEL_DETERMINE_USER_LANGUAGE = "Try to determine user language"
LEGEND_BRANDING = "Branding"
LABEL_PAGE_TITLE = "Page Title"
LABEL_LOADING_DESCRIPTION = "Loading Description"
LABEL_FAVICON_URL = "Favicon"
LEGEND_LOGIN = "Login"
LABEL_LOGIN_LOGO = "Logo"
LABEL_LOGIN_DESCRIPTION = "Description"

View file

@ -54,6 +54,7 @@ LABEL_DETERMINE_USER_LANGUAGE = "Prova a determinare la lingua dell'utente"
LEGEND_BRANDING = "Personalizzazione"
LABEL_PAGE_TITLE = "Titolo della pagina"
LABEL_LOADING_DESCRIPTION = "Messaggio di caricamento"
LABEL_FAVICON_URL = "Favicon"
LEGEND_LOGIN = "Pagina di accesso"
LABEL_LOGIN_LOGO = "Logo"
LABEL_LOGIN_DESCRIPTION = "Descrizione"

View file

@ -52,6 +52,7 @@ LABEL_DETERMINE_USER_LANGUAGE = "Probeer gebruiker taal te bepalen"
LEGEND_BRANDING = "Huisstijl"
LABEL_PAGE_TITLE = "Pagina titel"
LABEL_LOADING_DESCRIPTION = "Beschrijving tijdens laden"
LABEL_FAVICON_URL = "Favicon"
LEGEND_LOGIN = "Login scherm"
LABEL_LOGIN_LOGO = "Logo"
LABEL_LOGIN_DESCRIPTION = "Beschrijving"

View file

@ -54,6 +54,7 @@ LABEL_DETERMINE_USER_LANGUAGE = "Spróbuj określić język użytkownika"
LEGEND_BRANDING = "Personalizacja"
LABEL_PAGE_TITLE = "Tytuł strony:"
LABEL_LOADING_DESCRIPTION = "Komunikat ład. strony:"
LABEL_FAVICON_URL = "Favicon:"
LEGEND_LOGIN = "Login"
LABEL_LOGIN_LOGO = "Logo:"
LABEL_LOGIN_DESCRIPTION = "Opis:"

View file

@ -54,6 +54,7 @@ LABEL_DETERMINE_USER_LANGUAGE = "Tentar determinar o idioma do usuário"
LEGEND_BRANDING = "Personalização"
LABEL_PAGE_TITLE = "Título da página"
LABEL_LOADING_DESCRIPTION = "Descrição do 'carregando'"
LABEL_FAVICON_URL = "Favicon"
LEGEND_LOGIN = "Tela de Entrada"
LABEL_LOGIN_LOGO = "Logo"
LABEL_LOGIN_DESCRIPTION = "Descrição"

View file

@ -53,6 +53,7 @@ LABEL_DETERMINE_USER_LANGUAGE = "Пытаться определить язык
LEGEND_BRANDING = "Брендинг"
LABEL_PAGE_TITLE = "Название страницы"
LABEL_LOADING_DESCRIPTION = "Описание при загрузке"
LABEL_FAVICON_URL = "Иконка (favicon)"
LEGEND_LOGIN = "Экран входа"
LABEL_LOGIN_LOGO = "Логотип"
LABEL_LOGIN_DESCRIPTION = "Описание"