version 1.107, 2008/04/30 23:23:07
|
version 1.149, 2013/07/15 16:13:21
|
Line 27
|
Line 27
|
# |
# |
### |
### |
|
|
|
=head1 NAME |
|
|
|
Apache::loncreatecourse.pm |
|
|
|
=head1 SYNOPSIS |
|
|
|
Allows domain coordinators to create new |
|
courses and assign course coordinators. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 SUBROUTINES |
|
|
|
=over |
|
|
|
=item handler() |
|
|
|
=item print_course_creation_page() |
|
|
|
=item create_course() |
|
|
|
=item print_intro_page() |
|
|
|
=item upload_batchfile() |
|
|
|
=item process_batchfile() |
|
|
|
=item courserequestbrowser_javascript() |
|
|
|
=item print_creation_logs() |
|
|
|
=item creation_display_filter() |
|
|
|
=item context_names() |
|
|
|
=item instcode_srchstr() |
|
|
|
=item syllabuslink_javascript() |
|
|
|
=back |
|
|
|
=cut |
|
|
package Apache::loncreatecourse; |
package Apache::loncreatecourse; |
|
|
use strict; |
use strict; |
Line 44 use LONCAPA;
|
Line 88 use LONCAPA;
|
|
|
sub print_course_creation_page { |
sub print_course_creation_page { |
my $r=shift; |
my $r=shift; |
my $crstype = 'Group'; |
my $crstype = 'Community'; |
if ($env{'form.phase'} eq 'courseone') { |
if ($env{'form.phase'} eq 'courseone') { |
$crstype = 'Course'; |
$crstype = 'Course'; |
} |
} |
my $defdom=$env{'request.role.domain'}; |
my $defdom=$env{'request.role.domain'}; |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($defdom); |
my %host_servers = &Apache::lonnet::get_servers($defdom,'library'); |
my %host_servers = &Apache::lonnet::get_servers($defdom,'library'); |
my $course_home = '<select name="course_home" size="1">'."\n"; |
my $course_home = '<select name="course_home" size="1">'."\n"; |
foreach my $server (sort(keys(%host_servers))) { |
foreach my $server (sort(keys(%host_servers))) { |
Line 65 sub print_course_creation_page {
|
Line 110 sub print_course_creation_page {
|
&Apache::loncommon::selectcourse_link |
&Apache::loncommon::selectcourse_link |
('ccrs','clonecourse','clonedomain',undef,undef,undef,$crstype); |
('ccrs','clonecourse','clonedomain',undef,undef,undef,$crstype); |
my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'}); |
my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'}); |
my ($enroll_table,$access_table,$krbdef,$krbdefdom,$krbform,$intform,$locform, |
my ($enroll_table,$krbdef,$krbdefdom,$krbform,$intform,$locform, |
$javascript_validations); |
$javascript_validations); |
|
my $starttime = time; |
|
my $endtime = time+(6*30*24*60*60); # 6 months from now, approx |
|
my $access_table = &Apache::lonuserutils::date_setting_table($starttime, |
|
$endtime,'create_defaultdates'); |
if ($crstype eq 'Course') { |
if ($crstype eq 'Course') { |
my $starttime = time; |
|
my $endtime = time+(6*30*24*60*60); # 6 months from now, approx |
|
$enroll_table = &Apache::lonuserutils::date_setting_table($starttime, |
$enroll_table = &Apache::lonuserutils::date_setting_table($starttime, |
$endtime,'create_enrolldates'); |
$endtime,'create_enrolldates'); |
$access_table = &Apache::lonuserutils::date_setting_table($starttime, |
|
$endtime,'create_defaultdates'); |
|
($krbdef,$krbdefdom) = |
($krbdef,$krbdefdom) = |
&Apache::loncommon::get_kerberos_defaults($defdom); |
&Apache::loncommon::get_kerberos_defaults($defdom); |
$javascript_validations=&Apache::lonuserutils::javascript_validations( |
$javascript_validations=&Apache::lonuserutils::javascript_validations( |
Line 86 sub print_course_creation_page {
|
Line 131 sub print_course_creation_page {
|
$intform = &Apache::loncommon::authform_internal(%param); |
$intform = &Apache::loncommon::authform_internal(%param); |
$locform = &Apache::loncommon::authform_local(%param); |
$locform = &Apache::loncommon::authform_local(%param); |
} else { |
} else { |
|
my $title_alert = &mt('A Community title is required'); |
|
my $coord_alert = &mt('The username of the Coordinator is required'); |
$javascript_validations = qq| |
$javascript_validations = qq| |
function validate(formname) { |
function validate(formname) { |
if (formname.title == '') { |
if (formname.title == '') { |
alert("A group title is required"); |
alert("$title_alert"); |
return; |
return; |
} |
} |
if (formname.ccuname == '') { |
if (formname.ccuname == '') { |
alert("The username of the group coordinator is required"); |
alert("$coord_alert"); |
} |
} |
formname.submit(); |
formname.submit(); |
} |
} |
Line 113 function validate(formname) {
|
Line 160 function validate(formname) {
|
'csli' => "a comma separated list of institutional section numbers, each separated by a colon from the (optional) corresponding section ID to be used in LON-CAPA e.g., 001:1,002:2", |
'csli' => "a comma separated list of institutional section numbers, each separated by a colon from the (optional) corresponding section ID to be used in LON-CAPA e.g., 001:1,002:2", |
'crcs' => "Crosslisted courses", |
'crcs' => "Crosslisted courses", |
'cscs' => "a comma separated list of course sections crosslisted with the current course, with each entry including the institutional course section name followed by a colon and then the (optional) sectionID to be used in LON-CAPA, e.g., fs03ent231001:ent1,fs03bot231001:bot1,fs03zol231002:zol2", |
'cscs' => "a comma separated list of course sections crosslisted with the current course, with each entry including the institutional course section name followed by a colon and then the (optional) sectionID to be used in LON-CAPA, e.g., fs03ent231001:ent1,fs03bot231001:bot1,fs03zol231002:zol2", |
|
'ccre' => "Course credits", |
|
'cred' => "the number of institutional credits students will earn by completing this course", |
'crco' => "Course Content", |
'crco' => "Course Content", |
'cncr' => "Completely new course", |
'cncr' => "Completely new course", |
'cecr' => "Clone an existing course", |
'cecr' => "Clone an existing course", |
Line 124 function validate(formname) {
|
Line 173 function validate(formname) {
|
'stco' => "standard courses only", |
'stco' => "standard courses only", |
'blnk' => "Blank", |
'blnk' => "Blank", |
'sllb' => "Syllabus", |
'sllb' => "Syllabus", |
'navi' => "Navigate", |
'navi' => "Course Contents", |
'cid' => "Course ID", |
'cid' => "Course ID", |
'dmn' => "Domain", |
'dmn' => "Domain", |
|
'dsh' => "Date Shift", |
'asov' => "Additional settings, if specified below, will override cloned settings", |
'asov' => "Additional settings, if specified below, will override cloned settings", |
'ncd' => "Do not clone date parameters", |
'ncd' => "Do not clone date parameters", |
'prd' => 'Clone date parameters as-is', |
'prd' => 'Clone date parameters as-is', |
Line 138 function validate(formname) {
|
Line 188 function validate(formname) {
|
'scfc' => "Set content feedback to Course Coordinator", |
'scfc' => "Set content feedback to Course Coordinator", |
'cmmn' => "Communication", |
'cmmn' => "Communication", |
'dsrd' => "Disable student resource discussion", |
'dsrd' => "Disable student resource discussion", |
'dsuc' => "Disable student use of chatrooms", |
'dsuc' => "Disable student use of chat rooms", |
'acco' => "Access Control", |
'acco' => "Access Control", |
'snak' => "Students need access key to enter course", |
'snak' => "Students need access key to enter course", |
'kaut' => |
'ow' => "Course Owner", |
'Key authority (<tt>id@domain</tt>) if other than course', |
'cc' => "(will be assigned Course Coordinator role)", |
'cc' => "Course Coordinator", |
|
'user' => "Username", |
'user' => "Username", |
'aens' => "Automated enrollment settings", |
'aens' => "Automated enrollment settings", |
'aesc' => "The following settings control automatic enrollment of students in this class based on information available for this specific course from your institution's official classlists.", |
'aesc' => "The following settings control automatic enrollment of students in this class based on information available for this specific course from your institution's official classlists.", |
Line 152 function validate(formname) {
|
Line 201 function validate(formname) {
|
'no' => "No", |
'no' => "No", |
'audr' => "Automated drops", |
'audr' => "Automated drops", |
'dacu' => "Duration of automated classlist updates", |
'dacu' => "Duration of automated classlist updates", |
|
'dads' => 'Default Access Dates for Students', |
'dacc' => "Default start and end dates for student access", |
'dacc' => "Default start and end dates for student access", |
'psam' => "Please select the authentication mechanism", |
'psam' => "Authentication mechanism", |
'pcda' => "Please choose the default authentication method to be used by new users added to this LON-CAPA domain by the automated enrollment process", |
'pcda' => "Default authentication method for new users added to this domain by the automated enrollment process", |
'nech' => "Notification of enrollment changes", |
'nech' => "Notification of enrollment changes", |
'nccl' => "Notification to course coordinator via LON-CAPA message when enrollment changes occur during the automated update?", |
'nccl' => "Notification to course coordinator via LON-CAPA message when enrollment changes occur during the automated update?", |
'ndcl' => "Notification to domain coordinator via LON-CAPA message when enrollment changes occur during the automated update?", |
'ndcl' => "Notification to domain coordinator via LON-CAPA message when enrollment changes occur during the automated update?", |
'irsp' => "Include retrieval of student photographs?", |
'irsp' => "Include retrieval of student photographs?", |
'rshm' => 'Resource Space Home', |
'rshm' => 'Resource Space Home', |
'cgrs' => "Course Group Settings", |
'cgrs' => "Course Group Settings", |
'cgrq' => "Set a quota for the total disk space available for storage of course group portfolio files.", |
'cgrq' => 'Set a quota for the total disk space available for storage of course group portfolio files', |
'opco' => "Open Course", |
'opco' => 'Open Course', |
'ginf' => "Group Information", |
'opcm' => 'Open Community', |
'gtit' => "Group Title", |
); |
'ghsr' => "Group Home Server", |
$lt{'kaut'} = &mt('Key authority ([_1]id:domain[_2]) if other than course','<tt>','</tt>'); |
'gidn' => "Group ID/Number", |
|
'grco' => "Group Content", |
if ($crstype eq 'Community') { |
'cngr' => "Completely new group", |
$lt{'cinf'} = &mt('Community Information'); |
'cegr' => "Clone an existing group", |
$lt{'ctit'} = &mt('Community Title'); |
'sagr' => "Do NOT generate as standard group", |
$lt{'chsr'} = &mt('Community Home Server'); |
'stgo' => "standard groups only", |
$lt{'cidn'} = &mt('Community ID/Number'); |
'sgpf' => "Set group policy feedback to Group Coordinator", |
$lt{'crco'} = &mt('Community Content'); |
'scfg' => "Set content feedback to Group Coordinator", |
$lt{'cncr'} = &mt('Completely new community'); |
'dmrd' => "Disable member resource discussion", |
$lt{'cecr'} = &mt('Clone an existing community'); |
'dmuc' => "Disable member use of chatrooms", |
$lt{'sacr'} = &mt('Do NOT generate as standard community'); |
'mnak' => "Members need access key to enter group", |
$lt{'stco'} = &mt('standard communities only'); |
'kaug' => |
$lt{'navi'} = &mt('Community Contents'); |
'Key authority (<tt>id@domain</tt>) if other than group', |
$lt{'cid'} = &mt('Community ID'); |
'gc' => "Group Coordinator", |
$lt{'scpf'} = &mt('Set community policy feedback to Coordinator'); |
'gid' => "Group ID", |
$lt{'scfc'} = &mt('Set content feedback to Coordinator'); |
'crgr' => "Create Group", |
$lt{'dsrd'} = &mt('Disable member resource discussion'); |
'grts' => "Group Teams Settings", |
$lt{'dsuc'} = &mt('Disable member use of chat rooms'); |
'grtq' => "Set a quota for the total disk space available for storage of group team portfolio files.", |
$lt{'dads'} = &mt('Default Access Dates for Members'); |
|
$lt{'dacc'} = &mt('Default start and end dates for member access'); |
); |
$lt{'snak'} = &mt('Members need access key to enter course'); |
|
$lt{'kaut'} = &mt('Key authority ([_1]id:domain[_2]) if other than community','<tt>','</tt>'); |
|
$lt{'ow'} = &mt('Community Owner'); |
|
$lt{'cc'} = &mt('(will be assigned Coordinator role)'); |
|
$lt{'cgrs'} = &mt('Community Group Settings'); |
|
$lt{'cgrq'} = &mt('Set a quota for the total disk space available for storage of community group portfolio files'); |
|
} |
my $js = <<END; |
my $js = <<END; |
<script type="text/javascript"> |
<script type="text/javascript"> |
var editbrowser = null; |
var editbrowser = null; |
Line 212 END
|
Line 268 END
|
|
|
my %titles = &Apache::lonlocal::texthash( |
my %titles = &Apache::lonlocal::texthash( |
courseone => 'Create a New Course', |
courseone => 'Create a New Course', |
groupone => 'Create a New Group', |
groupone => 'Create a New Community', |
); |
); |
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page($titles{$env{'form.phase'}},$js); |
&Apache::loncommon::start_page($titles{$env{'form.phase'}},$js); |
Line 223 END
|
Line 279 END
|
'Create_Course',undef, |
'Create_Course',undef, |
'Create_Courses'); |
'Create_Courses'); |
$r->print($start_page.$crumbs); |
$r->print($start_page.$crumbs); |
|
|
|
$r->print('<form action="/adm/createcourse" method="post" name="ccrs" action=""><div class="LC_createcourse">' |
|
.&Apache::lonhtmlcommon::start_pick_box() |
|
|
|
.&Apache::lonhtmlcommon::row_headline() |
|
.'<h3>'.$lt{'ow'}.' '.$lt{'cc'}.'</h3>' |
|
.&Apache::lonhtmlcommon::row_closure() |
|
|
|
.&Apache::lonhtmlcommon::row_title($lt{'user'}) |
|
.'<input type="text" size="15" name="ccuname" />' |
|
.&Apache::loncommon::studentbrowser_javascript() |
|
.&Apache::loncommon::selectstudent_link('ccrs','ccuname','ccdomain') |
|
.&Apache::lonhtmlcommon::row_closure() |
|
|
|
.&Apache::lonhtmlcommon::row_title($lt{'dmn'},"","LC_odd_row_value") |
|
.$domform |
|
.&Apache::lonhtmlcommon::row_closure() |
|
|
|
.&Apache::lonhtmlcommon::row_headline() |
|
.'<h3>'.$lt{'cinf'}.'</h3>' |
|
.&Apache::lonhtmlcommon::row_closure() |
|
|
|
.&Apache::lonhtmlcommon::row_title($lt{'ctit'}) |
|
.'<input type="text" size="80" name="title" />' |
|
.&Apache::lonhtmlcommon::row_closure() |
|
|
|
.&Apache::lonhtmlcommon::row_title($lt{'chsr'}) |
|
.$course_home |
|
.&Apache::lonhtmlcommon::row_closure() |
|
|
|
.&Apache::lonhtmlcommon::row_title($lt{'cidn'}.' ('.$lt{'opt'}.')') |
|
.'<input type="text" size="30" name="crsid" />' |
|
.&Apache::lonhtmlcommon::row_closure() |
|
); |
if ($crstype eq 'Course') { |
if ($crstype eq 'Course') { |
$r->print(<<ENDDOCUMENT); |
$r->print(&Apache::lonhtmlcommon::row_headline() |
<form action="/adm/createcourse" method="post" name="ccrs"> |
.'<h3>'.$lt{'iinf'}.'</h3>' |
<h2>$lt{'cinf'}</h2> |
.$lt{'stat'}.' ' |
<p> |
.&mt('Default credits can also be specified, if different from the domain defaults (official courses: [_1]; unofficial courses: [_2]).', |
<label><b>$lt{'ctit'}:</b> |
$domdefaults{'officialcredits'},$domdefaults{'unofficialcredits'}) |
<input type="text" size="50" name="title" /></label> |
.&Apache::lonhtmlcommon::row_closure() |
</p><p> |
|
<label> |
.&Apache::lonhtmlcommon::row_title($lt{'ccod'}) |
<b>$lt{'chsr'}:</b>$course_home |
.'<input type="text" size="30" name="crscode" />' |
</label> |
.'<br />('.$lt{'toin'}.')' |
</p><p> |
.&Apache::lonhtmlcommon::row_closure() |
<label> |
|
<b>$lt{'cidn'} ($lt{'opt'})</b> |
.&Apache::lonhtmlcommon::row_title($lt{'snid'}) |
<input type="text" size="30" name="crsid" /> |
.'<input type="text" size="30" name="crssections" />' |
</label> |
.'<br />('.$lt{'csli'}.')' |
</p><p> |
.&Apache::lonhtmlcommon::row_closure() |
<h2>$lt{'iinf'}</h2> |
|
<p> |
.&Apache::lonhtmlcommon::row_title($lt{'crcs'}) |
$lt{'stat'} |
.'<input type="text" size="30" name="crsxlist" />' |
</p><p> |
.'<br />('.$lt{'cscs'}.')' |
<label> |
.&Apache::lonhtmlcommon::row_closure() |
<b>$lt{'ccod'}</b> |
); |
<input type="text" size="30" name="crscode" /> |
if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'}) { |
</label> |
$r->print(&Apache::lonhtmlcommon::row_title($lt{'ccre'}) |
<br/> |
.'<input type="text" size="3" name="defaultcredits" />' |
($lt{'toin'}) |
.'<br />('.$lt{'cred'}.')' |
</p><p> |
.&Apache::lonhtmlcommon::row_closure() |
<label> |
); |
<b>$lt{'snid'}</b> |
} |
<input type="text" size="30" name="crssections" /> |
} |
</label> |
# Table: New Course / Clone Course |
<br/> |
$r->print(&Apache::lonhtmlcommon::row_headline() |
($lt{'csli'}) |
.'<h3>'.$lt{'crco'}.'</h3>' |
</p><p> |
.&Apache::loncommon::start_data_table() |
<label> |
.&Apache::loncommon::start_data_table_header_row() |
<b>$lt{'crcs'}</b> |
.'<th>'.$lt{'cncr'}.'</th>' |
<input type="text" size="30" name="crsxlist" /> |
.'<th> '.&mt('or').' </th>' |
</label> |
.'<th>'.$lt{'cecr'}.'</th>' |
<br/> |
.&Apache::loncommon::end_data_table_header_row() |
($lt{'cscs'}) |
.&Apache::loncommon::start_data_table_row() |
</p> |
|
<h2>$lt{'crco'}</h2> |
# New Course: |
<table border="2"> |
.'<td>' |
<tr><th>$lt{'cncr'}</th><th>$lt{'cecr'}</th></tr> |
.&Apache::lonhtmlcommon::start_pick_box() |
<tr><td> |
.&Apache::lonhtmlcommon::row_title($lt{'map'}) |
<p> |
.'<input type="text" size="50" name="topmap" />' |
<label> |
.'<a href="javascript:openbrowser(\'ccrs\',\'topmap\')">'.$lt{'smap'}.'</a>' |
<b>$lt{'map'}:</b> |
.&Apache::lonhtmlcommon::row_closure() |
<input type="text" size="50" name="topmap" /> |
.&Apache::lonhtmlcommon::row_title('<label for="nonstd">'.$lt{'sacr'}.'</label>') |
</label> |
.'<input id="nonstd" type="checkbox" name="nonstandard" />' |
<a href="javascript:openbrowser('ccrs','topmap')">$lt{'smap'}</a> |
.'<br />('.$lt{'ocik'}.')' |
</p><p> |
.&Apache::lonhtmlcommon::row_closure() |
<label for="nonstd"><b>$lt{'sacr'}</b></label> |
.&Apache::lonhtmlcommon::row_title($lt{'fres'}) |
<br /> |
.'<label>' |
($lt{'ocik'}): |
.'<input type="radio" name="firstres" value="blank" />'.$lt{'blnk'} |
<input id="nonstd" type="checkbox" name="nonstandard" /> |
.'</label>' |
</p><p> |
.' '); |
<b>$lt{'fres'}</b><br />($lt{'stco'}): |
if ($crstype eq 'Community') { |
<label> |
$r->print('<label>' |
<input type="radio" name="firstres" value="blank" />$lt{'blnk'} |
.'<input type="radio" name="firstres" value="nav" checked="checked" />'.$lt{'navi'} |
</label> |
.'</label>'); |
|
} else { |
<label> |
$r->print('<label>' |
<input type="radio" name="firstres" value="syl" checked />$lt{'sllb'} |
.'<input type="radio" name="firstres" value="syl" checked="checked" />'.$lt{'sllb'} |
</label> |
.'</label>' |
|
.' ' |
<label> |
.'<label>' |
<input type="radio" name="firstres" value="nav" />$lt{'navi'} |
.'<input type="radio" name="firstres" value="nav" />'.$lt{'navi'} |
</label> |
.'</label>'); |
</p> |
} |
</td><td> |
$r->print('<br />('.$lt{'stco'}.')' |
<label> |
.&Apache::lonhtmlcommon::row_closure(1) |
$lt{'cid'}: <input type="text" size="25" name="clonecourse" value="" /> |
.&Apache::lonhtmlcommon::end_pick_box() |
</label> |
|
<br /> |
.'<td> </td>' |
<label> |
|
$lt{'dmn'}: $cloneform |
# Clone Course: |
</label> |
.'<td>' |
<br /> |
.&Apache::lonhtmlcommon::start_pick_box() |
<label><input type="radio" name="datemode" value="delete" /> $lt{'ncd'}</label><br /> |
.&Apache::lonhtmlcommon::row_title($lt{'cid'}) |
<label><input type="radio" name="datemode" value="preserve" /> $lt{'prd'}</label><br /> |
.'<label>' |
<label><input type="radio" name="datemode" value="shift" checked="checked" /> $lt{'shd'}</label> |
.'<input type="text" size="25" name="clonecourse" value="" />' |
<input type="text" size="5" name="dateshift" value="365" /><br /> |
.'</label>' |
<br /> |
.&Apache::lonhtmlcommon::row_closure(1) |
$lt{'asov'}. |
.&Apache::lonhtmlcommon::row_title($lt{'dmn'}) |
</td></tr> |
.'<label>' |
</table> |
.$cloneform |
<h2>$lt{'assp'}</h2> |
.'</label>' |
<p> |
.&Apache::lonhtmlcommon::row_closure() |
<label> |
.&Apache::lonhtmlcommon::row_title($lt{'dsh'}) |
<b>$lt{'oaas'}: </b> |
.'<label>' |
<input type="checkbox" name="openall" /> |
.'<input type="radio" name="datemode" value="delete" /> '.$lt{'ncd'} |
</label> |
.'</label><br />' |
</p> |
.'<label>' |
<h2>$lt{'mssg'}</h2> |
.'<input type="radio" name="datemode" value="preserve" /> '.$lt{'prd'} |
<p> |
.'</label><br />' |
<label> |
.'<label>' |
<b>$lt{'scpf'}: </b> |
.'<input type="radio" name="datemode" value="shift" checked="checked" /> '.$lt{'shd'} |
<input type="checkbox" name="setpolicy" checked /> |
.'</label>' |
</label> |
.' <input type="text" size="5" name="dateshift" value="365" />' |
<br /> |
.&Apache::lonhtmlcommon::row_closure() |
<label> |
.&Apache::lonhtmlcommon::row_headline() |
<b>$lt{'scfc'}: </b> |
.'<span class="LC_info">'.$lt{'asov'}.'</span>' |
<input type="checkbox" name="setcontent" checked /> |
.&Apache::lonhtmlcommon::row_closure(1) |
</label> |
.&Apache::lonhtmlcommon::end_pick_box() |
</p> |
.'</td>' |
<h2>$lt{'cmmn'}</h2> |
.&Apache::loncommon::end_data_table_row() |
<p> |
.&Apache::loncommon::end_data_table() |
<label> |
.&Apache::lonhtmlcommon::row_closure() |
<b>$lt{'dsrd'}: </b> |
); |
<input type="checkbox" name="disresdis" /> |
|
</label> |
$r->print(&Apache::lonhtmlcommon::row_headline() |
<br /> |
.'<h3>'.$lt{'dads'}.'</h3>' |
<label> |
.&Apache::lonhtmlcommon::row_closure() |
<b>$lt{'dsuc'}: </b> |
.&Apache::lonhtmlcommon::row_title($lt{'dacc'}) |
<input type="checkbox" name="disablechat" /> |
.$access_table |
</label> |
.&Apache::lonhtmlcommon::row_closure() |
</p> |
); |
<h2>$lt{'acco'}</h2> |
|
<p> |
$r->print(&Apache::lonhtmlcommon::row_headline() |
<label> |
.'<h3>'.$lt{'assp'}.'</h3>' |
<b>$lt{'snak'}: </b> |
.&Apache::lonhtmlcommon::row_closure() |
<input type="checkbox" name="setkeys" /> |
|
</label> |
.&Apache::lonhtmlcommon::row_title($lt{'oaas'}) |
<br /> |
.'<input type="checkbox" name="openall" />' |
<label> |
.&Apache::lonhtmlcommon::row_closure() |
<b>$lt{'kaut'}: </b> |
|
<input type="text" size="30" name="keyauth" /> |
.&Apache::lonhtmlcommon::row_headline() |
</label> |
.'<h3>'.$lt{'mssg'}.'</h3>' |
</p> |
.&Apache::lonhtmlcommon::row_closure() |
<h2>$lt{'rshm'}</h2> |
|
<p> |
.&Apache::lonhtmlcommon::row_title($lt{'scpf'}) |
<label> |
.'<input type="checkbox" name="setpolicy" checked="checked" />' |
<b>$lt{'rshm'}: </b> |
.&Apache::lonhtmlcommon::row_closure() |
<input type="text" name="reshome" size="30" value="/res/$defdom/" /> |
|
</label> |
.&Apache::lonhtmlcommon::row_title($lt{'scfc'}) |
</p> |
.'<input type="checkbox" name="setcontent" checked="checked" />' |
<p> |
.&Apache::lonhtmlcommon::row_closure() |
<h2>$lt{'aens'}</h2> |
|
$lt{'aesc'} |
.&Apache::lonhtmlcommon::row_headline() |
</p> |
.'<h3>'.$lt{'cmmn'}.'</h3>' |
<p> |
.&Apache::lonhtmlcommon::row_closure() |
<b>$lt{'aadd'}</b> |
|
<label><input type="radio" name="autoadds" value="1" />$lt{'yes'}</label> |
.&Apache::lonhtmlcommon::row_title($lt{'dsrd'}) |
<label><input type="radio" name="autoadds" value="0" checked="true" />$lt{'no'} |
.'<input type="checkbox" name="disresdis" />' |
</label> |
.&Apache::lonhtmlcommon::row_closure() |
</p><p> |
|
<b>$lt{'audr'}</b> |
.&Apache::lonhtmlcommon::row_title($lt{'dsuc'}) |
<label><input type="radio" name="autodrops" value="1" />$lt{'yes'}</label> |
.'<input type="checkbox" name="disablechat" />' |
<label><input type="radio" name="autodrops" value="0" checked="true" />$lt{'no'}</label> |
.&Apache::lonhtmlcommon::row_closure() |
</p><p> |
|
<b>$lt{'dacu'}</b> |
.&Apache::lonhtmlcommon::row_headline() |
$enroll_table |
.'<h3>'.$lt{'acco'}.'</h3>' |
</p><p> |
.&Apache::lonhtmlcommon::row_closure() |
<b>$lt{'dacc'}</b> |
|
$access_table |
.&Apache::lonhtmlcommon::row_title($lt{'snak'}) |
<p></p> |
.'<input type="checkbox" name="setkeys" />' |
<b>$lt{'psam'}.</b><br /> |
.&Apache::lonhtmlcommon::row_closure() |
$lt{'pcda'}. |
|
</p><p> |
.&Apache::lonhtmlcommon::row_title($lt{'kaut'}) |
$krbform |
.'<input type="text" size="30" name="keyauth" />' |
<br /> |
.&Apache::lonhtmlcommon::row_closure() |
$intform |
|
<br /> |
.&Apache::lonhtmlcommon::row_headline() |
$locform |
.'<h3>'.$lt{'rshm'}.'</h3>' |
</p><p> |
.&Apache::lonhtmlcommon::row_closure() |
<b>$lt{'nech'}</b><br /> |
|
$lt{'nccl'}<br/> |
.&Apache::lonhtmlcommon::row_title($lt{'rshm'}) |
<label> |
.'<input type="text" name="reshome" size="30" value="/res/'.$defdom.'/" />' |
<input type="radio" name="notify_owner" value="1" />$lt{'yes'} |
.&Apache::lonhtmlcommon::row_closure() |
</label> |
); |
<label> |
if ($crstype eq 'Course') { |
<input type="radio" name="notify_owner" value="0" checked="true" />$lt{'no'} |
$r->print(&Apache::lonhtmlcommon::row_headline() |
</label> |
.'<h3>'.$lt{'aens'}.'</h3>' |
<br /> |
.&Apache::lonhtmlcommon::row_closure() |
$lt{'ndcl'}<br/> |
|
<label> |
.&Apache::lonhtmlcommon::row_title($lt{'aadd'}) |
<input type="radio" name="notify_dc" value="1" />$lt{'yes'} |
.'<label><input type="radio" name="autoadds" value="1" />'.$lt{'yes'}.'</label>' |
</label> |
.'<label><input type="radio" name="autoadds" value="0" checked="checked" />'.$lt{'no'}.'</label>' |
<label> |
.&Apache::lonhtmlcommon::row_closure() |
<input type="radio" name="notify_dc" value="0" checked="true" />$lt{'no'} |
|
</label> |
.&Apache::lonhtmlcommon::row_title($lt{'audr'}) |
</p><p> |
.'<label><input type="radio" name="autodrops" value="1" />'.$lt{'yes'}.'</label>' |
<b>$lt{'irsp'}</b> |
.'<label><input type="radio" name="autodrops" value="0" checked="checked" />'.$lt{'no'}.'</label>' |
<label> |
.&Apache::lonhtmlcommon::row_closure() |
<input type="radio" name="showphotos" value="1" />$lt{'yes'} |
|
</label> |
.&Apache::lonhtmlcommon::row_title($lt{'dacu'}) |
<label> |
.$enroll_table |
<input type="radio" name="showphotos" value="0" checked="true" />$lt{'no'} |
.&Apache::lonhtmlcommon::row_closure() |
</label> |
|
</p> |
.&Apache::lonhtmlcommon::row_title($lt{'psam'}) |
<p> |
.$lt{'pcda'}.'<br />' |
<h2>$lt{'cgrs'}</h2> |
.$krbform.'<br />' |
$lt{'cgrq'} |
.$intform.'<br />' |
<input type="text" name="crsquota" value="20" size="6" />Mb |
.$locform |
</p> |
.&Apache::lonhtmlcommon::row_closure() |
<hr /> |
|
<h2>$lt{'cc'}</h2> |
.&Apache::lonhtmlcommon::row_title($lt{'nech'}) |
<p> |
.$lt{'nccl'}.'<br/>' |
<label> |
.'<label><input type="radio" name="notify_owner" value="1" />'.$lt{'yes'}.'</label>' |
<b>$lt{'user'}:</b> <input type="text" size="15" name="ccuname" /> |
.'<label><input type="radio" name="notify_owner" value="0" checked="checked" />'.$lt{'no'}.'</label>' |
</label> |
.'<br />' |
</p><p> |
.$lt{'ndcl'}.'<br/>' |
<label> |
.'<label><input type="radio" name="notify_dc" value="1" />'.$lt{'yes'}.'</label>' |
<b>$lt{'dmn'}:</b> $domform |
.'<label><input type="radio" name="notify_dc" value="0" checked="checked" />'.$lt{'no'}.'</label>' |
</label> |
.&Apache::lonhtmlcommon::row_closure() |
</p> |
|
|
.&Apache::lonhtmlcommon::row_title($lt{'irsp'}) |
|
.'<label>' |
|
.'<input type="radio" name="showphotos" value="1" />'.$lt{'yes'} |
|
.'</label> ' |
|
.'<label>' |
|
.'<input type="radio" name="showphotos" value="0" checked="checked" />'.$lt{'no'} |
|
.'</label> ' |
|
.&Apache::lonhtmlcommon::row_closure() |
|
); |
|
} |
|
|
|
$r->print(&Apache::lonhtmlcommon::row_headline() |
|
.'<h3>'.$lt{'cgrs'}.'</h3>' |
|
.&Apache::lonhtmlcommon::row_closure() |
|
|
|
.&Apache::lonhtmlcommon::row_title($lt{'cgrq'}) |
|
.'<input type="text" name="crsquota" value="20" size="6" />Mb' |
|
.&Apache::lonhtmlcommon::row_closure(1) |
|
|
|
.&Apache::lonhtmlcommon::end_pick_box() |
|
.'</div>' |
|
); |
|
if ($crstype eq 'Course') { |
|
$r->print(' |
<p> |
<p> |
<input type="hidden" name="prevphase" value="courseone" /> |
<input type="hidden" name="prevphase" value="courseone" /> |
<input type="hidden" name="phase" value="coursetwo" /> |
<input type="hidden" name="phase" value="coursetwo" /> |
<input type="button" onClick="verify_message(this.form)" value="$lt{'opco'}" /> |
<input type="button" onclick="verify_message(this.form)" value="'.$lt{'opco'}.'" />' |
</p> |
); |
</form> |
} elsif ($crstype eq 'Community') { |
ENDDOCUMENT |
$r->print(' |
} elsif ($crstype eq 'Group') { |
|
$r->print(<<ENDDOCUMENT); |
|
<form action="/adm/createcourse" method="post" name="ccrs"> |
|
<h2>$lt{'ginf'}</h2> |
|
<p> |
|
<label><b>$lt{'gtit'}:</b> |
|
<input type="text" size="50" name="title" /></label> |
|
</p><p> |
|
<label> |
|
<b>$lt{'ghsr'}:</b>$course_home |
|
</label> |
|
</p><p> |
|
<label> |
|
<b>$lt{'gidn'} ($lt{'opt'})</b> |
|
<input type="text" size="30" name="crsid" /> |
|
</label> |
|
</p> |
|
<h2>$lt{'grco'}</h2> |
|
<table border="2"> |
|
<tr><th>$lt{'cngr'}</th><th>$lt{'cegr'}</th></tr> |
|
<tr><td> |
|
<p> |
|
<label> |
|
<b>$lt{'map'}:</b> |
|
<input type="text" size="50" name="topmap" /> |
|
</label> |
|
<a href="javascript:openbrowser('ccrs','topmap')">$lt{'smap'}</a> |
|
</p><p> |
|
<label for="nonstd"><b>$lt{'sagr'}</b></label> |
|
<br /> |
|
($lt{'ocik'}): |
|
<input id="nonstd" type="checkbox" name="nonstandard" /> |
|
</p><p> |
|
<b>$lt{'fres'}</b><br />($lt{'stgo'}): |
|
<label> |
|
<input type="radio" name="firstres" value="blank" />$lt{'blnk'} |
|
</label> |
|
|
|
<label> |
|
<input type="radio" name="firstres" value="syl" checked />$lt{'sllb'} |
|
</label> |
|
|
|
<label> |
|
<input type="radio" name="firstres" value="nav" />$lt{'navi'} |
|
</label> |
|
</p> |
|
</td><td> |
|
<label> |
|
$lt{'gid'}: <input type="text" size="25" name="clonecourse" value="" /> |
|
</label> |
|
<br /> |
|
<label> |
|
$lt{'dmn'}: $cloneform |
|
</label> |
|
<br /> |
|
<label><input type="radio" name="datemode" value="delete" /> $lt{'ncd'}</label><br /> |
|
<label><input type="radio" name="datemode" value="preserve" /> $lt{'prd'}</label><br /> |
|
<label><input type="radio" name="datemode" value="shift" checked="checked" /> $lt{'shd'}</label> |
|
<input type="text" size="5" name="dateshift" value="365" /><br /> <br /> |
|
$lt{'asov'}. |
|
</td></tr> |
|
</table> |
|
</p> |
|
<p> |
|
<h2>$lt{'mssg'}</h2> |
|
<p> |
|
<label> |
|
<b>$lt{'sgpf'}: </b> |
|
<input type="checkbox" name="setpolicy" checked /> |
|
</label> |
|
<br /> |
|
<label> |
|
<b>$lt{'scfg'}: </b> |
|
<input type="checkbox" name="setcontent" checked /> |
|
</label> |
|
</p> |
|
<h2>$lt{'cmmn'}</h2> |
|
<p> |
|
<label> |
|
<b>$lt{'dmrd'}: </b> |
|
<input type="checkbox" name="disresdis" /> |
|
</label> |
|
<br /> |
|
<label> |
|
<b>$lt{'dmuc'}: </b> |
|
<input type="checkbox" name="disablechat" /> |
|
</label> |
|
</p> |
|
<h2>$lt{'acco'}</h2> |
|
<p> |
|
<label> |
|
<b>$lt{'mnak'}: </b> |
|
<input type="checkbox" name="setkeys" /> |
|
</label> |
|
<br /> |
|
<label> |
|
<b>$lt{'kaug'}: </b> |
|
<input type="text" size="30" name="keyauth" /> |
|
</label> |
|
</p> |
|
<h2>$lt{'rshm'}</h2> |
|
<p> |
|
<label> |
|
<b>$lt{'rshm'}: </b> |
|
<input type="text" name="reshome" size="30" value="/res/$defdom/" /> |
|
</label> |
|
</p> |
|
<p> |
|
<h2>$lt{'grts'}</h2> |
|
$lt{'grtq'} |
|
<input type="text" name="crsquota" value="20" />Mb |
|
</p> |
|
<hr /> |
|
<h2>$lt{'gc'}</h2> |
|
<p> |
|
<label> |
|
<b>$lt{'user'}:</b> <input type="text" size="15" name="ccuname" /> |
|
</label> |
|
</p><p> |
|
<label> |
|
<b>$lt{'dmn'}:</b> $domform |
|
</label> |
|
</p> |
|
<p> |
<p> |
<input type="hidden" name="prevphase" value="groupone" /> |
<input type="hidden" name="prevphase" value="groupone" /> |
<input type="hidden" name="phase" value="grouptwo" /> |
<input type="hidden" name="phase" value="grouptwo" /> |
<input type="button" onClick="validate(this.form)" value="$lt{'crgr'}" /> |
<input type="submit" value="'.$lt{'opcm'}.'" /> |
</p> |
</p>' |
</form> |
); |
ENDDOCUMENT |
|
} |
} |
$r->print($end_page); |
$r->print('</form>'. |
|
$end_page); |
} |
} |
|
|
# ====================================================== Phase two: make course |
# ====================================================== Phase two: make course |
Line 578 sub create_course {
|
Line 569 sub create_course {
|
my $r=shift; |
my $r=shift; |
my $ccuname =&LONCAPA::clean_username($env{'form.ccuname'}); |
my $ccuname =&LONCAPA::clean_username($env{'form.ccuname'}); |
my $ccdomain=&LONCAPA::clean_domain($env{'form.ccdomain'}); |
my $ccdomain=&LONCAPA::clean_domain($env{'form.ccdomain'}); |
my $crstype = 'Group'; |
my $crstype = 'Community'; |
my ($enrollstart,$enrollend,$startaccess,$endaccess); |
my ($enrollstart,$enrollend,$startaccess,$endaccess); |
|
my %domdefaults = |
|
&Apache::lonnet::get_domain_defaults($env{'request.role.domain'}); |
|
|
if ($env{'form.phase'} eq 'coursetwo') { |
if ($env{'form.phase'} eq 'coursetwo') { |
$crstype='Course'; |
$crstype='Course'; |
Line 655 sub create_course {
|
Line 648 sub create_course {
|
firstres => $env{'form.firstres'} |
firstres => $env{'form.firstres'} |
}; |
}; |
|
|
|
if (($crstype eq 'Course') && |
|
($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'})) { |
|
$args->{'defaultcredits'} = $env{'form.defaultcredits'}; |
|
} |
|
|
# |
# |
# Verify data |
# Verify data |
# |
# |
# Check the veracity of the course coordinator |
# Check the veracity of the course coordinator |
if (&Apache::lonnet::homeserver($ccuname,$ccdomain) eq 'no_host') { |
if (&Apache::lonnet::homeserver($ccuname,$ccdomain) eq 'no_host') { |
$r->print('<form action="/adm/createuser" method="post" name="crtuser">'); |
$r->print('<form action="/adm/createuser" method="post" name="crtuser">'); |
$r->print(&mt('No such user').' '.$ccuname.' '.&mt('at').' '.$ccdomain.'.<br />'); |
$r->print('<div class="LC_warning">' |
$r->print(&mt("Please click Back on your browser and select another user, or ")); |
.&mt('No such user [_1] at domain [_2].','<tt>'.$ccuname.'</tt>','<tt>'.$ccdomain.'</tt>') |
$r->print(' |
.'</div>'); |
<input type="hidden" name="phase" value="get_user_info" /> |
$r->print(&mt('Please click Back on your browser and select another user, or [_1]Create User[_2]' |
<input type="hidden" name="ccuname" value="'.$ccuname.'" /> |
, '<input type="hidden" name="phase" value="get_user_info" />' |
<input type="hidden" name="ccdomain" value="'.$ccdomain.'" /> |
.'<input type="hidden" name="ccuname" value="'.$ccuname.'" />' |
<input name="userrole" type="submit" value="'. |
.'<input type="hidden" name="ccdomain" value="'.$ccdomain.'" />' |
&mt('Create User').'" /> |
.'<input name="userrole" type="submit" value="' |
</form>'.&Apache::loncommon::end_page()); |
, '" />' |
|
) |
|
.'</form>'.&Apache::loncommon::end_page() |
|
); |
return; |
return; |
} |
} |
# Check the proposed home server for the course |
# Check the proposed home server for the course |
my %host_servers = |
my %host_servers = |
&Apache::lonnet::get_servers($env{'request.role.domain'},'library'); |
&Apache::lonnet::get_servers($env{'request.role.domain'},'library'); |
if (! exists($host_servers{$env{'form.course_home'}})) { |
if (! exists($host_servers{$env{'form.course_home'}})) { |
$r->print(&mt('Invalid home server for course').': '. |
$r->print(&mt('Invalid home server for course: [_1]' |
$env{'form.course_home'}.&Apache::loncommon::end_page()); |
,$env{'form.course_home'}.&Apache::loncommon::end_page())); |
return; |
return; |
} |
} |
my ($courseid,$crsudom,$crsunum); |
my ($courseid,$crsudom,$crsunum); |
Line 685 sub create_course {
|
Line 686 sub create_course {
|
&Apache::loncommon::construct_course($args,\$logmsg,\$courseid, |
&Apache::loncommon::construct_course($args,\$logmsg,\$courseid, |
\$crsudom,\$crsunum, |
\$crsudom,\$crsunum, |
$env{'user.domain'}, |
$env{'user.domain'}, |
$env{'user.name'}); |
$env{'user.name'},'dc_create'); |
$r->print($output); |
$r->print($output); |
if ($success) { |
if ($success) { |
# |
# |
# Make the requested user a course coordinator or group coordinator |
# Make the requested user a course coordinator or group coordinator |
# |
# |
if (($ccdomain) && ($ccuname)) { |
if (($ccdomain) && ($ccuname)) { |
$r->print(&mt('Assigning role of [_1] Coordinator to [_2] at [_3]: ', |
my $ccrole = 'cc'; |
$crstype,$ccuname,$ccdomain). |
if ($crstype eq 'Community') { |
&Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid, |
$ccrole = 'co'; |
'cc','','','','','createcourse').'<p>'); |
} |
|
$r->print(&mt('Assigning role of '.$crstype.' Coordinator to [_1]:', |
|
,'<i>'.$ccuname.':'.$ccdomain.'</i>') |
|
.&Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid, |
|
$ccrole,'','','','','createcourse').'<p>'); |
} |
} |
if ($env{'form.setkeys'}) { |
if ($env{'form.setkeys'}) { |
$r->print( |
$r->print( |
'<p><a href="/adm/managekeys?cid='.$crsudom.'_'.$crsunum.'">'.&mt('Manage Access Keys').'</a></p>'); |
'<p><a href="/adm/managekeys?cid='.$crsudom.'_'.$crsunum.'">'.&mt('Manage Access Keys').'</a></p>'); |
} |
} |
# Flush the course logs so reverse user roles immediately updated |
# Flush the course logs so reverse user roles immediately updated |
&Apache::lonnet::flushcourselogs(); |
$r->register_cleanup(\&Apache::lonnet::flushcourselogs); |
$r->print('<p>'.&mt('Roles will be active at next login').'.</p>'); |
$r->print('<p>'.&mt('Roles will be active at next login').'.</p>'); |
} |
} |
$r->print('<p><a href="/adm/createcourse?phase='.lc($crstype).'one">'. |
$r->print('<p><a href="/adm/createcourse?phase='.lc($crstype).'one">'. |
&mt('Create Another [_1]',$crstype).'</a></p>'. |
&mt("Create Another $crstype").'</a></p>'. |
&Apache::loncommon::end_page()); |
&Apache::loncommon::end_page()); |
} |
} |
|
|
sub print_intro_page { |
sub print_intro_page { |
my $r = shift; |
my ($r,$show_all_choices) = @_; |
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page('Create a New Course or Group Space'); |
&Apache::loncommon::start_page('Create a New Course or Community'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Options','Create_Course',undef,'Create_Courses'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Options','Create_Course',undef,'Create_Courses'); |
my $end_page = |
my $end_page = |
&Apache::loncommon::end_page(); |
&Apache::loncommon::end_page(); |
my $helplink=&Apache::loncommon::help_open_topic('Create_Course_GroupSpace',&mt('Help on Creating Courses and Groups')); |
my $helplink=&Apache::loncommon::help_open_topic('Create_Course_Community',&mt('Help on Creating Courses and Communities')); |
|
|
my @choices = ({ internal_name => 'courseone', |
# Create menu |
name => &mt('Create a single course'), |
my @menu; |
short_description => |
@menu = |
&mt('Create a new course by completing an online form.'), |
({ categorytitle => 'Course/Community Creation', |
}, |
items => [ |
{ internal_name => 'groupone', |
{ |
name => &mt('Create a single collaborative group space '), |
linktext => 'Create a single course', |
short_description => |
url => '/adm/createcourse?phase=courseone', |
&mt('Create a new group space for non-course use by completing an online form .'), |
permission => 1, |
}, |
#help => '', |
{ internal_name => 'batchone', |
icon => 'crsnew.png', |
name => &mt('Create courses/groups by uploading an attributes file'), |
linktitle => 'Create a new course by completing an online form.' |
short_description => |
}, |
&mt('Upload an attributes file containing specifications for one or more courses or groups in XML format'), |
{ |
help => 'Batch_Creation', |
linktext => 'Create a single community', |
}, |
url => '/adm/createcourse?phase=groupone', |
|
permission => $show_all_choices, |
|
#help => '', |
|
icon => 'crsnew.png', |
|
linktitle => 'Create a new collaborative community by completing an online form.' |
|
}, |
|
{ |
|
linktext => 'Create courses/communities by uploading an attributes file', |
|
url => '/adm/createcourse?phase=batchone', |
|
permission => 1, |
|
help => 'Batch_Creation', |
|
icon => 'uplcrs.png', |
|
linktitle => 'Upload an attributes file containing specifications for one or more courses or communities in XML format.' |
|
}, |
|
] |
|
}, |
|
{ categorytitle => 'Course/Community Requests', |
|
items => [ |
|
{ |
|
linktext => 'Approve or reject requests', |
|
url => '/adm/createcourse?phase=requestdisplay', |
|
permission => $show_all_choices, |
|
#help => '', |
|
icon => 'rcrs.png', |
|
linktitle => 'Display course and community creation requests submitted by authorized users, held pending approval by a Domain Coordinator.' |
|
}, |
|
{ |
|
linktext => 'View pending official course requests', |
|
url => '/adm/createcourse?phase=pendingdisplay', |
|
permission => $show_all_choices, |
|
#help => '', |
|
icon => 'edit-find.png', |
|
alttext => '', |
|
linktitle => 'Display official course requests submitted by authorized users, held pending validation of instructor status.' |
|
}, |
|
] |
|
}, |
|
{ categorytitle => 'Administration', |
|
items => [ |
|
{ |
|
linktext => 'View creation log', |
|
url => '/adm/createcourse?phase=creationlog', |
|
permission => $show_all_choices, |
|
#help => '', |
|
icon => 'document-properties.png', |
|
linktitle => 'Display information about when, how and by whom courses and communities were created in this domain.' |
|
}, |
|
] |
|
}, |
|
); |
|
|
|
$r->print( |
|
$start_page |
|
.$crumbs |
|
.&Apache::lonhtmlcommon::generate_menu(@menu) |
|
.$end_page |
); |
); |
my $options; |
|
foreach my $choice (@choices) { |
|
$options .=' <h3><a href="/adm/createcourse?phase='. |
|
$choice->{'internal_name'}.'" >'. |
|
$choice->{'name'}.'</a>'; |
|
if (exists($choice->{'help'})) { |
|
$options .= &Apache::loncommon::help_open_topic($choice->{'help'}); |
|
} |
|
$options .= "</h3>\n".' '.(' 'x8).$choice->{'short_description'}. |
|
"\n"; |
|
} |
|
|
|
$r->print(<<ENDDOCUMENT); |
|
$start_page |
|
$crumbs |
|
$options |
|
$end_page |
|
ENDDOCUMENT |
|
} |
} |
|
|
sub upload_batchfile { |
sub upload_batchfile { |
my $r = shift; |
my $r = shift; |
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page('Create a New Course or Group Space'); |
&Apache::loncommon::start_page('Create a New Course or Community'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Upload Course/Group Attributes File','Create_Course',undef,'Create_Courses'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Upload Course/Community Attributes File','Create_Course',undef,'Create_Courses'); |
my $end_page = |
my $end_page = |
&Apache::loncommon::end_page(); |
&Apache::loncommon::end_page(); |
$r->print($start_page.$crumbs); |
$r->print($start_page.$crumbs); |
$r->print('<h3>'.&mt('Upload a courses or groups attributes file').'</h3>'); |
$r->print('<h3>'.&mt('Upload a courses or communities attributes file').'</h3>'); |
$r->print('<form name="batchcreate" method="post" '. |
$r->print('<form name="batchcreate" method="post" '. |
'enctype="multipart/form-data" action="/adm/createcourse">'. |
'enctype="multipart/form-data" action="/adm/createcourse">'. |
'<input type="file" name="coursecreatorxml" />'. |
'<input type="file" name="coursecreatorxml" />'. |
'<input type="hidden" name="phase" value="batchtwo"><br /><br />'. |
'<input type="hidden" name="phase" value="batchtwo" /><br /><br />'. |
'<input type="submit" name="batchsubmit" '. |
'<input type="submit" name="batchsubmit" '. |
'value="Create Courses/Groups" /></form>'); |
'value="'.&mt('Create Courses/Communities').'" /></form>'); |
$r->print($end_page); |
$r->print($end_page); |
return; |
return; |
} |
} |
Line 778 sub upload_batchfile {
|
Line 820 sub upload_batchfile {
|
sub process_batchfile { |
sub process_batchfile { |
my $r = shift; |
my $r = shift; |
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page('Create a New Course or Group Space'); |
&Apache::loncommon::start_page('Create a New Course or Community'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Outcome','Create_Course',undef,'Create_Courses'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Outcome','Create_Course',undef,'Create_Courses'); |
my $end_page = |
my $end_page = |
&Apache::loncommon::end_page(); |
&Apache::loncommon::end_page(); |
Line 816 sub process_batchfile {
|
Line 858 sub process_batchfile {
|
|
|
} |
} |
|
|
|
sub courserequestbrowser_javascript { |
|
return <<"ENDREQBRW"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
var steditbrowser; |
|
function opencoursereqdisplay(cdom,cnum,queue) { |
|
var url = '/adm/requestcourse?action=display'; |
|
url += '&showdom='+cdom+'&cnum='+cnum+'&queue='+queue; |
|
var title = 'Course_Request_Browser'; |
|
var options = 'scrollbars=1,resizable=1,menubar=0'; |
|
options += ',width=700,height=600'; |
|
var stdeditbrowser = open(url,title,options,'1'); |
|
stdeditbrowser.focus(); |
|
} |
|
|
|
// ]]> |
|
</script> |
|
ENDREQBRW |
|
} |
|
|
|
sub print_creation_logs { |
|
my ($r) = @_; |
|
my $formname = 'creationlog'; |
|
my $dom = $env{'request.role.domain'}; |
|
$r->print('<form action="/adm/createcourse" method="post" name="'.$formname.'">'); |
|
# set defaults |
|
my $now = time(); |
|
my $defstart = $now - (7*24*3600); #7 days ago |
|
my %defaults = ( |
|
page => '1', |
|
show => '10', |
|
type => 'any', |
|
context => 'any', |
|
created_before_date => $now, |
|
created_after_date => $defstart, |
|
); |
|
my ($contexts,$contextnames) = &context_names(); |
|
my $more_records = 0; |
|
my %curr; |
|
foreach my $item ('show','page','type','context') { |
|
$curr{$item} = $env{'form.'.$item}; |
|
} |
|
$curr{'created_after_date'} = &Apache::lonhtmlcommon::get_date_from_form('created_after_date'); |
|
$curr{'created_before_date'} = &Apache::lonhtmlcommon::get_date_from_form('created_before_date'); |
|
foreach my $key (keys(%defaults)) { |
|
if ($curr{$key} eq '') { |
|
$curr{$key} = $defaults{$key}; |
|
} |
|
} |
|
my %whodunit; |
|
$r->print(&creation_display_filter($formname,\%curr)); |
|
my $showntablehdr = 0; |
|
my $tablehdr = &Apache::loncommon::start_data_table(). |
|
&Apache::loncommon::start_data_table_header_row(). |
|
'<th> </th><th>'.&mt('Creation Date').'</th>'. |
|
'<th>'.&mt('Creator').'</th><th>'.&mt('Description').'</th>'. |
|
'<th>'.&mt('Owner(s)').'</th>'; |
|
if (($curr{'type'} eq 'official') || ($curr{'type'} eq 'any')) { |
|
$tablehdr .= '<th>'.&mt('Institutional Code').'</th>'; |
|
} |
|
if ($curr{'type'} eq 'any') { |
|
$tablehdr .= '<th>'.&mt('Course Type').'</th>'; |
|
} |
|
if ($curr{'context'} eq 'any') { |
|
$tablehdr .= '<th>'.&mt('Creation Context').'</th>'; |
|
} |
|
$tablehdr .= &Apache::loncommon::end_data_table_header_row(); |
|
my ($minshown,$maxshown); |
|
$minshown = 1; |
|
my $count = 0; |
|
if ($curr{'show'} ne &mt('all')) { |
|
$maxshown = $curr{'page'} * $curr{'show'}; |
|
if ($curr{'page'} > 1) { |
|
$minshown = 1 + ($curr{'page'} - 1) * $curr{'show'}; |
|
} |
|
} |
|
my $crstype = 'Course'; |
|
if ($curr{'type'} eq 'any') { |
|
$crstype = '.'; |
|
} elsif ($curr{'type'} eq 'community') { |
|
$crstype = 'Community'; |
|
} |
|
|
|
my ($instcodefilter,$regexpok); |
|
my (@codetitles,%cat_titles,%cat_order,%cat_items,$officialjs); |
|
my ($jscript,$totcodes,$numtitles,$lasttitle) = |
|
&Apache::courseclassifier::instcode_selectors_data($dom,$formname, |
|
\%cat_items,\@codetitles,\%cat_titles,\%cat_order, |
|
$officialjs); |
|
if ($numtitles) { |
|
if (($curr{'type'} eq 'official') || ($curr{'type'} eq 'unofficial')) { |
|
$instcodefilter = &instcode_srchstr($dom,$numtitles); |
|
&Apache::courseclassifier::instcode_search_str($dom,$numtitles,\@codetitles); |
|
if ($curr{'type'} eq 'official') { |
|
$regexpok = 1; |
|
} else { |
|
unless ($instcodefilter eq '') { |
|
$regexpok = -1; |
|
} |
|
} |
|
} |
|
} |
|
if ($instcodefilter eq '') { $instcodefilter = '.'; } |
|
|
|
my $creationcontext = '.'; |
|
my $context_regexp = join('|',@{$contexts}); |
|
if ($curr{'context'} =~ /^($context_regexp)$/) { |
|
$creationcontext = $curr{'context'}; |
|
} |
|
my %courses = |
|
&Apache::lonnet::courseiddump($dom,'.',1,$instcodefilter,'.','.',undef,undef, |
|
$crstype,$regexpok,undef,undef,'1','creationlog', |
|
undef,undef,undef,$curr{'created_before_date'}, |
|
$curr{'created_after_date'},$creationcontext); |
|
foreach my $cid (sort { $courses{$b}{'created'}<=>$courses{$a}{'created'} } (keys(%courses))) { |
|
if ($curr{'show'} ne &mt('all')) { |
|
if ($count >= $curr{'page'} * $curr{'show'}) { |
|
$more_records = 1; |
|
last; |
|
} |
|
} |
|
$count ++; |
|
next if ($count < $minshown); |
|
if (!$showntablehdr) { |
|
$r->print($tablehdr); |
|
$showntablehdr = 1; |
|
} |
|
if ($courses{$cid}{'creator'} ne '') { |
|
if ($whodunit{$courses{$cid}{'creator'}} eq '') { |
|
my ($uname,$udom) = split(':',$courses{$cid}{'creator'}); |
|
$whodunit{$courses{$cid}{'creator'}} = |
|
&Apache::loncommon::plainname($uname,$udom); |
|
} |
|
} |
|
my $description = $courses{$cid}{'description'}; |
|
my @owners; |
|
my $singleowner = $courses{$cid}{'owner'}; |
|
push(@owners,$singleowner); |
|
if (ref($courses{$cid}{'co-owners'}) eq 'ARRAY') { |
|
foreach my $item (@{$courses{$cid}{'co-owners'}}) { |
|
push(@owners,$item); |
|
} |
|
} |
|
my %ownernames; |
|
foreach my $owner (@owners) { |
|
my ($ownername,$ownerdom); |
|
if ($owner =~ /:/) { |
|
($ownername,$ownerdom) = split(/:/,$owner); |
|
} else { |
|
$ownername = $owner; |
|
if ($owner ne '') { |
|
$ownerdom = $dom; |
|
} |
|
} |
|
if ($ownername ne '' && $ownerdom ne '') { |
|
unless (ref($ownernames{$ownername.':'.$ownerdom}) eq 'HASH') { |
|
my %namehash=&Apache::loncommon::getnames($ownername,$ownerdom); |
|
$ownernames{$ownername.':'.$ownerdom} = \%namehash; |
|
} |
|
} |
|
} |
|
my @lastnames; |
|
foreach my $owner (keys(%ownernames)) { |
|
if (ref($ownernames{$owner}) eq 'HASH') { |
|
push(@lastnames,$ownernames{$owner}{'lastname'}); |
|
} |
|
} |
|
my $ownerlastnames = join(', ',sort(@lastnames)); |
|
my $showtype; |
|
if ($courses{$cid}{type} eq 'Community') { |
|
$showtype = &mt('community'); |
|
} else { |
|
my $instcode = $courses{$cid}{inst_code}; |
|
if ($instcode ne '') { |
|
$showtype = &mt('official'); |
|
} else { |
|
$showtype = &mt('unofficial'); |
|
} |
|
} |
|
my $showcontext; |
|
|
|
if ($courses{$cid}{context} =~ /^($context_regexp)$/) { |
|
$showcontext = $contextnames->{$courses{$cid}{context}}; |
|
} |
|
my $created = &Apache::lonlocal::locallocaltime($courses{$cid}{'created'}); |
|
my ($cdom,$cnum) = split('_',$cid); |
|
$r->print(&Apache::loncommon::start_data_table_row()."\n". |
|
'<td>'.$count.'</td><td>'.$created.'</td>'."\n". |
|
'<td>'.$whodunit{$courses{$cid}{creator}}.'</td>'."\n". |
|
'<td>'.$description.' <a href="javascript:ToSyllabus('."'$cdom','$cnum'".')">'.&mt('Syllabus').'</a></td><td>'.$ownerlastnames.'</td>'); |
|
if (($curr{'type'} eq 'official') || ($curr{'type'} eq 'any')) { |
|
$r->print('<td>'.$courses{$cid}{'inst_code'}.'</td>'); |
|
} |
|
if ($curr{'type'} eq 'any') { |
|
$r->print('<td>'.$showtype.'</td>'); |
|
} |
|
if ($curr{'context'} eq 'any') { |
|
$r->print('<td>'.$showcontext.'</td>'); |
|
} |
|
$r->print('<td>'.&Apache::loncommon::end_data_table_row()."\n"); |
|
} |
|
if ($showntablehdr) { |
|
$r->print(&Apache::loncommon::end_data_table().'<br />'); |
|
if (($curr{'page'} > 1) || ($more_records)) { |
|
$r->print('<table><tr>'); |
|
if ($curr{'page'} > 1) { |
|
$r->print('<td><a href="javascript:chgPage('."'previous'".');">'.&mt('Previous [_1] changes',$curr{'show'}).'</a></td>'); |
|
} |
|
if ($more_records) { |
|
$r->print('<td><a href="javascript:chgPage('."'next'".');">'.&mt('Next [_1] changes',$curr{'show'}).'</a></td>'); |
|
} |
|
$r->print('</tr></table>'); |
|
$r->print(<<"ENDSCRIPT"); |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
function chgPage(caller) { |
|
if (caller == 'previous') { |
|
document.$formname.page.value --; |
|
} |
|
if (caller == 'next') { |
|
document.$formname.page.value ++; |
|
} |
|
document.$formname.submit(); |
|
return; |
|
} |
|
// ]]> |
|
</script> |
|
ENDSCRIPT |
|
} |
|
} else { |
|
$r->print('<p class="LC_info">'. |
|
&mt('There are no records to display'). |
|
'</p>'); |
|
} |
|
$r->print('<input type="hidden" name="page" value="'.$curr{'page'}.'" />'. |
|
'<input type="hidden" name="phase" value="creationlog" /></form>'); |
|
return; |
|
} |
|
|
|
sub creation_display_filter { |
|
my ($formname,$curr) = @_; |
|
my $nolink = 1; |
|
my ($contexts,$contextnames) = &context_names(); |
|
my $output = '<table><tr><td valign="top">'. |
|
'<span class="LC_nobreak"><b>'.&mt('Records/page:').'</b></span><br />'. |
|
&Apache::lonmeta::selectbox('show',$curr->{'show'},undef, |
|
(&mt('all'),5,10,20,50,100,1000,10000)). |
|
'</td><td> </td>'; |
|
my $startform = |
|
&Apache::lonhtmlcommon::date_setter($formname,'created_after_date', |
|
$curr->{'created_after_date'},undef, |
|
undef,undef,undef,undef,undef,undef,$nolink); |
|
my $endform = |
|
&Apache::lonhtmlcommon::date_setter($formname,'created_before_date', |
|
$curr->{'created_before_date'},undef, |
|
undef,undef,undef,undef,undef,undef,$nolink); |
|
$output .= '<td valign="top"><b>'.&mt('Window during which course/community was created:').'</b><br />'. |
|
'<table><tr><td>'.&mt('After:'). |
|
'</td><td>'.$startform.'</td></tr>'. |
|
'<tr><td>'.&mt('Before:').'</td>'. |
|
'<td>'.$endform.'</td></tr></table>'. |
|
'</td>'. |
|
'<td> </td>'; |
|
my ($types,$typenames) = &Apache::loncommon::course_types(); |
|
if (ref($types) eq 'ARRAY') { |
|
if (@{$types} > 1) { |
|
$output .= '<td valign="top"><b>'. |
|
&mt('Course Type:').'</b><br /><select name="type">'; |
|
my $selstr = ''; |
|
if ($curr->{'type'} eq 'any') { |
|
$selstr = ' selected="selected"'; |
|
} |
|
$output .= '<option value="any"'.$selstr.'>'.&mt('Any').'</option>'."\n"; |
|
foreach my $type (@{$types}) { |
|
my $selstr = ''; |
|
if ($curr->{'type'} eq $type) { |
|
$selstr = ' selected="selected"'; |
|
} |
|
my $typename = $type; |
|
if (ref($typenames) eq 'HASH') { |
|
if ($typenames->{$type} ne '') { |
|
$typename = $typenames->{$type}; |
|
} |
|
} |
|
$output .= '<option value="'.$type.'"'.$selstr.'>'.$typename.'</option>'."\n"; |
|
} |
|
$output .= '</select></td>'; |
|
} |
|
} |
|
$output .= '<td> </td>'. |
|
'<td valign="top"><b>'. |
|
&mt('Creation Context:').'</b><br /><select name="context">'; |
|
foreach my $context ('any',@{$contexts}) { |
|
my $selstr = ''; |
|
if ($curr->{'context'} eq $context) { |
|
$selstr = ' selected="selected"'; |
|
} |
|
$output .= '<option value="'.$context.'"'.$selstr.'>'; |
|
if ($context eq 'any') { |
|
$output .= &mt('Any'); |
|
} else { |
|
$output .= $contextnames->{$context}; |
|
} |
|
$output .= '</option>'."\n"; |
|
} |
|
$output .= '</select></td>'. |
|
'</tr></table>'; |
|
|
|
# Update Display button |
|
$output .= '<p>'. |
|
'<input type="submit" value="'.&mt('Update Display').'" />'. |
|
'</p><hr />'; |
|
return $output; |
|
} |
|
|
|
sub context_names { |
|
my @contexts = qw(auto web dc_create requestcourses); |
|
my %contextnames = |
|
&Apache::lonlocal::texthash ( |
|
auto => 'Automated creation from batch file', |
|
web => 'Batch creation from uploaded file', |
|
dc_create => 'Course or community created by Dom. Coord.', |
|
requestcourses => 'Processing of submitted course request', |
|
); |
|
return (\@contexts,\%contextnames); |
|
} |
|
|
|
sub instcode_srchstr { |
|
my ($domain,$numtitles) = @_; |
|
my $instcode; |
|
if (defined($numtitles) && $numtitles == 0) { |
|
$instcode = '.+'; |
|
} else { |
|
my (%codedefaults,@code_order); |
|
my $defaults_result = |
|
&Apache::lonnet::auto_instcode_defaults($domain,\%codedefaults, |
|
\@code_order); |
|
if ($defaults_result eq 'ok') { |
|
$instcode ='^'; |
|
foreach my $item (@code_order) { |
|
$instcode .= $codedefaults{$item}; |
|
} |
|
$instcode .= '$'; |
|
} else { |
|
$instcode = '.+'; |
|
} |
|
} |
|
return $instcode; |
|
} |
|
|
|
sub syllabuslink_javascript { |
|
return <<"ENDJS"; |
|
|
|
function ToSyllabus(cdom,cnum) { |
|
if (cdom == '' || cdom == null) { |
|
return; |
|
} |
|
if (cnum == '' || cnum == null) { |
|
return; |
|
} |
|
var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'; |
|
var url = "/public/"+cdom+"/"+cnum+"/syllabus"; |
|
syllwin = window.open(url,'',options,1); |
|
syllwin.focus(); |
|
return; |
|
} |
|
|
|
ENDJS |
|
|
|
} |
|
|
# ===================================================================== Handler |
# ===================================================================== Handler |
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
Line 826 sub handler {
|
Line 1239 sub handler {
|
return OK; |
return OK; |
} |
} |
|
|
|
my $show_all_choices = 0; |
|
my $primary_rev = &Apache::lonnet::get_server_loncaparev($env{'request.role.domain'}); |
|
if (($primary_rev ne 'refused') && ($primary_rev ne 'error') && |
|
($primary_rev ne 'unknown_cmd') && ($primary_rev ne 'no_such_host')) { |
|
$show_all_choices = 1; |
|
} |
|
|
if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) { |
if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
Line 838 sub handler {
|
Line 1258 sub handler {
|
text=>"Creation Options", |
text=>"Creation Options", |
faq=>79,bug=>'Dom Coord Interface',}); |
faq=>79,bug=>'Dom Coord Interface',}); |
if (($env{'form.phase'} eq 'coursetwo') || |
if (($env{'form.phase'} eq 'coursetwo') || |
($env{'form.phase'} eq 'grouptwo')) { |
(($env{'form.phase'} eq 'grouptwo') && |
|
($show_all_choices))) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/createcourse?phase=$env{'form.prevphase'}", |
({href=>"/adm/createcourse?phase=$env{'form.prevphase'}", |
text=>&mt('[_1] Creation Settings',), |
text=>&mt('[_1] Creation Settings',), |
Line 849 sub handler {
|
Line 1270 sub handler {
|
faq=>9,bug=>'Dom Coord Interface',}); |
faq=>9,bug=>'Dom Coord Interface',}); |
&create_course($r); |
&create_course($r); |
} elsif (($env{'form.phase'} eq 'courseone') || |
} elsif (($env{'form.phase'} eq 'courseone') || |
($env{'form.phase'} eq 'groupone')) { |
(($env{'form.phase'} eq 'groupone') && |
|
($show_all_choices))) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/createcourse?phase=$env{'form.phase'}", |
({href=>"/adm/createcourse?phase=$env{'form.phase'}", |
text=>&mt('[_1] Creation Settings',), |
text=>&mt('[_1] Creation Settings',), |
Line 871 sub handler {
|
Line 1293 sub handler {
|
text=>"Creation Outcome", |
text=>"Creation Outcome", |
faq=>9,bug=>'Dom Coord Interface',}); |
faq=>9,bug=>'Dom Coord Interface',}); |
&process_batchfile($r); |
&process_batchfile($r); |
|
} elsif (($env{'form.phase'} eq 'requestdisplay') && ($show_all_choices)) { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/createcourse?phase=$env{'form.phase'}", |
|
text=>&mt('[_1] Display Request Queue',), |
|
faq=>9,bug=>'Dom Coord Interface',}); |
|
my $js = &courserequestbrowser_javascript(); |
|
my $start_page=&Apache::loncommon::start_page('Display Requests',$js); |
|
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Display Requests','Course_Request',undef,'Course_Request'); |
|
$r->print($start_page.$crumbs."\n".'<div>'. |
|
&Apache::loncoursequeueadmin::display_queued_requests( |
|
'domain',$env{'request.role.domain'}).'</div>'. |
|
&Apache::loncommon::end_page()); |
|
} elsif (($env{'form.phase'} eq 'requestchange') && ($show_all_choices)) { |
|
if ($env{'form.queue'} eq 'pending') { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/createcourse?phase=pendingdisplay", |
|
text=>&mt('Display Pending Queue',), |
|
faq=>9,bug=>'Dom Coord Interface',}); |
|
} else { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/createcourse?phase=requestdisplay", |
|
text=>&mt('[_1] Display Request Queue',), |
|
faq=>9,bug=>'Dom Coord Interface',}); |
|
} |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/createcourse?phase=requestchange", |
|
text=>&mt('[_1] Requests Updated',), |
|
faq=>9,bug=>'Dom Coord Interface',},); |
|
my $start_page=&Apache::loncommon::start_page('Update Requests Result'); |
|
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Requests Updated','Course_Request',undef,'Course_Request'); |
|
$r->print($start_page.$crumbs."\n".'<div>'. |
|
&Apache::loncoursequeueadmin::update_request_queue( |
|
'domain',$env{'request.role.domain'}).'</div>'. |
|
&Apache::loncommon::end_page()); |
|
} elsif (($env{'form.phase'} eq 'pendingdisplay') && ($show_all_choices)) { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/createcourse?phase=$env{'form.phase'}", |
|
text=>&mt('Display Pending Queue',), |
|
faq=>9,bug=>'Dom Coord Interface',}); |
|
my $js = &courserequestbrowser_javascript(); |
|
my $start_page=&Apache::loncommon::start_page('Display Pending Queue',$js); |
|
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Display Pending Queue','Course_Request',undef,'Course_Request'); |
|
$r->print($start_page.$crumbs."\n".'<div>'. |
|
&Apache::loncoursequeueadmin::display_queued_requests( |
|
'pending',$env{'request.role.domain'}).'</div>'. |
|
&Apache::loncommon::end_page()); |
|
} elsif (($env{'form.phase'} eq 'requestvalidation') && ($show_all_choices)) { |
|
my $js = &courserequestbrowser_javascript(); |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/createcourse?phase=pendingdisplay", |
|
text=>&mt('Display Pending Queue'),}, |
|
{href=>"/adm/createcourse?phase=requestvalidation", |
|
text=>&mt('Validation Attempted'),},); |
|
my $start_page=&Apache::loncommon::start_page('Requests Validation Result',$js); |
|
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Validation Attempted','Course_Request',undef,'Course_Request'); |
|
$r->print($start_page.$crumbs."\n".'<div>'. |
|
&Apache::loncoursequeueadmin::process_official_reqs('domain',$env{'request.role.domain'}).'</div>'. |
|
&Apache::loncommon::end_page()); |
|
} elsif (($env{'form.phase'} eq 'creationlog') && ($show_all_choices)) { |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/createcourse?phase=creationlog", |
|
text=>&mt('[_1] Display Creation History',),}); |
|
my $js = '<script type="text/javascript">'."\n". |
|
'// <![CDATA['."\n". |
|
&syllabuslink_javascript()."\n". |
|
'// ]]>'."\n". |
|
'</script>'; |
|
my $start_page=&Apache::loncommon::start_page('Course/Community Creation Logs',$js); |
|
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Created Courses/Communities','Creation_Log',undef,'Creation_Log'); |
|
$r->print($start_page.$crumbs."\n".'<div>'); |
|
&print_creation_logs($r); |
|
$r->print('</div>'.&Apache::loncommon::end_page()); |
} else { |
} else { |
&print_intro_page($r); |
&print_intro_page($r,$show_all_choices); |
} |
} |
} else { |
} else { |
$env{'user.error.msg'}= |
$env{'user.error.msg'}= |
"/adm/createcourse:ccc:0:0:Cannot create courses or groups"; |
"/adm/createcourse:ccc:0:0:Cannot create courses or communities"; |
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |
return OK; |
return OK; |