add option to select a case to start for event initiator

This commit is contained in:
Marc Michalsky forumZFD 2020-11-12 17:38:30 +01:00
parent 19ddbb4ec4
commit b1dd134d27
Signed by untrusted user who does not match committer: marc.koch
GPG key ID: 12406554CFB028B9
2 changed files with 68 additions and 20 deletions

View file

@ -20,8 +20,16 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
$this->addElement('select',
'twinglecampaign_xcm_profile',
E::ts('XCM Profile'),
$this->getXCMProfiles()
E::ts('XCM Profile to match event initiator'),
$this->getXCMProfiles(),
['class' => 'crm-select2 huge']
);
$this->addElement('select',
'twinglecampaign_start_case',
E::ts('Start a case for event initiator'),
$this->getCaseTypes(),
['class' => 'crm-select2 huge']
);
$this->addButtons([
@ -29,7 +37,7 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
'type' => 'submit',
'name' => E::ts('Save'),
'isDefault' => TRUE,
]
],
]);
parent::buildQuickForm();
@ -40,6 +48,8 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
Civi::settings()->get('twingle_api_key');
$defaultValues['twinglecampaign_xcm_profile'] =
Civi::settings()->get('twinglecampaign_xcm_profile');
$defaultValues['twinglecampaign_start_case'] =
Civi::settings()->get('twinglecampaign_start_case');
return $defaultValues;
}
@ -48,7 +58,10 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
public function postProcess() {
$values = $this->exportValues();
Civi::settings()->set('twingle_api_key', $values['twingle_api_key']);
Civi::settings()->set('twinglecampaign_xcm_profile', $values['twinglecampaign_xcm_profile']);
Civi::settings()
->set('twinglecampaign_xcm_profile', $values['twinglecampaign_xcm_profile']);
Civi::settings()
->set('twinglecampaign_start_case', $values['twinglecampaign_start_case']);
parent::postProcess();
}
@ -58,16 +71,40 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
*
* @return array
*/
public function getXCMProfiles() {
private function getXCMProfiles() {
$xcmProfiles = [];
if (!isset($this->_settings['twinglecampaign_xcm_profile'])) {
if (method_exists('CRM_Xcm_Configuration', 'getProfileList')) {
$profiles = CRM_Xcm_Configuration::getProfileList();
foreach ($profiles as $profile_key => $profile_name) {
$xcmProfiles[$profile_key] = $profile_name;
}
}
}
return $xcmProfiles;
}
/**
* Retrieves all case types
*
* @return array
*/
private function getCaseTypes() {
$caseTypes = [NULL => E::ts('none')];
try {
$result = civicrm_api3('CaseType', 'get', [
'sequential' => 1,
]);
if (is_array($result['values'])) {
foreach ($result['values'] as $case) {
$caseTypes[$case['name']] = $case['title'];
}
}
} catch (CiviCRM_API3_Exception $e) {
Civi::log()->error(
'TwingleCampaign could not retrieve case types: ' .
$e->getMessage());
}
return $caseTypes;
}
}

View file

@ -1,16 +1,27 @@
{* HEADER *}
<div>
<h3>{ts domain="de.forumzfd.de"}General Settings{/ts}</h3>
<div class="crm-section">
<div class="label">{$form.twingle_api_key.label}</div>
<div class="content">{$form.twingle_api_key.html}</div>
<div class="clear"></div>
</div>
</div>
<div>
<h3>{ts domain="de.forumzfd.de"}Twingle Event Settings{/ts}</h3>
<div class="crm-section">
<div class="label">{$form.twinglecampaign_xcm_profile.label}</div>
<div class="content">{$form.twinglecampaign_xcm_profile.html}</div>
<div class="clear"></div>
</div>
<div class="crm-section">
<div class="label">{$form.twinglecampaign_start_case.label}</div>
<div class="content">{$form.twinglecampaign_start_case.html}</div>
<div class="clear"></div>
</div>
</div>
<div class="crm-submit-buttons">