[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.28, Wed Jun 17 15:14:19 2009 UTC revision 1.30, Fri Oct 23 12:32:31 2009 UTC
# Line 189  Line 189 
189    }    }
190    elsif ( defined( $cgi->param( 'GrantRightButton' ) ) ) {    elsif ( defined( $cgi->param( 'GrantRightButton' ) ) ) {
191      if ( $can_alter && $user->has_right( undef, 'edit', 'subsystem', $name, 1 ) ) {      if ( $can_alter && $user->has_right( undef, 'edit', 'subsystem', $name, 1 ) ) {
192        my $newAnno = $cgi->param( 'ANNOBOX' );        my ($newAnno, $readable_name) = split(/|/, $cgi->param( 'ANNOBOX' ));
193        my $thisUsers = $dbmaster->User->get_objects( { login => $newAnno } );        my $thisScopes = $dbmaster->Scope->get_objects( { _id => $newAnno } );
194        if ( defined( $thisUsers->[0] ) ) {        if ( defined( $thisScopes->[0]) ) {
195    
196          my $rights = $dbmaster->Rights->get_objects( { name => 'edit',          my $rights = $dbmaster->Rights->get_objects( { name => 'edit',
197                                                         data_type => 'subsystem',                                                         data_type => 'subsystem',
198                                                         data_id => $name,                                                         data_id => $name,
199                                                         scope => $thisUsers->[0]->get_user_scope() } );                                                         scope => $thisScopes->[0] } );
200          if ( defined( $rights->[0] ) ) {          if ( defined( $rights->[0] ) ) {
201            $self->application->add_message( 'warning', "User $newAnno already has the right to edit this subsystem." );            $self->application->add_message( 'warning', "$readable_name already has the right to edit this subsystem." );
202          }          }
203          else {          else {
204            my $right = $dbmaster->Rights->create( { granted => 1,            my $right = $dbmaster->Rights->create( { granted => 1,
# Line 206  Line 206 
206                                                     name => 'edit',                                                     name => 'edit',
207                                                     data_type => 'subsystem',                                                     data_type => 'subsystem',
208                                                     data_id => $name,                                                     data_id => $name,
209                                                     scope => $thisUsers->[0]->get_user_scope() } );                                                     scope => $thisScopes->[0] } );
210            if ( $right ) {            if ( $right ) {
211              $self->application->add_message( 'info', "$newAnno can now edit this subsystem" );              $self->application->add_message( 'info', "$readable_name can now edit this subsystem" );
212            }            }
213            else {            else {
214              $self->application->add_message( 'warning', "Could not create right to edit the subsystem for user $newAnno" );              $self->application->add_message( 'warning', "Could not create right to edit the subsystem for $readable_name" );
215            }            }
216          }          }
217        }        }
# Line 222  Line 222 
222    }    }
223    elsif ( defined( $cgi->param( 'RevokeRightButton' ) ) ) {    elsif ( defined( $cgi->param( 'RevokeRightButton' ) ) ) {
224      if ( $can_alter && $user->has_right( undef, 'edit', 'subsystem', $name, 1 ) ) {      if ( $can_alter && $user->has_right( undef, 'edit', 'subsystem', $name, 1 ) ) {
225        my $newAnno = $cgi->param( 'ALANNOBOX' );        my ($newAnno, $readable_name) = split(/|/, $cgi->param( 'ALANNOBOX' ));
226        my $thisUsers = $dbmaster->User->get_objects( { login => $newAnno } );        my $thisScopes = $dbmaster->Scope->get_objects( { _id => $newAnno } );
227        my $rights = $dbmaster->Rights->get_objects( { name => 'edit',        my $rights = $dbmaster->Rights->get_objects( { name => 'edit',
228                                                       data_type => 'subsystem',                                                       data_type => 'subsystem',
229                                                       data_id => $name,                                                       data_id => $name,
230                                                       scope => $thisUsers->[0]->get_user_scope() } );                                                       scope => $thisScopes->[0] } );
231    
232        my $thisRight = $rights->[0];        my $thisRight = $rights->[0];
233        if ( defined( $thisRight ) && $thisRight->delegated ) {        if ( defined( $thisRight ) && $thisRight->delegated ) {
234          $thisRight->delete();          $thisRight->delete();
235    
236          $self->application->add_message( 'info', "$newAnno cannot edit this subsystem any more." );          $self->application->add_message( 'info', "$readable_name cannot edit this subsystem any more." );
237        }        }
238        else {        else {
239          $self->application->add_message( 'warning', "You can't revoke the right of $newAnno to edit this subsystem." );          $self->application->add_message( 'warning', "You can't revoke the right of $readable_name to edit this subsystem." );
240        }        }
241      }      }
242      else {      else {
# Line 293  Line 293 
293      my $editRightButton = "<INPUT TYPE=SUBMIT ID='GrantRightButton' NAME='GrantRightButton' VALUE='Grant Right'>";      my $editRightButton = "<INPUT TYPE=SUBMIT ID='GrantRightButton' NAME='GrantRightButton' VALUE='Grant Right'>";
294      my $revokeRightButton = "<INPUT TYPE=SUBMIT ID='RevokeRightButton' NAME='RevokeRightButton' VALUE='Revoke Right'>";      my $revokeRightButton = "<INPUT TYPE=SUBMIT ID='RevokeRightButton' NAME='RevokeRightButton' VALUE='Revoke Right'>";
295    
296        my $user_has_scopes = $dbmaster->UserHasScope->get_objects( { user => $user });
297        my $user_groups_have_right = [];
298        my $user_groups_not_have_right = [];
299        foreach my $user_has_scope (@$user_has_scopes) {
300          my $scope = $user_has_scope->scope();
301          next if $scope->name() =~ /^user:/;
302          next if $scope->name() =~/^Public/;
303          if (scalar(@{$dbmaster->Rights->get_objects( { name => 'edit',
304                                                         data_type => 'subsystem',
305                                                         data_id => $name,
306                                                         scope => $scope } )})) {
307            push(@$user_groups_have_right, [ $scope->_id, $scope->name ]);
308          } else {
309            push(@$user_groups_not_have_right, [ $scope->_id, $scope->name ]);
310          }
311        }
312    
313      my $annotatorsBox = "<SELECT NAME='ANNOBOX' ID='ANNOBOX'>";      my $annotatorsBox = "<SELECT NAME='ANNOBOX' ID='ANNOBOX'>";
314      my $alreadyAnnotatorsBox = "<SELECT NAME='ALANNOBOX' ID='ALANNOBOX'>";      my $alreadyAnnotatorsBox = "<SELECT NAME='ALANNOBOX' ID='ALANNOBOX'>";
315        foreach my $a ( @$user_groups_have_right ) {
316          $alreadyAnnotatorsBox .= "<OPTION VALUE='".$a->[0]."|group ".$a->[1]."'>group ".$a->[1]."</OPTION>";
317        }
318        foreach my $a ( @$user_groups_not_have_right ) {
319          $annotatorsBox .= "<OPTION VALUE='".$a->[0]."|group ".$a->[1]."'>group ".$a->[1]."</OPTION>";
320        }
321      foreach my $a ( @$annoMems ) {      foreach my $a ( @$annoMems ) {
322        unless ( $a->has_right( undef, 'edit', 'subsystem', $name ) ) {        unless ( $a->has_right( undef, 'edit', 'subsystem', $name ) ) {
323          $annotatorsBox .= "<OPTION VALUE='".$a->login."'>".$a->firstname.' '.$a->lastname.' ( '.$a->login." )</OPTION>";          $annotatorsBox .= "<OPTION VALUE='".$a->get_user_scope->_id."|".$a->firstname." ".$a->lastname."'>".$a->firstname.' '.$a->lastname.' ( '.$a->login." )</OPTION>";
324        }        }
325        else {        else {
326          if ( $a->login() ne $user->login() && ( ! $a->has_right( undef, 'edit', 'subsystem', '*' ) ) ) {          if ( $a->login() ne $user->login() && ( ! $a->has_right( undef, 'edit', 'subsystem', '*' ) ) ) {
327            $alreadyAnnotatorsBox .= "<OPTION VALUE='".$a->login."'>".$a->firstname.' '.$a->lastname.' ( '.$a->login." )</OPTION>";            $alreadyAnnotatorsBox .= "<OPTION VALUE='".$a->get_user_scope->_id."|".$a->firstname." ".$a->lastname."'>".$a->firstname.' '.$a->lastname.' ( '.$a->login." )</OPTION>";
328          }          }
329        }        }
330      }      }

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.30

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3