diff --git a/airtime_mvc/application/common/FileDataHelper.php b/airtime_mvc/application/common/FileDataHelper.php index 3db19b116..d9e8b638a 100644 --- a/airtime_mvc/application/common/FileDataHelper.php +++ b/airtime_mvc/application/common/FileDataHelper.php @@ -235,7 +235,7 @@ class FileDataHelper { * * @return string Path to artwork */ - public static function uploadArtwork($trackid, $data) + public static function setArtwork($trackid, $data) { $file = Application_Model_StoredFile::RecallById($trackid); $md = $file->getMetadata(); @@ -246,37 +246,70 @@ class FileDataHelper { $dbAudioPath = $md["MDATA_KEY_FILEPATH"]; $fullpath = $fp . $dbAudioPath; - $base64 = @$data; - $mime = explode(';', $base64)[0]; + if ($data == "0") { - $audioPath = dirname($fullpath); - $dbPath = dirname($dbAudioPath); - $path_parts = pathinfo($fullpath); - $file = $path_parts['filename']; + $get_img = ""; + self::removeArtwork($trackid, $data); - //Save Data URI - if (file_put_contents($audioPath . "/" . $file, $base64)) { - $get_img = $dbPath . "/" . $file; } else { - Logging::error("Could not save Data URI"); + + $base64 = @$data; + $mime = explode(';', $base64)[0]; + + $audioPath = dirname($fullpath); + $dbPath = dirname($dbAudioPath); + $path_parts = pathinfo($fullpath); + $file = $path_parts['filename']; + + //Save Data URI + if (file_put_contents($audioPath . "/" . $file, $base64)) { + $get_img = $dbPath . "/" . $file; + } else { + Logging::error("Could not save Data URI"); + } + + $rfile = $audioPath . "/" . $file; + + if ($mime == "data:image/png") { + $ext = 'png'; + } elseif ($mime == "data:image/gif") { + $ext = 'gif'; + } elseif ($mime == "data:image/bmp") { + $ext = 'bmp'; + } else { + $ext = 'jpg'; + } + self::resizeGroup($rfile, $ext); + } - - $rfile = $audioPath . "/" . $file; - - if ($mime == "data:image/png") { - $ext = 'png'; - } elseif ($mime == "data:image/gif") { - $ext = 'gif'; - } elseif ($mime == "data:image/bmp") { - $ext = 'bmp'; - } else { - $ext = 'jpg'; - } - self::resizeGroup($rfile, $ext); - return $get_img; } + /** + * + * Deletes just the artwork + */ + public static function removeArtwork($trackid) + { + $file = Application_Model_StoredFile::RecallById($trackid); + $md = $file->getMetadata(); + + $storDir = Application_Model_MusicDir::getStorDir(); + $fp = $storDir->getDirectory(); + + $dbAudioPath = $md["MDATA_KEY_ARTWORK"]; + $fullpath = $fp . $dbAudioPath; + + if (file_exists($fullpath)) { + foreach (glob("$fullpath*", GLOB_NOSORT) as $filename) { + unlink($filename); + } + } else { + throw new Exception("Could not locate file ".$filepath); + } + return ""; + } + /** * Resize artwork group * diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php index 8033555df..7b41603f7 100644 --- a/airtime_mvc/application/controllers/LibraryController.php +++ b/airtime_mvc/application/controllers/LibraryController.php @@ -395,17 +395,20 @@ class LibraryController extends Zend_Controller_Action //on edit, if no artwork is set and audiofile has image, automatically add it if ($j["name"] == "artwork") { if ($j["value"] == null || $j["value"] == ''){ - $serialized["artwork"] = FileDataHelper::resetArtwork($file_id); + $serialized["artwork"] = FileDataHelper::resetArtwork($file_id); + } + } elseif ($j["name"] == "set_artwork") { + if ($j["value"] != null || $j["value"] != ''){ + $serialized["artwork"] = FileDataHelper::setArtwork($file_id, $j["value"] ); + } + } elseif ($j["name"] == "remove_artwork") { + if ($j["value"] == 1){ + $remove_artwork = true; + $serialized["artwork"] = FileDataHelper::removeArtwork($file_id); } } else { $serialized[$j["name"]] = $j["value"]; } - - if ($j["name"] == "artwork_uploaded") { - if ($j["value"] != null || $j["value"] != ''){ - $serialized["artwork"] = FileDataHelper::uploadArtwork($file_id, $j["value"] ); - } - } } // Sanitize any wildly incorrect metadata before it goes to be validated. diff --git a/airtime_mvc/application/forms/EditAudioMD.php b/airtime_mvc/application/forms/EditAudioMD.php index 8b7f40754..dda96aa5c 100644 --- a/airtime_mvc/application/forms/EditAudioMD.php +++ b/airtime_mvc/application/forms/EditAudioMD.php @@ -20,6 +20,7 @@ class Application_Form_EditAudioMD extends Zend_Form // Add artwork hidden field $artwork = new Zend_Form_Element_Hidden('artwork'); + $artwork->class = 'input_text artwork_'. $p_id; $artwork->setFilters(array('StringTrim')) ->setValidators(array( new Zend_Validate_StringLength(array('max' => 2048)) @@ -29,13 +30,21 @@ class Application_Form_EditAudioMD extends Zend_Form $file_id->setAttrib('class', 'artwork'); $this->addElement($artwork); - // Add artwork uploaded hidden field - $artwork_uploaded = new Zend_Form_Element_Hidden('artwork_uploaded'); - $artwork_uploaded->class = 'input_text artwork_uploaded_'. $p_id; + // Set artwork hidden field + $set_artwork = new Zend_Form_Element_Hidden('set_artwork'); + $set_artwork->class = 'input_text set_artwork_'. $p_id; $file_id->addDecorator('HtmlTag', array('tag' => 'div', 'style' => 'display:none')); $file_id->removeDecorator('Label'); - $file_id->setAttrib('class', 'artwork_uploaded'); - $this->addElement($artwork_uploaded); + $file_id->setAttrib('class', 'set_artwork'); + $this->addElement($set_artwork); + + // Remove artwork hidden field + $remove_artwork = new Zend_Form_Element_Hidden('remove_artwork'); + $remove_artwork->class = 'input_text remove_artwork_'. $p_id; + $file_id->addDecorator('HtmlTag', array('tag' => 'div', 'style' => 'display:none')); + $file_id->removeDecorator('Label'); + $file_id->setAttrib('class', 'remove_artwork'); + $this->addElement($remove_artwork); // Add title field $track_title = new Zend_Form_Element_Text('track_title'); diff --git a/airtime_mvc/application/views/scripts/library/edit-file-md.phtml b/airtime_mvc/application/views/scripts/library/edit-file-md.phtml index 03e919d66..c216987ae 100644 --- a/airtime_mvc/application/views/scripts/library/edit-file-md.phtml +++ b/airtime_mvc/application/views/scripts/library/edit-file-md.phtml @@ -29,6 +29,9 @@ +
+ Remove +
diff --git a/airtime_mvc/public/css/images/no-cover.jpg b/airtime_mvc/public/css/images/no-cover.jpg index cd38cfc0d..bd4f12cf8 100644 Binary files a/airtime_mvc/public/css/images/no-cover.jpg and b/airtime_mvc/public/css/images/no-cover.jpg differ diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 14a1594e7..d4a28373d 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -1609,7 +1609,7 @@ function readArtworkURL(input, id) { $('.artwork-preview-'+id).css('background-image', 'url('+e.target.result +')'); $('.artwork-preview-'+id).hide(); $('.artwork-preview-'+id).fadeIn(500); - $('.artwork_uploaded_'+id).val(function() { + $('.set_artwork_'+id).val(function() { return e.target.result; }); } @@ -1678,6 +1678,25 @@ $(document).ready(function() { resizeAdvancedSearch(); }); + // delete artwork + $(document).on('click', '.delete-artwork', function(event) { + event.preventDefault(); + event.stopPropagation(); + var id = $(this).attr('data-id'); + $('.artwork-preview-'+id).css('background-image', 'url('+ baseUrl +'css/images/no-cover.jpg)'); + $('.artwork-preview-'+id).hide(); + $('.artwork-preview-'+id).fadeIn(500); + $('.artwork_'+id).val(function() { + return ""; + }); + $('.set_artwork_'+id).val(function() { + return ""; + }); + $('.remove_artwork_'+id).val(function() { + return 1; + }); + }); + // image upload by clicking on the artwork container $(document).on('change', '.artworkUpload', 'input', function(event) { event.preventDefault(); @@ -1760,7 +1779,7 @@ $(document).ready(function() { $('.artwork-preview-'+id).css('background-image', 'url('+ data +')'); $('.artwork-preview-'+id).hide(); $('.artwork-preview-'+id).fadeIn(500); - $('.artwork_uploaded_'+id).val(function() { + $('.set_artwork_'+id).val(function() { return data; }); }