<%init>
Jifty->web->response->content_type('text/xml; charset=UTF-8');
my $output = "";
use XML::Writer;
my $writer = XML::Writer->new( OUTPUT => \$output );
$writer->xmlDecl( "UTF-8", "yes" );
$writer->startTag("validation");
for my $ra ( Jifty->web->request->actions ) {
my $action = Jifty->web->new_action_from_request($ra);
unless ($action ){
warn "Couldn't turn $ra into an action";
next;
}
$writer->startTag( "validationaction", id => $action->register_name );
for my $arg ( $action->argument_names ) {
if ( not $action->arguments->{$arg}->{ajax_validates} ) {
$writer->emptyTag( "ignored", id => $action->error_div_id($arg) );
$writer->emptyTag( "ignored", id => $action->warning_div_id($arg) );
} elsif ( (not defined $action->argument_value($arg)
or length $action->argument_value($arg) == 0)
and not $action->result->ajax_force_validate($arg)
) {
$writer->emptyTag( "blank", id => $action->error_div_id($arg) );
$writer->emptyTag( "blank", id => $action->warning_div_id($arg) );
} elsif ( $action->result->field_error($arg) ) {
$writer->dataElement(
"error",
$action->result->field_error($arg),
id => $action->error_div_id($arg)
);
$writer->emptyTag( "ok", id => $action->warning_div_id($arg) );
} elsif ( $action->result->field_warning($arg) ) {
$writer->dataElement(
"warning",
$action->result->field_warning($arg),
id => $action->warning_div_id($arg)
);
$writer->emptyTag( "ok", id => $action->error_div_id($arg) );
} else {
$writer->emptyTag( "ok", id => $action->error_div_id($arg) );
$writer->emptyTag( "ok", id => $action->warning_div_id($arg) );
}
}
$writer->endTag();
$writer->startTag( "canonicalizeaction", id => $action->register_name );
for my $arg ( $action->argument_names ) {
if (($ra->arguments->{$arg} || "") eq ($action->argument_value($arg) || "")) {
# if the value doesn't change, it can be ignored.
# canonicalizers can change other parts of the action, so we want to send all changes
$writer->emptyTag( "ignored", name => $action->form_field_name($arg) );
} elsif ( not defined $action->argument_value($arg)
or length $action->argument_value($arg) == 0 ) {
$writer->emptyTag( "blank", name => $action->form_field_name($arg) );
} else {
$writer->dataElement(
"update",
$action->argument_value($arg),
name => $action->form_field_name($arg)
);
}
if ( $action->result->field_canonicalization_note($arg) ) {
$writer->dataElement(
"canonicalization_note",
$action->result->field_canonicalization_note($arg),
id => $action->canonicalization_note_div_id($arg)
);
}
}
$writer->endTag();
}
$writer->endTag();
$m->out($output);
$m->abort();
</%init>