Created
February 1, 2016 09:21
-
-
Save qbikez/2fb319bbd40958b14d76 to your computer and use it in GitHub Desktop.
Add a "Copy" button to copy redmine ticket subject along with priority and link
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var priority = $("td.priority").text(); | |
$(".subject div").first().prepend("<div>[" + priority + "]</div>"); | |
$(".subject div").first().append( | |
"<div> <a href='" + document.location + "'>"+ document.location + "</a></div>" | |
); | |
$(".subject").first().append( | |
"<button id='copyButton'>Copy</button>" | |
); | |
document.getElementById("copyButton").addEventListener("click", function() { | |
copyToClipboard($(".subject div").first()[0]); | |
}); | |
function copyToClipboard(elem) { | |
// create hidden text element, if it doesn't already exist | |
var targetId = "_hiddenCopyText_"; | |
var isInput = elem.tagName === "INPUT" || elem.tagName === "TEXTAREA"; | |
var origSelectionStart, origSelectionEnd; | |
if (isInput) { | |
// can just use the original source element for the selection and copy | |
target = elem; | |
origSelectionStart = elem.selectionStart; | |
origSelectionEnd = elem.selectionEnd; | |
} else { | |
// must use a temporary form element for the selection and copy | |
target = document.getElementById(targetId); | |
if (!target) { | |
var target = document.createElement("textarea"); | |
target.style.position = "absolute"; | |
target.style.left = "-9999px"; | |
target.style.top = "0"; | |
target.id = targetId; | |
document.body.appendChild(target); | |
} | |
target.textContent = elem.textContent; | |
target.textContent = target.textContent + " "; | |
} | |
// select the content | |
var currentFocus = document.activeElement; | |
target.focus(); | |
target.setSelectionRange(0, target.value.length); | |
/* var r = document.createRange(); | |
r.selectNode(target); | |
var sel = window.getSelection(); | |
sel.removeAllRanges(); | |
sel.addRange(r); | |
*/ | |
// copy the selection | |
var succeed; | |
try { | |
succeed = document.execCommand("copy"); | |
} catch(e) { | |
succeed = false; | |
} | |
// restore original focus | |
if (currentFocus && typeof currentFocus.focus === "function") { | |
currentFocus.focus(); | |
} | |
if (isInput) { | |
// restore prior selection | |
elem.setSelectionRange(origSelectionStart, origSelectionEnd); | |
} else { | |
// clear temporary content | |
target.textContent = ""; | |
} | |
return succeed; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment