[Bio] / SubsystemEditor / WebPage / ShowSubsystem.pm Repository:
ViewVC logotype

Diff of /SubsystemEditor/WebPage/ShowSubsystem.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4, Thu Dec 13 21:17:21 2007 UTC revision 1.26, Wed Apr 8 15:39:04 2009 UTC
# Line 19  Line 19 
19    my ( $self ) = @_;    my ( $self ) = @_;
20    
21    $self->application->register_component( 'Table', 'sstable'  );    $self->application->register_component( 'Table', 'sstable'  );
22      $self->application->register_component(  'Table', 'VarDescTable'  );
23  }  }
24    
25  #################################  #################################
# Line 36  Line 37 
37  sub output {  sub output {
38    my ( $self ) = @_;    my ( $self ) = @_;
39    
40    use Data::Dumper;    my $fig = $self->application->data_handle( 'FIG' );
   
   my $fig = new FIG;  
41    my $cgi = $self->application->cgi;    my $cgi = $self->application->cgi;
42    
43    # subsystem name and 'nice name' #    # subsystem name and 'nice name' #
# Line 50  Line 49 
49    my $can_alter = 0;    my $can_alter = 0;
50    my $user = $self->application->session->user;    my $user = $self->application->session->user;
51    
52    my $dbmaster = DBMaster->new( -database => 'WebAppBackend' );    my $dbmaster = $self->application->dbmaster;
53    my $ppoapplication = $dbmaster->Backend->init( { name => 'SubsystemEditor' } );    my $ppoapplication = $self->application->backend;
54    
55    # get a seeduser #    # get a seeduser #
56    my $seeduser = '';    my $seeduser = '';
# Line 64  Line 63 
63      }      }
64    }    }
65    
66    if ( $user && $user->has_right( $self->application, 'edit', 'subsystem', $name ) ) {    if ( $user ) {
67        if ( $user->has_right( $self->application, 'edit', 'subsystem', $name ) ) {
68          $can_alter = 1;
69          $fig->set_user( $seeduser );
70        }
71        else {
72          # we might have the problem that the user has not yet got the right for editing the
73          # subsystem due to that it was created in the old seed or what do I know where.
74          my $curatorOfSS = $fig->subsystem_curator( $name );
75          my $su = lc( $seeduser );
76          my $cu = lc( $curatorOfSS );
77          if ( $su eq $cu ) {
78            # now set the rights...
79            my $right = $dbmaster->Rights->create( { name => 'edit',
80                                                     scope => $user->get_user_scope,
81                                                     data_type => 'subsystem',
82                                                     data_id => $name,
83                                                     granted => 1,
84                                                     delegated => 0 } );
85            if ( $right ) {
86      $can_alter = 1;      $can_alter = 1;
87      $fig->set_user( $seeduser );      $fig->set_user( $seeduser );
88    }    }
89          }
90        }
91      }
92    
93    ######################    ######################
94    # Construct the menu #    # Construct the menu #
95    ######################    ######################
96    
97    my $menu = $self->application->menu();    my $menu = $self->application->menu();
98    
99      my $esc_name = uri_escape($name);
100    
101    # Build nice tab menu here    # Build nice tab menu here
102    $menu->add_category( 'Subsystem Info', "SubsysEditor.cgi?page=ShowSubsystem&subsystem=$name" );    $menu->add_category( 'Subsystem Info', "SubsysEditor.cgi?page=ShowSubsystem&subsystem=$esc_name" );
103    $menu->add_category( 'Functional Roles', "SubsysEditor.cgi?page=ShowFunctionalRoles&subsystem=$name" );    $menu->add_category( 'Functional Roles', "SubsysEditor.cgi?page=ShowFunctionalRoles&subsystem=$esc_name" );
104    $menu->add_category( 'Subsystem Diagram', "SubsysEditor.cgi?page=ShowDiagram&subsystem=$name" );    $menu->add_category( 'Subsets', "SubsysEditor.cgi?page=ShowSubsets&subsystem=$esc_name" );
105    $menu->add_category( 'Subsystem Spreadsheet', "SubsysEditor.cgi?page=ShowSpreadsheet&subsystem=$name" );    $menu->add_category( 'Diagram', "SubsysEditor.cgi?page=ShowDiagram&subsystem=$esc_name" );
106    $menu->add_category( 'Subsystem Check', "SubsysEditor.cgi?page=ShowCheck&subsystem=$name" );    $menu->add_category( 'Illustrations', "SubsysEditor.cgi?page=ShowIllustrations&subsystem=$esc_name" );
107    $menu->add_category( 'Subsystem Tree', "SubsysEditor.cgi?page=ShowTree&subsystem=$name" );    $menu->add_category( 'Spreadsheet', "SubsysEditor.cgi?page=ShowSpreadsheet&subsystem=$esc_name" );
108      $menu->add_category( 'Show Check', "SubsysEditor.cgi?page=ShowCheck&subsystem=$esc_name" );
109      $menu->add_category( 'Show Connections', "SubsysEditor.cgi?page=ShowTree&subsystem=$esc_name" );
110    
111    
112    ##############################    ##############################
# Line 143  Line 169 
169      }      }
170      $subsystem->set_classification( [ $class1, $class2 ] );      $subsystem->set_classification( [ $class1, $class2 ] );
171    
172        my $litstoset = $cgi->param( 'SUBSYSLIT' );
173        $litstoset =~ s/ //g;
174        my @lits = split( ',', $litstoset );
175        setLiteratures( $fig, $name, \@lits );
176    
177        my $wlstoset = $cgi->param( 'SUBSYSWL' );
178        if ( defined( $wlstoset ) && $wlstoset =~ /.+\s+.+/ ) {
179          my @wls = split( '\n', $wlstoset );
180          setWeblinks( $fig, $name, \@wls );
181        }
182    
183      # here we really edit the files in the subsystem directory #      # here we really edit the files in the subsystem directory #
184      $subsystem->incr_version();      $subsystem->incr_version();
185      $subsystem->db_sync();      $subsystem->db_sync();
186      $subsystem->write_subsystem();      $subsystem->write_subsystem();
187    }    }
188      elsif ( defined( $cgi->param( 'GrantRightButton' ) ) ) {
189        if ( $can_alter && $user->has_right( undef, 'edit', 'subsystem', $name, 1 ) ) {
190          my $newAnno = $cgi->param( 'ANNOBOX' );
191          my $newScope;
192          if ($newAnno =~ /group\:(.*)/) {
193            $newScope = $dbmaster->Scope->init( { application => undef, name => $1 } );
194          } else {
195            my $thisUsers = $dbmaster->User->get_objects( { login => $newAnno } );
196            if ( defined( $thisUsers->[0] ) ) {
197              $newScope = $thisUsers->[0]->get_user_scope();
198            }
199          }
200          if (defined($newScope)) {
201            my $rights = $dbmaster->Rights->get_objects( { name => 'edit',
202                                                           data_type => 'subsystem',
203                                                           data_id => $name,
204                                                           scope => $newScope } );
205            if ( defined( $rights->[0] ) ) {
206              $self->application->add_message( 'warning', "User $newAnno already has the right to edit this subsystem." );
207            }
208            else {
209              my $right = $dbmaster->Rights->create( { granted => 1,
210                                                       delegated => 1,
211                                                       name => 'edit',
212                                                       data_type => 'subsystem',
213                                                       data_id => $name,
214                                                       scope => $newScope } );
215              if ( $right ) {
216                $self->application->add_message( 'info', "$newAnno can now edit this subsystem" );
217              }
218              else {
219                $self->application->add_message( 'warning', "Could not create right to edit the subsystem for user $newAnno" );
220              }
221            }
222          }
223        }
224        else {
225          $self->application->add_message( 'warning', "You do not have the right to share the subsystem." );
226        }
227      }
228      elsif ( defined( $cgi->param( 'RevokeRightButton' ) ) ) {
229        if ( $can_alter && $user->has_right( undef, 'edit', 'subsystem', $name, 1 ) ) {
230          my $newAnno = $cgi->param( 'ALANNOBOX' );
231          my $newScope;
232          if ($newAnno =~ /group\:(.*)/) {
233            $newScope = $dbmaster->Scope->init( { application => undef, name => $1 } );
234          } else {
235            my $thisUsers = $dbmaster->User->get_objects( { login => $newAnno } );
236            if ( defined( $thisUsers->[0] ) ) {
237              $newScope = $thisUsers->[0]->get_user_scope();
238            }
239          }
240          my $rights = $dbmaster->Rights->get_objects( { name => 'edit',
241                                                         data_type => 'subsystem',
242                                                         data_id => $name,
243                                                         scope => $newScope } );
244    
245          my $thisRight = $rights->[0];
246          if ( defined( $thisRight ) && $thisRight->delegated ) {
247            $thisRight->delete();
248    
249            $self->application->add_message( 'info', "$newAnno cannot edit this subsystem any more." );
250          }
251          else {
252            $self->application->add_message( 'warning', "You can't revoke the right of $newAnno to edit this subsystem." );
253          }
254        }
255        else {
256          $self->application->add_message( 'warning', "You do not have the right to revoke rights for this subsystem." );
257        }
258      }
259    
260    $subsystem = new Subsystem( $name, $fig, 0 );    $subsystem = new Subsystem( $name, $fig, 0 );
261    
# Line 156  Line 264 
264    my ( $ssversion, $sscurator, $pedigree, $ssroles ) = $fig->subsystem_info( $name );    my ( $ssversion, $sscurator, $pedigree, $ssroles ) = $fig->subsystem_info( $name );
265    
266    my $versionlink = '';    my $versionlink = '';
267  print STDERR $can_alter." CANALTER\n";  
268    if ( $can_alter ) {    if ( $can_alter ) {
269      $versionlink = " -- <A HREF='".$self->application->url()."?page=ResetSubsystem&subsystem=$name'>Reset to Previous Timestamp</A>";      $versionlink = " -- <A HREF='".$self->application->url()."?page=ResetSubsystem&subsystem=$esc_name'>Reset to Previous Timestamp</A>";
     print STDERR $versionlink . " VL\n";  
270    }    }
271    
272    my $mod_time = get_mod_time( $name );    my $mod_time = get_mod_time( $name );
# Line 184  Line 291 
291      $classification_stuff .= "<TR><TH></TH><TD>$class->[1]</TD></TR>";      $classification_stuff .= "<TR><TH></TH><TD>$class->[1]</TD></TR>";
292    }    }
293    
294      print STDERR $versionlink . " VL\n";    my $infotable = "<TABLE><TR><TH>Name:</TH><TD>$ssname</TD></TR>";
   my $infotable = "<TABLE><TR><TH>Name:</TH><TD>$ssname</TD><TR>";  
295    $infotable .= "<TR><TH>Author:</TH><TD>$sscurator</TD></TR>";    $infotable .= "<TR><TH>Author:</TH><TD>$sscurator</TD></TR>";
296      if ( $can_alter && $user->has_right( undef, 'edit', 'subsystem', $name, 1 ) ) {
297    
298        my $annoGrp = $dbmaster->Scope->get_objects( { name => 'Annotators' } );
299        my $annoScope = $dbmaster->UserHasScope->get_objects( { scope => $annoGrp->[0] } );
300        my $annoMems = [];
301        foreach my $aS ( @$annoScope ) {
302          push @$annoMems, $aS->user();
303        }
304        @$annoMems = sort { $a->lastname cmp $b->lastname || $a->firstname cmp $b->firstname } @$annoMems;
305    
306        my $editRightButton = "<INPUT TYPE=SUBMIT ID='GrantRightButton' NAME='GrantRightButton' VALUE='Grant Right'>";
307        my $revokeRightButton = "<INPUT TYPE=SUBMIT ID='RevokeRightButton' NAME='RevokeRightButton' VALUE='Revoke Right'>";
308    
309        my $annotatorsBox = "<SELECT NAME='ANNOBOX' ID='ANNOBOX'>";
310        my $alreadyAnnotatorsBox = "<SELECT NAME='ALANNOBOX' ID='ALANNOBOX'>";
311        foreach my $a ( @$annoMems ) {
312          unless ( $a->has_right( undef, 'edit', 'subsystem', $name ) ) {
313            $annotatorsBox .= "<OPTION VALUE='".$a->login."'>".$a->firstname.' '.$a->lastname.' ( '.$a->login." )</OPTION>";
314          }
315          else {
316            if ( $a->login() ne $user->login() && ( ! $a->has_right( undef, 'edit', 'subsystem', '*' ) ) ) {
317              $alreadyAnnotatorsBox .= "<OPTION VALUE='".$a->login."'>".$a->firstname.' '.$a->lastname.' ( '.$a->login." )</OPTION>";
318            }
319          }
320        }
321    
322        # check for groups
323        my $user_groups = $user->scopes();
324        foreach my $scope (@$user_groups) {
325          next if ($scope->name =~ /^user\:/);
326          next if ($scope->name eq "Annotators");
327          next if ($scope->name eq "Public");
328          if (scalar(@{$dbmaster->Rights->get_objects( { name => 'edit',
329                                                         data_type => 'subsystem',
330                                                         data_id => $name,
331                                                         scope => $scope,
332                                                         granted => 1 } )})) {
333            $alreadyAnnotatorsBox .= "<OPTION VALUE='group:".$scope->name()."'>group: ".$scope->name()."</OPTION>";
334          } else {
335            $annotatorsBox .= "<OPTION VALUE='group:".$scope->name()."'>group: ".$scope->name()."</OPTION>";
336          }
337        }
338    
339        $annotatorsBox .= "</SELECT>";
340        $alreadyAnnotatorsBox .= "</SELECT>";
341    
342        $infotable .= "<TR><TH>Grant Right To Edit To:</TH><TD>$annotatorsBox $editRightButton</TD></TR>";
343        $infotable .= "<TR><TH>Revoke Right To Edit From:</TH><TD>$alreadyAnnotatorsBox $revokeRightButton</TD></TR>";
344      }
345    $infotable .= "<TR><TH>Version:</TH><TD>$ssversion $versionlink</TD></TR>";    $infotable .= "<TR><TH>Version:</TH><TD>$ssversion $versionlink</TD></TR>";
346    $infotable .= "<TR><TH>Last Modified:</TH><TD>$mod_time</TD></TR>";    $infotable .= "<TR><TH>Last Modified:</TH><TD>$mod_time</TD></TR>";
347    
348      # Literature #
349      my $lit = getLiteratures( $fig, $name );
350      my $litstring = '';
351      my $litvoid = '';
352      if ( defined( $lit ) && scalar( @$lit ) > 0 ) {
353        my @litlinks;
354        foreach my $l ( @$lit ) {
355          my $thislink = "<a href=\"javascript:void(0)\"onclick=\"window.open('http://www.ncbi.nlm.nih.gov/sites/entrez?cmd=retrieve&db=pubmed&list_uids=" . $l ."')\">$l</a>";
356          push @litlinks, $thislink;
357        }
358        $litstring = join( ', ', @litlinks );
359        $litvoid = join( ', ', @$lit );
360      }
361    
362      # Weblinks #
363      my ( $wl, $wlvoid ) = getLinks( $fig, $name );
364    
365      my $variants = $subsystem->get_variants();
366    
367    if ( $can_alter ) {    if ( $can_alter ) {
368      $infotable .= "<TR><TH>Description</TH><TD><TEXTAREA NAME='SSDESC' ROWS=6 STYLE='width: 772px;'>$ssdesc</TEXTAREA></TD></TR>";  
369      $infotable .= "<TR><TH>Notes</TH><TD><TEXTAREA NAME='SSNOTES' ROWS=6 STYLE='width: 772px;'>$ssnotes</TEXTAREA></TD></TR>";      my $editLitButton = "<INPUT TYPE=BUTTON ID='EditLitButton' VALUE='Edit Literature' ONCLICK='MakeEditableLit( \"0\" );'><INPUT TYPE=BUTTON ID='ShowLitButton' VALUE='Show Links' STYLE='display: none;' ONCLICK='MakeEditableLit( \"1\" );'>";
370        my $editWLButton = "<INPUT TYPE=BUTTON ID='EditWLButton' VALUE='Edit Weblinks' ONCLICK='MakeEditableWL( \"0\" );'><INPUT TYPE=BUTTON ID='ShowWLButton' VALUE='Show Weblinks' STYLE='display: none;' ONCLICK='MakeEditableWL( \"1\" );'>";
371    
372        $infotable .= "<TR><TH>Literature</TH><TD><TABLE><TR><TD><SPAN ID='LitSpan'>$litstring</SPAN></TD><TD>$editLitButton</TD><TD><INPUT TYPE=TEXT STYLE='width: 200px; display: none;' NAME='SUBSYSLIT' ID='SUBSYSLIT' VALUE='$litvoid'></TD><TD><SPAN ID='TEXTSPAN' STYLE='display: none;'>Multiple PMIDs should be separated by \', \'</SPAN></TD></TR></TABLE></TD></TR>";
373        $infotable .= "<TR><TH>Websites</TH><TD><TABLE><TR><TD><SPAN ID='WLSpan'>$wl</SPAN></TD><TD>$editWLButton</TD><TD><TEXTAREA ROWS=3 STYLE='width: 400px; display: none;' NAME='SUBSYSWL' ID='SUBSYSWL'>$wlvoid</TEXTAREA></TD><TD><SPAN ID='AREASPAN' STYLE='display: none;'>Please use the following format:<BR>Description1 http://www.xyz.org/...<BR>Description2 http://www.xzy.de/...</SPAN></TD></TR></TABLE></TD></TR>";
374        $infotable .= "<TR><TH>Description</TH><TD><TEXTAREA NAME='SSDESC' ROWS=15 STYLE='width: 772px;'>$ssdesc</TEXTAREA></TD></TR>";
375        $infotable .= "<TR><TH>Notes</TH><TD><TEXTAREA NAME='SSNOTES' ROWS=15 STYLE='width: 772px;'>$ssnotes</TEXTAREA></TD></TR>";
376    }    }
377    else {    else {
378      # do a little formating because the notes often contain many many blanks and newlines      # do a little formating because the notes often contain many many blanks and newlines
# Line 201  Line 382 
382      my $ssnotes_brs = $ssnotes;      my $ssnotes_brs = $ssnotes;
383      $ssnotes_brs =~ s/(\n\s)+/\n/g;      $ssnotes_brs =~ s/(\n\s)+/\n/g;
384      $ssnotes_brs =~ s/\n/<BR>/g;      $ssnotes_brs =~ s/\n/<BR>/g;
385        $infotable .= "<TR><TH>Literature</TH><TD>$litstring</TD></TR>";
386        $infotable .= "<TR><TH>Websites</TH><TD>$wl</TD></TR>";
387      $infotable .= "<TR><TH>Description</TH><TD>$ssdesc_brs</TD></TR>";      $infotable .= "<TR><TH>Description</TH><TD>$ssdesc_brs</TD></TR>";
388      $infotable .= "<TR><TH>Notes</TH><TD>$ssnotes_brs</TD></TR>";      $infotable .= "<TR><TH>Notes</TH><TD>$ssnotes_brs</TD></TR>";
389    }    }
390      # variants
391      my $vartable = $self->application->component( 'VarDescTable' );
392      $vartable->columns( [ { name => "Variant" }, { name => "Description" } ] );
393    
394      my $vardata;
395      my $has_variants = 0;
396      foreach my $kv ( sort keys %$variants ) {
397        $has_variants = 1;
398        push @$vardata, [ $kv, $variants->{ $kv } ];
399      }
400      $vartable->data( $vardata );
401      $infotable .= "<TR><TH>Variants</TH><TD>";
402      if ( $has_variants ) {
403        $infotable .= $vartable->output();
404      }
405    
406      if ( $can_alter ) {
407        my $variant_outside = "<INPUT TYPE=BUTTON VALUE='Edit Variants in Variant Overview' NAME='EditVariantsOverview' ID='EditVariantsOverview' ONCLICK='window.open( \"".$self->application->url()."?page=ShowVariants&subsystem=$name\" )'>";
408      $infotable .= $variant_outside;
409      }
410    
411      $infotable .= "</TD</TR>";
412    
413    $infotable .= $classification_stuff;    $infotable .= $classification_stuff;
414    $infotable .= "</TABLE>";    $infotable .= "</TABLE>";
415    
416    if ( $can_alter ) {    if ( $can_alter ) {
417      $infotable .= "<INPUT TYPE=SUBMIT VALUE='Save Changes' ID='SUBMIT' NAME='SUBMIT'>";      $infotable .= "<INPUT TYPE=SUBMIT VALUE='Save Changes' ID='SUBMIT' NAME='SUBMIT' STYLE='background-color: red;'>";
418    }    }
419    
420      if ( $can_alter ) {
421        $content .= "<INPUT TYPE=SUBMIT VALUE='Save Changes' ID='SUBMIT' NAME='SUBMIT'  STYLE='background-color: red;'>";
422      }
423    $content .= $infotable;    $content .= $infotable;
424    $content .= $self->end_form();    $content .= $self->end_form();
425    
# Line 281  Line 490 
490    my @ssclassifications = $fig->all_subsystem_classifications();    my @ssclassifications = $fig->all_subsystem_classifications();
491    my $ssclass;    my $ssclass;
492    foreach my $ssc ( @ssclassifications ) {    foreach my $ssc ( @ssclassifications ) {
493      next if ( ( !defined( $ssc->[0] ) ) || ( !defined( $ssc->[1] ) ) );      if ( !defined( $ssc->[1] ) ) {
494      next if ( ( $ssc->[0] eq '' ) || ( $ssc->[1] eq '' ) );        $ssc->[1] = '';
495        }
496    #    next if ( ( !defined( $ssc->[0] ) ) || ( !defined( $ssc->[1] ) ) );
497        next if ( !defined( $ssc->[0] ) );
498        next if ( $ssc->[0] eq '' );
499    #    next if ( ( $ssc->[0] eq '' ) || ( $ssc->[1] eq '' ) );
500      next if ( ( $ssc->[0] =~ /^\s+$/ ) || ( $ssc->[1] =~ /^\s+$/ ) );      next if ( ( $ssc->[0] =~ /^\s+$/ ) || ( $ssc->[1] =~ /^\s+$/ ) );
501      push @{ $ssclass->{ $ssc->[0] } }, $ssc->[1];      push @{ $ssclass->{ $ssc->[0] } }, $ssc->[1];
502    }    }
# Line 293  Line 507 
507      my $opt = "<SELECT SIZE=5 ID='$firstc' NAME='SUBSYSH2' STYLE='width: 386px;' class='hideme'>";      my $opt = "<SELECT SIZE=5 ID='$firstc' NAME='SUBSYSH2' STYLE='width: 386px;' class='hideme'>";
508      my $optstring = '';      my $optstring = '';
509      foreach my $secc ( sort @{ $ssclass->{ $firstc } } ) {      foreach my $secc ( sort @{ $ssclass->{ $firstc } } ) {
510        if ( defined( $SUBSYSH2 ) && $SUBSYSH2 eq $secc ) {        if ( defined( $SUBSYSH2 ) && $SUBSYSH2 eq $secc && $SUBSYSH1 eq $firstc ) {
511          $optstring .= "<OPTION SELECTED VALUE='$secc'>$secc</OPTION>";          $optstring .= "<OPTION SELECTED VALUE='$secc'>$secc</OPTION>";
512          # we have to show the selectbox if there is a selected value          # we have to show the selectbox if there is a selected value
513          $opt = "<SELECT SIZE=5 ID='$firstc' NAME='SUBSYSH2' STYLE='width: 386px;' class='showme'>";          $opt = "<SELECT SIZE=5 ID='$firstc' NAME='SUBSYSH2' STYLE='width: 386px;' class='showme'>";
# Line 341  Line 555 
555    return $sdContent;    return $sdContent;
556  }  }
557    
558    ########################################
559    # get Literature-string for subsystems #
560    ########################################
561    sub getLiteratures {
562      my ( $fig, $name ) = @_;
563    
564      my $esc_name = uri_escape($name);
565    
566      my $frpubs;
567      my @rel_lit_num = $fig->get_attributes( 'Subsystem:'.$name, "SUBSYSTEM_PUBMED_RELEVANT" );
568    
569      foreach my $k ( @rel_lit_num ) {
570        my ( $ss, $key, $value ) = @$k;
571        push @$frpubs, $value;
572      }
573    
574      return $frpubs;
575    }
576    
577    ######################################
578    # get Weblinks-string for subsystems #
579    ######################################
580    sub getLinks {
581      my ( $fig, $name ) = @_;
582    
583      my $esc_name = uri_escape($name);
584    
585      my $links;
586      my $linksstring = '';
587      my $linksvoid = '';
588      my @rel_link_num = $fig->get_attributes( 'Subsystem:'.$name, "SUBSYSTEM_WEBLINKS" );
589    
590      foreach my $k ( @rel_link_num ) {
591        my ( $ss, $key, @value ) = @$k;
592        $linksstring .= $value[0].": <a href=\"javascript:void(0)\"onclick=\"window.open('".$value[1]."','height=640,width=800,scrollbars=yes,toolbar=yes,status=yes')\">". $value[1]."</a><BR>";
593        $linksvoid .= $value[0]." ".$value[1]."\n";
594      }
595    
596      return ( $linksstring, $linksvoid );
597    }
598    
599    ########################################
600    # set Literature-string for subsystems #
601    ########################################
602    sub setLiteratures {
603      my ( $fig, $name, $newpubs ) = @_;
604    
605      my $esc_name = uri_escape($name);
606    
607      my @values;
608      my @rel_lit_num = $fig->get_attributes( 'Subsystem:'.$name, "SUBSYSTEM_PUBMED_RELEVANT" );
609    
610      foreach my $k ( @rel_lit_num ) {
611        my ( $ss, $key, $value ) = @$k;
612        $fig->delete_matching_attributes( "Subsystem:$name", "SUBSYSTEM_PUBMED_RELEVANT" );
613      }
614    
615      foreach my $np ( @$newpubs ) {
616        $fig->add_attribute( "Subsystem:$name", "SUBSYSTEM_PUBMED_RELEVANT", $np );
617      }
618    }
619    
620    ########################################
621    # set Literature-string for subsystems #
622    ########################################
623    sub setWeblinks {
624      my ( $fig, $name, $newpubs ) = @_;
625    
626      my $esc_name = uri_escape($name);
627    
628      my @values;
629      my @rel_lit_num = $fig->get_attributes( 'Subsystem:'.$name, "SUBSYSTEM_WEBLINKS" );
630    
631      foreach my $k ( @rel_lit_num ) {
632        my ( $ss, $key, $value ) = @$k;
633        $fig->delete_matching_attributes( "Subsystem:$name", "SUBSYSTEM_WEBLINKS" );
634      }
635    
636      foreach my $np ( @$newpubs ) {
637        my @h = split( /\s+/, $np );
638        $fig->add_attribute( "Subsystem:$name", "SUBSYSTEM_WEBLINKS", @h );
639      }
640    }
641    
642  sub supported_rights {  sub supported_rights {
643    
644    return [ [ 'edit', 'subsystem', '*' ] ];    return [ [ 'edit', 'subsystem', '*' ] ];

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.26

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3