Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name FTB comment spiffifier
- // @namespace http://niko.cat/
- // @version 0.1
- // @description Make commenting on FTB more better
- // @include http://freethoughtblogs.com/*
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
- // ==/UserScript==
- /*
- <li class="comment byuser comment-author-nerdofredhead odd alt thread-odd thread-alt depth-1" id="comment-860508">
- <article itemprop="comment" itemscope="itemscope" itemtype="http://schema.org/UserComments">
- <header class="comment-header">
- <p class="comment-author" itemprop="creator" itemscope="itemscope" itemtype="http://schema.org/Person">
- <img alt='' src='http://0.gravatar.com/avatar/47f9d14fc29ffe78436ab7c50d58dc08?s=48&d=identicon&r=R' class='avatar avatar-48 photo' height='48' width='48'/><span itemprop="name">Nerd of Redhead, Dances OM Trolls</span> <span class="says">says</span> </p>
- <p class="comment-meta">
- <time itemprop="commentTime" datetime="2014-10-02T09:33:13+00:00"><a href="http://freethoughtblogs.com/pharyngula/2014/10/02/my-morning-mail-bag-so-far/comment-page-1/#comment-860508" itemprop="url">2 October 2014 at 9:33 am</a></time> </p>
- </header>
- <div class="comment-content" itemprop="commentText">
- <blockquote><p>does Reddit have any responsibility to build a healthy community? I argue they do not. </p></blockquote>
- <p>Then you argue from a position of moral bankruptcy, and can and will be criticized for that moral failure. There is no excuse for an unhealthy community.</p>
- </div>
- </article>
- </li>
- */
- // http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area
- $.fn.selectRange = function(start, end) {
- if (!end) end = start;
- return this.each(function() {
- if (this.setSelectionRange) {
- this.focus();
- this.setSelectionRange(start, end);
- } else if (this.createTextRange) {
- var range = this.createTextRange();
- range.collapse(true);
- range.moveEnd('character', end);
- range.moveStart('character', start);
- range.select();
- }
- });
- };
- var hoverbox = $('<span id="hoverbox">' +
- '\xa0|\xa0<a class="reply-link" href="#"><b>Reply</b></a>' +
- '</span>');
- var template = $('<div>' +
- '<a><span class="comment-author-link"></span>@<span class="comment-number-link"></span>:</a>\n' +
- '<blockquote></blockquote>' +
- '</div>');
- jQuery(document).on('mouseenter', 'li.comment', function hover() {
- jQuery('#hoverbox').remove();
- jQuery(this).closest('li.comment').find('time').first().after(hoverbox);
- }).on('mouseleave', 'li.comment', function unhover() {
- jQuery('#hoverbox').remove();
- }).on('click', '#hoverbox a.reply-link', function(event) {
- event.preventDefault();
- var comment = $(this).closest('li.comment');
- var id = comment.attr('id');
- var link = comment.find('time a').attr('href');
- var author = comment.find('.comment-author span[itemprop="name"]').text();
- var label = comment[0].getAttribute('value');
- if (label === null) label = comment.index() + 1; // sigh
- var content = comment.find('.comment-content');
- var fake = template.clone();
- fake.find('a').attr('href', '#' + id).end()
- .find('span.comment-author-link').text(author).end()
- .find('span.comment-number-link').text(label).end()
- .find('blockquote').attr('cite', link).append(content.clone().contents()).end();
- var textarea = $('#comment');
- var text = textarea.val();
- if (text.length > 0) text += '\n';
- text += fake.html() + '\n';
- textarea.val(text);
- window.location.hash = '#comment';
- textarea.selectRange(textarea.val().length).scrollTop(textarea[0].scrollHeight);
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement