Index: branches/5.2.x/core/units/email_events/email_events_event_handler.php =================================================================== diff -u -N -r15222 -r15225 --- branches/5.2.x/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 15222) +++ branches/5.2.x/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 15225) @@ -1,6 +1,6 @@ getObject(); /* @var $object kDBItem */ - // validate email subject and body for parsing errors - $this->_validateEmailTemplate($object); - - // validate sender and recipient addresses - if ( $object->GetDBField('CustomSender') ) { - $this->_validateAddress($event, 'Sender'); - } - $this->_validateAddress($event, 'Recipient'); - if ( !$this->Application->isDebugMode(false) ) { // only allow to enable/disable event while in debug mode $to_restore = Array ('Enabled', 'AllowChangingSender', 'AllowChangingRecipient'); @@ -475,53 +466,6 @@ } /** - * Validates address using given field prefix - * - * @param kEvent $event - * @param string $field_prefix - */ - function _validateAddress($event, $field_prefix) - { - $object = $event->getObject(); - /* @var $object kDBItem */ - - $address_type = $object->GetDBField($field_prefix . 'AddressType'); - $object->setRequired($field_prefix . 'Address', $address_type > 0); - $address = $object->GetDBField($field_prefix . 'Address'); - - if ( !$address ) { - // don't validate against empty address - return; - } - - switch ($address_type) { - case EmailEvent::ADDRESS_TYPE_EMAIL: - if ( !preg_match('/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i', $address) ) { - $object->SetError($field_prefix . 'Address', 'invalid_email'); - } - break; - - case EmailEvent::ADDRESS_TYPE_USER: - $sql = 'SELECT PortalUserId - FROM ' . TABLE_PREFIX . 'Users - WHERE Username = ' . $this->Conn->qstr($address); - if ( !$this->Conn->GetOne($sql) ) { - $object->SetError($field_prefix . 'Address', 'invalid_user'); - } - break; - - case EmailEvent::ADDRESS_TYPE_GROUP: - $sql = 'SELECT GroupId - FROM ' . TABLE_PREFIX . 'UserGroups - WHERE Name = ' . $this->Conn->qstr($address); - if ( !$this->Conn->GetOne($sql) ) { - $object->SetError($field_prefix . 'Address', 'invalid_group'); - } - break; - } - } - - /** * Don't allow to enable/disable events in non-debug mode * * @param kEvent $event @@ -611,6 +555,31 @@ } /** + * Does custom validation + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemValidate(kEvent $event) + { + parent::OnBeforeItemValidate($event); + + $object = $event->getObject(); + /* @var $object kDBItem */ + + // validate email subject and body for parsing errors + $this->_validateEmailTemplate($object); + + // validate sender and recipient addresses + if ( $object->GetDBField('CustomSender') ) { + $this->_validateAddress($event, 'Sender'); + } + + $this->_validateAddress($event, 'Recipient'); + } + + /** * Validates subject and body fields of Email template * * @param kDBItem $object @@ -619,31 +588,60 @@ */ protected function _validateEmailTemplate($object) { - $this->parseField($object, 'Subject'); - $this->parseField($object, 'HtmlBody'); - $this->parseField($object, 'PlainTextBody'); + $email_message_helper = $this->Application->recallObject('kEmailMessageHelper'); + /* @var $email_message_helper kEmailMessageHelper */ + + $email_message_helper->parseField($object, 'Subject'); + $email_message_helper->parseField($object, 'HtmlBody'); + $email_message_helper->parseField($object, 'PlainTextBody'); } /** - * Parses contents of given object field and sets error, when invalid in-portal tags found - * @param kDBItem $object - * @param string $field + * Validates address using given field prefix + * + * @param kEvent $event + * @param string $field_prefix * @return void * @access protected */ - protected function parseField($object, $field) + protected function _validateAddress($event, $field_prefix) { - $this->Application->InitParser(); + $object = $event->getObject(); + /* @var $object kDBItem */ - try { - $this->Application->Parser->CompileRaw($object->GetField($field), 'email_template'); + $address_type = $object->GetDBField($field_prefix . 'AddressType'); + $object->setRequired($field_prefix . 'Address', $address_type > 0); + $address = $object->GetDBField($field_prefix . 'Address'); + + if ( !$address ) { + // don't validate against empty address + return; } - catch (ParserException $e) { - if ( $this->Application->isDebugMode() ) { - $this->Application->Debugger->appendHTML('Error in Email Template: ' . $e->getMessage() . ' (line: ' . $e->getLine() . ')'); - } - $object->SetError($field, 'parsing_error'); + switch ($address_type) { + case EmailEvent::ADDRESS_TYPE_EMAIL: + if ( !preg_match('/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i', $address) ) { + $object->SetError($field_prefix . 'Address', 'invalid_email'); + } + break; + + case EmailEvent::ADDRESS_TYPE_USER: + $sql = 'SELECT PortalUserId + FROM ' . TABLE_PREFIX . 'Users + WHERE Username = ' . $this->Conn->qstr($address); + if ( !$this->Conn->GetOne($sql) ) { + $object->SetError($field_prefix . 'Address', 'invalid_user'); + } + break; + + case EmailEvent::ADDRESS_TYPE_GROUP: + $sql = 'SELECT GroupId + FROM ' . TABLE_PREFIX . 'UserGroups + WHERE Name = ' . $this->Conn->qstr($address); + if ( !$this->Conn->GetOne($sql) ) { + $object->SetError($field_prefix . 'Address', 'invalid_group'); + } + break; } } Index: branches/5.2.x/core/kernel/utility/email.php =================================================================== diff -u -N -r15222 -r15225 --- branches/5.2.x/core/kernel/utility/email.php (.../email.php) (revision 15222) +++ branches/5.2.x/core/kernel/utility/email.php (.../email.php) (revision 15225) @@ -1,6 +1,6 @@ params; - $send_keys = Array ('from_email', 'from_name', 'to_email', 'to_name', 'overwrite_to_email', 'language_id'); + $send_keys = Array ('from_email', 'from_name', 'to_email', 'to_name', 'overwrite_to_email', 'language_id', 'use_custom_design'); foreach ($send_keys as $send_key) { unset($ret[$send_key]); @@ -691,21 +691,16 @@ $design_key = $is_html ? 'html' : 'text'; if ( !isset($design_templates[$design_key]) ) { - $footer_email = $this->Application->recallObject('emailevents.footer', null, Array ('skip_autoload' => true)); - /* @var $footer_email kDBItem */ + $language = $this->Application->recallObject('lang.current'); + /* @var $language LanguagesItem */ - $footer_email->Load('COMMON.FOOTER', 'Event'); - $footer = $footer_email->GetField($is_html ? 'HtmlBody' : 'PlainTextBody'); + $design_template = $language->GetDBField($is_html ? 'HtmlEmailTemplate' : 'TextEmailTemplate'); - if ( !$is_html && !$footer ) { - $footer = $this->sender->ConvertToText($footer_email->GetField('HtmlBody')); + if ( !$is_html && !$design_template ) { + $design_template = $this->sender->ConvertToText($language->GetDBField('HtmlEmailTemplate')); } - $design_templates[$design_key] = '$body'; - - if ( $footer ) { - $design_templates[$design_key] .= "\r\n" . $footer; - } + $design_templates[$design_key] = $design_template; } return $this->_parseText(str_replace('$body', $text, $design_templates[$design_key])); @@ -731,7 +726,12 @@ return false; } - $message_body = $this->_applyMessageDesign($message_body, $is_html); + if ( isset($this->params['use_custom_design']) && $this->params['use_custom_design'] ) { + $message_body = $this->_parseText($message_body); + } + else { + $message_body = $this->_applyMessageDesign($message_body, $is_html); + } return trim($message_body) ? $message_body : false; } Index: branches/5.2.x/core/units/languages/languages_config.php =================================================================== diff -u -N -r15012 -r15225 --- branches/5.2.x/core/units/languages/languages_config.php (.../languages_config.php) (revision 15012) +++ branches/5.2.x/core/units/languages/languages_config.php (.../languages_config.php) (revision 15225) @@ -1,6 +1,6 @@ 'kOptionsFormatter', 'options' => Array (1 => 'la_opt_SynchronizeToOthers', 2 => 'la_opt_SynchronizeFromOthers'), 'use_phrases' => 1, 'multiple' => 1, 'not_null' => 1, 'default' => '' ), + 'HtmlEmailTemplate' => Array ( + 'type' => 'string', + 'error_msgs' => Array ('parsing_error' => '!la_error_ParsingError!', 'body_missing' => '!la_error_EmailTemplateBodyMissing!'), + 'default' => NULL + ), + 'TextEmailTemplate' => Array ( + 'type' => 'string', + 'error_msgs' => Array ('parsing_error' => '!la_error_ParsingError!', 'body_missing' => '!la_error_EmailTemplateBodyMissing!'), + 'default' => NULL + ), ), 'VirtualFields' => Array ( Index: branches/5.2.x/core/install/upgrades.php =================================================================== diff -u -N -r15222 -r15225 --- branches/5.2.x/core/install/upgrades.php (.../upgrades.php) (revision 15222) +++ branches/5.2.x/core/install/upgrades.php (.../upgrades.php) (revision 15225) @@ -1,6 +1,6 @@ getLanguages(); if ($this->Conn->TableFound(TABLE_PREFIX . 'EmailMessage', true)) { - $email_message_helper = $this->Application->recallObject('EmailMessageHelper'); - /* @var $email_message_helper EmailMessageHelper */ + $email_message_helper = $this->Application->recallObject('kEmailMessageHelper'); + /* @var $email_message_helper kEmailMessageHelper */ foreach ($languages as $language_id) { $sql = 'SELECT EmailMessageId, Template, EventId @@ -2034,51 +2034,116 @@ } if ( $mode == 'after' ) { - $id_field = $this->Application->getUnitOption('emailevents', 'IDField'); - $table_name = $this->Application->getUnitOption('emailevents', 'TableName'); - $fields = $this->Conn->Query('DESCRIBE ' . $table_name, 'Field'); + $this->_splitEmailBody(); + $this->_migrateCommonFooter(); + } + } - if ( !isset($fields['l1_Body']) ) { - // column dropped - nothing to convert anymore - return; - } + /** + * Splits e-mail body into HTML and Text fields + * + * @return void + * @access private + */ + private function _splitEmailBody() + { + $id_field = $this->Application->getUnitOption('emailevents', 'IDField'); + $table_name = $this->Application->getUnitOption('emailevents', 'TableName'); + $fields = $this->Conn->Query('DESCRIBE ' . $table_name, 'Field'); - $ml_helper = $this->Application->recallObject('kMultiLanguageHelper'); - /* @var $ml_helper kMultiLanguageHelper */ + if ( !isset($fields['l1_Body']) ) { + // column dropped - nothing to convert anymore + return; + } - $languages = $ml_helper->getLanguages(); - $ml_helper->createFields('emailevents'); + $ml_helper = $this->Application->recallObject('kMultiLanguageHelper'); + /* @var $ml_helper kMultiLanguageHelper */ - $sql = 'SELECT * - FROM ' . $table_name; - $email_events = $this->Conn->Query($sql); + $languages = $ml_helper->getLanguages(); + $ml_helper->createFields('emailevents'); - // 1. move data to new columns - foreach ($email_events as $email_event) { - $fields_hash = Array (); - $translation_field = $email_event['MessageType'] == 'html' ? 'HtmlBody' : 'PlainTextBody'; + $sql = 'SELECT * + FROM ' . $table_name; + $email_events = $this->Conn->Query($sql); - foreach ($languages as $language_id) { - $fields_hash['l' . $language_id . '_' . $translation_field] = $email_event['l' . $language_id . '_Body']; - } + // 1. move data to new columns + foreach ($email_events as $email_event) { + $fields_hash = Array (); + $translation_field = $email_event['MessageType'] == 'html' ? 'HtmlBody' : 'PlainTextBody'; - if ( $fields_hash ) { - $this->Conn->doUpdate($fields_hash, $table_name, $id_field . ' = ' . $email_event[$id_field]); - } + foreach ($languages as $language_id) { + $fields_hash['l' . $language_id . '_' . $translation_field] = $email_event['l' . $language_id . '_Body']; } - // 2. drop old columns - $drops = Array ('DROP COLUMN MessageType'); + if ( $fields_hash ) { + $this->Conn->doUpdate($fields_hash, $table_name, $id_field . ' = ' . $email_event[$id_field]); + } + } - foreach ($languages as $language_id) { - $lang_field = 'l' . $language_id . '_Body'; + // 2. drop old columns + $drops = Array ('DROP COLUMN MessageType'); - if ( isset($fields[$lang_field]) ) { - $drops[] = 'DROP COLUMN ' . $lang_field; - } + foreach ($languages as $language_id) { + $lang_field = 'l' . $language_id . '_Body'; + + if ( isset($fields[$lang_field]) ) { + $drops[] = 'DROP COLUMN ' . $lang_field; } + } - $this->Conn->Query('ALTER TABLE ' . $table_name . ' ' . implode(', ', $drops)); + $this->Conn->Query('ALTER TABLE ' . $table_name . ' ' . implode(', ', $drops)); + } + + /** + * Transforms COMMON.FOOTER e-mail event into new field in Languages table + */ + private function _migrateCommonFooter() + { + $ml_helper = $this->Application->recallObject('kMultiLanguageHelper'); + /* @var $ml_helper kMultiLanguageHelper */ + + $languages = $ml_helper->getLanguages(); + + $event_table = $this->Application->getUnitOption('emailevents', 'TableName'); + + $sql = 'SELECT * + FROM ' . $event_table . ' + WHERE Event = "COMMON.FOOTER"'; + $footer_data = $this->Conn->GetRow($sql); + + if ( !$footer_data ) { + return; } + + $table_name = $this->Application->getUnitOption('lang', 'TableName'); + + foreach ($languages as $language_id) { + $fields_hash = Array ( + 'HtmlEmailTemplate' => $this->_appendEmailDesignBody($footer_data['l' . $language_id . '_HtmlBody']), + 'TextEmailTemplate' => $this->_appendEmailDesignBody($footer_data['l' . $language_id . '_PlainTextBody']), + ); + + $this->Conn->doUpdate($fields_hash, $table_name, 'LanguageId = ' . $language_id); + } + + $sql = 'DELETE FROM ' . $event_table . ' + WHERE EventId = ' . $footer_data['EventId']; + $this->Conn->Query($sql); } + + /** + * Adds "$body" to given string + * + * @param string $string + * @return string + * @access private + */ + private function _appendEmailDesignBody($string) + { + if ( !$string ) { + return $string; + } + + return '$body' . "\n" . str_replace(Array ("\r\n", "\r"), "\n", $string); + } } \ No newline at end of file Index: branches/5.2.x/core/units/helpers/language_import_helper.php =================================================================== diff -u -N -r15224 -r15225 --- branches/5.2.x/core/units/helpers/language_import_helper.php (.../language_import_helper.php) (revision 15224) +++ branches/5.2.x/core/units/helpers/language_import_helper.php (.../language_import_helper.php) (revision 15225) @@ -1,6 +1,6 @@ '; - $ret .= $this->_exportEncoding == 'base64' ? base64_encode($replacements) : ''; - $ret .= '' . "\n"; + if ( $replacements ) { + $ret .= "\t\t" . '' . $this->_exportConvert($replacements) . '' . "\n"; } + // e-mail design templates + if ( $language_info['HtmlEmailTemplate'] || $language_info['TextEmailTemplate'] ) { + $ret .= "\t\t" . '' . "\n"; + + if ( $language_info['HtmlEmailTemplate'] ) { + $ret .= "\t\t\t" . '' . $this->_exportConvert($language_info['HtmlEmailTemplate']) . '' . "\n"; + } + + if ( $language_info['TextEmailTemplate'] ) { + $ret .= "\t\t\t" . '' . $this->_exportConvert($language_info['TextEmailTemplate']) . '' . "\n"; + } + + $ret .= "\t\t" . '' . "\n"; + } + // phrases if ($phrases) { $ret .= "\t\t" . '' . "\n"; @@ -344,12 +361,10 @@ } if ( $this->_exportEncoding == 'base64' ) { - $data = base64_encode($translation); $hint_translation = base64_encode($hint_translation); $column_translation = base64_encode($column_translation); } else { - $data = ''; $hint_translation = htmlspecialchars($hint_translation); $column_translation = htmlspecialchars($column_translation); } @@ -368,7 +383,7 @@ $attributes[] = 'Column="' . $column_translation . '"'; } - $ret .= "\t\t\t" . '' . $data . '' . "\n"; + $ret .= "\t\t\t" . '' . $this->_exportConvert($translation) . '' . "\n"; } $ret .= "\t\t" . '' . "\n"; @@ -774,6 +789,7 @@ 'Encoding' => (string)$language_node['Encoding'], 'Charset' => 'utf-8', 'SynchronizationModes' => Language::SYNCHRONIZE_DEFAULT, + 'HtmlEmailTemplate' => '$body', ); if ( $version > 1 ) { @@ -823,6 +839,12 @@ $fields_hash['FilenameReplacements'] = $replacements; break; + case 'EMAILDESIGNS': + // added since v6 + $this->_decodeEmailDesignTemplate($fields_hash, 'HtmlEmailTemplate', (string)$sub_node->HTML); + $this->_decodeEmailDesignTemplate($fields_hash, 'TextEmailTemplate', (string)$sub_node->TEXT); + break; + default: if ( $version == 1 ) { $fields_hash[$field_mapping[$sub_node->Name]] = (string)$sub_node; @@ -834,6 +856,24 @@ } /** + * Decodes e-mail template design from language pack + * + * @param Array $fields_hash + * @param string $field + * @param string $design_template + */ + protected function _decodeEmailDesignTemplate(&$fields_hash, $field, $design_template) + { + if ( $fields_hash['Encoding'] != 'plain' ) { + $design_template = base64_decode($design_template); + } + + if ( $design_template ) { + $fields_hash[$field] = $design_template; + } + } + + /** * Performs phases import * * @param SimpleXMLElement $phrases @@ -913,8 +953,8 @@ $this->Application->Debugger->profileStart('L[' . $language_id . ']E', 'Language: ' . $language_id . '; Events Import'); } - $email_message_helper = $this->Application->recallObject('EmailMessageHelper'); - /* @var $email_message_helper EmailMessageHelper */ + $email_message_helper = $this->Application->recallObject('kEmailMessageHelper'); + /* @var $email_message_helper kEmailMessageHelper */ foreach ($events as $event_node) { /* @var $event_node SimpleXMLElement */ Index: branches/5.2.x/core/install/install_schema.sql =================================================================== diff -u -N -r15223 -r15225 --- branches/5.2.x/core/install/install_schema.sql (.../install_schema.sql) (revision 15223) +++ branches/5.2.x/core/install/install_schema.sql (.../install_schema.sql) (revision 15225) @@ -165,6 +165,8 @@ Locale varchar(10) NOT NULL DEFAULT 'en-US', UserDocsUrl varchar(255) NOT NULL DEFAULT '', SynchronizationModes varchar(255) NOT NULL DEFAULT '', + HtmlEmailTemplate text, + TextEmailTemplate text, PRIMARY KEY (LanguageId), KEY Enabled (Enabled), KEY PrimaryLang (PrimaryLang), 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 Index: branches/5.2.x/core/install/upgrades.sql =================================================================== diff -u -N -r15215 -r15225 --- branches/5.2.x/core/install/upgrades.sql (.../upgrades.sql) (revision 15215) +++ branches/5.2.x/core/install/upgrades.sql (.../upgrades.sql) (revision 15225) @@ -2660,3 +2660,6 @@ CHANGE CategoryId CategoryId INT(11) NULL; # ===== v 5.2.0-B3 ===== +ALTER TABLE Languages + ADD HtmlEmailTemplate TEXT NULL, + ADD TextEmailTemplate TEXT NULL; Index: branches/5.2.x/core/admin_templates/regional/languages_edit.tpl =================================================================== diff -u -N -r14629 -r15225 --- branches/5.2.x/core/admin_templates/regional/languages_edit.tpl (.../languages_edit.tpl) (revision 14629) +++ branches/5.2.x/core/admin_templates/regional/languages_edit.tpl (.../languages_edit.tpl) (revision 15225) @@ -107,6 +107,10 @@ + + + + Index: branches/5.2.x/core/units/helpers/email_message_helper.php =================================================================== diff -u -N -r15222 -r15225 --- branches/5.2.x/core/units/helpers/email_message_helper.php (.../email_message_helper.php) (revision 15222) +++ branches/5.2.x/core/units/helpers/email_message_helper.php (.../email_message_helper.php) (revision 15225) @@ -1,6 +1,6 @@ Application->InitParser(); - $ret = array_key_exists('Headers', $fields_hash) ? $fields_hash['Headers'] : ''; - if ($ret) { - $ret .= "\n"; + try { + $this->Application->Parser->CompileRaw($object->GetField($field), 'email_template'); } + catch (ParserException $e) { + if ( $this->Application->isDebugMode() ) { + $this->Application->Debugger->appendHTML('Error in Email Template: ' . $e->getMessage() . ' (line: ' . $e->getLine() . ')'); + } - $ret = $this->_removeTrailingCRLF($ret); - $ret .= 'Subject: ' . $fields_hash['Subject'] . "\n\n"; - $ret .= $fields_hash['Body']; - - return $ret; + $object->SetError($field, 'parsing_error'); + } } - - /** - * Remove trailing CR/LF chars from string - * - * @param string $string - * @return string - */ - function _removeTrailingCRLF($string) - { - return preg_replace('/(\n|\r)+/',"\\1",$string); - } } \ No newline at end of file Index: branches/5.2.x/core/install/english.lang =================================================================== diff -u -N -r15222 -r15225 --- branches/5.2.x/core/install/english.lang (.../english.lang) (revision 15222) +++ branches/5.2.x/core/install/english.lang (.../english.lang) (revision 15225) @@ -1,5 +1,8 @@ - + + + JGJvZHkNCjxici8+PGJyLz4NCg0KU2luY2VyZWx5LDxici8+PGJyLz4NCg0KV2Vic2l0ZSBhZG1pbmlzdHJhdGlvbi4= + QWN0aXZl QWRk @@ -253,6 +256,7 @@ Q29ubmVjdGlvbiBGYWlsZWQ= RXJyb3IgY29weWluZyBzdWJzZWN0aW9ucw== Q3VzdG9tIGZpZWxkIHdpdGggaWRlbnRpY2FsIG5hbWUgYWxyZWFkeSBleGlzdHM= + RW1haWwgRGVzaWduIFRlbXBsYXRlIHNob3VsZCBjb250YWluIGF0IGxlYXN0ICIkYm9keSIgdGFnIGluIGl0Lg== RmlsZSBpcyB0b28gbGFyZ2U= Z3JvdXAgbm90IGZvdW5k RmllbGQgZG9lc24ndCBleGlzdCBpbiAiJXMiIHVuaXQgY29uZmln @@ -448,6 +452,7 @@ SGludCBQaHJhc2U= SGl0cw== SG90 + SFRNTCBWZXJzaW9u SFRNTCBWZXJzaW9u SWNvbiBVUkwgKGRpc2FibGVkKQ== SWNvbiBVUkw= @@ -630,6 +635,7 @@ VGV4dA== VGV4dCBBbGlnbg== VGV4dCBEZWNvcmF0aW9u + VGV4dCBWZXJzaW9u VGV4dCBWZXJzaW9u VGhlbWU= VGhlbWVz @@ -1031,6 +1037,7 @@ Q291bnRlcnM= Q3VzdG9tIEZpZWxkcw== U3VibWlzc2lvbiBEYXRh + RS1tYWlsIERlc2lnbiBUZW1wbGF0ZXM= RnJvbnQtZW5k RnVsbCBTaXplIEltYWdl R2VuZXJhbA== @@ -1609,10 +1616,6 @@ WW91ciBDYXRlZ29yeSAiPGlucDI6Y19GaWVsZCBuYW1lPSJOYW1lIi8+IiBoYXMgYmVlbiBEZW5pZWQ= WW91ciBjYXRlZ29yeSBzdWdnZXN0aW9uICI8aW5wMjpjX0ZpZWxkIG5hbWU9Ik5hbWUiLz4iIGhhcyBiZWVuIGRlbmllZC4= - - Q29tbW9uIEZvb3RlciBUZW1wbGF0ZQ== - PGJyLz48YnIvPg0KDQpTaW5jZXJlbHksPGJyLz48YnIvPg0KDQpXZWJzaXRlIGFkbWluaXN0cmF0aW9uLg== - TmV3IEVtYWlsIFJFUExZIFJlY2VpdmVkIGluICJGZWVkYmFjayBNYW5hZ2VyIiAoPGlucDI6Zm9ybXN1YnMuLWl0ZW1fRmllbGQgbmFtZT0iRm9ybVN1Ym1pc3Npb25JZCIvPik= TmV3IEVtYWlsIFJFUExZIFJlY2VpdmVkIGluICZxdW90O0ZlZWRiYWNrIE1hbmFnZXImcXVvdDsuPGJyIC8+DQo8YnIgLz4NCk9yaWdpbmFsIEZlZWRiYWNrSWQ6IDxpbnAyOmZvcm1zdWJzLi1pdGVtX0ZpZWxkIG5hbWU9IkZvcm1TdWJtaXNzaW9uSWQiLz4gPGJyIC8+DQpPcmlnaW5hbCBTdWJqZWN0OiA8aW5wMjpmb3Jtc3Vicy4taXRlbV9Gb3JtRmllbGQgcm9sZT0ic3ViamVjdCIvPiA8YnIgLz4NCjxiciAvPg0KUGxlYXNlIHByb2NlZWQgdG8gdGhlIEFkbWluIENvbnNvbGUgaW4gb3JkZXIgdG8gcmV2aWV3IGFuZCByZXBseSB0byB0aGUgdXNlci4= Index: branches/5.2.x/core/units/helpers/helpers_config.php =================================================================== diff -u -N -r15130 -r15225 --- branches/5.2.x/core/units/helpers/helpers_config.php (.../helpers_config.php) (revision 15130) +++ branches/5.2.x/core/units/helpers/helpers_config.php (.../helpers_config.php) (revision 15225) @@ -1,6 +1,6 @@ 'BracketsHelper', 'class' => 'kBracketsHelper', 'file' => 'brackets_helper.php', 'build_event' => ''), Array ('pseudo' => 'kXMLHelper', 'class' => 'kXMLHelper', 'file' => 'xml_helper.php', 'build_event' => ''), Array ('pseudo' => 'CatItemExportHelper', 'class' => 'kCatDBItemExportHelper', 'file' => 'cat_dbitem_export_helper.php', 'build_event' => ''), - Array ('pseudo' => 'EmailMessageHelper', 'class' => 'EmailMessageHelper', 'file' => 'email_message_helper.php', 'build_event' => ''), + Array ('pseudo' => 'kEmailMessageHelper', 'class' => 'kEmailMessageHelper', 'file' => 'email_message_helper.php', 'build_event' => ''), Array ('pseudo' => 'ListHelper', 'class' => 'ListHelper', 'file' => 'list_helper.php', 'build_event' => ''), Array ('pseudo' => 'FormSubmissionHelper', 'class' => 'FormSubmissionHelper', 'file' => 'form_submission_helper.php', 'build_event' => ''),