Added a dummy grading strategy to demonstrate the basic structure of the component

This commit is contained in:
David Mudrak 2010-01-04 17:55:45 +00:00
parent 8d54587610
commit 7f8312728b
4 changed files with 222 additions and 0 deletions

View File

@ -0,0 +1,51 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* This file defines an mform to assess a submission by dummy grading strategy
*
* @package mod-workshop
* @copyright 2009 David Mudrak <david.mudrak@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once(dirname(dirname(__FILE__)).'/assessment_form.php'); // parent class definition
/**
* Class representing a form for assessing submissions by dummy grading strategy
*
* @uses moodleform
*/
class workshop_dummy_assessment_form extends workshop_assessment_form {
/**
* Define the elements to be displayed at the form
*
* Called by the parent::definition()
*
* @return void
*/
protected function definition_inner(&$mform) {
$mform->addElement('modgrade', 'grade', 'This is the dummy assessment form.
The output of every review is always a grade 0-100. So, you can fake the calculated grade
by direct setting it here. The dummy strategy does not save it.');
}
}

View File

@ -0,0 +1,48 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* This file defines an mform to edit dummy grading strategy forms.
*
* @package mod-workshop
* @copyright 2009 David Mudrak <david.mudrak@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once(dirname(dirname(dirname(__FILE__))).'/lib.php'); // module library
require_once(dirname(dirname(__FILE__)).'/edit_form.php'); // parent class definition
/**
* Class for editing dummy grading strategy forms.
*
* @uses moodleform
*/
class workshop_edit_dummy_strategy_form extends workshop_edit_strategy_form {
/**
* Define the elements to be displayed at the form
*
* Called by the parent::definition()
*
* @return void
*/
protected function definition_inner(&$mform) {
$mform->addElement('static', 'just_a_text', 'Nothing to do here in this dummy strategy');
}
}

View File

@ -0,0 +1,122 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* This file defines a class with dummy grading strategy logic
*
* @package mod-workshop
* @copyright 2009 David Mudrak <david.mudrak@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once(dirname(dirname(__FILE__)) . '/lib.php'); // interface definition
/**
* Dummy grading strategy logic
*
* This is not a real strategy, it is used during the development only to demonstrate
* the basic idea of the strategy plugin. Consider this as a "hello world" grading strategy.
*/
class workshop_dummy_strategy implements workshop_strategy {
/** @var workshop the parent workshop instance */
protected $workshop;
/**
* Constructor
*
* @param workshop $workshop The workshop instance record
* @return void
*/
public function __construct(workshop $workshop) {
$this->workshop = $workshop;
}
/// Public API
/**
* @param $actionurl URL of form handler, defaults to auto detect the current url
*/
public function get_edit_strategy_form($actionurl=null) {
global $CFG; // needed because the included files use it
global $PAGE;
require_once(dirname(__FILE__) . '/edit_form.php');
$customdata = array();
$customdata['workshop'] = $this->workshop;
$customdata['strategy'] = $this;
$attributes = array('class' => 'editstrategyform');
return new workshop_edit_dummy_strategy_form($actionurl, $customdata, 'post', '', $attributes);
}
/**
* In dummy strategy, we can't really edit the assessment form. All other "real" strategies save
* the form definition into {workshop_forms} and {workshop_forms_*} tables.
*
* @param stdClass $data Raw data returned by the dimension editor form
*/
public function save_edit_strategy_form(stdClass $data) { }
/**
* Factory method returning an instance of an assessment form
*
* This dummy strategy uses the static assessment form that does not saves the filled data.
* All other "real" strategies load the form definition from {workshop_forms} and {workshop_forms_*} tables
* and save the filled data into {workshop_grades} table.
*
* @param moodle_url $actionurl URL of form handler, defaults to auto detect the current url
* @param string $mode Mode to open the form in: preview/assessment
*/
public function get_assessment_form(moodle_url $actionurl=null, $mode='preview', stdClass $assessment=null) {
global $CFG; // needed because the included files use it
require_once(dirname(__FILE__) . '/assessment_form.php');
// set up the required custom data common for all strategies
$customdata['strategy'] = $this;
$customdata['mode'] = $mode;
// set up strategy-specific custom data
$attributes = array('class' => 'assessmentform dummy');
return new workshop_dummy_assessment_form($actionurl, $customdata, 'post', '', $attributes);
}
/**
* Real strategies would calculate and save the filled assessment here
*
* This method processes data submitted using the form returned by {@link get_assessment_form()}
* We do not calculate nor save anything in this dummy strategy.
*
* @param stdClass $assessment Assessment being filled
* @param stdClass $data Raw data as returned by the assessment form
* @return float|null Percentual grade for submission as suggested by the peer
*/
public function save_assessment(stdClass $assessment, stdClass $data) {
global $DB;
if ($grade >= 0) {
return $data->grade / 100;
} else {
return 0;
}
}
}

View File

@ -154,6 +154,7 @@ $string['saveandclose'] = 'Save and close';
$string['saveandcontinue'] = 'Save and continue editing';
$string['saveandpreview'] = 'Save and preview';
$string['strategyaccumulative'] = 'Accumulative grading';
$string['strategydummy'] = 'Dummy strategy';
$string['strategy'] = 'Grading strategy';
$string['strategyhaschanged'] = 'The workshop grading strategy has changed since the form was opened for editing.';
$string['strategynoerrors'] = 'Number of errors';