From c46564859549a5a84833682e192c984fcb5539f0 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sun, 19 Jun 2005 00:23:05 +0000 Subject: [PATCH] Added hover help mechanism --- docs/changelog/6.x.x.txt | 2 + docs/migration.txt | 12 +- lib/WebGUI/Asset/Wobject/Article.pm | 4 + lib/WebGUI/HTMLForm.pm | 428 ++++++++++++++++++------- lib/WebGUI/TabForm.pm | 1 + www/extras/wz_tooltip.js | 463 ++++++++++++++++++++++++++++ 6 files changed, 797 insertions(+), 113 deletions(-) create mode 100644 www/extras/wz_tooltip.js diff --git a/docs/changelog/6.x.x.txt b/docs/changelog/6.x.x.txt index b4a82863d..2f3d711bb 100644 --- a/docs/changelog/6.x.x.txt +++ b/docs/changelog/6.x.x.txt @@ -1,6 +1,8 @@ 6.7.0 - fix [ 1221284 ] Operation\user.pm i18n {internationalize labels} - All form field labels have been internationalized. + - Added hover help. (Special thanks to Colin Kuskie for all his help with + this.) 6.6.3 - Fixed a recurring transaction commerce bug. diff --git a/docs/migration.txt b/docs/migration.txt index dd19db0b4..863594cfa 100644 --- a/docs/migration.txt +++ b/docs/migration.txt @@ -64,8 +64,8 @@ The following tips should also help make your migration easer: EXAMPLE: WebGUI::Form::formHeader({action=>$self->getUrl}); - :%s/WebGUI::URL::page/$self->getURL/gc - :%s/WebGUI::URL::page/$_[0]->getURL/gc + :%s/WebGUI::URL::page/$self->getUrl/gc + :%s/WebGUI::URL::page/$_[0]->getUrl/gc :%s/WebGUI::HTMLForm->new\(();\|;\)/WebGUI::HTMLForm->new(-action=>$self->getUrl);/gc :%s/WebGUI::Form::formHeader\(();\|;\)/WebGUI::Form::formHeader({-action=>$self->getUrl});/gc @@ -112,12 +112,10 @@ The following tips should also help make your migration easer: 1.2.11 Rename your name() method to getName(). 1.2.12 If your wobject used the forum system, then check out the new - lib/WebGUI/Asset/Wobject/Forum.pm system. + lib/WebGUI/Asset/Wobject/Collaboration.pm system. - 1.2.13 If your wobject used attachments, then at bare minimum check - lib/WebGUI/Storage.pm, but also consider using loose coupling with - lib/WebGUI/Asset/File.pm or lib/WebGUI/Asset/File/Image.pm the same - way that the Article wobject does. + 1.2.13 If your wobject used attachments, then check lib/WebGUI/Storage.pm and + lib/WebGUI/Storage/Image.pm 1.2.14 The parameters for the wobject processTemplate() method have changed. diff --git a/lib/WebGUI/Asset/Wobject/Article.pm b/lib/WebGUI/Asset/Wobject/Article.pm index 675ab8c51..8319de7c1 100644 --- a/lib/WebGUI/Asset/Wobject/Article.pm +++ b/lib/WebGUI/Asset/Wobject/Article.pm @@ -59,18 +59,21 @@ sub getEditForm { $tabform->getTab("display")->template( -value=>$self->getValue('templateId'), -namespace=>"Article", + -hoverHelp=>WebGUI::International::get('article template description','Asset_Article'), -label=>WebGUI::International::get(72,"Asset_Article"), ); $tabform->getTab("properties")->text( -name=>"linkTitle", -label=>WebGUI::International::get(7,"Asset_Article"), -value=>$self->getValue("linkTitle"), + -hoverHelp=>WebGUI::International::get('link title description','Asset_Article'), -uiLevel=>3 ); $tabform->getTab("properties")->url( -name=>"linkURL", -label=>WebGUI::International::get(8,"Asset_Article"), -value=>$self->getValue("linkURL"), + -hoverHelp=>WebGUI::International::get('link url description','Asset_Article'), -uiLevel=>3 ); $tabform->getTab("display")->yesNo( @@ -78,6 +81,7 @@ sub getEditForm { -label=>WebGUI::International::get(10,"Asset_Article"), -value=>$self->getValue("convertCarriageReturns"), -subtext=>'   '.WebGUI::International::get(11,"Asset_Article").'', + -hoverHelp=>WebGUI::International::get('carriage return description','Asset_Article'), -uiLevel=>5, -defaultValue=>0 ); diff --git a/lib/WebGUI/HTMLForm.pm b/lib/WebGUI/HTMLForm.pm index 8a40aee8b..692d7e3b4 100644 --- a/lib/WebGUI/HTMLForm.pm +++ b/lib/WebGUI/HTMLForm.pm @@ -218,12 +218,28 @@ sub _subtext { #------------------------------------------------------------------- sub _tableFormRow { - unless ($_[0]->{_noTable}) { - my $class = $_[0]->{_class}; + my $self = shift; + my $label = shift; + my $formControl = shift; + my $hoverHelp = shift; + unless ($self->{_noTable}) { + my $class = $self->{_class}; $class = qq| class="$class" | if($class); - return ''.$_[1].''.$_[2]."\n"; + $hoverHelp =~ s/\r/ /g; + $hoverHelp =~ s/\n/ /g; + $hoverHelp =~ s/&/& amp;/g; + $hoverHelp =~ s/>/& gt;/g; + $hoverHelp =~ s/</& lt;/g; + $hoverHelp =~ s/&/&/g; + $hoverHelp =~ s/>/>/g; + $hoverHelp =~ s/'.$label.''.$formControl."\n"; } else { - return $_[2]; + return $formControl; } } @@ -274,11 +290,15 @@ If value is not specified we'll use this instead. What UI level is required to see this control. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub asset { my ($self, @p) = @_; - my ($name, $label, $value, $class, $extras, $subtext, $defaultValue, $uiLevel) = rearrange([qw(name label value class extras subtext defaultValue uiLevel)], @p); + my ($name, $label, $value, $class, $extras, $subtext, $defaultValue, $uiLevel, $hoverHelp) = rearrange([qw(name label value class extras subtext defaultValue uiLevel hoverHelp)], @p); my $output; if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::asset({ @@ -289,7 +309,7 @@ sub asset { "defaultValue"=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -329,19 +349,23 @@ Extra text to describe this form element or to provide special instructions. If no value is specified, a default value to use. Defaults to "save". +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub button { my ($output); my ($self, @p) = @_; - my ($value, $label, $extras, $subtext, $defaultValue) = rearrange([qw(value label extras subtext defaultValue)], @p); + my ($value, $label, $extras, $subtext, $defaultValue, $hoverHelp) = rearrange([qw(value label extras subtext defaultValue hoverHelp)], @p); $output = WebGUI::Form::button({ "value"=>$value, "extras"=>$extras, "defaultValue"=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); $self->{_data} .= $output; } @@ -385,13 +409,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no value is specified, we'll use this. Defaults to "1". +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub checkbox { my ($output); my ($self, @p) = @_; - my ($name, $label, $checked, $subtext, $value, $extras, $uiLevel, $defaultValue) = - rearrange([qw(name label checked subtext value extras uiLevel defaultValue)], @p); + my ($name, $label, $checked, $subtext, $value, $extras, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label checked subtext value extras uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::checkbox({ "name"=>$name, @@ -401,7 +429,7 @@ sub checkbox { "defaultValue"=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { if ($checked) { $output = WebGUI::Form::hidden({ @@ -458,13 +486,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no other value is passed, use this. Should be passed as an array reference. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub checkList { my ($output); my ($self, @p) = @_; - my ($name, $options, $label, $value, $vertical, $extras, $subtext, $uiLevel, $defaultValue) = - rearrange([qw(name options label value vertical extras subtext uiLevel defaultValue)], @p); + my ($name, $options, $label, $value, $vertical, $extras, $subtext, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name options label value vertical extras subtext uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::checkList({ "name"=>$name, @@ -474,7 +506,7 @@ sub checkList { "extras"=>$extras }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hiddenList({ "name"=>$name, @@ -486,11 +518,67 @@ sub checkList { $self->{_data} .= $output; } + + +#------------------------------------------------------------------- + +=head2 codearea ( name [, label, value, subtext, extras, wrap, rows, columns, uiLevel, defaultValue ] ) + +Adds a codearea row to this form. A code area is different than a standard text area in that it stretches to fill more area of the screen, and allows for text editor type keystrokes such as tabs. + +=head3 name + +The name field for this form element. + +=head3 label + +The left column label for this form row. + +=head3 value + +The default value for this form element. + +=head3 subtext + +Extra text to describe this form element or to provide special instructions. + +=head3 extras + +If you want to add anything special to this form element like javascript actions, or stylesheet information, you'd add it in here as follows: + + 'onChange="this.form.submit()"' + +=head3 wrap + +The method for wrapping text in the text area. Defaults to "virtual". There should be almost no reason to specify this. + +=head3 rows + +The number of characters tall this form element should be. There should be no reason for anyone to specify this. + +=head3 columns + +The number of characters wide this form element should be. There should be no reason for anyone to specify this. + +=head3 uiLevel + +The UI level for this field. See the WebGUI developer's site for details. Defaults to "0". + +=head3 defaultValue + +If no value is specified, this will be used. + +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + +=cut + sub codearea { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $subtext, $extras, $wrap, $rows, $columns, $uiLevel, $defaultValue) = - rearrange([qw(name label value subtext extras wrap rows columns uiLevel defaultValue)], @p); + my ($name, $label, $value, $subtext, $extras, $wrap, $rows, $columns, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value subtext extras wrap rows columns uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::codearea({ "name"=>$name, @@ -502,7 +590,7 @@ sub codearea { defaultValue =>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -543,12 +631,16 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no other value is present, will use this. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub color { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $subtext, $uiLevel, $defaultValue) = rearrange([qw(name label value subtext uiLevel defaultValue)], @p); + my ($name, $label, $value, $subtext, $uiLevel, $defaultValue, $hoverHelp) = rearrange([qw(name label value subtext uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::color({ "name"=>$name, @@ -556,7 +648,7 @@ sub color { "defaultValue"=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -616,13 +708,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no other value is present, will use this. Should be passed as an array reference. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub combo { my ($output); my ($self, @p) = @_; - my ($name, $options, $label, $value, $size, $multiple, $extras, $subtext, $uiLevel, $defaultValue) = - rearrange([qw(name options label value size multiple extras subtext uiLevel defaultValue)], @p); + my ($name, $options, $label, $value, $size, $multiple, $extras, $subtext, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name options label value size multiple extras subtext uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::combo({ "name"=>$name, @@ -634,7 +730,7 @@ sub combo { "defaultValue"=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hiddenList({ "name"=>$name, @@ -686,13 +782,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no value is specified, we'll use this. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub contentType { my ($output); my ($self, @p) = @_; - my ($name, $types, $label, $value, $extras, $subtext, $uiLevel, $defaultValue) = - rearrange([qw(name types label value extras subtext uiLevel defaultValue)], @p); + my ($name, $types, $label, $value, $extras, $subtext, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name types label value extras subtext uiLevel defaultValue hoverHelp)], @p); $uiLevel = 3 if ($uiLevel eq ""); if (_uiLevelChecksOut($uiLevel)) { $label = WebGUI::International::get(1007) unless ($label); @@ -704,7 +804,7 @@ sub contentType { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -752,13 +852,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no other value is passed, we'll use this. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub databaseLink { my ($output, $subtext); my ($self, @p) = @_; - my ($name, $value, $label, $afterEdit, $extras, $uiLevel, $defaultValue) = - rearrange([qw(name value label afterEdit extras uiLevel defaultValue)], @p); + my ($name, $value, $label, $afterEdit, $extras, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name value label afterEdit extras uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $label = $label || WebGUI::International::get(1075); if (WebGUI::Grouping::isInGroup(3)) { @@ -774,7 +878,7 @@ sub databaseLink { "defaultValue"=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -831,13 +935,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no value is specified, use this. Defaults to today. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub date { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $extras, $subtext, $size, $noDate, $uiLevel, $defaultValue) = - rearrange([qw(name label value extras subtext size noDate uiLevel defaultValue)], @p); + my ($name, $label, $value, $extras, $subtext, $size, $noDate, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value extras subtext size noDate uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::date({ "name"=>$name, @@ -893,13 +1001,17 @@ Extra parameters such as javascript or style sheet information that you wish to =head3 defaultValue +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub dateTime { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $subtext, $uiLevel, $extras, $defaultValue) = - rearrange([qw(name label value subtext uiLevel extras defaultValue)], @p); + my ($name, $label, $value, $subtext, $uiLevel, $extras, $defaultValue, $hoverHelp) = + rearrange([qw(name label value subtext uiLevel extras defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::dateTime({ "name"=>$name, @@ -951,7 +1063,7 @@ sub dynamicField { if (_uiLevelChecksOut($param{uiLevel})) { $output = WebGUI::Form::dynamicField($fieldType, \%param); $output .= _subtext($param{subtext}); - $output = $self->_tableFormRow($param{label},$output); + $output = $self->_tableFormRow($param{label},$output,$param{hoverHelp}); } else { $output = WebGUI::Form::hidden({ "name"=>$param{name}, @@ -1006,13 +1118,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no other value is specified, this will be used. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub email { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue) = - rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue)], @p); + my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::email({ "name"=>$name, @@ -1079,13 +1195,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no other value is specified, this will be used. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub fieldType { my ($output); my ($self, @p) = @_; - my ($name, $types, $label, $value, $size, $multiple, $extras, $subtext, $uiLevel, $defaultValue) = - rearrange([qw(name types label value size multiple extras subtext uiLevel defaultValue)], @p); + my ($name, $types, $label, $value, $size, $multiple, $extras, $subtext, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name types label value size multiple extras subtext uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::fieldType({ "name"=>$name, @@ -1097,7 +1217,7 @@ sub fieldType { "defaultValue"=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -1140,13 +1260,17 @@ The number of characters wide this form element should be. There should be no re The UI level for this field. See the WebGUI developer's site for details. Defaults to "0". +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub file { my ($output); my ($self, @p) = @_; - my ($name, $label, $subtext, $extras, $size, $uiLevel) = - rearrange([qw(name label subtext extras size uiLevel)], @p); + my ($name, $label, $subtext, $extras, $size, $uiLevel,$hoverHelp) = + rearrange([qw(name label subtext extras size uiLevel hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::file({ "name"=>$name, @@ -1196,13 +1320,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no other value is present, this will be used. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub filterContent { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $extras, $subtext, $uiLevel, $defaultValue) = - rearrange([qw(name label value extras subtext uiLevel defaultValue)], @p); + my ($name, $label, $value, $extras, $subtext, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value extras subtext uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $label = WebGUI::International::get(418) if ($label eq ""); $output = WebGUI::Form::filterContent({ @@ -1212,7 +1340,7 @@ sub filterContent { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -1268,13 +1396,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no other value is specified, this will be used. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub float { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue) = - rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue)], @p); + my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::float({ "name"=>$name, @@ -1285,7 +1417,7 @@ sub float { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -1346,13 +1478,17 @@ An array reference containing a list of groups to exclude from the list. When no other value is specified, this will be used. Should be passed as an array reference. Defaults to "7" (Everyone). +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub group { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $size, $multiple, $extras, $subtext, $uiLevel, $excludeGroups, $defaultValue) = - rearrange([qw(name label value size multiple extras subtext uiLevel excludeGroups defaultValue)], @p); + my ($name, $label, $value, $size, $multiple, $extras, $subtext, $uiLevel, $excludeGroups, $defaultValue, $hoverHelp) = + rearrange([qw(name label value size multiple extras subtext uiLevel excludeGroups defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { if (WebGUI::Grouping::isInGroup(3)) { $subtext = manageIcon("op=listGroups").$subtext; @@ -1367,7 +1503,7 @@ sub group { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { my $hashRef = WebGUI::SQL->buildHashRef("select groupId,groupName from groups"); $output = WebGUI::Form::hiddenList({ @@ -1462,13 +1598,17 @@ If no value is specified, this will be used. An asset Id of a rich editor config. Defaults to the default rich editor in the settings. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub HTMLArea { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $subtext, $extras, $wrap, $rows, $columns, $uiLevel, $defaultValue, $richEditId) = - rearrange([qw(name label value subtext extras wrap rows columns uiLevel defaultValue richEditId)], @p); + my ($name, $label, $value, $subtext, $extras, $wrap, $rows, $columns, $uiLevel, $defaultValue, $richEditId, $hoverHelp) = + rearrange([qw(name label value subtext extras wrap rows columns uiLevel defaultValue richEditId hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::HTMLArea({ "name"=>$name, @@ -1481,7 +1621,7 @@ sub HTMLArea { richEditId=>$richEditId }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -1536,13 +1676,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul If no value is specified, this will be used. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub integer { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue) = - rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue)], @p); + my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::integer({ "name"=>$name, @@ -1553,7 +1697,7 @@ sub integer { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -1600,13 +1744,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no value is specified, we'll use this instead. Defaults to 1. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub interval { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $extras, $subtext, $uiLevel, $defaultValue) = - rearrange([qw(name label value extras subtext uiLevel defaultValue)], @p); + my ($name, $label, $value, $extras, $subtext, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value extras subtext uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::interval({ "name"=>$name, @@ -1615,7 +1763,7 @@ sub interval { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { my ($interval, $units) = WebGUI::DateTime::secondsToInterval($value||$defaultValue||1); $output = WebGUI::Form::hidden({ @@ -1674,12 +1822,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no other value is passed, we'll use this. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub ldapLink { my ($output, $subtext); my ($self, @p) = @_; - my ($name, $value, $label, $size, $multiple, $afterEdit, $extras, $uiLevel, $defaultValue) = rearrange([qw(name value label size multiple afterEdit extras uiLevel defaultValue)], @p); + my ($name, $value, $label, $size, $multiple, $afterEdit, $extras, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name value label size multiple afterEdit extras uiLevel defaultValue hoverHelp)], @p); $size = 1 unless ($size); $multiple = 0 unless ($multiple); if (_uiLevelChecksOut($uiLevel)) { @@ -1699,7 +1852,7 @@ sub ldapLink { "defaultValue"=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -1808,13 +1961,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul When no value is specified, this will be used instead. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub password { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $subtext, $maxlength, $extras, $size, $uiLevel, $defaultValue) = - rearrange([qw(name label value subtext maxlength extras size uiLevel defaultValue)], @p); + my ($name, $label, $value, $subtext, $maxlength, $extras, $size, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value subtext maxlength extras size uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::password({ "name"=>$name, @@ -1825,7 +1982,7 @@ sub password { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -1880,13 +2037,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul If no value is specified, we'll use this instead. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub phone { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue) = - rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue)], @p); + my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::phone({ "name"=>$name, @@ -1897,7 +2058,7 @@ sub phone { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -1917,7 +2078,7 @@ Returns the HTML for this form object. =cut sub print { - return $_[0]->{_header}.$_[0]->{_data}.$_[0]->{_footer}; + return $_[0]->{_header}.$_[0]->{_data}.$_[0]->{_footer}.''; } #------------------------------------------------------------------- @@ -1972,13 +2133,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul If no value is specified, we'll use this instead. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub radio { my ($output); my ($self, @p) = @_; - my ($name, $label, $checked, $value, $subtext, $extras, $uiLevel, $defaultValue) = - rearrange([qw(name label checked value subtext extras uiLevel defaultValue)], @p); + my ($name, $label, $checked, $value, $subtext, $extras, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label checked value subtext extras uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::radio({ "name"=>$name, @@ -1988,7 +2153,7 @@ sub radio { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { if ($checked) { $output = WebGUI::Form::hidden({ @@ -2045,13 +2210,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul If no other value is specified, we'll use this instead. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub radioList { my ($output); my ($self, @p) = @_; - my ($name, $options, $label, $value, $vertical, $extras, $subtext, $uiLevel, $defaultValue) = - rearrange([qw(name options label value vertical extras subtext uiLevel defaultValue)], @p); + my ($name, $options, $label, $value, $vertical, $extras, $subtext, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name options label value vertical extras subtext uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::radioList({ "name"=>$name, @@ -2062,7 +2231,7 @@ sub radioList { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -2121,17 +2290,21 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul If no value is specified, we'll use this. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub readOnly { my ($output); my ($self, @p) = @_; - my ($value, $label, $subtext, $uiLevel, $defaultValue) = - rearrange([qw(value label subtext uiLevel defaultValue)], @p); + my ($value, $label, $subtext, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(value label subtext uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = $value || $defaultValue; $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output, $hoverHelp); } $self->{_data} .= $output; } @@ -2188,13 +2361,17 @@ A boolean value for whether the values in the options hash should be sorted. If no value is specified, this will be used. Pass as an array reference. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub selectList { my ($output); my ($self, @p) = @_; - my ($name, $options, $label, $value, $size, $multiple, $extras, $subtext, $uiLevel, $sortByValue, $defaultValue) = - rearrange([qw(name options label value size multiple extras subtext uiLevel sortByValue defaultValue)], @p); + my ($name, $options, $label, $value, $size, $multiple, $extras, $subtext, $uiLevel, $sortByValue, $defaultValue, $hoverHelp) = + rearrange([qw(name options label value size multiple extras subtext uiLevel sortByValue defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::selectList({ "name"=>$name, @@ -2207,7 +2384,7 @@ sub selectList { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hiddenList({ "name"=>$name, @@ -2247,19 +2424,23 @@ Extra text to describe this form element or to provide special instructions. If no value is specified, this will be used. Defaults to "save". +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub submit { my ($output); my ($self, @p) = @_; - my ($value, $label, $extras, $subtext, $defaultValue) = rearrange([qw(value label extras subtext defaultValue)], @p); + my ($value, $label, $extras, $subtext, $defaultValue,$hoverHelp) = rearrange([qw(value label extras subtext defaultValue hoverHelp)], @p); $output = WebGUI::Form::submit({ "value"=>$value, "extras"=>$extras, defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); $self->{_data} .= $output; } @@ -2303,13 +2484,17 @@ If no value is specified, this will be used. Any extra information you want to include after the field. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub template { my ($output, $buttons); my ($self, @p) = @_; - my ($name, $value, $label, $namespace, $afterEdit, $extras, $uiLevel, $defaultValue, $subtext) = - rearrange([qw(name value label namespace afterEdit extras uiLevel defaultValue subtext)], @p); + my ($name, $value, $label, $namespace, $afterEdit, $extras, $uiLevel, $defaultValue, $subtext,$hoverHelp) = + rearrange([qw(name value label namespace afterEdit extras uiLevel defaultValue subtext hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $label = $label || WebGUI::International::get(356); my $template = WebGUI::Asset->newByDynamicClass($value); @@ -2329,7 +2514,7 @@ sub template { defaultValue=>$defaultValue }); $output .= _subtext($buttons.$subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -2342,7 +2527,7 @@ sub template { #------------------------------------------------------------------- -=head2 text ( name [, label, value, maxlength, extras, subtext, size, uiLevel, defaultValue ] ) +=head2 text ( name [, label, value, maxlength, extras, subtext, size, uiLevel, defaultValue, hoverHelp ] ) Adds a text row to this form. @@ -2384,13 +2569,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul This will be used if no value is specified. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub text { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue) = - rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue)], @p); + my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::text({ "name"=>$name, @@ -2401,7 +2590,7 @@ sub text { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -2460,13 +2649,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul This will be used if no value is specified. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub textarea { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $subtext, $extras, $wrap, $rows, $columns, $uiLevel, $defaultValue) = - rearrange([qw(name label value subtext extras wrap rows columns uiLevel defaultValue)], @p); + my ($name, $label, $value, $subtext, $extras, $wrap, $rows, $columns, $uiLevel, $defaultValue,$hoverHelp) = + rearrange([qw(name label value subtext extras wrap rows columns uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::textarea({ "name"=>$name, @@ -2478,7 +2671,7 @@ sub textarea { defaultValue =>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -2529,13 +2722,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul This will be used if no value is specified. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub timeField { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $extras, $subtext, $size, $uiLevel, $defaultValue) = - rearrange([qw(name label value extras subtext size uiLevel defaultValue)], @p); + my ($name, $label, $value, $extras, $subtext, $size, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value extras subtext size uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::time({ "name"=>$name, @@ -2545,7 +2742,7 @@ sub timeField { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output, $hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -2613,13 +2810,19 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul =head3 defaultValue +A value to be set if value is empty. + +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub url { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue) = - rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue)], @p); + my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue, $hoverHelp) = + rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::url({ "name"=>$name, @@ -2630,7 +2833,7 @@ sub url { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -2681,13 +2884,17 @@ If you want to add anything special to this form element like javascript actions Used if value is not specified. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub whatNext { my ($output); my ($self, @p) = @_; - my ($options, $value, $name, $label, $subtext, $uiLevel, $extras, $defaultValue) = - rearrange([qw(options value name label subtext uiLevel extras defaultValue)], @p); + my ($options, $value, $name, $label, $subtext, $uiLevel, $extras, $defaultValue, $hoverHelp) = + rearrange([qw(options value name label subtext uiLevel extras defaultValue hoverHelp)], @p); $uiLevel |= 1; $label |= WebGUI::International::get(744); if (_uiLevelChecksOut($uiLevel)) { @@ -2699,7 +2906,7 @@ sub whatNext { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, @@ -2745,13 +2952,18 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul =head3 defaultValue This will be used if value is not specified. Defaults to 1. + +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub yesNo { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $extras, $subtext, $uiLevel) = - rearrange([qw(name label value extras subtext uiLevel)], @p); + my ($name, $label, $value, $extras, $subtext, $uiLevel, $hoverHelp) = + rearrange([qw(name label value extras subtext uiLevel hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::yesNo({ "name"=>$name, @@ -2759,7 +2971,7 @@ sub yesNo { "extras"=>$extras }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output,$hoverHelp); } else { $value = 0 unless ($value); $output = WebGUI::Form::hidden({ @@ -2814,13 +3026,17 @@ The UI level for this field. See the WebGUI developer's site for details. Defaul Used if value not specified. +=head3 hoverHelp + +A string of text or HTML to be displayed when a user's mouse hover's over a field label. It is meant to describe to the user what to use the field for. + =cut sub zipcode { my ($output); my ($self, @p) = @_; - my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue) = - rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue)], @p); + my ($name, $label, $value, $maxlength, $extras, $subtext, $size, $uiLevel, $defaultValue,$hoverHelp) = + rearrange([qw(name label value maxlength extras subtext size uiLevel defaultValue hoverHelp)], @p); if (_uiLevelChecksOut($uiLevel)) { $output = WebGUI::Form::zipcode({ "name"=>$name, @@ -2831,7 +3047,7 @@ sub zipcode { defaultValue=>$defaultValue }); $output .= _subtext($subtext); - $output = $self->_tableFormRow($label,$output); + $output = $self->_tableFormRow($label,$output, $hoverHelp); } else { $output = WebGUI::Form::hidden({ "name"=>$name, diff --git a/lib/WebGUI/TabForm.pm b/lib/WebGUI/TabForm.pm index d66891f77..8b98070a8 100644 --- a/lib/WebGUI/TabForm.pm +++ b/lib/WebGUI/TabForm.pm @@ -244,6 +244,7 @@ sub print { $output .= $form; $output .= WebGUI::Form::formFooter(); $output .= ''; + $output .= ''; return $output; } diff --git a/www/extras/wz_tooltip.js b/www/extras/wz_tooltip.js new file mode 100644 index 000000000..608dd8d13 --- /dev/null +++ b/www/extras/wz_tooltip.js @@ -0,0 +1,463 @@ +/* This notice must be untouched at all times. + +wz_tooltip.js v. 3.31 + +The latest version is available at +http://www.walterzorn.com +or http://www.devira.com +or http://www.walterzorn.de + +Copyright (c) 2002-2004 Walter Zorn. All rights reserved. +Created 1. 12. 2002 by Walter Zorn (Web: http://www.walterzorn.com ) +Last modified: 10. 6. 2005 + +Cross-browser tooltips working even in Opera 5 and 6, +as well as in NN 4, Gecko-Browsers, IE4+, Opera 7 and Konqueror. +No onmouseouts required. +Appearance of tooltips can be individually configured +via commands within the onmouseovers. + +LICENSE: LGPL + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License (LGPL) as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +For more details on the GNU Lesser General Public License, +see http://www.gnu.org/copyleft/lesser.html +*/ + + + +//////////////// GLOBAL TOOPTIP CONFIGURATION ///////////////////// +var ttBgColor = "#e6ecff"; +var ttBgImg = ""; // path to background image; +var ttBorderColor = "#003399"; +var ttBorderWidth = 1; +var ttDelay = 500; // time span until tooltip shows up [milliseconds] +var ttFontColor = "#000066"; +var ttFontFace = "arial,helvetica,sans-serif"; +var ttFontSize = "11px"; +var ttFontWeight = "normal"; // alternative is "bold"; +var ttOffsetX = 12; // horizontal offset of left-top corner from mousepointer +var ttOffsetY = 15; // vertical offset " +var ttOpacity = 100; // opacity of tooltip in percent (must be integer between 0 and 100) +var ttPadding = 3; // spacing between border and content +var ttShadowColor = ""; +var ttShadowWidth = 0; +var ttTemp = 0; // time span after which the tooltip disappears; 0 (zero) means "infinite timespan" +var ttTextAlign = "left"; +var ttTitleColor = "#ffffff"; // color of caption text +var ttWidth = 300; +//////////////////// END OF TOOLTIP CONFIG //////////////////////// + + + +////////////// TAGS WITH TOOLTIP FUNCTIONALITY //////////////////// +// List may be extended or shortened: +var tt_tags = new Array("a","area","b","big","caption","center","code","dd","div","dl","dt","em","h1","h2","h3","h4","h5","h6","i","img","input","li","map","ol","p","pre","s","small","span","strike","strong","sub","sup","table","td","th","tr","tt","u","var","ul","layer"); +///////////////////////////////////////////////////////////////////// + + + +///////// DON'T CHANGE ANYTHING BELOW THIS LINE ///////////////////// +var tt_obj, // current tooltip +tt_ifrm, // iframe to cover windowed controls in IE +tt_objW = 0, tt_objH = 0, // width and height of tt_obj +tt_objX = 0, tt_objY = 0, +tt_offX = 0, tt_offY = 0, +xlim = 0, ylim = 0, // right and bottom borders of visible client area +tt_sup = false, // true if T_ABOVE cmd +tt_sticky = false, // tt_obj sticky? +tt_wait = false, +tt_act = false, // tooltip visibility flag +tt_sub = false, // true while tooltip below mousepointer +tt_u = "undefined", +tt_mf, // stores previous mousemove evthandler +// Opera: disable href when hovering +tt_tag = null; // stores hovered dom node, href and previous statusbar txt + + +var tt_db = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body? document.body : null, +tt_n = navigator.userAgent.toLowerCase(), +tt_nv = navigator.appVersion; +// Browser flags +var tt_op = !!(window.opera && document.getElementById), +tt_op6 = tt_op && !document.defaultView, +tt_op7 = tt_op && !tt_op6, +tt_ie = tt_n.indexOf("msie") != -1 && document.all && tt_db && !tt_op, +tt_ie6 = tt_ie && parseFloat(tt_nv.substring(tt_nv.indexOf("MSIE")+5)) >= 5.5; +tt_n4 = (document.layers && typeof document.classes != tt_u), +tt_n6 = (!tt_op && document.defaultView && typeof document.defaultView.getComputedStyle != tt_u), +tt_w3c = !tt_ie && !tt_n6 && !tt_op && document.getElementById; + +function tt_Int(t_x) +{ + var t_y; + return isNaN(t_y = parseInt(t_x))? 0 : t_y; +} +function wzReplace(t_x, t_y) +{ + var t_ret = "", + t_str = this, + t_xI; + while((t_xI = t_str.indexOf(t_x)) != -1) + { + t_ret += t_str.substring(0, t_xI) + t_y; + t_str = t_str.substring(t_xI + t_x.length); + } + return t_ret+t_str; +} +String.prototype.wzReplace = wzReplace; +function tt_N4Tags(tagtyp, t_d, t_y) +{ + t_d = t_d || document; + t_y = t_y || new Array(); + var t_x = (tagtyp=="a")? t_d.links : t_d.layers; + for(var z = t_x.length; z--;) t_y[t_y.length] = t_x[z]; + for(z = t_d.layers.length; z--;) t_y = tt_N4Tags(tagtyp, t_d.layers[z].document, t_y); + return t_y; +} +function tt_Htm(tt, t_id, txt) +{ + var t_bgc = (typeof tt.T_BGCOLOR != tt_u)? tt.T_BGCOLOR : ttBgColor, + t_bgimg = (typeof tt.T_BGIMG != tt_u)? tt.T_BGIMG : ttBgImg, + t_bc = (typeof tt.T_BORDERCOLOR != tt_u)? tt.T_BORDERCOLOR : ttBorderColor, + t_bw = (typeof tt.T_BORDERWIDTH != tt_u)? tt.T_BORDERWIDTH : ttBorderWidth, + t_ff = (typeof tt.T_FONTFACE != tt_u)? tt.T_FONTFACE : ttFontFace, + t_fc = (typeof tt.T_FONTCOLOR != tt_u)? tt.T_FONTCOLOR : ttFontColor, + t_fsz = (typeof tt.T_FONTSIZE != tt_u)? tt.T_FONTSIZE : ttFontSize, + t_fwght = (typeof tt.T_FONTWEIGHT != tt_u)? tt.T_FONTWEIGHT : ttFontWeight, + t_opa = (typeof tt.T_OPACITY != tt_u)? tt.T_OPACITY : ttOpacity, + t_padd = (typeof tt.T_PADDING != tt_u)? tt.T_PADDING : ttPadding, + t_shc = (typeof tt.T_SHADOWCOLOR != tt_u)? tt.T_SHADOWCOLOR : (ttShadowColor || 0), + t_shw = (typeof tt.T_SHADOWWIDTH != tt_u)? tt.T_SHADOWWIDTH : (ttShadowWidth || 0), + t_algn = (typeof tt.T_TEXTALIGN != tt_u)? tt.T_TEXTALIGN : ttTextAlign, + t_tit = (typeof tt.T_TITLE != tt_u)? tt.T_TITLE : "", + t_titc = (typeof tt.T_TITLECOLOR != tt_u)? tt.T_TITLECOLOR : ttTitleColor, + t_w = (typeof tt.T_WIDTH != tt_u)? tt.T_WIDTH : ttWidth; + if (t_shc || t_shw) + { + t_shc = t_shc || "#cccccc"; + t_shw = t_shw || 5; + } + if (tt_n4 && (t_fsz == "10px" || t_fsz == "11px")) t_fsz = "12px"; + + var t_optx = (tt_n4? '' : tt_n6? ('-moz-opacity:'+(t_opa/100.0)) : tt_ie? ('filter:Alpha(opacity='+t_opa+')') : ('opacity:'+(t_opa/100.0))) + ';'; + var t_y = '
' + + ''; + if (t_tit) + { + t_y += '
' + + (tt_n4? ' ' : '')+t_tit+'<\/b><\/font><\/td><\/tr>'; + } + t_y += '
' + + ''; + if (t_fwght == 'bold') t_y += ''; + t_y += txt; + if (t_fwght == 'bold') t_y += '<\/b>'; + t_y += '<\/font><\/td><\/tr><\/table><\/td><\/tr><\/table>'; + if (t_shw) + { + var t_spct = Math.round(t_shw*1.3); + if (tt_n4) + { + t_y += '<\/layer>' + + '<\/layer>'; + } + else + { + t_optx = tt_n6? '-moz-opacity:0.85;' : tt_ie? 'filter:Alpha(opacity=85);' : 'opacity:0.85;'; + t_y += '
<\/div>' + + '
<\/div>'; + } + } + return(t_y+'<\/div>' + + (tt_ie ? '