diff --git a/sphinx/themes/basic/static/websupport.js b/sphinx/themes/basic/static/websupport.js index 80c6a9a5b..863a57a5a 100644 --- a/sphinx/themes/basic/static/websupport.js +++ b/sphinx/themes/basic/static/websupport.js @@ -1,19 +1,19 @@ (function($) { $.fn.autogrow = function(){ return this.each(function(){ - var textarea = this; + var textarea = this; - $.fn.autogrow.resize(textarea); + $.fn.autogrow.resize(textarea); - $(textarea) - .focus(function() { - textarea.interval = setInterval(function() { - $.fn.autogrow.resize(textarea); - }, 500); - }) - .blur(function() { - clearInterval(textarea.interval); - }); + $(textarea) + .focus(function() { + textarea.interval = setInterval(function() { + $.fn.autogrow.resize(textarea); + }, 500); + }) + .blur(function() { + clearInterval(textarea.interval); + }); }); }; @@ -31,7 +31,7 @@ })(jQuery); (function($) { - var commentListEmpty, popup, comp, commentTemplate, replyTemplate; + var commentListEmpty, popup, comp, commentTemplate, replyTemplate; function init() { initTemplates(); @@ -98,9 +98,9 @@ $.get(templateURL, function(data) { var templates = $(data); function loadTemplate(id) { - var html = templates.find('#' + id).html(); - html = html.replace(/(<)|(%3C)/g, "<"); - html = html.replace(/(>)|(%3E)/g, ">"); + var html = templates.find('#' + id).html(); + html = html.replace(/(<)|(%3C)/g, "<"); + html = html.replace(/(>)|(%3E)/g, ">"); return html; }; // Create our popup div, the same div is recycled each time comments @@ -117,110 +117,109 @@ }); }; - /** - * Create a comp function. If the user has preferences stored in - * the sortBy cookie, use those, otherwise use the default. - */ + /* + Create a comp function. If the user has preferences stored in + the sortBy cookie, use those, otherwise use the default. + */ function initComparator() { var by = 'rating'; // Default to sort by rating. // If the sortBy cookie is set, use that instead. if (document.cookie.length > 0) { var start = document.cookie.indexOf('sortBy='); if (start != -1) { - start = start + 7; - var end = document.cookie.indexOf(";", start); - if (end == -1) - end = document.cookie.length; - by = unescape(document.cookie.substring(start, end)); - } + start = start + 7; + var end = document.cookie.indexOf(";", start); + if (end == -1) + end = document.cookie.length; + by = unescape(document.cookie.substring(start, end)); + } } setComparator(by); }; - /** - * Show the comments popup window. - */ + /* + Show the comments popup window. + */ function show(nodeId) { var id = nodeId.substring(1); // Reset the main comment form, and set the value of the parent input. $('form#comment_form') .find('textarea,input') - .removeAttr('disabled').end() + .removeAttr('disabled').end() .find('input[name="node"]') - .val(id).end() + .val(id).end() .find('textarea[name="proposal"]') - .val('') - .hide(); + .val('') + .hide(); // Position the popup and show it. var clientWidth = document.documentElement.clientWidth; var popupWidth = $('div.popup_comment').width(); $('div.popup_comment') .css({ - 'top': 100+$(window).scrollTop(), - 'left': clientWidth/2-popupWidth/2, - 'position': 'absolute' + 'top': 100+$(window).scrollTop(), + 'left': clientWidth/2-popupWidth/2, + 'position': 'absolute' }) .fadeIn('fast', function() { - getComments(id); + getComments(id); }); }; - /** - * Hide the comments popup window. - */ + /* + Hide the comments popup window. + */ function hide() { $('div.popup_comment').fadeOut('fast', function() { $('ul#comment_ul').empty(); $('h3#comment_notification').show(); $('form#comment_form').find('textarea') - .val('').end() - .find('textarea, input') - .removeAttr('disabled'); + .val('').end() + .find('textarea, input') + .removeAttr('disabled'); }); }; - /** - * Perform an ajax request to get comments for a node - * and insert the comments into the comments tree. - */ + /* + Perform an ajax request to get comments for a node + and insert the comments into the comments tree. + */ function getComments(id) { $.ajax({ - type: 'GET', - url: opts.getCommentsURL, - data: {node: id}, - success: function(data, textStatus, request) { - var ul = $('ul#comment_ul').hide(); - $('form#comment_form') - .find('textarea[name="proposal"]') - .data('source', data.source); + type: 'GET', + url: opts.getCommentsURL, + data: {node: id}, + success: function(data, textStatus, request) { + var ul = $('ul#comment_ul').hide(); + $('form#comment_form') + .find('textarea[name="proposal"]') + .data('source', data.source); - if (data.comments.length == 0) { - ul.html('
  • No comments yet.
  • '); - commentListEmpty = true; - var speed = 100; - } - else { - // If there are comments, sort them and put them in the list. - var comments = sortComments(data.comments); - var speed = data.comments.length * 100; - appendComments(comments, ul); - commentListEmpty = false; - } - $('h3#comment_notification').slideUp(speed+200); - ul.slideDown(speed); - }, - error: function(request, textStatus, error) { - showError('Oops, there was a problem retrieving the comments.'); - }, - dataType: 'json' + if (data.comments.length == 0) { + ul.html('
  • No comments yet.
  • '); + commentListEmpty = true; + var speed = 100; + } else { + // If there are comments, sort them and put them in the list. + var comments = sortComments(data.comments); + var speed = data.comments.length * 100; + appendComments(comments, ul); + commentListEmpty = false; + } + $('h3#comment_notification').slideUp(speed+200); + ul.slideDown(speed); + }, + error: function(request, textStatus, error) { + showError('Oops, there was a problem retrieving the comments.'); + }, + dataType: 'json' }); }; - /** - * Add a comment via ajax and insert the comment into the comment tree. - */ + /* + Add a comment via ajax and insert the comment into the comment tree. + */ function addComment(form) { // Disable the form that is being submitted. form.find('textarea,input').attr('disabled', 'disabled'); @@ -231,36 +230,38 @@ type: "POST", url: opts.addCommentURL, dataType: 'json', - data: {node: node_id, - parent: form.find('input[name="parent"]').val(), - text: form.find('textarea[name="comment"]').val(), - proposal: form.find('textarea[name="proposal"]').val()}, + data: { + node: node_id, + parent: form.find('input[name="parent"]').val(), + text: form.find('textarea[name="comment"]').val(), + proposal: form.find('textarea[name="proposal"]').val() + }, success: function(data, textStatus, error) { - // Reset the form. - if (node_id) { - hideProposeChange(node_id); - } - form.find('textarea') - .val('') - .add(form.find('input')) - .removeAttr('disabled'); - if (commentListEmpty) { - $('ul#comment_ul').empty(); - commentListEmpty = false; - } - insertComment(data.comment); + // Reset the form. + if (node_id) { + hideProposeChange(node_id); + } + form.find('textarea') + .val('') + .add(form.find('input')) + .removeAttr('disabled'); + if (commentListEmpty) { + $('ul#comment_ul').empty(); + commentListEmpty = false; + } + insertComment(data.comment); }, error: function(request, textStatus, error) { - form.find('textarea,input').removeAttr('disabled'); - showError('Oops, there was a problem adding the comment.'); + form.find('textarea,input').removeAttr('disabled'); + showError('Oops, there was a problem adding the comment.'); } }); }; - /** - * Recursively append comments to the main comment list and children - * lists, creating the comment tree. - */ + /* + Recursively append comments to the main comment list and children + lists, creating the comment tree. + */ function appendComments(comments, ul) { $.each(comments, function() { var div = createCommentDiv(this); @@ -272,10 +273,10 @@ }); }; - /** - * After adding a new comment, it must be inserted in the correct - * location in the comment tree. - */ + /* + After adding a new comment, it must be inserted in the correct + location in the comment tree. + */ function insertComment(comment) { var div = createCommentDiv(comment); @@ -286,8 +287,7 @@ if (comment.node != null) { var ul = $('ul#comment_ul'); var siblings = getChildren(ul); - } - else { + } else { var ul = $('#cl' + comment.parent); var siblings = getChildren(ul); } @@ -298,11 +298,11 @@ // Determine where in the parents children list to insert this comment. for(i=0; i < siblings.length; i++) { if (comp(comment, siblings[i]) <= 0) { - $('#cd' + siblings[i].id) - .parent() - .before(li.html(div)); - li.slideDown('fast'); - return; + $('#cd' + siblings[i].id) + .parent() + .before(li.html(div)); + li.slideDown('fast'); + return; } } @@ -318,10 +318,10 @@ url: opts.acceptCommentURL, data: {id: id}, success: function(data, textStatus, request) { - $('#cm' + id).fadeOut('fast'); + $('#cm' + id).fadeOut('fast'); }, error: function(request, textStatus, error) { - showError("Oops, there was a problem accepting the comment."); + showError("Oops, there was a problem accepting the comment."); }, }); }; @@ -332,13 +332,13 @@ url: opts.rejectCommentURL, data: {id: id}, success: function(data, textStatus, request) { - var div = $('#cd' + id); - div.slideUp('fast', function() { - div.remove(); - }); + var div = $('#cd' + id); + div.slideUp('fast', function() { + div.remove(); + }); }, error: function(request, textStatus, error) { - showError("Oops, there was a problem rejecting the comment."); + showError("Oops, there was a problem rejecting the comment."); }, }); }; @@ -349,22 +349,22 @@ url: opts.deleteCommentURL, data: {id: id}, success: function(data, textStatus, request) { - var div = $('#cd' + id); - div - .find('span.user_id:first') - .text('[deleted]').end() - .find('p.comment_text:first') - .text('[deleted]').end() - .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id + - ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id) - .remove(); - var comment = div.data('comment'); - comment.username = '[deleted]'; - comment.text = '[deleted]'; - div.data('comment', comment); + var div = $('#cd' + id); + div + .find('span.user_id:first') + .text('[deleted]').end() + .find('p.comment_text:first') + .text('[deleted]').end() + .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id + + ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id) + .remove(); + var comment = div.data('comment'); + comment.username = '[deleted]'; + comment.text = '[deleted]'; + div.data('comment', comment); }, error: function(request, textStatus, error) { - showError("Oops, there was a problem deleting the comment."); + showError("Oops, there was a problem deleting the comment."); }, }); }; @@ -398,25 +398,25 @@ textarea.slideUp('fast'); }; - /** - * Handle when the user clicks on a sort by link. - */ + /* + Handle when the user clicks on a sort by link. + */ function handleReSort(link) { setComparator(link.attr('id')); - // Save/update the sortBy cookie. + // Save/update the sortBy cookie. var expiration = new Date(); expiration.setDate(expiration.getDate() + 365); document.cookie= 'sortBy=' + escape(link.attr('id')) + - ';expires=' + expiration.toUTCString(); + ';expires=' + expiration.toUTCString(); var comments = getChildren($('ul#comment_ul'), true); comments = sortComments(comments); appendComments(comments, $('ul#comment_ul').empty()); }; - /** - * Function to process a vote when a user clicks an arrow. - */ + /* + Function to process a vote when a user clicks an arrow. + */ function handleVote(link) { if (!opts.voting) { showError("You'll need to login to vote."); @@ -426,11 +426,11 @@ var id = link.attr('id'); // If it is an unvote, the new vote value is 0, // Otherwise it's 1 for an upvote, or -1 for a downvote. - if (id.charAt(1) == 'u') + if (id.charAt(1) == 'u') { var value = 0; - else + } else { var value = id.charAt(0) == 'u' ? 1 : -1; - + } // The data to be sent to the server. var d = { comment_id: id.substring(2), @@ -450,9 +450,9 @@ // already been pressed, unpress it. if ((d.value != 0) && (data.vote == d.value*-1)) { $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id) - .hide(); + .hide(); $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id) - .show(); + .show(); } // Update the comments rating in the local data. @@ -470,14 +470,14 @@ url: opts.processVoteURL, data: d, error: function(request, textStatus, error) { - showError("Oops, there was a problem casting that vote."); + showError("Oops, there was a problem casting that vote."); } }); }; - /** - * Open a reply form used to reply to an existing comment. - */ + /* + Open a reply form used to reply to an existing comment. + */ function openReply(id) { // Swap out the reply link for the hide link $('#rl' + id).hide(); @@ -489,17 +489,17 @@ .prepend(div) // Setup the submit handler for the reply form. .find('#rf' + id) - .submit(function(event) { - event.preventDefault(); - addComment($('#rf' + id)); - closeReply(id); - }); + .submit(function(event) { + event.preventDefault(); + addComment($('#rf' + id)); + closeReply(id); + }); div.slideDown('fast'); }; - /** - * Close the reply form opened with openReply. - */ + /* + Close the reply form opened with openReply. + */ function closeReply(id) { // Remove the reply div from the DOM. $('#rd' + id).slideUp('fast', function() { @@ -511,9 +511,9 @@ $('#rl' + id).show(); }; - /** - * Recursively sort a tree of comments using the comp comparator. - */ + /* + Recursively sort a tree of comments using the comp comparator. + */ function sortComments(comments) { comments.sort(comp); $.each(comments, function() { @@ -522,51 +522,50 @@ return comments; }; - /** - * Set comp, which is a comparator function used for sorting and - * inserting comments into the list. - */ + /* + Set comp, which is a comparator function used for sorting and + inserting comments into the list. + */ function setComparator(by) { // If the first three letters are "asc", sort in ascending order // and remove the prefix. if (by.substring(0,3) == 'asc') { var i = by.substring(3); comp = function(a, b) { return a[i] - b[i]; } - } - // Otherwise sort in descending order. - else + } else { + // Otherwise sort in descending order. comp = function(a, b) { return b[by] - a[by]; } + } // Reset link styles and format the selected sort option. $('a.sel').attr('href', '#').removeClass('sel'); $('#' + by).removeAttr('href').addClass('sel'); }; - /** - * Get the children comments from a ul. If recursive is true, - * recursively include childrens' children. - */ + /* + Get the children comments from a ul. If recursive is true, + recursively include childrens' children. + */ function getChildren(ul, recursive) { var children = []; ul.children().children("[id^='cd']") .each(function() { - var comment = $(this).data('comment'); - if (recursive) { - comment.children = - getChildren($(this).find('#cl' + comment.id), true); - } - children.push(comment); + var comment = $(this).data('comment'); + if (recursive) { + comment.children = getChildren($(this).find('#cl' + comment.id), true); + } + children.push(comment); }); return children; }; - /** - * Create a div to display a comment in. - */ + /* + Create a div to display a comment in. + */ function createCommentDiv(comment) { // Prettify the comment rating. comment.pretty_rating = comment.rating + ' point' + - (comment.rating == 1 ? '' : 's'); + (comment.rating == 1 ? '' : 's'); // Create a div for this comment. var context = $.extend({}, opts, comment); var div = $(renderTemplate(commentTemplate, context)); @@ -581,30 +580,30 @@ if (comment.text != '[deleted]') { div.find('a.reply').show(); if (comment.proposal_diff) { - div.find('#sp' + comment.id).show(); + div.find('#sp' + comment.id).show(); } if (opts.moderator && !comment.displayed) { - div.find('#cm' + comment.id).show(); + div.find('#cm' + comment.id).show(); } if (opts.moderator || (opts.username == comment.username)) { - div.find('#dc' + comment.id).show(); + div.find('#dc' + comment.id).show(); } } return div; } - /** - * A simple template renderer. Placeholders such as <%id%> are replaced - * by context['id']. Items are always escaped. - */ + /* + A simple template renderer. Placeholders such as <%id%> are replaced + by context['id']. Items are always escaped. + */ function renderTemplate(template, context) { var esc = $(''); function handle(ph, escape) { var cur = context; $.each(ph.split('.'), function() { - cur = cur[this]; + cur = cur[this]; }); return escape ? esc.text(cur || "").html() : cur; } @@ -617,16 +616,17 @@ function showError(message) { $('') - .appendTo('body') - .fadeIn("slow") - .delay(2000) - .fadeOut("slow"); + '' + ) + .appendTo('body') + .fadeIn("slow") + .delay(2000) + .fadeOut("slow"); }; - /** - * Add a link the user uses to open the comments popup. - */ + /* + Add a link the user uses to open the comments popup. + */ $.fn.comment = function() { return this.each(function() { var id = $(this).attr('id').substring(1); @@ -634,13 +634,14 @@ var title = count + ' comment' + (count == 1 ? '' : 's'); var image = count > 0 ? opts.commentBrightImage : opts.commentImage; $(this).append( - $('') - .html('comment') - .attr('title', title) - .click(function(event) { - event.preventDefault(); - show($(this).parent().attr('id')); - })); + $('') + .html('comment') + .attr('title', title) + .click(function(event) { + event.preventDefault(); + show($(this).parent().attr('id')); + }) + ); }); }; @@ -680,4 +681,4 @@ $(document).ready(function() { result.highlightText(this.toLowerCase(), 'highlighted'); }); }); -}); \ No newline at end of file +});