From 9af7f6dcddfcf8baada47dc51f3c16c773e5c9f0 Mon Sep 17 00:00:00 2001 From: Duncan Sommerville Date: Fri, 30 Oct 2015 10:29:22 -0400 Subject: [PATCH] Fix tabs bugs and podcast auto-ingest error --- .../application/common/PodcastManager.php | 6 ++-- .../library/events/library_showbuilder.js | 4 +-- .../public/js/airtime/library/library.js | 4 +-- airtime_mvc/public/js/airtime/library/spl.js | 30 +++++++++++-------- .../public/js/airtime/showbuilder/tabs.js | 1 + 5 files changed, 26 insertions(+), 19 deletions(-) diff --git a/airtime_mvc/application/common/PodcastManager.php b/airtime_mvc/application/common/PodcastManager.php index 095c8ffc7..26c745135 100644 --- a/airtime_mvc/application/common/PodcastManager.php +++ b/airtime_mvc/application/common/PodcastManager.php @@ -35,8 +35,10 @@ class PodcastManager { // that we're ingesting. // Note that this folds to the failure case (Celery task timeout/download failure) // but will at least continue to ingest new episodes. - $podcast->setDbAutoIngestTimestamp(gmdate('r', strtotime($episodes[0]->getDbPublicationDate())))->save(); - $service->downloadEpisodes($episodes); + if (!empty($episodes)) { + $podcast->setDbAutoIngestTimestamp(gmdate('r', strtotime($episodes[0]->getDbPublicationDate())))->save(); + $service->downloadEpisodes($episodes); + } } Application_Model_Preference::setPodcastPollLock(microtime(true)); diff --git a/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js b/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js index 9a9934160..29ba68947 100644 --- a/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js +++ b/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js @@ -374,10 +374,10 @@ var AIRTIME = (function(AIRTIME) { //buildEditMetadataDialog(json); }); } else if (data.ftype === "playlist" || data.ftype === "block") { - AIRTIME.playlist.fnEdit(data.id, data.tr_id, baseUrl + 'playlist/edit'); + AIRTIME.playlist.fnEdit(data, baseUrl + 'playlist/edit'); AIRTIME.playlist.validatePlaylistElements(); } else if (data.ftype === "stream") { - AIRTIME.playlist.fnEdit(data.id, data.tr_id, baseUrl + 'webstream/edit'); + AIRTIME.playlist.fnEdit(data, baseUrl + 'webstream/edit'); } }); }); diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index aaec55222..d87d154cb 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -1080,12 +1080,12 @@ var AIRTIME = (function(AIRTIME) { }; } else if (data.ftype === "playlist" || data.ftype === "block") { callback = function() { - AIRTIME.playlist.fnEdit(data.id, data.tr_id, baseUrl+'playlist/edit'); + AIRTIME.playlist.fnEdit(data, baseUrl+'playlist/edit'); AIRTIME.playlist.validatePlaylistElements(); }; } else if (data.ftype === "stream") { callback = function() { - AIRTIME.playlist.fnEdit(data.id, data.tr_id, baseUrl + 'webstream/edit'); + AIRTIME.playlist.fnEdit(data, baseUrl + 'webstream/edit'); } } else { throw new Exception($.i18n._("Unknown type: ") + data.ftype); diff --git a/airtime_mvc/public/js/airtime/library/spl.js b/airtime_mvc/public/js/airtime/library/spl.js index e9a5f895f..d2f94d349 100644 --- a/airtime_mvc/public/js/airtime/library/spl.js +++ b/airtime_mvc/public/js/airtime/library/spl.js @@ -849,12 +849,12 @@ var AIRTIME = (function(AIRTIME){ // TODO: refactor - this code is pretty finicky... if ((name == $.i18n._("Untitled Playlist") || name == $.i18n._("Untitled Smart Block")) - && $pl.find(".spl_sortable .spl_empty").length == 1) { + && tab.contents.find(".spl_sortable .spl_empty").length == 1) { mod.fnDelete(undefined, tab); - } else { - tab.close(); } + tab.close(); + $.ajax( { url : baseUrl+"usersettings/set-library-screen-settings", type : "POST", @@ -1117,14 +1117,13 @@ var AIRTIME = (function(AIRTIME){ AIRTIME.tabs.openTab(json.html, uid, AIRTIME.playlist._initFileMdEvents); }; - mod.fnEdit = function(id, uid, url) { - //openPlaylistPanel(); + mod.fnEdit = function(data, url) { stopAudioPreview(); $.post(url, - {format: "json", id: id, type: type}, + {format: "json", id: data.id, type: data.ftype}, function(json) { - AIRTIME.tabs.openTab(json.html, uid, AIRTIME.playlist._initPlaylistTabEvents); + AIRTIME.tabs.openTab(json.html, data.tr_id, AIRTIME.playlist._initPlaylistTabEvents); redrawLib(); }); }; @@ -1139,10 +1138,12 @@ var AIRTIME = (function(AIRTIME){ type = pl.find('.obj_type').val(); url = baseUrl+'playlist/delete'; + console.log(id); + console.log(type); + $.post(url, {format: "json", ids: id, modified: lastMod, type: type}, function(json) { - tab.close(); redrawLib(); }); }; @@ -1485,14 +1486,17 @@ var AIRTIME = (function(AIRTIME){ mod.setCurrent = function(pl) { $pl = pl; - $.post(baseUrl + "playlist/change-playlist", { - "id": mod.getId($pl), - "type": $pl.find('.obj_type').val() - }); + + var type = $pl.find('.obj_type').val(); + if ($.inArray(type, Object.keys(AIRTIME.library.MediaTypeFullToStringEnum)) > -1) { + $.post(baseUrl + "playlist/change-playlist", { + id: mod.getId($pl), + type: type + }); + } }; mod.init = function() { - AIRTIME.tabs.updateActiveTab(); if (!$pl) return; $pl.delegate(".pl-waveform-cues-btn", {"click": function(ev){ diff --git a/airtime_mvc/public/js/airtime/showbuilder/tabs.js b/airtime_mvc/public/js/airtime/showbuilder/tabs.js index 44b3f41dd..9074aca4d 100644 --- a/airtime_mvc/public/js/airtime/showbuilder/tabs.js +++ b/airtime_mvc/public/js/airtime/showbuilder/tabs.js @@ -253,6 +253,7 @@ var AIRTIME = (function(AIRTIME){ */ mod.initScheduleTab = function() { $scheduleTab = Object.freeze(new ScheduleTab()); + $activeTab = $scheduleTab; }; /**