From 1a20c3bf6bd6e288a8e8cb01ddf644aa0563a4f4 Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Thu, 4 Oct 2007 16:39:55 +0000 Subject: [PATCH] Improved hoverhelp system --- lib/WebGUI/Form/Control.pm | 15 +++++++-------- www/extras/hoverhelp.css | 10 +++++++--- www/extras/hoverhelp.js | 12 ++++++++++++ 3 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 www/extras/hoverhelp.js diff --git a/lib/WebGUI/Form/Control.pm b/lib/WebGUI/Form/Control.pm index fb8600313..3cd0d0125 100644 --- a/lib/WebGUI/Form/Control.pm +++ b/lib/WebGUI/Form/Control.pm @@ -259,8 +259,8 @@ sub displayFormWithWrapper { my ($fieldClass, $rowClass, $labelClass, $hoverHelp, $subtext) = $self->prepareWrapper; my $hoverCode = $self->getHoverCode($hoverHelp, $self->get('id') . '_wrapper'); return ' - '.$self->get("label").' - '.$self->displayForm().$subtext.$hoverCode." + '.$self->get("label") . $hoverCode . ' + '.$self->displayForm().$subtext." \n"; } else { return $self->toHtmlAsHidden; @@ -627,8 +627,8 @@ sub toHtmlWithWrapper { my ($fieldClass, $rowClass, $labelClass, $hoverHelp, $subtext) = $self->prepareWrapper; my $hoverCode = $self->getHoverCode($hoverHelp, $self->get('id') . '_description'); return ' - - '.$rawField . $subtext . $hoverCode . " + ' . $hoverCode . ' + '.$rawField . $subtext . " \n"; } else { return $self->toHtmlAsHidden; @@ -657,18 +657,17 @@ sub getHoverCode { my $url = $self->session->url; my $hoverHelp = shift; my $attachId = shift; - $hoverHelp =~ s/\r/ /g; - $hoverHelp =~ s/\n/ /g; - $hoverHelp =~ s/'/\\'/g; $hoverHelp =~ s/^\s+//; return '' unless $hoverHelp; - my $hover = ''; + my $hover = '
' . $hoverHelp . '
'; + $style->setLink($url->extras('/yui/build/container/assets/container.css'),{ type=>'text/css', rel=>"stylesheet" }); $style->setLink($url->extras('/hoverhelp.css'),{ type=>'text/css', rel=>"stylesheet" }); $style->setScript($url->extras('/yui/build/yahoo/yahoo-min.js'),{ type=>'text/javascript' }); $style->setScript($url->extras('/yui/build/dom/dom-min.js'),{ type=>'text/javascript' }); $style->setScript($url->extras('/yui/build/event/event-min.js'),{ type=>'text/javascript' }); $style->setScript($url->extras('/yui/build/container/container-min.js'),{ type=>'text/javascript' }); + $style->setScript($url->extras('/hoverhelp.js'),{ type=>'text/javascript' }); return $hover; } diff --git a/www/extras/hoverhelp.css b/www/extras/hoverhelp.css index 0d355e2ce..9dfa8d7fe 100644 --- a/www/extras/hoverhelp.css +++ b/www/extras/hoverhelp.css @@ -1,6 +1,6 @@ -.yui-tt { - visibility:hidden; - position:absolute; +.wg-hoverhelp { + visibility: collapse; + display: none; background-color: #e6ecff; border: 1px solid #003399; color: #000066; @@ -11,3 +11,7 @@ z-index: 1000; } +.wg-hoverhelp.yui-tt { + display: block; +} + diff --git a/www/extras/hoverhelp.js b/www/extras/hoverhelp.js new file mode 100644 index 000000000..f1d5ea64e --- /dev/null +++ b/www/extras/hoverhelp.js @@ -0,0 +1,12 @@ +YAHOO.util.Event.onDOMReady(function () { + var tips = YAHOO.util.Dom.getElementsByClassName('wg-hoverhelp'); + var i; + for (i = 0; i < tips.length; i++) { + var myTip = new YAHOO.widget.Tooltip(tips[i], { + autodismissdelay: 1000000, + width: '300px', + context: tips[i].parentNode + }); + } +}); +