VF-

eHázi - Mosolygó beszúró gomb

VF-
Jan 2nd, 2023
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 6.07 KB | Source Code | 0 0
  1. // ==UserScript==
  2. // @name        eHázi - Mosolygó beszúró gomb
  3. // @namespace   VF@eHazi
  4. // @description Eszköztárról beszúrható mosolygókat ad a szerkesztés űrlapokhoz
  5. // @match       https://ehazi.hu/*
  6. // @version     0.0
  7. // @grant       none
  8. // ==/UserScript==
  9.  
  10. let stilus = document.createElement('style')
  11. stilus.textContent = `
  12.   div.us-mosoly-tar img { padding: 5px; margin-right: 10px; cursor: pointer; }
  13.   div.us-mosoly-tar img.us-elerhetetlen { opacity: 25%; border-left-style: solid; border-right-style: solid; border-width: 2px; border-color: red; border-radius: 10px; cursor: not-allowed; }
  14. `
  15. document.head.appendChild(stilus)
  16.  
  17. let mosolyLista = [
  18.   {nev: 'angry'    , erzes: 'dühös'     , szoveg: ':@'  },
  19.   {nev: 'confused' , erzes: 'zavarodott', szoveg: ':|'  },
  20.   {nev: 'cool'     , erzes: 'menő'      , szoveg: 'B-)' },
  21.   {nev: 'crying'   , erzes: 'sírós'     , szoveg: ":'(" },
  22.   {nev: 'cute'     , erzes: 'aranyos'   , szoveg: ':3', megjegyzes: 'ez csak előtte utána szóközzel működik'},
  23.   {nev: 'happy-1'  , erzes: 'boldog'    ,               megjegyzes: 'elérhetősége ismeretlen'},
  24.   {nev: 'happy'    , erzes: 'boldog'    , szoveg: ':)'  },
  25.   {nev: 'in-love'  , erzes: 'szerelmes' ,               megjegyzes: 'elérhetősége ismeretlen'},
  26.   {nev: 'laughing' , erzes: 'nevető'    , szoveg: ':D'  },
  27.   {nev: 'sad'      , erzes: 'szomorú'   , szoveg: ':(', megjegyzes: 'ez csak előtte utána szóközzel működik'},
  28.   {nev: 'sick'     , erzes: 'beteg'     ,               megjegyzes: 'elérhetősége ismeretlen'},
  29.   {nev: 'surprised', erzes: 'meglepett' , szoveg: [':O', ':o']},
  30.   {nev: 'tongue'   , erzes: 'nyelv'     , szoveg: [':P', ':p']},
  31.   {nev: 'wink'     , erzes: 'kacsint'   , szoveg: ';)'  },
  32. ]
  33.  
  34. let ikon = 'iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABg2lDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9Ti0UqDnYQcchQnSyIinTUKhShQqgVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi6OSk6CIl/i8ptIjx4Lgf7+497t4BQrPKNKtnAtB028ykkmIuvyr2viKCMIJIICQzy5iTpDR8x9c9Any9i/Ms/3N/jn61YDEgIBLPMsO0iTeIZzZtg/M+cZSVZZX4nHjcpAsSP3Jd8fiNc8llgWdGzWxmnjhKLJa6WOliVjY14mnimKrplC/kPFY5b3HWqnXWvid/YaSgryxzneYIUljEEiSIUFBHBVXYiNOqk2IhQ/tJH/+w65fIpZCrAkaOBdSgQXb94H/wu1urODXpJUWSQOjFcT5Ggd5doNVwnO9jx2mdAMFn4Erv+GtNIPFJeqOjxY6AgW3g4rqjKXvA5Q4w9GTIpuxKQZpCsQi8n9E35YHBW6BvzeutvY/TByBLXaVvgINDYKxE2es+7w539/bvmXZ/P0E9cpOIMM0aAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5gwIBAIDoLsMNQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAJqSURBVEjHrZZLTxpRFMd/zDCD2KnKKzA1PuKG0PU08QMU1l1346pfgI0hYdWkrrruwoWLJm3aVPeCfAhiZVPEWF1o8JUCbbEOni6mKCBMfXCSk9zc/O//PO6551xwEa+XJdPkOBaj5fcj4KiqIqEQl4kEZ9Eob10olL67us67SIQ/gKTTyPo6Uqkg9bqjlYqzl047BoNBWrrOZ24joRDfFQXJZpFiERFx12LRwQLi93PqSh6JcALI2prj6f/I21qvO2cA0XWaAz0HJJe7PXGv5nJXRmpd5JrGe4/H8eL6QExse15EYi6kNzHtSBSFDwAqgM/H6uIinoUF0HVoNF6yvf2Kra0XNJvP8Psfoetfu5wahJmaAlWFzU2eNpu8RlVZhs4LjUmptCKZzKFY1oVkModSKq30ROKOKRavynkJw+BnOn0dtm3PS6GwIZZ1ISBiWRdSKGz8S8XtMek0Eg5zrJyfM5pKXYeuqruY5j7J5AmWZZNMnmCa+6jq7p0wqRTYNkEPIJUKzM1153dv7zkHB1OY5j7T0wUM4+ONO3DD7OxAPO6sB9T8/aqo820A4vF4kFoNDIOhSqMBY2Og6DpUqwxdqlXw+UBRFKRcHr6Bchk0DRRV5Xc+P3wD+TwEAvzq89Aeru2HNjvLMgB+P61s9m4d1K2zZrNIIECrc3J9abfphxpoN7vJSVa7cjY+TnVY7XpigrNObrW9mJnh6KEDZ2SE896Z3DWYEwm+BYP3G5mjo/zoKSZf3xKLRnkTj1O77dA3DGxN41MfqseutaxpLEYiHAUCXKpq97clEOAyHObU6x34bfEAT/4CEWNVATdiU30AAAAASUVORK5CYII='
  35. ;[
  36.   {urlap: 'newQuestionForm', mezo: 'new_question_description'},
  37.   {urlap: 'newAnswerForm'  , mezo: 'new_answer_description'  },
  38.   {urlap: 'editAnswerForm' , mezo: 'edit_answer_description' },
  39. ].forEach(szerkeszto => {
  40.   let eszkozTar = document.querySelector(`form#${ szerkeszto.urlap } div.w3-light-grey:not([id])>div:first-child`)
  41.   if (! eszkozTar)
  42.     return
  43.  
  44.   let gomb = document.createElement('img')
  45.   gomb.src = 'data:image/png;base64,' + ikon
  46.   gomb.alt = 'Mosoly'
  47.   gomb.title = 'Mosolygó beszúrása'
  48.   gomb.className = 'w3-margin-right w3-hover-grey w3-round-large'
  49.   gomb.style.cursor = 'pointer'
  50.   gomb.style.padding = '2px'
  51.   gomb.dataset.toggle = 'tooltip'
  52.   gomb.addEventListener('click', () => mosolyBeszuras(szerkeszto.urlap + 'Mosoly'))
  53.  
  54.   eszkozTar.appendChild(gomb)
  55.  
  56.   let mosolyTar = document.createElement('div')
  57.   mosolyTar.id = szerkeszto.urlap + 'Mosoly'
  58.   mosolyTar.className = 'w3-light-grey w3-padding us-mosoly-tar'
  59.   mosolyTar.style.display = 'none'
  60.   mosolyTar.style.marginTop = '8px'
  61.  
  62.   mosolyLista.forEach(mosoly => {
  63.     let gomb = document.createElement('img')
  64.     gomb.src = `https://ehazi.hu/images/smiley/${ mosoly.nev }.png`
  65.     gomb.title = `${ mosoly.erzes } (${ mosoly.nev })`
  66.  
  67.     if (mosoly.szoveg)
  68.       gomb.title += '\n' + [].concat(mosoly.szoveg).join(' vagy ')
  69.     else
  70.         gomb.className = 'us-elerhetetlen'
  71.  
  72.     if (mosoly.megjegyzes)
  73.       gomb.title += `\n(${ mosoly.megjegyzes })`
  74.  
  75.     gomb.dataset.szoveg = (mosoly.megjegyzes ? ' ' : '') + (Array.isArray(mosoly.szoveg) ? mosoly.szoveg[0] : mosoly.szoveg) + (mosoly.megjegyzes ? ' ' : '')
  76.  
  77.     if (mosoly.szoveg)
  78.       gomb.addEventListener('click', esemeny => insertTextAtCursor(document.getElementById(szerkeszto.mezo), esemeny.target.dataset.szoveg))
  79.  
  80.     mosolyTar.appendChild(gomb)
  81.   })
  82.  
  83.   eszkozTar.parentNode.parentNode.insertBefore(mosolyTar, eszkozTar.parentNode.nextSibling)
  84. })
  85.  
  86. function mosolyBeszuras(tar)
  87. {
  88.   let mosolyTar = document.getElementById(tar)
  89.   if (! mosolyTar)
  90.     return
  91.  
  92.   mosolyTar.style.display = mosolyTar.style.display == 'none' ? 'block' : 'none'
  93. }
  94.  
  95. // átvéve az eHázi kódjából, csak hogy ne kelljen megint beszúrni az oldalba
  96. function insertTextAtCursor(el, text) {
  97.   var val = el.value, endIndex, range;
  98.   if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") {
  99.     endIndex = el.selectionEnd;
  100.     el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex);
  101.     el.selectionStart = el.selectionEnd = endIndex + text.length;
  102.   } else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") {
  103.     el.focus();
  104.     range = document.selection.createRange();
  105.     range.collapse(false);
  106.     range.text = text;
  107.     range.select();
  108.   }
  109. }
  110.  
Tags: userscript
Add Comment
Please, Sign In to add comment