function custom_breadcrumbs_page in Custom Breadcrumbs 6.2
Same name and namespace in other branches
- 5 custom_breadcrumbs.module \custom_breadcrumbs_page()
- 6 custom_breadcrumbs.admin.inc \custom_breadcrumbs_page()
- 7.2 custom_breadcrumbs.admin.inc \custom_breadcrumbs_page()
- 7 custom_breadcrumbs.admin.inc \custom_breadcrumbs_page()
Lists all current custom breadcrumbs and provides a link to the edit page.
1 string reference to 'custom_breadcrumbs_page'
- custom_breadcrumbs_menu in ./
custom_breadcrumbs.module - Implements hook_menu().
File
- ./
custom_breadcrumbs.admin.inc, line 10 - Admin page callback file for the custom_breadcrumbs module.
Code
function custom_breadcrumbs_page() {
$custom_breadcrumbs_sort = variable_get('custom_breadcrumbs_sort', array(
'direction' => array(
'name' => 'asc',
'breadcrumb_type' => 'asc',
'language' => 'asc',
),
'column' => 'name',
));
$sort = $custom_breadcrumbs_sort['direction'];
$multilingual = _custom_breadcrumbs_multilingual();
$breadcrumbs = array();
// Read session variable to load breadcrumbs of type and language selected by user.
if (empty($_SESSION['custom_breadcrumbs_overview_filter'])) {
$breadcrumbs = _custom_breadcrumbs_load_all_breadcrumbs(TRUE);
}
else {
// Determine a list of selected languages, and a list of modules to load them from.
$modules = array();
$tables = array();
$languages = array();
foreach ($_SESSION['custom_breadcrumbs_overview_filter'] as $filter) {
if ($filter[0] == 'type') {
list($module, $table) = explode('-', $filter[1]);
$modules[] = $module;
$tables[] = $table;
}
elseif ($filter[0] == 'language') {
$languages[] = $filter[1];
}
}
if (empty($modules)) {
$modules = module_implements('cb_breadcrumb_info');
}
foreach ($modules as $key => $module) {
$more = custom_breadcrumbs_load_breadcrumbs($module, $tables[$key], NULL, $languages);
if (!empty($more)) {
$breadcrumbs = array_merge($breadcrumbs, $more);
}
}
}
// Sort the breadcrumbs according to $sort and $order.
$columns = array(
'name' => 'Name',
'breadcrumb_type' => 'Breadcrumb Type',
);
if ($multilingual) {
$columns['language'] = 'Language';
}
$order = isset($_GET['order']) && in_array($_GET['order'], array_keys($columns)) ? $_GET['order'] : 'name';
$sort[$order] = isset($_GET['sort']) && $_GET['sort'] == 'desc' ? 'desc' : 'asc';
variable_set('custom_breadcrumbs_sort', array(
'direction' => $sort,
'column' => $order,
));
usort($breadcrumbs, '_custom_breadcrumbs_sort_cmp');
// Make the breadcrumb list table sortable by name, type and language.
$path = 'admin/build/custom_breadcrumbs';
$sort[$order] = $sort[$order] == 'asc' ? 'desc' : 'asc';
// Add an arrow indicating sort direction.
$image = array(
$order => theme('tablesort_indicator', $sort[$order]),
);
$headers = array();
foreach ($columns as $key => $title) {
$options = array(
'attributes' => array(
'title' => t('sort by @s', array(
'@s' => $title,
)),
),
);
$options['query'] = 'order=' . $key . '&sort=' . $sort[$key];
if (isset($image[$key])) {
$options['html'] = TRUE;
$title .= $image[$key];
}
$headers[] = array(
'data' => l($title, $path, $options),
);
}
$headers[] = t('Operations');
$rows = array();
foreach ($breadcrumbs as $breadcrumb) {
$row = array();
$name = $breadcrumb->name;
$type = $breadcrumb->breadcrumb_type;
$row['name'] = array(
'data' => $name . (!empty($breadcrumb->visibility_php) ? ' ' . t('with PHP snippet') : ''),
);
$row['breadcrumb_type'] = array(
'data' => $type,
);
if ($multilingual) {
$row['language'] = array(
'data' => module_invoke('locale', 'language_name', $breadcrumb->language),
);
}
$row['edit'] = l(t('edit'), $path . '/' . $breadcrumb->breadcrumb_type . '/edit/' . $breadcrumb->bid);
$row[$order]['class'] = 'active';
$rows[] = $row;
}
if (count($rows) == 0) {
$rows[] = array(
array(
'data' => t('No custom breadcrumbs have been defined.'),
'colspan' => 2 + (int) $multilingual,
),
);
}
$output = drupal_get_form('custom_breadcrumbs_filter_form');
$output .= theme('table', $headers, $rows);
return $output;
}