123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- /**
- * @file
- * Contains all field specific code outside the classes.
- */
- /**
- * Implements hook_bundle_fields_info().
- */
- function tripal_ws_bundle_fields_info($entity_type, $bundle) {
- $fields = array();
- // No fields are added programmatically.
- return $fields;
- }
- /**
- * Implements hook_bundle_instances_info().
- */
- function tripal_ws_bundle_instances_info($entity_type, $bundle) {
- $instances = array();
- // No field instances are added programmatically.
- return $instances;
- }
- /**
- * Implements hook_bundle_create_user_field().
- *
- * A priviledged user has the ability to add new fields to the bundle. The
- * remote__data field is allowed to be added dynamically by the user.
- * But, Drupal doesn't know how to deal with it, so this function is called
- * for any field attached to a TripalEntity bundle type. Any fields whose
- * TripalField::$module argument is set to 'tripal_ws' and that can be
- * added dynamically will result in a call to this function.
- */
- function tripal_ws_bundle_create_user_field($new_field, $bundle) {
- // Get the table this bundle is mapped to.
- $term = tripal_load_term_entity(array('term_id' => $bundle->term_id));
- $vocab = $term->vocab;
- $params = array(
- 'vocabulary' => $vocab->vocabulary,
- 'accession' => $term->accession,
- );
- // We allow site admins to add new chado_linker__prop fields to an entity.
- // This function will allow us to properly add them. But at this point we
- // don't know the controlled vocabulary term. We'll have to use the
- // defaults and let the user set it using the interface.
- if ($new_field['type'] == 'remote__data') {
- $field_name = $new_field['field_name'];
- $field_type = 'remote__data';
- // First add the field.
- field_create_field(array(
- 'field_name' => $field_name,
- 'type' => $field_type,
- 'cardinality' => FIELD_CARDINALITY_UNLIMITED,
- 'locked' => FALSE,
- 'storage' => array(
- 'type' => 'field_tripal_ws_storage',
- ),
- ));
- // Now add the instance
- field_create_instance(array(
- 'field_name' => $field_name,
- 'entity_type' => 'TripalEntity',
- 'bundle' => $bundle->name,
- 'label' => $new_field['label'],
- 'description' => '',
- 'required' => FALSE,
- 'settings' => array(
- 'auto_attach' => FALSE,
- 'term_vocabulary' => '',
- 'term_accession' => '',
- 'term_name' => ''
- ),
- 'widget' => array(
- 'type' => 'remote__data_widget',
- 'settings' => array(
- 'display_label' => 1,
- ),
- ),
- 'display' => array(
- 'default' => array(
- 'label' => 'inline',
- 'type' => 'remote__data_formatter',
- 'settings' => array(),
- ),
- ),
- ));
- }
- }
- /**
- * Implements hook_ws_field_formatter_info_alter()
- *
- * Adds the remote__data field to every formatter so that existing formatters
- * can be used for remote data (provided that remote data is compatible).
- *
- */
- function tripal_ws_field_formatter_info_alter(&$info) {
- foreach ($info as $formatter_type => $details) {
- if (array_key_exists('TripalFieldFormatter', $details)) {
- $info[$formatter_type]['field types'][] = 'remote__data';
- }
- }
- dpm($info);
- }
|