NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name RSI Emoji // @namespace http://romanito.com/gmscripts // @version 1.0 // @description Add emoji to your forum posts on RSI's website // @author Romanito // @match https://forums.robertsspaceindustries.com/* // ==/UserScript== var emoji = [ 'https://i.imgur.com/Z4L49ST.jpg', 'https://i.imgur.com/uSwr7d3.jpg', 'https://i.imgur.com/7JGHFWn.jpg', 'https://i.imgur.com/I3sS2gb.jpg', 'https://i.imgur.com/iL5ya6z.jpg', 'https://i.imgur.com/OCQUbxM.jpg', 'https://i.imgur.com/i03QZ8W.jpg', 'https://i.imgur.com/2XcNMu8.jpg', 'https://i.imgur.com/rBNrTSz.jpg', 'https://i.imgur.com/UAsZUnd.jpg', 'https://i.imgur.com/ylHIuWw.jpg', 'https://i.imgur.com/bMHfwrL.jpg', 'https://i.imgur.com/H1A0hFM.jpg', 'https://i.imgur.com/WCB3n9X.jpg', 'https://i.imgur.com/u6PNgSi.jpg', 'https://i.imgur.com/uEC6s7D.jpg', 'https://i.imgur.com/gaR8qwl.jpg', 'https://i.imgur.com/JGIjgIF.jpg', 'https://i.imgur.com/2HN6q0Q.jpg', 'https://i.imgur.com/XxuW8V9.jpg', 'https://i.imgur.com/hWHZKlB.jpg', 'https://i.imgur.com/idWG6MK.jpg', 'https://i.imgur.com/tIfjBxQ.jpg', 'https://i.imgur.com/q8AzVRU.jpg', 'https://i.imgur.com/n7GbLCi.jpg', 'https://i.imgur.com/Dy6UNGB.jpg', 'https://i.imgur.com/n40ybpf.jpg', 'https://i.imgur.com/OH7FuBx.jpg', 'https://i.imgur.com/cSaRBP6.jpg', 'https://i.imgur.com/VseLI02.jpg', 'https://i.imgur.com/DVKIbqb.jpg', 'https://i.imgur.com/nLeDDiF.jpg', 'https://i.imgur.com/qeZwT2T.jpg', 'https://i.imgur.com/OB5XQ2H.jpg', 'https://i.imgur.com/eBYUckt.jpg', 'https://i.imgur.com/a2JhXWf.jpg', 'https://i.imgur.com/NkG87gS.jpg', 'https://i.imgur.com/NaczcBT.jpg', 'https://i.imgur.com/Bi2177u.jpg', 'https://i.imgur.com/1mYyuVm.jpg', 'https://i.imgur.com/z6LGK1C.jpg', 'https://i.imgur.com/W1FtMfj.jpg', 'https://i.imgur.com/ytecDlf.jpg', 'https://i.imgur.com/aI5XOEb.jpg', 'https://i.imgur.com/XAP7RnP.jpg', 'https://i.imgur.com/WpWeAEz.jpg', 'https://i.imgur.com/spY5cs8.jpg', 'https://i.imgur.com/Oz3ebtC.jpg', 'https://i.imgur.com/5jiQxUK.jpg', 'https://i.imgur.com/ExB4YX9.jpg', 'https://i.imgur.com/EvkhSkl.jpg', 'https://i.imgur.com/twbUHIy.jpg', 'https://i.imgur.com/0NU2ZC2.jpg', 'https://i.imgur.com/4l5o6UN.jpg', 'https://i.imgur.com/2p3dwhd.jpg', 'https://i.imgur.com/YapG7rj.jpg' ]; var panel, textarea, panelStyle = 'position: absolute; padding: 3px; border: 1px solid rgb(41, 81, 99); background-color: rgb(1, 41, 59); max-width: 300px'; function $(a) { return document.querySelector(a); } function cE(tag, parent, innerHTML) { var e = document.createElement(tag); if (parent) parent.appendChild(e); if (innerHTML) e.innerHTML = innerHTML; return e; } function displayEmojiPanel(X, Y) { panel = cE('div', document.documentElement); panel.className = 'rsiemoji'; for (var i=0; i<emoji.length; i++) { var img = cE('img', panel); img.src = emoji[i]; img.className = 'rsiemoji'; img.setAttribute('style', 'max-height: 50px; padding: 2px;'); } panel.setAttribute('style', panelStyle); panel.style.top = Y + 'px'; panel.style.left = X + 'px'; document.addEventListener('click', documentOnClick); } function removeEmojiPanel() { if (panel) { document.documentElement.removeChild(panel); panel = null; document.removeEventListener('click', documentOnClick); } } function documentOnClick(e) { if (e.target && e.target.classList.contains('rsiemoji')) { textarea = $('#Form_Body'); if (e.target.tagName == 'IMG' && textarea) { var imgCode = '<img src="' + e.target.src + '"/>', selStart = textarea.selectionStart + imgCode.length; textarea.setRangeText(imgCode); textarea.focus(); textarea.setSelectionRange(selStart, selStart); removeEmojiPanel(); } } else { removeEmojiPanel(); } } var barWrap = $('.BarWrap'); if (barWrap) { var emojiButton = cE('span', barWrap); emojiButton.classList.add('ButtonWrap'); emojiButton.classList.add('rsiemoji'); emojiButton.style.backgroundImage = 'url(https://i.imgur.com/tJFsnWp.png)'; emojiButton.addEventListener('click', function(e) { displayEmojiPanel(e.pageX, e.pageY); }); cE('span', emojiButton, 'RSI emoji'); }