LinkProvider/js/main.js

146 lines
4.3 KiB
JavaScript
Executable File

$(document).ready(function() {
$(".dropdown-trigger").dropdown({hover: true, coverTrigger: false});
$(".sidenav").sidenav();
$(".tooltipped").tooltip();
$('.modal').modal({dismissible: false});
$('#editlink_modal_delete').click(function() { deleteLink(); });
$('#editlink_modal_save').click(function() { saveEditLink(); });
$('#editlink_modal_cancel').click(function() { cancelEditLink(); });
updateLinkList();
});
function goHome() {
$.ajax({
url: 'ajax/setlocation.php',
dataType: 'json',
data: {gohome: 1},
success: function(data, stat, jqo) {
if ( data.success ) window.location.href = "index.php";
}
});
}
function escapeHTML(text) {
var map = {
'&': '&',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#039;'
};
return text.relink(/[&<>"']/g, function(m) { return map[m]; });
}
function encodeHTML(text) {
return jQuery('<div />').text(text).html();
}
function decodeHTML(text) {
return jQuery('<div />').html(text).text();
}
function toast(message, delay, classname) {
if ( delay === undefined ) delay = 4000;
if ( classname === undefined ) classname = "";
M.toast({html: message, displayLength: delay, classes: classname});
}
function openEditLinkModal(id = 0) {
var instance = M.Modal.getInstance($('#editlink_modal'));
$.ajax({
url: 'ajax/getlinkdata.php',
dataType: 'json',
data: {id: id},
success: function(data, stat, jqo) {
if (data.id !== null) {
$("#editlink_id").val(data.id);
$("#editlink_url").val(data.url);
$("#editlink_title").val(data.title);
$("#editlink_description").val(data.description);
$("#editlink_modal_delete").show();
} else {
$("#editlink_id").val("0");
$("#editlink_url").val("");
$("#editlink_title").val("");
$("#editlink_description").val("");
$("#editlink_modal_delete").hide();
}
M.updateTextFields();
instance.open();
}
});
}
function updateLinkList() {
$.ajax({
type: 'GET',
url: 'getlinks/index.php',
dateType: 'json',
success: function(data, stat, jqo) {
var tabledata = "";
for (var i=0; i<data.links.length; i++) {
var link = data.links[i];
tabledata += "<tr";
if ( data.canedit ) tabledata += " class='clickable' onClick='openEditLinkModal(" + link.id + ")'";
tabledata += ">";
tabledata += "<td>" + link.url_safe + "</td>";
tabledata += "<td>" + link.title_safe + "</td>";
tabledata += "<td>" + link.description_safe + "</td>";
tabledata += "</td>";
tabledata += "</tr>";
}
$("#linklist").html(tabledata);
$('.tooltipped').tooltip();
}
});
}
function deleteLink() {
$.ajax({
type: 'POST',
url: 'ajax/deletelink.php',
dataType: 'json',
data: {id: $("#editlink_id").val()},
success: function(data, stat, jqo) {
if ( data.success ) {
cancelEditLink();
toast(data.message, 4000);
updateLinkList();
} else {
toast(data.message, 4000, "failtoast");
}
}
});
}
function saveEditLink() {
$.ajax({
type: 'POST',
url: 'ajax/savelink.php',
dataType: 'json',
data: {id: $("#editlink_id").val(),
url: $("#editlink_url").val(),
title: $("#editlink_title").val(),
description: $("#editlink_description").val()},
success: function(data, stat, jqo) {
if ( data.success ) {
cancelEditLink();
toast(data.message, 4000);
updateLinkList();
} else {
toast(data.message, 4000, "failtoast");
}
}
});
}
function cancelEditLink() {
var instance = M.Modal.getInstance($('#editlink_modal'));
instance.close();
$("#editlink_url").val("");
$("#editlink_title").val("");
$("#editlink_description").val("");
M.updateTextFields();
}