[! use Ewok::Meta qw(:all); use Ewok::Metamap qw(getMap checkType); use Ewok::Authz qw(:common); use Ewok::Util qw(info); !][- $debug = 0; $req = shift; $zone = $fdat{z}; $dir = $fdat{d}; $name = "\u$dir"; $verb = $ENV{SCRIPT_NAME}; $verb =~ s|^.*/([^/]+)\.html?|\u$1|o; $zmap = { news => { dir => '/etools/news/', title => "\u$verb news item", item => 'news item', acknowledge => 'Thanks, your news item has been submitted.', alert_subject => 'News item pending', alert_uri => 'http://ewok.corp.ot/etools/news/pending', }, weblog => { dir => '/etools/weblog/', title => "Weblog entry for $name", item => 'weblog entry', # alert => 'gavinc@ot.com.au', template => "$dir-%s-%06d.html", labels => 0, }, }; undef $zone unless exists $zmap{$zone}; if (!$zone) { # Try and derive the zone from the script name for my $z (keys %$zmap) { if ($ENV{SCRIPT_NAME} =~ m/^$zmap->{$z}->{dir}/) { $zone = $z; } } } if ($zone) { $web_file = $ENV{SCRIPT_NAME}; ($web_dir = $web_file) =~ s|/[^/]+$|/|o; $fs_file = $ENV{SCRIPT_FILENAME}; ($fs_dir = $fs_file) =~ s|/[^/]+$|/|o; $fs_dir .= '/' if substr($fs_dir,-1) ne '/'; if ($dir) { if (-d "$fs_dir$dir") { $web_dir .= $dir; $fs_dir .= $dir; } else { info("Error: invalid directory '$dir'.", \@errors); } } $web_dir .= '/' if substr($web_dir,-1) ne '/'; $fs_dir .= '/' if substr($fs_dir,-1) ne '/'; $authz = authzGetUserHash($req, $fs_file); $referer = $fdat{referer} || $ENV{HTTP_REFERER} || '/ewok/fm.html'; $op = $fdat{op}; # Initialisations $metamap = undef; $show = 0; # Create alerts @alert = (); push @alert, split(/\s*,\s*/, $req->{dir}->{create_alert}); push @alert, split(/\s*,\s*/, $zmap->{$zone}->{alert}); } else { info("Error: unknown zone '$zone'.", \@errors); } -]
zone: [+ $zone +] fs_dir: [+ $fs_dir +] web_dir: [+ $web_dir +] alert: [+ join ',',@alert +][$ endif $] [$ sub showErrors $][- $errors = shift; -]
[+ $escmode = 0; join("
\n", @$errors) +]
[+ $zmap->{$zone}->{acknowledge} +]
[$ elsif ($referer) $] [- $http_headers_out{Location} = $referer; -] [$ endif $] [$ endif $][$ endif $] [# Else $op not Cancel or Create #][$ else $][- $show = 1 -][$ endif $] [# Metadata page #][$ if ($show) $][- if (! defined $metamap) { ($metamap, $keys) = getMap($fs_file, { create => 1 }); } -] [$ if (! defined $metamap) $][- info("Error: loading metadata template for '$web_file' failed.", \@errors); showErrors \@errors; -][$ else $] [$ if (! exists $zmap->{$zone}->{labels} || $zmap->{$zone}->{labels}) $]Fields labelled in Blue are mandatory.
[$ endif $] [- showErrors \@errors if @errors -] [$ endif $][$ endif $] [# arch-tag: 24d03d73-1fa6-4bab-9342-ac0222403a42 #]