File:  [LON-CAPA] / loncom / interface / londocs.pm
Revision 1.6: download - view: text, annotated - select for diffs
Thu Aug 1 15:26:23 2002 UTC (21 years, 11 months ago) by www
Branches: MAIN
CVS tags: version_0_5_1, version_0_5, HEAD
Following public outcry, the logic of user file uploads is being changed.
This does currently not work anymore.
Plan:
When file is uploaded, the home server of course or user is notified to grep
the file (lond command needed for that) - goes into user home dir
When file is requested, home server checks session environment of user for
access permission to file (lond command needed for that)
Modification of lontokacc needed to be more like lonracc for inter-server
transfer
URL redirect needed for actual download on homeserver

    1: # The LearningOnline Network
    2: # Documents
    3: #
    4: # $Id: londocs.pm,v 1.6 2002/08/01 15:26:23 www Exp $
    5: #
    6: # Copyright Michigan State University Board of Trustees
    7: #
    8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
    9: #
   10: # LON-CAPA is free software; you can redistribute it and/or modify
   11: # it under the terms of the GNU General Public License as published by
   12: # the Free Software Foundation; either version 2 of the License, or
   13: # (at your option) any later version.
   14: #
   15: # LON-CAPA is distributed in the hope that it will be useful,
   16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
   17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   18: # GNU General Public License for more details.
   19: #
   20: # You should have received a copy of the GNU General Public License
   21: # along with LON-CAPA; if not, write to the Free Software
   22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   23: #
   24: # /home/httpd/html/adm/gpl.txt
   25: #
   26: # http://www.lon-capa.org/
   27: #
   28: 
   29: package Apache::londocs;
   30: 
   31: use strict;
   32: use Apache::Constants qw(:common);
   33: use Apache::lonnet;
   34: use Apache::loncommon;
   35: 
   36: sub handler {
   37:     my $r = shift;
   38:     $r->content_type('text/html');
   39:     $r->send_http_header;
   40:     return OK if $r->header_only;
   41: 
   42: # does this user have privileges to post, etc?
   43:     my $allowed=&Apache::lonnet::allowed('srm',$ENV{'request.course.id'});
   44: 
   45:     if ($allowed) { 
   46:        &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
   47:                                                          ['remove']) 
   48:     }
   49: 
   50: # get course data
   51:     my $coursenum=$ENV{'course.'.$ENV{'request.course.id'}.'.num'};
   52:     my $coursedom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
   53: 
   54: 
   55: # upload a file
   56:     if (($ENV{'form.uploaddoc.filename'}) && ($allowed)) {
   57:         my $id=time.'_'.$ENV{'user.name'}.'_'.$ENV{'user.domain'};
   58: # this is for a course, not a user, so set coursedoc flag
   59: # probably the only place in the system where this should be "1"
   60: 	my $url=&Apache::lonnet::userfileupload('uploaddoc',1);
   61:         if ($url=~/^error\:/) {
   62:         } else {
   63: 	    my $comment=$ENV{'form.comment'};
   64:            $comment=~s/\</\&lt\;/g;
   65:            $comment=~s/\>/\&gt\;/g;
   66:            &Apache::lonnet::put('coursedocs',
   67: 				{ $id.'.url' => $url,
   68:                                   $id.'.comment' => $comment },
   69:                                 $coursedom,$coursenum);
   70:         }        
   71:     }
   72: 
   73: # delete a file
   74:     if ($ENV{'form.remove'}=~/$ENV{'user.name'}\_$ENV{'user.domain'}$/) {
   75:        my $id=$ENV{'form.remove'};
   76:        &Apache::lonnet::del('coursedocs',
   77: 			    [$id.'.url',$id.'.comment'],
   78:                             $coursedom,$coursenum);
   79:    }
   80: 
   81: # print screen
   82:     $r->print(<<ENDDOCUMENT);
   83: <html>
   84: <head>
   85: <title>The LearningOnline Network with CAPA</title>
   86: </head>
   87: <body bgcolor="#FFFFFF">
   88: <h1>Course Documents</h1>
   89: ENDDOCUMENT
   90: # ------------------------------------------------------- Print headers to docs
   91:    my %currentdocs=&Apache::lonnet::dump('coursedocs',$coursedom,$coursenum);
   92:    foreach (sort keys (%currentdocs)) {
   93:        if ($_=~/(\d+)\_(\w+)\_(\w+)\.url/) {
   94: 	   $r->print('<hr>'.localtime($1).' '.$2.' '.$3.'<blockquote>'.
   95: 		     &Apache::lontexconvert::msgtexconverted(
   96:                                  $currentdocs{$1.'_'.$2.'_'.$3.'.comment'}
   97:                      ).
   98:                      '</blockquote><a href="'.
   99:                &Apache::lonnet::tokenwrapper($currentdocs{$_}).'">View</a>');
  100: 	   if (($2 eq $ENV{'user.name'}) && ($3 eq $ENV{'user.domain'})
  101:                && ($allowed)) {
  102:               $r->print(' <a href="/adm/coursedocs?remove='.
  103:                         $1.'_'.$2.'_'.$3.'">Remove</a>');
  104: 	   }
  105:        }
  106:    }
  107: # ----------------------------------------------------------------- Upload form
  108:    if ($allowed) {
  109:        $r->print(<<ENDFORM);
  110: <hr />
  111: <h3>Post a new course document</h3>
  112: <form method="post" enctype="multipart/form-data">
  113: <input type="file" name="uploaddoc" size="50">
  114: <br />Comment:<br />
  115: <textarea cols=50 rows=4 name='comment'>
  116: </textarea>
  117: <input type="submit" value="Upload Document">
  118: </form>
  119: ENDFORM
  120:     }
  121:     $r->print('</body></html>');
  122:     return OK;
  123: } 
  124: 
  125: 1;
  126: __END__

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