Neoboard User Tagger

Local user tags for the neoboards

  1. // ==UserScript==
  2. // @name Neoboard User Tagger
  3. // @namespace neotagger
  4. // @description Local user tags for the neoboards
  5. // @include *://www.neopets.com/neoboards/*
  6. // @version 1.1
  7. // @grant none
  8. // @require https://greasyfork.org/scripts/34286-grant-none-shim/code/grant%20none%20shim.js?version=224672
  9. // @require https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js
  10. // ==/UserScript==
  11.  
  12. var usersOnPage = [];
  13. var savedTags = []; // [["username","tag"],["username","tag"]]
  14.  
  15. $(document).ready(function(){
  16. addStyle();
  17. loadSavedData();
  18. usersOnPage = $.merge($('a[href*="randomfriend.phtml?user="] > b').parent(), $('a[href*="userlookup.phtml?user="] > strong').parent());
  19. createTags();
  20. });
  21.  
  22. function addStyle() {
  23. $("body").prepend("<style>.neotag{border: 1px solid; padding: 0px 3px 1px; border-radius: 3px; background: #FFFFFF; color: #4D4D4D; display: inline-block; cursor: pointer;} .neotag:hover{background: #C4DEFF;}</style>");
  24. }
  25.  
  26. function loadSavedData() {
  27. if(GM_getValue("savedTags")){
  28. savedTags = JSON.parse(GM_getValue("savedTags"));
  29. }
  30. }
  31.  
  32. function saveData() {
  33. GM_setValue("savedTags", JSON.stringify(savedTags));
  34. }
  35.  
  36. function createTags() {
  37. // remove any existing tags so we can
  38. // add them with updated information
  39. $('.neotag').remove();
  40. for (var i = 0; i < usersOnPage.length; i++) {
  41. var tagText = "-";
  42. for (var j = 0; j < savedTags.length; j++) {
  43. if (savedTags[j][0] == getUsernameFromElement($(usersOnPage[i]))) {
  44. tagText = savedTags[j][1];
  45. }
  46. }
  47. $(usersOnPage[i]).after(" <div class='neotag' data-username='" + getUsernameFromElement($(usersOnPage[i])) + "'>" + tagText + "</div>");
  48. }
  49. $('.neotag').click(function(){setTag(this);});
  50. }
  51.  
  52. function getUsernameFromElement(element) {
  53. return $(element).attr("href").split("?user=")[1];
  54. }
  55.  
  56. function setTag(tag) {
  57. var setTagUsername = $(tag).attr("data-username");
  58. var currentTag = "";
  59. for (var i = 0; i < savedTags.length; i++) {
  60. if (savedTags[i][0] == setTagUsername) {
  61. currentTag = savedTags[i][1];
  62. break;
  63. }
  64. }
  65. var newTag = prompt("Enter a tag for " + setTagUsername, currentTag);
  66. if (newTag.trim() == "") {
  67. for (var i = savedTags.length - 1; i > 0; i--) {
  68. if (savedTags[i][0] == setTagUsername) {
  69. savedTags.splice(i, 1);
  70. }
  71. }
  72. } else {
  73. var foundName = false;
  74. for (var i = 0; i < savedTags.length; i++) {
  75. if (savedTags[i][0] == setTagUsername) {
  76. foundName = true;
  77. savedTags[i][1] = newTag;
  78. break;
  79. }
  80. }
  81. if (foundName != true) {
  82. savedTags.push([setTagUsername,newTag]);
  83. }
  84. }
  85. saveData();
  86. createTags();
  87. }