Add area links for some log types.

This commit is contained in:
Michael Stenta 2017-06-26 10:33:44 -04:00
parent ee811350e3
commit 51f5cb906e
7 changed files with 56 additions and 99 deletions

View File

@ -41,23 +41,3 @@ function farm_log_activity_farm_taxonomy_term_view_views($term) {
),
);
}
/**
* Implements hook_farm_area_links().
*/
function farm_log_activity_farm_area_links($id) {
$links = array();
// Add link to activities.
$view = views_get_view('farm_log_activity');
$view->preview('default', array('all', $id));
if ($view->total_rows > 0) {
$links[] = array(
'title' => t('Activities') . ': ' . $view->total_rows,
'href' => 'farm/logs/activities/all/' . $id,
'weight' => -100,
);
}
return $links;
}

View File

@ -41,23 +41,3 @@ function farm_log_input_farm_taxonomy_term_view_views($term) {
),
);
}
/**
* Implements hook_farm_area_links().
*/
function farm_log_input_farm_area_links($id) {
$links = array();
// Add link to inputs.
$view = views_get_view('farm_log_input');
$view->preview('default', array('all', $id));
if ($view->total_rows > 0) {
$links[] = array(
'title' => t('Inputs') . ': ' . $view->total_rows,
'href' => 'farm/logs/inputs/all/' . $id,
'weight' => 10,
);
}
return $links;
}

View File

@ -43,23 +43,3 @@ function farm_log_observation_farm_taxonomy_term_view_views($term) {
),
);
}
/**
* Implements hook_farm_area_links().
*/
function farm_log_observation_farm_area_links($id) {
$links = array();
// Add link to observations.
$view = views_get_view('farm_log_observation');
$view->preview('default', array('all', $id));
if ($view->total_rows > 0) {
$links[] = array(
'title' => t('Observations') . ': ' . $view->total_rows,
'href' => 'farm/logs/observations/all/' . $id,
'weight' => -100,
);
}
return $links;
}

View File

@ -38,22 +38,3 @@ function farm_soil_test_farm_taxonomy_term_view_views($term) {
'farm_log_soil_tests',
);
}
/**
* Implements hook_farm_area_links().
*/
function farm_soil_test_farm_area_links($id) {
$links = array();
// Add link to soil tests.
$view = views_get_view('farm_log_soil_tests');
$view->preview('default', array($id));
if ($view->total_rows > 0) {
$links[] = array(
'title' => t('Soil tests') . ': ' . $view->total_rows,
'href' => 'farm/logs/soil-tests/' . $id,
);
}
return $links;
}

View File

@ -73,7 +73,8 @@ function hook_farm_ui_entities() {
'farm_asset' => 'planting',
// Set 'areas' to TRUE if the log type can be used on areas.
// This will add an action link on area pages.
// This will add an action link on area pages, and will show a link in
// the area details popup.
'areas' => TRUE,
),
),

View File

@ -526,5 +526,59 @@ function farm_ui_farm_area_links($id) {
}
}
// Add area links for some log types.
if (!empty($ui_info['log'])) {
foreach ($ui_info['log'] as $log_type => $info) {
// Only proceed if the log type has 'areas' set to TRUE.
if (empty($info['areas']) || $info['areas'] !== TRUE) {
continue;
}
// If a View is not available, skip it.
if (empty($info['view'])) {
continue;
}
// Log View arguments are a bit more complicated than Asset Views. Most
// logs apply to assets, so have an asset contextual filter first, and an
// area contextual filter second. Some logs do not apply to assets, so
// the first contextual filter is the area ID. The pattern we follow here
// is: if the entity UI info has 'farm_asset' set to 'none', then we
// assume that 'area ID' is the first argument. Otherwise, we assume that
// 'asset ID' is the first, and 'area ID' is the second. In the case of
// area links, we only care about the 'area ID', so we set the 'asset ID'
// argument to 'all'.
if ($info['farm_asset'] == 'none') {
$args = array($id);
}
else {
$args = array('all', $id);
}
// Load the View and generate a preview to count rows.
$view = views_get_view($info['view']);
$view->preview('default', $args);
// If there are no results, skip it.
if (empty($view->total_rows)) {
continue;
}
// Build the View page path with arguments.
$path = farm_ui_view_page_path($info['view']);
foreach ($args as $arg) {
$path .= '/' . $arg;
}
// Build a link.
$links[] = array(
'title' => $info['label_plural'] . ': ' . $view->total_rows,
'href' => $path,
'weight' => 10,
);
}
}
return $links;
}

View File

@ -38,22 +38,3 @@ function farm_water_test_farm_taxonomy_term_view_views($term) {
'farm_water_test',
);
}
/**
* Implements hook_farm_area_links().
*/
function farm_water_test_farm_area_links($id) {
$links = array();
// Add link to water tests.
$view = views_get_view('farm_water_test');
$view->preview('default', array($id));
if ($view->total_rows > 0) {
$links[] = array(
'title' => t('Water tests') . ': ' . $view->total_rows,
'href' => 'farm/logs/water-tests/' . $id,
);
}
return $links;
}