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) {
|
||||
// convert to appropriate timezone timestamps only if the modifier is not a relative time
|
||||
if (!in_array($constraint['modifier'], array('before','after','between'))) {
|
||||
$constraint['value'] =
|
||||
Application_Common_DateHelper::UTCStringToUserTimezoneString($constraint['value']);
|
||||
|
||||
$constraint['value'] =
|
||||
Application_Common_DateHelper::UTCStringToUserTimezoneString($constraint['value']);
|
||||
if (isset($constraint['extra'])) {
|
||||
$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->setAttrib('class','input_select sp_input_select')
|
||||
->setDecorators(array('viewHelper'));
|
||||
if (!isset($criteriaKeys[$i]) || !$relativeDateTime) {
|
||||
if (isset($criteriaKeys[$i]) && $relativeDateTime) {
|
||||
$criteriaDatetimeSelect->setAttrib('enabled', 'enabled');
|
||||
}
|
||||
else {
|
||||
$criteriaDatetimeSelect->setAttrib('disabled', 'disabled');
|
||||
}
|
||||
// check if the value is stored and it is a relative datetime field
|
||||
if (isset($criteriaKeys[$i]) && isset($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"])
|
||||
&& isset($criteriaType) && $criteriaType == "d" &&
|
||||
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"]);
|
||||
// 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));
|
||||
|
@ -507,6 +509,12 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
|||
'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)
|
||||
{
|
||||
|
@ -540,6 +548,15 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
|||
$eleMod->setValue($modInfo['sp_criteria_modifier']);
|
||||
$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->setValue($modInfo['sp_criteria_value']);
|
||||
$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');
|
||||
$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 {
|
||||
$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'));
|
||||
$criteriaValue->setValue($modInfo['sp_criteria_value']);
|
||||
$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 ***********/
|
||||
$criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_".$critKey."_".$modKey);
|
||||
$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');
|
||||
}
|
||||
$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++;
|
||||
}
|
||||
}
|
||||
|
@ -624,6 +678,14 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm
|
|||
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)
|
||||
{
|
||||
$isValid = true;
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
<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>
|
||||
|
||||
<?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
|
||||
// i.e. if we have 'Album contains 1' and 'Album contains 2' the modRowMap
|
||||
// for Album is 2
|
||||
|
|
|
@ -233,13 +233,18 @@ function setSmartBlockEvents() {
|
|||
*/
|
||||
item_to_hide = list.find('div:visible:last');
|
||||
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')) {
|
||||
item_to_hide.find('select[name^="sp_criteria_field"]').removeClass('sp-invisible');
|
||||
}
|
||||
item_to_hide.find('[name^="sp_criteria_field"]').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_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');
|
||||
item_to_hide.hide();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue