From 07e6c15c3a856092541a2e3a12951a749dee5e28 Mon Sep 17 00:00:00 2001 From: blackcathacker Date: Mon, 30 Oct 2017 23:08:33 -0700 Subject: [PATCH 1/2] add numbered shortcuts for mod queue --- .../src/components/ModerationKeysModal.js | 1 + .../Moderation/components/Moderation.js | 23 ++++++++++++++----- locales/en.yml | 1 + 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/client/coral-admin/src/components/ModerationKeysModal.js b/client/coral-admin/src/components/ModerationKeysModal.js index 45304992c..6f53bf7fa 100644 --- a/client/coral-admin/src/components/ModerationKeysModal.js +++ b/client/coral-admin/src/components/ModerationKeysModal.js @@ -12,6 +12,7 @@ const shortcuts = [ 'k': 'modqueue.prev_comment', 'ctrl+f': 'modqueue.toggle_search', 't': 'modqueue.next_queue', + '1...5': 'modqueue.jumptoqueue', 's': 'modqueue.singleview', '?': 'modqueue.thismenu' } diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index 64ccb1857..0d924767a 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -34,6 +34,8 @@ class Moderation extends Component { key('k', () => this.select(false)); key('f', () => this.moderate(false)); key('d', () => this.moderate(true)); + this.getMenuItems() + .forEach((menuItem, idx) => key(`${idx + 1}`, () => this.selectQueue(menuItem.key))); } onClose = () => { @@ -41,18 +43,25 @@ class Moderation extends Component { } nextQueue = () => { - const queueConfig = this.props.queueConfig; const activeTab = this.props.activeTab; - const assetId = this.props.data.variables.asset_id; - const menuItems = Object.keys(queueConfig).map((queue) => ({ - key: queue - })); + const menuItems = this.getMenuItems(); const activeTabIndex = menuItems.findIndex((item) => item.key === activeTab); const nextQueueIndex = (activeTabIndex === menuItems.length - 1) ? 0 : activeTabIndex + 1; - this.props.router.push(this.props.getModPath(menuItems[nextQueueIndex].key, assetId)); + this.selectQueue(menuItems[nextQueueIndex].key); + } + + selectQueue = (key) => { + const assetId = this.props.data.variables.asset_id; + this.props.router.push(this.props.getModPath(key, assetId)); + } + + getMenuItems = () => { + return Object.keys(this.props.queueConfig).map((queue) => ({ + key: queue + })); } closeSearch = () => { @@ -175,6 +184,8 @@ class Moderation extends Component { key.unbind('k'); key.unbind('f'); key.unbind('d'); + this.getMenuItems() + .forEach((menuItem, idx) => key.unbind(`${idx + 1}`)); } componentWillReceiveProps(nextProps) { diff --git a/locales/en.yml b/locales/en.yml index 76a434dfc..44ac215af 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -296,6 +296,7 @@ en: show_shortcuts: "Show Shortcuts" singleview: "Toggle single comment edit view" thismenu: "Open this menu" + jumptoqueue: "Jump to specific queue" thousand: k try_these: "Try these" view_more_shortcuts: "View more shortcuts" From 903e70d641edb1038912e22c26525a7a56b35cf1 Mon Sep 17 00:00:00 2001 From: blackcathacker Date: Tue, 31 Oct 2017 17:07:32 -0700 Subject: [PATCH 2/2] updates per review --- .../src/components/ModerationKeysModal.js | 51 ++++++++++--------- .../Moderation/components/Moderation.js | 13 ++--- locales/en.yml | 2 +- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/client/coral-admin/src/components/ModerationKeysModal.js b/client/coral-admin/src/components/ModerationKeysModal.js index 6f53bf7fa..5f43daf09 100644 --- a/client/coral-admin/src/components/ModerationKeysModal.js +++ b/client/coral-admin/src/components/ModerationKeysModal.js @@ -4,35 +4,38 @@ import Modal from 'components/Modal'; import styles from './ModerationKeysModal.css'; import t from 'coral-framework/services/i18n'; -const shortcuts = [ - { - title: 'modqueue.navigation', - shortcuts: { - 'j': 'modqueue.next_comment', - 'k': 'modqueue.prev_comment', - 'ctrl+f': 'modqueue.toggle_search', - 't': 'modqueue.next_queue', - '1...5': 'modqueue.jumptoqueue', - 's': 'modqueue.singleview', - '?': 'modqueue.thismenu' - } - }, - { - title: 'modqueue.actions', - shortcuts: { - 'd': 'modqueue.approve', - 'f': 'modqueue.reject' - } - } -]; - export default class ModerationKeysModal extends React.Component { static propTypes = { open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, hideShortcutsNote: PropTypes.func.isRequired, - shortcutsNoteVisible: PropTypes.string.isRequired + shortcutsNoteVisible: PropTypes.string.isRequired, + queueCount: PropTypes.number.isRequired + } + + buildShortcuts = () => { + return [ + { + title: 'modqueue.navigation', + shortcuts: { + 'j': 'modqueue.next_comment', + 'k': 'modqueue.prev_comment', + 'ctrl+f': 'modqueue.toggle_search', + 't': 'modqueue.next_queue', + [`1...${this.props.queueCount}`]: 'modqueue.jump_to_queue', + 's': 'modqueue.singleview', + '?': 'modqueue.thismenu' + } + }, + { + title: 'modqueue.actions', + shortcuts: { + 'd': 'modqueue.approve', + 'f': 'modqueue.reject' + } + } + ]; } render () { @@ -52,7 +55,7 @@ export default class ModerationKeysModal extends React.Component {

{t('modqueue.shortcuts')}

- {shortcuts.map((shortcut, i) => ( + {this.buildShortcuts().map((shortcut, i) => ( diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index 0d924767a..392db36e3 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -35,7 +35,7 @@ class Moderation extends Component { key('f', () => this.moderate(false)); key('d', () => this.moderate(true)); this.getMenuItems() - .forEach((menuItem, idx) => key(`${idx + 1}`, () => this.selectQueue(menuItem.key))); + .forEach((menuItem, idx) => key(`${idx + 1}`, () => this.selectQueue(menuItem))); } onClose = () => { @@ -47,10 +47,10 @@ class Moderation extends Component { const menuItems = this.getMenuItems(); - const activeTabIndex = menuItems.findIndex((item) => item.key === activeTab); + const activeTabIndex = menuItems.findIndex((item) => item === activeTab); const nextQueueIndex = (activeTabIndex === menuItems.length - 1) ? 0 : activeTabIndex + 1; - this.selectQueue(menuItems[nextQueueIndex].key); + this.selectQueue(menuItems[nextQueueIndex]); } selectQueue = (key) => { @@ -58,11 +58,7 @@ class Moderation extends Component { this.props.router.push(this.props.getModPath(key, assetId)); } - getMenuItems = () => { - return Object.keys(this.props.queueConfig).map((queue) => ({ - key: queue - })); - } + getMenuItems = () => Object.keys(this.props.queueConfig); closeSearch = () => { const {toggleStorySearch} = this.props; @@ -287,6 +283,7 @@ class Moderation extends Component { shortcutsNoteVisible={moderation.shortcutsNoteVisible} open={moderation.modalOpen} onClose={this.onClose} + queueCount={this.getMenuItems().length} />