r1778@llin: dpavlin | 2009-04-22 01:17:12 +0200
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 21 Apr 2009 23:17:23 +0000 (23:17 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 21 Apr 2009 23:17:23 +0000 (23:17 +0000)
 enable wrap around fields for display turning link into clickable

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@1137 07558da8-63fa-0310-ba24-9fe276d99e06

vhost/ecas/html.pm [new file with mode: 0644]
vhost/webpac2.cgi

diff --git a/vhost/ecas/html.pm b/vhost/ecas/html.pm
new file mode 100644 (file)
index 0000000..faa8259
--- /dev/null
@@ -0,0 +1,11 @@
+package ecas::html;
+
+use strict;
+use warnings;
+
+sub url {
+       my ($self,$url) = @_;
+       qq{<a href="$url">$url</a>};
+}
+
+1;
index f0f8215..c8e6d3e 100755 (executable)
@@ -16,7 +16,7 @@ sub dump_yaml {
        print qq|<pre># $name\n|, YAML::Dump( @_ ), qq|</pre>|;
 }
 
-my $path = $ENV{PATH_INFO};
+my $path = $ENV{PATH_INFO} || 'ecas';
 my $dir = $0;
 $dir =~ s{/[^/]+.cgi}{};
 
@@ -25,6 +25,15 @@ my $config = YAML::LoadFile( "$dir/$path/config.yml" );
 my $database = (keys %{ $config->{databases} })[0];
 die "$database not in $path" unless $path =~ m{\Q$database\E};
 
+my $html_markup = "$dir/$path/html.pm";
+my $html_markup_skip;
+if ( -e $html_markup ) {
+       require $html_markup;
+       $html_markup = $database . '::html';
+} else {
+       undef $html_markup;
+}
+
 my $estraier = YAML::LoadFile( "$dir/../var/estraier/$database.yaml" );
 
 my $db = $config->{databases}->{$database};
@@ -75,8 +84,18 @@ if ( my $search = param('search') ) {
                foreach my $i ( 1 .. $nres->doc_num ) {
                        my $rdoc = $nres->get_doc( $i - 1 );
                        print qq|<li>|;
-                       print qq|<div><label>$_</label><span class=$_>|, $rdoc->attr( $_ ), qq|</span></div>|
-                               foreach @attr;
+                       foreach my $attr ( @attr ) {
+                               my $v = $rdoc->attr( $attr );
+                               if ( defined $v && $html_markup && ! $html_markup_skip->{$attr} ) {
+                                       eval "\$v = $html_markup->$attr( \$v );";
+                                       if ( $@ ) {
+                                               warn "disable html markup for $attr: $@";
+                                               $html_markup_skip->{$attr} = $@;
+                                       }
+                               }
+                               next unless defined $v;
+                               print qq|<div><label>$attr</label><span class=$attr>$v</span></div>\n|;
+                       }
                        print qq|</li>\n|;
                }
                print qq|</ol>|;
@@ -86,5 +105,6 @@ if ( my $search = param('search') ) {
 
 dump_yaml( 'estraier', $estraier );
 dump_yaml( 'db', $db );
+dump_yaml( 'html_markup_skip', $html_markup_skip );
 
 print  end_html;