|
@@ -320,7 +320,7 @@ class remote__data extends WebServicesField {
|
|
|
->execute()->fetchAll();
|
|
|
|
|
|
foreach ($sites as $site) {
|
|
|
- $rows[$site->id] =$site->name;
|
|
|
+ $rows[$site->id] = $site->name;
|
|
|
}
|
|
|
|
|
|
$element['data_info']['remote_site'] = array(
|
|
@@ -333,43 +333,44 @@ class remote__data extends WebServicesField {
|
|
|
$element['data_info']['query'] = array(
|
|
|
'#type' => 'textarea',
|
|
|
'#title' => 'Query to Execute',
|
|
|
- '#description' => 'Enter the query that will retreive the remote records. ' .
|
|
|
- 'If the full URL to the content web service is ' .
|
|
|
- 'https://[tripal_site]/web-services/content/v0.1/. Then this field should ' .
|
|
|
- 'contain the text immediately after the content/v0.1 portion of the URL. ' .
|
|
|
- 'For information about building web services queries see the ' .
|
|
|
- 'online documentation at ' . l('The Tripal v3 User\'s Guide', 'http://tripal.info/tutorials/v3.x/web-services') . '. ' .
|
|
|
- 'For example, suppose this field is attached to an ' .
|
|
|
- 'Organism content type on the local site, and you want to retrieve a ' .
|
|
|
- 'field for the same organism on a remote Tripal site then you will ' .
|
|
|
- 'want to query on the genus and species. Also, you want the genus and ' .
|
|
|
- 'species to match the organism that this field is attached to. You can ' .
|
|
|
- 'use tokens to do this (see the "Available Tokesn" fieldset below). ' .
|
|
|
- 'For this example, the query text should be ' .
|
|
|
- 'Organism?genus=[taxrank__genus]&species=[taxrank__species].',
|
|
|
+ '#description' => 'Enter the query that will retreive the remote records. ',
|
|
|
'#default_value' => $this->instance['settings']['data_info']['query'],
|
|
|
- '#rows' => 5,
|
|
|
- '#required' => TRUE
|
|
|
- );
|
|
|
- $element['data_info']['rd_field_name'] = array(
|
|
|
- '#type' => 'textfield',
|
|
|
- '#title' => 'Field to Display',
|
|
|
- '#description' => 'The results returned by the query should match
|
|
|
- entities (or records) from the selected remote site. That entity
|
|
|
- will have multiple fields. Only one remote field can be shown by
|
|
|
- this field. Please enter the name of the field you would like
|
|
|
- to display. Some fields have "subfields". You can display a subfield
|
|
|
- rather than the entire field by entering a comma-separated sequence
|
|
|
- of subfields. For example, for relationships, you may only want to
|
|
|
- show the "clause", therefore, the entry here would be: realtionship,clause.',
|
|
|
- '#default_value' => $this->instance['settings']['data_info']['rd_field_name'],
|
|
|
+ '#rows' => 3,
|
|
|
'#required' => TRUE
|
|
|
);
|
|
|
+ $element['data_info']['query_instructions'] = [
|
|
|
+ '#type' => 'fieldset',
|
|
|
+ '#title' => 'Query to Execute Instructions',
|
|
|
+ '#description' => 'If the full URL to the remote tripal content web '.
|
|
|
+ 'service is "https://[tripal_site]/web-services/content/v0.1/". Then '.
|
|
|
+ 'this field should contain the text immediately after the '.
|
|
|
+ '"content/v0.1" portion of the URL. For information about building '.
|
|
|
+ 'web services queries see the online documentation at '.
|
|
|
+ l('The Tripal v3 User\'s Guide', 'http://tripal.info/tutorials/v3.x/web-services').
|
|
|
+ '. For example, suppose this field is attached to an Organism content '.
|
|
|
+ 'type on the local site, and you want to retrieve a field for the '.
|
|
|
+ 'same organism on a remote Tripal site. To retrieve the matching '.
|
|
|
+ 'record, you will want to query on the genus and species, since it '.
|
|
|
+ 'is unique and, you want them to match the organism for each specific '.
|
|
|
+ 'local organism page. You can use tokens to do this (see the '.
|
|
|
+ '"Available Tokens" fieldset below). For this example, the full '.
|
|
|
+ 'remote web service endpoint would be '.
|
|
|
+ '"https://[tripal_site]/web-services/content/v0.1/Organism" '.
|
|
|
+ 'and the query text should be '.
|
|
|
+ '"Organism?genus=[taxrank__genus]&species=[taxrank__species]".',
|
|
|
+ '#collapsible' => TRUE,
|
|
|
+ '#collapsed' => TRUE
|
|
|
+ ];
|
|
|
+ $element['data_info']['query_instructions']['instructions'] = [
|
|
|
+ '#type' => 'markup',
|
|
|
+ '#markup' => '',
|
|
|
+ ];
|
|
|
+
|
|
|
$element['data_info']['token_display']['tokens'] = array(
|
|
|
'#type' => 'hidden',
|
|
|
'#value' => serialize($tokens)
|
|
|
);
|
|
|
-
|
|
|
+
|
|
|
$element['data_info']['token_display'] = array(
|
|
|
'#type' => 'fieldset',
|
|
|
'#title' => 'Available Tokens',
|
|
@@ -377,11 +378,57 @@ class remote__data extends WebServicesField {
|
|
|
'#collapsible' => TRUE,
|
|
|
'#collapsed' => TRUE
|
|
|
);
|
|
|
-
|
|
|
+
|
|
|
$element['data_info']['token_display']['content'] = array(
|
|
|
'#type' => 'item',
|
|
|
'#markup' => theme_token_list($tokens),
|
|
|
);
|
|
|
+
|
|
|
+ $element['data_info']['rd_field_name'] = array(
|
|
|
+ '#type' => 'textfield',
|
|
|
+ '#title' => 'Field to Display',
|
|
|
+ '#description' => 'Enter the key from the results returned by the "Query to Execute" that should be displayed. See the example below for more details.',
|
|
|
+ '#default_value' => $this->instance['settings']['data_info']['rd_field_name'],
|
|
|
+ '#required' => TRUE
|
|
|
+ );
|
|
|
+
|
|
|
+ $element['data_info']['rd_field_name_instructions'] = [
|
|
|
+ '#type' => 'fieldset',
|
|
|
+ '#title' => 'Field to Display Instructions',
|
|
|
+ '#description' => '',
|
|
|
+ '#collapsible' => TRUE,
|
|
|
+ '#collapsed' => TRUE
|
|
|
+ ];
|
|
|
+ $element['data_info']['rd_field_name_instructions']['insructions'] = [
|
|
|
+ '#type' => 'markup',
|
|
|
+ '#markup' => 'The query from a Tripal web service response is always
|
|
|
+ in JSON array arranged in key/value pairs. The key is the name of a
|
|
|
+ controlled vocabulary term.
|
|
|
+ <br><br>Suppose you want to query details about an organism.
|
|
|
+ Consider the following JSON result
|
|
|
+ <pre style="height: 200px; overflow: auto;">
|
|
|
+ "@type": "organism",
|
|
|
+ "label": "Anopheles gambiae",
|
|
|
+ "ItemPage": "http://demo.tripal.info/3.x/bio_data/642",
|
|
|
+ "type": "Organism",
|
|
|
+ "abbreviation": "A.gambiae",
|
|
|
+ "genus": "Anopheles",
|
|
|
+ "species": "gambiae",
|
|
|
+ "common_name": "mosquito",
|
|
|
+ "database_cross_reference": "http://demo.tripal.info/3.x/web-services/content/v0.1/Organism/642/database+cross+reference",
|
|
|
+ "equivalent_name": "Anopheles gambiae sensu stricto",
|
|
|
+ "division": "Invertebrates",
|
|
|
+ "mitochondrial_genetic_code_name": "Invertebrate Mitochondrial",
|
|
|
+ "synonym": "Anopheles gambiae S",
|
|
|
+ "genetic_code": "1",
|
|
|
+ "lineage": "cellular organisms; Eukaryota; Opisthokonta; Metazoa; Eumetazoa; Bilateria; Protostomia; Ecdysozoa; Panarthropoda; Arthropoda; Mandibulata; Pancrustacea; Hexapoda; Insecta; Dicondylia; Pterygota; Neoptera; Holometabola; Diptera; Nematocera; Culicomorpha; Culicoidea; Culicidae; Anophelinae; Anopheles; Cellia; Pyretophorus; gambiae species complex",
|
|
|
+ "genetic_code_name": "Standard",
|
|
|
+ "genbank_common_name": "African malaria mosquito"
|
|
|
+ </pre>
|
|
|
+ To display the "common_name" from the JSON above you would enter the word
|
|
|
+ "common_name" in the Field to Display textbox.
|
|
|
+ ',
|
|
|
+ ];
|
|
|
|
|
|
$element['data_info']['description'] = array(
|
|
|
'#type' => 'textarea',
|