[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.15, Mon May 5 15:11:51 2008 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    
   use Data::Dumper;  
   
40    my $fig = new FIG;    my $fig = new FIG;
41    my $cgi = $self->application->cgi;    my $cgi = $self->application->cgi;
42    
# 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( 'Diagram', "SubsysEditor.cgi?page=ShowDiagram&subsystem=$esc_name" );
105    $menu->add_category( 'Subsystem Spreadsheet', "SubsysEditor.cgi?page=ShowSpreadsheet&subsystem=$name" );    $menu->add_category( 'Illustrations', "SubsysEditor.cgi?page=ShowIllustrations&subsystem=$esc_name" );
106    $menu->add_category( 'Subsystem Check', "SubsysEditor.cgi?page=ShowCheck&subsystem=$name" );    $menu->add_category( 'Spreadsheet', "SubsysEditor.cgi?page=ShowSpreadsheet&subsystem=$esc_name" );
107    $menu->add_category( 'Subsystem Tree', "SubsysEditor.cgi?page=ShowTree&subsystem=$name" );    $menu->add_category( 'Show Check', "SubsysEditor.cgi?page=ShowCheck&subsystem=$esc_name" );
108      $menu->add_category( 'Show Connections', "SubsysEditor.cgi?page=ShowTree&subsystem=$esc_name" );
109    
110    
111    ##############################    ##############################
# Line 143  Line 168 
168      }      }
169      $subsystem->set_classification( [ $class1, $class2 ] );      $subsystem->set_classification( [ $class1, $class2 ] );
170    
171        my $litstoset = $cgi->param( 'SUBSYSLIT' );
172        my @lits = split( ', ', $litstoset );
173        setLiteratures( $fig, $name, \@lits );
174    
175        my $wlstoset = $cgi->param( 'SUBSYSWL' );
176        if ( defined( $wlstoset ) && $wlstoset =~ /.+\s+.+/ ) {
177          my @wls = split( '\n', $wlstoset );
178          setWeblinks( $fig, $name, \@wls );
179        }
180    
181      # here we really edit the files in the subsystem directory #      # here we really edit the files in the subsystem directory #
182      $subsystem->incr_version();      $subsystem->incr_version();
183      $subsystem->db_sync();      $subsystem->db_sync();
184      $subsystem->write_subsystem();      $subsystem->write_subsystem();
185    }    }
186    
187      print STDERR $name."\n";
188    
189    $subsystem = new Subsystem( $name, $fig, 0 );    $subsystem = new Subsystem( $name, $fig, 0 );
190    
191    $content .= $self->start_form( 'form', { subsystem => $name } );    $content .= $self->start_form( 'form', { subsystem => $name } );
# Line 156  Line 193 
193    my ( $ssversion, $sscurator, $pedigree, $ssroles ) = $fig->subsystem_info( $name );    my ( $ssversion, $sscurator, $pedigree, $ssroles ) = $fig->subsystem_info( $name );
194    
195    my $versionlink = '';    my $versionlink = '';
196  print STDERR $can_alter." CANALTER\n";  
197    if ( $can_alter ) {    if ( $can_alter ) {
198      $versionlink = " -- <A HREF='".$self->application->url()."?page=ResetSubsystem&subsystem=$name'>Reset to Previous Timestamp</A>";      $versionlink = " -- <A HREF='".$self->application->url()."?page=ResetSubsystem&subsystem=$name'>Reset to Previous Timestamp</A>";
     print STDERR $versionlink . " VL\n";  
199    }    }
200    
201    my $mod_time = get_mod_time( $name );    my $mod_time = get_mod_time( $name );
# Line 184  Line 220 
220      $classification_stuff .= "<TR><TH></TH><TD>$class->[1]</TD></TR>";      $classification_stuff .= "<TR><TH></TH><TD>$class->[1]</TD></TR>";
221    }    }
222    
223      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>";  
224    $infotable .= "<TR><TH>Author:</TH><TD>$sscurator</TD></TR>";    $infotable .= "<TR><TH>Author:</TH><TD>$sscurator</TD></TR>";
225    $infotable .= "<TR><TH>Version:</TH><TD>$ssversion $versionlink</TD></TR>";    $infotable .= "<TR><TH>Version:</TH><TD>$ssversion $versionlink</TD></TR>";
226    $infotable .= "<TR><TH>Last Modified:</TH><TD>$mod_time</TD></TR>";    $infotable .= "<TR><TH>Last Modified:</TH><TD>$mod_time</TD></TR>";
227    
228      # Literature #
229      my $lit = getLiteratures( $fig, $name );
230      my $litstring = '';
231      my $litvoid = '';
232      if ( defined( $lit ) && scalar( @$lit ) > 0 ) {
233        my @litlinks;
234        foreach my $l ( @$lit ) {
235          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>";
236          push @litlinks, $thislink;
237        }
238        $litstring = join( ', ', @litlinks );
239        $litvoid = join( ', ', @$lit );
240      }
241    
242      # Weblinks #
243      my ( $wl, $wlvoid ) = getLinks( $fig, $name );
244    
245      my $variants = $subsystem->get_variants();
246    
247    if ( $can_alter ) {    if ( $can_alter ) {
248    
249        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\" );'>";
250        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\" );'>";
251    
252        $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>";
253        $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>";
254      $infotable .= "<TR><TH>Description</TH><TD><TEXTAREA NAME='SSDESC' ROWS=6 STYLE='width: 772px;'>$ssdesc</TEXTAREA></TD></TR>";      $infotable .= "<TR><TH>Description</TH><TD><TEXTAREA NAME='SSDESC' ROWS=6 STYLE='width: 772px;'>$ssdesc</TEXTAREA></TD></TR>";
255      $infotable .= "<TR><TH>Notes</TH><TD><TEXTAREA NAME='SSNOTES' ROWS=6 STYLE='width: 772px;'>$ssnotes</TEXTAREA></TD></TR>";      $infotable .= "<TR><TH>Notes</TH><TD><TEXTAREA NAME='SSNOTES' ROWS=6 STYLE='width: 772px;'>$ssnotes</TEXTAREA></TD></TR>";
256    }    }
# Line 201  Line 262 
262      my $ssnotes_brs = $ssnotes;      my $ssnotes_brs = $ssnotes;
263      $ssnotes_brs =~ s/(\n\s)+/\n/g;      $ssnotes_brs =~ s/(\n\s)+/\n/g;
264      $ssnotes_brs =~ s/\n/<BR>/g;      $ssnotes_brs =~ s/\n/<BR>/g;
265        $infotable .= "<TR><TH>Literature</TH><TD>$litstring</TD></TR>";
266        $infotable .= "<TR><TH>Websites</TH><TD>$wl</TD></TR>";
267      $infotable .= "<TR><TH>Description</TH><TD>$ssdesc_brs</TD></TR>";      $infotable .= "<TR><TH>Description</TH><TD>$ssdesc_brs</TD></TR>";
268      $infotable .= "<TR><TH>Notes</TH><TD>$ssnotes_brs</TD></TR>";      $infotable .= "<TR><TH>Notes</TH><TD>$ssnotes_brs</TD></TR>";
269    }    }
270      # variants
271      my $vartable = $self->application->component( 'VarDescTable' );
272      $vartable->columns( [ { name => "Variant" }, { name => "Description" } ] );
273    
274      my $vardata;
275      my $has_variants = 0;
276      foreach my $kv ( sort keys %$variants ) {
277        $has_variants = 1;
278        push @$vardata, [ $kv, $variants->{ $kv } ];
279      }
280      $vartable->data( $vardata );
281      $infotable .= "<TR><TH>Variants</TH><TD>";
282      if ( $has_variants ) {
283        $infotable .= $vartable->output();
284      }
285    
286      if ( $can_alter ) {
287        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\" )'>";
288      $infotable .= $variant_outside;
289      }
290    
291      $infotable .= "</TD</TR>";
292    
293    $infotable .= $classification_stuff;    $infotable .= $classification_stuff;
294    $infotable .= "</TABLE>";    $infotable .= "</TABLE>";
295    
# Line 293  Line 379 
379      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'>";
380      my $optstring = '';      my $optstring = '';
381      foreach my $secc ( sort @{ $ssclass->{ $firstc } } ) {      foreach my $secc ( sort @{ $ssclass->{ $firstc } } ) {
382        if ( defined( $SUBSYSH2 ) && $SUBSYSH2 eq $secc ) {        if ( defined( $SUBSYSH2 ) && $SUBSYSH2 eq $secc && $SUBSYSH1 eq $firstc ) {
383          $optstring .= "<OPTION SELECTED VALUE='$secc'>$secc</OPTION>";          $optstring .= "<OPTION SELECTED VALUE='$secc'>$secc</OPTION>";
384          # we have to show the selectbox if there is a selected value          # we have to show the selectbox if there is a selected value
385          $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 427 
427    return $sdContent;    return $sdContent;
428  }  }
429    
430    ########################################
431    # get Literature-string for subsystems #
432    ########################################
433    sub getLiteratures {
434      my ( $fig, $name ) = @_;
435    
436      my $esc_name = uri_escape($name);
437    
438      my $frpubs;
439      my @rel_lit_num = $fig->get_attributes( 'Subsystem:'.$esc_name, "SUBSYSTEM_PUBMED_RELEVANT" );
440    
441      foreach my $k ( @rel_lit_num ) {
442        my ( $ss, $key, $value ) = @$k;
443        push @$frpubs, $value;
444      }
445    
446      return $frpubs;
447    }
448    
449    ######################################
450    # get Weblinks-string for subsystems #
451    ######################################
452    sub getLinks {
453      my ( $fig, $name ) = @_;
454    
455      my $esc_name = uri_escape($name);
456    
457      my $links;
458      my $linksstring = '';
459      my $linksvoid = '';
460      my @rel_link_num = $fig->get_attributes( 'Subsystem:'.$esc_name, "SUBSYSTEM_WEBLINKS" );
461    
462      foreach my $k ( @rel_link_num ) {
463        my ( $ss, $key, @value ) = @$k;
464        $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>";
465        $linksvoid .= $value[0]." ".$value[1]."\n";
466      }
467    
468      return ( $linksstring, $linksvoid );
469    }
470    
471    ########################################
472    # set Literature-string for subsystems #
473    ########################################
474    sub setLiteratures {
475      my ( $fig, $name, $newpubs ) = @_;
476    
477      my $esc_name = uri_escape($name);
478    
479      my @values;
480      my @rel_lit_num = $fig->get_attributes( 'Subsystem:'.$esc_name, "SUBSYSTEM_PUBMED_RELEVANT" );
481    
482      foreach my $k ( @rel_lit_num ) {
483        my ( $ss, $key, $value ) = @$k;
484        $fig->delete_matching_attributes( "Subsystem:$esc_name", "SUBSYSTEM_PUBMED_RELEVANT", $value );
485      }
486    
487      foreach my $np ( @$newpubs ) {
488        $fig->add_attribute( "Subsystem:$esc_name", "SUBSYSTEM_PUBMED_RELEVANT", $np );
489      }
490    }
491    
492    ########################################
493    # set Literature-string for subsystems #
494    ########################################
495    sub setWeblinks {
496      my ( $fig, $name, $newpubs ) = @_;
497    
498      my $esc_name = uri_escape($name);
499    
500      my @values;
501      my @rel_lit_num = $fig->get_attributes( 'Subsystem:'.$esc_name, "SUBSYSTEM_WEBLINKS" );
502    
503      foreach my $k ( @rel_lit_num ) {
504        my ( $ss, $key, $value ) = @$k;
505        $fig->delete_matching_attributes( "Subsystem:$esc_name", "SUBSYSTEM_WEBLINKS", $value );
506      }
507    
508      foreach my $np ( @$newpubs ) {
509        my @h = split( /\s+/, $np );
510        $fig->add_attribute( "Subsystem:$esc_name", "SUBSYSTEM_WEBLINKS", @h );
511      }
512    }
513    
514  sub supported_rights {  sub supported_rights {
515    
516    return [ [ 'edit', 'subsystem', '*' ] ];    return [ [ 'edit', 'subsystem', '*' ] ];

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3