gitAddProject

git add project for pms

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği yüklemek için Tampermonkey gibi bir uzantı yüklemeniz gerekir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği indirebilmeniz için ayrıca Tampermonkey gibi bir eklenti kurmanız gerekmektedir.

Bu komut dosyasını yüklemek için bir kullanıcı komut dosyası yöneticisi uzantısı yüklemeniz gerekecek.

(Zaten bir kullanıcı komut dosyası yöneticim var, kurmama izin verin!)

Bu stili yüklemek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için Stylus gibi bir uzantı kurmanız gerekir.

Bu stili yükleyebilmek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı kurmanız gerekir.

Bu stili yükleyebilmek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

(Zateb bir user-style yöneticim var, yükleyeyim!)

// ==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);
    }
})();