--- loncom/interface/lonrequestcourse.pm 2009/11/18 19:15:44 1.40
+++ loncom/interface/lonrequestcourse.pm 2010/01/02 18:11:46 1.41.2.3
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Request a course
#
-# $Id: lonrequestcourse.pm,v 1.40 2009/11/18 19:15:44 raeburn Exp $
+# $Id: lonrequestcourse.pm,v 1.41.2.3 2010/01/02 18:11:46 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -143,6 +143,10 @@ sub handler {
$states{'log'} = ['filter','display'];
$states{'new'} = ['courseinfo','enrollment','personnel','review','process'];
+ if ($dom eq 'gcitest') {
+ $states{'new'} = ['courseinfo','review','process'];
+ }
+
if (($action eq 'new') && ($env{'form.crstype'} eq 'official')) {
unless ($env{'form.state'} eq 'crstype') {
unshift(@{$states{'new'}},'codepick');
@@ -169,6 +173,10 @@ sub handler {
cancel => 'Cancel Request',
removal => 'Outcome',
);
+ if ($dom eq 'gcitest') {
+ $trail{'crstype'} = 'Building a Test';
+ $trail{'courseinfo'} = 'Test Information';
+ }
if (($env{'form.crstype'} eq 'official') && (&Apache::lonnet::auto_run('',$dom))) {
$trail{'enrollment'} = 'Enrollment';
@@ -360,6 +368,14 @@ sub get_breadcrumbs {
my ($dom,$action,$state,$states,$trail) = @_;
my ($crumb,$newinstcode,$codechk,$checkedcode,$numtitles,$description);
my $page = 0;
+ my $firstcrumb = 'Pick Action';
+ my $crumbtitle = 'Course/Community Requests';
+ my $crumbhelp = 'Course_Requests';
+ if ($dom eq 'gcitest') {
+ $firstcrumb = 'Building a Test';
+ $crumbtitle = 'Create Concept Test';
+ $crumbhelp = 'Concept_Test_Creation';
+ }
if ((ref($states) eq 'HASH') && (ref($trail) eq 'HASH') && (ref($state))) {
if (defined($action)) {
my $done = 0;
@@ -401,7 +417,7 @@ sub get_breadcrumbs {
if ($$state eq $states->{$action}[$i]) {
&Apache::lonhtmlcommon::add_breadcrumb(
{text=>"$trail->{$$state}"});
- $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests');
+ $crumb = &Apache::lonhtmlcommon::breadcrumbs($crumbtitle,$crumbhelp);
last;
} else {
if (($$state eq 'process') || ($$state eq 'removal')) {
@@ -420,13 +436,13 @@ sub get_breadcrumbs {
}
} else {
&Apache::lonhtmlcommon::add_breadcrumb(
- {text=>'Pick Action'});
- $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests');
+ {text=>$firstcrumb});
+ $crumb = &Apache::lonhtmlcommon::breadcrumbs($crumbtitle,$crumbhelp);
}
} else {
&Apache::lonhtmlcommon::add_breadcrumb(
- {text=>'Pick Action'});
- $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests');
+ {text=>$firstcrumb});
+ $crumb = &Apache::lonhtmlcommon::breadcrumbs($crumbtitle,$crumbhelp);
}
return ($page,$crumb,$newinstcode,$codechk,$checkedcode,$description);
}
@@ -499,12 +515,22 @@ sub form_elements {
},
);
my %servers = &Apache::lonnet::get_servers($dom,'library');
+ if ($dom eq 'gcitest') {
+ %{$elements{'new'}{'courseinfo'}} = (
+ cdescr => 'text',
+ concepttest => 'radio',
+ );
+ }
my $numlib = keys(%servers);
if ($numlib > 1) {
$elements{'new'}{'courseinfo'}{'chome'} = 'selectbox';
} else {
$elements{'new'}{'courseinfo'}{'chome'} = 'hidden';
}
+ if ($dom eq 'gcitest') {
+ my %mergedhash = (%{$elements{'new'}{'courseinfo'}},%{$elements{'new'}{'enrollment'}});
+ %{$elements{'new'}{'courseinfo'}} = %mergedhash;
+ }
my (@codetitles,%cat_titles,%cat_order,@code_order,$lastitem);
&Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,
\%cat_order,\@code_order);
@@ -601,6 +627,9 @@ sub onload_action {
} else {
$loaditems{'onload'} = 'javascript:setFormElements(document.requestcrs)';
}
+ if (($state eq 'process') && ($env{'form.concepttest'} eq 'editmyown')) {
+ $loaditems{'onload'} = 'javascript:setInitialVisibility()';
+ }
}
return \%loaditems;
}
@@ -626,7 +655,9 @@ sub print_main_menu {
}
}
- my $js = <<"END";
+ my $js;
+ unless ($dom eq 'gcitest') {
+ $js = <<"END";
function nextPage(formname) {
var crschoice = document.mainmenu_coursetype.crstype.value;
@@ -650,20 +681,20 @@ function check_can_request(crschoice,act
var unofficial = '';
var community = '';
END
- if (ref($can_request) eq 'HASH') {
- foreach my $item (keys(%{$can_request})) {
- $js .= "
- $item = 1;
+ if (ref($can_request) eq 'HASH') {
+ foreach my $item (keys(%{$can_request})) {
+ $js .= "
+ $item = 1;
";
+ }
}
- }
- my %lt = &Apache::lonlocal::texthash(
- official => 'You are not permitted to request creation of an official course in this domain.',
- unofficial => 'You are not permitted to request creation of an unofficial course in this domain.',
- community => 'You are not permitted to request creation of a community this domain.',
- all => 'You must choose a specific course type when making a new course request.\\nAll types is not allowed.',
- );
- $js .= < 'You are not permitted to request creation of an official course in this domain.',
+ unofficial => 'You are not permitted to request creation of an unofficial course in this domain.',
+ community => 'You are not permitted to request creation of a community this domain.',
+ all => 'You must choose a specific course type when making a new course request.\\nAll types is not allowed.',
+ );
+ $js .= <{'official'}) || ($can_request->{'unofficial'})) {
@@ -714,6 +746,40 @@ END
$domaintitle = &mt('Course/Community Domain');
}
}
+
+ if ($dom eq 'gcitest') {
+ my $formname = 'requestcrs';
+ my $nexttext = &mt('Continue');
+ $r->print(&header($pagetitle,$js.$jscript,$loaditems).$crumb.
+ '
'.&mt('Deployment of a Concept Test requires completion of the following three steps:').'
'.
+ '
'.&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.").'
'.
+ '
'.
+ &Apache::loncommon::end_page());
+ return;
+ }
+
+ if (!$onchange) {
+ $r->print(' ');
+ }
+ unless ((ref($can_request) eq 'HASH') && (keys(%{$can_request}) > 0)) {
+ $r->print(&Apache::lonhtmlcommon::row_closure(1)."\n".
+ &Apache::lonhtmlcommon::end_pick_box().''."\n".
+ &Apache::loncommon::end_page());
+ return;
+ }
+
my @incdoms;
if (ref($request_domains) eq 'HASH') {
foreach my $item (keys(%{$request_domains})) {
@@ -830,6 +896,8 @@ END
}
} elsif ($state eq 'personnel') {
$js .= "\n".§ion_check_javascript()."\n".&personnel_lcsec_js();
+ } elsif (($state eq 'process') && ($env{'form.concepttest'} eq 'editmyown')) {
+ $js .= "\n".&Apache::londocsgci::builder_javascript()."\n";
}
my $title;
if ($env{'form.crstype'} eq 'community') {
@@ -1365,7 +1433,7 @@ sub print_request_form {
&Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles,
\%cat_order,\@code_order);
}
- my ($storeresult,$result) = &print_request_outcome($dom,\@codetitles,
+ my ($storeresult,$result) = &print_request_outcome($r,$dom,\@codetitles,
\@code_order);
$r->print($result);
if (($storeresult eq 'ok') || ($storeresult eq 'created')) {
@@ -1374,7 +1442,9 @@ sub print_request_form {
$r->print(''.
&mt('Modify this request').''.(' 'x4));
}
- $r->print(''.&mt('Make another request').'');
+ unless ($env{'form.concepttest'}) {
+ $r->print(''.&mt('Make another request').'');
+ }
return;
}
}
@@ -1557,7 +1627,6 @@ sub print_enrollment_menu {
my $access_dates =
&date_setting_table($starttime,$endtime,$formname,'access',$hasauto,
%accesstitles);
- $output .= &Apache::lonhtmlcommon::start_pick_box();
if ($sections) {
$output .= $sections;
}
@@ -1577,8 +1646,12 @@ sub print_enrollment_menu {
&Apache::lonhtmlcommon::row_closure(1).
$access_dates
}
- return '