diff --git a/app/assets/javascripts/discourse/components/topic-timeline.js.es6 b/app/assets/javascripts/discourse/components/topic-timeline.js.es6 index 64f0dbc2d8c..233155f2f37 100644 --- a/app/assets/javascripts/discourse/components/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-timeline.js.es6 @@ -102,5 +102,6 @@ export default MountWidget.extend(Docking, { } this.dispatch("topic:current-post-scrolled", "timeline-scrollarea"); + this.dispatch("topic:toggle-actions", "topic-admin-menu-button"); } }); diff --git a/app/assets/javascripts/discourse/controllers/keyboard-shortcuts-help.js.es6 b/app/assets/javascripts/discourse/controllers/keyboard-shortcuts-help.js.es6 index 9e1c216e139..7b3fbdcb5de 100644 --- a/app/assets/javascripts/discourse/controllers/keyboard-shortcuts-help.js.es6 +++ b/app/assets/javascripts/discourse/controllers/keyboard-shortcuts-help.js.es6 @@ -167,6 +167,10 @@ export default Controller.extend(ModalFunctionality, { defer: buildShortcut("actions.defer", { keys1: [SHIFT, "u"], keysDelimiter: PLUS + }), + topic_admin_actions: buildShortcut("actions.topic_admin_actions", { + keys1: [SHIFT, "a"], + keysDelimiter: PLUS }) } } diff --git a/app/assets/javascripts/discourse/lib/keyboard-shortcuts.js.es6 b/app/assets/javascripts/discourse/lib/keyboard-shortcuts.js.es6 index 991644737af..409ebc3190c 100644 --- a/app/assets/javascripts/discourse/lib/keyboard-shortcuts.js.es6 +++ b/app/assets/javascripts/discourse/lib/keyboard-shortcuts.js.es6 @@ -71,6 +71,7 @@ const bindings = { "shift+z shift+z": { handler: "logout" }, "shift+f11": { handler: "fullscreenComposer", global: true }, "shift+u": { handler: "deferTopic" }, + "shift+a": { handler: "toggleAdminActions" }, t: { postAction: "replyAsNewTopic" }, u: { handler: "goBack", anonymous: true }, "x r": { @@ -638,5 +639,9 @@ export default { deferTopic() { this.container.lookup("controller:topic").send("deferTopic"); + }, + + toggleAdminActions() { + this.appEvents.trigger("topic:toggle-actions"); } }; diff --git a/app/assets/javascripts/discourse/templates/modal/keyboard-shortcuts-help.hbs b/app/assets/javascripts/discourse/templates/modal/keyboard-shortcuts-help.hbs index 5342441af40..ffd6c2eb4f3 100644 --- a/app/assets/javascripts/discourse/templates/modal/keyboard-shortcuts-help.hbs +++ b/app/assets/javascripts/discourse/templates/modal/keyboard-shortcuts-help.hbs @@ -67,6 +67,7 @@
  • {{{shortcuts.actions.mark_watching}}}
  • {{{shortcuts.actions.defer}}}
  • {{{shortcuts.actions.print}}}
  • +
  • {{{shortcuts.actions.topic_admin_actions}}}
  • diff --git a/app/assets/javascripts/discourse/widgets/topic-admin-menu.js.es6 b/app/assets/javascripts/discourse/widgets/topic-admin-menu.js.es6 index 6463bc33de4..63369d5d66b 100644 --- a/app/assets/javascripts/discourse/widgets/topic-admin-menu.js.es6 +++ b/app/assets/javascripts/discourse/widgets/topic-admin-menu.js.es6 @@ -52,7 +52,8 @@ createWidget("topic-admin-menu-button", { this.attach("button", { className: "btn-default toggle-admin-menu" + - (attrs.fixed ? " show-topic-admin" : ""), + (attrs.fixed ? " show-topic-admin" : "") + + (attrs.addKeyboardTargetClass ? " keyboard-target-admin-menu" : ""), title: "topic_admin_menu", icon: "wrench", action: "showAdminMenu", @@ -75,9 +76,16 @@ createWidget("topic-admin-menu-button", { showAdminMenu(e) { this.state.expanded = true; + let $button; + + if (e === undefined) { + $button = $(".keyboard-target-admin-menu"); + } else { + $button = $(e.target).closest("button"); + } - const $button = $(e.target).closest("button"); const position = $button.position(); + const rtl = $("html").hasClass("rtl"); position.left = position.left; position.outerHeight = $button.outerHeight(); @@ -90,6 +98,10 @@ createWidget("topic-admin-menu-button", { position.left += $button.width() - 203; } this.state.position = position; + }, + + topicToggleActions() { + this.state.expanded ? this.hideAdminMenu() : this.showAdminMenu(); } }); diff --git a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 index 7707f94b122..dbfeb2a389c 100644 --- a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 @@ -322,7 +322,12 @@ createWidget("timeline-controls", { const { fullScreen, currentUser, topic } = attrs; if (!fullScreen && currentUser) { - controls.push(this.attach("topic-admin-menu-button", { topic })); + controls.push( + this.attach("topic-admin-menu-button", { + topic, + addKeyboardTargetClass: true + }) + ); } return controls; diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 153c3124748..75e9a2f7044 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -3042,6 +3042,7 @@ en: mark_watching: "%{shortcut} Watch topic" print: "%{shortcut} Print topic" defer: "%{shortcut} Defer topic" + topic_admin_actions: "%{shortcut} Open topic admin actions" badges: earned_n_times: diff --git a/config/locales/client.es.yml b/config/locales/client.es.yml index 06856d29bac..2a81c042160 100644 --- a/config/locales/client.es.yml +++ b/config/locales/client.es.yml @@ -2785,6 +2785,7 @@ es: mark_watching: "%{shortcut} Vigilar Tema" print: "%{shortcut} Imprimir tema" defer: "%{shortcut} Aplazar el tema" + topic_admin_actions: "%{shortcut} Abrir acciones de administrador para el tema" badges: earned_n_times: one: "GanĂ³ esta medalla %{count} vez"