From f4ee6c8add45c1b85aa6260f826e493a7ab66f53 Mon Sep 17 00:00:00 2001 From: nelsonlaquet Date: Sun, 1 Sep 2013 14:28:29 -0500 Subject: [PATCH 1/2] Fixed caching --- app/controllers/TracksController.php | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/app/controllers/TracksController.php b/app/controllers/TracksController.php index 289f7f34..2863740a 100644 --- a/app/controllers/TracksController.php +++ b/app/controllers/TracksController.php @@ -75,14 +75,22 @@ ResourceLogItem::logItem('track', $id, ResourceLogItem::PLAY, $format['index']); $response = Response::make('', 200); + $filename = $track->getFileFor('MP3'); if (Config::get('app.sendfile')) { - $response->header('X-Sendfile', $track->getFileFor('MP3')); + $response->header('X-Sendfile', $filename); } else { - $response->header('X-Accel-Redirect', $track->getFileFor('MP3')); + $response->header('X-Accel-Redirect', $filename); } - $response->header('Content-Disposition', 'filename="' . $track->getFilenameFor('MP3') . '"'); + $time = gmdate(filemtime($filename)); + + if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $time == $_SERVER['HTTP_IF_MODIFIED_SINCE']) { + header('HTTP/1.0 304 Not Modified'); + exit(); + } + + $response->header('Last-Modified', $time); $response->header('Content-Type', $format['mime_type']); return $response; @@ -110,15 +118,24 @@ ResourceLogItem::logItem('track', $id, ResourceLogItem::DOWNLOAD, $format['index']); $response = Response::make('', 200); + $filename = $track->getFileFor($format); if (Config::get('app.sendfile')) { - $response->header('X-Sendfile', $track->getFileFor('MP3')); + $response->header('X-Sendfile', $filename); $response->header('Content-Disposition', 'attachment; filename="' . $track->getDownloadFilenameFor($formatName) . '"'); } else { - $response->header('X-Accel-Redirect', $track->getFileFor('MP3')); + $response->header('X-Accel-Redirect', $filename); $response->header('Content-Disposition', 'attachment; filename=' . $track->getDownloadFilenameFor($formatName)); } + $time = gmdate(filemtime($filename)); + + if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $time == $_SERVER['HTTP_IF_MODIFIED_SINCE']) { + header('HTTP/1.0 304 Not Modified'); + exit(); + } + + $response->header('Last-Modified', $time); $response->header('Content-Type', $format['mime_type']); return $response; From 9e358a3fdc9cf9f3e83238f0eecc7f55fa2a453e Mon Sep 17 00:00:00 2001 From: nelsonlaquet Date: Sun, 1 Sep 2013 14:35:05 -0500 Subject: [PATCH 2/2] disabled buttons when cannot go forward/back --- public/scripts/app/services/player.coffee | 13 +++++++++++++ public/styles/player.less | 12 ++++++++++++ public/templates/directives/player.html | 4 ++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/public/scripts/app/services/player.coffee b/public/scripts/app/services/player.coffee index cf2a2c30..b231a3ec 100644 --- a/public/scripts/app/services/player.coffee +++ b/public/scripts/app/services/player.coffee @@ -38,6 +38,10 @@ angular.module('ponyfm').factory('player', [ self.isPlaying = true self.currentSound.play() + updateCanGo = () -> + self.canGoNext = self.playlistIndex < self.playlist.length - 1 + self.canGoPrev = self.playlistIndex > 0 + self = ready: false isPlaying: false @@ -47,6 +51,8 @@ angular.module('ponyfm').factory('player', [ playlistIndex: 0 volume: 0 readyDef: readyDef.promise() + canGoPrev: false + canGoNext: false playPause: () -> return if !self.ready @@ -58,6 +64,8 @@ angular.module('ponyfm').factory('player', [ self.currentSound.pause() playNext: () -> + return if !self.canGoNext + self.currentSound.stop() if self.currentSound != null self.playlistIndex++ if self.playlistIndex >= self.playlist.length @@ -68,8 +76,11 @@ angular.module('ponyfm').factory('player', [ return play self.playlist[self.playlistIndex] + updateCanGo() playPrev: () -> + return if !self.canGoPrev + self.currentSound.stop() if self.currentSound != null self.playlistIndex-- if self.playlistIndex <= 0 @@ -80,6 +91,7 @@ angular.module('ponyfm').factory('player', [ return play self.playlist[self.playlistIndex] + updateCanGo() seek: (progress) -> return if !self.currentSound @@ -108,6 +120,7 @@ angular.module('ponyfm').factory('player', [ $rootScope.$broadcast 'player-starting-playlist', tracks play tracks[index] + updateCanGo() pfm.soundManager.done () -> self.ready = true diff --git a/public/styles/player.less b/public/styles/player.less index c505c742..2bb4bf88 100644 --- a/public/styles/player.less +++ b/public/styles/player.less @@ -112,6 +112,18 @@ body.is-logged { } } + &.disabled { + a { + color: #ccc; + cursor: default; + + &:hover { + background: transparent; + color: #ccc; + } + } + } + &.volume { position: relative; diff --git a/public/templates/directives/player.html b/public/templates/directives/player.html index 82ef882f..597f3e36 100644 --- a/public/templates/directives/player.html +++ b/public/templates/directives/player.html @@ -4,14 +4,14 @@ {{player.currentTrack.progressSeconds | secondsDisplay}} / {{player.currentTrack.duration | secondsDisplay}} -
  • +
  • -
  • +