gracefulally

Userscript - Tumblr Smaller Post Text

Oct 3rd, 2012
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name           Tumblr Smaller Text
  3. // @namespace      gracefulally
  4. // @description    Surrounds post text with small tags.
  5. // @include        http://www.tumblr.com/reblog/*
  6. // @include        http://www.tumblr.com/new/*
  7. // @include        http://www.tumblr.com/edit/*
  8. // @include        http://www.tumblr.com/inbox
  9. // @require        http://code.jquery.com/jquery-latest.min.js
  10. // ==/UserScript==
  11.  
  12. (function(){
  13.     SHRINKBTNURL = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjIyQkE0M0YwQ0I5MTFFMkEzRTFCRjE4MTU2MzI1REYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjIyQkE0NDAwQ0I5MTFFMkEzRTFCRjE4MTU2MzI1REYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MjJCQTQzRDBDQjkxMUUyQTNFMUJGMTgxNTYzMjVERiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2MjJCQTQzRTBDQjkxMUUyQTNFMUJGMTgxNTYzMjVERiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlZ7XgQAAADVSURBVHja3FRRDYMwFKRkBrAwC7WABSzMQjUgYUiohkkACbNQJHTX5bG8NG1ft/FBuOTSAMflcfeC8t43e6JtdsZJDJVSBvSgFcWhFInAM0hBB3YlbVsx3YDjSpcdePtrQmBm04VzLuoFM00mluiJ/a+Gm0kPDszw/rUh5eX4J9aUUyrFkOnE7k1iORWrkmOynEtukWlVHuASPdaUqYZOw2QRJ6RVSeYUlWPFUlizthCHY6YmaxgJ320mmi/mGWc40ksb1iieFbmNidg/OnX4P/ZLgAEAGMqkTGvOzxwAAAAASUVORK5CYII=';
  14.    
  15.     if (document.body.id=='tinymce')
  16.         return; //hack in order to prevent script from running inside editor frame.
  17.    
  18.     function shrinkPostText(v) {
  19.         //we need to do the contents() trick in order to manipulate the content of the #post_two_ifr iframe.
  20.         var post = $(v).contents().find('iframe').contents().find('#tinymce');
  21.         var markup = $('<body>').append(post.html()); // temporary container
  22.         $.merge(markup.find('p'), markup.find('li')).each(function(i,e) {
  23.             if(!($(e).children().size() > 0) || $(e).children()[0].tagName != 'SMALL') {
  24.                 e.innerHTML = '<small>' + e.innerHTML + '</small>';
  25.             }
  26.         });
  27.         //setting new post text. Yay!
  28.         post.html(markup.html());
  29.     }
  30.    
  31.     function appendButton() {
  32.         //dirty, DIRTY hack -_- But I have no idea how to do it right, as editor seems to load dynamically.
  33.         $('.mceEditor').each( function (i,v) {
  34.             if ($(v).contents().find('a.post_shrink_text').size() == 0) {
  35.                 //forming the button, adding the handler...
  36.                 var button = $('<td style="position:relative;"><a class="mceButton mceButtonEnabled post_shrink_text" role="button" href="javascript:;" title="Shrink Post Text"><img src="'+SHRINKBTNURL+'" /></a></td>');
  37.                 button.find('a').on("click", function () { shrinkPostText(v); });
  38.                 //...and placing it!
  39.                 $($(v).contents().find('a.mce_blockquote').parents('td')[0]).after(button);
  40.             }
  41.         });
  42.         setTimeout(appendButton, 500);
  43.         return false;
  44.     }
  45.     appendButton();
  46. })();
Add Comment
Please, Sign In to add comment