version 1.442, 2010/12/07 01:15:39
|
version 1.457, 2011/08/15 16:31:55
|
Line 280 sub exportcourse {
|
Line 280 sub exportcourse {
|
my %discussiontime = &Apache::lonnet::dump('discussiontimes', |
my %discussiontime = &Apache::lonnet::dump('discussiontimes', |
$env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); |
$env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); |
my $numdisc = keys(%discussiontime); |
my $numdisc = keys(%discussiontime); |
|
my $numprobs = 0; |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
if (!defined($navmap)) { |
if (!defined($navmap)) { |
$r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package'). |
$r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package'). |
Line 310 sub exportcourse {
|
Line 311 sub exportcourse {
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['archive','discussion']); |
['archive','discussion']); |
|
|
|
my $format = $env{'form.format'}; |
my @exportitems = &Apache::loncommon::get_env_multiple('form.archive'); |
my @exportitems = &Apache::loncommon::get_env_multiple('form.archive'); |
my @discussions = &Apache::loncommon::get_env_multiple('form.discussion'); |
my @discussions = &Apache::loncommon::get_env_multiple('form.discussion'); |
if (@exportitems == 0 && @discussions == 0) { |
if (@exportitems == 0 && @discussions == 0) { |
Line 331 sub exportcourse {
|
Line 333 sub exportcourse {
|
my $imsresources; |
my $imsresources; |
my $tempexport; |
my $tempexport; |
my $copyresult; |
my $copyresult; |
my $ims_manifest = &create_ims_store($now,\$manifestok,\$outcome,\$tempexport); |
my $testbank; |
|
my $ims_manifest = &create_ims_store($now,\$manifestok,\$outcome,\$tempexport,$format,\$testbank); |
if ($manifestok) { |
if ($manifestok) { |
&build_package($now,$navmap,\@exportitems,\@discussions,\$outcome,$tempexport,\$copyresult,$ims_manifest); |
&build_package($now,$navmap,\@exportitems,\@discussions,\$outcome,$tempexport,\$copyresult,$ims_manifest,$format,$testbank); |
close($ims_manifest); |
close($ims_manifest); |
|
|
#Create zip file in prtspool |
#Create zip file in prtspool |
Line 435 sub exportcourse {
|
Line 438 sub exportcourse {
|
if (($curRes->is_sequence()) || ($curRes->is_page())) { |
if (($curRes->is_sequence()) || ($curRes->is_page())) { |
$lastcontainer = $currelem; |
$lastcontainer = $currelem; |
$display .= 'onclick="javascript:propagateCheck('."'$currelem'".')"'; |
$display .= 'onclick="javascript:propagateCheck('."'$currelem'".')"'; |
|
} elsif ($curRes->is_problem()) { |
|
$numprobs ++; |
} |
} |
$display .= ' />'."\n"; |
$display .= ' />'."\n"; |
for (my $i=0; $i<$depth; $i++) { |
for (my $i=0; $i<$depth; $i++) { |
Line 519 function containerCheck(item) {
|
Line 524 function containerCheck(item) {
|
$r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package', |
$r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package', |
$scripttag)); |
$scripttag)); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('IMS Export')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('IMS Export')); |
|
if ($numprobs > 0) { |
|
$display .= '<p><span class="LC_nobreak">'. |
|
&mt('Export format for LON-CAPA problems:'). |
|
'<label><input type="radio" name="format" value="xml" checked="checked" />'. |
|
' '.&mt('XML').'</label>'.(' ' x3). |
|
'<label><input type="radio" name="format" value="html" />'. |
|
' '.&mt('HTML').'</label>'.(' ' x3). |
|
'<label><input type="radio" name="format" value="plaintext" />'. |
|
' '.&mt('Text').'</label></span></p>'; |
|
} |
$r->print($display. |
$r->print($display. |
'<p><input type="hidden" name="finishexport" value="1" />'. |
'<p><input type="hidden" name="finishexport" value="1" />'. |
'<input type="submit" name="exportcourse" value="'. |
'<input type="submit" name="exportcourse" value="'. |
Line 527 function containerCheck(item) {
|
Line 542 function containerCheck(item) {
|
} |
} |
|
|
sub create_ims_store { |
sub create_ims_store { |
my ($now,$manifestok,$outcome,$tempexport) = @_; |
my ($now,$manifestok,$outcome,$tempexport,$format,$testbank) = @_; |
$$tempexport = $Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/ims_exports'; |
$$tempexport = $Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/ims_exports'; |
my $ims_manifest; |
my $ims_manifest; |
if (!-e $$tempexport) { |
if (!-e $$tempexport) { |
Line 571 sub create_ims_store {
|
Line 586 sub create_ims_store {
|
' <organizations default="ORG-'.$env{'request.course.id'}.'-'.$now.'">'."\n". |
' <organizations default="ORG-'.$env{'request.course.id'}.'-'.$now.'">'."\n". |
' <organization identifier="ORG-'.$env{'request.course.id'}.'-'.$now.'"'. |
' <organization identifier="ORG-'.$env{'request.course.id'}.'-'.$now.'"'. |
' structure="hierarchical">'."\n". |
' structure="hierarchical">'."\n". |
' <title>'.$env{'course.'.$env{'request.course.id'}.'.description'}.'</title>' |
' <title>'.$env{'course.'.$env{'request.course.id'}.'.description'}.'</title>'; |
|
if ($format eq 'plaintext') { |
|
my $testbankfilename = $$tempexport.'/testbank.txt'; |
|
$$testbank = Apache::File->new('>'.$testbankfilename); |
|
} |
} else { |
} else { |
$$outcome .= 'An error occurred opening the IMS manifest file.<br />' |
$$outcome .= 'An error occurred opening the IMS manifest file.<br />' |
; |
; |
Line 580 sub create_ims_store {
|
Line 599 sub create_ims_store {
|
} |
} |
|
|
sub build_package { |
sub build_package { |
my ($now,$navmap,$exportitems,$discussions,$outcome,$tempexport,$copyresult,$ims_manifest) = @_; |
my ($now,$navmap,$exportitems,$discussions,$outcome,$tempexport,$copyresult, |
|
$ims_manifest,$format,$testbank) = @_; |
# first iterator to look for dependencies |
# first iterator to look for dependencies |
my $it = $navmap->getIterator(undef,undef,undef,1,undef,undef); |
my $it = $navmap->getIterator(undef,undef,undef,1,undef,undef); |
my $curRes; |
my $curRes; |
Line 619 sub build_package {
|
Line 639 sub build_package {
|
$count = 0; |
$count = 0; |
my $imsresources; |
my $imsresources; |
my $pkgdepth; |
my $pkgdepth; |
|
my $currdirpath = 'Top'; |
while ($curRes = $it->next()) { |
while ($curRes = $it->next()) { |
if ($curRes == $it->BEGIN_MAP()) { |
if ($curRes == $it->BEGIN_MAP()) { |
$prevdepth = $depth; |
$prevdepth = $depth; |
Line 656 sub build_package {
|
Line 677 sub build_package {
|
'<title>'.$curRes->title().'</title>'; |
'<title>'.$curRes->title().'</title>'; |
print $ims_manifest "\n".$itementry; |
print $ims_manifest "\n".$itementry; |
|
|
unless ($curRes->is_sequence()) { |
if ($curRes->is_sequence()) { |
|
$currdirpath = 'Top'; |
|
my $pcslist = $curRes->map_hierarchy(); |
|
if ($pcslist ne '') { |
|
foreach my $pc (split(/,/,$pcslist),$curRes->map_pc()) { |
|
next if ($pc <= 1); |
|
my $res = $navmap->getByMapPc($pc); |
|
if (ref($res)) { |
|
my $encloser = $res->title(); |
|
if ($encloser) { |
|
if ($currdirpath) { |
|
$currdirpath .= ' -> '; |
|
} |
|
$currdirpath .= $encloser; |
|
} |
|
} |
|
} |
|
} |
|
} else { |
my $content_file; |
my $content_file; |
my @hrefs = (); |
my @hrefs = (); |
&process_content($count,$curRes,$cdom,$cnum,$symb,\$content_file,\@hrefs,$copyresult,$tempexport); |
&process_content($count,$curRes,$cdom,$cnum,$symb,\$content_file,\@hrefs,$copyresult,$tempexport,$format,$currdirpath,$testbank); |
if ($content_file) { |
if ($content_file) { |
$imsresources .= "\n". |
$imsresources .= "\n". |
' <resource identifier="RES-'.$env{'request.course.id'}.'-'.$count. |
' <resource identifier="RES-'.$env{'request.course.id'}.'-'.$count. |
Line 720 sub get_dependencies {
|
Line 759 sub get_dependencies {
|
} |
} |
|
|
sub process_content { |
sub process_content { |
my ($count,$curRes,$cdom,$cnum,$symb,$content_file,$href,$copyresult,$tempexport) = @_; |
my ($count,$curRes,$cdom,$cnum,$symb,$content_file,$href,$copyresult,$tempexport,$format,$currdirpath,$testbank) = @_; |
my $content_type; |
my $content_type; |
my $message; |
my $message; |
my @uploads = (); |
my @uploads = (); |
Line 777 sub process_content {
|
Line 816 sub process_content {
|
$canedit= 1; |
$canedit= 1; |
} |
} |
# only include problem code where current user is author |
# only include problem code where current user is author |
if ($canedit) { |
if (($format eq 'html') || ($format eq 'plaintext')) { |
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'resource'); |
my $title = $curRes->title; |
} else { |
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,$format,$currdirpath,$title,$testbank); |
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'noedit'); |
} elsif ($format eq 'xml') { |
|
if ($canedit) { |
|
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'resource'); |
|
} else { |
|
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'noedit'); |
|
} |
} |
} |
} elsif ($symb =~ m-uploaded/$cdom/$cnum-) { |
} elsif ($symb =~ m-uploaded/$cdom/$cnum-) { |
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'uploaded'); |
$$content_file = &replicate_content($cdom,$cnum,$tempexport,$symb,$count,\$message,$href,'uploaded'); |
Line 800 sub process_content {
|
Line 844 sub process_content {
|
} |
} |
|
|
sub replicate_content { |
sub replicate_content { |
my ($cdom,$cnum,$tempexport,$symb,$count,$message,$href,$caller) = @_; |
my ($cdom,$cnum,$tempexport,$symb,$count,$message,$href,$caller,$currdirpath, |
|
$title,$testbank) = @_; |
my ($map,$ind,$url); |
my ($map,$ind,$url); |
if ($caller eq 'templateupload') { |
if ($caller eq 'templateupload') { |
$url = $symb; |
$url = $symb; |
Line 844 sub replicate_content {
|
Line 889 sub replicate_content {
|
} else { |
} else { |
$$message = 'Could not render '.$url.' server message - '.$rtncode."<br />\n"; |
$$message = 'Could not render '.$url.' server message - '.$rtncode."<br />\n"; |
} |
} |
} elsif ($caller eq 'noedit') { |
} elsif (($caller eq 'noedit') || ($caller eq 'html') || |
|
($caller eq 'plaintext')) { |
# Need to render the resource without the LON-CAPA Internal header and the Post discussion footer, and then set $content equal to this. |
# Need to render the resource without the LON-CAPA Internal header and the Post discussion footer, and then set $content equal to this. |
|
my %form = ( |
|
grade_symb => $symb, |
|
grade_courseid => $cdom.'_'.$cnum, |
|
grade_domain => $env{'user.domain'}, |
|
grade_username => $env{'user.name'}, |
|
grade_imsexport => 1, |
|
instructor_comments => 'hide', |
|
); |
|
my $feedurl=&Apache::lonnet::clutter($url); |
|
my ($userview,$response)=&Apache::lonnet::ssi_body($feedurl,%form); |
|
if (ref($response)) { |
|
if ($response->is_success) { |
|
$content = $userview; |
|
$content =~ s/\Qonchange="javascript:setSubmittedPart('\E[^\']+\Q');"\E//g; |
|
$content =~ s/^\s*[\n\r]+$//; |
|
if ($caller eq 'plaintext') { |
|
my @lines = split(/[\n\r]+/,$content); |
|
my @tosave; |
|
my $foilcounter = 0; |
|
my @alphabet = ('a'..'z'); |
|
my $mc_answer; |
|
foreach my $line (@lines) { |
|
next if ($line =~ /^\s*$/); |
|
if ($line =~ m{(|\Q<\label>\E)\Q<br />Incorrect:<label>\E}) { |
|
$foilcounter ++; |
|
} elsif ($line =~ m{(|\Q</label>\E)\Q<br />Correct:<b><label>\E}) { |
|
$foilcounter ++; |
|
$mc_answer = $alphabet[$foilcounter-1]; |
|
} elsif ($line !~ m{\Q</label>\E(|\Q</b>\E)\Q<br />\E}) { |
|
$line =~ s/^(\s+|\s+)$//g; |
|
$line =~ s{^\Q<b>\E([^<]+)\Q</b>\E$}{1}; |
|
$tosave[$foilcounter] .= $line.' '; |
|
} |
|
$content = join("\t",@tosave); |
|
if ($mc_answer) { |
|
$content .= "\t".$mc_answer."\n"; |
|
} |
|
} |
|
if (@tosave) { |
|
my $qtype; |
|
if ($mc_answer) { |
|
$qtype = 'MC'; |
|
} |
|
$content = $currdirpath."\t".$title."\t$qtype\t".join("\t",@tosave); |
|
if ($mc_answer) { |
|
$content .= "\t".$mc_answer; |
|
} |
|
$content .= "\n"; |
|
} |
|
} else { |
|
$content = '<html><body>'.$content.'</body></html>'; |
|
} |
|
if (($caller eq 'plaintext') && ($testbank)) { |
|
print $testbank $content; |
|
} |
|
} else { |
|
$content = 'Not the owner of this resource'; |
|
} |
|
} else { |
|
$content = 'Not the owner of this resource'; |
|
} |
$repstatus = 'ok'; |
$repstatus = 'ok'; |
$content = 'Not the owner of this resource'; |
|
} |
} |
if ($repstatus eq 'ok') { |
if ($repstatus eq 'ok') { |
print $copiedfile $content; |
print $copiedfile $content; |
Line 905 sub extract_media {
|
Line 1011 sub extract_media {
|
$repstatus = 'ok'; |
$repstatus = 'ok'; |
} |
} |
} elsif ($caller eq 'uploaded') { |
} elsif ($caller eq 'uploaded') { |
|
|
$repstatus = &Apache::lonnet::getuploaded('GET',$embed_url,$cdom,$cnum,\$embed_content,$rtncode); |
$repstatus = &Apache::lonnet::getuploaded('GET',$embed_url,$cdom,$cnum,\$embed_content,$rtncode); |
} |
} |
if ($repstatus eq 'ok') { |
if ($repstatus eq 'ok') { |
Line 1150 sub docs_change_log {
|
Line 1255 sub docs_change_log {
|
&Apache::loncommon::restore_course_settings('docs_log', |
&Apache::loncommon::restore_course_settings('docs_log', |
\%saveable_parameters); |
\%saveable_parameters); |
if (!$env{'form.show'}) { $env{'form.show'}=10; } |
if (!$env{'form.show'}) { $env{'form.show'}=10; } |
|
# FIXME: internationalization seems wrong here |
my %lt=('hiddenresource' => 'Resources hidden', |
my %lt=('hiddenresource' => 'Resources hidden', |
'encrypturl' => 'URL hidden', |
'encrypturl' => 'URL hidden', |
'randompick' => 'Randomly pick', |
'randompick' => 'Randomly pick', |
Line 1238 sub docs_change_log {
|
Line 1344 sub docs_change_log {
|
$r->print(&LONCAPA::map::qtescape((split(/\:/,$docslog{$id}{'logentry'}{'parameter_res'}))[0]).':<ul>'); |
$r->print(&LONCAPA::map::qtescape((split(/\:/,$docslog{$id}{'logentry'}{'parameter_res'}))[0]).':<ul>'); |
foreach my $parameter ('randompick','hiddenresource','encrypturl','randomorder') { |
foreach my $parameter ('randompick','hiddenresource','encrypturl','randomorder') { |
if ($docslog{$id}{'logentry'}{'parameter_action_'.$parameter}) { |
if ($docslog{$id}{'logentry'}{'parameter_action_'.$parameter}) { |
|
# FIXME: internationalization seems wrong here |
$r->print('<li>'. |
$r->print('<li>'. |
&mt($lt{$parameter}.' '.$lt{$docslog{$id}{'logentry'}{'parameter_action_'.$parameter}}.' [_1]', |
&mt($lt{$parameter}.' '.$lt{$docslog{$id}{'logentry'}{'parameter_action_'.$parameter}}.' [_1]', |
$docslog{$id}{'logentry'}{'parameter_value_'.$parameter}) |
$docslog{$id}{'logentry'}{'parameter_value_'.$parameter}) |
Line 1521 sub editor {
|
Line 1628 sub editor {
|
$LONCAPA::map::resources[$idx]=''; |
$LONCAPA::map::resources[$idx]=''; |
} |
} |
|
|
my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order); |
my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order) = |
if ($allowed) { |
|
($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order) = |
|
&breadcrumbs($allowed,$crstype); |
&breadcrumbs($allowed,$crstype); |
$r->print($breadcrumbtrail); |
$r->print($breadcrumbtrail); |
} else { |
|
|
unless ($allowed) { |
$randompick = -1; |
$randompick = -1; |
} |
} |
|
|
Line 1653 sub editor {
|
Line 1759 sub editor {
|
&Apache::loncommon::end_data_table_count(); |
&Apache::loncommon::end_data_table_count(); |
|
|
if ($shown) { |
if ($shown) { |
$r->print(&Apache::loncommon::start_data_table()); |
$r->print(&Apache::loncommon::start_scrollbox('900px','880px','400px','contentscroll') |
|
.&Apache::loncommon::start_data_table(undef,'contentlist')); |
if ($allowed) { |
if ($allowed) { |
$r->print(&Apache::loncommon::start_data_table_header_row() |
$r->print(&Apache::loncommon::start_data_table_header_row() |
.'<th colspan="2">'.&mt('Move').'</th>' |
.'<th colspan="2">'.&mt('Move').'</th>' |
.'<th>'.&mt('Actions').'</th>' |
.'<th>'.&mt('Actions').'</th>' |
.'<th colspan="2">'.&mt('Document').'</th>'); |
.'<th colspan="2">'.&mt('Document').'</th>'); |
if ($folder !~ /^supplemental/) { |
if ($folder !~ /^supplemental/) { |
$->print('<th colspan="4">'.&mt('Settings').'</th>'); |
$r->print('<th colspan="4">'.&mt('Settings').'</th>'); |
} |
} |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
$r->print(&Apache::loncommon::end_data_table_header_row()); |
} |
} |
$r->print($output |
$r->print($output |
.&Apache::loncommon::end_data_table() |
.&Apache::loncommon::end_data_table() |
|
.&Apache::loncommon::end_scrollbox() |
); |
); |
} else { |
} else { |
$r->print('<p class="LC_info">' |
$r->print('<p class="LC_info">' |
Line 1704 sub process_file_upload {
|
Line 1812 sub process_file_upload {
|
$LONCAPA::map::resources[1]=''; |
$LONCAPA::map::resources[1]=''; |
} |
} |
if ($fatal) { |
if ($fatal) { |
$$upload_output = '<p><span class="LC_error">'.&mt('The uploaded file has not been stored as an error occurred reading the contents of the current folder.').'</span></p>'; |
$$upload_output = '<div class="LC_error" id="uploadfileresult">'.&mt('The uploaded file has not been stored as an error occurred reading the contents of the current folder.').'</div>'; |
return; |
return; |
} |
} |
my $destination = 'docs/'; |
my $destination = 'docs/'; |
Line 1730 sub process_file_upload {
|
Line 1838 sub process_file_upload {
|
} else { |
} else { |
my ($filename) = ($env{'form.uploaddoc.filename'} =~ m{([^/]+)$}); |
my ($filename) = ($env{'form.uploaddoc.filename'} =~ m{([^/]+)$}); |
|
|
$$upload_output = '<p><span class="LC_error">'.&mt('Unable to save file [_1].','<span class="LC_filename">'.$filename.'</span>').'</span></p>'; |
$$upload_output = '<div class="LC_error" id="uploadfileresult">'.&mt('Unable to save file [_1].','<span class="LC_filename">'.$filename.'</span>').'</div>'; |
return; |
return; |
} |
} |
my $ext='false'; |
my $ext='false'; |
Line 1749 sub process_file_upload {
|
Line 1857 sub process_file_upload {
|
($errtext,$fatal)=&storemap($coursenum,$coursedom, |
($errtext,$fatal)=&storemap($coursenum,$coursedom, |
$folder.'.'.$container); |
$folder.'.'.$container); |
if ($fatal) { |
if ($fatal) { |
$$upload_output = '<p><span class="LC_error">'.$errtext.'</span></p>'; |
$$upload_output = '<div class="LC_error" id="uploadfileresult">'.$errtext.'</div>'; |
return; |
return; |
} else { |
} else { |
if ($parseaction eq 'parse' && $mimetype eq 'text/html') { |
if ($parseaction eq 'parse' && $mimetype eq 'text/html') { |
Line 1776 sub process_file_upload {
|
Line 1884 sub process_file_upload {
|
} else { |
} else { |
$$upload_output .= &mt('No embedded items identified').'<br />'; |
$$upload_output .= &mt('No embedded items identified').'<br />'; |
} |
} |
|
$$upload_output = '<div id="uploadfileresult">'.$$upload_output.'</div>'; |
} |
} |
} |
} |
} |
} |
Line 2636 sub startContentScreen {
|
Line 2745 sub startContentScreen {
|
$r->print('<li'.(($mode eq 'navmaps')?' class="active"':'').'><a href="/adm/navmaps"><b> '.&mt('Content Overview').' </b></a></li>'); |
$r->print('<li'.(($mode eq 'navmaps')?' class="active"':'').'><a href="/adm/navmaps"><b> '.&mt('Content Overview').' </b></a></li>'); |
|
|
my $active = ''; |
my $active = ''; |
# does this user have privileges to modify docs |
# does this user have privileges to modify docs? |
my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'}); |
my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'}); |
|
|
my $onclick; |
my $onclick; |
my $href; |
my $href; |
|
|
if ($allowed) { |
if ($allowed) { |
if (($mode eq 'navmaps') || ($mode eq 'tools')) { |
$r->print('<li '.(($mode eq 'docs')?' class="active"':''). |
$href="/adm/coursedocs"; |
' id="tabbededitor"><a href="/adm/coursedocs?forcestandard=1"><b> '.&mt('Content Editor').' </b></a></li>'); |
$onclick=''; |
|
} else { |
|
$href='#'; |
|
$onclick=' onclick="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');"'; |
|
} |
|
$r->print('<li '.(($mode eq 'docs')?' class="active"':'').$onclick. |
|
'><a href="'.$href.'"><b> '.&mt('Content Editor').' </b></a></li>'); |
|
} |
} |
if (($mode eq 'navmaps') || ($mode eq 'tools')) { |
$r->print('<li'.(($mode eq 'coursesearch')?' class="active"':'').'><a href="/adm/searchcourse"><b> '.&mt('Content Search').' </b></a></li>'); |
$href="/adm/coursedocs"; |
$r->print('<li'.(($mode eq 'courseindex')?' class="active"':'').'><a href="/adm/indexcourse"><b> '.&mt('Content Index').' </b></a></li>'); |
$onclick=''; |
$r->print('<li '.(($mode eq 'supdocs')?' class="active"':''). |
} else { |
'><a href="/adm/coursedocs?forcesupplement=1"><b>'.&mt('Supplemental Documents').'</b></a></li>'); |
$href='#'; |
|
$onclick=' onclick="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');"'; |
|
} |
|
|
|
$r->print('<li '.(($mode eq 'supdocs')?' class="active"':'').$onclick. |
|
'><a href="'.$href.'"><b>'.&mt('Supplemental Documents').'</b></a></li>'); |
|
$r->print('</ul>'); |
$r->print('</ul>'); |
$r->print('<div class="LC_Box" style="clear:both;margin:0;">' |
$r->print('<div class="LC_Box" style="clear:both;margin:0;" id="contenteditor">' |
.'<div id="maincoursedoc" style="margin:0 0;padding:0 0;">'); |
.'<div id="maincoursedoc" style="margin:0 0;padding:0 0;">'); |
$r->print('<div class="LC_ContentBox" id="mainCourseDocuments" style="display: block;">'); |
$r->print('<div class="LC_ContentBox" id="mainCourseDocuments" style="display: block;">'); |
} |
} |
Line 2678 sub endContentScreen {
|
Line 2774 sub endContentScreen {
|
$r->print('</div></div></div>'); |
$r->print('</div></div></div>'); |
} |
} |
|
|
|
sub supplemental_base { |
|
return 'supplemental&'.&escape(&mt('Supplemental '.&Apache::loncommon::course_type().' Documents')); |
|
} |
|
|
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
Line 2685 sub handler {
|
Line 2785 sub handler {
|
return OK if $r->header_only; |
return OK if $r->header_only; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
|
|
|
# |
# --------------------------------------------- Initialize help topics for this |
# --------------------------------------------- Initialize help topics for this |
foreach my $topic ('Adding_Course_Doc','Main_Course_Documents', |
foreach my $topic ('Adding_Course_Doc','Main_Course_Documents', |
'Adding_External_Resource','Navigate_Content', |
'Adding_External_Resource','Navigate_Content', |
Line 2730 sub handler {
|
Line 2830 sub handler {
|
&init_breadcrumbs('exportcourse','IMS Export'); |
&init_breadcrumbs('exportcourse','IMS Export'); |
&exportcourse($r); |
&exportcourse($r); |
} else { |
} else { |
# is this a standard course? |
# |
|
# Done catching special calls |
|
# The whole rest is for course and supplemental documents |
|
# Get the parameters that may be needed |
|
# |
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
|
['folderpath','pagepath', |
|
'pagesymb','forcesupplement','forcestandard']); |
|
|
|
# standard=1: this is a "new-style" course with an uploaded map as top level |
|
# standard=2: this is a "old-style" course, and there is nothing we can do |
|
|
my $standard=($env{'request.course.uri'}=~/^\/uploaded\//); |
my $standard=($env{'request.course.uri'}=~/^\/uploaded\//); |
my $forcestandard = 0; |
|
my $forcesupplement; |
# Decide whether this should display supplemental or main content |
|
# supplementalflag=1: show supplemental documents |
|
# supplementalflag=0: show standard documents |
|
|
|
|
|
my $supplementalflag=($env{'form.folderpath'}=~/^supplemental/); |
|
if (($env{'form.folderpath'}=~/^default/) || $env{'form.folderpath'} eq "" || ($env{'form.pagepath'})) { |
|
$supplementalflag=0; |
|
} |
|
if ($env{'form.forcesupplement'}) { $supplementalflag=1; } |
|
if ($env{'form.forcestandard'}) { $supplementalflag=0; } |
|
unless ($allowed) { $supplementalflag=1; } |
|
unless ($standard) { $supplementalflag=1; } |
|
|
my $script=''; |
my $script=''; |
my $showdoc=0; |
my $showdoc=0; |
|
my $addentries = {}; |
my $containertag; |
my $containertag; |
my $uploadtag; |
my $uploadtag; |
|
|
|
# Where do we store these for when we come back? |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
my $stored_folderpath='docs_folderpath'; |
['folderpath','pagepath', |
if ($supplementalflag) { |
'pagesymb']); |
$stored_folderpath='docs_sup_folderpath'; |
|
} |
|
|
# No folderpath, no pagepath, see if we have something stored |
# No folderpath, no pagepath, see if we have something stored |
if ((!$env{'form.folderpath'}) && (!$env{'form.pagepath'})) { |
if ((!$env{'form.folderpath'}) && (!$env{'form.pagepath'})) { |
&Apache::loncommon::restore_course_settings('docs_folderpath', |
&Apache::loncommon::restore_course_settings($stored_folderpath, |
{'folderpath' => 'scalar'}); |
{'folderpath' => 'scalar'}); |
} |
} |
|
|
|
# If we are not allowed to make changes, all we can see are supplemental docs |
if (!$allowed) { |
if (!$allowed) { |
unless($env{'form.folderpath'} =~ /^supplemental/) { |
$env{'form.pagepath'}=''; |
$env{'form.folderpath'} = ''; |
unless ($env{'form.folderpath'} =~ /^supplemental/) { |
|
$env{'form.folderpath'} = &supplemental_base(); |
} |
} |
} |
} |
|
# If we still not have a folderpath, see if we can resurrect at pagepath |
if (!$env{'form.folderpath'} && $allowed) { |
if (!$env{'form.folderpath'} && $allowed) { |
&Apache::loncommon::restore_course_settings('docs_folderpath', |
&Apache::loncommon::restore_course_settings($stored_folderpath, |
{'pagepath' => 'scalar'}); |
{'pagepath' => 'scalar'}); |
} |
} |
if ($env{'form.pagepath'}) { |
# Make the zeroth entry in supplemental docs page paths, so we can get to top level |
$env{'form.folderpath'}=''; |
|
} |
|
if ($env{'form.folderpath'} =~ /^supplemental_\d+/) { |
if ($env{'form.folderpath'} =~ /^supplemental_\d+/) { |
$env{'form.folderpath'} = 'supplemental&'. |
$env{'form.folderpath'} = &supplemental_base() |
&escape(&mt('Supplemental '.$crstype.' Documents')).'&'. |
.'&'. |
$env{'form.folderpath'}; |
$env{'form.folderpath'}; |
} |
} |
&Apache::loncommon::store_course_settings('docs_folderpath', |
# If after all of this, we still don't have any paths, make them |
|
unless (($env{'form.pagepath'}) || ($env{'form.folderpath'})) { |
|
if ($supplementalflag) { |
|
$env{'form.folderpath'}=&supplemental_base(); |
|
} else { |
|
$env{'form.folderpath'}='default'; |
|
} |
|
} |
|
|
|
# Store this |
|
&Apache::loncommon::store_course_settings($stored_folderpath, |
{'pagepath' => 'scalar', |
{'pagepath' => 'scalar', |
'folderpath' => 'scalar'}); |
'folderpath' => 'scalar'}); |
|
|
if ($env{'form.folderpath'}) { |
if ($env{'form.folderpath'}) { |
my (@folderpath)=split('&',$env{'form.folderpath'}); |
my (@folderpath)=split('&',$env{'form.folderpath'}); |
$env{'form.foldername'}=&unescape(pop(@folderpath)); |
$env{'form.foldername'}=&unescape(pop(@folderpath)); |
Line 2802 sub handler {
|
Line 2941 sub handler {
|
if ($showdoc) { # got called in sequence from course |
if ($showdoc) { # got called in sequence from course |
$allowed=0; |
$allowed=0; |
} else { |
} else { |
if (($env{'form.folder'}=~/^(?:group|default)_/) || |
|
($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) { |
|
$forcestandard = 1; |
|
} |
|
$forcesupplement=($env{'form.folder'}=~/^supplemental_/); |
|
|
|
if ($allowed) { |
if ($allowed) { |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']); |
$script=&Apache::lonratedt::editscript('simple'); |
$script=&Apache::lonratedt::editscript('simple'); |
Line 2828 sub handler {
|
Line 2961 sub handler {
|
$iconpath = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL') . "/"); |
$iconpath = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL') . "/"); |
|
|
if ($allowed) { |
if ($allowed) { |
$script .= &editing_js($udom,$uname); |
$script .= &editing_js($udom,$uname). |
|
&resize_contentdiv_js(); |
|
$addentries = { |
|
onload => "javascript:resize_contentdiv('contentscroll');", |
|
onresize => "javascript:resize_contentdiv('contentscroll');", |
|
}; |
} |
} |
# -------------------------------------------------------------------- Body tag |
# -------------------------------------------------------------------- Body tag |
$script = '<script type="text/javascript">'."\n" |
$script = '<script type="text/javascript">'."\n" |
Line 2839 sub handler {
|
Line 2977 sub handler {
|
|
|
# Breadcrumbs |
# Breadcrumbs |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
if ($allowed) { |
unless ($showdoc) { |
&Apache::lonhtmlcommon::add_breadcrumb({ |
&Apache::lonhtmlcommon::add_breadcrumb({ |
href=>"/adm/coursedocs",text=>"$crstype Editor"}); |
href=>"/adm/coursedocs",text=>"$crstype Contents"}); |
|
|
$r->print(&Apache::loncommon::start_page("$crstype Editor", $script, |
$r->print(&Apache::loncommon::start_page("$crstype Contents", $script, |
{'force_register' => $showdoc,}) |
{'force_register' => $showdoc, |
|
'add_entries' => $addentries, |
|
}) |
.&Apache::loncommon::help_open_menu('','',273,'RAT') |
.&Apache::loncommon::help_open_menu('','',273,'RAT') |
.&Apache::lonhtmlcommon::breadcrumbs( |
.&Apache::lonhtmlcommon::breadcrumbs( |
'Editing the Table of Contents for your '.$crstype, |
'Editing the Table of Contents for your '.$crstype, |
'Docs_Adding_Course_Doc') |
'Docs_Adding_Course_Doc') |
); |
); |
} elsif ($showdoc) { |
} else { |
$r->print(&Apache::loncommon::start_page("$crstype documents",undef, |
$r->print(&Apache::loncommon::start_page("$crstype documents",undef, |
{'force_register' => $showdoc,})); |
{'force_register' => $showdoc,})); |
} else { |
|
my $folder=$env{'form.folder'}; |
|
if ($folder eq '' || $folder eq 'supplemental') { |
|
$env{'form.folderpath'} = 'supplemental&'. |
|
&escape(&mt('Supplemental '.$crstype.' Documents')); |
|
} |
|
my ($breadcrumbtrail) = &breadcrumbs($allowed,$crstype); |
|
$r->print(&Apache::loncommon::start_page("Supplemental documents"). |
|
$breadcrumbtrail); |
|
} |
} |
|
|
my %allfiles = (); |
my %allfiles = (); |
Line 2930 sub handler {
|
Line 3061 sub handler {
|
'sipa' => 'Simple Course Page', |
'sipa' => 'Simple Course Page', |
'sipr' => 'Simple Problem', |
'sipr' => 'Simple Problem', |
'drbx' => 'Drop Box', |
'drbx' => 'Drop Box', |
'scuf' => 'Score Upload Form', |
'scuf' => 'External Scores (handgrade, upload, clicker)', |
'bull' => 'Discussion Board', |
'bull' => 'Discussion Board', |
'mypi' => 'My Personal Information Page', |
'mypi' => 'My Personal Information Page', |
'grpo' => 'Group Portfolio', |
'grpo' => 'Group Portfolio', |
Line 2977 CHBO
|
Line 3108 CHBO
|
$checkbox |
$checkbox |
</span> |
</span> |
FUFORM |
FUFORM |
#$list .= Apache::lonhtmlcommon::htmltag('li', $picture.' '.$button->{$picture}, {class => 'LC_menubuttons_inline_text'}); |
$fileuploadform .= &create_form_ul(&Apache::lonhtmlcommon::htmltag('li',$fileuploada,{class => 'LC_menubuttons_inline_text'})).'</form>'; |
#$fileuploadform .= create_form_ul(create_list_elements(@fileuploada)); |
|
$fileuploadform .= create_form_ul(Apache::lonhtmlcommon::htmltag('li',$fileuploada,{class => 'LC_menubuttons_inline_text'})); |
|
$fileuploadform .= (<<FUFORM); |
|
</form> |
|
FUFORM |
|
|
|
my $simpleeditdefaultform=(<<SEDFFORM); |
my $simpleeditdefaultform=(<<SEDFFORM); |
<form action="/adm/coursedocs" method="post" name="simpleeditdefault"> |
<form action="/adm/coursedocs" method="post" name="simpleeditdefault"> |
Line 2993 SEDFFORM
|
Line 3119 SEDFFORM
|
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/res.png" alt="'.$lt{impo}.'" onclick="javascript:groupimport();"/>' => "<a class='LC_menubuttons_link' href='javascript:groupimport();'>$lt{'impo'}</a>$help{'Importing_LON-CAPA_Resource'}" }, |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/res.png" alt="'.$lt{impo}.'" onclick="javascript:groupimport();"/>' => "<a class='LC_menubuttons_link' href='javascript:groupimport();'>$lt{'impo'}</a>$help{'Importing_LON-CAPA_Resource'}" }, |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/wishlist.png" alt="'.$lt{wish}.'" onclick="javascript:open_Wishlist_Import();" />' => "<a class='LC_menubuttons_link' href='javascript:open_Wishlist_Import();'>$lt{'wish'}</a>" }, |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/wishlist.png" alt="'.$lt{wish}.'" onclick="javascript:open_Wishlist_Import();" />' => "<a class='LC_menubuttons_link' href='javascript:open_Wishlist_Import();'>$lt{'wish'}</a>" }, |
); |
); |
$simpleeditdefaultform .= create_form_ul(create_list_elements(@simpleeditdefaultforma)); |
$simpleeditdefaultform .= &create_form_ul(&create_list_elements(@simpleeditdefaultforma)); |
$simpleeditdefaultform .=(<<SEDFFORM); |
$simpleeditdefaultform .=(<<SEDFFORM); |
<hr /> |
<hr /> |
<p> |
|
$lt{'copm'}<br /> |
$lt{'copm'}<br /> |
<input type="text" size="40" name="importmap" /><br /> |
<input type="text" size="40" name="importmap" /><br /> |
<span class="LC_nobreak"><input type="button" |
<span class="LC_nobreak"><input type="button" |
onclick="javascript:openbrowser('simpleeditdefault','importmap','sequence,page','')" |
onclick="javascript:openbrowser('simpleeditdefault','importmap','sequence,page','')" |
value="$lt{'selm'}" /> <input type="submit" name="loadmap" value="$lt{'load'}" /> |
value="$lt{'selm'}" /> <input type="submit" name="loadmap" value="$lt{'load'}" /> |
$help{'Load_Map'}</span> |
$help{'Load_Map'}</span> |
</p> |
|
</form> |
</form> |
SEDFFORM |
SEDFFORM |
|
|
Line 3041 HIDDENFORM
|
Line 3165 HIDDENFORM
|
} |
} |
|
|
# Generate the tabs |
# Generate the tabs |
&startContentScreen($r,'docs'); |
&startContentScreen($r,($supplementalflag?'supdocs':'docs')); |
|
|
|
|
# |
# |
|
|
my $savefolderpath; |
my $savefolderpath; |
|
|
if ($allowed) { |
if ($allowed) { |
my $folder=$env{'form.folder'}; |
my $folder=$env{'form.folder'}; |
if ($folder eq '' || $folder=~/^supplemental/) { |
if ($folder eq '' || $supplementalflag) { |
$folder='default'; |
$folder='default'; |
$savefolderpath = $env{'form.folderpath'}; |
$savefolderpath = $env{'form.folderpath'}; |
$env{'form.folderpath'}='default&'.&escape(&mt('Content')); |
$env{'form.folderpath'}='default&'.&escape(&mt('Content')); |
Line 3185 NROSTFORM
|
Line 3311 NROSTFORM
|
|
|
my $specialdocumentsform; |
my $specialdocumentsform; |
my @specialdocumentsforma; |
my @specialdocumentsforma; |
|
my $gradingform; |
|
my @gradingforma; |
|
my $communityform; |
|
my @communityforma; |
my $newfolderform; |
my $newfolderform; |
my $newfolderb; |
my $newfolderb; |
|
|
unless ($env{'form.pagepath'}) { |
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
|
|
|
my $newpageform=(<<NPFORM); |
my $newpageform=(<<NPFORM); |
<form action="/adm/coursedocs" method="post" name="newpage"> |
<form action="/adm/coursedocs" method="post" name="newpage"> |
Line 3236 NGFFORM
|
Line 3365 NGFFORM
|
@specialdocumentsforma=( |
@specialdocumentsforma=( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/page.png" alt="'.$lt{newp}.'" onclick="javascript:makenewpage(document.newpage,\''.$pageseq.'\');" />'=>$newpageform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/page.png" alt="'.$lt{newp}.'" onclick="javascript:makenewpage(document.newpage,\''.$pageseq.'\');" />'=>$newpageform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="document.newsyl.submit()" />'=>$newsylform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="document.newsyl.submit()" />'=>$newsylform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/groupportfolio.png" alt="'.$lt{grpo}.'" onclick="document.newgroupfiles.submit()" />'=>$newgroupfileform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/navigation.png" alt="'.$lt{navc}.'" onclick="document.newnav.submit()" />'=>$newnavform}, |
); |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simple.png" alt="'.$lt{sipa}.'" onclick="javascript:makesmppage();" />'=>$newsmppageform}, |
|
); |
|
$specialdocumentsform = &create_form_ul(&create_list_elements(@specialdocumentsforma)); |
|
|
|
|
my @importdoc = ( |
my @importdoc = ( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'newext\');" />'=>$extresourcesform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'newext\');" />'=>$extresourcesform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" onclick="javascript:makeims();" />'=>$imspform},); |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" onclick="javascript:makeims();" />'=>$imspform},); |
$fileuploadform = create_form_ul(create_list_elements(@importdoc)) . '<hr/>' . $fileuploadform; |
$fileuploadform = &create_form_ul(&create_list_elements(@importdoc)) . '<hr/>' . $fileuploadform; |
|
|
push @specialdocumentsforma, ({'<img class="LC_noBorder LC_middle" src="/res/adm/pages/navigation.png" alt="'.$lt{navc}.'" onclick="document.newnav.submit()" />'=>$newnavform}, |
@gradingforma=( |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simple.png" alt="'.$lt{sipa}.'" onclick="javascript:makesmppage();" />'=>$newsmppageform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.$lt{sipr}.'" onclick="javascript:makesmpproblem();" />'=>$newsmpproblemform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.$lt{sipr}.'" onclick="javascript:makesmpproblem();" />'=>$newsmpproblemform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/dropbox.png" alt="'.$lt{drbx}.'" onclick="javascript:makedropbox();" />'=>$newdropboxform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/dropbox.png" alt="'.$lt{drbx}.'" onclick="javascript:makedropbox();" />'=>$newdropboxform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/scoreupfrm.png" alt="'.$lt{scuf}.'" onclick="javascript:makeexamupload();" />'=>$newexuploadform}, |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/scoreupfrm.png" alt="'.$lt{scuf}.'" onclick="javascript:makeexamupload();" />'=>$newexuploadform}, |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/bchat.png" alt="'.$lt{bull}.'" onclick="javascript:makebulboard();" />'=>$newbulform}, |
); |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/myaboutme.png" alt="'.$lt{mypi}.'" onclick="javascript:makebulboard();" />'=>$newaboutmeform}, |
$gradingform = &create_form_ul(&create_list_elements(@gradingforma)); |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/aboutme.png" alt="'.$lt{abou}.'" onclick="javascript:makeabout();" />'=>$newaboutsomeoneform}, |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/clst.png" alt="'.$lt{rost}.'" onclick="document.newroster.submit()" />'=>$newrosterform},); |
@communityforma=( |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/bchat.png" alt="'.$lt{bull}.'" onclick="javascript:makebulboard();" />'=>$newbulform}, |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/myaboutme.png" alt="'.$lt{mypi}.'" onclick="javascript:makebulboard();" />'=>$newaboutmeform}, |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/aboutme.png" alt="'.$lt{abou}.'" onclick="javascript:makeabout();" />'=>$newaboutsomeoneform}, |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/clst.png" alt="'.$lt{rost}.'" onclick="document.newroster.submit()" />'=>$newrosterform}, |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/groupportfolio.png" alt="'.$lt{grpo}.'" onclick="document.newgroupfiles.submit()" />'=>$newgroupfileform}, |
|
); |
|
$communityform = &create_form_ul(&create_list_elements(@communityforma)); |
|
|
$specialdocumentsform = create_form_ul(create_list_elements(@specialdocumentsforma)); |
|
} |
|
|
|
if($env{'form.pagepath'}) { |
|
|
|
@specialdocumentsforma=( |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.&mt('Simple Problem').'" onclick="javascript:makesmpproblem();" />'=>$newsmpproblemform}, |
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/scoreupfrm.png" alt="'.&mt('Score Upload Form').'" onclick="javascript:makeexamupload();" />'=>$newexuploadform} |
|
); |
|
$specialdocumentsform= create_form_ul(create_list_elements(@specialdocumentsforma)); |
|
} |
|
|
|
my @tools = ( |
my @tools = ( |
# {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" />'=>$extresourcesform}, |
# {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" />'=>$extresourcesform}, |
Line 3275 my @tools = (
|
Line 3404 my @tools = (
|
my %orderhash = ( |
my %orderhash = ( |
'aa' => ['Import Documents',$fileuploadform], |
'aa' => ['Import Documents',$fileuploadform], |
'bb' => ['Published Resources',$simpleeditdefaultform], |
'bb' => ['Published Resources',$simpleeditdefaultform], |
'cc' => ['Special Documents',$specialdocumentsform], |
'cc' => ['Grading Resources',$gradingform], |
'dd' => ['Tools', create_form_ul(create_list_elements(@tools)).&generate_admin_options(\%help,\%env)], |
'ff' => ['Tools', &create_form_ul(&create_list_elements(@tools)).&generate_admin_options(\%help,\%env)], |
); |
); |
unless($env{'form.pagepath'}) { |
unless ($env{'form.pagepath'}) { |
$orderhash{'00'} = ['Newfolder',$newfolderform]; |
$orderhash{'00'} = ['Newfolder',$newfolderform]; |
|
$orderhash{'dd'} = ['Community Resources',$communityform]; |
|
$orderhash{'ee'} = ['Special Documents',$specialdocumentsform]; |
} |
} |
|
|
my $tid='1'; |
|
$hadchanges=0; |
$hadchanges=0; |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); |
unless ($supplementalflag) { |
if ($error) { |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
if ($error) { |
} |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
if ($hadchanges) { |
} |
&mark_hash_old(); |
if ($hadchanges) { |
} |
&mark_hash_old(); |
|
} |
|
|
&changewarning($r,''); |
&changewarning($r,''); |
$r->print(&generate_edit_table($tid,\%orderhash)); |
$r->print(&generate_edit_table('1',\%orderhash)); |
|
} |
|
|
$r->print('</div>'); |
|
} |
} |
|
|
|
# Supplemental documents start here |
|
|
my $folder=$env{'form.folder'}; |
my $folder=$env{'form.folder'}; |
unless ($folder=~/^supplemental/) { |
unless ($supplementalflag) { |
$folder='supplemental'; |
$folder='supplemental'; |
} |
} |
if ($folder =~ /^supplemental$/ && |
if ($folder =~ /^supplemental$/ && |
(($env{'form.folderpath'} =~ /^default\&/) || ($env{'form.folderpath'} eq ''))) { |
(($env{'form.folderpath'} =~ /^default\&/) || ($env{'form.folderpath'} eq ''))) { |
$env{'form.folderpath'} = 'supplemental&'. |
$env{'form.folderpath'} = &supplemental_base(); |
&escape(&mt('Supplemental '.$crstype.' Documents')); |
|
} elsif ($allowed) { |
} elsif ($allowed) { |
$env{'form.folderpath'} = $savefolderpath; |
$env{'form.folderpath'} = $savefolderpath; |
} |
} |
Line 3334 $r->print('</div>');
|
Line 3466 $r->print('</div>');
|
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="cmd" value="upload_supplemental" /> |
<input type="hidden" name="cmd" value="upload_supplemental" /> |
SUPDOCFORM |
SUPDOCFORM |
$supupdocform .= create_form_ul(Apache::lonhtmlcommon::htmltag('li',$supupdocformbtn,{class => 'LC_menubuttons_inline_text'}))."</form>"; |
$supupdocform .= &create_form_ul(&Apache::lonhtmlcommon::htmltag('li',$supupdocformbtn,{class => 'LC_menubuttons_inline_text'}))."</form>"; |
|
|
my $supnewfolderform=(<<SNFFORM); |
my $supnewfolderform=(<<SNFFORM); |
<form action="/adm/coursedocs" method="post" name="supnewfolder"> |
<form action="/adm/coursedocs" method="post" name="supnewfolder"> |
Line 3389 my @supimportdoc = (
|
Line 3521 my @supimportdoc = (
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'supnewext\');" />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'supnewext\');" />' |
=>$supnewextform}, |
=>$supnewextform}, |
); |
); |
$supupdocform = create_form_ul(create_list_elements(@supimportdoc)) . '<hr/>' . $supupdocform; |
$supupdocform = &create_form_ul(&create_list_elements(@supimportdoc)) . '<hr/>' . $supupdocform; |
my %suporderhash = ( |
my %suporderhash = ( |
'00' => ['Supnewfolder', $supnewfolderform], |
'00' => ['Supnewfolder', $supnewfolderform], |
'ee' => ['Import Documents',$supupdocform], |
'ee' => ['Import Documents',$supupdocform], |
'ff' => ['Special Documents',create_form_ul(create_list_elements(@specialdocs))] |
'ff' => ['Special Documents',&create_form_ul(&create_list_elements(@specialdocs))] |
); |
); |
|
if ($supplementalflag) { |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); |
if ($error) { |
if ($error) { |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
|
} |
|
$r->print(&generate_edit_table('2',\%suporderhash)); |
} |
} |
my $tid='2'; |
} elsif ($supplementalflag) { |
$r->print(&generate_edit_table($tid,\%suporderhash)); |
|
} else { |
|
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); |
if ($error) { |
if ($error) { |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
Line 3500 sub generate_admin_options {
|
Line 3632 sub generate_admin_options {
|
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/document-properties.png" alt="'.$lt{sl}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "docslog", "'.$lt{'sl'}.'")\' />' |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/document-properties.png" alt="'.$lt{sl}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "docslog", "'.$lt{'sl'}.'")\' />' |
=>"<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"docslog\", \"$lt{'sl'}\")'>$lt{'sl'}</a>"}, |
=>"<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"docslog\", \"$lt{'sl'}\")'>$lt{'sl'}</a>"}, |
); |
); |
return '<form action="/adm/coursedocs" method="post" name="courseverify"><input type="hidden" id="dummy" />'.create_form_ul(create_list_elements(@list)).'</form>'; |
return '<form action="/adm/coursedocs" method="post" name="courseverify"><input type="hidden" id="dummy" />'.&create_form_ul(&create_list_elements(@list)).'</form>'; |
|
|
} |
} |
|
|
Line 3559 sub editing_js {
|
Line 3691 sub editing_js {
|
t_mnf => 'New Folder', |
t_mnf => 'New Folder', |
p_mnp => 'Name of New Page', |
p_mnp => 'Name of New Page', |
t_mnp => 'New Page', |
t_mnp => 'New Page', |
p_mxu => 'Title for the Uploaded Score', |
p_mxu => 'Title for the External Score', |
p_msp => 'Name of Simple Course Page', |
p_msp => 'Name of Simple Course Page', |
p_msb => 'Title for the Problem', |
p_msb => 'Title for the Problem', |
p_mdb => 'Title for the Drop Box', |
p_mdb => 'Title for the Drop Box', |
Line 3588 sub editing_js {
|
Line 3720 sub editing_js {
|
} |
} |
} |
} |
my $toplevelmain = 'default&Main%20'.$crstype.'%20Documents'; |
my $toplevelmain = 'default&Main%20'.$crstype.'%20Documents'; |
my $toplevelsupp = 'supplemental&Supplemental%20'.$crstype.'%20Documents'; |
my $toplevelsupp = &supplemental_base(); |
|
|
return <<ENDNEWSCRIPT; |
return <<ENDNEWSCRIPT; |
function makenewfolder(targetform,folderseq) { |
function makenewfolder(targetform,folderseq) { |
Line 3818 function showPage(current, pageId, nav,
|
Line 3950 function showPage(current, pageId, nav,
|
current.className = 'active'; |
current.className = 'active'; |
currentData = document.getElementById(pageId); |
currentData = document.getElementById(pageId); |
currentData.style.display = 'block'; |
currentData.style.display = 'block'; |
|
resize_contentdiv('contentscroll'); |
if (nav == 'mainnav') { |
if (nav == 'mainnav') { |
var storedpath = "$docs_folderpath"; |
var storedpath = "$docs_folderpath"; |
if (storedpath == '') { |
if (storedpath == '') { |
Line 3864 function injectData(current, hiddenField
|
Line 3997 function injectData(current, hiddenField
|
|
|
ENDNEWSCRIPT |
ENDNEWSCRIPT |
} |
} |
|
|
|
sub resize_contentdiv_js { |
|
my $viewport_js = &Apache::loncommon::viewport_geometry_js(); |
|
return <<ENDRESIZESCRIPT; |
|
|
|
$viewport_js |
|
|
|
function resize_contentdiv(scrollboxid) { |
|
if (document.getElementById("contenteditor") == null) { |
|
return; |
|
} |
|
init_geometry(); |
|
var vph = Geometry.getViewportHeight(); |
|
|
|
var primaryheight = document.getElementById("LC_nav_bar").offsetHeight; |
|
var secondaryheight = document.getElementById("LC_secondary_menu").offsetHeight; |
|
var crumbsheight = document.getElementById("LC_breadcrumbs").offsetHeight; |
|
var dccidheight = document.getElementById("dccid").offsetHeight; |
|
|
|
var uploadresultheight = 0; |
|
if (document.getElementById("uploadfileresult") != null) { |
|
uploadresultheight = document.getElementById("uploadfileresult").offsetHeight; |
|
} |
|
var tabbedheight = document.getElementById("tabbededitor").offsetHeight; |
|
var contenteditorheight = document.getElementById("contenteditor").offsetHeight; |
|
if (document.getElementById(scrollboxid) != null) { |
|
var scrollbox = document.getElementById(scrollboxid); |
|
var scrollboxheight = scrollbox.offsetHeight; |
|
var scrollboxscrollheight = scrollbox.scrollHeight; |
|
|
|
var freespace = vph-(primaryheight+secondaryheight+crumbsheight+dccidheight+uploadresultheight+tabbedheight+contenteditorheight); |
|
|
|
var minscrollbox = 60; |
|
var offset = 20; |
|
var newscrollboxheight; |
|
if (freespace < 0) { |
|
newscrollboxheight = scrollboxheight+freespace-offset; |
|
if (newscrollboxheight < minscrollbox) { |
|
newscrollboxheight = minscrollbox; |
|
} |
|
scrollbox.style.height = newscrollboxheight + "px"; |
|
} else { |
|
if (scrollboxscrollheight > scrollboxheight) { |
|
if (freespace > offset) { |
|
newscrollboxheight = scrollboxheight+freespace-offset; |
|
if (newscrollboxheight < minscrollbox) { |
|
newscrollboxheight = minscrollbox; |
|
} |
|
scrollbox.style.height = newscrollboxheight+"px"; |
|
} |
|
} |
|
} |
|
scrollboxheight = scrollbox.offsetHeight; |
|
|
|
if (scrollboxscrollheight <= scrollboxheight) { |
|
var contentlistheight = document.getElementById("contentlist").offsetHeight; |
|
if ((contentlistheight+offset)<scrollboxheight) { |
|
newscrollheight = contentlistheight; |
|
scrollbox.style.height = newscrollheight+"px"; |
|
} |
|
} |
|
} |
|
} |
|
|
|
ENDRESIZESCRIPT |
|
return; |
|
} |
|
|
1; |
1; |
__END__ |
__END__ |
|
|