From: nicolasconnault Date: Thu, 16 Oct 2008 06:54:29 +0000 (+0000) Subject: MDL-15680 emoving weights interface (now in contrib). X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=9cb67db66b91c2c7ff707f23116427d575cc4f70;p=moodle.git MDL-15680 emoving weights interface (now in contrib). --- diff --git a/grade/edit/weights/ajax.php b/grade/edit/weights/ajax.php deleted file mode 100755 index 5dff7f66c9..0000000000 --- a/grade/edit/weights/ajax.php +++ /dev/null @@ -1,71 +0,0 @@ - diff --git a/grade/edit/weights/img/lm.gif b/grade/edit/weights/img/lm.gif deleted file mode 100644 index b5623002a6..0000000000 Binary files a/grade/edit/weights/img/lm.gif and /dev/null differ diff --git a/grade/edit/weights/img/lmh.gif b/grade/edit/weights/img/lmh.gif deleted file mode 100644 index a17fe233c1..0000000000 Binary files a/grade/edit/weights/img/lmh.gif and /dev/null differ diff --git a/grade/edit/weights/img/ln.gif b/grade/edit/weights/img/ln.gif deleted file mode 100644 index b7b3e55cd0..0000000000 Binary files a/grade/edit/weights/img/ln.gif and /dev/null differ diff --git a/grade/edit/weights/img/loading.gif b/grade/edit/weights/img/loading.gif deleted file mode 100644 index 0bbf3bc0c0..0000000000 Binary files a/grade/edit/weights/img/loading.gif and /dev/null differ diff --git a/grade/edit/weights/img/lp.gif b/grade/edit/weights/img/lp.gif deleted file mode 100644 index b9f5485670..0000000000 Binary files a/grade/edit/weights/img/lp.gif and /dev/null differ diff --git a/grade/edit/weights/img/lph.gif b/grade/edit/weights/img/lph.gif deleted file mode 100644 index f663714f49..0000000000 Binary files a/grade/edit/weights/img/lph.gif and /dev/null differ diff --git a/grade/edit/weights/img/tm.gif b/grade/edit/weights/img/tm.gif deleted file mode 100644 index 56622cc305..0000000000 Binary files a/grade/edit/weights/img/tm.gif and /dev/null differ diff --git a/grade/edit/weights/img/tmh.gif b/grade/edit/weights/img/tmh.gif deleted file mode 100644 index e42349e406..0000000000 Binary files a/grade/edit/weights/img/tmh.gif and /dev/null differ diff --git a/grade/edit/weights/img/tn.gif b/grade/edit/weights/img/tn.gif deleted file mode 100644 index 4a280397de..0000000000 Binary files a/grade/edit/weights/img/tn.gif and /dev/null differ diff --git a/grade/edit/weights/img/tp.gif b/grade/edit/weights/img/tp.gif deleted file mode 100644 index 906e8c46e4..0000000000 Binary files a/grade/edit/weights/img/tp.gif and /dev/null differ diff --git a/grade/edit/weights/img/tph.gif b/grade/edit/weights/img/tph.gif deleted file mode 100644 index 8aa7c2504b..0000000000 Binary files a/grade/edit/weights/img/tph.gif and /dev/null differ diff --git a/grade/edit/weights/img/vline.gif b/grade/edit/weights/img/vline.gif deleted file mode 100644 index 1fb0de8bb2..0000000000 Binary files a/grade/edit/weights/img/vline.gif and /dev/null differ diff --git a/grade/edit/weights/index.php b/grade/edit/weights/index.php deleted file mode 100755 index 5fb49be4b1..0000000000 --- a/grade/edit/weights/index.php +++ /dev/null @@ -1,293 +0,0 @@ -dirroot.'/grade/lib.php'; -require_once $CFG->dirroot.'/grade/report/lib.php'; // for preferences -require_once $CFG->dirroot.'/grade/edit/weights/lib.php'; - -require_js(array('yui_yahoo', 'yui_dom', 'yui_event', 'yui_json', 'yui_connection', 'yui_dragdrop', 'yui_treeview')); - -$courseid = required_param('id', PARAM_INT); -$action = optional_param('action', 0, PARAM_ALPHA); -$eid = optional_param('eid', 0, PARAM_ALPHANUM); -$category = optional_param('category', null, PARAM_INT); -$aggregationtype = optional_param('aggregationtype', null, PARAM_INT); -$showadvanced = optional_param('showadvanced', false, PARAM_BOOL); - -/// Make sure they can even access this course - -if (!$course = $DB->get_record('course', array('id' => $courseid))) { - print_error('nocourseid'); -} - -require_login($course); -$context = get_context_instance(CONTEXT_COURSE, $course->id); -require_capability('moodle/grade:manage', $context); - -/// return tracking object -$gpr = new grade_plugin_return(array('type'=>'edit', 'plugin'=>'weights', 'courseid'=>$courseid)); -$returnurl = $gpr->get_return_url(null); - -// Change category aggregation if requested -if (!is_null($category) && !is_null($aggregationtype)) { - if (!$grade_category = grade_category::fetch(array('id'=>$category, 'courseid'=>$courseid))) { - error('Incorrect category id!'); - } - $data->aggregation = $aggregationtype; - grade_category::set_properties($grade_category, $data); - $grade_category->update(); -} - -//first make sure we have proper final grades - we need it for locking changes -grade_regrade_final_grades($courseid); - -// get the grading tree object -// note: total must be first for moving to work correctly, if you want it last moving code must be rewritten! -$gtree = new grade_tree($courseid, false, false); - -if (empty($eid)) { - $element = null; - $object = null; - -} else { - if (!$element = $gtree->locate_element($eid)) { - print_error('invalidelementid', '', $returnurl); - } - $object = $element['object']; -} - -$switch = grade_get_setting($course->id, 'aggregationposition', $CFG->grade_aggregationposition); - -$strgrades = get_string('grades'); -$strgraderreport = get_string('graderreport', 'grades'); -$strcategoriesedit = get_string('categoriesedit', 'grades'); -$strcategoriesanditems = get_string('categoriesanditems', 'grades'); - -$navigation = grade_build_nav(__FILE__, $strcategoriesanditems, array('courseid' => $courseid)); -$moving = false; - -switch ($action) { - case 'delete': - if ($eid) { - if (!element_deletable($element)) { - // no deleting of external activities - they would be recreated anyway! - // exception is activity without grading or misconfigured activities - break; - } - $confirm = optional_param('confirm', 0, PARAM_BOOL); - - if ($confirm and confirm_sesskey()) { - $object->delete('grade/report/grader/category'); - redirect($returnurl); - - } else { - print_header_simple($strgrades . ': ' . $strgraderreport, ': ' . $strcategoriesedit, $navigation, '', '', true, '', navmenu($course)); - $strdeletecheckfull = get_string('deletecheck', '', $object->get_name()); - $optionsyes = array('eid'=>$eid, 'confirm'=>1, 'sesskey'=>sesskey(), 'id'=>$course->id, 'action'=>'delete'); - $optionsno = array('id'=>$course->id); - notice_yesno($strdeletecheckfull, 'index.php', 'index.php', $optionsyes, $optionsno, 'post', 'get'); - print_footer($course); - die; - } - } - break; - - case 'autosort': - //TODO: implement autosorting based on order of mods on course page, categories first, manual items last - break; - - case 'synclegacy': - grade_grab_legacy_grades($course->id); - redirect($returnurl); - - case 'move': - if ($eid and confirm_sesskey()) { - $moveafter = required_param('moveafter', PARAM_ALPHANUM); - if(!$after_el = $gtree->locate_element($moveafter)) { - print_error('invalidelementid', '', $returnurl); - } - $after = $after_el['object']; - $parent = $after->get_parent_category(); - $sortorder = $after->get_sortorder(); - - $object->set_parent($parent->id); - $object->move_after_sortorder($sortorder); - - redirect($returnurl); - } - break; - - case 'moveselect': - if ($eid and confirm_sesskey()) { - $moving = $eid; - } - break; - - default: - break; -} - -// Hide advanced columns if moving -if ($moving) { - $showadvanced = false; -} - -$CFG->stylesheets[] = $CFG->wwwroot.'/grade/edit/weights/tree.css'; -print_header_simple($strgrades . ': ' . $strgraderreport, ': ' . $strcategoriesedit, $navigation, '', '', true, '', navmenu($course)); - -/// Print the plugin selector at the top -print_grade_plugin_selector($courseid, 'edit', 'tree'); - -print_heading(get_string('weightsedit', 'grades')); - -$form_key = optional_param('sesskey', null, PARAM_ALPHANUM); - -if ($form_key && $data = data_submitted()) { - - foreach ($data as $key => $value) { - // Grade category text inputs - if (preg_match('/(aggregation|droplow|keephigh)_([0-9]*)/', $key, $matches)) { - $value = required_param($matches[0], PARAM_INT); - $param = $matches[1]; - $a->id = $matches[2]; - - if (!$DB->update_record('grade_categories', array('id' => $matches[2], $param => $value))) { - print_error('errorupdatinggradecategoryaggregation', 'grades', $a); - } - - // Grade item text inputs - } elseif (preg_match('/(aggregationcoef|multfactor|plusfactor)_([0-9]*)/', $key, $matches)) { - $value = required_param($matches[0], PARAM_NUMBER); - $param = $matches[1]; - $a->id = $matches[2]; - - if (!$DB->update_record('grade_items', array('id' => $matches[2], $param => $value))) { - print_error('errorupdatinggradeitemaggregationcoef', 'grades', $a); - } - - // Grade item checkbox inputs - } elseif (preg_match('/extracredit_original_([0-9]*)/', $key, $matches)) { // Sum extra credit checkbox - $extracredit = optional_param("extracredit_{$matches[1]}", null, PARAM_BOOL); - $original_value = required_param($matches[0], PARAM_BOOL); - $a->id = $matches[1]; - $newvalue = null; - - if ($original_value == 1 && is_null($extracredit)) { - $newvalue = 0; - } elseif ($original_value == 0 && $extracredit == 1) { - $newvalue = 1; - } else { - continue; - } - - if (!$DB->update_record('grade_items', array('id' => $matches[1], 'aggregationcoef' => $newvalue))) { - print_error('errorupdatinggradeitemaggregationcoef', 'grades', $a); - } - - // Grade category checkbox inputs - } elseif (preg_match('/aggregate(onlygraded|subcats|outcomes)_original_([0-9]*)/', $key, $matches)) { - $setting = optional_param('aggregate'.$matches[1].'_'.$matches[2], null, PARAM_BOOL); - $original_value = required_param($matches[0], PARAM_BOOL); - $a->id = $matches[2]; - - $newvalue = null; - if ($original_value == 1 && is_null($setting)) { - $newvalue = 0; - } elseif ($original_value == 0 && $setting == 1) { - $newvalue = 1; - } else { - continue; - } - - if (!$DB->update_record('grade_categories', array('id' => $matches[2], 'aggregate'.$matches[1] => $newvalue))) { - print_error('errorupdatinggradecategoryaggregate'.$matches[1], 'grades', $a); - } - } - } -} - -// echo '
Expand all Collapse all
'; - -print_box_start('gradetreebox generalbox'); - -echo '
'; -echo '
'; -echo ''; -echo build_html_tree(get_tree_json($gtree, $gtree->top_element, 0, $gpr), null, $returnurl, $moving, $eid); - -if ($showadvanced && !$moving) { - echo ''; -} - -echo '
-
'; - -print_box_end(); - -echo '
'; -if ($moving) { - print_single_button('index.php', array('id'=>$course->id), get_string('cancel'), 'get'); -} else { - $strshowhideadvanced = get_string('showadvancedcolumns', 'grades'); - - if ($showadvanced) { - $strshowhideadvanced = get_string('hideadvancedcolumns', 'grades'); - } - - print_single_button('index.php', array('id'=>$course->id, 'showadvanced' => !$showadvanced), $strshowhideadvanced, 'get'); - print_single_button('category.php', array('courseid'=>$course->id), get_string('addcategory', 'grades'), 'get'); - print_single_button('item.php', array('courseid'=>$course->id), get_string('additem', 'grades'), 'get'); - - if (!empty($CFG->enableoutcomes)) { - print_single_button('outcomeitem.php', array('courseid'=>$course->id), get_string('addoutcomeitem', 'grades'), 'get'); - } - - //print_single_button('index.php', array('id'=>$course->id, 'action'=>'autosort'), get_string('autosort', 'grades'), 'get'); - print_single_button('index.php', array('id'=>$course->id, 'action'=>'synclegacy'), get_string('synclegacygrades', 'grades'), 'get'); -} -echo '
'; - -echo ' -'; - -print_footer($course); -die; - -?> diff --git a/grade/edit/weights/lib.php b/grade/edit/weights/lib.php deleted file mode 100644 index 871f4c6d8a..0000000000 --- a/grade/edit/weights/lib.php +++ /dev/null @@ -1,315 +0,0 @@ -name = $gtree->get_element_header($element, false, false, false); - - $return_array['item'] = $object; - - $return_array['item']->actions = $gtree->get_edit_icon($element, $gpr); - $return_array['item']->actions .= $gtree->get_calculation_icon($element, $gpr); - - if ($element['type'] == 'item' or ($element['type'] == 'category' and $element['depth'] > 1)) { - if (element_deletable($element)) { - $return_array['item']->actions .= ''
-                     . get_string('delete').''; - } - $return_array['item']->actions .= ''
-                 . get_string('move').''; - } - - $return_array['item']->actions .= $gtree->get_hiding_icon($element, $gpr); - $return_array['item']->actions .= $gtree->get_locking_icon($element, $gpr); - $return_array['item']->eid = $element['eid']; - $return_array['item']->type = $element['type']; - - if ($element['type'] == 'category') { - foreach($element['children'] as $child_el) { - if (!empty($child_el['object']->itemtype) && ($child_el['object']->itemtype == 'course' || $child_el['object']->itemtype == 'category') && !$totals) { - continue; - } - $return_array['children'][] = get_tree_json($gtree, $child_el, $totals, $gpr); - } - } - - return $return_array; -} - -function build_html_tree($tree, $element=null, $level=0, $moving=false, $eid) { - global $CFG, $COURSE; - - $showadvanced = optional_param('showadvanced', false, PARAM_BOOL); - $advclass = ($showadvanced) ? 'shown' : 'hidden'; - - $options = array(GRADE_AGGREGATE_MEAN => get_string('aggregatemean', 'grades'), - GRADE_AGGREGATE_WEIGHTED_MEAN => get_string('aggregateweightedmean', 'grades'), - GRADE_AGGREGATE_WEIGHTED_MEAN2 => get_string('aggregateweightedmean2', 'grades'), - GRADE_AGGREGATE_EXTRACREDIT_MEAN => get_string('aggregateextracreditmean', 'grades'), - GRADE_AGGREGATE_MEDIAN => get_string('aggregatemedian', 'grades'), - GRADE_AGGREGATE_MIN => get_string('aggregatemin', 'grades'), - GRADE_AGGREGATE_MAX => get_string('aggregatemax', 'grades'), - GRADE_AGGREGATE_MODE => get_string('aggregatemode', 'grades'), - GRADE_AGGREGATE_SUM => get_string('aggregatesum', 'grades')); - - $html = ''; - $root = false; - - if (is_null($element)) { - $html .= ' - - '; - if (!$moving) { - $html .= ' - - - - - - - - - - - - '; - } - - $html .= ''; - $element = $tree; - $root = true; - } - - - $id = required_param('id', PARAM_INT); - - /// prepare move target if needed - $last = ''; - $moveto = ''; - - if ($moving) { - $strmove = get_string('move'); - $strmovehere = get_string('movehere'); - $element['item']->actions = ''; // no action icons when moving - $moveto = ''; - } - - /// print the list items now - if ($moving == $element['item']->eid) { - - // do not diplay children - return ''; - - } - - if (!empty($element['children'])) { // Grade category - $category = grade_category::fetch(array('id' => $element['item']->id)); - $item = $category->get_grade_item(); - - $script = "window.location='index.php?id=$id&category={$category->id}&aggregationtype='+this.value"; - $aggregation = choose_from_menu($options, 'aggregation_'.$category->id, $category->aggregation, get_string('choose'), $script, 0, true); - - $onlygradedcheck = ($category->aggregateonlygraded == 1) ? 'checked="checked"' : ''; - $subcatscheck = ($category->aggregatesubcats == 1) ? 'checked="checked"' : ''; - $outcomescheck = ($category->aggregateoutcomes == 1) ? 'checked="checked"' : ''; - - $aggregateonlygraded =''; - $aggregatesubcats = ''; - $aggregateoutcomes = ''; - - $droplow = ''; - $keephigh = ''; - - $hidden = ''; - $hidden .= ''; - $hidden .= ''; - - // Add aggregation coef input if not a course item and if parent category has correct aggregation type - $aggcoef_input = get_weight_input($item); - $dimmed = ($item->hidden) ? " dimmed " : ""; - - $html .= ' - - '; - - if (!$moving) { - $html .= ' - - - - - - - - - - - '; - } - - $html .= ' - - '.$moveto; - - foreach ($element['children'] as $child) { - $html .= build_html_tree($tree, $child, $level+1, $moving, $eid); - } - - } else { // Dealing with a grade item - - $item = grade_item::fetch(array('id' => $element['item']->id)); - $element['type'] = 'item'; - $element['object'] = $item; - - $element['item']->name = grade_structure::get_element_icon($element). $element['item']->name; - - if (!empty($item->itemmodule) && $cm = get_coursemodule_from_instance($item->itemmodule, $item->iteminstance, $item->courseid)) { - - $dir = $CFG->dirroot.'/mod/'.$item->itemmodule; - - if (file_exists($dir.'/grade.php')) { - $url = $CFG->wwwroot.'/mod/'.$item->itemmodule.'/grade.php?id='.$cm->id; - } else { - $url = $CFG->wwwroot.'/mod/'.$item->itemmodule.'/view.php?id='.$cm->id; - } - - $element['item']->name = ''.$element['item']->name.''; - } - - // Determine aggregation coef element - $aggcoef_input = get_weight_input($item); - $multfactor = ''; - $plusfactor = ''; - - $dimmed = ($item->hidden) ? " dimmed_text " : ""; - $html .= ' - - '; - - if (!$moving) { - $html .= ' - - - - - - - - - - - '; - } - - $html .= ' - - '.$moveto; - } - - - if ($root) { - $html .= "
'.get_string('name').''.get_string('aggregation', 'grades').''.get_string('weightorextracredit', 'grades').''.get_string('range', 'grades').''.get_string('aggregateonlygraded', 'grades').''.get_string('aggregatesubcats', 'grades').''.get_string('aggregateoutcomes', 'grades').''.get_string('droplow', 'grades').''.get_string('keephigh', 'grades').''.get_string('multfactor', 'grades').''.get_string('plusfactor', 'grades').''.get_string('actions').'
'
-                . $strmovehere.'
'.$element['item']->name.' ('.get_string('move').')
' . $element['item']->name . $hidden . '' . $aggregation . '' . $aggcoef_input . '' . $item->get_formatted_range() . '' . $aggregateonlygraded . '' . $aggregatesubcats . '' . $aggregateoutcomes . '' . $droplow . '' . $keephigh . ' - - ' . $element['item']->actions . '
' . $element['item']->name . ' - ' . $aggcoef_input . '' . $item->get_formatted_range() . ' - - - - - '.$multfactor.''.$plusfactor.'' . $element['item']->actions . '
\n"; - } - - return $html; -} - -/** - * Given a grade_item object, returns a labelled input if an aggregation coefficient (weight or extra credit) applies to it. - * @param grade_item $item - * @return string HTML - */ -function get_weight_input($item) { - if ($item->is_course_item()) { - return ''; - } - - $parent_category = $item->get_parent_category(); - - if ($item->is_category_item()) { - $parent_category = $parent_category->get_parent_category(); - } - - $parent_category->apply_forced_settings(); - - if ($parent_category->is_aggregationcoef_used()) { - $aggcoef = ''; - - if ($parent_category->aggregation == GRADE_AGGREGATE_WEIGHTED_MEAN) { - $aggcoef = 'aggregationcoefweight'; - } elseif ($parent_category->aggregation == GRADE_AGGREGATE_EXTRACREDIT_MEAN) { - $aggcoef = 'aggregationcoefextra'; - } elseif ($parent_category->aggregation == GRADE_AGGREGATE_SUM) { - $aggcoef = 'aggregationcoefextrasum'; - } - - if ($aggcoef == 'aggregationcoefweight' || $aggcoef == 'aggregationcoefextra') { - return ''; - } elseif ($aggcoef == 'aggregationcoefextrasum' ) { - $checked = ($item->aggregationcoef > 0) ? 'checked="checked"' : ''; - $extracredit = ($item->aggregationcoef > 0) ? 1 : 0; - - return '\n" - . ''; - } else { - return ''; - } - } -} - -function element_deletable($element) { - global $COURSE; - - if ($element['type'] != 'item') { - return true; - } - - $grade_item = $element['object']; - - if ($grade_item->itemtype != 'mod' or $grade_item->is_outcome_item() or $grade_item->gradetype == GRADE_TYPE_NONE) { - return true; - } - - $modinfo = get_fast_modinfo($COURSE); - if (!isset($modinfo->instances[$grade_item->itemmodule][$grade_item->iteminstance])) { - // module does not exist - return true; - } - - return false; -} - -?> diff --git a/grade/edit/weights/tree.css b/grade/edit/weights/tree.css deleted file mode 100644 index 24c750965b..0000000000 --- a/grade/edit/weights/tree.css +++ /dev/null @@ -1,56 +0,0 @@ -.gradetreebox tr.category td { - background-color: #DDDDDD; -} - -.gradetreebox .category td.name { - font-weight: bold; -} - -.gradetreebox td.name { - -} - -.gradetreebox th.actions { - width: 80px; -} - -.child { - background-image: url(img/ln.gif); -} - -.hidden { - display: none; -} -.shown { -} - -img.iconsmall { - margin-left: 4px; -} - -img.icon { - margin-right: 5px; -} - -.gradetreebox { - margin-left: auto; - margin-right: auto; - margin-top: 10px; - padding-bottom: 15px; -} - -.gradetreebox table { - margin-left: auto; - margin-right: auto; -} - -.buttons { - margin: 20px; - text-align: center; - width: 100%; -} - -.buttons .singlebutton { - display: inline; - padding: 5px; -}