diff --git a/course/lib.php b/course/lib.php
index 7f19248..bdcae6d 100644
--- a/course/lib.php
+++ b/course/lib.php
@@ -793,39 +793,57 @@ function print_log_graph($course, $userid=0, $type="course.png", $date=0) {
 }
 
 
+
 function print_overview($courses) {
 
     global $CFG, $USER;
 
+    $courses_overview = array();
     $htmlarray = array();
+
+    foreach ($USER->courses_overview as $id) {
+        $courses_overview[$id] = $courses[$id];
+    }
+    
     if ($modules = get_records('modules')) {
         foreach ($modules as $mod) {
-            if (file_exists(dirname(dirname(__FILE__)).'/mod/'.$mod->name.'/lib.php')) {
-                include_once(dirname(dirname(__FILE__)).'/mod/'.$mod->name.'/lib.php');
+            $file = dirname(dirname(__FILE__)).'/mod/'.$mod->name.'/lib.php';
+
+            if (file_exists($file)) {
+                include_once($file);
+
                 $fname = $mod->name.'_print_overview';
+
                 if (function_exists($fname)) {
-                    $fname($courses,$htmlarray);
+                    call_user_func($fname, $courses_overview, &$htmlarray);
                 }
             }
         }
     }
+
     foreach ($courses as $course) {
         print_simple_box_start('center', '100%', '', 5, "coursebox");
         $linkcss = '';
         if (empty($course->visible)) {
             $linkcss = 'class="dimmed"';
         }
-        print_heading('<a title="'. format_string($course->fullname).'" '.$linkcss.' href="'.$CFG->wwwroot.'/course/view.php?id='.$course->id.'">'. format_string($course->fullname).'</a>');
+        
+        $title = overview_mymoodle_course_icon($course->id) . '<a title="'. format_string($course->fullname).'" '.$linkcss.' href="'.$CFG->wwwroot.'/course/view.php?id='.$course->id.'">'. format_string($course->fullname).'</a>';
+        
+        print_heading($title);
+
         if (array_key_exists($course->id,$htmlarray)) {
             foreach ($htmlarray[$course->id] as $modname => $html) {
                 echo $html;
             }
+        } else if (in_array($course->id, $USER->courses_overview)) {
+            echo '<div class="overview"><div class="name">', get_string('nodetails', 'my'),'</div></div>';
         }
+
         print_simple_box_end();
     }
 }
 
-
 function print_recent_activity($course) {
     // $course is an object
     // This function trawls through the logs looking for
diff --git a/lang/en_utf8/my.php b/lang/en_utf8/my.php
index 19e7c36..7767f81 100644
--- a/lang/en_utf8/my.php
+++ b/lang/en_utf8/my.php
@@ -7,5 +7,11 @@ $string['nocourses'] = 'No course information to show.';
 $string['noguest'] = 'The \'Course Overview\' page is not available to guest users';
 $string['pinblocks'] = 'Configure pinned blocks for my moodle';
 $string['pinblocksexplan'] = 'Any block settings you configure here will be visible (and non-editable) for any user of moodle on their \'my moodle\' overview page.';
+$string['details'] = 'Details';
+$string['showall'] = 'Show all';
+$string['hideall'] = 'Hide all';
+$string['nodetails'] = 'No details';
+$string['showoverview'] = 'Show overview';
+$string['hideoverview'] = 'Hide overview';
 
 ?>
diff --git a/lib/weblib.php b/lib/weblib.php
index c716ca2..406eb3b 100644
--- a/lib/weblib.php
+++ b/lib/weblib.php
@@ -5230,6 +5230,22 @@ function update_module_button($moduleid, $courseid, $string) {
     }
 }
 
+function overview_mymoodle_course_icon($id) {
+    
+    global $CFG, $USER;
+        
+    if (in_array($id, $USER->courses_overview)) {
+        $string = get_string('hideoverview', 'my');
+        return '<a title="'.$string.'" href="index.php?del_overview='.$id.'"><img'.
+               ' src="'.$CFG->pixpath.'/t/switch_minus.gif" class="iconsmall" alt="'.$string.'" /></a> ';
+    } else {
+        $string = get_string('showoverview', 'my');
+        return '<a title="'.$string.'" href="index.php?add_overview='.$id.'"><img'.
+               ' src="'.$CFG->pixpath.'/t/switch_plus.gif" class="iconsmall" alt="'.$string.'" /></a> ';
+    }
+}
+
+
 /**
  * Prints the editing button on search results listing
  * For bulk move courses to another category
diff --git a/my/index.php b/my/index.php
index 9d80f39..4d5a563 100644
--- a/my/index.php
+++ b/my/index.php
@@ -1,7 +1,5 @@
 <?php  // $Id$
 
-    // this is the 'my moodle' page
-
     require_once('../config.php');
     require_once($CFG->libdir.'/blocklib.php');
     require_once($CFG->dirroot.'/course/lib.php');
@@ -25,8 +23,12 @@
     }
 
 
-    $edit        = optional_param('edit', -1, PARAM_BOOL);
-    $blockaction = optional_param('blockaction', '', PARAM_ALPHA);
+    $edit           = optional_param('edit', -1, PARAM_BOOL);
+    $blockaction    = optional_param('blockaction', '', PARAM_ALPHA);
+    $add_overview   = optional_param('add_overview', '', PARAM_INT);
+    $del_overview   = optional_param('del_overview', '', PARAM_INT);
+    $overview_all   = optional_param('overview_all', '', PARAM_BOOL);
+    $overview_none  = optional_param('overview_none', '', PARAM_BOOL);
 
     $PAGE = page_create_instance($USER->id);
 
@@ -35,6 +37,10 @@
     if (($edit != -1) and $PAGE->user_allowed_editing()) {
         $USER->editing = $edit;
     }
+    
+    if (!isset($USER->courses_overview)) {
+        $USER->courses_overview = array();
+    }
 
     $PAGE->print_header($mymoodlestr);
 
@@ -77,6 +83,22 @@
     $site = get_site();
     $course = $site; //just in case we need the old global $course hack
 
+    if ($overview_all) {
+        $USER->courses_overview = array_keys($courses); 
+    }
+
+    if ($overview_none) {
+        $USER->courses_overview = array();
+    }
+
+    if ($add_overview) {
+        $USER->courses_overview[] = $add_overview;
+    }
+
+    if ($del_overview) {
+        unset($USER->courses_overview[array_search($del_overview,$USER->courses_overview)]);
+    }
+
     if (array_key_exists($site->id,$courses)) {
         unset($courses[$site->id]);
     }
@@ -98,6 +120,11 @@
     if (empty($courses)) {
         print_simple_box(get_string('nocourses','my'),'center');
     } else {
+        echo '<p class="showhideoverview">', 
+              get_string('details', 'my'), 
+              ': <a href="index.php?overview_all=1">', get_string('showall', 'my'),
+              '</a>, <a href="index.php?overview_none=1">',get_string('hideall', 'my'),'</a></p>';
+        
         print_overview($courses);
     }
     
diff --git a/theme/standard/styles_fonts.css b/theme/standard/styles_fonts.css
index 120f9b4..3ff4006 100644
--- a/theme/standard/styles_fonts.css
+++ b/theme/standard/styles_fonts.css
@@ -688,6 +688,10 @@ body#grade-index .grades .header {
   font-size:0.7em;
 }
 
+#my-index p.showhideoverview {
+    font-size:0.9em;
+}
+
 /***
  *** Question
  ***/
diff --git a/theme/standard/styles_layout.css b/theme/standard/styles_layout.css
index 20eb3ef..1900461 100644
--- a/theme/standard/styles_layout.css
+++ b/theme/standard/styles_layout.css
@@ -2569,10 +2569,17 @@ body.notes .notesgroup {
   margin-left:20px;
 }
 
+.my .coursebox h2 img {
+    padding-bottom: 3px;
+}
+
 .my .coursebox .overview {
   margin-bottom:10px;
 }
 
+#my-index p.showhideoverview {
+    margin: 2px 0 6px 0;
+}
 
 /***
  *** Question
