From: <de...@de...> - 2007-01-30 13:21:57
|
Author: DanielRohde Date: 2007-01-30 07:21:23 -0600 (Tue, 30 Jan 2007) New Revision: 12653 Modified: twiki/branches/MAIN/twikiplugins/ChecklistPlugin/data/TWiki/ChecklistPlugin.txt twiki/branches/MAIN/twikiplugins/ChecklistPlugin/lib/TWiki/Plugins/ChecklistPlugin.pm twiki/branches/MAIN/twikiplugins/ChecklistPlugin/pub/TWiki/ChecklistPlugin/itemstatechange.js Log: Item3455: fixed some major bugs (mod_perl, preferences flag); improved AJAX feature (statesel) Modified: twiki/branches/MAIN/twikiplugins/ChecklistPlugin/data/TWiki/ChecklistPlugin.txt =================================================================== --- twiki/branches/MAIN/twikiplugins/ChecklistPlugin/data/TWiki/ChecklistPlugin.txt 2007-01-30 13:00:50 UTC (rev 12652) +++ twiki/branches/MAIN/twikiplugins/ChecklistPlugin/data/TWiki/ChecklistPlugin.txt 2007-01-30 13:21:23 UTC (rev 12653) @@ -1,4 +1,4 @@ -%META:TOPICINFO{author="TWikiContributor" date="1169057172" format="1.0" version="$Rev$"}% +%META:TOPICINFO{author="TWikiContributor" date="1170157837" format="1.0" version="$Rev$"}% ---+!! Checklist Plugin <nop>ChecklistPlugin creates simple checklists. @@ -255,7 +255,7 @@ | static | %<nop>CLI%<br/>%<nop>CHECKLIST%<br/>%<nop>CHECKLISTSTART% | allow/disallow state changes of checklist items (usefull if you create summary pages of some items of different checklists) | =static="off"= | | template | %<nop>CLI%<br/>%<nop>CHECKLIST%<br/>%<nop>CHECKLISTSTART% | template name (see Plugin settings / Templates ) | =template="patchday"= | | text | %<nop>CLI% | allows to place text behind the button (default: =""=); useful to avoid the annoying line break between checklist button and text if HTML forms are used (related: useforms attribute) | =text="my first step"= | -| tooltip | %<nop>CLI%<br/>%<nop>CHECKLIST%<br/>%<nop>CHECKLISTSTART% | sets the tooltip of the state icons (substituted variables: %STATE% - current state; %NEXTSTATE% - next state; %STATES% - comma separated list of all states; %STATECOUNT% - number of states) | =tooltip="%<nop>STATE%"= | +| tooltip | %<nop>CLI%<br/>%<nop>CHECKLIST%<br/>%<nop>CHECKLISTSTART% | sets the tooltip of the state icons (substituted variables: %<nop>STATE% - current state; %<nop>NEXTSTATE% - next state; %<nop>STATES% - comma separated list of all states; %<nop>STATECOUNT% - number of states) | =tooltip="%<nop>STATE%"= | | tooltipbgcolor | %<nop>CLI%<br/>%<nop>CHECKLIST%<br/>%<nop>CHECKLISTSTART% | tooltip background color (=statesel= popup background color is also effected) | =tooltipbgcolor="%<nop>WEBBGCOLOR%"= | | useajax | %<nop>CLI%<br/>%<nop>CHECKLIST%<br/>%<nop>CHECKLISTSTART% | enables/disables <nop>JavaScript/AJAX based item state changes (default: =on=) | =useajax="1"= | | useforms | %<nop>CLI%<br/>%<nop>CHECKLIST%<br/> %<nop>CHECKLISTSTART% | if enabled HTML forms are used instead of hyperlinks (default: =off=) | =useforms="off"= | @@ -308,6 +308,9 @@ * Sets the icon state tooltip: * # Set TOOLTIP = Click me to change my state '%STATE%' to '%NEXTSTATE'. + * Enables/Disables state selection popup (default: =off=): + * # Set STATESEL = on + ---+++ Templates Templates allows you to setup all plugin attributes bounded to a template name. Only uppercase letters are allowed for a <i>template name</i>. @@ -349,7 +352,7 @@ | Plugin Author: | TWiki:Main.DanielRohde | | Plugin Version: | v1.021 (BETA) | | Change History: | <!-- versions below in reverse order --> | -| v1.021 (BETA) | TWiki:Main.DanielRohde: fixed major mod_perl bug; improved performance (AJAX); fixed minor IE caching bug (AJAX related); added new attributes (tooltip, descr, template, statesel) requested by TWiki:Main.KeithHelfrich; fixed installation instructions bug reported by TWiki:Main.KeithHelfrich | +| v1.021 (BETA) | TWiki:Main.DanielRohde: fixed some major bugs (mod_perl, plugin preferences); improved performance (AJAX); fixed minor IE caching bug (AJAX related); added new attributes (tooltip, descr, template, statesel) requested by TWiki:Main.KeithHelfrich; fixed installation instructions bug reported by TWiki:Main.KeithHelfrich | | v1.020 (15 Jan 2007) | TWiki:Main.DanielRohde: added AJAX feature (=useajax= attribute) requested by TWiki:Main.ShayPierce and TWiki:Main.KeithHelfrich | | v1.019 (14 Dec 2006) | TWiki:Main.DanielRohde: fixed major default options bug reported by TWiki:Main.RichardHitier | | v1.018 (30 Aug 2006) | TWiki:Main.DanielRohde: fixed notification bug reported by TWiki:Main.JosMaccabiani; fixed a minor whitespace bug; add static attribute | Modified: twiki/branches/MAIN/twikiplugins/ChecklistPlugin/lib/TWiki/Plugins/ChecklistPlugin.pm =================================================================== --- twiki/branches/MAIN/twikiplugins/ChecklistPlugin/lib/TWiki/Plugins/ChecklistPlugin.pm 2007-01-30 13:00:50 UTC (rev 12652) +++ twiki/branches/MAIN/twikiplugins/ChecklistPlugin/lib/TWiki/Plugins/ChecklistPlugin.pm 2007-01-30 13:21:23 UTC (rev 12653) @@ -81,7 +81,7 @@ # of the version number in PLUGINDESCRIPTIONS. $RELEASE = 'Cairo, Dakar, Edinburgh, ...'; -$REVISION = '1.021'; #dro# fixed major mod_perl bug; improved performance (AJAX); fixed minor IE caching bug (AJAX related); added new attributes (tooltip, descr, template, statesel) requested by TWiki:Main.KeithHelfrich; fixed installation instructions bug reported by TWiki:Main.KeithHelfrich +$REVISION = '1.021'; #dro# fixed some major bug (mod_perl, plugin preferences); improved performance (AJAX); fixed minor IE caching bug (AJAX related); added new attributes (tooltip, descr, template, statesel) requested by TWiki:Main.KeithHelfrich; fixed installation instructions bug reported by TWiki:Main.KeithHelfrich #$REVISION = '1.020'; #dro# added AJAX feature (useajax attribute) requested by TWiki:Main.ShayPierce and TWiki:Main.KeithHelfrich #$REVISION = '1.019'; #dro# fixed major default options bug reported by TWiki:Main.RichardHitier #$REVISION = '1.018'; #dro# fixed notification bug reported by TWiki:Main.JosMaccabiani; fixed a minor whitespace bug; add static attribute @@ -121,7 +121,7 @@ $debug = TWiki::Func::getPluginPreferencesFlag( "DEBUG" ); # XXX - #### $debug = 1; + ####$debug = 1; $defaultsInitialized = 0; @@ -143,7 +143,7 @@ $initText = $_[0]; ###### we need exceptions since Dakar release therefore eval is bad ###eval { - local(%namedIds,$resetDone,$stateChangeDone, %options, %namedDefaults); + local(%options, %namedDefaults, %itemStatesRead, %namedIds, @unknownParams, $name); $_[0] =~ s/<\/head>/<script src="%PUBURL%\/%TWIKIWEB%\/$pluginName\/itemstatechange.js" language="javascript"><\/script><\/head>/is unless ($_[0]=~/itemstatechange.js/); $_[0] =~ s/%CHECKLISTSTART%(.*?)%CHECKLISTEND%/&handleAutoChecklist("",$1,$_[0])/sge; $_[0] =~ s/%CHECKLISTSTART{(.*?)}%(.*?)%CHECKLISTEND%/&handleAutoChecklist($1,$2,$_[0])/sge; @@ -243,15 +243,16 @@ # handle templates: my $tmplName = $params{'template'}; $tmplName = $namedDefaults{$name}{'template'} unless defined $tmplName; - $tmplName = (&TWiki::Func::getPluginPreferencesValue("TEMPLATE") || undef) unless defined $tmplName; + $tmplName = ( &TWiki::Func::getPreferencesValue("\U${pluginName}_TEMPLATE\E") || undef) unless defined $tmplName; # Setup options (attributes>named defaults>plugin preferences>global defaults): %options = ( ); foreach my $option (@allOptions) { my $v = $params{$option}; if ((defined $tmplName)&&(!defined $v)) { - $v = (&TWiki::Func::getPluginPreferencesFlag("TEMPLATE_\U${tmplName}_${option}\E") || undef) if grep /^\Q$option\E$/, @flagOptions; - $v = (&TWiki::Func::getPluginPreferencesValue("TEMPLATE_\U${tmplName}_${option}\E") || undef) unless defined $v; + $v = (&TWiki::Func::getPreferencesFlag("\U${pluginName}_TEMPLATE_${tmplName}_${option}\E") || undef) if grep /^\Q$option\E$/, @flagOptions; + $v = (&TWiki::Func::getPreferencesValue("\U${pluginName}_TEMPLATE_${tmplName}_${option}\E") || undef) unless defined $v; + $v = undef if (defined $v) && ($v eq ""); } $v = $namedDefaults{$name}{$option} unless defined $v; @@ -263,13 +264,13 @@ } } else { if (grep /^\Q$option\E$/, @flagOptions) { - $v = TWiki::Func::getPluginPreferencesFlag("\U$option\E") || undef; + $v = ( TWiki::Func::getPreferencesFlag("\U${pluginName}_$option\E") || undef ); } else { - $v = TWiki::Func::getPluginPreferencesValue("\U$option\E") || undef; + $v = ( TWiki::Func::getPreferencesValue("\U${pluginName}_$option\E") || undef ); } - $options{$option}=(defined $v)? $v : $globalDefaults{$option}; + $v = undef if (defined $v) && ($v eq ""); + $options{$option}= (defined $v?$v:$globalDefaults{$option}); } - } # Render some options: @@ -328,13 +329,7 @@ # create named defaults (attributes>named defaults>global defaults): foreach my $default (keys %globalDefaults) { - $namedDefaults{$name}{$default}= - (defined $params{$default})? - $params{$default}: - ((defined $namedDefaults{$name}{$default})? - $namedDefaults{$name}{$default}: - undef); - #$globalDefaults{$default}); + $namedDefaults{$name}{$default}= $params{$default} if defined $params{$default}; } } # ========================= @@ -736,15 +731,15 @@ $text .= $linktext; } else { my ($onmouseover, $onmouseout)=("",""); + $action="javascript:submitItemStateChange('$action')" if $options{'useajax'}; if ($options{'statesel'}) { - $onmouseover="clpTooltipShow('CLP_SM_DIV_$name$uetId','CLP_A_$name$uetId',10,10,true);"; + $action="javascript:clpTooltipShow('CLP_SM_DIV_$name$uetId','CLP_A_$name$uetId',10,10,true);"; $text .= &createHiddenDirectSelectionDiv($uetId, $name, $state, \@states, \@icons); } else { $onmouseover="clpTooltipShow('CLP_TT_$name$uetId','CLP_A_$name$uetId',20,20,true);"; $onmouseout="clpTooltipHide('CLP_TT_$name$uetId');"; $text .= $query->div({-id=>"CLP_TT_$name$uetId",-style=>"visibility:hidden;position:absolute;top:0;left:0;z-index:2;font: normal 8pt sans-serif;padding: 3px; border: solid 1px; background-color: $options{'tooltipbgcolor'};"},$title); } - $action="javascript:submitItemStateChange('$action')" if $options{'useajax'}; $text .= $query->a({-onmouseover=>$onmouseover,-onmouseout=>$onmouseout,-id=>"CLP_A_$name$uetId",-href=>$action}, $linktext); } } else { @@ -769,6 +764,7 @@ return $text; } +# ========================= sub createHiddenDirectSelectionDiv { my ($id, $name, $state, $statesRef, $iconsRef) = @_; my $text =""; @@ -779,15 +775,16 @@ my ($s, $ic) = ($$statesRef[$i], $$iconsRef[$i]); my $action = &createAction($id, $name, $state, $s); my $title = &createTitle($name,$state,$statesRef, $s); - $action="javascript:submitItemStateChange('$action');" if $options{'useajax'}; + $action="javascript:submitItemStateChange('$action');clpTooltipHide('CLP_SM_DIV_$name$id');" if $options{'useajax'}; $text .= $query->div({-id=>"CLP_SM_TT_$name${id}_$i",-style=>"visibility:hidden;position:absolute;top:0;left:0;z-index:3;font: normal 8pt sans-serif;padding: 3px; border: solid 1px; background-color: $options{'tooltipbgcolor'};"},$title); $sl.=$query->a({ - -id=>"CLP_SM_A_$name${id}_$i", -href=>"$action", + -id=>"CLP_SM_A_$name${id}_$i", + -href=>"$action", -style=>'vertical-align:bottom;', -onmouseover=>"clpTooltipShow('CLP_SM_TT_$name${id}_$i','CLP_SM_IMG_$name${id}_$i',20,20);", - -onmouseout=>"clpTooltipHide('CLP_SM_TT_$name${id}_$i');" + -onmouseout=>"clpTooltipHide('CLP_SM_TT_$name${id}_$i');", }, - $query->img({-src=>&getImageSrc($ic),-id=>"CLP_SM_IMG_$name${id}_$i",-alt=>'',-border=>0, -style=>'vertical-align:bottom;cursor=move'})); + $query->img({-src=>&getImageSrc($ic),-id=>"CLP_SM_IMG_$name${id}_$i",-alt=>'',-border=>0, -style=>'vertical-align:bottom;cursor:move;'})); $sl.=' '; } @@ -885,7 +882,7 @@ my $states = ($name eq $n)?$options{'states'}:undef; $states = $namedDefaults{$n}{'states'} unless defined $states && $states ne ""; - $states = &TWiki::Func::getPluginPreferencesValue('STATES') unless defined $states && $states ne ""; + $states = &TWiki::Func::getPreferencesValue("\U$pluginName\E_STATES") unless defined $states && $states ne ""; $states = $globalDefaults{'states'} unless defined $states && $states ne ""; my $statesel = join ", ", (split /\|/, $states); $topicText.="\n"; Modified: twiki/branches/MAIN/twikiplugins/ChecklistPlugin/pub/TWiki/ChecklistPlugin/itemstatechange.js =================================================================== --- twiki/branches/MAIN/twikiplugins/ChecklistPlugin/pub/TWiki/ChecklistPlugin/itemstatechange.js 2007-01-30 13:00:50 UTC (rev 12652) +++ twiki/branches/MAIN/twikiplugins/ChecklistPlugin/pub/TWiki/ChecklistPlugin/itemstatechange.js 2007-01-30 13:21:23 UTC (rev 12653) @@ -64,8 +64,8 @@ var oldHref = clpStripId(e.href); var newHref = clpStripId(href); - if (oldHref==newHref) continue; e.style.cursor=clpCursorNormalStyle; + // if (oldHref==newHref) continue; self.changes.push(e.href); self.changesNew.push(href); @@ -169,8 +169,6 @@ while (e.hasChildNodes()) e.removeChild(e.firstChild); e.appendChild(document.createTextNode(text)); } - e = document.getElementById(prefix+"_A_"+id); - if (e) e.style.cursor=clpCursorInProgressStyle; } var clpSubmitItemStateChangeMutex = 0; @@ -179,7 +177,13 @@ clpSubmitItemStateChangeMutex++; var newStateChangeObject = new ClpStateChangeObject(url); clpStateChangeObjectArray.push(newStateChangeObject); - clpChangeDivText(clpGetIdFromUrl(url), clpInProgressDivText); + + var id = clpGetIdFromUrl(url); + var e = document.getElementById("CLP_A_"+id); + if (e) e.style.cursor=clpCursorInProgressStyle; + + clpChangeDivText("CLP", id, clpInProgressDivText); + if (clpStateChangeObjectArray.length==1) newStateChangeObject.clpDoIt(); clpSubmitItemStateChangeMutex--; } |