Bug 23308: Change html to filter to $raw
[koha-equinox.git] / about.pl
index 02f236d..dacd39d 100755 (executable)
--- a/about.pl
+++ b/about.pl
@@ -32,7 +32,7 @@ use XML::Simple;
 use Config;
 use Search::Elasticsearch;
 use Try::Tiny;
-use YAML;
+use YAML qw/LoadFile/;
 
 use C4::Output;
 use C4::Auth;
@@ -396,7 +396,8 @@ my @yaml_prefs = (
     "UpdateItemWhenLostFromHoldList",
     "MarcFieldsToOrder",
     "MarcItemFieldsToOrder",
-    "UpdateitemLocationOnCheckin"
+    "UpdateitemLocationOnCheckin",
+    "ItemsDeniedRenewal"
 );
 my @bad_yaml_prefs;
 foreach my $syspref (@yaml_prefs) {
@@ -519,9 +520,7 @@ $template->param( table => $table );
 
 
 ## ------------------------------------------
-## Koha time line code
-
-#get file location
+## Koha contributions
 my $docdir;
 if ( defined C4::Context->config('docdir') ) {
     $docdir = C4::Context->config('docdir');
@@ -531,6 +530,70 @@ if ( defined C4::Context->config('docdir') ) {
     $docdir = C4::Context->config('intranetdir') . '/docs';
 }
 
+## Release teams
+my $teams =
+  -e "$docdir" . "/teams.yaml"
+  ? LoadFile( "$docdir" . "/teams.yaml" )
+  : {};
+my $dev_team = (sort {$b <=> $a} (keys %{$teams->{team}}))[0];
+my $short_version = substr($versions{'kohaVersion'},0,5);
+my $minor = substr($versions{'kohaVersion'},3,2);
+my $development_version = ( $minor eq '05' || $minor eq '11' ) ? 0 : 1;
+$template->param( short_version => $short_version );
+$template->param( development_version => $development_version );
+
+## Contributors
+my $contributors =
+  -e "$docdir" . "/contributors.yaml"
+  ? LoadFile( "$docdir" . "/contributors.yaml" )
+  : {};
+for my $version ( sort { $a <=> $b } keys %{$teams->{team}} ) {
+    for my $role ( keys %{ $teams->{team}->{$version} } ) {
+        my $normalized_role = "$role";
+        $normalized_role =~ s/s$//;
+        if ( ref( $teams->{team}->{$version}->{$role} ) eq 'ARRAY' ) {
+            for my $contributor ( @{ $teams->{team}->{$version}->{$role} } ) {
+                my $name = $contributor->{name};
+                # Add role to contributors
+                push @{ $contributors->{$name}->{roles}->{$normalized_role} },
+                  $version;
+                # Add openhub to teams
+                if ( exists( $contributors->{$name}->{openhub} ) ) {
+                    $contributor->{openhub} = $contributors->{$name}->{openhub};
+                }
+            }
+        }
+        elsif ( $role ne 'release_date' ) {
+            my $name = $teams->{team}->{$version}->{$role}->{name};
+            # Add role to contributors
+            push @{ $contributors->{$name}->{roles}->{$normalized_role} },
+              $version;
+            # Add openhub to teams
+            if ( exists( $contributors->{$name}->{openhub} ) ) {
+                $teams->{team}->{$version}->{$role}->{openhub} =
+                  $contributors->{$name}->{openhub};
+            }
+        }
+        else {
+            $teams->{team}->{$version}->{$role} = DateTime->from_epoch( epoch => $teams->{team}->{$version}->{$role});
+        }
+    }
+}
+
+## Create last name ordered array of people from contributors
+my @people = map {
+    { name => $_, ( $contributors->{$_} ? %{ $contributors->{$_} } : () ) }
+} sort {
+    my ($alast) = ( split( /\s/, $a ) )[-1];
+    my ($blast) = ( split( /\s/, $b ) )[-1];
+    lc($alast) cmp lc($blast)
+} keys %{$contributors};
+
+$template->param( contributors => \@people );
+$template->param( maintenance_team => $teams->{team}->{$dev_team} );
+$template->param( release_team => $teams->{team}->{$short_version} );
+
+## Timeline
 if ( open( my $file, "<:encoding(UTF-8)", "$docdir" . "/history.txt" ) ) {
 
     my $i = 0;