[# tag: ewok file edit page #]
[! do {
use File::Basename;
use Ewok::Config;
use Ewok::Authz qw(:common);
use Ewok::File qw(restrictCheck);
use Ewok::Util qw(:dir :error);
use Ewok::Locker;
} !]
[- do {
Execute({ inputfile => 'util.epl', import => 1 });
$req = shift;
@errors = ();
$web_file = $fdat{p};
($web_dir, $fs_dir, $wd, $filename) = webfsdir($req, $web_file, { errors => \@errors });
$fs_file = "$fs_dir$filename";
$authz = authzGetUserHash($req, $fs_file);
$meta = 0;
$Config = get_config();
if ($filename !~ m/$Config->{EWOK_NONMETA_RE}/i) {
$meta = 1;
$meta = $fdat{meta} if exists $fdat{meta};
}
$javascript = ! exists $req->{pref} || $req->{pref}->{javascript};
$rows = $req->{pref}->{edit_window_rows} || 25;
$cols = $req->{pref}->{edit_window_columns} || 80;
} -]
[$ if ($javascript) $]
[$ endif $]
ewok: edit [+ $web_file +]
[- do {
if (! @errors) {
if (! restrictCheck($req, 'edit', $fs_dir, [ $filename ],
{ errors => \@errors, web_dir => $web_dir, })) {
# Errors in @errors
}
elsif ($filename !~ m/$Config->{EWOK_EDIT_RE}/ &&
$filename !~ m/$Config->{EWOK_TEMPLATE_RE}/ &&
! $Config->{EWOK_RESTRICTED_OBJECTS}->{$filename}) {
info("Error: cannot edit '$filename'.", \@errors);;
}
elsif (($filename =~ m/$Config->{EWOK_EDIT_RE}/ && ! $authz->{$EDIT_PRIV}) ||
($filename =~ m/$Config->{EWOK_TEMPLATE_RE}/ && ! $authz->{$TMPL_PRIV})) {
info("Error: insufficient privileges to edit '$filename'.", \@errors);
}
elsif (! -r $fs_file) {
info("Error: cannot read '$filename'.", \@errors);
}
elsif (-l $fs_file) {
info("Error: cannot edit '$filename' - it's a link (try editing the target).",
\@errors);
}
else {
my $l = Ewok::Locker->new();
$l->lock($fs_file, $req->{user},
{ errors => \@errors, altfile => $web_file, op => 'edit' });
}
}
errors(\@errors) if @errors;
} -]
[$ if (! @errors) $]
Editing [+ $web_file +], status LOCKED.
Note: do NOT use your browser 'Back' key here or
the lock on this file will not be removed properly.
[#
[$ endif $]