CC-84: Smart Playlists
- created function that returns an array of block criteria - fixed form so it displays modifier rows properly
This commit is contained in:
parent
c2aea7490f
commit
e04273c335
3 changed files with 152 additions and 96 deletions
|
@ -93,8 +93,6 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
"items" => "items"
|
"items" => "items"
|
||||||
);
|
);
|
||||||
|
|
||||||
$modRows = array();
|
|
||||||
|
|
||||||
// load type
|
// load type
|
||||||
$out = CcBlockQuery::create()->findPk($p_blockId);
|
$out = CcBlockQuery::create()->findPk($p_blockId);
|
||||||
if ($out->getDbType() == "static") {
|
if ($out->getDbType() == "static") {
|
||||||
|
@ -113,112 +111,145 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
))
|
))
|
||||||
->setValue($blockType);
|
->setValue($blockType);
|
||||||
$this->addElement($spType);
|
$this->addElement($spType);
|
||||||
|
|
||||||
|
$storedCrit = Application_Model_Block::getCriteria($p_blockId);
|
||||||
|
|
||||||
// load criteria from db
|
/* $modRoadMap stores the number of modifier rows each
|
||||||
$out = CcBlockcriteriaQuery::create()->orderByDbCriteria()->findByDbBlockId($p_blockId);
|
* criteria row has. We need to know this so we index the
|
||||||
$storedCrit = array();
|
* the form elements properly
|
||||||
|
*/
|
||||||
/* Store the previous criteria value
|
$modRowMap = array();
|
||||||
* We will use this to check if the current row has the same
|
|
||||||
* critieria value. If so, we know that this is a modifier row
|
|
||||||
|
|
||||||
$tempCrit = '';
|
|
||||||
$modrows = array();
|
|
||||||
$critRowNum = 0;
|
|
||||||
$modRowNum = 0;
|
|
||||||
$j = 0;
|
|
||||||
*/
|
|
||||||
foreach ($out as $crit) {
|
|
||||||
//$tempCrit = $crit->getDbCriteria();
|
|
||||||
$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);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
//check if row is a modifier row
|
|
||||||
if ($critRowNum > 0 && strcmp($tempCrit, $storedCrit["crit"][$critRowNum-1]["criteria"])==0) {
|
|
||||||
$modrows[$j][$] = $modRowNum;
|
|
||||||
$modRowNum++;
|
|
||||||
} else if ($critRowNum > 0) {
|
|
||||||
$modRowNum = 0;
|
|
||||||
$j++;
|
|
||||||
}
|
|
||||||
$critRowNum++;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
//Logging::log($modrows);
|
|
||||||
|
|
||||||
$openSmartBlockOption = false;
|
$openSmartBlockOption = false;
|
||||||
if (!empty($storedCrit)) {
|
if (!empty($storedCrit)) {
|
||||||
$openSmartBlockOption = true;
|
$openSmartBlockOption = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$criteriaKeys = array_keys($storedCrit["crit"]);
|
||||||
$numElements = count($criteriaOptions);
|
$numElements = count($criteriaOptions);
|
||||||
for ($i = 0; $i < $numElements; $i++) {
|
for ($i = 0; $i < $numElements; $i++) {
|
||||||
$criteriaType = "";
|
$criteriaType = "";
|
||||||
|
|
||||||
$criteria = new Zend_Form_Element_Select("sp_criteria_field_".$i);
|
if (isset($criteriaKeys[$i])) {
|
||||||
$criteria->setAttrib('class', 'input_select sp_input_select')
|
$critCount = count($storedCrit["crit"][$criteriaKeys[$i]]);
|
||||||
->setValue('Select criteria')
|
} else {
|
||||||
->setDecorators(array('viewHelper'))
|
$critCount = 1;
|
||||||
->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);
|
$modRowMap[$i] = $critCount-1;
|
||||||
$criteriaModifers->setValue('Select modifier')
|
|
||||||
->setAttrib('class', 'input_select sp_input_select')
|
/* Loop through all criteria with the same field
|
||||||
->setDecorators(array('viewHelper'));
|
* Ex: all criteria for 'Album'
|
||||||
if ($i != 0 && !isset($storedCrit["crit"][$i])){
|
*/
|
||||||
$criteriaModifers->setAttrib('disabled', 'disabled');
|
for ($j = 0; $j < $critCount; $j++) {
|
||||||
}
|
/****************** CRITERIA ***********/
|
||||||
if (isset($storedCrit["crit"][$i])) {
|
if ($j < 1) {
|
||||||
if($criteriaType == "s"){
|
$criteria = new Zend_Form_Element_Select("sp_criteria_field_".$i);
|
||||||
$criteriaModifers->setMultiOptions($stringCriteriaOptions);
|
$criteria->setAttrib('class', 'input_select sp_input_select')
|
||||||
}else{
|
->setValue('Select criteria')
|
||||||
$criteriaModifers->setMultiOptions($numericCriteriaOptions);
|
->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')
|
||||||
|
->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($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);
|
||||||
}
|
}
|
||||||
$criteriaModifers->setValue($storedCrit["crit"][$i]["modifier"]);
|
|
||||||
}else{
|
}//for
|
||||||
$criteriaModifers->setMultiOptions(array('0' => 'Select modifier'));
|
|
||||||
}
|
|
||||||
$this->addElement($criteriaModifers);
|
|
||||||
|
|
||||||
$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($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);
|
}//for
|
||||||
$criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text')
|
|
||||||
->setDecorators(array('viewHelper'));
|
|
||||||
if (isset($storedCrit["crit"][$i]["extra"])) {
|
|
||||||
$criteriaExtra->setValue($storedCrit["crit"][$i]["extra"]);
|
|
||||||
$criteriaValue->setAttrib('class', 'input_text sp_extra_input_text');
|
|
||||||
}else{
|
|
||||||
$criteriaExtra->setAttrib('disabled', 'disabled');
|
|
||||||
}
|
|
||||||
$this->addElement($criteriaExtra);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$limit = new Zend_Form_Element_Select('sp_limit_options');
|
$limit = new Zend_Form_Element_Select('sp_limit_options');
|
||||||
$limit->setAttrib('class', 'sp_input_select')
|
$limit->setAttrib('class', 'sp_input_select')
|
||||||
|
@ -268,7 +299,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
|
|
||||||
$this->setDecorators(array(
|
$this->setDecorators(array(
|
||||||
array('ViewScript', array('viewScript' => 'form/smart-block-criteria.phtml', "openOption"=> $openSmartBlockOption,
|
array('ViewScript', array('viewScript' => 'form/smart-block-criteria.phtml', "openOption"=> $openSmartBlockOption,
|
||||||
'criteriasLength' => count($criteriaOptions), 'poolCount' => $files['count'], 'modRows' => $modRows))
|
'criteriasLength' => count($criteriaOptions), 'poolCount' => $files['count'], 'modRowMap' => $modRowMap))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1095,6 +1095,29 @@ EOT;
|
||||||
}
|
}
|
||||||
return $insertList;
|
return $insertList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getCriteria($p_blockId)
|
||||||
|
{
|
||||||
|
// Load criteria from db
|
||||||
|
$out = CcBlockcriteriaQuery::create()->orderByDbCriteria()->findByDbBlockId($p_blockId);
|
||||||
|
$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"][$criteria][] = array("criteria"=>$criteria, "value"=>$value, "modifier"=>$modifier, "extra"=>$extra);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $storedCrit;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// this function return list of propel object
|
// this function return list of propel object
|
||||||
public function getListofFilesMeetCriteria()
|
public function getListofFilesMeetCriteria()
|
||||||
|
|
|
@ -40,7 +40,8 @@
|
||||||
</a>
|
</a>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
<?php if (isset($modRows[$i])) { for ($j = 0; $j < $this->modRows[$i]; $j++) {?>
|
|
||||||
|
<?php for ($j = 0; $j < $this->modRowMap[$i]; $j++) {?>
|
||||||
<div>
|
<div>
|
||||||
<?php echo $this->element->getElement("sp_criteria_field_".$i."_".$j) ?>
|
<?php echo $this->element->getElement("sp_criteria_field_".$i."_".$j) ?>
|
||||||
<a class='ui-button sp-ui-button-icon-only' id='modifier_add_<?php echo $i ?>'>
|
<a class='ui-button sp-ui-button-icon-only' id='modifier_add_<?php echo $i ?>'>
|
||||||
|
@ -54,7 +55,8 @@
|
||||||
</a>
|
</a>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
<?php } }?>
|
<?php } ?>
|
||||||
|
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<br />
|
<br />
|
||||||
</dd>
|
</dd>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue