From: stronk7 Date: Mon, 17 May 2004 22:19:23 +0000 (+0000) Subject: Completely rewritten scales interface. It allows to delete unused X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=9c0026334934ffc2689cfea53eed8d5309976fb9;p=moodle.git 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... --- 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);