version 1.10, 2005/02/16 20:24:15
|
version 1.27, 2009/11/20 16:20:17
|
Line 1
|
Line 1
|
|
# The LearningOnline Network with CAPA |
|
# |
|
# $Id$ |
|
# |
# Copyright Michigan State University Board of Trustees |
# Copyright Michigan State University Board of Trustees |
# |
# |
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
# This file is part of the LearningOnline Network with CAPA (LON-CAPA). |
Line 30 use Apache::loncommon;
|
Line 34 use Apache::loncommon;
|
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::imsprocessor; |
use Apache::imsprocessor; |
use LONCAPA::Configuration; |
use LONCAPA::Configuration; |
|
use LONCAPA::map(); |
|
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
|
|
use strict; |
use strict; |
|
|
sub jscript_one { |
sub jscript_one { |
Line 143 sub handler {
|
Line 151 sub handler {
|
&Apache::imsprocessor::ims_config(\@areas,\%cmsmap,\%areaname); |
&Apache::imsprocessor::ims_config(\@areas,\%cmsmap,\%areaname); |
|
|
# get course data |
# get course data |
my $coursenum=$ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $coursedom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; |
my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $coursehome=$ENV{'course.'.$ENV{'request.course.id'}.'.home'}; |
|
|
|
# get personal data |
# get personal data |
|
|
my $uname=$ENV{'user.name'}; |
my $uname=$env{'user.name'}; |
my $udom=$ENV{'user.domain'}; |
my $udom=$env{'user.domain'}; |
my $plainname=&Apache::lonnet::escape( |
my $plainname=&escape( |
&Apache::loncommon::plainname($uname,$udom)); |
&Apache::loncommon::plainname($uname,$udom)); |
|
|
# does this user have privileges to post, etc? |
# does this user have privileges to post, etc? |
my $allowed=&Apache::lonnet::allowed('mdc',$ENV{'request.course.id'}); |
my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'}); |
unless ($allowed) { |
unless ($allowed) { |
$r->print("<html><head><title>The LearningOnline Network with CAPA</title></head>"); |
$r->print(&Apache::loncommon::start_page('Import IMS package',undef, |
$r->print(&Apache::loncommon::bodytag('Import IMS package',undef,'',1)); |
{'only_body' => 1,})); |
$r->print('<h3>'.&mt('Modification of Course Contents Disallowed').'</h3>'.&mt('Your current role does not grant you the right to modify course content in this course.').'</body></html>'); |
$r->print( |
|
'<p class="LC_error">' |
|
.&mt('Modification of Course Contents Disallowed') |
|
.'</p><p>' |
|
.&mt('Your current role does not grant you the right to modify course content in this course.') |
|
.'</p>' |
|
.&Apache::loncommon::end_page() |
|
); |
return OK; |
return OK; |
} |
} |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['phase']); |
['phase']); |
|
|
if ($ENV{'form.phase'} eq 'one') { |
if ($env{'form.phase'} eq 'one') { |
&jscript_one(\$javascript); |
&jscript_one(\$javascript); |
} elsif ($ENV{'form.phase'} eq 'two') { |
} elsif ($env{'form.phase'} eq 'two') { |
&jscript_two(\$javascript); |
&jscript_two(\$javascript); |
} elsif ($ENV{'form.phase'} eq 'three') { |
} elsif ($env{'form.phase'} eq 'three') { |
&jscript_three(\$javascript); |
&jscript_three(\$javascript); |
} |
} |
|
|
|
$javascript = |
|
"<script type=\"text/javascript\">\n". |
|
"//<!--\n$javascript\n// --></script>\n"; |
|
my $headline = 'Import IMS package'; |
|
my $start_page = &Apache::loncommon::start_page($headline, |
|
$javascript, |
|
{'only_body' => 1,}) |
|
.'<h1>'.&mt($headline).'</h1>'; |
# print screen |
# print screen |
$r->print(<<ENDHEAD); |
$r->print($start_page); |
<html> |
|
<head> |
if ($env{'form.phase'} eq 'one') { |
<title>The LearningOnline Network with CAPA</title> |
|
<script type="text/javascript"> |
|
<!-- |
|
$javascript |
|
--> |
|
</script> |
|
</head> |
|
ENDHEAD |
|
# -------------------------------------------------------------------- Body tag |
|
$r->print(&Apache::loncommon::bodytag('Import IMS package',undef,'',1)); |
|
if ($ENV{'form.phase'} eq 'one') { |
|
&display_one($r); |
&display_one($r); |
} elsif ($ENV{'form.phase'} eq 'two') { |
} elsif ($env{'form.phase'} eq 'two') { |
&display_two($r,$coursenum,\@areas,\%areaname,%cmsmap); |
&display_two($r,$coursenum,\@areas,\%areaname,%cmsmap); |
} elsif ($ENV{'form.phase'} eq 'three') { |
} elsif ($env{'form.phase'} eq 'three') { |
&display_three($r,$coursenum,$coursedom,$coursehome,$uname,$udom,\@areas,%cmsmap); |
&display_three($r,$coursenum,$coursedom,$uname,$udom,\@areas,%cmsmap); |
} |
} |
$r->print("</body><html>"); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |
} |
} |
|
|
Line 204 sub display_one {
|
Line 215 sub display_one {
|
my ($r) = @_; |
my ($r) = @_; |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['folder']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['folder']); |
|
|
$r->print(<<ENDBLOCK); |
$r->print( |
<form action="/adm/imsimportdocs" method="post" enctype="multipart/form-data" name="pickcms"> |
'<form action="/adm/imsimportdocs" method="post"' |
<table border='0' bgcolor='#F6F6F6' cellspacing='0' cellpadding ='0' width='100%'> |
.' enctype="multipart/form-data" name="pickcms">' |
<tr> |
.&Apache::lonhtmlcommon::topic_bar( |
<td colspan='2'> |
1,&mt('Specify the Course Management system used to create the package')) |
<table border='0' cellspacing='0' cellpadding='0'> |
.&mt('Please choose the CMS used to create your IMS content package:').' ' |
<tr> |
.'<select name="source">' |
<td colspan='2' align='left'> |
.'<option value="-1" selected="selected">'.&mt('Please select').'</option>' |
</td> |
.'<option value="bb5">Blackboard 5</option>' |
</tr> |
.'<option value="bb6">Blackboard 6</option>' |
<tr bgcolor='#CCCCFF'> |
.'<option value="angel5">ANGEL 5.5</option>' |
<td valign='middle'><img src='/res/adm/pages/bl_step1.gif'> |
.'<option value="webctce4">WebCT 4 Campus Edition</option>' |
</td> |
.'</select>' |
<td width='100%' align='left'> |
); |
<font face='arial,helvetica,sans-serif'><b>Specify the Course Management system used to create the package.</b> |
$r->print( |
</font> |
&Apache::lonhtmlcommon::topic_bar( |
</td> |
2,&mt('Locate the IMS content package you wish to upload')) |
</tr> |
.'<input type="hidden" name="folder" value="'.$env{'form.folder'}.'" />' |
<tr> |
.'<input type="hidden" name="phase" value="two" />' |
<td colspan='2'> </td> |
.&mt('File:') |
</tr> |
.' <input type="file" name="uploadname" size="40" />' |
<tr> |
); |
<td> </td> |
$r->print( |
<td> |
'<hr />' |
<font face='Arial,Helvetica,sans-serif'> |
.'<p>' |
Please choose the CMS used to create your IMS content package. |
.'<input type="button" name="exitpage" value="'.&mt('Cancel').'"' |
<select name="source"> |
.' onclick="javascript:self.close()" />' |
<option value='-1' selected="true">Please select |
.' ' |
<option value='bb5'>Blackboard 5 |
.'<input type="button" name="nextpage" value="'.&mt('Upload IMS package').'"' |
<option value='bb6'>Blackboard 6 |
.' onclick="javascript:nextPage()" />' |
<option value='angel'>ANGEL |
.'</p>' |
</select> |
); |
</font> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> </td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> </td> |
|
</tr> |
|
<tr bgcolor='#CCCCFF'> |
|
<td valign='middle'><img src='/res/adm/pages/bl_step2.gif'> |
|
</td> |
|
<td width='100%' align='left'> |
|
<font face='arial,helvetica,sans-serif'><b>Locate the IMS content package you wish to upload.</b> |
|
</font> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> </td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> |
|
<input type="hidden" name="folder" value="$ENV{'form.folder'}" /> |
|
<input type="hidden" name="phase" value="two" /> |
|
<input type="file" name="uploadname" size="40" /> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> </td> |
|
</tr> |
|
<tr> |
|
<td> </td> |
|
<td><font face='arial,helvetica,sans-serif'>If you have selected the CMS, and located the IMS package, you should click the 'Upload IMS package' button to upload the file to the server.</font></td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> </td> |
|
</tr> |
|
<tr |
|
<td colspan='2'> |
|
<table border='0' cellspacing='0' cellpadding='0' width="100%"> |
|
<tr> |
|
<td align='left'> |
|
<input type="button" name="exitpage" value="Exit now" onClick="javascript:self.close()"> |
|
</td> |
|
<td align='right'> |
|
<input type="button" name="nextpage" value="Upload IMS package" onClick="javascript:nextPage()"> |
|
</td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
</form> |
|
ENDBLOCK |
|
} |
} |
|
|
|
|
sub display_two { |
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']); |
&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); |
my $fname = &Apache::imsprocessor::uploadzip('DOCS',$tempdir); |
my $fname = &Apache::imsprocessor::uploadzip('DOCS',$tempdir); |
Line 315 sub display_two {
|
Line 269 sub display_two {
|
my %hrefs = (); |
my %hrefs = (); |
my %resinfo = (); |
my %resinfo = (); |
my %count = (); |
my %count = (); |
my @bgcolors = ("#eeeeee","#dddddd"); |
|
|
|
my $counter = 0; |
my $counter = 0; |
my $iter = 0; |
|
my %count = ( |
my %count = ( |
announce => 0, |
announce => 0, |
board => 0, |
board => 0, |
Line 332 sub display_two {
|
Line 283 sub display_two {
|
users => 0, |
users => 0, |
); |
); |
|
|
if ($unzip_result eq 'ok') { |
if ($unzip_result ne 'ok') { |
$manifest_result = &Apache::imsprocessor::process_manifest($cms,$tempdir,\%resources,\%items,\%hrefs,\%resinfo,'choose',\%includedres,\%includeditems); |
$r->print( |
if ($manifest_result eq 'ok') { |
'<p class="LC_warning">' |
foreach my $res (sort keys %resources) { |
.&mt('Processing of your IMS package failed because the file you' |
if ($cms eq 'bb5' || $cms eq 'bb6') { |
.' uploaded could not be unzipped.') |
foreach my $area (keys %{$cmsmap{$cms}}) { |
.'</p>' |
if ($resources{$res}{type} eq $cmsmap{$cms}{$area}) { |
); |
$count{$area} ++; |
return(); |
} |
} |
} |
|
} elsif ($cms eq 'angel') { |
# Get manifest file from package |
foreach my $area (keys %{$cmsmap{$cms}}) { |
$manifest_result = &Apache::imsprocessor::process_manifest( |
if ($area eq 'doc') { |
$cms,$tempdir,\%resources,\%items,\%hrefs, |
if (grep/^$resources{$res}{type}$/,@{$cmsmap{$cms}{doc}}) { |
\%resinfo,'choose',\%includedres,\%includeditems); |
$count{$area} ++; |
if ($manifest_result ne 'ok') { |
} |
$r->print( |
} elsif ($resources{$res}{type} eq $cmsmap{$cms}{$area}) { |
'<p class="LC_warning">' |
$count{$area} ++; |
.&mt('Unpacking of your IMS package failed because an IMS manifest file was not located in the package.') |
} |
.'</p>' |
} |
); |
|
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(<<ENDBLOCK); |
} elsif ($cms eq 'angel5') { |
<form name="pickoptions" method="post"> |
foreach my $area (keys %{$cmsmap{$cms}}) { |
<table border='0' bgcolor='#F6F6F6'' cellspacing='0' cellpadding ='0' width='100%'> |
if ($area eq 'doc') { |
<tr> |
if (grep/^$resources{$res}{type}$/,@{$cmsmap{$cms}{doc}}) { |
<td colspan='2'> |
$count{$area} ++; |
<table border='0' cellspacing='0' cellpadding='0'> |
|
<tr> |
|
<td colspan='2' align='left'> |
|
</td> |
|
</tr> |
|
<tr bgcolor='#CCCCFF'> |
|
<td valign='middle'><img src='/res/adm/pages/bl_step3.gif'> |
|
</td> |
|
<td width='100%' align='left'> |
|
<font face='arial,helvetica,sans-serif'><b>Choose which content types you wish to import</b></font> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> </td> |
|
</tr> |
|
<tr> |
|
<td> </td> |
|
<td> |
|
<table border='0' cellspacing='0' cellpadding='1' bgcolor='#000000'> |
|
<tr> |
|
<td> |
|
<table border='0' cellspacing='0' cellpadding='0' bgcolor='#ffffff' width='100%'> |
|
<tr> |
|
<td> |
|
<table border='0' cellspacing='1' cellpadding='1' bgcolor='#ffffff' width='100%'> |
|
<tr bgcolor='#CCCCFF'> |
|
<td align='center'><font face='arial,helvetica,sans-serif'><b>Import?</b></font></td> |
|
<td align='center'><font face='arial,helvetica,sans-serif'><b>Content type</b></font></td> |
|
<td align='center'><font face='arial,helvetica,sans-serif'><b>Additional options</b></font></td> |
|
</tr> |
|
ENDBLOCK |
|
foreach my $area (@{$areasref}) { |
|
if ($count{$area} > 0) { |
|
my $count_tag = 'flag_'.$counter; |
|
$r->print(" <tr bgcolor='@bgcolors[$iter]'> |
|
<td align='left'><font face='arial,helvetica,sans-serif'><input name='$area' type='checkbox' "); |
|
if ($area eq 'board' || $area eq 'users') { |
|
$r->print(qq|onClick='javascript:setOptions("$area","$counter")'|); |
|
} |
} |
$r->print("/></font></td> |
} elsif ($resources{$res}{type} eq $cmsmap{$cms}{$area}) { |
<td align='left'><font face='arial,helvetica,sans-serif'> $$areaname{$area} - $count{$area} item(s)</font></td>"); |
$count{$area} ++; |
if ($area eq 'board') { |
|
$r->print(" <td align='left'><font face='arial,helvetica,sans-serif'> |
|
<select name='db_handling'> |
|
<option value='-2'><-- Check Import first |
|
</select></font> |
|
</td>"); |
|
} elsif ($area eq 'users') { |
|
$r->print(" <td align='left'><font face='arial,helvetica,sans-serif'> |
|
<select name='user_handling'> |
|
<option value='-2'><-- Check Import first |
|
</select> |
|
</font> |
|
</td>"); |
|
} else { |
|
$r->print(" <td align='left'><font face='arial,helvetica,sans-serif'> None<input type='hidden' name='$count_tag' /></font></td>"); |
|
} |
|
$counter ++; |
|
$iter = $counter%2; |
|
} |
} |
} |
} |
$r->print(<<ENDDOCUMENT); |
} else { # Unknown cms format |
</tr> |
$r->print( |
</table> |
'<span class="LC_warning">' |
</td> |
.&mt('Unsupported IMS format: [_1]',$cms) |
</tr> |
.'</span><br />' |
</table> |
); |
</td> |
# return(); |
</tr> |
} |
</table> |
} |
</td> |
|
</tr> |
|
<tr> |
# Start output: Step 3 and step 4 |
<td colspan='2'> <br /><br /></td> |
|
</tr> |
$r->print( |
<tr bgcolor='#CCCCFF'> |
'<form name="pickoptions" method="post">' |
<td valign='middle'><img src='/res/adm/pages/bl_step4.gif'> |
.&Apache::lonhtmlcommon::topic_bar( |
</td> |
3,&mt('Choose which content types you wish to import')) |
<td width='100%' align='left'> |
.'<p>' |
<font face='arial,helvetica,sans-serif'><b>Choose display options for listing of contents of top level of package.</b></font> |
.&mt('Check the checkboxes for all areas you wish to import from the IMS package:') |
</td> |
.'</p>' |
</tr> |
); |
<tr> |
|
<td colspan='2'> </td> |
$r->print( |
</tr> |
&Apache::loncommon::start_data_table() |
<tr> |
.&Apache::loncommon::start_data_table_header_row() |
<td> </td> |
.'<th>'.&mt('Import?').'</th>' |
<td> |
.'<th>'.&mt('Content type').'</th>' |
<table border='0'> |
.'<th>'.&mt('Additional options').'</th>' |
<tr> |
.&Apache::loncommon::end_data_table_header_row() |
<td><font face='arial,helvetica,sans-serif'><input type="radio" name="toplevel" value="newfolder" />Display listing of contents in a new folder, with folder name: <input type="text" name="foldername" size="15" value="Type Name Here" /></font></td> |
); |
</tr> |
|
<tr> |
# Display import row for each area/content type |
<td><font face='arial,helvetica,sans-serif'><input type="radio" name="toplevel" value="oldfolder" />Append listing of contents of top level of package to contents list for the current folder.</font></td> |
foreach my $area (@{$areasref}) { |
</tr> |
unless ($count{$area} > 0) { next }; |
</table> |
|
</td> |
my $count_tag = 'flag_'.$counter; |
</tr> |
|
<tr> |
# Checkbox: Import? |
<td colspan='2'> </td> |
$r->print( |
</tr> |
&Apache::loncommon::start_data_table_row() |
<tr> |
.'<td><input name="'.$area.'" type="checkbox"' |
<td> </td> |
); |
<td><font face='arial,helvetica,sans-serif'>Once you have checked the checkboxes for all areas you wish to import from the IMS package, selected options (if available), and selected a display option for the package contents you should click the 'Complete Import' button.</font></td> |
if ($area eq 'board' || $area eq 'users') { |
</tr> |
$r->print(qq| onclick='javascript:setOptions("$area","$counter")'|); |
<tr> |
} |
<td colspan='2'> |
|
<input type="hidden" name="folder" value="$ENV{'form.folder'}" /> |
$r->print(' /></td>'); |
<input type="hidden" name="source" value="$cms" /> |
|
<input type="hidden" name="tempdir" value="$tempdir" /> |
# Content Type |
<input type="hidden" name="phase" value="three" /> |
$r->print( |
</td> |
'<td>' |
</tr> |
.$$areaname{$area}.' - ' |
<tr> |
.&mt('[quant,_1,item]',$count{$area}) |
<td colspan='2'> |
.'</td>' |
<table border='0' cellspacing='0' cellpadding='0' width="100%"> |
); |
<tr> |
|
<td align='left'> |
# Additional Options |
<input type='button' name='exitpage' value='Exit now' onClick="javascript:self.close()"> |
$r->print('<td>'); |
</td> |
if ($area eq 'board') { |
<td align='right'> |
$r->print( |
<input type="button" name="nextpage" value="Complete Import" onClick="javascript:nextPage($counter)"> |
'<select name="db_handling">' |
</td> |
.'<option value="-2"><-- '.&mt('Check Import first').'</option>' |
</tr> |
.'</select>' |
</table> |
); |
</td> |
} elsif ($area eq 'users') { |
</tr> |
$r->print( |
</table> |
'<select name="user_handling">' |
</td> |
.'<option value="-2"><-- '.&mt('Check Import first').'</option>' |
</tr> |
.'</select>' |
</table> |
); |
ENDDOCUMENT |
|
} else { |
} else { |
$r->print("Unpacking of your IMS package failed because an IMS manifest file was not located in the package\n"); |
$r->print( |
} |
&mt('None') |
} else { |
.'<input type="hidden" name="'.$count_tag.'" />' |
$r->print("Processing of your IMS package failed because the file you uploaded could not be unzipped\n"); |
); |
} |
} |
|
$r->print('</td>'); |
|
|
|
$r->print(&Apache::loncommon::end_data_table_row()); |
|
$counter ++; |
|
} |
|
|
|
$r->print(&Apache::loncommon::end_data_table()); |
|
|
|
$r->print( |
|
&Apache::lonhtmlcommon::topic_bar( |
|
4,&mt('Choose display options for listing of contents of top level of package')) |
|
.'<p>' |
|
.&mt('Select a display option for the package content:') |
|
.'</p>' |
|
); |
|
$r->print( |
|
'<label>' |
|
.'<input type="radio" name="toplevel" value="newfolder" />' |
|
.&mt('Display listing of contents in a new folder, with folder name:') |
|
.'</label>' |
|
.' <input type="text" name="foldername" size="15" value="'.&mt('Type Name Here').'" />' |
|
.'<br />' |
|
.'<label>' |
|
.'<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.') |
|
.'</label>' |
|
); |
|
|
|
# Buttons |
|
$r->print( |
|
'<input type="hidden" name="folder" value="'.$env{'form.folder'}.'" />' |
|
.'<input type="hidden" name="source" value="'.$cms.'" />' |
|
.'<input type="hidden" name="tempdir" value="'.$tempdir.'" />' |
|
.'<input type="hidden" name="phase" value="three" />' |
|
); |
|
$r->print( |
|
'<hr />' |
|
.'<p>' |
|
.'<input type="button" name="exitpage" value="'.&mt('Cancel').'"' |
|
.' onclick="javascript:self.close()" />' |
|
.' ' |
|
.'<input type="button" name="nextpage" value="'.&mt('Finish Import').'"' |
|
.' onclick="javascript:nextPage('.$counter.')" />' |
|
.'</p>' |
|
); |
|
|
|
$r->print('</form>'); |
} |
} |
|
|
|
|
sub display_three { |
sub display_three { |
my ($r,$crs,$cdom,$chome,$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'}; |
my $tempdir = $ENV{'form.tempdir'}; |
my $tempdir = $env{'form.tempdir'}; |
my $longcrs = ''; |
my $longcrs = ''; |
if ($crs =~ m/^(\d)(\d)(\d)/) { |
if ($crs =~ m/^(\d)(\d)(\d)/) { |
$longcrs = $1.'/'.$2.'/'.$3.'/'.$crs; |
$longcrs = $1.'/'.$2.'/'.$3.'/'.$crs; |
Line 540 sub display_three {
|
Line 490 sub display_three {
|
my $toplevel = ''; |
my $toplevel = ''; |
my $foldername = ''; |
my $foldername = ''; |
my %topitems = (); |
my %topitems = (); |
if (defined($ENV{'form.toplevel'}) ) { |
if (defined($env{'form.toplevel'}) ) { |
$toplevel = $ENV{'form.toplevel'}; |
$toplevel = $env{'form.toplevel'}; |
} |
} |
if (defined($ENV{'form.foldername'}) ) { |
if (defined($env{'form.foldername'}) ) { |
$foldername = $ENV{'form.foldername'}; |
$foldername = $env{'form.foldername'}; |
} |
} |
|
|
foreach my $area (@{$areas}) { |
foreach my $area (@{$areas}) { |
if (defined($ENV{"form.$area"}) && ($ENV{'form.'.$area} ne '')) { |
if (defined($env{"form.$area"}) && ($env{'form.'.$area} ne '')) { |
if ($cms eq 'angel' && $area eq 'doc') { |
if ($cms eq 'angel5' && $area eq 'doc') { |
foreach (@{$cmsmap{$cms}{$area}}) { |
foreach (@{$cmsmap{$cms}{$area}}) { |
$importareas{$_} = 1; |
$importareas{$_} = 1; |
} |
} |
Line 557 sub display_three {
|
Line 507 sub display_three {
|
$importareas{$cmsmap{$cms}{$area}} = 1; |
$importareas{$cmsmap{$cms}{$area}} = 1; |
} |
} |
if ($area eq 'board') { |
if ($area eq 'board') { |
$db_handling = $ENV{'form.db_handling'}; |
$db_handling = $env{'form.db_handling'}; |
} elsif ($area eq 'users') { |
} elsif ($area eq 'users') { |
$user_handling = $ENV{'form.user_handling'}; |
$user_handling = $env{'form.user_handling'}; |
} |
} |
} |
} |
} |
} |
Line 613 sub display_three {
|
Line 563 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,$chome,$destdir,$timenow,\%importareas); |
my $copy_result = &Apache::imsprocessor::copy_resources('DOCS',$cms,\%hrefs,$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); |
|
|
foreach my $item (@pages) { |
foreach my $item (@pages) { |
my $filename = $timenow.'/pages/'.$item; |
my $filename = $timenow.'/pages/'.$item; |
my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$chome,$filename,''); |
my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$filename,''); |
} |
} |
foreach my $item (@sequences) { |
foreach my $item (@sequences) { |
unless ($item eq 'Top.sequence' && $toplevel eq 'oldfolder') { |
unless ($item eq 'Top.sequence' && $toplevel eq 'oldfolder') { |
my $filename = $timenow.'/sequences/'.$item; |
my $filename = $timenow.'/sequences/'.$item; |
my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$chome,$filename,''); |
my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$filename,''); |
} |
} |
} |
} |
foreach my $item (@resrcfiles) { |
foreach my $item (@resrcfiles) { |
my $filename = $timenow.'/resfiles/'.$item; |
my $filename = $timenow.'/resfiles/'.$item; |
my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$chome,$filename,''); |
my $fetchresult= &Apache::lonnet::process_coursefile('propagate',$crs,$cdom,$filename,''); |
} |
} |
|
|
my @imports = (); |
my @imports = (); |
if ($toplevel eq 'oldfolder') { |
if ($toplevel eq 'oldfolder') { |
for (my $i=0; $i<@topurls; $i++) { |
for (my $i=0; $i<@topurls; $i++) { |
my $url = &Apache::lonnet::unescape($topurls[$i]); |
my $url = &unescape($topurls[$i]); |
my $name = &Apache::lonnet::unescape($topnames[$i]); |
my $name = &unescape($topnames[$i]); |
push @imports, $name, $url; |
push(@imports, [$name, $url]); |
} |
} |
} elsif ($toplevel eq 'newfolder') { |
} elsif ($toplevel eq 'newfolder') { |
my $url = &Apache::lonnet::unescape("/uploaded/$cdom/$crs/$timenow/sequences/Top.sequence"); |
my $url = &unescape("/uploaded/$cdom/$crs/$timenow/sequences/Top.sequence"); |
my $name = &Apache::lonnet::unescape("$ENV{'form.foldername'}"); |
my $name = &unescape("$env{'form.foldername'}"); |
push @imports, $name, $url; |
push(@imports, [$name, $url]); |
} |
} |
my $errtext=''; |
my $errtext=''; |
my $fatal=0; |
my $fatal=0; |
($errtext,$fatal)= &Apache::londocs::mapread($crs,$cdom,$folder.'.sequence'); |
($errtext,$fatal)= &Apache::londocs::mapread($crs,$cdom,$folder.'.sequence'); |
if ($#Apache::lonratedt::order<1) { |
if ($#LONCAPA::map::order<1) { |
$Apache::lonratedt::order[0]=1; |
$LONCAPA::map::order[0]=1; |
$Apache::lonratedt::resources[1]=''; |
$LONCAPA::map::resources[1]=''; |
} |
} |
my ($errtext,$fatal)=&Apache::londocs::group_import($crs,$cdom,$folder,'sequence','imsimport',@imports); |
my ($errtext,$fatal)=&Apache::londocs::group_import($crs,$cdom,$folder,'sequence','imsimport',@imports); |
if ($fatal) { |
if ($fatal) { |
print STDERR "Fatal error during group_import\n"; |
&Apache::lonnet::logthis("Fatal error during group_import."); |
} |
} |
} |
} |
if ($tempdir =~ m/^\/home\/httpd\/perl\/tmp\/$crs\/\d{10}/) { |
if ($tempdir =~ m/^\/home\/httpd\/perl\/tmp\/$crs\/\d{10}/) { |
Line 669 sub display_three {
|
Line 619 sub display_three {
|
</td> |
</td> |
</tr> |
</tr> |
<tr bgcolor='#CCCCFF'> |
<tr bgcolor='#CCCCFF'> |
<td valign='middle'><img src='/res/adm/pages/bl_step5.gif'> |
<td valign="middle"><img src="/res/adm/pages/bl_step5.gif" alt="5" /> |
</td> |
</td> |
<td width='100%' align='left'> |
<td width='100%' align='left'> |
<font face='arial,helvetica,sans-serif'><b>Your import is complete</b></font> |
<font face='arial,helvetica,sans-serif'><b>Your import is complete</b></font> |
Line 687 ENDBLOCK
|
Line 637 ENDBLOCK
|
<input type="hidden" name="orgurl" value="/adm/coursedocs" /> |
<input type="hidden" name="orgurl" value="/adm/coursedocs" /> |
<input type="hidden" name="selectrole" value="1" /> |
<input type="hidden" name="selectrole" value="1" /> |
<h3><font color="red">Changes will become active for your current session after |
<h3><font color="red">Changes will become active for your current session after |
<input type="hidden" name="$ENV{'request.role'}" value="1" /> |
<input type="hidden" name="$env{'request.role'}" value="1" /> |
<input type="button" value="|; |
<input type="button" value="|; |
$initblock .= &mt('re-initializing course'); |
$initblock .= &mt('re-initializing course'); |
$initblock .= qq|" onClick="javascript:init(this.form)"/>|; |
$initblock .= qq|" onClick="javascript:init(this.form)" />|; |
$initblock .= ', '.&mt('or the next time you log in.'); |
$initblock .= ', '.&mt('or the next time you log in.'); |
$initblock .= qq|</font></h3></form>|; |
$initblock .= qq|</font></h3></form>|; |
$r->print($initblock); |
$r->print($initblock); |