version 1.26, 2009/11/20 14:39:32
|
version 1.33, 2013/12/30 21:46:52
|
Line 33 use Apache::londocs;
|
Line 33 use Apache::londocs;
|
use Apache::loncommon; |
use Apache::loncommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::imsprocessor; |
use Apache::imsprocessor; |
use LONCAPA::Configuration; |
|
use LONCAPA::map(); |
use LONCAPA::map(); |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use LONCAPA; |
use LONCAPA; |
Line 41 use LONCAPA;
|
Line 40 use LONCAPA;
|
use strict; |
use strict; |
|
|
sub jscript_one { |
sub jscript_one { |
my $javascript = shift; |
my %lt = &Apache::lonlocal::texthash( |
$$javascript = qq# |
se => 'Select', |
function verify() { |
to => 'Import topics only', |
if ((document.forms.pickcms.uploadname.value == '') || (!document.forms.pickcms.uploadname.value)) { |
tp => 'Import topics + posts (with author)', |
alert("You must provide the name of the IMS package to be imported") |
tn => 'Import topics + posts (no author)', |
return false |
es => 'Enroll students only', |
} |
ea => 'Enroll all users', |
if (document.forms.pickcms.source.selectedIndex == 0) { |
nr => 'Not required', |
alert("You must choose the Course Management System from which the IMS package was exported"); |
id => 'You must select one of the additional options when importing Discussion Boards.', |
return false |
ie => 'You must select one of the additional options when importing Enrollment.', |
} |
ct => 'You must check at least one Content Type.', |
return true |
); |
} |
return <<"ENDJS"; |
|
|
function nextPage() { |
|
if (verify()) { |
|
document.forms.pickcms.submit() |
|
} |
|
} |
|
#; |
|
|
|
} |
|
|
|
sub jscript_two { |
|
my $javascript = shift; |
|
$$javascript = qq# |
|
function setOptions(caller,itemnum) { |
function setOptions(caller,itemnum) { |
var opForm = document.forms.pickoptions |
var opForm = document.forms.pickoptions |
var menu = 1 + itemnum*2 |
var menu = 1 + itemnum*2 |
opForm.elements[menu].length = 0 |
opForm.elements[menu].length = 0 |
if (opForm.elements[itemnum*2].checked == true) { |
if (opForm.elements[itemnum*2].checked == true) { |
if (caller == "board") { |
if (caller == "board") { |
opForm.elements[menu].options[0] = new Option("Select","-1",true,true) |
opForm.elements[menu].options[0] = new Option("$lt{'se'}","-1",true,true) |
opForm.elements[menu].options[1] = new Option("Import topics only","topics",true,true) |
opForm.elements[menu].options[1] = new Option("$lt{'to'}","topics",true,true) |
opForm.elements[menu].options[2] = new Option("Import topics + posts (with author)","allpost",true,true) |
opForm.elements[menu].options[2] = new Option("$lt{'tp'}","allpost",true,true) |
opForm.elements[menu].options[3] = new Option("Import topics + posts (no author)","allanon",true,true) |
opForm.elements[menu].options[3] = new Option("$lt{'tn'}","allanon",true,true) |
} |
} |
else { |
else { |
if (caller == "users") { |
if (caller == "users") { |
opForm.elements[menu].length = 0 |
opForm.elements[menu].length = 0 |
opForm.elements[menu].options[0] = new Option("Select","-1",true,true) |
opForm.elements[menu].options[0] = new Option("$lt{'se'}","-1",true,true) |
opForm.elements[menu].options[1] = new Option("Enroll students only","students",true,true) |
opForm.elements[menu].options[1] = new Option("$lt{'es'}","students",true,true) |
opForm.elements[menu].options[2] = new Option("Enroll all users","all",true,true) |
opForm.elements[menu].options[2] = new Option("$lt{'ea'}","all",true,true) |
} |
} |
} |
} |
} |
} |
else { |
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 |
opForm.elements[menu].selectedIndex = 0 |
} |
} |
Line 101 function verify(caller) {
|
Line 87 function verify(caller) {
|
totcheck ++ |
totcheck ++ |
if (opForm.elements[2*i].name == "board") { |
if (opForm.elements[2*i].name == "board") { |
if (opForm.elements[2*i+1].selectedIndex == 0) { |
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 |
return false |
} |
} |
} |
} |
if (opForm.elements[2*i].name == "users") { |
if (opForm.elements[2*i].name == "users") { |
if (opForm.elements[2*i+1].selectedIndex == 0) { |
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 |
return false |
} |
} |
} |
} |
} |
} |
} |
} |
if (totcheck == 0) { |
if (totcheck == 0) { |
alert("You must check the Checkbox for at least one Content Type"); |
alert("$lt{'ct'}"); |
return false |
return false |
} |
} |
return true |
return true |
Line 125 function nextPage(caller) {
|
Line 111 function nextPage(caller) {
|
document.forms.pickoptions.submit() |
document.forms.pickoptions.submit() |
} |
} |
} |
} |
#; |
|
|
ENDJS |
|
|
} |
} |
|
|
sub jscript_three { |
sub jscript_two { |
my $javascript = shift; |
return <<"ENDJS"; |
$$javascript = qq| |
|
function init(tf) { |
function init(tf) { |
setTimeout("self.close()",3000) |
setTimeout("self.close()",3000) |
tf.submit(); |
tf.submit(); |
} |
} |
|; |
|
|
ENDJS |
} |
} |
|
|
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
my $javascript = ''; |
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
return OK if $r->header_only; |
return OK if $r->header_only; |
Line 177 sub handler {
|
Line 164 sub handler {
|
return OK; |
return OK; |
} |
} |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
my $javascript; |
['phase']); |
if ($env{'form.phase'} eq 'one') { |
|
$javascript = &jscript_one(); |
if ($env{'form.phase'} eq 'one') { |
|
&jscript_one(\$javascript); |
|
} elsif ($env{'form.phase'} eq 'two') { |
} elsif ($env{'form.phase'} eq 'two') { |
&jscript_two(\$javascript); |
$javascript = &jscript_two(); |
} elsif ($env{'form.phase'} eq 'three') { |
|
&jscript_three(\$javascript); |
|
} |
} |
|
|
$javascript = |
$javascript = |
Line 200 sub handler {
|
Line 183 sub handler {
|
$r->print($start_page); |
$r->print($start_page); |
|
|
if ($env{'form.phase'} eq 'one') { |
if ($env{'form.phase'} eq 'one') { |
&display_one($r); |
&display_one($r,$coursenum,\@areas,\%areaname,%cmsmap); |
} elsif ($env{'form.phase'} eq 'two') { |
} elsif ($env{'form.phase'} eq 'two') { |
&display_two($r,$coursenum,\@areas,\%areaname,%cmsmap); |
&display_two($r,$coursenum,$coursedom,$uname,$udom,\@areas,%cmsmap); |
} elsif ($env{'form.phase'} eq 'three') { |
|
&display_three($r,$coursenum,$coursedom,$uname,$udom,\@areas,%cmsmap); |
|
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |
} |
|
|
|
|
|
sub display_one { |
|
my ($r) = @_; |
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['folder']); |
|
|
|
$r->print( |
|
'<form action="/adm/imsimportdocs" method="post"' |
|
.' enctype="multipart/form-data" name="pickcms">' |
|
.&Apache::lonhtmlcommon::topic_bar( |
|
1,&mt('Specify the Course Management system used to create the package')) |
|
.&mt('Please choose the CMS used to create your IMS content package:').' ' |
|
.'<select name="source">' |
|
.'<option value="-1" selected="selected">'.&mt('Please select').'</option>' |
|
.'<option value="bb5">Blackboard 5</option>' |
|
.'<option value="bb6">Blackboard 6</option>' |
|
.'<option value="angel5">ANGEL 5.5</option>' |
|
.'<option value="webctce4">WebCT 4 Campus Edition</option>' |
|
.'</select>' |
|
); |
|
$r->print( |
|
&Apache::lonhtmlcommon::topic_bar( |
|
2,&mt('Locate the IMS content package you wish to upload')) |
|
.'<input type="hidden" name="folder" value="'.$env{'form.folder'}.'" />' |
|
.'<input type="hidden" name="phase" value="two" />' |
|
.&mt('File:') |
|
.' <input type="file" name="uploadname" size="40" />' |
|
); |
|
$r->print( |
|
'<hr />' |
|
.'<p>' |
|
.'<input type="button" name="exitpage" value="'.&mt('Cancel').'"' |
|
.' onclick="javascript:self.close()" />' |
|
.' ' |
|
.'<input type="button" name="nextpage" value="'.&mt('Upload IMS package').'"' |
|
.' onclick="javascript:nextPage()" />' |
|
.'</p>' |
|
); |
|
} |
} |
|
|
|
sub display_one { |
sub display_two { |
|
my ($r,$crs,$areasref,$areaname,%cmsmap) = @_; |
my ($r,$crs,$areasref,$areaname,%cmsmap) = @_; |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['folder','source']); |
|
my $cms = $env{'form.source'}; |
my $cms = $env{'form.source'}; |
my $timenow = time; |
my $timenow = time; |
my $tempdir = &Apache::imsprocessor::create_tempdir('DOCS',$crs,$timenow); |
my $tempdir = &Apache::imsprocessor::create_tempdir('DOCS',$crs,$timenow); |
Line 285 sub display_two {
|
Line 225 sub display_two {
|
|
|
if ($unzip_result ne 'ok') { |
if ($unzip_result ne 'ok') { |
$r->print( |
$r->print( |
'<p class="LC_warning">' |
&Apache::loncommon::confirmwrapper( |
.&mt('Processing of your IMS package failed because the file you' |
&Apache::lonhtmlcommon::confirm_success( |
.' uploaded could not be unzipped.') |
&mt('Processing of your IMS package failed because the file you' |
.'</p>' |
.' uploaded could not be unzipped.'),1) |
|
.'<br />'.&mt('Error: [_1]',$unzip_result)) |
); |
); |
return(); |
return(); |
} |
} |
Line 299 sub display_two {
|
Line 240 sub display_two {
|
\%resinfo,'choose',\%includedres,\%includeditems); |
\%resinfo,'choose',\%includedres,\%includeditems); |
if ($manifest_result ne 'ok') { |
if ($manifest_result ne 'ok') { |
$r->print( |
$r->print( |
'<p class="LC_warning">' |
'<br />'.&Apache::loncommon::confirmwrapper( |
.&mt('Unpacking of your IMS package failed because an IMS manifest file was not located in the package.') |
&Apache::lonhtmlcommon::confirm_success( |
.'</p>' |
&mt('Unpacking of your IMS package failed because an IMS manifest file' |
|
.' was not located in the package.'),1)) |
); |
); |
return(); |
return(); |
} |
} |
Line 335 sub display_two {
|
Line 277 sub display_two {
|
} |
} |
|
|
|
|
# Start output: Step 3 and step 4 |
# Start output: Step 1 and step 2 |
|
|
$r->print( |
$r->print( |
'<form name="pickoptions" method="post">' |
'<form name="pickoptions" method="post" action="">' |
.&Apache::lonhtmlcommon::topic_bar( |
.&Apache::lonhtmlcommon::topic_bar( |
3,&mt('Choose which content types you wish to import')) |
1,&mt('Choose which content types you wish to import')) |
.'<p>' |
.'<p>' |
.&mt('Check the checkboxes for all areas you wish to import from the IMS package:') |
.&mt('Check the checkboxes for all areas you wish to import from the IMS package:') |
.'</p>' |
.'</p>' |
Line 410 sub display_two {
|
Line 352 sub display_two {
|
|
|
$r->print( |
$r->print( |
&Apache::lonhtmlcommon::topic_bar( |
&Apache::lonhtmlcommon::topic_bar( |
4,&mt('Choose display options for listing of contents of top level of package')) |
2,&mt('Choose display options for listing of contents of top level of package')) |
.'<p>' |
.'<p>' |
.&mt('Select a display option for the package content:') |
.&mt('Select a display option for the package content:') |
.'</p>' |
.'</p>' |
Line 423 sub display_two {
|
Line 365 sub display_two {
|
.' <input type="text" name="foldername" size="15" value="'.&mt('Type Name Here').'" />' |
.' <input type="text" name="foldername" size="15" value="'.&mt('Type Name Here').'" />' |
.'<br />' |
.'<br />' |
.'<label>' |
.'<label>' |
.'<input type="radio" name="toplevel" value="oldfolder" />' |
.'<input type="radio" name="toplevel" value="oldfolder" checked="checked" />' |
.&mt('Append listing of contents of top level of package to contents list for the current folder.') |
.&mt('Append listing of contents of top level of package to contents list for the current folder.') |
.'</label>' |
.'</label>' |
); |
); |
Line 433 sub display_two {
|
Line 375 sub display_two {
|
'<input type="hidden" name="folder" value="'.$env{'form.folder'}.'" />' |
'<input type="hidden" name="folder" value="'.$env{'form.folder'}.'" />' |
.'<input type="hidden" name="source" value="'.$cms.'" />' |
.'<input type="hidden" name="source" value="'.$cms.'" />' |
.'<input type="hidden" name="tempdir" value="'.$tempdir.'" />' |
.'<input type="hidden" name="tempdir" value="'.$tempdir.'" />' |
.'<input type="hidden" name="phase" value="three" />' |
.'<input type="hidden" name="phase" value="two" />' |
); |
); |
$r->print( |
$r->print( |
'<hr />' |
'<hr />' |
Line 449 sub display_two {
|
Line 391 sub display_two {
|
$r->print('</form>'); |
$r->print('</form>'); |
} |
} |
|
|
|
sub display_two { |
sub display_three { |
|
my ($r,$crs,$cdom,$uname,$udom,$areas,%cmsmap) = @_; |
my ($r,$crs,$cdom,$uname,$udom,$areas,%cmsmap) = @_; |
my $folder = $env{'form.folder'}; |
my $folder = $env{'form.folder'}; |
my $cms = $env{'form.source'}; |
my $cms = $env{'form.source'}; |
Line 563 sub display_three {
|
Line 504 sub display_three {
|
|
|
&Apache::imsprocessor::process_resinfo($cms,'DOCS',$tempdir,$destdir,\%items,\%resources,\@targets,\@boards,\@announcements,\@quizzes,\@surveys,\@pools,\@groups,\%messages,\@timestamp,\%boardnum,\%resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,\%total,$seqstem,$seqstem,\@resrcfiles,\@packages,\%hrefs,\@pages,\@sequences); |
&Apache::imsprocessor::process_resinfo($cms,'DOCS',$tempdir,$destdir,\%items,\%resources,\@targets,\@boards,\@announcements,\@quizzes,\@surveys,\@pools,\@groups,\%messages,\@timestamp,\%boardnum,\%resinfo,$udom,$uname,$cdom,$crs,$db_handling,$user_handling,\%total,$seqstem,$seqstem,\@resrcfiles,\@packages,\%hrefs,\@pages,\@sequences); |
|
|
my $copy_result = &Apache::imsprocessor::copy_resources('DOCS',$cms,\%hrefs,$tempdir,\@targets,\%urls,$crs,$cdom,$destdir,$timenow,\%importareas); |
my $copy_result = &Apache::imsprocessor::copy_resources('DOCS',$cms,\%hrefs,\%resources,$tempdir,\@targets,\%urls,$crs,$cdom,$destdir,$timenow,\%importareas); |
|
|
&Apache::imsprocessor::build_structure($cms,'DOCS',$destdir,\%items,\%resinfo,\%resources,\@targets,\%hrefs,$udom,$uname,'',$timenow,$cdom,$crs,\@timestamp,\%total,\@boards,\@announcements,\@quizzes,\@surveys,\@pools,\%boardnum,\@pages,\@sequences,\@topurls,\@topnames,\@packages,\%includeditems); |
&Apache::imsprocessor::build_structure($cms,'DOCS',$destdir,\%items,\%resinfo,\%resources,\@targets,\%hrefs,$udom,$uname,'',$timenow,$cdom,$crs,\@timestamp,\%total,\@boards,\@announcements,\@quizzes,\@surveys,\@pools,\%boardnum,\@pages,\@sequences,\@topurls,\@topnames,\@packages,\%includeditems); |
|
|
Line 609 sub display_three {
|
Line 550 sub display_three {
|
if ($tempdir =~ m/^\/home\/httpd\/perl\/tmp\/$crs\/\d{10}/) { |
if ($tempdir =~ m/^\/home\/httpd\/perl\/tmp\/$crs\/\d{10}/) { |
system("rm -r -f $tempdir"); |
system("rm -r -f $tempdir"); |
} |
} |
$r->print(<<ENDBLOCK); |
|
<table border='0' bgcolor='#F6F6F6'' cellspacing='0' cellpadding ='0' width='100%'> |
# All done, display success message |
<tr> |
$r->print( |
<td colspan='2'> |
'<p class="LC_success">' |
<table border='0' cellspacing='0' cellpadding='0'> |
.&mt('Your import is complete.') |
<tr> |
.'</p>' |
<td colspan='2' align='left'> |
); |
</td> |
# Re-initialize Button |
</tr> |
my $initbutton = |
<tr bgcolor='#CCCCFF'> |
'<input type="button" value="' |
<td valign="middle"><img src="/res/adm/pages/bl_step5.gif" alt="5" /> |
.&mt('re-initializing Course') |
</td> |
.'" onclick="javascript:init(this.form)" />'; |
<td width='100%' align='left'> |
$r->print( |
<font face='arial,helvetica,sans-serif'><b>Your import is complete</b></font> |
'<form method="post" action="/adm/roles" target="loncapaclient" name="importDone">' |
</td> |
.'<input type="hidden" name="orgurl" value="/adm/coursedocs" />' |
</tr> |
.'<input type="hidden" name="selectrole" value="1" />' |
<tr> |
.'<input type="hidden" name="'.$env{'request.role'}.'" value="1" />' |
<td colspan='2'> </td> |
.'<p class="LC_warning">' |
</tr> |
.&mt('Changes will become active for your current session after [_1]' |
<tr> |
.', or the next time you log in.' |
<td> </td> |
,$initbutton) |
<td> |
.'</p>' |
ENDBLOCK |
.'</form>' |
my $initblock = qq| |
); |
<form method="post" action="/adm/roles" target="loncapaclient" name="importDone"> |
|
<input type="hidden" name="orgurl" value="/adm/coursedocs" /> |
|
<input type="hidden" name="selectrole" value="1" /> |
|
<h3><font color="red">Changes will become active for your current session after |
|
<input type="hidden" name="$env{'request.role'}" value="1" /> |
|
<input type="button" value="|; |
|
$initblock .= &mt('re-initializing course'); |
|
$initblock .= qq|" onClick="javascript:init(this.form)" />|; |
|
$initblock .= ', '.&mt('or the next time you log in.'); |
|
$initblock .= qq|</font></h3></form>|; |
|
$r->print($initblock); |
|
$r->print(<<ENDBLOCKTWO); |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
ENDBLOCKTWO |
|
} |
} |
|
|
1; |
1; |