From: tjhunt Date: Wed, 6 May 2009 08:59:29 +0000 (+0000) Subject: moodle_page: MDL-12212 reimplement user_is_editing, deprecate isediting X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=830dd6e9cd130fe091e746b38a5359abca48b838;p=moodle.git moodle_page: MDL-12212 reimplement user_is_editing, deprecate isediting --- diff --git a/admin/pagelib.php b/admin/pagelib.php index 374b1aa959..4514bba90d 100644 --- a/admin/pagelib.php +++ b/admin/pagelib.php @@ -31,12 +31,6 @@ class page_admin extends page_base { return has_capability('moodle/site:manageblocks', get_context_instance(CONTEXT_SYSTEM)); } - // has to be fixed. i know there's a "proper" way to do this - function user_is_editing() { - global $USER; - return $USER->adminediting; - } - /** * Use this to pass extra HTML that is added after the turn blocks editing on/off button. * diff --git a/admin/settings.php b/admin/settings.php index 4be5405510..1e9d4a7e23 100644 --- a/admin/settings.php +++ b/admin/settings.php @@ -58,16 +58,8 @@ $PAGE = page_create_object(PAGE_ADMIN, 0); // there must be any constant id numb $PAGE->set_pagetype('admin-setting-' . $section); $PAGE->init_extra($section); -if (!isset($USER->adminediting)) { - $USER->adminediting = false; -} - -if ($PAGE->user_allowed_editing()) { - if ($adminediting == 1) { - $USER->adminediting = true; - } elseif ($adminediting == 0) { - $USER->adminediting = false; - } +if ($PAGE->user_allowed_editing() && $adminediting != -1) { + $USER->editing = $adminediting; } diff --git a/blocks/admin/block_admin.php b/blocks/admin/block_admin.php index 1b7a92d1cd..0b78486b3f 100644 --- a/blocks/admin/block_admin.php +++ b/blocks/admin/block_admin.php @@ -8,7 +8,7 @@ class block_admin extends block_list { function get_content() { - global $CFG, $USER, $SITE, $COURSE, $DB; + global $CFG, $USER, $SITE, $COURSE, $DB, $PAGE; if ($this->content !== NULL) { return $this->content; @@ -57,7 +57,7 @@ class block_admin extends block_list { if ($course->id !== SITEID and has_capability('moodle/course:update', $context)) { $this->content->icons[]=''; - if (isediting($this->instance->pageid)) { + if ($PAGE->user_is_editing()) { $this->content->items[]=''.get_string('turneditingoff').''; } else { $this->content->items[]=''.get_string('turneditingon').''; diff --git a/blocks/course_summary/block_course_summary.php b/blocks/course_summary/block_course_summary.php index 2846cb3fec..8ffc2448d8 100644 --- a/blocks/course_summary/block_course_summary.php +++ b/blocks/course_summary/block_course_summary.php @@ -14,7 +14,7 @@ class block_course_summary extends block_base { } function get_content() { - global $CFG, $COURSE; + global $CFG, $COURSE, $PAGE; if($this->content !== NULL) { return $this->content; @@ -28,7 +28,7 @@ class block_course_summary extends block_base { $options = new object(); $options->noclean = true; // Don't clean Javascripts etc $this->content->text = format_text($COURSE->summary, FORMAT_HTML, $options); - if (isediting($COURSE->id)) { // ?? courseid param not there?? + if ($PAGE->user_is_editing()) { if($COURSE->id == SITEID) { $editpage = $CFG->wwwroot.'/'.$CFG->admin.'/settings.php?section=frontpagesettings'; } else { diff --git a/blocks/site_main_menu/block_site_main_menu.php b/blocks/site_main_menu/block_site_main_menu.php index 31f958b400..144a6640d2 100644 --- a/blocks/site_main_menu/block_site_main_menu.php +++ b/blocks/site_main_menu/block_site_main_menu.php @@ -11,7 +11,7 @@ class block_site_main_menu extends block_list { } function get_content() { - global $USER, $CFG, $COURSE, $DB; + global $USER, $CFG, $COURSE, $DB, $PAGE; if ($this->content !== NULL) { return $this->content; @@ -35,8 +35,8 @@ class block_site_main_menu extends block_list { require_once($CFG->dirroot.'/course/lib.php'); $context = get_context_instance(CONTEXT_COURSE, $course->id); - $isediting = isediting($this->instance->pageid) && has_capability('moodle/course:manageactivities', $context); - $modinfo =& get_fast_modinfo($course); + $isediting = $PAGE->user_is_editing() && has_capability('moodle/course:manageactivities', $context); + $modinfo = get_fast_modinfo($course); /// extra fast view mode if (!$isediting) { diff --git a/blocks/social_activities/block_social_activities.php b/blocks/social_activities/block_social_activities.php index 65d5c2c84e..06f29dfde3 100644 --- a/blocks/social_activities/block_social_activities.php +++ b/blocks/social_activities/block_social_activities.php @@ -11,7 +11,7 @@ class block_social_activities extends block_list { } function get_content() { - global $USER, $CFG, $COURSE, $DB; + global $USER, $CFG, $COURSE, $DB, $PAGE; if ($this->content !== NULL) { return $this->content; @@ -35,7 +35,7 @@ class block_social_activities extends block_list { require_once($CFG->dirroot.'/course/lib.php'); $context = get_context_instance(CONTEXT_COURSE, $course->id); - $isediting = isediting($this->instance->pageid) && has_capability('moodle/course:manageactivities', $context); + $isediting = $PAGE->user_is_editing() && has_capability('moodle/course:manageactivities', $context); $modinfo = get_fast_modinfo($course); /// extra fast view mode diff --git a/blog/blogpage.php b/blog/blogpage.php index 2f3e952dd5..19c8635c1b 100644 --- a/blog/blogpage.php +++ b/blog/blogpage.php @@ -56,18 +56,6 @@ class page_blog extends page_base { return false; } - // Also, admins are considered to have "always on" editing (I wanted to avoid duplicating - // the code that turns editing on/off here; you can roll your own or copy course/view.php). - function user_is_editing() { - global $SESSION; - - if (isloggedin() && !isguest()) { - $this->editing = !empty($SESSION->blog_editing_enabled); - return $this->editing; - } - return false; - } - //over-ride parent method's print_header because blog already passes more than just the title along function print_header($pageTitle='', $pageHeading='', $pageNavigation='', $pageFocus='', $pageMeta='') { global $USER; @@ -82,18 +70,18 @@ class page_blog extends page_base { /////////// Blog page specific functions function get_extra_header_string() { - global $SESSION, $CFG, $USER; + global $CFG, $USER; $editformstring = ''; if ($this->user_allowed_editing()) { - if (!empty($SESSION->blog_editing_enabled)) { + if ($this->user_is_editing()) { $editingString = get_string('turneditingoff'); } else { $editingString = get_string('turneditingon'); } $params = $this->url->params(); - $params['edit'] = empty($SESSION->blog_editing_enabled) ? 1 : 0; + $params['edit'] = $this->user_is_editing() ? 0 : 1; $paramstring = ''; foreach ($params as $key=>$val) { $paramstring .= ''; diff --git a/blog/index.php b/blog/index.php index 565d1ca899..f06fadf0bf 100755 --- a/blog/index.php +++ b/blog/index.php @@ -29,10 +29,9 @@ if (empty($CFG->bloglevel)) { $sitecontext = get_context_instance(CONTEXT_SYSTEM); - // change block edit staus if not guest and logged in if (isloggedin() and !isguest() and $edit != -1) { - $SESSION->blog_editing_enabled = $edit; + $USER->editing = $edit; } if (empty($filtertype)) { diff --git a/blog/lib.php b/blog/lib.php index 8d9026375c..8f0fbc1c5e 100755 --- a/blog/lib.php +++ b/blog/lib.php @@ -53,17 +53,6 @@ } - /** - * Adaptation of isediting in moodlelib.php for blog module - * @return bool - */ - function blog_isediting() { - global $SESSION; - - return !empty($SESSION->blog_editing_enabled); - } - - /** * This function is in lib and not in BlogInfo because entries being searched * might be found in any number of blogs rather than just one. diff --git a/course/category.php b/course/category.php index 73f88ccbe5..394a769e36 100644 --- a/course/category.php +++ b/course/category.php @@ -39,9 +39,9 @@ if (update_category_button($category->id)) { if ($categoryedit !== -1) { - $USER->categoryediting = $categoryedit; + $USER->editing = $categoryedit; } - $editingon = !empty($USER->categoryediting); + $editingon = $PAGE->user_is_editing(); $navbaritem = update_category_button($category->id); // Must call this again after updating the state. } else { $navbaritem = print_course_search('', true, 'navbar'); diff --git a/course/format/topics/format.php b/course/format/topics/format.php index c1cdd512ba..6971c2d5a6 100644 --- a/course/format/topics/format.php +++ b/course/format/topics/format.php @@ -125,7 +125,7 @@ $section = 0; $thissection = $sections[$section]; - if ($thissection->summary or $thissection->sequence or isediting($course->id)) { + if ($thissection->summary or $thissection->sequence or $PAGE->user_is_editing()) { // Note, no need for a 'left side' cell or DIV. // Note, 'right side' is BEFORE content. @@ -141,7 +141,7 @@ $summaryformatoptions->noclean = true; echo format_text($summarytext, FORMAT_HTML, $summaryformatoptions); - if (isediting($course->id) && has_capability('moodle/course:update', $coursecontext)) { + if ($PAGE->user_is_editing() && has_capability('moodle/course:update', $coursecontext)) { echo ''.$streditsummary.''; @@ -150,7 +150,7 @@ print_section($course, $thissection, $mods, $modnamesused); - if (isediting($course->id)) { + if ($PAGE->user_is_editing()) { print_section_add_menus($course, $section, $modnames); } @@ -227,7 +227,7 @@ ''.$strshowonlytopic.'
'; } - if (isediting($course->id) && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { + if ($PAGE->user_is_editing() && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { if ($course->marker == $section) { // Show the "light globe" on/off echo ''.''.$strmarkedthistopic.'
'; @@ -266,7 +266,7 @@ echo ' '; } - if (isediting($course->id) && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { + if ($PAGE->user_is_editing() && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { echo ' '. ''.$streditsummary.'

'; } @@ -274,7 +274,7 @@ print_section($course, $thissection, $mods, $modnamesused); - if (isediting($course->id)) { + if ($PAGE->user_is_editing()) { print_section_add_menus($course, $section, $modnames); } } diff --git a/course/format/weeks/format.php b/course/format/weeks/format.php index 4eaa588c3a..25143e7ab2 100644 --- a/course/format/weeks/format.php +++ b/course/format/weeks/format.php @@ -115,7 +115,7 @@ $section = 0; $thissection = $sections[$section]; - if ($thissection->summary or $thissection->sequence or isediting($course->id)) { + if ($thissection->summary or $thissection->sequence or $PAGE->user_is_editing()) { // Note, 'right side' is BEFORE content. echo '
  • '; @@ -131,7 +131,7 @@ $summaryformatoptions->noclean = true; echo format_text($summarytext, FORMAT_HTML, $summaryformatoptions); - if (isediting($course->id) && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { + if ($PAGE->user_is_editing() && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { echo '

    '.$streditsummary.'

    '; @@ -140,7 +140,7 @@ print_section($course, $thissection, $mods, $modnamesused); - if (isediting($course->id)) { + if ($PAGE->user_is_editing()) { print_section_add_menus($course, $section, $modnames); } @@ -223,7 +223,7 @@ ''.$strshowonlyweek.'
    '; } - if (isediting($course->id) && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { + if ($PAGE->user_is_editing() && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { if ($thissection->visible) { // Show the hide/show eye echo ''. ''.$strweekhide.'
    '; @@ -256,7 +256,7 @@ $summaryformatoptions->noclean = true; echo format_text($thissection->summary, FORMAT_HTML, $summaryformatoptions); - if (isediting($course->id) && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { + if ($PAGE->user_is_editing() && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) { echo ' '. ''.$streditsummary.'

    '; } @@ -264,7 +264,7 @@ print_section($course, $thissection, $mods, $modnamesused); - if (isediting($course->id)) { + if ($PAGE->user_is_editing()) { print_section_add_menus($course, $section, $modnames); } } diff --git a/course/index.php b/course/index.php index 0613b082c6..5ad0156345 100644 --- a/course/index.php +++ b/course/index.php @@ -26,9 +26,9 @@ if (update_category_button()) { if ($categoryedit !== -1) { - $USER->categoryediting = $categoryedit; + $USER->editing = $categoryedit; } - $adminediting = !empty($USER->categoryediting); + $adminediting = $PAGE->user_is_editing(); } else { $adminediting = false; } diff --git a/course/lib.php b/course/lib.php index ac584e7af8..82a5044172 100644 --- a/course/lib.php +++ b/course/lib.php @@ -1367,7 +1367,7 @@ function set_section_visible($courseid, $sectionnumber, $visibility) { * Prints a section full of activity modules */ function print_section($course, $section, $mods, $modnamesused, $absolute=false, $width="100%", $hidecompletion=false) { - global $CFG, $USER, $DB; + global $CFG, $USER, $DB, $PAGE; static $initialised; @@ -1385,7 +1385,7 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false, if (!isset($initialised)) { $groupbuttons = ($course->groupmode or (!$course->groupmodeforce)); $groupbuttonslink = (!$course->groupmodeforce); - $isediting = isediting($course->id); + $isediting = $PAGE->user_is_editing(); $ismoving = $isediting && ismoving($course->id); if ($ismoving) { $strmovehere = get_string("movehere"); @@ -2181,7 +2181,7 @@ function print_course_request_buttons($systemcontext) { * to see it. */ function update_category_button($categoryid = 0) { - global $CFG, $USER; + global $CFG, $PAGE; // Check permissions. $context = get_category_or_system_context($categoryid); @@ -2190,7 +2190,7 @@ function update_category_button($categoryid = 0) { } // Work out the appropriate action. - if (!empty($USER->categoryediting)) { + if ($PAGE->user_is_editing()) { $label = get_string('turneditingoff'); $edit = 'off'; } else { diff --git a/course/search.php b/course/search.php index 31f97c8c6c..a15762c6a6 100644 --- a/course/search.php +++ b/course/search.php @@ -35,9 +35,9 @@ if (update_category_button()) { if ($edit !== -1) { - $USER->categoryediting = $edit; + $USER->editing = $edit; } - $adminediting = !empty($USER->categoryediting); + $adminediting = $PAGE->user_is_editing(); } else { $adminediting = false; } diff --git a/lib/adminlib.php b/lib/adminlib.php index 418f48e15f..b0a325883e 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -3931,17 +3931,8 @@ function admin_externalpage_setup($section, $extrabutton = '', } $adminediting = optional_param('adminedit', -1, PARAM_BOOL); - - if (!isset($USER->adminediting)) { - $USER->adminediting = false; - } - - if ($PAGE->user_allowed_editing()) { - if ($adminediting == 1) { - $USER->adminediting = true; - } elseif ($adminediting == 0) { - $USER->adminediting = false; - } + if ($PAGE->user_allowed_editing() && $adminediting != -1) { + $USER->editing = $adminediting; } } diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 532ef40b62..05bc958566 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -2628,6 +2628,7 @@ function isguestuser($user=NULL) { } /** + * @deprecated since Moodle 2.0 - use $PAGE->user_is_editing() instead. * Determines if the currently logged in user is in editing mode. * Note: originally this function had $userid parameter - it was not usable anyway * @@ -2635,14 +2636,9 @@ function isguestuser($user=NULL) { * @return bool */ function isediting() { - global $USER, $PAGE; - - if (empty($USER->editing)) { - return false; - } elseif (is_object($PAGE) && method_exists($PAGE,'user_allowed_editing')) { - return $PAGE->user_allowed_editing(); - } - return true;//false; + global $PAGE; + debugging('call to deprecated function isediting(). Please use $PAGE->user_is_editing() instead', DEBUG_DEVELOPER); + return $PAGE->user_is_editing(); } /** diff --git a/lib/pagelib.php b/lib/pagelib.php index abde579d0c..b2d5b392c3 100644 --- a/lib/pagelib.php +++ b/lib/pagelib.php @@ -211,6 +211,25 @@ class moodle_page { } } +/// Other information getting methods ========================================== + + /** + * @return boolean should the current user see this page in editing mode. + * That is, are they allowed to edit this page, and are they currently in + * editing mode. + */ + public function user_is_editing() { + global $USER; + return !empty($USER->editing) && $this->user_allowed_editing(); + } + + /** + * @return boolean does the user have permission to see this page in editing mode. + */ + public function user_allowed_editing() { + return true; // TODO + } + /// Setter methods ============================================================= /** @@ -738,20 +757,6 @@ class page_base extends moodle_page { /// Class Functions - // USER-RELATED THINGS - - // By default, no user is editing anything and none CAN edit anything. Developers - // will have to override these settings to let Moodle know when it should grant - // editing rights to the user viewing the page. - function user_allowed_editing() { - trigger_error('Page class does not implement method user_allowed_editing()', E_USER_WARNING); - return false; - } - function user_is_editing() { - trigger_error('Page class does not implement method user_is_editing()', E_USER_WARNING); - return false; - } - // HTML OUTPUT SECTION // We have absolutely no idea what derived pages are all about @@ -860,15 +865,6 @@ class page_course extends page_base { } } - // Is the user actually editing this course page or "sticky page" right now? - function user_is_editing() { - if (has_capability('moodle/site:manageblocks', get_context_instance(CONTEXT_SYSTEM)) && defined('ADMIN_STICKYBLOCKS')) { - //always in edit mode on sticky page - return true; - } - return isediting($this->id); - } - // HTML OUTPUT SECTION // This function prints out the common part of the page's header. @@ -994,11 +990,6 @@ class page_generic_activity extends page_base { return has_capability('moodle/course:manageactivities', get_context_instance(CONTEXT_MODULE, $this->modulerecord->id)); } - function user_is_editing() { - $this->init_full(); - return isediting($this->modulerecord->course); - } - function print_header($title, $morenavlinks = NULL, $bodytags = '', $meta = '') { global $USER, $CFG; diff --git a/lib/simpletest/testpagelib_moodlepage.php b/lib/simpletest/testpagelib_moodlepage.php index 7e2e3001dc..0240d0a4d9 100644 --- a/lib/simpletest/testpagelib_moodlepage.php +++ b/lib/simpletest/testpagelib_moodlepage.php @@ -453,4 +453,39 @@ class moodle_page_categories_test extends UnitTestCaseUsingDatabase { } } +/** + * Test functions that affect filter_active table with contextid = $syscontextid. + */ +class moodle_page_editing_test extends UnitTestCase { + protected $testpage; + protected $originaluserediting; + + public function setUp() { + global $USER; + $this->originaluserediting = !empty($USER->editing); + $this->testpage = new testable_moodle_page(); + } + + public function tearDown() { + global $USER; + $this->testpage = NULL; + $USER->editing = $this->originaluserediting; + } + + public function test_user_is_editing_on() { + // Setup fixture + global $USER; + $USER->editing = true; + // Validate + $this->assertTrue($this->testpage->user_is_editing()); + } + + public function test_user_is_editing_off() { + // Setup fixture + global $USER; + $USER->editing = false; + // Validate + $this->assertFalse($this->testpage->user_is_editing()); + } +} ?> diff --git a/lib/weblib.php b/lib/weblib.php index 3bc59d1cbf..ab3c3d074b 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -5091,11 +5091,11 @@ function update_module_button($cmid, $ignored, $string) { */ function update_categories_search_button($search,$page,$perpage) { - global $CFG, $USER; + global $CFG, $PAGE; // not sure if this capability is the best here if (has_capability('moodle/category:manage', get_context_instance(CONTEXT_SYSTEM))) { - if (!empty($USER->categoryediting)) { + if ($PAGE->user_is_editing()) { $string = get_string("turneditingoff"); $edit = "off"; $perpage = 30; diff --git a/mod/scorm/locallib.php b/mod/scorm/locallib.php index 2d071bac23..529ac12481 100755 --- a/mod/scorm/locallib.php +++ b/mod/scorm/locallib.php @@ -665,7 +665,7 @@ function scorm_get_last_attempt($scormid, $userid) { } function scorm_course_format_display($user,$course) { - global $CFG, $DB; + global $CFG, $DB, $PAGE; $strupdate = get_string('update'); $strmodule = get_string('modulename','scorm'); @@ -681,7 +681,7 @@ function scorm_course_format_display($user,$course) { $colspan = ''; $headertext = '
    '.get_string('name').': '.format_string($scorm->name).''; if (has_capability('moodle/course:manageactivities', $context)) { - if (isediting($course->id)) { + if ($PAGE->user_is_editing()) { // Display update icon $path = $CFG->wwwroot.'/course'; $headertext .= ''. diff --git a/my/pagelib.php b/my/pagelib.php index 1c43a18280..a7a718bca7 100644 --- a/my/pagelib.php +++ b/my/pagelib.php @@ -13,14 +13,6 @@ class page_my_moodle extends page_base { return false; } - function user_is_editing() { - global $USER; - if (has_capability('moodle/my:manageblocks', get_context_instance(CONTEXT_SYSTEM)) && defined('ADMIN_STICKYBLOCKS')) { - return true; - } - return (!empty($USER->editing)); - } - function print_header($title) { global $USER, $CFG; diff --git a/tag/pagelib.php b/tag/pagelib.php index 658dc00074..44de6ad0bd 100644 --- a/tag/pagelib.php +++ b/tag/pagelib.php @@ -15,12 +15,6 @@ class page_tag extends page_base { return has_capability('moodle/tag:editblocks', $systemcontext); } - function user_is_editing() { - global $USER; - - return (!empty($USER->editing)); - } - //----------- printing funtions ----------- function print_header() {