Change build system (Grunt -> Gulp)

Remove attachments on reply (Closes #195)
Do not show deleted (flag \Deleted) messages (Closes #185)
Release commit
This commit is contained in:
RainLoop Team 2014-06-16 23:56:11 +04:00
parent aebd47393c
commit 333c063cf1
44 changed files with 1300 additions and 772 deletions

View file

@ -1,4 +1,8 @@
/**
* @deprecated
*/
/*jshint node: true */
'use strict';
@ -106,9 +110,9 @@ module.exports = function (grunt) {
js_index: {
nonull: true,
src: [
'vendors/json2.min.js',
'vendors/simple-pace/simple-pace-1.0.min.js',
'vendors/rl/rl-1.0.min.js'
"vendors/json2.min.js",
"vendors/simple-pace/simple-pace-1.0.min.js",
"vendors/rl/rl-1.0.min.js"
],
dest: 'rainloop/v/<%= cfg.devVersion %>/static/js/boot.js'
},

View file

@ -1 +1 @@
1.3
0.0

View file

@ -1,10 +1,10 @@
<?xml version="1.0"?>
<info>
<id>rainloop</id>
<name>RainLoop</name>
<description>RainLoop Webmail</description>
<version>1.2</version>
<licence>CC BY-NC-SA 3.0</licence>
<author>RainLoop Team</author>
<require>6.0</require>
<?xml version="1.0"?>
<info>
<id>rainloop</id>
<name>RainLoop</name>
<description>RainLoop Webmail</description>
<version>0.0</version>
<licence>CC BY-NC-SA 3.0</licence>
<author>RainLoop Team</author>
<require>6.0</require>
</info>

View file

@ -1,19 +0,0 @@
************************************************************************
*
* ownCloud - RainLoop mail plugin
*
* @author RainLoop Team
* @copyright 2014 RainLoop Team
*
* https://github.com/RainLoop/rainloop-webmail/
*
************************************************************************
INSTALL:
- Unpack the RainLoop Webmail application package in the apps directory of your OwnCloud instance
CONFIGURATION:
1) In the Apps > Enable 'RainLoop' plugin
2) In the Settings > Personal > Type your mail server email(login) and password (for autologin)
3) Enjoy!

View file

@ -1,46 +0,0 @@
<?php
/**
* ownCloud - RainLoop mail plugin
*
* @author RainLoop Team
* @copyright 2014 RainLoop Team
*
* https://github.com/RainLoop/rainloop-webmail/tree/master/build/owncloud
*/
OCP\JSON::checkLoggedIn();
OCP\JSON::checkAppEnabled('rainloop');
OCP\JSON::callCheck();
$sEmail = '';
$sLogin = '';
if (isset($_POST['appname'], $_POST['rainloop-password'], $_POST['rainloop-email']) && 'rainloop' === $_POST['appname'])
{
$sUser = OCP\User::getUser();
$sPostEmail = $_POST['rainloop-email'];
$sPostLogin = isset($_POST['rainloop-login']) ? $_POST['rainloop-login'] : '';
OCP\Config::setUserValue($sUser, 'rainloop', 'rainloop-email', $sPostEmail);
OCP\Config::setUserValue($sUser, 'rainloop', 'rainloop-login', $sPostLogin);
$sPass = $_POST['rainloop-password'];
if ('******' !== $sPass && '' !== $sPass)
{
include_once OC_App::getAppPath('rainloop').'/lib/RainLoopHelper.php';
OCP\Config::setUserValue($sUser, 'rainloop', 'rainloop-password',
OC_RainLoop_Helper::encodePassword($sPass, md5($sPostEmail.$sPostLogin)));
}
$sEmail = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-email', '');
$sLogin = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-login', '');
}
else
{
OC_JSON::error(array('Message' => 'Invalid argument(s)', 'Email' => $sEmail, 'Login' => $sLogin));
return false;
}
OCP\JSON::success(array('Message' => 'Saved successfully', 'Email' => $sEmail, 'Login' => $sLogin));
return true;

View file

@ -1,33 +0,0 @@
<?php
/**
* ownCloud - RainLoop mail plugin
*
* @author RainLoop Team
* @copyright 2014 RainLoop Team
*
* https://github.com/RainLoop/owncloud
*/
OCP\App::registerPersonal('rainloop', 'personal');
OCP\Util::addScript('rainloop', 'rainloop');
OCP\App::addNavigationEntry(array(
'id' => 'rainloop_index',
'order' => 20,
'href' => OCP\Util::linkTo('rainloop', 'index.php'),
'icon' => OCP\Util::imagePath('rainloop', 'mail.png'),
'name' => 'RainLoop'
));
if(OC_User::isAdminUser(OCP\User::getUser()))
{
OCP\App::addNavigationEntry(array(
'id' => 'rainloop_index_admin',
'order' => 21,
'href' => OCP\Util::linkTo('rainloop', 'index-admin.php'),
'icon' => OCP\Util::imagePath('rainloop', 'mail.png'),
'name' => 'RainLoop (Admin)'
));
}

View file

@ -1,10 +0,0 @@
<?xml version="1.0"?>
<info>
<id>rainloop</id>
<name>RainLoop</name>
<description>RainLoop Webmail</description>
<version>0.0.0</version>
<licence>CC BY-NC-SA 3.0</licence>
<author>RainLoop Team</author>
<require>6.0</require>
</info>

View file

@ -1 +0,0 @@
0.0.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 832 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -1,22 +0,0 @@
<?php
/**
* ownCloud - RainLoop mail plugin
*
* @author RainLoop Team
* @copyright 2014 RainLoop Team
*
* https://github.com/RainLoop/rainloop-webmail/tree/master/build/owncloud
*/
OCP\User::checkAdminUser();
OCP\App::checkAppEnabled('rainloop');
OCP\App::setActiveNavigationEntry('rainloop_index_admin');
$sUrl = OCP\Util::linkTo('apps/rainloop/app', 'index.php');
$sResultUrl = $sUrl.'?admin';
$oTemplate = new OCP\Template('rainloop', 'iframe', 'user');
$oTemplate->assign('rainloop-url', $sResultUrl);
$oTemplate->printpage();

View file

@ -1,36 +0,0 @@
<?php
/**
* ownCloud - RainLoop mail plugin
*
* @author RainLoop Team
* @copyright 2014 RainLoop Team
*
* https://github.com/RainLoop/rainloop-webmail/tree/master/build/owncloud
*/
OCP\User::checkLoggedIn();
OCP\App::checkAppEnabled('rainloop');
OCP\App::setActiveNavigationEntry('rainloop_index');
$sUser = OCP\User::getUser();
$sEmail = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-email', '');
$sLogin = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-login', '');
$sPassword = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-password', '');
$_ENV['RAINLOOP_INCLUDE_AS_API'] = true;
include OC_App::getAppPath('rainloop').'/app/index.php';
include_once OC_App::getAppPath('rainloop').'/lib/RainLoopHelper.php';
$sPassword = OC_RainLoop_Helper::decodePassword($sPassword, md5($sEmail.$sLogin));
$sSsoHash = \RainLoop\Api::GetUserSsoHash($sEmail, $sPassword, $sLogin);
$sUrl = OCP\Util::linkTo('apps/rainloop/app', 'index.php');
$sResultUrl = empty($sSsoHash) ? $sUrl.'?sso' : $sUrl.'?sso&hash='.$sSsoHash;
$oTemplate = new OCP\Template('rainloop', 'iframe', 'user');
$oTemplate->assign('rainloop-url', $sResultUrl);
$oTemplate->printpage();

View file

@ -1,13 +0,0 @@
/**
* ownCloud - RainLoop mail plugin
*
* @author RainLoop Team
* @copyright 2014 RainLoop Team
*
* https://github.com/RainLoop/rainloop-webmail/tree/master/build/owncloud
*/
$(function() {
RainLoopFormHelper('#mail-rainloop-personal-form', 'personal.php');
});

View file

@ -1,76 +0,0 @@
function RainLoopFormHelper(sID, sAjaxFile, fCallback)
{
try
{
var
oForm = $(sID),
oSubmit = $('#rainloop-save-button', oForm),
sSubmitValue = oSubmit.val(),
oDesc = oForm.find('.rainloop-result-desc')
;
oSubmit.click(function (oEvent) {
var oDefAjax = null;
oEvent.preventDefault();
oForm
.addClass('rainloop-ajax')
.removeClass('rainloop-error')
.removeClass('rainloop-success')
;
oDesc.text('');
oSubmit.val('...');
oDefAjax = $.ajax({
'type': 'POST',
'async': true,
'url': OC.filePath('rainloop', 'ajax', sAjaxFile),
'data': oForm.serialize(),
'dataType': 'json',
'global': true
});
oDefAjax.always(function (oData) {
var bResult = false;
oForm.removeClass('rainloop-ajax');
oSubmit.val(sSubmitValue);
if (oData)
{
bResult = 'success' === oData['status'];
if (oData['Message'])
{
oDesc.text(oData['Message']);
}
}
if (bResult)
{
oForm.addClass('rainloop-success');
}
else
{
oForm.addClass('rainloop-error');
if ('' === oDesc.text())
{
oDesc.text('Error');
}
}
if (fCallback)
{
fCallback(bResult, oData);
}
});
return false;
});
}
catch(e) {}
}

View file

@ -1,28 +0,0 @@
<?php
class OC_RainLoop_Helper
{
public static function encodePassword($sPassword, $sSalt)
{
if (function_exists('mcrypt_encrypt') && function_exists('mcrypt_create_iv') && function_exists('mcrypt_get_iv_size') &&
defined('MCRYPT_RIJNDAEL_256') && defined('MCRYPT_MODE_ECB') && defined('MCRYPT_RAND'))
{
return @trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($sSalt), $sPassword,
MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}
return @trim(base64_encode($sPassword));
}
public static function decodePassword($sPassword, $sSalt)
{
if (function_exists('mcrypt_encrypt') && function_exists('mcrypt_create_iv') && function_exists('mcrypt_get_iv_size') &&
defined('MCRYPT_RIJNDAEL_256') && defined('MCRYPT_MODE_ECB') && defined('MCRYPT_RAND'))
{
return @mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($sSalt), base64_decode(trim($sPassword)),
MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND));
}
return @base64_decode(trim($sPassword));
}
}

View file

@ -1,29 +0,0 @@
<?php
/**
* ownCloud - RainLoop mail plugin
*
* @author RainLoop Team
* @copyright 2014 RainLoop Team
*
* https://github.com/RainLoop/rainloop-webmail/tree/master/build/owncloud
*/
OCP\User::checkLoggedIn();
OCP\App::checkAppEnabled('rainloop');
OCP\Util::addScript('rainloop', 'personal');
$sUser = OCP\User::getUser();
$oTemplate = new OCP\Template('rainloop', 'personal');
$sEmail = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-email', '');
$oTemplate->assign('rainloop-email', $sEmail);
$oTemplate->assign('rainloop-login', OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-login', ''));
$sPass = OCP\Config::getUserValue($sUser, 'rainloop', 'rainloop-password', '');
$oTemplate->assign('rainloop-password', 0 === strlen($sPass) && 0 === strlen($sEmail) ? '' : '******');
return $oTemplate->fetchPage();

View file

@ -1 +0,0 @@
<!-- empty -->

View file

@ -1,3 +0,0 @@
<div style="box-sizing: border-box; width: 100%; height: 100%; padding: 0px; margin: 0px; background-color: #383c43; position: relative; overflow: hidden;"
><iframe style="border: none; width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; right: 0px; bottom: 0px;" tabindex="-1" frameborder="0"
src="<?php echo $_['rainloop-url']; ?>"></iframe></div>

View file

@ -1,21 +0,0 @@
<form id="mail-rainloop-personal-form" action="#" method="post">
<input type="hidden" name="requesttoken" value="<?php echo $_['requesttoken'] ?>" id="requesttoken">
<input type="hidden" name="appname" value="rainloop">
<fieldset class="personalblock">
<h2><?php p($l->t('RainLoop Webmail (autologin)')); ?></h2>
<p>
<input type="text" id="rainloop-email" name="rainloop-email"
value="<?php echo $_['rainloop-email']; ?>" placeholder="<?php p($l->t('Email')); ?>" />
<input type="text" id="rainloop-email" name="rainloop-login"
value="<?php echo $_['rainloop-login']; ?>" placeholder="<?php p($l->t('Login (optional)')); ?>" />
<input type="password" id="rainloop-password" name="rainloop-password"
value="<?php echo $_['rainloop-password']; ?>" placeholder="<?php p($l->t('Password')); ?>" />
<input type="button" id="rainloop-save-button" name="rainloop-save-button" value="<?php p($l->t('Save')); ?>" />
&nbsp;&nbsp;<span class="rainloop-result-desc"></span>
</p>
</fieldset>
</form>

View file

@ -53,7 +53,7 @@ function AdminAbout()
}
return sType;
}, this);
}

View file

@ -21,7 +21,7 @@ var
* @type {Object.<Function>}
*/
Utils = {},
/**
* @type {Object.<Function>}
*/
@ -67,7 +67,7 @@ var
I18n = window['rainloopI18N'] || {},
$html = $('html'),
// $body = $('body'),
$window = $(window),
@ -75,4 +75,4 @@ var
$document = $(window.document),
NotificationClass = window.Notification && window.Notification.requestPermission ? window.Notification : null
;
;

View file

@ -6,7 +6,7 @@
*/
var
RL = null,
$proxyDiv = $('<div></div>')
;
/*jshint onevar: true*/
/*jshint onevar: true*/

View file

@ -14,6 +14,7 @@
@import "../../vendors/bootstrap/less/forms.less";
@import "../../vendors/bootstrap/less/tables.less";
// @import "../../vendors/bootstrap/less/sprites.less";
@import "../../vendors/bootstrap/less/dropdowns.less";
@import "../../vendors/bootstrap/less/wells.less";
@import "../../vendors/bootstrap/less/component-animations.less";
@ -32,8 +33,14 @@
@import "../../vendors/bootstrap/less/modals.less";
@import "../../vendors/bootstrap/less/tooltip.less";
@import "../../vendors/bootstrap/less/popovers.less";
// @import "../../vendors/bootstrap/less/thumbnails.less";
@import "../../vendors/bootstrap/less/labels-badges.less";
@import "../../vendors/bootstrap/less/progress-bars.less";
// @import "../../vendors/bootstrap/less/accordion.less";
// @import "../../vendors/bootstrap/less/carousel.less";
// @import "../../vendors/bootstrap/less/hero-unit.less";
@import "../../vendors/bootstrap/less/utilities.less";
@import "_FontasticToBoot.less";

View file

@ -230,20 +230,31 @@ html.rl-no-preview-pane {
}
}
.visible-on-ctrl {
.visible-on-ctrl, .visible-on-ctrl-btn {
display: none;
}
.hidden-on-ctrl {
.hidden-on-ctrl-btn {
display: inline-block;
}
html.rl-ctrl-key-pressed .visible-on-ctrl {
display: inline-block;
}
html.rl-ctrl-key-pressed {
html.rl-ctrl-key-pressed .hidden-on-ctrl {
display: none;
.visible-on-ctrl {
display: inline-block;
}
.btn-group.open .visible-on-ctrl-btn {
display: inline-block;
}
.hidden-on-ctrl {
display: none;
}
.btn-group.open .hidden-on-ctrl-btn {
display: none;
}
}
#rl-loading, #rl-loading-error {

View file

@ -1,10 +1,4 @@
/*.folderPaddingHelper(@i) {
(~".folder-padding.deep-@{i}") {
width: 15px * @i + 10px;
}
}*/
.b-settings-folders {
&.ignore-folder-subscribe {
@ -62,7 +56,7 @@
border-bottom: 1px dashed #333;
cursor: pointer;
}
.folder-name-input {
border-width: 1px;
margin-bottom: 0;
@ -116,10 +110,4 @@
.folder-padding.deep-5 {
width: 15px * 5 + 10px;
}
/* .folderPaddingHelper(1);
.folderPaddingHelper(2);
.folderPaddingHelper(3);
.folderPaddingHelper(4);
.folderPaddingHelper(5);*/
}

View file

@ -1371,7 +1371,6 @@ PopupsComposeViewModel.prototype.prepearMessageAttachments = function (oMessage,
break;
}
bAdd = true;
if (bAdd)
{
oAttachment = new ComposeAttachmentModel(

585
gulpfile.js Normal file
View file

@ -0,0 +1,585 @@
'use strict';
var
pkg = require('./package.json'),
cfg = {
devVersion: '0.0.0',
releasesPath: 'build/dist/releases',
destPath: '',
cleanPath: '',
zipSrcPath: '',
zipFile: '',
paths: {},
summary: {
verbose: true,
reasonCol: 'cyan,bold',
codeCol: 'green'
},
uglify: {
mangle: true,
compress: true,
preserveComments: 'some'
}
},
fs = require('node-fs'),
path = require('path'),
gulp = require('gulp'),
concat = require('gulp-concat-util'),
header = require('gulp-header'),
footer = require('gulp-footer'),
rename = require('gulp-rename'),
minifyCss = require('gulp-minify-css'),
less = require('gulp-less'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify'),
gutil = require('gulp-util')
;
function regOtherMinTask(sName, sPath, sInc, sOut, sHeader)
{
gulp.task(sName, function() {
return gulp.src(sPath + sInc)
.pipe(uglify())
.pipe(header(sHeader || ''))
.pipe(rename(sOut))
.pipe(gulp.dest(sPath));
});
}
function zipDir(sSrcDir, sDestDir, sFileName)
{
return gulp.src(sSrcDir + '**/*')
.pipe(require('gulp-zip')(sFileName))
.pipe(gulp.dest(sDestDir));
}
function cleanDir(sDir)
{
return gulp.src(sDir, {read: false})
.pipe(require('gulp-clean')());
}
function renameFileWothMd5Hash(sFile)
{
var sHash = require('crypto').createHash('md5').update(fs.readFileSync(sFile)).digest('hex');
fs.renameSync(sFile, sFile.replace(/\.zip$/, '-' + sHash + '.zip'));
return true;
}
cfg.paths.staticJS = 'rainloop/v/' + cfg.devVersion + '/static/js/';
cfg.paths.staticCSS = 'rainloop/v/' + cfg.devVersion + '/static/css/';
cfg.paths.less = {
main: {
name: 'less.css',
src: 'dev/Styles/@Main.less',
watch: ['dev/Styles/*.less'],
options: {
paths: [path.join(__dirname, 'dev/Styles/'), path.join(__dirname, 'vendors/bootstrap/less/')]
}
}
};
cfg.paths.css = {
main: {
name: 'app.css',
name_min: 'app.min.css',
src: [
'vendors/jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.css',
'vendors/normalize/normalize.css',
'vendors/fontastic/styles.css',
'vendors/jquery-nanoscroller/nanoscroller.css',
'vendors/jquery-magnific-popup/magnific-popup.css',
'vendors/jquery-magnific-popup/magnific-popup-animations.css',
'vendors/simple-pace/styles.css',
'vendors/inputosaurus/inputosaurus.css',
'vendors/flags/flags-fixed.css',
cfg.paths.staticCSS + cfg.paths.less.main.name
]
}
};
cfg.paths.js = {
boot: {
name: 'boot.js',
src: [
'vendors/json2.min.js',
'vendors/simple-pace/simple-pace-1.0.min.js',
'vendors/rl/rl-1.0.min.js'
]
},
openpgp: {
name: 'openpgp.min.js',
src: [
'vendors/openpgp/openpgp-0.5.1.min.js'
]
},
libs: {
name: 'libs.js',
src: [
'vendors/modernizr.js',
'vendors/underscore/underscore-1.5.2.min.js',
'vendors/jquery/jquery-1.11.1.min.js',
'vendors/jquery-ui/js/jquery-ui-1.10.3.custom.min.js',
'vendors/jquery-cookie/jquery.cookie-1.4.0.min.js',
'vendors/jquery-finger/jquery.finger.min.js',
'vendors/jquery-mousewheel/jquery.mousewheel-3.1.4.min.js',
'vendors/jquery-scrollstop/jquery.scrollstop.min.js',
'vendors/jquery-lazyload/jquery.lazyload.min.js',
'vendors/jquery-nanoscroller/jquery.nanoscroller-0.7.min.js',
'vendors/jquery-wakeup/jquery.wakeup.min.js',
'vendors/inputosaurus/inputosaurus.min.js',
'vendors/moment/min/moment.min.js ',
'vendors/routes/signals.min.js',
'vendors/routes/hasher.min.js',
'vendors/routes/crossroads.min.js',
'vendors/knockout/knockout-3.1.0.js',
'vendors/knockout-projections/knockout-projections-1.0.0.min.js',
'vendors/ssm/ssm.min.js',
'vendors/jua/jua.min.js',
'vendors/keymaster/keymaster.js',
'vendors/ifvisible/ifvisible.min.js',
'vendors/jquery-magnific-popup/jquery.magnific-popup.min.js',
'vendors/bootstrap/js/bootstrap.min.js',
'dev/Common/_LibsEnd.js'
]
},
app: {
name: 'app.js',
name_min: 'app.min.js',
src: [
'dev/Common/_Begin.js',
'dev/Common/_BeginW.js',
'dev/Common/Globals.js',
'dev/Common/Constants.js',
'dev/Common/Enums.js',
'dev/Common/Utils.js',
'dev/Common/Base64.js',
'dev/Common/Knockout.js',
'dev/Common/LinkBuilder.js',
'dev/Common/Plugins.js',
'dev/Common/NewHtmlEditorWrapper.js',
'dev/Common/Selector.js',
'dev/Storages/LocalStorages/CookieDriver.js',
'dev/Storages/LocalStorages/LocalStorageDriver.js',
'dev/Storages/LocalStorage.js',
'dev/Knoin/AbstractBoot.js',
'dev/Knoin/AbstractViewModel.js',
'dev/Knoin/AbstractScreen.js',
'dev/Knoin/Knoin.js',
'dev/Models/EmailModel.js',
'dev/Models/ContactModel.js',
'dev/Models/ContactPropertyModel.js',
'dev/Models/ContactTagModel.js',
'dev/Models/AttachmentModel.js',
'dev/Models/ComposeAttachmentModel.js',
'dev/Models/MessageModel.js',
'dev/Models/FolderModel.js',
'dev/Models/AccountModel.js',
'dev/Models/IdentityModel.js',
'dev/Models/FilterConditionModel.js',
'dev/Models/FilterModel.js',
'dev/Models/OpenPgpKeyModel.js',
'dev/ViewModels/PopupsFolderClearViewModel.js',
'dev/ViewModels/PopupsFolderCreateViewModel.js',
'dev/ViewModels/PopupsFolderSystemViewModel.js',
'dev/ViewModels/PopupsComposeViewModel.js',
'dev/ViewModels/PopupsContactsViewModel.js',
'dev/ViewModels/PopupsAdvancedSearchViewModel.js',
'dev/ViewModels/PopupsAddAccountViewModel.js',
'dev/ViewModels/PopupsAddOpenPgpKeyViewModel.js',
'dev/ViewModels/PopupsViewOpenPgpKeyViewModel.js',
'dev/ViewModels/PopupsGenerateNewOpenPgpKeyViewModel.js',
'dev/ViewModels/PopupsComposeOpenPgpViewModel.js',
'dev/ViewModels/PopupsIdentityViewModel.js',
'dev/ViewModels/PopupsLanguagesViewModel.js',
'dev/ViewModels/PopupsTwoFactorTestViewModel.js',
'dev/ViewModels/PopupsAskViewModel.js',
'dev/ViewModels/PopupsKeyboardShortcutsHelpViewModel.js',
'dev/ViewModels/LoginViewModel.js',
'dev/ViewModels/AbstractSystemDropDownViewModel.js',
'dev/ViewModels/MailBoxSystemDropDownViewModel.js',
'dev/ViewModels/SettingsSystemDropDownViewModel.js',
'dev/ViewModels/MailBoxFolderListViewModel.js',
'dev/ViewModels/MailBoxMessageListViewModel.js',
'dev/ViewModels/MailBoxMessageViewViewModel.js',
'dev/ViewModels/SettingsMenuViewModel.js',
'dev/ViewModels/SettingsPaneViewModel.js',
'dev/Settings/General.js',
'dev/Settings/Contacts.js',
'dev/Settings/Accounts.js',
'dev/Settings/Identity.js',
'dev/Settings/Identities.js',
'dev/Settings/Filters.js',
'dev/Settings/Security.js',
'dev/Settings/Social.js',
'dev/Settings/ChangePassword.js',
'dev/Settings/Folders.js',
'dev/Settings/Themes.js',
'dev/Settings/OpenPGP.js',
'dev/Storages/AbstractData.js',
'dev/Storages/WebMailData.js',
'dev/Storages/AbstractAjaxRemote.js',
'dev/Storages/WebMailAjaxRemote.js',
'dev/Storages/AbstractCache.js',
'dev/Storages/WebMailCache.js',
'dev/Screens/AbstractSettings.js',
'dev/Screens/Login.js',
'dev/Screens/MailBox.js',
'dev/Screens/Settings.js',
'dev/Boots/AbstractApp.js',
'dev/Boots/RainLoopApp.js',
'dev/Common/_End.js',
'dev/Common/_CoreEnd.js'
]
},
admin: {
name: 'admin.js',
name_min: 'admin.min.js',
src: [
'dev/Common/_Begin.js',
'dev/Common/_BeginA.js',
'dev/Common/Globals.js',
'dev/Common/Constants.js',
'dev/Common/Enums.js',
'dev/Common/Utils.js',
'dev/Common/Base64.js',
'dev/Common/Knockout.js',
'dev/Common/LinkBuilder.js',
'dev/Common/Plugins.js',
'dev/Storages/LocalStorages/CookieDriver.js',
'dev/Storages/LocalStorages/LocalStorageDriver.js',
'dev/Storages/LocalStorage.js',
'dev/Knoin/AbstractBoot.js',
'dev/Knoin/AbstractViewModel.js',
'dev/Knoin/AbstractScreen.js',
'dev/Knoin/Knoin.js',
'dev/Models/EmailModel.js',
'dev/Models/ContactTagModel.js',
'dev/ViewModels/PopupsDomainViewModel.js',
'dev/ViewModels/PopupsPluginViewModel.js',
'dev/ViewModels/PopupsActivateViewModel.js',
'dev/ViewModels/PopupsLanguagesViewModel.js',
'dev/ViewModels/PopupsAskViewModel.js',
'dev/ViewModels/AdminLoginViewModel.js',
'dev/ViewModels/AdminMenuViewModel.js',
'dev/ViewModels/AdminPaneViewModel.js',
'dev/Admin/General.js',
'dev/Admin/Login.js',
'dev/Admin/Branding.js',
'dev/Admin/Contacts.js',
'dev/Admin/Domains.js',
'dev/Admin/Security.js',
'dev/Admin/Social.js',
'dev/Admin/Plugins.js',
'dev/Admin/Packages.js',
'dev/Admin/Licensing.js',
'dev/Admin/About.js',
'dev/Storages/AbstractData.js',
'dev/Storages/AdminData.js',
'dev/Storages/AbstractAjaxRemote.js',
'dev/Storages/AdminAjaxRemote.js',
'dev/Storages/AbstractCache.js',
'dev/Storages/AdminCache.js',
'dev/Screens/AbstractSettings.js',
'dev/Screens/AdminLogin.js',
'dev/Screens/AdminSettings.js',
'dev/Boots/AbstractApp.js',
'dev/Boots/AdminApp.js',
'dev/Common/_End.js',
'dev/Common/_CoreEnd.js'
]
}
};
// CSS
gulp.task('less:main', function() {
return gulp.src(cfg.paths.less.main.src)
.pipe(less({
'paths': cfg.paths.less.main.options.paths
}))
.pipe(rename(cfg.paths.less.main.name))
.pipe(gulp.dest(cfg.paths.staticCSS));
});
gulp.task('css:main', ['less:main'], function() {
return gulp.src(cfg.paths.css.main.src)
.pipe(concat(cfg.paths.css.main.name))
.pipe(gulp.dest(cfg.paths.staticCSS));
});
gulp.task('css:main:min', ['css:main'], function() {
return gulp.src(cfg.paths.staticCSS + cfg.paths.css.main.name)
.pipe(minifyCss())
.pipe(rename(cfg.paths.css.main.name_min))
.pipe(gulp.dest(cfg.paths.staticCSS));
});
// JS
// - concat
gulp.task('js:boot', function() {
return gulp.src(cfg.paths.js.boot.src)
.pipe(concat(cfg.paths.js.boot.name))
.pipe(gulp.dest(cfg.paths.staticJS));
});
gulp.task('js:openpgp', function() {
return gulp.src(cfg.paths.js.openpgp.src)
.pipe(rename(cfg.paths.js.openpgp.name))
.pipe(gulp.dest(cfg.paths.staticJS));
});
gulp.task('js:libs', function() {
return gulp.src(cfg.paths.js.libs.src)
.pipe(concat(cfg.paths.js.libs.name, {separator: '\n\n'}))
.pipe(gulp.dest(cfg.paths.staticJS));
});
gulp.task('js:app', function() {
return gulp.src(cfg.paths.js.app.src)
.pipe(concat(cfg.paths.js.app.name))
.pipe(header('/*! RainLoop Webmail Main Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */\n' +
'(function (window, $, ko, crossroads, hasher, moment, Jua, _, ifvisible, key) {\n'))
.pipe(footer('\n\n}(window, jQuery, ko, crossroads, hasher, moment, Jua, _, ifvisible, key));'))
.pipe(gulp.dest(cfg.paths.staticJS));
});
gulp.task('js:admin', function() {
return gulp.src(cfg.paths.js.admin.src)
.pipe(concat(cfg.paths.js.admin.name))
.pipe(header('/*! RainLoop Webmail Admin Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */\n' +
'(function (window, $, ko, crossroads, hasher, _) {\n'))
.pipe(footer('\n\n}(window, jQuery, ko, crossroads, hasher, _));'))
.pipe(gulp.dest(cfg.paths.staticJS));
});
// - lint
gulp.task('js:app:lint', ['js:app'], function() {
return gulp.src(cfg.paths.staticJS + cfg.paths.js.app.name)
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('jshint-summary', cfg.summary))
.pipe(jshint.reporter('fail'));
});
gulp.task('js:admin:lint', ['js:admin'], function() {
return gulp.src(cfg.paths.staticJS + cfg.paths.js.admin.name)
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('jshint-summary', cfg.summary))
.pipe(jshint.reporter('fail'));
});
// - min
gulp.task('js:app:min', ['js:app:lint'], function() {
return gulp.src(cfg.paths.staticJS + cfg.paths.js.app.name)
.pipe(rename(cfg.paths.js.app.name_min))
.pipe(uglify(cfg.uglify))
.pipe(gulp.dest(cfg.paths.staticJS))
.on('error', gutil.log);
});
gulp.task('js:admin:min', ['js:admin:lint'], function() {
return gulp.src(cfg.paths.staticJS + cfg.paths.js.admin.name)
.pipe(rename(cfg.paths.js.admin.name_min))
.pipe(uglify(cfg.uglify))
.pipe(gulp.dest(cfg.paths.staticJS))
.on('error', gutil.log);
});
// OTHER
regOtherMinTask('other:cookie', 'vendors/jquery-cookie/', 'jquery.cookie.js', 'jquery.cookie-1.4.0.min.js',
'/*! jquery.cookie v1.4.0 (c) 2013 Klaus Hartl | MIT */\n');
regOtherMinTask('other:ifvisible', 'vendors/ifvisible/', 'src/ifvisible.js', 'ifvisible.min.js',
'/*!ifvisible.js v1.0.0 (c) 2013 Serkan Yersen | MIT */\n');
regOtherMinTask('other:wakeup', 'vendors/jquery-wakeup/', 'jquery.wakeup.js', 'jquery.wakeup.min.js',
'/*! jQuery WakeUp plugin (c) 2013 Paul Okopny <paul.okopny@gmail.com> | MIT */\n');
regOtherMinTask('other:mousewheel', 'vendors/jquery-mousewheel/', 'jquery.mousewheel.js', 'jquery.mousewheel-3.1.4.min.js',
'/*! jquery.mousewheel v3.1.4 (c) 2013 Brandon Aaron (http://brandon.aaron.sh) | MIT */\n');
regOtherMinTask('other:nano', 'vendors/jquery-nanoscroller/', 'jquery.nanoscroller.js', 'jquery.nanoscroller-0.7.min.js',
'/*! nanoScrollerJS v0.7 (c) 2013 James Florentino; modified by RainLoop Team | MIT */\n');
regOtherMinTask('other:inputosaurus', 'vendors/inputosaurus/', 'inputosaurus.js', 'inputosaurus.min.js',
'/*! Inputosaurus Text v0.1.6 (c) 2013 Dan Kielp <dan@sproutsocial.com>; modified by RainLoop Team | MIT */\n');
regOtherMinTask('other:pace', 'vendors/simple-pace/', 'simple-pace.js', 'simple-pace-1.0.min.js',
'/*! RainLoop Simple Pace v1.0 (c) 2013 RainLoop Team; Licensed under MIT */\n');
regOtherMinTask('other:rl', 'vendors/rl/', 'rl.js', 'rl-1.0.min.js',
'/*! RainLoop Top Driver v1.0 (c) 2013 RainLoop Team; Licensed under MIT */\n');
gulp.task('package-inc-release', function() {
fs.writeFileSync('package.json',
fs.readFileSync('package.json', 'utf8').replace(/"release":\s?"[\d]+",/, '"release": "' +
(1 + parseInt(pkg.release, 10)) + '",'));
});
// BUILD (RainLoop)
gulp.task('rainloop:copy', function() {
var
versionFull = pkg.version + '.' + parseInt(pkg.release, 10),
dist = cfg.releasesPath + '/webmail/' + versionFull + '/src/'
;
fs.mkdirSync(dist, '0777', true);
fs.mkdirSync(dist + 'data');
fs.mkdirSync(dist + 'rainloop/v/' + versionFull, '0777', true);
return gulp.src('rainloop/v/' + cfg.devVersion + '/**/*', {base: 'rainloop/v/' + cfg.devVersion})
.pipe(gulp.dest(dist + 'rainloop/v/' + versionFull));
});
gulp.task('rainloop:setup', ['rainloop:copy'], function() {
var
versionFull = pkg.version + '.' + parseInt(pkg.release, 10),
dist = cfg.releasesPath + '/webmail/' + versionFull + '/src/'
;
fs.writeFileSync(dist + 'data/EMPTY', versionFull);
fs.writeFileSync(dist + 'index.php',
fs.readFileSync('index.php', 'utf8').replace('\'APP_VERSION\', \'0.0.0\'', '\'APP_VERSION\', \'' + versionFull + '\''));
fs.writeFileSync(dist + 'rainloop/v/' + versionFull + '/index.php.root', fs.readFileSync(dist + 'index.php'));
fs.unlinkSync(dist + 'rainloop/v/' + versionFull + '/static/css/less.css');
cfg.destPath = cfg.releasesPath + '/webmail/' + versionFull + '/';
cfg.cleanPath = dist;
cfg.zipSrcPath = dist;
cfg.zipFile = 'rainloop-' + versionFull + '.zip';
cfg.md5File = cfg.zipFile;
});
gulp.task('rainloop:zip', ['rainloop:copy', 'rainloop:setup'], function() {
return (cfg.destPath && cfg.zipSrcPath && cfg.zipFile) ?
zipDir(cfg.zipSrcPath, cfg.destPath, cfg.zipFile) : false;
});
gulp.task('rainloop:md5', ['rainloop:zip'], function() {
return (cfg.destPath && cfg.md5File) ?
renameFileWothMd5Hash(cfg.destPath + cfg.md5File) : false;
});
gulp.task('rainloop:clean', ['rainloop:copy', 'rainloop:setup'], function() {
return (cfg.cleanPath) ? cleanDir(cfg.cleanPath) : false;
});
// BUILD (OwnCloud)
gulp.task('rainloop:owncloud:copy', function() {
var
versionFull = pkg.ownCloudPackageVersion,
dist = cfg.releasesPath + '/owncloud/' + versionFull + '/src/'
;
fs.mkdirSync(dist, '0777', true);
fs.mkdirSync(dist + 'rainloop', '0777', true);
return gulp.src('build/owncloud/rainloop-app/**/*', {base: 'build/owncloud/rainloop-app/'})
.pipe(gulp.dest(dist + 'rainloop'));
});
gulp.task('rainloop:owncloud:setup', ['rainloop:owncloud:copy'], function() {
var
versionFull = pkg.ownCloudPackageVersion,
dist = cfg.releasesPath + '/owncloud/' + versionFull + '/src/'
;
fs.writeFileSync(dist + 'rainloop/appinfo/info.xml',
fs.readFileSync(dist + 'rainloop/appinfo/info.xml', 'utf8').replace('<version>0.0</version>', '<version>' + versionFull + '</version>'));
fs.writeFileSync(dist + 'rainloop/appinfo/version', versionFull);
fs.writeFileSync(dist + 'rainloop/VERSION', versionFull);
cfg.destPath = cfg.releasesPath + '/owncloud/' + versionFull + '/';
cfg.cleanPath = dist;
cfg.zipSrcPath = dist;
cfg.zipFile = 'rainloop-owncloud-app-' + versionFull + '.zip';
cfg.md5File = cfg.zipFile;
});
gulp.task('rainloop:owncloud:zip', ['rainloop:owncloud:copy', 'rainloop:owncloud:setup'], function() {
return (cfg.destPath && cfg.zipSrcPath && cfg.zipFile) ?
zipDir(cfg.zipSrcPath, cfg.destPath, cfg.zipFile) : false;
});
gulp.task('rainloop:owncloud:md5', ['rainloop:owncloud:zip'], function() {
return (cfg.destPath && cfg.md5File) ?
renameFileWothMd5Hash(cfg.destPath + cfg.md5File) : false;
});
gulp.task('rainloop:owncloud:clean', ['rainloop:owncloud:copy', 'rainloop:owncloud:setup'], function() {
return (cfg.cleanPath) ? cleanDir(cfg.cleanPath) : false;
});
// MAIN
gulp.task('default', ['js:boot', 'js:libs', 'js:app:min', 'js:admin:min', 'css:main:min']);
gulp.task('fast', ['js:app', 'js:admin', 'css:main']);
gulp.task('rainloop', ['rainloop:copy', 'rainloop:setup', 'rainloop:zip', 'rainloop:md5', 'rainloop:clean']);
gulp.task('rainloop+', ['rainloop', 'package-inc-release']);
gulp.task('owncloud', ['rainloop:owncloud:copy', 'rainloop:owncloud:setup', 'rainloop:owncloud:zip', 'rainloop:owncloud:md5', 'rainloop:owncloud:clean']);
//WATCH
gulp.task('watch', function() {
gulp.watch(cfg.paths.js.app.src, {interval: 1000}, ['js:app']);
gulp.watch(cfg.paths.js.admin.src, {interval: 1000}, ['js:admin']);
gulp.watch(cfg.paths.less.main.watch, {interval: 1000}, ['css:main']);
});
// aliases
gulp.task('w', ['watch']);
gulp.task('f', ['fast']);
gulp.task('rl', ['rainloop']);
gulp.task('rl+', ['rainloop+']);
gulp.task('build', ['rainloop']);
gulp.task('build+', ['rainloop+']);
gulp.task('b', ['rainloop']);
gulp.task('b+', ['rainloop+']);
gulp.task('own', ['owncloud']);

View file

@ -2,10 +2,10 @@
"name": "RainLoop",
"title": "RainLoop Webmail",
"version": "1.6.7",
"release": "127",
"release": "131",
"description": "Simple, modern & fast web-based email client",
"homepage": "http://rainloop.net",
"main": "Gruntfile.js",
"main": "gulpfile.js",
"author": {
"name": "RainLoop Team",
"email": "support@rainloop.net",
@ -36,20 +36,28 @@
"plugins"
],
"readmeFilename": "README.md",
"ownCloudPackageVersion": "1.3",
"ownCloudPackageVersion": "1.4",
"engines": {
"node": ">= 0.8.0"
"node": ">= 0.10.0"
},
"devDependencies": {
"wrench": "*",
"grunt": "~0.4.1",
"grunt-css": "*",
"grunt-md5": "*",
"grunt-contrib-jshint": "*",
"grunt-contrib-compress": "*",
"grunt-contrib-concat": "*",
"grunt-contrib-uglify": "*",
"grunt-contrib-watch": "*",
"grunt-contrib-less": "~0.5.0"
"crypto": "*",
"node-fs": "*",
"jshint-summary": "*",
"gulp": "*",
"gulp-util": "*",
"gulp-uglify": "*",
"gulp-clean": "*",
"gulp-jshint": "*",
"gulp-less": "*",
"gulp-zip": "*",
"gulp-rename": "*",
"gulp-header": "*",
"gulp-footer": "*",
"gulp-minify-css": "*",
"gulp-concat-util": "*"
}
}
}

View file

@ -69,7 +69,7 @@ class Message
public function DoesNotAddDefaultXMailer()
{
$this->bAddDefaultXMailer = false;
return $this;
}
@ -371,7 +371,7 @@ class Message
return $this;
}
/**
* @param \MailSo\Mime\EmailCollection $oEmails
*
@ -504,7 +504,12 @@ class Message
{
if (0 === strlen($sHostName))
{
$sHostName = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'mailso';
$sHostName = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : '';
}
if (empty($sHostName))
{
$sHostName = 'localhost';
}
return '<'.md5(rand(100000, 999999).time().$sHostName).'@'.$sHostName.'>';
@ -557,7 +562,7 @@ class Message
Header::NewInstance(\MailSo\Mime\Enumerations\Header::CONTENT_ID, $sCID)
);
}
if (0 < strlen($sContentLocation))
{
$oAttachmentPart->Headers->Add(

View file

@ -11,8 +11,8 @@
<div class="btn-group">&nbsp;</div>
<div class="btn-group dropdown colored-toggle" data-bind="registrateBootstrapDropdown: true, openDropdownTrigger: moveDropdownTrigger">
<a id="move-dropdown-id" href="#" tabindex="-1" class="btn btn-dark-disabled-border dropdown-toggle buttonMove" data-toggle="dropdown" data-tooltip-placement="bottom" data-bind="command: moveCommand, tooltip: 'MESSAGE_LIST/BUTTON_MOVE_TO'">
<i class="icon-copy visible-on-ctrl"></i>
<i class="icon-folder hidden-on-ctrl"></i>
<i class="icon-copy visible-on-ctrl-btn"></i>
<i class="icon-folder hidden-on-ctrl-btn"></i>
&nbsp;&nbsp;
<span class="caret"></span>
</a>

View file

@ -637,7 +637,7 @@
border-radius: 8px;
}
/*! normalize.css 2012-03-11T12:53 UTC - http://github.com/necolas/normalize.css */
/* =============================================================================
@ -1142,7 +1142,7 @@ table {
border-collapse: collapse;
border-spacing: 0;
}
@charset "UTF-8";
@font-face {
@ -1513,7 +1513,7 @@ table {
.icon-resize-out:before {
content: "\e06d";
}
/** initial setup **/
.nano {
/*
@ -1630,7 +1630,7 @@ table {
.nano > .pane2:hover > .slider2, .nano > .pane2.active > .slider2 {
background-color: rgba(0, 0, 0, 0.4);
}
/* Magnific Popup CSS */
.mfp-bg {
top: 0;
@ -1995,7 +1995,7 @@ img.mfp-img {
right: 0;
padding-top: 0; }
/* overlay at start */
.mfp-fade.mfp-bg {
@ -2041,7 +2041,7 @@ img.mfp-img {
-moz-transform: translateX(50px);
transform: translateX(50px);
}
.simple-pace {
-webkit-pointer-events: none;
pointer-events: none;
@ -2112,7 +2112,7 @@ img.mfp-img {
@keyframes simple-pace-stripe-animation {
0% { transform: none; transform: none; }
100% { transform: translate(-32px, 0); transform: translate(-32px, 0); }
}
}
.inputosaurus-container {
background-color:#fff;
border:1px solid #bcbec0;
@ -2180,7 +2180,7 @@ img.mfp-img {
box-shadow:none;
}
.inputosaurus-input-hidden { display:none; }
.flag-wrapper {
width: 24px;
height: 16px;
@ -2224,7 +2224,7 @@ img.mfp-img {
.flag.flag-pt-br {background-position: -192px -11px}
.flag.flag-cn, .flag.flag-zh-tw, .flag.flag-zh-cn, .flag.flag-zh-hk {background-position: -208px -22px}
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
.clearfix {
*zoom: 1;
@ -2404,155 +2404,155 @@ a:hover {
-moz-box-sizing: border-box;
box-sizing: border-box;
float: left;
margin-left: 2.127659574468085%;
*margin-left: 2.074468085106383%;
margin-left: 2.12765957%;
*margin-left: 2.07446809%;
}
.row-fluid [class*="span"]:first-child {
margin-left: 0;
}
.row-fluid .span12 {
width: 100%;
*width: 99.94680851063829%;
*width: 99.94680851%;
}
.row-fluid .span11 {
width: 91.48936170212765%;
*width: 91.43617021276594%;
width: 91.4893617%;
*width: 91.43617021%;
}
.row-fluid .span10 {
width: 82.97872340425532%;
*width: 82.92553191489361%;
width: 82.9787234%;
*width: 82.92553191%;
}
.row-fluid .span9 {
width: 74.46808510638297%;
*width: 74.41489361702126%;
width: 74.46808511%;
*width: 74.41489362%;
}
.row-fluid .span8 {
width: 65.95744680851064%;
*width: 65.90425531914893%;
width: 65.95744681%;
*width: 65.90425532%;
}
.row-fluid .span7 {
width: 57.44680851063829%;
*width: 57.39361702127659%;
width: 57.44680851%;
*width: 57.39361702%;
}
.row-fluid .span6 {
width: 48.93617021276595%;
*width: 48.88297872340425%;
width: 48.93617021%;
*width: 48.88297872%;
}
.row-fluid .span5 {
width: 40.42553191489362%;
*width: 40.37234042553192%;
width: 40.42553191%;
*width: 40.37234043%;
}
.row-fluid .span4 {
width: 31.914893617021278%;
*width: 31.861702127659576%;
width: 31.91489362%;
*width: 31.86170213%;
}
.row-fluid .span3 {
width: 23.404255319148934%;
*width: 23.351063829787233%;
width: 23.40425532%;
*width: 23.35106383%;
}
.row-fluid .span2 {
width: 14.893617021276595%;
*width: 14.840425531914894%;
width: 14.89361702%;
*width: 14.84042553%;
}
.row-fluid .span1 {
width: 6.382978723404255%;
*width: 6.329787234042553%;
width: 6.38297872%;
*width: 6.32978723%;
}
.row-fluid .offset12 {
margin-left: 104.25531914893617%;
*margin-left: 104.14893617021275%;
margin-left: 104.25531915%;
*margin-left: 104.14893617%;
}
.row-fluid .offset12:first-child {
margin-left: 102.12765957446808%;
*margin-left: 102.02127659574467%;
margin-left: 102.12765957%;
*margin-left: 102.0212766%;
}
.row-fluid .offset11 {
margin-left: 95.74468085106382%;
*margin-left: 95.6382978723404%;
margin-left: 95.74468085%;
*margin-left: 95.63829787%;
}
.row-fluid .offset11:first-child {
margin-left: 93.61702127659574%;
*margin-left: 93.51063829787232%;
margin-left: 93.61702128%;
*margin-left: 93.5106383%;
}
.row-fluid .offset10 {
margin-left: 87.23404255319149%;
*margin-left: 87.12765957446807%;
margin-left: 87.23404255%;
*margin-left: 87.12765957%;
}
.row-fluid .offset10:first-child {
margin-left: 85.1063829787234%;
*margin-left: 84.99999999999999%;
margin-left: 85.10638298%;
*margin-left: 85%;
}
.row-fluid .offset9 {
margin-left: 78.72340425531914%;
*margin-left: 78.61702127659572%;
margin-left: 78.72340426%;
*margin-left: 78.61702128%;
}
.row-fluid .offset9:first-child {
margin-left: 76.59574468085106%;
*margin-left: 76.48936170212764%;
margin-left: 76.59574468%;
*margin-left: 76.4893617%;
}
.row-fluid .offset8 {
margin-left: 70.2127659574468%;
*margin-left: 70.10638297872339%;
margin-left: 70.21276596%;
*margin-left: 70.10638298%;
}
.row-fluid .offset8:first-child {
margin-left: 68.08510638297872%;
*margin-left: 67.9787234042553%;
margin-left: 68.08510638%;
*margin-left: 67.9787234%;
}
.row-fluid .offset7 {
margin-left: 61.70212765957446%;
*margin-left: 61.59574468085106%;
margin-left: 61.70212766%;
*margin-left: 61.59574468%;
}
.row-fluid .offset7:first-child {
margin-left: 59.574468085106375%;
*margin-left: 59.46808510638297%;
margin-left: 59.57446809%;
*margin-left: 59.46808511%;
}
.row-fluid .offset6 {
margin-left: 53.191489361702125%;
*margin-left: 53.085106382978715%;
margin-left: 53.19148936%;
*margin-left: 53.08510638%;
}
.row-fluid .offset6:first-child {
margin-left: 51.063829787234035%;
*margin-left: 50.95744680851063%;
margin-left: 51.06382979%;
*margin-left: 50.95744681%;
}
.row-fluid .offset5 {
margin-left: 44.68085106382979%;
*margin-left: 44.57446808510638%;
margin-left: 44.68085106%;
*margin-left: 44.57446809%;
}
.row-fluid .offset5:first-child {
margin-left: 42.5531914893617%;
*margin-left: 42.4468085106383%;
margin-left: 42.55319149%;
*margin-left: 42.44680851%;
}
.row-fluid .offset4 {
margin-left: 36.170212765957444%;
*margin-left: 36.06382978723405%;
margin-left: 36.17021277%;
*margin-left: 36.06382979%;
}
.row-fluid .offset4:first-child {
margin-left: 34.04255319148936%;
*margin-left: 33.93617021276596%;
margin-left: 34.04255319%;
*margin-left: 33.93617021%;
}
.row-fluid .offset3 {
margin-left: 27.659574468085104%;
*margin-left: 27.5531914893617%;
margin-left: 27.65957447%;
*margin-left: 27.55319149%;
}
.row-fluid .offset3:first-child {
margin-left: 25.53191489361702%;
*margin-left: 25.425531914893618%;
margin-left: 25.53191489%;
*margin-left: 25.42553191%;
}
.row-fluid .offset2 {
margin-left: 19.148936170212764%;
*margin-left: 19.04255319148936%;
margin-left: 19.14893617%;
*margin-left: 19.04255319%;
}
.row-fluid .offset2:first-child {
margin-left: 17.02127659574468%;
*margin-left: 16.914893617021278%;
margin-left: 17.0212766%;
*margin-left: 16.91489362%;
}
.row-fluid .offset1 {
margin-left: 10.638297872340425%;
*margin-left: 10.53191489361702%;
margin-left: 10.63829787%;
*margin-left: 10.53191489%;
}
.row-fluid .offset1:first-child {
margin-left: 8.51063829787234%;
*margin-left: 8.404255319148938%;
margin-left: 8.5106383%;
*margin-left: 8.40425532%;
}
[class*="span"].hide,
.row-fluid [class*="span"].hide {
@ -2953,7 +2953,6 @@ input[type="color"]:focus,
outline: 0;
outline: thin dotted \9;
/* IE6-9 */
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
@ -2963,10 +2962,8 @@ input[type="checkbox"] {
margin: 4px 0 0;
*margin-top: 0;
/* IE7 */
margin-top: 1px \9;
/* IE8-9 */
line-height: normal;
cursor: pointer;
}
@ -2983,10 +2980,8 @@ select,
input[type="file"] {
height: 30px;
/* In IE7, the height of the select element cannot be changed by height, only font-size */
*margin-top: 4px;
/* For IE7, add top margin to align select with labels */
line-height: 30px;
}
select {
@ -3110,40 +3105,64 @@ textarea,
.controls-row [class*="span"] + [class*="span"] {
margin-left: 20px;
}
input.span12, textarea.span12, .uneditable-input.span12 {
input.span12,
textarea.span12,
.uneditable-input.span12 {
width: 926px;
}
input.span11, textarea.span11, .uneditable-input.span11 {
input.span11,
textarea.span11,
.uneditable-input.span11 {
width: 846px;
}
input.span10, textarea.span10, .uneditable-input.span10 {
input.span10,
textarea.span10,
.uneditable-input.span10 {
width: 766px;
}
input.span9, textarea.span9, .uneditable-input.span9 {
input.span9,
textarea.span9,
.uneditable-input.span9 {
width: 686px;
}
input.span8, textarea.span8, .uneditable-input.span8 {
input.span8,
textarea.span8,
.uneditable-input.span8 {
width: 606px;
}
input.span7, textarea.span7, .uneditable-input.span7 {
input.span7,
textarea.span7,
.uneditable-input.span7 {
width: 526px;
}
input.span6, textarea.span6, .uneditable-input.span6 {
input.span6,
textarea.span6,
.uneditable-input.span6 {
width: 446px;
}
input.span5, textarea.span5, .uneditable-input.span5 {
input.span5,
textarea.span5,
.uneditable-input.span5 {
width: 366px;
}
input.span4, textarea.span4, .uneditable-input.span4 {
input.span4,
textarea.span4,
.uneditable-input.span4 {
width: 286px;
}
input.span3, textarea.span3, .uneditable-input.span3 {
input.span3,
textarea.span3,
.uneditable-input.span3 {
width: 206px;
}
input.span2, textarea.span2, .uneditable-input.span2 {
input.span2,
textarea.span2,
.uneditable-input.span2 {
width: 126px;
}
input.span1, textarea.span1, .uneditable-input.span1 {
input.span1,
textarea.span1,
.uneditable-input.span1 {
width: 46px;
}
.controls-row {
@ -3315,7 +3334,6 @@ select:focus:required:invalid:focus {
display: inline-block;
*display: inline;
/* IE7 inline-block hack */
*zoom: 1;
vertical-align: middle;
padding-left: 5px;
@ -3429,7 +3447,6 @@ input.search-query {
padding-left: 14px;
padding-left: 4px \9;
/* IE7-8 doesn't have border-radius, so don't indent the padding */
margin-bottom: 0;
-webkit-border-radius: 15px;
-moz-border-radius: 15px;
@ -3486,7 +3503,6 @@ input.search-query {
display: inline-block;
*display: inline;
/* IE7 inline-block hack */
*zoom: 1;
margin-bottom: 0;
vertical-align: middle;
@ -4072,7 +4088,6 @@ button.close {
display: inline-block;
*display: inline;
/* IE7 inline-block hack */
*zoom: 1;
padding: 4px 14px;
margin-bottom: 0;
@ -4096,7 +4111,6 @@ button.close {
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #e6e6e6;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
border: 1px solid #bbbbbb;
*border: 0;
@ -4131,7 +4145,6 @@ button.close {
background-color: #e6e6e6;
*background-color: #d9d9d9;
/* Buttons in IE7 don't get borders, so darken on hover */
background-position: 0 -15px;
-webkit-transition: background-position 0.1s linear;
-moz-transition: background-position 0.1s linear;
@ -4227,7 +4240,6 @@ button.close {
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #0044cc;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-primary:hover,
@ -4258,7 +4270,6 @@ button.close {
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #f89406;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-warning:hover,
@ -4289,7 +4300,6 @@ button.close {
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #bd362f;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-danger:hover,
@ -4320,7 +4330,6 @@ button.close {
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #51a351;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-success:hover,
@ -4351,7 +4360,6 @@ button.close {
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #2f96b4;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-info:hover,
@ -4382,7 +4390,6 @@ button.close {
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #222222;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-inverse:hover,
@ -4465,7 +4472,6 @@ input[type="submit"].btn.btn-mini {
display: inline-block;
*display: inline;
/* IE7 inline-block hack */
*zoom: 1;
}
.btn-toolbar .btn + .btn,
@ -4624,7 +4630,6 @@ input[type="submit"].btn.btn-mini {
display: inline-block;
*display: inline;
/* IE7 inline-block hack */
*zoom: 1;
}
.btn-group-vertical .btn {
@ -5267,7 +5272,6 @@ input[type="submit"].btn.btn-mini {
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #e5e5e5;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
@ -5484,7 +5488,6 @@ input[type="submit"].btn.btn-mini {
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #040404;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.navbar-inverse .btn-navbar:hover,
@ -5513,7 +5516,6 @@ input[type="submit"].btn.btn-mini {
display: inline-block;
*display: inline;
/* IE7 inline-block hack */
*zoom: 1;
text-shadow: 0 1px 0 #ffffff;
}
@ -5566,7 +5568,6 @@ input[type="submit"].btn.btn-mini {
border: 1px solid rgba(0, 0, 0, 0.3);
*border: 1px solid #999;
/* IE6-7 */
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
border-radius: 6px;
@ -6600,7 +6601,6 @@ html.no-rgba .modal {
padding: 10px;
padding-right: 0;
/*font-family: arial, sans-serif;*/
font-family: Monaco, Menlo, Consolas, 'Courier New', monospace;
font-size: 13px;
line-height: 16px;
@ -6864,7 +6864,6 @@ html.cssanimations .e-spinner .e-bounce {
-webkit-animation: bouncedelay 1.4s infinite ease-in-out;
animation: bouncedelay 1.4s infinite ease-in-out;
/* Prevent first frame from flickering when animation starts */
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
@ -7158,18 +7157,25 @@ html.rl-no-preview-pane #rl-sub-right {
html.rl-no-preview-pane #rl-right .ui-resizable-handle {
display: none !important;
}
.visible-on-ctrl {
.visible-on-ctrl,
.visible-on-ctrl-btn {
display: none;
}
.hidden-on-ctrl {
.hidden-on-ctrl-btn {
display: inline-block;
}
html.rl-ctrl-key-pressed .visible-on-ctrl {
display: inline-block;
}
html.rl-ctrl-key-pressed .btn-group.open .visible-on-ctrl-btn {
display: inline-block;
}
html.rl-ctrl-key-pressed .hidden-on-ctrl {
display: none;
}
html.rl-ctrl-key-pressed .btn-group.open .hidden-on-ctrl-btn {
display: none;
}
#rl-loading,
#rl-loading-error {
position: absolute;
@ -7765,7 +7771,6 @@ html.rl-no-preview-pane .messageList.message-selected {
/* &:nth-child(even) {
background-color: #f3f3f3;
}*/
}
.messageList .b-content .messageListItem .delimiter {
position: relative;
@ -8465,7 +8470,6 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
.button-delete {
margin-left: 8px;
}*/
}
.b-contacts-content.modal .b-header-toolbar .close {
color: #fff;
@ -8869,7 +8873,6 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
.b-compose .b-header {
padding: 10px;
/*border-bottom: 1px solid #333;*/
background-color: #eee;
color: #333;
}
@ -9461,19 +9464,6 @@ html.rl-message-fullscreen .messageView .b-content .buttonFull {
opacity: 0.5;
filter: alpha(opacity=50);
}
/*.folderPaddingHelper(@i) {
(~".folder-padding.deep-@{i}") {
width: 15px * @i + 10px;
}
}*/
.b-settings-folders {
/* .folderPaddingHelper(1);
.folderPaddingHelper(2);
.folderPaddingHelper(3);
.folderPaddingHelper(4);
.folderPaddingHelper(5);*/
}
.b-settings-folders.ignore-folder-subscribe .subscribe-folder,
.b-settings-folders.ignore-folder-subscribe .unsubscribe-folder {
display: none;
@ -9732,7 +9722,6 @@ html.rl-started-trigger.no-mobile #rl-content {
.transition(margin-left 0.2s linear);
}
}*/
}
.rl-anim.csstransitions.no-mobile #rl-left {
-webkit-transition: width 0.3s ease-out;

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
/*! RainLoop Webmail Admin Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (window, $, ko, crossroads, hasher, _) {
/*! RainLoop Webmail Admin Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (window, $, ko, crossroads, hasher, _) {
'use strict';
@ -23,7 +23,7 @@ var
* @type {Object.<Function>}
*/
Utils = {},
/**
* @type {Object.<Function>}
*/
@ -69,7 +69,7 @@ var
I18n = window['rainloopI18N'] || {},
$html = $('html'),
// $body = $('body'),
$window = $(window),
@ -77,14 +77,19 @@ var
$document = $(window.document),
NotificationClass = window.Notification && window.Notification.requestPermission ? window.Notification : null
;
;
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/*jshint onevar: false*/
/**
* @type {?AdminApp}
*/
var RL = null;
/*jshint onevar: true*/
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @type {?}
*/
@ -238,7 +243,9 @@ if (Globals.bAllowPdfPreview && navigator && navigator.mimeTypes)
return oType && 'application/pdf' === oType.type;
});
}
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
Consts.Defaults = {};
Consts.Values = {};
Consts.DataImages = {};
@ -356,7 +363,9 @@ Consts.DataImages.UserDotPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA
* @type {string}
*/
Consts.DataImages.TranspPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=';
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @enum {string}
*/
@ -774,7 +783,9 @@ Enums.Notification = {
'UnknownNotification': 999,
'UnknownError': 999
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
Utils.trim = $.trim;
Utils.inArray = $.inArray;
Utils.isArray = _.isArray;
@ -2524,7 +2535,8 @@ Utils.detectDropdownVisibility = _.debounce(function () {
return oItem.hasClass('open');
}));
}, 50);
/*jslint bitwise: true*/
// Base64 encode / decode
// http://www.webtoolkit.info/
@ -2687,7 +2699,9 @@ Base64 = {
}
};
/*jslint bitwise: false*/
/*jslint bitwise: false*/
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
ko.bindingHandlers.tooltip = {
'init': function (oElement, fValueAccessor) {
if (!Globals.bMobileDevice)
@ -3504,7 +3518,9 @@ ko.observable.fn.validateFunc = function (fFunc)
return this;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -3826,7 +3842,9 @@ LinkBuilder.prototype.socialFacebook = function ()
{
return this.sServer + 'SocialFacebook' + ('' !== this.sSpecSuffix ? '/' + this.sSpecSuffix + '/' : '');
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @type {Object}
*/
@ -3920,7 +3938,9 @@ Plugins.settingsGet = function (sPluginSection, sName)
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -3994,7 +4014,9 @@ CookieDriver.prototype.get = function (sKey)
return mResult;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -4065,7 +4087,9 @@ LocalStorageDriver.prototype.get = function (sKey)
return mResult;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -4108,7 +4132,9 @@ LocalStorage.prototype.get = function (iKey)
{
return this.oDriver ? this.oDriver.get('p' + iKey) : null;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -4121,7 +4147,9 @@ KnoinAbstractBoot.prototype.bootstart = function ()
{
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {string=} sPosition = ''
* @param {string=} sTemplate = ''
@ -4214,7 +4242,9 @@ KnoinAbstractViewModel.prototype.registerPopupKeyDown = function ()
return true;
});
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {string} sScreenName
* @param {?=} aViewModels = []
@ -4290,7 +4320,9 @@ KnoinAbstractScreen.prototype.__start = function ()
this.oCross = oRoute;
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -4695,7 +4727,9 @@ Knoin.prototype.bootstart = function ()
};
kn = new Knoin();
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {string=} sEmail
* @param {string=} sName
@ -5059,7 +5093,9 @@ EmailModel.prototype.inputoTagLine = function ()
{
return 0 < this.name.length ? this.name + ' (' + this.email + ')' : this.email;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -5103,7 +5139,9 @@ ContactTagModel.prototype.toLine = function (bEncodeHtml)
return (Utils.isUnd(bEncodeHtml) ? false : !!bEncodeHtml) ?
Utils.encodeHtml(this.name()) : this.name();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5398,7 +5436,9 @@ PopupsDomainViewModel.prototype.clearForm = function ()
this.smtpAuth(true);
this.whiteList('');
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5535,7 +5575,9 @@ PopupsPluginViewModel.prototype.onBuild = function ()
}
}, this));
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5651,7 +5693,9 @@ PopupsActivateViewModel.prototype.validateSubscriptionKey = function ()
{
var sValue = this.key();
return '' === sValue || !!/^RL[\d]+-[A-Z0-9\-]+Z$/.test(Utils.trim(sValue));
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5711,7 +5755,9 @@ PopupsLanguagesViewModel.prototype.changeLanguage = function (sLang)
RL.data().mainLanguage(sLang);
this.cancelCommand();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5817,7 +5863,9 @@ PopupsAskViewModel.prototype.onBuild = function ()
}, this));
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5904,7 +5952,9 @@ AdminLoginViewModel.prototype.onHide = function ()
{
this.loginFocus(false);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {?} oScreen
*
@ -5928,7 +5978,9 @@ AdminMenuViewModel.prototype.link = function (sRoute)
{
return '#/' + sRoute;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -5952,7 +6004,9 @@ AdminPaneViewModel.prototype.logoutClick = function ()
RL.remote().adminLogout(function () {
RL.loginAndLogoutReload();
});
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6052,7 +6106,9 @@ AdminGeneral.prototype.selectLanguage = function ()
{
kn.showScreenPopup(PopupsLanguagesViewModel);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6104,7 +6160,9 @@ AdminLogin.prototype.onBuild = function ()
}, 50);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6173,7 +6231,9 @@ AdminBranding.prototype.onBuild = function ()
}, 50);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6393,7 +6453,9 @@ AdminContacts.prototype.onBuild = function ()
}, 50);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6482,7 +6544,9 @@ AdminDomains.prototype.onDomainListChangeRequest = function ()
{
RL.reloadDomainList();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6587,7 +6651,9 @@ AdminSecurity.prototype.phpInfoLink = function ()
{
return RL.link().phpInfo();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6703,7 +6769,9 @@ AdminSocial.prototype.onBuild = function ()
}, 50);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6800,7 +6868,9 @@ AdminPlugins.prototype.onPluginDisableRequest = function (sResult, oData)
RL.reloadPluginList();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6898,7 +6968,9 @@ AdminPackages.prototype.installPackage = function (oPackage)
RL.remote().packageInstall(this.requestHelper(oPackage, true), oPackage);
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6953,7 +7025,9 @@ AdminLicensing.prototype.licenseExpiredMomentValue = function ()
;
return iTime && 1898625600 === iTime ? 'Never' : (oDate.format('LL') + ' (' + oDate.from(moment()) + ')');
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -7007,7 +7081,7 @@ function AdminAbout()
}
return sType;
}, this);
}
@ -7028,7 +7102,9 @@ AdminAbout.prototype.updateCoreData = function ()
RL.updateCoreData();
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -7159,7 +7235,9 @@ AbstractData.prototype.populateDataOnStart = function()
this.contactsIsAllowed(!!RL.settingsGet('ContactsIsAllowed'));
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractData
@ -7210,7 +7288,9 @@ _.extend(AdminDataStorage.prototype, AbstractData.prototype);
AdminDataStorage.prototype.populateDataOnStart = function()
{
AbstractData.prototype.populateDataOnStart.call(this);
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -7484,7 +7564,9 @@ AbstractAjaxRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
'Version': sVersion
});
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractAjaxRemoteStorage
@ -7745,7 +7827,9 @@ AdminAjaxRemoteStorage.prototype.adminPing = function (fCallback)
{
this.defaultRequest(fCallback, 'AdminPing');
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -7829,7 +7913,9 @@ AbstractCacheStorage.prototype.setEmailsPicsHashesData = function (oData)
{
this.oEmailsPicsHashes = oData;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractCacheStorage
@ -7840,7 +7926,9 @@ function AdminCacheStorage()
}
_.extend(AdminCacheStorage.prototype, AbstractCacheStorage.prototype);
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {Array} aViewModels
* @constructor
@ -8020,7 +8108,9 @@ AbstractSettings.prototype.routes = function ()
['', oRules]
];
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractScreen
@ -8035,7 +8125,9 @@ _.extend(AdminLoginScreen.prototype, KnoinAbstractScreen.prototype);
AdminLoginScreen.prototype.onShow = function ()
{
RL.setTitle('');
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractSettings
@ -8053,7 +8145,9 @@ _.extend(AdminSettingsScreen.prototype, AbstractSettings.prototype);
AdminSettingsScreen.prototype.onShow = function ()
{
RL.setTitle('');
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractBoot
@ -8411,7 +8505,9 @@ AbstractApp.prototype.bootstart = function ()
ssm.ready();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractApp
@ -8712,7 +8808,9 @@ AdminApp.prototype.bootstart = function ()
* @type {AdminApp}
*/
RL = new AdminApp();
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
$html.addClass(Globals.bMobileDevice ? 'mobile' : 'no-mobile');
$window.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
@ -8763,9 +8861,9 @@ window['__RLBOOT'] = function (fCall) {
window['__RLBOOT'] = null;
});
};
if (window.SimplePace) {
window.SimplePace.add(10);
}
}
}(window, jQuery, ko, crossroads, hasher, _));

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
/*! RainLoop Webmail Main Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (window, $, ko, crossroads, hasher, moment, Jua, _, ifvisible, key) {
/*! RainLoop Webmail Main Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
(function (window, $, ko, crossroads, hasher, moment, Jua, _, ifvisible, key) {
'use strict';
@ -23,7 +23,7 @@ var
* @type {Object.<Function>}
*/
Utils = {},
/**
* @type {Object.<Function>}
*/
@ -69,7 +69,7 @@ var
I18n = window['rainloopI18N'] || {},
$html = $('html'),
// $body = $('body'),
$window = $(window),
@ -77,18 +77,22 @@ var
$document = $(window.document),
NotificationClass = window.Notification && window.Notification.requestPermission ? window.Notification : null
;
;
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/*jshint onevar: false*/
/**
* @type {?RainLoopApp}
*/
var
RL = null,
$proxyDiv = $('<div></div>')
;
/*jshint onevar: true*/
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @type {?}
*/
@ -242,7 +246,9 @@ if (Globals.bAllowPdfPreview && navigator && navigator.mimeTypes)
return oType && 'application/pdf' === oType.type;
});
}
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
Consts.Defaults = {};
Consts.Values = {};
Consts.DataImages = {};
@ -360,7 +366,9 @@ Consts.DataImages.UserDotPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA
* @type {string}
*/
Consts.DataImages.TranspPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=';
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @enum {string}
*/
@ -778,7 +786,9 @@ Enums.Notification = {
'UnknownNotification': 999,
'UnknownError': 999
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
Utils.trim = $.trim;
Utils.inArray = $.inArray;
Utils.isArray = _.isArray;
@ -2528,7 +2538,8 @@ Utils.detectDropdownVisibility = _.debounce(function () {
return oItem.hasClass('open');
}));
}, 50);
/*jslint bitwise: true*/
// Base64 encode / decode
// http://www.webtoolkit.info/
@ -2691,7 +2702,9 @@ Base64 = {
}
};
/*jslint bitwise: false*/
/*jslint bitwise: false*/
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
ko.bindingHandlers.tooltip = {
'init': function (oElement, fValueAccessor) {
if (!Globals.bMobileDevice)
@ -3508,7 +3521,9 @@ ko.observable.fn.validateFunc = function (fFunc)
return this;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -3830,7 +3845,9 @@ LinkBuilder.prototype.socialFacebook = function ()
{
return this.sServer + 'SocialFacebook' + ('' !== this.sSpecSuffix ? '/' + this.sSpecSuffix + '/' : '');
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @type {Object}
*/
@ -3924,7 +3941,15 @@ Plugins.settingsGet = function (sPluginSection, sName)
};
/**
* @constructor
* @param {Object} oElement
* @param {Function=} fOnBlur
* @param {Function=} fOnReady
* @param {Function=} fOnModeChange
*/
function NewHtmlEditorWrapper(oElement, fOnBlur, fOnReady, fOnModeChange)
{
var self = this;
@ -4150,7 +4175,9 @@ NewHtmlEditorWrapper.prototype.clear = function (bFocus)
this.setHtml('', bFocus);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @param {koProperty} oKoList
@ -4859,7 +4886,9 @@ Selector.prototype.on = function (sEventName, fCallback)
{
this.oCallbacks[sEventName] = fCallback;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -4933,7 +4962,9 @@ CookieDriver.prototype.get = function (sKey)
return mResult;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -5004,7 +5035,9 @@ LocalStorageDriver.prototype.get = function (sKey)
return mResult;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -5047,7 +5080,9 @@ LocalStorage.prototype.get = function (iKey)
{
return this.oDriver ? this.oDriver.get('p' + iKey) : null;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -5060,7 +5095,9 @@ KnoinAbstractBoot.prototype.bootstart = function ()
{
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {string=} sPosition = ''
* @param {string=} sTemplate = ''
@ -5153,7 +5190,9 @@ KnoinAbstractViewModel.prototype.registerPopupKeyDown = function ()
return true;
});
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {string} sScreenName
* @param {?=} aViewModels = []
@ -5229,7 +5268,9 @@ KnoinAbstractScreen.prototype.__start = function ()
this.oCross = oRoute;
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -5634,7 +5675,9 @@ Knoin.prototype.bootstart = function ()
};
kn = new Knoin();
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {string=} sEmail
* @param {string=} sName
@ -5998,7 +6041,9 @@ EmailModel.prototype.inputoTagLine = function ()
{
return 0 < this.name.length ? this.name + ' (' + this.email + ')' : this.email;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6122,7 +6167,9 @@ ContactModel.prototype.lineAsCcc = function ()
return aResult.join(' ');
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {number=} iType = Enums.ContactPropertyType.Unknown
* @param {string=} sTypeStr = ''
@ -6151,7 +6198,9 @@ function ContactPropertyModel(iType, sTypeStr, sValue, bFocused, sPlaceholder)
}, this);
}
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6195,7 +6244,9 @@ ContactTagModel.prototype.toLine = function (bEncodeHtml)
return (Utils.isUnd(bEncodeHtml) ? false : !!bEncodeHtml) ?
Utils.encodeHtml(this.name()) : this.name();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -6431,7 +6482,9 @@ AttachmentModel.prototype.iconClass = function ()
return sClass;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @param {string} sId
@ -6492,7 +6545,9 @@ ComposeAttachmentModel.prototype.initByUploadJson = function (oJsonAttachment)
}
return bResult;
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -7690,7 +7745,9 @@ MessageModel.prototype.flagHash = function ()
return [this.deleted(), this.unseen(), this.flagged(), this.answered(), this.forwarded(),
this.isReadReceipt()].join('');
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -8022,7 +8079,9 @@ FolderModel.prototype.printableFullName = function ()
{
return this.fullName.split(this.delimiter).join(' / ');
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {string} sEmail
* @param {boolean=} bCanBeDelete = true
@ -8043,7 +8102,9 @@ AccountModel.prototype.email = '';
AccountModel.prototype.changeAccountLink = function ()
{
return RL.link().change(this.email);
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {string} sId
* @param {string} sEmail
@ -8079,14 +8140,18 @@ IdentityModel.prototype.formattedNameForEmail = function ()
var sName = this.name();
return '' === sName ? this.email() : '"' + Utils.quoteName(sName) + '" <' + this.email() + '>';
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
function FilterConditionModel()
{
}
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -8121,7 +8186,9 @@ FilterModel.prototype.parse = function (oItem)
return bResult;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {string} iIndex
* @param {string} sGuID
@ -8152,7 +8219,9 @@ OpenPgpKeyModel.prototype.user = '';
OpenPgpKeyModel.prototype.email = '';
OpenPgpKeyModel.prototype.armor = '';
OpenPgpKeyModel.prototype.isPrivate = false;
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -8248,7 +8317,9 @@ PopupsFolderClearViewModel.prototype.onShow = function (oFolder)
this.selectedFolder(oFolder);
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -8358,7 +8429,9 @@ PopupsFolderCreateViewModel.prototype.onFocus = function ()
{
this.folderName.focused(true);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -8471,7 +8544,9 @@ PopupsFolderSystemViewModel.prototype.onShow = function (iNotificationType)
this.notification(sNotification);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -9843,7 +9918,6 @@ PopupsComposeViewModel.prototype.prepearMessageAttachments = function (oMessage,
break;
}
bAdd = true;
if (bAdd)
{
oAttachment = new ComposeAttachmentModel(
@ -9959,7 +10033,9 @@ PopupsComposeViewModel.prototype.triggerForResize = function ()
this.editorResizeThrottle();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -10701,7 +10777,9 @@ PopupsContactsViewModel.prototype.onHide = function ()
// oItem.checked(false);
// });
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -10837,7 +10915,9 @@ PopupsAdvancedSearchViewModel.prototype.onFocus = function ()
{
this.fromFocus(true);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -10949,7 +11029,9 @@ PopupsAddAccountViewModel.prototype.onFocus = function ()
{
this.emailFocus(true);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11035,7 +11117,9 @@ PopupsAddOpenPgpKeyViewModel.prototype.onFocus = function ()
{
this.key.focus(true);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11075,7 +11159,9 @@ PopupsViewOpenPgpKeyViewModel.prototype.onShow = function (oOpenPgpKey)
this.key(oOpenPgpKey.armor);
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11170,7 +11256,9 @@ PopupsGenerateNewOpenPgpKeyViewModel.prototype.onFocus = function ()
{
this.email.focus(true);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11410,7 +11498,9 @@ PopupsComposeOpenPgpViewModel.prototype.onShow = function (fCallback, sText, sFr
this.to(aRec);
this.text(sText);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11558,7 +11648,9 @@ PopupsIdentityViewModel.prototype.onFocus = function ()
this.email.focused(true);
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11618,7 +11710,9 @@ PopupsLanguagesViewModel.prototype.changeLanguage = function (sLang)
RL.data().mainLanguage(sLang);
this.cancelCommand();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11672,7 +11766,9 @@ PopupsTwoFactorTestViewModel.prototype.onFocus = function ()
{
this.code.focused(true);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11778,7 +11874,9 @@ PopupsAskViewModel.prototype.onBuild = function ()
}, this));
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -11823,7 +11921,9 @@ PopupsKeyboardShortcutsHelpViewModel.prototype.onBuild = function (oDom)
}
}, this));
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -12135,7 +12235,9 @@ LoginViewModel.prototype.selectLanguage = function ()
kn.showScreenPopup(PopupsLanguagesViewModel);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -12231,7 +12333,9 @@ AbstractSystemDropDownViewModel.prototype.onBuild = function ()
}
});
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractSystemDropDownViewModel
@ -12243,7 +12347,9 @@ function MailBoxSystemDropDownViewModel()
}
Utils.extendAsViewModel('MailBoxSystemDropDownViewModel', MailBoxSystemDropDownViewModel, AbstractSystemDropDownViewModel);
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractSystemDropDownViewModel
@ -12255,7 +12361,9 @@ function SettingsSystemDropDownViewModel()
}
Utils.extendAsViewModel('SettingsSystemDropDownViewModel', SettingsSystemDropDownViewModel, AbstractSystemDropDownViewModel);
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -12503,7 +12611,9 @@ MailBoxFolderListViewModel.prototype.contactsClick = function ()
kn.showScreenPopup(PopupsContactsViewModel);
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -13406,7 +13516,9 @@ MailBoxMessageListViewModel.prototype.initUploaderForAppend = function ()
;
return !!oJua;
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -14098,7 +14210,9 @@ MailBoxMessageViewViewModel.prototype.readReceipt = function (oMessage)
RL.reloadFlagsCurrentMessageListAndMessageFromCache();
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {?} oScreen
*
@ -14127,7 +14241,9 @@ SettingsMenuViewModel.prototype.backToMailBoxClick = function ()
{
kn.setHash(RL.link().inbox());
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractViewModel
@ -14158,7 +14274,9 @@ SettingsPaneViewModel.prototype.backToMailBoxClick = function ()
{
kn.setHash(RL.link().inbox());
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -14318,7 +14436,9 @@ SettingsGeneral.prototype.selectLanguage = function ()
{
kn.showScreenPopup(PopupsLanguagesViewModel);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -14368,7 +14488,9 @@ SettingsContacts.prototype.onBuild = function ()
//{
//
//};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -14449,7 +14571,9 @@ SettingsAccounts.prototype.deleteAccount = function (oAccountToRemove)
}
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -14537,7 +14661,9 @@ SettingsIdentity.prototype.onBuild = function ()
}, 50);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -14695,7 +14821,9 @@ SettingsIdentities.prototype.onBuild = function (oDom)
});
}, 50);
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -14725,7 +14853,9 @@ SettingsFilters.prototype.addFilter = function ()
this.filters.push(oFilter);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -14875,7 +15005,9 @@ SettingsSecurity.prototype.onBuild = function ()
this.processing(true);
RL.remote().getTwoFactor(this.onResult);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -14942,7 +15074,9 @@ function SettingsSocialScreen()
}
Utils.addSettingsViewModel(SettingsSocialScreen, 'SettingsSocial', 'SETTINGS_LABELS/LABEL_SOCIAL_NAME', 'social');
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -15047,7 +15181,9 @@ SettingsChangePasswordScreen.prototype.onChangePasswordResponse = function (sRes
Utils.getNotification(Enums.Notification.CouldNotSaveNewPassword));
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -15242,7 +15378,9 @@ SettingsFolders.prototype.unSubscribeFolder = function (oFolder)
oFolder.subScribed(false);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -15356,7 +15494,9 @@ SettingsThemes.prototype.onBuild = function ()
};
}));
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -15424,7 +15564,9 @@ SettingsOpenPGP.prototype.deleteOpenPgpKey = function (oOpenPgpKeyToRemove)
RL.reloadOpenPgpKeys();
}
}
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -15555,7 +15697,9 @@ AbstractData.prototype.populateDataOnStart = function()
this.contactsIsAllowed(!!RL.settingsGet('ContactsIsAllowed'));
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractData
@ -16808,7 +16952,9 @@ WebMailDataStorage.prototype.findSelfPrivateKey = function (sPassword)
{
return this.findPrivateKeyByEmail(this.accountEmail(), sPassword);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -17082,7 +17228,9 @@ AbstractAjaxRemoteStorage.prototype.jsVersion = function (fCallback, sVersion)
'Version': sVersion
});
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractAjaxRemoteStorage
@ -17875,7 +18023,9 @@ WebMailAjaxRemoteStorage.prototype.socialUsers = function (fCallback)
this.defaultRequest(fCallback, 'SocialUsers');
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
*/
@ -17959,7 +18109,9 @@ AbstractCacheStorage.prototype.setEmailsPicsHashesData = function (oData)
{
this.oEmailsPicsHashes = oData;
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractCacheStorage
@ -18277,7 +18429,9 @@ WebMailCacheStorage.prototype.storeMessageFlagsToCacheByFolderAndUid = function
this.setMessageFlagsToCache(sFolder, sUid, aFlags);
}
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @param {Array} aViewModels
* @constructor
@ -18457,7 +18611,9 @@ AbstractSettings.prototype.routes = function ()
['', oRules]
];
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractScreen
@ -18472,7 +18628,9 @@ _.extend(LoginScreen.prototype, KnoinAbstractScreen.prototype);
LoginScreen.prototype.onShow = function ()
{
RL.setTitle('');
};
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractScreen
@ -18643,7 +18801,9 @@ MailBoxScreen.prototype.routes = function ()
[/^([^\/]*)$/, {'normalize_': fNormS}]
];
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractSettings
@ -18670,7 +18830,9 @@ SettingsScreen.prototype.onShow = function ()
RL.setTitle(this.sSettingsTitle);
RL.data().keyScope(Enums.KeyState.Settings);
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends KnoinAbstractBoot
@ -19028,7 +19190,9 @@ AbstractApp.prototype.bootstart = function ()
ssm.ready();
};
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
/**
* @constructor
* @extends AbstractApp
@ -20335,7 +20499,9 @@ RainLoopApp.prototype.bootstart = function ()
* @type {RainLoopApp}
*/
RL = new RainLoopApp();
/* RainLoop Webmail (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */
$html.addClass(Globals.bMobileDevice ? 'mobile' : 'no-mobile');
$window.keydown(Utils.killCtrlAandS).keyup(Utils.killCtrlAandS);
@ -20386,9 +20552,9 @@ window['__RLBOOT'] = function (fCall) {
window['__RLBOOT'] = null;
});
};
if (window.SimplePace) {
window.SimplePace.add(10);
}
}
}(window, jQuery, ko, crossroads, hasher, moment, Jua, _, ifvisible, key));

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
/*! See http://www.JSON.org/js.html */
var JSON;JSON||(JSON={}),function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c<f;c+=1)h[c]=str(c,i)||"null";e=h.length===0?"[]":gap?"[\n"+gap+h.join(",\n"+gap)+"\n"+g+"]":"["+h.join(",")+"]",gap=g;return e}if(rep&&typeof rep=="object"){f=rep.length;for(c=0;c<f;c+=1)d=rep[c],typeof d=="string"&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e))}else for(d in i)Object.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e));e=h.length===0?"{}":gap?"{\n"+gap+h.join(",\n"+gap)+"\n"+g+"}":"{"+h.join(",")+"}",gap=g;return e}}function quote(a){escapable.lastIndex=0;return escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return typeof b=="string"?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function f(a){return a<10?"0"+a:a}"use strict",typeof Date.prototype.toJSON!="function"&&(Date.prototype.toJSON=function(a){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;typeof JSON.stringify!="function"&&(JSON.stringify=function(a,b,c){var d;gap="",indent="";if(typeof c=="number")for(d=0;d<c;d+=1)indent+=" ";else typeof c=="string"&&(indent=c);rep=b;if(b&&typeof b!="function"&&(typeof b!="object"||typeof b.length!="number"))throw new Error("JSON.stringify");return str("",{"":a})}),typeof JSON.parse!="function"&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&typeof e=="object")for(c in e)Object.hasOwnProperty.call(e,c)&&(d=walk(e,c),d!==undefined?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver=="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")})}();
/*! See http://www.JSON.org/js.html */
var JSON;JSON||(JSON={}),function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c<f;c+=1)h[c]=str(c,i)||"null";e=h.length===0?"[]":gap?"[\n"+gap+h.join(",\n"+gap)+"\n"+g+"]":"["+h.join(",")+"]",gap=g;return e}if(rep&&typeof rep=="object"){f=rep.length;for(c=0;c<f;c+=1)d=rep[c],typeof d=="string"&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e))}else for(d in i)Object.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e));e=h.length===0?"{}":gap?"{\n"+gap+h.join(",\n"+gap)+"\n"+g+"}":"{"+h.join(",")+"}",gap=g;return e}}function quote(a){escapable.lastIndex=0;return escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return typeof b=="string"?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function f(a){return a<10?"0"+a:a}"use strict",typeof Date.prototype.toJSON!="function"&&(Date.prototype.toJSON=function(a){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;typeof JSON.stringify!="function"&&(JSON.stringify=function(a,b,c){var d;gap="",indent="";if(typeof c=="number")for(d=0;d<c;d+=1)indent+=" ";else typeof c=="string"&&(indent=c);rep=b;if(b&&typeof b!="function"&&(typeof b!="object"||typeof b.length!="number"))throw new Error("JSON.stringify");return str("",{"":a})}),typeof JSON.parse!="function"&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&typeof e=="object")for(c in e)Object.hasOwnProperty.call(e,c)&&(d=walk(e,c),d!==undefined?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver=="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")})}();
/*! RainLoop Simple Pace v1.0 (c) 2013 RainLoop Team; Licensed under MIT */
!function(a){function b(){var b=this;b.el=null,b.done=!1,b.progress=0,b.addInterval=0,b.addSpeed=3,b.stopProgress=100,b.interval=a.setInterval(function(){var c=b.build();c&&a.clearInterval(b.interval)},100)}if(b.prototype.startAddInterval=function(){var b=this;b.stopAddInterval(),b.addInterval=a.setInterval(function(){0<b.progress&&b.stopProgress>b.progress&&b.add(b.addSpeed)},500)},b.prototype.stopAddInterval=function(){a.clearInterval(this.addInterval),this.addInterval=0},b.prototype.build=function(){if(null===this.el){var a=document.querySelector("body");a&&(this.el=document.createElement("div"),this.el.className="simple-pace simple-pace-active",this.el.innerHTML='<div class="simple-pace-progress"><div class="simple-pace-progress-inner"></div></div><div class="simple-pace-activity"></div>',a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el))}return this.el},b.prototype.reset=function(){return this.progress=0,this.render()},b.prototype.update=function(b){var c=a.parseInt(b,10);return c>this.progress&&(this.progress=c,this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress),this.render()},b.prototype.add=function(b){return this.progress+=a.parseInt(b,10),this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress,this.render()},b.prototype.setSpeed=function(a,b){this.addSpeed=a,this.stopProgress=b||100},b.prototype.render=function(){var b=this.build();b&&b.children&&b.children[0]&&b.children[0].setAttribute("style","width:"+this.progress+"%"),100!==this.progress||this.done?100>this.progress&&this.done?(this.done=!1,this.startAddInterval(),b.className=b.className.replace("simple-pace-inactive",""),b.className+=" simple-pace-inactive"):100>this.progress&&!this.done&&0===this.addInterval&&this.startAddInterval():(this.done=!0,this.stopAddInterval(),a.setTimeout(function(){b.className=b.className.replace("simple-pace-active",""),b.className+=" simple-pace-inactive"},500))},!a.SimplePace){var c=new b;a.SimplePace={sleep:function(){c.setSpeed(2,95)},set:function(a){c.update(a)},add:function(a){c.add(a)}}}}(window);
!function(e){function s(){var s=this;s.el=null,s.done=!1,s.progress=0,s.addInterval=0,s.addSpeed=3,s.stopProgress=100,s.interval=e.setInterval(function(){var t=s.build();t&&e.clearInterval(s.interval)},100)}if(s.prototype.startAddInterval=function(){var s=this;s.stopAddInterval(),s.addInterval=e.setInterval(function(){0<s.progress&&s.stopProgress>s.progress&&s.add(s.addSpeed)},500)},s.prototype.stopAddInterval=function(){e.clearInterval(this.addInterval),this.addInterval=0},s.prototype.build=function(){if(null===this.el){var e=document.querySelector("body");e&&(this.el=document.createElement("div"),this.el.className="simple-pace simple-pace-active",this.el.innerHTML='<div class="simple-pace-progress"><div class="simple-pace-progress-inner"></div></div><div class="simple-pace-activity"></div>',e.firstChild?e.insertBefore(this.el,e.firstChild):e.appendChild(this.el))}return this.el},s.prototype.reset=function(){return this.progress=0,this.render()},s.prototype.update=function(s){var t=e.parseInt(s,10);return t>this.progress&&(this.progress=t,this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress),this.render()},s.prototype.add=function(s){return this.progress+=e.parseInt(s,10),this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress,this.render()},s.prototype.setSpeed=function(e,s){this.addSpeed=e,this.stopProgress=s||100},s.prototype.render=function(){var s=this.build();s&&s.children&&s.children[0]&&s.children[0].setAttribute("style","width:"+this.progress+"%"),100!==this.progress||this.done?100>this.progress&&this.done?(this.done=!1,this.startAddInterval(),s.className=s.className.replace("simple-pace-inactive",""),s.className+=" simple-pace-inactive"):100>this.progress&&!this.done&&0===this.addInterval&&this.startAddInterval():(this.done=!0,this.stopAddInterval(),e.setTimeout(function(){s.className=s.className.replace("simple-pace-active",""),s.className+=" simple-pace-inactive"},500))},!e.SimplePace){var t=new s;e.SimplePace={sleep:function(){t.setSpeed(2,95)},set:function(e){t.update(e)},add:function(e){t.add(e)}}}}(window);
/*! RainLoop Top Driver v1.0 (c) 2013 RainLoop Team; Licensed under MIT */
!function(a,b){function c(){}c.prototype.s=a.sessionStorage,c.prototype.t=a.top||a,c.prototype.getHash=function(){var a=null;if(this.s)a=this.s.getItem("__rlA")||null;else if(this.t){var c=this.t.name&&b&&"{"===this.t.name.toString().substr(0,1)?b.parse(this.t.name.toString()):null;a=c?c.__rlA||null:null}return a},c.prototype.setHash=function(){var c=a.rainloopAppData,d=null;this.s?this.s.setItem("__rlA",c&&c.AuthAccountHash?c.AuthAccountHash:""):this.t&&b&&(d={},d.__rlA=c&&c.AuthAccountHash?c.AuthAccountHash:"",this.t.name=b.stringify(d))},c.prototype.clearHash=function(){this.s?this.s.setItem("__rlA",""):this.t&&(this.t.name="")},a._rlhh=new c,a.__rlah=function(){return a._rlhh?a._rlhh.getHash():null},a.__rlah_set=function(){a._rlhh&&a._rlhh.setHash()},a.__rlah_clear=function(){a._rlhh&&a._rlhh.clearHash()}}(window,window.JSON);
!function(t,h){function s(){}s.prototype.s=t.sessionStorage,s.prototype.t=t.top||t,s.prototype.getHash=function(){var t=null;if(this.s)t=this.s.getItem("__rlA")||null;else if(this.t){var s=this.t.name&&h&&"{"===this.t.name.toString().substr(0,1)?h.parse(this.t.name.toString()):null;t=s?s.__rlA||null:null}return t},s.prototype.setHash=function(){var s=t.rainloopAppData,n=null;this.s?this.s.setItem("__rlA",s&&s.AuthAccountHash?s.AuthAccountHash:""):this.t&&h&&(n={},n.__rlA=s&&s.AuthAccountHash?s.AuthAccountHash:"",this.t.name=h.stringify(n))},s.prototype.clearHash=function(){this.s?this.s.setItem("__rlA",""):this.t&&(this.t.name="")},t._rlhh=new s,t.__rlah=function(){return t._rlhh?t._rlhh.getHash():null},t.__rlah_set=function(){t._rlhh&&t._rlhh.setHash()},t.__rlah_clear=function(){t._rlhh&&t._rlhh.clearHash()}}(window,window.JSON);

File diff suppressed because one or more lines are too long

View file

@ -549,13 +549,15 @@
.core (@gridColumnWidth, @gridGutterWidth) {
.spanX (@index) when (@index > 0) {
(~".span@{index}") { .span(@index); }
// (~".span@{index}") { .span(@index); }
.span@{index} { .span(@index); }
.spanX(@index - 1);
}
.spanX (0) {}
.offsetX (@index) when (@index > 0) {
(~".offset@{index}") { .offset(@index); }
// (~".offset@{index}") { .offset(@index); }
.offset@{index} { .offset(@index); }
.offsetX(@index - 1);
}
.offsetX (0) {}
@ -593,14 +595,17 @@
.fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
.spanX (@index) when (@index > 0) {
(~".span@{index}") { .span(@index); }
// (~".span@{index}") { .span(@index); }
.span@{index} { .span(@index); }
.spanX(@index - 1);
}
.spanX (0) {}
.offsetX (@index) when (@index > 0) {
(~'.offset@{index}') { .offset(@index); }
(~'.offset@{index}:first-child') { .offsetFirstChild(@index); }
// (~'.offset@{index}') { .offset(@index); }
// (~'.offset@{index}:first-child') { .offsetFirstChild(@index); }
.offset@{index} { .offset(@index); }
.offset@{index}:first-child { .offsetFirstChild(@index); }
.offsetX(@index - 1);
}
.offsetX (0) {}
@ -643,7 +648,8 @@
.input(@gridColumnWidth, @gridGutterWidth) {
.spanX (@index) when (@index > 0) {
(~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); }
// (~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); }
input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index} { .span(@index); }
.spanX(@index - 1);
}
.spanX (0) {}

View file

@ -1,2 +1,2 @@
/*!ifvisible.js v1.0.0 (c) 2013 Serkan Yersen | MIT */
(function(){"use strict";var a,b,c,d,e,f,g,h,i,j,k,l,m,n;i={},c=document,k=!1,l="active",g=6e4,f=!1,b=function(){var a,b,c,d,e,f;return a=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)},e=function(){return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},f={},c="__ceGUID",b=function(a,b,d){return a[c]=void 0,a[c]||(a[c]="ifvisible.object.event.identifier"),f[a[c]]||(f[a[c]]={}),f[a[c]][b]||(f[a[c]][b]=[]),f[a[c]][b].push(d)},d=function(a,b,d){var e,g,h,i,j;if(a[c]&&f[a[c]]&&f[a[c]][b]){for(i=f[a[c]][b],j=[],g=0,h=i.length;h>g;g++)e=i[g],j.push(e(d||{}));return j}},{add:b,fire:d}}(),a=function(){var a;return a=!1,function(b,c,d){return a||(a=b.addEventListener?function(a,b,c){return a.addEventListener(b,c,!1)}:b.attachEvent?function(a,b,c){return a.attachEvent("on"+b,c,!1)}:function(a,b,c){return a["on"+b]=c}),a(b,c,d)}}(),d=function(a,b){var d;return c.createEventObject?a.fireEvent("on"+b,d):(d=c.createEvent("HTMLEvents"),d.initEvent(b,!0,!0),!a.dispatchEvent(d))},h=function(){var a,b,d,e,f;for(e=void 0,f=3,d=c.createElement("div"),a=d.getElementsByTagName("i"),b=function(){return d.innerHTML="<!--[if gt IE "+ ++f+"]><i></i><![endif]-->",a[0]};b(););return f>4?f:e}(),e=!1,n=void 0,"undefined"!=typeof c.hidden?(e="hidden",n="visibilitychange"):"undefined"!=typeof c.mozHidden?(e="mozHidden",n="mozvisibilitychange"):"undefined"!=typeof c.msHidden?(e="msHidden",n="msvisibilitychange"):"undefined"!=typeof c.webkitHidden&&(e="webkitHidden",n="webkitvisibilitychange"),m=function(){var b,d;return b=!1,d=function(){return clearTimeout(b),"active"!==l&&i.wakeup(),f=+new Date,b=setTimeout(function(){return"active"===l?i.idle():void 0},g)},d(),a(c,"mousemove",d),a(c,"keyup",d),a(window,"scroll",d),i.focus(d)},j=function(){var b;return k?!0:(e===!1?(b="blur",9>h&&(b="focusout"),a(window,b,function(){return i.blur()}),a(window,"focus",function(){return i.focus()})):a(c,n,function(){return c[e]?i.blur():i.focus()},!1),k=!0,m())},i={setIdleDuration:function(a){return g=1e3*a},getIdleDuration:function(){return g},getIdleInfo:function(){var a,b;return a=+new Date,b={},"idle"===l?(b.isIdle=!0,b.idleFor=a-f,b.timeLeft=0,b.timeLeftPer=100):(b.isIdle=!1,b.idleFor=a-f,b.timeLeft=f+g-a,b.timeLeftPer=(100-100*b.timeLeft/g).toFixed(2)),b},focus:function(a){return"function"==typeof a?this.on("focus",a):(l="active",b.fire(this,"focus"),b.fire(this,"wakeup"),b.fire(this,"statusChanged",{status:l}))},blur:function(a){return"function"==typeof a?this.on("blur",a):(l="hidden",b.fire(this,"blur"),b.fire(this,"idle"),b.fire(this,"statusChanged",{status:l}))},idle:function(a){return"function"==typeof a?this.on("idle",a):(l="idle",b.fire(this,"idle"),b.fire(this,"statusChanged",{status:l}))},wakeup:function(a){return"function"==typeof a?this.on("wakeup",a):(l="active",b.fire(this,"wakeup"),b.fire(this,"statusChanged",{status:l}))},on:function(a,c){return j(),b.add(this,a,c)},onEvery:function(a,b){var c;return j(),c=setInterval(function(){return"active"===l?b():void 0},1e3*a),{stop:function(){return clearInterval(c)},code:c,callback:b}},now:function(){return j(),"active"===l}},"function"==typeof define&&define.amd?define(function(){return i}):window.ifvisible=i}).call(this);
(function(){"use strict";var e,t,n,i,r,u,o,f,c,d,s,a,v,l;c={},n=document,s=!1,a="active",o=6e4,u=!1,t=function(){var e,t,n,i,r,u;return e=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)},r=function(){return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()},u={},n="__ceGUID",t=function(e,t,i){return e[n]=void 0,e[n]||(e[n]="ifvisible.object.event.identifier"),u[e[n]]||(u[e[n]]={}),u[e[n]][t]||(u[e[n]][t]=[]),u[e[n]][t].push(i)},i=function(e,t,i){var r,o,f,c,d;if(e[n]&&u[e[n]]&&u[e[n]][t]){for(c=u[e[n]][t],d=[],o=0,f=c.length;f>o;o++)r=c[o],d.push(r(i||{}));return d}},{add:t,fire:i}}(),e=function(){var e;return e=!1,function(t,n,i){return e||(e=t.addEventListener?function(e,t,n){return e.addEventListener(t,n,!1)}:t.attachEvent?function(e,t,n){return e.attachEvent("on"+t,n,!1)}:function(e,t,n){return e["on"+t]=n}),e(t,n,i)}}(),i=function(e,t){var i;return n.createEventObject?e.fireEvent("on"+t,i):(i=n.createEvent("HTMLEvents"),i.initEvent(t,!0,!0),!e.dispatchEvent(i))},f=function(){var e,t,i,r,u;for(r=void 0,u=3,i=n.createElement("div"),e=i.getElementsByTagName("i"),t=function(){return i.innerHTML="<!--[if gt IE "+ ++u+"]><i></i><![endif]-->",e[0]};t(););return u>4?u:r}(),r=!1,l=void 0,"undefined"!=typeof n.hidden?(r="hidden",l="visibilitychange"):"undefined"!=typeof n.mozHidden?(r="mozHidden",l="mozvisibilitychange"):"undefined"!=typeof n.msHidden?(r="msHidden",l="msvisibilitychange"):"undefined"!=typeof n.webkitHidden&&(r="webkitHidden",l="webkitvisibilitychange"),v=function(){var t,i;return t=!1,i=function(){return clearTimeout(t),"active"!==a&&c.wakeup(),u=+new Date,t=setTimeout(function(){return"active"===a?c.idle():void 0},o)},i(),e(n,"mousemove",i),e(n,"keyup",i),e(window,"scroll",i),c.focus(i)},d=function(){var t;return s?!0:(r===!1?(t="blur",9>f&&(t="focusout"),e(window,t,function(){return c.blur()}),e(window,"focus",function(){return c.focus()})):e(n,l,function(){return n[r]?c.blur():c.focus()},!1),s=!0,v())},c={setIdleDuration:function(e){return o=1e3*e},getIdleDuration:function(){return o},getIdleInfo:function(){var e,t;return e=+new Date,t={},"idle"===a?(t.isIdle=!0,t.idleFor=e-u,t.timeLeft=0,t.timeLeftPer=100):(t.isIdle=!1,t.idleFor=e-u,t.timeLeft=u+o-e,t.timeLeftPer=(100-100*t.timeLeft/o).toFixed(2)),t},focus:function(e){return"function"==typeof e?this.on("focus",e):(a="active",t.fire(this,"focus"),t.fire(this,"wakeup"),t.fire(this,"statusChanged",{status:a}))},blur:function(e){return"function"==typeof e?this.on("blur",e):(a="hidden",t.fire(this,"blur"),t.fire(this,"idle"),t.fire(this,"statusChanged",{status:a}))},idle:function(e){return"function"==typeof e?this.on("idle",e):(a="idle",t.fire(this,"idle"),t.fire(this,"statusChanged",{status:a}))},wakeup:function(e){return"function"==typeof e?this.on("wakeup",e):(a="active",t.fire(this,"wakeup"),t.fire(this,"statusChanged",{status:a}))},on:function(e,n){return d(),t.add(this,e,n)},onEvery:function(e,t){var n;return d(),n=setInterval(function(){return"active"===a?t():void 0},1e3*e),{stop:function(){return clearInterval(n)},code:n,callback:t}},now:function(){return d(),"active"===a}},"function"==typeof define&&define.amd?define(function(){return c}):window.ifvisible=c}).call(this);

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,7 @@
/*! nanoScrollerJS - v0.7
* http://jamesflorentino.github.com/nanoScrollerJS/
* Copyright (c) 2013 James Florentino; Licensed under MIT
*
*
* modified by RainLoop Team
*/
@ -339,7 +339,7 @@
NanoScroll.prototype.scrollClassTimer = 0;
NanoScroll.prototype.scrollClassTrigger = function() {
window.clearTimeout(this.scrollClassTimer);
var _this = this;
@ -476,7 +476,7 @@
if (_this.isBeingDragged || _this.isBeingDragged2) {
return;
}
_this.updateScrollValues();
if (!_this.iOSNativeScrolling) {
_this.sliderY = _this.sliderTop;
@ -734,20 +734,20 @@
if (!this.isActive && !this.isActive2) {
return;
}
if (this.isActive) {
this.sliderY = Math.max(0, this.sliderY);
this.sliderY = Math.min(this.maxSliderTop, this.sliderY);
this.$content.scrollTop((this.paneHeight - this.contentHeight + BROWSER_SCROLLBAR_WIDTH) * this.sliderY / this.maxSliderTop * -1);
}
}
if (this.isActive2) {
this.slider2X = Math.max(0, this.slider2X);
this.slider2X = Math.min(this.maxSlider2Left, this.slider2X);
this.$content.scrollLeft((this.pane2Width - this.contentWidth + BROWSER_SCROLLBAR_WIDTH) * this.slider2X / this.maxSlider2Left * -1);
}
if (!this.iOSNativeScrolling) {
if (this.isActive) {
this.slider.css({
top: this.sliderY

View file

@ -1,2 +1,2 @@
/*! RainLoop Top Driver v1.0 (c) 2013 RainLoop Team; Licensed under MIT */
!function(a,b){function c(){}c.prototype.s=a.sessionStorage,c.prototype.t=a.top||a,c.prototype.getHash=function(){var a=null;if(this.s)a=this.s.getItem("__rlA")||null;else if(this.t){var c=this.t.name&&b&&"{"===this.t.name.toString().substr(0,1)?b.parse(this.t.name.toString()):null;a=c?c.__rlA||null:null}return a},c.prototype.setHash=function(){var c=a.rainloopAppData,d=null;this.s?this.s.setItem("__rlA",c&&c.AuthAccountHash?c.AuthAccountHash:""):this.t&&b&&(d={},d.__rlA=c&&c.AuthAccountHash?c.AuthAccountHash:"",this.t.name=b.stringify(d))},c.prototype.clearHash=function(){this.s?this.s.setItem("__rlA",""):this.t&&(this.t.name="")},a._rlhh=new c,a.__rlah=function(){return a._rlhh?a._rlhh.getHash():null},a.__rlah_set=function(){a._rlhh&&a._rlhh.setHash()},a.__rlah_clear=function(){a._rlhh&&a._rlhh.clearHash()}}(window,window.JSON);
!function(t,h){function s(){}s.prototype.s=t.sessionStorage,s.prototype.t=t.top||t,s.prototype.getHash=function(){var t=null;if(this.s)t=this.s.getItem("__rlA")||null;else if(this.t){var s=this.t.name&&h&&"{"===this.t.name.toString().substr(0,1)?h.parse(this.t.name.toString()):null;t=s?s.__rlA||null:null}return t},s.prototype.setHash=function(){var s=t.rainloopAppData,n=null;this.s?this.s.setItem("__rlA",s&&s.AuthAccountHash?s.AuthAccountHash:""):this.t&&h&&(n={},n.__rlA=s&&s.AuthAccountHash?s.AuthAccountHash:"",this.t.name=h.stringify(n))},s.prototype.clearHash=function(){this.s?this.s.setItem("__rlA",""):this.t&&(this.t.name="")},t._rlhh=new s,t.__rlah=function(){return t._rlhh?t._rlhh.getHash():null},t.__rlah_set=function(){t._rlhh&&t._rlhh.setHash()},t.__rlah_clear=function(){t._rlhh&&t._rlhh.clearHash()}}(window,window.JSON);

View file

@ -1,2 +1,2 @@
/*! RainLoop Simple Pace v1.0 (c) 2013 RainLoop Team; Licensed under MIT */
!function(a){function b(){var b=this;b.el=null,b.done=!1,b.progress=0,b.addInterval=0,b.addSpeed=3,b.stopProgress=100,b.interval=a.setInterval(function(){var c=b.build();c&&a.clearInterval(b.interval)},100)}if(b.prototype.startAddInterval=function(){var b=this;b.stopAddInterval(),b.addInterval=a.setInterval(function(){0<b.progress&&b.stopProgress>b.progress&&b.add(b.addSpeed)},500)},b.prototype.stopAddInterval=function(){a.clearInterval(this.addInterval),this.addInterval=0},b.prototype.build=function(){if(null===this.el){var a=document.querySelector("body");a&&(this.el=document.createElement("div"),this.el.className="simple-pace simple-pace-active",this.el.innerHTML='<div class="simple-pace-progress"><div class="simple-pace-progress-inner"></div></div><div class="simple-pace-activity"></div>',a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el))}return this.el},b.prototype.reset=function(){return this.progress=0,this.render()},b.prototype.update=function(b){var c=a.parseInt(b,10);return c>this.progress&&(this.progress=c,this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress),this.render()},b.prototype.add=function(b){return this.progress+=a.parseInt(b,10),this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress,this.render()},b.prototype.setSpeed=function(a,b){this.addSpeed=a,this.stopProgress=b||100},b.prototype.render=function(){var b=this.build();b&&b.children&&b.children[0]&&b.children[0].setAttribute("style","width:"+this.progress+"%"),100!==this.progress||this.done?100>this.progress&&this.done?(this.done=!1,this.startAddInterval(),b.className=b.className.replace("simple-pace-inactive",""),b.className+=" simple-pace-inactive"):100>this.progress&&!this.done&&0===this.addInterval&&this.startAddInterval():(this.done=!0,this.stopAddInterval(),a.setTimeout(function(){b.className=b.className.replace("simple-pace-active",""),b.className+=" simple-pace-inactive"},500))},!a.SimplePace){var c=new b;a.SimplePace={sleep:function(){c.setSpeed(2,95)},set:function(a){c.update(a)},add:function(a){c.add(a)}}}}(window);
!function(e){function s(){var s=this;s.el=null,s.done=!1,s.progress=0,s.addInterval=0,s.addSpeed=3,s.stopProgress=100,s.interval=e.setInterval(function(){var t=s.build();t&&e.clearInterval(s.interval)},100)}if(s.prototype.startAddInterval=function(){var s=this;s.stopAddInterval(),s.addInterval=e.setInterval(function(){0<s.progress&&s.stopProgress>s.progress&&s.add(s.addSpeed)},500)},s.prototype.stopAddInterval=function(){e.clearInterval(this.addInterval),this.addInterval=0},s.prototype.build=function(){if(null===this.el){var e=document.querySelector("body");e&&(this.el=document.createElement("div"),this.el.className="simple-pace simple-pace-active",this.el.innerHTML='<div class="simple-pace-progress"><div class="simple-pace-progress-inner"></div></div><div class="simple-pace-activity"></div>',e.firstChild?e.insertBefore(this.el,e.firstChild):e.appendChild(this.el))}return this.el},s.prototype.reset=function(){return this.progress=0,this.render()},s.prototype.update=function(s){var t=e.parseInt(s,10);return t>this.progress&&(this.progress=t,this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress),this.render()},s.prototype.add=function(s){return this.progress+=e.parseInt(s,10),this.progress=100<this.progress?100:this.progress,this.progress=0>this.progress?0:this.progress,this.render()},s.prototype.setSpeed=function(e,s){this.addSpeed=e,this.stopProgress=s||100},s.prototype.render=function(){var s=this.build();s&&s.children&&s.children[0]&&s.children[0].setAttribute("style","width:"+this.progress+"%"),100!==this.progress||this.done?100>this.progress&&this.done?(this.done=!1,this.startAddInterval(),s.className=s.className.replace("simple-pace-inactive",""),s.className+=" simple-pace-inactive"):100>this.progress&&!this.done&&0===this.addInterval&&this.startAddInterval():(this.done=!0,this.stopAddInterval(),e.setTimeout(function(){s.className=s.className.replace("simple-pace-active",""),s.className+=" simple-pace-inactive"},500))},!e.SimplePace){var t=new s;e.SimplePace={sleep:function(){t.setSpeed(2,95)},set:function(e){t.update(e)},add:function(e){t.add(e)}}}}(window);