View source
<?php
function _varbase_magic_views_content_views_panes_form_alter_ds(&$form, &$form_state, $form_id) {
$conf = $form_state['conf'];
$view =& $form_state['view'];
$view_handler =& $view->display_handler;
$entity_type = $view->base_table;
if ($entity_type == 'users') {
$entity_type = 'user';
}
if ($entity_type == 'file_managed') {
$entity_type = 'file';
}
$entity_view_modes = ds_entity_view_modes($entity_type);
$ds_settings = $view_handler->options['row_options'];
$allow_settings = $view_handler->options['allow'];
foreach ($entity_view_modes as $key => $view_mode) {
$view_mode_settings[$key] = $view_mode['label'];
}
$view_mode_settings = array_diff_key($view_mode_settings, _varbase_magic_get_developer_view_modes());
if (isset($allow_settings['fields_override']) && !empty($allow_settings['fields_override'])) {
$form['varbase_magic_ds']['ds_view_mode_settings'] = array(
'#type' => 'select',
'#default_value' => isset($conf['ds_view_mode_settings']) ? $conf['ds_view_mode_settings'] : $ds_settings['view_mode'],
'#weight' => 10,
'#title' => t('View Modes'),
'#options' => $view_mode_settings,
);
$form['varbase_magic_ds']['alternating'] = array(
'#type' => 'checkbox',
'#title' => t('Use the changing view mode selector'),
'#default_value' => isset($conf['alternating']) ? $conf['alternating'] : '',
'#weight' => 14,
);
$form['varbase_magic_ds']['ds_alternating_fieldset'] = array(
'#type' => 'fieldset',
'#title' => t('Alternating view mode'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#weight' => 15,
'#input' => TRUE,
'#process' => array(
'ctools_dependent_process',
),
'#dependency' => array(
'edit-alternating' => array(
'1',
),
),
);
$ds_rows = $ds_settings['alternating_fieldset'];
$ds_rows = array_diff_key($ds_rows, array_flip(array(
'alternating',
'allpages',
)));
$ds_rows = array_combine(str_replace('item_', '', array_keys($ds_rows)), $ds_rows);
$form['varbase_magic_ds']['ds_alternating_fieldset']['ds_rows']["#tree"] = TRUE;
$limit = 0;
if (isset($conf['items_per_page'])) {
$limit = $conf['items_per_page'];
}
elseif (isset($view_handler->options['pager']['options']['items_per_page'])) {
$limit = $view_handler->options['pager']['options']['items_per_page'];
}
for ($row_id = 0; $row_id < $limit; $row_id++) {
$form['varbase_magic_ds']['ds_alternating_fieldset']['ds_rows'][$row_id] = array(
'#title' => t('Item @nr', array(
'@nr' => $row_id + 1,
)),
'#type' => 'select',
'#default_value' => isset($conf['ds_rows'][$row_id]) ? $conf['ds_rows'][$row_id] : '',
'#options' => $view_mode_settings,
);
}
}
$form['#submit'][] = '_varbase_magic_views_content_views_panes_submit_ds';
}
function _varbase_magic_views_content_views_panes_submit_ds(&$form, &$form_state) {
$form_elements = array(
'ds_view_mode_settings',
'ds_rows',
'alternating',
);
foreach ($form_elements as $element) {
if (isset($form_state['values'][$element])) {
$form_state['conf'][$element] = $form_state['values'][$element];
}
}
}
function _varbase_magic_views_pre_view_ds(&$view) {
$view_handler =& $view->display_handler;
$conf = $view_handler->options['pane_conf'];
$row_options =& $view_handler->options['row_options'];
if (isset($conf['alternating'])) {
$row_options['alternating'] = $conf['alternating'];
}
if (isset($conf['ds_view_mode_settings']) && !empty($conf['ds_view_mode_settings'])) {
$row_options['view_mode'] = $conf['ds_view_mode_settings'];
}
if (isset($conf['alternating']) && !empty($conf['alternating']) && isset($conf['ds_rows']) && !empty($conf['ds_rows'])) {
foreach ($conf['ds_rows'] as $row_key => $row_view_mode) {
$row_options['alternating_fieldset']['item_' . $row_key] = $conf['ds_rows'][$row_key];
}
}
}