mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-09 06:28:28 +03:00
Release fixes
This commit is contained in:
parent
b00959b2d0
commit
c73eb76816
9 changed files with 67 additions and 54 deletions
|
|
@ -261,7 +261,7 @@
|
|||
}
|
||||
|
||||
oConfig.enterMode = window.CKEDITOR.ENTER_BR;
|
||||
oConfig.shiftEnterMode = window.CKEDITOR.ENTER_BR;
|
||||
oConfig.shiftEnterMode = window.CKEDITOR.ENTER_P;
|
||||
|
||||
oConfig.language = Globals.oHtmlEditorLangsMap[sLanguage] || 'en';
|
||||
if (window.CKEDITOR.env)
|
||||
|
|
@ -269,17 +269,6 @@
|
|||
window.CKEDITOR.env.isCompatible = true;
|
||||
}
|
||||
|
||||
// oConfig.allowedContent = {
|
||||
// $1: {
|
||||
// elements: window.CKEDITOR.dtd,
|
||||
// attributes: true,
|
||||
// styles: true,
|
||||
// classes: true
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// oConfig.disallowedContent = 'script; style; iframe; frame; *[on*]';
|
||||
|
||||
window.CKEDITOR.dtd.$removeEmpty['p'] = 1;
|
||||
|
||||
self.editor = window.CKEDITOR.appendTo(self.$element[0], oConfig);
|
||||
|
|
@ -330,7 +319,7 @@
|
|||
{
|
||||
self.fOnReady();
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
;
|
||||
|
|
|
|||
|
|
@ -333,19 +333,23 @@
|
|||
* @param {number=} iLimit = 20
|
||||
* @param {string=} sSearch = ''
|
||||
* @param {boolean=} bSilent = false
|
||||
* @param {string=} sThreadUid = ''
|
||||
*/
|
||||
RemoteUserAjax.prototype.messageList = function (fCallback, sFolderFullNameRaw, iOffset, iLimit, sSearch, bSilent)
|
||||
RemoteUserAjax.prototype.messageList = function (fCallback, sFolderFullNameRaw, iOffset, iLimit, sSearch, bSilent, sThreadUid)
|
||||
{
|
||||
sFolderFullNameRaw = Utils.pString(sFolderFullNameRaw);
|
||||
|
||||
var
|
||||
sFolderHash = Cache.getFolderHash(sFolderFullNameRaw)
|
||||
sFolderHash = Cache.getFolderHash(sFolderFullNameRaw),
|
||||
bUseThreads = AppStore.threadsAllowed() && SettingsStore.useThreads(),
|
||||
sInboxUidNext = Cache.getFolderInboxName() === sFolderFullNameRaw ? Cache.getFolderUidNext(sFolderFullNameRaw) : ''
|
||||
;
|
||||
|
||||
bSilent = Utils.isUnd(bSilent) ? false : !!bSilent;
|
||||
iOffset = Utils.isUnd(iOffset) ? 0 : Utils.pInt(iOffset);
|
||||
iLimit = Utils.isUnd(iOffset) ? 20 : Utils.pInt(iLimit);
|
||||
sSearch = Utils.pString(sSearch);
|
||||
sThreadUid = Utils.pString(sThreadUid);
|
||||
|
||||
if ('' !== sFolderHash && ('' === sSearch || -1 === sSearch.indexOf('is:')))
|
||||
{
|
||||
|
|
@ -358,9 +362,9 @@
|
|||
sSearch,
|
||||
AppStore.projectHash(),
|
||||
sFolderHash,
|
||||
Cache.getFolderInboxName() === sFolderFullNameRaw ? Cache.getFolderUidNext(sFolderFullNameRaw) : '',
|
||||
AppStore.threadsAllowed() && SettingsStore.useThreads() ? '1' : '0',
|
||||
''
|
||||
sInboxUidNext,
|
||||
bUseThreads ? '1' : '0',
|
||||
bUseThreads ? sThreadUid : ''
|
||||
].join(String.fromCharCode(0))), bSilent ? [] : ['MessageList']);
|
||||
}
|
||||
else
|
||||
|
|
@ -370,9 +374,11 @@
|
|||
'Offset': iOffset,
|
||||
'Limit': iLimit,
|
||||
'Search': sSearch,
|
||||
'UidNext': Cache.getFolderInboxName() === sFolderFullNameRaw ? Cache.getFolderUidNext(sFolderFullNameRaw) : '',
|
||||
'UseThreads': AppStore.threadsAllowed() && SettingsStore.useThreads() ? '1' : '0'
|
||||
}, '' === sSearch ? Consts.Defaults.DefaultAjaxTimeout : Consts.Defaults.SearchAjaxTimeout, '', bSilent ? [] : ['MessageList']);
|
||||
'UidNext': sInboxUidNext,
|
||||
'UseThreads': bUseThreads ? '1' : '0',
|
||||
'ThreadUid': bUseThreads ? sThreadUid : ''
|
||||
}, '' === sSearch ? Consts.Defaults.DefaultAjaxTimeout : Consts.Defaults.SearchAjaxTimeout,
|
||||
'', bSilent ? [] : ['MessageList']);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -144,29 +144,27 @@
|
|||
|
||||
}, 50);
|
||||
}
|
||||
else
|
||||
{
|
||||
_.delay(function () {
|
||||
|
||||
var
|
||||
f1 = Utils.settingsSaveHelperSimpleFunction(self.title.trigger, self),
|
||||
f2 = Utils.settingsSaveHelperSimpleFunction(self.loadingDesc.trigger, self)
|
||||
;
|
||||
_.delay(function () {
|
||||
|
||||
self.title.subscribe(function (sValue) {
|
||||
Remote.saveAdminConfig(f1, {
|
||||
'Title': Utils.trim(sValue)
|
||||
});
|
||||
var
|
||||
f1 = Utils.settingsSaveHelperSimpleFunction(self.title.trigger, self),
|
||||
f2 = Utils.settingsSaveHelperSimpleFunction(self.loadingDesc.trigger, self)
|
||||
;
|
||||
|
||||
self.title.subscribe(function (sValue) {
|
||||
Remote.saveAdminConfig(f1, {
|
||||
'Title': Utils.trim(sValue)
|
||||
});
|
||||
});
|
||||
|
||||
self.loadingDesc.subscribe(function (sValue) {
|
||||
Remote.saveAdminConfig(f2, {
|
||||
'LoadingDescription': Utils.trim(sValue)
|
||||
});
|
||||
self.loadingDesc.subscribe(function (sValue) {
|
||||
Remote.saveAdminConfig(f2, {
|
||||
'LoadingDescription': Utils.trim(sValue)
|
||||
});
|
||||
});
|
||||
|
||||
}, 50);
|
||||
}
|
||||
}, 50);
|
||||
};
|
||||
|
||||
module.exports = BrandingAdminSettings;
|
||||
|
|
|
|||
|
|
@ -22,14 +22,11 @@
|
|||
this.language = ko.observable('')
|
||||
.extend({'limitedList': this.languages});
|
||||
|
||||
this.userLanguage = ko.observable('')
|
||||
.extend({'limitedList': this.languages});
|
||||
|
||||
this.languageAdmin = ko.observable('')
|
||||
.extend({'limitedList': this.languagesAdmin});
|
||||
|
||||
this.userLanguageAdmin = ko.observable('')
|
||||
.extend({'limitedList': this.languagesAdmin});
|
||||
this.userLanguage = ko.observable('');
|
||||
this.userLanguageAdmin = ko.observable('');
|
||||
}
|
||||
|
||||
LanguageStore.prototype.populate = function ()
|
||||
|
|
|
|||
|
|
@ -1099,6 +1099,26 @@
|
|||
oText.find('.rlBlockquoteSwitcher').off('.rlBlockquoteSwitcher').remove();
|
||||
oText.find('[data-html-editor-font-wrapper]').removeAttr('data-html-editor-font-wrapper');
|
||||
|
||||
(function () {
|
||||
|
||||
var oTmp = null, iLimit = 0;
|
||||
|
||||
while (true)
|
||||
{
|
||||
iLimit++;
|
||||
|
||||
oTmp = oText.children();
|
||||
if (10 > iLimit && oTmp.is('div') && 1 === oTmp.length)
|
||||
{
|
||||
oTmp.children().unwrap();
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}());
|
||||
|
||||
sText = oText.html();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,15 +24,16 @@
|
|||
var self = this;
|
||||
|
||||
this.fLang = null;
|
||||
this.sUserLanguage = '';
|
||||
this.userLanguage = ko.observable('');
|
||||
|
||||
this.langs = ko.observableArray([]);
|
||||
|
||||
this.languages = ko.computed(function () {
|
||||
var sUserLanguage = self.userLanguage();
|
||||
return _.map(self.langs(), function (sLanguage) {
|
||||
return {
|
||||
'key': sLanguage,
|
||||
'user': sLanguage === self.sUserLanguage,
|
||||
'user': sLanguage === sUserLanguage,
|
||||
'selected': ko.observable(false),
|
||||
'fullName': Utils.convertLangName(sLanguage)
|
||||
};
|
||||
|
|
@ -66,7 +67,7 @@
|
|||
LanguagesPopupView.prototype.onShow = function (fLanguage, aLangs, sUserLanguage)
|
||||
{
|
||||
this.fLang = fLanguage;
|
||||
this.sUserLanguage = sUserLanguage || '';
|
||||
this.userLanguage(sUserLanguage || '');
|
||||
|
||||
this.langs(aLangs);
|
||||
};
|
||||
|
|
@ -74,7 +75,7 @@
|
|||
LanguagesPopupView.prototype.onHide = function ()
|
||||
{
|
||||
this.fLang = null;
|
||||
this.sUserLanguage = '';
|
||||
this.userLanguage('');
|
||||
this.langs([]);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"name": "RainLoop",
|
||||
"title": "RainLoop Webmail",
|
||||
"version": "1.8.3",
|
||||
"release": "302",
|
||||
"release": "304",
|
||||
"description": "Simple, modern & fast web-based email client",
|
||||
"homepage": "http://rainloop.net",
|
||||
"main": "gulpfile.js",
|
||||
|
|
|
|||
|
|
@ -1709,8 +1709,9 @@ class Actions
|
|||
$aResult['LanguageAdmin'] = $this->ValidateLanguage($sLanguageAdmin, '', true);
|
||||
|
||||
$aResult['UserLanguageRaw'] = $this->detectUserLanguage();
|
||||
$aResult['UserLanguage'] = $this->ValidateLanguage($aResult['UserLanguageRaw'], $aResult['Language'], false);
|
||||
$aResult['UserLanguageAdmin'] = $this->ValidateLanguage($aResult['UserLanguageRaw'], $aResult['LanguageAdmin'], true);
|
||||
|
||||
$aResult['UserLanguage'] = $this->ValidateLanguage($aResult['UserLanguageRaw'], '', false, true, true);
|
||||
$aResult['UserLanguageAdmin'] = $this->ValidateLanguage($aResult['UserLanguageRaw'], '', true, true, true);
|
||||
|
||||
$aResult['LangLink'] = './?/Lang/0/'.($bAdmin ? 'Admin' : 'App').'/'.
|
||||
($bAdmin ? $aResult['LanguageAdmin'] : $aResult['Language']).'/'.$sStaticCache.'/';
|
||||
|
|
@ -5525,7 +5526,7 @@ class Actions
|
|||
|
||||
if ($bUseThreads)
|
||||
{
|
||||
$sThreadUid = ''; // TODO
|
||||
$sThreadUid = isset($aValues[8]) ? (string) $aValues[8] : '';
|
||||
}
|
||||
|
||||
$this->verifyCacheByKey($sRawKey);
|
||||
|
|
@ -8380,10 +8381,11 @@ class Actions
|
|||
* @param string $sDefault = ''
|
||||
* @param bool $bAdmin = false
|
||||
* @param bool $bSearchShortName = false
|
||||
* @param bool $bAllowEmptyResult = false
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function ValidateLanguage($sLanguage, $sDefault = '', $bAdmin = false, $bSearchShortName = false)
|
||||
public function ValidateLanguage($sLanguage, $sDefault = '', $bAdmin = false, $bSearchShortName = false, $bAllowEmptyResult = false)
|
||||
{
|
||||
$sResult = '';
|
||||
$aLang = $this->GetLanguages($bAdmin);
|
||||
|
|
@ -8409,7 +8411,7 @@ class Actions
|
|||
$sResult = $sDefault;
|
||||
}
|
||||
|
||||
if (empty($sResult))
|
||||
if (empty($sResult) && !$bAllowEmptyResult)
|
||||
{
|
||||
$sResult = $this->Config()->Get('webmail', $bAdmin ? 'language_admin' : 'language', 'en');
|
||||
$sResult = \in_array($sResult, $aLang) ? $sResult : 'en';
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@
|
|||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane active" id="branding-welcome-page-section-id">
|
||||
<div class="tab-pane" id="branding-welcome-page-section-id">
|
||||
|
||||
<div class="form-horizontal" data-bind="css: {'disabled-form': !capa()}">
|
||||
<div class="control-group">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue