Skip to content

Commit

Permalink
Merge pull request #16838 from mlutfy/core1280
Browse files Browse the repository at this point in the history
dev/core#1280 Fix ContributionPage soft_credit translation
  • Loading branch information
mlutfy authored Jul 17, 2020
2 parents 7392872 + 9a42dcc commit 26c9d07
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 4 deletions.
4 changes: 2 additions & 2 deletions CRM/Contribute/BAO/ContributionPage.php
Original file line number Diff line number Diff line change
Expand Up @@ -904,9 +904,9 @@ public static function formatModuleData($params, $setDefault = FALSE, $module) {
$json = [$module => NULL];
foreach ($moduleDataFormat[$module] as $key => $attribute) {
if ($key === 'multilingual') {
$json[$module][$config->lcMessages] = [];
$json[$module][$tsLocale] = [];
foreach ($attribute as $attr) {
$json[$module][$config->lcMessages][$attr] = $params[$attr];
$json[$module][$tsLocale][$attr] = $params[$attr];
}
}
else {
Expand Down
13 changes: 11 additions & 2 deletions CRM/Contribute/Form/ContributionPage/Settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -349,8 +349,17 @@ public function postProcess() {

foreach ($ufJoinParams as $index => $ufJoinParam) {
if (!empty($params[$index])) {
// first delete all past entries
CRM_Core_BAO_UFJoin::deleteAll($ufJoinParam);
// Look for an existing entry
$ufJoinDAO = new CRM_Core_DAO_UFJoin();
$ufJoinDAO->module = $ufJoinParam['module'];
$ufJoinDAO->entity_table = 'civicrm_contribution_page';
$ufJoinDAO->entity_id = $ufJoinParam['entity_id'];
$ufJoinDAO->find(TRUE);

if (!empty($ufJoinDAO->id)) {
$ufJoinParam['id'] = $ufJoinDAO->id;
}

$ufJoinParam['uf_group_id'] = $params[$index];
$ufJoinParam['weight'] = 1;
$ufJoinParam['is_active'] = 1;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?php
/*
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC. All rights reserved. |
| |
| This work is published under the GNU AGPLv3 license with some |
| permitted exceptions and without any warranty. For full license |
| and copyright information, see https://civicrm.org/licensing |
+--------------------------------------------------------------------+
*/

/**
* Test ContributionPage translation features.
*
* @group headless
*/
class CRM_Contribute_Form_ContributionPageTranslationTest extends CiviUnitTestCase {

public function setUp() {
parent::setUp();
$this->_financialTypeID = 1;
$this->enableMultilingual();
CRM_Core_I18n_Schema::addLocale('fr_FR', 'en_US');
}

public function tearDown() {
global $dbLocale;
if ($dbLocale) {
CRM_Core_I18n_Schema::makeSinglelingual('en_US');
}
}

/**
* Create() method (create Contribution Page with Honor block)
*/
public function testCreateHonor() {
CRM_Core_I18n::singleton()->setLocale('en_US');

$params = [
'title' => 'Test Contribution Page',
'financial_type_id' => $this->_financialTypeID,
'is_for_organization' => 0,
'for_organization' => ' I am contributing on behalf of an organization',
'goal_amount' => '400',
'is_active' => 1,
'honor_block_is_active' => 1,
'honor_block_title' => 'In Honor Title EN',
'honor_block_text' => 'In Honor Text EN',
// Honoree Individual
'honoree_profile' => 13,
// In Honor Of
'soft_credit_types' => 1,
'start_date' => '20091022105900',
'start_date_time' => '10:59AM',
'end_date' => '19700101000000',
'end_date_time' => '',
'is_credit_card_only' => '',
];

$contributionpage = CRM_Contribute_BAO_ContributionPage::create($params);

// The BAO does not save these
$params['id'] = $contributionpage->id;
$params['honor_block_title'] = 'In Honor Title EN';
$params['honor_block_text'] = 'In Honor Text EN';

$form = $this->getFormObject('CRM_Contribute_Form_ContributionPage_Settings', $params, 'Settings');
$form->postProcess();

// Now update the page with In Honor (soft credit) text in French
CRM_Core_I18n::singleton()->setLocale('fr_FR');

$params['honor_block_title'] = 'In Honor Title FR';
$params['honor_block_text'] = 'In Honor Text FR';

$form = $this->getFormObject('CRM_Contribute_Form_ContributionPage_Settings', $params, 'Settings');
$form->postProcess();

$uf = $this->callAPISuccess('UFJoin', 'getsingle', [
'entity_id' => $contributionpage->id,
'module' => 'soft_credit',
]);

$json = json_decode($uf['module_data'], TRUE);

$this->assertEquals('In Honor Title EN', $json['soft_credit']['en_US']['honor_block_title']);
$this->assertEquals('In Honor Text EN', $json['soft_credit']['en_US']['honor_block_text']);
$this->assertEquals('In Honor Title FR', $json['soft_credit']['fr_FR']['honor_block_title']);
$this->assertEquals('In Honor Text FR', $json['soft_credit']['fr_FR']['honor_block_text']);

$this->callAPISuccess('ContributionPage', 'delete', ['id' => $contributionpage->id]);
}

}

0 comments on commit 26c9d07

Please sign in to comment.