summaryrefslogtreecommitdiff
path: root/modules/block
diff options
context:
space:
mode:
authorSteven Wittens <steven@10.no-reply.drupal.org>2006-01-08 03:33:31 +0000
committerSteven Wittens <steven@10.no-reply.drupal.org>2006-01-08 03:33:31 +0000
commit1b66966a4b8e7da26bf87e5617f81b051959798e (patch)
treeb73a9b0da1f5ec7eb264b2a1ea61c0de6ae92533 /modules/block
parent49e5e1cd4786ea29831166074467c85b5a946f0f (diff)
downloadbrdo-1b66966a4b8e7da26bf87e5617f81b051959798e.tar.gz
brdo-1b66966a4b8e7da26bf87e5617f81b051959798e.tar.bz2
- #43495: Separate permission for PHP-based block visibility
Diffstat (limited to 'modules/block')
-rw-r--r--modules/block/block.module39
1 files changed, 26 insertions, 13 deletions
diff --git a/modules/block/block.module b/modules/block/block.module
index 7e4d93797..9f5ed6672 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -53,7 +53,7 @@ function block_help($section) {
* Implementation of hook_perm().
*/
function block_perm() {
- return array('administer blocks');
+ return array('administer blocks', 'use PHP for block visibility');
}
/**
@@ -357,18 +357,31 @@ function block_admin_configure($module = NULL, $delta = 0) {
'#collapsible' => true,
'#weight' => 0,
);
- $form['page_vis_settings']['visibility'] = array(
- '#type' => 'radios',
- '#title' => t('Show block on specific pages'),
- '#options' => array(t('Show on every page except the listed pages.'), t('Show on only the listed pages.'), t('Show if the following PHP code returns <code>TRUE</code> (PHP-mode, experts only).')),
- '#default_value' => $edit['visibility'],
- );
- $form['page_vis_settings']['pages'] = array(
- '#type' => 'textarea',
- '#title' => t('Pages'),
- '#default_value' => $edit['pages'],
- '#description' => t("Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are '%blog' for the blog page and %blog-wildcard for every personal blog. %front is the front page. If the PHP-mode is chosen, enter PHP code between %php. Note that executing incorrect PHP-code can break your Drupal site.", array('%blog' => theme('placeholder', 'blog'), '%blog-wildcard' => theme('placeholder', 'blog/*'), '%front' => theme('placeholder', '<front>'), '%php' => theme('placeholder', '<?php ?>'))),
- );
+ $access = user_access('Use PHP for block visibility');
+
+ if ($edit['visibility'] == 2 && !$access) {
+ $form['page_vis_settings']['visibility'] = array('#type' => 'value', '#value' => 2);
+ $form['page_vis_settings']['pages'] = array('#type' => 'value', '#value' => $edit['pages']);
+ }
+ else {
+ $options = array(t('Show on every page except the listed pages.'), t('Show on only the listed pages.'));
+ if ($access) {
+ $options[] = t('Show if the following PHP code returns <code>TRUE</code> (PHP-mode, experts only).');
+ }
+ $form['page_vis_settings']['visibility'] = array(
+ '#type' => 'radios',
+ '#title' => t('Show block on specific pages'),
+ '#options' => $options,
+ '#default_value' => $edit['visibility'],
+ );
+ $form['page_vis_settings']['pages'] = array(
+ '#type' => 'textarea',
+ '#title' => t('Pages'),
+ '#default_value' => $edit['pages'],
+ '#description' => t("Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are '%blog' for the blog page and %blog-wildcard for every personal blog. %front is the front page. If the PHP-mode is chosen, enter PHP code between %php. Note that executing incorrect PHP-code can break your Drupal site.", array('%blog' => theme('placeholder', 'blog'), '%blog-wildcard' => theme('placeholder', 'blog/*'), '%front' => theme('placeholder', '<front>'), '%php' => theme('placeholder', '<?php ?>'))),
+ );
+ }
+
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save block'),