Release fixes

This commit is contained in:
RainLoop Team 2015-04-17 17:56:29 +04:00
parent b00959b2d0
commit c73eb76816
9 changed files with 67 additions and 54 deletions

View file

@ -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();
}
});
}
;

View file

@ -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']);
}
};

View file

@ -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;

View file

@ -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 ()

View file

@ -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();
}

View file

@ -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([]);
};

View file

@ -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",

View file

@ -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';

View file

@ -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">