From: nicolasconnault Date: Thu, 27 Aug 2009 09:39:50 +0000 (+0000) Subject: MDL-19797 Optimising output code in gradebook, and fixed bugs in export key management X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=eef00ade8f3bbf1cfeceb8d2961dab3453afac0c;p=moodle.git MDL-19797 Optimising output code in gradebook, and fixed bugs in export key management --- diff --git a/grade/edit/outcome/edit.php b/grade/edit/outcome/edit.php index c00b73b019..d5a3e1102e 100644 --- a/grade/edit/outcome/edit.php +++ b/grade/edit/outcome/edit.php @@ -15,6 +15,14 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . +/** + * Edit page for grade outcomes. + * + * @package moodlecore + * @copyright 2008 Nicolas Connault + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + require_once '../../../config.php'; require_once $CFG->dirroot.'/grade/lib.php'; require_once $CFG->dirroot.'/grade/report/lib.php'; diff --git a/grade/edit/outcome/index.php b/grade/edit/outcome/index.php index 141b99cb31..10238ffce4 100644 --- a/grade/edit/outcome/index.php +++ b/grade/edit/outcome/index.php @@ -15,14 +15,24 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . -require_once '../../../config.php'; +/** + * Listing page for grade outcomes. + * + * @package moodlecore + * @copyright 2008 Nicolas Connault + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +require_once(dirname(__FILE__).'/../../../config.php'); require_once($CFG->dirroot.'/lib/formslib.php'); -require_once $CFG->dirroot.'/grade/lib.php'; -require_once $CFG->libdir.'/gradelib.php'; +require_once($CFG->dirroot.'/grade/lib.php'); +require_once($CFG->libdir.'/gradelib.php'); $courseid = optional_param('id', 0, PARAM_INT); $action = optional_param('action', '', PARAM_ALPHA); +$PAGE->set_url('grade/edit/outcome/index.php', array('id' => $courseid)); + /// Make sure they can even access this course if ($courseid) { if (!$course = $DB->get_record('course', array('id' => $courseid))) { @@ -66,8 +76,6 @@ $strfullname = get_string('fullname'); $strscale = get_string('scale'); $strstandardoutcome = get_string('outcomesstandard', 'grades'); $strcustomoutcomes = get_string('outcomescustom', 'grades'); -$strdelete = get_string('delete'); -$stredit = get_string('edit'); $strcreatenewoutcome = get_string('outcomecreate', 'grades'); $stritems = get_string('items', 'grades'); $strcourses = get_string('courses'); @@ -149,9 +157,7 @@ if ($courseid and $outcomes = grade_outcome::fetch_all_local($courseid)) { $caneditthisscale = has_capability('moodle/course:managescales', $context); } if ($caneditthisscale) { - $url = $CFG->wwwroot.'/grade/edit/scale/edit.php?courseid='.$courseid.'&id='.$scale->id; - $url = $gpr->add_url_params($url); - $line[] = ''.$scale->get_name().''; + $line[] = grade_print_scale_link($courseid, $scale, $gpr); } else { $line[] = $scale->get_name(); } @@ -159,12 +165,10 @@ if ($courseid and $outcomes = grade_outcome::fetch_all_local($courseid)) { $line[] = $outcome->get_item_uses_count(); - $buttons = ""; - $buttons .= "id\">old_icon_url('t/edit') . "\" class=\"iconsmall\" alt=\"$stredit\" /> "; + $buttons = grade_button('edit', $courseid, $outcome); + if ($outcome->can_delete()) { - $buttons .= "id&action=delete&sesskey=".sesskey()."\">old_icon_url('t/delete') . "\" class=\"iconsmall\" alt=\"$strdelete\" /> "; + $buttons .= grade_button('delete', $courseid, $outcome); } $line[] = $buttons; @@ -202,9 +206,7 @@ if ($outcomes = grade_outcome::fetch_all_global()) { $caneditthisscale = has_capability('moodle/course:managescales', $context); } if ($caneditthisscale) { - $url = $CFG->wwwroot.'/grade/edit/scale/edit.php?courseid='.$courseid.'&id='.$scale->id; - $url = $gpr->add_url_params($url); - $line[] = ''.$scale->get_name().''; + $line[] = grade_print_scale_link($courseid, $scale, $gpr); } else { $line[] = $scale->get_name(); } @@ -215,12 +217,10 @@ if ($outcomes = grade_outcome::fetch_all_global()) { $buttons = ""; if (has_capability('moodle/grade:manage', get_context_instance(CONTEXT_SYSTEM))) { - $buttons .= "id\">old_icon_url('t/edit') . "\" class=\"iconsmall\" alt=\"$stredit\" /> "; + $buttons .= grade_button('edit', $courseid, $outcome); } if (has_capability('moodle/grade:manage', get_context_instance(CONTEXT_SYSTEM)) and $outcome->can_delete()) { - $buttons .= "id&action=delete&sesskey=".sesskey()."\">old_icon_url('t/delete') . "\" class=\"iconsmall\" alt=\"$strdelete\" /> "; + $buttons .= grade_button('delete', $courseid, $outcome); } $line[] = $buttons; @@ -242,7 +242,7 @@ if ($courseid) { } foreach($outcomes_tables as $table) { - print($table); + echo $table; } echo $OUTPUT->container_start('buttons'); @@ -255,3 +255,19 @@ echo $OUTPUT->container_end(); $upload_form->display(); echo $OUTPUT->footer(); + +/** + * Local shortcut function for creating a link to a scale. + * @param int $courseid The Course ID + * @param grade_scale $scale The Scale to link to + * @param grade_plugin_return $gpr An object used to identify the page we just came from + * @return string html + */ +function grade_print_scale_link($courseid, $scale, $gpr) { + global $CFG, $OUTPUT; + $url = new moodle_url($CFG->wwwroot.'/grade/edit/scale/edit.php', array('courseid' => $courseid, 'id' => $scale->id)); + $url = $gpr->add_url_params($url); + $link = html_link::make($url, $scale->get_name()); + return $OUTPUT->link($link); +} + diff --git a/grade/edit/scale/edit.php b/grade/edit/scale/edit.php index 7014e3227f..f958760041 100644 --- a/grade/edit/scale/edit.php +++ b/grade/edit/scale/edit.php @@ -23,6 +23,8 @@ require_once 'edit_form.php'; $courseid = optional_param('courseid', 0, PARAM_INT); $id = optional_param('id', 0, PARAM_INT); +$PAGE->set_url('grade/edit/scale/edit.php', array('id' => $id, 'courseid' => $courseid)); + $systemcontext = get_context_instance(CONTEXT_SYSTEM); $heading = ''; diff --git a/grade/edit/scale/index.php b/grade/edit/scale/index.php index b14489eb5c..faf5a9ca30 100644 --- a/grade/edit/scale/index.php +++ b/grade/edit/scale/index.php @@ -22,6 +22,8 @@ require_once $CFG->libdir.'/gradelib.php'; $courseid = optional_param('id', 0, PARAM_INT); $action = optional_param('action', '', PARAM_ALPHA); +$PAGE->set_url('grade/edit/scale/index.php', array('id' => $courseid)); + /// Make sure they can even access this course if ($courseid) { if (!$course = $DB->get_record('course', array('id' => $courseid))) { @@ -68,8 +70,22 @@ switch ($action) { break; } - //TODO: add confirmation - $scale->delete(); + $deleteconfirmed = optional_param('deleteconfirmed', 0, PARAM_BOOL); + + if (!$deleteconfirmed) { + print_header(get_string('scaledelete', 'grades')); + $confirmurl = new moodle_url('index.php', array( + 'id' => $courseid, 'scaleid' => $scale->id, + 'action'=> 'delete', + 'sesskey' => sesskey(), + 'deleteconfirmed'=> 1)); + + echo $OUTPUT->confirm(get_string('scaleconfirmdelete', 'grades', $scale->name), $confirmurl, "index.php?id={$courseid}"); + echo $OUTPUT->footer(); + die; + } else { + $scale->delete(); + } break; } @@ -93,11 +109,9 @@ if ($courseid and $scales = grade_scale::fetch_all_local($courseid)) { $line[] = $used ? get_string('yes') : get_string('no'); $buttons = ""; - $buttons .= "id\">old_icon_url('t/edit') . "\" class=\"iconsmall\" alt=\"$stredit\" /> "; + $buttons .= grade_button('edit', $courseid, $scale); if (!$used) { - $buttons .= "id&action=delete&sesskey=".sesskey()."\">old_icon_url('t/delete') . "\" class=\"iconsmall\" alt=\"$strdelete\" /> "; + $buttons .= grade_button('delete', $courseid, $scale); } $line[] = $buttons; $data[] = $line; @@ -122,12 +136,10 @@ if ($scales = grade_scale::fetch_all_global()) { $buttons = ""; if (has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM))) { - $buttons .= "id\">old_icon_url('t/edit') . "\" class=\"iconsmall\" alt=\"$stredit\" /> "; + $buttons .= grade_button('edit', $courseid, $scale); } if (!$used and has_capability('moodle/course:managescales', get_context_instance(CONTEXT_SYSTEM))) { - $buttons .= "id&action=delete&sesskey=".sesskey()."\">old_icon_url('t/delete') . "\" class=\"iconsmall\" alt=\"$strdelete\" /> "; + $buttons .= grade_button('delete', $courseid, $scale); } $line[] = $buttons; $data[] = $line; @@ -150,5 +162,5 @@ echo $OUTPUT->heading($strstandardscale, 3, 'main'); echo $OUTPUT->table($table2); echo $OUTPUT->container_start('buttons'); echo $OUTPUT->button(html_form::make_button('edit.php', array('courseid'=>$courseid), $srtcreatenewscale)); -echo $OUTPUT->container_end(); -echo $OUTPUT->footer(); +echo $OUTPUT->container_end(); +echo $OUTPUT->footer(); diff --git a/grade/export/key.php b/grade/export/key.php index 69382778ec..996184b413 100644 --- a/grade/export/key.php +++ b/grade/export/key.php @@ -15,15 +15,25 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . +/** + * Grade export key edit page. + * + * @package moodlecore + * @copyright 2008 Petr Skoda + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + require_once('../../config.php'); require_once('key_form.php'); /// get url variables $courseid = optional_param('courseid', 0, PARAM_INT); -$id = optional_param('id', 0, PARAM_INT); +$id = optional_param('id', 0, PARAM_INT); // The key's id $delete = optional_param('delete', 0, PARAM_BOOL); $confirm = optional_param('confirm', 0, PARAM_BOOL); +$PAGE->set_url('grade/export/key.php', array('id' => $id, 'courseid' => $courseid)); + if ($id) { if (!$key = $DB->get_record('user_private_key', array('id' => $id))) { print_error('invalidgroupid'); @@ -35,12 +45,12 @@ if ($id) { print_error('invalidcourseid'); } - if (!$course = $DB->get_record('course', array('id'=>$id))) { + if (!$course = $DB->get_record('course', array('id'=>$courseid))) { print_error('invalidcourseid'); } } else { - if (!$course = $DB->get_record('course', array('id'=>$id))) { + if (!$course = $DB->get_record('course', array('id'=>$courseid))) { print_error('invalidcourseid'); } $key = new object(); diff --git a/grade/export/key_form.php b/grade/export/key_form.php index d9948b2e7b..07a0044d31 100644 --- a/grade/export/key_form.php +++ b/grade/export/key_form.php @@ -15,6 +15,13 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . +/** + * Grade export key management form. + * + * @package moodlecore + * @copyright 2008 Petr Skodak + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ require_once($CFG->dirroot.'/lib/formslib.php'); @@ -42,5 +49,3 @@ class key_form extends moodleform { $this->add_action_buttons(); } } - -?> diff --git a/grade/export/keymanager.php b/grade/export/keymanager.php index cb0e812bc3..07ba3a6025 100644 --- a/grade/export/keymanager.php +++ b/grade/export/keymanager.php @@ -15,11 +15,20 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . +/** + * Grade export key management page. + * + * @package moodlecore + * @copyright 2008 Petr Skoda + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ require_once '../../config.php'; require_once $CFG->dirroot.'/grade/export/lib.php'; -$id = required_param('id', PARAM_INT); // course id +$id = required_param('id', PARAM_INT); // course id + +$PAGE->set_url('grade/export/keymanager.php', array('id' => $id)); if (!$course = $DB->get_record('course', array('id'=>$id))) { print_error('nocourseid'); @@ -32,8 +41,8 @@ require_capability('moodle/grade:export', $context); print_grade_page_head($course->id, 'export', 'keymanager', get_string('keymanager', 'grades')); -$stredit = get_string('edit'); -$strdelete = get_string('delete'); +$stredit = get_string('edit'); +$strdelete = get_string('delete'); $data = array(); $keys = $DB->get_records_select('user_private_key', "script='grade/export' AND instance=? AND userid=?", array($course->id, $USER->id)); @@ -44,10 +53,26 @@ if ($keys) { $line[1] = $key->iprestriction; $line[2] = empty($key->validuntil) ? get_string('always') : userdate($key->validuntil); - $buttons = "id\">old_icon_url('t/edit') . "\" class=\"iconsmall\" alt=\"$stredit\" /> "; - $buttons .= "id&delete=1\">old_icon_url('t/delete') . "\" class=\"iconsmall\" alt=\"$strdelete\" /> "; + $icon = new moodle_action_icon(); + $icon->link->url = new moodle_url('key.php'); + if (!empty($key->id)) { + $icon->link->url->param('id', $key->id); + } + $icon->image->add_class('iconsmall'); + + $editicon = clone($icon); + $editicon->image->src = $OUTPUT->old_icon_url('t/edit'); + $editicon->image->title = $stredit; + $editicon->image->alt = $stredit; + $buttons = $OUTPUT->action_icon($editicon); + + $deleteicon = clone($icon); + $deleteicon->image->src = $OUTPUT->old_icon_url('t/delete'); + $deleteicon->image->title = $strdelete; + $deleteicon->image->alt = $strdelete; + $deleteicon->link->url->param('delete', 1); + $deleteicon->link->url->param('sesskey', sesskey()); + $buttons .= $OUTPUT->action_icon($deleteicon); $line[3] = $buttons; $data[] = $line; @@ -61,7 +86,7 @@ $table->width = '90%'; $table->data = $data; echo $OUTPUT->table($table); -echo $OUTPUT->container_start('buttons'); +echo $OUTPUT->container_start('buttons mdl-align'); echo $OUTPUT->button(html_form::make_button('key.php', array('courseid'=>$course->id), get_string('newuserkey', 'userkey'))); echo $OUTPUT->container_end(); diff --git a/grade/import/grade_import_form.php b/grade/import/grade_import_form.php index 292946bd19..bbc8472c1a 100755 --- a/grade/import/grade_import_form.php +++ b/grade/import/grade_import_form.php @@ -130,4 +130,3 @@ class grade_import_mapping_form extends moodleform { } } -?> diff --git a/grade/import/key.php b/grade/import/key.php index b70950adec..d0762f1b5f 100644 --- a/grade/import/key.php +++ b/grade/import/key.php @@ -15,6 +15,14 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . +/** + * Import key management. + * + * @package moodlecore + * @copyright 2008 Nicolas Connault + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + require_once('../../config.php'); require_once('key_form.php'); @@ -24,6 +32,8 @@ $id = optional_param('id', 0, PARAM_INT); $delete = optional_param('delete', 0, PARAM_BOOL); $confirm = optional_param('confirm', 0, PARAM_BOOL); +$PAGE->set_url('grade/import/key.php', array('courseid' => $courseid, 'id' => $id)); + if ($id) { if (!$key = $DB->get_record('user_private_key', array('id' => $id))) { print_error('invalidgroupid'); @@ -118,4 +128,3 @@ print_header_simple($strkeys, ': '.$strkeys, $navigation, '', '', true, '', navm $editform->display(); echo $OUTPUT->footer(); -?> diff --git a/grade/import/key_form.php b/grade/import/key_form.php index 0f1555d6bc..a5e009ba1d 100644 --- a/grade/import/key_form.php +++ b/grade/import/key_form.php @@ -15,6 +15,14 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . +/** + * Grade import key management form. + * + * @package moodlecore + * @copyright 2008 Petr Skodak + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + require_once($CFG->dirroot.'/lib/formslib.php'); class key_form extends moodleform { @@ -41,5 +49,3 @@ class key_form extends moodleform { $this->add_action_buttons(); } } - -?> diff --git a/grade/import/keymanager.php b/grade/import/keymanager.php index cdf7fff93a..b9bbd44e39 100644 --- a/grade/import/keymanager.php +++ b/grade/import/keymanager.php @@ -15,10 +15,20 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . -require_once '../../config.php'; -require_once $CFG->dirroot.'/grade/lib.php'; +/** + * Grade import key management page. + * + * @package moodlecore + * @copyright 2008 Petr Skoda + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ -$id = required_param('id', PARAM_INT); // course id +require_once(dirname(__FILE__).'/../../config.php'); +require_once($CFG->dirroot.'/grade/lib.php'); + +$id = required_param('id', PARAM_INT); // course id + +$PAGE->set_url('grade/import/keymanager.php', array('id' => $id)); if (!$course = $DB->get_record('course', array('id'=>$id))) { print_error('nocourseid'); @@ -31,8 +41,8 @@ require_capability('moodle/grade:import', $context); print_grade_page_head($course->id, 'import', 'keymanager', get_string('keymanager', 'grades')); -$stredit = get_string('edit'); -$strdelete = get_string('delete'); +$stredit = get_string('edit'); +$strdelete = get_string('delete'); $data = array(); $params = array($course->id, $USER->id); @@ -42,11 +52,24 @@ if ($keys = $DB->get_records_select('user_private_key', "script='grade/import' A $line[0] = format_string($key->value); $line[1] = $key->iprestriction; $line[2] = empty($key->validuntil) ? get_string('always') : userdate($key->validuntil); + + $icon = new moodle_action_icon(); + $icon->link->url = new moodle_url('key.php', array('id' => $key->id)); + $icon->image->add_class('iconsmall'); + + $editicon = clone($icon); + $editicon->image->src = $OUTPUT->old_icon_url('t/edit'); + $editicon->image->title = $stredit; + $editicon->image->alt = $stredit; + $buttons = $OUTPUT->action_icon($editicon); - $buttons = "id\">old_icon_url('t/edit') . "\" class=\"iconsmall\" alt=\"$stredit\" /> "; - $buttons .= "id&delete=1\">old_icon_url('t/delete') . "\" class=\"iconsmall\" alt=\"$strdelete\" /> "; + $deleteicon = clone($icon); + $deleteicon->image->src = $OUTPUT->old_icon_url('t/delete'); + $deleteicon->image->title = $strdelete; + $deleteicon->image->alt = $strdelete; + $deleteicon->link->url->param('delete', 1); + $deleteicon->link->url->param('sesskey', sesskey()); + $buttons .= $OUTPUT->action_icon($deleteicon); $line[3] = $buttons; $data[] = $line; @@ -60,7 +83,7 @@ $table->width = '90%'; $table->data = $data; echo $OUTPUT->table($table); -echo $OUTPUT->container_start('buttons'); +echo $OUTPUT->container_start('buttons mdl-align'); echo $OUTPUT->button(html_form::make_button('key.php', array('courseid'=>$course->id), get_string('newuserkey', 'userkey'))); echo $OUTPUT->container_end(); diff --git a/grade/import/lib.php b/grade/import/lib.php index ab3f306402..e86802ea19 100755 --- a/grade/import/lib.php +++ b/grade/import/lib.php @@ -132,13 +132,12 @@ function grade_import_commit($courseid, $importcode, $importfeedback=true, $verb echo $OUTPUT->notification(get_string('importsuccess', 'grades'), 'notifysuccess'); $unenrolledusers = get_unenrolled_users_in_import($importcode, $courseid); if ($unenrolledusers) { - $list = "
    \n"; + $list = new html_list(); foreach ($unenrolledusers as $u) { $u->fullname = fullname($u); - $list .= '
  • ' . get_string('usergrade', 'grades', $u) . '
  • '; + $list->add_item(get_string('usergrade', 'grades', $u)); } - $list .= "
\n"; - echo $OUTPUT->notification(get_string('unenrolledusersinimport', 'grades', $list), 'notifysuccess'); + echo $OUTPUT->notification(get_string('unenrolledusersinimport', 'grades', $OUTPUT->htmllist($list)), 'notifysuccess'); } echo $OUTPUT->continue_button($CFG->wwwroot.'/grade/index.php?id='.$courseid); } diff --git a/grade/lib.php b/grade/lib.php index 3327da8315..149c92b6ae 100644 --- a/grade/lib.php +++ b/grade/lib.php @@ -2258,3 +2258,38 @@ class grade_tree extends grade_structure { } } } + +/** + * Local shortcut function for creating an edit/delete button for a grade_* object. + * @param strong $type 'edit' or 'delete' + * @param int $courseid The Course ID + * @param grade_* $object The grade_* object + * @return string html + */ +function grade_button($type, $courseid, $object) { + global $CFG, $OUTPUT; + if (preg_match('/grade_(.*)/', get_class($object), $matches)) { + $objectidstring = $matches[1] . 'id'; + } else { + throw new coding_exception('grade_button() only accepts grade_* objects as third parameter!'); + } + + $strdelete = get_string('delete'); + $stredit = get_string('edit'); + + $icon = new moodle_action_icon(); + + if ($type == 'delete') { + $icon->link->url = new moodle_url('index.php', array('id' => $courseid, $objectidstring => $object->id, 'action' => 'delete', 'sesskey' => sesskey())); + } else if ($type == 'edit') { + $icon->link->url = new moodle_url('edit.php', array('courseid' => $courseid, 'id' => $object->id)); + } + + $icon->image->src = $OUTPUT->old_icon_url('t/'.$type); + $icon->image->add_class('iconsmall'); + $icon->image->title = ${'str'.$type}; + $icon->image->alt = ${'str'.$type}; + + return $OUTPUT->action_icon($icon); + +}