gitAddProject

git add project for pms

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Для установки этого скрипта вам необходимо установить расширение, такое как Tampermonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name         gitAddProject
// @namespace    http://tampermonkey.net/
// @version      0.1.4
// @description  git add project for pms
// @author       HolmesZhao
// @match        *://pms.zuoyebang.cc/ApplyForGit*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    var username_script = ""
    let projects = [
        { "power": "paperangtest", "reason": "迁移项目"}
    ]

    function getUserInfo() {
        var xhr = new XMLHttpRequest();
        xhr.withCredentials = true;

        xhr.addEventListener("readystatechange", function() {
            if(this.readyState === 4) {
                console.log(this.responseText);
                let result = JSON.parse(this.responseText).data
                username_script = result.uname
            }
        });

        xhr.open("GET", "https://pms.zuoyebang.cc/testplatapi/rdtask/GetUserInfo");
        xhr.setRequestHeader("Content-Type", "application/json");

        xhr.send();
    }
    getUserInfo();

    function addProject(power, reason) {
        if (username_script == "") {
            alert('请先登录')
            return
        }
        let gitcode = "Paperang_iOS"
        let btn = document.getElementsByClassName('mmbutton')[0];
        switch (btn.innerText) {
            case "组件":
                gitcode = "Paperang_iOS"
                break;
            case "项目":
                gitcode = "paperangnative"
                break;
            default:
                break;
        }
        let approved = "zhangtianlong"
        let deptfullname = "其他部门"
        var data = JSON.stringify({"username": username_script,"gitcode": gitcode,"power":"Add Project:" + power + " (private)", "gitapproved": approved, "url": "git.zuoyebang.cc", "reason": reason, "deptfullname": deptfullname});

        var xhr = new XMLHttpRequest();
        xhr.withCredentials = true;

        xhr.addEventListener("readystatechange", function() {
            if(this.readyState === 4) {
                console.log(this.responseText);
            }
        });

        xhr.open("POST", "https://pms.zuoyebang.cc/testplatapi/git/SetApproved");
        xhr.setRequestHeader("Cookie", document.cookie);
        xhr.setRequestHeader("Content-Type", "application/json");

        xhr.send(data);
    }

    function addButton(name, marginLeft, fun) {
        var txt = document.createTextNode(name);
        var btn = document.createElement('button');
        btn.className = 'mmbutton';
        btn.style = "z-index: 9999; font-size: large; position: fixed; top: 0pt; left: "+(screen.width / 4 + marginLeft)+"px;";
        btn.onclick = fun;
        btn.appendChild(txt);
        document.body.appendChild(btn);
        return btn.offsetWidth;
    };

    function injectOnce() {
        let ivu_tabs_tabpane = null
        document.getElementsByClassName('ivu-tabs-tabpane').forEach(element => {
            if (element.className == 'ivu-tabs-tabpane' &&
                element.style.visibility == 'visible') {
                element.getElementsByClassName('ivu-form-item-label').forEach(element2 => {
                    if (element2.textContent.indexOf('project') != -1) {
                        ivu_tabs_tabpane = element
                    }
                })
            }
        });
        if (ivu_tabs_tabpane == null) {
            alert('null')
            return
        } else {
            let input_default = ivu_tabs_tabpane.getElementsByClassName('ivu-input')[0]
            let input_textArea = ivu_tabs_tabpane.getElementsByClassName('ivu-input')[1]
            if (input_default.value.length == 0) {
                alert('需要输入 project 名称')
                return
            }
            if (input_textArea.value.length == 0) {
                input_textArea.value = "喵宝组件"
            }
            addProject(input_default.value, input_textArea.value)
        }
        alert('已发送请求');
    }

    function injectAll() {
        projects.forEach(e => {
            addProject(e.power, e.reason)
        })
        alert('已发送所有请求');
    }

    function changedGroup() {
        let btn = document.getElementsByClassName('mmbutton')[0];
        switch (btn.innerText) {
            case "组件":
                btn.innerText = "项目"
                break;
            case "项目":
                btn.innerText = "组件"
                break;
            default:
                break;
        }
    }

    window.onload = () => {
        addButton('组件', 0, changedGroup);
        addButton('单次申请', 100, injectOnce);
        addButton('批量申请', 200, injectAll);
    }
})();