CC-84: Smart Playlists

-added in 'Add' and 'Remove' form elements functionality on the UI
This commit is contained in:
denise 2012-07-10 18:20:23 -04:00
parent 72dd48e33e
commit 4301a221b7
3 changed files with 80 additions and 44 deletions

View File

@ -3,13 +3,6 @@ class Application_Form_SmartPlaylistCriteria extends Zend_Form_SubForm
{ {
public function init() public function init()
{ {
//temporary solution
//get criteria ids
$ids = array(1,2,3);
$this->setDecorators(array(
array('ViewScript', array('viewScript' => 'form/smart-playlist-criteria.phtml', 'ids' => $ids))
));
$criteriaOptions = array( $criteriaOptions = array(
0 => "Select criteria", 0 => "Select criteria",
@ -43,20 +36,22 @@ class Application_Form_SmartPlaylistCriteria extends Zend_Form_SubForm
); );
$stringCriteriaOptions = array( $stringCriteriaOptions = array(
"contains", 0 => "Select modifier",
"does not contain", "contains" => "contains",
"is", "does not contain" => "does not contain",
"is not", "is" => "is",
"starts with", "is not" => "is not",
"ends with" "starts with" => "starts with",
"ends with" => "ends with"
); );
$numericCriteriaOptions = array( $numericCriteriaOptions = array(
"is", 0 => "Select modifier",
"is not", "is" => "is",
"is greater than", "is not" => "is not",
"is less than", "is greater than" => "is greater than",
"is in the range" "is less than" => "is less than",
"is in the range" => "is in the range"
); );
$limitOptions = array( $limitOptions = array(
@ -65,6 +60,11 @@ class Application_Form_SmartPlaylistCriteria extends Zend_Form_SubForm
"items" "items"
); );
$this->setDecorators(array(
array('ViewScript', array('viewScript' => 'form/smart-playlist-criteria.phtml',
'criteriasLength' => count($criteriaOptions)))
));
$spType = new Zend_Form_Element_Radio('sp_type'); $spType = new Zend_Form_Element_Radio('sp_type');
$spType->setLabel('Set smart playlist type:'); $spType->setLabel('Set smart playlist type:');
$spType->setDecorators(array('viewHelper')); $spType->setDecorators(array('viewHelper'));
@ -75,27 +75,23 @@ class Application_Form_SmartPlaylistCriteria extends Zend_Form_SubForm
$spType->setValue('Static'); $spType->setValue('Static');
$this->addElement($spType); $this->addElement($spType);
foreach($ids as $id) { $numElements = count($criteriaOptions);
$criteria = new Zend_Form_Element_Select('sp_criteria_'.$id); for($i = 1; $i <= $numElements; $i++) {
$criteria->setAttrib('id', $id); $criteria = new Zend_Form_Element_Select('sp_criteria_'.$i);
$criteria->setAttrib('class', 'input_select'); $criteria->setAttrib('class', 'input_select');
$criteria->setValue(0);
$criteria->setDecorators(array('viewHelper')); $criteria->setDecorators(array('viewHelper'));
$criteria->setMultiOptions($criteriaOptions); $criteria->setMultiOptions($criteriaOptions);
$this->addElement($criteria); $this->addElement($criteria);
}
foreach($ids as $id) { $criteriaModifers = new Zend_Form_Element_Select('sp_criteria_modifier_'.$i);
$criteriaOptions = new Zend_Form_Element_Select('sp_criteria_options_'.$id); $criteriaModifers->setValue(0);
$criteriaOptions->setAttrib('id', $id); $criteriaModifers->setAttrib('class', 'input_select');
$criteriaOptions->setAttrib('class', 'input_select'); $criteriaModifers->setDecorators(array('viewHelper'));
$criteriaOptions->setDecorators(array('viewHelper')); $criteriaModifers->setMultiOptions($stringCriteriaOptions);
$criteriaOptions->setMultiOptions($stringCriteriaOptions); $this->addElement($criteriaModifers);
$this->addElement($criteriaOptions);
}
foreach($ids as $id) { $criteriaValue = new Zend_Form_Element_Text('sp_criteria_value_'.$i);
$criteriaValue = new Zend_Form_Element_Text('sp_criteria_value_'.$id);
$criteriaValue->setAttrib('id', $id);
$criteriaValue->setAttrib('class', 'input_text'); $criteriaValue->setAttrib('class', 'input_text');
$criteriaValue->setDecorators(array('viewHelper')); $criteriaValue->setDecorators(array('viewHelper'));
$this->addElement($criteriaValue); $this->addElement($criteriaValue);

View File

@ -17,14 +17,19 @@
</dd> </dd>
<dd id='sp_criteria-element'> <dd id='sp_criteria-element'>
<?php foreach($this->ids as $id) {?> <?php for($i = 1; $i <= $this->criteriasLength; $i++) {?>
<?php echo $this->element->getElement('sp_criteria_'.$id) ?> <div <?php if(($i > 1) && ($this->element->getElement('sp_criteria_'.$i)->getValue() == "0" &&
<?php echo $this->element->getElement('sp_criteria_options_'.$id) ?> $this->element->getElement('sp_criteria_modifier_'.$i)->getValue() == "0")) {
<?php echo $this->element->getElement('sp_criteria_value_'.$id) ?> echo 'style=display:none';
<a href='#' class='criteria-remove' id=<?php echo $id ?>>Remove</a> } ?>>
<br />
<?php echo $this->element->getElement('sp_criteria_'.$i) ?>
<?php echo $this->element->getElement('sp_criteria_modifier_'.$i) ?>
<?php echo $this->element->getElement('sp_criteria_value_'.$i) ?>
<a href='#' id='criteria_remove_<?php echo $i ?>'>Remove</a>
</div>
<?php } ?> <?php } ?>
<a href='#' class='criteria-add'>Add</a> <a href='#' id='criteria_add'>Add</a>
</dd> </dd>
<dd id='sp_limit-element'> <dd id='sp_limit-element'>

View File

@ -5,8 +5,43 @@ $(document).ready(function() {
function setSmartPlaylistEvents() { function setSmartPlaylistEvents() {
var form = $('#smart-playlist-form'); var form = $('#smart-playlist-form');
form.find('a[class="criteria-add"]').click(function(){ form.find('a[id="criteria_add"]').click(function(){
var div = $('dd[id="sp_criteria-element"]').children('div:visible:last').next();
div.show();
div = div.next();
if(div.length === 0) {
$(this).hide();
}
}); });
form.find('a[id^="criteria_remove"]').click(function(){
var curr = $(this).parent();
var curr_pos = curr.index();
var list = curr.parent();
var list_length = list.find("div:visible").length;
var count = list_length - curr_pos;
var next = curr.next();
for(var i=0; i<=count; i++) {
var criteria = next.find('[name^="sp_criteria"]').val();
curr.find('[name^="sp_criteria"]').val(criteria);
var modifier = next.find('[name^="sp_criteria_modifier"]').val();
curr.find('[name^="sp_criteria_modifier"]').val(modifier);
var criteria_value = next.find('[name^="sp_criteria_value"]').val();
curr.find('[name^="sp_criteria_value"]').val(criteria_value);
curr = next;
next = curr.next();
}
list.find("div:visible:last")
.find('[name^="sp_criteria"]').val('').end()
.find('[name^="sp_criteria_modifier"]').val('').end()
.find('[name^="sp_criteria_value"]').val('')
.end().hide();
list.next().show();
});
} }