[perl] if(! $CGI->{ui_elements}) { $CGI->{ui_template} = $Tag->filter('filesafe', $CGI->{ui_template}); $CGI->{ui_elements} = $Tag->read_ui_template( { file => $CGI->{ui_template}, element => 'ui_template_layout', }); #Log("elements: $CGI->{ui_elements}"); } @layout = split /[\0\s,]+/, $CGI->{ui_elements}; @insert = split /\0/, ($CGI->{ui_content} || 'Page content.'); for(keys %{$CGI}) { next unless /^ui_control_(.*)/; my $k = $1; unshift @layout, "[set $k]" . $CGI->{$_} . '[/set]'; } if($CGI->{ui_definition}) { unshift @layout, '[' . "comment]\n" . $CGI->{ui_definition} . "\n[" . "/comment]\n"; } foreach $one (@layout) { if( $one eq 'UI_CONTENT') { my $content = shift @insert; $content =~ s/\r?\n/\n/g; $content = "\n\n$content\n\n"; #Log("inserting $content"); push @out, $content; } elsif ($one =~ /^[A-Z]\w+$/) { push @out, '__' . $one . '__'; #Log("inserted variable $one"); } else { push @out, $one; #Log("inserted set $one"); } } my $page = $Tag->filter('filesafe', $CGI->{ui_page}); if( ! $page) { $Scratch->{ui_error} = "No page name given."; $Tag->bounce('__UI_BASE__/error'); return; } $page = "pages/$page" if $page !~ m{^pages/}; $page .= $Config->{HTMLsuffix} unless $page =~ /$Config->{HTMLsuffix}$/; #Log("final page=$page"); $Tag->write_relative_file($page, (join "\n", @out)); $Scratch->{ui_output_page} = $page; return; [/perl] [bounce page="__UI_BASE__/page"]