Bug 11650: multiplicated authorities after link_bibs_to_authorities.pl
[koha_fer] / cataloguing / value_builder / macles.pl
index 0913f5c..c99508e 100755 (executable)
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 use strict;
+#use warnings; FIXME - Bug 2505
 use CGI;
 use C4::Context;
 use C4::Output;
@@ -35,6 +36,7 @@ use utf8;
 plugin_parameters : other parameters added when the plugin is called by the dopop function
 
 =cut
+
 sub plugin_parameters {
 my ($dbh,$record,$tagslib,$i,$tabloop) = @_;
 return "";
@@ -56,7 +58,7 @@ function Blur$function_name(subfield_managed) {
 }
 
 function Clic$function_name(i) {
-       newin=window.open(\"plugin_launcher.pl?plugin_name=macles.pl&index=\"+i,\"MACLES\",',toolbar=false,scrollbars=yes');
+       newin=window.open(\"../cataloguing/plugin_launcher.pl?plugin_name=macles.pl&index=\"+i,\"MACLES\",',toolbar=false,scrollbars=yes');
 
 }
 //]]>
@@ -115,60 +117,81 @@ my ($input) = @_;
       }
 #        use Data::Dumper;warn "BIGLOOP IN".Dumper(@BIGLOOP);
     }
-    foreach my $num (sort keys %numbers){
-      my @tmpcolhdr = @{$numbers{$num}->{'col_hdr'}} if ($numbers{$num}->{'col_hdr'});
-      my @tmprowhdr = @{$numbers{$num}->{"row_hdr"}} if ($numbers{$num}->{'row_hdr'});
-      my @lines;
-      my @lists;
-      my %BIGLOOPcell;
-      foreach my $row (@tmprowhdr){
-        my $tmprowvalue=$row->{rowvalue};
-        my $rowcode=$1 if $tmprowvalue=~/[0-9]([0-9])\./;
-        my @cells;
-        if (scalar(@tmpcolhdr)>0){
-        #cas du tableau bidim
-          foreach my $col (@tmpcolhdr){
-            my $tmpcolvalue=$col->{colvalue};
-            my $colcode=$1 if $tmpcolvalue=~/[0-9]\.([0-9])/;
-            my %cell;
-            $cell{celvalue}=$num.$rowcode.$colcode;
-            $cell{rowvalue}=$tmprowvalue;
-            $cell{colvalue}=$tmpcolvalue;
-            if ($numbers{$num}->{$num.$rowcode.$colcode}){
-              foreach (@{$numbers{$num}->{$num.$rowcode.$colcode}}){
-                push @{$cell{libs}},{'lib'=>$_};
-              }
-            }else {
-              push @{$cell{libs}},{'lib'=>$num.$rowcode.$colcode};
+    foreach my $num ( sort keys %numbers ) {
+        my @tmpcolhdr;
+        my @tmprowhdr;
+        @tmpcolhdr = @{ $numbers{$num}->{'col_hdr'} }
+          if ( $numbers{$num}->{'col_hdr'} );
+        @tmprowhdr = @{ $numbers{$num}->{"row_hdr"} }
+          if ( $numbers{$num}->{'row_hdr'} );
+        my @lines;
+        my @lists;
+        my %BIGLOOPcell;
+        foreach my $row (@tmprowhdr) {
+            my $tmprowvalue = $row->{rowvalue};
+            my $rowcode;
+            $rowcode = $1 if $tmprowvalue =~ /[0-9]([0-9])\./;
+            my @cells;
+            if ( scalar(@tmpcolhdr) > 0 ) {
+
+                #cas du tableau bidim
+                foreach my $col (@tmpcolhdr) {
+                    my $tmpcolvalue = $col->{colvalue};
+                    my $colcode;
+                    $colcode = $1 if $tmpcolvalue =~ /[0-9]\.([0-9])/;
+                    my %cell;
+                    $cell{celvalue} = $num . $rowcode . $colcode;
+                    $cell{rowvalue} = $tmprowvalue;
+                    $cell{colvalue} = $tmpcolvalue;
+                    if ( $numbers{$num}->{ $num . $rowcode . $colcode } ) {
+
+                        foreach (
+                            @{ $numbers{$num}->{ $num . $rowcode . $colcode } }
+                          )
+                        {
+                            push @{ $cell{libs} }, { 'lib' => $_ };
+                        }
+                    }
+                    else {
+                        push @{ $cell{libs} },
+                          { 'lib' => $num . $rowcode . $colcode };
+                    }
+                    push @cells, \%cell;
+                }
+                if ( $numbers{$num}->{ $num . $rowcode } ) {
+                    my @tmpliblist = @{ $numbers{$num}->{ $num . $rowcode } };
+                    push @lists,
+                      { 'lib' => $row->{rowlib}, 'liblist' => \@tmpliblist };
+                }
             }
-            push @cells,\%cell;
-          }
-          if ($numbers{$num}->{$num.$rowcode}){
-            my @tmpliblist=@{$numbers{$num}->{$num.$rowcode}};
-            push @lists,{'lib'=>$row->{rowlib},'liblist'=>\@tmpliblist};
-          }
-        } else {
-        #Cas de la liste simple
-          foreach my $key (sort keys %{$numbers{$num}}){
-            my %cell;
-            if ($key=~/$num$rowcode[0-9]/){
-              $cell{celvalue}=$key;
-              foreach my $lib (@{$numbers{$num}->{$key}}){
-                push @{$cell{'libs'}},{'lib'=>$lib};
-              }
-              push @cells,\%cell;
+            else {
+
+                #Cas de la liste simple
+                foreach my $key ( sort keys %{ $numbers{$num} } ) {
+                    my %cell;
+                    if ( $key =~ /$num$rowcode[0-9]/ ) {
+                        $cell{celvalue} = $key;
+                        foreach my $lib ( @{ $numbers{$num}->{$key} } ) {
+                            push @{ $cell{'libs'} }, { 'lib' => $lib };
+                        }
+                        push @cells, \%cell;
+                    }
+                }
             }
-          }
+            push @lines,
+              {
+                'cells'    => \@cells,
+                'rowvalue' => $row->{rowvalue},
+                'rowlib'   => $row->{rowlib}
+              };
         }
-        push @lines,{'cells'=>\@cells,'rowvalue'=>$row->{rowvalue},'rowlib'=>$row->{rowlib}};
-      }
-      $BIGLOOPcell{'Lists'}=\@lists if (scalar(@lists)>0);
-      $BIGLOOPcell{'lines'}=\@lines if (scalar(@lines)>0);
-      $BIGLOOPcell{'col_hdr'}=\@tmpcolhdr if (scalar(@tmpcolhdr)>0);
-      $BIGLOOPcell{'Table'}=$numbers{$num}->{'Table'};
-      $BIGLOOPcell{'hdr_tab'}=$numbers{$num}->{'hdr_tab'};
-      $BIGLOOPcell{'number'}=$num;
-      push @BIGLOOP,\%BIGLOOPcell;
+        $BIGLOOPcell{'Lists'}   = \@lists     if ( scalar(@lists) > 0 );
+        $BIGLOOPcell{'lines'}   = \@lines     if ( scalar(@lines) > 0 );
+        $BIGLOOPcell{'col_hdr'} = \@tmpcolhdr if ( scalar(@tmpcolhdr) > 0 );
+        $BIGLOOPcell{'Table'}   = $numbers{$num}->{'Table'};
+        $BIGLOOPcell{'hdr_tab'} = $numbers{$num}->{'hdr_tab'};
+        $BIGLOOPcell{'number'}  = $num;
+        push @BIGLOOP, \%BIGLOOPcell;
     }
 #     warn "BIGLOOP OUT".Dumper(@BIGLOOP);
     my ($template, $loggedinuser, $cookie)
@@ -176,7 +199,7 @@ my ($input) = @_;
                     query => $input,
                     type => "intranet",
                     authnotrequired => 0,
-                    flagsrequired => {editcatalogue => 1},
+                    flagsrequired => {editcatalogue => '*'},
                     debug => 1,
                     });
     $template->param(BIGLOOP=>\@BIGLOOP);