NAME

Apache::lonpubdir - Construction space directory lister


SYNOPSIS

Invoked (for various locations) by /etc/httpd/conf/srm.conf:

 <LocationMatch "^/\~.*/$">
 PerlAccessHandler       Apache::loncacc
 SetHandler perl-script
 PerlHandler Apache::lonpubdir
 ErrorDocument     403 /adm/login
 ErrorDocument     404 /adm/notfound.html
 ErrorDocument     406 /adm/unauthorized.html
 ErrorDocument    500 /adm/errorhandler
 </LocationMatch>
 <Location /adm/pubdir>
 PerlAccessHandler       Apache::lonacc
 SetHandler perl-script
 PerlHandler Apache::lonpubdir
 ErrorDocument     403 /adm/login
 ErrorDocument     404 /adm/notfound.html
 ErrorDocument     406 /adm/unauthorized.html
 ErrorDocument    500 /adm/errorhandler
 </Location>


INTRODUCTION

This module publishes a directory of files.

This is part of the LearningOnline Network with CAPA project described at http://www.lon-capa.org.


HANDLER SUBROUTINE

This routine is called by Apache and mod_perl.


SUBROUTINES:

startpage($r, $uame, $udom, $thisdisfn)

Output the header of the page. This includes: - The HTML header - The H1/H3 stuff which includes the directory.


    startpage($r, $uame, $udom, $thisdisfn);
        $r     - The apache request object.
        $uname - User name.
        $udom  - Domain name the user is logged in under.
        $thisdisfn - Displayable version of the filename.
getTitleString($fullname)
    Get the title string or "[untitled]" if the file has no title metadata:
    Without the latter substitution, it's impossible to examine metadata for
    untitled resources.  Resources may be legitimately untitled, to prevent
    searches from locating them.
    
    $str = getTitleString($fullname);
        $fullname - Fully qualified filename to check.
putdirectory(r, base, here, dirname, modtime)
    Put out a directory table row:
    
    putdirectory($r, $base, $here, $dirname, $modtime)
        $r       - Apache request object.
        $reqfile - File in request.
        $here    - Where we are in directory tree.
        $dirname - Name of directory special file.
        $modtime - Encoded modification time.
CategorizeFiles($location, $files)

    Categorize files in the directory.
    For each file in a list of files in a file directory, 
    the  file categorized as one of:
        - directory  
        - sequence
        - problem 
        - Other resource.
    For each file the modification date is determined as well.
    Returned is a list of sublists:
        (directories, sequences, problems, other)
    each of the sublists contains entries of the following form (sorted by filename):
    (filename, typecode, lastmodtime)
    
        $list = CategorizeFiles($location, $files)
        $location   - Directory in which the files live (relative to our execution)
        $files      - list of files.