diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php index 454bc4cba..6acb767b7 100644 --- a/airtime_mvc/application/Bootstrap.php +++ b/airtime_mvc/application/Bootstrap.php @@ -76,6 +76,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap $view->headScript()->appendFile($baseUrl.'/js/airtime/common/common.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); + $view->headScript()->appendFile($baseUrl.'/js/airtime/common/audioplaytest.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $user = Application_Model_User::getCurrentUser(); if (!is_null($user)){ @@ -85,6 +86,8 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap } $view->headScript()->appendScript("var userType = '$userType';"); + + if (isset($CC_CONFIG['demo']) && $CC_CONFIG['demo'] == 1) { $view->headScript()->appendFile($baseUrl.'/js/libs/google-analytics.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); } diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index dc05ab5a0..5abfa443b 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -193,7 +193,7 @@ class Application_Model_Block implements Application_Model_LibraryEditable $files = array(); $sql = <<<"EOT" SELECT pc.id as id, pc.position, pc.cliplength as length, pc.cuein, pc.cueout, pc.fadein, pc.fadeout, bl.type, f.length as orig_length, - f.id as item_id, f.track_title, f.artist_name as creator, f.file_exists as exists, f.filepath as path FROM cc_blockcontents AS pc + f.id as item_id, f.track_title, f.artist_name as creator, f.file_exists as exists, f.filepath as path, f.mime as mime FROM cc_blockcontents AS pc LEFT JOIN cc_files AS f ON pc.file_id=f.id LEFT JOIN cc_block AS bl ON pc.block_id = bl.id WHERE pc.block_id = :block_id diff --git a/airtime_mvc/application/models/Playlist.php b/airtime_mvc/application/models/Playlist.php index ae742b6c8..852ff33a7 100644 --- a/airtime_mvc/application/models/Playlist.php +++ b/airtime_mvc/application/models/Playlist.php @@ -172,7 +172,8 @@ class Application_Model_Playlist implements Application_Model_LibraryEditable f.artist_name AS creator, f.file_exists AS EXISTS, f.filepath AS path, - f.length AS orig_length + f.length AS orig_length, + f.mime AS mime FROM cc_playlistcontents AS pc JOIN cc_files AS f ON pc.file_id=f.id WHERE pc.playlist_id = :playlist_id1 @@ -190,7 +191,8 @@ class Application_Model_Playlist implements Application_Model_LibraryEditable sub.login AS creator, 't'::boolean AS EXISTS, ws.url AS path, - ws.length AS orig_length + ws.length AS orig_length, + ws.mime as mime FROM cc_playlistcontents AS pc JOIN cc_webstream AS ws ON pc.stream_id=ws.id LEFT JOIN cc_subjs AS sub ON sub.id = ws.creator_id @@ -209,7 +211,8 @@ class Application_Model_Playlist implements Application_Model_LibraryEditable sbj.login AS creator, 't'::boolean AS EXISTS, NULL::text AS path, - bl.length AS orig_length + bl.length AS orig_length, + NULL::text as mime FROM cc_playlistcontents AS pc JOIN cc_block AS bl ON pc.block_id=bl.id JOIN cc_subjs AS sbj ON bl.creator_id=sbj.id diff --git a/airtime_mvc/application/views/scripts/playlist/update.phtml b/airtime_mvc/application/views/scripts/playlist/update.phtml index dc95ac2da..5c21e22f3 100644 --- a/airtime_mvc/application/views/scripts/playlist/update.phtml +++ b/airtime_mvc/application/views/scripts/playlist/update.phtml @@ -13,7 +13,7 @@ if ($item['type'] == 2) {
-
"> +
" data-mime-type="">
diff --git a/airtime_mvc/public/css/playlist_builder.css b/airtime_mvc/public/css/playlist_builder.css index b386176e2..74728a0bb 100644 --- a/airtime_mvc/public/css/playlist_builder.css +++ b/airtime_mvc/public/css/playlist_builder.css @@ -114,7 +114,6 @@ } .ui-icon-closethick, -.ui-icon-play, .spl_fade_control, .spl_text_input { cursor: pointer; @@ -164,15 +163,31 @@ background: -moz-linear-gradient(top, #707070 0, #666666 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #707070), color-stop(100%, #666666)); } +#spl_sortable div.big_play_disabled { + display:block; + width:20px; + height:50px; + margin:2px 0 0 2px; + text-align:center; + border:1px solid #5b5b5b; + float:left; + background-color: #707070; + background: -moz-linear-gradient(top, #707070 0, #666666 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #707070), color-stop(100%, #666666)); +} #spl_sortable div.big_play:hover { border:1px solid #282828; background-color: #3b3b3b; background: -moz-linear-gradient(top, #3b3b3b 0, #292929 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3b3b3b), color-stop(100%, #292929)); + cursor: pointer; } #spl_sortable div.big_play .ui-icon { margin: 17px 0 0 1px; } +#spl_sortable div.big_play_disabled .ui-icon { + margin: 17px 0 0 1px; +} #spl_sortable div.big_play:hover .ui-icon-play, #spl_sortable div.big_play:hover .ui-icon-pause { background-image:url(redmond/images/ui-icons_ff5d1a_256x240.png); diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index ff0a78974..454b6d456 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -2888,3 +2888,19 @@ dd .stream-status { outline: 0; border-top-color:#333333 } + +.dark_class +{ + background-color: black; + filter:alpha(opacity=20); /* IE */ + opacity: 0.2; /* Safari, Opera */ + -moz-opacity:0.20; /* FireFox */ + z-index: 20; + height: 100%; + width: 100%; + background-repeat:no-repeat; + background-position:center; + /* position:absolute; */ + top: 0px; + left: 0px; +} diff --git a/airtime_mvc/public/js/airtime/common/audioplaytest.js b/airtime_mvc/public/js/airtime/common/audioplaytest.js new file mode 100644 index 000000000..81bd6c95b --- /dev/null +++ b/airtime_mvc/public/js/airtime/common/audioplaytest.js @@ -0,0 +1,10 @@ +var audio = new Audio(); +supportedAudio = {}; +supportedAudio["audio/ogg"] = !!audio.canPlayType && audio.canPlayType('audio/ogg; codecs="vorbis"') != ""; +supportedAudio["audio/mp3"] = !!audio.canPlayType && audio.canPlayType('audio/mp3') != ""; +supportedAudio["audio/mp4"] = !!audio.canPlayType && audio.canPlayType('audio/mp4') != ""; +supportedAudio["audio/x-flac"] = !!audio.canPlayType && audio.canPlayType('audio/x-flac') != ""; + +function isAudioSupported(mime){ + return mime in supportedAudio && supportedAudio[mime]; +} diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index f70c13c04..f62169feb 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -917,7 +917,7 @@ function addQtipToSCIcons(){ else if($(this).hasClass("soundcloud")){ $(this).qtip({ content: { - text: "Retreiving data from the server...", + text: "Retrieving data from the server...", ajax: { url: "/Library/get-upload-to-soundcloud-status", type: "post", diff --git a/airtime_mvc/public/js/airtime/library/spl.js b/airtime_mvc/public/js/airtime/library/spl.js index 357bf87be..3e8a78a4f 100644 --- a/airtime_mvc/public/js/airtime/library/spl.js +++ b/airtime_mvc/public/js/airtime/library/spl.js @@ -378,10 +378,34 @@ var AIRTIME = (function(AIRTIME){ $pl.delegate(".spl_cue", {"click": openCueEditor}); - //add the play function to the play icon - $pl.delegate(".big_play", - {"click": openAudioPreview}); - + $.each($(".big_play"), function(index, value){ + var mime = $(value).attr("data-mime-type"); + if (isAudioSupported(mime)) { + $(value).bind("click", openAudioPreview); + } else { + $(value).attr("class", "big_play_disabled dark_class"); + $(value).qtip({ + content: 'Your browser does not support playing this file type: "'+ mime +'"', + show: 'mouseover', + hide: { + delay: 500, + fixed: true + }, + style: { + border: { + width: 0, + radius: 4 + }, + classes: "ui-tooltip-dark ui-tooltip-rounded" + }, + position: { + my: "left bottom", + at: "right center" + }, + }) + } + }); + $pl.delegate(".spl_block_expand", {"click": function(ev){ var id = parseInt($(this).attr("id").split("_").pop(), 10);