Wizard
view release on metacpan or search on metacpan
lib/Wizard/Examples/Apache/Directory.pm view on Meta::CPAN
my $self = shift;
return $self->SUPER::init(1) unless shift;
my $item = $self->{'directory'} || die "Missing directory";
($self->SUPER::init(1), $item);
}
sub _superFileDir {
Wizard::Examples::Apache::Host::getFileDir(shift, shift,
'Wizard::Examples::Apache::VirtualServer');
}
sub ShowMe {
my ($self, $wiz, $dir) = @_;
(['Wizard::Elem::Title',
'value' => $dir->CreateMe() ?
'Apache Wizard: Create directory configuration' :
'Apache Wizard: Edit an existing directory configuration'],
['Wizard::Elem::Text', 'name' => 'apache-directory-pathname',
'value' => $dir->{'apache-directory-pathname'} || '/tmp',
'descr' => 'Directory pathname (root is the virtualserver root)'],
['Wizard::Elem::Text', 'name' => 'apache-directory-redirecturl',
'value' => $dir->{'apache-directory-redirecturl'} || '',
'descr' => 'Directory redirect url (if any)' ],
['Wizard::Elem::Text', 'name' => 'apache-directory-user',
'value' => $dir->{'apache-directory-user'} || 'www',
'descr' => 'User who owns that directory'],
['Wizard::Elem::Text', 'name' => 'apache-directory-group',
'value' => $dir->{'apache-directory-group'} || 'www',
'descr' => 'Group that owns that directory'],
['Wizard::Elem::BR'],
['Wizard::Elem::Submit', 'name' => 'Action_DirectorySave',
'value' => 'Save these settings', 'id' => 1],
['Wizard::Elem::Submit', 'value' => 'Return to Directory Menu',
'name' => 'Wizard::Examples::Apache::VirtualServer::Action_Reset',
'id' => 94],
['Wizard::Elem::Submit', 'value' => 'Return to Virtual WWW Server Menu',
'name' => 'Wizard::Examples::Apache::VirtualServer::Action_Reset',
'id' => 95],
['Wizard::Elem::Submit', 'value' => 'Return to Server Menu',
'name' => 'Wizard::Examples::Apache::Server::Action_Reset',
'id' => 96],
['Wizard::Elem::Submit', 'value' => 'Return to Host Menu',
'name' => 'Wizard::Examples::Apache::Host::Action_Reset',
'id' => 97],
['Wizard::Elem::Submit', 'value' => 'Return to Top Menu',
'name' => 'Wizard::Examples::Apache::Action_Reset',
'id' => 98],
['Wizard::Elem::Submit', 'value' => 'Exit Apache Wizard',
'id' => 99]);
}
sub Action_Enter {
my($self, $wiz) = @_;
$self->SUPER::Load($wiz, 'Wizard::Examples::Apache::VirtualServer');
$self->Action_Reset($wiz);
}
sub Action_Reset {
my($self, $wiz) = @_;
my($prefs, $basedir, $host, $server, $vserver) = $self->init();
delete $self->{'directory'};
$self->Store($wiz);
(['Wizard::Elem::Title', 'value' => 'Apache Wizard Directory Configuration Menu'],
['Wizard::Elem::Submit', 'value' => 'Create a new Directory Config.',
'name' => 'Action_CreateDirectory',
'id' => 1],
['Wizard::Elem::Submit', 'value' => 'Modify an existing Directory Config.',
'name' => 'Action_ModifyDirectory',
'id' => 2],
# ['Wizard::Elem::Submit', 'value' => 'Manage password protection of directories.',
# 'name' => 'Action_DirectoryMenu',
# 'id' => 3],
['Wizard::Elem::Submit', 'value' => 'Delete an existing directory Config.',
'name' => 'Action_DeleteDirectory',
'id' => 4],
['Wizard::Elem::BR'],
['Wizard::Elem::Submit', 'value' => 'Return to Virtual WWW Server Menu',
'name' => 'Wizard::Examples::Apache::VirtualServer::Action_Reset',
'id' => 95],
['Wizard::Elem::Submit', 'value' => 'Return to Server Menu',
'name' => 'Wizard::Examples::Apache::Server::Action_Reset',
'id' => 96],
['Wizard::Elem::Submit', 'value' => 'Return to Host Menu',
'name' => 'Wizard::Examples::Apache::Host::Action_Reset',
'id' => 97],
['Wizard::Elem::Submit', 'value' => 'Return to Top Menu',
'name' => 'Wizard::Examples::Apache::Action_Reset',
'id' => 98],
['Wizard::Elem::Submit', 'value' => 'Exit Apache Wizard',
'id' => 99]);
}
*Action_CreateDirectory = \&Wizard::Examples::Apache::Host::Action_CreateItem;
sub Action_DirectorySave {
my($self, $wiz) = @_;
my ($prefs, $basedir, $host, $server, $vserver, $dirc) = $self->init(1);
my $old_name = $dirc->{'apache-directory-name'};
foreach my $opt ($wiz->param()) {
$dirc->{$opt} = $wiz->param($opt)
if (($opt =~ /^apache\-directory/) && (defined($wiz->param($opt))));
}
# Verify the settings
my $errors = '';
my $pname = $dirc->{'apache-directory-pathname'} || die "Missing directory pathname";
my $redirect = $dirc->{'apache-directory-redirecturl'};
my $name = $pname;
$name =~ s/\//\_/g;
$dirc->{'apache-directory-name'} = $name;
my $user='';
if ($redirect) {
$user = $dirc->{'apache-directory-user'}
|| die "Missing user.\n" ;
}
my ($file, $dir, $odir) = $self->getFileDir();
if($dirc->CreateMe() or $old_name ne $name) {
$errors .= "A directory $pname already exists: $file.\n" if -e $file;
$errors .= "A directory $pname already exists: $dir.\n" if -e $dir;
}
die $errors if $errors;
if(!$dirc->CreateMe() and $name ne $old_name) {
my $old_file = File::Spec->catfile($odir, "$old_name.cfg");
my $old_dir = File::Spec->catdir($odir, $old_name);
rename($old_file, $file)
or die "Failed to rename $old_file to $file: $!";
rename($old_dir, $dir)
or die "Failed to rename $old_dir to $dir: $!";
}
$dirc->File($file);
if ($dirc->CreateMe()) {
File::Path::mkpath([$dir], 0, 0777);
die "Couldn't create directory $dir" unless -d $dir;
}
$dirc->Modified(1);
$self->Store($wiz, 1);
$self->Action_Reset($wiz);
}
sub Action_EditDirectory {
my($self, $wiz) = @_;
my $name = $wiz->param('apache-directory') || die "Missing directory name";
$name =~ s/\//\_/g;
$wiz->param('apache-directory', $name);
$self->Action_EditItem($wiz);
}
sub ItemList {
my $self = shift; my $basedir = shift;
my $fh = Symbol::gensym();
opendir($fh, $basedir) || die "Failed to open directory $basedir: $!";
my @items = map { if((/^(.*)\.cfg$/ and
-f File::Spec->catfile($basedir, $_))) {
$a = $1; $a =~ s/\_/\//g;
$a;
} else {
();
}
} readdir($fh);
closedir($fh);
@items;
}
sub Action_ModifyDirectory {
shift->Action_ModifyItem(shift, shift || 'Modify Directory configuration',
shift || 'Action_EditDirectory',
'Directory configuration');
}
sub Action_DeleteDirectory {
shift->Action_ModifyServer(shift, 'Delete this directory',
'Action_DeleteDirectory2');
}
sub Action_DeleteDirectory2 {
my($self, $wiz) = @_;
my ($prefs, $basedir, $host, $server, $vserver) = $self->init();
my $name = $wiz->param('apache-directory') || die "Missing directory name";
$name =~ s/\//\_/g;
$wiz->param('apache-directory', $name);
$self->Load($wiz);
my $dirc = $self->{'dir'};
my ($file, $dir) = $self->getFileDir();
if ($dirc->{'apache-directory-isdefault'}) {
return (['Wizard::Elem::Data', 'descr' => 'ERROR: ',
'value' => 'Root directory can not be deleted'],
$self->Action_Reset($wiz));
}
(['Wizard::Elem::Title', 'value' => 'Deleting an Apache Directory configuration'],
['Wizard::Elem::Data', 'descr' => 'Directory path',
'value' => $dirc->{'apache-directory-pathname'}],
['Wizard::Elem::Data', 'descr' => 'Directory owning user',
'value' => $dirc->{'apache-directory-user'}],
['Wizard::Elem::Data', 'descr' => 'Server root',
'value' => $dirc->{'apache-server-root'}],
['Wizard::Elem::Data', 'descr' => 'Directory owning group',
'value' => $dirc->{'apache-directory-group'}],
['Wizard::Elem::Submit', 'value' => 'Yes, delete it',
'id' => 1, 'name' => 'Action_DeleteDirectory3'],
(-d $dir ? ['Wizard::Elem::Submit',
'value' => 'Yes, delete it, including data directory',
'id' => 2, 'name' => 'Action_DeleteDirectory4'] : ()),
['Wizard::Elem::BR'],
['Wizard::Elem::Submit', 'value' => 'Return to Directory Menu',
'name' => 'Wizard::Examples::Apache::VirtualServer::Action_Reset',
'id' => 94],
['Wizard::Elem::Submit', 'value' => 'Return to Virtual WWW Server Menu',
'name' => 'Wizard::Examples::Apache::VirtualServer::Action_Reset',
'id' => 95],
['Wizard::Elem::Submit', 'value' => 'Return to Server Menu',
'name' => 'Wizard::Examples::Apache::Server::Action_Reset',
'id' => 96],
['Wizard::Elem::Submit', 'value' => 'Return to Host Menu',
'name' => 'Wizard::Examples::Apache::Host::Action_Reset',
'id' => 97],
['Wizard::Elem::Submit', 'value' => 'Return to Top Menu',
'name' => 'Wizard::Examples::Apache::Action_Reset',
'id' => 98],
['Wizard::Elem::Submit', 'value' => 'Exit Apache Wizard',
'id' => 99]);
}
sub Action_DeleteDirectory3 {
my($self, $wiz) = @_;
$self->DeleteItem($wiz);
$self->Action_Reset($wiz);
}
sub Action_DeleteDirectory4 {
my($self, $wiz) = @_;
$self->DeleteItem($wiz,1);
$self->Action_Reset($wiz);
}
( run in 0.915 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )