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 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: $r->print(<<ENDDOCUMENT);
29: <html>
30: <head>
31: <title>The LearningOnline Network with CAPA</title>
32: </head>
33: <body bgcolor="#FFFFFF">
34: <img align=right src=/adm/lonIcons/lonlogos.gif>
35: <h1>Create a new Course</h1>
36: <form action=/adm/createcourse method=post>
37: <h3>Course Title</h3>
38: <input type=text size=40 name=title>
39: <h3>Top-level Map</h3>
40: <input type=text size=40 name=topmap>
41: <h3>Course Cooordinator</h3>
42: Username: <input type=text size=15 name=ccuname><br>
43: Domain: <input type=text size=15 name=ccdomain>
44: <input type=hidden name=phase value=two><p>
45: <input type=submit value="Open Course">
46: </form>
47: </body>
48: </html>
49: ENDDOCUMENT
50: }
51:
52: # ====================================================== Phase two: make course
53:
54: sub phase_two {
55: my $r=shift;
56: my $topurl='/res/'.&Apache::lonnet::declutter($ENV{'form.topmap'});
57: my $ccuname=$ENV{'form.ccuname'};
58: my $ccdomain=$ENV{'form.ccdomain'};
59: $ccuname=~s/\W//g;
60: $ccdomain=~s/\W//g;
61: my $cdescr=$ENV{'form.title'};
62: my $curl=$ENV{'form.topmap'};
63: $r->print(<<ENDENHEAD);
64: <html>
65: <head>
66: <title>The LearningOnline Network with CAPA</title>
67: </head>
68: <body bgcolor="#FFFFFF">
69: <img align=right src=/adm/lonIcons/lonlogos.gif>
70: <h1>Create a new Course</h1>
71: ENDENHEAD
72: #
73: # Verify data
74: #
75: if (&Apache::lonnet::homeserver($ccuname,$ccdomain) eq 'no_host') {
76: $r->print('No such user '.$ccuname.' at '.$ccdomain);
77: return;
78: }
79:
80: #
81: # Open course
82: #
83: my $courseid=&Apache::lonnet::createcourse($ENV{'user.domain'},
84: $cdescr,$curl);
85:
86: $r->print('New Course ID: '.$courseid.'<br>');
87: #
88: # Make current user course adminstrator
89: #
90: $r->print('Assigning role of course coordinator to self: '.
91: &Apache::lonnet::assignrole(
92: $ENV{'user.domain'},$ENV{'user.name'},$courseid,'cc').'<br>');
93: #
94: # Make additional user course administrator
95: #
96: $r->print('Assigning role of course coordinator to '.
97: $ccuname.' at '.$ccdomain.': '.
98: &Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid,'cc').'<br>');
99: $r->print('</body></html>');
100: }
101:
102: # ===================================================================== Handler
103: sub handler {
104: my $r = shift;
105:
106: if ($r->header_only) {
107: $r->content_type('text/html');
108: $r->send_http_header;
109: return OK;
110: }
111:
112: if (&Apache::lonnet::allowed('ccc',$ENV{'user.domain'})) {
113: $r->content_type('text/html');
114: $r->send_http_header;
115:
116: if ($ENV{'form.phase'} eq 'two') {
117: &phase_two($r);
118: } else {
119: &phase_one($r);
120: }
121: } else {
122: $ENV{'user.error.msg'}=
123: "/adm/createcourse:ccc:0:0:Cannot create courses";
124: return HTTP_NOT_ACCEPTABLE;
125: }
126: return OK;
127: }
128:
129: 1;
130: __END__
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>