First release of 2.0! :D
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
var csrfToken = $('meta[name="csrf-token"]').attr("content")
|
||||
|
||||
$(function () {
|
||||
"use strict"
|
||||
|
||||
// START string.format
|
||||
// parts from https://stackoverflow.com/a/4673436/5381375
|
||||
// Replace placeholders like [0] or {0} with arguments
|
||||
String.prototype.format = function() {
|
||||
var args = arguments
|
||||
return this.replace(/({|\[)(\d+)(]|})/g, function(match, x, number) {
|
||||
return typeof args[number] != 'undefined' ? args[number] : match
|
||||
})
|
||||
}
|
||||
// END string.format
|
||||
|
||||
// START Time functions
|
||||
console.log("Moment.js locale set to " + moment.locale());
|
||||
|
||||
updateRelativeTime();
|
||||
|
||||
setInterval(function () {
|
||||
updateRelativeTime();
|
||||
}, 1000 * 60);
|
||||
// END Time functions
|
||||
|
||||
// START Cookies
|
||||
if (!Cookies.get("tswebsite_cookie_consent")) {
|
||||
$(".cookiealert").addClass("show");
|
||||
}
|
||||
|
||||
$(".acceptcookies").click(function () {
|
||||
Cookies.set("tswebsite_cookie_consent", true, {expires: 365});
|
||||
$(".cookiealert").removeClass("show");
|
||||
});
|
||||
// END Cookies
|
||||
|
||||
$('*[data-connectionproblem="trigger"]').click(function (e) {
|
||||
e.preventDefault()
|
||||
$(this).siblings('*[data-connectionproblem="hidden"]').show();
|
||||
$(this).hide();
|
||||
});
|
||||
|
||||
// Check if browser supports CSS variables, if not, display an old browser warning
|
||||
// Taken from Modernizr, MIT license
|
||||
var supportsFn = (window.CSS && window.CSS.supports.bind(window.CSS)) || (window.supportsCSS);
|
||||
if (!(!!supportsFn && (supportsFn('--f:0') || supportsFn('--f', 0)))) {
|
||||
$(".oldbrowser-alert").show()
|
||||
}
|
||||
|
||||
// Add CSRF token to ajax requests
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
// Disabled for now - problems with DataTables and dynamic language loading
|
||||
// "X-CSRF-TOKEN": getCsrfToken()
|
||||
}
|
||||
});
|
||||
|
||||
// Initialise tooltips and popovers
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
$('[data-toggle="popover"]').popover();
|
||||
|
||||
// Display or hide offline admins by default
|
||||
$(".admin-status").each(function (key, status) {
|
||||
var hide = $(status).data("hidebydefault")
|
||||
|
||||
if (hide) {
|
||||
adminStatusDisplayOffline(false)
|
||||
}
|
||||
})
|
||||
|
||||
// Show / hide offline admins from admin status
|
||||
$("[data-adminstatusoffline]").click(function (e) {
|
||||
var el = $(this)
|
||||
var show = el.data("adminstatusoffline") === "show"
|
||||
$("[data-adminstatusoffline]").show()
|
||||
el.hide()
|
||||
adminStatusDisplayOffline(show)
|
||||
})
|
||||
|
||||
function adminStatusDisplayOffline(show) {
|
||||
var offlineAdmins = $(".admin-status .status-offline")
|
||||
show ? offlineAdmins.show() : offlineAdmins.hide()
|
||||
}
|
||||
|
||||
// Functions
|
||||
function updateRelativeTime() {
|
||||
$('[data-relativetime]').each(function () {
|
||||
var el = $(this);
|
||||
var mode = el.data("relativetime");
|
||||
var timestamp = el.data("timestamp");
|
||||
|
||||
var fulldate = timestampToDate(timestamp, true)
|
||||
var fuzzydate = timestampToDate(timestamp, false)
|
||||
|
||||
if (mode == "fuzzydate") {
|
||||
el.attr("data-toggle", "tooltip");
|
||||
el.attr("title", fulldate);
|
||||
el.html(fuzzydate);
|
||||
} else if (mode == "fulldate") {
|
||||
el.html(fulldate);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function timestampToDate(timestamp, full) {
|
||||
"use strict"
|
||||
|
||||
var ld = moment.localeData()
|
||||
var fuzzydate = moment.unix(timestamp).fromNow()
|
||||
var fulldate = moment.unix(timestamp).format(ld.longDateFormat("LLL"))
|
||||
return full ? fulldate : fuzzydate
|
||||
}
|
||||
|
||||
function escapeHtml(text) {
|
||||
var map = {
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
"'": '''
|
||||
};
|
||||
|
||||
return text.replace(/[&<>"']/g, function(m) { return map[m]; });
|
||||
}
|
||||
|
||||
function updateTooltip(el, text) {
|
||||
if ($(el).attr("title")) {
|
||||
$(el).attr("title", text)
|
||||
}
|
||||
|
||||
$(el).attr("data-original-title", text)
|
||||
|
||||
var id = $(el).attr("aria-describedby")
|
||||
if (id) {
|
||||
$("#" + id + " .tooltip-inner").text(text)
|
||||
}
|
||||
}
|
||||
|
||||
function updateTooltipWithTranslation(el) {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
args.shift()
|
||||
updateTooltip(el, "".format.apply(el.data("translation"), args))
|
||||
}
|
||||
|
||||
function copyTextToClipboard(text) {
|
||||
var textArea = document.createElement("textarea")
|
||||
textArea.style.position = "fixed"
|
||||
textArea.style.top = -999999999
|
||||
textArea.style.left = -999999999
|
||||
textArea.style.opacity = 0
|
||||
textArea.value = text
|
||||
document.body.appendChild(textArea)
|
||||
textArea.select()
|
||||
|
||||
var success = false
|
||||
|
||||
try {
|
||||
success = document.execCommand('copy')
|
||||
} catch (err) {}
|
||||
|
||||
document.body.removeChild(textArea)
|
||||
return success
|
||||
}
|
||||
Reference in New Issue
Block a user