{{define "scripts"}} <script src="/webassets/vue.min.js"></script> <script src="/webassets/axios.min.js"></script> <script src="/webassets/vue-toasted.min.js"></script> <script> Vue.use(Toasted); String.prototype.capitalize = function () { return this.charAt(0).toUpperCase() + this.slice(1); }; const limit = 300; function checkUseMore() { var elements = document.getElementsByClassName("useMore"); for (var index = 0; index < elements.length; index++) { const element = elements[index]; var display = element.style.display; var originalText = element.textContent; if (originalText.length <= limit) { continue; } var newText = originalText.substr(0, limit); var newElement = document.createElement(element.tagName); newElement.textContent = newText; newElement.classList.add("short-version"); element.classList.add("long-version"); var more = document.createElement("a"); more.textContent = " show more"; more.style.cursor = "pointer"; more.onclick = function () { element.style.display = display; newElement.style.display = "none"; }; var less = document.createElement("a"); less.textContent = " show less"; less.style.cursor = "pointer"; less.onclick = function () { element.style.display = "none"; newElement.style.display = display; }; newElement.appendChild(more); element.appendChild(less); element.parentNode.insertBefore(newElement, element.nextSibling); element.style.display = "none"; } } checkUseMore(); function openPlayer(itemId, podcastId) { var url = "/player?"; if (itemId) { url += "&itemId=" + itemId; } if (podcastId) { url += "&podcastId=" + podcastId; } const player = window.open(url, "podgrab_player"); } function getIdentifier() { if(localStorage){ if (localStorage.identifier) { return localStorage.identifier; } var id = +new Date(); localStorage.identifier = id; return id; } } function getWebsocketMessage(messageType, payload){ return JSON.stringify({ identifier:getIdentifier(), messageType, payload }); } function getWebsocketConnection(onOpen,onMessage){ // Create WebSocket connection. const socket = new WebSocket('ws://'+window.location.host+'/ws'); socket.addEventListener('open', onOpen); // Listen for messages socket.addEventListener('message',onMessage); return socket; // Connection opened // socket.addEventListener('open', function (event) { // const message= getWebsocketMessage("register","home") // socket.send(message); // }); // // Listen for messages // socket.addEventListener('message', function (event) { // console.log('Message from server ', event.data); // }); } function downloadAllEpisodes(id) { var confirmed = confirm( "Are you sure you want to download all episodes of this podcast?" ); if (!confirmed) { return false; } axios .get("/podcasts/" + id + "/download") .then(function (response) { Vue.toasted.show( "All episodes of this podcast have been enqueued to download.", { theme: "bubble", type: "info", position: "top-right", duration: 5000, } ); }) .catch(function (error) { if (error.response && error.response.data && error.response.data.message) { Vue.toasted.show(error.response.data.message, { theme: "bubble", type: "error", position: "top-right", duration: 5000, }); } }) .then(function () {}); return false; } function deletePodcast(id,onSuccess) { if (typeof id !== 'string'){ id= id.getAttribute('data-id') } console.log(id) var confirmed = confirm( "Are you sure you want to delete this podcast and all files?" ); if (!confirmed) { return false; } axios .delete("/podcasts/" + id) .then(function (response) { Vue.toasted.show("Podcast deleted successfully.", { theme: "bubble", type: "success", position: "top-right", duration: 5000, }); app.removePodcast(id) }) .catch(function (error) { if (error.response && error.response.data && error.response.data.message) { Vue.toasted.show(error.response.data.message, { theme: "bubble", type: "error", position: "top-right", duration: 5000, }); } }) .then(function () {}); return false; } function deletePodcastEpisodes(id) { if (typeof id !== 'string'){ id= id.getAttribute('data-id') } console.log(id); var confirmed = confirm( "Are you sure you want to delete all episodes of this podcast?" ); if (!confirmed) { return false; } axios .delete("/podcasts/" + id + "/items") .then(function (response) { Vue.toasted.show("Podcast Episodes deleted successfully.", { theme: "bubble", type: "success", position: "top-right", duration: 5000, }); }) .catch(function (error) { if (error.response && error.response.data && error.response.data.message) { Vue.toasted.show(error.response.data.message, { theme: "bubble", type: "error", position: "top-right", duration: 5000, }); } }) .then(function () {}); return false; } function deleteOnlyPodcast(id) { if (typeof id !== 'string'){ id= id.getAttribute('data-id') } console.log(id); var confirmed = confirm( "Are you sure you want to delete this podcast (without deleting the files)?" ); if (!confirmed) { return false; } axios .delete("/podcasts/" + id + "/podcast") .then(function (response) { Vue.toasted.show("Podcast deleted successfully.", { theme: "bubble", type: "success", position: "top-right", duration: 5000, }); app.removePodcast(id) }) .catch(function (error) { if (error.response && error.response.data && error.response.data.message) { Vue.toasted.show(error.response.data.message, { theme: "bubble", type: "error", position: "top-right", duration: 5000, }); } }) .then(function () {}); return false; } function showError(error){ var message="An error has occured." if(typeof(error)==="string"){ message=error; } if (error.response && error.response.data && error.response.data.message) { message=error.response.data.message; } console.log(error) Vue.toasted.show(message, { theme: "bubble", type: "error", position: "top-right", duration: 5000, }); } </script> {{end}}