Fixed form validation and display after errors and when removing rows
This commit is contained in:
parent
5e7a5b3e1d
commit
144f1b5561
3 changed files with 74 additions and 7 deletions
|
@ -195,9 +195,8 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
foreach ($criteria[$column] as &$constraint) {
|
foreach ($criteria[$column] as &$constraint) {
|
||||||
// convert to appropriate timezone timestamps only if the modifier is not a relative time
|
// convert to appropriate timezone timestamps only if the modifier is not a relative time
|
||||||
if (!in_array($constraint['modifier'], array('before','after','between'))) {
|
if (!in_array($constraint['modifier'], array('before','after','between'))) {
|
||||||
$constraint['value'] =
|
$constraint['value'] =
|
||||||
Application_Common_DateHelper::UTCStringToUserTimezoneString($constraint['value']);
|
Application_Common_DateHelper::UTCStringToUserTimezoneString($constraint['value']);
|
||||||
|
|
||||||
if (isset($constraint['extra'])) {
|
if (isset($constraint['extra'])) {
|
||||||
$constraint['extra'] =
|
$constraint['extra'] =
|
||||||
Application_Common_DateHelper::UTCStringToUserTimezoneString($constraint['extra']);
|
Application_Common_DateHelper::UTCStringToUserTimezoneString($constraint['extra']);
|
||||||
|
@ -368,14 +367,17 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
$criteriaDatetimeSelect = new Zend_Form_Element_Select("sp_criteria_datetime_select_".$i."_".$j);
|
$criteriaDatetimeSelect = new Zend_Form_Element_Select("sp_criteria_datetime_select_".$i."_".$j);
|
||||||
$criteriaDatetimeSelect->setAttrib('class','input_select sp_input_select')
|
$criteriaDatetimeSelect->setAttrib('class','input_select sp_input_select')
|
||||||
->setDecorators(array('viewHelper'));
|
->setDecorators(array('viewHelper'));
|
||||||
if (!isset($criteriaKeys[$i]) || !$relativeDateTime) {
|
if (isset($criteriaKeys[$i]) && $relativeDateTime) {
|
||||||
|
$criteriaDatetimeSelect->setAttrib('enabled', 'enabled');
|
||||||
|
}
|
||||||
|
else {
|
||||||
$criteriaDatetimeSelect->setAttrib('disabled', 'disabled');
|
$criteriaDatetimeSelect->setAttrib('disabled', 'disabled');
|
||||||
}
|
}
|
||||||
// check if the value is stored and it is a relative datetime field
|
// check if the value is stored and it is a relative datetime field
|
||||||
if (isset($criteriaKeys[$i]) && isset($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"])
|
if (isset($criteriaKeys[$i]) && isset($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"])
|
||||||
&& isset($criteriaType) && $criteriaType == "d" &&
|
&& isset($criteriaType) && $criteriaType == "d" &&
|
||||||
preg_match('/before|after|between/', $modifierTest) == 1) {
|
preg_match('/before|after|between/', $modifierTest) == 1) {
|
||||||
// need to remove the leading numbers stored in the database
|
// need to remove any leading numbers stored in the database
|
||||||
$dateTimeSelectValue = preg_replace('/[0-9]+/', '', $storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]);
|
$dateTimeSelectValue = preg_replace('/[0-9]+/', '', $storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]);
|
||||||
// need to strip white from front and ago from the end to match with the value of the time unit select dropdown
|
// need to strip white from front and ago from the end to match with the value of the time unit select dropdown
|
||||||
$dateTimeSelectValue = trim(preg_replace('/\W\w+\s*(\W*)$/', '$1', $dateTimeSelectValue));
|
$dateTimeSelectValue = trim(preg_replace('/\W\w+\s*(\W*)$/', '$1', $dateTimeSelectValue));
|
||||||
|
@ -507,6 +509,12 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
'showPoolCount' => $showPoolCount))
|
'showPoolCount' => $showPoolCount))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* This is a simple function that determines if a modValue should enable a datetime
|
||||||
|
*/
|
||||||
|
public function enableDateTimeUnit($modValue) {
|
||||||
|
return (preg_match('/before|after|between/', $modValue) == 1);
|
||||||
|
}
|
||||||
|
|
||||||
public function preValidation($params)
|
public function preValidation($params)
|
||||||
{
|
{
|
||||||
|
@ -540,6 +548,15 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
$eleMod->setValue($modInfo['sp_criteria_modifier']);
|
$eleMod->setValue($modInfo['sp_criteria_modifier']);
|
||||||
$eleMod->setAttrib("disabled", null);
|
$eleMod->setAttrib("disabled", null);
|
||||||
|
|
||||||
|
$eleDatetime = $this->getElement("sp_criteria_datetime_select_".$critKey."_".$modKey);
|
||||||
|
if ($this->enableDateTimeUnit($eleMod->getValue())) {
|
||||||
|
$eleDatetime->setAttrib("enabled", "enabled");
|
||||||
|
$eleDatetime->setValue($modInfo['sp_criteria_datetime_select']);
|
||||||
|
$eleDatetime->setAttrib("disabled", null);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$eleDatetime->setAttrib("disabled","disabled");
|
||||||
|
}
|
||||||
$eleValue = $this->getElement("sp_criteria_value_".$critKey."_".$modKey);
|
$eleValue = $this->getElement("sp_criteria_value_".$critKey."_".$modKey);
|
||||||
$eleValue->setValue($modInfo['sp_criteria_value']);
|
$eleValue->setValue($modInfo['sp_criteria_value']);
|
||||||
$eleValue->setAttrib("disabled", null);
|
$eleValue->setAttrib("disabled", null);
|
||||||
|
@ -550,6 +567,15 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
$eleValue->setAttrib('class', 'input_text sp_extra_input_text');
|
$eleValue->setAttrib('class', 'input_text sp_extra_input_text');
|
||||||
$eleExtra->setAttrib("disabled", null);
|
$eleExtra->setAttrib("disabled", null);
|
||||||
}
|
}
|
||||||
|
$eleExtraDatetime = $this->getElement("sp_criteria_extra_datetime_select_".$critKey."_".$modKey);
|
||||||
|
if ($eleMod->getValue() == 'between') {
|
||||||
|
$eleExtraDatetime->setAttrib("enabled", "enabled");
|
||||||
|
$eleExtraDatetime->setValue($modInfo['sp_criteria_extra_datetime_select']);
|
||||||
|
$eleExtraDatetime->setAttrib("disabled", null);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$eleExtraDatetime->setAttrib("disabled","disabled");
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$criteria = new Zend_Form_Element_Select("sp_criteria_field_".$critKey."_".$modKey);
|
$criteria = new Zend_Form_Element_Select("sp_criteria_field_".$critKey."_".$modKey);
|
||||||
|
@ -587,7 +613,20 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
->setDecorators(array('viewHelper'));
|
->setDecorators(array('viewHelper'));
|
||||||
$criteriaValue->setValue($modInfo['sp_criteria_value']);
|
$criteriaValue->setValue($modInfo['sp_criteria_value']);
|
||||||
$this->addElement($criteriaValue);
|
$this->addElement($criteriaValue);
|
||||||
|
/****************** DATETIME UNIT SELECT ***********/
|
||||||
|
|
||||||
|
$criteriaDatetimeSelect = new Zend_Form_Element_Select("sp_criteria_datetime_select_".$critKey."_".$modKey);
|
||||||
|
$criteriaDatetimeSelect->setAttrib('class','input_select sp_input_select')
|
||||||
|
->setDecorators(array('viewHelper'));
|
||||||
|
if ($this->enableDateTimeUnit($criteriaValue->getValue())) {
|
||||||
|
$criteriaDatetimeSelect->setAttrib('enabled', 'enabled');
|
||||||
|
$criteriaDatetimeSelect->setAttrib('disabled', null);
|
||||||
|
$criteriaDatetimeSelect->setValue($modInfo['sp_criteria_datetime_select']);
|
||||||
|
$this->addElement($criteriaDatetimeSelect);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$criteriaDatetimeSelect->setAttrib('disabled', 'disabled');
|
||||||
|
}
|
||||||
/****************** EXTRA ***********/
|
/****************** EXTRA ***********/
|
||||||
$criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_".$critKey."_".$modKey);
|
$criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_".$critKey."_".$modKey);
|
||||||
$criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text')
|
$criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text')
|
||||||
|
@ -599,6 +638,21 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
$criteriaExtra->setAttrib('disabled', 'disabled');
|
$criteriaExtra->setAttrib('disabled', 'disabled');
|
||||||
}
|
}
|
||||||
$this->addElement($criteriaExtra);
|
$this->addElement($criteriaExtra);
|
||||||
|
|
||||||
|
/****************** EXTRA DATETIME UNIT SELECT ***********/
|
||||||
|
|
||||||
|
$criteriaExtraDatetimeSelect = new Zend_Form_Element_Select("sp_criteria_extra_datetime_select_".$critKey."_".$modKey);
|
||||||
|
$criteriaExtraDatetimeSelect->setAttrib('class','input_select sp_input_select')
|
||||||
|
->setDecorators(array('viewHelper'));
|
||||||
|
if ($criteriaValue->getValue() == 'between') {
|
||||||
|
$criteriaExtraDatetimeSelect->setAttrib('enabled', 'enabled');
|
||||||
|
$criteriaExtraDatetimeSelect->setAttrib('disabled', null);
|
||||||
|
$criteriaExtraDatetimeSelect->setValue($modInfo['sp_criteria_extra_datetime_select']);
|
||||||
|
$this->addElement($criteriaExtraDatetimeSelect);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$criteriaExtraDatetimeSelect->setAttrib('disabled', 'disabled');
|
||||||
|
}
|
||||||
$count++;
|
$count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -624,6 +678,14 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function will enable or disable form criteria elements based upon the current form
|
||||||
|
* This is necessary after validation fails and the elements loaded from startForm are different from
|
||||||
|
* the current form data
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function reValidate(){
|
||||||
|
}
|
||||||
public function isValid($params)
|
public function isValid($params)
|
||||||
{
|
{
|
||||||
$isValid = true;
|
$isValid = true;
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
<dd id='sp_criteria-element' class='criteria-element'>
|
<dd id='sp_criteria-element' class='criteria-element'>
|
||||||
<a class='btn btn-small btn-new' id='criteria_add'><i class='icon-white icon-plus'></i><?php echo(_("New Criteria")); ?></a>
|
<a class='btn btn-small btn-new' id='criteria_add'><i class='icon-white icon-plus'></i><?php echo(_("New Criteria")); ?></a>
|
||||||
|
|
||||||
<?php for ($i = 0; $i < $this->criteriasLength; $i++) {
|
<?php for ($i = 0; $i < $this->criteriasLength; $i++) {
|
||||||
// modRowMap holds the number of modifier rows for each criteria element
|
// modRowMap holds the number of modifier rows for each criteria element
|
||||||
// i.e. if we have 'Album contains 1' and 'Album contains 2' the modRowMap
|
// i.e. if we have 'Album contains 1' and 'Album contains 2' the modRowMap
|
||||||
// for Album is 2
|
// for Album is 2
|
||||||
|
|
|
@ -233,13 +233,18 @@ function setSmartBlockEvents() {
|
||||||
*/
|
*/
|
||||||
item_to_hide = list.find('div:visible:last');
|
item_to_hide = list.find('div:visible:last');
|
||||||
item_to_hide.children().attr('disabled', 'disabled');
|
item_to_hide.children().attr('disabled', 'disabled');
|
||||||
|
item_to_hide.find('[name^="sp_criteria_datetime_select"]').attr('disabled', 'disabled');
|
||||||
|
item_to_hide.find('[name^="sp_criteria_extra"]').attr('disabled', 'disabled');
|
||||||
|
item_to_hide.find('[name^="sp_criteria_extra_datetime_select"]').attr('disabled', 'disabled');
|
||||||
if (item_to_hide.find('select[name^="sp_criteria_field"]').hasClass('sp-invisible')) {
|
if (item_to_hide.find('select[name^="sp_criteria_field"]').hasClass('sp-invisible')) {
|
||||||
item_to_hide.find('select[name^="sp_criteria_field"]').removeClass('sp-invisible');
|
item_to_hide.find('select[name^="sp_criteria_field"]').removeClass('sp-invisible');
|
||||||
}
|
}
|
||||||
item_to_hide.find('[name^="sp_criteria_field"]').val(0).end()
|
item_to_hide.find('[name^="sp_criteria_field"]').val(0).end()
|
||||||
.find('[name^="sp_criteria_modifier"]').val(0).end()
|
.find('[name^="sp_criteria_modifier"]').val(0).end()
|
||||||
|
.find('[name^="sp_criteria_datetime_select"]').end()
|
||||||
.find('[name^="sp_criteria_value"]').val('').end()
|
.find('[name^="sp_criteria_value"]').val('').end()
|
||||||
.find('[name^="sp_criteria_extra"]').val('');
|
.find('[name^="sp_criteria_extra"]').val('')
|
||||||
|
.find('[name^="sp_criteria_extra_datetime_select"]').end();
|
||||||
|
|
||||||
sizeTextBoxes(item_to_hide.find('[name^="sp_criteria_value"]'), 'sp_extra_input_text', 'sp_input_text');
|
sizeTextBoxes(item_to_hide.find('[name^="sp_criteria_value"]'), 'sp_extra_input_text', 'sp_input_text');
|
||||||
item_to_hide.hide();
|
item_to_hide.hide();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue