File:  [LON-CAPA] / loncom / interface / loncreatecourse.pm
Revision 1.4: download - view: text, annotated - select for diffs
Fri Jul 6 14:17:48 2001 UTC (22 years, 11 months ago) by www
Branches: MAIN
CVS tags: stable_2001_fall, HEAD
Course ID

    1: # The LearningOnline Network
    2: # Create a course
    3: # (My Desk
    4: #
    5: # (Internal Server Error Handler
    6: #
    7: # (Login Screen
    8: # 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14,
    9: # 1/14/00,5/29,5/30,6/1,6/29,7/1,11/9 Gerd Kortemeyer)
   10: #
   11: # 3/1/1 Gerd Kortemeyer)
   12: #
   13: # 3/1 Gerd Kortemeyer)
   14: #
   15: # 2/14,2/16,2/17,7/6 Gerd Kortemeyer
   16: #
   17: package Apache::loncreatecourse;
   18: 
   19: use strict;
   20: use Apache::Constants qw(:common :http);
   21: use Apache::lonnet;
   22: 
   23: # ===================================================== Phase one: fill-in form
   24: 
   25: sub phase_one {
   26:     my $r=shift;
   27: 
   28:     my $defdom=$ENV{'user.domain'};
   29:     $r->print(<<ENDDOCUMENT);
   30: <html>
   31: <head>
   32: <title>The LearningOnline Network with CAPA</title>
   33: </head>
   34: <body bgcolor="#FFFFFF">
   35: <img align=right src=/adm/lonIcons/lonlogos.gif>
   36: <h1>Create a new Course</h1>
   37: <form action=/adm/createcourse method=post>
   38: <h3>Course Title</h3>
   39: <input type=text size=50 name=title>
   40: <h3>Top-level Map</h3>
   41: <input type=text size=50 name=topmap>
   42: <h3>Course ID/Number (optional)</h3>
   43: <input type=text size=30 name=crsid>
   44: <h3>Course Cooordinator</h3>
   45: Username: <input type=text size=15 name=ccuname><br>
   46: Domain: <input type=text size=15 name=ccdomain value=$defdom>
   47: <input type=hidden name=phase value=two><p>
   48: <input type=submit value="Open Course">
   49: </form>
   50: </body>
   51: </html>
   52: ENDDOCUMENT
   53: }
   54: 
   55: # ====================================================== Phase two: make course
   56: 
   57: sub phase_two {
   58:     my $r=shift;
   59:     my $topurl='/res/'.&Apache::lonnet::declutter($ENV{'form.topmap'});
   60:     my $ccuname=$ENV{'form.ccuname'};
   61:     my $ccdomain=$ENV{'form.ccdomain'};
   62:     $ccuname=~s/\W//g;
   63:     $ccdomain=~s/\W//g;
   64:     my $cdescr=$ENV{'form.title'};
   65:     my $curl=$ENV{'form.topmap'};
   66:     $r->print(<<ENDENHEAD);
   67: <html>
   68: <head>
   69: <title>The LearningOnline Network with CAPA</title>
   70: </head>
   71: <body bgcolor="#FFFFFF">
   72: <img align=right src=/adm/lonIcons/lonlogos.gif>
   73: <h1>Create a new Course</h1>
   74: ENDENHEAD
   75: #
   76: # Verify data
   77: #
   78:     if (&Apache::lonnet::homeserver($ccuname,$ccdomain) eq 'no_host') {
   79:         $r->print('No such user '.$ccuname.' at '.$ccdomain.'</body></html>');
   80: 	return;
   81:     }
   82: 
   83: #
   84: # Open course
   85: #
   86:     my $courseid=&Apache::lonnet::createcourse($ENV{'user.domain'},
   87:                                                $cdescr,$curl);
   88: 
   89:     $r->print('New LON-CAPA Course ID: '.$courseid.'<br>');
   90: #
   91: # Set optional courseid
   92: #
   93:     my ($crsudom,$crsunum)=($courseid=~/^\/(\w+)\/(\w+)$/);
   94:     my $crsuhome=&Apache::lonnet::homeserver($crsunum,$crsudom);
   95:     $r->print('Created on: '.$crsuhome.'<br>');
   96:     if ($ENV{'form.crsid'}) {
   97:        $r->print('Setting optional Course ID/Number: '.                 
   98:            &Apache::lonnet::reply('put:'.$crsudom.':'.
   99:                                   $crsunum.':environment:courseid='.
  100:                                   &Apache::lonnet::escape($ENV{'form.crsid'}),
  101:                                   $crsuhome).'<br>');
  102:     }
  103: #
  104: # Make current user course adminstrator
  105: #
  106:     $r->print('Assigning role of course coordinator to self: '.
  107:     &Apache::lonnet::assignrole(
  108:      $ENV{'user.domain'},$ENV{'user.name'},$courseid,'cc').'<br>');
  109: #
  110: # Make additional user course administrator
  111: #
  112:     $r->print('Assigning role of course coordinator to '.
  113:                $ccuname.' at '.$ccdomain.': '.
  114:     &Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid,'cc').'<p>');
  115:     $r->print('Roles will be active at next login.</body></html>');
  116: }
  117: 
  118: # ===================================================================== Handler
  119: sub handler {
  120:     my $r = shift;
  121: 
  122:     if ($r->header_only) {
  123:        $r->content_type('text/html');
  124:        $r->send_http_header;
  125:        return OK;
  126:     }
  127: 
  128:     if (&Apache::lonnet::allowed('ccc',$ENV{'user.domain'})) {
  129:        $r->content_type('text/html');
  130:        $r->send_http_header;
  131: 
  132:        if ($ENV{'form.phase'} eq 'two') {
  133:            &phase_two($r);
  134:        } else {
  135: 	   &phase_one($r);
  136:        }
  137:    } else {
  138:       $ENV{'user.error.msg'}=
  139:         "/adm/createcourse:ccc:0:0:Cannot create courses";
  140:       return HTTP_NOT_ACCEPTABLE; 
  141:    }
  142:    return OK;
  143: } 
  144: 
  145: 1;
  146: __END__

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