Browse Source

Worked on fields. Fixed prop_adder.

Chun-Huai Cheng 8 years ago
parent
commit
b10bdad17d

+ 2 - 2
tripal_chado/includes/TripalFields/chado_base__dbxref_id.inc

@@ -221,7 +221,7 @@ class chado_base__dbxref_id extends TripalField {
       // If user did not select a database, we want to remove dbxref_id from the
       // field.
       if (!$db_id) {
-        $items[$delta]['chado-' . $table_name . '__dbxref_id'] = '__NULL__';
+        $items[$delta]['chado-' . $field_table . '__dbxref_id'] = '__NULL__';
       }
       // If the dbxref_id does not match the db_id + accession then the user
       // has selected a new dbxref record and we need to update the hidden
@@ -229,7 +229,7 @@ class chado_base__dbxref_id extends TripalField {
       if ($db_id and $accession) {
         $dbxref = chado_generate_var('dbxref', array('db_id' => $db_id, 'accession' => $accession));
         if ($dbxref and $dbxref->dbxref_id != $fk_val) {
-          $items[$delta]['chado-' . $table_name . '__dbxref_id'] = $dbxref->dbxref_id;
+          $items[$delta]['chado-' . $field_table . '__dbxref_id'] = $dbxref->dbxref_id;
         }
       }
     }

+ 8 - 1
tripal_chado/includes/TripalFields/chado_linker__expression.inc

@@ -174,5 +174,12 @@ class chado_linker__expression extends TripalField {
       }
     }
   }
-
+  
+  /**
+   * We don't want a widget so override this function.
+   */
+  public static function widgetInfo() {
+    return array();
+  }
+  
 }

+ 4 - 4
tripal_chado/includes/TripalFields/chado_linker__featureloc.inc

@@ -297,11 +297,11 @@ class chado_linker__featureloc extends TripalField {
    }
 
   /**
-   * @see TripalField::widgetForm()
+   * We don't want a widget so override this function.
    */
-   public function widgetForm(&$widget, &$form, &$form_state, $langcode, $items, $delta, $element) {
-
+  public static function widgetInfo() {
+    return array();
   }
-
+  
 }
 

+ 8 - 8
tripal_chado/includes/TripalFields/chado_linker__genotype.inc

@@ -76,14 +76,6 @@ class chado_linker__genotype extends TripalField {
     }
   }
 
-
-  /**
-   * @see TripalField::widgetForm()
-   */
-  public function widgetForm(&$widget, &$form, &$form_state, $langcode, $items, $delta, $element) {
-
-  }
-
   /**
    * @see TripalField::load()
    */
@@ -148,4 +140,12 @@ class chado_linker__genotype extends TripalField {
       }
     }
   }
+  
+  /**
+   * We don't want a widget so override this function.
+   */
+  public static function widgetInfo() {
+    return array();
+  }
+  
 }

+ 8 - 8
tripal_chado/includes/TripalFields/chado_linker__phenotype.inc

@@ -75,14 +75,6 @@ class chado_linker__phenotype extends TripalField {
     }
   }
 
-
-  /**
-   * @see TripalField::widgetForm()
-   */
-  public function widgetForm(&$widget, &$form, &$form_state, $langcode, $items, $delta, $element) {
-
-  }
-
   /**
    * @see TripalField::load()
    */
@@ -148,4 +140,12 @@ class chado_linker__phenotype extends TripalField {
       }
     }
   }
+  
+  /**
+   * We don't want a widget so override this function.
+   */
+  public static function widgetInfo() {
+    return array();
+  }
+  
 }

+ 26 - 7
tripal_chado/includes/TripalFields/chado_linker__prop.inc

@@ -32,7 +32,7 @@ class chado_linker__prop extends TripalField {
 
     $properties = array();
     foreach ($items as $delta => $item) {
-      $properties[] = $item[$chado_table . '__value'];
+      $properties[] = $item['chado-' . $chado_table . '__value'];
     }
     $content = implode(', ', $properties);
 
@@ -74,7 +74,7 @@ class chado_linker__prop extends TripalField {
     $rfkey_field = $schema['foreign keys'][$base_table]['columns'][$lfkey_field];
 
     // Get the field defaults.
-    $fk_value = '';
+    $fk_value =$items[0]['chado-' . $field_table . '__' . $lfkey_field];
     $propval = '';
     if (array_key_exists($delta, $items)) {
       $propval = tripal_get_field_item_keyval($items, $delta, 'chado-' . $table_name . '__value', $propval);
@@ -93,12 +93,12 @@ class chado_linker__prop extends TripalField {
 
     $widget['value'] = array(
       '#type' => 'value',
-      '#value' => $items[0]['value'],
+      '#value' => key_exists($delta, $items) ? $items[$delta]['value'] : '',
     );
 
     $widget['chado-' . $table_name . '__' . $pkey] = array(
       '#type' => 'hidden',
-      '#default_value' => !empty($items[$delta]['value']) ? $items[$delta]['value'] : '',
+      '#default_value' => !empty($items[$delta]['chado-' . $field_table . '__' . $pkey]) ? $items[$delta]['chado-' . $field_table . '__' . $pkey] : '',
     );
     $widget['chado-' . $table_name . '__' . $lfkey_field] = array(
       '#type' => 'hidden',
@@ -116,7 +116,6 @@ class chado_linker__prop extends TripalField {
       '#type' => 'hidden',
       '#value' => $delta,
     );
-    return $widget;
   }
 
 
@@ -170,6 +169,25 @@ class chado_linker__prop extends TripalField {
       chado_delete_record($table_name, $match);
     } */
   }
+  
+  /**
+   * @see TripalField::widgetFormSubmit()
+   */
+  public function widgetFormSubmit($entity_type, $entity, $langcode, &$items, $form, &$form_state) {
+
+    $field_table = $this->field['settings']['chado_table'];
+    foreach ($items AS $delta => $item) {
+      // Don't save if there is no value for prop
+      if (!trim($item['chado-' . $field_table . '__' . 'value'])) {
+        foreach($item AS $key => $value) {
+          if (preg_match('/^chado-/', $key)) {
+            $items[$delta][$key] = '__NULL__';
+          }
+        }
+      }
+    }
+  }
+  
   /**
    * @see TripalField::load()
    */
@@ -192,10 +210,11 @@ class chado_linker__prop extends TripalField {
     $fkey_rcolumn = $schema['foreign keys'][$base_table]['columns'][$fkey_lcolumn];
 
     // Set some defaults for the empty record.
+    $chado_record = $entity->chado_record;
     $entity->{$field_name}['und'][0] = array(
       'value' => '',
       'chado-' . $field_table . '__' . $pkey => '',
-      'chado-' . $field_table . '__' . $fkey_lcolumn => '',
+      'chado-' . $field_table . '__' . $fkey_lcolumn => $chado_record->{$fkey_lcolumn},
       'chado-' . $field_table . '__value' => '',
       'chado-' . $field_table . '__type_id' => '',
       'chado-' . $field_table . '__rank' => '',
@@ -205,7 +224,7 @@ class chado_linker__prop extends TripalField {
     // given type.
     $columns = array('*');
     $match = array(
-      $fkey_lcolumn => $fkey_rcolumn,
+      $fkey_lcolumn => $chado_record->{$fkey_lcolumn},
       'type_id' => $cvterm_id,
     );
     $options = array(

+ 2 - 2
tripal_chado/includes/TripalFields/chado_linker__prop_adder.inc

@@ -90,13 +90,13 @@ class chado_linker__prop_adder extends TripalField {
     $kvproperty = tripal_get_field_item_keyval($items, $delta, 'value', '');
     $cvterms = chado_generate_var('cvterm', array('name' => $kvproperty), $options = array('return_array' => TRUE));
 
-    if (count($cvterms) > 1) {
+    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 (count($cvterms) == 0) {
+    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."),

+ 4 - 4
tripal_chado/includes/TripalFields/chado_linker__relationship.inc

@@ -164,11 +164,11 @@ class chado_linker__relationship extends TripalField {
       $subject_id_key = 'subject_organism_id';
       $object_id_key = 'object_organism_id';
     }
-    else if ($rel_table == 'nd_reagent_relationship') {
+    else if ($chado_table == 'nd_reagent_relationship') {
       $subject_id_key = 'subject_reagent_id';
       $object_id_key = 'object_reagent_id';
     }
-    else if ($rel_table == 'project_relationship') {
+    else if ($chado_table == 'project_relationship') {
       $subject_id_key = 'subject_project_id';
       $object_id_key = 'object_project_id';
     }
@@ -441,11 +441,11 @@ class chado_linker__relationship extends TripalField {
       $subject_id_key = 'subject_organism_id';
       $object_id_key = 'object_organism_id';
     }
-    else if ($rel_table == 'nd_reagent_relationship') {
+    else if ($field_table == 'nd_reagent_relationship') {
       $subject_id_key = 'subject_reagent_id';
       $object_id_key = 'object_reagent_id';
     }
-    else if ($rel_table == 'project_relationship') {
+    else if ($field_table == 'project_relationship') {
       $subject_id_key = 'subject_project_id';
       $object_id_key = 'object_project_id';
     }