diff --git a/menu_attributes.install b/menu_attributes.install index 3fc2f3c..5d30fab 100644 --- a/menu_attributes.install +++ b/menu_attributes.install @@ -83,3 +83,18 @@ function menu_attributes_update_7000(&$sandbox) { // If you do not want to display a completion message, simply return nothing. return t('All menu links with non-array value for class attribute have been fixed.'); } + +/** + * Implements hook_update_N(). + * + * Grant the 'administer menu attributes' permission to roles that currently + * have the 'administer menu' permission. + */ +function menu_attributes_update_7001() { + $roles = user_roles(FALSE, 'administer menu'); + foreach ($roles as $rid => $role) { + user_role_grant_permissions($rid, array('administer menu attributes')); + } + + return t("Every role with the 'administer menu' permission has also received the 'administer menu attributes' permission."); +} diff --git a/menu_attributes.module b/menu_attributes.module index db21bb7..52940cd 100644 --- a/menu_attributes.module +++ b/menu_attributes.module @@ -7,6 +7,18 @@ */ /** + * Implements hook_permission(). + */ +function menu_attributes_permission() { + return array( + 'administer menu attributes' => array( + 'title' => t('Administer menu attributes'), + 'description' => t('Administer menu attributes.'), + ), + ); +} + +/** * Implements hook_menu_link_alter(). */ function menu_attributes_menu_link_alter(&$item, $menu) { @@ -144,6 +156,9 @@ function menu_attributes_form_node_form_alter(&$form, $form_state) { * The optional existing menu item for context. */ function _menu_attributes_form_alter(array &$form, array $item = array(), array &$complete_form) { + // Restrict access to the new form elements. + $form['options']['attributes']['#access'] = user_access('administer menu attributes'); + $form['options']['#tree'] = TRUE; $form['options']['#weight'] = 50; @@ -235,6 +250,10 @@ function _menu_attributes_form_submit($form, &$form_state) { * @see menu_configure_form() */ function menu_attributes_form_menu_configure_alter(&$form, $form_state) { + if (!user_access('administer menu attributes')) { + return; + } + $form['attributes_title'] = array( '#type' => 'item', '#title' => t('Menu item attribute options'),