From 6a58f0ebf1d66442b193c8ab4ef9f9f8ab767b62 Mon Sep 17 00:00:00 2001 From: Matt Petro <matt.petro@wisc.edu> Date: Thu, 1 Aug 2013 05:44:36 +0000 Subject: [PATCH] UWMOODLE-306 block course_overview_uwmoodle: Rewrote the interface to hopefully be cleaner and more user-friendly. --- block_course_overview_uwmoodle.php | 30 ++-- edit_form.php | 13 ++ lang/en/block_course_overview_uwmoodle.php | 5 +- locallib.php | 24 +++- module.js | 31 +++++ pix/menu.gif | Bin 0 -> 1310 bytes renderer.php | 116 ++++++++++++---- styles.css | 153 ++++++++++++++++----- 8 files changed, 294 insertions(+), 78 deletions(-) create mode 100644 edit_form.php create mode 100644 pix/menu.gif diff --git a/block_course_overview_uwmoodle.php b/block_course_overview_uwmoodle.php index 5928118..c56bfbe 100644 --- a/block_course_overview_uwmoodle.php +++ b/block_course_overview_uwmoodle.php @@ -23,7 +23,7 @@ * The block is dependent on the UW enrollment plugins and is largely coped from the existing course_overview block. * I've left copyright statements for the original authors on most files. * - * @author Matt Petro + * @author 2013 Matt Petro */ require_once($CFG->dirroot.'/blocks/course_overview_uwmoodle/locallib.php'); @@ -68,19 +68,13 @@ class block_course_overview_uwmoodle extends block_base { if (!isset($terms[$currentterm])) { $terms[$currentterm] = array(); } - if (!isset($terms[self::TERM_OTHER])) { - $terms[self::TERM_OTHER] = array(); - } // If selectedterm is not valid, select currentterm if (!isset($terms[$selectedterm])) { $selectedterm = $currentterm; } - // Always display non-term courses in addition to selected term. - $displayedcourses = $terms[self::TERM_OTHER] + $terms[$selectedterm]; - // Get course overviews - $overviews = block_course_overview_uwmoodle_get_overviews($displayedcourses); + $overviews = block_course_overview_uwmoodle_get_overviews($courses); $renderer = $this->page->get_renderer('block_course_overview_uwmoodle'); if (!empty($config->showwelcomearea)) { @@ -89,11 +83,23 @@ class block_course_overview_uwmoodle extends block_base { $this->content->text = $renderer->welcome_area($msgcount); } - $this->content->text .= $renderer->course_header($terms, $selectedterm); - $this->content->text .= $renderer->course_block($selectedterm, $terms[$selectedterm], $overviews); + // Sort the terms with newest first + block_course_overview_uwmoodle_sort_term_array($terms); + + $displayedterms = $terms; + $othercourses = false; + if (empty($this->config->combineongoing)) { + unset($displayedterms[self::TERM_OTHER]); + if (!empty($terms[self::TERM_OTHER])) { + $othercourses = $terms[self::TERM_OTHER]; + } + } + + // Render the block + $this->content->text .= $renderer->course_block($displayedterms, $overviews, $selectedterm); - if (!empty($terms[self::TERM_OTHER])) { - $this->content->text .= $renderer->other_course_block($terms[self::TERM_OTHER], $overviews); + if (!empty($othercourses)) { + $this->content->text .= $renderer->other_course_block($othercourses, $overviews); } $this->content->footer = $renderer->footer(); return $this->content; diff --git a/edit_form.php b/edit_form.php new file mode 100644 index 0000000..05aae3c --- /dev/null +++ b/edit_form.php @@ -0,0 +1,13 @@ +<?php + +class block_course_overview_uwmoodle_edit_form extends block_edit_form { + + protected function specific_definition($mform) { + + // Section header title according to language file. + $mform->addElement('header', 'configheader', get_string('blocksettings', 'block')); + + $mform->addElement('advcheckbox', 'config_combineongoing', get_string('combineongoing', 'block_course_overview_uwmoodle'), null, null, array(0, 1)); + $mform->setDefault('config_nontermseparate', 0); + } +} \ No newline at end of file diff --git a/lang/en/block_course_overview_uwmoodle.php b/lang/en/block_course_overview_uwmoodle.php index b232fc4..92b541d 100644 --- a/lang/en/block_course_overview_uwmoodle.php +++ b/lang/en/block_course_overview_uwmoodle.php @@ -18,9 +18,12 @@ defined('MOODLE_INTERNAL') || die(); $string['pluginname'] = 'UW Moodle course overview'; +$string['courses'] = 'My courses'; $string['mycoursesinterm'] = '{$a} courses'; $string['nocourses'] = 'You are not enrolled in any courses for this term'; -$string['ongoingcourses'] = 'Ongoing courses'; +$string['combineongoing'] = 'Show ongoing classes in term menu'; +$string['ongoingcourses'] = 'My ongoing courses'; +$string['ongoingcourses_help'] = 'This section lists courses which are not tied to a specific UW term.'; $string['selectterm'] = 'Select a term: '; diff --git a/locallib.php b/locallib.php index 79fa93a..a4b85d2 100644 --- a/locallib.php +++ b/locallib.php @@ -145,6 +145,20 @@ function block_course_overview_uwmoodle_group_courses_by_term($courses) { return $terms; } +function block_course_overview_uwmoodle_sort_term_array(&$terms) { + + // Sort the terms with ongoing (code = 0) first, then in decreasing order + $cmp = function ($a, $b) { + if ($a == 0 || $b == 0) { + return $a-$b; + } else { + return $b-$a; + } + }; + + return uksort($terms, $cmp); +} + /** * Get the current term from our settings * @@ -174,19 +188,19 @@ function block_course_overview_uwmoodle_get_term_name($termCode) { $semester = substr($termCode,3,1); switch($semester) { case 2: - $name = sprintf("Fall %d", $year-1); + $name = sprintf("<span class='semester'>Fall</span> <span class='year'>%d</span>", $year-1); break; case 3: - $name = sprintf("Winter %d", $year); + $name = sprintf("<span class='semester'>Winter</span> <span class='year'>%d</span>", $year); break; case 4: - $name = sprintf("Spring %d", $year); + $name = sprintf("<span class='semester'>Spring</span> <span class='year'>%d</span>", $year); break; case 6: - $name = sprintf("Summer %d", $year); + $name = sprintf("<span class='semester'>Summer</span> <span class='year'>%d</span>", $year); break; default: - $name = "Other"; + $name = "Ongoing"; } return $name; } \ No newline at end of file diff --git a/module.js b/module.js index 820ae47..6afcf71 100644 --- a/module.js +++ b/module.js @@ -108,3 +108,34 @@ M.block_course_overview_uwmoodle.CollapsibleRegion.prototype.div = null; */ M.block_course_overview_uwmoodle.CollapsibleRegion.prototype.icon = null; +M.block_course_overview_uwmoodle.TermSelector = function(Y) { + + // Find the selector div in the document. + var selector = Y.one('#uwmm_terms'); + + // Find all the content nodes. + var contentnodes = Y.all('#uwmm_terms_content div.courselist'); + + var onClick = function(e) { + var content = Y.one('#'+e.currentTarget.get('id')+'_courses'); + if (content) { + selector.all('.active').each(function(e) {e.removeClass('active');}); + e.currentTarget.addClass('active'); // e.currentTarget === li + + contentnodes.each(function(e) {e.addClass('hidden');}); + content.removeClass('hidden'); + + // Stop the event's default behavior + e.preventDefault(); + + // Stop the event from bubbling up the DOM tree + e.stopPropagation(); + } + }; + + selector.delegate('click', onClick, 'li'); +}; + +M.block_course_overview_uwmoodle.termselector = function(Y) { + new M.block_course_overview_uwmoodle.TermSelector(Y); +}; diff --git a/pix/menu.gif b/pix/menu.gif new file mode 100644 index 0000000000000000000000000000000000000000..8e8c574b3eed607786ae85412716b62ae6d8f45e GIT binary patch literal 1310 zcmV+(1>yQfNk%w1VZZ=d0E8a^nG_VD6&0iv6{r;zs}>fm78bM@7rPi3oSdAVo}Qth zp`)Xtq@<*!rKP8*r>d%|tE;Q6t*x@Mva_?Zwzjsnx3{^uxw^W#ySux*yu7}?zQMu4 z!otGD#Kiyq{{R30A^8LW3IHDfEC2ui0KfoR000I4ASaGwX`X1Ru59bRa4gSaXWw|P z?|kq7z@TtQEE<nCnsUi(I-k&}bV{vSTbrzQ%k6r<;IMd1E}PHjw0g~MyWjA*d`_?1 z@A$la&+p4MfPsR8goTEOh>41ejE#<ukdcy;l$Dm3n3<ZJoSmMZjTxe&q@|{(sHv)} ztgWuEu(7hUw6(UkxVgH!yuH4^z`?@9#Kp$D7|F`Z%+1cv(9zP<)YaD4*xB027v0|9 z;Njxq<mKk)=;`X~?CtK|+wt=A^!4`l%NF|k{Qds_00RmfNU)&6g9sBUT&S;t!-o(f zN}NcsqQ#3CGiuz(v7^V2AVZ2ANwTELlPLaEs$9vkrOTHvW6C^9p{C87ICJXU$+M@= zpFo2O9ZIyQ(V7#IDqYI7sne%Wqe`7hwW`&tShH%~%C)Q4uVBN99ZR;X*|TV^N?6Ob zt=qS7<I0^&x31m0c=PJr%eSxJzkmY^9!&VHhr@^yD_+dFvE#>(BTJr4xw7TUm=8nP z%(=7Y&!9t#9!<Km>C>oFt6t4|bA;EhW6PdRySDAyxO3~?&AYen-@sqD9!|Wt@#Dyo zD__pMx%20yA4s20y}I@5*t2Wj&b_<$@8H9WA5Xr#`Sa-0t6$H)z5Dm@<IA5<zrOwT z4)W{Y&%eL_{{RLk;D7`cXyAbeCjO}4f($n3;DZoGDB*+@R%qdc7#i5Xh8%Y2;fElG zDB_4DmT2OMD5j|5iY&J1;)^iGDC3MY)@b96IOeG1jy(40<Bv2lAmorl7HQ;>NG7S| zl1w(~<daZFDdm(@R%zvxSZ1l^mRxq}<(FWF`Q!p*mTBghXr`&=nryb|=9_TFDd(JY z)=8!Uc;>0+o_zM{=bwNED(Iku7Ha6Bh$gD&qKr1`=%bKED(R$@R%+>`m}aW!rkr-_ z>8GHEN@xP4mTKy$sHUpws;su^>Z`EED(kGY)@tjmxaO+suDtf@>#x8DE9|hbB4F&X z$R?}ovdlK??6c5DEA6z@{#I-4wb*8>?Y7)@>+QG7W+v{q<d$phx#%Vaz`E?V>+ZYo z#w+i<^ww+dz4+#<@4o!@>+in+2Q2Ww1iu@=!3Za;@WKo??C`@7M=bHg6jyBV#TaL- z@x~l??D5AShb;2QB$sUR$tb6+^2#i??DESn$1L;AG}mnN%{b?*^UgR6;PcNw2QBo_ zL>F!J(MTt)^wLZ>?ex<=4<Pl_R99{F)mUe(_10W>?e*7Shb{KlQbTR_*=VP&_S#N+ zfHc`~$1V5Vbk{BRVOtZR_uhQ>?f2h+2QK*Fgcol3;fN=$IN*pa?)c-7M=tr~ln0(z z<(Ox#`R1Gt-gxJqpocE{=!G9Pcmb%VuKMb%x9<Auu*WX@?6lWz`|Y^9?m_On_wM`e zzy~k<@WdBy{PD;qul(}NH}CxO&_^%*^wd{x{q?mQp#ApTckli8;D;~%_~e&w{`u&q zum1YlAK?D`@W(Iz{Pfpv|NZ#qumAr1_wWDz01Ti22S~sI8t{M!OrQc6$iN0V@PQDF Upac(?t_oW4f*8!8V?qD`J7dfgUjP6A literal 0 HcmV?d00001 diff --git a/renderer.php b/renderer.php index fb121fb..c8d7afd 100644 --- a/renderer.php +++ b/renderer.php @@ -31,6 +31,7 @@ defined('MOODLE_INTERNAL') || die; */ class block_course_overview_uwmoodle_renderer extends plugin_renderer_base { + /** * Construct contents of course_overview block * @@ -38,18 +39,43 @@ class block_course_overview_uwmoodle_renderer extends plugin_renderer_base { * @param array $overviews list of course overviews * @return string html to be displayed in course_overview block */ - public function course_overview($courses, $overviews) { + public function course_overview_allterms($terms, $overviews, $selectedterm) { $html = ''; - $config = get_config('block_course_overview_uwmoodle'); - $html .= html_writer::start_tag('div', array('id' => 'course_list_uwmoodle')); + $html .= html_writer::start_tag('div', array('class' => 'courselistcontainer', 'id' => 'uwmm_terms_content')); + foreach ($terms as $termcode => $courses) { + if ($termcode != $selectedterm) { + $hidden = 'hidden'; + } else { + $hidden = ''; + } + $html .= html_writer::start_tag('div', array('class' => 'courselist '.$hidden, 'id' => 'uwmm_term_'.$termcode.'_courses')); + + $termstr = block_course_overview_uwmoodle_get_term_name($termcode); + $title = get_string('mycoursesinterm', 'block_course_overview_uwmoodle', $termstr); + $html .= html_writer::start_tag('div', array('class' => 'title')); + $html .= $this->output->heading($title, 2, 'termname'); + $html .= html_writer::end_tag('div'); + + $html .= $this->course_overview($courses, $overviews, $termcode); + $html .= html_writer::end_tag('div'); + } + $html .= html_writer::end_tag('div'); + $this->page->requires->js_init_call('M.block_course_overview_uwmoodle.termselector'); + + return $html; + } + + public function course_overview($courses, $overviews, $termcode) { + $html = ''; + $html .= html_writer::start_tag('div', array('class' => 'courselistcontainer')); if (empty($courses)) { $html .= $this->output->box_start('coursebox'); - $html .= '<h2>'.get_string('nocourses','block_course_overview_uwmoodle').'</h2>'; + $html .= $this->output->heading(get_string('nocourses','block_course_overview_uwmoodle'), 3); $html .= $this->output->box_end(); } else { foreach ($courses as $key => $course) { - $html .= $this->output->box_start('coursebox', "course-{$course->id}"); + $html .= $this->output->box_start('coursebox'); $html .= html_writer::start_tag('div', array('class' => 'course_title')); // No need to pass title through s() here as it will be done automatically by html_writer. @@ -60,15 +86,15 @@ class block_course_overview_uwmoodle_renderer extends plugin_renderer_base { $courseurl = new moodle_url('/course/view.php', array('id' => $course->id)); $coursefullname = format_string($course->fullname, true, $course->id); $link = html_writer::link($courseurl, $coursefullname, $attributes); - $html .= $this->output->heading($link, 2, 'title'); - $html .= $this->output->box('', 'flush'); + $html .= $this->output->heading($link, 3, 'title'); + //$html .= $this->output->box('', 'flush'); $html .= html_writer::end_tag('div'); if (isset($overviews[$course->id])) { - $html .= $this->activity_display($course->id, $overviews[$course->id]); + $html .= $this->activity_display($course->id, $overviews[$course->id], $termcode); } - $html .= $this->output->box('', 'flush'); + //$html .= $this->output->box('', 'flush'); $html .= $this->output->box_end(); } } @@ -76,37 +102,69 @@ class block_course_overview_uwmoodle_renderer extends plugin_renderer_base { return $html; } - public function begin_course_block($title) { - $html = $this->output->box_start('block'); - $html .= $this->output->box_start('header'); - $html .= $this->output->box_start('title'); - $html .= $this->output->heading($title, 2, 'sectiontitle'); - $html .= $this->output->box_end(); - $html .= $this->output->box_end(); - $html .= $this->output->box_start('content'); + public function term_list($termcodes, $selectedterm) { + $thisurl = $this->page->url; + $html = ''; + $html .= html_writer::start_tag('div', array('class' => 'termscontainer')); + $html .= html_writer::start_tag('ul', array('class' => 'terms', 'id' => 'uwmm_terms')); + foreach ($termcodes as $termcode) { + $termname = block_course_overview_uwmoodle_get_term_name($termcode); + $attributes = array('id'=>'uwmm_term_'.$termcode); + if ($termcode == $selectedterm) { + $attributes['class'] = 'active'; + } + $html .= html_writer::start_tag('li', $attributes); + $html .= html_writer::tag('a', $termname, array('href' => $thisurl->out(false, array('term'=>$termcode)))); + $html .= html_writer::end_tag('li'); + } + $html .= html_writer::end_tag('ul'); + $html .= html_writer::end_tag('div'); return $html; } - public function end_course_block() { + public function begin_course_block($title, $id='', $helpidentifier='') { $html = ''; - $html .= $this->output->box_end(); - $html .= $this->output->box_end(); + $attributes = array('class' => 'courseblock clearfix'); + if (!empty($id)) { + $attributes['id'] = $id; + } + $html .= html_writer::start_tag('div', $attributes); + $html .= html_writer::start_tag('div', array('class' => 'cbheader')); + $help = ''; + if ($helpidentifier) { + $help = $this->output->help_icon($helpidentifier, 'block_course_overview_uwmoodle'); + } + $html .= $this->output->heading($title.$help, 2, 'sectiontitle help'); + $html .= html_writer::end_tag('div'); + $html .= html_writer::start_tag('div', array('class' => 'cbcontent')); return $html; } - public function course_block($selectedterm, $courses, $overviews) { - $termstr = block_course_overview_uwmoodle_get_term_name($selectedterm); - $title = get_string('mycoursesinterm', 'block_course_overview_uwmoodle', $termstr); + public function end_course_block() { + $html = ''; + $html .= html_writer::end_tag('div'); + $html .= html_writer::end_tag('div'); + return $html; + } - $html = $this->begin_course_block($title); - $html .= $this->course_overview($courses, $overviews); + public function course_block($terms, $overviews, $selectedterm) { + $html = ''; + $html .= $this->begin_course_block(get_string('courses', 'block_course_overview_uwmoodle'), 'uwmm_mycourses_block'); + $termcodes = array_keys($terms); + $html .= html_writer::start_tag('div', array('class' => 'lhs')); + $html .= $this->term_list($termcodes, $selectedterm); + $html .= html_writer::end_tag('div'); + $html .= html_writer::start_tag('div', array('class' => 'rhs')); + $html .= $this->course_overview_allterms($terms, $overviews, $selectedterm); + $html .= html_writer::end_tag('div'); $html .= $this->end_course_block(); return $html; } public function other_course_block($courses, $overviews) { - $html = $this->begin_course_block(get_string('ongoingcourses', 'block_course_overview_uwmoodle')); - $html .= $this->course_overview($courses, $overviews); + $html = ''; + $html .= $this->begin_course_block(get_string('ongoingcourses', 'block_course_overview_uwmoodle'), 'uwmm_othercourses_block', 'ongoingcourses'); + $html .= $this->course_overview($courses, $overviews, block_course_overview_uwmoodle::TERM_OTHER); $html .= $this->end_course_block(); return $html; } @@ -190,7 +248,7 @@ class block_course_overview_uwmoodle_renderer extends plugin_renderer_base { * @param array $overview overview of activities in course * @return string html of activities overview */ - protected function activity_display($cid, $overview) { + protected function activity_display($cid, $overview, $id) { $output = html_writer::start_tag('div', array('class' => 'activity_info')); foreach (array_keys($overview) as $module) { $output .= html_writer::start_tag('div', array('class' => 'activity_overview')); @@ -204,7 +262,7 @@ class block_course_overview_uwmoodle_renderer extends plugin_renderer_base { } // Add collapsible region with overview text in it. - $output .= $this->collapsible_region($overview[$module], '', 'uwmm_region_'.$cid.'_'.$module, $icontext, '', true); + $output .= $this->collapsible_region($overview[$module], '', 'uwmm_region_'.$id.'_'.$cid.'_'.$module, $icontext, '', true); $output .= html_writer::end_tag('div'); } diff --git a/styles.css b/styles.css index ce393b4..c4084fc 100644 --- a/styles.css +++ b/styles.css @@ -1,8 +1,3 @@ -.block_course_overview_uwmoodle .coursechildren { - font-weight: normal; - font-style: italic; -} - .block_course_overview_uwmoodle .content { margin: 0 20px; } @@ -10,44 +5,145 @@ margin: 5px 0; } -.block_course_overview_uwmoodle .block { +.block_course_overview_uwmoodle .courseblock { margin-bottom: 10px; + border: 1px solid #666666; + width: 100%; + clear: both; + position: relative; } -.block_course_overview_uwmoodle .coursebox { - padding: 5px 15px 5px 15px; - width: auto; - margin: 15px 0; +.block_course_overview_uwmoodle .cbheader { + /*border-bottom: 1px solid #666666;*/ + /*padding: 5px;*/ + background-color: #E3E3E3; + /*background-image: url("/theme/image.php?theme=big_red&component=theme&image=gradient_h");*/ + /*background-repeat: repeat-x;*/ + border-bottom: 1px solid #666666; + clear: both; +} + +.block_course_overview_uwmoodle .cbheader h2 { + margin: 0; + padding: 0.2em 0 0 0.3em; } -.block_course_overview_uwmoodle .termlist { - list-style-type:none; - margin:20px 0 0 0; - padding:0; - font-size:120%; +.block_course_overview_uwmoodle .cbheader h2.help img { + vertical-align: middle; } -.block_course_overview_uwmoodle .termlist li { - display:inline; +.block_course_overview_uwmoodle .termscontainer { + width: 100%; + margin: 0; + padding: 0; } -.block_course_overview_uwmoodle .termlist .selectedterm { - /*color: #0000aa;*/ - font-weight: bold; - font-size:100%; - /*border: 1px solid #000000;*/ - padding: 5px; +.block_course_overview_uwmoodle a { + -moz-outline: none 0; + outline: none 0; } -.block_course_overview_uwmoodle .profilepicture { +.block_course_overview_uwmoodle .courselistcontainer { +} + +.block_course_overview_uwmoodle .rhs .courselist { +} + +.block_course_overview_uwmoodle .rhs { + padding: 5px 0 10px 0; +} + +.block_course_overview_uwmoodle .lhs { float: left; + left:0; + top:0; + position:relative; + width: 10em; + background: #E3DFD4; + z-index: 1; +} +.block_course_overview_uwmoodle .rhs { + border-left: 10em solid #E3DFD4; +} + +.block_course_overview_uwmoodle .courselistcontainer { + padding: 0 1em; +} + +.block_course_overview_uwmoodle ul.terms { + list-style: none inside none; + margin: 0; + padding: 0; + border-top: 1px solid #ffffff; +} +.block_course_overview_uwmoodle .terms li { + margin: 0; + padding: 0; + text-align: right; +} + +.block_course_overview_uwmoodle .terms .semester { + position: relative; + right: 4px; +} + +.block_course_overview_uwmoodle .terms .year { +} + +.block_course_overview_uwmoodle .terms li a { + font: bold 12px Verdana, Arial, Helvetica, sans-serif; + display: block; + background: #dddddd url([[pix:block_course_overview_uwmoodle|menu]]) 100% 0; + height: 22px; /*Set to height of bg image- padding within link (ie: 32px - 4px - 4px)*/ + padding: 4px 0 4px 10px; + line-height: 24px; /*Set line-height of bg image- padding within link (ie: 32px - 4px - 4px)*/ + text-decoration: none; + color: #000000; + padding-right: 2em; +} + +.block_course_overview_uwmoodle .terms li.active a { + color: #ffffff; + background-color: #A00000; + background-position: 100% -60px; +} + +.block_course_overview_uwmoodle .terms li:not(.active) a:hover { + color: #000000; + background-position: 100% -30px; +} + +.block_course_overview_uwmoodle .hidden { + /*display: none;*/ + visibility:hidden; + position: absolute; + left: -9999px; +} + +#uwmm_mycourses_block .courselistcontainer { + min-height: 14.56em; +} + +#uwmm_othercourses_block .courselistcontainer { + padding-bottom: 10px; +} + + +.block_course_overview_uwmoodle .coursebox { + padding: 5px 15px 5px 15px; + width: auto; + margin: 15px 0 0 0; +} + +.block_course_overview_uwmoodle .profilepicture { + /*float: left;*/ } .dir-rtl.block_course_overview_uwmoodle .profilepicture { float:right; } .block_course_overview_uwmoodle .welcome_area { width: 100%; - padding-bottom: 5px; + padding-bottom: 10px; } .block_course_overview_uwmoodle .welcome_message { @@ -62,9 +158,8 @@ } .block_course_overview_uwmoodle .content h2.title { - float: left; margin: 0; - position: relative; + text-align: left; } .block_course_overview_uwmoodle .activity_info { margin: 0.5em 0 0 1em; @@ -79,9 +174,6 @@ .collapsibleregioncaption { cursor: pointer; } -.dir-rtl .block_course_overview_uwmoodle .content h2.title { - float:right; -} .block_course_overview_uwmoodle .course_title { position: relative; @@ -139,7 +231,6 @@ } .block_course_overview_uwmoodle .activity_info { - clear: both; } .dir-rtl .block_course_overview_uwmoodle .activity_info { margin-right: 25px; -- GitLab