print_header('Edit categories');
$param = new stdClass();
-$param->courseid = optional_param('courseid', 0 , PARAM_INT);
-$param->moveup = optional_param('moveup', 0, PARAM_INT);
-$param->movedown = optional_param('movedown', 0, PARAM_INT);
-$param->source = optional_param('source', 0, PARAM_INT);
-$param->action = optional_param('action', 0, PARAM_ALPHA);
-$param->move = optional_param('move', 0, PARAM_INT);
-$param->type = optional_param('type', 0, PARAM_ALPHA);
-$param->target = optional_param('target', 0, PARAM_INT);
-$param->confirm = optional_param('confirm', 0, PARAM_INT);
+$param->courseid = optional_param('courseid', 0 , PARAM_INT);
+$param->moveup = optional_param('moveup', 0, PARAM_INT);
+$param->movedown = optional_param('movedown', 0, PARAM_INT);
+$param->source = optional_param('source', 0, PARAM_INT);
+$param->action = optional_param('action', 0, PARAM_ALPHA);
+$param->move = optional_param('move', 0, PARAM_INT);
+$param->type = optional_param('type', 0, PARAM_ALPHA);
+$param->target = optional_param('target', 0, PARAM_INT);
+$param->confirm = optional_param('confirm', 0, PARAM_INT);
+$param->items = optional_param('items', 0, PARAM_INT);
+$param->categories = optional_param('categories', 0, PARAM_INT);
+$param->element_type = optional_param('element_type', 0, PARAM_ALPHA);
+$param->category_name= optional_param('category_name', 0, PARAM_ALPHA);
$tree = new grade_tree($param->courseid);
$select_source = false;
} else {
// Print confirmation dialog
$strdeletecheckfull = get_string('deletecheck', '', $element->element['object']->get_name());
- print_simple_box_start('center', '60%', '#FFAAAA', 20, 'noticebox');
- print_heading($strdeletecheckfull);
- include_once('category_delete.html');
- print_simple_box_end();
- exit();
+ $linkyes = "category.php?target=$param->target&action=delete&confirm=1$tree->commonvars";
+ $linkno = "category.php?$tree->commonvars";
+ notice_yesno($strdeletecheckfull, $linkyes, $linkno);
}
break;
break;
}
unset($param->target);
+} elseif (!empty($param->element_type) && !empty($param->action) && $param->action == 'create' && confirm_sesskey() && !empty($param->category_name)) {
+ if ($param->element_type == 'items') {
+ if (!empty($param->items)) {
+ $category = new grade_category();
+ $category->fullname = $param->category_name;
+ $category->courseid = $tree->courseid;
+ $items = array();
+ foreach ($param->items as $sortorder => $useless_var) {
+ $element = $tree->locate_element($sortorder);
+ $items[$element->element['object']->id] = $element->element['object'];
+ }
+ print_object($items);
+ /*
+ if ($category->set_as_parent($items) && $category->update()) {
+ $tree = new grade_tree($param->courseid);
+ } else { // creation of category didn't work, print a message
+ debugging("Could not create a parent category over the items you selected..");
+ }
+ */
+
+ } else { // No items selected. Can't create a category over them...
+ notice("Couldn't create a category, you did not select any grade items.");
+ }
+ } elseif ($param->element_type == 'categories') {
+ if (!empty($param->categories)) {
+ $category = new grade_category();
+ $category->fullname = $param->category_name;
+ $category->courseid = $tree->courseid;
+ $categories = array();
+ foreach ($param->categories as $sortorder => $useless_var) {
+ $element = $tree->locate_element($sortorder);
+ $categories[$element->element['object']->id] = $element->element['object'];
+ }
+
+ if ($category->set_as_parent($categories) && $category->update()) {
+ $tree = new grade_tree($param->courseid);
+ } else { // creation of category didn't work, print a message
+ debugging("Could not create a parent category over the categories you selected..");
+ }
+
+ } else { // No categories selected. Can't create a category over them...
+ notice("Couldn't create a category, you did not select any sub-categories.");
+ }
+
+ } else { // The element_type wasn't set properly, throw up an error
+
+ }
}
echo $tree->get_edit_tree(1, null, $param->source, $param->action, $param->type);
return null;
} else {
global $CFG;
-
- $strmove = get_string("move");
- $strmoveup = get_string("moveup");
- $strmovedown = get_string("movedown");
- $strmovehere = get_string("movehere");
- $strcancel = get_string("cancel");
- $stredit = get_string("edit");
- $strdelete = get_string("delete");
- $strhide = get_string("hide");
- $strshow = get_string("show");
- $strlock = get_string("lock", 'grades');
- $strunlock = get_string("unlock", 'grades');
+ global $USER;
+
+ $strmove = get_string("move");
+ $strmoveup = get_string("moveup");
+ $strmovedown = get_string("movedown");
+ $strmovehere = get_string("movehere");
+ $strcancel = get_string("cancel");
+ $stredit = get_string("edit");
+ $strdelete = get_string("delete");
+ $strhide = get_string("hide");
+ $strshow = get_string("show");
+ $strlock = get_string("lock", 'grades');
+ $strunlock = get_string("unlock", 'grades');
+ $strnewcategory = get_string("newcategory", 'grades');
+ $strcategoryname = get_string("categoryname", 'grades');
+ $strcreatecategory = get_string("createcategory", 'grades');
+ $strsubcategory = get_string("subcategory", 'grades');
+ $stritems = get_string("items", 'grades');
+ $strcategories = get_string("categories", 'grades');
$list = '';
-
+ $closing_form_tags = '';
+
if (empty($elements)) {
+ $list .= '<form action="category.php" method="post">' . "\n";
$list .= '<ul id="grade_edit_tree">' . "\n";
$elements = $this->tree_array;
+
+ $element_type_options = '<select name="element_type">' . "\n";
+ $element_type_options .= "<option value=\"items\">$stritems</option><option value=\"categories\">$strcategories</option>\n";
+ $element_type_options .= "</select>\n";
+
+ $strforelementtypes= get_string("forelementtypes", 'grades', $element_type_options);
+
+ $closing_form_tags .= '<fieldset><legend>' . $strnewcategory . '</legend>' . "\n";
+ $closing_form_tags .= '<input type="hidden" name="sesskey" value="' . $USER->sesskey . '" />' . "\n";
+ $closing_form_tags .= '<input type="hidden" name="courseid" value="' . $this->courseid . '" />' . "\n";
+ $closing_form_tags .= '<input type="hidden" name="action" value="create" />' . "\n";
+ $closing_form_tags .= '<label for="category_name">' . $strcategoryname . '</label>' . "\n";
+ $closing_form_tags .= '<input id="category_name" type="text" name="category_name" size="40" />' . "\n";
+ $closing_form_tags .= '<input type="submit" value="' . $strcreatecategory . '" />' . "\n";
+ $closing_form_tags .= $strforelementtypes;
+ $closing_form_tags .= '</fieldset>' . "\n";
+ $closing_form_tags .= "</form>\n";
} else {
$list = '<ul class="level' . $level . 'children">' . "\n";
}
}
foreach ($elements as $sortorder => $element) {
+ $object = $element['object'];
+
if (empty($element->next_sortorder)) {
$element->next_sortorder = null;
}
- $object_name = $element['object']->get_name();
- $object_class = get_class($element['object']);
- $object_parent = $element['object']->get_parent_id();
+ $object_name = $object->get_name();
+ $object_class = get_class($object);
+ $object_parent = $object->get_parent_id();
$element_type = $this->get_element_type($element);
$highlight_class = '';
if ($source_sortorder == $sortorder && !empty($action)) {
$highlight_class = ' selected_element ';
}
-
+
+ // Prepare item icon if appropriate
+ $module_icon = '';
+ if (!empty($object->itemmodule)) {
+ $module_icon = '<div class="moduleicon">'
+ . '<label for="checkbox_select_' . $sortorder . '">'
+ . '<img src="'
+ . $CFG->modpixpath . '/' . $object->itemmodule . '/icon.gif" alt="'
+ . $object->itemmodule . '" title="' . $object->itemmodule . '" /></label></div>';
+ }
+
// Add dimmed_text span around object name if set to hidden
$hide_show = 'hide';
- if ($element['object']->get_hidden()) {
+ if ($object->get_hidden()) {
$object_name = '<span class="dimmed_text">' . $object_name . '</span>';
$hide_show = 'show';
}
// Prepare lock/unlock string
$lock_unlock = 'lock';
- if ($element['object']->get_locked()) {
+ if ($object->get_locked()) {
$lock_unlock = 'unlock';
}
- // Print activity icon
+ // Prepare select checkbox for subcats and items
+ $select_checkbox = '';
+ if ($element_type != 'topcat') {
+ $group = 'items';
+ if ($element_type == 'subcat') {
+ $group = 'categories';
+ }
+
+ $select_checkbox = '<div class="select_checkbox">' . "\n"
+ . '<input id="checkbox_select_' . $sortorder . '" type="checkbox" name="' . $group . '[' . $sortorder . ']" />' . "\n"
+ . '</div>' . "\n";
+
+ // Add a label around the object name to trigger the checkbox
+ $object_name = '<label for="checkbox_select_' . $sortorder . '">' . $object_name . '</label>';
+ }
$list .= '<li class="level' . $level . 'element sortorder'
- . $element['object']->get_sortorder() . $highlight_class . '">' . "\n"
- . $object_name;
+ . $object->get_sortorder() . $highlight_class . '">' . "\n"
+ . $select_checkbox . $module_icon . $object_name;
+
- $list .= '<div class="icons">';
+ $list .= '<div class="icons">' . "\n";
// Print up arrow
if (!$first) {
- $list .= '<a href="category.php?'."source=$sortorder&moveup={$element['object']->previous_sortorder}$this->commonvars\">\n";
+ $list .= '<a href="category.php?'."source=$sortorder&moveup={$object->previous_sortorder}$this->commonvars\">\n";
$list .= '<img src="'.$CFG->pixpath.'/t/up.gif" class="iconsmall" ' . 'alt="'.$strmoveup.'" title="'.$strmoveup.'" /></a>'. "\n";
} else {
$list .= '<img src="'.$CFG->wwwroot.'/pix/spacer.gif" class="iconsmall" alt="" /> '. "\n";
// Print down arrow
if (!$last) {
- $list .= '<a href="category.php?'."source=$sortorder&movedown={$element['object']->next_sortorder}$this->commonvars\">\n";
+ $list .= '<a href="category.php?'."source=$sortorder&movedown={$object->next_sortorder}$this->commonvars\">\n";
$list .= '<img src="'.$CFG->pixpath.'/t/down.gif" class="iconsmall" ' . 'alt="'.$strmovedown.'" title="'.$strmovedown.'" /></a>'. "\n";
} else {
$list .= '<img src="'.$CFG->wwwroot.'/pix/spacer.gif" class="iconsmall" alt="" /> ' . "\n";
}
}
- $list .= '</ul>' . "\n";
+ $list .= '</ul>' . "\n$closing_form_tags";
+
return $list;
}