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', $this->addElement('select',
'twinglecampaign_xcm_profile', 'twinglecampaign_xcm_profile',
E::ts('XCM Profile'), E::ts('XCM Profile to match event initiator'),
$this->getXCMProfiles() $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([ $this->addButtons([
@ -29,7 +37,7 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
'type' => 'submit', 'type' => 'submit',
'name' => E::ts('Save'), 'name' => E::ts('Save'),
'isDefault' => TRUE, 'isDefault' => TRUE,
] ],
]); ]);
parent::buildQuickForm(); parent::buildQuickForm();
@ -40,6 +48,8 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
Civi::settings()->get('twingle_api_key'); Civi::settings()->get('twingle_api_key');
$defaultValues['twinglecampaign_xcm_profile'] = $defaultValues['twinglecampaign_xcm_profile'] =
Civi::settings()->get('twinglecampaign_xcm_profile'); Civi::settings()->get('twinglecampaign_xcm_profile');
$defaultValues['twinglecampaign_start_case'] =
Civi::settings()->get('twinglecampaign_start_case');
return $defaultValues; return $defaultValues;
} }
@ -48,7 +58,10 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
public function postProcess() { public function postProcess() {
$values = $this->exportValues(); $values = $this->exportValues();
Civi::settings()->set('twingle_api_key', $values['twingle_api_key']); 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(); parent::postProcess();
} }
@ -58,16 +71,40 @@ class CRM_TwingleCampaign_Form_Settings extends CRM_Core_Form {
* *
* @return array * @return array
*/ */
public function getXCMProfiles() { private function getXCMProfiles() {
$xcmProfiles = []; $xcmProfiles = [];
if (!isset($this->_settings['twinglecampaign_xcm_profile'])) {
if (method_exists('CRM_Xcm_Configuration', 'getProfileList')) { if (method_exists('CRM_Xcm_Configuration', 'getProfileList')) {
$profiles = CRM_Xcm_Configuration::getProfileList(); $profiles = CRM_Xcm_Configuration::getProfileList();
foreach ($profiles as $profile_key => $profile_name) { foreach ($profiles as $profile_key => $profile_name) {
$xcmProfiles[$profile_key] = $profile_name; $xcmProfiles[$profile_key] = $profile_name;
} }
} }
}
return $xcmProfiles; 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 *} {* HEADER *}
<div>
<h3>{ts domain="de.forumzfd.de"}General Settings{/ts}</h3>
<div class="crm-section"> <div class="crm-section">
<div class="label">{$form.twingle_api_key.label}</div> <div class="label">{$form.twingle_api_key.label}</div>
<div class="content">{$form.twingle_api_key.html}</div> <div class="content">{$form.twingle_api_key.html}</div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
</div>
<div>
<h3>{ts domain="de.forumzfd.de"}Twingle Event Settings{/ts}</h3>
<div class="crm-section"> <div class="crm-section">
<div class="label">{$form.twinglecampaign_xcm_profile.label}</div> <div class="label">{$form.twinglecampaign_xcm_profile.label}</div>
<div class="content">{$form.twinglecampaign_xcm_profile.html}</div> <div class="content">{$form.twinglecampaign_xcm_profile.html}</div>
<div class="clear"></div> <div class="clear"></div>
</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"> <div class="crm-submit-buttons">