From 2a6cdc51b70acf61523909a7fab64289c63222df Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Wed, 21 Jan 2015 17:15:15 +0800 Subject: [PATCH] MDL-47562 gradereport_singleview: ui fixes and improvements Collection of ui improvements that did not get completed before 2.8 was released. See the tracker for more details. --- .../singleview/classes/local/screen/grade.php | 10 ++- .../singleview/classes/local/screen/screen.php | 2 +- .../singleview/classes/local/screen/select.php | 5 +- .../classes/local/screen/selectable_items.php | 6 ++ .../singleview/classes/local/screen/tablelike.php | 8 ++- .../singleview/classes/local/screen/user.php | 26 ++++---- grade/report/singleview/index.php | 5 +- .../singleview/lang/en/gradereport_singleview.php | 6 ++ grade/report/singleview/lib.php | 2 +- grade/report/singleview/styles.css | 76 ++++++++++++++++------ 10 files changed, 106 insertions(+), 40 deletions(-) diff --git a/grade/report/singleview/classes/local/screen/grade.php b/grade/report/singleview/classes/local/screen/grade.php index 2905a9a593c..5fee7784e31 100644 --- a/grade/report/singleview/classes/local/screen/grade.php +++ b/grade/report/singleview/classes/local/screen/grade.php @@ -72,6 +72,14 @@ class grade extends tablelike implements selectable_items, filterable_items { } /** + * Get the label for the select box that chooses items for this page. + * @return string + */ + public function select_label() { + return get_string('selectuser', 'gradereport_singleview'); + } + + /** * Get the description of this page * @return string */ @@ -278,7 +286,7 @@ class grade extends tablelike implements selectable_items, filterable_items { * @return string */ public function heading() { - return $this->item->get_name(); + return get_string('gradeitem', 'gradereport_singleview', $this->item->get_name()); } /** diff --git a/grade/report/singleview/classes/local/screen/screen.php b/grade/report/singleview/classes/local/screen/screen.php index f31c1d2b8f0..8a43bd5af0f 100644 --- a/grade/report/singleview/classes/local/screen/screen.php +++ b/grade/report/singleview/classes/local/screen/screen.php @@ -200,7 +200,7 @@ abstract class screen { * @return string */ public function heading() { - return get_string('pluginname', 'gradereport_singleview'); + return get_string('entrypage', 'gradereport_singleview'); } /** diff --git a/grade/report/singleview/classes/local/screen/select.php b/grade/report/singleview/classes/local/screen/select.php index c90d9ba0137..c900b33003c 100644 --- a/grade/report/singleview/classes/local/screen/select.php +++ b/grade/report/singleview/classes/local/screen/select.php @@ -104,10 +104,11 @@ class select extends screen { $url = new moodle_url('/grade/report/singleview/index.php', $params); - $select = new \single_select($url, 'itemid', $options); - $select->set_label($screen->description()); + $select = new \single_select($url, 'itemid', $options, '', array('' => $screen->select_label())); + $select->set_label($screen->select_label(), array('class'=>'accesshide')); $html .= $OUTPUT->render($select); } + $html = $OUTPUT->container($html, 'selectitems'); if (empty($html)) { $OUTPUT->notification(get_string('noscreens', 'gradereport_singleview')); diff --git a/grade/report/singleview/classes/local/screen/selectable_items.php b/grade/report/singleview/classes/local/screen/selectable_items.php index 84967fc0571..37f1ad317a3 100644 --- a/grade/report/singleview/classes/local/screen/selectable_items.php +++ b/grade/report/singleview/classes/local/screen/selectable_items.php @@ -41,6 +41,12 @@ interface selectable_items { public function description(); /** + * Get the label for the select box that chooses items for this page. + * @return string + */ + public function select_label(); + + /** * Get the list of options to show. * @return array */ diff --git a/grade/report/singleview/classes/local/screen/tablelike.php b/grade/report/singleview/classes/local/screen/tablelike.php index 3b0a4afb9e2..3a9b2d493a8 100644 --- a/grade/report/singleview/classes/local/screen/tablelike.php +++ b/grade/report/singleview/classes/local/screen/tablelike.php @@ -183,7 +183,7 @@ abstract class tablelike extends screen { $underlying = get_class($this); - $data = new stdClass; + $data = new stdClass(); $data->table = $table; $data->instance = $this; @@ -191,14 +191,18 @@ abstract class tablelike extends screen { $buttonhtml = implode(' ', $this->buttons()); $buttons = html_writer::tag('div', $buttonhtml, $buttonattr); + $selectview = new select($this->courseid, $this->itemid, $this->groupid); $sessionvalidation = html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'sesskey', 'value' => sesskey())); - return html_writer::tag('form', + $html = $selectview->html(); + $html .= html_writer::tag('form', $buttons . html_writer::table($table) . $this->bulk_insert() . $buttons . $sessionvalidation, array('method' => 'POST') ); + $html .= $selectview->html(); + return $html; } /** diff --git a/grade/report/singleview/classes/local/screen/user.php b/grade/report/singleview/classes/local/screen/user.php index 699323756c6..c5490b806d6 100644 --- a/grade/report/singleview/classes/local/screen/user.php +++ b/grade/report/singleview/classes/local/screen/user.php @@ -53,6 +53,14 @@ class user extends tablelike implements selectable_items { private $requirespaging = true; /** + * Get the label for the select box that chooses items for this page. + * @return string + */ + public function select_label() { + return get_string('selectgrade', 'gradereport_singleview'); + } + + /** * Get the description for the screen. * * @return string @@ -84,15 +92,6 @@ class user extends tablelike implements selectable_items { } /** - * Should we show the group selector on this screen? - * - * @return bool - */ - public function display_group_selector() { - return false; - } - - /** * Init the screen * * @param bool $selfitemisempty Have we selected an item yet? @@ -103,9 +102,12 @@ class user extends tablelike implements selectable_items { if (!$selfitemisempty) { $validusers = $this->load_users(); if (!isset($validusers[$this->itemid])) { - print_error('invaliduserid'); + // If the passed user id is not valid, show the first user from the list instead. + $this->item = reset($validusers); + $this->itemid = $this->item->id; + } else { + $this->item = $validusers[$this->itemid]; } - $this->item = $validusers[$this->itemid]; } $params = array('courseid' => $this->courseid); @@ -282,7 +284,7 @@ class user extends tablelike implements selectable_items { * @return string */ public function heading() { - return fullname($this->item); + return get_string('gradeuser', 'gradereport_singleview', fullname($this->item)); } /** diff --git a/grade/report/singleview/index.php b/grade/report/singleview/index.php index 42e99bf017d..b1f5f7bfb5f 100644 --- a/grade/report/singleview/index.php +++ b/grade/report/singleview/index.php @@ -42,6 +42,7 @@ $perpage = optional_param('perpage', 100, PARAM_INT); $courseparams = array('id' => $courseid); $PAGE->set_url(new moodle_url('/grade/report/singleview/index.php', $courseparams)); +$PAGE->set_pagelayout('incourse'); if (!$course = $DB->get_record('course', $courseparams)) { print_error('nocourseid'); @@ -138,13 +139,13 @@ if (!empty($options)) { $navparams['itemid'] = $reloptionssorting[$i - 1]; $link = new moodle_url('/grade/report/singleview/index.php', $navparams); $navprev = html_writer::link($link, $OUTPUT->larrow() . ' ' . $reloptions[$reloptionssorting[$i - 1]]); - $graderleftnav = html_writer::tag('small', $navprev, array('class' => 'itemnav previtem')); + $graderleftnav = html_writer::tag('div', $navprev, array('class' => 'itemnav previtem')); } if ($i < count($reloptionssorting) - 1) { $navparams['itemid'] = $reloptionssorting[$i + 1]; $link = new moodle_url('/grade/report/singleview/index.php', $navparams); $navnext = html_writer::link($link, $reloptions[$reloptionssorting[$i + 1]] . ' ' . $OUTPUT->rarrow()); - $graderrightnav = html_writer::tag('small', $navnext, array('class' => 'itemnav nextitem')); + $graderrightnav = html_writer::tag('div', $navnext, array('class' => 'itemnav nextitem')); } } diff --git a/grade/report/singleview/lang/en/gradereport_singleview.php b/grade/report/singleview/lang/en/gradereport_singleview.php index 792cc909c84..9a8e6e74d8c 100644 --- a/grade/report/singleview/lang/en/gradereport_singleview.php +++ b/grade/report/singleview/lang/en/gradereport_singleview.php @@ -31,6 +31,7 @@ $string['bulkinsertvalue'] = 'Insert value'; $string['bulklegend'] = 'Bulk insert'; $string['bulkperform'] = 'Perform bulk insert'; $string['bulkfor'] = 'Grades for {$a}'; +$string['entrypage'] = 'Grade user or grade item'; $string['exclude'] = 'Exclude'; $string['excludeall'] = 'Exclude all grades'; $string['excludefor'] = 'Exclude for {$a}'; @@ -39,6 +40,8 @@ $string['eventgradereportviewed'] = 'Grade single view report viewed.'; $string['feedbackfor'] = 'Feedback for {$a}'; $string['filtergrades'] = 'Show grades for {$a}.'; $string['gradefor'] = 'Grade for {$a}'; +$string['gradeitem'] = 'Grade item: {$a}'; +$string['gradeuser'] = 'Grade user: {$a}'; $string['noscreens'] = 'Could not find a suitable single view screen.'; $string['gradeitemcannotbeoverridden'] = 'This grade item cannot be overridden.'; $string['notvalid'] = 'Not a valid Single view screen: {$a}'; @@ -49,6 +52,9 @@ $string['overridenone'] = 'Do not override any grades'; $string['pluginname'] = 'Single view'; $string['savegrades'] = 'Saving grades'; $string['savegradessuccess'] = 'Grades were set for {$a} items'; +$string['selectgrade'] = 'Select grade item...'; +$string['selectuser'] = 'Select user...'; $string['singleview:view'] = 'View report'; $string['summarygrade'] = 'A table of users, with columns for range, grade, feedback, and whether to override or exclude a particular grade.'; $string['summaryuser'] = 'A table of grade items, with columns for grade category, range, grade, feedback, and whether to override or exclude a particular grade.'; +$string['userselect'] = 'Select activity'; diff --git a/grade/report/singleview/lib.php b/grade/report/singleview/lib.php index b40711b648e..5ecb43036bc 100644 --- a/grade/report/singleview/lib.php +++ b/grade/report/singleview/lib.php @@ -107,7 +107,7 @@ class gradereport_singleview extends grade_report { */ public function output() { global $OUTPUT; - return $OUTPUT->box($this->screen->html()); + return $OUTPUT->container($this->screen->html(), 'reporttable'); } } diff --git a/grade/report/singleview/styles.css b/grade/report/singleview/styles.css index 888b1ce934d..0003f00bc86 100644 --- a/grade/report/singleview/styles.css +++ b/grade/report/singleview/styles.css @@ -1,17 +1,39 @@ -.path-grade-report-singleview div.generalbox { - margin: 0 20px 15px 20px; +.path-grade-report-singleview div.reporttable { text-align: center; } -.path-grade-report-singleview div.generalbox div.singleselect form div { +.path-grade-report-singleview div.groupselector, +.path-grade-report-singleview div.reporttable form div.singleview_buttons, +.path-grade-report-singleview div.selectitems { + display: block; + text-align: right; + clear: both; +} +.dir-rtl.path-grade-report-singleview div.groupselector, +.dir-rtl.path-grade-report-singleview div.reporttable form div.singleview_buttons, +.dir-rtl.path-grade-report-singleview div.selectitems { + text-align: left; +} + +.path-grade-report-singleview div.singleselect+div.singleselect select, +.path-grade-report-singleview div.groupselector select { + margin-right: 0px; +} +dir-rtl.path-grade-report-singleview div.singleselect+div.singleselect select, +dir-rtl.path-grade-report-singleview div.groupselector select { + margin-right: 10px; + margin-left: 0px; +} + +.path-grade-report-singleview div.reporttable div.singleselect form div { text-align: center; } -.path-grade-report-singleview div.generalbox table.generaltable { +.path-grade-report-singleview div.reporttable table.reporttable { margin: 0 auto 15px auto; } -.path-grade-report-singleview div.generalbox form div { +.path-grade-report-singleview div.reporttable form div { text-align: center; } @@ -19,17 +41,18 @@ padding: 10px 0; } -.path-grade-report-singleview div.generalbox h2 { +.path-grade-report-singleview div.reporttable h2 { text-align: center; } .path-grade-report-singleview input[name^="finalgrade"] { width: 50px; } -.path-grade-report-singleview .generaltable tbody th { +.path-grade-report-singleview .reporttable tbody th, +.path-grade-report-singleview .reporttable tbody td.range { white-space: nowrap; } -.path-grade-report-singleview .generaltable tbody th > * { +.path-grade-report-singleview .reporttable tbody th > * { display: inline-block; vertical-align: middle; margin: 0 2px; @@ -37,37 +60,43 @@ .path-grade-report-singleview #region-main h2, .paging{ text-align: center; + clear: both; } +.path-grade-report-singleview .itemnav { + font-size: small; + display: inline; + margin-bottom: 0.5em; +} .path-grade-report-singleview itemnav.previtem { float:left; } -.path-grade-report-singleview.dir-rtl small.previtem { +.path-grade-report-singleview.dir-rtl div.previtem { float:right; } -.path-grade-report-singleview small.nextitem { +.path-grade-report-singleview div.nextitem { float:right; } -.path-grade-report-singleview.dir-rtl small.nextitem { +.path-grade-report-singleview.dir-rtl div.nextitem { float:left; } -.path-grade-report-singleview .generaltable { +.path-grade-report-singleview .reporttable { width: 100%; } -.path-grade-report-singleview .generaltable th { +.path-grade-report-singleview .reporttable th { text-align: left; } -.dir-rtl.path-grade-report-singleview .generaltable th { +.dir-rtl.path-grade-report-singleview .reporttable th { text-align: right; } -.path-grade-report-singleview div.generalbox form div.singleview_bulk { +.path-grade-report-singleview div.reporttable form div.singleview_bulk { display: inline-block; text-align: left; margin-bottom: 1em; } -.dir-rtl.path-grade-report-singleview div.generalbox form div.singleview_bulk { +.dir-rtl.path-grade-report-singleview div.reporttable form div.singleview_bulk { text-align: right; } @@ -78,13 +107,22 @@ margin: 0; } +.path-grade-report-singleview .singleselect select, +.path-grade-report-singleview div.reporttable form .singleview_bulk select, +.path-grade-report-singleview div.reporttable form .singleview_bulk input { + margin-left: 10px; + margin-right: 10px; +} + + .path-grade-report-singleview .singleview_bulk > fieldset { display: block; } -.path-grade-report-singleview div.generalbox form .singleview_bulk > div.enable { +.path-grade-report-singleview div.reporttable form .singleview_bulk > div.enable { + margin-bottom: 0.5em; text-align: left; } -.dir-rtl.path-grade-report-singleview div.generalbox form .singleview_bulk > div.enable { +.dir-rtl.path-grade-report-singleview div.reporttable form .singleview_bulk > div.enable { text-align: right; -} \ No newline at end of file +} -- 2.11.4.GIT