User Notes

Отображение заметки о пользователе

  1. // ==UserScript==
  2. // @name User Notes
  3. // @namespace http://tampermonkey.net/
  4. // @author Nicky (https://zelenka.guru/members/2259792/)
  5. // @version 1.2.2
  6. // @description Отображение заметки о пользователе
  7. // @match https://zelenka.guru/*
  8. // @icon https://zelenka.guru/data/avatars/l/2259/2259792.jpg?1690711557
  9. // @grant GM_setValue
  10. // @grant GM_getValue
  11. // ==/UserScript==
  12.  
  13. var show_in_memberCard = true; // Напишите true - если Вы хотите, чтобы в мини профиле показывались заметки или false - если нет
  14.  
  15. function registerInput(element, link) {
  16. element.val(GM_getValue(link));
  17. if (element[0].localName == "textarea") {
  18. element[0].style.height = element[0].scrollHeight + 'px';
  19. element[0].addEventListener('input', () => {
  20. element[0].style.height = 'auto';
  21. element[0].style.height = element[0].scrollHeight + 'px';
  22. });
  23. }
  24. element[0].addEventListener('input', function (event) {
  25. GM_setValue(link, event.target.value);
  26. });
  27. }
  28.  
  29. function addNote(element = null){
  30. let createInput = () => {
  31. return $('<input type="text" id="link_input" placeholder="none" autocomplete="off" style="background: rgb(0, 0, 0, 0) !important; color: rgb(214, 214, 214);border: 0; width: -webkit-fill-available; padding: 3px 0 1px">');
  32. };
  33. let createSection = () => {
  34. return $(`
  35. <div class="section">
  36. <div class="secondaryContent">
  37. <h3>Заметка</h3>
  38. <textarea class="note" type="text" id="link_input" placeholder="none" autocomplete="off" style="color: rgb(214, 214, 214); border: 0px; width: -webkit-fill-available; resize: none; overflow: hidden; overflow-wrap: break-word; min-height: 53px; background: rgba(0, 0, 0, 0) !important;"></textarea>
  39. </div>
  40. </div>
  41. `);
  42. };
  43. let createContainer = () => {
  44. return $(`</div>
  45. <div class="title">
  46. Заметка
  47. </div>
  48. <div class="activityContainer">
  49. <textarea class="noteMemberCard" type="text" id="link_input" placeholder="none" autocomplete="off" style="color: rgb(214, 214, 214);border: 0px;width: -webkit-fill-available;resize: none;overflow: hidden;overflow-wrap: break-word;min-height: 17px;max-height: 71px;background: rgba(0, 0, 0, 0) !important;">
  50. </div>
  51. `)
  52. };
  53.  
  54. let currentURL = window.location.href;
  55.  
  56. if (currentURL == 'https://zelenka.guru/account/ignored' && !element) {
  57. let member = document.getElementsByClassName('member');
  58. for (let element of member) {
  59. let input = createInput();
  60. let userStatus = element.querySelector('.userBlurb');
  61. input[0].style.width = '71%';
  62. userStatus.after(input[0]);
  63.  
  64. registerInput(input, element.querySelector('a[href]').href);
  65. }
  66. return
  67. }
  68. else if (element && show_in_memberCard) {
  69. let container = createContainer();
  70. let userContainers = $(element.querySelector('.activityContainer'));
  71. userContainers.after(container);
  72.  
  73. registerInput(container.find('textarea'), element.querySelector('a[href]').href);
  74. }
  75. else {
  76. if ($('.note')[0] || !$('.section.insuranceDeposit')[0]) {
  77. return;
  78. }
  79. let textarea = createSection();
  80. let sidebar = $('.sidebar');
  81. sidebar[0].insertBefore(textarea[0], sidebar[0].childNodes[4]);
  82.  
  83. registerInput(textarea.find('textarea'), window.location.href);
  84. }
  85. }
  86.  
  87. window.onload = function() {
  88. const observer = new MutationObserver(function(mutationsList) {
  89. for (let mutation of mutationsList) {
  90. for (let addedNode of mutation.addedNodes) {
  91. if (addedNode instanceof HTMLElement && addedNode.classList.contains('modal') && addedNode.querySelector('.memberCard')) {
  92. addNote(addedNode);
  93. }
  94. }
  95. }
  96. });
  97.  
  98. observer.observe(document.body, { childList: true, subtree: true });
  99. };
  100.  
  101. addNote();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址