Add keyboard edit shortcut for wiki

This commit is contained in:
George Andrinopoulos 2017-03-26 23:16:55 +03:00
parent 069c54a7d7
commit 0c3a0b6560
8 changed files with 83 additions and 2 deletions

View File

@ -33,6 +33,7 @@
/* global Labels */
/* global Shortcuts */
/* global Sidebar */
/* global ShortcutsWiki */
import Issue from './issue';
@ -416,7 +417,7 @@ const ShortcutsBlob = require('./shortcuts_blob');
break;
case 'wikis':
new gl.Wikis();
shortcut_handler = new ShortcutsNavigation();
shortcut_handler = new ShortcutsWiki();
new ZenMode();
new gl.GLForm($('.wiki-form'));
break;

View File

@ -35,6 +35,7 @@ import './shortcuts_navigation';
import './shortcuts_find_file';
import './shortcuts_issuable';
import './shortcuts_network';
import './shortcuts_wiki';
// behaviors
import './behaviors/';

View File

@ -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);

View File

@ -105,6 +105,23 @@
%td.shortcut
.key esc
%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
%table.shortcut-mappings
%tbody

View File

@ -5,5 +5,5 @@
= link_to namespace_project_wiki_history_path(@project.namespace, @project, @page), class: "btn" do
Page history
- 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

View File

@ -0,0 +1,4 @@
---
title: Add keyboard edit shotcut for wiki
merge_request: 10245
author: George Andrinopoulos

View File

@ -75,3 +75,9 @@ You can see GitLab's keyboard shortcuts by using 'shift + ?'
| <kbd>r</kbd> | Reply (quoting selected text) |
| <kbd>e</kbd> | Edit issue/merge request |
| <kbd>l</kbd> | Change label |
## Wiki pages
| Keyboard Shortcut | Description |
| ----------------- | ----------- |
| <kbd>e</kbd> | Edit wiki page|

View File

@ -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