version 1.35, 2011/10/24 22:02:38
|
version 1.36, 2011/11/03 17:54:53
|
Line 43 use LONCAPA;
|
Line 43 use LONCAPA;
|
|
|
# ---------------------------------------------------------------- Jscript One |
# ---------------------------------------------------------------- Jscript One |
sub jscript_one { |
sub jscript_one { |
my ($fullpath,$jsref,$formname) = @_; |
my ($fullpath,$formname) = @_; |
|
|
my %body_layout = ('rightmargin' => "0", |
my %body_layout = ('rightmargin' => "0", |
'leftmargin' => "0", |
'leftmargin' => "0", |
Line 66 sub jscript_one {
|
Line 66 sub jscript_one {
|
nndi => 'Enter the name of the new directory where you will store the contents of your IMS package.', |
nndi => 'Enter the name of the new directory where you will store the contents of your IMS package.', |
go => 'Go', |
go => 'Go', |
); |
); |
$$jsref = <<"END_OF_ONE"; |
return <<"END_OF_ONE"; |
function verify() { |
function verify() { |
if ((document.forms.$formname.newdir.value == '') || (!document.forms.$formname.newdir.value)) { |
if ((document.forms.$formname.newdir.value == '') || (!document.forms.$formname.newdir.value)) { |
alert('$lt{'ddir'}') |
alert('$lt{'ddir'}') |
Line 115 END_OF_ONE
|
Line 115 END_OF_ONE
|
|
|
# ---------------------------------------------------------------- Jscript Two |
# ---------------------------------------------------------------- Jscript Two |
sub jscript_two { |
sub jscript_two { |
my ($javascript,$user,$dom,$numcrs) = @_; |
my ($user,$dom,$numcrs) = @_; |
my %crsentry = (); |
my %crsentry = (); |
my $course_list; |
my $course_list; |
my $title_list; |
my $title_list; |
Line 134 sub jscript_two {
|
Line 134 sub jscript_two {
|
$course_list = '"'.join('","',@crslist).'"'; |
$course_list = '"'.join('","',@crslist).'"'; |
$$numcrs = @crslist; |
$$numcrs = @crslist; |
|
|
$$javascript = qq# |
return <<"END_OF_TWO"; |
|
|
function checkCourse() { |
function checkCourse() { |
courseID_array = new Array($course_list) |
courseID_array = new Array($course_list) |
Line 280 function nextPage(caller) {
|
Line 280 function nextPage(caller) {
|
} |
} |
} |
} |
|
|
#; |
END_OF_TWO |
|
|
} |
} |
|
|
# ---------------------------------------------------------------- Jscript Three |
|
sub jscript_three { |
|
my $javascript = shift; |
|
} |
|
|
|
# ---------------------------------------------------------------- Display One |
# ---------------------------------------------------------------- Display One |
sub display_one { |
sub display_one { |
my ($r,$uname,$fn,$fullpath,$formname) = @_; |
my ($r,$fn,$fullpath,$formname) = @_; |
$r->print('<form name="'.$formname.'" method="post">'. |
$r->print('<form name="'.$formname.'" method="post">'. |
&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.').' |
Line 305 sub display_one {
|
Line 300 sub display_one {
|
</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="Create Directory" onClick="javascript:createWin()" /><input type="hidden" name="newdir" value="" /><br /><br /> |
<input type="hidden" name="uploaduname" value="'.$uname.'" /> |
|
<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 315 sub display_one {
|
Line 309 sub display_one {
|
|
|
# ---------------------------------------------------------------- Display Two |
# ---------------------------------------------------------------- Display Two |
sub display_two { |
sub display_two { |
my ($r,$zipupload,$areas,$areaname,$cmsmap,$uname,$newdir,$numcrs,$fullpath) = @_; |
my ($r,$zipupload,$areas,$areaname,$cmsmap,$fn,$numcrs,$fullpath) = @_; |
&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 $dirname = $env{'form.newdir'}; |
my $tempdir = &Apache::imsprocessor::create_tempdir('CSTR',$env{'form.newdir'},''); |
my $tempdir = &Apache::imsprocessor::create_tempdir('CSTR',$dirname,''); |
|
my $fname = &Apache::imsprocessor::uploadzip('CSTR',$tempdir,$zipupload); |
my $fname = &Apache::imsprocessor::uploadzip('CSTR',$tempdir,$zipupload); |
my $unzip_result = ''; |
my $unzip_result = ''; |
my $manifest_result = ''; |
my $manifest_result = ''; |
Line 459 sub display_two {
|
Line 452 sub display_two {
|
<input type="hidden" name="conditions" value="'.$conditions.'" /> |
<input type="hidden" name="conditions" value="'.$conditions.'" /> |
<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="uploaduname" value="'.$uname.'" /> |
<input type="hidden" name="filename" value="'.$fn.'" /> |
<input type="hidden" name="filename" value="'.$fname.'" /> |
|
<input type="hidden" name="phase" value="four" />'."\n"); |
<input type="hidden" name="phase" value="four" />'."\n"); |
if ($count{board} == 0) { |
if ($count{board} == 0) { |
$r->print('<input type="hidden" name="board" value="" />'."\n"); |
$r->print('<input type="hidden" name="board" value="" />'."\n"); |
Line 480 sub display_two {
|
Line 472 sub display_two {
|
|
|
# ---------------------------------------------------------------- Display Three |
# ---------------------------------------------------------------- Display Three |
sub display_three { |
sub display_three { |
my ($r,$uname,$udom,$areas,$areaname,$cmsmap,$destdir,$newdir) = @_; |
my ($r,$uname,$udom,$areas,$areaname,$cmsmap,$destdir,$dirpath) = @_; |
my $crs = ''; |
my $crs = ''; |
my $cdom = ''; |
my $cdom = ''; |
my $db_handling = ''; |
my $db_handling = ''; |
Line 496 sub display_three {
|
Line 488 sub display_three {
|
if ( defined($env{'form.user_crs'}) ) { |
if ( defined($env{'form.user_crs'}) ) { |
($user_cdom,$user_crs) = split/\//,$env{'form.user_crs'}; |
($user_cdom,$user_crs) = split/\//,$env{'form.user_crs'}; |
} |
} |
my $seqstem = "/res/$udom/$uname/$newdir"; |
my $seqstem = "/res/$udom/$uname/$dirpath"; |
my %importareas = (); |
my %importareas = (); |
my %includedres = (); |
my %includedres = (); |
my %includeditems = (); |
my %includeditems = (); |
Line 595 sub display_three {
|
Line 587 sub display_three {
|
|
|
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,$tempdir,\@targets,\%urls,$crs,$cdom,$destdir,$timenow,\@assessmentfiles,\%total); |
|
|
&Apache::imsprocessor::build_structure($cms,'CSTR',$destdir,\%items,\%resinfo,\%resources,\@targets,\%hrefs,$udom,$uname,$newdir,$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>"); |
$r->print("<h3>IMS import completed</h3>"); |
|
|
Line 604 sub display_three {
|
Line 596 sub display_three {
|
} 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"); |
$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"); |
} |
} |
$r->print('<br /><br />'.$lt{'plsv'}.' '.$lt{'tseq'}.'<br /><br />'.$lt{'tfin'}.'<br /><br /><a href="/priv/'.$udom.'/'.$uname.'/'.$newdir.'">'.$lt{'disp'}.'</a>'); |
$r->print('<br /><br />'.$lt{'plsv'}.' '.$lt{'tseq'}.'<br /><br />'.$lt{'tfin'}.'<br /><br /><a href="/priv/'.$udom.'/'.$uname.'/'.$dirpath.'/">'.$lt{'disp'}.'</a>'); |
if ($destdir =~ m-^/home/httpd/html/priv/$udom/$uname/-) { |
my $londocroot = $r->dir_config('lonDocRoot'); |
|
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') { |
Line 669 sub get_ccroles {
|
Line 662 sub get_ccroles {
|
# ---------------------------------------------------------------- Main Handler |
# ---------------------------------------------------------------- Main Handler |
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
my $uname; |
|
my $udom; |
|
my $javascript = ''; |
|
my $page_name = ''; |
|
my $current_page = ''; |
|
my $qcount = ''; |
|
|
|
# get personal information for this user |
my $fn=$env{'form.filename'}; |
my $user=$env{'user.name'}; |
|
my $dom=$env{'user.domain'}; |
|
|
|
# |
if ($env{'form.filename1'}) { |
# re-attach user |
$fn=$env{'form.filename1'}.$env{'form.filename2'}; |
# |
|
if ($env{'form.uploaduname'}) { |
|
$env{'form.filename'}='/priv/'.$dom.'/'.$env{'form.uploaduname'}.'/'. |
|
$env{'form.filename'}; |
|
} |
|
($uname,$udom)= |
|
&Apache::loncacc::constructaccess($env{'form.filename'}, |
|
$r->dir_config('lonDefDomain')); |
|
unless (($uname) && ($udom)) { |
|
$r->log_reason($uname.' at '.$udom. |
|
' trying to publish file '.$env{'form.filename'}. |
|
' - not authorized', |
|
$r->filename); |
|
return HTTP_NOT_ACCEPTABLE; |
|
} |
} |
|
$fn=~s{\+}{}g; |
my $fn; |
|
if ($env{'form.filename'}) { |
unless ($fn) { |
$fn=$env{'form.filename'}; |
|
$fn=~s/^https?\:\/\/[^\/]+\///; |
|
$fn=~s/^\///; |
|
$fn=~s/(priv\/)($LONCAPA::domain_re)\/($LONCAPA::username_re)//; |
|
$fn=~s/\/+/\//g; |
|
} else { |
|
$r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}. |
$r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}. |
' unspecified filename for upload', $r->filename); |
' unspecified filename for upload', $r->filename); |
return HTTP_NOT_FOUND; |
return HTTP_NOT_FOUND; |
} |
} |
my $zipupload = '/home/httpd/html/priv/'.$udom.'/'.$uname.$fn; |
|
my $pathname = &File::Basename::dirname($fn); |
my ($uname,$udom) = &Apache::loncacc::constructaccess($fn); |
my $fullpath = '/priv/'.$udom.'/'.$uname.$pathname; |
if (($uname eq '') || ($udom eq '')) { |
unless ($pathname eq '/') { |
$r->log_reason($uname.' at '.$udom. |
|
' trying to publish file '.$fn.' - not authorized', |
|
$r->filename); |
|
return HTTP_NOT_ACCEPTABLE; |
|
} |
|
|
|
my $londocroot = $r->dir_config('lonDocRoot'); |
|
my $zipupload = $londocroot.$fn; |
|
my $fullpath = &File::Basename::dirname($fn); |
|
unless ($fullpath =~ m{/$}) { |
$fullpath .= '/'; |
$fullpath .= '/'; |
} |
} |
|
|
|
# get personal information for this user |
|
my $user=$env{'user.name'}; |
|
my $dom=$env{'user.domain'}; |
|
|
|
my $javascript = ''; |
|
my $page_name = ''; |
|
my $current_page = ''; |
|
my $qcount = ''; |
my @areas = (); |
my @areas = (); |
my %cmsmap = (); |
my %cmsmap = (); |
my %areaname = (); |
my %areaname = (); |
Line 729 sub handler {
|
Line 711 sub handler {
|
|
|
my $formname_one = 'info'; |
my $formname_one = 'info'; |
if ($env{'form.phase'} eq 'two') { |
if ($env{'form.phase'} eq 'two') { |
&jscript_one($fullpath,\$javascript,$formname_one); |
$javascript = &jscript_one($fullpath,$formname_one); |
} elsif ($env{'form.phase'} eq 'three') { |
} elsif ($env{'form.phase'} eq 'three') { |
&jscript_two(\$javascript,$user,$dom,\$numcrs); |
$javascript = &jscript_two($user,$dom,\$numcrs); |
} elsif ($env{'form.phase'} eq 'four') { |
} |
&jscript_three(\$javascript); |
if ($javascript ne '') { |
|
$javascript = <<"END_JS"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
|
|
$javascript |
|
|
|
// ]]> |
|
</script> |
|
END_JS |
} |
} |
$javascript = "<script type=\"text/javascript\">\n//<!--\n$javascript\n// --></script>\n"; |
|
|
|
my $title = 'Upload IMS package to Construction Space'; |
my $title = 'Upload IMS package to Construction Space'; |
$r->print(&Apache::loncommon::start_page($title, $javascript)); |
$r->print(&Apache::loncommon::start_page($title, $javascript)); |
Line 745 sub handler {
|
Line 735 sub handler {
|
.&mt('Co-Author [_1]',$uname.':'.$udom) |
.&mt('Co-Author [_1]',$uname.':'.$udom) |
.'</span></p>' |
.'</span></p>' |
); |
); |
} |
} |
if ($env{'form.phase'} eq 'two') { |
if ($env{'form.phase'} eq 'two') { |
my $flag = &Apache::lonupload::phasetwo($r,$fn,$uname,$udom,'imsimport'); |
my $flag = &Apache::lonupload::phasetwo($r,$fn,'imsimport'); |
if ($flag eq 'ok') { |
if ($flag eq 'ok') { |
&display_one($r,$uname,$fn,$fullpath,$formname_one); |
&display_one($r,$fn,$fullpath,$formname_one); |
} |
} |
} elsif ( ($env{'form.phase'} eq 'three') || ($env{'form.phase'} eq 'four') ) { |
} elsif ( ($env{'form.phase'} eq 'three') || ($env{'form.phase'} eq 'four') ) { |
my $docroot = $env{'form.newdir'}; |
my $destdir = $env{'form.newdir'}; |
my $newdir = ''; |
my $dirpath = $destdir; |
if ($docroot =~ m|/(.+)$|) { |
$dirpath =~ s{^\Q$londocroot/priv/$udom/$uname/\E}{}; |
$newdir = $1; |
|
} |
|
if ($env{'form.phase'} eq 'three') { |
if ($env{'form.phase'} eq 'three') { |
&display_two ($r,$zipupload,\@areas,\%areaname,\%cmsmap,$uname,$newdir,\$numcrs,$fullpath); |
&display_two($r,$zipupload,\@areas,\%areaname,\%cmsmap,$fn,\$numcrs,$fullpath); |
} elsif ($env{'form.phase'} eq 'four') { |
} elsif ($env{'form.phase'} eq 'four') { |
&display_three ($r,$uname,$udom,\@areas,\%areaname,\%cmsmap,$docroot,$newdir); |
&display_three($r,$uname,$udom,\@areas,\%areaname,\%cmsmap,$destdir,$dirpath); |
} |
} |
} else { |
} else { |
&Apache::lonupload::phaseone($r,$fn,$uname,$udom,'imsimport'); |
&Apache::lonupload::phaseone($r,$fn,'imsimport'); |
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |