WME Chat Resize

Adds resize buttons to the chat window

目前為 2014-11-02 提交的版本,檢視 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name 			WME Chat Resize
// @description 	Adds resize buttons to the chat window
// @namespace		[email protected]
// @grant			none
// @grant			GM_info
// @version			0.0.1
// @match			https://editor-beta.waze.com/*editor/*
// @match			https://www.waze.com/*editor/*
// @author			Rick Zabel '2014
// @license			MIT/BSD/X11
// ==/UserScript==


/* Changelog
 * 0.0.1 - initial version
 */

function WMEChatResize_bootstrap()
{
    var bGreasemonkeyServiceDefined = false;
    
    try {
        var ver = window.navigator.appVersion.match(/Chrome\/(.*?) /)[1];
    } catch(err) {
        var ver = null;
    }
    if (null !== ver) {
        var itschrome = true;
        ///ver = "27.0.1438.7"; // last old working version
        // example: 32.0.1700.107
        // [0] - major versin
        // [2] - minor version
        ver = ver.split(".");
        ver[0] = parseInt(ver[0]);
        ver[2] = parseInt(ver[2]);
        if (ver[0] > 27) {
            var newmethod = true;
        } else if (ver[0] == 27) {
            if (ver[2] <= 1438) {
                var newmethod = false;
            } else {
                var newmethod = true;
            }
        } else {
            var newmethod = false;	
        }
    } else {
        var itschrome = false;
        var newmethod = false;
    }
    
    try
    {
        if ("object" === typeof Components.interfaces.gmIGreasemonkeyService)  // Firefox tells that "Components" is deprecated
        {
            bGreasemonkeyServiceDefined = true;
        }
    }	catch (err) { };
    
    try
    {
        if  ("object" === typeof GM_info) 
        {
            bGreasemonkeyServiceDefined = true;
        }
    }	catch (err) { };   
    
    
    if ( "undefined" === typeof unsafeWindow  ||  ! bGreasemonkeyServiceDefined)
    {
        try {
            unsafeWindow    = ( function ()
                               {
                                   var dummyElem   = document.createElement('p');
                                   dummyElem.setAttribute ('onclick', 'return window;');
                                   return dummyElem.onclick ();
                               } ) ();
        } 
        catch (err)
        {
            //Ignore.
        }
    }
    
    /* FIX IT !!!! */
    var itschrome = true;
    var newmethod = true;
    var bGreasemonkeyServiceDefined = false;
    
    //And check again for new chrome, and no tamper(grease)monkey
    if ( itschrome && newmethod &&  !bGreasemonkeyServiceDefined)
    {
        //use "dirty" but effective method with injection to document
        var DLscript = document.createElement("script");
        DLscript.textContent ='unsafeWindow=window; \n'+ // need this for compatibility
            WMEChatResize_init.toString()+' \n'+
            'WMEChatResize_init();';
        DLscript.setAttribute("type", "application/javascript");
        document.body.appendChild(DLscript);    
        document.body.removeChild(DLscript); 
    } else {
        /* begin running the code! */
        WMEChatResize_init();
        ///setTimeout(WMEChatResize_init,200);
    }  
}



function WMEChatResize_init() {
    
    WMEChatResize =  { 
        last: new Array(),
        isLast: false,
        isLSsupported: false,
        zoom: false
    };
    
    WMEChatResize.init = function() {
        
        //hide/show user list
        //var b = $('<button id="WMEChatResize-HideUsers" class="WMEChatResize" style="position:absolute;Right:50px; title="HideUsers" type="button">></button>');
        //var c = $('<button id="WMEChatResize-ShowUsers" class="WMEChatResize" style="padding-left:0px;float:right;color:#CC0000" align="right" title="ShowUsers" type="button"><</button>');
        
        
        var b = $('<button id="WMEChatResize-HideUsers" class="WMEChatResize" style="position:absolute;Right:50px;color:#CC0000" title="Hide Users" type="button">></button>');
        b.click (WMEChatResize.Hide);
        var c = $('<button id="WMEChatResize-ShowUsers" class="WMEChatResize" style="position:absolute;Right:50px;color:#CC0000" title="Show Users" type="button"><</button>');
        c.click (WMEChatResize.Show);
        
        $("#chat .header").append(b);
        $("#chat .header").append(c);
        //document.getElementById('WMEChatResize-HideUsers').style.visibility="hidden";
        //document.getElementById('WMEChatResize-HideUsers').style.visibility="visible";
        
        document.getElementById('WMEChatResize-ShowUsers').style.visibility="hidden";
        //document.getElementById('WMEChatResize-ShowUsers').style.visibility="visible";   
        
        
        //tall / nnormal chat
        var d = $('<button id="WMEChatResize-NormalChat" class="WMEChatResize" style="position:absolute;Right:80px;color:#CC0000" title="Short Chat" type="button">-</button>');
        d.click (WMEChatResize.NormalChat);
        var f = $('<button id="WMEChatResize-TallChat" class="WMEChatResize" style="position:absolute;Right:80px;color:#CC0000" title="Tall Chat" type="button">^</button>');
        f.click (WMEChatResize.TallChat);
        
        $("#chat .header").append(d);
        $("#chat .header").append(f);    
        
        document.getElementById('WMEChatResize-NormalChat').style.visibility="hidden";
        //document.getElementById('WMEChatResize-NormalChat').style.visibility="visible";
        
        //document.getElementById('WMEChatResize-TallChat').style.visibility="hidden";
        //document.getElementById('WMEChatResize-TallChat').style.visibility="visible";
        
    }
    
    WMEChatResize.Hide = function() {
        var divsToHide = document.getElementsByClassName("users");
        for(var i = 0; i < divsToHide.length; i++) {        
            divsToHide[i].style.visibility="hidden";
        }
        document.getElementById('chat').style.width="350px";  
        document.getElementById('chat').style.height="353px";
        
        
        document.getElementById('WMEChatResize-HideUsers').style.visibility="hidden";
        //document.getElementById('WMEChatResize-HideUsers').style.visibility="visible";
        
        //document.getElementById('WMEChatResize-ShowUsers').style.visibility="hidden";
        document.getElementById('WMEChatResize-ShowUsers').style.visibility="visible";
        
        
        
        
        /* 
        var divsToHide = document.getElementsByClassName("chat");
        for(var i = 0; i < divsToHide.length; i++) {        
            divsToHide[i].style.width="318px";
            //497 * 353
        }
        //width: 275px !important;
        */
    }
    
    
    WMEChatResize.Show = function() {
        //alert("show");
        var divsToHide = document.getElementsByClassName("users");
        for(var i = 0; i < divsToHide.length; i++) {      
            divsToHide[i].style.visibility="visible";
        }
        document.getElementById('chat').style.width="497px";
        document.getElementById('chat').style.height="353px";  
        
        
        //document.getElementById('WMEChatResize-HideUsers').style.visibility="hidden";
        document.getElementById('WMEChatResize-HideUsers').style.visibility="visible";
        
        document.getElementById('WMEChatResize-ShowUsers').style.visibility="hidden";
        //document.getElementById('WMEChatResize-ShowUsers').style.visibility="visible";
        /*
        var divsToHide = document.getElementsByClassName("chat");
        for(var i = 0; i < divsToHide.length; i++) {        
            divsToHide[i].style.width="497px";
            //318 * 220
        }
        //width: 275px !important; 
        */
    }
    
    WMEChatResize.NormalChat = function() {
        
        
        document.getElementById('WMEChatResize-NormalChat').style.visibility="hidden";
        //document.getElementById('WMEChatResize-NormalChat').style.visibility="visible";
        
        //document.getElementById('WMEChatResize-TallChat').style.visibility="hidden";
        document.getElementById('WMEChatResize-TallChat').style.visibility="visible";
        
        //change the chat heigh
        document.getElementById('chat').style.height="353px"; 
        
        //change chat-body
        var divsToModify = document.getElementsByClassName("chat-body");
        for(var i = 0; i < divsToModify.length; i++) {        
            divsToModify[i].style.height="310px";
        }
        
        //message-list height
        var divsToModify = document.getElementsByClassName("message-list");
        for(var i = 0; i < divsToModify.length; i++) {        
            divsToModify[i].style.height="300px";
            divsToModify[i].style.maxHeight="300px"
        }
        
        
        //change users height
        var divsToModify = document.getElementsByClassName("users");
        for(var i = 0; i < divsToModify.length; i++) {        
            divsToModify[i].style.height="310px";
        }
        
        
        
    }
    
    
    WMEChatResize.TallChat = function() {
        
        
        //document.getElementById('WMEChatResize-NormalChat').style.visibility="hidden";
        document.getElementById('WMEChatResize-NormalChat').style.visibility="visible";
        
        document.getElementById('WMEChatResize-TallChat').style.visibility="hidden";
        //document.getElementById('WMEChatResize-TallChat').style.visibility="visible";
        
        
        //change the chat height
        document.getElementById('chat').style.height="600px"; 
        
        //change chat-body
        var divsToModify = document.getElementsByClassName("chat-body");
        for(var i = 0; i < divsToModify.length; i++) {        
            divsToModify[i].style.height="557px";
        }
        
        //change users height
        var divsToModify = document.getElementsByClassName("users");
        for(var i = 0; i < divsToModify.length; i++) {        
            //divsToModify[i].style.height="757px";
            
            //divsToModify[i].style.setProperty("height", "757px", "important");
        }
        
        //messages height
        var divsToModify = document.getElementsByClassName("messages");
        for(var i = 0; i < divsToModify.length; i++) {        
            divsToModify[i].style.height="493px";
        }
        
        //message-list height
        var divsToModify = document.getElementsByClassName("message-list");
        for(var i = 0; i < divsToModify.length; i++) {        
            divsToModify[i].style.height="493px";
            divsToModify[i].style.maxHeight="493px"
        }
        
        //change users height
        var divsToModify = document.getElementsByClassName("users");
        for(var i = 0; i < divsToModify.length; i++) {        
            divsToModify[i].style.height="550px";
            divsToModify[i].style.maxHeight="550px";
            
        } 
        
        
        
    }
    
    
    
    
    
    WMEChatResize.startcode = function () {
        // Check if WME is loaded, if not, waiting a moment and checks again. if yes init WMEChatResize
        try {
            if ("undefined" != typeof unsafeWindow.W.model.chat.rooms._events.listeners.add[0].obj.userPresenters[unsafeWindow.Waze.model.loginManager.user.id] ) {
                console.log("WMEChatResize ready to jump :)");
                WMEChatResize.init()
            } else {
                setTimeout(WMEChatResize.startcode, 200);
            }
        } catch(err) {
            setTimeout(WMEChatResize.startcode, 200);
        }
    }
    ///setTimeout(WMEChatResize.startcode, 5000);
    WMEChatResize.startcode();
}

WMEChatResize_bootstrap();