Convert dedupeRuleForm to use addField method
authorTim Mallezie <tim.mallezie@chiro.be>
Fri, 17 Apr 2015 12:47:19 +0000 (14:47 +0200)
committerTim Mallezie <tim.mallezie@chiro.be>
Fri, 17 Apr 2015 12:47:19 +0000 (14:47 +0200)
CRM/Admin/Form.php
CRM/Contact/Form/DedupeRules.php
CRM/Core/Form.php
xml/schema/Dedupe/Rule.xml
xml/schema/Dedupe/RuleGroup.xml

index 31da21973ab7ea332339f13c0f0be827724a2a4b..315c7147cdfccd54ed822455de78bd0aa1f34937 100644 (file)
@@ -59,6 +59,13 @@ class CRM_Admin_Form extends CRM_Core_Form {
    */
   protected $_BAOName;
 
+  /**
+   * Explicitly declare the form context.
+   */
+  public function getDefaultContext() {
+    return 'create';
+  }
+
   /**
    * Basic setup.
    */
index b944442162804f9eb3c6485d67fd5967a9967817..66d8a3dc98ad87466349555a8ca4971497dbf671 100644 (file)
@@ -44,6 +44,13 @@ class CRM_Contact_Form_DedupeRules extends CRM_Admin_Form {
   protected $_fields = array();
   protected $_rgid;
 
+  /**
+   * Explicitly declare the entity api name.
+   */
+  public function getDefaultEntity() {
+    return 'RuleGroup';
+  }
+
   /**
    * Pre processing.
    *
@@ -100,16 +107,14 @@ class CRM_Contact_Form_DedupeRules extends CRM_Admin_Form {
    */
   public function buildQuickForm() {
     $foo = CRM_Core_DAO::getAttribute('CRM_Dedupe_DAO_Rule', 'title');
-
-    $this->add('text', 'title', ts('Rule Name'), array('maxlength' => 255, 'class' => 'huge'), TRUE);
+    $this->addField('title', array('label' => ts('Rule Name')), TRUE);
     $this->addRule('title', ts('A duplicate matching rule with this name already exists. Please select another name.'),
       'objectExists', array('CRM_Dedupe_DAO_RuleGroup', $this->_rgid, 'title')
     );
 
-    $this->addRadio('used', ts('Usage'), $this->_options, NULL, NULL, TRUE);
-
+    $this->addField('used', array('label' => ts('Usage'), 'type' => 'Radio'), TRUE);
     $disabled = array();
-    $reserved = $this->add('checkbox', 'is_reserved', ts('Reserved?'));
+    $reserved = $this->addField('is_reserved', array('label' => ts('Reserved?')));
     if (!empty($this->_defaults['is_reserved'])) {
       $reserved->freeze();
       $disabled = array('disabled' => TRUE);
@@ -126,11 +131,11 @@ class CRM_Contact_Form_DedupeRules extends CRM_Admin_Form {
           NULL => ts('- none -'),
         ) + $this->_fields, FALSE, $disabled
       );
-      $this->add('text', "length_$count", ts('Length'), $attributes);
-      $this->add('text', "weight_$count", ts('Weight'), $attributes);
+      $this->addField('rule_length', array('entity' => 'Rule', 'name_id' => "length_$count") + $attributes);
+      $this->addField('rule_weight', array('entity' => 'Rule', 'name_id' => "weight_$count") + $attributes);
     }
 
-    $this->add('text', 'threshold', ts("Weight Threshold to Consider Contacts 'Matching':"), $attributes);
+    $this->addField('threshold', array('label' => ts("Weight Threshold to Consider Contacts 'Matching':")) + $attributes);
 
     $this->assign('contact_type', $this->_contactType);
 
index c6079b34c4688d79b53c405c892274309f4ca4bd..3568b2d62fd8e5f0e71fe5864a9a9ef78f04428c 100644 (file)
@@ -1177,8 +1177,8 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
     // Get field metadata.
     $fieldSpec = civicrm_api3($props['entity'], 'getfield', $props);
     $fieldSpec = $fieldSpec['values'];
-
-    $label = CRM_Utils_Array::value('label', $props, $fieldSpec['title']);
+    $label = CRM_Utils_Array::value('label', $props, isset($fieldSpec['title']) ? $fieldSpec['title'] : NULL);
+    $name = isset($props['name_id']) ? $props['name_id'] : $name;
 
     $widget = isset($props['type']) ? $props['type'] : $fieldSpec['html']['type'];
     if ($widget == 'TextArea' && $props['context'] == 'search') {
@@ -1205,7 +1205,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
         unset($props['options']);
       }
       else {
-        $options = $fieldSpec['options'];
+        $options = isset($fieldSpec['options']) ? $fieldSpec['options'] : NULL;
       }
 
       // The placeholder is only used for select-elements.
@@ -1254,7 +1254,12 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
       //case 'Select Date':
       //TODO: Add date formats
       //TODO: Add javascript template for dates.
-      // case 'Radio':
+      case 'Radio':
+        $separator = isset($props['separator']) ? $props['separator'] : NULL;
+        unset($props['seperator']);
+        $this->addRadio($name, $label, $options, NULL, $separator, $required);
+        break;
+
       case 'Select':
         if (empty($props['multiple'])) {
           $options = array('' => $props['placeholder']) + $options;
@@ -1264,7 +1269,10 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
         break;
 
       //case 'AdvMulti-Select':
-      //case 'CheckBox':
+      case 'CheckBox':
+        $this->add('checkbox', $name, $label, NULL, $required);
+        break;
+
       case 'File':
         // We should not build upload file in search mode.
         if (isset($props['context']) && $props['context'] == 'search') {
index a63d6ca094b77355acbcbeaa5dcd68ff31f4c9a8..627b80ef7554377ba54830ac782b2fcce23551f4 100644 (file)
@@ -50,6 +50,9 @@
     <type>int unsigned</type>
     <comment>The lenght of the matching substring</comment>
     <add>1.8</add>
+    <html>
+      <type>Text</type>
+    </html>
   </field>
   <field>
     <name>rule_weight</name>
@@ -57,5 +60,8 @@
     <required>true</required>
     <comment>The weight of the rule</comment>
     <add>1.8</add>
+    <html>
+      <type>Text</type>
+    </html>
   </field>
 </table>
index eb59b837588a893bfce065cd5f38d54f704c1924..ee5acb0bc6b1f5f86ef60c898831bdfdb72e5c05 100644 (file)
@@ -38,6 +38,9 @@
     <required>true</required>
     <comment>The weight threshold the sum of the rule weights has to cross to consider two contacts the same</comment>
     <add>1.8</add>
+    <html>
+      <type>Text</type>
+    </html>
   </field>
   <field>
     <name>level</name>
     <length>255</length>
     <comment>Label of the rule group</comment>
     <add>4.1</add>
+    <html>
+      <type>Text</type>
+    </html>
   </field>
   <field>
     <name>is_reserved</name>
     <type>boolean</type>
     <comment>Is this a reserved rule - a rule group that has been optimized and cannot be changed by the admin</comment>
     <add>4.1</add>
+    <html>
+      <type>CheckBox</type>
+    </html>
   </field>
 </table>