main.js
126 lines
| 3.6 KiB
| application/javascript
|
JavascriptLexer
neko259
|
r332 | /* | ||
@licstart The following is the entire license notice for the | ||||
JavaScript code in this page. | ||||
Copyright (C) 2013 neko259 | ||||
The JavaScript code in this page is free software: you can | ||||
redistribute it and/or modify it under the terms of the GNU | ||||
General Public License (GNU GPL) as published by the Free Software | ||||
Foundation, either version 3 of the License, or (at your option) | ||||
any later version. The code is distributed WITHOUT ANY WARRANTY; | ||||
without even the implied warranty of MERCHANTABILITY or FITNESS | ||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. | ||||
As additional permission under GNU GPL version 3 section 7, you | ||||
may distribute non-source (e.g., minimized or compacted) forms of | ||||
that code without the copy of the GNU GPL normally required by | ||||
section 4, provided you include this license notice and a URL | ||||
through which recipients can access the Corresponding Source. | ||||
@licend The above is the entire license notice | ||||
for the JavaScript code in this page. | ||||
*/ | ||||
neko259
|
r1340 | var FAV_POST_UPDATE_PERIOD = 10000; | ||
neko259
|
r653 | /** | ||
* An email is a hidden file to prevent spam bots from posting. It has to be | ||||
* hidden. | ||||
*/ | ||||
function hideEmailFromForm() { | ||||
$('.form-email').parent().parent().hide(); | ||||
} | ||||
neko259
|
r703 | /** | ||
* Highlight code blocks with code highlighter | ||||
*/ | ||||
neko259
|
r709 | function highlightCode(node) { | ||
node.find('pre code').each(function(i, e) { | ||||
neko259
|
r703 | hljs.highlightBlock(e); | ||
}); | ||||
} | ||||
neko259
|
r1340 | function updateFavPosts() { | ||
var includePostBody = $('#fav-panel').is(":visible"); | ||||
var url = '/api/new_posts/'; | ||||
if (includePostBody) { | ||||
url += '?include_posts' | ||||
} | ||||
$.getJSON(url, | ||||
function(data) { | ||||
var allNewPostCount = 0; | ||||
if (includePostBody) { | ||||
var favoriteThreadPanel = $('#fav-panel'); | ||||
favoriteThreadPanel.empty(); | ||||
} | ||||
$.each(data, function (_, dict) { | ||||
var newPostCount = dict.new_post_count; | ||||
allNewPostCount += newPostCount; | ||||
if (includePostBody) { | ||||
var favThreadNode = $('<div class="post"></div>'); | ||||
neko259
|
r1343 | favThreadNode.append($(dict.post_url)); | ||
neko259
|
r1340 | favThreadNode.append(' '); | ||
neko259
|
r1343 | favThreadNode.append($('<span class="title">' + dict.title + '</span>')); | ||
neko259
|
r1340 | |||
if (newPostCount > 0) { | ||||
favThreadNode.append(' (<a href="' + dict.newest_post_link + '">+' + newPostCount + "</a>)"); | ||||
} | ||||
favoriteThreadPanel.append(favThreadNode); | ||||
neko259
|
r1343 | |||
addRefLinkPreview(favThreadNode[0]); | ||||
neko259
|
r1340 | } | ||
}); | ||||
var newPostCountNode = $('#new-fav-post-count'); | ||||
if (allNewPostCount > 0) { | ||||
newPostCountNode.text('(+' + allNewPostCount + ')'); | ||||
newPostCountNode.show(); | ||||
} else { | ||||
newPostCountNode.hide(); | ||||
} | ||||
} | ||||
); | ||||
} | ||||
function initFavPanel() { | ||||
updateFavPosts(); | ||||
neko259
|
r1341 | |||
if ($('#fav-panel-btn').length > 0) { | ||||
setInterval(updateFavPosts, FAV_POST_UPDATE_PERIOD); | ||||
$('#fav-panel-btn').click(function() { | ||||
$('#fav-panel').toggle(); | ||||
updateFavPosts(); | ||||
neko259
|
r1340 | |||
neko259
|
r1341 | return false; | ||
}); | ||||
neko259
|
r1340 | |||
neko259
|
r1341 | $(document).on('keyup.removepic', function(e) { | ||
if(e.which === 27) { | ||||
$('#fav-panel').hide(); | ||||
} | ||||
}); | ||||
} | ||||
neko259
|
r1340 | } | ||
neko259
|
r54 | $( document ).ready(function() { | ||
neko259
|
r653 | hideEmailFromForm(); | ||
neko259
|
r54 | $("a[href='#top']").click(function() { | ||
$("html, body").animate({ scrollTop: 0 }, "slow"); | ||||
return false; | ||||
}); | ||||
neko259
|
r63 | |||
neko259
|
r270 | addImgPreview(); | ||
neko259
|
r272 | |||
neko259
|
r352 | addRefLinkPreview(); | ||
neko259
|
r703 | |||
neko259
|
r709 | highlightCode($(document)); | ||
neko259
|
r1340 | |||
initFavPanel(); | ||||
rt@lightning
|
r228 | }); | ||