Issue #2906829: Farm Calendar

This commit is contained in:
Michael Stenta 2017-11-24 21:04:36 -05:00
commit 1b88531f1d
13 changed files with 503 additions and 2 deletions

View File

@ -10,6 +10,11 @@ projects[bootstrap_tour][version] = "2.5"
; Patch to fix secondary tours not running after you end the first one.
projects[bootstrap_tour][patch][] = "http://www.drupal.org/files/issues/add_unique_tour_name_to_avoid_local_storage_collisions-2533524-9.patch"
projects[calendar][subdir] = "contrib"
projects[calendar][version] = "3.5"
; Patch to fix Issue #2160183: Undefined index: groupby_times
projects[calendar][patch][] = "http://www.drupal.org/files/issues/calendar-2160183-18.patch"
projects[colorbox][subdir] = "contrib"
projects[colorbox][version] = "2.13"

View File

@ -41,6 +41,7 @@ dependencies[] = restws
; Farm
dependencies[] = farm_access
dependencies[] = farm_calendar
dependencies[] = farm_dashboard
dependencies[] = farm_help
dependencies[] = farm_import

View File

@ -663,6 +663,13 @@ function farm_update_7033(&$sandbox) {
_farm_update_enable_modules(array('farm_group'));
}
/**
* Enable new Farm Calendar module.
*/
function farm_update_7034(&$sandbox) {
_farm_update_enable_modules(array('farm_calendar'));
}
/**
* Update helper function: enable modules.
*/

View File

@ -0,0 +1,12 @@
<?php
/**
* @file
* farm_calendar.features.inc
*/
/**
* Implements hook_views_api().
*/
function farm_calendar_views_api($module = NULL, $api = NULL) {
return array("api" => "3.0");
}

View File

@ -0,0 +1,11 @@
name = Farm Calendar
description = Provides a calendar view of farmOS logs.
core = 7.x
package = farmOS
dependencies[] = calendar
dependencies[] = ctools
dependencies[] = date_views
dependencies[] = views
features[ctools][] = views:views_default:3.0
features[features_api][] = api:2
features[views_view][] = farm_calendar

View File

@ -0,0 +1,7 @@
<?php
/**
* @file
* Code for the Farm Calendar feature.
*/
include_once 'farm_calendar.features.inc';

View File

@ -0,0 +1,331 @@
<?php
/**
* @file
* farm_calendar.views_default.inc
*/
/**
* Implements hook_views_default_views().
*/
function farm_calendar_views_default_views() {
$export = array();
$view = new view();
$view->name = 'farm_calendar';
$view->description = '';
$view->tag = 'Calendar';
$view->base_table = 'log';
$view->human_name = 'Farm Calendar';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['link_display'] = 'page_1';
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['access']['perm'] = 'view all logs';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['reset_button'] = TRUE;
$handler->display->display_options['pager']['type'] = 'date_views_pager';
$handler->display->display_options['pager']['options']['date_id'] = 'month';
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['name_size'] = '3';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '1';
$handler->display->display_options['style_options']['theme_style'] = '1';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['row_plugin'] = 'calendar_entity';
/* Relationship: Entity Reference: Referenced Entity */
$handler->display->display_options['relationships']['field_farm_log_owner_target_id']['id'] = 'field_farm_log_owner_target_id';
$handler->display->display_options['relationships']['field_farm_log_owner_target_id']['table'] = 'field_data_field_farm_log_owner';
$handler->display->display_options['relationships']['field_farm_log_owner_target_id']['field'] = 'field_farm_log_owner_target_id';
/* Field: Log: Log ID */
$handler->display->display_options['fields']['id']['id'] = 'id';
$handler->display->display_options['fields']['id']['table'] = 'log';
$handler->display->display_options['fields']['id']['field'] = 'id';
$handler->display->display_options['fields']['id']['label'] = '';
$handler->display->display_options['fields']['id']['exclude'] = TRUE;
$handler->display->display_options['fields']['id']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['id']['separator'] = '';
/* Field: Log: Timestamp */
$handler->display->display_options['fields']['timestamp']['id'] = 'timestamp';
$handler->display->display_options['fields']['timestamp']['table'] = 'log';
$handler->display->display_options['fields']['timestamp']['field'] = 'timestamp';
$handler->display->display_options['fields']['timestamp']['label'] = '';
$handler->display->display_options['fields']['timestamp']['exclude'] = TRUE;
$handler->display->display_options['fields']['timestamp']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['timestamp']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['timestamp']['date_format'] = 'long';
$handler->display->display_options['fields']['timestamp']['second_date_format'] = 'long';
/* Field: Log: Assets */
$handler->display->display_options['fields']['field_farm_asset']['id'] = 'field_farm_asset';
$handler->display->display_options['fields']['field_farm_asset']['table'] = 'field_data_field_farm_asset';
$handler->display->display_options['fields']['field_farm_asset']['field'] = 'field_farm_asset';
$handler->display->display_options['fields']['field_farm_asset']['exclude'] = TRUE;
$handler->display->display_options['fields']['field_farm_asset']['settings'] = array(
'bypass_access' => 0,
'link' => 0,
);
$handler->display->display_options['fields']['field_farm_asset']['delta_offset'] = '0';
/* Field: Log: Done */
$handler->display->display_options['fields']['done']['id'] = 'done';
$handler->display->display_options['fields']['done']['table'] = 'log';
$handler->display->display_options['fields']['done']['field'] = 'done';
$handler->display->display_options['fields']['done']['label'] = '';
$handler->display->display_options['fields']['done']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['done']['type'] = 'custom';
$handler->display->display_options['fields']['done']['type_custom_true'] = '✔';
$handler->display->display_options['fields']['done']['not'] = 0;
/* Field: Log: Name */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'log';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['label'] = '';
$handler->display->display_options['fields']['name']['alter']['make_link'] = TRUE;
$handler->display->display_options['fields']['name']['alter']['path'] = 'log/[id]';
$handler->display->display_options['fields']['name']['alter']['alt'] = '[field_farm_asset]';
$handler->display->display_options['fields']['name']['element_label_colon'] = FALSE;
/* Sort criterion: Log: Timestamp */
$handler->display->display_options['sorts']['timestamp']['id'] = 'timestamp';
$handler->display->display_options['sorts']['timestamp']['table'] = 'log';
$handler->display->display_options['sorts']['timestamp']['field'] = 'timestamp';
/* Filter criterion: Log: Log type */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'log';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['exposed'] = TRUE;
$handler->display->display_options['filters']['type']['expose']['operator_id'] = 'type_op';
$handler->display->display_options['filters']['type']['expose']['label'] = 'Log type';
$handler->display->display_options['filters']['type']['expose']['operator'] = 'type_op';
$handler->display->display_options['filters']['type']['expose']['identifier'] = 'type';
$handler->display->display_options['filters']['type']['expose']['remember'] = TRUE;
$handler->display->display_options['filters']['type']['expose']['multiple'] = TRUE;
/* Filter criterion: Log: Log category (field_farm_log_category) */
$handler->display->display_options['filters']['field_farm_log_category_tid']['id'] = 'field_farm_log_category_tid';
$handler->display->display_options['filters']['field_farm_log_category_tid']['table'] = 'field_data_field_farm_log_category';
$handler->display->display_options['filters']['field_farm_log_category_tid']['field'] = 'field_farm_log_category_tid';
$handler->display->display_options['filters']['field_farm_log_category_tid']['exposed'] = TRUE;
$handler->display->display_options['filters']['field_farm_log_category_tid']['expose']['operator_id'] = 'field_farm_log_category_tid_op';
$handler->display->display_options['filters']['field_farm_log_category_tid']['expose']['label'] = 'Category';
$handler->display->display_options['filters']['field_farm_log_category_tid']['expose']['operator'] = 'field_farm_log_category_tid_op';
$handler->display->display_options['filters']['field_farm_log_category_tid']['expose']['identifier'] = 'field_farm_log_category_tid';
$handler->display->display_options['filters']['field_farm_log_category_tid']['expose']['remember'] = TRUE;
$handler->display->display_options['filters']['field_farm_log_category_tid']['expose']['multiple'] = TRUE;
$handler->display->display_options['filters']['field_farm_log_category_tid']['type'] = 'select';
$handler->display->display_options['filters']['field_farm_log_category_tid']['vocabulary'] = 'farm_log_categories';
$handler->display->display_options['filters']['field_farm_log_category_tid']['hierarchy'] = 1;
/* Filter criterion: User: Name */
$handler->display->display_options['filters']['uid']['id'] = 'uid';
$handler->display->display_options['filters']['uid']['table'] = 'users';
$handler->display->display_options['filters']['uid']['field'] = 'uid';
$handler->display->display_options['filters']['uid']['relationship'] = 'field_farm_log_owner_target_id';
$handler->display->display_options['filters']['uid']['value'] = '';
$handler->display->display_options['filters']['uid']['exposed'] = TRUE;
$handler->display->display_options['filters']['uid']['expose']['operator_id'] = 'uid_op';
$handler->display->display_options['filters']['uid']['expose']['label'] = 'Assigned to';
$handler->display->display_options['filters']['uid']['expose']['operator'] = 'uid_op';
$handler->display->display_options['filters']['uid']['expose']['identifier'] = 'uid';
/* Display: Month */
$handler = $view->new_display('page', 'Month', 'page_month');
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'date_views_pager';
$handler->display->display_options['pager']['options']['date_id'] = 'month';
$handler->display->display_options['pager']['options']['link_format'] = 'clean';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['name_size'] = '3';
$handler->display->display_options['style_options']['mini'] = '0';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '1';
$handler->display->display_options['style_options']['theme_style'] = '1';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'calendar_entity';
$handler->display->display_options['row_options']['inline'] = array(
'done' => 'done',
'name' => 'name',
);
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Contextual filter: Date: Date (log) */
$handler->display->display_options['arguments']['date_argument']['id'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['table'] = 'log';
$handler->display->display_options['arguments']['date_argument']['field'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['default_action'] = 'default';
$handler->display->display_options['arguments']['date_argument']['default_argument_type'] = 'date';
$handler->display->display_options['arguments']['date_argument']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['date_argument']['add_delta'] = 'yes';
$handler->display->display_options['arguments']['date_argument']['date_fields'] = array(
'log.timestamp' => 'log.timestamp',
);
$handler->display->display_options['path'] = 'farm/calendar/month';
$handler->display->display_options['menu']['type'] = 'default tab';
$handler->display->display_options['menu']['title'] = 'Month';
$handler->display->display_options['menu']['weight'] = '0';
$handler->display->display_options['menu']['context'] = 0;
$handler->display->display_options['tab_options']['type'] = 'normal';
$handler->display->display_options['tab_options']['title'] = 'Calendar';
$handler->display->display_options['tab_options']['weight'] = '-100';
$handler->display->display_options['tab_options']['name'] = 'user-menu';
/* Display: Week */
$handler = $view->new_display('page', 'Week', 'page_week');
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'date_views_pager';
$handler->display->display_options['pager']['options']['date_id'] = 'week';
$handler->display->display_options['pager']['options']['link_format'] = 'clean';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['calendar_type'] = 'week';
$handler->display->display_options['style_options']['name_size'] = '3';
$handler->display->display_options['style_options']['mini'] = '0';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '1';
$handler->display->display_options['style_options']['theme_style'] = '1';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'calendar_entity';
$handler->display->display_options['row_options']['inline'] = array(
'done' => 'done',
'name' => 'name',
);
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Contextual filter: Date: Date (log) */
$handler->display->display_options['arguments']['date_argument']['id'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['table'] = 'log';
$handler->display->display_options['arguments']['date_argument']['field'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['default_action'] = 'default';
$handler->display->display_options['arguments']['date_argument']['default_argument_type'] = 'date';
$handler->display->display_options['arguments']['date_argument']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['date_argument']['granularity'] = 'week';
$handler->display->display_options['arguments']['date_argument']['add_delta'] = 'yes';
$handler->display->display_options['arguments']['date_argument']['date_fields'] = array(
'log.timestamp' => 'log.timestamp',
);
$handler->display->display_options['path'] = 'farm/calendar/week';
$handler->display->display_options['menu']['type'] = 'tab';
$handler->display->display_options['menu']['title'] = 'Week';
$handler->display->display_options['menu']['weight'] = '2';
$handler->display->display_options['menu']['context'] = 0;
/* Display: Day */
$handler = $view->new_display('page', 'Day', 'page_day');
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'date_views_pager';
$handler->display->display_options['pager']['options']['date_id'] = 'day';
$handler->display->display_options['pager']['options']['link_format'] = 'clean';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['calendar_type'] = 'day';
$handler->display->display_options['style_options']['name_size'] = '3';
$handler->display->display_options['style_options']['mini'] = '0';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '1';
$handler->display->display_options['style_options']['theme_style'] = '1';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'calendar_entity';
$handler->display->display_options['row_options']['inline'] = array(
'done' => 'done',
'name' => 'name',
);
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Contextual filter: Date: Date (log) */
$handler->display->display_options['arguments']['date_argument']['id'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['table'] = 'log';
$handler->display->display_options['arguments']['date_argument']['field'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['default_action'] = 'default';
$handler->display->display_options['arguments']['date_argument']['default_argument_type'] = 'date';
$handler->display->display_options['arguments']['date_argument']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['date_argument']['granularity'] = 'day';
$handler->display->display_options['arguments']['date_argument']['date_fields'] = array(
'log.timestamp' => 'log.timestamp',
);
$handler->display->display_options['path'] = 'farm/calendar/day';
$handler->display->display_options['menu']['type'] = 'tab';
$handler->display->display_options['menu']['title'] = 'Day';
$handler->display->display_options['menu']['weight'] = '3';
$handler->display->display_options['menu']['context'] = 0;
/* Display: Year */
$handler = $view->new_display('page', 'Year', 'page_year');
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'date_views_pager';
$handler->display->display_options['pager']['options']['date_id'] = 'year';
$handler->display->display_options['pager']['options']['link_format'] = 'clean';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'calendar_style';
$handler->display->display_options['style_options']['calendar_type'] = 'year';
$handler->display->display_options['style_options']['name_size'] = '1';
$handler->display->display_options['style_options']['mini'] = '0';
$handler->display->display_options['style_options']['with_weekno'] = '0';
$handler->display->display_options['style_options']['multiday_theme'] = '1';
$handler->display->display_options['style_options']['theme_style'] = '1';
$handler->display->display_options['style_options']['max_items'] = '0';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'calendar_entity';
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Field: Log: Timestamp */
$handler->display->display_options['fields']['timestamp']['id'] = 'timestamp';
$handler->display->display_options['fields']['timestamp']['table'] = 'log';
$handler->display->display_options['fields']['timestamp']['field'] = 'timestamp';
$handler->display->display_options['fields']['timestamp']['label'] = '';
$handler->display->display_options['fields']['timestamp']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['timestamp']['hide_alter_empty'] = FALSE;
$handler->display->display_options['defaults']['arguments'] = FALSE;
/* Contextual filter: Date: Date (log) */
$handler->display->display_options['arguments']['date_argument']['id'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['table'] = 'log';
$handler->display->display_options['arguments']['date_argument']['field'] = 'date_argument';
$handler->display->display_options['arguments']['date_argument']['default_action'] = 'default';
$handler->display->display_options['arguments']['date_argument']['default_argument_type'] = 'date';
$handler->display->display_options['arguments']['date_argument']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['date_argument']['granularity'] = 'year';
$handler->display->display_options['arguments']['date_argument']['add_delta'] = 'yes';
$handler->display->display_options['arguments']['date_argument']['date_fields'] = array(
'log.timestamp' => 'log.timestamp',
);
$handler->display->display_options['path'] = 'farm/calendar/year';
$handler->display->display_options['menu']['type'] = 'tab';
$handler->display->display_options['menu']['title'] = 'Year';
$handler->display->display_options['menu']['weight'] = '4';
$handler->display->display_options['menu']['context'] = 0;
$translatables['farm_calendar'] = array(
t('Master'),
t('more'),
t('Apply'),
t('Reset'),
t('Sort by'),
t('Asc'),
t('Desc'),
t('User entity referenced from field_farm_log_owner'),
t('.'),
t('Assets'),
t('✔'),
t('[field_farm_asset]'),
t('Log type'),
t('Category'),
t('Assigned to'),
t('Month'),
t('All'),
t('Week'),
t('Day'),
t('Year'),
);
$export['farm_calendar'] = $view;
return $export;
}

View File

@ -2,3 +2,4 @@ name = Farm Dashboard
description = Provides a farmOS dashboard at /farm.
core = 7.x
package = farmOS
dependencies[] = farm_calendar

View File

@ -40,7 +40,7 @@ function farm_dashboard_menu() {
'type' => MENU_CALLBACK,
);
$items['farm/dashboard'] = array(
'title' => 'Farm',
'title' => 'Dashboard',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -100,
);
@ -71,7 +71,7 @@ function farm_dashboard_page_callback() {
$output = '';
// Display the current date.
$output .= '<h2>Today is ' . date('M j Y') . '</h2>';
$output .= '<h2>' . t('Today is') . ' ' . l(date('M j Y'), 'farm/calendar/day') . '</h2>';
// Render the "Plan" block display.
$view = views_get_view('farm_log');

View File

@ -0,0 +1,4 @@
.calendar-calendar .week-view .full div.single-day div.weekview,
.calendar-calendar .day-view .full div.single-day div.dayview {
border-color: #999;
}

View File

@ -12,6 +12,13 @@
padding-top: 5px;
}
/**
* Reset calendar class width in menu.
*/
.menu .calendar {
width: auto;
}
/**
* Hide page title on homepage.
*/

View File

@ -0,0 +1,19 @@
(function ($) {
Drupal.behaviors.farm_theme_dashboard = {
attach: function(context, settings) {
$('ul.tabs--primary li a', context).each(function(index) {
var link_text = $(this).clone().children().remove().end().text();
var icon = 'leaf';
switch (link_text) {
case 'Dashboard':
icon = 'dashboard';
break;
case 'Calendar':
icon = 'calendar';
break;
}
$(this).prepend('<span class="icon glyphicon glyphicon-' + icon + '"></span> ');
});
}
}
})(jQuery);

View File

@ -305,6 +305,12 @@ function farm_theme_preprocess_page(&$vars) {
drupal_add_js(drupal_get_path('theme', 'farm_theme') . '/js/help.js');
}
// If we are on a page that shows the Dashboard tabs, add Bootstrap icons to
// them via JS.
if (!empty($vars['tabs']['#primary'][0]['#link']['path']) && $vars['tabs']['#primary'][0]['#link']['path'] == 'farm/dashboard') {
drupal_add_js(drupal_get_path('theme', 'farm_theme') . '/js/dashboard.js');
}
// When the farm_areas map is displayed on a page...
if (!empty($vars['page']['content']['farm_areas'])) {
@ -341,3 +347,93 @@ function farm_theme_preprocess_field(&$vars) {
$vars['classes_array'][] = 'clearfix';
}
}
/**
* Implements hook_preprocess_calendar_item().
*/
function farm_theme_preprocess_calendar_item(&$vars) {
// If the item has a Log entity associated with it, add the log type as a
// CSS class.
if (!empty($vars['item']->entity->type)) {
$class = drupal_html_class($vars['item']->entity->type);
if (empty($vars['item']->class)) {
$vars['item']->class = $class;
}
else {
$vars['item']->class .= ' ' . $class;
}
}
}
/**
* Implements hook_preprocess_calendar_month().
*/
function farm_theme_preprocess_calendar_month(&$vars) {
farm_theme_calendar_css('month');
}
/**
* Implements hook_preprocess_calendar_week().
*/
function farm_theme_preprocess_calendar_week_overlap(&$vars) {
farm_theme_calendar_css('week');
}
/**
* Implements hook_preprocess_calendar_day().
*/
function farm_theme_preprocess_calendar_day_overlap(&$vars) {
farm_theme_calendar_css('day');
}
/**
* Helper function for adding calendar CSS.
*
* @param string $period
* The calendar period being displayed (year, month, week, or day).
*/
function farm_theme_calendar_css($period) {
// Add general CSS styles.
drupal_add_css(drupal_get_path('theme', 'farm_theme') . '/css/calendar.css');
// Define the log type colors.
$log_type_colors = array(
'farm_activity' => '#f7e6d2',
'farm_harvest' => '#daeace',
'farm_input' => '#ebdaec',
'farm_observation' => '#ccebf5',
);
// Use the color information to build CSS rules.
$css = '';
foreach ($log_type_colors as $log_type => $color) {
// Convert the log type to a valid CSS class.
$log_type_class = drupal_html_class($log_type);
// Build the item selector based on the period.
switch ($period) {
case 'month':
$calendar_item_selector = '.calendar-calendar .month-view .full td.single-day .' . $log_type_class . ' div.monthview, .calendar-calendar .week-view .full td.single-day .' . $log_type_class . ' div.weekview, .calendar-calendar .day-view .full td.single-day .' . $log_type_class . ' div.dayview';
break;
case 'week':
case 'day':
$calendar_item_selector = '.calendar-calendar .week-view .full div.single-day .' . $log_type_class . ' div.weekview, .calendar-calendar .day-view .full div.single-day .' . $log_type_class . ' div.dayview';
break;
default:
$calendar_item_selector = '';
}
// If a selector was found, add the CSS.
if (!empty($calendar_item_selector)) {
$css .= $calendar_item_selector . '{background: ' . $color . ';} ';
}
}
// If we have CSS to add, add it.
if (!empty($css)) {
drupal_add_css($css, array('type' => 'inline'));
}
}