]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-9137 Almost finished the edit category page. The only remaining issue is some...
authornicolasconnault <nicolasconnault>
Fri, 1 Jun 2007 08:01:47 +0000 (08:01 +0000)
committernicolasconnault <nicolasconnault>
Fri, 1 Jun 2007 08:01:47 +0000 (08:01 +0000)
grade/report/grader/category.php
lib/grade/grade_tree.php
lib/weblib.php
theme/standard/styles_layout.css

index fa59939a0b6a249973f8f1684517aeb74c954fd8..c0289b96d5df829b3069cf2b0f1c43c17f8f6411 100644 (file)
@@ -29,15 +29,19 @@ require_once $CFG->libdir . '/gradelib.php';
 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;
@@ -79,11 +83,9 @@ if (!empty($param->action) && !empty($param->source) && confirm_sesskey()) {
             } 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&amp;action=delete&amp;confirm=1$tree->commonvars";
+                $linkno = "category.php?$tree->commonvars";
+                notice_yesno($strdeletecheckfull, $linkyes, $linkno);
             }
             break;
         
@@ -121,6 +123,53 @@ if (!empty($param->action) && !empty($param->source) && confirm_sesskey()) {
             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);
index bc5904274dfbee378b65aead9ddc0ded176cd7f1..f2bb8818aa76c0581f00ec82bd019a2570d9764e 100644 (file)
@@ -942,24 +942,50 @@ class grade_tree {
             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";
             } 
@@ -974,13 +1000,15 @@ class grade_tree {
             }
 
             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 = '';
@@ -988,31 +1016,56 @@ class grade_tree {
                 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&amp;moveup={$element['object']->previous_sortorder}$this->commonvars\">\n"; 
+                    $list .= '<a href="category.php?'."source=$sortorder&amp;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";
@@ -1020,7 +1073,7 @@ class grade_tree {
 
                 // Print down arrow
                 if (!$last) {
-                    $list .= '<a href="category.php?'."source=$sortorder&amp;movedown={$element['object']->next_sortorder}$this->commonvars\">\n"; 
+                    $list .= '<a href="category.php?'."source=$sortorder&amp;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";
@@ -1085,7 +1138,8 @@ class grade_tree {
                 }
             }
 
-            $list .= '</ul>' . "\n";
+            $list .= '</ul>' . "\n$closing_form_tags";
+
             return $list;
         }
 
index b1e92cb5aadbe27dcc7fdccd893f1de791cf252a..4a560613b934703bccfe1bcfafaab966611b5576 100644 (file)
@@ -5342,6 +5342,7 @@ function notice ($message, $link='', $course=NULL) {
  * @param string $message The text to display
  * @param string $linkyes The link to take the user to if they choose "Yes"
  * @param string $linkno The link to take the user to if they choose "No"
+ * TODO Document remaining arguments
  */
 function notice_yesno ($message, $linkyes, $linkno, $optionsyes=NULL, $optionsno=NULL, $methodyes='post', $methodno='post') {
 
@@ -6241,4 +6242,4 @@ function print_location_comment($file, $line, $return = false)
 }
 
 // vim:autoindent:expandtab:shiftwidth=4:tabstop=4:tw=140:
-?>
\ No newline at end of file
+?>
index 0638f43088888f5259351b5cd85dea92c760b2f1..087e120cda655dd4d08a2d6f63a07f26f9555544 100644 (file)
@@ -2023,6 +2023,16 @@ body#grade-index .grades .weighted {
   margin-top: 8px;
 }
 
+#grade_edit_tree li div.moduleicon {
+  margin-right: 5px;
+  display: inline;
+}
+
+#grade_edit_tree li div.select_checkbox {
+  margin-right: 5px;
+  display: inline;
+}
+
 #grade_edit_tree li.insertion {
   cursor: pointer;
 }