MDL-10383 adding new standard elements method - modules now must specify what they support (groups/groupings/groupmembersonly); by default only groupmode selector is enabled

This commit is contained in:
skodak
2007-08-20 07:27:04 +00:00
parent f9bb6a98d8
commit e04ff2d559
5 changed files with 70 additions and 36 deletions
+22 -19
View File
@@ -208,11 +208,16 @@
$updateinstancefunction = $fromform->modulename."_update_instance";
if (!empty($fromform->update)) {
if (!isset($fromform->groupingid)) {
$fromform->groupingid = 0;
}
if (isset($fromform->name)) {
if (trim($fromform->name) == '') {
unset($fromform->name);
}
if (!isset($fromform->groupmembersonly)) {
$fromform->groupmembersonly = 0;
}
if (!isset($fromform->groupmode)) {
$fromform->groupmode = 0;
}
$returnfromfunc = $updateinstancefunction($fromform);
@@ -224,18 +229,9 @@
}
set_coursemodule_visible($fromform->coursemodule, $fromform->visible);
if (isset($fromform->groupmode)) {
set_coursemodule_groupmode($fromform->coursemodule, $fromform->groupmode);
}
if (isset($fromform->groupingid)) {
set_coursemodule_groupingid($fromform->coursemodule, $fromform->groupingid);
}
if (isset($fromform->groupmembersonly)) {
set_coursemodule_groupmembersonly($fromform->coursemodule, $fromform->groupmembersonly);
}
set_coursemodule_groupmode($fromform->coursemodule, $fromform->groupmode);
set_coursemodule_groupingid($fromform->coursemodule, $fromform->groupingid);
set_coursemodule_groupmembersonly($fromform->coursemodule, $fromform->groupmembersonly);
// set cm id number
set_coursemodule_idnumber($fromform->coursemodule, $fromform->cmidnumber);
@@ -248,13 +244,20 @@
"$fromform->instance", $fromform->coursemodule);
} else if (!empty($fromform->add)){
if (!course_allowed_module($course,$fromform->modulename)) {
error("This module ($fromform->modulename) has been disabled for this particular course");
}
if (!isset($fromform->name) || trim($fromform->name) == '') {
$fromform->name = get_string("modulename", $fromform->modulename);
if (!isset($fromform->groupingid)) {
$fromform->groupingid = 0;
}
if (!isset($fromform->groupmembersonly)) {
$fromform->groupmembersonly = 0;
}
if (!isset($fromform->groupmode)) {
$fromform->groupmode = 0;
}
$returnfromfunc = $addinstancefunction($fromform);
+45 -14
View File
@@ -85,6 +85,11 @@ class moodleform_mod extends moodleform {
$errors = array();
$name = trim($data['name']);
if ($name == '') {
$errors['name'] = get_string('required');
}
$grade_item = grade_item::fetch(array('itemtype'=>'mod', 'itemmodule'=>$data['modulename'],
'iteminstance'=>$data['instance'], 'itemnumber'=>0, 'courseid'=>$COURSE->id));
if ($data['coursemodule']) {
@@ -123,13 +128,37 @@ class moodleform_mod extends moodleform {
/**
* Adds all the standard elements to a form to edit the settings for an activity module.
*
* @param bool $supportsgroups does this module support groups?
* @param bool $supportgroupmembersonly does this module support groupmembersonly access?
* @param mixed array or object describing supported features - groups, groupings, groupmembersonly
*/
function standard_coursemodule_elements($supportsgroups=true, $supportgroupmembersonly=false){
function standard_coursemodule_elements($features=null){
global $COURSE, $CFG;
$mform =& $this->_form;
// deal with legacy $supportgroups param
if ($features === true or $features === false) {
$groupmode = $features;
$features = new object();
$features->groups = $groupmode;
} else if (is_array($features)) {
$features = (object)$features;
} else if (empty($features)) {
$features = new object();
}
if (!isset($features->groups)) {
$features->groups = true;
}
if (!isset($features->groupings)) {
$features->groupings = false;
}
if (!isset($features->groupmembersonly)) {
$features->groupmembersonly = false;
}
if (!empty($CFG->enableoutcomes)) {
if ($outcomes = grade_outcome::fetch_all_available($COURSE->id)) {
$mform->addElement('header', 'modoutcomes', get_string('outcomes', 'grades'));
@@ -140,23 +169,25 @@ class moodleform_mod extends moodleform {
}
$mform->addElement('header', 'modstandardelshdr', get_string('modstandardels', 'form'));
if ($supportsgroups){
if ($features->groups){
$mform->addElement('modgroupmode', 'groupmode', get_string('groupmode'));
}
if (!empty($CFG->enablegroupings)) {
//groupings selector
$options = array();
$options[0] = get_string('none');
if ($groupings = get_records('groupings', 'courseid', $COURSE->id)) {
foreach ($groupings as $grouping) {
$options[$grouping->id] = format_string($grouping->name);
if ($features->groupings or $features->groupmembersonly) {
//groupings selector - used for normal grouping mode or also when restricting access with groupmembersonly
$options = array();
$options[0] = get_string('none');
if ($groupings = get_records('groupings', 'courseid', $COURSE->id)) {
foreach ($groupings as $grouping) {
$options[$grouping->id] = format_string($grouping->name);
}
}
$mform->addElement('select', 'groupingid', get_string('grouping', 'group'), $options);
$mform->setAdvanced('groupingid');
}
$mform->addElement('select', 'groupingid', get_string('grouping', 'group'), $options);
$mform->setAdvanced('groupingid');
if ($supportgroupmembersonly) {
if ($features->groupmembersonly) {
$mform->addElement('advcheckbox', 'groupmembersonly', get_string('groupmembersonly', 'group'));
$mform->setAdvanced('groupmembersonly');
}
+1 -1
View File
@@ -143,7 +143,7 @@ class mod_glossary_mod_form extends moodleform_mod {
$mform->disabledIf('assesstimefinish', 'ratingtime');
//-------------------------------------------------------------------------------
$this->standard_coursemodule_elements(false);
$this->standard_coursemodule_elements(array('groups'=>false));
//-------------------------------------------------------------------------------
// buttons
+1 -1
View File
@@ -278,7 +278,7 @@ class mod_lesson_mod_form extends moodleform_mod {
$mform->setDefault('lessondefault', 0);
//-------------------------------------------------------------------------------
$this->standard_coursemodule_elements(false);
$this->standard_coursemodule_elements(array('groups'=>false));
//-------------------------------------------------------------------------------
// buttons
$this->add_action_buttons();
+1 -1
View File
@@ -43,7 +43,7 @@ class mod_resource_mod_form extends moodleform_mod {
$mform->addElement('header', 'typedesc', get_string('resourcetype'.$type,'resource'));
$this->_resinstance->setup_elements($mform);
$this->standard_coursemodule_elements(false, true);
$this->standard_coursemodule_elements(array('groups'=>false, 'groupmembersonly'=>true));
$this->add_action_buttons();
}