NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name SCNSRC Summary // @namespace mosh.mage // @version 1.0 // @description This addin makes a summary on the right-side of scnsrc.* // @author MoshMage // @include *scnsrc.* // @grant none // ==/UserScript== (function() { var _$ = jQuery.noConflict(), debug = false, doc = { target: _$('.content'), posts: _$('.post', this.target), holder: _$('<div style="padding: 10px; position: fixed; top: 14%; right:0; width:16%; background: white;"><div class="wp-pagenavi" style="margin-top:14px; margin-bottom:14px;"><a class="toggleInt" isOpen="false" style="cursor:pointer;">Color Match</a><a class="toggleSearch search" isOpen="false" >Quick Links</a><a class="toggleRemove remove" isOpen="false" >Filter Words</a></div><ul></ul></div>').addClass('wp-mod-ts-content'), interactive: _$('<div style="border-top:1px solid; margin-top: 14px;"><ul></ul></div>').addClass('wp-pagenavi wp-mods'), buttonNewSearchTerm: _$('<a data-storage="wtsSearchTerm">new search term</a>'), buttonSaveSearchTerm: _$('<a data-storage="wtsSearchTerm">save search term</a>'), buttonSaveWord: _$('<a data-storage="wtsWordColorMatch">save words</a>'), buttonAddWord: _$('<a data-storage="wtsWordColorMatch">new word match</a>'), removeList: _$('<li><textarea class="word" placeholder="query,another query,separate,by commas"></textarea><a class="saveWord" data-storage="wtsRemoveString">save</a></li>') }, hole = { posts: '', wordsList: '', quickList: '', removeList: '', colorBoxList: ["IndianRed","LightCoral","Salmon","DarkSalmon","LightSalmon","Crimson","Red","FireBrick","DarkRed","Pink","LightPink","HotPink","DeepPink","MediumVioletRed","PaleVioletRed","LightSalmon","Coral","Tomato","OrangeRed","DarkOrange","Orange","Gold","Yellow","LightYellow","LemonChiffon","LightGoldenrodYellow","PapayaWhip","Moccasin","PeachPuff","PaleGoldenrod","Khaki","DarkKhaki","Lavender","Thistle","Plum","Violet","Orchid","Fuchsia","Magenta","MediumOrchid","MediumPurple","Amethyst","BlueViolet","DarkViolet","DarkOrchid","DarkMagenta","Purple","Indigo","SlateBlue","DarkSlateBlue","MediumSlateBlue","GreenYellow","Chartreuse","LawnGreen","Lime","LimeGreen","PaleGreen","LightGreen","MediumSpringGreen","SpringGreen","MediumSeaGreen","SeaGreen","ForestGreen","Green","DarkGreen","YellowGreen","OliveDrab","Olive","DarkOliveGreen","MediumAquamarine","DarkSeaGreen","LightSeaGreen","DarkCyan","Teal","Aqua","Cyan","LightCyan","PaleTurquoise","Aquamarine","Turquoise","MediumTurquoise","DarkTurquoise","CadetBlue","SteelBlue","LightSteelBlue","PowderBlue","LightBlue","SkyBlue","LightSkyBlue","DeepSkyBlue","DodgerBlue","CornflowerBlue","MediumSlateBlue","RoyalBlue","Blue","MediumBlue","DarkBlue","Navy","MidnightBlue","Cornsilk","BlanchedAlmond","Bisque","NavajoWhite","Wheat","BurlyWood","Tan","RosyBrown","SandyBrown","Goldenrod","DarkGoldenrod","Peru","Chocolate","SaddleBrown","Sienna","Brown","Maroon","White","Snow","Honeydew","MintCream","Azure","AliceBlue","GhostWhite","WhiteSmoke","Seashell","Beige","OldLace","FloralWhite","Ivory","AntiqueWhite","Linen","LavenderBlush","MistyRose","Gainsboro","LightGrey","Silver","DarkGray","Gray","DimGray","LightSlateGray","SlateGray","DarkSlateGray","Black"] }, defFilter = {'xvid':'red'}, defQuick = {"https://duckduckgo.com/?q=":'D'}, defRemove = {}; if (!localStorage.getItem('wtsWordColorMatch')) { localStorage.setItem('wtsWordColorMatch',JSON.stringify(defFilter)); } if (!localStorage.getItem('wtsSearchTerm')) { localStorage.setItem('wtsSearchTerm',JSON.stringify(defQuick)); } if (!localStorage.getItem('wtsRemoveString')) { localStorage.setItem('wtsRemoveString',JSON.stringify(defRemove)); } function createColorBox() { var colorList = hole.colorBoxList, str = "",color; if (typeof colorList === "string") return colorList; for (color in colorList) { str += '<option style="background-color:'+colorList[color]+';" value="'+colorList[color]+'"><span style="color:"'+colorList[color]+'";-webkit-filter: invert(100%); filter: invert(100%)" >'+colorList[color]+'</span></option>'; } return str; } function addColorMatch(word,color,storage) { if (storage === false) storage = wtsWordColorMatch; var filterString = (JSON.parse(localStorage[storage])) ? JSON.parse(localStorage[storage]) : {}; if (color === false) filterString = '/'+word+'/g'; else { filterString[word] = color; filterString = JSON.stringify(filterString); } localStorage.setItem(storage,filterString); } function wordColorMatch(sentence) { var filterString = JSON.parse(localStorage.wtsWordColorMatch), word; for (word in filterString) { if (sentence.toLowerCase().indexOf(word.toLowerCase()) >= 0) return 'color: '+filterString[word]; } return 'color: black'; } function quickList(pTitle) { var list = JSON.parse(localStorage.wtsSearchTerm), str = '', quick; for (quick in list) { if (quick) str += '<a href="'+quick+''+pTitle+'" target="_blank">'+list[quick]+'</a> '; } return str; } function applyRemoveList(title) { var pattern = localStorage.wtsRemoveString.replace(/\,/g,'|'); pattern = '('+pattern+')'; pattern = new RegExp(pattern,"g"); if (!pattern) return title; else { title = title.replace(pattern,''); return title; } } function fillHole() { doc.posts.each(function(){ var _this = _$(this), pTitle = _$('h2 a',_this).text(), pUrl = _this.attr('id'), pStyle = wordColorMatch(pTitle), anchors = quickList(pTitle); pTitle = applyRemoveList(pTitle); hole.posts += '<li style="text-overflow: ellipsis; white-space: nowrap; overflow: hidden">'+anchors+'<a href="#'+pUrl+'" style="'+pStyle+'" >'+pTitle+'</a><li>'; }); } function fillMods() { var filterString = JSON.parse(localStorage.wtsWordColorMatch), word, quickList = JSON.parse(localStorage.wtsSearchTerm); for (word in filterString) { if ((word) && (filterString[word])) hole.wordsList += '<li style="margin-bottom:2%;"><input type=text value="'+word+'" style="width:20%; margin-right:5%;border: none;border-bottom: 1px solid grey;" class="word" /><select type=text data-value="'+filterString[word]+'" style="width:20%;border: none;border-bottom: 1px solid grey;" class="color"></select> <a class="remWord" data-word="'+word+' " style="cursor:pointer">X</a> </li>'; } for (word in quickList) { if ((word) && (quickList[word])) hole.quickList += '<li style="margin-bottom:2%;"><input type=text value="'+word+'" style="width:20%; margin-right:5%;border: none;border-bottom: 1px solid grey;" class="word" /><input type=text value="'+quickList[word]+'" style="width:20%;border: none;border-bottom: 1px solid grey;" class="color"/> <a class="remWord" data-word="'+word+' " style="cursor:pointer">X</a> </li>'; } hole.removeList = localStorage.wtsRemoveString; } fillHole(); fillMods(); hole.colorBoxList = createColorBox(); _$('body').append(doc.holder); _$(hole.posts).appendTo('.wp-mod-ts-content ul'); _$(doc.interactive).appendTo('.wp-mod-ts-content'); _$('#navigation .wp-pagenavi').clone(true).prependTo('.wp-mod-ts-content'); doc.buttonNewSearchTerm.addClass('addWord search').appendTo('.wp-mods').toggle(); doc.buttonSaveSearchTerm.addClass('saveWord search').appendTo('.wp-mods').toggle(); doc.buttonSaveWord.addClass('saveWord match').appendTo('.wp-mods').toggle(); doc.buttonAddWord.addClass('addWord match').appendTo('.wp-mods').toggle(); _$(hole.wordsList).appendTo('.wp-mods ul').addClass('match').toggle(); _$(hole.quickList).appendTo('.wp-mods ul').addClass('search').toggle(); _$(doc.removeList).appendTo('.wp-mods ul').addClass('remove').toggle(); _$('.wp-mods textarea').val(hole.removeList); _$('li.match select.color').append(hole.colorBoxList); _$('li.match option').each(function(){ var _this = _$(this), value = _this.val(), match = _this.parent().attr('data-value'); if (value === match) { _this.attr('selected','true'); _this.parent().attr('style','background-color:'+value); } }); _$('select').change(function() { var _this = _$(this), color = _$(':selected',_this).val(); _this.attr('style','background-color:'+color); }); _$('.addWord').bind("click",function() { var searchORmatch = (_$(this).hasClass('search')) ? 'search' : 'match', str = '<li style="margin-bottom:2%;" class="'+searchORmatch+'"><input class="word" type=text value="" placeholder="Query" style="width:20%; margin-right:5%;border: none;border-bottom: 1px solid grey;" />'; if (searchORmatch === "match") str += '<select class="color" placeholder="Color" type=text value="" style="width:20%;border: none;border-bottom: 1px solid grey;"></select> <a class="remWord" style="cursor:pointer">X</a></li>'; else str += '<input class="color" placeholder="Color" type=text value="" style="width:20%;border: none;border-bottom: 1px solid grey;"/> <a class="remWord" style="cursor:pointer">X</a></li>'; _$(str).appendTo('.wp-mods ul'); if (searchORmatch === "match") _$('li select.color').append(hole.colorBoxList); }); _$('.saveWord, .remWord').bind("click",function() { var removeParent = (_$(this).hasClass('remWord')) ? _$(this).parent().remove() : false, allWords = _$('.wp-mods ul li:visible'), storage = (_$(this).attr('data-storage')); localStorage.setItem(storage,"{}"); if (storage === "wtsRemoveString") { localStorage.setItem(storage,_$('.wp-mods textarea').val()); } else { allWords.each(function(){ var _this = _$(this), word = _$('.word',_this).val(), color = (_$('.color',_this).val()) ? _$('.color',_this).val() : false; if (storage === "wtsWordColorMatch") color = _$('.color :selected',_this).text(); if (color) addColorMatch(word,color,storage); }); } }); _$('.toggleInt').bind('click',function(){ var isOpen = _$(this).attr('isOpen'); if (isOpen === "false") { _$('.wp-mods .match').show(); _$(this).attr('isOpen','true'); } else { _$('.wp-mods .match').hide(); _$(this).attr('isOpen','false'); } _$('.wp-mods .search').hide(); _$('.wp-mods .remove').hide(); }); _$('.toggleSearch').bind('click',function(){ var isOpen = _$(this).attr('isOpen'); if (isOpen === "false") { _$('.wp-mods .search').show(); _$(this).attr('isOpen','true'); } else { _$('.wp-mods .search').hide(); _$(this).attr('isOpen','false'); } _$('.wp-mods .match').hide(); _$('.wp-mods .remove').hide(); }); _$('.toggleRemove').bind('click',function(){ var isOpen = _$(this).attr('isOpen'); if (isOpen === "false") { _$('.wp-mods .remove').show(); _$(this).attr('isOpen','true'); } else { _$('.wp-mods .remove').hide(); _$(this).attr('isOpen','false'); } _$('.wp-mods .match').hide(); _$('.wp-mods .search').hide(); }); })();