Use template variable to add or remove swap button.
authorEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 3 Aug 2021 23:30:19 +0000 (11:30 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 3 Aug 2021 23:30:22 +0000 (11:30 +1200)
In combination with email notifications this button can be dangerous - ie an accidental click and
a donor rather than a staff member gets the email.

My thinking is to disable this via the activity assignee extension,
https://lab.civicrm.org/extensions/assignee/-/issues/2 - but it's cleaner for
an extension to intervene by setting a smarty variable than using javascript
to remove the button and I feel like it makes more sense for the form to
assign 'instruction variables' than for the decision to freeze to
also have 'hidden' effects further down

CRM/Activity/Form/Activity.php
templates/CRM/Activity/Form/Activity.tpl

index bd7e7b10ee6dfb2adc1ccf36b613e6f475969e37..85650351dc695f4b2685a9a151027e1115831d06 100644 (file)
@@ -570,6 +570,7 @@ class CRM_Activity_Form_Activity extends CRM_Contact_Form_Task {
       $count = count(is_array($defaults['target_contact_id']) ? $defaults['target_contact_id'] : explode(',', $defaults['target_contact_id']));
       if ($count > 50) {
         $this->freeze(['target_contact_id']);
+        $this->assign('disable_swap_button', TRUE);
       }
     }
 
index 9814055fcd9f826abb97e0d4afb93d3d2c68f360..6be2f9672c42b1f16ad9f249cab16cd4c49db52c 100644 (file)
@@ -78,7 +78,7 @@
       <td>
         {$form.assignee_contact_id.html}
         {if $action neq 4}
-          {if !$form.target_contact_id.frozen}
+          {if empty($disable_swap_button)}
             <a href="#" class="crm-hover-button" id="swap_target_assignee" title="{ts}Swap Target and Assignee Contacts{/ts}" style="position:relative; bottom: 1em;">
               <i class="crm-i fa-random" aria-hidden="true"></i>
             </a>