diff --git a/grade/report/outcomes/course.html b/grade/report/outcomes/course.html
new file mode 100755
index 00000000000..25bdc4e1f6f
--- /dev/null
+++ b/grade/report/outcomes/course.html
@@ -0,0 +1,30 @@
+
\ No newline at end of file
diff --git a/grade/report/outcomes/course.php b/grade/report/outcomes/course.php
new file mode 100755
index 00000000000..b1cb29311bd
--- /dev/null
+++ b/grade/report/outcomes/course.php
@@ -0,0 +1,25 @@
+prefix.'grade_outcomes
+ WHERE ISNULL(courseid)');
+ get_records('grade_outcomes', 'courseid', $courseid);
+
+ check_theme_arrows();
+ include_once('course.html');
+
+ print_footer();
+?>
\ No newline at end of file
diff --git a/grade/report/outcomes/editoutcomes.php b/grade/report/outcomes/editoutcomes.php
index 8f995a4b329..6988a840e2d 100755
--- a/grade/report/outcomes/editoutcomes.php
+++ b/grade/report/outcomes/editoutcomes.php
@@ -2,6 +2,8 @@
include_once('../../../config.php');
require_once $CFG->libdir.'/formslib.php';
+
+// courseid needs to be passed in to know whether this should be tied to a course
class edit_outcomes_form extends moodleform {
function definition() {
@@ -30,6 +32,8 @@ class edit_outcomes_form extends moodleform {
$mform->setType('scaleid', PARAM_INT);
$mform->addElement('hidden', 'id');
$mform->setType('id', PARAM_INT);
+ $mform->addElement('hidden', 'courseid');
+ $mform->setType('courseid', PARAM_INT);
//-------------------------------------------------------------------------------
// buttons
$this->add_action_buttons();
@@ -39,9 +43,10 @@ class edit_outcomes_form extends moodleform {
$id = optional_param('id', 0, PARAM_INT); // id of the outcome
if ($courseid = optional_param('courseid', 0, PARAM_INT)) {
// optional course id, if set, editting from course
+ $returnurl = $CFG->wwwroot."/grade/report/outcomes/course.php";
} else {
// admin editting site level outcomes
- $returnurl = $CFG->wwwroot."/grade/report/outcomes/settings.php";
+ $returnurl = $CFG->wwwroot."/grade/report/outcomes/site.php";
}
// form processing
@@ -50,6 +55,11 @@ if ($id) {
// form set data
$mform->set_data(get_record('grade_outcomes', 'id', $id));
}
+// if courseid is provided, set it in the form
+if ($courseid) {
+ $data->courseid = $courseid;
+ $mform->set_data($data);
+}
if ($mform->is_cancelled()) {
redirect($returnurl);
@@ -70,4 +80,4 @@ include('tabs.php');
print_header();
$mform->display();
print_footer();
-?>
+?>
\ No newline at end of file
diff --git a/grade/report/outcomes/site.php b/grade/report/outcomes/site.php
new file mode 100755
index 00000000000..3318c32247a
--- /dev/null
+++ b/grade/report/outcomes/site.php
@@ -0,0 +1,117 @@
+libdir.'/adminlib.php');
+require_once($CFG->libdir.'/tablelib.php');
+
+// setting up params
+$courseid = optional_param('id', SITEID, PARAM_INT); // course id
+
+/// check capability
+
+$page = optional_param('page', 0, PARAM_INT); // current page
+$search = optional_param('search', 0, PARAM_TEXT);
+$deleteid = optional_param('deleteid', 0, PARAM_INT); // which outcome to delete
+$confirm = optional_param('confirm', 0, PARAM_INT);
+$perpage = 30;
+
+ // form processing
+ if ($deleteid && confirm_sesskey()) {
+ if ($confirm) {
+ // delete all outcomes used in courses
+ // delete all outcomes used in grade items
+ delete_records('grade_outcomes_courses', 'outcomeid', $deleteid);
+ delete_records('grade_outcomes', 'id', $deleteid);
+ } else {
+ // prints confirmation
+ print_header('');
+ echo '';
+ print_footer();
+ exit;
+ }
+ }
+
+ /// display information
+ admin_externalpage_setup('gradereportoutcomes');
+ admin_externalpage_print_header();
+
+ // Add tabs
+ $currenttab = 'outcomesettings';
+ include('tabs.php');
+
+ $totalcount = count_records('grade_outcomes');
+ $baseurl = "settings.php";
+ print_paging_bar($totalcount, $page, $perpage, $baseurl);
+
+ if ($outcomes = get_recordset('grade_outcomes', '', '', '', '*', $page * $perpage, $perpage)) {
+
+ $tablecolumns = array('outcome', 'scale', 'course', 'edit', 'usedgradeitems', 'usedcourses');
+ $tableheaders = array(get_string('outcomes'),
+ get_string('scale'),
+ get_string('course'),
+ get_string('operations'),
+ get_string('usedgradeitem'),
+ get_string('usedcourses'));
+
+ $table = new flexible_table('outcomes');
+ $table->define_columns($tablecolumns);
+ $table->define_headers($tableheaders);
+ $table->define_baseurl($baseurl);
+ $table->set_attribute('cellspacing', '0');
+ $table->set_attribute('id', 'user-grade');
+ $table->set_attribute('class', 'boxaligncenter generaltable');
+
+ $table->setup();
+
+ foreach ($outcomes as $outcome) {
+ $data = array();
+
+ // full name of the outcome
+ $data[] = $outcome['fullname'];
+
+ // full name of the scale used by this outcomes
+ $scale= get_record('scale', 'id', $outcome['scaleid']);
+ $data[] = $scale->name;
+
+ // get course
+ if ($outcome['courseid']) {
+ $course = get_record('course', 'id', $outcome['courseid']);
+ $data[] = $course->shortname;
+ } else {
+ $data[] = get_string('site');
+ }
+
+ // add operations
+ $data[] = '
+
'; // icons and links
+
+ // num of gradeitems using this
+ $num = count_records('grade_outcomes_courses', 'outcomeid' ,$outcome['id']);
+ $data[] = (int) $num;
+
+ // num of courses using this outcome
+ $num = count_records('grade_items', 'outcomeid', $outcome['id']);
+ $data[] = (int) $num;
+
+ $table->add_data($data);
+ }
+
+ $table->print_html();
+ }
+
+ echo 'Add a new outcome';
+
+ // print the footer, end of page
+ admin_externalpage_print_footer();
+?>
\ No newline at end of file
diff --git a/grade/report/outcomes/tabs.php b/grade/report/outcomes/tabs.php
index b3edd542ef2..8f88907e815 100644
--- a/grade/report/outcomes/tabs.php
+++ b/grade/report/outcomes/tabs.php
@@ -4,9 +4,15 @@
$CFG->wwwroot.'/grade/report/outcomes/index.php?id='.$courseid,
get_string('outcomereport', 'grades'));
- $row[] = new tabobject('outcomesettings',
- $CFG->wwwroot.'/grade/report/outcomes/settings.php?id='.$courseid,
- get_string('settings'));
+ if ($courseid != SITEID) {
+ $row[] = new tabobject('outcomesettings',
+ $CFG->wwwroot.'/grade/report/outcomes/course.php?id='.$courseid,
+ get_string('settings'));
+ } else {
+ $row[] = new tabobject('outcomesettings',
+ $CFG->wwwroot.'/grade/report/outcomes/site.php?id='.$courseid,
+ get_string('settings'));
+ }
$row[] = new tabobject('editoutcomes',
$CFG->wwwroot.'/grade/report/outcomes/editoutcomes.php?courseid='.$courseid,