Преглед на файлове

Working on property adder field

Chun-Huai Cheng преди 8 години
родител
ревизия
961601054d
променени са 1 файла, в които са добавени 46 реда и са изтрити 31 реда
  1. 46 31
      tripal_chado/includes/TripalFields/chado_linker__prop_adder.inc

+ 46 - 31
tripal_chado/includes/TripalFields/chado_linker__prop_adder.inc

@@ -132,12 +132,22 @@ class chado_linker__prop_adder extends TripalField {
           '#markup' => '<i>' . t('There is no term that matches the entered text.') . '</i>'
         );
       }
-      // Add in the button for the cases of no terms or too many.
-      $widget['wrapper']['submit_button'] = array(
-        '#type' => 'submit',
-        '#value' => t('Use this term'),
-        '#name' => 'kvproperty_adder_button'
-      );
+      else {
+        $widget['wrapper']['cardinality'] = array(
+          '#title'       => t('Number of Values'),
+          '#type'        => 'textfield',
+          '#description' => t("The number of values allowed for this property. 0 for unlimited values"),
+          '#required'    => TRUE,
+          '#size' => 10,
+          '#default_value' => 1,
+        );
+        // Add in the button for the cases of no terms or too many.
+        $widget['wrapper']['submit_button'] = array(
+          '#type' => 'submit',
+          '#value' => t('Use this term'),
+          '#name' => 'use_term_button',
+        );
+      }
     }
   }
 
@@ -145,23 +155,39 @@ class chado_linker__prop_adder extends TripalField {
    * @see TripalField::widgetFormValidate
    */
   public function widgetFormValidate($entity_type, $entity, $langcode, $items, &$errors) {
-
+    
     // We will never have more than one item for this field at a time, so
     // delta is always zero.
     $delta = 0;
 
-    // Make sure the cvterm for this property is uniquely identified.
-    $kvproperty = tripal_get_field_item_keyval($items, $delta, 'value', '');
-    $cvterms = chado_generate_var('cvterm', array('name' => $kvproperty), $options = array('return_array' => TRUE));
-//dpm($kvproperty);
-    if (trim($kvproperty) && count($cvterms) == 1) {
-      // Get the table and base table.
+    // Get the form values
+    $wrapper = tripal_get_field_item_keyval($items, $delta, 'wrapper', '');
+    $term_name = key_exists('term_name', $wrapper) ? $wrapper['term_name'] : '';
+    $terms_list = key_exists('terms_list', $wrapper) ? $wrapper['terms_list'] : '';
+dpm($term_name);
+    dpm(key($terms_list));
+/*     if ($terms_list) {
+      $num_selection = 0;
+      $cvterm_id = '';
+      foreach ($terms_list AS $key => $val) {
+        if ($val) {
+          $cvterm_id = preg_replace('/^term-/', '', $key);
+          $num_selection ++;
+        }
+      }
+      
+      // Allow only one selection for the term
+      if ($num_selection != 1) {
+        $errors[$this->field['field_name']][$langcode][$delta][] = array(
+          'error' => 'chado_linker__prop_adder',
+          'message' => t("Please select one and only one term."),
+        );
+      }
+      
+      // Do not proceed if the field already exists
       $base_table = $this->field['settings']['base_table'];
-
-      // Generate the name for the property table and the field name that we'll
-      // be creating.
       $prop_table = $base_table . 'prop';
-      $field_name = $prop_table . '__' . $cvterms[0]->cvterm_id;
+      $field_name = $prop_table . '__' . $cvterm_id;
       // Create an instance of the field.
       $instance = field_info_instance($entity_type, $field_name,  $entity->bundle);
       if ($instance) {
@@ -170,25 +196,14 @@ class chado_linker__prop_adder extends TripalField {
           'message' => t("The property already exists."),
         );
       }
-    }
-    if (trim($kvproperty) && count($cvterms) > 1) {
-      $errors[$this->field['field_name']][$langcode][$delta][] = array(
-        'error' => 'chado_linker__prop_adder',
-        'message' => t("This term is present in multiple vocabularies. Please select the appropriate one."),
-      );
-    }
-    if (trim($kvproperty) && count($cvterms) == 0) {
-      $errors[$this->field['field_name']][$langcode][$delta][] = array(
-        'error' => 'chado_linker__prop_adder',
-        'message' => t("Please provide a property type to add."),
-      );
-    }
+    } */
   }
 
   /**
    * @see TripalField::widgetFormSubmit()
    */
-  public function widgetFormSubmit($entity_type, $entity, $langcode, &$items, $form, &$form_state) {dpm($form);return;
+  public function widgetFormSubmit($entity_type, $entity, $langcode, &$items, $form, &$form_state) {
+    return;
     // We will never have more than one item for this field at a time, so
     // delta is always zero.
     $delta = 0;