|  | @@ -527,13 +527,11 @@ function tripal_ws_services_v0_1_get_content_add_fields($entity, $bundle, $api_u
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // Get information about the fields attached to this bundle and sort them
 | 
	
		
			
				|  |  |    // in the order they were set for the display.
 | 
	
		
			
				|  |  | -  // TODO: should we allow for custom ordering of fields for web services
 | 
	
		
			
				|  |  | -  // or use the default display ordering?
 | 
	
		
			
				|  |  |    $instances = field_info_instances('TripalEntity', $bundle->name);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    uasort($instances, function($a, $b) {
 | 
	
		
			
				|  |  | -    $a_weight = (is_array($a) && isset($a['display']['default']['weight'])) ? $a['display']['default']['weight'] : 0;
 | 
	
		
			
				|  |  | -    $b_weight = (is_array($b) && isset($b['display']['default']['weight'])) ? $b['display']['default']['weight'] : 0;
 | 
	
		
			
				|  |  | +    $a_weight = (is_array($a) && isset($a['widget']['weight'])) ? $a['widget']['weight'] : 0;
 | 
	
		
			
				|  |  | +    $b_weight = (is_array($b) && isset($b['widget']['weight'])) ? $b['widget']['weight'] : 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if ($a_weight == $b_weight) {
 | 
	
		
			
				|  |  |        return 0;
 | 
	
	
		
			
				|  | @@ -563,27 +561,25 @@ function tripal_ws_services_v0_1_get_content_add_fields($entity, $bundle, $api_u
 | 
	
		
			
				|  |  |      // term from the vocabulary that the field is assigned. But in the
 | 
	
		
			
				|  |  |      // case that the field is not assigned a term, we must use the field name.
 | 
	
		
			
				|  |  |      $field_name = $instance['field_name'];
 | 
	
		
			
				|  |  | -    $field_settings = $field['settings'];
 | 
	
		
			
				|  |  | -    $key = $field_name;
 | 
	
		
			
				|  |  | -    $key_adj = strtolower(preg_replace('/ /', '_', $key));
 | 
	
		
			
				|  |  | -    if (array_key_exists('semantic_web', $field_settings) and $field_settings['semantic_web']) {
 | 
	
		
			
				|  |  | -      list($vocabulary, $accession) = explode(':', $field_settings['semantic_web']);
 | 
	
		
			
				|  |  | -      $term = tripal_get_term_details($vocabulary, $accession);
 | 
	
		
			
				|  |  | -      if ($term) {
 | 
	
		
			
				|  |  | -        $key = $term['name'];
 | 
	
		
			
				|  |  | -        $key_adj = strtolower(preg_replace('/ /', '_', $key));
 | 
	
		
			
				|  |  | -        $response['@context'][$key_adj] = array(
 | 
	
		
			
				|  |  | -          '@id' => $term['url'],
 | 
	
		
			
				|  |  | -        );
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | +    $vocabulary = $instance['settings']['term_vocabulary'];
 | 
	
		
			
				|  |  | +    $accession = $instance['settings']['term_accession'];
 | 
	
		
			
				|  |  | +    $term = tripal_get_term_details($vocabulary, $accession);
 | 
	
		
			
				|  |  | +    $term = tripal_get_term_details($vocabulary, $accession);
 | 
	
		
			
				|  |  | +    if ($term) {
 | 
	
		
			
				|  |  | +      $key = $term['name'];
 | 
	
		
			
				|  |  | +      $key_adj = strtolower(preg_replace('/ /', '_', $key));
 | 
	
		
			
				|  |  | +      $response['@context'][$key_adj] = $term['url'];
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // If this field should not be attached by default then just add a link
 | 
	
		
			
				|  |  |      // so that the caller can get the information separately.
 | 
	
		
			
				|  |  |      $instance_settings = $instance['settings'];
 | 
	
		
			
				|  |  | -    if (array_key_exists('auto_attach', $instance_settings) and
 | 
	
		
			
				|  |  | +    if (array_key_exists('auto_attach', $instance['settings']) and
 | 
	
		
			
				|  |  |          $instance_settings['auto_attach'] != TRUE) {
 | 
	
		
			
				|  |  | -      $response['@context'][$key_adj]['@type'] = '@id';
 | 
	
		
			
				|  |  | +      $response['@context'][$key_adj] = array(
 | 
	
		
			
				|  |  | +        '@id' => $response['@context'][$key_adj],
 | 
	
		
			
				|  |  | +        '@type' => '@id'
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  |        $response[$key_adj] = url($api_url . '/content/' . $ctype . '/' . $entity->id . '/' . urlencode($key), array('absolute' => TRUE));
 | 
	
		
			
				|  |  |        continue;
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -593,8 +589,8 @@ function tripal_ws_services_v0_1_get_content_add_fields($entity, $bundle, $api_u
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // Lastly, add in the terms used into the @context section.
 | 
	
		
			
				|  |  | -  $response['@context']['label'] = 'rdfs:label';
 | 
	
		
			
				|  |  | -  $response['@context']['itemPage'] = 'schema:itemPage';
 | 
	
		
			
				|  |  | +  $response['@context']['label'] = 'https://www.w3.org/TR/rdf-schema/#ch_label';
 | 
	
		
			
				|  |  | +  $response['@context']['itemPage'] = 'https://schema.org/ItemPage';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    //   $response['operation'][] = array(
 | 
	
		
			
				|  |  |    //     '@type' => 'hydra:DeleteResourceOperation',
 | 
	
	
		
			
				|  | @@ -655,7 +651,7 @@ function tripal_ws_services_v0_1_get_content($api_url, &$response, $ws_path, $ct
 | 
	
		
			
				|  |  |    $response['@context']['hydra'] = 'http://www.w3.org/ns/hydra/core#';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // If we have an argument in the 4th element (3rd index) then the user
 | 
	
		
			
				|  |  | -  // is requesting to epxand the details of a field that was not
 | 
	
		
			
				|  |  | +  // is requesting to expand the details of a field that was not
 | 
	
		
			
				|  |  |    // initially attached to the enity.
 | 
	
		
			
				|  |  |    $field_arg = '';
 | 
	
		
			
				|  |  |    if (array_key_exists(3, $ws_path)) {
 | 
	
	
		
			
				|  | @@ -781,7 +777,7 @@ function tripal_ws_services_v0_1_get_content_add_field($key, $entity, $field, $i
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // Recurse through the values array and set the entity elemtns
 | 
	
		
			
				|  |  | +    // Recurse through the values array and set the entity elemetns
 | 
	
		
			
				|  |  |      // and add the fields to the context.
 | 
	
		
			
				|  |  |      tripal_ws_services_v0_1_get_content_add_field_context($items[$i], $response, $api_url);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -813,13 +809,13 @@ function tripal_ws_services_v0_1_get_content_add_field($key, $entity, $field, $i
 | 
	
		
			
				|  |  |    // If we have more than one value then set the response to be a collection.
 | 
	
		
			
				|  |  |    if (count($values) > 1) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // If this is the field page then the Collection is added directly to the
 | 
	
		
			
				|  |  | +    // If this is the field page then the Collection is added directly to the
 | 
	
		
			
				|  |  |      // response, otherwise, it's added under the field $key.
 | 
	
		
			
				|  |  |      if ($is_field_page) {
 | 
	
		
			
				|  |  | -    $response['@type'] = 'Collection';
 | 
	
		
			
				|  |  | -        $response['totalItems'] = count($values);
 | 
	
		
			
				|  |  | -        $response['label'] = $instance['label'];
 | 
	
		
			
				|  |  | -        $response['member'] = $values;
 | 
	
		
			
				|  |  | +      $response['@type'] = 'Collection';
 | 
	
		
			
				|  |  | +      $response['totalItems'] = count($values);
 | 
	
		
			
				|  |  | +      $response['label'] = $instance['label'];
 | 
	
		
			
				|  |  | +      $response['member'] = $values;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      else {
 | 
	
		
			
				|  |  |        $response[$key] = array(
 |