main.js
116 lines
| 2.9 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
|
r1023 | if (window.Intl) { | ||
var LOCALE = window.navigator.language; | ||||
var FORMATTER = new Intl.DateTimeFormat( | ||||
LOCALE, | ||||
{ | ||||
weekday: 'short', year: 'numeric', month: 'short', day: 'numeric', | ||||
hour: 'numeric', minute: '2-digit', second: '2-digit' | ||||
} | ||||
); | ||||
} | ||||
neko259
|
r1018 | |||
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
|
r1017 | /** | ||
neko259
|
r1018 | * Translate timestamps to local ones for all <time> tags inside node. | ||
neko259
|
r1017 | */ | ||
neko259
|
r1018 | function translate_time(node) { | ||
neko259
|
r1023 | if (window.Intl === null) { | ||
return; | ||||
} | ||||
neko259
|
r1018 | var elements; | ||
neko259
|
r1019 | if (node === null) { | ||
neko259
|
r1018 | elements = $('time'); | ||
} else { | ||||
elements = node.find('time'); | ||||
} | ||||
if (!elements.length) { | ||||
neko259
|
r1017 | return; | ||
} | ||||
neko259
|
r1018 | elements.each(function() { | ||
var element = $(this); | ||||
var dateAttr = element.attr('datetime'); | ||||
neko259
|
r1017 | if (dateAttr) { | ||
var date = new Date(dateAttr); | ||||
neko259
|
r1018 | element.text(FORMATTER.format(date)); | ||
neko259
|
r1017 | } | ||
}); | ||||
} | ||||
neko259
|
r1037 | /** | ||
* We use buttons viewed as a form with link and hidden inputs to ensure | ||||
* the search crawlers don't index or click them. | ||||
* | ||||
* But we need to submit the form by clicking the links. That's why these | ||||
* handlers are here. | ||||
*/ | ||||
function addPostButtonActions() { | ||||
$('.post-button-form > a').each(function() { | ||||
$(this).click(function() { | ||||
$(this).parent().submit(); | ||||
}); | ||||
}); | ||||
} | ||||
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
|
r1017 | |||
neko259
|
r1018 | translate_time(null); | ||
neko259
|
r1037 | |||
addPostButtonActions(); | ||||
rt@lightning
|
r228 | }); | ||