Index: TWiki.pm =================================================================== RCS file: /d/www/CVS/twiki/lib/TWiki.pm,v retrieving revision 1.4 retrieving revision 1.6 diff -c -r1.4 -r1.6 *** TWiki.pm 4 Feb 2004 21:17:46 -0000 1.4 --- TWiki.pm 5 Feb 2004 13:22:57 -0000 1.6 *************** *** 2019,2024 **** --- 2019,2025 ---- my( $theWeb, $theTopic, $text, $meta, $isTopRev ) = @_; $text =~ s/%META{\s*"form"\s*}%/&renderFormData( $theWeb, $theTopic, $meta )/ge; + $text =~ s/%META{\s*"formtemplate=([^"]*)"\s*}%/&renderAltFormData( $1, $theWeb, $theTopic, $meta )/ge; $text =~ s/%META{\s*"attachments"\s*(.*)}%/&TWiki::Attach::renderMetaData( $theWeb, $theTopic, $meta, $1, $isTopRev )/ge; $text =~ s/%META{\s*"moved"\s*}%/&renderMoved( $theWeb, $theTopic, $meta )/ge; *************** *** 2194,2199 **** --- 2195,2233 ---- } return $metaText; + } + + # ========================= + sub renderAltFormData + { + my( $template, $web, $topic, $meta ) = @_; + + my ($notused, $text) = ""; + + my $topicExists = &TWiki::Store::topicExists( $web, $template ); + if( $topicExists ) { + ( $notused, $text ) = &TWiki::Store::readTopic( $web, $template ); + } else { + TWiki::writeDebug("TWiki::renderAltFormData: no template"); + my $url = &TWiki::getOopsUrl( $web, $topic, "oopsnoformdef" ); + TWiki::redirect( $cgiQuery, $url ); + return; + } + + my %form = $meta->findOne( "FORM" ); + if( %form ) { + + my @fields = $meta->find( "FIELD" ); + foreach my $field ( @fields ) { + my $title = $field->{"name"}; + my $value = $field->{"value"}; + $text =~ s/%META{\s*"formfield"\s*name\s*=\s*"$title"\s*}%/$value/g; + } + + $text = getRenderedVersion( $text, $web ); + } + + return $text; } # =========================