Add support for number fields to CRM_Core_Form
authorColeman Watts <coleman@civicrm.org>
Mon, 21 Dec 2015 14:26:17 +0000 (09:26 -0500)
committerColeman Watts <coleman@civicrm.org>
Tue, 22 Dec 2015 03:30:56 +0000 (22:30 -0500)
CRM/Contact/Form/Search/Criteria.php
CRM/Core/Form.php
CRM/Core/Form/Renderer.php

index 9c0e424ad55656745e88ea48339966cf26a214ba..bdfcec58d5a7911c2bc21ed1a273d9391a2b9505 100644 (file)
@@ -111,7 +111,7 @@ class CRM_Contact_Form_Search_Criteria {
     $form->addElement('text', 'job_title', ts('Job Title'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'job_title'));
 
     //added internal ID
-    $form->addElement('text', 'contact_id', ts('Contact ID'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'id'));
+    $form->add('number', 'contact_id', ts('Contact ID'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Contact', 'id') + array('min' => 1));
     $form->addRule('contact_id', ts('Please enter valid Contact ID'), 'positiveInteger');
 
     //added external ID
index 96393a5a8c47c1af2ad07d458dd6bc7538d0df07..685f09d95ab9baa53d44535e7f816fa581aa8c7b 100644 (file)
@@ -326,10 +326,11 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
     $type, $name, $label = '',
     $attributes = '', $required = FALSE, $extra = NULL
   ) {
-    if ($type == 'wysiwyg') {
+    // Fudge some extra types that quickform doesn't support
+    if ($type == 'wysiwyg' || $type == 'number') {
       $attributes = ($attributes ? $attributes : array()) + array('class' => '');
-      $attributes['class'] .= ' crm-form-wysiwyg';
-      $type = "textarea";
+      $attributes['class'] = ltrim($attributes['class'] . " crm-form-$type");
+      $type = $type == 'wysiwyg' ? 'textarea' : 'text';
     }
     // @see http://wiki.civicrm.org/confluence/display/CRMDOC/crmDatepicker
     if ($type == 'datepicker') {
index 1339757e57ab3655e16a9c54f373e9210c4cf264..86a39b8b47e0e3b728a75595f8e14ecea0c67b96 100644 (file)
@@ -192,6 +192,10 @@ class CRM_Core_Form_Renderer extends HTML_QuickForm_Renderer_ArraySmarty {
     elseif (strpos($class, 'crm-form-contact-reference') !== FALSE) {
       self::preprocessContactReference($element);
     }
+    // Hack to support number fields
+    elseif (strpos($class, 'crm-form-number') !== FALSE) {
+      $element->setAttribute('type', 'number');
+    }
 
     if ($required) {
       $class .= ' required';