Annotation of loncom/publisher/lonpublisher.pm, revision 1.2

1.1       www         1: # The LearningOnline Network with CAPA
                      2: # Publication Handler
                      3: # 
                      4: # (TeX Content Handler
                      5: #
                      6: # 05/29/00,05/30,10/11 Gerd Kortemeyer)
                      7: #
1.2     ! www         8: # 11/28,11/29 Gerd Kortemeyer
1.1       www         9: 
                     10: package Apache::lonpublisher;
                     11: 
                     12: use strict;
                     13: use Apache::File;
1.2     ! www        14: use Apache::Constants qw(:common :http :methods);
        !            15: use HTML::TokeParser;
        !            16: 
        !            17: sub publish {
        !            18:     my ($source,$target,$style)=@_;
        !            19:     my $logfile;
        !            20:     unless ($logfile=Apache::File->new('>>'.$source.'.log')) {
        !            21: 	return 'No write permission to user directory, FAIL';
        !            22:     }
        !            23:     print $logfile 
        !            24: "\n\n================== Publish ".localtime()." =================\n";
        !            25: 
        !            26:     my $version='';
        !            27:    
        !            28:     return 'Version '.$version.', SUCCESS';
        !            29: }
1.1       www        30: 
                     31: # ================================================================ Main Handler
                     32: 
                     33: sub handler {
                     34:   my $r=shift;
1.2     ! www        35: 
        !            36:   if ($r->header_only) {
        !            37:      $r->content_type('text/html');
        !            38:      $r->send_http_header;
        !            39:      return OK;
        !            40:   }
        !            41: 
        !            42: # -------------------------------------------------------------- Check filename
        !            43: 
        !            44:   my $fn=$ENV{'form.filename'};
        !            45: 
        !            46:   unless ($fn) { 
        !            47:      $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
        !            48:          ' trying to publish empty filename', $r->filename); 
        !            49:      return HTTP_NOT_FOUND;
        !            50:   } 
        !            51: 
        !            52:   $fn=~s/^http\:\/\/[^\/]+\/\~(\w+)/\/home\/$1\/public_html/;
        !            53: 
        !            54:   my $targetdir='';
        !            55:   my $docroot=$r->dir_config('lonDocRoot'); 
        !            56:   if ($1 ne $ENV{'user.name'}) {
        !            57:      $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
        !            58:          ' trying to publish unowned file '.$ENV{'form.filename'}.
        !            59:          ' ('.$fn.')', 
        !            60:          $r->filename); 
        !            61:      return HTTP_NOT_ACCEPTABLE;
        !            62:   } else {
        !            63:       $targetdir=$docroot.'/res/'.$ENV{'user.domain'};
        !            64:   }
        !            65:                                  
        !            66:   
        !            67:   unless (-e $fn) { 
        !            68:      $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
        !            69:          ' trying to publish non-existing file '.$ENV{'form.filename'}.
        !            70:          ' ('.$fn.')', 
        !            71:          $r->filename); 
        !            72:      return HTTP_NOT_FOUND;
        !            73:   } 
        !            74: 
        !            75: # --------------------------------- File is there and owned, init lookup tables
        !            76: 
        !            77: # ----------------------------------------------------------- Start page output
        !            78: 
1.1       www        79:   $r->content_type('text/html');
                     80:   $r->send_http_header;
                     81: 
                     82:   $r->print('<html><head><title>LON-CAPA Publishing</title></head>');
                     83:   $r->print('<body bgcolor="#FFFFFF">');
1.2     ! www        84:   my $thisfn=$fn;
        !            85:    
        !            86: # ------------------------------------------------------------- Individual file
        !            87:   {
        !            88:       $thisfn=~/\.(\w+)$/;
        !            89:       my $thistype=$1;
        !            90:       my $thisembstyle=&Apache::lonnet::fileembstyle($thistype);
        !            91: 
        !            92:       my $thistarget=$thisfn;
        !            93:       
        !            94:       $thistarget=~s/^\/home/$targetdir/;
        !            95:       $thistarget=~s/\/public\_html//;
        !            96: 
        !            97:       my $thisdistarget=$thistarget;
        !            98:       $thisdistarget=~s/^$docroot//;
        !            99: 
        !           100:       my $thisdisfn=$thisfn;
        !           101:       $thisdisfn=~s/^\/home\/$ENV{'user.name'}\/public_html\///;
        !           102: 
        !           103:       $r->print('<h2>Publishing '.
        !           104:         &Apache::lonnet::filedescription($thistype).' <tt>'.
        !           105:         $thisdisfn.'</tt></h2><b>Target:</b> <tt>'.$thisdistarget.'</tt><p>');
        !           106: 
        !           107: # ------------ We are publishing from $thisfn to $thistarget with $thisembstyle
        !           108: 
        !           109:       $r->print('<b>Result:</b> '.&publish($thisfn,$thistarget,$thisembstyle));
        !           110:       
        !           111:   }  
        !           112: 
1.1       www       113:   $r->print('</body></html>');
                    114: 
                    115:   return OK;
                    116: }
                    117: 
                    118: 1;
                    119: __END__
                    120: 
                    121: 
                    122: 
                    123: 
                    124: 
                    125: 
                    126: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>