From: skodak Date: Thu, 20 Dec 2007 16:25:49 +0000 (+0000) Subject: MDL-11814 use system context for pinned blocks; merged from MOODLE_19_STABLE X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=5c10879f55062d027ca34a4e43dcc44db4c0aa87;p=moodle.git MDL-11814 use system context for pinned blocks; merged from MOODLE_19_STABLE --- diff --git a/blocks/moodleblock.class.php b/blocks/moodleblock.class.php index 9c62c55f6c..d43a1e4244 100644 --- a/blocks/moodleblock.class.php +++ b/blocks/moodleblock.class.php @@ -84,6 +84,10 @@ class block_base { var $cron = NULL; + /** + * Indicates blocked is pinned - can not be moved, always present, does not have own context + */ + var $pinned = false; /// Class Functions @@ -266,7 +270,11 @@ class block_base { */ function is_empty() { - $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + if (empty($this->instance->pinned)) { + $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + } else { + $context = get_context_instance(CONTEXT_SYSTEM); // pinned blocks do not have own context + } if ( !has_capability('moodle/block:view', $context) ) { return true; @@ -366,8 +374,11 @@ class block_base { function _add_edit_controls($options) { global $CFG, $USER, $PAGE; - // this is the context relevant to this particular block instance - $blockcontext = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + if (empty($this->instance->pinned)) { + $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + } else { + $context = get_context_instance(CONTEXT_SYSTEM); // pinned blocks do not have own context + } // context for site or course, i.e. participant list etc // check to see if user can edit site or course blocks. @@ -375,7 +386,7 @@ class block_base { switch ($this->instance->pagetype) { case 'course-view': - if (!has_capability('moodle/site:manageblocks', $blockcontext)) { + if (!has_capability('moodle/site:manageblocks', $context)) { return null; } break; @@ -427,7 +438,7 @@ class block_base { $script = $page->url_get_full(array('instanceid' => $this->instance->id, 'sesskey' => $USER->sesskey)); if (empty($this->instance->pinned)) { - $movebuttons .= '' . + $movebuttons .= '' . ''.$this->str->assignroles.''; } @@ -756,7 +767,11 @@ class block_list extends block_base { function is_empty() { - $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + if (empty($this->instance->pinned)) { + $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + } else { + $context = get_context_instance(CONTEXT_SYSTEM); // pinned blocks do not have own context + } if ( !has_capability('moodle/block:view', $context) ) { return true; diff --git a/blocks/rss_client/block_rss_client.php b/blocks/rss_client/block_rss_client.php index 5e843d2a61..d15abc35f5 100644 --- a/blocks/rss_client/block_rss_client.php +++ b/blocks/rss_client/block_rss_client.php @@ -96,7 +96,11 @@ } } - $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + if (empty($this->instance->pinned)) { + $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + } else { + $context = get_context_instance(CONTEXT_SYSTEM); // pinned blocks do not have own context + } if (has_capability('block/rss_client:createsharedfeeds', $context) || has_capability('block/rss_client:createprivatefeeds', $context)) { diff --git a/blocks/rss_client/config_instance.html b/blocks/rss_client/config_instance.html index b52fe3439f..3066ed61ce 100644 --- a/blocks/rss_client/config_instance.html +++ b/blocks/rss_client/config_instance.html @@ -93,7 +93,11 @@ print_box_start(); print $checkbox . $feedtitle .'
'."\n"; } } else { - $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + if (empty($this->instance->pinned)) { + $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + } else { + $context = get_context_instance(CONTEXT_SYSTEM); // pinned blocks do not have own context + } print_string('nofeeds', 'block_rss_client'); if (has_capability('block/rss_client:createprivatefeeds', $context) @@ -169,7 +173,11 @@ print_box_start(); } else { global $act, $url, $rssid, $preferredtitle, $shared; print ''; // Closes off page form - $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + if (empty($this->instance->pinned)) { + $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); + } else { + $context = get_context_instance(CONTEXT_SYSTEM); // pinned blocks do not have own context + } print_box_start(); rss_display_feeds($id, $USER->id, '', $context); diff --git a/blocks/rss_client/config_instance_tabs.php b/blocks/rss_client/config_instance_tabs.php index 3ba5cc1540..c3a7e3274c 100644 --- a/blocks/rss_client/config_instance_tabs.php +++ b/blocks/rss_client/config_instance_tabs.php @@ -6,7 +6,11 @@ global $USER; $tabs = $row = array(); -$context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); +if (empty($this->instance->pinned)) { + $context = get_context_instance(CONTEXT_BLOCK, $this->instance->id); +} else { + $context = get_context_instance(CONTEXT_SYSTEM); // pinned blocks do not have own context +} if (has_capability('moodle/site:manageblocks', $context)) { $script = $page->url_get_full(array('instanceid' => $this->instance->id, 'sesskey' => $USER->sesskey, 'blockaction' => 'config', 'currentaction' => 'configblock', 'id' => $id, 'section' => 'rss'));