diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php index 1f704865d..1606331a8 100644 --- a/airtime_mvc/application/controllers/PlaylistController.php +++ b/airtime_mvc/application/controllers/PlaylistController.php @@ -78,6 +78,7 @@ class PlaylistController extends Zend_Controller_Action $form = new Application_Form_SmartPlaylistCriteria(); $form->removeDecorator('DtDdWrapper'); + $form->startForm($pl->getId()); //$form->loadCriteria($pl->getId()); $this->view->form = $form; @@ -149,6 +150,7 @@ class PlaylistController extends Zend_Controller_Action $pl = new Application_Model_Playlist($this->pl_sess->id); $this->view->pl = $pl; $form = new Application_Form_SmartPlaylistCriteria(); + $form->startForm($this->pl_sess->id); $this->view->form = $form; $formatter = new LengthFormatter($pl->getLength()); diff --git a/airtime_mvc/application/forms/SmartPlaylistCriteria.php b/airtime_mvc/application/forms/SmartPlaylistCriteria.php index 64e5294b9..47d918e59 100644 --- a/airtime_mvc/application/forms/SmartPlaylistCriteria.php +++ b/airtime_mvc/application/forms/SmartPlaylistCriteria.php @@ -1,9 +1,11 @@ "Select criteria", "album_title" => "Album", @@ -34,6 +36,55 @@ class Application_Form_SmartPlaylistCriteria extends Zend_Form_SubForm "year" => "Year" ); + $criteriaTypes = array( + 0 => "", + "album_title" => "s", + "artist_name" => "s", + "bit_rate" => "n", + "bpm" => "n", + "comments" => "s", + "composer" => "s", + "conductor" => "s", + "utime" => "n", + "mtime" => "n", + "disc_number" => "n", + "genre" => "s", + "isrc_number" => "s", + "label" => "s", + "language" => "s", + "length" => "n", + "lyricist" => "s", + "mood" => "s", + "name" => "s", + "orchestra" => "s", + "radio_station_name" => "s", + "rating" => "n", + "sample_rate" => "n", + "soundcloud_id" => "n", + "track_title" => "s", + "track_num" => "n", + "year" => "n" + ); + + $stringCriteriaOptions = array( + "0" => "Select modifier", + "contains" => "contains", + "does not contain" => "does not contain", + "is" => "is", + "is not" => "is not", + "starts with" => "starts with", + "ends with" => "ends with" + ); + + $numericCriteriaOptions = array( + "0" => "Select modifier", + "is" => "is", + "is not" => "is not", + "is greater than" => "is greater than", + "is less than" => "is less than", + "is in the range" => "is in the range" + ); + $limitOptions = array( "hours" => "hours", "minutes" => "minutes", @@ -55,40 +106,80 @@ class Application_Form_SmartPlaylistCriteria extends Zend_Form_SubForm $spType->setValue('Static'); $this->addElement($spType); + // load criteria from db + $c = new Criteria(); + $c->add(CcPlaylistcriteriaPeer::PLAYLIST_ID, $p_playlistId); + $out = CcPlaylistcriteriaPeer::doSelect($c); + + $storedCrit = array(); + foreach ($out as $crit) { + $criteria = $crit->getDbCriteria(); + $modifier = $crit->getDbModifier(); + $value = $crit->getDbValue(); + $extra = $crit->getDbExtra(); + + if($criteria == "limit"){ + $storedCrit["limit"] = array("value"=>$value, "modifier"=>$modifier); + }else{ + $storedCrit["crit"][] = array("criteria"=>$criteria, "value"=>$value, "modifier"=>$modifier, "extra"=>$extra); + } + } + $numElements = count($criteriaOptions); for ($i = 0; $i < $numElements; $i++) { + $criteriaType = ""; $criteria = new Zend_Form_Element_Select('sp_criteria_field_'.$i); - $criteria->setAttrib('class', 'input_select'); - $criteria->setValue('Select criteria'); - $criteria->setDecorators(array('viewHelper')); - $criteria->setMultiOptions($criteriaOptions); - if ($i != 0){ + $criteria->setAttrib('class', 'input_select') + ->setValue('Select criteria') + ->setDecorators(array('viewHelper')) + ->setMultiOptions($criteriaOptions); + if ($i != 0 && !isset($storedCrit["crit"][$i])){ $criteria->setAttrib('disabled', 'disabled'); } + if (isset($storedCrit["crit"][$i])) { + $criteriaType = $criteriaTypes[$storedCrit["crit"][$i]["criteria"]]; + $criteria->setValue($storedCrit["crit"][$i]["criteria"]); + } $this->addElement($criteria); $criteriaModifers = new Zend_Form_Element_Select('sp_criteria_modifier_'.$i); - $criteriaModifers->setValue('Select modifier'); - $criteriaModifers->setAttrib('class', 'input_select'); - $criteriaModifers->setDecorators(array('viewHelper')); - $criteriaModifers->setMultiOptions(array('0' => 'Select modifier')); - if ($i != 0){ + $criteriaModifers->setValue('Select modifier') + ->setAttrib('class', 'input_select') + ->setDecorators(array('viewHelper')); + if ($i != 0 && !isset($storedCrit["crit"][$i])){ $criteriaModifers->setAttrib('disabled', 'disabled'); } + if (isset($storedCrit["crit"][$i])) { + if($criteriaType == "s"){ + $criteriaModifers->setMultiOptions($stringCriteriaOptions); + }else{ + $criteriaModifers->setMultiOptions($numericCriteriaOptions); + } + $criteriaModifers->setValue($storedCrit["crit"][$i]["modifier"]); + }else{ + $criteriaModifers->setMultiOptions(array('0' => 'Select modifier')); + } $this->addElement($criteriaModifers); $criteriaValue = new Zend_Form_Element_Text('sp_criteria_value_'.$i); - $criteriaValue->setAttrib('class', 'input_text'); - $criteriaValue->setDecorators(array('viewHelper')); - if ($i != 0){ + $criteriaValue->setAttrib('class', 'input_text') + ->setDecorators(array('viewHelper')); + if ($i != 0 && !isset($storedCrit["crit"][$i])){ $criteriaValue->setAttrib('disabled', 'disabled'); } + if (isset($storedCrit["crit"][$i])) { + $criteriaValue->setValue($storedCrit["crit"][$i]["value"]); + } $this->addElement($criteriaValue); $criteriaExtra = new Zend_Form_Element_Text('sp_criteria_extra_'.$i); - $criteriaExtra->setAttrib('class', 'input_text'); - $criteriaExtra->setDecorators(array('viewHelper')); - $criteriaExtra->setAttrib('disabled', 'disabled'); + $criteriaExtra->setAttrib('class', 'input_text') + ->setDecorators(array('viewHelper')); + if (isset($storedCrit["crit"][$i]["extra"])) { + $criteriaExtra->setValue($storedCrit["crit"][$i]["extra"]); + }else{ + $criteriaExtra->setAttrib('disabled', 'disabled'); + } $this->addElement($criteriaExtra); } @@ -96,6 +187,11 @@ class Application_Form_SmartPlaylistCriteria extends Zend_Form_SubForm $limit->setAttrib('class', 'input_select'); $limit->setDecorators(array('viewHelper')); $limit->setMultiOptions($limitOptions); + if (isset($storedCrit["limit"])) { + $limit->setValue($storedCrit["limit"]["modifier"]); + }else{ + $limit->setAttrib('disabled', 'disabled'); + } $this->addElement($limit); $limitValue = new Zend_Form_Element_Text('sp_limit_value'); @@ -103,6 +199,11 @@ class Application_Form_SmartPlaylistCriteria extends Zend_Form_SubForm $limitValue->setLabel('Limit to'); $limitValue->setDecorators(array('viewHelper')); $this->addElement($limitValue); + if (isset($storedCrit["limit"])) { + $limitValue->setValue($storedCrit["limit"]["value"]); + }else{ + $limitValue->setAttrib('disabled', 'disabled'); + } $save = new Zend_Form_Element_Button('save_button'); $save->setAttrib('class', 'ui-button ui-state-default right-floated'); @@ -125,16 +226,15 @@ class Application_Form_SmartPlaylistCriteria extends Zend_Form_SubForm $extra = $crit->getDbExtra(); if($criteria == "limit"){ - $this->getElement("sp_limit_options")->setValue($modifier); - $this->getElement("sp_limit_value")->setValue($value); + Zend_Form::getElement("sp_limit_options")->setValue($modifier); + Zend_Form::getElement("sp_limit_value")->setValue($value); }else{ - $this->getElement("sp_criteria_$i")->setValue($criteria); - $this->getElement("sp_criteria_modifier_$i")->setValue($criteria); - $this->getElement("sp_criteria_value_$i")->setValue($criteria); - + Zend_Form::getElement("sp_criteria_$i")->setValue($criteria); + Zend_Form::getElement("sp_criteria_modifier_$i")->setValue($criteria); + Zend_Form::getElement("sp_criteria_value_$i")->setValue($criteria); + Zend_Form::getElement("sp_criteria_extra_$i")->setValue($criteria); $i++; } } - Logging::log($out); } } \ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/form/smart-playlist-criteria.phtml b/airtime_mvc/application/views/scripts/form/smart-playlist-criteria.phtml index 5b3958ae2..281d5e5a7 100644 --- a/airtime_mvc/application/views/scripts/form/smart-playlist-criteria.phtml +++ b/airtime_mvc/application/views/scripts/form/smart-playlist-criteria.phtml @@ -24,7 +24,7 @@ element->getElement('sp_criteria_field_'.$i) ?> element->getElement('sp_criteria_modifier_'.$i) ?> - element->getElement('sp_criteria_value_'.$i) ?> + element->getElement('sp_criteria_value_'.$i) ?>element->getElement('sp_criteria_extra_'.$i)->getAttrib("disabled") == "disabled"?'style="display:none;"':""?>> to element->getElement('sp_criteria_extra_'.$i) ?> Remove  diff --git a/airtime_mvc/public/js/airtime/playlist/smart_playlistbuilder.js b/airtime_mvc/public/js/airtime/playlist/smart_playlistbuilder.js index 267adab17..eacafa15c 100644 --- a/airtime_mvc/public/js/airtime/playlist/smart_playlistbuilder.js +++ b/airtime_mvc/public/js/airtime/playlist/smart_playlistbuilder.js @@ -238,7 +238,7 @@ var criteriaTypes = { "album_title" : "s", "artist_name" : "s", "bit_rate" : "n", - "bmp" : "n", + "bpm" : "n", "comments" : "s", "composer" : "s", "conductor" : "s",