[Bio] / SeedViewer / seedviewer.cgi Repository:
ViewVC logotype

Diff of /SeedViewer/seedviewer.cgi

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

revision 1.32, Wed Aug 26 20:33:50 2009 UTC revision 1.40, Thu Sep 29 01:51:35 2011 UTC
# Line 2  Line 2 
2  use warnings;  use warnings;
3  no warnings 'once';  no warnings 'once';
4    
 my $have_fcgi;  
 eval {  
     require CGI::Fast;  
     $have_fcgi = 1;  
 };  
   
 use IO::Handle;  
 #open(TICKLOG, ">/dev/pts/9") or open(TICKLOG, ">&STDERR");  
 #TICKLOG->autoflush(1);  
   
 use Time::HiRes 'gettimeofday';  
 my $start = gettimeofday;  
 my $time_last;  
 sub tick {  
     my($w) = @_;  
     my $now = gettimeofday;  
     my $t = $now - $start;  
     my $tms = int(($now - $time_last) * 1000);  
     $time_last = $now;  
     my ($package, $filename, $line) = caller;  
     if (1)  
     {  
         $filename =~ s,.*/common/lib,/lib,;  
         $filename =~ s,.*/CGI,/CGI,;  
         $filename =~ s/WebApplication/WA/;  
         $filename =~ s/WebComponent/WC/;  
     }  
   
     printf TICKLOG "$$ %-40s %5d %8d %.3f\n", $filename, $line, $tms, $t;  
     TICKLOG->flush();  
 }  
   
   
5  use DBMaster;  use DBMaster;
6  use WebApplication;  use WebApplication;
7  use WebMenu;  use WebMenu;
# Line 43  Line 10 
10  use FIGRules;  use FIGRules;
11  use FIG_Config;  use FIG_Config;
12  use WebConfig;  use WebConfig;
13    use Data::Dumper;
14    
15  #  my $have_fcgi;
16  # If no CGI vars, assume we are invoked as a fastcgi service.  eval {
17  #      require CGI::Fast;
18  my $n_requests = 0;      $have_fcgi = 1;
19  if ($have_fcgi && $ENV{REQUEST_METHOD} eq '')  };
20    
21    if ($have_fcgi && ! $ENV{REQUEST_METHOD})
22  {  {
23    
24      #      #
25      # Precompile modules. Find where we found one, and use that path      # Precompile modules. Find where we found one, and use that path
26      # to walk for the rest.      # to walk for the rest.
27      #      #
   
28      my $mod_path = $INC{"WebComponent/Ajax.pm"};      my $mod_path = $INC{"WebComponent/Ajax.pm"};
29      if ($mod_path && $mod_path =~ s,WebApplication/WebComponent/Ajax\.pm$,,)      if ($mod_path && $mod_path =~ s,WebApplication/WebComponent/Ajax\.pm$,,)
30      {      {
# Line 75  Line 45 
45              }              }
46          }          }
47      }      }
48      my $max_requests = 100;  
49      while ((my $cgi = new CGI::Fast()) &&      my $max_requests = $FIG_Config::fcgi_max_requests || 50;
50             ($max_requests == 0 || $n_requests++ < $max_requests))      my $n_requests = 0;
51    
52        warn "begin loop\n";
53        while (($max_requests == 0 || $n_requests++ < $max_requests) &&
54               (my $cgi = new CGI::Fast()))
55      {      {
56          eval {          eval {
57              &main($cgi);              &main($cgi);
58          };          };
59    
60          if ($@)          if ($@)
61          {          {
62              if ($@ =~ /^cgi_exit/)              my $error = $@;
63              {              Warn("Script error: $error") if T(SeedViewer => 0);
64                  # this is ok.  
65              }              print CGI::header();
66              elsif (ref($@) ne 'ARRAY')              print CGI::start_html();
67              {  
68                  warn "code died, cgi=$cgi returning error\n";              # print out the error
69                  print $cgi->header(-status => '500 error in body of cgi processing');              print '<pre>'.$error.'</pre>';
70                  print $@;  
71              }              print CGI::end_html();
72          }          }
     endloop:  
73      }      }
74  }  }
75  else  else
76  {  {
77      my $cgi = new CGI();      my $cgi = new CGI;
78      eval { &main($cgi); };      eval {
79            &main($cgi);
80      if ($@ && $@ !~ /^cgi_exit/)      };
81        if ($@)
82      {      {
83          my $error = $@;          my $error = $@;
84          Warn("Script error: $error") if T(SeedViewer => 0);          Warn("Script error: $error") if T(SeedViewer => 0);
# Line 115  Line 90 
90          print '<pre>'.$error.'</pre>';          print '<pre>'.$error.'</pre>';
91    
92          print CGI::end_html();          print CGI::end_html();
   
93      }      }
94  }  }
95    
96  sub main {  sub main {
97      my($cgi) = @_;      my($cgi) = @_;
98    
99        # Initialize tracing.
100      ETracing($cgi);      ETracing($cgi);
101      if (FIGRules::nmpdr_mode($cgi)) {      if (FIGRules::nmpdr_mode($cgi)) {
102          Trace("NMPDR mode selected.") if T(3);          Trace("NMPDR mode selected.") if T(3);
# Line 133  Line 109 
109          print CGI::redirect(-uri => "$FIG_Config::cgi_url/wiki/rest.cgi/NmpdrPlugin/SeedViewer$parms",          print CGI::redirect(-uri => "$FIG_Config::cgi_url/wiki/rest.cgi/NmpdrPlugin/SeedViewer$parms",
110                              -status => 301);                              -status => 301);
111      } else {      } else {
112            if ($FIG_Config::log_cgi)
113            {
114                if (open(CLOG, ">>", $FIG_Config::log_cgi))
115                {
116                    for my $p (sort $cgi->param)
117                    {
118                        print CLOG Data::Dumper->Dump([$cgi->param($p)], [qq(\$params{'$p'})]);
119                    }
120                    close(CLOG);
121                }
122            }
123    
124          # initialize layout          # initialize layout
125          # Use the template file for the current mode-- NMPDR or SEED          # Use the template file for the current mode-- NMPDR or SEED
# Line 152  Line 139 
139          $menu->add_entry('&raquo;Navigate', 'Subsystems', '?page=SubsystemSelect');          $menu->add_entry('&raquo;Navigate', 'Subsystems', '?page=SubsystemSelect');
140          $menu->add_entry('&raquo;Navigate', 'Scenarios', '?page=Scenarios');          $menu->add_entry('&raquo;Navigate', 'Scenarios', '?page=Scenarios');
141          $menu->add_entry('&raquo;Navigate', 'FigFams', '?page=FigFamViewer');          $menu->add_entry('&raquo;Navigate', 'FigFams', '?page=FigFamViewer');
142            if ($FIG_Config::atomic_regulon_dir && -d $FIG_Config::atomic_regulon_dir)
143            {
144                $menu->add_entry('&raquo;Navigate', 'Atomic Regulons', '?page=AtomicRegulon&genome=all');
145            }
146          $menu->add_entry('&raquo;Navigate', 'BLAST Search', '?page=BlastRun');          $menu->add_entry('&raquo;Navigate', 'BLAST Search', '?page=BlastRun');
147            $menu->add_entry('&raquo;Navigate', 'Request a Subsystem', '?page=SubsystemPrimer');
148          if (defined($FIG_Config::teacher_db)) {          if (defined($FIG_Config::teacher_db)) {
149              $menu->add_category('&raquo;Teacher', '?page=Teach', undef, ['edit', 'problem_list'], 96);              $menu->add_category('&raquo;Teacher', '?page=Teach', undef, ['edit', 'problem_list'], 96);
150              $menu->add_entry('&raquo;Teacher', 'Class Performance', '?page=Teach');              $menu->add_entry('&raquo;Teacher', 'Class Performance', '?page=Teach');
# Line 161  Line 153 
153              $menu->add_entry('&raquo;Teacher', 'Annotation Resolve', '?page=ClassAnnotationResolve');              $menu->add_entry('&raquo;Teacher', 'Annotation Resolve', '?page=ClassAnnotationResolve');
154          }          }
155          $menu->add_category('&raquo;Help', 'http://www.theseed.org', 'help', undef, 98);          $menu->add_category('&raquo;Help', 'http://www.theseed.org', 'help', undef, 98);
156          $menu->add_entry('&raquo;Help', 'What is the SEED', 'http://www.theseed.org/wiki/Home_of_the_SEED');          $menu->add_entry('&raquo;Help', 'What is the SEED', 'http://www.theseed.org/wiki/index.php/Home_of_the_SEED');
157          $menu->add_entry('&raquo;Help', 'HowTo use the SEED Viewer', 'http://www.theseed.org/wiki/SEED_Viewer_Tutorial');          $menu->add_entry('&raquo;Help', 'HowTo use the SEED Viewer', 'http://www.theseed.org/wiki/index.php/SEED_Viewer_Tutorial');
158          $menu->add_entry('&raquo;Help', 'Submitting Data to SEED', 'http://www.theseed.org/wiki/RAST_Tutorial');          $menu->add_entry('&raquo;Help', 'Submitting Data to SEED', 'http://www.theseed.org/wiki/index.php/RAST_Tutorial');
159    
160          # check which contact info to show          # check which contact info to show
161          if (defined($FIG_Config::server_type) && ($FIG_Config::server_type eq 'MG-RAST')) {          if (defined($FIG_Config::server_type) && ($FIG_Config::server_type eq 'MG-RAST')) {
# Line 176  Line 168 
168          $menu->add_entry('&raquo;Help', 'Register', '?page=Register');          $menu->add_entry('&raquo;Help', 'Register', '?page=Register');
169          $menu->add_entry('&raquo;Help', 'I forgot my Password', '?page=RequestNewPassword');          $menu->add_entry('&raquo;Help', 'I forgot my Password', '?page=RequestNewPassword');
170    
171            my $default_page = $FIG_Config::seedviewer_default_home || "Home";
172    
173          # initialize application          # initialize application
174          my $WebApp = WebApplication->new( { id => 'SeedViewer',          my $WebApp = WebApplication->new( { id => 'SeedViewer',
175                                              menu     => $menu,                                              menu     => $menu,
176                                              layout   => $layout,                                              layout   => $layout,
177                                              default  => 'Home',                                              default  => $default_page,
178                                              cgi => $cgi,                                              cgi => $cgi,
179                                            } );                                            } );
180    

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.40

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3