menu_fields.admin.inc in Menu Item Fields 7
Contains admin forms and code.
File
menu_fields.admin.incView source
<?php
/**
* @file
* Contains admin forms and code.
*/
/**
* Menu callback which shows an overview page of all the custom menus.
*
* Basic version taken from menu_overview_page(). Since that functions output
* can not be altered easily, it has been token over and modified here. The
* drawback ist, that changes to the core function do not propagate in here. So
* new core releases must be examined for changes to this function and the
* changes must be ported in here.
*/
function menu_fields_menu_overview_page() {
module_load_include('inc', 'menu', 'admin.menu');
$enabled_menus = menu_fields_enabled_menus();
// Direct copy from menu_overview_page().
$result = db_query("SELECT * FROM {menu_custom} ORDER BY title", array(), array(
'fetch' => PDO::FETCH_ASSOC,
));
// <- colspan has been changed from 3 to 5.
$header = array();
$header[] = t('Title');
$header[] = array(
'data' => t('Operations'),
'colspan' => '5',
);
$rows = array();
foreach ($result as $menu) {
$row = array();
$row[] = theme('menu_admin_overview', array(
'title' => $menu['title'],
'name' => $menu['menu_name'],
'description' => $menu['description'],
));
$row[] = array(
'data' => l(t('list links'), 'admin/structure/menu/manage/' . $menu['menu_name']),
);
$row[] = array(
'data' => l(t('edit menu'), 'admin/structure/menu/manage/' . $menu['menu_name'] . '/edit'),
);
if (in_array($menu['menu_name'], $enabled_menus)) {
$row[] = array(
'data' => l(t('manage fields'), 'admin/structure/menu/manage/' . $menu['menu_name'] . '/fields'),
);
$row[] = array(
'data' => l(t('manage display'), 'admin/structure/menu/manage/' . $menu['menu_name'] . '/display'),
);
}
else {
$row[] = '';
$row[] = '';
}
$row[] = array(
'data' => l(t('add link'), 'admin/structure/menu/manage/' . $menu['menu_name'] . '/add'),
);
$rows[] = $row;
}
return theme('table', array(
'header' => $header,
'rows' => $rows,
));
}
/**
* Form definition for menu fields configuration.
*/
function menu_fields_field_configuration_form() {
$form['fields'] = array(
'#type' => 'fieldset',
'#title' => t('Enabled Menu Fields'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
$header = array(
'menu_name' => t('Menu name'),
'operation_field' => t('Fields'),
'operation_display' => t('Display'),
);
$options = array();
$default_values = array();
$menus = menu_get_menus();
$selected_menus = menu_fields_enabled_menus();
foreach ($menus as $key => $value) {
$options[$key] = array(
'menu_name' => $value,
);
// Add manage fields/display link when menu is selected.
if (in_array($key, $selected_menus)) {
$default_values[$key] = TRUE;
$options[$key]['operation_field'] = array(
'data' => array(
'#type' => 'link',
'#title' => t('Manage fields'),
'#href' => 'admin/structure/menu/manage/' . $key . '/fields',
),
);
$options[$key]['operation_display'] = array(
'data' => array(
'#type' => 'link',
'#title' => t('Manage display'),
'#href' => 'admin/structure/menu/manage/' . $key . '/display',
),
);
}
else {
$default_values[$key] = FALSE;
$options[$key]['operation_field'] = '';
$options[$key]['operation_display'] = '';
}
}
$form['fields']['menus'] = array(
'#type' => 'tableselect',
'#header' => $header,
'#options' => $options,
'#empty' => t('No menus available.'),
'#multiple' => TRUE,
'#default_value' => $default_values,
'#js_select' => FALSE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
return $form;
}
/**
* Submit handler for the menu fields administration form.
*
* @see menu_fields_field_configuration_form()
*/
function menu_fields_field_configuration_form_submit($form, &$form_state) {
$menus = array();
foreach ($form_state['values']['menus'] as $key => $value) {
if ($key === $value) {
$menus[] = $value;
}
}
menu_fields_save_enabled_menus($menus);
drupal_set_message(t('Field settings saved.'));
}
Functions
Name![]() |
Description |
---|---|
menu_fields_field_configuration_form | Form definition for menu fields configuration. |
menu_fields_field_configuration_form_submit | Submit handler for the menu fields administration form. |
menu_fields_menu_overview_page | Menu callback which shows an overview page of all the custom menus. |