Drupal-Admin
view release on metacpan or search on metacpan
lib/Drupal/Admin.pm view on Meta::CPAN
warn($msg);
}
sub _die {
my($self,$msg) = @_;
$self->log_fatal($msg);
die($msg);
}
# WARNING this has a dependency on an English string
sub login {
my($self, %params) = @_;
$self->_die('user parameter required') unless $params{user};
$self->_die('password parameter required') unless $params{password};
# Retrieve the login page
my $url = $self->baseurl . '?q=user';
$self->mech->get($url);
$self->_die("Failed to get login page: " . $self->mech->response->status_line) unless $self->mech->success;
$self->_die("Access denied -- possible site misconfiguration")
if $self->mech->find_by_tag_name('title')->as_text =~ /Access denied/;
$self->mech->submit_form(
with_fields => { name => $params{user}, pass => $params{password} }
);
$self->_die("Login failed -- reason unkown") unless $self->mech->success; # FIXME
$self->_die("Login failed -- wrong username/password")
unless $self->mech->response->decoded_content !~ /unrecognized username or password/;
}
# WARNING this has a dependency on an English string
sub offline {
my($self) = @_;
my $url = $self->{baseurl} . '?q=admin/settings/site-maintenance';
$self->mech->get($url);
$self->mech->form_id('system-site-maintenance-settings');
$self->mech->set_fields('site_offline',1);
$self->mech->click_button(value => 'Save configuration');
$self->_die("Offline failed") unless ($self->mech->success);
}
# WARNING this has a dependency on an English string
sub online {
my($self) = @_;
my $url = $self->{baseurl} . '?q=admin/settings/site-maintenance';
$self->mech->get($url);
$self->mech->form_id('system-site-maintenance-settings');
$self->mech->set_fields('site_offline',0);
$self->mech->click_button(value => 'Save configuration');
$self->_die("Offline failed") unless ($self->mech->success);
}
# WARNING this has a dependency on an English string
# die()s if errors are detected
sub update {
my($self) = @_;
$self->log_trace("Entering update()");
my $url = $self->{baseurl} . '/update.php';
my $response = $self->mech->get($url);
$self->_die('Access denied to update.php')
if $self->mech->response->decoded_content =~ /access denied/i;
$self->_update_check_errors;
$self->_die('No "Continue" button on page')
unless $self->mech->look_down('_tag', 'input', 'type', 'submit', 'value', 'Continue');
$self->mech->click_button(value => 'Continue');
$self->_die("Update failed on first page") unless ($self->mech->success);
$self->_update_check_errors;
$self->_die('No "Update" button on page')
unless $self->mech->look_down('_tag', 'input', 'type', 'submit', 'value', 'Update');
$self->mech->click_button(value => 'Update');
$self->_die("Update failed on second page") unless ($self->mech->success);
$self->_update_check_errors;
$self->log_trace("Leaving update()");
}
#
# Check for update errors
#
sub _update_check_errors {
my($self) = @_;
$self->log_trace("Entering _update_check_errors()");
my @errstrings;
my @entries = $self->mech->look_down('_tag', 'div', 'class', 'messages error');
if( @entries ){
foreach my $errdiv (@entries) {
my @errlistels = $errdiv->look_down('_tag', 'li');
foreach my $li (@errlistels){
push(@errstrings, $li->as_text);
}
}
$self->_die(
join("\n",
'Update errors:',
@errstrings
)
);
}
$self->log_trace("Leaving _update_check_errors()");
}
#
( run in 0.807 second using v1.01-cache-2.11-cpan-d7f47b0818f )