Index: branches/5.2.x/core/units/languages/languages_event_handler.php =================================================================== diff -u -N -r15222 -r15225 --- branches/5.2.x/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 15222) +++ branches/5.2.x/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 15225) @@ -1,6 +1,6 @@ _itemChanged($event); + } + + /** * Occurs before updating item * * @param kEvent $event @@ -230,9 +244,68 @@ if ( $object->GetDBField('PrimaryLang') == 1 && $object->GetDBField($status_field) == 0 ) { $object->SetDBField($status_field, 1); } + + $this->_itemChanged($event); } + /** + * Dynamically changes required fields + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function _itemChanged(kEvent $event) + { + $this->setRequired($event); + } + + /** + * Dynamically changes required fields + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemValidate(kEvent $event) + { + parent::OnBeforeItemValidate($event); + + $object = $event->getObject(); + /* @var $object kDBItem */ + + $email_message_helper = $this->Application->recallObject('kEmailMessageHelper'); + /* @var $email_message_helper kEmailMessageHelper */ + + $email_message_helper->parseField($object, 'HtmlEmailTemplate'); + $email_message_helper->parseField($object, 'TextEmailTemplate'); + + $check_field = $object->GetDBField('TextEmailTemplate') ? 'TextEmailTemplate' : 'HtmlEmailTemplate'; + $check_value = $object->GetDBField($check_field); + + if ( $check_value && strpos($check_value, '$body') === false ) { + $object->SetError($check_field, 'body_missing'); + } + } + + /** + * Dynamically changes required fields + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function setRequired(kEvent $event) + { + $object = $event->getObject(); + /* @var $object kDBItem */ + + $object->setRequired('HtmlEmailTemplate', !$object->GetDBField('TextEmailTemplate')); + $object->setRequired('TextEmailTemplate', !$object->GetDBField('HtmlEmailTemplate')); + } + + /** * Shows only enabled languages on front * * @param kEvent $event @@ -376,9 +449,28 @@ $object->SetDBField('CopyFromLanguage', $primary_lang_id); $object->SetDBField('SynchronizationModes', Language::SYNCHRONIZE_DEFAULT); + $object->SetDBField('HtmlEmailTemplate', '$body'); + + $this->setRequired($event); } /** + * Sets dynamic required fields + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnAfterItemLoad(kEvent $event) + { + parent::OnAfterItemLoad($event); + + $object = $event->getObject(); + /* @var $object kDBItem */ + + $this->setRequired($event); + } + /** * Sets new language mark * * @param kEvent $event