diff --git a/dev/Knoin/Knoin.js b/dev/Knoin/Knoin.js index a7b8f79f4..3f2612ecb 100644 --- a/dev/Knoin/Knoin.js +++ b/dev/Knoin/Knoin.js @@ -5,6 +5,7 @@ import ko from 'ko'; import hasher from 'hasher'; import crossroads from 'crossroads'; +import {Magics} from 'Common/Enums'; import {runHook} from 'Common/Plugins'; import {$html, VIEW_MODELS, popupVisibilityNames} from 'Common/Globals'; @@ -590,8 +591,41 @@ function commandDecorator(canExecute = true) }; } +/** + * @param {miced} $items + * @returns {Function} + */ +function settingsMenuKeysHendler($items) +{ + return _.throttle((event, handler) => { + + const up = handler && 'up' === handler.shortcut; + + if (event && $items.length) + { + let index = $items.index($items.filter('.selected')); + if (up && 0 < index) + { + index -= 1; + } + else if (!up && index < $items.length - 1) + { + index += 1; + } + + const resultHash = $items.eq(index).attr('href'); + if (resultHash) + { + setHash(resultHash, false, true); + } + } + + }, Magics.Time200ms); +} + export { commandDecorator, commandDecorator as command, viewDecorator, viewDecorator as view, viewDecorator as viewModel, - popupDecorator, popupDecorator as popup + popupDecorator, popupDecorator as popup, + settingsMenuKeysHendler }; diff --git a/dev/Screen/Admin/Settings.js b/dev/Screen/Admin/Settings.js index fba18a707..3477dc4d7 100644 --- a/dev/Screen/Admin/Settings.js +++ b/dev/Screen/Admin/Settings.js @@ -7,9 +7,9 @@ import {runSettingsViewModelHooks} from 'Common/Plugins'; import {AbstractSettingsScreen} from 'Screen/AbstractSettings'; import {GeneralAdminSettings} from 'Settings/Admin/General'; +import {DomainsAdminSettings} from 'Settings/Admin/Domains'; import {LoginAdminSettings} from 'Settings/Admin/Login'; import {ContactsAdminSettings} from 'Settings/Admin/Contacts'; -import {DomainsAdminSettings} from 'Settings/Admin/Domains'; import {SecurityAdminSettings} from 'Settings/Admin/Security'; import {SocialAdminSettings} from 'Settings/Admin/Social'; import {PluginsAdminSettings} from 'Settings/Admin/Plugins'; @@ -34,29 +34,38 @@ class SettingsAdminScreen extends AbstractSettingsScreen * @param {Function=} fCallback = null */ setupSettings(fCallback = null) { + + let branding = null, + licensing = null; + + if (RL_COMMUNITY) + { + branding = require('Settings/Admin/Branding').default; + } + else + { + branding = require('Settings/Admin/Prem/Branding').default; + licensing = require('Settings/Admin/Prem/Licensing').default; + } + addSettingsViewModel(GeneralAdminSettings, 'AdminSettingsGeneral', 'TABS_LABELS/LABEL_GENERAL_NAME', 'general', true); + addSettingsViewModel(DomainsAdminSettings, + 'AdminSettingsDomains', 'TABS_LABELS/LABEL_DOMAINS_NAME', 'domains'); + addSettingsViewModel(LoginAdminSettings, 'AdminSettingsLogin', 'TABS_LABELS/LABEL_LOGIN_NAME', 'login'); - if (RL_COMMUNITY) + if (branding) { - addSettingsViewModel(require('Settings/Admin/Branding').default, - 'AdminSettingsBranding', 'TABS_LABELS/LABEL_BRANDING_NAME', 'branding'); - } - else - { - addSettingsViewModel(require('Settings/Admin/Prem/Branding').default, + addSettingsViewModel(branding, 'AdminSettingsBranding', 'TABS_LABELS/LABEL_BRANDING_NAME', 'branding'); } addSettingsViewModel(ContactsAdminSettings, 'AdminSettingsContacts', 'TABS_LABELS/LABEL_CONTACTS_NAME', 'contacts'); - addSettingsViewModel(DomainsAdminSettings, - 'AdminSettingsDomains', 'TABS_LABELS/LABEL_DOMAINS_NAME', 'domains'); - addSettingsViewModel(SecurityAdminSettings, 'AdminSettingsSecurity', 'TABS_LABELS/LABEL_SECURITY_NAME', 'security'); @@ -69,9 +78,9 @@ class SettingsAdminScreen extends AbstractSettingsScreen addSettingsViewModel(PackagesAdminSettings, 'AdminSettingsPackages', 'TABS_LABELS/LABEL_PACKAGES_NAME', 'packages'); - if (!RL_COMMUNITY) + if (licensing) { - addSettingsViewModel(require('Settings/Admin/Prem/Licensing').default, + addSettingsViewModel(licensing, 'AdminSettingsLicensing', 'TABS_LABELS/LABEL_LICENSING_NAME', 'licensing'); } diff --git a/dev/View/Admin/Settings/Menu.js b/dev/View/Admin/Settings/Menu.js index f70458a79..2796b7480 100644 --- a/dev/View/Admin/Settings/Menu.js +++ b/dev/View/Admin/Settings/Menu.js @@ -1,12 +1,11 @@ -import _ from '_'; import $ from '$'; import key from 'key'; import {leftPanelDisabled} from 'Common/Globals'; -import {Magics} from 'Common/Enums'; +import {KeyState} from 'Common/Enums'; -import {view, ViewType, setHash} from 'Knoin/Knoin'; +import {view, ViewType, settingsMenuKeysHendler} from 'Knoin/Knoin'; import {AbstractViewNext} from 'Knoin/AbstractViewNext'; @view({ @@ -33,33 +32,7 @@ class MenuSettingsAdminView extends AbstractViewNext } onBuild(dom) { - - key('up, down', _.throttle((event, handler) => { - - const - up = handler && 'up' === handler.shortcut, - $items = $('.b-admin-menu .e-item', dom); - - if (event && $items.length) - { - let index = $items.index($items.filter('.selected')); - if (up && 0 < index) - { - index -= 1; - } - else if (!up && index < $items.length - 1) - { - index += 1; - } - - const sH = $items.eq(index).attr('href'); - if (sH) - { - setHash(sH, false, true); - } - } - - }, Magics.Time200ms)); + key('up, down', KeyState.Settings, settingsMenuKeysHendler($('.b-admin-menu .e-item', dom))); } } diff --git a/dev/View/Popup/Domain.js b/dev/View/Popup/Domain.js index e55444025..da99ea46d 100644 --- a/dev/View/Popup/Domain.js +++ b/dev/View/Popup/Domain.js @@ -173,6 +173,7 @@ class DomainPopupView extends AbstractViewNext switch (pString(value)) { case '0': + case '2': if (Ports.ImapSsl === port) { this.imapPort(pString(Ports.Imap)); diff --git a/dev/View/User/Settings/Menu.js b/dev/View/User/Settings/Menu.js index 5d359eae5..ddc5036b8 100644 --- a/dev/View/User/Settings/Menu.js +++ b/dev/View/User/Settings/Menu.js @@ -1,16 +1,15 @@ -import _ from '_'; import $ from '$'; import key from 'key'; -import {KeyState, Magics} from 'Common/Enums'; +import {KeyState} from 'Common/Enums'; import {leftPanelDisabled} from 'Common/Globals'; import {settings, inbox} from 'Common/Links'; import {getFolderInboxName} from 'Common/Cache'; import * as Settings from 'Storage/Settings'; -import {view, ViewType, setHash} from 'Knoin/Knoin'; +import {view, ViewType, setHash, settingsMenuKeysHendler} from 'Knoin/Knoin'; import {AbstractViewNext} from 'Knoin/AbstractViewNext'; @view({ @@ -41,32 +40,7 @@ class MenuSettingsUserView extends AbstractViewNext }); } - key('up, down', KeyState.Settings, _.throttle((event, handler) => { - - const - up = handler && 'up' === handler.shortcut, - $items = $('.b-settings-menu .e-item', dom); - - if (event && $items.length) - { - let iIndex = $items.index($items.filter('.selected')); - if (up && 0 < iIndex) - { - iIndex -= 1; - } - else if (!up && iIndex < $items.length - 1) - { - iIndex += 1; - } - - const sH = $items.eq(iIndex).attr('href'); - if (sH) - { - setHash(sH, false, true); - } - } - - }, Magics.Time200ms)); + key('up, down', KeyState.Settings, settingsMenuKeysHendler($('.b-settings-menu .e-item', dom))); } link(route) { diff --git a/package.json b/package.json index 6f9fe44a5..ec254809e 100644 --- a/package.json +++ b/package.json @@ -56,22 +56,22 @@ "autolinker": "1.4.3", "babel-core": "6.25.0", "babel-eslint": "7.2.3", - "babel-loader": "7.1.0", + "babel-loader": "7.1.1", "babel-plugin-transform-decorators-legacy": "1.3.4", "babel-plugin-transform-runtime": "6.23.0", - "babel-preset-env": "1.5.2", + "babel-preset-env": "1.6.0", "babel-preset-stage-0": "6.24.1", "babel-runtime": "6.23.0", "classnames": "2.2.5", "copy-webpack-plugin": "4.0.1", "es6-promise-polyfill": "1.2.0", - "eslint": "4.1.0", + "eslint": "4.1.1", "eslint-plugin-compat": "1.0.4", "gulp": "3.9.1", "gulp-autoprefixer": "4.0.0", "gulp-cached": "1.1.1", "gulp-chmod": "2.0.0", - "gulp-clean-css": "3.4.2", + "gulp-clean-css": "3.5.0", "gulp-concat-util": "0.5.5", "gulp-eol": "0.1.2", "gulp-eslint": "4.0.0", @@ -110,17 +110,17 @@ "node-fs": "0.1.7", "node-notifier": "5.1.2", "normalize.css": "7.0.0", - "openpgp": "2.5.4", + "openpgp": "2.5.5", "opentip": "2.4.3", "pikaday": "1.6.1", "raw-loader": "0.5.1", "rifraf": "2.0.3", "rimraf": "2.6.1", - "run-sequence": "1.2.2", + "run-sequence": "2.0.0", "simplestatemanager": "3.4.0", "style-loader": "0.18.2", "underscore": "1.8.3", - "webpack": "3.0.0", + "webpack": "3.1.0", "webpack-notifier": "1.5.0" } } diff --git a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomainListItem.html b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomainListItem.html index 6d32c4368..b6f36ba9a 100644 --- a/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomainListItem.html +++ b/rainloop/v/0.0.0/app/templates/Views/Admin/AdminSettingsDomainListItem.html @@ -1,21 +1,21 @@ - - - - (alias) - - - - - - - - - - - - - - - - + + + + (alias) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/webpack.config.builder.js b/webpack.config.builder.js index 29afb16cb..1b570bc2b 100644 --- a/webpack.config.builder.js +++ b/webpack.config.builder.js @@ -22,7 +22,7 @@ module.exports = function(publicPath, pro) { publicPath: publicPath || 'rainloop/v/0.0.0/static/' }, plugins: [ - new webpack.optimize.ModuleConcatenationPlugin(), + // new webpack.optimize.ModuleConcatenationPlugin(), new webpack.DefinePlugin({ 'RL_COMMUNITY': !pro, 'process.env': { diff --git a/yarn.lock b/yarn.lock index 2836c8dec..f37db5f32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -416,9 +416,9 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-loader@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.0.tgz#3fbf2581f085774bd9642dca9990e6d6c1491144" +babel-loader@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.1.tgz#b87134c8b12e3e4c2a94e0546085bc680a2b8488" dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" @@ -775,9 +775,9 @@ babel-plugin-transform-strict-mode@^6.22.0: babel-runtime "^6.22.0" babel-types "^6.22.0" -babel-preset-env@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.5.2.tgz#cd4ae90a6e94b709f97374b33e5f8b983556adef" +babel-preset-env@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4" dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-syntax-trailing-function-commas "^6.22.0" @@ -1157,16 +1157,6 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@*, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^0.5.0, chalk@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" @@ -1177,6 +1167,16 @@ chalk@^0.5.0, chalk@^0.5.1: strip-ansi "^0.3.0" supports-color "^0.2.0" +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + chokidar@^1.4.3: version "1.6.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" @@ -1206,9 +1206,9 @@ classnames@2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" -clean-css@4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.4.tgz#eec8811db27457e0078d8ca921fa81b72fa82bf4" +clean-css@4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.5.tgz#d09a87a02a5375117589796ae76a063cacdb541a" dependencies: source-map "0.5.x" @@ -1618,9 +1618,9 @@ end-of-stream@~0.1.5: dependencies: once "~1.3.0" -enhanced-resolve@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" +enhanced-resolve@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3" dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" @@ -1724,7 +1724,45 @@ eslint-scope@^3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint@4.1.0, eslint@^4.0.0: +eslint@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.1.1.tgz#facbdfcfe3e0facd3a8b80dc98c4e6c13ae582df" + dependencies: + babel-code-frame "^6.22.0" + chalk "^1.1.3" + concat-stream "^1.6.0" + debug "^2.6.8" + doctrine "^2.0.0" + eslint-scope "^3.7.1" + espree "^3.4.3" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.1.2" + globals "^9.17.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-my-json-valid "^2.16.0" + is-resolvable "^1.0.0" + js-yaml "^3.8.4" + json-stable-stringify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^4.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + strip-json-comments "~2.0.1" + table "^4.0.1" + text-table "~0.2.0" + +eslint@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.1.0.tgz#bbb55a28220ee08b69da9554d45a6b2ebfd7d913" dependencies: @@ -2267,11 +2305,11 @@ gulp-chmod@2.0.0: stat-mode "^0.2.0" through2 "^2.0.0" -gulp-clean-css@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.4.2.tgz#04387e17a88aa0f29d88edafca16403dbb106d5d" +gulp-clean-css@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.5.0.tgz#d43e747c41957995ec49bb9612f862b64329f1b0" dependencies: - clean-css "4.1.4" + clean-css "4.1.5" gulp-util "3.0.8" through2 "2.0.3" vinyl-sourcemaps-apply "0.2.1" @@ -2401,7 +2439,7 @@ gulp-rimraf@0.2.1: rimraf "^2.5.4" through2 "^2.0.1" -gulp-size@^2.1.0: +gulp-size@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/gulp-size/-/gulp-size-2.1.0.tgz#1c2b64f17f9071d5abd99d154b7b3481f8fba128" dependencies: @@ -3923,9 +3961,9 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -openpgp@2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/openpgp/-/openpgp-2.5.4.tgz#688799fb9c98317c07ab39a633853819f4364775" +openpgp@2.5.5: + version "2.5.5" + resolved "https://registry.yarnpkg.com/openpgp/-/openpgp-2.5.5.tgz#44e959d8abc8b124d76f98e0929736c6ed81aa05" dependencies: node-fetch "^1.3.3" node-localstorage "~1.3.0" @@ -4520,12 +4558,12 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" -run-sequence@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-1.2.2.tgz#5095a0bebe98733b0140bd08dd80ec030ddacdeb" +run-sequence@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.0.0.tgz#6ab754fe53cd771d47dbdee63c254882344d5896" dependencies: - chalk "*" - gulp-util "*" + chalk "^1.1.3" + gulp-util "^3.0.8" rx-lite-aggregates@^4.0.8: version "4.0.8" @@ -4998,7 +5036,7 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -uglifyjs-webpack-plugin@^0.4.4: +uglifyjs-webpack-plugin@^0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" dependencies: @@ -5139,16 +5177,16 @@ webpack-sources@^1.0.1: source-list-map "^2.0.0" source-map "~0.5.3" -webpack@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.0.0.tgz#ee9bcebf21247f7153cb410168cab45e3a59d4d7" +webpack@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.1.0.tgz#ac0675e500db835f9ab2369d29ba096f51ad0731" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" ajv "^5.1.5" ajv-keywords "^2.0.0" async "^2.1.2" - enhanced-resolve "^3.0.0" + enhanced-resolve "^3.3.0" escope "^3.6.0" interpret "^1.0.0" json-loader "^0.5.4" @@ -5161,7 +5199,7 @@ webpack@3.0.0: source-map "^0.5.3" supports-color "^3.1.0" tapable "~0.2.5" - uglifyjs-webpack-plugin "^0.4.4" + uglifyjs-webpack-plugin "^0.4.6" watchpack "^1.3.1" webpack-sources "^1.0.1" yargs "^6.0.0"