Procházet zdrojové kódy

Merge pull request #544 from tripal/222-tv3-contact_org_widget

Organism/Contact widgets on Biomaterial content type
Bradford Condon před 6 roky
rodič
revize
262c5059a2

+ 1 - 1
tripal_chado/includes/TripalFields/local__contact/local__contact_widget.inc

@@ -106,7 +106,7 @@ class local__contact_widget extends ChadoFieldWidget {
     }
     // If no name is provided then we want to set the field for deletion.
     else {
-      $form_state['values'][$field_name]['und'][$delta][$linker_field] = '';
+      $form_state['values'][$field_name]['und'][$delta][$linker_field] = '__NULL__';
     }
   }
 }

+ 5 - 1
tripal_chado/includes/TripalFields/obi__organism/obi__organism.inc

@@ -69,7 +69,7 @@ class obi__organism extends ChadoField {
 
       // Get the field values.
       $organism_id = $values[$linker_field];
-      if (!$organism_id or $organism_id == 0) {
+      if ((!$organism_id or $organism_id == 0) and !$field_table == 'biomaterial') {
         $errors[$field_name]['und'][0][] = array(
           'message' =>  t("Please specify an organism."),
           'error' => 'obi__organism_id'
@@ -119,6 +119,10 @@ class obi__organism extends ChadoField {
       else {
         $organism = $record->organism_id;
       }
+      
+      if (!$organism) {
+        return;
+      }
       $string = $settings['field_display_string'];
       $label = chado_replace_tokens($string, $organism);
       $entity->{$field_name}['und'][0]['value'] = array(

+ 1 - 1
tripal_chado/includes/TripalFields/obi__organism/obi__organism_formatter.inc

@@ -12,7 +12,7 @@ class obi__organism_formatter extends ChadoFieldFormatter {
    * @see TripalFieldFormatter::view()
    */
   public function view(&$element, $entity_type, $entity, $langcode, $items, $display) {
-    if (count($items) > 0) {
+    if ($items[0]['value']) {
       $content = $items[0]['value']['rdfs:label'];
       if (array_key_exists('entity', $items[0]['value'])) {
         list($entity_type, $entity_id) = explode(':', $items[0]['value']['entity']);

+ 8 - 1
tripal_chado/includes/TripalFields/obi__organism/obi__organism_widget.inc

@@ -70,6 +70,13 @@ class obi__organism_widget extends ChadoFieldWidget {
 
     // Make sure the value is set to the organism_id
     $organism_id = $form_state['values'][$field_name]['und'][0][$linker_field];
-    $form_state['values'][$field_name]['und'][0]['value'] = $organism_id;
+    if ($organism_id > 0) {
+      $form_state['values'][$field_name]['und'][0]['value'] = $organism_id;
+      $form_state['values'][$field_name]['und'][$delta][$linker_field] = $organism_id;
+    }
+    else {
+      $form_state['values'][$field_name]['und'][0]['value'] = '__NULL__';
+      $form_state['values'][$field_name]['und'][$delta][$linker_field] = '__NULL__';
+    }
   }
 }