JIRA Cloud

Re-theming script for JIRA Cloud

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         JIRA Cloud
// @namespace    http://tampermonkey.net/
// @version      0.9.5
// @description  Re-theming script for JIRA Cloud
// @author       David Wipperfurth
// @match        https://*.atlassian.net/*
// @grant        none
// @license      MIT
// @require      http://code.jquery.com/jquery-1.7.2.min.js
// ==/UserScript==

// The really old version of jQuery is to appease FireFox, who doesn't think jQuery exists without the call-out
// and to keep Chrome from complaining when it sees two wildly different versions of jQuery on the system.

(function() {
    'use strict';

    var css = document.createElement('style');
    css.type = 'text/css';
    css.name = "custom-css";
    css.innerHTML = `

html, html body#jira {
    background-color: #eee;
}
body .cWzlMc, body .css-zvta6n, body .jsSCtF,
body .cSnBhI, body .kCUjSv, body .kZKcTI,
body .dHydut, body #jira-issue-header-actions,
body .kSNbSf, body .jzKtnn, body .skNbo, body .iETRNE
{
    background-color: #eee;
}
body .cHauVX    /* block columns */
{
     background-color: #eee;
}

body .izWGlW {
    background-color: #fff;
}

body .dgbPQn {
    background-color: #fff;
    margin: 24px 12px 32px 24px;
    border-radius: 4px;
    border: solid 1px #ccc;
}

body .bzpsgq {
    overflow: visible;
    width: calc(100% - 720px);
}

body .kfVduZ {
    width: auto;
    overflow: visible;
}

body .ihzd {
    display: none;
}

body .yjkY {
    min-width: 0;
}

body .dgMUBn {
    display: inline-block;
    position: absolute;
}

body .bzpsgq {
    padding-left: 0;
}

body .klZhqF {
    padding: 0;
}

body .kZKcTI      /* ticket icon container (above fields widget) */
{
    float: right;
    margin: 0;
    padding: 0;
}

body .kZKcTI > div > div > div
{
    margin: 0;
}

body .kZKcTI button .css-1ncnk3i,    /* ticket icon (above fields widget) */
body .kZKcTI button .css-1ncnk3i > svg    /* SVG for ticket icons (above fields widget) */
{
    width: 16px;
    height: 16px;
}

body .hlFJLM /* Collapsed custom fields widget's content */
{
    max-width: 20ex;
}

body .jkTZZQ    /* widget content frame */
{
    padding-bottom: 4px;
}

body .ksLAlg .fuBDPm    /* enviroment field value container */
{
    max-width: 300px;
}

body .ksLAlg .fuBDPm .iwmwPQ    /* enviroment field value */
{
    overflow-x: scroll;
    white-space: nowrap;
}

body table.issue-table tbody tr.issuerow    /* ticket table row */
{
    border-bottom: solid 1px #eee;
}

.ioAami {    /* section heading containers */
    border-bottom: solid #0052CC;
    margin-bottom: 8px;
    padding-bottom: 4px;
    font-size: 1.2em;
}
.LlqtS .ioAami {
    margin-top: 56px;
}

body .mffpf0-0.dgbPQn .qwux5g-0.lpaOtj    /* "activity header */
{
    display: none;
}

body .ss4jvk-4.gycPRd    /* chat message */
{
    border-top: solid 1px #eee;
    padding-top: 8px;
    margin-top: 0px;
}

body .eANdKV    /* initial chat box container */
{
    box-shadow: none;
}

body .guBgLL    /* ticket toolbar */
{
    margin: 0 0 0 calc(100% - 220px);
}

body .fxeFNT    /* ticket title */
{
    width: calc(100% - 280px);
    margin-bottom: -42px;
}

body .css-1s4q3yq    /* comment edit toolbar */
{
    visibility: hidden;
    position: absolute;
    top: 0px;
    right: 0px;
    margin-top: 0px;
}
body .gycPRd:hover .css-1s4q3yq    /* comment edit toolbar */
{
    visibility: visible
}

html body#jira.wcw-white-background,
html.wcw-white-background
{
    background: white;
}

.guBgLL span.css-19r5em7    /* ticket inner toolbar icon text*/
{
    display: none;
}

.body .jpWHfS iframe    /* Zephyr Region */
{
    border-radius: 4px;
}

/*******************************************
**********     Confluence     **************
********************************************/

body .kkPmar,    /* page header frame */
body .e1vqopgf0,    /* page content frame */
body .xJxJe,    /* another page content frame */
body .hJVqco,    /* another page content frame */
body .sc-dqBHgY,
body .sc-lnmtFM,
body .fabric-editor-popup-scroll-parent > div > div,
body .ak-renderer-wrapper > div
{
    margin: 0 0 0 0;
    max-width: none;
}

body .rAVIf    /* floating table header */
{
    display: none;
}

body .eg76fx70    /* quick start floating button */
{
    display: none;
}

/******************************************
********        editor      ***************
*******************************************/

.wcw-edit-container {
    margin: 16px 0;
}
.wcw-editor {
    width: 100%;
    height: 10em;
    border: solid 1px #eee;
    border-radius: 4px;
}
`;
    document.getElementsByTagName('head')[0].appendChild(css);

    // Add Mark-up Editor
    jQuery(document).load(
    setTimeout(function(){
        var ticket = jQuery('#jira-issue-header .css-47yo1b .css-1we84oz').text();

        console.log(ticket);
        jQuery('.czMqAP').append(`<button class="wcw-old css-1y6dd5y"> Mark-up Editor </button>`);
        jQuery('.wcw-old').on('click', function(){
            jQuery('.mEYYF, .dHydut').parent().html(`<div class="wcw-edit-container"><textarea class="wcw-editor"></textarea><button class="wcw-edit-submit css-1y6dd5y">Add</button></div>`);
            jQuery('.wcw-edit-submit').on('click', function(){
                jQuery.ajax({
                    type: 'POST',
                    url: '../rest/api/2/issue/'+ticket+'/comment',
                    data: JSON.stringify({body: jQuery('.wcw-editor').val()}),
                    contentType: "application/json",
                    dataType: "json",
                    success:  function(){
                        location.reload();
                    }
                });
            });
        });
    }, 1000));

    // Move center Fields to side bar
    jQuery(document).load(
    setTimeout(function(){
        console.log('Move center Fields to side bar');
        jQuery('.ei7vuq-1.jGULOR > .ksLAlg, .ei7vuq-1.jGULOR > .gbXyYv').appendTo('[data-test-id$="ui.context-group.details-group"]');
    }, 1000));

    // Add external create ticket link
    jQuery(document).load(function(){
        console.log('Setup for external create ticket link');
        var toolbarChecker = setInterval(function(){
            if (jQuery('.inKQpX').length == 0) {
                return;
            }
            if (jQuery('.inKQpX .wcw-add-button').length > 0) {
                clearInterval(toolbarChecker);
                return;
            }
            console.log('Add external create ticket link');
            jQuery('.inKQpX').append(`
            <a class="wcw-add-button" href="https://webcourseworks.atlassian.net/CreateIssue.jspa" target="_blank">
                <button class="css-11oxvjq" type="button" tabindex="0">
                    <span class="css-1ujqpe8">
                        <span role="img" aria-label="Create" class="css-pxzk9z" style="--icon-primary-color:currentColor; --icon-secondary-color:var(--ds-background-default, #FFFFFF);">
                            <svg width="24" height="24" viewBox="0 0 24 24" role="presentation">
                                <path d="M13 11V7a1 1 0 00-2 0v4H7a1 1 0 000 2h4v4a1 1 0 002 0v-4h4a1 1 0 000-2h-4z" fill="currentColor" fill-rule="evenodd"></path>
                            </svg>
                        </span>
                    </span>
                </button>
            </a>`);
        }, 500);
    }());

    // white background on create page
    jQuery(document).load(
    setTimeout(function(){
        console.log('white background on create page');
        jQuery('body:has(#issue-create), html:has(#issue-create)').addClass('wcw-white-background');
    }, 100));

})();