Add keyboard edit shortcut for wiki
This commit is contained in:
parent
069c54a7d7
commit
0c3a0b6560
|
@ -33,6 +33,7 @@
|
||||||
/* global Labels */
|
/* global Labels */
|
||||||
/* global Shortcuts */
|
/* global Shortcuts */
|
||||||
/* global Sidebar */
|
/* global Sidebar */
|
||||||
|
/* global ShortcutsWiki */
|
||||||
|
|
||||||
import Issue from './issue';
|
import Issue from './issue';
|
||||||
|
|
||||||
|
@ -416,7 +417,7 @@ const ShortcutsBlob = require('./shortcuts_blob');
|
||||||
break;
|
break;
|
||||||
case 'wikis':
|
case 'wikis':
|
||||||
new gl.Wikis();
|
new gl.Wikis();
|
||||||
shortcut_handler = new ShortcutsNavigation();
|
shortcut_handler = new ShortcutsWiki();
|
||||||
new ZenMode();
|
new ZenMode();
|
||||||
new gl.GLForm($('.wiki-form'));
|
new gl.GLForm($('.wiki-form'));
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -35,6 +35,7 @@ import './shortcuts_navigation';
|
||||||
import './shortcuts_find_file';
|
import './shortcuts_find_file';
|
||||||
import './shortcuts_issuable';
|
import './shortcuts_issuable';
|
||||||
import './shortcuts_network';
|
import './shortcuts_network';
|
||||||
|
import './shortcuts_wiki';
|
||||||
|
|
||||||
// behaviors
|
// behaviors
|
||||||
import './behaviors/';
|
import './behaviors/';
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
/* eslint-disable func-names, space-before-function-paren, max-len, no-var, one-var, no-restricted-syntax, vars-on-top, no-use-before-define, no-param-reassign, new-cap, no-underscore-dangle, wrap-iife, one-var-declaration-per-line, quotes, prefer-arrow-callback, consistent-return, prefer-template, no-mixed-operators */
|
||||||
|
/* global Mousetrap */
|
||||||
|
/* global ShortcutsNavigation */
|
||||||
|
|
||||||
|
require('mousetrap');
|
||||||
|
require('./shortcuts_navigation');
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||||
|
hasProp = {}.hasOwnProperty;
|
||||||
|
|
||||||
|
this.ShortcutsWiki = (function(superClass) {
|
||||||
|
extend(ShortcutsWiki, superClass);
|
||||||
|
|
||||||
|
function ShortcutsWiki() {
|
||||||
|
ShortcutsWiki.__super__.constructor.call(this);
|
||||||
|
Mousetrap.bind('e', (function(_this) {
|
||||||
|
return function() {
|
||||||
|
_this.editWiki();
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
})(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
ShortcutsWiki.prototype.editWiki = function() {
|
||||||
|
var $editBtn;
|
||||||
|
$editBtn = $('.wiki-edit');
|
||||||
|
return gl.utils.visitUrl($editBtn.attr('href'));
|
||||||
|
};
|
||||||
|
return ShortcutsWiki;
|
||||||
|
})(ShortcutsNavigation);
|
||||||
|
}).call(window);
|
|
@ -105,6 +105,23 @@
|
||||||
%td.shortcut
|
%td.shortcut
|
||||||
.key esc
|
.key esc
|
||||||
%td Go back
|
%td Go back
|
||||||
|
%tbody
|
||||||
|
%tr
|
||||||
|
%th
|
||||||
|
%th Project File
|
||||||
|
%tr
|
||||||
|
%td.shortcut
|
||||||
|
.key y
|
||||||
|
%td Go to file permalink
|
||||||
|
%tbody.hidden-shortcut.merge_requests{ style: 'display:none' }
|
||||||
|
%tr
|
||||||
|
%th
|
||||||
|
%th Wiki pages
|
||||||
|
%tr
|
||||||
|
%td.shortcut
|
||||||
|
.key e
|
||||||
|
%td Edit wiki page
|
||||||
|
%tr
|
||||||
.col-lg-4
|
.col-lg-4
|
||||||
%table.shortcut-mappings
|
%table.shortcut-mappings
|
||||||
%tbody
|
%tbody
|
||||||
|
|
|
@ -5,5 +5,5 @@
|
||||||
= link_to namespace_project_wiki_history_path(@project.namespace, @project, @page), class: "btn" do
|
= link_to namespace_project_wiki_history_path(@project.namespace, @project, @page), class: "btn" do
|
||||||
Page history
|
Page history
|
||||||
- if can?(current_user, :create_wiki, @project) && @page.latest?
|
- if can?(current_user, :create_wiki, @project) && @page.latest?
|
||||||
= link_to namespace_project_wiki_edit_path(@project.namespace, @project, @page), class: "btn" do
|
= link_to namespace_project_wiki_edit_path(@project.namespace, @project, @page), class: "btn wiki-edit" do
|
||||||
Edit
|
Edit
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Add keyboard edit shotcut for wiki
|
||||||
|
merge_request: 10245
|
||||||
|
author: George Andrinopoulos
|
|
@ -75,3 +75,9 @@ You can see GitLab's keyboard shortcuts by using 'shift + ?'
|
||||||
| <kbd>r</kbd> | Reply (quoting selected text) |
|
| <kbd>r</kbd> | Reply (quoting selected text) |
|
||||||
| <kbd>e</kbd> | Edit issue/merge request |
|
| <kbd>e</kbd> | Edit issue/merge request |
|
||||||
| <kbd>l</kbd> | Change label |
|
| <kbd>l</kbd> | Change label |
|
||||||
|
|
||||||
|
## Wiki pages
|
||||||
|
|
||||||
|
| Keyboard Shortcut | Description |
|
||||||
|
| ----------------- | ----------- |
|
||||||
|
| <kbd>e</kbd> | Edit wiki page|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
feature 'Wiki shortcuts', :feature, :js do
|
||||||
|
let(:user) { create(:user) }
|
||||||
|
let(:project) { create(:empty_project, namespace: user.namespace) }
|
||||||
|
let(:wiki_page) do
|
||||||
|
WikiPages::CreateService.new(project, user, title: 'home', content: 'Home page').execute
|
||||||
|
end
|
||||||
|
|
||||||
|
before do
|
||||||
|
login_as(user)
|
||||||
|
visit namespace_project_wiki_path(project.namespace, project, wiki_page)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Visit edit wiki page using "e" heyboard shortcut' do
|
||||||
|
find('body').native.send_key('e')
|
||||||
|
|
||||||
|
expect(find('.wiki-page-title')).to have_content('Edit Page')
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue