/* * inlineDisqussions * By Tsachi Shlidor ( @shlidor ) * Inspired by http://mystrd.at/articles/multiple-disqus-threads-on-one-page/ * * USAGE: * * disqus_shortname = 'your_disqus_shortname'; * $(document).ready(function() { * $("p").inlineDisqussions(options); * }); * * See https://github.com/tsi/inlineDisqussions for more info. */ // Disqus global vars. var disqus_shortname; var disqus_identifier; var disqus_url; (function($) { var settings = {}; $.fn.extend({ inlineDisqussions: function(options) { // Set up defaults var defaults = { identifier: 'disqussion', displayCount: true, highlighted: false, position: 'right', background: 'white', maxWidth: 9999 }; // Overwrite default options with user provided ones. settings = $.extend({}, defaults, options); // Append #disqus_thread to body if it doesn't exist yet. if ($('#disqussions_wrapper').length === 0) { $('
').appendTo($('body')); } if ($('#disqus_thread').length === 0) { $('
').appendTo('#disqussions_wrapper'); } else { mainThreadHandler(); } if (settings.highlighted) { $('
').appendTo($('body')); } // Attach a discussion to each paragraph. $(this).each(function(i) { disqussionNotesHandler(i, $(this)); }); // Display comments count. if (settings.displayCount) { loadDisqusCounter(); } // Hide the discussion. $('html').click(function(event) { if($(event.target).parents('#disqussions_wrapper, .main-disqussion-link-wrp').length === 0) { hideDisqussion(); } }); } }); var disqussionNotesHandler = function(i, node) { var identifier; // You can force a specific identifier by adding an attribute to the paragraph. if (node.attr('data-disqus-identifier')) { identifier = node.attr('data-disqus-identifier'); } else { while ($('[data-disqus-identifier="' + window.location.pathname + settings.identifier + '-' + i + '"]').length > 0) { i++; } identifier = window.location.pathname + settings.identifier + '-' + i; } // Create the discussion note. var cls = settings.highlighted ? 'disqussion-link disqussion-highlight' : 'disqussion-link'; var a = $('') .attr('href', window.location.pathname + settings.identifier + '-' + i + '#disqus_thread') .attr('data-disqus-identifier', identifier) .attr('data-disqus-url', window.location.href + settings.identifier + '-' + i) .attr('data-disqus-position', settings.position) .text('+') .wrap('
') .parent() .appendTo('#disqussions_wrapper'); a.css({ 'top': node.offset().top, 'left': settings.position == 'right' ? node.offset().left + node.outerWidth() : node.offset().left - a.outerWidth() }); node.attr('data-disqus-identifier', identifier).mouseover(function() { a.addClass("hovered"); }).mouseout(function() { a.removeClass("hovered"); }); // Load the relative discussion. a.delegate('a.disqussion-link', "click", function(e) { e.preventDefault(); if ($(this).is('.active')) { e.stopPropagation(); hideDisqussion(); } else { loadDisqus($(this), function(source) { relocateDisqussion(source); }); } }); }; var mainThreadHandler = function() { // Create the discussion note. if ($('a.main-disqussion-link').length === 0) { var a = $('') .attr('href', window.location.pathname + '#disqus_thread') .text('Comments') .wrap('