]> git.mjollnir.org Git - moodle.git/commitdiff
Added a dummy grading strategy to demonstrate the basic structure of the component
authorDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 17:55:45 +0000 (17:55 +0000)
committerDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 17:55:45 +0000 (17:55 +0000)
mod/workshop/grading/dummy/assessment_form.php [new file with mode: 0644]
mod/workshop/grading/dummy/edit_form.php [new file with mode: 0644]
mod/workshop/grading/dummy/strategy.php [new file with mode: 0644]
mod/workshop/lang/en_utf8/workshop.php

diff --git a/mod/workshop/grading/dummy/assessment_form.php b/mod/workshop/grading/dummy/assessment_form.php
new file mode 100644 (file)
index 0000000..047371b
--- /dev/null
@@ -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.');
+
+    }
+}
diff --git a/mod/workshop/grading/dummy/edit_form.php b/mod/workshop/grading/dummy/edit_form.php
new file mode 100644 (file)
index 0000000..5a68ff4
--- /dev/null
@@ -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');
+    }
+}
diff --git a/mod/workshop/grading/dummy/strategy.php b/mod/workshop/grading/dummy/strategy.php
new file mode 100644 (file)
index 0000000..712d391
--- /dev/null
@@ -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;
+        }
+    }
+
+}
index 3397a0f79b013c584822ff78b87d62db66957307..c5257e8dfa204b98d241a78cd1355aa1f081b2d4 100644 (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';