improve default profile behavior
This commit is contained in:
parent
0c1493f47b
commit
57b61d06c6
4 changed files with 41 additions and 16 deletions
|
@ -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',
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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">
|
||||
|
@ -378,4 +380,4 @@
|
|||
});
|
||||
twingle_membership_active_changed();
|
||||
</script>
|
||||
{/literal}
|
||||
{/literal}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue