kvproperty.inc 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. *
  4. * @param unknown $entity_type
  5. * @param unknown $entity
  6. * @param unknown $field
  7. * @param unknown $instance
  8. * @param unknown $langcode
  9. * @param unknown $items
  10. * @param unknown $display
  11. */
  12. function tripal_fields_kvproperty_formatter(&$element, $entity_type, $entity, $field,
  13. $instance, $langcode, $items, $display) {
  14. foreach ($items as $delta => $item) {
  15. // Do nothing, this field is only meant for the form.
  16. }
  17. }
  18. /**
  19. *
  20. * @param unknown $field_name
  21. * @param unknown $widget
  22. * @param unknown $form
  23. * @param unknown $form_state
  24. * @param unknown $field
  25. * @param unknown $instance
  26. * @param unknown $langcode
  27. * @param unknown $items
  28. * @param unknown $delta
  29. * @param unknown $element
  30. */
  31. function tripal_fields_kvproperty_widget($form, $form_state, $field, $instance, $langcode, $items, $delta, $element) {
  32. $field_name = $field['field_name'];
  33. $widget = array();
  34. $element += array(
  35. '#element_validate' => array('tripal_fields_kvproperty_widget_validate'),
  36. '#type' => 'textfield',
  37. '#delta' => $delta,
  38. );
  39. if ($field['cardinality'] == 1) {
  40. $element['#default_value'] = !empty($items) ? $items[0] : '';
  41. $widget = array($element);
  42. }
  43. else {
  44. foreach ($items as $item) {
  45. $widget[$delta] = $element;
  46. $widget[$delta]['#default_value'] = $item;
  47. $widget[$delta]['#weight'] = $delta;
  48. $delta++;
  49. }
  50. }
  51. // Add one more row if delta is less than the cardinality.
  52. if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED || $delta < $field['cardinality']){
  53. $widget[$delta] = $element;
  54. $widget[$delta]['#default_value'] = '';
  55. $widget[$delta]['#weight'] = $delta;
  56. $widget[$delta]['#required'] = ($element['#required'] && $delta == 0);
  57. }
  58. // The group of elements all-together need some extra functionality
  59. // after building up the full list (like draggable table rows).
  60. $widget['#theme'] = 'field_multiple_value_form';
  61. $widget['#title'] = $element['#title'];
  62. $widget['#description'] = $element['#description'];
  63. $widget['#field_name'] = $element['#field_name'];
  64. $widget['#language'] = $element['#language'];
  65. $widget['#weight'] = isset($element['#weight']) ? $element['#weight'] : 0;
  66. $widget['#cardinality'] = 1;
  67. return $widget;
  68. }
  69. /**
  70. *
  71. * @param unknown $form
  72. * @param unknown $form_state
  73. */
  74. function tripal_fields_kvproperty_widget_form_ajax_callback($form, $form_state) {
  75. $field_name = $form_state['triggering_element']['#parents'][0];
  76. return $form[$field_name];
  77. }
  78. /**
  79. * Callback function for validating the tripal_fields_kvproperty_widget.
  80. */
  81. function tripal_fields_kvproperty_widget_validate($element, &$form_state) {
  82. $field_name = $element['#field_name'];
  83. }
  84. /**
  85. * Callback function for submitting the tripal_fields_kvproperty_widget.
  86. */
  87. function tripal_fields_kvproperty_widget_submit($element, &$form_state) {
  88. }