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