*/
protected $context;
+ /**
+ * @var bool
+ */
+ public $submitOnce = FALSE;
+
/**
* @return string
*/
) {
$this->setAttribute('data-warn-changes', 'true');
}
+
+ if ($this->submitOnce) {
+ $this->setAttribute('data-submit-once', 'true');
+ }
}
/**
$prevnext = $spacing = [];
foreach ($params as $button) {
if (!empty($button['submitOnce'])) {
- $button['js']['onclick'] = "return submitOnce(this,'{$this->_name}','" . ts('Processing') . "');";
+ $this->submitOnce = TRUE;
}
$attrs = ['class' => 'crm-form-submit'] + (array) CRM_Utils_Array::value('js', $button);
$this->_params = array_merge($this->_params, $addressParams);
}
+ // @fixme it would be really nice to have a comment here so I had a clue why we are setting $fields[$name] = 1
+ // Also how does relate to similar code in CRM_Contact_BAO_Contact::addBillingNameFieldsIfOtherwiseNotSet()
$nameFields = ['first_name', 'middle_name', 'last_name'];
foreach ($nameFields as $name) {
$fields[$name] = 1;
* @param string $nextType
* Button type for the form after processing.
* @param string $backType
- * @param bool|string $submitOnce If true, add javascript to next button submit which prevents it from being clicked more than once
+ * @param bool|string $submitOnce
*/
public function addDefaultButtons($title, $nextType = 'next', $backType = 'back', $submitOnce = FALSE) {
$buttons = [];
'isDefault' => TRUE,
];
if ($submitOnce) {
- $nextButton['js'] = ['onclick' => "return submitOnce(this,'{$this->_name}','" . ts('Processing') . "');"];
+ $this->submitOnce = TRUE;
}
$buttons[] = $nextButton;
}