240 lines
8.5 KiB
JavaScript
240 lines
8.5 KiB
JavaScript
// Global variables
|
|
var kindlemail = "";
|
|
var currentpath = "";
|
|
var searchTimeout = null;
|
|
var lastSearch = "";
|
|
var admin = false;
|
|
|
|
$(document).ready(function() {
|
|
getContents();
|
|
$("#bookshome").on("click", function() { setPath("/"); });
|
|
$("#curpath").on("click", function() { setPath($("#curpath").data("newpath")); });
|
|
$("#amazonlink").on("click", function() {
|
|
$("#edit_kindle").val(kindlemail);
|
|
$("#setkindle").dialog("open");
|
|
});
|
|
$("#setkindle").dialog({
|
|
autoOpen: false,
|
|
height: 225,
|
|
width: 450,
|
|
closeOnEscape: true,
|
|
draggable: false,
|
|
modal: true,
|
|
close: function() {
|
|
$("#edit_kindle").val("");
|
|
},
|
|
buttons: [
|
|
{
|
|
text: "Save",
|
|
click: function() { setKindleMail($("#edit_kindle").val()); }
|
|
},
|
|
{
|
|
text: "Cancel",
|
|
click: function() { $(this).dialog("close"); }
|
|
}
|
|
]
|
|
});
|
|
$("#search").on("change keyup", function() {
|
|
if ( searchTimeout ) clearTimeout(searchTimeout);
|
|
if ( $("#search").val().length > 2 ) searchTimeout = setTimeout(getContents, 500);
|
|
if ( ($("#search").val() == "") && (lastSearch != "") ) {
|
|
lastSearch = "";
|
|
getContents();
|
|
}
|
|
});
|
|
$("#parsebooks").on("click", parseBooks);
|
|
});
|
|
|
|
function showKindleMail() {
|
|
$("#amazonlink").html("KindleMail: " + ((kindlemail != "") ? kindlemail : "Click to Set"));
|
|
}
|
|
|
|
function redirectToLogin() {
|
|
console.log("Redirecting for login...");
|
|
window.location.replace("index.php");
|
|
}
|
|
|
|
function basename(str) {
|
|
return str.substr(str.lastIndexOf("/") + 1);
|
|
}
|
|
|
|
function getContents() {
|
|
if ( searchTimeout ) clearTimeout(searchTimeout);
|
|
var data = {};
|
|
if ( $("#search").val() != "" ) {
|
|
data.search = $("#search").val();
|
|
lastSearch = data.search;
|
|
}
|
|
$.ajax({
|
|
url : 'ajax/getcontents.php',
|
|
data : data,
|
|
dataType : 'json',
|
|
success : function(data, stat, jqo) {
|
|
if ( data.validated == false ) redirectToLogin();
|
|
admin = data.admin;
|
|
if ( admin ) $("#parsebooks").removeClass("hide");
|
|
if ( data.kindlemail != kindlemail ) {
|
|
kindlemail = data.kindlemail;
|
|
showKindleMail();
|
|
}
|
|
if ( data.bookdir != currentpath ) {
|
|
currentpath = data.bookdir;
|
|
if ( data.bookdirname != "" ) {
|
|
$("#curpath").text(data.bookdirname);
|
|
$("#curpath").data("newpath", data.bookdir);
|
|
$("#curpath").removeClass("hide");
|
|
} else {
|
|
$("#curpath").addClass("hide");
|
|
}
|
|
}
|
|
var contents = "";
|
|
data.contents.forEach(function(item) {
|
|
if ( item.folder == true ) {
|
|
contents += '<div><span class="target folder" data-newpath="' + item.fullpath + '">' + item.displayname + "</span></div>";
|
|
} else {
|
|
contents += '<div><a href="book/' + item.id + '/' + basename(item.displayname) + '"';
|
|
if ( item.displayname.substring(item.displayname.length - 4) == "epub" ) {
|
|
contents += '" target="_blank"';
|
|
} else {
|
|
contents += '"';
|
|
}
|
|
contents += ' class="target file">' + item.displayname + "</a>";
|
|
if ( item.cankindle == true ) {
|
|
contents += ' (<span class="tokindle" data-fileid="' + item.id + '" data-filename="' + item.displayname + '">Kindle</span>)';
|
|
}
|
|
contents += "</div>";
|
|
}
|
|
});
|
|
$("#foldercontents").html(contents);
|
|
$(".folder").on("click", function(e) { setPath($(e.currentTarget).data("newpath")); });
|
|
$(".tokindle").on("click", function(e) {
|
|
var target = $(e.currentTarget);
|
|
sendToKindle(target.data("fileid"), target.data("filename")); });
|
|
}
|
|
});
|
|
}
|
|
|
|
function setPath(newpath) {
|
|
$.ajax({
|
|
url: 'ajax/setpath.php',
|
|
data: {newpath: newpath},
|
|
dataType: 'json',
|
|
success: function(data, stat, jqo) {
|
|
if ( data.validated == false ) redirectToLogin();
|
|
if ( data.changed == true ) {
|
|
$("#search").val("");
|
|
getContents();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function setKindleMail(email) {
|
|
$.ajax({
|
|
url: 'ajax/setkindle.php',
|
|
data: {kindlemail: email},
|
|
dataType: 'json',
|
|
success: function(data, stat, jqo) {
|
|
if ( data.validated == false ) redirectToLogin();
|
|
if ( data.success == false ) {
|
|
var myToast = $.toast({
|
|
text : "<h3><strong>Error: Invalid Email Address</strong></h3>",
|
|
showHideTransition : 'slide',
|
|
bgColor : '#cc0000',
|
|
textColor : '#eee',
|
|
hideAfter : 4000,
|
|
textAlign : 'left',
|
|
position : 'top-right'
|
|
});
|
|
} else {
|
|
kindlemail = email;
|
|
showKindleMail();
|
|
$("#setkindle").dialog("close");
|
|
$("#edit_kindle").val("");
|
|
var myToast = $.toast({
|
|
text : "<h3><strong>Kindle Email Address set successfully</strong></h3>",
|
|
showHideTransition : 'slide',
|
|
bgColor : '#137c1e',
|
|
textColor : '#eee',
|
|
hideAfter : 4000,
|
|
textAlign : 'left',
|
|
position : 'top-right'
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function parseBooks() {
|
|
if ( !admin ) return;
|
|
var myToast = $.toast({
|
|
text : "<h2><strong>Parsing Books</strong></h2>",
|
|
showHideTransition : 'slide',
|
|
bgColor : '#033e9e',
|
|
textColor : '#eee',
|
|
hideAfter : false,
|
|
textAlign : 'left',
|
|
position : 'top-right'
|
|
});
|
|
$.ajax({
|
|
url : 'scripts/parsebooks.php',
|
|
dataType : 'json',
|
|
success : function(data, stat, jqo) {
|
|
if ( (data.new != 0) || (data.purged != 0) ) getContents();
|
|
myToast.reset();
|
|
var message = "";
|
|
message += "<h2><strong>Books Parsed:</strong></h2>";
|
|
message += "<hr>";
|
|
message += "<h3><strong>New:</strong> " + data.new + "</h3><br />";
|
|
message += "<h3><strong>Purged:</strong> " + data.purged + "</h3><br />";
|
|
message += "<h3><strong>Total:</strong> " + data.total + "</h3><br />";
|
|
$.toast({
|
|
text : message,
|
|
showHideTransition : 'slide',
|
|
bgColor : '#137c1e',
|
|
textColor : '#eee',
|
|
hideAfter : 10000,
|
|
textAlign : 'left',
|
|
position : 'top-right'
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function sendToKindle(fileid, filename) {
|
|
var myToast = $.toast({
|
|
text : "<h3><strong>Sending: " + filename + "</strong></h3>",
|
|
showHideTransition : 'slide',
|
|
bgColor : '#033e9e',
|
|
textColor : '#eee',
|
|
hideAfter : false,
|
|
textAlign : 'left',
|
|
position : 'top-right'
|
|
});
|
|
$.ajax({
|
|
url : 'ajax/sendtokindle.php',
|
|
data : {fileid: fileid},
|
|
dataType : 'json',
|
|
success : function(data, stat, jqo) {
|
|
if ( data.validated == false ) redirectToLogin();
|
|
myToast.reset();
|
|
var message = "";
|
|
message = "<h3><strong>Sent File:</strong> " + data.filename + "</h3>";
|
|
message += "<h3><strong>To:</strong> " + data.tomail + "</h3><br />";
|
|
message += "<h4><strong>Don't forget to add \"books@jaj.com\" ";
|
|
message += "to your approved senders.</strong></h4>";
|
|
$.toast({
|
|
text : message,
|
|
showHideTransition : 'slide',
|
|
bgColor : '#137c1e',
|
|
textColor : '#eee',
|
|
hideAfter : 10000,
|
|
textAlign : 'left',
|
|
position : 'top-right'
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
// vim: ts=3 sw=3 ai:
|