Index: lib/TWiki/Form.pm =================================================================== RCS file: /e/www/CVS/twiki-cairo/lib/TWiki/Form.pm,v retrieving revision 1.1 retrieving revision 1.1.12.4 diff -c -r1.1 -r1.1.12.4 *** lib/TWiki/Form.pm 7 Sep 2004 17:16:58 -0000 1.1 --- lib/TWiki/Form.pm 3 Feb 2005 03:48:34 -0000 1.1.12.4 *************** *** 296,309 **** { my( $web, $topic, $form, $meta, $query, $getValuesFromFormTopic, @fieldsInfo ) = @_; - my $chooseForm = ""; - if( TWiki::Prefs::getPreferencesValue( "WEBFORMS", "$web" ) ) { - $chooseForm = chooseFormButton( "Replace form..." ); - } - # FIXME could do with some of this being in template my $text = "
\n " . ! _link( $web, $form, "", "h", "", 2, $chooseForm ) . "\n"; fieldVars2Meta( $web, $query, $meta, "override" ); --- 296,304 ---- { my( $web, $topic, $form, $meta, $query, $getValuesFromFormTopic, @fieldsInfo ) = @_; # FIXME could do with some of this being in template my $text = "
\n " . ! _link( $web, $form, "", "h", "", 2, "" ) . "\n"; fieldVars2Meta( $web, $query, $meta, "override" ); *************** *** 607,612 **** --- 602,613 ---- } $formName = "" if( !$formName || $formName eq "none" ); + $listForms = TWiki::Prefs::getPreferencesValue( "WEBFLOWS", "$theWeb" ); + $listForms =~ s/^\s*//go; + $listForms =~ s/\s*$//go; + my @flows = split( /\s*,\s*/, $listForms ); + # unshift @flows, ""; + my $formList = ""; foreach my $form ( @forms ) { my $selected = ( $form eq $formName ) ? 'checked="checked"' : ""; *************** *** 615,620 **** --- 616,626 ---- my $value = $form ? $form : "none"; $formList .= " $show"; } + foreach my $form ( @flows ) { + my $selected = ( $form eq $formName ) ? 'checked="checked"' : ""; + $formList .= "\n
" if( $formList ); + $formList .= " $form (WebFlow)"; + } $tmpl =~ s/%FORMLIST%/$formList/go; my $parent = $theQuery->param( 'topicparent' ) || ""; *************** *** 801,805 **** return $text; } ! 1; --- 807,1021 ---- return $text; } ! ! # ========================= ! # ! # Begin WebFlow specific functions ! ! # ========================= ! # webFlowChangeState ! # ! sub webFlowChangeState { ! my ($web, $topic, $query, $curform, $template) = @_; ! # Note: The current state is defined by the form that is displayed ! # and passed in ! ! # Get plugin state machine ! ! if( $template =~ /^(.*)\.(.*)$/ ) { ! $web = $1; ! $template = $2; ! } ! ! my @actions = findAction( $query, $web, $template, $curform ); ! my $nextlabel = $actions[0]; ! my $ret = ""; ! if ($nextlabel) { ! if ( $#actions > 0) { ! $ret = ""; ! return $ret; ! } else { ! return ""; ! } ! } else { ! return ""; ! } ! } ! ! sub changeFormFromFlow { ! my ( $webName, $topic, $query, $action ) = @_; ! $action =~ s/^\s*//go; ! $action =~ s/\s*$//go; ! ! my $url = &TWiki::getScriptUrl ( $webName, $topic, "edit" ) ; ! $url .= "\?flowaction=$action"; ! ! TWiki::redirect ( $query, $url ); ! return; ! } ! ! # ========================= ! ! sub makeTransition { ! my ( $webName, $topic, $query, $action ) = @_; ! ! # find current form ! my( $meta, $tmp ) = &TWiki::Store::readTopic( $webName, $topic ); ! my $formName = $query->param( 'formtemplate' ) || ""; ! if( ! $formName ) { ! my %form = $meta->findOne( "FORM" ); ! $formName = $form{"name"}; ! } ! $formName = "" if( !$formName || $formName eq "none" ); ! ! # Get state machine ! my %args = $meta->findOne( "FLOW" ); ! my $template = $args{"name"}; ! ! my $web; ! if( $template =~ /^(.*)\.(.*)$/ ) { ! $web = $1; ! $template = $2; ! } ! ! return findAction( $query, $web, $template, $formName, $action ); ! } ! ! sub findWebFlow { ! my ( $webName, $flowTemplate ) = @_; ! my ( $formTemplate, $nextState ); ! # Read topic that defines the statemachine ! if( &TWiki::Store::topicExists( $webName, $flowTemplate ) ) { ! my( $meta, $text ) = &TWiki::Store::readTopic( $webName, $flowTemplate ); ! my $inBlock = 0; ! # | *Current form* | *Next form* | *Next state* | *Action* | ! foreach( split( /\n/, $text ) ) { ! if( /^\s*\|.*Current form[^|]*\|.*Next form[^|]*\|.*Next state[^|]*\|.*Action[^|]*\|/ ) { ! $inBlock = 1; ! } else { ! # Only insist on first field being present ! # FIXME - use oops page instead? ! if( $inBlock && s/^\s*\|//o ) { ! my( $cur, $next, $state, $act ) = split( /\|/ ); ! # And cleanup the entries ! $cur =~ s/^\s*//go; ! $cur =~ s/\s*$//go; ! $cur = _cleanField( $cur ); ! $next =~ s/^\s*//go; ! $next =~ s/\s*$//go; ! $next = _cleanField( $next ); ! $state =~ s/^\s*//go; ! $state =~ s/\s*$//go; ! $act =~ s/^\s*//go; ! $act =~ s/\s*$//go; ! # FIXME object if too short ! ! # Initial state has empty $cur ! if (!$cur) { ! $formTemplate = $next; ! $nextState = $state; ! last; ! } ! } else { ! $inBlock = 0; ! } ! } ! } ! } else { ! # FIXME - do what if there is an error? ! } ! return ( $formTemplate, $nextState ); ! } ! ! sub findAction { ! my ( $query, $web, $template, $formName, $action ) = @_; ! my ($nextForm, $nextState); ! my $thePathInfo = $query->path_info(); ! my $theRemoteUser = $query->remote_user(); ! my $theTopic = $query->param( 'topic' ) || ""; ! my $theUrl = $query->url; ! my( $topic, $webName, $dummy, $userName ) = ! &TWiki::initialize( $thePathInfo, $theRemoteUser, $theTopic, $theUrl, $query ); ! ! my @actions = (); ! if( &TWiki::Store::topicExists( $web, $template ) ) { ! my( $meta, $text ) = &TWiki::Store::readTopic( $web, $template ); ! ! my $inBlock = 0; ! # | *Current form* | *Next form* | *Next state* | *Action* | ! foreach( split( /\n/, $text ) ) { ! if( /^\s*\|.*Current form[^|]*\|.*Next form[^|]*\|.*Next state[^|]*\|.*Action[^|]*\|/ ) { ! $inBlock = 1; ! } else { ! # Only insist on first field being present ! # FIXME - use oops page instead? ! if( $inBlock && s/^\s*\|//o ) { ! my( $cur, $next, $state, $act, $allow ) = split( /\|/ ); ! # And cleanup the entries ! $cur =~ s/^\s*//go; ! $cur =~ s/\s*$//go; ! $cur = _cleanField( $cur ); ! $next =~ s/^\s*//go; ! $next =~ s/\s*$//go; ! $next = _cleanField( $next ); ! $state =~ s/^\s*//go; ! $state =~ s/\s*$//go; ! $act =~ s/^\s*//go; ! $act =~ s/\s*$//go; ! # FIXME object if too short ! ! # Find the current state x action pair ! if (($cur eq $formName)&&($action?($act eq $action):1)) { ! # Ensure user is allowed to perform action ! my $allowChange = 0; ! $allow =~ s/^\s*//go; ! $allow =~ s/\s*$//go; ! if ($allow) { ! my @allowed = split(/\s*\,\s*/, $allow); ! # no button if the user is not allowed to execute transitions ! my $wikiName = TWiki::userToWikiName( $userName, 1 ); # i.e. "JonDoe" ! foreach my $name (@allowed) { ! $name =~ s/^\s*//go; ! $name =~ s/\s*$//go; ! $name = _cleanField( $name ); ! $name =~ s/$TWiki::mainWebname\.(.*)/$1/; ! if (&TWiki::Access::userIsInGroup($wikiName, $name)) { ! $allowChange = 1; ! last; ! } ! } ! } else { ! $allowChange = 1; ! } ! if ($allowChange) { ! if ($action) { ! $nextForm = $next; ! $nextState = $state; ! last; ! } else { ! push @actions, $act; ! } ! } ! } ! ! } else { ! $inBlock = 0; ! } ! } ! } ! ! } else { ! # FIXME - do what if there is an error? ! } ! if ($action) { ! return ($nextForm, $nextState); ! } else { ! return @actions; ! } ! } ! 1; Index: lib/TWiki/UI/Edit.pm =================================================================== RCS file: /e/www/CVS/twiki-cairo/lib/TWiki/UI/Edit.pm,v retrieving revision 1.2 retrieving revision 1.2.12.2 diff -c -r1.2 -r1.2.12.2 *** lib/TWiki/UI/Edit.pm 26 Dec 2004 12:38:29 -0000 1.2 --- lib/TWiki/UI/Edit.pm 31 Jan 2005 04:46:26 -0000 1.2.12.2 *************** *** 58,63 **** --- 58,65 ---- my $onlyNewTopic = $query->param( 'onlynewtopic' ) || ""; my $formTemplate = $query->param( "formtemplate" ) || ""; my $templateTopic = $query->param( "templatetopic" ) || ""; + my $action = $query->param( "flowaction" ) || ""; + # apptype is undocumented legacy my $cgiAppType = $query->param( 'contenttype' ) || $query->param( 'apptype' ) || "text/html"; my $skin = $query->param( "skin" ); *************** *** 118,125 **** --- 120,136 ---- } &TWiki::Store::lockTopic( $topic ); + my $flowTemplate = ""; + if ($formTemplate =~ /^flow\./) { + $formTemplate =~ s/^flow\.//go; + $flowTemplate = $formTemplate; + $formTemplate = ""; + } my $templateWeb = $webName; + my $nextState; + ($formTemplate, $nextState) = TWiki::Form::makeTransition( $webName, $topic, $query, $action ) if $action; + # Get edit template, standard or a different skin $skin = TWiki::Prefs::getPreferencesValue( "SKIN" ) unless ( $skin ); $tmpl = &TWiki::Store::readTemplate( "edit", $skin ); *************** *** 138,143 **** --- 149,163 ---- } $extra = "(not exist)"; + # If webflow is requested, associate it + if( $flowTemplate ) { + my @args = ( name => $flowTemplate ); + $meta->remove( "FLOW" ); + $meta->put( "FLOW", @args ); + # Read topic that defines the statemachine + ( $formTemplate, $nextState ) = TWiki::Form::findWebFlow( $webName, $flowTemplate ); + } + # If present, instantiate form if( ! $formTemplate ) { my %args = $meta->findOne( "FORM" ); *************** *** 161,166 **** --- 181,196 ---- } $tmpl =~ s/%TOPICPARENT%/$theParent/; + # If webflow is requested, associate it + if( $flowTemplate ) { + my @args = ( name => $flowTemplate ); + $meta->remove( "FLOW" ); + $meta->put( "FLOW", @args ); + # Read topic that defines the statemachine + ( $formTemplate, $nextState ) = TWiki::Form::findWebFlow( $webName, $flowTemplate ); + # Read topic that defines the statemachine + } + # Processing of formtemplate - comes directly from query parameter formtemplate , # or indirectly from webtopictemplate parameter. my $oldargsr; *************** *** 212,239 **** # Don't want to render form fields, so this after getRenderedVersion my %formMeta = $meta->findOne( "FORM" ); my $form = ""; $form = $formMeta{"name"} if( %formMeta ); if( $form && $saveCmd ne "repRev" ) { my @fieldDefs = &TWiki::Form::getFormDef( $templateWeb, $form ); if( ! @fieldDefs ) { TWiki::UI::oops( $webName, $topic, "noformdef" ); return; } my $formText = &TWiki::Form::renderForEdit( $webName, $topic, $form, $meta, $query, $getValuesFromFormTopic, @fieldDefs ); $tmpl =~ s/%FORMFIELDS%/$formText/go; } elsif( $saveCmd ne "repRev" && TWiki::Prefs::getPreferencesValue( "WEBFORMS", $webName )) { ! # follows a hybrid html monster to let the 'choose form button' align at ! # the right of the page in all browsers ! $form = '
' ! . &TWiki::Form::chooseFormButton( "Add form" ) ! . '
'; $tmpl =~ s/%FORMFIELDS%/$form/go; } else { $tmpl =~ s/%FORMFIELDS%//go; } $tmpl =~ s/%FORMTEMPLATE%//go; # Clear if not being used $tmpl =~ s/%TEXT%/$text/go; $tmpl =~ s/( ?) *<\/?(nop|noautolink)\/?>\n?/$1/gois; # remove and tags --- 242,315 ---- # Don't want to render form fields, so this after getRenderedVersion my %formMeta = $meta->findOne( "FORM" ); my $form = ""; + my $formlabel = ""; $form = $formMeta{"name"} if( %formMeta ); if( $form && $saveCmd ne "repRev" ) { + $formlabel = "Change form"; my @fieldDefs = &TWiki::Form::getFormDef( $templateWeb, $form ); if( ! @fieldDefs ) { TWiki::UI::oops( $webName, $topic, "noformdef" ); return; } + + if ($nextState) { + # Update the state (held in $nextState) + foreach my $fieldInfop ( @fieldDefs ) { + my @fieldInfo = @$fieldInfop; + my $fieldName = shift @fieldInfo; + next unless ($fieldName eq "State"); + my $title = shift @fieldInfo; + $meta->put( "FIELD", ( "name" => "State", "title" => $title, "value" => $nextState ) ); + last; + } + # Record history of state change, could also make a table in the form + foreach my $fieldInfop ( @fieldDefs ) { + my @fieldInfo = @$fieldInfop; + my $fieldName = shift @fieldInfo; + next unless ($fieldName eq "History"); + my $title = shift @fieldInfo; + my %field = $meta->findOne( "FIELD", "History" ); + my $value = $field{"value"}; + my $todaysdate = &TWiki::handleTime("\$day \$month \$year","gmtime"); + $value .= "
" if $value; + $value .= "$nextState --- $wikiUserName, $todaysdate"; + $meta->put( "FIELD", ( "name" => "History", "title" => $title, "value" => $value ) ); + last; + } + } + my $formText = &TWiki::Form::renderForEdit( $webName, $topic, $form, $meta, $query, $getValuesFromFormTopic, @fieldDefs ); $tmpl =~ s/%FORMFIELDS%/$formText/go; } elsif( $saveCmd ne "repRev" && TWiki::Prefs::getPreferencesValue( "WEBFORMS", $webName )) { ! $formlabel = "Add form"; $tmpl =~ s/%FORMFIELDS%/$form/go; } else { $tmpl =~ s/%FORMFIELDS%//go; } $tmpl =~ s/%FORMTEMPLATE%//go; # Clear if not being used + my %args = $meta->findOne( "FLOW" ); + my $flowtemplate = $args{"name"} || ""; + $tmpl =~ s/%FLOW%/$flowtemplate/go; + if ($flowtemplate) { + $form = '
' + . &TWiki::Form::webFlowChangeState($webName, $topic, $query, $formMeta{"name"}, $flowtemplate) + . '
'; + $tmpl =~ s/%FORMEDIT%/$form/go; + } else { + if ($formlabel) { + # Note that this construction puts the label out on the right edge, not + # in line with the other labels + $form = '
' + . &TWiki::Form::chooseFormButton( $formlabel ) + . '
'; + $tmpl =~ s/%FORMEDIT%/$form/go; + } else { + $tmpl =~ s/%FORMEDIT%//go; + } + } + $tmpl =~ s/%TEXT%/$text/go; $tmpl =~ s/( ?) *<\/?(nop|noautolink)\/?>\n?/$1/gois; # remove and tags Index: lib/TWiki/UI/Preview.pm =================================================================== RCS file: /e/www/CVS/twiki-cairo/lib/TWiki/UI/Preview.pm,v retrieving revision 1.1 retrieving revision 1.1.12.3 diff -c -r1.1 -r1.1.12.3 *** lib/TWiki/UI/Preview.pm 7 Sep 2004 17:16:58 -0000 1.1 --- lib/TWiki/UI/Preview.pm 3 Feb 2005 03:48:34 -0000 1.1.12.3 *************** *** 23,29 **** my ( $webName, $topic, $userName, $query ) = @_; my $skin = $query->param( "skin" ); ! my $changeform = $query->param( 'submitChangeForm' ) || ""; my $dontNotify = $query->param( "dontnotify" ) || ""; my $saveCmd = $query->param( "cmd" ) || ""; my $theParent = $query->param( 'topicparent' ) || ""; --- 23,29 ---- my ( $webName, $topic, $userName, $query ) = @_; my $skin = $query->param( "skin" ); ! my $changeform = $query->param( 'changeState' ) || ""; my $dontNotify = $query->param( "dontnotify" ) || ""; my $saveCmd = $query->param( "cmd" ) || ""; my $theParent = $query->param( 'topicparent' ) || ""; *************** *** 49,55 **** # Is user looking to change the form used? Sits oddly in preview, but # to avoid Javascript and pick up text on edit page it has to be in preview. if( $changeform ) { ! &TWiki::Form::changeForm( $webName, $topic, $query ); return; } --- 49,62 ---- # Is user looking to change the form used? Sits oddly in preview, but # to avoid Javascript and pick up text on edit page it has to be in preview. if( $changeform ) { ! my $action = $query->param( 'flowaction' ) || ""; ! if ($action) { ! # Could remove the form button by expanding it dynamically ! # in edit script like %FORMEDIT% ! &TWiki::Form::changeFormFromFlow( $webName, $topic, $query, $action ); ! } else { ! &TWiki::Form::changeForm( $webName, $topic, $query ); ! } return; } *************** *** 74,79 **** --- 81,94 ---- } $tmpl =~ s/%TOPICPARENT%/$theParent/go; + # flow table + my $theFlow = $query->param( 'flow' ) || ""; + if( $theFlow ) { + $tmpl =~ s/%FLOW%/$theFlow/go; + $meta->put( "FLOW", ( "name" => $theFlow ) ); + } + $tmpl =~ s/%FLOW%/$theFlow/; + if( $formTemplate ) { $meta->remove( "FORM" ); $meta->put( "FORM", ( name => $formTemplate ) ) if( $formTemplate ne "none" ); *************** *** 85,91 **** # get the edited text and combine text, form and attachments for preview &TWiki::Form::fieldVars2Meta( $webName, $query, $meta ); $text = $textparam; ! if( ! $text ) { # empty topic not allowed TWiki::UI::oops( $webName, $topic, "empty" ); return; --- 100,108 ---- # get the edited text and combine text, form and attachments for preview &TWiki::Form::fieldVars2Meta( $webName, $query, $meta ); $text = $textparam; ! # Move to configuration or preference ! my $disallowEmptyText = 0; ! if( (! $text) && $disallowEmptyText ) { # empty topic not allowed TWiki::UI::oops( $webName, $topic, "empty" ); return; Index: lib/TWiki/UI/Save.pm =================================================================== RCS file: /e/www/CVS/twiki-cairo/lib/TWiki/UI/Save.pm,v retrieving revision 1.2 retrieving revision 1.2.12.3 diff -c -r1.2 -r1.2.12.3 *** lib/TWiki/UI/Save.pm 26 Dec 2004 12:38:29 -0000 1.2 --- lib/TWiki/UI/Save.pm 3 Feb 2005 03:48:34 -0000 1.2.12.3 *************** *** 79,84 **** --- 79,85 ---- my $onlyWikiName = $query->param( 'onlywikiname' ) || ""; my $onlyNewTopic = $query->param( 'onlynewtopic' ) || ""; my $formTemplate = $query->param( "formtemplate" ); + my $theFlow = $query->param( 'flow' ) || ""; my $topicExists = TWiki::Store::topicExists( $webName, $topic ); *************** *** 145,150 **** --- 146,156 ---- $meta->put( "TOPICPARENT", ( "name" => $theParent ) ); } + # flow table + if( $theFlow ) { + $meta->put( "FLOW", ( "name" => $theFlow ) ); + } + if( $formTemplate ) { $meta->remove( "FORM" ); $meta->put( "FORM", ( name => $formTemplate ) ) if( $formTemplate ne "none" ); *************** *** 186,191 **** --- 192,203 ---- my( $webName, $topic, $userName, $query ) = @_; my $redirecturl = TWiki::getViewUrl( TWiki::Store::normalizeWebTopicName($webName, $topic)); + my $changeState = $query->param( 'changeState' ); + if ($changeState) { + # State transition + TWiki::UI::Preview::preview( $webName, $topic, $userName, $query ); + return; + } my $saveaction = lc($query->param( 'action' )); if ( $saveaction eq "checkpoint" ) { Index: templates/changeform.pattern.tmpl =================================================================== RCS file: /e/www/CVS/twiki-cairo/templates/changeform.pattern.tmpl,v retrieving revision 1.1 retrieving revision 1.1.14.1 diff -c -r1.1 -r1.1.14.1 *** templates/changeform.pattern.tmpl 7 Sep 2004 17:17:04 -0000 1.1 --- templates/changeform.pattern.tmpl 31 Jan 2005 04:46:26 -0000 1.1.14.1 *************** *** 36,41 **** --- 36,42 ---- %FORMLIST% + * Existing form data will be lost! (still available in old version) Index: templates/changeform.tmpl =================================================================== RCS file: /e/www/CVS/twiki-cairo/templates/changeform.tmpl,v retrieving revision 1.1 retrieving revision 1.1.14.1 diff -c -r1.1 -r1.1.14.1 *** templates/changeform.tmpl 7 Sep 2004 17:17:04 -0000 1.1 --- templates/changeform.tmpl 31 Jan 2005 04:46:26 -0000 1.1.14.1 *************** *** 18,23 **** --- 18,24 ----     + ---+++ _Notes:_ * Existing form data will be lost! (still available in old version) Index: templates/edit.iejs.tmpl =================================================================== RCS file: /e/www/CVS/twiki-cairo/templates/edit.iejs.tmpl,v retrieving revision 1.1 retrieving revision 1.1.12.1 diff -c -r1.1 -r1.1.12.1 *** templates/edit.iejs.tmpl 7 Sep 2004 17:17:04 -0000 1.1 --- templates/edit.iejs.tmpl 31 Jan 2005 02:34:56 -0000 1.1.12.1 *************** *** 1,5 **** %TMPL:INCLUDE{"twiki"}% ! %TMPL:DEF{"topicaction"}% %SEP% Cancel edit %TMPL:END% %TMPL:DEF{"footernote"}%
--- 1,5 ---- %TMPL:INCLUDE{"twiki"}% ! %TMPL:DEF{"topicaction"}% %FORMEDIT% %SEP% Cancel edit %TMPL:END% %TMPL:DEF{"footernote"}%
Index: templates/edit.pattern.tmpl =================================================================== RCS file: /e/www/CVS/twiki-cairo/templates/edit.pattern.tmpl,v retrieving revision 1.1 retrieving revision 1.1.12.2 diff -c -r1.1 -r1.1.12.2 *** templates/edit.pattern.tmpl 7 Sep 2004 17:17:04 -0000 1.1 --- templates/edit.pattern.tmpl 31 Jan 2005 04:46:26 -0000 1.1.12.2 *************** *** 88,94 **** ! %TMPL:DEF{"topicaction"}% --- 88,94 ---- ! %TMPL:DEF{"topicaction"}%%FORMEDIT%
Access keys: C = Cancel, K = Checkpoint, Q = Quiet Save, S = Save, P = Preview
*************** *** 116,121 **** --- 116,122 ----
%FORMFIELDS% + %TMPL:P{"topicaction"}%
%INCLUDE{"%TWIKIWEB%.WikiSyntaxSummary"}%
%TMPL:END% Index: templates/edit.tmpl =================================================================== RCS file: /e/www/CVS/twiki-cairo/templates/edit.tmpl,v retrieving revision 1.1 retrieving revision 1.1.12.2 diff -c -r1.1 -r1.1.12.2 *** templates/edit.tmpl 7 Sep 2004 17:17:04 -0000 1.1 --- templates/edit.tmpl 31 Jan 2005 04:46:26 -0000 1.1.12.2 *************** *** 80,86 **** %TMPL:P{"sep"}% ! %TMPL:END% %TMPL:DEF{"titleaction"}%(edit) %TMPL:END% %TMPL:DEF{"titlehelp"}% %TMPL:END% %TMPL:DEF{"webaction"}%Change topic%TMPL:END% --- 80,87 ---- %TMPL:P{"sep"}% ! %TMPL:P{"sep"}% ! %FORMEDIT%%TMPL:END% %TMPL:DEF{"titleaction"}%(edit) %TMPL:END% %TMPL:DEF{"titlehelp"}% %TMPL:END% %TMPL:DEF{"webaction"}%Change topic%TMPL:END% *************** *** 102,107 **** --- 103,109 ----
Access keys: C = Cancel, K = Checkpoint, Q = Quiet Save, S = Save, P = Preview
%FORMFIELDS% + %TMPL:P{"standardfooter"}% #PageBottom Index: templates/preview.pattern.tmpl =================================================================== RCS file: /e/www/CVS/twiki-cairo/templates/preview.pattern.tmpl,v retrieving revision 1.1 retrieving revision 1.1.14.1 diff -c -r1.1 -r1.1.14.1 *** templates/preview.pattern.tmpl 7 Sep 2004 17:17:05 -0000 1.1 --- templates/preview.pattern.tmpl 31 Jan 2005 04:46:26 -0000 1.1.14.1 *************** *** 80,85 **** --- 80,86 ----
+ Index: templates/preview.tmpl =================================================================== RCS file: /e/www/CVS/twiki-cairo/templates/preview.tmpl,v retrieving revision 1.1 retrieving revision 1.1.14.1 diff -c -r1.1 -r1.1.14.1 *** templates/preview.tmpl 7 Sep 2004 17:17:05 -0000 1.1 --- templates/preview.tmpl 31 Jan 2005 04:46:26 -0000 1.1.14.1 *************** *** 44,49 **** --- 44,50 ---- %META{"attachments"}% +