[LON-CAPA-cvs] cvs: loncom /publisher lonupload.pm

albertel lon-capa-cvs@mail.lon-capa.org
Sat, 08 Nov 2003 11:04:52 -0000


This is a MIME encoded message

--albertel1068289492
Content-Type: text/plain

albertel		Sat Nov  8 06:04:52 2003 EDT

  Modified files:              
    /loncom/publisher	lonupload.pm 
  Log:
  - retabinate
  
  
--albertel1068289492
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20031108060452.txt"

Index: loncom/publisher/lonupload.pm
diff -u loncom/publisher/lonupload.pm:1.21 loncom/publisher/lonupload.pm:1.22
--- loncom/publisher/lonupload.pm:1.21	Sat Nov  8 05:58:30 2003
+++ loncom/publisher/lonupload.pm	Sat Nov  8 06:04:52 2003
@@ -2,7 +2,7 @@
 # The LearningOnline Network with CAPA
 # Handler to upload files into construction space
 #
-# $Id: lonupload.pm,v 1.21 2003/11/08 10:58:30 albertel Exp $
+# $Id: lonupload.pm,v 1.22 2003/11/08 11:04:52 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -46,17 +46,17 @@
 
 sub Debug {
   
-  # Marshall the parameters.
+    # Marshall the parameters.
   
-  my $r       = shift;
-  my $log     = $r->log;
-  my $message = shift;
+    my $r       = shift;
+    my $log     = $r->log;
+    my $message = shift;
   
-  # Put out the indicated message butonly if DEBUG is false.
+    # Put out the indicated message butonly if DEBUG is false.
   
-  if ($DEBUG) {
-    $log->debug($message);
-  }
+    if ($DEBUG) {
+	$log->debug($message);
+    }
 }
 
 sub upfile_store {
@@ -79,197 +79,191 @@
 
 
 sub phaseone {
-   my ($r,$fn,$uname,$udom)=@_;
-   $ENV{'form.upfile.filename'}=~s/\\/\//g;
-   $ENV{'form.upfile.filename'}=~s/^.*\/([^\/]+)$/$1/;
-   if ($ENV{'form.upfile.filename'}) {
-    $fn=~s/\/[^\/]+$//;
-    $fn=~s/([^\/])$/$1\//;
-    $fn.=$ENV{'form.upfile.filename'};
-    $fn=~s/^\///;
-    $fn=~s/(\/)+/\//g;
+    my ($r,$fn,$uname,$udom)=@_;
+    $ENV{'form.upfile.filename'}=~s/\\/\//g;
+    $ENV{'form.upfile.filename'}=~s/^.*\/([^\/]+)$/$1/;
+    if ($ENV{'form.upfile.filename'}) {
+	$fn=~s/\/[^\/]+$//;
+	$fn=~s/([^\/])$/$1\//;
+	$fn.=$ENV{'form.upfile.filename'};
+	$fn=~s/^\///;
+	$fn=~s/(\/)+/\//g;
 
 #    Fn is the full path to the destination filename.
 #    
 
-    &Debug($r, "Filename for upload: $fn");
-    if (($fn) && ($fn!~/\/$/)) {
-      $r->print(
- '<form action=/adm/upload method=post>'.
- '<input type=hidden name=phase value=two>'.
- '<input type=hidden name=datatoken value="'.&upfile_store.'">'.
- '<input type=hidden name=uploaduname value="'.$uname.'">'.
- &mt('Store uploaded file as ')."<tt>/priv/$uname/</tt>".
- '<input type=text size=50 name=filename value="'.$fn.'"><br>'.
- '<input type=submit value="'.&mt('Store').'"></form>');
-      # Check for bad extension and warn user
-      if ($fn=~/\.(\w+)$/ && 
-	  (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
-	  $r->print(
- '<font color=red>'.
- &mt('The extension on this file,').' "'.$1.
- '"'.&mt(', is reserved internally by LON-CAPA.').' <br \>'.
- &mt('Please change the extension.').
- '</font>');
-      } elsif($fn=~/\.(\w+)$/ && 
-	      !defined(&Apache::loncommon::fileembstyle($1))) {
-	  $r->print(
- '<font color=red>'.
- &mt('The extension on this file,').' "'.$1.
- '"'.&mt(', is not recognized by LON-CAPA.').' <br \>'.
- &mt('Please change the extension.').
- '</font>');
-      }
-  } else {
-      $r->print('<font color=red>'.&mt('Illegal filename.').'</font>');
-  }
- } else {
-     $r->print('<font color=red>'.&mt('No upload file specified.').'</font>');
- }
+	&Debug($r, "Filename for upload: $fn");
+	if (($fn) && ($fn!~/\/$/)) {
+	    $r->print('<form action=/adm/upload method=post>'.
+		      '<input type=hidden name=phase value=two>'.
+		      '<input type=hidden name=datatoken value="'.
+		      &upfile_store.'">'.
+		      '<input type=hidden name=uploaduname value="'.$uname.'">'.
+		      &mt('Store uploaded file as ')."<tt>/priv/$uname/</tt>".
+		      '<input type=text size=50 name=filename value="'.$fn.'"><br>'.
+		      '<input type=submit value="'.&mt('Store').'"></form>');
+	    # Check for bad extension and warn user
+	    if ($fn=~/\.(\w+)$/ && 
+		(&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
+		$r->print('<font color=red>'.&mt('The extension on this file,').
+			  ' "'.$1.'"'.&mt(', is reserved internally by LON-CAPA.').
+			  ' <br \>'.&mt('Please change the extension.').'</font>');
+	    } elsif($fn=~/\.(\w+)$/ && 
+		    !defined(&Apache::loncommon::fileembstyle($1))) {
+		$r->print('<font color=red>'.&mt('The extension on this file,').
+			  ' "'.$1.'"'.&mt(', is not recognized by LON-CAPA.').
+			  ' <br \>'.&mt('Please change the extension.').
+			  '</font>');
+	    }
+	} else {
+	    $r->print('<font color=red>'.&mt('Illegal filename.').'</font>');
+	}
+    } else {
+	$r->print('<font color=red>'.&mt('No upload file specified.').'</font>');
+    }
 }
 
 sub phasetwo {
-   my ($r,$tfn,$uname,$udom)=@_;
-   my $fn='/priv/'.$uname.'/'.$tfn;
-   $fn=~s/\/+/\//g;
-   &Debug($r, "Filename is ".$tfn);
-   if ($tfn) {
-    &Debug($r, "Filename for tfn = ".$tfn);
-    my $target='/home/'.$uname.'/public_html'.$tfn;
-    &Debug($r, "target -> ".$target);
+    my ($r,$tfn,$uname,$udom)=@_;
+    my $fn='/priv/'.$uname.'/'.$tfn;
+    $fn=~s/\/+/\//g;
+    &Debug($r, "Filename is ".$tfn);
+    if ($tfn) {
+	&Debug($r, "Filename for tfn = ".$tfn);
+	my $target='/home/'.$uname.'/public_html'.$tfn;
+	&Debug($r, "target -> ".$target);
 #     target is the full filesystem path of the destination file.
-    my $base = &File::Basename::basename($fn);
-    my $path = &File::Basename::dirname($fn);
-    $base    = &HTML::Entities::encode($base);
-    my $url  = $path."/".$base; 
-    &Debug($r, "URL is now ".$url);
-    my $datatoken=$ENV{'form.datatoken'};
-    if (($fn) && ($datatoken)) {
-	if ((-e $target) && ($ENV{'form.override'} ne 'Yes')) {
-           $r->print(
- '<form action=/adm/upload method=post>'.
- &mt('File').' <tt>'.$fn.'</tt> '.&mt('exists. Overwrite?').' '.
- '<input type=hidden name=phase value=two>'.
- '<input type=hidden name=filename value="'."$url".'">'.
- '<input type=hidden name=datatoken value="'.$datatoken.'">'.
- '<input type=submit name=override value="'.&mt('Yes').'"></form>');
-       } else {
-           my $source=$r->dir_config('lonDaemons').
-	                             '/tmp/'.$datatoken.'.tmp';
-           # Check for bad extension and disallow upload
-	   if ($fn=~/\.(\w+)$/ && 
-	       (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
-	       $r->print(
- &mt('File').' <tt>'.$fn.'</tt> '.&mt('could not be copied.').'<br />'.
- '<font color=red>'.
- &mt('The extension on this file is reserved internally by LON-CAPA.').
- '</font>');
-              $r->print('<p><font size=+2><a href="'.$path.
-                        '">'.&mt('Back to Directory').'</a></font>');
-	   } elsif ($fn=~/\.(\w+)$/ && 
-		    !defined(&Apache::loncommon::fileembstyle($1))) {
-	       $r->print(
- &mt('File').' <tt>'.$fn.'</tt> '.&mt('could not be copied.').'<br />'.
- '<font color=red>'.
- &mt('The extension on this file is not recognized by LON-CAPA.').
- '</font>');
-	       $r->print('<p><font size=+2><a href="'.$path.
-                        '">'.&mt('Back to Directory').'</a></font>');
-	   } elsif (-d $target) {
-	       $r->print(
- 'File <tt>'.$fn.'</tt> could not be copied.<br />'.
- '<font color=red>'.
- &mt('The target is an existing directory.').
- '</font>');
-	       $r->print('<p><font size=+2><a href="'.$path.
-                        '">'.&mt('Back to Directory').'</a></font>');
-	   } elsif (copy($source,$target)) {
-	       chmod(0660, $target); # Set permissions to rw-rw---.
-	      $r->print(&mt('File copied.'));
-              $r->print('<p><font size=+2><a href="'.$url.
-                        '">'.&mt('View file').'</a></font>');
-              $r->print('<p><font size=+2><a href="'.$path.
-                        '">'.&mt('Back to Directory').'</a></font>');
-	   } else {
-              $r->print('Failed to copy: '.$!);
-              $r->print('<p><font size=+2><a href="'.$path.
-                        '">'.&mt('Back to Directory').'</a></font>');
-	   }
-       }
+	my $base = &File::Basename::basename($fn);
+	my $path = &File::Basename::dirname($fn);
+	$base    = &HTML::Entities::encode($base);
+	my $url  = $path."/".$base; 
+	&Debug($r, "URL is now ".$url);
+	my $datatoken=$ENV{'form.datatoken'};
+	if (($fn) && ($datatoken)) {
+	    if ((-e $target) && ($ENV{'form.override'} ne 'Yes')) {
+		$r->print('<form action=/adm/upload method=post>'.
+			  &mt('File').' <tt>'.$fn.'</tt> '.
+			  &mt('exists. Overwrite?').' '.
+			  '<input type=hidden name=phase value=two>'.
+			  '<input type=hidden name=filename value="'."$url".'">'.
+			  '<input type=hidden name=datatoken value="'.$datatoken.'">'.
+			  '<input type=submit name=override value="'.&mt('Yes').'"></form>');
+	    } else {
+		my $source=$r->dir_config('lonDaemons').'/tmp/'.$datatoken.'.tmp';
+		# Check for bad extension and disallow upload
+		if ($fn=~/\.(\w+)$/ && 
+		    (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
+		    $r->print(&mt('File').' <tt>'.$fn.'</tt> '.
+			      &mt('could not be copied.').'<br />'.
+			      '<font color=red>'.
+			      &mt('The extension on this file is reserved internally by LON-CAPA.').
+			      '</font>');
+		    $r->print('<p><font size=+2><a href="'.$path.'">'.
+			      &mt('Back to Directory').'</a></font>');
+		} elsif ($fn=~/\.(\w+)$/ && 
+			 !defined(&Apache::loncommon::fileembstyle($1))) {
+		    $r->print(&mt('File').' <tt>'.$fn.'</tt> '.
+			      &mt('could not be copied.').'<br />'.
+			      '<font color=red>'.
+			      &mt('The extension on this file is not recognized by LON-CAPA.').
+			      '</font>');
+		    $r->print('<p><font size=+2><a href="'.$path.'">'.
+			      &mt('Back to Directory').'</a></font>');
+		} elsif (-d $target) {
+		    $r->print('File <tt>'.$fn.'</tt> could not be copied.<br />'.
+			      '<font color=red>'.
+			      &mt('The target is an existing directory.').
+			      '</font>');
+		    $r->print('<p><font size=+2><a href="'.$path.'">'.
+			      &mt('Back to Directory').'</a></font>');
+		} elsif (copy($source,$target)) {
+		    chmod(0660, $target); # Set permissions to rw-rw---.
+		    $r->print(&mt('File copied.'));
+		    $r->print('<p><font size=+2><a href="'.$url.'">'.
+			      &mt('View file').'</a></font>');
+		    $r->print('<p><font size=+2><a href="'.$path.'">'.
+			      &mt('Back to Directory').'</a></font>');
+		} else {
+		    $r->print('Failed to copy: '.$!);
+		    $r->print('<p><font size=+2><a href="'.$path.'">'.
+			      &mt('Back to Directory').'</a></font>');
+		}
+	    }
+	} else {
+	    $r->print('<font size=+1 color=red>'.
+		      &mt('Please use browser "Back" button and pick a filename').
+		      '</font><p>');
+	}
     } else {
-       $r->print(
-   '<font size=+1 color=red>'.
-&mt('Please use browser "Back" button and pick a filename').'</font><p>');
+	$r->print('<font size=+1 color=red>'.
+		  &mt('Please use browser "Back" button and pick a filename').
+		  '</font><p>');
     }
-  } else {
-    $r->print(
-   '<font size=+1 color=red>'.&mt('Please use browser "Back" button and pick a filename').'</font><p>');
-  }
 }
 
 # ---------------------------------------------------------------- Main Handler
 sub handler {
 
-  my $r=shift;
+    my $r=shift;
 
-  my $uname;
-  my $udom;
+    my $uname;
+    my $udom;
 #
 # phase two: re-attach user
 #
-  if ($ENV{'form.uploaduname'}) {
-      $ENV{'form.filename'}='/priv/'.$ENV{'form.uploaduname'}.'/'.
-	  $ENV{'form.filename'};
-  }
-#
-
-  ($uname,$udom)=
-    &Apache::loncacc::constructaccess(
-			 $ENV{'form.filename'},$r->dir_config('lonDefDomain'));
-  unless (($uname) && ($udom)) {
-     $r->log_reason($uname.' at '.$udom.
-         ' trying to publish file '.$ENV{'form.filename'}.
-         ' - not authorized', 
-         $r->filename); 
-     return HTTP_NOT_ACCEPTABLE;
-  }
-
-  my $fn;
-  if ($ENV{'form.filename'}) {
-      $fn=$ENV{'form.filename'};
-      $fn=~s/^http\:\/\/[^\/]+\///;
-      $fn=~s/^\///;
-      $fn=~s/(\~|priv\/)(\w+)//;
-      $fn=~s/\/+/\//g;
-  } else {
-     $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
-         ' unspecified filename for upload', $r->filename); 
-     return HTTP_NOT_FOUND;
-  }
+    if ($ENV{'form.uploaduname'}) {
+	$ENV{'form.filename'}='/priv/'.$ENV{'form.uploaduname'}.'/'.
+	    $ENV{'form.filename'};
+    }
+#
+
+    ($uname,$udom)=
+	&Apache::loncacc::constructaccess($ENV{'form.filename'},
+					  $r->dir_config('lonDefDomain'));
+    unless (($uname) && ($udom)) {
+	$r->log_reason($uname.' at '.$udom.
+		       ' trying to publish file '.$ENV{'form.filename'}.
+		       ' - not authorized', 
+		       $r->filename); 
+	return HTTP_NOT_ACCEPTABLE;
+    }
+    
+    my $fn;
+    if ($ENV{'form.filename'}) {
+	$fn=$ENV{'form.filename'};
+	$fn=~s/^http\:\/\/[^\/]+\///;
+	$fn=~s/^\///;
+	$fn=~s/(\~|priv\/)(\w+)//;
+	$fn=~s/\/+/\//g;
+    } else {
+	$r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
+		       ' unspecified filename for upload', $r->filename); 
+	return HTTP_NOT_FOUND;
+    }
 
 # ----------------------------------------------------------- Start page output
 
 
-  &Apache::loncommon::content_type($r,'text/html');
-  $r->send_http_header;
+    &Apache::loncommon::content_type($r,'text/html');
+    $r->send_http_header;
 
-  $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');
+    $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');
 
-  $r->print(&Apache::loncommon::bodytag('Upload file to Construction Space'));
+    $r->print(&Apache::loncommon::bodytag('Upload file to Construction Space'));
   
-  if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {
-      $r->print('<h3><font color=red>'.&mt('Co-Author').': '.$uname.
-		&mt(' at ').$udom.'</font></h3>');
-  }
-
-  if ($ENV{'form.phase'} eq 'two') {
-      &phasetwo($r,$fn,$uname,$udom);
-  } else {
-      &phaseone($r,$fn,$uname,$udom);
-  }
+    if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {
+	$r->print('<h3><font color=red>'.&mt('Co-Author').': '.$uname.
+		  &mt(' at ').$udom.'</font></h3>');
+    }
+
+    if ($ENV{'form.phase'} eq 'two') {
+	&phasetwo($r,$fn,$uname,$udom);
+    } else {
+	&phaseone($r,$fn,$uname,$udom);
+    }
 
-  $r->print('</body></html>');
-  return OK;  
+    $r->print('</body></html>');
+    return OK;  
 }
 
 1;

--albertel1068289492--