--- loncom/imspackages/imsimportdocs.pm 2006/11/02 21:07:15 1.19 +++ loncom/imspackages/imsimportdocs.pm 2012/10/31 12:54:17 1.30 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: imsimportdocs.pm,v 1.19 2006/11/02 21:07:15 albertel Exp $ +# $Id: imsimportdocs.pm,v 1.30 2012/10/31 12:54:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -33,7 +33,6 @@ use Apache::londocs; use Apache::loncommon; use Apache::lonlocal; use Apache::imsprocessor; -use LONCAPA::Configuration; use LONCAPA::map(); use lib '/home/httpd/lib/perl/'; use LONCAPA; @@ -41,54 +40,41 @@ use LONCAPA; use strict; sub jscript_one { - my $javascript = shift; - $$javascript = qq# -function verify() { - if ((document.forms.pickcms.uploadname.value == '') || (!document.forms.pickcms.uploadname.value)) { - alert("You must provide the name of the IMS package to be imported") - return false - } - if (document.forms.pickcms.source.selectedIndex == 0) { - alert("You must choose the Course Management System from which the IMS package was exported"); - return false - } - return true -} - -function nextPage() { - if (verify()) { - document.forms.pickcms.submit() - } -} -#; - -} - -sub jscript_two { - my $javascript = shift; - $$javascript = qq# + my %lt = &Apache::lonlocal::texthash( + se => 'Select', + to => 'Import topics only', + tp => 'Import topics + posts (with author)', + tn => 'Import topics + posts (no author)', + es => 'Enroll students only', + ea => 'Enroll all users', + nr => 'Not required', + id => 'You must select one of the additional options when importing Disussion Boards', + ie => 'You must select one of the additional options when importing Enrollment', + ct => 'You must check at least one Content Type', + ); + return <<"ENDJS"; function setOptions(caller,itemnum) { var opForm = document.forms.pickoptions var menu = 1 + itemnum*2 opForm.elements[menu].length = 0 if (opForm.elements[itemnum*2].checked == true) { if (caller == "board") { - opForm.elements[menu].options[0] = new Option("Select","-1",true,true) - opForm.elements[menu].options[1] = new Option("Import topics only","topics",true,true) - opForm.elements[menu].options[2] = new Option("Import topics + posts (with author)","allpost",true,true) - opForm.elements[menu].options[3] = new Option("Import topics + posts (no author)","allanon",true,true) + opForm.elements[menu].options[0] = new Option("$lt{'se'}","-1",true,true) + opForm.elements[menu].options[1] = new Option("$lt{'to'}","topics",true,true) + opForm.elements[menu].options[2] = new Option("$lt{'tp'}","allpost",true,true) + opForm.elements[menu].options[3] = new Option("$lt{'tn'}","allanon",true,true) } else { if (caller == "users") { opForm.elements[menu].length = 0 - opForm.elements[menu].options[0] = new Option("Select","-1",true,true) - opForm.elements[menu].options[1] = new Option("Enroll students only","students",true,true) - opForm.elements[menu].options[2] = new Option("Enroll all users","all",true,true) + opForm.elements[menu].options[0] = new Option("$lt{'se'}","-1",true,true) + opForm.elements[menu].options[1] = new Option("$lt{'es'}","students",true,true) + opForm.elements[menu].options[2] = new Option("$lt{'ea'}","all",true,true) } } } else { - opForm.elements[menu].options[0] = new Option("Not required","0",true,true) + opForm.elements[menu].options[0] = new Option("$lt{'nr'}","0",true,true) } opForm.elements[menu].selectedIndex = 0 } @@ -101,20 +87,20 @@ function verify(caller) { totcheck ++ if (opForm.elements[2*i].name == "board") { if (opForm.elements[2*i+1].selectedIndex == 0) { - alert("You must select one of the additional options when importing Discussion Boards ") + alert("$lt{'id'}") return false } } if (opForm.elements[2*i].name == "users") { if (opForm.elements[2*i+1].selectedIndex == 0) { - alert("You must select one of the additional options when importing Enrollment") + alert("$lt{'ie'}") return false } } } } if (totcheck == 0) { - alert("You must check the Checkbox for at least one Content Type"); + alert("$lt{'ct'}"); return false } return true @@ -125,22 +111,23 @@ function nextPage(caller) { document.forms.pickoptions.submit() } } -#; + +ENDJS + } -sub jscript_three { - my $javascript = shift; - $$javascript = qq| +sub jscript_two { + return <<"ENDJS"; function init(tf) { setTimeout("self.close()",3000) tf.submit(); } - |; + +ENDJS } sub handler { my $r = shift; - my $javascript = ''; &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; return OK if $r->header_only; @@ -165,144 +152,47 @@ sub handler { my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'}); unless ($allowed) { $r->print(&Apache::loncommon::start_page('Import IMS package',undef, - {'only_body' => 1,})); - $r->print('
' + .&mt('Modification of Course Contents Disallowed') + .'
' + .&mt('Your current role does not grant you the right to modify course content in this course.') + .'
' + .&Apache::loncommon::end_page() + ); return OK; } - &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, - ['phase']); - - if ($env{'form.phase'} eq 'one') { - &jscript_one(\$javascript); + my $javascript; + if ($env{'form.phase'} eq 'one') { + $javascript = &jscript_one(); } elsif ($env{'form.phase'} eq 'two') { - &jscript_two(\$javascript); - } elsif ($env{'form.phase'} eq 'three') { - &jscript_three(\$javascript); + $javascript = &jscript_two(); } $javascript = - "\n"; - my $start_page = &Apache::loncommon::start_page('Import IMS package', - $javascript, - {'only_body' => 1,}); + "\n"; + my $headline = 'Import IMS package'; + my $start_page = &Apache::loncommon::start_page($headline, + $javascript, + {'only_body' => 1,}) + .'
-
|
-
' + .&mt('Processing of your IMS package failed because the file you' + .' uploaded could not be unzipped.') + .'
' + ); + return(); + } + + # Get manifest file from package + $manifest_result = &Apache::imsprocessor::process_manifest( + $cms,$tempdir,\%resources,\%items,\%hrefs, + \%resinfo,'choose',\%includedres,\%includeditems); + if ($manifest_result ne 'ok') { + $r->print( + '' + .&mt('Unpacking of your IMS package failed because an IMS manifest file was not located in the package.') + .'
' + ); + return(); + } + + # Count areas depending on cms version + foreach my $res (sort keys %resources) { + if ($cms eq 'bb5' || $cms eq 'bb6' || $cms eq 'webctce4') { + foreach my $area (keys %{$cmsmap{$cms}}) { + if ($resources{$res}{type} eq $cmsmap{$cms}{$area}) { + $count{$area} ++; } } - $r->print(<
-
|
-
- | -|
- | -- Your import is complete - | -
- | |
- |
-ENDBLOCK
- my $initblock = qq|
- |;
- $r->print($initblock);
- $r->print(< |
-
' + .&mt('Your import is complete.') + .'
' + ); + # Re-initialize Button + my $initbutton = + ''; + $r->print( + '' + ); } 1;