]> git.mjollnir.org Git - moodle.git/commitdiff
tabbed Edit/Outcomes interface, link from course admin block, added manage outcomes...
authorskodak <skodak>
Tue, 31 Jul 2007 09:10:35 +0000 (09:10 +0000)
committerskodak <skodak>
Tue, 31 Jul 2007 09:10:35 +0000 (09:10 +0000)
13 files changed:
blocks/admin/block_admin.php
grade/edit/outcome/course.php [moved from grade/edit/courseoutcomes/index.php with 89% similarity]
grade/edit/outcome/course_form.html [moved from grade/edit/courseoutcomes/form.html with 87% similarity]
grade/edit/outcome/index.php
grade/edit/outcome/tabs.php [new file with mode: 0644]
grade/lib.php
grade/report/grader/lib.php
grade/report/outcomes/editoutcomes.php [deleted file]
grade/report/outcomes/site.php [deleted file]
grade/report/outcomes/tabs.php [deleted file]
lang/en_utf8/grades.php
lib/db/access.php
version.php

index 60e4b5c4a91a5c1a287b8b937063ea7e47719339..394ee7b30e8aa901feb1f8b10b618db91df50d7f 100644 (file)
@@ -155,6 +155,12 @@ class block_admin extends block_list {
             $this->content->icons[] = '<img src="'.$CFG->pixpath.'/i/payment.gif" class="icon" alt="" />';
         }
 
+    /// Used outcomes
+        if (has_capability('moodle/course:update', $context) && ($course->id!==SITEID)) {
+            $this->content->items[]='<a href="'.$CFG->wwwroot.'/grade/edit/outcome/course.php?id='.$this->instance->pageid.'">'.get_string('outcomes', 'grades').'</a>';
+            $this->content->icons[]='<img src="'.$CFG->pixpath.'/i/grades.gif" class="icon" alt="" />'; //TODO: add outcomes icon
+        }
+
     /// View course grades (or just your own grades, same link)
         if ((has_capability('moodle/grade:viewall', $context) or 
             (has_capability('moodle/grade:view', $context) && $course->showgrades)) && ($course->id!==SITEID)) {
similarity index 89%
rename from grade/edit/courseoutcomes/index.php
rename to grade/edit/outcome/course.php
index 3db1af56c35d2aa632d8a32e7adcaea28d391f0b..0aae40c463480fc6c31f8d9f661051583060d754 100644 (file)
@@ -17,7 +17,7 @@ require_capability('moodle/course:update', $context);
 
 /// form processing
 if ($data = data_submitted()) {
-    require_capability('gradereport/outcomes:manage', get_context_instance(CONTEXT_COURSE, $courseid));
+    require_capability('moodle/grade:manageoutcomes', get_context_instance(CONTEXT_COURSE, $courseid));
     if (!empty($data->add) && !empty($data->addoutcomes)) {
     /// add all selected to course list
         foreach ($data->addoutcomes as $add) {
@@ -34,10 +34,10 @@ if ($data = data_submitted()) {
 }
 
 /// return tracking object
-$gpr = new grade_plugin_return(array('type'=>'edit', 'plugin'=>'favoutcomes', 'courseid'=>$courseid));
+$gpr = new grade_plugin_return(array('type'=>'edit', 'plugin'=>'outcomes', 'courseid'=>$courseid));
 
 $strgrades = get_string('grades');
-$pagename  = get_string('courseoutcomes', 'grades');
+$pagename  = get_string('outcomescourse', 'grades');
 
 $navlinks = array(array('name'=>$strgrades, 'link'=>$CFG->wwwroot.'/grade/index.php?id='.$courseid, 'type'=>'misc'),
                   array('name'=>$pagename, 'link'=>'', 'type'=>'misc'));
@@ -51,7 +51,7 @@ if ($coutcomes = get_records_sql('SELECT go.id, go.fullname
                                         WHERE goc.courseid = '.$courseid.'
                                        AND goc.outcomeid = go.id')) {
     foreach ($coutcomes as $id=>$coutcome) {
-        $courseoutcomes[$id] = new grade_outcome(array('id'=>$id));     
+        $courseoutcomes[$id] = new grade_outcome(array('id'=>$id));
     }
 }
 
@@ -64,11 +64,13 @@ if (empty($courseoutcomes)) {
 print_header_simple($strgrades.': '.$pagename, ': '.$strgrades, $navigation, '', '', true, '', navmenu($course));
 
 /// Print the plugin selector at the top
-print_grade_plugin_selector($courseid, 'edit', 'courseoutcomes');
-print_heading(get_string('courseoutcomes', 'grades'));
+print_grade_plugin_selector($courseid, 'edit', 'outcome');
+
+$currenttab = 'courseoutcomes';
+require('tabs.php');
 
 check_theme_arrows();
-include_once('form.html');
+require('course_form.html');
 
 print_footer($course);
 ?>
\ No newline at end of file
similarity index 87%
rename from grade/edit/courseoutcomes/form.html
rename to grade/edit/outcome/course_form.html
index 63278b4340b162751f1f88235493da5329a70fcc..002a00d94ef20b53bf625b8ce47596ea5addf88d 100755 (executable)
@@ -3,7 +3,7 @@
 <table style="margin-left:auto;margin-right:auto">
     <tr>
         <td>
-            <label for="addoutcomes"><?php print_string('globaloutcomes', 'grades'); ?></label>
+            <label for="addoutcomes"><?php print_string('outcomesstandard', 'grades'); ?></label>
             <br />
             <select id="addoutcomes" size="20" name="addoutcomes[]" multiple="multiple">
 
@@ -25,7 +25,7 @@
             </p>
         </td>
         <td>
-            <label for="removeoutcomes"><?php print_string('courseoutcomes', 'grades'); ?></label>
+            <label for="removeoutcomes"><?php print_string('outcomescourse', 'grades'); ?></label>
             <br />
             <select id="removeoutcomes" size="20" name="removeoutcomes[]" multiple="multiple">
             <?php
index 526781ea3abf1b546dca998e24e4416f932465d1..c6f386e9b46c921466c8576dca92a8d91e5b8347 100644 (file)
@@ -75,6 +75,9 @@ if ($courseid) {
     /// Print the plugin selector at the top
     print_grade_plugin_selector($courseid, 'edit', 'outcome');
 
+    $currenttab = 'outcomes';
+    require('tabs.php');
+
 } else {
     admin_externalpage_print_header();
 }
diff --git a/grade/edit/outcome/tabs.php b/grade/edit/outcome/tabs.php
new file mode 100644 (file)
index 0000000..66bdccf
--- /dev/null
@@ -0,0 +1,21 @@
+<?php  // $Id$
+    $row = $tabs = array();
+
+    $coursecontext = get_context_instance(CONTEXT_COURSE, $courseid);
+
+    if (has_capability('moodle/grade:manage', $context)) {
+        $row[] = new tabobject('outcomes',
+                               $CFG->wwwroot.'/grade/edit/outcome/index.php?id='.$courseid,
+                               get_string('outcomes', 'grades'));
+    }
+    $row[] = new tabobject('courseoutcomes',
+                           $CFG->wwwroot.'/grade/edit/outcome/course.php?id='.$courseid,
+                           get_string('outcomescourse', 'grades'));
+
+    $tabs[] = $row;
+
+    echo '<div class="outcomedisplay">';
+    print_tabs($tabs, $currenttab);
+    echo '</div>';
+
+?>
index 3a680743e8fdde94d1973513538a1625e01178e5..47c755520171396afe98763e2c26e8e13caf0bb7 100644 (file)
@@ -94,7 +94,8 @@ function print_grade_plugin_selector($courseid, $active_type, $active_plugin, $r
 
 /// editing scripts - not real plugins
     if (has_capability('moodle/grade:manage', $context)
-      or has_capability('moodle/course:managescales', $context)) {
+      or has_capability('moodle/course:managescales', $context)
+      or has_capability('moodle/course:update', $context)) {
         $menu['edit']='--'.get_string('edit');
 
         if (has_capability('moodle/grade:manage', $context)) {
@@ -113,21 +114,17 @@ function print_grade_plugin_selector($courseid, $active_type, $active_plugin, $r
             $menu[$url] = get_string('scales');
         }
 
-        if (has_capability('moodle/grade:manage', $context)) {
-            $url = 'edit/outcome/index.php?id='.$courseid;
+        if (has_capability('moodle/grade:manage', $context) or has_capability('course:update', $context)) {
+            if (has_capability('moodle/grade:manage', $context)) {
+                $url = 'edit/outcome/index.php?id='.$courseid;
+            } else {
+                $url = 'edit/outcome/course.php?id='.$courseid;
+            }
             if ($active_type == 'edit' and $active_plugin == 'outcome' ) {
                 $active = $url;
             }
             $menu[$url] = get_string('outcomes', 'grades');
         }
-
-        if (has_capability('course:update', $context)) {
-            $url = 'edit/courseoutcomes/index.php?id='.$courseid;
-            if ($active_type == 'edit' and $active_plugin == 'courseoutcomes' ) {
-                $active = $url;
-            }
-            $menu[$url] = get_string('courseoutcomes', 'grades');
-        }
     }
 
 /// finally print/return the popup form
index 7c914cf019e9154d3b606c68f7012842d6c36a99..c8b3aa12b10ed0e22306e20293a69b139b6a984e 100644 (file)
@@ -748,7 +748,7 @@ class grade_report_grader extends grade_report {
         } else {
             $totalcount = $this->get_numusers();
         }
-        
+
         if ($showaverages) {
             /*
              * this sql is broken in the event of multiple grade book roles assigned to one user
@@ -765,7 +765,7 @@ class grade_report_grader extends grade_report {
                 AND ra.contextid ".get_related_contexts_string($this->context)."
                 GROUP BY g.itemid";
             */
-        
+
             // the first join on user is needed for groupsql
             $SQL = "SELECT g.itemid, SUM(g.finalgrade) as sum, COUNT(DISTINCT(u.id)) as count
                 FROM {$CFG->prefix}grade_items gi LEFT JOIN
@@ -774,15 +774,15 @@ class grade_report_grader extends grade_report {
                      $groupsql
                 WHERE gi.courseid = $this->courseid
                      $groupwheresql
-                     AND g.userid IN (                     
-                        SELECT DISTINCT(u.id) 
+                     AND g.userid IN (
+                        SELECT DISTINCT(u.id)
                         FROM {$CFG->prefix}user u LEFT JOIN
                              {$CFG->prefix}role_assignments ra ON u.id = ra.userid
                         WHERE ra.roleid in ($this->gradebookroles)
                              AND ra.contextid ".get_related_contexts_string($this->context)."
                      )
                 GROUP BY g.itemid";
-            
+
             $sum_array = array();
             $count_array = array();
             $sums = get_records_sql($SQL);
diff --git a/grade/report/outcomes/editoutcomes.php b/grade/report/outcomes/editoutcomes.php
deleted file mode 100755 (executable)
index ef6bc50..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-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() {
-        global $CFG, $COURSE;
-
-        $mform =& $this->_form;
-        $mform->addElement('header', 'general', get_string('outcomes'));
-
-        $mform->addElement('text', 'shortname', get_string('shortname'));
-        $mform->addRule('shortname', get_string('required'), 'required');
-        $mform->setType('shortname', PARAM_TEXT);
-
-        $mform->addElement('text', 'fullname', get_string('fullname'));
-        $mform->addRule('fullname', get_string('required'), 'required');
-        $mform->setType('fullname', PARAM_TEXT);
-
-        $scalearr = array();
-        if ($scales = get_records('scale')) {
-            foreach ($scales as $scale) {
-                $scalearr[$scale->id] = $scale->name;
-            }
-        }
-
-        $mform->addElement('select', 'scaleid', get_string('scale'), $scalearr);
-        $mform->addRule('scaleid', get_string('required'), 'required');
-        $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();
-    }
-}
-
-$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
-    require_login($courseid);
-    require_capability('gradereport/outcomes:manage', get_context_instance(CONTEXT_COURSE, $courseid));
-    $returnurl = $CFG->wwwroot."/grade/report/outcomes/course.php?id=$courseid";
-} else {
-    // admin editting site level outcomes
-    require_capability('gradereport/outcomes:manage', get_context_instance(CONTEXT_SYSTEM));
-    $returnurl = $CFG->wwwroot."/grade/report/outcomes/site.php";
-}
-// form processing
-
-$mform = new edit_outcomes_form();
-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);
-}
-if ($data = $mform->get_data()) {
-    if ($data->courseid == 0) {
-        $data->courseid = NULL;
-    }
-
-    if ($data->id) {
-        update_record('grade_outcomes', $data);
-    } else {
-        insert_record('grade_outcomes', $data);
-    }
-    redirect($returnurl);
-}
-
-// Build navigation
-$strgrades = get_string('grades');
-$stroutcomes = get_string('outcomes', 'grades');
-$navlinks = array();
-$navlinks[] = array('name' => $strgrades, 'link' => $CFG->wwwroot . '/grade/index.php?id='.$courseid, 'type' => 'misc');
-$navlinks[] = array('name' => $stroutcomes, 'link' => '', 'type' => 'misc');
-
-$navigation = build_navigation($navlinks);
-/// Print header
-print_header_simple($strgrades.':'.$stroutcomes, ':'.$strgrades, $navigation, '', '', true);
-// Add tabs
-$currenttab = 'editoutcomes';
-include('tabs.php');
-$mform->display();
-print_footer();
-?>
\ No newline at end of file
diff --git a/grade/report/outcomes/site.php b/grade/report/outcomes/site.php
deleted file mode 100755 (executable)
index a098b6e..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-/*********************************
- * Global outcomes editting page *
- *********************************/
-
-include_once('../../../config.php');
-require_once($CFG->libdir.'/adminlib.php');
-require_once($CFG->libdir.'/tablelib.php');
-
-// setting up params
-$courseid = optional_param('id', SITEID, PARAM_INT); // course id
-require_capability('gradereport/outcomes:view', get_context_instance(CONTEXT_SYSTEM));
-/// 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()) {
-        require_capability('gradereport/outcomes:manage', get_context_instance(CONTEXT_SYSTEM));
-        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 {
-            $strgrades = get_string('grades');
-            $stroutcomes = get_string('outcomes', 'grades');
-            $navlinks = array();
-            $navlinks[] = array('name' => $strgrades, 'link' => $CFG->wwwroot . '/grade/index.php?id='.$courseid, 'type' => 'misc');
-            $navlinks[] = array('name' => $stroutcomes, 'link' => '', 'type' => 'misc');
-
-            $navigation = build_navigation($navlinks);
-
-/// Print header
-            print_header_simple($strgrades.':'.$stroutcomes, ':'.$strgrades, $navigation, '', '', true);
-            // prints confirmation
-            $strdeleteoutcomecheck = get_string('deleteoutcomecheck', 'grades');
-            notice_yesno($strdeleteoutcomecheck,
-                         'site.php?deleteid='.$deleteid.'&amp;confirm=1&amp;sesskey='.sesskey(),
-                         'site.php');
-            print_footer();
-            exit;
-        }
-    }
-
-   /// display information
-    admin_externalpage_setup('gradereportoutcomes');
-    admin_externalpage_print_header();
-
-    // Add tabs
-    $currenttab = 'siteoutcomes';
-    include('tabs.php');
-
-    $totalcount = count_records('grade_outcomes');
-    $baseurl = "site.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', 'grades'),
-                              get_string('scale'),
-                              get_string('course'),
-                              '',
-                              get_string('activities'),
-                              get_string('courses'));
-
-        $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();
-
-        while ($outcome = rs_fetch_next_record($outcomes)) {
-            $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
-            if (has_capability('gradereport/outcomes:manage', get_context_instance(CONTEXT_SYSTEM))) {
-
-                $data[] = '<a href="editoutcomes.php?id='.$outcome->id.'&amp;sesskey='.sesskey().'"><img alt="Update" class="iconsmall" src="'.$CFG->wwwroot.'/pix/t/edit.gif"/></a>
-                   <a href="site.php?deleteid='.$outcome->id.'&amp;sesskey='.sesskey().'"><img alt="Delete" class="iconsmall" src="'.$CFG->wwwroot.'/pix/t/delete.gif"/></a>'; // icons and links
-
-            } else {
-                $data[] = '';
-            }
-            // num of gradeitems using this
-            $num = count_records('grade_items', 'outcomeid' ,$outcome->id);
-            $data[] = (int) $num;
-
-            // num of courses using this outcome
-            $num = count_records('grade_outcomes_courses', 'outcomeid', $outcome->id);
-            $data[] = (int) $num;
-
-            $table->add_data($data);
-        }
-
-        $table->print_html();
-    }
-    if (has_capability('gradereport/outcomes:manage', get_context_instance(CONTEXT_SYSTEM))) {
-        echo '<a href="editoutcomes.php">'.get_string('addoutcome', 'gradereport_outcomes').'</a>';
-    }
-    // print the footer, end of page
-    admin_externalpage_print_footer();
-?>
diff --git a/grade/report/outcomes/tabs.php b/grade/report/outcomes/tabs.php
deleted file mode 100644 (file)
index d4a71dd..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php  // $Id$
-    $row = $tabs = array();
-
-
-    // Needs capability here
-    if ($courseid && ($courseid != SITEID)) {
-
-        $row[] = new tabobject('outcomereport',
-                               $CFG->wwwroot.'/grade/report/outcomes/index.php?id='.$courseid,
-                               get_string('outcomereport', 'grades'));
-
-        $coursecontext = get_context_instance(CONTEXT_COURSE, $courseid);
-        if (has_capability('gradereport/outcomes:manage', $coursecontext)) {
-            $row[] = new tabobject('courseoutcomes',
-                                   $CFG->wwwroot.'/grade/report/outcomes/course.php?id='.$courseid,
-                                   get_string('courseoutcomes', 'gradereport_outcomes'));
-        }
-    }
-
-    $sitecontext = get_context_instance(CONTEXT_SYSTEM);
-    if (has_capability('gradereport/outcomes:manage', $sitecontext, NULL, false)) {
-        $row[] = new tabobject('siteoutcomes',
-                               $CFG->wwwroot.'/grade/report/outcomes/site.php?id='.$courseid,
-                               get_string('siteoutcomes', 'gradereport_outcomes'));
-    }
-
-    $tabs[] = $row;
-
-    echo '<div class="outcomedisplay">';
-    print_tabs($tabs, $currenttab);
-    echo '</div>';
-?>
index b53b36b05703e2d76722f7c22486d082d9e2b40d..16774abf551b58e073cd8d24d6b221c95bd9b5d8 100644 (file)
@@ -76,7 +76,6 @@ $string['configshowuserimage'] = 'Whether to show the user\'s profile image next
 $string['configstudentsperpage'] = 'The number of students to display per page in the grader report.';
 $string['configstudentsperpagedefault'] = 'The number of students to display per page in the grader report. Leave this field empty to use the site default (currently $a).';
 $string['contract'] = 'Contract Category';
-$string['courseoutcomes'] = 'Course outcomes';
 $string['createcategory'] = 'Create Category';
 $string['createcategoryerror'] = 'Could not create a new category';
 $string['creatinggradebooksettings'] = 'Creating Gradebook settings';
@@ -120,7 +119,6 @@ $string['finalgrade'] = 'Final grade';
 $string['forelementtypes'] = ' for the selected $a';
 $string['forstudents'] = 'For Students';
 $string['full'] = 'Full';
-$string['globaloutcomes'] = 'Global outcomes';
 $string['grade'] = 'Grade';
 $string['gradebook'] = 'Gradebook';
 $string['gradebookhiddenerror'] = 'The gradebook is currently set to hide everything from students.';
@@ -230,6 +228,7 @@ $string['outcomecreate'] = 'Add a new outcome';
 $string['outcomeitemsedit'] = 'Edit outcome item';
 $string['outcomes'] = 'Outcomes';
 $string['outcomescustom'] = 'Custom outcomes';
+$string['outcomescourse'] = 'Outcomes used in course';
 $string['outcomename'] = 'Outcome name';
 $string['outcomereport'] = 'Outcome report';
 $string['outcomesstandard'] = 'Standard outcomes';
index 84ef021aa5715c42a385ee45dc3628a8c2b5f726..9ca5b0a72c6e0dea0779f45804e3a7fe199cd152 100644 (file)
@@ -978,6 +978,17 @@ $moodle_capabilities = array(
         'clonepermissionsfrom' => 'moodle/course:managegrades'
     ),
 
+    'moodle/grade:manageoutcomes' => array(
+        'riskbitmask' => RISK_PERSONAL,
+        'captype' => 'write',
+        'contextlevel' => CONTEXT_COURSE,
+        'legacy' => array(
+            'editingteacher' => CAP_ALLOW,
+            'admin' => CAP_ALLOW
+        ),
+        'clonepermissionsfrom' => 'moodle/course:managegrades'
+    ),
+
     'moodle/grade:hide' => array(
         'captype' => 'write',
         'contextlevel' => CONTEXT_COURSE,
index 33936ce87fc40acc36a6699b64c5b0f70e57e349..baa4822ec31e9ff695fa7e3e9422acb3a8b3cc66 100644 (file)
@@ -6,7 +6,7 @@
 // This is compared against the values stored in the database to determine
 // whether upgrades should be performed (see lib/db/*.php)
 
-    $version = 2007073103;  // YYYYMMDD = date
+    $version = 2007073104;  // YYYYMMDD = date
                             //       XY = increments within a single day
 
     $release = '1.9 dev';   // Human-friendly version name