Greasy Fork

Greasy Fork is available in English.

No GC Offers [DEPRECATED]

Delete PMs that have "off GCash Flash" in the title (refine later)

当前为 2015-11-12 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        No GC Offers [DEPRECATED]
// @description Delete PMs that have "off GCash Flash" in the title (refine later)
// @namespace   gaiarch_v3
// @match     http://*.gaiaonline.com/profile/privmsg.php*
// @require   http://code.jquery.com/jquery-2.1.1.min.js
// @version     v1.0.1
// @grant       none
// ==/UserScript==
(function() {
    var nodes = document.querySelectorAll('a.topictitle');
    var pNode, nodeArray = [];
    $.each(nodes, function(idx, node) {
        pNode = node.parentNode;
        if(node.innerHTML !== undefined && node.innerHTML.indexOf('off GCash Flash') !== -1) { //get messages by name
            while(pNode.nodeName !== 'TR') { // get parent loop to table row
                pNode = pNode.parentNode;
                if(pNode.nodeName === 'TR') {
                    pNode.querySelector('input[type="checkbox"]').checked = true; // check row input
                    nodeArray.push(pNode);
                    break;
                }
            }
        }
    });
    if(nodeArray.length > 0) { // make sure checked PMs
        var form = document.querySelector('#pm_form');
        // -- Get SID --
        var sid = form.querySelector('input[name="sid"]');
        $.ajax({
            type: 'GET',
            url: 'http://www.gaiaonline.com/chat/gsi/index.php?v=json&m=[[109]]',
            cache: false,
            dataType: 'json',
            success: function(data) {
                sid.value = data[0][2];
            }
        });
        // -- Get SID --
        //make sure the sid has been applied
        while(sid.value === undefined) {
            if(sid.value !== undefined) {
                break;
            }
        }
        var url = form.action; // the script where you handle the form input.
        // submit form to delete
        $.ajax({
            type: "POST",
            url: url,
            data: $(form).serialize() + '&' + form.querySelector('#btn_delete').name + '=' + form.querySelector('#btn_delete').value,//appends delete button params
            success: function(data) {
                if(nodeArray.length === 1) { // if only one message is checked
                    /* Saved for any possible reference purpose;
                     * $.parseHTML(data).some(function(el, idx, list) {
                        if(el.id === 'content') {
                            nodeArray[0].remove(); // remove
                        }
                        return (el.id === 'content');
                    });*/
                    nodeArray[0].remove(); // remove row
                } else if(nodeArray.length > 1) { // if more than one message is checked
                    $.parseHTML(data).some(function(el, idx, list) {
                        if(el.id === 'content') { //get only #content element
                            var confirmfrm = el.querySelector('form[name="confirmfrm"]'); //get confirm or deny form in #content
                            $.ajax({
                                type: 'POST',
                                url: confirmfrm.action,
                                data: $(confirmfrm).serialize() + 'Yes&x=33&y=8', //append confirm and cursor coordinates
                                success: function(data) {
                                    nodeArray.forEach(function(par, idx, innerList) {
                                        par.remove(); // remove each message from the form
                                    });
                                }
                            })
                        }
                        return (el.id === 'content');
                    });
                }
            }
        });
    }
})();