generate pages for departments
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 20 Nov 2013 11:51:54 +0000 (12:51 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 20 Nov 2013 11:51:54 +0000 (12:51 +0100)
html.pl
html/departments/style.css [new symlink]

diff --git a/html.pl b/html.pl
index c5ff0a7..6209754 100755 (executable)
--- a/html.pl
+++ b/html.pl
@@ -9,6 +9,7 @@ use DBI;
 use Data::Dump qw(dump);
 use autodie;
 use locale;
+use Text::Unaccent;
 
 use lib '/srv/koha_ffzg';
 use C4::Context;
@@ -71,23 +72,27 @@ while( my $row = $sth_select_authors->fetchrow_hashref ) {
 }
 
 my $auth_header;
+my $auth_department;
 my @authors;
 
 my $all_authids = join(',', grep { length($_) > 0 } keys %$authors);
 my $sth_auth = $dbh->prepare(q{
 select
        authid,
-       ExtractValue(marcxml,'//datafield[@tag="100"]/subfield[@code="a"]') as full_name
+       ExtractValue(marcxml,'//datafield[@tag="100"]/subfield[@code="a"]') as full_name,
+       ExtractValue(marcxml,'//datafield[@tag="680"]/subfield[@code="a"]') as department
 from auth_header
 where
-       ExtractValue(marcxml,'//datafield[@tag="024"]/subfield[@code="a"]') <> '' and
        authid in (} . $all_authids . q{)
 });
 
 $sth_auth->execute();
 while( my $row = $sth_auth->fetchrow_hashref ) {
-#      warn dump( $row );
        $auth_header->{ $row->{authid} } = $row->{full_name};
+       $row->{department} =~ s/, Filozofski fakultet u Zagrebu\s*//;
+       $row->{department} =~ s/^.+\.\s*//;
+       push @{ $auth_department->{ $row->{department} } }, $row->{authid};
+       warn dump( $row );
        push @authors, $row;
 
 }
@@ -118,10 +123,13 @@ sub html_end {
        return qq|</body>\n</html\n|;
 }
 
+my $biblio_html;
 
 sub biblioitem_html {
        my $biblionumber = shift;
 
+       return $biblio_html->{$biblionumber} if exists $biblio_html->{$biblionumber};
+
        my $xmlrecord = $marcxml->{$biblionumber} || die "missing $biblionumber marcxml";
 
        my $parser = XML::LibXML->new();
@@ -132,7 +140,7 @@ sub biblioitem_html {
        my $xslt = XML::LibXSLT->new();
        my $parsed = $xslt->parse_stylesheet($style_doc);
        my $transformed = $parsed->transform($source);
-       return $parsed->output_string( $transformed );
+       return $biblio_html->{$biblionumber} = $parsed->output_string( $transformed );
 }
 
 
@@ -180,7 +188,53 @@ rename 'html/index.new', 'html/index.html';
 
 #print dump( $authors );
 
-#print dump( $auth_header );
+print dump( $auth_header );
+
+print dump( $auth_department );
+
+
+my $department_category_author;
+foreach my $department ( sort keys %$auth_department ) {
+       foreach my $authid ( sort @{ $auth_department->{$department} } ) {
+               foreach my $category ( sort keys %{ $authors->{$authid} } ) {
+                       push @{ $department_category_author->{$department}->{$category} }, $authid;
+               }
+       }
+}
+
+print dump( $department_category_author );
+
+mkdir 'html/departments' unless -d 'html/departments';
 
+open(my $dep_fh, '>:encoding(utf-8)', 'html/departments/index.new');
+print $dep_fh html_title('Odsijeci Filozofskog fakulteta u Zagrebu'), qq|<ul>\n|;
+foreach my $department ( sort keys %$department_category_author ) {
+       my $dep = $department || 'Nema odsjeka';
+       my $dep_file = unac_string('utf-8',$dep);
+       print $dep_fh qq|<li><a href="$dep_file.html">$dep</a></li>\n|;
+       open(my $fh, '>:encoding(utf-8)', "html/departments/$dep_file.new");
+       print $fh html_title($department . ' bibliografija');
+       foreach my $category ( sort keys %{ $department_category_author->{$department} } ) {
+               my $label = $category_label->{$category} || 'Bez kategorije';
+               print $fh qq|<h1>$label</h1>\n<ul>\n|;
+
+               foreach my $authid ( @{ $department_category_author->{$department}->{$category} } ) {
+                       foreach my $biblionumber ( @{ $authors->{$authid}->{$category} } ) {
+                               print $fh qq|<li>|,
+                                       qq|<a href="https://koha.ffzg.hr/cgi-bin/koha/opac-detail.pl?biblionumber=$biblionumber">$biblionumber</a>|,
+                                       biblioitem_html($biblionumber),
+                                       qq|<a href="https://koha.ffzg.hr:8443/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=$biblionumber">edit</a>|,
+                                       qq|</li>\n|;
+                       }
+               }
 
+               print $fh qq|</ul>|;
+       }
+       print $fh html_end;
+       close($fh);
+       rename "html/departments/$dep_file.new", "html/departments/$dep_file.html";
+}
+print $dep_fh qq|</ul>\n|, html_end;
+close($dep_fh);
+rename 'html/departments/index.new', 'html/departments/index.html';
 
diff --git a/html/departments/style.css b/html/departments/style.css
new file mode 120000 (symlink)
index 0000000..5191bf7
--- /dev/null
@@ -0,0 +1 @@
+../style.css
\ No newline at end of file