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) ?>
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",