From c62d89d5da0ee40b5761f48d1866436a7c5d1785 Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 14 Aug 2012 10:02:36 -0400 Subject: [PATCH] CC-4220: Smart Playlists: Change indexing of criteria elements -changed indexing on UI --- .../application/forms/SmartBlockCriteria.php | 165 +++++++----------- airtime_mvc/application/models/Block.php | 6 +- .../scripts/form/smart-block-criteria.phtml | 26 +-- .../airtime/playlist/smart_playlistbuilder.js | 23 +-- 4 files changed, 84 insertions(+), 136 deletions(-) diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php index 016105740..31e62f593 100644 --- a/airtime_mvc/application/forms/SmartBlockCriteria.php +++ b/airtime_mvc/application/forms/SmartBlockCriteria.php @@ -112,10 +112,10 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm $bl = new Application_Model_Block($p_blockId); $storedCrit = $bl->getCriteria(); - - /* $modRoadMap stores the number of modifier rows each - * criteria row has. We need to know this so we display the - * the form elements properly + + /* $modRoadMap stores the number of same criteria + * Ex: 3 Album titles, and 2 Track titles + * We need to know this so we display the form elements properly */ $modRowMap = array(); @@ -138,117 +138,78 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm $critCount = 1; } - $modRowMap[$i] = $critCount-1; + $modRowMap[$i] = $critCount; /* Loop through all criteria with the same field * Ex: all criteria for 'Album' */ for ($j = 0; $j < $critCount; $j++) { /****************** CRITERIA ***********/ - if ($j < 1) { - $criteria = new Zend_Form_Element_Select("sp_criteria_field_".$i); - $criteria->setAttrib('class', 'input_select sp_input_select') - ->setValue('Select criteria') - ->setDecorators(array('viewHelper')) - ->setMultiOptions($criteriaOptions); - if ($i != 0 && !isset($criteriaKeys[$i])) { - $criteria->setAttrib('disabled', 'disabled'); - } - - if (isset($criteriaKeys[$i])) { - $criteriaType = $criteriaTypes[$storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]]; - $criteria->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]); - } - $this->addElement($criteria); - - /****************** MODIFIER ***********/ - $criteriaModifers = new Zend_Form_Element_Select("sp_criteria_modifier_".$i); - $criteriaModifers->setValue('Select modifier') - ->setAttrib('class', 'input_select sp_input_select') - ->setDecorators(array('viewHelper')); - if ($i != 0 && !isset($criteriaKeys[$i])) { - $criteriaModifers->setAttrib('disabled', 'disabled'); - } - if (isset($criteriaKeys[$i])) { - if($criteriaType == "s"){ - $criteriaModifers->setMultiOptions($stringCriteriaOptions); - }else{ - $criteriaModifers->setMultiOptions($numericCriteriaOptions); - } - $criteriaModifers->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["modifier"]); - }else{ - $criteriaModifers->setMultiOptions(array('0' => 'Select modifier')); - } - $this->addElement($criteriaModifers); - - /****************** VALUE ***********/ - $criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_".$i); - $criteriaValue->setAttrib('class', 'input_text sp_input_text') - ->setDecorators(array('viewHelper')); - if ($i != 0 && !isset($criteriaKeys[$i])){ - $criteriaValue->setAttrib('disabled', 'disabled'); - } - if (isset($criteriaKeys[$i])) { - $criteriaValue->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]); - } - $this->addElement($criteriaValue); - - /****************** EXTRA ***********/ - $criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_".$i); - $criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text') - ->setDecorators(array('viewHelper')); - if (isset($criteriaKeys[$i]) && isset($storedCrit["crit"][$criteriaKeys[$i]][$j]["extra"])) { - $criteriaExtra->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["extra"]); - $criteriaValue->setAttrib('class', 'input_text sp_extra_input_text'); - }else{ - $criteriaExtra->setAttrib('disabled', 'disabled'); - } - $this->addElement($criteriaExtra); - - /* This is where the additional modifier rows get defined - * The additional row count starts at 0 and gets appended - * to the parent field name - */ - } else if (count($storedCrit["crit"][$criteriaKeys[$i]]) > 1) { - $n = $j - 1; - $criteria = new Zend_Form_Element_Select("sp_criteria_field_".$i."_".$n); - $criteria->setAttrib('class', 'input_select sp_input_select sp-invisible') - ->setValue('Select criteria') - ->setDecorators(array('viewHelper')) - ->setMultiOptions($criteriaOptions) - ->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]); - $this->addElement($criteria); - - $criteriaModifers = new Zend_Form_Element_Select("sp_criteria_modifier_".$i."_".$n); - $criteriaModifers->setValue('Select modifier') - ->setAttrib('class', 'input_select sp_input_select') - ->setDecorators(array('viewHelper')); + if ($j > 0) { + $invisible = ' sp-invisible'; + } else { + $invisible = ''; + } + + $criteria = new Zend_Form_Element_Select("sp_criteria_field_".$i."_".$j); + $criteria->setAttrib('class', 'input_select sp_input_select'.$invisible) + ->setValue('Select criteria') + ->setDecorators(array('viewHelper')) + ->setMultiOptions($criteriaOptions); + if ($i != 0 && !isset($criteriaKeys[$i])) { + $criteria->setAttrib('disabled', 'disabled'); + } + + if (isset($criteriaKeys[$i])) { + $criteriaType = $criteriaTypes[$storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]]; + $criteria->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["criteria"]); + } + $this->addElement($criteria); + + /****************** MODIFIER ***********/ + $criteriaModifers = new Zend_Form_Element_Select("sp_criteria_modifier_".$i."_".$j); + $criteriaModifers->setValue('Select modifier') + ->setAttrib('class', 'input_select sp_input_select') + ->setDecorators(array('viewHelper')); + if ($i != 0 && !isset($criteriaKeys[$i])) { + $criteriaModifers->setAttrib('disabled', 'disabled'); + } + if (isset($criteriaKeys[$i])) { if($criteriaType == "s"){ $criteriaModifers->setMultiOptions($stringCriteriaOptions); }else{ $criteriaModifers->setMultiOptions($numericCriteriaOptions); } $criteriaModifers->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["modifier"]); - $this->addElement($criteriaModifers); - - $criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_".$i."_".$n); - $criteriaValue->setAttrib('class', 'input_text sp_input_text') - ->setDecorators(array('viewHelper')) - ->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]); - $this->addElement($criteriaValue); - - $criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_".$i."_".$n); - $criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text') - ->setDecorators(array('viewHelper')); - if (isset($storedCrit["crit"][$criteriaKeys[$i]][$j]["extra"])) { - $criteriaExtra->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["extra"]); - $criteriaValue->setAttrib('class', 'input_text sp_extra_input_text'); - }else{ - $criteriaExtra->setAttrib('disabled', 'disabled'); - } - $this->addElement($criteriaExtra); + }else{ + $criteriaModifers->setMultiOptions(array('0' => 'Select modifier')); } - + $this->addElement($criteriaModifers); + + /****************** VALUE ***********/ + $criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_".$i."_".$j); + $criteriaValue->setAttrib('class', 'input_text sp_input_text') + ->setDecorators(array('viewHelper')); + if ($i != 0 && !isset($criteriaKeys[$i])){ + $criteriaValue->setAttrib('disabled', 'disabled'); + } + if (isset($criteriaKeys[$i])) { + $criteriaValue->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]); + } + $this->addElement($criteriaValue); + + /****************** EXTRA ***********/ + $criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_".$i."_".$j); + $criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text') + ->setDecorators(array('viewHelper')); + if (isset($criteriaKeys[$i]) && isset($storedCrit["crit"][$criteriaKeys[$i]][$j]["extra"])) { + $criteriaExtra->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["extra"]); + $criteriaValue->setAttrib('class', 'input_text sp_extra_input_text'); + }else{ + $criteriaExtra->setAttrib('disabled', 'disabled'); + } + $this->addElement($criteriaExtra); + }//for }//for diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index ecee2ae54..9fad96c25 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -935,6 +935,7 @@ EOT; public function saveSmartBlockCriteria($p_criteria) { $data = $this->organizeSmartPlyalistCriteria($p_criteria); + // things we need to check // 1. limit value shouldn't be empty and has upperbound of 24 hrs // 2. sp_criteria or sp_criteria_modifier shouldn't be 0 @@ -1312,10 +1313,9 @@ EOT; */ $fieldName = substr($ele['name'], 0, $index); - /* Get criteria row index. - * We only need this if there is a modifier row - */ + // Get criteria row index. $tempName = $ele['name']; + // Get the last digit in the field name preg_match('/^\D*(?=\d)/', $tempName, $r); if (isset($r[0])) { $critIndexPos = strlen($r[0]); diff --git a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml index 3ee4baa83..f3e19d758 100644 --- a/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml +++ b/airtime_mvc/application/views/scripts/form/smart-block-criteria.phtml @@ -24,36 +24,22 @@
criteriasLength; $i++) {?> -
0) && ($this->element->getElement("sp_criteria_field_".$i)->getAttrib('disabled') == 'disabled')) { + modRowMap[$i]; $j++) {?> +
0) && ($this->element->getElement("sp_criteria_field_".$i."_".$j)->getAttrib('disabled') == 'disabled')) { echo 'style=display:none'; } ?>> - element->getElement("sp_criteria_field_".$i) ?> + element->getElement("sp_criteria_field_".$i."_".$j) ?> - element->getElement("sp_criteria_modifier_".$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) ?> + element->getElement("sp_criteria_modifier_".$i."_".$j) ?> + element->getElement("sp_criteria_value_".$i."_".$j) ?> + element->getElement("sp_criteria_extra_".$i."_".$j)->getAttrib("disabled") == "disabled"?'style="display:none;"':""?>> to element->getElement('sp_criteria_extra_'.$i."_".$j) ?>
- - modRowMap[$i]; $j++) {?> -
- element->getElement("sp_criteria_field_".$i."_".$j) ?> - - - - element->getElement("sp_criteria_modifier_".$i."_".$j) ?> - element->getElement("sp_criteria_value_".$i."_".$j) ?> - element->getElement("sp_criteria_extra_".$i."_".$j)->getAttrib("disabled") == "disabled"?'style="display:none;"':""?>> to element->getElement('sp_criteria_extra_'.$i."_".$j) ?> - - - -
-
diff --git a/airtime_mvc/public/js/airtime/playlist/smart_playlistbuilder.js b/airtime_mvc/public/js/airtime/playlist/smart_playlistbuilder.js index 81dadd729..b6a02d24d 100644 --- a/airtime_mvc/public/js/airtime/playlist/smart_playlistbuilder.js +++ b/airtime_mvc/public/js/airtime/playlist/smart_playlistbuilder.js @@ -317,6 +317,7 @@ function reindexElements() { * a modifier row */ if ($(div).find('select[name^="sp_criteria_field"]').hasClass('sp-invisible')) { + modIndex++; $(div).find('select[name^="sp_criteria_field"]').attr('name', 'sp_criteria_field_'+index+'_'+modIndex); $(div).find('select[name^="sp_criteria_field"]').attr('id', 'sp_criteria_field_'+index+'_'+modIndex); @@ -328,20 +329,20 @@ function reindexElements() { $(div).find('input[name^="sp_criteria_extra"]').attr('id', 'sp_criteria_extra_'+index+'_'+modIndex); $(div).find('a[name^="modifier_add"]').attr('id', 'modifier_add_'+index); $(div).find('a[id^="criteria_remove"]').attr('id', 'criteria_remove_'+index+'_'+modIndex); - modIndex++; } else { index++; - $(div).find('select[name^="sp_criteria_field"]').attr('name', 'sp_criteria_field_'+index); - $(div).find('select[name^="sp_criteria_field"]').attr('id', 'sp_criteria_field_'+index); - $(div).find('select[name^="sp_criteria_modifier"]').attr('name', 'sp_criteria_modifier_'+index); - $(div).find('select[name^="sp_criteria_modifier"]').attr('id', 'sp_criteria_modifier_'+index); - $(div).find('input[name^="sp_criteria_value"]').attr('name', 'sp_criteria_value_'+index); - $(div).find('input[name^="sp_criteria_value"]').attr('id', 'sp_criteria_value_'+index); - $(div).find('input[name^="sp_criteria_extra"]').attr('name', 'sp_criteria_extra_'+index); - $(div).find('input[name^="sp_criteria_extra"]').attr('id', 'sp_criteria_extra_'+index); - $(div).find('a[name^="modifier_add"]').attr('id', 'modifier_add_'+index); - $(div).find('a[id^="criteria_remove"]').attr('id', 'criteria_remove_'+index); modIndex = 0; + $(div).find('select[name^="sp_criteria_field"]').attr('name', 'sp_criteria_field_'+index+'_'+modIndex); + $(div).find('select[name^="sp_criteria_field"]').attr('id', 'sp_criteria_field_'+index+'_'+modIndex); + $(div).find('select[name^="sp_criteria_modifier"]').attr('name', 'sp_criteria_modifier_'+index+'_'+modIndex); + $(div).find('select[name^="sp_criteria_modifier"]').attr('id', 'sp_criteria_modifier_'+index+'_'+modIndex); + $(div).find('input[name^="sp_criteria_value"]').attr('name', 'sp_criteria_value_'+index+'_'+modIndex); + $(div).find('input[name^="sp_criteria_value"]').attr('id', 'sp_criteria_value_'+index+'_'+modIndex); + $(div).find('input[name^="sp_criteria_extra"]').attr('name', 'sp_criteria_extra_'+index+'_'+modIndex); + $(div).find('input[name^="sp_criteria_extra"]').attr('id', 'sp_criteria_extra_'+index+'_'+modIndex); + $(div).find('a[name^="modifier_add"]').attr('id', 'modifier_add_'+index); + $(div).find('a[id^="criteria_remove"]').attr('id', 'criteria_remove_'+index+'_'+modIndex); + //modIndex = 0; } } else if (i > 0) { $(div).remove();