improve default profile behavior

This commit is contained in:
Marc Michalsky 2023-08-03 14:55:57 +02:00
parent 0c1493f47b
commit 57b61d06c6
Signed by untrusted user who does not match committer: marc.koch
GPG key ID: 12406554CFB028B9
4 changed files with 41 additions and 16 deletions

View file

@ -201,27 +201,29 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form {
// Assign template variables.
$this->assign('op', $this->_op);
$this->assign('profile_name', $this->profile->getName());
$this->assign('profile_name', $profile_name);
$this->assign('is_default', $this->profile->is_default());
// Add form elements.
$is_default = $profile_name == 'default';
$this->add(
($is_default ? 'static' : 'text'),
'name',
E::ts('Profile name'),
array(),
!$is_default
);
$this->add(
'text', // field type
'selector', // field name
E::ts('Project IDs'), // field label
['class' => 'huge'],
TRUE // is required
'name', // field name
E::ts('Profile name'),
['class' => 'huge'] + ($this->profile->is_default() && $this->_op == 'edit' ? ['readonly'] : []),
!$this->profile->is_default()
);
// Do only display selector if this is not the default profile
if (!$this->profile->is_default()) {
$this->add(
'text', // field type
'selector', // field name
E::ts('Project IDs'), // field label
['class' => 'huge'],
TRUE // is required
);
}
$this->add(
'select',
'xcm_profile',

View file

@ -23,6 +23,7 @@ class CRM_Twingle_Page_Profiles extends CRM_Core_Page {
foreach (CRM_Twingle_Profile::getProfiles() as $profile_id => $profile) {
$profiles[$profile_id]['id'] = $profile_id;
$profiles[$profile_id]['name'] = $profile->getName();
$profiles[$profile_id]['is_default'] = $profile->is_default();
foreach (CRM_Twingle_Profile::allowedAttributes() as $attribute) {
$profiles[$profile_id][$attribute] = $profile->getAttribute($attribute);
}

View file

@ -164,6 +164,15 @@ class CRM_Twingle_Profile {
$this->name = $name;
}
/**
* Is this the default profile?
*
* @return bool
*/
public function is_default() {
return $this->name == 'default';
}
/**
* Retrieves an attribute of the profile.
*
@ -445,18 +454,29 @@ class CRM_Twingle_Profile {
* @param $project_id
*
* @return CRM_Twingle_Profile
* @throws \CRM_Twingle_Exceptions_ProfileException
* @throws \Civi\Core\Exception\DBQueryException
*/
public static function getProfileForProject($project_id) {
$profiles = self::getProfiles();
$default_profile = NULL;
foreach ($profiles as $profile) {
if ($profile->matches($project_id)) {
return $profile;
}
if ($profile->is_default()) {
$default_profile = $profile;
}
}
// If none matches, use the default profile.
return $profiles['default'];
if (!empty($default_profile)) {
return $default_profile;
}
else {
throw new ProfileException('Could not find default profile', ProfileException::ERROR_CODE_DEFAULT_PROFILE_NOT_FOUND);
}
}
/**

View file

@ -28,6 +28,7 @@
</tr>
<tr class="crm-section">
{if not $form.is_default}
<td class="label">{$form.selector.label}
<a
onclick='
@ -46,6 +47,7 @@
></a>
</td>
<td class="content">{$form.selector.html}</td>
{/if}
</tr>
<tr class="crm-section">