Page Menu
Home
Search
Configure Global Search
Log In
Paste
P2874
GreaseMonkey phabricator link buttons
Active
Public
Actions
Authored by
Sybren A. Stüvel (sybren)
on Mar 31 2022, 4:32 PM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Tags
None
Subscribers
None
// ==UserScript==
// @name Phabricator Document Link
// @version 1
// @include https://developer.blender.org/*
// @grant GM.setClipboard
// ==/UserScript==
function
add_document_links
()
{
let
page_name
=
find_page_name
();
if
(
page_name
===
""
)
return
;
let
page_title
=
find_page_title
();
if
(
page_title
===
""
)
return
;
add_button
(
"MD"
,
"["
+
page_name
+
": "
+
page_title
+
"]("
+
window
.
location
+
")"
);
add_button
(
"MD (short)"
,
"["
+
page_name
+
"]("
+
window
.
location
+
")"
);
if
(
is_git_commit
(
page_name
))
{
let
commit_id
=
window
.
location
.
pathname
.
substr
(
1
,
14
);
add_button
(
"WIKI (long)"
,
"{{GitCommit|"
+
commit_id
+
"}}: "
+
page_title
);
add_button
(
"WIKI (short)"
,
"{{GitCommit|"
+
commit_id
+
"}}"
);
}
else
{
add_button
(
"WIKI"
,
"{{Phab|"
+
page_name
+
"}}: "
+
page_title
);
}
add_button
(
"TXT"
,
page_name
+
": "
+
page_title
);
}
function
add_button
(
button_text
,
clipboard_text
)
{
let
button
=
document
.
createElement
(
'button'
);
button
.
textContent
=
button_text
;
button
.
className
=
'button button-grey'
;
button
.
setAttribute
(
"title"
,
clipboard_text
);
button
.
addEventListener
(
'click'
,
function
()
{
console
.
log
(
'Clipboard:'
,
clipboard_text
);
GM
.
setClipboard
(
clipboard_text
);
});
let
button_parent_elt
=
find_button_parent_element
();
button_parent_elt
.
appendChild
(
button
);
}
function
find_button_parent_element
()
{
let
elements
=
document
.
getElementsByClassName
(
'phabricator-main-menu-alerts'
);
if
(
elements
.
length
==
0
)
return
undefined
;
return
elements
[
0
];
}
function
find_page_name_element
()
{
let
page_name_elts
=
document
.
getElementsByClassName
(
'phui-crumb-name'
);
if
(
page_name_elts
.
length
==
0
)
return
undefined
;
return
page_name_elts
[
page_name_elts
.
length
-
1
];
}
function
find_page_name
()
{
let
page_name_elt
=
find_page_name_element
();
if
(
!
page_name_elt
)
return
""
;
return
page_name_elt
.
textContent
.
trim
();
}
function
find_page_title
()
{
let
page_title_elts
=
document
.
getElementsByClassName
(
'phui-header-header'
);
if
(
page_title_elts
.
length
==
0
)
return
""
;
let
page_title
=
page_title_elts
[
0
].
textContent
;
return
page_title
.
trim
();
}
function
is_git_commit
(
page_name
)
{
return
page_name
.
length
==
12
&&
/^[0-9A-Fa-f]{12}$/
.
test
(
page_name
)
&&
window
.
location
.
pathname
.
startsWith
(
"/r"
)
}
window
.
setTimeout
(
add_document_links
,
100
);
Event Timeline
Sybren A. Stüvel (sybren)
created this paste.
Mar 31 2022, 4:32 PM
Log In to Comment