package SBEAMS::Immunostain::HTMLPrinter; ############################################################################### # Program : SBEAMS::Immunostain::HTMLPrinter # Author : Eric Deutsch # $Id$ # # Description : This is part of the SBEAMS::WebInterface module which handles # standardized parts of generating HTML. # # This really begs to get a lot more object oriented such that # there are several different contexts under which the a user # can be in, and the header, button bar, etc. vary by context ############################################################################### use strict; use vars qw($sbeams $current_contact_id $current_username $current_work_group_id $current_work_group_name $current_project_id $current_project_name $current_user_context_id); use CGI::Carp qw( croak); use SBEAMS::Connection::DBConnector; use SBEAMS::Connection::Settings; use SBEAMS::Connection::TableInfo; use SBEAMS::Immunostain::Settings; use SBEAMS::Immunostain::TableInfo; use Data::Dumper; ############################################################################### # printPageHeader ############################################################################### sub printPageHeader { my $self = shift; $self->display_page_header(@_); } ############################################################################### # display_page_header ############################################################################### sub display_page_header { my $self = shift; my %args = @_; #### If the output mode is interactive text, display text header $sbeams = $self->getSBEAMS(); if ($sbeams->output_mode() eq 'interactive') { $sbeams->printTextHeader(); return; } #### If the output mode is not html, then we don't want a header here if ($sbeams->output_mode() ne 'html') { return; } my $sbeams = $self->getSBEAMS(); $current_contact_id = $sbeams->getCurrent_contact_id(); # print "this is $current_contact_id"; if ($sbeams->getCurrent_contact_id() ne 107) { $self->displayRegularPageHeader(); } else { $self->displayGuestPageHeader(); } } ## # Should really be named 'scgapGuestPageHeader' ## sub displayGuestPageHeader { my $self = shift; my %args = @_; my $navigation_bar = $args{'navigation_bar'} || "YES"; my $LOGIN_URI = "$SERVER_BASE_DIR$ENV{REQUEST_URI}"; if ($LOGIN_URI =~ /\?/) { $LOGIN_URI .= "&force_login=yes"; } else { $LOGIN_URI .= "?force_login=yes"; } my $pad = ' ' x 5; my $LOGIN_LINK = qq~$padLogin to database
~; #### Obtain main SBEAMS object and use its http_header my $sbeams = $self->getSBEAMS(); my $http_header = $sbeams->get_http_header(); use LWP::UserAgent; use HTTP::Request; my $ua = LWP::UserAgent->new(); my $scgapLink = 'http://scgap.systemsbiology.net'; my $response = $ua->request( HTTP::Request->new( GET => "$scgapLink/skin.php" ) ); my @page = split( "\r", $response->content() ); my $skin = ''; for ( @page ) { $_ =~ s/\<\!-- LOGIN_LINK --\>/$LOGIN_LINK/; last if $_ =~ / End of main content/; $skin .= $_; } $skin =~ s/\/images\//\/sbeams\/images\//gm; print "$http_header\n\n"; print <<" END_PAGE"; $skin END_PAGE $self->printJavascriptFunctions(); } sub displayGuestPageFooter { print qq~

SCGAP UESC - ISB / UW


~; } sub displayRegularPageHeader { my $self = shift; my %args = @_; my $navigation_bar = $args{'navigation_bar'} || "YES"; #### If the output mode is interactive text, display text header my $sbeams = $self->getSBEAMS(); if ($sbeams->output_mode() eq 'interactive') { $sbeams->printTextHeader(); return; } #### If the output mode is not html, then we don't want a header here if ($sbeams->output_mode() ne 'html') { return; } #### Obtain main SBEAMS object and use its http_header $sbeams = $self->getSBEAMS(); my $http_header = $sbeams->get_http_header(); print qq~$http_header $DBTITLE - $SBEAMS_PART ~; $self->printJavascriptFunctions(); $self->printStyleSheet(); #### Determine the Title bar background decoration my $header_bkg = "bgcolor=\"$BGCOLOR\""; $header_bkg = "background=\"/images/plaintop.jpg\"" if ($DBVERSION =~ /Primary/); print qq~ ~; #print ">>>http_header=$http_header
\n"; if ($navigation_bar eq "YES") { print qq~
ISB DBSBEAMS

$DBTITLE - $SBEAMS_PART
$DBVERSION

~; print qq~
$DBTITLE Home
$SBEAMS_PART Home
Logout
 
Manage Tables:
   Projects
   Specimens
   Specimen Blocks
 
   Stains
   (Assays)
   Channels
 
   Slide Images
   (Assay Slide Images)
   Assay Image Subfields
 
   Characterization
 
   Antigens
   Antibodies
   Probes
   Cell Types
   (Structural Unit)
   Detection Methods
   Expression Level
   Abundance
 
   Tissue Types
   Surgical Procs
   Clinical Diags
   Protocols
 
Browse Data:
   Summarize Stains
   Browse BioSeqs
 
Documentation:
   Filename Coding
   Schema (GIF)
   Data Loading
   File Name Convention
 
Other Resources:
   SCGAP Home
   Ontology
   NCBI PROW
     CD Index
 
~; } else { print qq~
~; } } # ############################################################################### # printStyleSheet # # Print the standard style sheet for pages. Use a font size of 10pt if # remote client is on Windows, else use 12pt. This ends up making fonts # appear the same size on Windows+IE and Linux+Netscape. Other tweaks for # different browsers might be appropriate. ############################################################################### sub printStyleSheet { my $self = shift; #### Obtain main SBEAMS object and use its style sheet $sbeams = $self->getSBEAMS(); $sbeams->printStyleSheet(); } ############################################################################### # printJavascriptFunctions # # Print the standard Javascript functions that should appear at the top of # most pages. There probably should be some customization allowance here. # Not sure how to design that yet. ############################################################################### sub printJavascriptFunctions { my $self = shift; my $javascript_includes = shift; print qq~ ~; } ############################################################################### # printPageFooter ############################################################################### sub printPageFooter { my $self = shift; $self->display_page_footer(@_); } ############################################################################### # display_page_footer ############################################################################### sub display_page_footer { my $self = shift; my %args = @_; #### If the output mode is interactive text, display text header my $sbeams = $self->getSBEAMS(); if ($sbeams->output_mode() eq 'interactive') { $sbeams->printTextHeader(%args); return; } #### If the output mode is not html, then we don't want a header here if ($sbeams->output_mode() ne 'html') { return; } $sbeams = $self->getSBEAMS(); $current_contact_id = $sbeams->getCurrent_contact_id(); # print "this is $current_contact_id"; if ($sbeams->getCurrent_contact_id() ne 107) { $self->displayRegularPageFooter(); } else { $self->displayGuestPageFooter(); } } sub displayRegularPageFooter { my $self = shift; my %args = @_; #### Process the arguments list my $close_tables = $args{'close_tables'} || 'YES'; my $display_footer = $args{'display_footer'} || 'YES'; my $separator_bar = $args{'separator_bar'} || 'NO'; #### If closing the content tables is desired if ($close_tables eq 'YES') { print qq~
~; } #### If displaying a fat bar separtor is desired if ($separator_bar eq 'YES') { print "


\n"; } #### If finishing up the page completely is desired if ($display_footer eq 'YES') { #### Default to the Core footer $sbeams->display_page_footer(display_footer=>'YES'); } } ############################################################################### 1; __END__ ############################################################################### ############################################################################### ############################################################################### =head1 NAME SBEAMS::WebInterface::HTMLPrinter - Perl extension for common HTML printing methods =head1 SYNOPSIS Used as part of this system use SBEAMS::WebInterface; $adb = new SBEAMS::WebInterface; $adb->printPageHeader(); $adb->printPageFooter(); $adb->getGoBackButton(); =head1 DESCRIPTION This module is inherited by the SBEAMS::WebInterface module, although it can be used on its own. Its main function is to encapsulate common HTML printing routines used by this application. =head1 METHODS =item B Prints the common HTML header used by all HTML pages generated by theis application =item B Prints the common HTML footer used by all HTML pages generated by this application =item B Returns a form button, coded with javascript, so that when it is clicked the user is returned to the previous page in the browser history. =head1 AUTHOR Eric Deutsch =head1 SEE ALSO perl(1). =cut