diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php index cc13cd649..664833955 100644 --- a/airtime_mvc/application/controllers/LibraryController.php +++ b/airtime_mvc/application/controllers/LibraryController.php @@ -156,7 +156,7 @@ class LibraryController extends Zend_Controller_Action $user = new Application_Model_User($userInfo->id); //Open a jPlayer window and play the audio clip. - $menu["play"] = array("name"=> "Preview", "icon" => "play"); + $menu["play"] = array("name"=> "Preview", "icon" => "play", "disabled" => false); $isAdminOrPM = $user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER)); @@ -166,6 +166,8 @@ class LibraryController extends Zend_Controller_Action $file = Application_Model_StoredFile::Recall($id); + $menu["play"]["mime"] = $file->getPropelOrm()->getDbMime(); + if (isset($obj_sess->id) && $screen == "playlist") { // if the user is not admin or pm, check the creator and see if this person owns the playlist or Block if ($obj_sess->type == 'playlist') { diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 6463b2169..3854144d1 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -717,6 +717,7 @@ var AIRTIME = (function(AIRTIME) { callback = function() { var url = '/Playlist/edit'; AIRTIME.playlist.fnEdit(data.id, data.ftype, url); + AIRTIME.playlist.validatePlaylistElements(); }; } else if (data.ftype === "stream") { callback = function() { @@ -731,6 +732,13 @@ var AIRTIME = (function(AIRTIME) { //define a play callback. if (oItems.play !== undefined) { + + if (oItems.play.mime !== undefined) { + if (!isAudioSupported(oItems.play.mime)) { + oItems.play.disabled = true; + } + } + callback = function() { if (data.ftype === 'playlist' && data.length !== '0.0'){ playlistIndex = $(this).parent().attr('id').substring(3); //remove the pl_ diff --git a/airtime_mvc/public/js/airtime/library/spl.js b/airtime_mvc/public/js/airtime/library/spl.js index 3e8a78a4f..4cc478f6a 100644 --- a/airtime_mvc/public/js/airtime/library/spl.js +++ b/airtime_mvc/public/js/airtime/library/spl.js @@ -346,7 +346,6 @@ var AIRTIME = (function(AIRTIME){ } function openPlaylist(json) { - $("#side_playlist") .empty() .append(json.html); @@ -361,23 +360,11 @@ var AIRTIME = (function(AIRTIME){ appendModAddButton(); removeButtonCheck(); } - - //sets events dynamically for playlist entries (each row in the playlist) - function setPlaylistEntryEvents() { - - $pl.delegate("#spl_sortable .ui-icon-closethick", - {"click": function(ev){ - var id; - id = parseInt($(this).attr("id").split("_").pop(), 10); - AIRTIME.playlist.fnDeleteItems([id]); - }}); - - $pl.delegate(".spl_fade_control", - {"click": openFadeEditor}); - - $pl.delegate(".spl_cue", - {"click": openCueEditor}); - + + //Purpose of this function is to iterate over all playlist elements + //and verify whether they can be previewed by the browser or not. If not + //then the playlist element is greyed out + mod.validatePlaylistElements = function(){ $.each($(".big_play"), function(index, value){ var mime = $(value).attr("data-mime-type"); if (isAudioSupported(mime)) { @@ -405,6 +392,25 @@ var AIRTIME = (function(AIRTIME){ }) } }); + } + + //sets events dynamically for playlist entries (each row in the playlist) + function setPlaylistEntryEvents() { + + $pl.delegate("#spl_sortable .ui-icon-closethick", + {"click": function(ev){ + var id; + id = parseInt($(this).attr("id").split("_").pop(), 10); + AIRTIME.playlist.fnDeleteItems([id]); + }}); + + $pl.delegate(".spl_fade_control", + {"click": openFadeEditor}); + + $pl.delegate(".spl_cue", + {"click": openCueEditor}); + + mod.validatePlaylistElements(); $pl.delegate(".spl_block_expand", {"click": function(ev){