Apache-TopicMaps

 view release on metacpan or  search on metacpan

lib/Apache/TopicMaps/text/html/index.pm  view on Meta::CPAN

package Apache::TopicMaps::text::html::index;

use strict;
use URI::Escape;
use TM;
use LWP::UserAgent;
use Apache::Constants qw(:common :http :response);

#my $ua = LWP::UserAgent->new();

my $SAM = "http://www.gooseworks.org/disclosures/SAM.xml";

sub index_start_html {
        my ($ud, $name, $topic) = @_;
        my $r = $$ud->{request};
        my $tm = $$ud->{topicmap};
	#$r->print( "<!-- $name -->\n");
        if( $name eq "entry")
        {
		my $sirs = $tm->get_property($topic, $SAM ."::SubjectIndicators");
		my $scr = $tm->get_property($topic, $SAM ."::SubjectAddress");
		my $names = $tm->get_property($topic, $SAM ."::BaseNames");
		my $name = $names->[0];
 
		my $url = "topic?topic=" . uri_escape( $tm->get_sidp_string($topic) );

		if(0 && $scr)
		{
			my $title = $scr;
			$title = $names->[0] if($names);
			$r->print(qq{
			<p>
			View this information resource: <a href="$scr">$title</a>
			</p>
			});
		}

		$r->print("<p>");	
                $r->print(qq{ <a href="$url">});
		foreach my $n (@$names)
		{
       	        	$r->print("$n, ");
		}
		$r->print("</a></p>");	
        }
        elsif( $name eq "occurrence" )
        {
		#notify TMS that looking for 'topic' makes sense. TMS has configuratiion,
                #so we need to ask there anmd cannot do ourselves.

		my $scr = $tm->get_property($topic, $SAM ."::SubjectAddress");
		my $data = $tm->get_property($topic, $SAM ."::SubjectData");

		if($data)
		{
			#$r->print("About: <p>$data</p>\n");
		}
		else
		{
			if(exists($$ud->{tms}) )
			{
				Apache::TopicMaps::moo($tm, 'topic', { 'topic' => $tm->get_sidp_string($topic)} );
			}
			my $names = $tm->get_property($topic, $SAM ."::BaseNames");
			my $name = $scr;
			if($names) { $name = $names->[0]; }
			my $about_url = "topic?topic=" . uri_escape( $tm->get_sidp_string($topic) );
			$r->print(qq{Occurrence: <a href="$scr">$name</a> (<a href="$about_url">about</a>)<br />\n});
		}
        }
}

sub index_end_html
{
        my ($ud,$name) = @_;
        my $r = $$ud->{request};
        if( $name eq "entry" )
        {
                $r->print("</p>\n");
        }
}

sub do
{
	my ($r,$tm,$tms) = @_;
	print STDERR "topic_html enter\n";
	#$tm->dump();

	my %params = $r->args;	

	#my $topic = $tm->get_topic_from_string($params{p} , $params{v});
	# FIXME: set $r->uri to include QS
	#return HTTP_NOT_FOUND unless (defined $topic);
	#print STDERR "topic found!\n";


	#notify TMS that looking for 'topic' makes sense. TMS has configuratiion,
	#so we need to ask there anmd cannot do ourselves.
	#if(defined $tms)
	#{
	#	TMS::moo('topic');
	#}

		

  	$r->send_http_header('text/html');
	$r->print(qq{
	<HTML>
	<HEAD><TITLE>MOO</TITLE>
	</HEAD>
	<body>
	<h2>Index</h2>
	<p>
	
	});
	my $user_data = { 'request' => $r , 'topicmap' => $tm };
	$user_data->{tms} = $tms if (defined $tms);
       	$tm->query2(\$user_data, \&index_start_html, \&index_end_html, "VIEW index()" );


	$r->print(qq{
	
	</body>
	</html>
	});
	return OK;
}



( run in 0.551 second using v1.01-cache-2.11-cpan-39bf76dae61 )