? themes/garland/collapse.js
Index: misc/collapse.js
===================================================================
RCS file: /cvs/drupal/drupal/misc/collapse.js,v
retrieving revision 1.25
diff -u -p -r1.25 collapse.js
--- misc/collapse.js	11 Sep 2009 02:01:26 -0000	1.25
+++ misc/collapse.js	8 Oct 2009 21:00:52 -0000
@@ -10,6 +10,7 @@ Drupal.toggleFieldset = function (fields
     // that alters the default submit button behavior.
     var content = $('> div:not(.action)', fieldset);
     $(fieldset).removeClass('collapsed');
+    $('> legend > a > img', fieldset).replaceWith(Drupal.theme('collapseImage', false));
     content.hide();
     content.slideDown({
       duration: 'fast',
@@ -29,6 +30,7 @@ Drupal.toggleFieldset = function (fields
     $('div.action', fieldset).hide();
     var content = $('> div:not(.action)', fieldset).slideUp('fast', function () {
       $(this.parentNode).addClass('collapsed');
+      $('> legend > a > img', this.parentNode).replaceWith(Drupal.theme('collapseImage', true));
       this.parentNode.animating = false;
     });
   }
@@ -72,7 +74,7 @@ Drupal.behaviors.collapse = {
       // Turn the legend into a clickable link and wrap the contents of the
       // fieldset in a div for easier animation.
       var text = this.innerHTML;
-        $(this).empty().append($('<a href="#">' + text + '</a>').click(function () {
+        $(this).empty().append($('<a href="#">' + Drupal.theme('collapseImage', true) + ' <span class="collapser">' + text + '</span>' + '</a>').click(function () {
           var fieldset = $(this).parents('fieldset:first')[0];
           // Don't animate multiple times.
           if (!fieldset.animating) {
@@ -90,4 +92,30 @@ Drupal.behaviors.collapse = {
   }
 };
 
+/**
+ * Provide the source URL of the collapse and expand image.
+ * Override this in a theme to apply different images.
+ *
+ * Parameters:
+ *   collapsed: true if collapsed, false if expanded
+ *
+ * Returns the src attribute for the image.
+ */
+Drupal.theme.prototype.collapseImageSrc = function(collapsed) {
+  return Drupal.settings.basePath + ((collapsed) ? 'misc/menu-collapsed.png' : 'misc/menu-expanded.png');
+}
+
+/**
+ * Construct the image for the collapse/expand link.
+ *
+ * Parameters:
+ *   collapsed: true if collapsed, false if expanded
+ *
+ * Returns the HTML for the img element.
+ */
+Drupal.theme.prototype.collapseImage = function (collapsed) {
+  var alt = (collapsed) ? Drupal.t('Show') : Drupal.t('Hide');
+  return '<img src="' + Drupal.theme('collapseImageSrc', collapsed) + '" alt="' + alt + '" />';
+};
+
 })(jQuery);
Index: modules/system/system.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.css,v
retrieving revision 1.63
diff -u -p -r1.63 system.css
--- modules/system/system.css	21 Sep 2009 08:52:41 -0000	1.63
+++ modules/system/system.css	8 Oct 2009 21:00:52 -0000
@@ -326,10 +326,18 @@ html.js fieldset.collapsed legend {
   display: block;
   overflow: hidden;
 }
-html.js fieldset.collapsible legend a {
+/* Only display specific elements of collapsed fieldsets. */
+html.js fieldset.collapsible legend a,
+html.js fieldset.collapsible legend a img,
+html.js fieldset.collapsible legend a span {
   display: inline;
-  padding-left: 15px; /* LTR */
-  background: url(../../misc/menu-expanded.png) 5px 75% no-repeat; /* LTR */
+}
+html.js fieldset.collapsible legend a {
+  padding-left: 5px; /* LTR */
+  text-decoration: none;
+}
+html.js fieldset.collapsible legend a span.collapser {
+  text-decoration: underline;
 }
 html.js fieldset.collapsible legend span.summary {
   display: inline;
@@ -337,10 +345,6 @@ html.js fieldset.collapsible legend span
   color: #999;
   margin-left: 0.5em;
 }
-html.js fieldset.collapsed legend a {
-  background-image: url(../../misc/menu-collapsed.png); /* LTR */
-  background-position: 5px 50%; /* LTR */
-}
 /* Note: IE-only fix due to '* html' (breaks Konqueror otherwise). */
 * html.js fieldset.collapsed legend,
 * html.js fieldset.collapsed legend *,
Index: themes/seven/style.css
===================================================================
RCS file: /cvs/drupal/drupal/themes/seven/style.css,v
retrieving revision 1.18
diff -u -p -r1.18 style.css
--- themes/seven/style.css	11 Sep 2009 13:48:44 -0000	1.18
+++ themes/seven/style.css	8 Oct 2009 21:00:52 -0000
@@ -460,10 +460,29 @@ html.js fieldset.collapsed legend,
 html.js fieldset.collapsed legend * {
   display: block;
 }
+
+html.js fieldset.collapsible legend a span.collapser {
+  display: inline;
+  text-decoration: none;
+}
+
+html.js fieldset.collapsible legend a:hover span.collapser {
+  text-decoration: underline;
+}
+
 html.js fieldset.collapsed {
   border-width: 1px;
   margin-bottom: 10px;
-  padding: 13px;
+  padding: 13px 13px 13px 0px;
+}
+
+html.js fieldset.collapsible > * {
+  padding-left: 13px;
+}
+
+html.js fieldset.collapsible,
+html.js fieldset.collapsible legend {
+  padding-left: 0;
 }
 
 fieldset fieldset {
Index: themes/garland/garland.info
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/garland.info,v
retrieving revision 1.8
diff -u -p -r1.8 garland.info
--- themes/garland/garland.info	29 Sep 2009 16:30:29 -0000	1.8
+++ themes/garland/garland.info	8 Oct 2009 21:00:52 -0000
@@ -7,3 +7,4 @@ core = 7.x
 engine = phptemplate
 stylesheets[all][] = style.css
 stylesheets[print][] = print.css
+scripts[] = collapse.js
Index: themes/garland/style.css
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/style.css,v
retrieving revision 1.65
diff -u -p -r1.65 style.css
--- themes/garland/style.css	5 Oct 2009 02:43:01 -0000	1.65
+++ themes/garland/style.css	8 Oct 2009 21:00:52 -0000
@@ -855,16 +855,15 @@ html.js fieldset.collapsed {
 }
 
 html.js fieldset.collapsible legend a {
-  padding-left: 2em; /* LTR */
-  background: url(images/menu-expanded.gif) no-repeat 0% 50%; /* LTR */
+  padding-left: 0;
 }
 
-html.js fieldset.collapsible legend span.summary {
-  color: #898989;
+html.js fieldset.collapsible legend a span.collapser {
+  padding-left: 0.8em;
 }
 
-html.js fieldset.collapsed legend a {
-  background: url(images/menu-collapsed.gif) no-repeat 0% 50%; /* LTR */
+html.js fieldset.collapsible legend span.summary {
+  color: #898989;
 }
 
 /**
