[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.33, Wed Sep 1 15:16:17 2010 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 $available_groups = {};
298        foreach my $user_has_scope (@$user_has_scopes) {
299          my $scope = $user_has_scope->scope();
300          next if $scope->name() =~ /^user:/;
301          next if $scope->name() =~/^Public/;
302          $available_groups->{$scope->{_id}} = $scope;
303        }
304        my $all_ss_edit_rights = $dbmaster->Rights->get_objects( { name => 'edit',
305                                                                   data_type => 'subsystem',
306                                                                   data_id => $name } );
307        my $user_groups_have_right = [];
308        my $user_groups_not_have_right = [];
309        foreach my $r (@$all_ss_edit_rights) {
310          my $scope = $r->scope;
311          next if $scope->name() =~ /^user:/;
312          next if $scope->name() =~/^Public/;
313          push(@$user_groups_have_right, [ $scope->_id, $scope->name ]);
314          delete $available_groups->{$scope->{_id}};
315        }
316        foreach my $key (sort(keys(%$available_groups))) {
317          my $scope = $available_groups->{$key};
318          push(@$user_groups_not_have_right, [ $scope->_id, $scope->name ]);
319        }
320    
321      my $annotatorsBox = "<SELECT NAME='ANNOBOX' ID='ANNOBOX'>";      my $annotatorsBox = "<SELECT NAME='ANNOBOX' ID='ANNOBOX'>";
322      my $alreadyAnnotatorsBox = "<SELECT NAME='ALANNOBOX' ID='ALANNOBOX'>";      my $alreadyAnnotatorsBox = "<SELECT NAME='ALANNOBOX' ID='ALANNOBOX'>";
323        foreach my $a ( @$user_groups_have_right ) {
324          $alreadyAnnotatorsBox .= "<OPTION VALUE='".$a->[0]."|group ".$a->[1]."'>group ".$a->[1]."</OPTION>";
325        }
326        foreach my $a ( @$user_groups_not_have_right ) {
327          $annotatorsBox .= "<OPTION VALUE='".$a->[0]."|group ".$a->[1]."'>group ".$a->[1]."</OPTION>";
328        }
329      foreach my $a ( @$annoMems ) {      foreach my $a ( @$annoMems ) {
330        unless ( $a->has_right( undef, 'edit', 'subsystem', $name ) ) {        my $r = $dbmaster->Rights->get_objects( { name => 'edit',
331          $annotatorsBox .= "<OPTION VALUE='".$a->login."'>".$a->firstname.' '.$a->lastname.' ( '.$a->login." )</OPTION>";                                                  scope => $a->get_user_scope,
332                                                    data_type => 'subsystem',
333                                                    data_id => $name } );
334          unless ( scalar(@$r) ) {
335            $annotatorsBox .= "<OPTION VALUE='".$a->get_user_scope->_id."|".$a->firstname." ".$a->lastname."'>".$a->firstname.' '.$a->lastname.' ( '.$a->login." )</OPTION>";
336        }        }
337        else {        else {
338          if ( $a->login() ne $user->login() && ( ! $a->has_right( undef, 'edit', 'subsystem', '*' ) ) ) {          if ( $a->login() ne $user->login() && ( ! $a->has_right( undef, 'edit', 'subsystem', '*' ) ) ) {
339            $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>";
340          }          }
341        }        }
342      }      }

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3