diff --git a/xmlsitemap.admin.inc b/xmlsitemap.admin.inc index 68e2c3a..a29f9f5 100644 --- a/xmlsitemap.admin.inc +++ b/xmlsitemap.admin.inc @@ -649,7 +649,7 @@ function xmlsitemap_add_link_bundle_settings(array &$form, array &$form_state, $ '#title' => t('XML sitemap'), '#collapsible' => TRUE, '#collapsed' => TRUE, - '#access' => user_access('administer xmlsitemap'), + '#access' => user_access('administer xmlsitemap content settings'), '#group' => 'additional_settings', '#attached' => array( 'js' => array( @@ -771,7 +771,7 @@ function xmlsitemap_add_form_link_options(array &$form, $entity, $bundle, $id) { '#title' => t('XML sitemap'), '#collapsible' => TRUE, '#collapsed' => !$link['status_override'] && !$link['priority_override'], - '#access' => user_access('administer xmlsitemap') || user_access('use xmlsitemap') || xmlsitemap_link_bundle_access($bundle_info), + '#access' => user_access('administer xmlsitemap content settings') || xmlsitemap_link_bundle_access($bundle_info), '#group' => 'additional_settings', '#attached' => array( 'js' => array( diff --git a/xmlsitemap.module b/xmlsitemap.module index f4cff13..a6e42b6 100644 --- a/xmlsitemap.module +++ b/xmlsitemap.module @@ -138,6 +138,12 @@ function xmlsitemap_permission() { $permissions['administer xmlsitemap'] = array( 'title' => t('Administer XML sitemap settings'), ); + $permissions['manage xmlsitemap'] = array( + 'title' => t('Manage XML sitemap.'), + ); + $permissions['administer xmlsitemap content settings'] = array( + 'title' => t('Administer XML sitemap content settings.'), + ); $permissions['use xmlsitemap'] = array( 'title' => t('Use XML sitemap'), 'description' => t('Users can change individually the default XML Sitemap settings.'), @@ -154,7 +160,8 @@ function xmlsitemap_menu() { 'description' => "Configure your site's XML sitemaps to help search engines find and index pages on your site.", 'page callback' => 'drupal_get_form', 'page arguments' => array('xmlsitemap_sitemap_list_form'), - 'access arguments' => array('administer xmlsitemap'), + 'access callback' => '_xmlsitemap_default_access', + 'access arguments' => array('administer xmlsitemap', 'manage xmlsitemap'), 'file' => 'xmlsitemap.admin.inc', ); $items['admin/config/search/xmlsitemap/list'] = array( @@ -166,7 +173,8 @@ function xmlsitemap_menu() { 'title' => 'Add new XML sitemap', 'page callback' => 'drupal_get_form', 'page arguments' => array('xmlsitemap_sitemap_edit_form'), - 'access arguments' => array('administer xmlsitemap'), + 'access callback' => '_xmlsitemap_default_access', + 'access arguments' => array('administer xmlsitemap', 'manage xmlsitemap'), 'type' => MENU_LOCAL_ACTION, 'file' => 'xmlsitemap.admin.inc', 'modal' => TRUE, @@ -176,7 +184,8 @@ function xmlsitemap_menu() { 'title' => 'Edit XML sitemap', 'page callback' => 'drupal_get_form', 'page arguments' => array('xmlsitemap_sitemap_edit_form', 5), - 'access arguments' => array('administer xmlsitemap'), + 'access callback' => '_xmlsitemap_default_access', + 'access arguments' => array('administer xmlsitemap', 'manage xmlsitemap'), 'file' => 'xmlsitemap.admin.inc', 'modal' => TRUE, ); @@ -184,7 +193,8 @@ function xmlsitemap_menu() { 'title' => 'Delete XML sitemap', 'page callback' => 'drupal_get_form', 'page arguments' => array('xmlsitemap_sitemap_delete_form', 5), - 'access arguments' => array('administer xmlsitemap'), + 'access callback' => '_xmlsitemap_default_access', + 'access arguments' => array('administer xmlsitemap', 'manage xmlsitemap'), 'file' => 'xmlsitemap.admin.inc', 'modal' => TRUE, ); @@ -241,7 +251,14 @@ function xmlsitemap_menu() { function _xmlsitemap_rebuild_form_access() { module_load_include('generate.inc', 'xmlsitemap'); $rebuild_types = xmlsitemap_get_rebuildable_link_types(); - return !empty($rebuild_types) && user_access('administer xmlsitemap'); + return !empty($rebuild_types) && user_access('administer xmlsitemap') || !empty($rebuild_types) && user_access('manage xmlsitemap'); +} + +/** + * Menu access callback; determines if the user can use the rebuild links page. + */ +function _xmlsitemap_default_access() { + return user_access('administer xmlsitemap') || user_access('manage xmlsitemap'); } /**