pastebin/static/custom.js

172 lines
5.1 KiB
JavaScript
Raw Normal View History

2020-05-09 00:10:11 +02:00
$(document).ready(function() {
function replaceUrlParam(url, param, value) {
if (value == null) {
value = '';
}
var pattern = new RegExp('\\b('+param+'=).*?(&|#|$)');
if (url.search(pattern)>=0) {
return url.replace(pattern,'$1' + value + '$2');
}
url = url.replace(/[?#]$/,'');
return url + (url.indexOf('?')>0 ? '&' : '?') + param + '=' + value;
}
function resetLanguageSelector() {
var url = new URL(document.location);
var params = url.searchParams;
var lang = params.get("lang");
if (lang != null) {
$("#language-selector").val(lang);
} else {
if($("#pastebin-code-block").length) {
$("#language-selector").val(
$("#pastebin-code-block").prop("class").trim().split('-')[1]
);
}
}
}
2020-05-09 00:10:11 +02:00
2020-09-23 02:36:52 +02:00
function getDefaultExpiryTime() {
var expiry = $("#expiry-dropdown-btn").text().split("Expires: ")[1];
return $("#expiry-dropdown a:contains('"+ expiry +"')").attr('href');
}
function checkPasswordModal() {
if ($("#password-modal").length) {
$('#password-modal').modal('toggle');
}
}
resetLanguageSelector();
checkPasswordModal();
init_plugins();
var state = {
expiry: getDefaultExpiryTime(),
burn: 0,
};
$("#language-selector").change(function() {
if ($("#pastebin-code-block").length) {
$('#pastebin-code-block').attr('class', 'language-' + $("#language-selector").val());
init_plugins();
}
});
$("#remove-btn").on("click", function(event) {
event.preventDefault();
$.ajax({
url: window.location.pathname,
type: 'DELETE',
success: function(result) {
uri = uri_prefix + "/new";
uri = replaceUrlParam(uri, 'level', "info");
uri = replaceUrlParam(uri, 'glyph', "fas fa-info-circle");
uri = replaceUrlParam(uri, 'msg', "The paste has been successfully removed.");
window.location.href = encodeURI(uri);
}
});
});
$("#copy-btn").on("click", function(event) {
event.preventDefault();
$(".toolbar-item button").get(0).click();
var $this = $(this);
$this.text("Copied!");
$this.attr("disabled", "disabled");
setTimeout(function() {
$this.text("Copy");
$this.removeAttr("disabled");
}, 800);
});
$("#send-btn").on("click", function(event) {
event.preventDefault();
uri = uri_prefix == "" ? "/" : uri_prefix;
uri = replaceUrlParam(uri, 'lang', $("#language-selector").val());
uri = replaceUrlParam(uri, 'ttl', state.expiry);
uri = replaceUrlParam(uri, 'burn', state.burn);
var data = $("#content-textarea").val();
var pass = $("#pastebin-password").val();
if ($("#pastebin-password").val().length > 0) {
data = CryptoJS.AES.encrypt(data, pass).toString();
uri = replaceUrlParam(uri, 'encrypted', true);
}
$.ajax({
url: uri,
type: 'POST',
data: data,
success: function(result) {
uri = uri_prefix + "/new";
uri = replaceUrlParam(uri, 'level', "success");
uri = replaceUrlParam(uri, 'glyph', "fas fa-check");
uri = replaceUrlParam(uri, 'msg', "The paste has been successfully created:");
uri = replaceUrlParam(uri, 'url', result);
window.location.href = encodeURI(uri);
}
});
});
$('#expiry-dropdown a').click(function(event){
event.preventDefault();
state.expiry = $(this).attr("href");
$('#expiry-dropdown-btn').text("Expires: " + this.innerHTML);
});
$('#burn-dropdown a').click(function(event){
event.preventDefault();
state.burn = $(this).attr("href");
$('#burn-dropdown-btn').text("Burn: " + this.innerHTML);
});
$('#password-modal').on('shown.bs.modal', function () {
$('#modal-password').trigger('focus');
})
$('#password-modal form').submit(function(event) {
event.preventDefault();
$('#decrypt-btn').click();
});
$('#decrypt-btn').click(function(event) {
var pass = $("#modal-password").val();
2020-05-09 00:10:11 +02:00
var data = "";
if ($("#pastebin-code-block").length) {
data = $("#pastebin-code-block").text();
2020-05-09 00:10:11 +02:00
} else {
data = $("#content-textarea").text();
2020-05-09 00:10:11 +02:00
}
var decrypted = CryptoJS.AES.decrypt(data, pass).toString(CryptoJS.enc.Utf8);
if (decrypted.length == 0) {
$("#modal-alert").removeClass("collapse");
} else {
2020-05-09 00:10:11 +02:00
if ($("#pastebin-code-block").length) {
$("#pastebin-code-block").text(decrypted);
init_plugins();
2020-05-09 00:10:11 +02:00
} else {
$("#content-textarea").text(decrypted);
2020-05-09 00:10:11 +02:00
}
$("#modal-close-btn").click();
$("#modal-alert").alert('close');
}
});
2020-05-09 00:10:11 +02:00
});