mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-08 08:57:03 +03:00
Small fixes
+ BUTTON_THREAD_MORE
This commit is contained in:
parent
3dac6809d1
commit
1481bd88e5
34 changed files with 118 additions and 53 deletions
|
|
@ -714,7 +714,6 @@ class Http
|
|||
@\header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
|
||||
@\header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
@\header('Pragma: no-cache');
|
||||
@\header('X-RainLoop-Cache: no');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -734,7 +733,6 @@ class Http
|
|||
@\header('ETag: '.$sEtag, true);
|
||||
@\header('Last-Modified: '.\gmdate('D, d M Y H:i:s', $iLastModified).' UTC', true);
|
||||
@\header('Expires: '.\gmdate('D, j M Y H:i:s', $iExpires).' UTC', true);
|
||||
@\header('X-RainLoop-Cache: yes');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1649,13 +1649,8 @@ class Actions
|
|||
if ($oConfig->Get('login', 'allow_languages_on_login', true) &&
|
||||
$oConfig->Get('login', 'determine_user_language', true))
|
||||
{
|
||||
$sLanguage = $this->ValidateLanguage($sLanguage, false);
|
||||
|
||||
$sUserLanguage = $this->detectUserLanguage();
|
||||
if (0 < \strlen($sUserLanguage) && $sLanguage !== $sUserLanguage)
|
||||
{
|
||||
$sLanguage = $sUserLanguage;
|
||||
}
|
||||
$sLanguage = $this->ValidateLanguage(
|
||||
$this->detectUserLanguage(), $sLanguage, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1669,12 +1664,12 @@ class Actions
|
|||
$aResult['Theme'] = $sTheme;
|
||||
$aResult['NewThemeLink'] = $sNewThemeLink;
|
||||
|
||||
$aResult['Language'] = $this->ValidateLanguage($sLanguage, false);
|
||||
$aResult['LanguageAdmin'] = $this->ValidateLanguage($sLanguageAdmin, true);
|
||||
$aResult['Language'] = $this->ValidateLanguage($sLanguage, '', false);
|
||||
$aResult['LanguageAdmin'] = $this->ValidateLanguage($sLanguageAdmin, '', true);
|
||||
|
||||
$sUserLanguage = $this->detectUserLanguage();
|
||||
$aResult['UserLanguage'] = $sUserLanguage === $this->ValidateLanguage($sUserLanguage, false) ? $sUserLanguage : '';
|
||||
$aResult['UserLanguageAdmin'] = $sUserLanguage === $this->ValidateLanguage($sUserLanguage, true) ? $sUserLanguage : '';
|
||||
$aResult['UserLanguageRaw'] = $this->detectUserLanguage();
|
||||
$aResult['UserLanguage'] = $this->ValidateLanguage($aResult['UserLanguageRaw'], $aResult['Language'], false);
|
||||
$aResult['UserLanguageAdmin'] = $this->ValidateLanguage($aResult['UserLanguageRaw'], $aResult['LanguageAdmin'], true);
|
||||
|
||||
$aResult['LangLink'] = './?/Lang/0/'.($bAdmin ? 'Admin' : 'App').'/'.
|
||||
($bAdmin ? $aResult['LanguageAdmin'] : $aResult['Language']).'/'.$sStaticCache.'/';
|
||||
|
|
@ -1716,21 +1711,7 @@ class Actions
|
|||
*/
|
||||
private function detectUserLanguage()
|
||||
{
|
||||
$sLang = $this->getUserLanguageFromHeader();
|
||||
|
||||
if (!empty($sLang))
|
||||
{
|
||||
$sLang = \preg_replace('/[^a-zA-Z0-9]+/', '-', $sLang);
|
||||
if ($sLang !== $this->ValidateLanguage($sLang))
|
||||
{
|
||||
if (2 < strlen($sLang))
|
||||
{
|
||||
$sLang = \substr($sLang, 0, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->ValidateLanguage($sLang);
|
||||
return \preg_replace('/[^a-zA-Z0-9]+/', '-', $this->getUserLanguageFromHeader());
|
||||
}
|
||||
|
||||
private function loginErrorDelay()
|
||||
|
|
@ -3199,11 +3180,11 @@ class Actions
|
|||
$self = $this;
|
||||
|
||||
$this->setConfigFromParams($oConfig, 'Language', 'webmail', 'language', 'string', function ($sLanguage) use ($self) {
|
||||
return $self->ValidateLanguage($sLanguage, false);
|
||||
return $self->ValidateLanguage($sLanguage, '', false);
|
||||
});
|
||||
|
||||
$this->setConfigFromParams($oConfig, 'LanguageAdmin', 'webmail', 'language_admin', 'string', function ($sLanguage) use ($self) {
|
||||
return $self->ValidateLanguage($sLanguage, true);
|
||||
return $self->ValidateLanguage($sLanguage, '', true);
|
||||
});
|
||||
|
||||
$this->setConfigFromParams($oConfig, 'Theme', 'webmail', 'theme', 'string', function ($sTheme) use ($self) {
|
||||
|
|
@ -8297,14 +8278,46 @@ class Actions
|
|||
|
||||
/**
|
||||
* @param string $sLanguage
|
||||
* @param string $sDefault = ''
|
||||
* @param bool $bAdmin = false
|
||||
* @param bool $bSearchShortName = false
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function ValidateLanguage($sLanguage, $bAdmin = false)
|
||||
public function ValidateLanguage($sLanguage, $sDefault = '', $bAdmin = false, $bSearchShortName = false)
|
||||
{
|
||||
return \in_array($sLanguage, $this->GetLanguages($bAdmin)) ?
|
||||
$sLanguage : $this->Config()->Get('webmail', $bAdmin ? 'language_admin' : 'language', 'en');
|
||||
$sResult = '';
|
||||
$aLang = $this->GetLanguages($bAdmin);
|
||||
|
||||
if (\is_array($aLang))
|
||||
{
|
||||
if (\in_array($sLanguage, $aLang))
|
||||
{
|
||||
$sResult = $sLanguage;
|
||||
}
|
||||
|
||||
if ($bSearchShortName && empty($sResult) && 2 < \strlen($sLanguage))
|
||||
{
|
||||
$sLanguage = \substr($sLanguage, 0, 2);
|
||||
if (\in_array($sLanguage, $aLang))
|
||||
{
|
||||
$sResult = $sLanguage;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($sResult) && !empty($sDefault) && \in_array($sDefault, $aLang))
|
||||
{
|
||||
$sResult = $sDefault;
|
||||
}
|
||||
|
||||
if (empty($sResult))
|
||||
{
|
||||
$sResult = $this->Config()->Get('webmail', $bAdmin ? 'language_admin' : 'language', 'en');
|
||||
$sResult = \in_array($sResult, $aLang) ? $sResult : 'en';
|
||||
}
|
||||
}
|
||||
|
||||
return $sResult;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -8832,7 +8845,7 @@ class Actions
|
|||
}
|
||||
}
|
||||
|
||||
$sLanguage = $this->ValidateLanguage($sLanguage, $bAdmin);
|
||||
$sLanguage = $this->ValidateLanguage($sLanguage, '', $bAdmin);
|
||||
$sTheme = $this->ValidateTheme($sTheme);
|
||||
|
||||
return array($sLanguage, $sTheme);
|
||||
|
|
|
|||
|
|
@ -541,7 +541,7 @@ class ServiceActions
|
|||
if (!empty($this->aPaths[3]))
|
||||
{
|
||||
$bAdmim = 'Admin' === (isset($this->aPaths[2]) ? (string) $this->aPaths[2] : 'App');
|
||||
$sLanguage = $this->oActions->ValidateLanguage($this->aPaths[3], $bAdmim);
|
||||
$sLanguage = $this->oActions->ValidateLanguage($this->aPaths[3], '', $bAdmim);
|
||||
|
||||
$bCacheEnabled = $this->Config()->Get('labs', 'cache_system_data', true);
|
||||
if (!empty($sLanguage) && $bCacheEnabled)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
(<span data-bind="text: adminDomain"></span>)
|
||||
</h4>
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-narrow" data-bind="click: logoutClick">
|
||||
<a class="btn single btn-narrow" data-bind="click: logoutClick">
|
||||
<i class="icon-power"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -204,16 +204,20 @@
|
|||
<i class="icon-list"
|
||||
data-bind="css: {'icon-list': !messageListOfThreadsLoading(), 'icon-spinner animated': messageListOfThreadsLoading()}"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu pull-right g-ui-menu thread-list" role="menu" aria-labelledby="thread-list-view-dropdown-id"
|
||||
style="min-width: 400px; max-width: 400px; width: 400px; padding: 0">
|
||||
<ul class="dropdown-menu pull-right g-ui-menu thread-list"
|
||||
role="menu" aria-labelledby="thread-list-view-dropdown-id"
|
||||
style="min-width: 400px; max-width: 400px; width: 400px; padding: 0"
|
||||
data-bind="css: {'hide-more': !viewThreadMessages.showMore() }"
|
||||
>
|
||||
|
||||
<div data-bind="visible: '' !== viewThreadMessages.error()" style="color: red; text-align: center; padding: 10px">
|
||||
<spam data-bind="text: viewThreadMessages.error"></spam>
|
||||
</div >
|
||||
</div>
|
||||
<div data-bind="visible: messageListOfThreadsLoading" style="text-align: center; padding: 10px">
|
||||
<i class="icon-spinner animated" />
|
||||
</div >
|
||||
</div>
|
||||
<div data-bind="foreach: viewThreadMessages, visible: !messageListOfThreadsLoading()">
|
||||
<li class="e-item thread-list-message" role="presentation" data-bind="css: {'selected': selected}">
|
||||
<li class="e-item thread-list-message" role="presentation" data-bind="css: {'selected': selected, 'more-that': $parent.viewThreadMessages.limit < $index() }">
|
||||
<a class="e-link menuitem" href="#" tabindex="-1" onclick="return false;">
|
||||
<span class="thread-date pull-right" data-moment-format="SHORT" data-bind="moment: timestamp"></span>
|
||||
<div style="text-overflow: ellipsis; overflow: hidden;">
|
||||
|
|
@ -227,6 +231,9 @@
|
|||
</a>
|
||||
</li>
|
||||
</div>
|
||||
<div data-bind="visible: !viewThreadMessages.showMore() && !messageListOfThreadsLoading()">
|
||||
<a class="more-threads" href="#" tabindex="-1" data-i18n="MESSAGE/BUTTON_THREAD_MORE"></a>
|
||||
</div>
|
||||
</ul>
|
||||
</div>
|
||||
<a class="btn first btn-thin pull-right" data-tooltip-placement="bottom"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue