commit b9d7c354f7186b3d7f863fee06c79cf4200db052
Author: Francois Marier <francois@catalyst.net.nz>
Date:   Mon Mar 23 20:26:45 2009 +1300

    mod/resource: allow custom icon in resource types

diff --git a/course/lib.php b/course/lib.php
index 48a01cb..ff0cd18 100644
--- a/course/lib.php
+++ b/course/lib.php
@@ -1381,8 +1381,13 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
             } else { // Normal activity
                 $instancename = format_string($modinfo->cms[$modnumber]->name, true,  $course->id);
 
-                if (!empty($modinfo->cms[$modnumber]->icon)) {
-                    $icon = "$CFG->pixpath/".$modinfo->cms[$modnumber]->icon;
+                $customicon = $modinfo->cms[$modnumber]->icon;
+                if (!empty($customicon)) {
+                    if (substr($customicon, 0, 4) === 'mod/') {
+                        $icon = "$CFG->modpixpath/".substr($customicon, 4);
+                    } else {
+                        $icon = "$CFG->pixpath/".$customicon;
+                    }
                 } else {
                     $icon = "$CFG->modpixpath/$mod->modname/icon.gif";
                 }
@@ -1390,8 +1395,8 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
                 //Accessibility: for files get description via icon.
                 $altname = '';
                 if ('resource'==$mod->modname) {
-                    if (!empty($modinfo->cms[$modnumber]->icon)) {
-                        $possaltname = $modinfo->cms[$modnumber]->icon;
+                    if (!empty($customicon)) {
+                        $possaltname = $customicon;
 
                         $mimetype = mimeinfo_from_icon('type', $possaltname);
                         $altname = get_mimetype_description($mimetype);
diff --git a/mod/resource/lib.php b/mod/resource/lib.php
index 7deec4b..b8b6c1d 100644
--- a/mod/resource/lib.php
+++ b/mod/resource/lib.php
@@ -361,6 +361,7 @@ function resource_get_coursemodule_info($coursemodule) {
 
        require_once($CFG->libdir.'/filelib.php');
 
+       $customicon = $CFG->dirroot.'/mod/resource/type/'.$resource->type.'/icon.gif';
        if ($resource->type == 'file') {
            $icon = mimeinfo("icon", $resource->reference);
            if ($icon != 'unknown.gif') {
@@ -370,6 +371,8 @@ function resource_get_coursemodule_info($coursemodule) {
            }
        } else if ($resource->type == 'directory') {
            $info->icon ="f/folder.gif";
+       } else if (file_exists($customicon)) {
+           $info->icon ='mod/resource/type/'.$resource->type.'/icon.gif';
        }
    }
 
