diff --git a/calendar/lib.php b/calendar/lib.php index 8812c6310bc..53c2bbc3d32 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -871,6 +871,49 @@ function calendar_top_controls($type, $data) { return $content; } +/** + * Formats a filter control element. + * + * @param moodle_url $url of the filter + * @param int $type constant defining the type filter + * @return string html content of the element + */ +function calendar_filter_controls_element(moodle_url $url, $type) { + global $OUTPUT; + switch ($type) { + case CALENDAR_EVENT_GLOBAL: + $typeforhumans = 'global'; + $class = 'calendar_event_global'; + break; + case CALENDAR_EVENT_COURSE: + $typeforhumans = 'course'; + $class = 'calendar_event_course'; + break; + case CALENDAR_EVENT_GROUP: + $typeforhumans = 'groups'; + $class = 'calendar_event_group'; + break; + case CALENDAR_EVENT_USER: + $typeforhumans = 'user'; + $class = 'calendar_event_user'; + break; + } + if (calendar_show_event_type($type)) { + $icon = $OUTPUT->pix_icon('t/hide', get_string('hide')); + $str = get_string('hide'.$typeforhumans.'events', 'calendar'); + } else { + $icon = $OUTPUT->pix_icon('t/show', get_string('show')); + $str = get_string('show'.$typeforhumans.'events', 'calendar'); + } + $content = html_writer::start_tag('li', array('class' => 'calendar_event')); + $content .= html_writer::start_tag('a', array('href' => $url)); + $content .= html_writer::tag('span', $icon, array('class' => $class)); + $content .= html_writer::tag('span', $str, array('class' => 'eventname')); + $content .= html_writer::end_tag('a'); + $content .= html_writer::end_tag('li'); + return $content; +} + /** * Get the controls filter for calendar. * @@ -883,60 +926,28 @@ function calendar_filter_controls(moodle_url $returnurl) { global $CFG, $USER, $OUTPUT; $groupevents = true; - $id = optional_param( 'id',0,PARAM_INT ); - $seturl = new moodle_url('/calendar/set.php', array('return' => base64_encode($returnurl->out(false)), 'sesskey'=>sesskey())); - - $content = ''; - $content .= ''; + $content = html_writer::start_tag('ul'); $seturl->param('var', 'showglobal'); - if (calendar_show_event_type(CALENDAR_EVENT_GLOBAL)) { - $content .= ''; - $content .= ''."\n"; - } else { - $content .= ''; - $content .= ''."\n"; - } + $content .= calendar_filter_controls_element($seturl, CALENDAR_EVENT_GLOBAL); $seturl->param('var', 'showcourses'); - if (calendar_show_event_type(CALENDAR_EVENT_COURSE)) { - $content .= ''; - $content .= ''."\n"; - } else { - $content .= ''; - $content .= ''."\n"; - } + $content .= calendar_filter_controls_element($seturl, CALENDAR_EVENT_COURSE); if (isloggedin() && !isguestuser()) { - $content .= "\n"; - if ($groupevents) { // This course MIGHT have group events defined, so show the filter $seturl->param('var', 'showgroups'); - if (calendar_show_event_type(CALENDAR_EVENT_GROUP)) { - $content .= ''; - $content .= ''."\n"; - } else { - $content .= ''; - $content .= ''."\n"; - } + $content .= calendar_filter_controls_element($seturl, CALENDAR_EVENT_GROUP); } else { // This course CANNOT have group events, so lose the filter - $content .= ''."\n"; } - $seturl->param('var', 'showuser'); - if (calendar_show_event_type(CALENDAR_EVENT_USER)) { - $content .= ''; - $content .= ''."\n"; - } else { - $content .= ''; - $content .= ''."\n"; - } + $content .= calendar_filter_controls_element($seturl, CALENDAR_EVENT_USER); } - $content .= "\n
'.get_string('hide').''.get_string('global', 'calendar').''.get_string('show').''.get_string('global', 'calendar').''.get_string('hide').''.get_string('course', 'calendar').''.get_string('hide').''.get_string('course', 'calendar').'
'.get_string('hide').''.get_string('group', 'calendar').''.get_string('show').''.get_string('group', 'calendar').' '.get_string('hide').''.get_string('user', 'calendar').''.get_string('show').''.get_string('user', 'calendar').'
\n"; + $content .= html_writer::end_tag('ul'); return $content; } diff --git a/calendar/renderer.php b/calendar/renderer.php index 45a6404a242..51ea81c41d6 100644 --- a/calendar/renderer.php +++ b/calendar/renderer.php @@ -559,8 +559,6 @@ class core_calendar_renderer extends plugin_renderer_base { $table->data[] = $row; $output .= html_writer::table($table); - // OK, now for the filtering display - $output .= $this->filter_selection_table($calendar); return $output; } @@ -569,9 +567,13 @@ class core_calendar_renderer extends plugin_renderer_base { * * @param calendar_information $calendar * @return string + * @deprecated since Moodle 2.4 MDL-32309 + * @see calendar_filter_controls() */ protected function filter_selection_table(calendar_information $calendar, moodle_url $returnurl = null) { global $SESSION; + debugging('Method core_calendar_renderer::filter_selection_table() is deprecated, please use '. + 'calendar_filter_controls() instead', DEBUG_DEVELOPER); if ($returnurl === null) { $returnurl = $this->page->url; diff --git a/lang/en/calendar.php b/lang/en/calendar.php index 3f1cc5fa9a3..5e69b266210 100644 --- a/lang/en/calendar.php +++ b/lang/en/calendar.php @@ -86,6 +86,10 @@ $string['group'] = 'Group'; $string['groupevent'] = 'Group event'; $string['groupevents'] = 'Group events'; $string['hidden'] = 'hidden'; +$string['hidecourseevents'] = 'Hide course events'; +$string['hideglobalevents'] = 'Hide global events'; +$string['hidegroupsevents'] = 'Hide group events'; +$string['hideuserevents'] = 'Hide user events'; $string['ical'] = 'iCal'; $string['invalidtimedurationminutes'] = 'The duration in minutes you have entered is invalid. Please enter the duration in minutes greater than 0 or select no duration.'; $string['invalidtimedurationuntil'] = 'The date and time you selected for duration until is before the start time of the event. Please correct this before proceeding.'; @@ -122,6 +126,10 @@ $string['repeatweeksl'] = 'Repeat weekly, creating altogether'; $string['repeatweeksr'] = 'events'; $string['sat'] = 'Sat'; $string['saturday'] = 'Saturday'; +$string['showcourseevents'] = 'Show course events'; +$string['showglobalevents'] = 'Show global events'; +$string['showgroupsevents'] = 'Show group events'; +$string['showuserevents'] = 'Show user events'; $string['shown'] = 'shown'; $string['spanningevents'] = 'Events underway'; $string['sun'] = 'Sun'; diff --git a/theme/base/style/calendar.css b/theme/base/style/calendar.css index 831e052d37d..5f7a6c85a6b 100644 --- a/theme/base/style/calendar.css +++ b/theme/base/style/calendar.css @@ -44,5 +44,8 @@ .block .calendar-controls .previous {text-align: left;display: block;float: left;width: 12%;} .block .calendar-controls .current {float:left;text-align: center;display: block;width:76%;} .block .calendar-controls .next {text-align: right;display: block;float: left;width: 12%;} -.block .filters table {border-collapse:separate;border-spacing: 2px;padding: 2px;width: 100%;} +.block .calendar_filters ul {list-style: none; margin: 0;} +.block .calendar_filters li { margin-bottom: .2em;} +.block .calendar_filters li span img { padding: 0 .2em;} +.block .calendar_filters .eventname { padding-left: .2em;} .block .content h3.eventskey {margin-top:0.5em;margin-bottom:0;margin-left:0.5em;} \ No newline at end of file diff --git a/theme/standard/style/calendar.css b/theme/standard/style/calendar.css index 2ea84e886fc..638347db1c6 100644 --- a/theme/standard/style/calendar.css +++ b/theme/standard/style/calendar.css @@ -51,8 +51,6 @@ .block .minicalendar {font-size:0.85em;border:1px solid #DDDDDD;margin: 10px 0;border-collapse:separate;border-spacing:1px;} .block .minicalendar .duration {border-width:1px 0;} -.block .calendar_filters.filters {background-color: #EEEEEE;} -.block .calendar_filters.filters table {width:100%;} .calendar_event_global {border-color: #D6F8CD; background-color:#D6F8CD;} .calendar_event_course {border-color: #FFD3BD; background-color:#FFD3BD;}