I'm using Organic Group based distribution (latest Open Atrium) and added time tracker module, working quite well "out of the box" (minus some theming).

However, I can not currently find any easy way to limit the viewing of time entries group based - has someone already tried this?

Comments

mmakela created an issue.

t0xicCode’s picture

Not sure that anyone has asked for that. Not sure what it would entail. Could you provide more information as to what exactly you are trying to accomplish?

mmakela’s picture

I'm using timetracker for different freelancers (also companies) and also for myself, I don't like that everyone can see either all tracking or just their own. Groups based would be ideal (in Open Atrium they are called spaces though).

xaris.tsimpouris’s picture

This is what I have done so far:

$view = new view();
$view->name = 'bills_in_space';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'time_tracker_entry';
$view->human_name = 'Bills';
$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['title'] = 'Billing';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '100';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['pager']['options']['id'] = '0';
$handler->display->display_options['pager']['options']['quantity'] = '9';
$handler->display->display_options['pager']['options']['expose']['items_per_page_label'] = 'Είδη ανά σελίδα';
$handler->display->display_options['pager']['options']['expose']['items_per_page_options_all_label'] = '- Όλα -';
$handler->display->display_options['pager']['options']['expose']['offset_label'] = 'Αντιστάθμιση';
$handler->display->display_options['pager']['options']['tags']['first'] = '« πρώτη';
$handler->display->display_options['pager']['options']['tags']['previous'] = '‹ προηγούμενη';
$handler->display->display_options['pager']['options']['tags']['next'] = 'επόμενη ›';
$handler->display->display_options['pager']['options']['tags']['last'] = 'τελευταία »';
$handler->display->display_options['style_plugin'] = 'table';
$handler->display->display_options['style_options']['grouping'] = array(
  0 => array(
    'field' => 'title',
    'rendered' => 1,
    'rendered_strip' => 0,
  ),
);
$handler->display->display_options['style_options']['columns'] = array(
  'teid' => 'teid',
  'nid' => 'nid',
  'field_user_picture' => 'field_user_picture',
  'title' => 'title',
  'billed' => 'billed',
  'start' => 'start',
  'total_duration' => 'total_duration',
  'note' => 'note',
);
$handler->display->display_options['style_options']['default'] = '-1';
$handler->display->display_options['style_options']['info'] = array(
  'teid' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'nid' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'field_user_picture' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => 'views-align-center',
    'separator' => '',
    'empty_column' => 0,
  ),
  'title' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'billed' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'start' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'total_duration' => array(
    'align' => 'views-align-right',
    'separator' => '',
    'empty_column' => 0,
  ),
  'note' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
);
/* Header: OG membership: Group membership overview */
$handler->display->display_options['header']['og_membership_overview']['id'] = 'og_membership_overview';
$handler->display->display_options['header']['og_membership_overview']['table'] = 'og_membership';
$handler->display->display_options['header']['og_membership_overview']['field'] = 'og_membership_overview';
$handler->display->display_options['header']['og_membership_overview']['manager'] = 1;
$handler->display->display_options['header']['og_membership_overview']['total_members_1'] = 0;
$handler->display->display_options['header']['og_membership_overview']['total_members_2'] = 0;
$handler->display->display_options['header']['og_membership_overview']['total_members_3'] = 0;
$handler->display->display_options['header']['og_membership_overview']['total_members'] = 1;
$handler->display->display_options['header']['og_membership_overview']['total_content'] = 1;
/* No results behavior: Global: Text area */
$handler->display->display_options['empty']['area']['id'] = 'area';
$handler->display->display_options['empty']['area']['table'] = 'views';
$handler->display->display_options['empty']['area']['field'] = 'area';
$handler->display->display_options['empty']['area']['empty'] = TRUE;
$handler->display->display_options['empty']['area']['content'] = '<center>Δεν βρέθηκαν καταχωρήσεις</center>';
$handler->display->display_options['empty']['area']['format'] = 'full_html';
/* Relationship: Time Tracker: Node */
$handler->display->display_options['relationships']['nid']['id'] = 'nid';
$handler->display->display_options['relationships']['nid']['table'] = 'time_tracker_entry';
$handler->display->display_options['relationships']['nid']['field'] = 'nid';
$handler->display->display_options['relationships']['nid']['label'] = 'Εργασία';
/* Relationship: Time Tracker: Author */
$handler->display->display_options['relationships']['uid']['id'] = 'uid';
$handler->display->display_options['relationships']['uid']['table'] = 'time_tracker_entry';
$handler->display->display_options['relationships']['uid']['field'] = 'uid';
$handler->display->display_options['relationships']['uid']['label'] = 'Εργάτης';
/* Relationship: OG membership: OG membership from Node */
$handler->display->display_options['relationships']['og_membership_rel']['id'] = 'og_membership_rel';
$handler->display->display_options['relationships']['og_membership_rel']['table'] = 'node';
$handler->display->display_options['relationships']['og_membership_rel']['field'] = 'og_membership_rel';
$handler->display->display_options['relationships']['og_membership_rel']['relationship'] = 'nid';
$handler->display->display_options['relationships']['og_membership_rel']['required'] = TRUE;
/* Field: Time Tracker: ID */
$handler->display->display_options['fields']['teid']['id'] = 'teid';
$handler->display->display_options['fields']['teid']['table'] = 'time_tracker_entry';
$handler->display->display_options['fields']['teid']['field'] = 'teid';
$handler->display->display_options['fields']['teid']['exclude'] = TRUE;
/* Field: Content: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
$handler->display->display_options['fields']['nid']['relationship'] = 'nid';
$handler->display->display_options['fields']['nid']['label'] = '';
$handler->display->display_options['fields']['nid']['exclude'] = TRUE;
$handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
/* Field: User: Picture */
$handler->display->display_options['fields']['field_user_picture']['id'] = 'field_user_picture';
$handler->display->display_options['fields']['field_user_picture']['table'] = 'field_data_field_user_picture';
$handler->display->display_options['fields']['field_user_picture']['field'] = 'field_user_picture';
$handler->display->display_options['fields']['field_user_picture']['relationship'] = 'uid';
$handler->display->display_options['fields']['field_user_picture']['label'] = '';
$handler->display->display_options['fields']['field_user_picture']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_user_picture']['click_sort_column'] = 'fid';
$handler->display->display_options['fields']['field_user_picture']['settings'] = array(
  'image_style' => 'oa_small_thumbnail',
  'image_link' => '',
);
/* Field: Content: Title */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['relationship'] = 'nid';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['exclude'] = TRUE;
$handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
/* Field: Time Tracker: Billed */
$handler->display->display_options['fields']['billed']['id'] = 'billed';
$handler->display->display_options['fields']['billed']['table'] = 'time_tracker_entry';
$handler->display->display_options['fields']['billed']['field'] = 'billed';
$handler->display->display_options['fields']['billed']['exclude'] = TRUE;
$handler->display->display_options['fields']['billed']['not'] = 0;
/* Field: Time Tracker: Start Time */
$handler->display->display_options['fields']['start']['id'] = 'start';
$handler->display->display_options['fields']['start']['table'] = 'time_tracker_entry';
$handler->display->display_options['fields']['start']['field'] = 'start';
$handler->display->display_options['fields']['start']['date_format'] = 'oa_date';
$handler->display->display_options['fields']['start']['second_date_format'] = 'oa_date';
$handler->display->display_options['fields']['start']['oa_date'] = '0';
/* Field: Time Tracker: Total Duration */
$handler->display->display_options['fields']['total_duration']['id'] = 'total_duration';
$handler->display->display_options['fields']['total_duration']['table'] = 'time_tracker_entry';
$handler->display->display_options['fields']['total_duration']['field'] = 'total_duration';
$handler->display->display_options['fields']['total_duration']['precision'] = '0';
$handler->display->display_options['fields']['total_duration']['output_format'] = 'time';
/* Field: Time Tracker: Note */
$handler->display->display_options['fields']['note']['id'] = 'note';
$handler->display->display_options['fields']['note']['table'] = 'time_tracker_entry';
$handler->display->display_options['fields']['note']['field'] = 'note';
/* Sort criterion: Time Tracker: Start Time */
$handler->display->display_options['sorts']['start']['id'] = 'start';
$handler->display->display_options['sorts']['start']['table'] = 'time_tracker_entry';
$handler->display->display_options['sorts']['start']['field'] = 'start';
$handler->display->display_options['sorts']['start']['order'] = 'DESC';
$handler->display->display_options['sorts']['start']['granularity'] = 'minute';
/* Contextual filter: OG membership: Group ID */
$handler->display->display_options['arguments']['gid']['id'] = 'gid';
$handler->display->display_options['arguments']['gid']['table'] = 'og_membership';
$handler->display->display_options['arguments']['gid']['field'] = 'gid';
$handler->display->display_options['arguments']['gid']['relationship'] = 'og_membership_rel';
$handler->display->display_options['arguments']['gid']['default_action'] = 'not found';
$handler->display->display_options['arguments']['gid']['exception']['title'] = 'Όλες';
$handler->display->display_options['arguments']['gid']['default_argument_type'] = 'fixed';
$handler->display->display_options['arguments']['gid']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['gid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['gid']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['gid']['specify_validation'] = TRUE;
$handler->display->display_options['arguments']['gid']['validate']['type'] = 'og';
/* Filter criterion: Time Tracker: Billed */
$handler->display->display_options['filters']['billed']['id'] = 'billed';
$handler->display->display_options['filters']['billed']['table'] = 'time_tracker_entry';
$handler->display->display_options['filters']['billed']['field'] = 'billed';
$handler->display->display_options['filters']['billed']['value'] = '0';
$handler->display->display_options['filters']['billed']['exposed'] = TRUE;
$handler->display->display_options['filters']['billed']['expose']['operator_id'] = '';
$handler->display->display_options['filters']['billed']['expose']['label'] = 'Έχει πληρωθεί';
$handler->display->display_options['filters']['billed']['expose']['operator'] = 'billed_op';
$handler->display->display_options['filters']['billed']['expose']['identifier'] = 'billed';
$handler->display->display_options['filters']['billed']['expose']['required'] = TRUE;
$handler->display->display_options['filters']['billed']['expose']['remember_roles'] = array(
  2 => '2',
  1 => 0,
  3 => 0,
  4 => 0,
  5 => 0,
  6 => 0,
);
/* Filter criterion: User: The user ID */
$handler->display->display_options['filters']['uid_raw']['id'] = 'uid_raw';
$handler->display->display_options['filters']['uid_raw']['table'] = 'users';
$handler->display->display_options['filters']['uid_raw']['field'] = 'uid_raw';
$handler->display->display_options['filters']['uid_raw']['relationship'] = 'uid';
$handler->display->display_options['filters']['uid_raw']['exposed'] = TRUE;
$handler->display->display_options['filters']['uid_raw']['expose']['operator_id'] = 'uid_raw_op';
$handler->display->display_options['filters']['uid_raw']['expose']['label'] = 'The user ID';
$handler->display->display_options['filters']['uid_raw']['expose']['operator'] = 'uid_raw_op';
$handler->display->display_options['filters']['uid_raw']['expose']['identifier'] = 'uid_raw';
$handler->display->display_options['filters']['uid_raw']['expose']['remember_roles'] = array(
  2 => '2',
  1 => 0,
  3 => 0,
  4 => 0,
  5 => 0,
  6 => 0,
);

/* Display: Content pane */
$handler = $view->new_display('panel_pane', 'Content pane', 'billing_view');
$handler->display->display_options['allow']['use_pager'] = 0;
$handler->display->display_options['allow']['items_per_page'] = 0;
$handler->display->display_options['allow']['offset'] = 0;
$handler->display->display_options['allow']['link_to_view'] = 0;
$handler->display->display_options['allow']['more_link'] = 0;
$handler->display->display_options['allow']['path_override'] = 0;
$handler->display->display_options['allow']['title_override'] = 0;
$handler->display->display_options['allow']['exposed_form'] = 0;
$handler->display->display_options['allow']['exposed_form_configure'] = 0;
$handler->display->display_options['allow']['fields_override'] = 0;
$handler->display->display_options['allow']['panopoly_magic_display_type'] = 0;
$handler->display->display_options['exposed_form_overrides'] = array(
  'filters' => array(
    'billed' => '',
    'uid_raw' => '',
  ),
);
$handler->display->display_options['argument_input'] = array(
  'gid' => array(
    'type' => 'context',
    'context' => 'entity:node.nid',
    'context_optional' => 0,
    'panel' => '0',
    'fixed' => '',
    'label' => 'OG membership: Group ID',
  ),
);
$translatables['bills_in_space'] = array(
  t('Master'),
  t('Billing'),
  t('more'),
  t('Apply'),
  t('Reset'),
  t('Sort by'),
  t('Asc'),
  t('Desc'),
  t('Είδη ανά σελίδα'),
  t('- Όλα -'),
  t('Αντιστάθμιση'),
  t('« πρώτη'),
  t('‹ προηγούμενη'),
  t('επόμενη ›'),
  t('τελευταία »'),
  t('<center>Δεν βρέθηκαν καταχωρήσεις</center>'),
  t('Εργασία'),
  t('Εργάτης'),
  t('OG membership from node'),
  t('ID'),
  t('.'),
  t(','),
  t('Billed'),
  t('Start Time'),
  t('Total Duration'),
  t('Note'),
  t('Όλες'),
  t('Έχει πληρωθεί'),
  t('The user ID'),
  t('Content pane'),
  t('View panes'),
);

The above view (apart from the greek texts that I don't know how to remove before extracting) will create a new view in "View panes" in Panel, where it can show only time track entries for that space only. Hope it helps.