Browse Source

Properties Node API: now excludes existing properties that arn't also in the options array

Lacey Sanderson 11 years ago
parent
commit
385daaca12
1 changed files with 60 additions and 57 deletions
  1. 60 57
      tripal_core/api/tripal_core.chado_nodes.properties.api.inc

+ 60 - 57
tripal_core/api/tripal_core.chado_nodes.properties.api.inc

@@ -598,73 +598,76 @@ function chado_node_properties_form(&$form, &$form_state, $details) {
    * NOTE: The main difference is the key
    *
    * Loop on the array elements of the $existing_properties array and add
-   * an element to the form for each one.
+   * an element to the form for each one as long as it's also in the
+   * $properties_options array.
    */
   foreach ($existing_properties as $property) {
+    if (array_key_exists($property->type_id, $property_options)) {
 
-    $form['properties']['property_table'][$property->type_id]['#type'] = 'markup';
-    $form['properties']['property_table'][$property->type_id]['#value'] = '';
+      $form['properties']['property_table'][$property->type_id]['#type'] = 'markup';
+      $form['properties']['property_table'][$property->type_id]['#value'] = '';
 
-    $form['properties']['property_table'][$property->type_id][$property->rank]['#type'] = 'markup';
-    $form['properties']['property_table'][$property->type_id][$property->rank]['#value'] = '';
+      $form['properties']['property_table'][$property->type_id][$property->rank]['#type'] = 'markup';
+      $form['properties']['property_table'][$property->type_id][$property->rank]['#value'] = '';
 
-    $form['properties']['property_table'][$property->type_id][$property->rank]['prop_type_id'] = array(
-      '#type' => 'hidden',
-      '#value' => $property->type_id
-    );
+      $form['properties']['property_table'][$property->type_id][$property->rank]['prop_type_id'] = array(
+        '#type' => 'hidden',
+        '#value' => $property->type_id
+      );
 
-    $form['properties']['property_table'][$property->type_id][$property->rank]['prop_value'] = array(
-      '#type' => 'hidden',
-      '#value' => $property->value
-    );
+      $form['properties']['property_table'][$property->type_id][$property->rank]['prop_value'] = array(
+        '#type' => 'hidden',
+        '#value' => $property->value
+      );
 
-    $form['properties']['property_table'][$property->type_id][$property->rank]['property_id'] = array(
-      '#type' => 'hidden',
-      '#value' => $property->property_id
-    );
+      $form['properties']['property_table'][$property->type_id][$property->rank]['property_id'] = array(
+        '#type' => 'hidden',
+        '#value' => $property->property_id
+      );
 
-    $form['properties']['property_table'][$property->type_id][$property->rank]['type'] = array(
-      '#type' => 'markup',
-      '#markup' => $property->type_name
-    );
+      $form['properties']['property_table'][$property->type_id][$property->rank]['type'] = array(
+        '#type' => 'markup',
+        '#markup' => $property->type_name
+      );
 
-    $form['properties']['property_table'][$property->type_id][$property->rank]['value'] = array(
-      '#type' => 'markup',
-      '#markup' => $property->value
-    );
+      $form['properties']['property_table'][$property->type_id][$property->rank]['value'] = array(
+        '#type' => 'markup',
+        '#markup' => $property->value
+      );
 
-    $form['properties']['property_table'][$property->type_id][$property->rank]['rank'] = array(
-      '#type' => 'markup',
-      '#markup' => $property->rank
-    );
-    // remove button
-    $form['properties']['property_table'][$property->type_id][$property->rank]['property_action'] = array(
-      '#type' => 'submit',
-      '#value' => t('Remove'),
-      '#name' => "property_remove-".$property->type_id.'-'.$property->rank,
-      '#ajax' => array(
-        'callback' => "chado_node_properties_form_ajax_update",
-        'wrapper' => 'tripal-generic-edit-properties-table',
-        'effect'   => 'fade',
-        'method'   => 'replace',
-        'prevent'  => 'click'
-      ),
-      // When this button is clicked, the form will be validated and submitted.
-      // Therefore, we set custom submit and validate functions to override the
-      // default node form submit.  In the validate function we validate only the
-      // property fields and in the submit we remove the indicated property
-      // from the chado_properties array. In order to keep validate errors
-      // from the node form validate and Drupal required errors for non-property fields
-      // preventing the user from removing properties we set the #limit_validation_errors below
-      '#validate' => array('chado_node_properties_form_remove_button_validate'),
-      '#submit' => array('chado_node_properties_form_remove_button_submit'),
-      // Limit the validation of the form upon clicking this button to the property_table tree
-      // No other fields will be validated (ie: no fields from the main form or any other api
-      // added form).
-      '#limit_validation_errors' => array(
-        array('property_table')  // Validate all fields within $form_state['values']['property_table']
-      )
-    );
+      $form['properties']['property_table'][$property->type_id][$property->rank]['rank'] = array(
+        '#type' => 'markup',
+        '#markup' => $property->rank
+      );
+      // remove button
+      $form['properties']['property_table'][$property->type_id][$property->rank]['property_action'] = array(
+        '#type' => 'submit',
+        '#value' => t('Remove'),
+        '#name' => "property_remove-".$property->type_id.'-'.$property->rank,
+        '#ajax' => array(
+          'callback' => "chado_node_properties_form_ajax_update",
+          'wrapper' => 'tripal-generic-edit-properties-table',
+          'effect'   => 'fade',
+          'method'   => 'replace',
+          'prevent'  => 'click'
+        ),
+        // When this button is clicked, the form will be validated and submitted.
+        // Therefore, we set custom submit and validate functions to override the
+        // default node form submit.  In the validate function we validate only the
+        // property fields and in the submit we remove the indicated property
+        // from the chado_properties array. In order to keep validate errors
+        // from the node form validate and Drupal required errors for non-property fields
+        // preventing the user from removing properties we set the #limit_validation_errors below
+        '#validate' => array('chado_node_properties_form_remove_button_validate'),
+        '#submit' => array('chado_node_properties_form_remove_button_submit'),
+        // Limit the validation of the form upon clicking this button to the property_table tree
+        // No other fields will be validated (ie: no fields from the main form or any other api
+        // added form).
+        '#limit_validation_errors' => array(
+          array('property_table')  // Validate all fields within $form_state['values']['property_table']
+        )
+      );
+    }
   }
 
   // Form elements for adding a new property