Code refactoring

This commit is contained in:
RainLoop Team 2014-08-26 19:24:47 +04:00
parent 4a95dd6195
commit 36329110e5
81 changed files with 3474 additions and 2124 deletions

View file

@ -2,5 +2,5 @@
(function (require) {
'use strict';
require('Boot')(require('./Boots/AdminApp.js'));
require('./Boot.js')(require('./Apps/AdminApp.js'));
}(require));

View file

@ -48,40 +48,40 @@
AdminApp.prototype.setupSettings = function ()
{
kn.addSettingsViewModel(require('../Admin/AdminSettingsGeneral.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsGeneral.js'),
'AdminSettingsGeneral', 'General', 'general', true);
kn.addSettingsViewModel(require('../Admin/AdminSettingsLogin.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsLogin.js'),
'AdminSettingsLogin', 'Login', 'login');
if (AppSettings.capa(Enums.Capa.Prem))
{
kn.addSettingsViewModel(require('../Admin/AdminSettingsBranding.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsBranding.js'),
'AdminSettingsBranding', 'Branding', 'branding');
}
kn.addSettingsViewModel(require('../Admin/AdminSettingsContacts.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsContacts.js'),
'AdminSettingsContacts', 'Contacts', 'contacts');
kn.addSettingsViewModel(require('../Admin/AdminSettingsDomains.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsDomains.js'),
'AdminSettingsDomains', 'Domains', 'domains');
kn.addSettingsViewModel(require('../Admin/AdminSettingsSecurity.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsSecurity.js'),
'AdminSettingsSecurity', 'Security', 'security');
kn.addSettingsViewModel(require('../Admin/AdminSettingsSocial.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsSocial.js'),
'AdminSettingsSocial', 'Social', 'social');
kn.addSettingsViewModel(require('../Admin/AdminSettingsPlugins.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsPlugins.js'),
'AdminSettingsPlugins', 'Plugins', 'plugins');
kn.addSettingsViewModel(require('../Admin/AdminSettingsPackages.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsPackages.js'),
'AdminSettingsPackages', 'Packages', 'packages');
kn.addSettingsViewModel(require('../Admin/AdminSettingsLicensing.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsLicensing.js'),
'AdminSettingsLicensing', 'Licensing', 'licensing');
kn.addSettingsViewModel(require('../Admin/AdminSettingsAbout.js'),
kn.addSettingsViewModel(require('../Settings/Admin/AdminSettingsAbout.js'),
'AdminSettingsAbout', 'About', 'about');
return true;

View file

@ -125,41 +125,41 @@
RainLoopApp.prototype.setupSettings = function ()
{
kn.addSettingsViewModel(require('../Settings/SettingsGeneral.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsGeneral.js'),
'SettingsGeneral', 'SETTINGS_LABELS/LABEL_GENERAL_NAME', 'general', true);
if (AppSettings.settingsGet('ContactsIsAllowed'))
{
kn.addSettingsViewModel(require('../Settings/SettingsContacts.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsContacts.js'),
'SettingsContacts', 'SETTINGS_LABELS/LABEL_CONTACTS_NAME', 'contacts');
}
if (AppSettings.capa(Enums.Capa.AdditionalAccounts))
{
kn.addSettingsViewModel(require('../Settings/SettingsAccounts.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsAccounts.js'),
'SettingsAccounts', 'SETTINGS_LABELS/LABEL_ACCOUNTS_NAME', 'accounts');
}
if (AppSettings.capa(Enums.Capa.AdditionalIdentities))
{
kn.addSettingsViewModel(require('../Settings/SettingsIdentities.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsIdentities.js'),
'SettingsIdentities', 'SETTINGS_LABELS/LABEL_IDENTITIES_NAME', 'identities');
}
else
{
kn.addSettingsViewModel(require('../Settings/SettingsIdentity.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsIdentity.js'),
'SettingsIdentity', 'SETTINGS_LABELS/LABEL_IDENTITY_NAME', 'identity');
}
if (AppSettings.capa(Enums.Capa.Filters))
{
kn.addSettingsViewModel(require('../Settings/SettingsFilters.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsFilters.js'),
'SettingsFilters', 'SETTINGS_LABELS/LABEL_FILTERS_NAME', 'filters');
}
if (AppSettings.capa(Enums.Capa.TwoFactor))
{
kn.addSettingsViewModel(require('../Settings/SettingsSecurity.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsSecurity.js'),
'SettingsSecurity', 'SETTINGS_LABELS/LABEL_SECURITY_NAME', 'security');
}
@ -167,28 +167,28 @@
AppSettings.settingsGet('AllowFacebookSocial') ||
AppSettings.settingsGet('AllowTwitterSocial'))
{
kn.addSettingsViewModel(require('../Settings/SettingsSocial.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsSocial.js'),
'SettingsSocial', 'SETTINGS_LABELS/LABEL_SOCIAL_NAME', 'social');
}
if (AppSettings.settingsGet('ChangePasswordIsAllowed'))
{
kn.addSettingsViewModel(require('../Settings/SettingsChangePassword.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsChangePassword.js'),
'SettingsChangePassword', 'SETTINGS_LABELS/LABEL_CHANGE_PASSWORD_NAME', 'change-password');
}
kn.addSettingsViewModel(require('../Settings/SettingsFolders.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsFolders.js'),
'SettingsFolders', 'SETTINGS_LABELS/LABEL_FOLDERS_NAME', 'folders');
if (AppSettings.capa(Enums.Capa.Themes))
{
kn.addSettingsViewModel(require('../Settings/SettingsThemes.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsThemes.js'),
'SettingsThemes', 'SETTINGS_LABELS/LABEL_THEMES_NAME', 'themes');
}
if (AppSettings.capa(Enums.Capa.OpenPGP))
{
kn.addSettingsViewModel(require('../Settings/SettingsOpenPGP.js'),
kn.addSettingsViewModel(require('../Settings/App/SettingsOpenPGP.js'),
'SettingsOpenPGP', 'SETTINGS_LABELS/LABEL_OPEN_PGP_NAME', 'openpgp');
}

View file

@ -4,21 +4,24 @@
'use strict';
var
window = require('window'),
_ = require('_'),
$ = require('$'),
$window = require('$window'),
$html = require('$html'),
Globals = require('Globals'),
Plugins = require('Plugins'),
Utils = require('Utils')
;
module.exports = function (App) {
Globals.__RL = App;
var
window = require('window'),
_ = require('_'),
$ = require('$'),
$window = require('$window'),
$html = require('$html'),
Globals = require('Globals'),
Plugins = require('Plugins'),
Utils = require('Utils'),
Enums = require('Enums'),
EmailModel = require('./Models/EmailModel.js')
;
Globals.__APP = App;
App.setupSettings();
@ -45,10 +48,10 @@
window['rl']['pluginSettingsGet'] = Plugins.settingsGet;
window['rl']['createCommand'] = Utils.createCommand;
window['rl']['EmailModel'] = require('../Models/EmailModel.js');
window['rl']['Enums'] = require('Enums');
window['rl']['EmailModel'] = EmailModel;
window['rl']['Enums'] = Enums;
window['__RLBOOT'] = function (fCall) {
window['__APP_BOOT'] = function (fCall) {
// boot
$(function () {
@ -69,7 +72,7 @@
fCall(false);
}
window['__RLBOOT'] = null;
window['__APP_BOOT'] = null;
});
};

View file

@ -112,7 +112,7 @@
/**
* @type {*}
*/
Globals.__RL = null;
Globals.__APP = null;
/**
* @type {Object}

View file

@ -1364,7 +1364,6 @@
};
/* jshint ignore:start */
/**
* @param {string} s
* @return {string}

View file

@ -2,5 +2,5 @@
(function (require) {
'use strict';
require('Boot')(require('./Boots/RainLoopApp.js'));
require('./Boot.js')(require('./Apps/RainLoopApp.js'));
}(require));

View file

@ -77,7 +77,6 @@
oViewModelPlace = this.oViewModelPlace;
if (oViewModelPlace && 1 === oViewModelPlace.length)
{
RoutedSettingsViewModel = /** @type {?Function} */ RoutedSettingsViewModel;
oSettingsScreen = new RoutedSettingsViewModel();
oViewModelDom = $('<div></div>').addClass('rl-settings-view-model').hide();

View file

@ -23,8 +23,8 @@
AdminLoginScreen.prototype.onShow = function ()
{
var RL = require('../Boots/AdminApp.js');
RL.setTitle('');
var App = require('../Apps/AdminApp.js');
App.setTitle('');
};
module.exports = AdminLoginScreen;

View file

@ -30,8 +30,8 @@
AdminSettingsScreen.prototype.onShow = function ()
{
var RL = require('../Boots/AdminApp.js');
RL.setTitle('');
var App = require('../Apps/AdminApp.js');
App.setTitle('');
};
module.exports = AdminSettingsScreen;

View file

@ -23,8 +23,8 @@
LoginScreen.prototype.onShow = function ()
{
var RL = require('../Boots/RainLoopApp.js');
RL.setTitle('');
var App = require('../Apps/RainLoopApp.js');
App.setTitle('');
};
module.exports = LoginScreen;

View file

@ -54,12 +54,12 @@
MailBoxScreen.prototype.setNewTitle = function ()
{
var
RL = require('../Boots/RainLoopApp.js'),
App = require('../Apps/RainLoopApp.js'),
sEmail = Data.accountEmail(),
nFoldersInboxUnreadCount = Data.foldersInboxUnreadCount()
;
RL.setTitle(('' === sEmail ? '' :
App.setTitle(('' === sEmail ? '' :
(0 < nFoldersInboxUnreadCount ? '(' + nFoldersInboxUnreadCount + ') ' : ' ') + sEmail + ' - ') + Utils.i18n('TITLES/MAILBOX'));
};
@ -77,12 +77,12 @@
*/
MailBoxScreen.prototype.onRoute = function (sFolderHash, iPage, sSearch, bPreview)
{
var RL = require('../Boots/RainLoopApp.js');
var App = require('../Apps/RainLoopApp.js');
if (Utils.isUnd(bPreview) ? false : !!bPreview)
{
if (Enums.Layout.NoPreview === Data.layout() && !Data.message())
{
RL.historyBack();
App.historyBack();
}
}
else
@ -105,7 +105,7 @@
Data.message(null);
}
RL.reloadMessageList();
App.reloadMessageList();
}
}
};
@ -113,7 +113,7 @@
MailBoxScreen.prototype.onStart = function ()
{
var
RL = require('../Boots/RainLoopApp.js'),
App = require('../Apps/RainLoopApp.js'),
fResizeFunction = function () {
Utils.windowResize();
}
@ -121,18 +121,18 @@
if (AppSettings.capa(Enums.Capa.AdditionalAccounts) || AppSettings.capa(Enums.Capa.AdditionalIdentities))
{
RL.accountsAndIdentities();
App.accountsAndIdentities();
}
_.delay(function () {
if ('INBOX' !== Data.currentFolderFullNameRaw())
{
RL.folderInformation('INBOX');
App.folderInformation('INBOX');
}
}, 1000);
_.delay(function () {
RL.quota();
App.quota();
}, 5000);
_.delay(function () {

View file

@ -21,7 +21,7 @@
function SettingsScreen()
{
var
RL = require('../Boots/RainLoopApp.js'),
App = require('../Apps/RainLoopApp.js'),
SettingsSystemDropDownViewModel = require('../ViewModels/SettingsSystemDropDownViewModel.js'),
SettingsMenuViewModel = require('../ViewModels/SettingsMenuViewModel.js'),
@ -37,7 +37,7 @@
Utils.initOnStartOrLangChange(function () {
this.sSettingsTitle = Utils.i18n('TITLES/SETTINGS');
}, this, function () {
RL.setTitle(this.sSettingsTitle);
App.setTitle(this.sSettingsTitle);
});
}
@ -45,9 +45,9 @@
SettingsScreen.prototype.onShow = function ()
{
var RL = require('../Boots/RainLoopApp.js');
var App = require('../Apps/RainLoopApp.js');
RL.setTitle(this.sSettingsTitle);
App.setTitle(this.sSettingsTitle);
Globals.keyScope(Enums.KeyState.Settings);
};

View file

@ -14,8 +14,8 @@
function AdminSettingsAbout()
{
var
AppSettings = require('../Storages/AppSettings.js'),
Data = require('../Storages/AdminDataStorage.js')
AppSettings = require('../../Storages/AppSettings.js'),
Data = require('../../Storages/AdminDataStorage.js')
;
this.version = ko.observable(AppSettings.settingsGet('Version'));
@ -72,7 +72,7 @@
{
if (this.access())
{
require('../Boots/AdminApp.js').reloadCoreData();
require('../../Apps/AdminApp.js').reloadCoreData();
}
};
@ -80,7 +80,7 @@
{
if (!this.coreUpdating())
{
require('../Boots/AdminApp.js').updateCoreData();
require('../../Apps/AdminApp.js').updateCoreData();
}
};

View file

@ -18,7 +18,7 @@
{
var
Enums = require('Enums'),
AppSettings = require('../Storages/AppSettings.js')
AppSettings = require('../../Storages/AppSettings.js')
;
this.title = ko.observable(AppSettings.settingsGet('Title'));
@ -41,7 +41,7 @@
{
var
self = this,
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
_.delay(function () {

View file

@ -11,7 +11,7 @@
Enums = require('Enums'),
Utils = require('Utils'),
AppSettings = require('../Storages/AppSettings.js')
AppSettings = require('../../Storages/AppSettings.js')
;
/**
@ -20,7 +20,7 @@
function AdminSettingsContacts()
{
var
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
this.defautOptionsAfterRender = Utils.defautOptionsAfterRender;
@ -179,7 +179,7 @@
{
var
self = this,
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
_.delay(function () {

View file

@ -11,10 +11,10 @@
Enums = require('Enums'),
PopupsDomainViewModel = require('../ViewModels/Popups/PopupsDomainViewModel.js'),
PopupsDomainViewModel = require('../../ViewModels/Popups/PopupsDomainViewModel.js'),
Data = require('../Storages/AdminDataStorage.js'),
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
Data = require('../../Storages/AdminDataStorage.js'),
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
/**
@ -86,7 +86,7 @@
})
;
require('../Boots/AdminApp.js').reloadDomainList();
require('../../Apps/AdminApp.js').reloadDomainList();
};
AdminSettingsDomains.prototype.onDomainLoadRequest = function (sResult, oData)
@ -99,7 +99,7 @@
AdminSettingsDomains.prototype.onDomainListChangeRequest = function ()
{
require('../Boots/AdminApp.js').reloadDomainList();
require('../../Apps/AdminApp.js').reloadDomainList();
};
module.exports = AdminSettingsDomains;

View file

@ -12,10 +12,10 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
AppSettings = require('../Storages/AppSettings.js'),
Data = require('../Storages/AdminDataStorage.js'),
AppSettings = require('../../Storages/AppSettings.js'),
Data = require('../../Storages/AdminDataStorage.js'),
PopupsLanguagesViewModel = require('../ViewModels/Popups/PopupsLanguagesViewModel.js')
PopupsLanguagesViewModel = require('../../ViewModels/Popups/PopupsLanguagesViewModel.js')
;
/**
@ -68,7 +68,7 @@
{
var
self = this,
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
_.delay(function () {

View file

@ -8,10 +8,10 @@
ko = require('ko'),
moment = require('moment'),
AppSettings = require('../Storages/AppSettings.js'),
Data = require('../Storages/AdminDataStorage.js'),
AppSettings = require('../../Storages/AppSettings.js'),
Data = require('../../Storages/AdminDataStorage.js'),
PopupsActivateViewModel = require('../ViewModels/Popups/PopupsActivateViewModel.js')
PopupsActivateViewModel = require('../../ViewModels/Popups/PopupsActivateViewModel.js')
;
/**
@ -32,7 +32,7 @@
this.licenseTrigger.subscribe(function () {
if (this.subscriptionEnabled())
{
require('../Boots/AdminApp.js').reloadLicensing(true);
require('../../Apps/AdminApp.js').reloadLicensing(true);
}
}, this);
}
@ -41,7 +41,7 @@
{
if (this.subscriptionEnabled())
{
require('../Boots/AdminApp.js').reloadLicensing(false);
require('../../Apps/AdminApp.js').reloadLicensing(false);
}
};

View file

@ -11,8 +11,8 @@
Enums = require('Enums'),
Utils = require('Utils'),
AppSettings = require('../Storages/AppSettings.js'),
Data = require('../Storages/AdminDataStorage.js')
AppSettings = require('../../Storages/AppSettings.js'),
Data = require('../../Storages/AdminDataStorage.js')
;
/**
@ -33,7 +33,7 @@
{
var
self = this,
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
_.delay(function () {

View file

@ -11,8 +11,8 @@
Enums = require('Enums'),
Utils = require('Utils'),
Data = require('../Storages/AdminDataStorage.js'),
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
Data = require('../../Storages/AdminDataStorage.js'),
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
/**
@ -51,7 +51,7 @@
AdminSettingsPackages.prototype.onBuild = function ()
{
require('../Boots/AdminApp.js').reloadPackagesList();
require('../../Apps/AdminApp.js').reloadPackagesList();
};
AdminSettingsPackages.prototype.requestHelper = function (oPackage, bInstall)
@ -86,7 +86,7 @@
}
else
{
require('../Boots/AdminApp.js').reloadPackagesList();
require('../../Apps/AdminApp.js').reloadPackagesList();
}
};
};

View file

@ -11,11 +11,11 @@
Enums = require('Enums'),
Utils = require('Utils'),
AppSettings = require('../Storages/AppSettings.js'),
Data = require('../Storages/AdminDataStorage.js'),
Remote = require('../Storages/AdminAjaxRemoteStorage.js'),
AppSettings = require('../../Storages/AppSettings.js'),
Data = require('../../Storages/AdminDataStorage.js'),
Remote = require('../../Storages/AdminAjaxRemoteStorage.js'),
PopupsPluginViewModel = require('../ViewModels/Popups/PopupsPluginViewModel.js')
PopupsPluginViewModel = require('../../ViewModels/Popups/PopupsPluginViewModel.js')
;
/**
@ -80,7 +80,7 @@
AdminSettingsPlugins.prototype.onShow = function ()
{
this.pluginsError('');
require('../Boots/AdminApp.js').reloadPluginList();
require('../../Apps/AdminApp.js').reloadPluginList();
};
AdminSettingsPlugins.prototype.onPluginLoadRequest = function (sResult, oData)
@ -108,7 +108,7 @@
}
}
require('../Boots/AdminApp.js').reloadPluginList();
require('../../Apps/AdminApp.js').reloadPluginList();
};
module.exports = AdminSettingsPlugins;

View file

@ -12,9 +12,9 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
AppSettings = require('../Storages/AppSettings.js'),
Data = require('../Storages/AdminDataStorage.js'),
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
AppSettings = require('../../Storages/AppSettings.js'),
Data = require('../../Storages/AdminDataStorage.js'),
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
/**
@ -95,7 +95,7 @@
AdminSettingsSecurity.prototype.onBuild = function ()
{
var
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
this.capaOpenPGP.subscribe(function (bValue) {

View file

@ -17,7 +17,7 @@
*/
function AdminSettingsSocial()
{
var Data = require('../Storages/AdminDataStorage.js');
var Data = require('../../Storages/AdminDataStorage.js');
this.googleEnable = Data.googleEnable;
this.googleClientID = Data.googleClientID;
@ -49,7 +49,7 @@
{
var
self = this,
Remote = require('../Storages/AdminAjaxRemoteStorage.js')
Remote = require('../../Storages/AdminAjaxRemoteStorage.js')
;
_.delay(function () {

View file

@ -13,11 +13,11 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
Data = require('../Storages/WebMailDataStorage.js'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
Data = require('../../Storages/WebMailDataStorage.js'),
Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
kn = require('kn'),
PopupsAddAccountViewModel = require('../ViewModels/Popups/PopupsAddAccountViewModel.js')
PopupsAddAccountViewModel = require('../../ViewModels/Popups/PopupsAddAccountViewModel.js')
;
/**
@ -65,7 +65,7 @@
this.accountForDeletion(null);
var
RL = require('../Boots/RainLoopApp.js'),
App = require('../../Apps/RainLoopApp.js'),
fRemoveAccount = function (oAccount) {
return oAccountToRemove === oAccount;
}
@ -90,7 +90,7 @@
}
else
{
RL.accountsAndIdentities();
App.accountsAndIdentities();
}
}, oAccountToRemove.email);

View file

@ -11,7 +11,7 @@
Enums = require('Enums'),
Utils = require('Utils'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js')
Remote = require('../../Storages/WebMailAjaxRemoteStorage.js')
;
/**

View file

@ -9,8 +9,8 @@
Utils = require('Utils'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
Data = require('../Storages/WebMailDataStorage.js')
Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
Data = require('../../Storages/WebMailDataStorage.js')
;
/**

View file

@ -31,8 +31,8 @@
{
var
kn = require('kn'),
FilterModel = require('../Models/FilterModel.js'),
PopupsFilterViewModel = require('../ViewModels/Popups/PopupsFilterViewModel.js')
FilterModel = require('../../Models/FilterModel.js'),
PopupsFilterViewModel = require('../../ViewModels/Popups/PopupsFilterViewModel.js')
;
kn.showScreenPopup(PopupsFilterViewModel, [new FilterModel()]);

View file

@ -12,14 +12,14 @@
kn = require('kn'),
AppSettings = require('../Storages/AppSettings.js'),
LocalStorage = require('../Storages/LocalStorage.js'),
Data = require('../Storages/WebMailDataStorage.js'),
Cache = require('../Storages/WebMailCacheStorage.js'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
AppSettings = require('../../Storages/AppSettings.js'),
LocalStorage = require('../../Storages/LocalStorage.js'),
Data = require('../../Storages/WebMailDataStorage.js'),
Cache = require('../../Storages/WebMailCacheStorage.js'),
Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
PopupsFolderCreateViewModel = require('../ViewModels/Popups/PopupsFolderCreateViewModel.js'),
PopupsFolderSystemViewModel = require('../ViewModels/Popups/PopupsFolderSystemViewModel.js')
PopupsFolderCreateViewModel = require('../../ViewModels/Popups/PopupsFolderCreateViewModel.js'),
PopupsFolderSystemViewModel = require('../../ViewModels/Popups/PopupsFolderSystemViewModel.js')
;
/**
@ -98,7 +98,7 @@
SettingsFolders.prototype.folderEditOnEnter = function (oFolder)
{
var
RL = require('../Boots/RainLoopApp.js'),
App = require('../../Apps/RainLoopApp.js'),
sEditName = oFolder ? Utils.trim(oFolder.nameForEdit()) : ''
;
@ -116,7 +116,7 @@
oData && oData.ErrorCode ? Utils.getNotification(oData.ErrorCode) : Utils.i18n('NOTIFICATIONS/CANT_RENAME_FOLDER'));
}
RL.folders();
App.folders();
}, oFolder.fullNameRaw, sEditName);
@ -159,7 +159,7 @@
this.folderForDeletion(null);
var
RL = require('../Boots/RainLoopApp.js'),
App = require('../../Apps/RainLoopApp.js'),
fRemoveFolder = function (oFolder) {
if (oFolderToRemove === oFolder)
@ -188,7 +188,7 @@
oData && oData.ErrorCode ? Utils.getNotification(oData.ErrorCode) : Utils.i18n('NOTIFICATIONS/CANT_DELETE_FOLDER'));
}
RL.folders();
App.folders();
}, oFolderToRemove.fullNameRaw);

View file

@ -7,6 +7,7 @@
var
$ = require('$'),
ko = require('ko'),
_ = require('_'),
Enums = require('Enums'),
Consts = require('Consts'),
@ -14,11 +15,11 @@
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
Data = require('../Storages/WebMailDataStorage.js'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
Data = require('../../Storages/WebMailDataStorage.js'),
Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
kn = require('kn'),
PopupsLanguagesViewModel = require('../ViewModels/Popups/PopupsLanguagesViewModel.js')
PopupsLanguagesViewModel = require('../../ViewModels/Popups/PopupsLanguagesViewModel.js')
;
/**

View file

@ -6,16 +6,17 @@
var
ko = require('ko'),
_ = require('_'),
Enums = require('Enums'),
Utils = require('Utils'),
NewHtmlEditorWrapper = require('NewHtmlEditorWrapper'),
Data = require('../Storages/WebMailDataStorage.js'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
Data = require('../../Storages/WebMailDataStorage.js'),
Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
kn = require('kn'),
PopupsIdentityViewModel = require('../ViewModels/Popups/PopupsIdentityViewModel.js')
PopupsIdentityViewModel = require('../../ViewModels/Popups/PopupsIdentityViewModel.js')
;
/**
@ -133,7 +134,7 @@
this.identityForDeletion(null);
var
RL = require('../Boots/RainLoopApp.js'),
App = require('../../Apps/RainLoopApp.js'),
fRemoveFolder = function (oIdentity) {
return oIdentityToRemove === oIdentity;
}
@ -144,7 +145,7 @@
this.identities.remove(fRemoveFolder);
Remote.identityDelete(function () {
RL.accountsAndIdentities();
App.accountsAndIdentities();
}, oIdentityToRemove.id);
}
}

View file

@ -6,13 +6,14 @@
var
ko = require('ko'),
_ = require('_'),
Enums = require('Enums'),
Utils = require('Utils'),
NewHtmlEditorWrapper = require('NewHtmlEditorWrapper'),
Data = require('../Storages/WebMailDataStorage.js'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js')
Data = require('../../Storages/WebMailDataStorage.js'),
Remote = require('../../Storages/WebMailAjaxRemoteStorage.js')
;
/**

View file

@ -9,11 +9,11 @@
kn = require('kn'),
Data = require('../Storages/WebMailDataStorage.js'),
Data = require('../../Storages/WebMailDataStorage.js'),
PopupsAddOpenPgpKeyViewModel = require('../ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js'),
PopupsGenerateNewOpenPgpKeyViewModel = require('../ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js'),
PopupsViewOpenPgpKeyViewModel = require('../ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js')
PopupsAddOpenPgpKeyViewModel = require('../../ViewModels/Popups/PopupsAddOpenPgpKeyViewModel.js'),
PopupsGenerateNewOpenPgpKeyViewModel = require('../../ViewModels/Popups/PopupsGenerateNewOpenPgpKeyViewModel.js'),
PopupsViewOpenPgpKeyViewModel = require('../../ViewModels/Popups/PopupsViewOpenPgpKeyViewModel.js')
;
/**
@ -78,8 +78,8 @@
Data.openpgpKeyring.store();
var RL = require('../Boots/RainLoopApp.js');
RL.reloadOpenPgpKeys();
var App = require('../../Apps/RainLoopApp.js');
App.reloadOpenPgpKeys();
}
}
};

View file

@ -11,10 +11,10 @@
Globals = require('Globals'),
Utils = require('Utils'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js'),
Remote = require('../../Storages/WebMailAjaxRemoteStorage.js'),
kn = require('kn'),
PopupsTwoFactorTestViewModel = require('../ViewModels/Popups/PopupsTwoFactorTestViewModel.js')
PopupsTwoFactorTestViewModel = require('../../ViewModels/Popups/PopupsTwoFactorTestViewModel.js')
;
/**

View file

@ -11,8 +11,8 @@
{
var
Utils = require('Utils'),
RL = require('../Boots/RainLoopApp.js'),
Data = require('../Storages/WebMailDataStorage.js')
App = require('../../Apps/RainLoopApp.js'),
Data = require('../../Storages/WebMailDataStorage.js')
;
this.googleEnable = Data.googleEnable;
@ -36,40 +36,40 @@
this.connectGoogle = Utils.createCommand(this, function () {
if (!this.googleLoggined())
{
RL.googleConnect();
App.googleConnect();
}
}, function () {
return !this.googleLoggined() && !this.googleActions();
});
this.disconnectGoogle = Utils.createCommand(this, function () {
RL.googleDisconnect();
App.googleDisconnect();
});
this.connectFacebook = Utils.createCommand(this, function () {
if (!this.facebookLoggined())
{
RL.facebookConnect();
App.facebookConnect();
}
}, function () {
return !this.facebookLoggined() && !this.facebookActions();
});
this.disconnectFacebook = Utils.createCommand(this, function () {
RL.facebookDisconnect();
App.facebookDisconnect();
});
this.connectTwitter = Utils.createCommand(this, function () {
if (!this.twitterLoggined())
{
RL.twitterConnect();
App.twitterConnect();
}
}, function () {
return !this.twitterLoggined() && !this.twitterActions();
});
this.disconnectTwitter = Utils.createCommand(this, function () {
RL.twitterDisconnect();
App.twitterDisconnect();
});
}

View file

@ -8,13 +8,14 @@
window = require('window'),
$ = require('$'),
ko = require('ko'),
_ = require('_'),
Enums = require('Enums'),
Utils = require('Utils'),
LinkBuilder = require('LinkBuilder'),
Data = require('../Storages/WebMailDataStorage.js'),
Remote = require('../Storages/WebMailAjaxRemoteStorage.js')
Data = require('../../Storages/WebMailDataStorage.js'),
Remote = require('../../Storages/WebMailAjaxRemoteStorage.js')
;
/**

View file

@ -63,9 +63,9 @@
if (Consts.Values.TokenErrorLimit < Globals.iTokenErrorCount)
{
if (Globals.__RL)
if (Globals.__APP)
{
Globals.__RL.loginAndLogoutReload(true);
Globals.__APP.loginAndLogoutReload(true);
}
}
@ -76,9 +76,9 @@
window.__rlah_clear();
}
if (Globals.__RL)
if (Globals.__APP)
{
Globals.__RL.loginAndLogoutReload(true);
Globals.__APP.loginAndLogoutReload(true);
}
}
}

View file

@ -381,9 +381,9 @@
}
else if (Data.useThreads())
{
if (Globals.__RL)
if (Globals.__APP)
{
Globals.__RL.reloadFlagsCurrentMessageListAndMessageFromCache();
Globals.__APP.reloadFlagsCurrentMessageListAndMessageFromCache();
}
}
};

View file

@ -325,9 +325,9 @@
if (Enums.Layout.NoPreview === this.layout() &&
-1 < window.location.hash.indexOf('message-preview'))
{
if (Globals.__RL)
if (Globals.__APP)
{
Globals.__RL.historyBack();
Globals.__APP.historyBack();
}
}
}
@ -925,9 +925,9 @@
Cache.initMessageFlagsFromCache(oMessage);
if (oMessage.unseen())
{
if (Globals.__RL)
if (Globals.__APP)
{
Globals.__RL.setMessageSeen(oMessage);
Globals.__APP.setMessageSeen(oMessage);
}
}

View file

@ -89,14 +89,14 @@
AbstractSystemDropDownViewModel.prototype.logoutClick = function ()
{
var RL = require('../Boots/RainLoopApp.js');
var App = require('../Apps/RainLoopApp.js');
Remote.logout(function () {
if (window.__rlah_clear)
{
window.__rlah_clear();
}
RL.loginAndLogoutReload(true, AppSettings.settingsGet('ParentEmail') && 0 < AppSettings.settingsGet('ParentEmail').length);
App.loginAndLogoutReload(true, AppSettings.settingsGet('ParentEmail') && 0 < AppSettings.settingsGet('ParentEmail').length);
});
};

View file

@ -64,8 +64,8 @@
{
if (oData.Result)
{
var RL = require('../Boots/AdminApp.js');
RL.loginAndLogoutReload();
var App = require('../Apps/AdminApp.js');
App.loginAndLogoutReload();
}
else if (oData.ErrorCode)
{

View file

@ -36,8 +36,8 @@
AdminPaneViewModel.prototype.logoutClick = function ()
{
Remote.adminLogout(function () {
var RL = require('../Boots/AdminApp.js');
RL.loginAndLogoutReload();
var App = require('../Apps/AdminApp.js');
App.loginAndLogoutReload();
});
};

View file

@ -133,8 +133,8 @@
}
else
{
var RL = require('../Boots/RainLoopApp.js');
RL.loginAndLogoutReload();
var App = require('../Apps/RainLoopApp.js');
App.loginAndLogoutReload();
}
}
else if (oData.ErrorCode)
@ -294,8 +294,8 @@
{
self.submitRequest(true);
var RL = require('../Boots/RainLoopApp.js');
RL.loginAndLogoutReload();
var App = require('../Apps/RainLoopApp.js');
App.loginAndLogoutReload();
}
else
{

View file

@ -62,7 +62,7 @@
var
self = this,
RL = require('../Boots/RainLoopApp.js')
App = require('../Apps/RainLoopApp.js')
;
oDom
@ -76,7 +76,7 @@
if (oFolder && oEvent)
{
bCollapsed = oFolder.collapsed();
RL.setExpandedFolder(oFolder.fullNameHash, bCollapsed);
App.setExpandedFolder(oFolder.fullNameHash, bCollapsed);
oFolder.collapsed(!bCollapsed);
oEvent.preventDefault();
@ -159,7 +159,7 @@
if (oFolder)
{
bCollapsed = oFolder.collapsed();
RL.setExpandedFolder(oFolder.fullNameHash, bCollapsed);
App.setExpandedFolder(oFolder.fullNameHash, bCollapsed);
oFolder.collapsed(!bCollapsed);
}
}
@ -186,10 +186,10 @@
window.clearTimeout(this.iDropOverTimer);
if (oFolder && oFolder.collapsed())
{
var RL = require('../Boots/RainLoopApp.js');
var App = require('../Apps/RainLoopApp.js');
this.iDropOverTimer = window.setTimeout(function () {
oFolder.collapsed(false);
RL.setExpandedFolder(oFolder.fullNameHash, true);
App.setExpandedFolder(oFolder.fullNameHash, true);
Utils.windowResize();
}, 500);
}
@ -242,7 +242,7 @@
if (oToFolder && oUi && oUi.helper)
{
var
RL = require('../Boots/RainLoopApp.js'),
App = require('../Apps/RainLoopApp.js'),
sFromFolderFullNameRaw = oUi.helper.data('rl-folder'),
bCopy = $html.hasClass('rl-ctrl-key-pressed'),
aUids = oUi.helper.data('rl-uids')
@ -250,7 +250,7 @@
if (Utils.isNormal(sFromFolderFullNameRaw) && '' !== sFromFolderFullNameRaw && Utils.isArray(aUids))
{
RL.moveMessagesToFolder(sFromFolderFullNameRaw, aUids, oToFolder.fullNameRaw, bCopy);
App.moveMessagesToFolder(sFromFolderFullNameRaw, aUids, oToFolder.fullNameRaw, bCopy);
}
}
};

View file

@ -39,7 +39,7 @@
*/
function MailBoxMessageListViewModel()
{
var RL = require('../Boots/RainLoopApp.js');
var App = require('../Apps/RainLoopApp.js');
KnoinAbstractViewModel.call(this, 'Right', 'MailMessageList');
@ -183,31 +183,31 @@
}, this.canBeMoved);
this.deleteWithoutMoveCommand = Utils.createCommand(this, function () {
RL.deleteMessagesFromFolder(Enums.FolderType.Trash,
App.deleteMessagesFromFolder(Enums.FolderType.Trash,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), false);
}, this.canBeMoved);
this.deleteCommand = Utils.createCommand(this, function () {
RL.deleteMessagesFromFolder(Enums.FolderType.Trash,
App.deleteMessagesFromFolder(Enums.FolderType.Trash,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
this.archiveCommand = Utils.createCommand(this, function () {
RL.deleteMessagesFromFolder(Enums.FolderType.Archive,
App.deleteMessagesFromFolder(Enums.FolderType.Archive,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
this.spamCommand = Utils.createCommand(this, function () {
RL.deleteMessagesFromFolder(Enums.FolderType.Spam,
App.deleteMessagesFromFolder(Enums.FolderType.Spam,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
this.notSpamCommand = Utils.createCommand(this, function () {
RL.deleteMessagesFromFolder(Enums.FolderType.NotSpam,
App.deleteMessagesFromFolder(Enums.FolderType.NotSpam,
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), true);
}, this.canBeMoved);
@ -217,7 +217,7 @@
this.reloadCommand = Utils.createCommand(this, function () {
if (!Data.messageListCompleteLoadingThrottle())
{
RL.reloadMessageList(false, true);
App.reloadMessageList(false, true);
}
});
@ -307,8 +307,8 @@
{
if (this.canBeMoved())
{
var RL = require('../Boots/RainLoopApp.js');
RL.moveMessagesToFolder(
var App = require('../Apps/RainLoopApp.js');
App.moveMessagesToFolder(
Data.currentFolderFullNameRaw(),
Data.messageListCheckedOrSelectedUidsWithSubMails(), sToFolderFullNameRaw, bCopy);
}
@ -396,7 +396,7 @@
aUids = [],
oFolder = null,
iAlreadyUnread = 0,
RL = require('../Boots/RainLoopApp.js')
App = require('../Apps/RainLoopApp.js')
;
if (Utils.isUnd(aMessages))
@ -464,7 +464,7 @@
break;
}
RL.reloadFlagsCurrentMessageListAndMessageFromCache();
App.reloadFlagsCurrentMessageListAndMessageFromCache();
}
};
@ -477,7 +477,7 @@
var
oFolder = null,
aMessages = Data.messageList(),
RL = require('../Boots/RainLoopApp.js')
App = require('../Apps/RainLoopApp.js')
;
if ('' !== sFolderFullNameRaw)
@ -516,7 +516,7 @@
break;
}
RL.reloadFlagsCurrentMessageListAndMessageFromCache();
App.reloadFlagsCurrentMessageListAndMessageFromCache();
}
}
};
@ -631,7 +631,7 @@
{
var
self = this,
RL = require('../Boots/RainLoopApp.js')
App = require('../Apps/RainLoopApp.js')
;
this.oContentVisible = $('.b-content', oDom);
@ -663,7 +663,7 @@
oMessage.lastInCollapsedThreadLoading(true);
oMessage.lastInCollapsedThread(!oMessage.lastInCollapsedThread());
RL.reloadMessageList();
App.reloadMessageList();
}
return false;
@ -894,8 +894,7 @@
}
var
RL = require('../Boots/RainLoopApp.js'),
oJua = new Jua({
oJua = new Jua({
'action': LinkBuilder.append(),
'name': 'AppendFile',
'queueSize': 1,
@ -934,7 +933,7 @@
return false;
}, this))
.on('onComplete', _.bind(function () {
RL.reloadMessageList(true, true);
require('../Apps/RainLoopApp.js').reloadMessageList(true, true);
}, this))
;

View file

@ -37,7 +37,7 @@
var
self = this,
sLastEmail = '',
RL = require('../Boots/RainLoopApp.js'),
App = require('../Apps/RainLoopApp.js'),
createCommandHelper = function (sType) {
return Utils.createCommand(self, function () {
this.replyOrforward(sType);
@ -102,7 +102,7 @@
this.deleteCommand = Utils.createCommand(this, function () {
if (this.message())
{
RL.deleteMessagesFromFolder(Enums.FolderType.Trash,
App.deleteMessagesFromFolder(Enums.FolderType.Trash,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@ -111,7 +111,7 @@
this.deleteWithoutMoveCommand = Utils.createCommand(this, function () {
if (this.message())
{
RL.deleteMessagesFromFolder(Enums.FolderType.Trash,
App.deleteMessagesFromFolder(Enums.FolderType.Trash,
Data.currentFolderFullNameRaw(),
[this.message().uid], false);
}
@ -120,7 +120,7 @@
this.archiveCommand = Utils.createCommand(this, function () {
if (this.message())
{
RL.deleteMessagesFromFolder(Enums.FolderType.Archive,
App.deleteMessagesFromFolder(Enums.FolderType.Archive,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@ -129,7 +129,7 @@
this.spamCommand = Utils.createCommand(this, function () {
if (this.message())
{
RL.deleteMessagesFromFolder(Enums.FolderType.Spam,
App.deleteMessagesFromFolder(Enums.FolderType.Spam,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@ -138,7 +138,7 @@
this.notSpamCommand = Utils.createCommand(this, function () {
if (this.message())
{
RL.deleteMessagesFromFolder(Enums.FolderType.NotSpam,
App.deleteMessagesFromFolder(Enums.FolderType.NotSpam,
this.message().folderFullNameRaw,
[this.message().uid], true);
}
@ -343,7 +343,7 @@
{
var
self = this,
RL = require('../Boots/RainLoopApp.js')
App = require('../Apps/RainLoopApp.js')
;
this.fullScreenMode.subscribe(function (bValue) {
@ -382,7 +382,7 @@
})
.on('click', 'a', function (oEvent) {
// setup maito protocol
return !(!!oEvent && 3 !== oEvent['which'] && RL.mailToHelper($(this).attr('href')));
return !(!!oEvent && 3 !== oEvent['which'] && App.mailToHelper($(this).attr('href')));
})
.on('click', '.attachmentsPlace .attachmentPreview', function (oEvent) {
if (oEvent && oEvent.stopPropagation)
@ -398,7 +398,7 @@
if (oAttachment && oAttachment.download)
{
RL.download(oAttachment.linkDownload());
App.download(oAttachment.linkDownload());
}
})
;
@ -713,8 +713,8 @@
Cache.storeMessageFlagsToCache(oMessage);
var RL = require('../Boots/RainLoopApp.js');
RL.reloadFlagsCurrentMessageListAndMessageFromCache();
var App = require('../Apps/RainLoopApp.js');
App.reloadFlagsCurrentMessageListAndMessageFromCache();
}
};

View file

@ -25,7 +25,7 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsAddAccount');
var RL = require('../../Boots/RainLoopApp.js');
var App = require('../../Apps/RainLoopApp.js');
this.email = ko.observable('');
this.password = ko.observable('');
@ -65,7 +65,7 @@
{
if (oData.Result)
{
RL.accountsAndIdentities();
App.accountsAndIdentities();
this.cancelCommand();
}
else if (oData.ErrorCode)

View file

@ -23,7 +23,7 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsAddOpenPgpKey');
var RL = require('../../Boots/RainLoopApp.js');
var App = require('../../Apps/RainLoopApp.js');
this.key = ko.observable('');
this.key.error = ko.observable(false);
@ -79,7 +79,7 @@
oOpenpgpKeyring.store();
RL.reloadOpenPgpKeys();
App.reloadOpenPgpKeys();
Utils.delegateRun(this, 'cancelCommand');
return true;

View file

@ -45,7 +45,7 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsCompose');
var RL = require('../../Boots/RainLoopApp.js');
var App = require('../../Apps/RainLoopApp.js');
this.oEditor = null;
this.aDraftInfo = null;
@ -219,7 +219,7 @@
this.deleteCommand = Utils.createCommand(this, function () {
RL.deleteMessagesFromFolderWithoutCheck(this.draftFolder(), [this.draftUid()]);
App.deleteMessagesFromFolderWithoutCheck(this.draftFolder(), [this.draftUid()]);
kn.hideScreenPopup(PopupsComposeViewModel);
}, function () {
@ -278,7 +278,7 @@
}
Cache.setMessageFlagsToCache(this.aDraftInfo[2], this.aDraftInfo[1], aFlagsCache);
RL.reloadFlagsCurrentMessageListAndMessageFromCache();
App.reloadFlagsCurrentMessageListAndMessageFromCache();
Cache.setFolderHash(this.aDraftInfo[2], '');
}
}
@ -415,8 +415,8 @@
PopupsComposeViewModel.prototype.emailsSource = function (oData, fResponse)
{
var RL = require('../../Boots/RainLoopApp.js');
RL.getAutocomplete(oData.term, function (aData) {
var App = require('../../Apps/RainLoopApp.js');
App.getAutocomplete(oData.term, function (aData) {
fResponse(_.map(aData, function (oEmailItem) {
return oEmailItem.toLine(false);
}));
@ -446,7 +446,7 @@
PopupsComposeViewModel.prototype.reloadDraftFolder = function ()
{
var
RL = require('../../Boots/RainLoopApp.js'),
App = require('../../Apps/RainLoopApp.js'),
sDraftFolder = Data.draftFolder()
;
@ -455,11 +455,11 @@
Cache.setFolderHash(sDraftFolder, '');
if (Data.currentFolderFullNameRaw() === sDraftFolder)
{
RL.reloadMessageList(true);
App.reloadMessageList(true);
}
else
{
RL.folderInformation(sDraftFolder);
App.folderInformation(sDraftFolder);
}
}
};

View file

@ -353,10 +353,10 @@
var
self = this,
RL = require('../../Boots/RainLoopApp.js')
App = require('../../Apps/RainLoopApp.js')
;
RL.contactsSync(function (sResult, oData) {
App.contactsSync(function (sResult, oData) {
if (Enums.StorageResultType.Success !== sResult || !oData || !oData.Result)
{
window.alert(Utils.getNotification(
@ -401,8 +401,8 @@
PopupsContactsViewModel.prototype.contactTagsSource = function (oData, fResponse)
{
var RL = require('../../Boots/RainLoopApp.js');
RL.getContactTagsAutocomplete(oData.term, function (aData) {
var App = require('../../Apps/RainLoopApp.js');
App.getContactTagsAutocomplete(oData.term, function (aData) {
fResponse(_.map(aData, function (oTagItem) {
return oTagItem.toLine(false);
}));
@ -487,14 +487,14 @@
PopupsContactsViewModel.prototype.exportVcf = function ()
{
var RL = require('../../Boots/RainLoopApp.js');
RL.download(LinkBuilder.exportContactsVcf());
var App = require('../../Apps/RainLoopApp.js');
App.download(LinkBuilder.exportContactsVcf());
};
PopupsContactsViewModel.prototype.exportCsv = function ()
{
var RL = require('../../Boots/RainLoopApp.js');
RL.download(LinkBuilder.exportContactsCsv());
var App = require('../../Apps/RainLoopApp.js');
App.download(LinkBuilder.exportContactsCsv());
};
PopupsContactsViewModel.prototype.initUploader = function ()

View file

@ -235,8 +235,8 @@
{
if (oData.Result)
{
var RL = require('../../Boots/AdminApp.js');
RL.reloadDomainList();
var App = require('../../Apps/AdminApp.js');
App.reloadDomainList();
this.closeCommand();
}

View file

@ -26,7 +26,7 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsFolderClear');
var RL = require('../../Boots/RainLoopApp.js');
var App = require('../../Apps/RainLoopApp.js');
this.selectedFolder = ko.observable(null);
this.clearingProcess = ko.observable(false);
@ -62,13 +62,17 @@
this.clearingProcess(true);
oFolderToClear.messageCountAll(0);
oFolderToClear.messageCountUnread(0);
Cache.setFolderHash(oFolderToClear.fullNameRaw, '');
Remote.folderClear(function (sResult, oData) {
self.clearingProcess(false);
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
RL.reloadMessageList(true);
App.reloadMessageList(true);
self.cancelCommand();
}
else

View file

@ -65,7 +65,7 @@
this.createFolder = Utils.createCommand(this, function () {
var
RL = require('../../Boots/RainLoopApp.js'),
App = require('../../Apps/RainLoopApp.js'),
sParentFolderName = this.selectedParentValue()
;
@ -80,7 +80,7 @@
Data.foldersCreating(false);
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
RL.folders();
App.folders();
}
else
{

View file

@ -25,7 +25,7 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsGenerateNewOpenPgpKey');
var RL = require('../../Boots/RainLoopApp.js');
var App = require('../../Apps/RainLoopApp.js');
this.email = ko.observable('');
this.email.focus = ko.observable('');
@ -78,7 +78,7 @@
oOpenpgpKeyring.publicKeys.importKey(mKeyPair.publicKeyArmored);
oOpenpgpKeyring.store();
RL.reloadOpenPgpKeys();
App.reloadOpenPgpKeys();
Utils.delegateRun(self, 'cancelCommand');
}

View file

@ -25,7 +25,7 @@
{
KnoinAbstractViewModel.call(this, 'Popups', 'PopupsIdentity');
var RL = require('../../Boots/RainLoopApp.js');
var App = require('../../Apps/RainLoopApp.js');
this.id = '';
this.edit = ko.observable(false);
@ -85,7 +85,7 @@
{
if (oData.Result)
{
RL.accountsAndIdentities();
App.accountsAndIdentities();
this.cancelCommand();
}
else if (oData.ErrorCode)

View file

@ -141,7 +141,7 @@ cfg.paths.js = {
name: 'libs.js',
src: [
'vendors/modernizr.js',
'vendors/underscore/underscore-1.5.2.min.js',
'vendors/underscore/1.6.0/underscore-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',
@ -234,10 +234,10 @@ gulp.task('js:libs', function() {
gulp.task('js:app', function() {
return browserify({
'basedir': './dev/',
'entries': './RainLoop.js',
'detectGlobals': false,
'debug': false
})
.add('./_RainLoopBoot.js')
.bundle()
.pipe(source(cfg.paths.js.app.name))
.pipe(gulp.dest(cfg.paths.staticJS))
@ -247,10 +247,10 @@ gulp.task('js:app', function() {
gulp.task('js:admin', function() {
return browserify({
'basedir': './dev/',
'entries': './Admin.js',
'detectGlobals': false,
'debug': false
})
.add('./_AdminBoot.js')
.bundle()
.pipe(source(cfg.paths.js.admin.name))
.pipe(gulp.dest(cfg.paths.staticJS))

View file

@ -61,7 +61,7 @@
"$html": "./dev/External/$html.js",
"$doc": "./dev/External/$doc.js",
"$div": "./dev/External/$div.js",
"Base64": "./dev/Common/Base64.js",
"Consts": "./dev/Common/Consts.js",
"Globals": "./dev/Common/Globals.js",
@ -77,8 +77,7 @@
"KnoinAbstractBoot": "./dev/Knoin/KnoinAbstractBoot.js",
"KnoinAbstractScreen": "./dev/Knoin/KnoinAbstractScreen.js",
"KnoinAbstractViewModel": "./dev/Knoin/KnoinAbstractViewModel.js",
"kn": "./dev/Knoin/Knoin.js",
"Boot": "./dev/Boots/Boot.js"
"kn": "./dev/Knoin/Knoin.js"
},
"devDependencies": {

View file

@ -195,15 +195,63 @@ class ImapClient extends \MailSo\Net\NetClient
try
{
if ($bUseAuthPlainIfSupported && $this->IsSupported('AUTH=PLAIN'))
// TODO
if (false && $this->IsSupported('AUTH=CRAM-MD5'))
{
$this->SendRequest('AUTHENTICATE', array('CRAM-MD5'));
$aResponse = $this->parseResponseWithValidation();
if ($aResponse && \is_array($aResponse) && 0 < \count($aResponse) &&
\MailSo\Imap\Enumerations\ResponseType::CONTINUATION === $aResponse[\count($aResponse) - 1]->ResponseType)
{
$oContinuationResponse = null;
foreach ($aResponse as $oResponse)
{
if ($oResponse && \MailSo\Imap\Enumerations\ResponseType::CONTINUATION === $oResponse->ResponseType)
{
$oContinuationResponse = $oResponse;
}
}
if ($oContinuationResponse)
{
$sToken = \base64_encode("\0".$sLogin."\0".$sPassword);
if ($this->oLogger)
{
$this->oLogger->AddSecret($sToken);
}
$this->Logger()->WriteDump($aResponse);
$this->sendRaw($sToken, true, '*******');
$this->parseResponseWithValidation();
}
else
{
// TODO
}
}
}
else if ($bUseAuthPlainIfSupported && $this->IsSupported('AUTH=PLAIN'))
{
$sToken = \base64_encode("\0".$sLogin."\0".$sPassword);
if ($this->oLogger)
{
$this->oLogger->AddSecret(\base64_encode("\0".$sLogin."\0".$sPassword));
$this->oLogger->AddSecret($sToken);
}
$this->SendRequestWithCheck('AUTHENTICATE',
array('PLAIN', \base64_encode("\0".$sLogin."\0".$sPassword)));
if ($this->IsSupported('AUTH=SASL-IR') && false)
{
$this->SendRequestWithCheck('AUTHENTICATE', array('PLAIN', $sToken));
}
else
{
$this->SendRequest('AUTHENTICATE', array('PLAIN'));
$this->parseResponseWithValidation();
$this->sendRaw($sToken, true, '*******');
$this->parseResponseWithValidation();
}
}
else
{

View file

@ -423,8 +423,17 @@ abstract class NetClient
$iReadedLen = \strlen($this->sResponseBuffer);
if (null === $mReadLen || $bForceLogin)
{
$this->writeLogWithCrlf('< '.$this->sResponseBuffer, //.' ['.$iReadedLen.']',
\MailSo\Log\Enumerations\Type::INFO);
$iLimit = 5000; // 5kb
if ($iLimit < $iReadedLen)
{
$this->writeLogWithCrlf('[cutted:'.$iReadedLen.'b] < '.\substr($this->sResponseBuffer.'...', 0, $iLimit),
\MailSo\Log\Enumerations\Type::INFO);
}
else
{
$this->writeLogWithCrlf('< '.$this->sResponseBuffer, //.' ['.$iReadedLen.']',
\MailSo\Log\Enumerations\Type::INFO);
}
}
else
{

View file

@ -12,8 +12,8 @@
<meta http-equiv="refresh" content="0; URL=./?/BadBrowser" />
<![endif]-->
<script type="text/javascript" data-cfasync="false">
if (!navigator || !navigator.cookieEnabled) {
document.location.replace('./?/NoCookie');
if (!window.navigator || !window.navigator.cookieEnabled) {
window.document.location.replace('./?/NoCookie');
}
</script>
<meta name="Author" content="RainLoop Team" />
@ -26,11 +26,11 @@
<link type="text/css" rel="stylesheet" id="rlThemeLink" />
<script type="text/javascript" data-cfasync="false" src="{{BaseAppBootScriptLink}}"></script>
<script type="text/javascript" data-cfasync="false">
__includeScr('{{BaseAppDataScriptLink}}' + (window.__rlah ? window.__rlah() || '0' : '0') + '/' + Math.random().toString().substr(2) + '/');
__includeScr('{{BaseAppDataScriptLink}}' + (window.__rlah ? window.__rlah() || '0' : '0') + '/' + window.Math.random().toString().substr(2) + '/');
</script>
<script type="text/javascript" data-cfasync="false">
if (window.rainloopAppData && window.rainloopAppData['NewThemeLink']) {
document.getElementById('rlThemeLink').href = window.rainloopAppData['NewThemeLink'];
window.document.getElementById('rlThemeLink').href = window.rainloopAppData['NewThemeLink'];
}
</script>
</head>
@ -45,7 +45,7 @@
</div>
</div>
<script type="text/javascript" data-cfasync="false">
var oE = document.getElementById('rl-loading');
var oE = window.document.getElementById('rl-loading');
if (oE && oE.style) {
oE.style.opacity = 0;
window.setTimeout(function () {

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;
@ -2226,7 +2226,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;

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -5,4 +5,4 @@ var JSON;JSON||(JSON={}),function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a]
/*! RainLoop Simple Pace v1.0 (c) 2013 RainLoop Team; Licensed under MIT */
!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 Index Helper v1.1 (c) 2014 RainLoop Team; Licensed under MIT */
!function(t,n){function e(){}e.prototype.s=t.sessionStorage,e.prototype.t=t.top||t,e.prototype.getHash=function(){var t=null;if(this.s)t=this.s.getItem("__rlA")||null;else if(this.t){var e=this.t.name&&n&&"{"===this.t.name.toString().substr(0,1)?n.parse(this.t.name.toString()):null;t=e?e.__rlA||null:null}return t},e.prototype.setHash=function(){var e=t.rainloopAppData,s=null;this.s?this.s.setItem("__rlA",e&&e.AuthAccountHash?e.AuthAccountHash:""):this.t&&n&&(s={},s.__rlA=e&&e.AuthAccountHash?e.AuthAccountHash:"",this.t.name=n.stringify(s))},e.prototype.clearHash=function(){this.s?this.s.setItem("__rlA",""):this.t&&(this.t.name="")},t._rlhh=new e,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()},t.__includeScr=function(t){document.write(unescape('%3Cscript data-cfasync="false" type="text/javascript" src="'+t+'"%3E%3C/script%3E'))},t.__showError=function(){var n=document.getElementById("rl-loading"),e=document.getElementById("rl-loading-error");n&&(n.style.display="none"),e&&(e.style.display="block"),t.SimplePace&&t.SimplePace.set(100)},t.__simplePace=function(n){t.SimplePace&&t.SimplePace.add(n)},t.__runBoot=function(n){t.__RLBOOT&&!n?t.__RLBOOT(function(t){t||__showError()}):__showError()}}(window,window.JSON);
!function(t,n,e){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 n=this.t.name&&e&&"{"===this.t.name.toString().substr(0,1)?e.parse(this.t.name.toString()):null;t=n?n.__rlA||null:null}return t},s.prototype.setHash=function(){var n=t.rainloopAppData,s=null;this.s?this.s.setItem("__rlA",n&&n.AuthAccountHash?n.AuthAccountHash:""):this.t&&e&&(s={},s.__rlA=n&&n.AuthAccountHash?n.AuthAccountHash:"",this.t.name=e.stringify(s))},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()},t.__includeScr=function(t){n.write(unescape('%3Cscript data-cfasync="false" type="text/javascript" src="'+t+'"%3E%3C/script%3E'))},t.__showError=function(){var e=n.getElementById("rl-loading"),s=n.getElementById("rl-loading-error");e&&(e.style.display="none"),s&&(s.style.display="block"),t.SimplePace&&t.SimplePace.set(100)},t.__simplePace=function(n){t.SimplePace&&t.SimplePace.add(n)},t.__runBoot=function(n){t.__APP_BOOT&&!n?t.__APP_BOOT(function(t){t||__showError()}):__showError()}}(window,window.document,window.JSON);

File diff suppressed because one or more lines are too long

View file

@ -1,2 +1,2 @@
/*! RainLoop Index Helper v1.1 (c) 2014 RainLoop Team; Licensed under MIT */
!function(t,n){function e(){}e.prototype.s=t.sessionStorage,e.prototype.t=t.top||t,e.prototype.getHash=function(){var t=null;if(this.s)t=this.s.getItem("__rlA")||null;else if(this.t){var e=this.t.name&&n&&"{"===this.t.name.toString().substr(0,1)?n.parse(this.t.name.toString()):null;t=e?e.__rlA||null:null}return t},e.prototype.setHash=function(){var e=t.rainloopAppData,s=null;this.s?this.s.setItem("__rlA",e&&e.AuthAccountHash?e.AuthAccountHash:""):this.t&&n&&(s={},s.__rlA=e&&e.AuthAccountHash?e.AuthAccountHash:"",this.t.name=n.stringify(s))},e.prototype.clearHash=function(){this.s?this.s.setItem("__rlA",""):this.t&&(this.t.name="")},t._rlhh=new e,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()},t.__includeScr=function(t){document.write(unescape('%3Cscript data-cfasync="false" type="text/javascript" src="'+t+'"%3E%3C/script%3E'))},t.__showError=function(){var n=document.getElementById("rl-loading"),e=document.getElementById("rl-loading-error");n&&(n.style.display="none"),e&&(e.style.display="block"),t.SimplePace&&t.SimplePace.set(100)},t.__simplePace=function(n){t.SimplePace&&t.SimplePace.add(n)},t.__runBoot=function(n){t.__RLBOOT&&!n?t.__RLBOOT(function(t){t||__showError()}):__showError()}}(window,window.JSON);
!function(t,n,e){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 n=this.t.name&&e&&"{"===this.t.name.toString().substr(0,1)?e.parse(this.t.name.toString()):null;t=n?n.__rlA||null:null}return t},s.prototype.setHash=function(){var n=t.rainloopAppData,s=null;this.s?this.s.setItem("__rlA",n&&n.AuthAccountHash?n.AuthAccountHash:""):this.t&&e&&(s={},s.__rlA=n&&n.AuthAccountHash?n.AuthAccountHash:"",this.t.name=e.stringify(s))},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()},t.__includeScr=function(t){n.write(unescape('%3Cscript data-cfasync="false" type="text/javascript" src="'+t+'"%3E%3C/script%3E'))},t.__showError=function(){var e=n.getElementById("rl-loading"),s=n.getElementById("rl-loading-error");e&&(e.style.display="none"),s&&(s.style.display="block"),t.SimplePace&&t.SimplePace.set(100)},t.__simplePace=function(n){t.SimplePace&&t.SimplePace.add(n)},t.__runBoot=function(n){t.__APP_BOOT&&!n?t.__APP_BOOT(function(t){t||__showError()}):__showError()}}(window,window.document,window.JSON);

10
vendors/rl/rl.js vendored
View file

@ -1,5 +1,5 @@
/*! RainLoop Index Helper v1.1 (c) 2013 RainLoop Team; Licensed under MIT */
(function (window, JSON) {
/*! RainLoop Index Helper v1.2 (c) 2013 RainLoop Team; Licensed under MIT */
(function (window, document, JSON) {
/**
* @constructor
@ -85,8 +85,8 @@
};
window['__runBoot'] = function (bWithError) {
if (window.__RLBOOT && !bWithError) {
window.__RLBOOT(function (bV) {
if (window.__APP_BOOT && !bWithError) {
window.__APP_BOOT(function (bV) {
if (!bV) {
__showError();
}
@ -96,4 +96,4 @@
}
};
}(window, window.JSON));
}(window, window.document, window.JSON));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1343
vendors/underscore/1.6.0/underscore.js vendored Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,9 +0,0 @@
## How to contribute to Underscore.js
* Before you open a ticket or send a pull request, [search](https://github.com/jashkenas/underscore/issues) for previous discussions about the same feature or issue. Add to the earlier ticket if you find one.
* Before sending a pull request for a feature, be sure to have [tests](http://underscorejs.org/test/).
* Use the same coding style as the rest of the [codebase](https://github.com/jashkenas/underscore/blob/master/underscore.js).
* In your pull request, do not add documentation or re-build the minified `underscore-min.js` file. We'll do those things before cutting a new release.

View file

@ -1,22 +0,0 @@
__
/\ \ __
__ __ ___ \_\ \ __ _ __ ____ ___ ___ _ __ __ /\_\ ____
/\ \/\ \ /' _ `\ /'_ \ /'__`\/\ __\/ ,__\ / ___\ / __`\/\ __\/'__`\ \/\ \ /',__\
\ \ \_\ \/\ \/\ \/\ \ \ \/\ __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\ __/ __ \ \ \/\__, `\
\ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/
\/___/ \/_/\/_/\/__,_ /\/____/ \/_/ \/___/ \/____/\/___/ \/_/ \/____/\/_//\ \_\ \/___/
\ \____/
\/___/
Underscore.js is a utility-belt library for JavaScript that provides
support for the usual functional suspects (each, map, reduce, filter...)
without extending any core JavaScript objects.
For Docs, License, Tests, and pre-packed downloads, see:
http://underscorejs.org
Underscore is an open-sourced component of DocumentCloud:
https://github.com/documentcloud
Many thanks to our contributors:
https://github.com/jashkenas/underscore/contributors

View file

@ -1,6 +0,0 @@
{
"name": "underscore",
"version": "1.5.2",
"main": "underscore.js",
"ignore" : ["underscore-min.js", "docs", "test", "*.yml", "*.map"]
}

View file

@ -1,10 +0,0 @@
{
"name" : "underscore",
"description" : "JavaScript's functional programming helper library.",
"keywords" : ["util", "functional", "server", "client", "browser"],
"repo" : "jashkenas/underscore",
"main" : "underscore.js",
"scripts" : ["underscore.js"],
"version" : "1.5.2",
"license" : "MIT"
}

View file

@ -1,25 +0,0 @@
{
"name" : "underscore",
"description" : "JavaScript's functional programming helper library.",
"homepage" : "http://underscorejs.org",
"keywords" : ["util", "functional", "server", "client", "browser"],
"author" : "Jeremy Ashkenas <jeremy@documentcloud.org>",
"repository" : {"type": "git", "url": "git://github.com/jashkenas/underscore.git"},
"main" : "underscore.js",
"version" : "1.5.2",
"devDependencies": {
"phantomjs": "1.9.0-1"
},
"scripts": {
"test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true",
"build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/ .*/\" -m --source-map underscore-min.map -o underscore-min.js",
"doc": "docco underscore.js"
},
"licenses": [
{
"type": "MIT",
"url": "https://raw.github.com/jashkenas/underscore/master/LICENSE"
}
],
"files" : ["underscore.js", "underscore-min.js", "LICENSE"]
}