version 1.42, 2013/07/15 16:13:16
|
version 1.46, 2014/12/11 01:07:38
|
Line 133 sub jscript_two {
|
Line 133 sub jscript_two {
|
$course_list = '"'.join('","',@crslist).'"'; |
$course_list = '"'.join('","',@crslist).'"'; |
$$numcrs = @crslist; |
$$numcrs = @crslist; |
|
|
|
my %lt = &Apache::lonlocal::texthash( |
|
sel => 'Please select', |
|
impto => 'Import topics only', |
|
imptpa => 'Import topics + posts (with author)', |
|
imptpn => 'Import topics + posts (no author)', |
|
enrst => 'Enroll students only', |
|
enrall => 'Enroll all users', |
|
notreq => 'Not required', |
|
errao => 'You must select one of the additional options when importing Discussion Boards.', |
|
errtd => 'You must select a target course when importing Discussion Boards.', |
|
errap => 'You must select one of the additional options when importing Enrollment.', |
|
errte => 'You must select a target course when importing enrollment information.', |
|
errcc => 'You must check at least one Content Type.', |
|
); |
return <<"END_OF_TWO"; |
return <<"END_OF_TWO"; |
|
|
function checkCourse() { |
function checkCourse() { |
Line 181 function setCourse(step2Form,call) {
|
Line 195 function setCourse(step2Form,call) {
|
step2Form.targetcourse.length = 0 |
step2Form.targetcourse.length = 0 |
if (call == 'add') { |
if (call == 'add') { |
step2Form.targetcourse.length = 0 |
step2Form.targetcourse.length = 0 |
step2Form.targetcourse.options[0] = new Option("Please Select","0",true,true) |
step2Form.targetcourse.options[0] = new Option("$lt{'sel'}","0",true,true) |
for (var i=0; i<courseID_array.length; i++) { |
for (var i=0; i<courseID_array.length; i++) { |
step2Form.targetcourse.options[i+1] = new Option(courseTitle_array[i],courseID_array[i],false,false) |
step2Form.targetcourse.options[i+1] = new Option(courseTitle_array[i],courseID_array[i],false,false) |
} |
} |
Line 201 function setOptions(caller,itemnum) {
|
Line 215 function setOptions(caller,itemnum) {
|
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{'sel'}","-1",true,true) |
opForm.elements[menu].options[1] = new Option("Import topics only","topics",true,true) |
opForm.elements[menu].options[1] = new Option("$lt{'impto'}","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{'imptpa'}","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{'imptpn'}","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{'sel'}","-1",true,true) |
opForm.elements[menu].options[1] = new Option("Enroll students only","students",true,true) |
opForm.elements[menu].options[1] = new Option("$lt{'enrst'}","students",true,true) |
opForm.elements[menu].options[2] = new Option("Enroll all users","all",true,true) |
opForm.elements[menu].options[2] = new Option("$lt{'enrall'}","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{'notreq'}","0",true,true) |
} |
} |
opForm.elements[menu].selectedIndex = 0 |
opForm.elements[menu].selectedIndex = 0 |
if (numCrs > 0) { |
if (numCrs > 0) { |
Line 234 function verify(caller) {
|
Line 248 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{'errao'}") |
return false |
return false |
} |
} |
if (numCrs == 0) { |
if (numCrs == 0) { |
Line 243 function verify(caller) {
|
Line 257 function verify(caller) {
|
} |
} |
else { |
else { |
if (opForm.targetcourse.selectedIndex == 0) { |
if (opForm.targetcourse.selectedIndex == 0) { |
alert("You must select a target course when importing Discussion Boards") |
alert("$lt{'errtd'}") |
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{'errap'}") |
return false |
return false |
} |
} |
if (numCrs == 0) { |
if (numCrs == 0) { |
Line 259 function verify(caller) {
|
Line 273 function verify(caller) {
|
} |
} |
else { |
else { |
if (opForm.targetcourse.selectedIndex == 0) { |
if (opForm.targetcourse.selectedIndex == 0) { |
alert("You must select a target course when importing enrollment information") |
alert("$lt{'errte'}") |
return false |
return false |
} |
} |
} |
} |
Line 267 function verify(caller) {
|
Line 281 function verify(caller) {
|
} |
} |
} |
} |
if (totcheck == 0) { |
if (totcheck == 0) { |
alert("You must check the Checkbox for at least one Content Type"); |
alert("$lt{'errcc'}"); |
return false |
return false |
} |
} |
return true |
return true |
Line 290 sub display_one {
|
Line 304 sub display_one {
|
&Apache::lonhtmlcommon::topic_bar(1,&mt('Specify the Course Management system used to create the package')). |
&Apache::lonhtmlcommon::topic_bar(1,&mt('Specify the Course Management system used to create the package')). |
&mt('Choose the CMS used to create your IMS content package.').' |
&mt('Choose the CMS used to create your IMS content package.').' |
<select name="source"> |
<select name="source"> |
<option value="-1" selected="selected">Please select</option> |
<option value="-1" selected="selected">'.&mt('Please select').'</option> |
<option value="bb5">Blackboard 5</option> |
<option value="bb5">Blackboard 5</option> |
<option value="bb6">Blackboard 6</option> |
<option value="bb6">Blackboard 6</option> |
<option value="angel5">ANGEL 5.5</option> |
<option value="angel5">ANGEL 5.5</option> |
Line 298 sub display_one {
|
Line 312 sub display_one {
|
<option value="webctvista4">WebCT Vista 4</option> |
<option value="webctvista4">WebCT Vista 4</option> |
</select><br />'."\n". |
</select><br />'."\n". |
&Apache::lonhtmlcommon::topic_bar(2,&mt('Create a directory where you will unpack your IMS package'))."\n". |
&Apache::lonhtmlcommon::topic_bar(2,&mt('Create a directory where you will unpack your IMS package'))."\n". |
&mt('Create a destination LON-CAPA directory in which to store the contents of the IMS package file.').' <input type="button" name="createdir" value="Create Directory" onclick="javascript:createWin()" /><input type="hidden" name="newdir" value="" /><br /><br /> |
&mt('Create a destination LON-CAPA directory in which to store the contents of the IMS package file.').' <input type="button" name="createdir" value="'.&mt('Create Directory').'" onclick="javascript:createWin()" /><input type="hidden" name="newdir" value="" /><br /><br /> |
<input type="hidden" name="filename" value="'.$fn.'" /> |
<input type="hidden" name="filename" value="'.$fn.'" /> |
<input type="hidden" name="phase" value="three" /> |
<input type="hidden" name="phase" value="three" /> |
<input type="button" name="nextpage" value="'.&mt('Proceed').'" onclick="javascript:nextPage();" /> |
<input type="button" name="nextpage" value="'.&mt('Proceed').'" onclick="javascript:nextPage();" /> |
Line 332 sub display_two {
|
Line 346 sub display_two {
|
type => 'Content type', |
type => 'Content type', |
addo => 'Additional options', |
addo => 'Additional options', |
chec => 'Check Import first', |
chec => 'Check Import first', |
bbus => 'Choose a course to receive bulletin boards and user enrollment', |
bbus => 'Choose a course to receive discussion boards and user enrollment', |
list => 'A listing of possible course targets will be displayed if import of bulletin boards and/or enrollment is checked above (step 3). If you do not plan to import either of these content types, there is no need to specify a course.', |
list => 'A listing of possible course targets will be displayed if import of discussion boards and/or enrollment is checked above (step 3). If you do not plan to import either of these content types, there is no need to specify a course.', |
chco => 'Choose course:', |
chco => 'Choose course:', |
nreq => 'Not required', |
nreq => 'Not required', |
yodo => 'You do not have active course coordinator status in any LON-CAPA courses currently, so bulletin boards and enrollment information included in your IMS package will be discarded, regardless of your import choice for these two items above (step 3).', |
yodo => 'You do not have active course coordinator status in any LON-CAPA courses currently, so discussion boards and enrollment information included in your IMS package will be discarded, regardless of your import choice for these two items above (step 3).', |
ifyo => "If you wish to import bulletin boards and/or user information into LON-CAPA please click 'Exit now' to quit the current IMS import process, and contact your domain coordinator and request a course coordinator role in a LON-CAPA course into which you can upload bulletin boards and/or enroll users.", |
ifyo => "If you wish to import discussion boards and/or user information into LON-CAPA please click 'Exit now' to quit the current IMS import process, and contact your domain coordinator and request a course coordinator role in a LON-CAPA course into which you can upload discussion boards and/or enroll users.", |
impa => 'Import package', |
impa => 'Import package', |
unpa => 'Unpacking of your IMS package failed because an IMS manifest file was not located in the package', |
unpa => 'Unpacking of your IMS package failed because an IMS manifest file was not located in the package', |
proc => 'Processing of your IMS package failed because the file you uploaded could not be unzipped', |
proc => 'Processing of your IMS package failed because the file you uploaded could not be unzipped', |
Line 364 sub display_two {
|
Line 378 sub display_two {
|
$tempdir,\%resources,\%items,\%hrefs,\%resinfo, |
$tempdir,\%resources,\%items,\%hrefs,\%resinfo, |
'choose',\%includedres,\%includeditems); |
'choose',\%includedres,\%includeditems); |
if ($manifest_result eq 'ok') { |
if ($manifest_result eq 'ok') { |
foreach my $res (sort keys %resources) { |
foreach my $res (sort(keys(%resources))) { |
if ($cms eq 'bb5' || $cms eq 'bb6' || $cms eq 'webctce4' |
if ($cms eq 'bb5' || $cms eq 'bb6' || $cms eq 'webctce4' |
|| $cms eq 'webctvista4') { |
|| $cms eq 'webctvista4') { |
foreach my $area (keys %{$$cmsmap{$cms}}) { |
foreach my $area (keys(%{$$cmsmap{$cms}})) { |
if ($resources{$res}{type} eq $$cmsmap{$cms}{$area}) { |
if ($resources{$res}{type} eq $$cmsmap{$cms}{$area}) { |
$count{$area} ++; |
$count{$area} ++; |
} |
} |
} |
} |
} elsif ($cms eq 'angel5') { |
} elsif ($cms eq 'angel5') { |
foreach my $area (keys %{$$cmsmap{$cms}}) { |
foreach my $area (keys(%{$$cmsmap{$cms}})) { |
if ($area eq 'doc') { |
if ($area eq 'doc') { |
if (grep/^$resources{$res}{type}$/,@{$$cmsmap{$cms}{doc}}) { |
if (grep/^$resources{$res}{type}$/,@{$$cmsmap{$cms}{doc}}) { |
$count{$area} ++; |
$count{$area} ++; |
Line 465 sub display_two {
|
Line 479 sub display_two {
|
$r->print($lt{'unpa'}); |
$r->print($lt{'unpa'}); |
} |
} |
} else { |
} else { |
$r->print($lt{'proc'}); |
$r->print( |
|
'<br />'.&Apache::loncommon::confirmwrapper( |
|
&Apache::lonhtmlcommon::confirm_success($lt{'proc'},1) |
|
.'<br />'.&mt('Error: [_1]',$unzip_result)) |
|
); |
} |
} |
} |
} |
|
|
Line 543 sub display_three {
|
Line 561 sub display_three {
|
my $manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir, |
my $manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir, |
\%resources,\%items,\%hrefs,\%resinfo,'prepare', |
\%resources,\%items,\%hrefs,\%resinfo,'prepare', |
\%includedres); |
\%includedres); |
|
|
if ($manifest_result eq 'ok') { |
if ($manifest_result eq 'ok') { |
foreach my $res (sort keys %resources) { |
my %possibledep; |
|
foreach my $res (sort(keys(%resources))) { |
if ($importareas{$resources{$res}{type}}) { |
if ($importareas{$resources{$res}{type}}) { |
$includedres{$res} = 1; |
$includedres{$res} = 1; |
if ($resources{$res}{type} eq 'webct.manifest' || |
if ($resources{$res}{type} eq 'webct.manifest' || |
Line 552 sub display_three {
|
Line 572 sub display_three {
|
$resources{$res}{type} eq 'webct.question') { |
$resources{$res}{type} eq 'webct.question') { |
push(@assessmentfiles,$res); |
push(@assessmentfiles,$res); |
} |
} |
|
} elsif ($resources{$res}{usedby}) { |
|
$possibledep{$res} = 1; |
|
} |
|
} |
|
foreach my $res (sort(keys(%possibledep))) { |
|
if ($includedres{$resources{$res}{usedby}}) { |
|
$includedres{$res} = 1; |
} |
} |
} |
} |
foreach my $itm (sort keys %items) { |
foreach my $itm (sort(keys(%items))) { |
&Apache::imsprocessor::get_imports(\%includeditems,\%items,\%resources,\%importareas,$itm); |
&Apache::imsprocessor::get_imports(\%includeditems,\%items,\%resources,\%importareas,$itm); |
} |
} |
} |
} |
|
|
foreach my $itm (sort keys %includeditems) { |
foreach my $itm (sort(keys(%includeditems))) { |
&Apache::imsprocessor::get_parents(\%includeditems,\%items,$itm); |
&Apache::imsprocessor::get_parents(\%includeditems,\%items,$itm); |
} |
} |
|
|
$manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir, |
$manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir, |
\%resources,\%items,\%hrefs,\%resinfo,'build', |
\%resources,\%items,\%hrefs,\%resinfo,'build', |
\%includedres,\%includeditems); |
\%includedres,\%includeditems); |
|
|
if ($manifest_result eq 'ok') { |
if ($manifest_result eq 'ok') { |
&Apache::imsprocessor::target_resources(\%resources,\%importareas,\@targets); |
&Apache::imsprocessor::target_resources(\%resources,\%importareas,\@targets); |
|
|
Line 584 sub display_three {
|
Line 612 sub display_three {
|
|
|
&Apache::imsprocessor::process_resinfo($cms,'CSTR',$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,\%randompicks); |
&Apache::imsprocessor::process_resinfo($cms,'CSTR',$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,\%randompicks); |
|
|
my $copy_result = &Apache::imsprocessor::copy_resources('CSTR',$cms,\%hrefs,$tempdir,\@targets,\%urls,$crs,$cdom,$destdir,$timenow,\@assessmentfiles,\%total); |
my $copy_result = &Apache::imsprocessor::copy_resources('CSTR',$cms,\%hrefs,\%resources,$tempdir,\@targets,\%urls,$crs,$cdom,$destdir,$timenow,\@assessmentfiles,\%total); |
|
|
&Apache::imsprocessor::build_structure($cms,'CSTR',$destdir,\%items,\%resinfo,\%resources,\@targets,\%hrefs,$udom,$uname,$dirpath,$timenow,$cdom,$crs,\@timestamp,\%total,\@boards,\@announcements,\@quizzes,\@surveys,\@pools,\%boardnum,\@pages,\@sequences,\@topurls,\@topnames,\@packages,\%includeditems,\%randompicks); |
&Apache::imsprocessor::build_structure($cms,'CSTR',$destdir,\%items,\%resinfo,\%resources,\@targets,\%hrefs,$udom,$uname,$dirpath,$timenow,$cdom,$crs,\@timestamp,\%total,\@boards,\@announcements,\@quizzes,\@surveys,\@pools,\%boardnum,\@pages,\@sequences,\@topurls,\@topnames,\@packages,\%includeditems,\%randompicks); |
|
|
$r->print("<h3>IMS import completed</h3>"); |
my $message = |
|
&Apache::lonhtmlcommon::confirm_success( |
|
&mt('IMS import completed')) |
|
.'<br />'.$lt{'yims'}.' '; |
|
|
if ($cms eq 'angel5') { |
if ($cms eq 'angel5') { |
$r->print($lt{'yims'}.' '.&mt('A total of [quant,_1,sequence], [quant,_2,composite page], and [quant,_3,bulletin board] have been created, and [quant,_4,file] copied.',$total{seq},$total{page},$total{board},$total{file})."\n"); |
$message .= &mt('A total of [quant,_1,sequence], [quant,_2,composite page], and [quant,_3,discussion board] have been created, and [quant,_4,file] copied.',$total{seq},$total{page},$total{board},$total{file})."\n"; |
} else { |
} else { |
$r->print($lt{'yims'}.' '.&mt('A total of [quant,_1,sequence], [quant,_2,composite page], [quant,_3,bulletin board], [quant,_4,quiz,quizzes], [quant,_5,survey], and [quant,_6,problem] have been created, and [quant,_7,file] copied.',$total{seq},$total{page},$total{board},$total{quiz},$total{surv},$total{prob},$total{file})."\n"); |
$message .= &mt('A total of [quant,_1,sequence], [quant,_2,composite page], [quant,_3,discussion board], [quant,_4,quiz,quizzes], [quant,_5,survey], and [quant,_6,problem] have been created, and [quant,_7,file] copied.',$total{seq},$total{page},$total{board},$total{quiz},$total{surv},$total{prob},$total{file})."\n"; |
} |
} |
$r->print('<br /><br />'.$lt{'plsv'}.' '.$lt{'tseq'}.'<br /><br />'.$lt{'tfin'}.'<br /><br /><a href="/priv/'.$udom.'/'.$uname.'/'.$dirpath.'/">'.$lt{'disp'}.'</a>'); |
$r->print( |
|
'<br />'.&Apache::loncommon::confirmwrapper($message) |
|
.'<p>'.$lt{'plsv'}.' '.$lt{'tseq'}.'</p>' |
|
.'<p>'.$lt{'tfin'}.'</p>' |
|
.&Apache::lonhtmlcommon::actionbox( |
|
['<a href="/priv/'.$udom.'/'.$uname.'/'.$dirpath.'/">'.$lt{'disp'}.'</a>']) |
|
); |
my $londocroot = $r->dir_config('lonDocRoot'); |
my $londocroot = $r->dir_config('lonDocRoot'); |
if ($destdir =~ m{^\Q$londocroot/priv/$udom/$uname/$dirpath\E}) { |
if ($destdir =~ m{^\Q$londocroot/priv/$udom/$uname/$dirpath\E}) { |
system (" rm -r -f $destdir/temp"); |
system (" rm -r -f $destdir/temp"); |
} |
} |
} elsif ($manifest_result eq 'nomanifest') { |
} elsif ($manifest_result eq 'nomanifest') { |
$r->print($lt{'proc'}); |
$r->print( |
|
'<br />'.&Apache::loncommon::confirmwrapper( |
|
&Apache::lonhtmlcommon::confirm_success($lt{'proc'},1)) |
|
); |
} |
} |
} |
} |
|
|
Line 646 sub get_ccroles {
|
Line 686 sub get_ccroles {
|
push @{$courses{$currcode}}, $cdom.'/'.$crs; |
push @{$courses{$currcode}}, $cdom.'/'.$crs; |
} |
} |
} |
} |
foreach my $code (sort @codes) { |
foreach my $code (sort(@codes)) { |
foreach my $crsdom (@{$courses{$code}}) { |
foreach my $crsdom (@{$courses{$code}}) { |
my ($cdom,$crs) = split/\//,$crsdom; |
my ($cdom,$crs) = split/\//,$crsdom; |
my $showcode = ''; |
my $showcode = ''; |
Line 739 END_JS
|
Line 779 END_JS
|
my $flag = &Apache::lonupload::phasetwo($r,$fn,'imsimport'); |
my $flag = &Apache::lonupload::phasetwo($r,$fn,'imsimport'); |
if ($flag eq 'ok') { |
if ($flag eq 'ok') { |
&display_one($r,$fn,$fullpath,$formname_one); |
&display_one($r,$fn,$fullpath,$formname_one); |
|
} else { |
|
$r->print( |
|
'<br />'.&Apache::loncommon::confirmwrapper( |
|
&Apache::lonhtmlcommon::confirm_success( |
|
&mt('Error uploading IMS package'),1)) |
|
); |
} |
} |
} elsif ( ($env{'form.phase'} eq 'three') || ($env{'form.phase'} eq 'four') ) { |
} elsif ( ($env{'form.phase'} eq 'three') || ($env{'form.phase'} eq 'four') ) { |
my $destdir = $env{'form.newdir'}; |
my $destdir = $env{'form.newdir'}; |