#!perl

use EPrints;

use strict;

my $eprints = EPrints->new;
my $repo = $eprints->current_repository;
exit( 0 ) if !defined $repo;

# security?

$repo->send_http_header( content_type=>"text/xml; charset=UTF-8" );
my $q = $repo->param( "q" );
# also _title, _id, dataset=XX, field=XX, dataobj=XX

my $database = $repo->get_database;

my $dataset = $repo->dataset( $repo->param( "dataset" ) );
EPrints->abort("invalid dataset") if !defined $dataset;
my $field = $dataset->field( $repo->param( "field" ) );
EPrints->abort("invalid field") if !defined $field;

EPrints->abort("not itemref") if !$field->isa( "EPrints::MetaField::Dataobjref" );

my $tdataset = $repo->dataset( $field->get_property( "datasetid" ) );

my $fieldnames = $repo->config( "datasets", $tdataset->base_id, "search", "simple", "meta_fields" );
EPrints->abort("simple search fields not configured for ".$tdataset->base_id) if !defined $fieldnames;

my $results = $tdataset->search(
	search_fields => [{
			id => 'q',
			meta_fields => $fieldnames,
			default => $q,
			match => "IN",
		}],
	satisfy_all => 0,
	limit => 10,
);

my @rows;
foreach my $match ($results->slice(0, 10))
{
	my $item = {};
	push @rows, $item;

	my $frag = $repo->xml->create_document_fragment;

	my $desc = $match->render_description;

	$frag->appendChild( $desc );
	$item->{xhtml} = $frag;
	$item->{values} = [
		"for:value:relative:_id" => $match->id,
		"for:value:relative:_title" => $repo->xhtml->to_text_dump( $frag ),
	];
}

my $ul = EPrints::Extras::render_lookup_list( $repo, \@rows );

binmode(STDOUT,":utf8");
print <<END;
<?xml version="1.0" encoding="UTF-8" ?>

END
print EPrints::XML::to_string( $ul, "utf-8", 1 );

EPrints::XML::dispose( $ul );
