|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00003 // This file is part of Moodle - http://moodle.org/ 00004 // 00005 // Moodle is free software: you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License as published by 00007 // the Free Software Foundation, either version 3 of the License, or 00008 // (at your option) any later version. 00009 // 00010 // Moodle is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 // GNU General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 00017 00026 require_once(dirname(__FILE__).'/../../../config.php'); 00027 require_once($CFG->dirroot.'/grade/lib.php'); 00028 require_once($CFG->libdir.'/gradelib.php'); 00029 00030 $courseid = optional_param('id', 0, PARAM_INT); 00031 $action = optional_param('action', '', PARAM_ALPHA); 00032 00033 $PAGE->set_url('/grade/edit/outcome/index.php', array('id' => $courseid)); 00034 $PAGE->set_pagelayout('admin'); 00035 00037 if ($courseid) { 00038 $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST); 00039 require_login($course); 00040 $context = get_context_instance(CONTEXT_COURSE, $course->id); 00041 require_capability('moodle/grade:manageoutcomes', $context); 00042 00043 if (empty($CFG->enableoutcomes)) { 00044 redirect('../../index.php?id='.$courseid); 00045 } 00046 // This page doesn't exist on the navigation so map it to another 00047 navigation_node::override_active_url(new moodle_url('/grade/edit/outcome/course.php', array('id'=>$courseid))); 00048 } else { 00049 if (empty($CFG->enableoutcomes)) { 00050 redirect('../../../'); 00051 } 00052 require_once $CFG->libdir.'/adminlib.php'; 00053 admin_externalpage_setup('outcomes'); 00054 } 00055 00057 $gpr = new grade_plugin_return(array('type'=>'edit', 'plugin'=>'outcome', 'courseid'=>$courseid)); 00058 00059 $strshortname = get_string('outcomeshortname', 'grades'); 00060 $strfullname = get_string('outcomefullname', 'grades'); 00061 $strscale = get_string('scale'); 00062 $strstandardoutcome = get_string('outcomesstandard', 'grades'); 00063 $strcustomoutcomes = get_string('outcomescustom', 'grades'); 00064 $strcreatenewoutcome = get_string('outcomecreate', 'grades'); 00065 $stritems = get_string('items', 'grades'); 00066 $strcourses = get_string('courses'); 00067 $stredit = get_string('edit'); 00068 00069 switch ($action) { 00070 case 'delete': 00071 if (!confirm_sesskey()) { 00072 break; 00073 } 00074 $outcomeid = required_param('outcomeid', PARAM_INT); 00075 if (!$outcome = grade_outcome::fetch(array('id'=>$outcomeid))) { 00076 break; 00077 } 00078 00079 if (empty($outcome->courseid)) { 00080 require_capability('moodle/grade:manage', get_context_instance(CONTEXT_SYSTEM)); 00081 } else if ($outcome->courseid != $courseid) { 00082 print_error('invalidcourseid'); 00083 } 00084 00085 if (!$outcome->can_delete()) { 00086 break; 00087 } 00088 00089 $deleteconfirmed = optional_param('deleteconfirmed', 0, PARAM_BOOL); 00090 00091 if(!$deleteconfirmed){ 00092 $PAGE->set_title(get_string('outcomedelete', 'grades')); 00093 echo $OUTPUT->header(); 00094 $confirmurl = new moodle_url('index.php', array( 00095 'id' => $courseid, 'outcomeid' => $outcome->id, 00096 'action'=> 'delete', 00097 'sesskey' => sesskey(), 00098 'deleteconfirmed'=> 1)); 00099 00100 echo $OUTPUT->confirm(get_string('outcomeconfirmdelete', 'grades', $outcome->fullname), $confirmurl, "index.php?id={$courseid}"); 00101 echo $OUTPUT->footer(); 00102 die; 00103 }else{ 00104 $outcome->delete(); 00105 } 00106 break; 00107 } 00108 00109 $systemcontext = get_context_instance(CONTEXT_SYSTEM); 00110 $caneditsystemscales = has_capability('moodle/course:managescales', $systemcontext); 00111 00112 if ($courseid) { 00113 00114 $caneditcoursescales = has_capability('moodle/course:managescales', $context); 00115 00116 } else { 00117 echo $OUTPUT->header(); 00118 $caneditcoursescales = $caneditsystemscales; 00119 } 00120 00121 00122 $outcomes_tables = array(); 00123 $heading = get_string('outcomes', 'grades'); 00124 00125 if ($courseid and $outcomes = grade_outcome::fetch_all_local($courseid)) { 00126 $return = $OUTPUT->heading($strcustomoutcomes, 3, 'main'); 00127 $data = array(); 00128 foreach($outcomes as $outcome) { 00129 $line = array(); 00130 $line[] = $outcome->get_name(); 00131 $line[] = $outcome->get_shortname(); 00132 00133 $scale = $outcome->load_scale(); 00134 if (empty($scale->id)) { // hopefully never happens 00135 $line[] = $scale->get_name(); 00136 } else { 00137 if (empty($scale->courseid)) { 00138 $caneditthisscale = $caneditsystemscales; 00139 } else if ($scale->courseid == $courseid) { 00140 $caneditthisscale = $caneditcoursescales; 00141 } else { 00142 $context = get_context_instance(CONTEXT_COURSE, $scale->courseid); 00143 $caneditthisscale = has_capability('moodle/course:managescales', $context); 00144 } 00145 if ($caneditthisscale) { 00146 $line[] = grade_print_scale_link($courseid, $scale, $gpr); 00147 } else { 00148 $line[] = $scale->get_name(); 00149 } 00150 } 00151 00152 $line[] = $outcome->get_item_uses_count(); 00153 00154 $buttons = grade_button('edit', $courseid, $outcome); 00155 00156 if ($outcome->can_delete()) { 00157 $buttons .= grade_button('delete', $courseid, $outcome); 00158 } 00159 $line[] = $buttons; 00160 00161 $data[] = $line; 00162 } 00163 $table = new html_table(); 00164 $table->head = array($strfullname, $strshortname, $strscale, $stritems, $stredit); 00165 $table->size = array('30%', '20%', '20%', '20%', '10%' ); 00166 $table->align = array('left', 'left', 'left', 'center', 'center'); 00167 $table->width = '90%'; 00168 $table->data = $data; 00169 $return .= html_writer::table($table); 00170 $outcomes_tables[] = $return; 00171 } 00172 00173 00174 if ($outcomes = grade_outcome::fetch_all_global()) { 00175 $return = $OUTPUT->heading($strstandardoutcome, 3, 'main'); 00176 $data = array(); 00177 foreach($outcomes as $outcome) { 00178 $line = array(); 00179 $line[] = $outcome->get_name(); 00180 $line[] = $outcome->get_shortname(); 00181 00182 $scale = $outcome->load_scale(); 00183 if (empty($scale->id)) { // hopefully never happens 00184 $line[] = $scale->get_name(); 00185 } else { 00186 if (empty($scale->courseid)) { 00187 $caneditthisscale = $caneditsystemscales; 00188 } else if ($scale->courseid == $courseid) { 00189 $caneditthisscale = $caneditcoursescales; 00190 } else { 00191 $context = get_context_instance(CONTEXT_COURSE, $scale->courseid); 00192 $caneditthisscale = has_capability('moodle/course:managescales', $context); 00193 } 00194 if ($caneditthisscale) { 00195 $line[] = grade_print_scale_link($courseid, $scale, $gpr); 00196 } else { 00197 $line[] = $scale->get_name(); 00198 } 00199 } 00200 00201 $line[] = $outcome->get_course_uses_count(); 00202 $line[] = $outcome->get_item_uses_count(); 00203 00204 $buttons = ""; 00205 if (has_capability('moodle/grade:manage', get_context_instance(CONTEXT_SYSTEM))) { 00206 $buttons .= grade_button('edit', $courseid, $outcome); 00207 } 00208 if (has_capability('moodle/grade:manage', get_context_instance(CONTEXT_SYSTEM)) and $outcome->can_delete()) { 00209 $buttons .= grade_button('delete', $courseid, $outcome); 00210 } 00211 $line[] = $buttons; 00212 00213 $data[] = $line; 00214 } 00215 $table = new html_table(); 00216 $table->head = array($strfullname, $strshortname, $strscale, $strcourses, $stritems, $stredit); 00217 $table->size = array('30%', '20%', '20%', '10%', '10%', '10%'); 00218 $table->align = array('left', 'left', 'left', 'center', 'center', 'center'); 00219 $table->width = '90%'; 00220 $table->data = $data; 00221 $return .= html_writer::table($table); 00222 $outcomes_tables[] = $return; 00223 } 00224 00225 if ($courseid) { 00227 print_grade_page_head($courseid, 'outcome', 'edit', $heading); 00228 } 00229 00230 foreach($outcomes_tables as $table) { 00231 echo $table; 00232 } 00233 00234 echo $OUTPUT->container_start('buttons'); 00235 echo $OUTPUT->single_button(new moodle_url('edit.php', array('courseid'=>$courseid)), $strcreatenewoutcome); 00236 if ( !empty($outcomes_tables) ) { 00237 echo $OUTPUT->single_button(new moodle_url('export.php', array('id'=>$courseid, 'sesskey'=>sesskey())), get_string('exportalloutcomes', 'grades')); 00238 } 00239 echo $OUTPUT->container_end(); 00240 00241 echo $OUTPUT->footer(); 00242 00250 function grade_print_scale_link($courseid, $scale, $gpr) { 00251 global $CFG, $OUTPUT; 00252 $url = new moodle_url('/grade/edit/scale/edit.php', array('courseid' => $courseid, 'id' => $scale->id)); 00253 $url = $gpr->add_url_params($url); 00254 return html_writer::link($url, $scale->get_name()); 00255 }