version 1.24, 2009/11/06 17:16:53
|
version 1.26, 2009/11/20 14:39:32
|
Line 165 sub handler {
|
Line 165 sub handler {
|
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(&Apache::loncommon::start_page('Import IMS package',undef, |
$r->print(&Apache::loncommon::start_page('Import IMS package',undef, |
{'only_body' => 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.'). |
$r->print( |
&Apache::loncommon::end_page()); |
'<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; |
} |
} |
|
|
Line 183 sub handler {
|
Line 189 sub handler {
|
} |
} |
|
|
$javascript = |
$javascript = |
"<script type=\"text/javascript\">\n". |
"<script type=\"text/javascript\">\n". |
"//<!--\n$javascript\n// --></script>\n"; |
"//<!--\n$javascript\n// --></script>\n"; |
my $start_page = &Apache::loncommon::start_page('Import IMS package', |
my $headline = 'Import IMS package'; |
$javascript, |
my $start_page = &Apache::loncommon::start_page($headline, |
{'only_body' => 1,}); |
$javascript, |
|
{'only_body' => 1,}) |
|
.'<h1>'.&mt($headline).'</h1>'; |
# print screen |
# print screen |
$r->print($start_page); |
$r->print($start_page); |
|
|
Line 261 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 278 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' || $cms eq 'webctce4') { |
.' 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 'angel5') { |
# 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" alt="3" /> |
|
</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</option> |
|
</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</option> |
|
</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> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> <br /><br /></td> |
|
</tr> |
|
<tr bgcolor='#CCCCFF'> |
|
<td valign="middle"><img src="/res/adm/pages/bl_step4.gif" alt="4" /> |
|
</td> |
|
<td width='100%' align='left'> |
|
<font face='arial,helvetica,sans-serif'><b>Choose display options for listing of contents of top level of package</b></font> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> </td> |
|
</tr> |
|
<tr> |
|
<td> </td> |
|
<td> |
|
<table border='0'> |
|
<tr> |
|
<td><font face='arial,helvetica,sans-serif'><label><input type="radio" name="toplevel" value="newfolder" />Display listing of contents in a new folder, with folder name:</label> <input type="text" name="foldername" size="15" value="Type Name Here" /></font></td> |
|
</tr> |
|
<tr> |
|
<td><font face='arial,helvetica,sans-serif'><label><input type="radio" name="toplevel" value="oldfolder" />Append listing of contents of top level of package to contents list for the current folder.</label></font></td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> </td> |
|
</tr> |
|
<tr> |
|
<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> |
|
</tr> |
|
<tr> |
|
<td colspan='2'> |
|
<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" /> |
|
</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='Cancel' onClick="javascript:self.close()" /> |
|
</td> |
|
<td align='right'> |
|
<input type="button" name="nextpage" value="Complete Import" onClick="javascript:nextPage($counter)" /> |
|
</td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
ENDDOCUMENT |
|
} else { |
|
$r->print( |
$r->print( |
'<p class="LC_warning">' |
'<span class="LC_warning">' |
.&mt('Unpacking of your IMS package failed because an IMS manifest file was not located in the package.') |
.&mt('Unsupported IMS format: [_1]',$cms) |
.'</p>' |
.'</span><br />' |
); |
); |
|
# return(); |
|
} |
|
} |
|
|
|
|
|
# Start output: Step 3 and step 4 |
|
|
|
$r->print( |
|
'<form name="pickoptions" method="post">' |
|
.&Apache::lonhtmlcommon::topic_bar( |
|
3,&mt('Choose which content types you wish to import')) |
|
.'<p>' |
|
.&mt('Check the checkboxes for all areas you wish to import from the IMS package:') |
|
.'</p>' |
|
); |
|
|
|
$r->print( |
|
&Apache::loncommon::start_data_table() |
|
.&Apache::loncommon::start_data_table_header_row() |
|
.'<th>'.&mt('Import?').'</th>' |
|
.'<th>'.&mt('Content type').'</th>' |
|
.'<th>'.&mt('Additional options').'</th>' |
|
.&Apache::loncommon::end_data_table_header_row() |
|
); |
|
|
|
# Display import row for each area/content type |
|
foreach my $area (@{$areasref}) { |
|
unless ($count{$area} > 0) { next }; |
|
|
|
my $count_tag = 'flag_'.$counter; |
|
|
|
# Checkbox: Import? |
|
$r->print( |
|
&Apache::loncommon::start_data_table_row() |
|
.'<td><input name="'.$area.'" type="checkbox"' |
|
); |
|
if ($area eq 'board' || $area eq 'users') { |
|
$r->print(qq| onclick='javascript:setOptions("$area","$counter")'|); |
} |
} |
} else { |
|
|
$r->print(' /></td>'); |
|
|
|
# Content Type |
$r->print( |
$r->print( |
'<p class="LC_warning">' |
'<td>' |
.&mt('Processing of your IMS package failed because the file you' |
.$$areaname{$area}.' - ' |
.' uploaded could not be unzipped.') |
.&mt('[quant,_1,item]',$count{$area}) |
.'</p>' |
.'</td>' |
); |
); |
|
|
|
# Additional Options |
|
$r->print('<td>'); |
|
if ($area eq 'board') { |
|
$r->print( |
|
'<select name="db_handling">' |
|
.'<option value="-2"><-- '.&mt('Check Import first').'</option>' |
|
.'</select>' |
|
); |
|
} elsif ($area eq 'users') { |
|
$r->print( |
|
'<select name="user_handling">' |
|
.'<option value="-2"><-- '.&mt('Check Import first').'</option>' |
|
.'</select>' |
|
); |
|
} else { |
|
$r->print( |
|
&mt('None') |
|
.'<input type="hidden" name="'.$count_tag.'" />' |
|
); |
|
} |
|
$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" />' |
|
.&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>'); |
} |
} |
|
|
|
|