From 42f103be4c793b71f3f68cc173219a1cb896bc7c Mon Sep 17 00:00:00 2001 From: skodak Date: Tue, 21 Apr 2009 08:57:20 +0000 Subject: [PATCH] MDL-18910 moving modedit features to modname_supports() --- course/moodleform_mod.php | 139 ++++++++++++++---------------------- lib/moodlelib.php | 16 +++++ mod/assignment/lib.php | 9 ++- mod/assignment/mod_form.php | 10 +-- mod/chat/lib.php | 19 ++++- mod/chat/mod_form.php | 6 +- mod/choice/lib.php | 7 ++ mod/choice/mod_form.php | 5 -- mod/data/lib.php | 10 ++- mod/data/mod_form.php | 2 +- mod/feedback/lib.php | 7 ++ mod/feedback/mod_form.php | 8 +-- mod/forum/lib.php | 9 ++- mod/forum/mod_form.php | 6 +- mod/glossary/lib.php | 8 ++- mod/glossary/mod_form.php | 2 +- mod/label/lib.php | 19 +++++ mod/label/mod_form.php | 4 +- mod/lesson/lib.php | 8 ++- mod/lesson/mod_form.php | 6 +- mod/quiz/lib.php | 8 ++- mod/quiz/mod_form.php | 6 +- mod/resource/lib.php | 7 ++ mod/resource/mod_form.php | 2 +- mod/scorm/lib.php | 19 ++++- mod/scorm/mod_form.php | 6 +- mod/survey/lib.php | 18 ++++- mod/survey/mod_form.php | 6 +- mod/upgrade.txt | 2 +- mod/wiki/lib.php | 18 ++++- mod/wiki/mod_form.php | 6 +- 31 files changed, 238 insertions(+), 160 deletions(-) diff --git a/course/moodleform_mod.php b/course/moodleform_mod.php index 3df6d54886..7c275bd23e 100644 --- a/course/moodleform_mod.php +++ b/course/moodleform_mod.php @@ -1,11 +1,8 @@ libdir.'/formslib.php'); -if(!empty($CFG->enablecompletion)) { +if (!empty($CFG->enablecompletion) or !empty($CFG->enableavailability)) { require_once($CFG->libdir.'/completionlib.php'); } -if(!empty($CFG->enableavailability)) { - require_once($CFG->libdir.'/conditionlib.php'); -} /** * This class adds extra methods to form wrapper specific to be used for module @@ -20,38 +17,65 @@ class moodleform_mod extends moodleform { * * @var mixed */ - var $_instance; + protected $_instance; /** * Section of course that module instance will be put in or is in. * This is always the section number itself (column 'section' from 'course_sections' table). * * @var mixed */ - var $_section; + protected $_section; /** * Coursemodle record of the module that is being updated. Will be null if this is an 'add' form and not an * update one. * * @var mixed */ - var $_cm; + protected $_cm; /** * List of modform features */ - var $_features; - + protected $_features; /** * @var array Custom completion-rule elements, if enabled */ - var $_customcompletionelements; + protected $_customcompletionelements; + /** + * @var string name of module + */ + protected $_modname; function moodleform_mod($instance, $section, $cm) { $this->_instance = $instance; $this->_section = $section; $this->_cm = $cm; + // Guess module name + $matches = array(); + if (!preg_match('/^mod_([^_]+)_mod_form$/', get_class($this), $matches)) { + debugging('Use $modname parameter or rename form to mod_xx_mod_form, where xx is name of your module'); + print_error('unknownmodulename'); + } + $this->_modname = $matches[1]; + $this->init_features(); parent::moodleform('modedit.php'); } + protected function init_features() { + global $CFG; + + $this->_features = new object(); + $this->_features->groups = plugin_supports('mod', $this->_modname, FEATURE_GROUPS, true); + $this->_features->groupings = plugin_supports('mod', $this->_modname, FEATURE_GROUPINGS, false); + $this->_features->groupmembersonly = plugin_supports('mod', $this->_modname, FEATURE_GROUPMEMBERSONLY, false); + $this->_features->outcomes = (!empty($CFG->enableoutcomes) and plugin_supports('mod', $this->_modname, FEATURE_GRADE_OUTCOMES, true)); + $this->_features->hasgrades = plugin_supports('mod', $this->_modname, FEATURE_GRADE_HAS_GRADE, false); + $this->_features->idnumber = plugin_supports('mod', $this->_modname, FEATURE_IDNUMBER, true); + $this->_features->introeditor = plugin_supports('mod', $this->_modname, FEATURE_MODEDIT_INTRO_EDITOR, true); + $this->_features->defaultcompletion = plugin_supports('mod', $this->_modname, FEATURE_MODEDIT_DEFAULT_COMPLETION, true); + + $this->_features->gradecat = ($this->_features->outcomes or $this->_features->hasgrades); + } + /** * Only available on moodleform_mod. * @@ -276,70 +300,13 @@ class moodleform_mod extends moodleform { /** * Adds all the standard elements to a form to edit the settings for an activity module. - * - * @param mixed $features array or object describing supported features - groups, groupings, groupmembersonly, etc. - * @param string $modname Name of module e.g. 'label' */ - function standard_coursemodule_elements($features=null, $modname=null){ + function standard_coursemodule_elements(){ global $COURSE, $CFG, $DB; $mform =& $this->_form; - // Guess module name if not supplied - if (!$modname) { - $matches=array(); - if (!preg_match('/^mod_([^_]+)_mod_form$/', $this->_formname, $matches)) { - debugging('Use $modname parameter or rename form to mod_xx_mod_form, where xx is name of your module'); - print_error('unknownmodulename'); - } - $modname=$matches[1]; - } - - // deal with legacy $supportgroups param - if ($features === true or $features === false) { - $groupmode = $features; - $this->_features = new object(); - $this->_features->groups = $groupmode; - - } else if (is_array($features)) { - $this->_features = (object)$features; - - } else if (empty($features)) { - $this->_features = new object(); - - } else { - $this->_features = $features; - } - - if (!isset($this->_features->groups)) { - $this->_features->groups = true; - } - - if (!isset($this->_features->groupings)) { - $this->_features->groupings = false; - } - - if (!isset($this->_features->groupmembersonly)) { - $this->_features->groupmembersonly = false; - } - - if (!isset($this->_features->outcomes)) { - $this->_features->outcomes = true; - } - - if (!isset($this->_features->gradecat)) { - $this->_features->gradecat = true; - } - - if (!isset($this->_features->idnumber)) { - $this->_features->idnumber = true; - } - - if (!isset($this->_features->defaultcompletion)) { - $this->_features->defaultcompletion = true; - } - $outcomesused = false; - if (!empty($CFG->enableoutcomes) and $this->_features->outcomes) { + if ($this->_features->outcomes) { if ($outcomes = grade_outcome::fetch_all_available($COURSE->id)) { $outcomesused = true; $mform->addElement('header', 'modoutcomes', get_string('outcomes', 'grades')); @@ -401,9 +368,9 @@ class moodleform_mod extends moodleform { $mform->setHelpButton('availableuntil', array('conditiondates', get_string('help_conditiondates', 'condition'), 'condition')); // Conditions based on grades - $gradeoptions=array(); - $items=grade_item::fetch_all(array('courseid'=>$COURSE->id)); - $items=$items ? $items : array(); + $gradeoptions = array(); + $items = grade_item::fetch_all(array('courseid'=>$COURSE->id)); + $items = $items ? $items : array(); foreach($items as $id=>$item) { // Do not include grades for current item if (!empty($this->_cm) && $this->_cm->instance == $item->iteminstance @@ -411,12 +378,12 @@ class moodleform_mod extends moodleform { && $item->itemtype == 'mod') { continue; } - $gradeoptions[$id]=$item->get_name(); + $gradeoptions[$id] = $item->get_name(); } asort($gradeoptions); - $gradeoptions=array(0=>get_string('none','condition'))+$gradeoptions; + $gradeoptions = array(0=>get_string('none','condition'))+$gradeoptions; - $grouparray=array(); + $grouparray = array(); $grouparray[] =& $mform->createElement('select','conditiongradeitemid','',$gradeoptions); $grouparray[] =& $mform->createElement('static', '', '',' '.get_string('grade_atleast','condition').' '); $grouparray[] =& $mform->createElement('text', 'conditiongrademin','',array('size'=>3)); @@ -431,22 +398,22 @@ class moodleform_mod extends moodleform { // Get version with condition info and store it so we don't ask // twice if(!empty($this->_cm)) { - $ci = new condition_info($this->_cm,CONDITION_MISSING_EXTRATABLE); - $this->_cm=$ci->get_full_course_module(); - $count=count($this->_cm->conditionsgrade)+1; + $ci = new condition_info($this->_cm, CONDITION_MISSING_EXTRATABLE); + $this->_cm = $ci->get_full_course_module(); + $count = count($this->_cm->conditionsgrade)+1; } else { - $count=1; + $count = 1; } - $this->repeat_elements(array($group),$count,array(),'conditiongraderepeats','conditiongradeadds',2, - get_string('addgrades','condition'),true); + $this->repeat_elements(array($group), $count, array(), 'conditiongraderepeats', 'conditiongradeadds', 2, + get_string('addgrades', 'condition'), true); $mform->setHelpButton('conditiongradegroup[0]', array('gradecondition', get_string('help_gradecondition', 'condition'), 'condition')); // Conditions based on completion $completion = new completion_info($COURSE); if ($completion->is_enabled()) { - $completionoptions=array(); - $modinfo=get_fast_modinfo($COURSE); + $completionoptions = array(); + $modinfo = get_fast_modinfo($COURSE); foreach($modinfo->cms as $id=>$cm) { // Add each course-module if it: // (a) has completion turned on @@ -456,7 +423,7 @@ class moodleform_mod extends moodleform { } } asort($completionoptions); - $completionoptions=array(0=>get_string('none','condition'))+$completionoptions; + $completionoptions = array(0=>get_string('none','condition'))+$completionoptions; $completionvalues=array( COMPLETION_COMPLETE=>get_string('completion_complete','condition'), @@ -464,13 +431,13 @@ class moodleform_mod extends moodleform { COMPLETION_COMPLETE_PASS=>get_string('completion_pass','condition'), COMPLETION_COMPLETE_FAIL=>get_string('completion_fail','condition')); - $grouparray=array(); + $grouparray = array(); $grouparray[] =& $mform->createElement('select','conditionsourcecmid','',$completionoptions); $grouparray[] =& $mform->createElement('select','conditionrequiredcompletion','',$completionvalues); $group = $mform->createElement('group','conditioncompletiongroup', get_string('completioncondition', 'condition'),$grouparray); - $count=empty($this->_cm) ? 1 : count($this->_cm->conditionscompletion)+1; + $count = empty($this->_cm) ? 1 : count($this->_cm->conditionscompletion)+1; $this->repeat_elements(array($group),$count,array(), 'conditioncompletionrepeats','conditioncompletionadds',2, get_string('addcompletions','condition'),true); diff --git a/lib/moodlelib.php b/lib/moodlelib.php index e46cda2bc4..7076044063 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -300,11 +300,27 @@ define ('PASSWORD_NONALPHANUM', '.,;:!?_-+/*@#&$'); /** True if module can provide a grade */ define('FEATURE_GRADE_HAS_GRADE', 'grade_has_grade'); +/** True if module supports outcomes */ +define('FEATURE_GRADE_OUTCOMES', 'outcomes'); + /** True if module has code to track whether somebody viewed it */ define('FEATURE_COMPLETION_TRACKS_VIEWS', 'completion_tracks_views'); /** True if module has custom completion rules */ define('FEATURE_COMPLETION_HAS_RULES', 'completion_has_rules'); +/** True if module supports outcomes */ +define('FEATURE_IDNUMBER', 'idnumber'); +/** True if module supports groups */ +define('FEATURE_GROUPS', 'groups'); +/** True if module supports groupings */ +define('FEATURE_GROUPINGS', 'groupings'); +/** True if module supports groupmembersonly */ +define('FEATURE_GROUPMEMBERSONLY', 'groupmembersonly'); + +/** True if module supports intro editor */ +define('FEATURE_MODEDIT_INTRO_EDITOR', 'modedit_intro_editor'); +/** True if module has default completion */ +define('FEATURE_MODEDIT_DEFAULT_COMPLETION', 'modedit_default_completion'); /// PARAMETER HANDLING //////////////////////////////////////////////////// diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index 28a143d57c..bc9c50191a 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -3238,9 +3238,14 @@ class assignment_portfolio_caller extends portfolio_module_caller_base { */ function assignment_supports($feature) { switch($feature) { + case FEATURE_GROUPS: return true; + case FEATURE_GROUPINGS: return true; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_OUTCOMES: return true; + default: return null; } } -?> diff --git a/mod/assignment/mod_form.php b/mod/assignment/mod_form.php index be17f2b437..7802a6102a 100644 --- a/mod/assignment/mod_form.php +++ b/mod/assignment/mod_form.php @@ -60,16 +60,10 @@ class mod_assignment_mod_form extends moodleform_mod { $mform->addElement('header', 'typedesc', get_string('type'.$type,'assignment')); $assignmentinstance->setup_elements($mform); - $features = new stdClass; - $features->groups = true; - $features->groupings = true; - $features->groupmembersonly = true; - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); $this->add_action_buttons(); } - - } -?> + diff --git a/mod/chat/lib.php b/mod/chat/lib.php index 212e4bc263..9dd173dcf4 100644 --- a/mod/chat/lib.php +++ b/mod/chat/lib.php @@ -971,4 +971,21 @@ class chat_portfolio_caller extends portfolio_module_caller_base { } } -?> +/** + * @param string $feature FEATURE_xx constant for requested feature + * @return mixed True if module supports feature, null if doesn't know + */ +function chat_supports($feature) { + switch($feature) { + case FEATURE_GROUPS: return true; + case FEATURE_GROUPINGS: return true; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; + case FEATURE_COMPLETION_TRACKS_VIEWS: return false; + case FEATURE_GRADE_HAS_GRADE: return false; + case FEATURE_GRADE_OUTCOMES: return true; + + default: return null; + } +} + diff --git a/mod/chat/mod_form.php b/mod/chat/mod_form.php index a4b2c74eb5..add670f8d7 100644 --- a/mod/chat/mod_form.php +++ b/mod/chat/mod_form.php @@ -50,11 +50,7 @@ class mod_chat_mod_form extends moodleform_mod { $mform->addElement('selectyesno', 'studentlogs', get_string('studentseereports', 'chat')); - $features = new stdClass; - $features->groups = true; - $features->groupings = true; - $features->groupmembersonly = true; - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); $this->add_action_buttons(); } diff --git a/mod/choice/lib.php b/mod/choice/lib.php index e448bbeb7f..3cc1325a6d 100644 --- a/mod/choice/lib.php +++ b/mod/choice/lib.php @@ -762,7 +762,14 @@ function choice_get_extra_capabilities() { */ function choice_supports($feature) { switch($feature) { + case FEATURE_GROUPS: return true; + case FEATURE_GROUPINGS: return true; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; + case FEATURE_GRADE_HAS_GRADE: return false; + case FEATURE_GRADE_OUTCOMES: return false; + default: return null; } } diff --git a/mod/choice/mod_form.php b/mod/choice/mod_form.php index d54ef3e9b2..19d455027b 100644 --- a/mod/choice/mod_form.php +++ b/mod/choice/mod_form.php @@ -91,11 +91,6 @@ class mod_choice_mod_form extends moodleform_mod { //------------------------------------------------------------------------------- - $features = new stdClass; - $features->groups = true; - $features->groupings = true; - $features->groupmembersonly = true; - $features->gradecat = false; $this->standard_coursemodule_elements($features); //------------------------------------------------------------------------------- $this->add_action_buttons(); diff --git a/mod/data/lib.php b/mod/data/lib.php index a36e251bcc..273015f1a1 100755 --- a/mod/data/lib.php +++ b/mod/data/lib.php @@ -2325,10 +2325,16 @@ function data_get_extra_capabilities() { */ function data_supports($feature) { switch($feature) { + case FEATURE_GROUPS: return true; + case FEATURE_GROUPINGS: return true; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_OUTCOMES: return true; + default: return null; - } + } } function data_export_csv($export, $delimiter_name, $dataname, $count, $return=false) { global $CFG; diff --git a/mod/data/mod_form.php b/mod/data/mod_form.php index 8c20179814..e1c910cddf 100644 --- a/mod/data/mod_form.php +++ b/mod/data/mod_form.php @@ -62,7 +62,7 @@ class mod_data_mod_form extends moodleform_mod { $mform->disabledIf('scale', 'assessed'); - $this->standard_coursemodule_elements(array('groups'=>true, 'groupings'=>true, 'groupmembersonly'=>true)); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons diff --git a/mod/feedback/lib.php b/mod/feedback/lib.php index 871585429b..cf56fdceea 100644 --- a/mod/feedback/lib.php +++ b/mod/feedback/lib.php @@ -35,7 +35,14 @@ if(!isset($SESSION->feedback) OR !is_object($SESSION->feedback)) { */ function feedback_supports($feature) { switch($feature) { + case FEATURE_GROUPS: return true; + case FEATURE_GROUPINGS: return true; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; + case FEATURE_GRADE_HAS_GRADE: return false; + case FEATURE_GRADE_OUTCOMES: return false; + default: return null; } } diff --git a/mod/feedback/mod_form.php b/mod/feedback/mod_form.php index 1365def081..10f955534d 100644 --- a/mod/feedback/mod_form.php +++ b/mod/feedback/mod_form.php @@ -85,13 +85,7 @@ class mod_feedback_mod_form extends moodleform_mod { $mform->addElement('htmleditor', 'page_after_submit', get_string("page_after_submit", "feedback"), array('rows' => 20)); $mform->setType('page_after_submit', PARAM_RAW); //------------------------------------------------------------------------------- - $features = new stdClass; - $features->groups = true; - $features->groupings = true; - $features->groupmembersonly = true; - $features->gradecat = false; - $features->idnumber = false; - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons $this->add_action_buttons(); diff --git a/mod/forum/lib.php b/mod/forum/lib.php index c76ce61274..04fadf769c 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -237,8 +237,15 @@ function forum_delete_instance($id) { */ function forum_supports($feature) { switch($feature) { + case FEATURE_GROUPS: return true; + case FEATURE_GROUPINGS: return true; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_COMPLETION_HAS_RULES: return true; + case FEATURE_COMPLETION_HAS_RULES: return true; + case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_OUTCOMES: return true; + default: return null; } } diff --git a/mod/forum/mod_form.php b/mod/forum/mod_form.php index 3e16366f6a..b2d049bc5f 100644 --- a/mod/forum/mod_form.php +++ b/mod/forum/mod_form.php @@ -141,11 +141,7 @@ class mod_forum_mod_form extends moodleform_mod { $mform->disabledIf('warnafter', 'blockperiod', 'eq', 0); //------------------------------------------------------------------------------- - $features = new stdClass; - $features->groups = true; - $features->groupings = true; - $features->groupmembersonly = true; - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons $this->add_action_buttons(); diff --git a/mod/glossary/lib.php b/mod/glossary/lib.php index 3b69bd68be..da878e71e4 100644 --- a/mod/glossary/lib.php +++ b/mod/glossary/lib.php @@ -2274,8 +2274,14 @@ function glossary_get_extra_capabilities() { */ function glossary_supports($feature) { switch($feature) { + case FEATURE_GROUPS: return false; + case FEATURE_GROUPINGS: return false; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_OUTCOMES: return true; + default: return null; } } diff --git a/mod/glossary/mod_form.php b/mod/glossary/mod_form.php index 5c6509264a..cba8c0102d 100644 --- a/mod/glossary/mod_form.php +++ b/mod/glossary/mod_form.php @@ -147,7 +147,7 @@ class mod_glossary_mod_form extends moodleform_mod { $mform->disabledIf('assesstimefinish', 'ratingtime'); //------------------------------------------------------------------------------- - $this->standard_coursemodule_elements(array('groups'=>false, 'groupmembersonly'=>true)); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons diff --git a/mod/label/lib.php b/mod/label/lib.php index d6a89e0e98..a8a2e2e8de 100644 --- a/mod/label/lib.php +++ b/mod/label/lib.php @@ -135,4 +135,23 @@ function lable_get_extra_capabilities() { return array('moodle/site:accessallgroups'); } +/** + * @param string $feature FEATURE_xx constant for requested feature + * @return mixed True if module supports feature, null if doesn't know + */ +function label_supports($feature) { + switch($feature) { + case FEATURE_IDNUMBER: return false; + case FEATURE_GROUPS: return false; + case FEATURE_GROUPINGS: return false; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return false; + case FEATURE_COMPLETION_TRACKS_VIEWS: return false; + case FEATURE_GRADE_HAS_GRADE: return false; + case FEATURE_GRADE_OUTCOMES: return false; + + default: return null; + } +} + ?> diff --git a/mod/label/mod_form.php b/mod/label/mod_form.php index a32cc1b7e9..c8611cf64d 100644 --- a/mod/label/mod_form.php +++ b/mod/label/mod_form.php @@ -12,9 +12,7 @@ class mod_label_mod_form extends moodleform_mod { $mform->addRule('content', get_string('required'), 'required', null, 'client'); $mform->setHelpButton('content', array('questions', 'richtext2'), false, 'editorhelpbutton'); - $features = array('groups'=>false, 'groupings'=>false, 'groupmembersonly'=>true, - 'outcomes'=>false, 'gradecat'=>false, 'idnumber'=>false); - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons diff --git a/mod/lesson/lib.php b/mod/lesson/lib.php index 4b216b6d17..e3893b79ba 100644 --- a/mod/lesson/lib.php +++ b/mod/lesson/lib.php @@ -717,8 +717,14 @@ function lesson_get_extra_capabilities() { */ function lesson_supports($feature) { switch($feature) { + case FEATURE_GROUPS: return false; + case FEATURE_GROUPINGS: return false; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; - case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_OUTCOMES: return true; + default: return null; } } diff --git a/mod/lesson/mod_form.php b/mod/lesson/mod_form.php index bf03b0c557..5da6c9768b 100644 --- a/mod/lesson/mod_form.php +++ b/mod/lesson/mod_form.php @@ -281,11 +281,7 @@ class mod_lesson_mod_form extends moodleform_mod { $mform->setDefault('lessondefault', 0); //------------------------------------------------------------------------------- - $features = new stdClass; - $features->groups = false; - $features->groupings = true; - $features->groupmembersonly = true; - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons $this->add_action_buttons(); diff --git a/mod/quiz/lib.php b/mod/quiz/lib.php index ba52e77b76..e03fbb62c5 100644 --- a/mod/quiz/lib.php +++ b/mod/quiz/lib.php @@ -1252,8 +1252,14 @@ function quiz_num_attempt_summary($quiz, $cm, $returnzero = false, $currentgroup */ function quiz_supports($feature) { switch($feature) { - case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GROUPS: return true; + case FEATURE_GROUPINGS: return true; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; + case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_OUTCOMES: return true; + default: return null; } } diff --git a/mod/quiz/mod_form.php b/mod/quiz/mod_form.php index 7d30863c4e..3b8f638b49 100644 --- a/mod/quiz/mod_form.php +++ b/mod/quiz/mod_form.php @@ -317,11 +317,7 @@ class mod_quiz_mod_form extends moodleform_mod { } //------------------------------------------------------------------------------- - $features = new stdClass; - $features->groups = true; - $features->groupings = true; - $features->groupmembersonly = true; - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons diff --git a/mod/resource/lib.php b/mod/resource/lib.php index 17e5d510d2..45e5bc8ca6 100644 --- a/mod/resource/lib.php +++ b/mod/resource/lib.php @@ -761,7 +761,14 @@ class resource_portfolio_caller extends portfolio_module_caller_base { */ function resource_supports($feature) { switch($feature) { + case FEATURE_GROUPS: return false; + case FEATURE_GROUPINGS: return false; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; + case FEATURE_GRADE_HAS_GRADE: return false; + case FEATURE_GRADE_OUTCOMES: return false; + default: return null; } } diff --git a/mod/resource/mod_form.php b/mod/resource/mod_form.php index 5078e7cf0a..243ee602d9 100644 --- a/mod/resource/mod_form.php +++ b/mod/resource/mod_form.php @@ -47,7 +47,7 @@ class mod_resource_mod_form extends moodleform_mod { $mform->addElement('header', 'typedesc', resource_get_name($type)); $this->_resinstance->setup_elements($mform); - $this->standard_coursemodule_elements(array('groups'=>false, 'groupmembersonly'=>true, 'gradecat'=>false)); + $this->standard_coursemodule_elements(); $this->add_action_buttons(); } diff --git a/mod/scorm/lib.php b/mod/scorm/lib.php index 04bd1f3869..cfcf39a5a6 100755 --- a/mod/scorm/lib.php +++ b/mod/scorm/lib.php @@ -811,4 +811,21 @@ function scorm_pluginfile($course, $cminfo, $context, $filearea, $args) { send_stored_file($file, $lifetime, 0, false); } -?> +/** + * @param string $feature FEATURE_xx constant for requested feature + * @return mixed True if module supports feature, null if doesn't know + */ +function scorm_supports($feature) { + switch($feature) { + case FEATURE_GROUPS: return false; + case FEATURE_GROUPINGS: return false; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; + case FEATURE_COMPLETION_TRACKS_VIEWS: return true; + case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_OUTCOMES: return true; + + default: return null; + } +} + diff --git a/mod/scorm/mod_form.php b/mod/scorm/mod_form.php index 33a0f097f8..5bb3a6cb09 100644 --- a/mod/scorm/mod_form.php +++ b/mod/scorm/mod_form.php @@ -231,11 +231,7 @@ class mod_scorm_mod_form extends moodleform_mod { //------------------------------------------------------------------------------- - $features = new stdClass; - $features->groups = false; - $features->groupings = true; - $features->groupmembersonly = true; - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons $this->add_action_buttons(); diff --git a/mod/survey/lib.php b/mod/survey/lib.php index a3143dc22e..f181b853f7 100644 --- a/mod/survey/lib.php +++ b/mod/survey/lib.php @@ -588,4 +588,20 @@ function survey_get_extra_capabilities() { return array('moodle/site:accessallgroups'); } -?> +/** + * @param string $feature FEATURE_xx constant for requested feature + * @return mixed True if module supports feature, null if doesn't know + */ +function survey_supports($feature) { + switch($feature) { + case FEATURE_GROUPS: return true; + case FEATURE_GROUPINGS: return true; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; + case FEATURE_COMPLETION_TRACKS_VIEWS: return true; + case FEATURE_GRADE_HAS_GRADE: return true; + case FEATURE_GRADE_OUTCOMES: return true; + + default: return null; + } +} \ No newline at end of file diff --git a/mod/survey/mod_form.php b/mod/survey/mod_form.php index b655044a4c..68fe5e0a80 100644 --- a/mod/survey/mod_form.php +++ b/mod/survey/mod_form.php @@ -37,11 +37,7 @@ class mod_survey_mod_form extends moodleform_mod { $mform->addElement('textarea', 'intro', get_string('customintro', 'survey'), 'wrap="virtual" rows="20" cols="75"'); $mform->setType('intro', PARAM_RAW); - $features = new stdClass; - $features->groups = true; - $features->groupings = true; - $features->groupmembersonly = true; - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons diff --git a/mod/upgrade.txt b/mod/upgrade.txt index 3e24896840..83330a99a9 100644 --- a/mod/upgrade.txt +++ b/mod/upgrade.txt @@ -12,11 +12,11 @@ required changes in code: * completely rewrite file handling * rewrite backup/restore * rewrite trusstext support - new db table columns needed +* migrade all module features from mod_edit.php form to lib.php/modulename_supports() function optional - no changes needed in older code: * portfolio support * course completion tracking support -* lib.php/xxx_supports() may describe module features and capabilities diff --git a/mod/wiki/lib.php b/mod/wiki/lib.php index 5b6fbe653a..3f75c579cf 100644 --- a/mod/wiki/lib.php +++ b/mod/wiki/lib.php @@ -1768,4 +1768,20 @@ function wiki_get_extra_capabilities() { return array('moodle/site:accessallgroups', 'moodle/site:viewfullnames'); } -?> +/** + * @param string $feature FEATURE_xx constant for requested feature + * @return mixed True if module supports feature, null if doesn't know + */ +function wiki_supports($feature) { + switch($feature) { + case FEATURE_GROUPS: return true; + case FEATURE_GROUPINGS: return true; + case FEATURE_GROUPMEMBERSONLY: return true; + case FEATURE_MODEDIT_INTRO_EDITOR: return true; + case FEATURE_COMPLETION_TRACKS_VIEWS: return true; + case FEATURE_GRADE_HAS_GRADE: return false; + case FEATURE_GRADE_OUTCOMES: return true; + + default: return null; + } +} \ No newline at end of file diff --git a/mod/wiki/mod_form.php b/mod/wiki/mod_form.php index 7a21151211..d288f2b258 100644 --- a/mod/wiki/mod_form.php +++ b/mod/wiki/mod_form.php @@ -83,11 +83,7 @@ class mod_wiki_mod_form extends moodleform_mod { $mform->setAdvanced('initialcontent'); //------------------------------------------------------------------------------- - $features = new stdClass; - $features->groups = true; - $features->groupings = true; - $features->groupmembersonly = true; - $this->standard_coursemodule_elements($features); + $this->standard_coursemodule_elements(); //------------------------------------------------------------------------------- // buttons $this->add_action_buttons(); -- 2.39.5