'.&mt('When assembling a test you may:').
' '.&mt('(a) have a valid test built automatically by the WebCenter, or').' '.&mt('(b) select the questions to include by combining questions chosen from eleven bins with four mandatory questions, or').
- ' '.&mt('(c) copy one of your existing tests (including optional copying of the student roster)').'
'.&mt('The most efficient way to enroll students is to upload a text file containing usernames and passwords.').' '.&mt("Students' full e-mail addresses should be used as their usernames to ensure uniqueness.").'
'.
+ ' '.&mt('(c) copy one of your existing tests (including optional copying of the student roster)').'
'.&mt('The most efficient way to enroll students is to upload a text file containing usernames and passwords.').' '.&mt("Students' e-mail addresses must be used as their usernames to ensure uniqueness.").'
'.
'
'.
@@ -845,7 +898,7 @@ END
my $nexttext = &mt('Next');
$r->print(&Apache::lonhtmlcommon::row_title(&mt('Action')).'
'.&mt('The following management tools are available via the "[_1]Manage Tests[_2]" tab, or from the toolbar on the [_3]Concept Test Contents[_4] page.[_5]',
+ '','','','',' ').
+ '
'.
+ '
'.&mt('Concept Test Contents').'
'.
+ '
'.&mt('Display the Table of Contents for your Concept Test.').'
'.
+ '
'.&mt('Assemble Concept Test').'
'.
+ '
'.&mt('If no students have attempted the Concept Test you will be able to modify it. You can also change the start and end date of the test itself.').'
'.
+ '
'.
+ '
'.&mt('Enrollment and Student Activity').'
'.
+ '
'.&mt('Display or download a course roster, and view information about completion status and last login. You can also add new students, or change access dates for existing students.').'
'.
+ '
'.&mt("What's New?").'
'.
+ '
'.&mt('View information about changes in your Concept Test course.').'
'.
+ '
'.
+ '
'.&mt('Prepare Printable Concept Test').'
'.
+ '
'.&mt('Create a PDF which you can send to a printer to create a hardcopy of the Concept Test.').'
'.
+ '
'.&mt('Concept Test Statistics').'
'.
+ '
'.&mt('After the closing date of the Concept Test you can view and download statistics for the test, as well as anonymized submission data.').'
'.
+ '
';
+}
+
sub get_cancreate_status {
my ($persondom,$personname,$dom) = @_;
my ($rules,$ruleorder) =
@@ -1582,16 +1673,25 @@ sub get_excluded_elements {
if (grep(/^instcode_/,@excluded)) {
push(@excluded,'instcode');
}
+ if ($env{'form.initmap'}) {
+ push(@excluded,'initmap');
+ }
+ if ($env{'form.output'}) {
+ push(@excluded,'output');
+ }
return @excluded;
}
sub print_enrollment_menu {
- my ($formname,$instcode,$dom,$codetitles,$cat_titles,$cat_order,$code_order,
- $invalidcrosslist) =@_;
+ my ($formname,$state,$instcode,$dom,$codetitles,$cat_titles,$cat_order,
+ $code_order,$invalidcrosslist) =@_;
my ($sections,$autoenroll,$access_dates,$output,$hasauto);
my $starttime = time;
- my $endtime = time+(6*30*24*60*60); # 6 months from now, approx
-
+ my $diff = 6*30*24*60*60; # 6 months from now, approx
+ if (&Apache::loncommon::needs_gci_custom()) {
+ $diff = 7*24*60*60; # 7 days from now, approx
+ }
+ my $endtime = $starttime+$diff;
my %accesstitles = (
'start' => 'Default start access',
'end' => 'Default end access',
@@ -1628,7 +1728,7 @@ sub print_enrollment_menu {
&Apache::lonhtmlcommon::row_title(&mt('Add another')).
''.
''.&mt('Add?').&Apache::lonhtmlcommon::row_closure();
$sections .= &Apache::lonhtmlcommon::row_headline.
'
'.&mt('Crosslisted courses for auto-enrollment').'
'.
@@ -1639,25 +1739,25 @@ sub print_enrollment_menu {
$autoenroll =
&Apache::lonhtmlcommon::row_title(&Apache::loncommon::help_open_topic('Course_Request_Autoadd').' '.&mt('Add registered students automatically')).
''.(' 'x3).''.
&Apache::lonhtmlcommon::row_closure(1).
&Apache::lonhtmlcommon::row_title(&Apache::loncommon::help_open_topic('Course_Request_Autodrop').' '.&mt('Drop unregistered students automatically')).
''.(' 'x3).''.
&Apache::lonhtmlcommon::row_closure(1).
&date_setting_table($starttime,$endtime,$formname,'enroll',
- $hasauto,%enrolltitles);
+ $hasauto,$dom,%enrolltitles);
}
}
my $access_dates =
&date_setting_table($starttime,$endtime,$formname,'access',$hasauto,
- %accesstitles);
+ $dom,%accesstitles);
if ($sections) {
$output .= $sections;
}
@@ -1674,8 +1774,16 @@ sub print_enrollment_menu {
}
$output .= &Apache::lonhtmlcommon::row_headline('Access').
'
'.$header.'
'.
- &Apache::lonhtmlcommon::row_closure(1).
- $access_dates
+ &Apache::lonhtmlcommon::row_closure(1);
+ if ($dom eq 'gcitest') {
+ my $includeempty = 1;
+ my $timezone = &Apache::lonlocal::gettimezone();
+ $output .= &Apache::lonhtmlcommon::row_title('Time zone').
+ &Apache::loncommon::select_timezone('timezone',$timezone,
+ undef,$includeempty).
+ &Apache::lonhtmlcommon::row_closure(1);
+ }
+ $output .= $access_dates;
}
if ($dom eq 'gcitest') {
return $output;
@@ -1744,17 +1852,29 @@ sub inst_section_selector {
}
sub date_setting_table {
- my ($starttime,$endtime,$formname,$prefix,$hasauto,%datetitles) = @_;
+ my ($starttime,$endtime,$formname,$prefix,$hasauto,$dom,%datetitles) = @_;
my ($perpetual,$table);
+ my $no_hh_mm_ss = 1;
+ my $hide_timezone;
+ if (&Apache::loncommon::needs_gci_custom()) {
+ $no_hh_mm_ss = '';
+ if ($dom eq 'gcitest') {
+ if ($prefix eq 'access') {
+ $hide_timezone = 1;
+ }
+ }
+ }
my $startform = &Apache::lonhtmlcommon::date_setter($formname,$prefix.'start',
- $starttime,'','','',1,'','','',1);
+ $starttime,'','','',$no_hh_mm_ss,'','','',1,$hide_timezone);
my $endform = &Apache::lonhtmlcommon::date_setter($formname,$prefix.'end',
- $endtime,'','','',1,'','','',1);
+ $endtime,'','','',$no_hh_mm_ss,'','','',1,$hide_timezone);
my $closure = '';
if ($prefix eq 'access') {
- $perpetual = ' ';
+ unless (&Apache::loncommon::needs_gci_custom()) {
+ $perpetual = ' ';
+ }
$closure = '1';
}
@@ -1783,7 +1903,7 @@ sub date_setting_table {
}
sub print_personnel_menu {
- my ($dom,$formname,$crstype,$invalidcrosslist) = @_;
+ my ($dom,$formname,$state,$crstype,$invalidcrosslist) = @_;
my $output;
if ($crstype eq 'official') {
if (&Apache::lonnet::auto_run('',$dom)) {
@@ -1896,7 +2016,7 @@ sub print_personnel_menu {
$output .= &Apache::lonhtmlcommon::row_title(&mt('Add another')).
''.
''.&mt('Add?').&Apache::lonhtmlcommon::row_closure(1).
&Apache::lonhtmlcommon::end_pick_box().'';
if ($crstype eq 'community') {
@@ -1925,7 +2045,7 @@ sub current_lc_sections {
}
sub print_request_status {
- my ($dom) = @_;
+ my ($dom,$action,$state) = @_;
my %statusinfo = &Apache::lonnet::dump('courserequests',$env{'user.domain'},
$env{'user.name'},'^status:'.$dom);
my ($output,$formname,%queue_by_date);
@@ -1968,9 +2088,9 @@ sub print_request_status {
}
$formname = 'requestcrs';
my @sortedtimes = sort {$a <=> $b} (keys(%queue_by_date));
- $output = ''."\n".
+ $output = ''."\n".
- ''."\n".
+ ''."\n".
''."\n".
''."\n".
''."\n";
@@ -2117,7 +2237,7 @@ sub viewdetails_javascript {
function nextPage(formname,nextstate) {
if (nextstate == "modify") {
formname.state.value = "personnel";
- formname.action.value = "new";
+ formname.reqaction.value = "new";
} else {
formname.state.value = nextstate;
}
@@ -2340,14 +2460,26 @@ sub print_review {
$inst_values .= '
'.&mt('None').'
';
}
}
+ my $tz;
+ if ($dom eq 'gcitest') {
+ if (&Apache::lonlocal::gettimezone($env{'form.timezone'}) ne 'local') {
+ $tz = $env{'form.timezone'};
+ } else {
+ $tz = &Apache::lonlocal::gettimezone();
+ }
+ $enroll_headers .= '
'.&mt('Time Zone').'
';
+ }
$enroll_headers .= '
'.&mt('Access Starts').'
'.
'
'.&mt('Access Ends').'
';
- my ($accessstart,$accessend) = &dates_from_form('accessstart','accessend');
- $enroll_values .= '
';
}
my $container = 'Course';
@@ -2458,9 +2590,9 @@ sub print_review {
}
sub dates_from_form {
- my ($startname,$endname) = @_;
- my $startdate = &Apache::lonhtmlcommon::get_date_from_form($startname);
- my $enddate = &Apache::lonhtmlcommon::get_date_from_form($endname);
+ my ($startname,$endname,$timezone) = @_;
+ my $startdate = &Apache::lonhtmlcommon::get_date_from_form($startname,$timezone);
+ my $enddate = &Apache::lonhtmlcommon::get_date_from_form($endname,$timezone);
if ($endname eq 'accessend') {
if (exists($env{'form.no_end_date'}) ) {
$enddate = 0;
@@ -2470,7 +2602,7 @@ sub dates_from_form {
}
sub courseinfo_form {
- my ($dom,$formname,$crstype,$next,$description) = @_;
+ my ($dom,$formname,$state,$crstype,$next,$description) = @_;
my %lt = &Apache::lonlocal::texthash(
official => 'You must provide a (brief) course description.',
community => 'You must provide a (brief) community description.'
@@ -2525,7 +2657,7 @@ ENDJS
'
'.
+ ' ';
$r->print($output);
$output = '';
+ $donedisplay = 1;
} else {
- &roster_upload_form($r,$output);
+ &roster_upload_form($r,$output,$formname);
$output = '';
}
} else {
$output .= '';
- &roster_upload_form($r,$output);
+ &roster_upload_form($r,$output,$formname);
$output = '';
}
} elsif ($env{'form.concepttest'} eq 'defchosen') {
@@ -3195,10 +3335,10 @@ sub print_request_outcome {
$output .= &mt('A concept test has also been generated.');
}
$output .= '';
- &roster_upload_form($r,$output);
+ &roster_upload_form($r,$output,$formname);
$output = '';
} else {
- $output .= ' '.&mt('The next step is to chose which questions are to be included in the Concept Test.').'';
+ $output .= ' '.&mt('The next step is to chose which questions are to be included in the Concept Test.').' ';
$r->print($output);
&Apache::londocsgci::editor($r,'requestcrs',$dom,$cnum);
$output = '';
@@ -3297,6 +3437,9 @@ sub print_request_outcome {
}
}
if ($creationresult ne '') {
+ if ($donedisplay) {
+ $r->print(' '.&done_display());
+ }
return ($creationresult,$output);
} else {
return ($storeresult,$output);
@@ -3519,13 +3662,55 @@ sub store_crsparms {
}
sub roster_upload_form {
- my ($r,$output) = @_;
+ my ($r,$output,$formname,$titletext) = @_;
+ my $title = &mt('Request Processed');
+ if ($titletext ne '') {
+ $title = $titletext;
+ }
+ $r->print(<<"ENDJS");
+
+
+ENDJS
+ $r->print('
'.$title.'
'.$output.
+ '
'.&mt('Course roster file upload').'
');
$r->print('
'.&mt('If you have a text file available containing student e-mail addresses and initial passwords, you may upload it now.').' '.
- &mt('You may also enroll students at a later date by visiting the [_1]"Menu"[_2] page and choosing: [_1]"Manage Enrollment"[_2].','','').'