class sep__protocol_widget

@class Purpose:

Data: Assumptions:

Hierarchy

Expanded class hierarchy of sep__protocol_widget

2 string references to 'sep__protocol_widget'
sep__protocol.inc in tripal_chado/includes/TripalFields/sep__protocol/sep__protocol.inc
tripal_chado_bundle_instances_info_custom in tripal_chado/includes/tripal_chado.fields.inc
Helper function for the hook_create_tripalfield_instance().

File

tripal_chado/includes/TripalFields/sep__protocol/sep__protocol_widget.inc, line 10

View source
class sep__protocol_widget extends ChadoFieldWidget {

  // The default label for this field.
  public static $default_label = 'Protocol';

  // The list of field types for which this formatter is appropriate.
  public static $field_types =['sep__protocol'];

  /**
   * Provides the form for editing of this field.
   *
   * This function corresponds to the hook_field_widget_form()
   * function of the Drupal Field API.
   *
   * This form is diplayed when the user creates a new entity or edits an
   * existing entity.  If the field is attached to the entity then the form
   * provided by this function will be displayed.
   *
   * At a minimum, the form must have a 'value' element.  For Tripal, the
   * 'value' element of a field always corresponds to the value that is
   * presented to the end-user either directly on the page (with formatting)
   * or via web services, or some other mechanism.  However, the 'value' is
   * sometimes not enough for a field.  For example, the Tripal Chado module
   * maps fields to table columns and sometimes those columns are foreign keys
   * therefore, the Tripal Chado modules does not just use the 'value' but adds
   * additional elements to help link records via FKs.  But even in this case
   * the 'value' element must always be present in the return form and in such
   * cases it's value should be set equal to that added in the 'load' function.
   *
   * @param $widget
   * @param $form
   *   The form structure where widgets are being attached to. This might be a
   *   full form structure, or a sub-element of a larger form.
   * @param $form_state
   *   An associative array containing the current state of the form.
   * @param $langcode
   *   The language associated with $items.
   * @param $items
   *   Array of default values for this field.
   * @param $delta
   *   The order of this item in the array of subelements (0, 1, 2, etc).
   * @param $element
   * A form element array containing basic properties for the widget:
   *  - #entity_type: The name of the entity the field is attached to.
   *  - #bundle: The name of the field bundle the field is contained in.
   *  - #field_name: The name of the field.
   *  - #language: The language the field is being edited in.
   *  - #field_parents: The 'parents' space for the field in the form. Most
   *    widgets can simply overlook this property. This identifies the location
   *    where the field values are placed within $form_state['values'], and is
   *    used to access processing information for the field through the
   *    field_form_get_state() and field_form_set_state() functions.
   *  - #columns: A list of field storage columns of the field.
   *  - #title: The sanitized element label for the field instance, ready for
   *    output.
   *  - #description: The sanitized element description for the field instance,
   *    ready for output.
   *  - #required: A Boolean indicating whether the element value is required;
   *    for required multiple value fields, only the first widget's values are
   *    required.
   *  - #delta: The order of this item in the array of subelements; see
   *    $delta above
   */
  public function form(&$widget, &$form, &$form_state, $langcode, $items, $delta, $element) {
    parent::form($widget, $form, $form_state, $langcode, $items, $delta, $element);


    $settings = $this->field['settings'];
    $field_name = $this->field['field_name'];
    $field_type = $this->field['type'];
    $field_table = $this->instance['settings']['chado_table'];
    $field_column = $this->instance['settings']['chado_column'];
    $linker_field = 'chado-' . $field_table . '__protocol_id';

    $protocols =[];
    //options are all protocols
    //It could be argued that options should only be protocols where protocol_type matches the bundle base table.

    $sql = "SELECT * FROM {protocol}";
    $results = chado_query($sql);
    foreach ($results as $protocol) {
      $protocols[$protocol->protocol_id] = $protocol->name;
    }

    $widget['value'] =[
    '#type' 'select'
      '#title' $element['#title']
      '#description' $element['#description']
      '#options' $protocols
      '#empty_option' '- Select a Protocol -'
      '#required' $element['#required']
      '#weight' isset($element['#weight']) ? $element['#weight'] : 0
      '#delta' $delta
      ];

  }

  /**
   * Performs validation of the widgetForm.
   *
   * Use this validate to ensure that form values are entered correctly.
   * The 'value' key of this field must be set in the $form_state['values']
   * array anytime data is entered by the user.  It may be the case that there
   * are other fields for helping select a value. In the end those helper
   * fields must be used to set the 'value' field.
   */
  public function validate($element, $form, &$form_state, $langcode, $delta) {

  }

  /**
   * Performs extra commands when the entity form is submitted.
   *
   * Drupal typically does not provide a submit hook for fields.  The
   * TripalField provides one to allow for behind-the-scenes actions to
   * occur.   This function should never be used for updates, deletes or
   * inserts for the Chado table associated with the field.  Rather, the
   * storage backend should be allowed to handle inserts, updates deletes.
   * However, it is permissible to perform inserts, updates or deletions within
   * Chado using this function.  Those operations can be performed if needed but
   * on other tables not directly associated with the field.
   *
   * An example is the chado.feature_synonym table.  The chado_linker__synonym
   * field allows the user to provide a brand new synonynm and it must add it
   * to the chado.synonym table prior to the record in the
   * chado.feature_synonym table.  This insert occurs in the widgetFormSubmit
   * function.
   *
   * @param $form
   *    The submitted form array.
   * @param $form_state .
   *    The form state array.
   * @param $entity_type
   *    The type of $entity.
   * @param $entity
   *    The entity for the operation.
   * @param $langcode
   *    The language associated with $items.
   * @param $delta
   */
  public function submit($form, &$form_state, $entity_type, $entity, $langcode, $delta) {
  }

}

Members

Contains filters are case sensitive
Namesort descending Modifiers Type Description
sep__protocol_widget::$default_label public static property Overrides TripalFieldWidget::$default_label
sep__protocol_widget::$field_types public static property Overrides TripalFieldWidget::$field_types
sep__protocol_widget::form public function Provides the form for editing of this field. Overrides TripalFieldWidget::form
sep__protocol_widget::submit public function Performs extra commands when the entity form is submitted. Overrides TripalFieldWidget::submit
sep__protocol_widget::validate public function Performs validation of the widgetForm. Overrides TripalFieldWidget::validate
TripalFieldWidget::info public static function Provides information about the widgets provided by this field.
TripalFieldWidget::theme public function The theme function for the widget.
TripalFieldWidget::__construct public function Instantiates a new TripalFieldWidget object.