Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
25fec0f8
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
25fec0f8
编写于
2月 09, 2017
作者:
C
Clement Ho
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix regression where cmd-click stopped working for todos and merge request tabs
上级
059f47b6
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
112 addition
and
18 deletion
+112
-18
app/assets/javascripts/merge_request_tabs.js.es6
app/assets/javascripts/merge_request_tabs.js.es6
+3
-2
app/assets/javascripts/todos.js.es6
app/assets/javascripts/todos.js.es6
+7
-10
changelogs/unreleased/27922-cmd-click-todo-doesn-t-work.yml
changelogs/unreleased/27922-cmd-click-todo-doesn-t-work.yml
+5
-0
spec/javascripts/merge_request_tabs_spec.js
spec/javascripts/merge_request_tabs_spec.js
+34
-6
spec/javascripts/todos_spec.js
spec/javascripts/todos_spec.js
+63
-0
未找到文件。
app/assets/javascripts/merge_request_tabs.js.es6
浏览文件 @
25fec0f8
...
...
@@ -102,9 +102,10 @@ require('./flash');
}
clickTab(e) {
if (e.
t
arget && gl.utils.isMetaClick(e)) {
const targetLink = e.
t
arget.getAttribute('href');
if (e.
currentT
arget && gl.utils.isMetaClick(e)) {
const targetLink = e.
currentT
arget.getAttribute('href');
e.stopImmediatePropagation();
e.preventDefault();
window.open(targetLink, '_blank');
}
}
...
...
app/assets/javascripts/todos.js.es6
浏览文件 @
25fec0f8
...
...
@@ -147,24 +147,21 @@
goToTodoUrl(e) {
const todoLink = this.dataset.url;
let targetLink = e.target.getAttribute('href');
if (e.target.tagName === 'IMG') { // See if clicked target was Avatar
targetLink = e.target.parentElement.getAttribute('href'); // Parent of Avatar is link
}
if (!todoLink) {
return;
}
if (gl.utils.isMetaClick(e)) {
const windowTarget = '_blank';
const selected = e.target;
e.preventDefault();
// Meta-Click on username leads to different URL than todoLink.
// Turbolinks can resolve that URL, but window.open requires URL manually.
if (targetLink !== todoLink) {
return window.open(
targetLink, '_blank'
);
if (selected.tagName === 'IMG') {
const avatarUrl = selected.parentElement.getAttribute('href');
return window.open(
avatarUrl, windowTarget
);
} else {
return window.open(todoLink,
'_blank'
);
return window.open(todoLink,
windowTarget
);
}
} else {
return gl.utils.visitUrl(todoLink);
...
...
changelogs/unreleased/27922-cmd-click-todo-doesn-t-work.yml
0 → 100644
浏览文件 @
25fec0f8
---
title
:
Fix regression where cmd-click stopped working for todos and merge request
tabs
merge_request
:
author
:
spec/javascripts/merge_request_tabs_spec.js
浏览文件 @
25fec0f8
...
...
@@ -62,19 +62,47 @@ require('vendor/jquery.scrollTo');
});
});
describe
(
'
#opensInNewTab
'
,
function
()
{
var
commitsLink
;
var
tabUrl
;
var
windowTarget
=
'
_blank
'
;
beforeEach
(
function
()
{
commitsLink
=
'
.commits-tab li a
'
;
tabUrl
=
$
(
commitsLink
).
attr
(
'
href
'
);
loadFixtures
(
'
merge_requests/merge_request_with_task_list.html.raw
'
);
tabUrl
=
$
(
'
.commits-tab a
'
).
attr
(
'
href
'
);
spyOn
(
$
.
fn
,
'
attr
'
).
and
.
returnValue
(
tabUrl
);
});
describe
(
'
meta click
'
,
()
=>
{
beforeEach
(
function
()
{
spyOn
(
gl
.
utils
,
'
isMetaClick
'
).
and
.
returnValue
(
true
);
});
it
(
'
opens page when commits link is clicked
'
,
function
()
{
spyOn
(
window
,
'
open
'
).
and
.
callFake
(
function
(
url
,
name
)
{
expect
(
url
).
toEqual
(
tabUrl
);
expect
(
name
).
toEqual
(
windowTarget
);
});
this
.
class
.
bindEvents
();
document
.
querySelector
(
'
.merge-request-tabs .commits-tab a
'
).
click
();
});
it
(
'
opens page when commits badge is clicked
'
,
function
()
{
spyOn
(
window
,
'
open
'
).
and
.
callFake
(
function
(
url
,
name
)
{
expect
(
url
).
toEqual
(
tabUrl
);
expect
(
name
).
toEqual
(
windowTarget
);
});
this
.
class
.
bindEvents
();
document
.
querySelector
(
'
.merge-request-tabs .commits-tab a .badge
'
).
click
();
});
});
it
(
'
opens page tab in a new browser tab with Ctrl+Click - Windows/Linux
'
,
function
()
{
spyOn
(
window
,
'
open
'
).
and
.
callFake
(
function
(
url
,
name
)
{
expect
(
url
).
toEqual
(
tabUrl
);
expect
(
name
).
toEqual
(
'
_blank
'
);
expect
(
name
).
toEqual
(
windowTarget
);
});
this
.
class
.
clickTab
({
...
...
@@ -87,7 +115,7 @@ require('vendor/jquery.scrollTo');
it
(
'
opens page tab in a new browser tab with Cmd+Click - Mac
'
,
function
()
{
spyOn
(
window
,
'
open
'
).
and
.
callFake
(
function
(
url
,
name
)
{
expect
(
url
).
toEqual
(
tabUrl
);
expect
(
name
).
toEqual
(
'
_blank
'
);
expect
(
name
).
toEqual
(
windowTarget
);
});
this
.
class
.
clickTab
({
...
...
@@ -100,7 +128,7 @@ require('vendor/jquery.scrollTo');
it
(
'
opens page tab in a new browser tab with Middle-click - Mac/PC
'
,
function
()
{
spyOn
(
window
,
'
open
'
).
and
.
callFake
(
function
(
url
,
name
)
{
expect
(
url
).
toEqual
(
tabUrl
);
expect
(
name
).
toEqual
(
'
_blank
'
);
expect
(
name
).
toEqual
(
windowTarget
);
});
this
.
class
.
clickTab
({
...
...
spec/javascripts/todos_spec.js
0 → 100644
浏览文件 @
25fec0f8
require
(
'
~/todos
'
);
require
(
'
~/lib/utils/common_utils
'
);
describe
(
'
Todos
'
,
()
=>
{
preloadFixtures
(
'
todos/todos.html.raw
'
);
let
todoItem
;
beforeEach
(()
=>
{
loadFixtures
(
'
todos/todos.html.raw
'
);
todoItem
=
document
.
querySelector
(
'
.todos-list .todo
'
);
return
new
gl
.
Todos
();
});
describe
(
'
goToTodoUrl
'
,
()
=>
{
it
(
'
opens the todo url
'
,
(
done
)
=>
{
const
todoLink
=
todoItem
.
dataset
.
url
;
spyOn
(
gl
.
utils
,
'
visitUrl
'
).
and
.
callFake
((
url
)
=>
{
expect
(
url
).
toEqual
(
todoLink
);
done
();
});
todoItem
.
click
();
});
describe
(
'
meta click
'
,
()
=>
{
let
visitUrlSpy
;
beforeEach
(()
=>
{
spyOn
(
gl
.
utils
,
'
isMetaClick
'
).
and
.
returnValue
(
true
);
visitUrlSpy
=
spyOn
(
gl
.
utils
,
'
visitUrl
'
).
and
.
callFake
(()
=>
{});
});
it
(
'
opens the todo url in another tab
'
,
(
done
)
=>
{
const
todoLink
=
todoItem
.
dataset
.
url
;
spyOn
(
window
,
'
open
'
).
and
.
callFake
((
url
,
target
)
=>
{
expect
(
todoLink
).
toEqual
(
url
);
expect
(
target
).
toEqual
(
'
_blank
'
);
done
();
});
todoItem
.
click
();
expect
(
visitUrlSpy
).
not
.
toHaveBeenCalled
();
});
it
(
'
opens the avatar
\'
s url in another tab when the avatar is clicked
'
,
(
done
)
=>
{
const
avatarImage
=
todoItem
.
querySelector
(
'
img
'
);
const
avatarUrl
=
avatarImage
.
parentElement
.
getAttribute
(
'
href
'
);
spyOn
(
window
,
'
open
'
).
and
.
callFake
((
url
,
target
)
=>
{
expect
(
avatarUrl
).
toEqual
(
url
);
expect
(
target
).
toEqual
(
'
_blank
'
);
done
();
});
avatarImage
.
click
();
expect
(
visitUrlSpy
).
not
.
toHaveBeenCalled
();
});
});
});
});
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录