[if !session admin] [or !session logged_in] [then] [set ui_error]Must be logged in as admin.[/set] [bounce page="__UI_BASE__/error"] [/then] [/if] [perl] my @filters = grep /^ui_filter:/, keys %$CGI; foreach my $key (@filters) { my $val = delete $CGI->{$key}; $key =~ s/ui_filter://; next unless $val; next unless defined $CGI->{$key}; $CGI->{$key} = $Tag->filter($val, $CGI->{$key}, $key); } 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]'; } my $def_string; if($CGI->{ui_save_t_in_page}) { $def_string = $CGI->{ui_definition}; } else { $def_string = $CGI->{ui_short_definition}; } if (@layout) { $def_string =~ s/\r\n?/\n/g; unshift @layout, '[' . "comment]\n$def_string\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"); if (@out) { push @out, ''; $contents = join ("\n", @out); } else { $contents = $CGI->{ui_content}; } $contents =~ s/^\n?//i; $contents =~ s/\n*$//i; $contents =~ s/\r//g; unless ($Tag->write_relative_file($page, $contents)) { $Scratch->{ui_error} = "Couldn't save page $page."; } $Scratch->{ui_output_page} = $page; return; [/perl] [bounce page="__UI_BASE__/page"]