// ==UserScript== // @name Atlassian Jira Add Copy Title Action // @namespace chancetop // @version 0.0.6 // @description Copy issue code & title . // @author Neal Xu // @match https://wonder.atlassian.net/browse/* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/418426/Atlassian%20Jira%20Add%20Copy%20Title%20Action.user.js // @updateURL https://update.greasyfork.icu/scripts/418426/Atlassian%20Jira%20Add%20Copy%20Title%20Action.meta.js // ==/UserScript== (function() { 'use strict'; // Your code here... var executeCount = 0; var autoAddInterval = setInterval(addCopyBtn, 1000); function addCopyBtn(){ //simple handle if(executeCount++ > 10) { clearInterval(autoAddInterval); } if(document.querySelector('#jira-issue-header-actions > div > div div.neal_copy_btn') != null) return; let groupContainer = document.querySelector('#jira-issue-header-actions > div > div'); //clone node let copyBtnDiv = document.createElement("div"); copyBtnDiv.innerHTML = '
' copyBtnDiv.onclick = function(){ let currentIssue = document.querySelector('#jira-issue-header > div > div > div > div div[data-test-id="issue.views.issue-base.foundation.breadcrumbs.breadcrumb-current-issue-container"] a').innerText; let parentIssue = document.querySelector('#jira-issue-header > div > div > div > div div[data-test-id="issue.views.issue-base.foundation.breadcrumbs.breadcrumb-parent-issue-container"] span'); let title = document.querySelector('#jira-frontend > div > div > div h1[data-test-id="issue.views.issue-base.foundation.summary.heading"]').innerText; let content = (parentIssue? parentIssue.innerText + ' / ' : '') + currentIssue + ' ' + title; copyText(content); } groupContainer.appendChild(copyBtnDiv); } function copyText(content){ let fakeElem = document.createElement('textarea'); // Move element out of screen horizontally fakeElem.style.position = 'absolute'; fakeElem.style.left = '-9999px'; fakeElem.style.fontSize = '12pt'; // Reset box model fakeElem.style.border = '0'; fakeElem.style.padding = '0'; fakeElem.style.margin = '0'; fakeElem.setAttribute('readonly', ''); fakeElem.value = content; document.body.appendChild(fakeElem); fakeElem.select(); document.execCommand('copy'); } })();