Skip to content

Commit

Permalink
Issue #3046929: Arbitrary data field on assets and logs
Browse files Browse the repository at this point in the history
  • Loading branch information
mstenta committed Apr 9, 2019
2 parents 97e5022 + 32c9ad9 commit e5de64d
Show file tree
Hide file tree
Showing 15 changed files with 218 additions and 11 deletions.
2 changes: 1 addition & 1 deletion modules/farm/farm_equipment/farm_equipment.features.inc
Expand Up @@ -46,7 +46,7 @@ function farm_equipment_default_log_type() {
"type" : "farm_maintenance",
"label" : "Maintenance",
"weight" : 0,
"name_pattern" : "Maintenance: [log:field-farm-asset]",
"name_pattern" : "Maintenance [log:timestamp:short] [log:field-farm-asset]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand Down
19 changes: 19 additions & 0 deletions modules/farm/farm_fields/farm_fields.features.field_base.inc
Expand Up @@ -43,6 +43,25 @@ function farm_fields_field_default_field_bases() {
'type' => 'entityreference',
);

// Exported field_base: 'field_farm_data'.
$field_bases['field_farm_data'] = array(
'active' => 1,
'cardinality' => 1,
'deleted' => 0,
'entity_types' => array(),
'field_name' => 'field_farm_data',
'indexes' => array(
'format' => array(
0 => 'format',
),
),
'locked' => 0,
'module' => 'text',
'settings' => array(),
'translatable' => 0,
'type' => 'text_long',
);

// Exported field_base: 'field_farm_date'.
$field_bases['field_farm_date'] = array(
'active' => 1,
Expand Down
66 changes: 66 additions & 0 deletions modules/farm/farm_fields/farm_fields.features.field_instance.inc
@@ -0,0 +1,66 @@
<?php
/**
* @file
* farm_fields.features.field_instance.inc
*/

/**
* Implements hook_field_default_field_instances().
*/
function farm_fields_field_default_field_instances() {
$field_instances = array();

// Get a list of log types.
$log_types = log_types();

// Get a list of asset types.
$asset_types = farm_asset_types();

// Iterate through the log and asset types to build an array of entity types
// and bundles.
$entity_types = array();
foreach ($log_types as $bundle => $info) {
$entity_types['log'][] = $bundle;
}
foreach ($asset_types as $bundle => $info) {
$entity_types['farm_asset'][] = $bundle;
}

// Add a data field to each bundle.
foreach ($entity_types as $entity_type => $bundles) {
foreach ($bundles as $bundle) {
$field_instances['log-' . $bundle . '-field_farm_data'] = array(
'bundle' => $bundle,
'default_value' => NULL,
'deleted' => 0,
'description' => t('The data field can be used to store arbitrary data on the log.'),
'display' => array(
'default' => array(
'label' => 'above',
'type' => 'hidden',
'weight' => 0,
),
),
'entity_type' => $entity_type,
'field_name' => 'field_farm_data',
'label' => t('Data'),
'required' => 0,
'settings' => array(
'text_processing' => 0,
'user_register_form' => FALSE,
),
'widget' => array(
'active' => 1,
'module' => 'text',
'settings' => array(
'rows' => 5,
),
'type' => 'text_textarea',
'weight' => 0,
),
);
}
}

return $field_instances;
}
1 change: 1 addition & 0 deletions modules/farm/farm_fields/farm_fields.info
Expand Up @@ -18,6 +18,7 @@ dependencies[] = text
features[ctools][] = strongarm:strongarm:1
features[features_api][] = api:2
features[field_base][] = field_farm_asset
features[field_base][] = field_farm_data
features[field_base][] = field_farm_date
features[field_base][] = field_farm_date_range
features[field_base][] = field_farm_description
Expand Down
99 changes: 99 additions & 0 deletions modules/farm/farm_fields/farm_fields.install
@@ -0,0 +1,99 @@
<?php
/**
* @file
* Farm fields install file.
*/

/**
* Add data field to logs.
*/
function farm_fields_update_7000(&$sandbox) {

// Load field types.
$field_types = field_info_fields();

// Create the data field base, if it doesn't already exist.
if (empty($field_types['field_farm_data'])) {
$field_base = array(
'active' => 1,
'cardinality' => 1,
'deleted' => 0,
'entity_types' => array(),
'field_name' => 'field_farm_data',
'indexes' => array(
'format' => array(
0 => 'format',
),
),
'locked' => 0,
'module' => 'text',
'settings' => array(),
'translatable' => 0,
'type' => 'text_long',
);
field_create_field($field_base);
}

// Load field instances.
$field_instances = field_info_instances();

// Get a list of log types.
$log_types = log_types();

// Get a list of asset types.
$asset_types = farm_asset_types();

// Iterate through the log and asset types to build an array of entity types
// and bundles.
$entity_types = array();
foreach ($log_types as $bundle => $info) {
$entity_types['log'][] = $bundle;
}
foreach ($asset_types as $bundle => $info) {
$entity_types['farm_asset'][] = $bundle;
}

// Add a data field to each bundle.
foreach ($entity_types as $entity_type => $bundles) {
foreach ($bundles as $bundle) {

// If the instance already exists, skip it.
if (!empty($field_instances[$entity_type][$bundle]['field_farm_data'])) {
continue;
}

// Create the field instance.
$field_instance = array(
'bundle' => $bundle,
'default_value' => NULL,
'deleted' => 0,
'description' => t('The data field can be used to store arbitrary data on the log.'),
'display' => array(
'default' => array(
'label' => 'above',
'type' => 'hidden',
'weight' => 0,
),
),
'entity_type' => $entity_type,
'field_name' => 'field_farm_data',
'label' => t('Data'),
'required' => 0,
'settings' => array(
'text_processing' => 0,
'user_register_form' => FALSE,
),
'widget' => array(
'active' => 1,
'module' => 'text',
'settings' => array(
'rows' => 5,
),
'type' => 'text_textarea',
'weight' => 0,
),
);
field_create_instance($field_instance);
}
}
}
22 changes: 22 additions & 0 deletions modules/farm/farm_fields/farm_fields.module
Expand Up @@ -32,6 +32,28 @@ function farm_fields_farm_access_perms($role) {
return $perms;
}

/**
* Implements hook_form_FORM_ID_alter().
*/
function farm_fields_form_log_form_alter(&$form, &$form_state, $form_id) {

// Hide the data field in log forms.
if (!empty($form['field_farm_data'])) {
$form['field_farm_data']['#access'] = FALSE;
}
}

/**
* Implements hook_form_FORM_ID_alter().
*/
function farm_fields_form_farm_asset_form_alter(&$form, &$form_state, $form_id) {

// Hide the data field in asset forms.
if (!empty($form['field_farm_data'])) {
$form['field_farm_data']['#access'] = FALSE;
}
}

/**
* Implements hook_field_default_field_instances_alter().
*/
Expand Down
4 changes: 2 additions & 2 deletions modules/farm/farm_ledger/farm_ledger.features.inc
Expand Up @@ -29,7 +29,7 @@ function farm_ledger_default_log_type() {
"type" : "farm_purchase",
"label" : "Purchase",
"weight" : 0,
"name_pattern" : "[log:field-farm-asset] [log:field-farm-invoice-number]",
"name_pattern" : "Purchase [log:timestamp:short] [log:field-farm-asset] [log:field-farm-invoice-number]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand All @@ -38,7 +38,7 @@ function farm_ledger_default_log_type() {
"type" : "farm_sale",
"label" : "Sale",
"weight" : 0,
"name_pattern" : "[log:field-farm-customer] [log:field-farm-invoice-number] [log:field-farm-asset]",
"name_pattern" : "Sale [log:timestamp:short] [log:field-farm-customer] [log:field-farm-invoice-number] [log:field-farm-asset]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand Down
2 changes: 1 addition & 1 deletion modules/farm/farm_livestock/farm_livestock.features.inc
Expand Up @@ -56,7 +56,7 @@ function farm_livestock_default_log_type() {
"type" : "farm_medical",
"label" : "Medical",
"weight" : 0,
"name_pattern" : "Medical: [log:field-farm-asset] [log:timestamp:short]",
"name_pattern" : "Medical [log:timestamp:short] [log:field-farm-asset]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand Down
Expand Up @@ -29,7 +29,7 @@ function farm_log_activity_default_log_type() {
"type" : "farm_activity",
"label" : "Activity",
"weight" : 0,
"name_pattern" : "Activity: [log:field-farm-asset] [log:field-farm-area]",
"name_pattern" : "Activity [log:timestamp:short] [log:field-farm-asset] [log:field-farm-area]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand Down
Expand Up @@ -29,7 +29,7 @@ function farm_log_harvest_default_log_type() {
"type" : "farm_harvest",
"label" : "Harvest",
"weight" : 0,
"name_pattern" : "Harvest [log:field-farm-asset]",
"name_pattern" : "Harvest [log:timestamp:short] [log:field-farm-asset]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand Down
Expand Up @@ -32,7 +32,7 @@ function farm_log_input_default_log_type() {
"type" : "farm_input",
"label" : "Input",
"weight" : 0,
"name_pattern" : "Input: [log:field-farm-material] [log:field-farm-area] [log:field-farm-asset]",
"name_pattern" : "Input [log:timestamp:short] [log:field-farm-material] [log:field-farm-area] [log:field-farm-asset]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand Down
Expand Up @@ -29,7 +29,7 @@ function farm_log_observation_default_log_type() {
"type" : "farm_observation",
"label" : "Observation",
"weight" : 0,
"name_pattern" : "Observation: [log:field-farm-asset] [log:field-farm-area] [log:timestamp:short]",
"name_pattern" : "Observation [log:timestamp:short] [log:field-farm-asset] [log:field-farm-area]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand Down
2 changes: 1 addition & 1 deletion modules/farm/farm_sensor/farm_sensor.views_default.inc
Expand Up @@ -370,8 +370,8 @@ function farm_sensor_views_default_views() {
$handler->display->display_options['style_options']['keep_html'] = 0;
$handler->display->display_options['path'] = 'farm/assets/sensors/csv';
$handler->display->display_options['displays'] = array(
'default' => 'default',
'page' => 'page',
'default' => 0,
);
$translatables['farm_sensors'] = array(
t('Master'),
Expand Down
Expand Up @@ -29,7 +29,7 @@ function farm_soil_test_default_log_type() {
"type" : "farm_soil_test",
"label" : "Soil Test",
"weight" : 0,
"name_pattern" : "Soil test: [log:field-farm-area]",
"name_pattern" : "Soil test [log:timestamp:short] [log:field-farm-area]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand Down
Expand Up @@ -29,7 +29,7 @@ function farm_water_test_default_log_type() {
"type" : "farm_water_test",
"label" : "Water Test",
"weight" : 0,
"name_pattern" : "Water test: [log:field-farm-area]",
"name_pattern" : "Water test [log:timestamp:short] [log:field-farm-area]",
"name_edit" : "1",
"done" : "1",
"rdf_mapping" : []
Expand Down

0 comments on commit e5de64d

Please sign in to comment.