Dave Cross: Still Munging Data With Perl: Online event - Mar 17 Learn more

package startPage;
sub on_create {
my $self = shift;
my $i = 0;
foreach my $t ($self->_valid_top_levels) {
my $name = $t;
$name =~ s/\://g;
my $name = "select_new_parent_".$name;
my $obj = new Oak::Web::HTML::Option
(
RESTORE =>
{
name => $name,
value => $t,
label => $t,
parent => "select_new_parent",
top => $i,
select => "select_new_parent"
},
OWNER => $self
);
$i++;
}
return 1;
}
sub _valid_top_levels {
qw(
Oak::Web::Page
Oak::Web::Additional::Included
Oak::DataModule
);
}
sub _temporaryFileName {
my $file = "/tmp/forest_".$$."_".$ENV{REMOTE_ADDR}.".xml";
`touch $file`;
$::SESSION->set('filename' => $file);
}
sub submit_new_on_click {
my $self = shift;
$self->_temporaryFileName;
my $parent = $self->select_new_parent->get('value');
$::SESSION->set('selectedComponent' => '');
$::SESSION->set('classname' => $parent);
eval "require $parent" || die $@;
my $obj = $parent->new
(
RESTORE =>
{
__XML_FILENAME__ => $::SESSION->get('filename'),
name => $self->name_new->get('value')
}
);
$obj->store_all;
$::APPLICATION->initiateTopLevel("actionPage");
$::TL::actionPage->show;
}
sub submit_edit_on_click {
my $self = shift;
$self->_temporaryFileName;
my $parent = $self->edit_parent->get('value');
$::SESSION->set('selectedComponent' => '');
$::SESSION->set('classname' => $parent);
open(FILE, ">".$::SESSION->get('filename')) || die $!;
print FILE $self->textarea_file->get('text');
close FILE;
$::APPLICATION->initiateTopLevel("actionPage");
$::TL::actionPage->show;
}
1;