X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FForm.php;h=6d5e6e5a14ca02265b4cda218e1c2256f464542c;hb=ae794e1d1c7b47c2aefb1d174f5a4c12d28b0db2;hp=91d8cf883075abbb4f185a15ff63349e75772b47;hpb=bb2465b6ce9621d85483d95d5d5b0e06d5175029;p=civicrm-core.git diff --git a/CRM/Core/Form.php b/CRM/Core/Form.php index 91d8cf8830..6d5e6e5a14 100644 --- a/CRM/Core/Form.php +++ b/CRM/Core/Form.php @@ -189,6 +189,11 @@ class CRM_Core_Form extends HTML_QuickForm_Page { */ protected $context; + /** + * @var bool + */ + public $submitOnce = FALSE; + /** * @return string */ @@ -627,6 +632,10 @@ class CRM_Core_Form extends HTML_QuickForm_Page { ) { $this->setAttribute('data-warn-changes', 'true'); } + + if ($this->submitOnce) { + $this->setAttribute('data-submit-once', 'true'); + } } /** @@ -642,7 +651,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $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); @@ -837,6 +846,8 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $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; @@ -1253,7 +1264,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { * @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 = []; @@ -1270,7 +1281,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { 'isDefault' => TRUE, ]; if ($submitOnce) { - $nextButton['js'] = ['onclick' => "return submitOnce(this,'{$this->_name}','" . ts('Processing') . "');"]; + $this->submitOnce = TRUE; } $buttons[] = $nextButton; }