'.&mt('Creation of a course "container" and setting of access dates').'
'.
'
'.&mt('Assembly of a valid test from Concept Inventory questions').'
'.
'
'.&mt('Enrollment of students').'
'.
- '
'.&mt('When assembling a test you may either:').
- ' '.&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.').'
'.&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('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' e-mail addresses must be used as their usernames to ensure uniqueness.").'
'.
'
'.
@@ -814,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) =
@@ -1551,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',
@@ -1597,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').'
'.
@@ -1608,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;
}
@@ -1643,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;
@@ -1713,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';
}
@@ -1752,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)) {
@@ -1865,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') {
@@ -1894,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);
@@ -1937,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";
@@ -2086,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;
}
@@ -2250,11 +2401,16 @@ sub print_review {
$concepttest = 'Auto-generated';
} elsif ($env{'form.concepttest'} eq 'editmyown') {
$concepttest = 'Manually selected';
+ } elsif ($env{'form.concepttest'} eq 'cloning') {
+ $concepttest = 'Copied from existing test';
}
- $inst_values .= '
';
}
my $container = 'Course';
@@ -2408,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;
@@ -2420,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.'
@@ -2437,6 +2619,24 @@ function validateForm() {
}
nextPage(document.$formname,'$next');
}
+
+function toggleCloning() {
+ var willclone;
+ if (document.$formname.cloning.length > 1) {
+ for (var i=0; i
@@ -2447,20 +2647,26 @@ ENDJS
$title = &mt('Concept Test Course Information');
$desctitle = &mt('Concept Test Title');
}
- my $clonetitle = &mt('Clone content and settings from an existing course?');
+ my $clonetitle = &mt('Copy content and settings from an existing course?');
if ($crstype eq 'community') {
$title = &mt('Brief Community Description');
- $clonetitle = &mt('Clone content and settings from an existing community?');
+ $clonetitle = &mt('Copy content and settings from an existing community?');
}
- my $output .= $js_validate."\n".'
'.&Apache::lonhtmlcommon::start_pick_box().
+ my $output .= $js_validate."\n".&Apache::lonhtmlcommon::start_pick_box().
&Apache::lonhtmlcommon::row_headline().
'