From 9c0026334934ffc2689cfea53eed8d5309976fb9 Mon Sep 17 00:00:00 2001 From: stronk7 Date: Mon, 17 May 2004 22:19:23 +0000 Subject: [PATCH] Completely rewritten scales interface. It allows to delete unused scales, edit and move them between custom and standar (only admins). Editing teacher can modify only custom scales. Bug 1223. (http://moodle.org/bugs/bug.php?op=show&bugid=1223) Please, test and decide... --- course/scales.php | 481 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 356 insertions(+), 125 deletions(-) diff --git a/course/scales.php b/course/scales.php index 6f41f39d33..93328bf7d1 100644 --- a/course/scales.php +++ b/course/scales.php @@ -1,24 +1,26 @@ id); + require_login($course->id); $strscale = get_string("scale"); $strscales = get_string("scales"); + $strcustomscale = get_string("scalescustom"); + $strstandardscale = get_string("scalesstandard"); $strcustomscales = get_string("scalescustom"); $strstandardscales = get_string("scalesstandard"); $strname = get_string("name"); @@ -27,7 +29,272 @@ $strchangessaved = get_string("changessaved"); $strdeleted = get_string("deleted"); $strdelete = get_string("delete"); + $stredit = get_string("edit"); + $strdown = get_string("movedown"); + $strup = get_string("moveup"); + $strmoved = get_string("changessaved"); + $srtcreatenewscale = get_string("scalescustomcreate"); + $strhelptext = get_string("helptext"); + $stractivities = get_string("activities"); + $stroptions = get_string("action"); + $strtype = get_string("group"); + + /// If scale data is being submitted, then save it and continue + $errors = NULL; + + if ($action == 'sendform') { + if ($form = data_submitted()) { + if (empty($form->name)) { + $errors[$scaleid]->name = true; + $focus = "form$scaleid.save"; + } + if (empty($form->scalescale)) { + $errors[$scaleid]->scalescale = true; + $focus = "form$scaleid.save"; + } + + if (!$errors) { + $newscale=NULL; + $newscale->name = $form->name; + $newscale->scale = $form->scalescale; + $newscale->description = $form->description; + $newscale->courseid = $form->courseid; + $newscale->userid = $USER->id; + $newscale->timemodified = time(); + + if (empty($scaleid)) { + $newscale->courseid = $course->id; + if (!insert_record("scale", $newscale)) { + error("Could not insert the new scale!"); + } + } else { + $newscale->id = $scaleid; + if (!update_record("scale", $newscale)) { + error("Could not update that scale!"); + } + } + + $notify = "$newscale->name: $strchangessaved"; + $focus = "form$scaleid.save"; + } else { + if (!empty($scaleid)) { + $action = "edit"; + } else { + $action = "new"; + } + } + } + } + + //If action is details, show the popup info + if ($action == "details") { + //Check for teacher edit + if (! isteacheredit($course->id)) { + error("Only editing teachers can view scales !"); + } + //Check for scale + if (! $scale = get_record("scale", "id", $scaleid)) { + error("Scale ID was incorrect"); + } + + $scales_course_uses = course_scale_used($course->id,$scale->id); + $scales_site_uses = site_scale_used($scale->id); + $scalemenu = make_menu_from_list($scale->scale); + + print_header("$course->shortname: $strscales", "$course->fullname", + "$course->shortname -> $strscales -> $scale->name", "", "", true, " ", " "); + + close_window_button(); + + echo "

"; + print_simple_box_start("center"); + print_heading($scale->name); + echo "

"; + choose_from_menu($scalemenu, "", "", ""); + echo "
"; + echo text_to_html($scale->description); + print_simple_box_end(); + echo "

"; + + close_window_button(); + + exit; + } + + //If action is edit or new, show the form + if ($action == "edit" || $action == "new") { + //Check for teacher edit + if (! isteacheredit($course->id)) { + error("Only editing teachers can modify scales !"); + } + //Check for scale if action = edit + if ($action == "edit") { + if (! $scale = get_record("scale", "id", $scaleid)) { + error("Scale ID was incorrect"); + } + } else { + $scale->id = 0; + $scale->courseid = 0; + $scale->name = ""; + $scale->scale = ""; + $scale->description = ""; + } + + //Calculate the uses + if ($scale->courseid == 0) { + $scale_uses = site_scale_used($scale->id); + } else { + $scale_uses = course_scale_used($course->id,$scale->id); + } + + //Check for scale_uses + if (!empty($scale_uses)) { + error("Scale is in use and cannot be modified",$CFG->wwwroot.'/course/scales.php?id='.$course->id); + } + + //Check for standard scales + if ($scale->courseid == 0 and !isadmin()) { + error("Only administrators can edit this scale",$CFG->wwwroot.'/course/scales.php?id='.$course->id); + } + + //Print out the headers + if (!isset($focus)) { + $focus = ""; + } + print_header("$course->shortname: $strscales", "$course->fullname", + "id\">$course->shortname". + " -> id\">$strscales". + " -> ".get_string("editinga","",$strscale), $focus); + + //Title + print_heading_with_help($strscales, "scales"); + + if (!empty($errors) and ($form->scaleid == $scale->id)) { + $scale->name = $form->name; + $scale->scale = $form->scalescale; + $scale->description = $form->description; + } + echo "

id\">"; + echo ""; + echo ""; + if (!empty($errors[$scale->id]->name)) { + $class = "class=\"highlight\""; + } else { + $class = ""; + } + echo ""; + echo ""; + echo ""; + echo ""; + if (!empty($errors[$scale->id]->scalescale)) { + $class = "class=\"highlight\""; + } else { + $class = ""; + } + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + if ($scale->id) { + echo ""; + echo ""; + echo ""; + echo ""; + } + echo ""; + echo "

$strname:

name)."\">"; + echo "

$strscale:

"; + echo "

$strdescription:

"; + helpbutton("text", $strhelptext); + echo "
"; + echo "
"; + echo "".get_string("usedinnplaces","",$scale_uses); + echo "
"; + echo "id\">"; + echo "courseid\">"; + echo "id\">"; + echo ""; + echo ""; + echo "
"; + echo "
"; + echo "
"; + + print_footer($course); + + exit; + } + + //If action is delete, do it + if ($action == "delete") { + //Check for teacher edit + if (! isteacheredit($course->id)) { + error("Only editing teachers can delete scales !"); + } + //Check for scale if action = edit + if (! $scale = get_record("scale", "id", $scaleid)) { + error("Scale ID was incorrect"); + } + + //Calculate the uses + if ($scale->courseid == 0) { + $scale_uses = site_scale_used($scale->id); + } else { + $scale_uses = course_scale_used($course->id,$scale->id); + } + + //Check for scale_uses + if (!empty($scale_uses)) { + error("Scale is in use and cannot be deleted",$CFG->wwwroot.'/course/scales.php?id='.$course->id); + } + + //Check for standard scales + if ($scale->courseid == 0 and !isadmin()) { + error("Only administrators can delete this scale",$CFG->wwwroot.'/course/scales.php?id='.$course->id); + } + + if (delete_records("scale", "id", $scaleid)) { + $notify = "$scale->name: $strdeleted"; + } + } + + //If action is down or up, do it + if ($action == "down" || $action == "up" ) { + //Check for teacher edit + if (! isadmin()) { + error("Only administrators can move scales",$CFG->wwwroot.'/course/scales.php?id='.$course->id); + } + //Check for scale if action = edit + if (! $scale = get_record("scale", "id", $scaleid)) { + error("Scale ID was incorrect"); + } + + //Calculate the uses + if ($scale->courseid == 0) { + $scale_uses = site_scale_used($scale->id); + } else { + $scale_uses = course_scale_used($course->id,$scale->id); + } + + //Check for scale_uses + if (!empty($scale_uses)) { + error("Scale is in use and cannot be moved",$CFG->wwwroot.'/course/scales.php?id='.$course->id); + } + + if ($action == "down") { + $scale->courseid = 0; + } else { + $scale->courseid = $course->id; + } + + if (set_field("scale", "courseid", $scale->courseid, "id", $scale->id)) { + $notify = "$scale->name: $strmoved"; + } + } if (isset($_GET['list'])) { /// Just list the scales (in a helpwindow) @@ -107,142 +374,106 @@ error("Only editing teachers can modify scales !"); } +/// Print out the main page -/// If scale data is being submitted, then save it and continue - - $errors = NULL; - - if ($form = data_submitted()) { - if (!empty($form->delete)) { /// Delete a scale - $scale = get_record("scale", "id", $scaleid); - if (delete_records("scale", "id", $scaleid)) { - $notify = "$scale->name: $strdeleted"; - } - } else { /// Update scale data - if (empty($form->name)) { - $errors[$scaleid]->name = true; - $focus = "form$scaleid.save"; - } - if (empty($form->scale)) { - $errors[$scaleid]->scale = true; - $focus = "form$scaleid.save"; - } - - if (!$errors) { - $newscale=NULL; - $newscale->name = $form->name; - $newscale->scale = $form->scale; - $newscale->description = $form->description; - $newscale->courseid = $course->id; - $newscale->userid = $USER->id; - $newscale->timemodified = time(); - - if (empty($scaleid)) { - if (!insert_record("scale", $newscale)) { - error("Could not insert the new scale!"); - } - } else { - $newscale->id = $scaleid; - if (!update_record("scale", $newscale)) { - error("Could not update that scale!"); - } - } - - $notify = "$newscale->name: $strchangessaved"; - $focus = "form$scaleid.save"; - } - } - } - + print_header("$course->shortname: $strscales", "$course->fullname", + "id\">$course->shortname + -> $strscales"); -/// Print out the headers + print_heading_with_help($strscales, "scales"); - print_header("$course->shortname: $strscales", "$course->fullname", - "id\">$course->shortname - -> $strscales", $focus); + $options = array(); + $options['id'] = $course->id; + $options['scaleid'] = 0; + $options['action'] = 'new'; - print_heading_with_help($strcustomscales, "scales"); + print_simple_box_start('center'); + print_single_button($CFG->wwwroot.'/course/scales.php',$options,$srtcreatenewscale,'POST'); + print_simple_box_end(); + echo "

"; if (!empty($notify)) { notify($notify, "green"); } - -/// Otherwise print out all the scale forms - + $scales = array(); $customscales = get_records("scale", "courseid", "$course->id", "name ASC"); + $standardscales = get_records("scale", "courseid", "0", "name ASC"); - $blankscale->id = ""; - $blankscale->name = ""; - $blankscale->scale = ""; - $blankscale->description = ""; - $customscales[] = $blankscale; - - foreach ($customscales as $scale) { - if (!empty($errors) and ($form->scaleid == $scale->id)) { - $scale->name = $form->name; - $scale->scale = $form->scale; - $scale->description = $form->description; - } - echo "

id\">"; - echo ""; - echo ""; - if (!empty($errors[$scale->id]->name)) { - $class = "class=\"highlight\""; - } else { - $class = ""; - } - echo ""; - echo ""; - echo ""; - echo ""; - if (!empty($errors[$scale->id]->scale)) { - $class = "class=\"highlight\""; - } else { - $class = ""; - } - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo "

$strname:

name)."\">"; - echo "

$strscale:

"; - echo "

$strdescription:

"; - helpbutton("text", get_string("helptext")); - echo "
"; - echo "
"; - echo "id\">"; - echo "id\">"; - echo ""; - if ($scale->id) { - echo ""; + if ($customscales) { + foreach($customscales as $scale) { + $scales[] = $scale; } - echo "
"; - echo "
"; - echo "
"; } - echo "

"; - + if ($standardscales) { + foreach($standardscales as $scale) { + $scales[] = $scale; + } + } - if ($scales = get_records("scale", "courseid", "0", "name ASC")) { - print_heading($strstandardscales); - foreach ($scales as $scale) { - $scalemenu = make_menu_from_list($scale->scale); + if ($scales) { + //Calculate the base path + $path = "$CFG->wwwroot/course"; + //Calculate pixpath + if (empty($THEME->custompix)) { + $pixpath = "$path/../pix"; + } else { + $pixpath = "$path/../theme/$CFG->theme/pix"; + } - print_simple_box_start("center"); - print_heading($scale->name); - echo "
"; - choose_from_menu($scalemenu, "", "", ""); - echo "
"; - echo text_to_html($scale->description); - print_simple_box_end(); - echo "
"; + $data = array(); + $incustom = true; + foreach($scales as $scale) { + //Check the separator + if (empty($scale->courseid) && $incustom) { + $incustom = false; + $line = "hr"; + $data[] = $line; + } + $line = array(); + $line[] = "name\" href=\"$CFG->wwwroot/course/scales.php?id=$course->id&scaleid=$scale->id&action=details\" "."onClick=\"return openpopup('/course/scales.php?id=$course->id\&scaleid=$scale->id&action=details', 'scale', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);\">".$scale->name."
".str_replace(",",", ",$scale->scale).""; + if (!empty($scale->courseid)) { + $scales_uses = course_scale_used($course->id,$scale->id); + } else { + $scales_uses = site_scale_used($scale->id); + } + $line[] = $scales_uses; + if ($incustom) { + $line[] = $strcustomscale; + } else { + $line[] = $strstandardscale; + } + $buttons = ""; + if (empty($scales_uses) && ($incustom || isadmin())) { + $buttons .= "id&scaleid=$scale->id&action=edit\"> "; + if ($incustom && isadmin()) { + $buttons .= "id&scaleid=$scale->id&action=down\"> "; + } + if (!$incustom && isadmin()) { + $buttons .= "id&scaleid=$scale->id&action=up\"> "; + } + $buttons .= "id&scaleid=$scale->id&action=delete\"> "; + } + $line[] = $buttons; + + $data[] = $line; } + $head = $strscale.",".$stractivities.",".$strtype.",".$stroptions; + $table->head = explode(",",$head); + $size = "50%,20$,20%,10%"; + $table->size = explode(",",$size); + $align = "left,center,center,center"; + $table->align = explode(",",$align); + $wrap = ",nowrap,nowrap,nowrap"; + $table->wrap = explode(",",$wrap); + $table->width = "90%"; + $table->data = $data; + print_table ($table); } print_footer($course); -- 2.39.5