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, 9 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

# The LearningOnline Network
# Documents
#
# $Id: londocs.pm,v 1.6 2002/08/01 15:26:23 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#

package Apache::londocs;

use strict;
use Apache::Constants qw(:common);
use Apache::lonnet;
use Apache::loncommon;

sub handler {
    my $r = shift;
    $r->content_type('text/html');
    $r->send_http_header;
    return OK if $r->header_only;

# does this user have privileges to post, etc?
    my $allowed=&Apache::lonnet::allowed('srm',$ENV{'request.course.id'});

    if ($allowed) { 
       &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                                         ['remove']) 
    }

# get course data
    my $coursenum=$ENV{'course.'.$ENV{'request.course.id'}.'.num'};
    my $coursedom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};


# upload a file
    if (($ENV{'form.uploaddoc.filename'}) && ($allowed)) {
        my $id=time.'_'.$ENV{'user.name'}.'_'.$ENV{'user.domain'};
# this is for a course, not a user, so set coursedoc flag
# probably the only place in the system where this should be "1"
	my $url=&Apache::lonnet::userfileupload('uploaddoc',1);
        if ($url=~/^error\:/) {
        } else {
	    my $comment=$ENV{'form.comment'};
           $comment=~s/\</\&lt\;/g;
           $comment=~s/\>/\&gt\;/g;
           &Apache::lonnet::put('coursedocs',
				{ $id.'.url' => $url,
                                  $id.'.comment' => $comment },
                                $coursedom,$coursenum);
        }        
    }

# delete a file
    if ($ENV{'form.remove'}=~/$ENV{'user.name'}\_$ENV{'user.domain'}$/) {
       my $id=$ENV{'form.remove'};
       &Apache::lonnet::del('coursedocs',
			    [$id.'.url',$id.'.comment'],
                            $coursedom,$coursenum);
   }

# print screen
    $r->print(<<ENDDOCUMENT);
<html>
<head>
<title>The LearningOnline Network with CAPA</title>
</head>
<body bgcolor="#FFFFFF">
<h1>Course Documents</h1>
ENDDOCUMENT
# ------------------------------------------------------- Print headers to docs
   my %currentdocs=&Apache::lonnet::dump('coursedocs',$coursedom,$coursenum);
   foreach (sort keys (%currentdocs)) {
       if ($_=~/(\d+)\_(\w+)\_(\w+)\.url/) {
	   $r->print('<hr>'.localtime($1).' '.$2.' '.$3.'<blockquote>'.
		     &Apache::lontexconvert::msgtexconverted(
                                 $currentdocs{$1.'_'.$2.'_'.$3.'.comment'}
                     ).
                     '</blockquote><a href="'.
               &Apache::lonnet::tokenwrapper($currentdocs{$_}).'">View</a>');
	   if (($2 eq $ENV{'user.name'}) && ($3 eq $ENV{'user.domain'})
               && ($allowed)) {
              $r->print(' <a href="/adm/coursedocs?remove='.
                        $1.'_'.$2.'_'.$3.'">Remove</a>');
	   }
       }
   }
# ----------------------------------------------------------------- Upload form
   if ($allowed) {
       $r->print(<<ENDFORM);
<hr />
<h3>Post a new course document</h3>
<form method="post" enctype="multipart/form-data">
<input type="file" name="uploaddoc" size="50">
<br />Comment:<br />
<textarea cols=50 rows=4 name='comment'>
</textarea>
<input type="submit" value="Upload Document">
</form>
ENDFORM
    }
    $r->print('</body></html>');
    return OK;
} 

1;
__END__

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