version 1.329, 2009/01/28 18:10:04
|
version 1.429, 2010/07/05 12:29:36
|
Line 35 use Apache::Constants qw(:common :http);
|
Line 35 use Apache::Constants qw(:common :http);
|
use Apache::imsexport; |
use Apache::imsexport; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::loncommon; |
use Apache::loncommon; |
|
use Apache::lonhtmlcommon; |
use LONCAPA::map(); |
use LONCAPA::map(); |
use Apache::lonratedt(); |
use Apache::lonratedt(); |
use Apache::lonxml; |
use Apache::lonxml; |
Line 72 sub storemap {
|
Line 73 sub storemap {
|
&LONCAPA::map::storemap('/uploaded/'.$coursedom.'/'.$coursenum.'/'. |
&LONCAPA::map::storemap('/uploaded/'.$coursedom.'/'.$coursenum.'/'. |
$map,1); |
$map,1); |
if ($errtext) { return ($errtext,2); } |
if ($errtext) { return ($errtext,2); } |
|
|
$hadchanges=1; |
$hadchanges=1; |
return ($errtext,0); |
return ($errtext,0); |
} |
} |
Line 116 sub authorhosts {
|
Line 117 sub authorhosts {
|
|
|
sub dumpbutton { |
sub dumpbutton { |
my ($home,$other,%outhash)=&authorhosts(); |
my ($home,$other,%outhash)=&authorhosts(); |
my $type = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
if ($home+$other==0) { return ''; } |
if ($home+$other==0) { return ''; } |
if ($home) { |
if ($home) { |
return '<input type="submit" name="dumpcourse" value="'. |
my $link = |
&mt('Dump '.$type.' DOCS to Construction Space').'" />'. |
"<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"dumpcourse\", \"" |
&Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs'); |
.&mt('Dump '.$crstype.' Documents to Construction Space') |
} else { |
."\")'>" |
return '<div>'. |
.&mt('Dump '.$crstype.' Documents to Construction Space') |
&mt('Dump '.$type. |
.'</a>'; |
' DOCS to Construction Space: available on other servers'). |
return |
'</div>'; |
$link.' ' |
|
.&Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs') |
|
.'<br />'; |
|
} else { |
|
return |
|
&mt('Dump '.$crstype.' Documents to Construction Space: available on other servers'); |
} |
} |
} |
} |
|
|
sub clean { |
sub clean { |
my ($title)=@_; |
my ($title)=@_; |
$title=~s/[^\w\/\!\$\%\^\*\-\_\=\+\;\:\,\\\|\`\~]+/\_/gs; |
$title=~s/[^\w\/\!\$\%\^\*\-\_\=\+\;\:\,\\\|\`\~]+/\_/gs; |
return $title; |
return $title; |
} |
} |
|
|
|
|
|
|
sub dumpcourse { |
sub dumpcourse { |
my ($r) = @_; |
my ($r) = @_; |
my $type = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
$r->print(&Apache::loncommon::start_page('Dump '.$type.' DOCS to Construction Space'). |
$r->print(&Apache::loncommon::start_page('Dump '.$crstype.' Documents to Construction Space'). |
'<form name="dumpdoc" method="post">'); |
'<form name="dumpdoc" action="" method="post">'); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Dump '.$type.' DOCS to Construction Space')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Dump '.$crstype.' Documents to Construction Space')); |
my ($home,$other,%outhash)=&authorhosts(); |
my ($home,$other,%outhash)=&authorhosts(); |
unless ($home) { return ''; } |
unless ($home) { return ''; } |
my $origcrsid=$env{'request.course.id'}; |
my $origcrsid=$env{'request.course.id'}; |
Line 175 sub dumpcourse {
|
Line 181 sub dumpcourse {
|
my $fail=0; |
my $fail=0; |
for (my $i=0;$i<$#dirs;$i++) { |
for (my $i=0;$i<$#dirs;$i++) { |
$makepath.='/'.$dirs[$i]; |
$makepath.='/'.$dirs[$i]; |
unless (-e $makepath) { |
unless (-e $makepath) { |
unless(mkdir($makepath,0777)) { $fail=1; } |
unless(mkdir($makepath,0777)) { $fail=1; } |
} |
} |
} |
} |
$r->print('<br /><tt>'.$item.'</tt> => <tt>'.$newfilename.'</tt>: '); |
$r->print('<br /><tt>'.$item.'</tt> => <tt>'.$newfilename.'</tt>: '); |
Line 254 sub dumpcourse {
|
Line 260 sub dumpcourse {
|
$r->print(&Apache::loncommon::end_data_table()); |
$r->print(&Apache::loncommon::end_data_table()); |
&untiehash(); |
&untiehash(); |
$r->print( |
$r->print( |
'<p><input type="submit" name="dumpcourse" value="'.&mt("Dump $type DOCS").'" /></p></form>'); |
'<p><input type="submit" name="dumpcourse" value="'.&mt("Dump $crstype Documents").'" /></p></form>'); |
} |
} |
} |
} |
|
|
|
|
|
|
sub exportbutton { |
sub exportbutton { |
my $type = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
return '<input type="submit" name="exportcourse" value="'. |
return "<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"exportcourse\", \"".&mt('IMS Export')."\")'>".&mt('IMS Export')."</a>". |
&mt('Export '.$type.' to IMS').'" />'. |
&Apache::loncommon::help_open_topic('Docs_Export_Course_Docs').'<br />'; |
&Apache::loncommon::help_open_topic('Docs_Export_Course_Docs'); |
|
} |
} |
|
|
|
|
|
|
sub exportcourse { |
sub exportcourse { |
my $r=shift; |
my $r=shift; |
my $type = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
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 $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
if (!defined($navmap)) { |
if (!defined($navmap)) { |
$r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package'). |
$r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package'). |
'<h2>IMS Export Failed</h2>'. |
'<h2>'.&mt('IMS Export Failed').'</h2>'. |
'<div class="LC_error">'. |
'<div class="LC_error">'); |
&mt('Unable to retrieve information about course contents'). |
if ($crstype eq 'Community') { |
'</div><a href="/adm/coursedocs">'.&mt('Return to Course Editor').'</a>'); |
$r->print(&mt('Unable to retrieve information about community contents')); |
&Apache::lonnet::logthis('IMS export failed - could not create navmap object in '.lc($type).':'.$env{'request.course.id'}); |
} else { |
|
$r->print(&mt('Unable to retrieve information about course contents')); |
|
} |
|
$r->print('</div><a href="/adm/coursedocs">'); |
|
if ($crstype eq 'Community') { |
|
$r->print(&mt('Return to Community Editor')); |
|
} else { |
|
$r->print(&mt('Return to Course Editor')); |
|
} |
|
$r->print('</a>'); |
|
&Apache::lonnet::logthis('IMS export failed - could not create navmap object in '.lc($crstype).':'.$env{'request.course.id'}); |
return; |
return; |
} |
} |
my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef); |
my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef); |
Line 298 sub exportcourse {
|
Line 313 sub exportcourse {
|
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) { |
$outcome = '<br />As you did not select any content items or discussions for export, an IMS package has not been created. Please <a href="javascript:history.go(-1)">go back</a> to select either content items or discussions for export'; |
$outcome = |
|
'<p class="LC_warning">' |
|
.&mt('As you did not select any content items or discussions' |
|
.' for export, an IMS package has not been created.') |
|
.'</p>' |
|
.'<p>' |
|
.&mt('Please [_1]go back[_2] to select either content items' |
|
.' or discussions for export.' |
|
,'<a href="javascript:history.go(-1)">' |
|
,'</a>') |
|
.'</p>'; |
} else { |
} else { |
my $now = time; |
my $now = time; |
my %symbs; |
my %symbs; |
Line 321 sub exportcourse {
|
Line 346 sub exportcourse {
|
open(OUTPUT, "zip -r $imszip * 2> /dev/null |"); |
open(OUTPUT, "zip -r $imszip * 2> /dev/null |"); |
close(OUTPUT); |
close(OUTPUT); |
chdir $cwd; |
chdir $cwd; |
$outcome .= &mt('Download the zip file from <a href="[_1]">IMS '.lc($type).' archive</a><br />',$imszipfile,); |
$outcome .= '<p>' |
|
.&mt('[_1]Your IMS package[_2] is ready for download.' |
|
,'<a href="'.$imszipfile.'">','</a>') |
|
.'</p>'; |
if ($copyresult) { |
if ($copyresult) { |
$outcome .= &mt('The following errors occurred during export - [_1]',$copyresult); |
$outcome .= '<p class="LC_error">' |
|
.&mt('The following errors occurred during export - [_1]' |
|
,$copyresult) |
|
.'</p>'; |
} |
} |
} else { |
} else { |
$outcome = '<br />'.&mt('Unfortunately you will not be able to retrieve an IMS archive of this posts at this time, because there was a problem creating a manifest file.').'<br />'; |
$outcome = '<p class="LC_error">' |
|
.&mt('Unfortunately you will not be able to retrieve' |
|
.' an IMS archive of your course at this time,' |
|
.' because there was a problem creating a' |
|
.' manifest file.') |
|
.'</p>' |
|
.'<p><a href="javascript:history.go(-1)">' |
|
.&mt('Go Back') |
|
.'</a></p>'; |
} |
} |
} |
} |
$r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package')); |
$r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Export '.lc($type).' to IMS content package')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('IMS Export')); |
$r->print($outcome); |
$r->print($outcome); |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
} else { |
} else { |
my $display; |
my $display='<form name="exportdoc" action="" method="post">'."\n". |
$display = '<form name="exportdoc" method="post">'."\n"; |
'<p>'. |
$display .= &mt('Choose which items you wish to export from your '.$type.'.<br /><br />'); |
&mt('Choose which items you wish to export from your '.$crstype.'.'). |
$display .= '<table border="0" cellspacing="0" cellpadding="3">'. |
'</p>'. |
'<tr><td><fieldset><legend> <b>Content items</b></legend>'. |
'<div class="LC_columnSection"><fieldset>'. |
'<input type="button" value="check all" '. |
'<legend>'.&mt('Content items').'</legend>'. |
|
'<input type="button" value="'.&mt('check all').'" '. |
'onclick="javascript:checkAll(document.exportdoc.archive)" />'. |
'onclick="javascript:checkAll(document.exportdoc.archive)" />'. |
' <input type="button" value="uncheck all"'. |
' <input type="button" value="'.&mt('uncheck all').'"'. |
' onclick="javascript:uncheckAll(document.exportdoc.archive)" /></fieldset></td>'. |
' onclick="javascript:uncheckAll(document.exportdoc.archive)" /></fieldset>'; |
'<td> </td><td> </td>'. |
if ($numdisc > 0) { |
'<td align="right"><fieldset><legend> <b>Discussion posts'. |
$display .= '<fieldset>'. |
'</b></legend><input type="button" value="check all"'. |
'<legend>'.&mt('Discussion posts').'</legend>'. |
' onclick="javascript:checkAll(document.exportdoc.discussion)" />'. |
'<input type="button" value="'.&mt('check all').'"'. |
' <input type="button" value="uncheck all"'. |
' onclick="javascript:checkAll(document.exportdoc.discussion)" />'. |
' onclick="javascript:uncheckAll(document.exportdoc.discussion)" /></fieldset></td>'. |
' <input type="button" value="'.&mt('uncheck all').'"'. |
'</tr></table>'; |
' onclick="javascript:uncheckAll(document.exportdoc.discussion)" />'. |
|
'</fieldset>'; |
|
} |
|
$display .= '</div>'; |
my $curRes; |
my $curRes; |
my $depth = 0; |
my $depth = 0; |
my $count = 0; |
my $count = 0; |
Line 358 sub exportcourse {
|
Line 401 sub exportcourse {
|
my %parent = (); |
my %parent = (); |
my %children = (); |
my %children = (); |
my $lastcontainer = $startcount; |
my $lastcontainer = $startcount; |
my @bgcolors = ('#F6F6F6','#FFFFFF'); |
$display .= &Apache::loncommon::start_data_table() |
$display .= '<table cellspacing="0"><tr>'. |
.&Apache::loncommon::start_data_table_header_row() |
'<td><b>Export content item?<br /></b></td><td> </td><td align="right">'."\n"; |
.'<th>'.&mt('Export content item?').'</th>'; |
if ($numdisc > 0) { |
if ($numdisc > 0) { |
$display.='<b>Export discussion posts?</b>'."\n"; |
$display .= '<th>'.&mt('Export discussion posts?').'</th>'; |
} |
} |
$display.=' </td></tr>'; |
$display .= &Apache::loncommon::end_data_table_header_row(); |
while ($curRes = $it->next()) { |
while ($curRes = $it->next()) { |
if (ref($curRes)) { |
if (ref($curRes)) { |
$count ++; |
$count ++; |
Line 385 sub exportcourse {
|
Line 428 sub exportcourse {
|
$ressymb = 'bulletin___'.$3.'___adm/wrapper/adm/'.$1.'/'.$2.'/'.$3.'/bulletinboard'; |
$ressymb = 'bulletin___'.$3.'___adm/wrapper/adm/'.$1.'/'.$2.'/'.$3.'/bulletinboard'; |
} |
} |
} |
} |
my $color = $count%2; |
my $currelem = $count+$boards+$startcount; |
$display .='<tr bgcolor='.$bgcolors[$color].'><td>'."\n". |
$display .= &Apache::loncommon::start_data_table_row() |
'<input type="checkbox" name="archive" value="'.$count.'" '; |
.'<td>'."\n" |
|
.'<input type="checkbox" name="archive" value="'.$count.'" '; |
if (($curRes->is_sequence()) || ($curRes->is_page())) { |
if (($curRes->is_sequence()) || ($curRes->is_page())) { |
my $checkitem = $count + $boards + $startcount; |
$lastcontainer = $currelem; |
$display .= 'onClick="javascript:propagateCheck('."'$checkitem'".')"'; |
$display .= 'onclick="javascript:propagateCheck('."'$currelem'".')"'; |
} |
} |
$display .= ' />'."\n"; |
$display .= ' />'."\n"; |
for (my $i=0; $i<$depth; $i++) { |
for (my $i=0; $i<$depth; $i++) { |
$display .= '<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" /><img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" />'."\n"; |
$display .= ('<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" alt="" />' x2)."\n"; |
} |
} |
if ($curRes->is_sequence()) { |
if ($curRes->is_sequence()) { |
$display .= '<img src="/adm/lonIcons/navmap.folder.open.gif"> '."\n"; |
$display .= '<img src="/adm/lonIcons/navmap.folder.open.gif" alt="" /> '."\n"; |
$lastcontainer = $count + $startcount + $boards; |
|
} elsif ($curRes->is_page()) { |
} elsif ($curRes->is_page()) { |
$display .= '<img src="/adm/lonIcons/navmap.page.open.gif"> '."\n"; |
$display .= '<img src="/adm/lonIcons/navmap.page.open.gif" alt="" /> '."\n"; |
$lastcontainer = $count + $startcount + $boards; |
|
} |
} |
my $currelem = $count+$boards+$startcount; |
|
$children{$parent{$depth}} .= $currelem.':'; |
$children{$parent{$depth}} .= $currelem.':'; |
$display .= ' '.$curRes->title().'</td>'; |
$display .= ' '.$curRes->title().'</td>'."\n"; |
|
|
|
# Existing discussion posts? |
if ($discussiontime{$ressymb} > 0) { |
if ($discussiontime{$ressymb} > 0) { |
$boards ++; |
$boards ++; |
$currelem = $count+$boards+$startcount; |
$display .= '<td align="right">' |
$display .= '<td> </td><td align="right"><input type="checkbox" name="discussion" value="'.$count.'" /> </td>'."\n"; |
.'<input type="checkbox" name="discussion" value="'.$count.'" />' |
} else { |
.'</td>'."\n"; |
$display .= '<td colspan="2"> </td>'."\n"; |
} elsif ($numdisc > 0) { |
|
$display .= '<td> </td>'."\n"; |
} |
} |
|
$display .= &Apache::loncommon::end_data_table_row(); |
} |
} |
} |
} |
|
$display .= &Apache::loncommon::end_data_table(); |
my $scripttag = qq| |
my $scripttag = qq| |
<script> |
<script type="text/javascript"> |
|
// <![CDATA[ |
function checkAll(field) { |
function checkAll(field) { |
if (field.length > 0) { |
if (field.length > 0) { |
for (i = 0; i < field.length; i++) { |
for (i = 0; i < field.length; i++) { |
Line 427 function checkAll(field) {
|
Line 473 function checkAll(field) {
|
field.checked = true |
field.checked = true |
} |
} |
} |
} |
|
|
function uncheckAll(field) { |
function uncheckAll(field) { |
if (field.length > 0) { |
if (field.length > 0) { |
for (i = 0; i < field.length; i++) { |
for (i = 0; i < field.length; i++) { |
Line 442 function propagateCheck(item) {
|
Line 488 function propagateCheck(item) {
|
if (document.exportdoc.elements[item].checked == true) { |
if (document.exportdoc.elements[item].checked == true) { |
containerCheck(item) |
containerCheck(item) |
} |
} |
} |
} |
|
|
function containerCheck(item) { |
function containerCheck(item) { |
document.exportdoc.elements[item].checked = true |
document.exportdoc.elements[item].checked = true |
Line 465 function containerCheck(item) {
|
Line 511 function containerCheck(item) {
|
for (var j=0; j<parents[item].length; j++) { |
for (var j=0; j<parents[item].length; j++) { |
containerCheck(parents[item][j]) |
containerCheck(parents[item][j]) |
} |
} |
} |
} |
} |
} |
|
// ]]> |
</script> |
</script> |
|; |
|; |
$r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package', |
$r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package', |
$scripttag)); |
$scripttag)); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Export '.lc($type).' to IMS content package')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('IMS Export')); |
$r->print($display.'</table>'. |
$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="'. |
&mt('Export '.$type.' DOCS').'" /></p></form>'); |
&mt('Export').'" /></p></form>'); |
} |
} |
} |
} |
|
|
Line 759 sub replicate_content {
|
Line 805 sub replicate_content {
|
if ($caller eq 'templateupload') { |
if ($caller eq 'templateupload') { |
$url = $symb; |
$url = $symb; |
$url =~ s#//#/#g; |
$url =~ s#//#/#g; |
} else { |
} else { |
($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
} |
} |
my $content; |
my $content; |
Line 799 sub replicate_content {
|
Line 845 sub replicate_content {
|
$$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') { |
# 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. |
$repstatus = 'ok'; |
$repstatus = 'ok'; |
$content = 'Not the owner of this resource'; |
$content = 'Not the owner of this resource'; |
} |
} |
if ($repstatus eq 'ok') { |
if ($repstatus eq 'ok') { |
print $copiedfile $content; |
print $copiedfile $content; |
Line 852 sub extract_media {
|
Line 898 sub extract_media {
|
} |
} |
} |
} |
if ($caller eq 'resource') { |
if ($caller eq 'resource') { |
my $respath = $Apache::lonnet::perlvar{'lonDocRoot'}.'/res'; |
my $respath = $Apache::lonnet::perlvar{'lonDocRoot'}.'/res'; |
my $embed_path = &Apache::lonnet::filelocation($respath,$embed_url); |
my $embed_path = &Apache::lonnet::filelocation($respath,$embed_url); |
$embed_content = &Apache::lonnet::getfile($embed_path); |
$embed_content = &Apache::lonnet::getfile($embed_path); |
unless ($embed_content eq -1) { |
unless ($embed_content eq -1) { |
$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 921 sub group_import {
|
Line 967 sub group_import {
|
|
|
while (@files) { |
while (@files) { |
my ($name, $url, $residx) = @{ shift(@files) }; |
my ($name, $url, $residx) = @{ shift(@files) }; |
if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) |
if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) |
&& ($caller eq 'londocs') |
&& ($caller eq 'londocs') |
&& (!&Apache::lonnet::stat_file($url))) { |
&& (!&Apache::lonnet::stat_file($url))) { |
|
|
my $errtext = ''; |
my $errtext = ''; |
my $fatal = 0; |
my $fatal = 0; |
my $newmapstr = '<map>'."\n". |
my $newmapstr = '<map>'."\n". |
Line 944 sub group_import {
|
Line 990 sub group_import {
|
} |
} |
} |
} |
if ($url) { |
if ($url) { |
if (!$residx |
if (!$residx |
|| defined($LONCAPA::map::zombies[$residx])) { |
|| defined($LONCAPA::map::zombies[$residx])) { |
$residx = &LONCAPA::map::getresidx($url,$residx); |
$residx = &LONCAPA::map::getresidx($url,$residx); |
push(@LONCAPA::map::order, $residx); |
push(@LONCAPA::map::order, $residx); |
Line 953 sub group_import {
|
Line 999 sub group_import {
|
if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; } |
if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; } |
$url = &LONCAPA::map::qtunescape($url); |
$url = &LONCAPA::map::qtunescape($url); |
$name = &LONCAPA::map::qtunescape($name); |
$name = &LONCAPA::map::qtunescape($name); |
$LONCAPA::map::resources[$residx] = |
$LONCAPA::map::resources[$residx] = |
join(':', ($name, $url, $ext, 'normal', 'res')); |
join(':', ($name, $url, $ext, 'normal', 'res')); |
} |
} |
} |
} |
Line 961 sub group_import {
|
Line 1007 sub group_import {
|
} |
} |
|
|
sub breadcrumbs { |
sub breadcrumbs { |
my ($where,$allowed,$type)=@_; |
my ($allowed,$crstype)=@_; |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
my (@folders); |
my (@folders); |
if ($env{'form.pagepath'}) { |
if ($env{'form.pagepath'}) { |
Line 976 sub breadcrumbs {
|
Line 1022 sub breadcrumbs {
|
my $isencrypted=0; |
my $isencrypted=0; |
my $ishidden=0; |
my $ishidden=0; |
my $is_random_order=0; |
my $is_random_order=0; |
|
if (!$allowed) { |
|
my $description = $env{'course.'.$env{'request.course.id'}.'.description'}; |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{'href' => '/adm/menu', |
|
'title'=> 'Go to main menu', |
|
'text' => $description, |
|
}); |
|
$plain .= $description.' >'; |
|
} |
while (@folders) { |
while (@folders) { |
my $folder=shift(@folders); |
my $folder=shift(@folders); |
my $foldername=shift(@folders); |
my $foldername=shift(@folders); |
Line 984 sub breadcrumbs {
|
Line 1039 sub breadcrumbs {
|
my $url='/adm/coursedocs?folderpath='. |
my $url='/adm/coursedocs?folderpath='. |
&escape($folderpath); |
&escape($folderpath); |
my $name=&unescape($foldername); |
my $name=&unescape($foldername); |
# randompick number, hidden, encrypted, random order, is appended with ":"s to the foldername |
# randompick number, hidden, encrypted, random order, is appended with ":"s to the foldername |
$name=~s/\:(\d*)\:(\w*)\:(\w*):(\d*)$//; |
$name=~s/\:(\d*)\:(\w*)\:(\w*):(\d*)$//; |
if ($1 ne '') { |
if ($1 ne '') { |
$randompick=$1; |
$randompick=$1; |
} else { |
} else { |
$randompick=-1; |
$randompick=-1; |
Line 995 sub breadcrumbs {
|
Line 1050 sub breadcrumbs {
|
if ($3) { $isencrypted=1; } |
if ($3) { $isencrypted=1; } |
if ($4 ne '') { $is_random_order = 1; } |
if ($4 ne '') { $is_random_order = 1; } |
if ($folder eq 'supplemental') { |
if ($folder eq 'supplemental') { |
if ($allowed) { |
$name = &mt('Supplemental '.$crstype.' Documents'); |
$name = &mt('Supplemental '.$type.' Documents'); |
|
} else { |
|
$name = &mt($type.' Documents'); |
|
} |
|
} |
} |
&Apache::lonhtmlcommon::add_breadcrumb( |
&Apache::lonhtmlcommon::add_breadcrumb( |
{'href'=>$url.$cpinfo, |
{'href'=>$url.$cpinfo, |
'title'=>$name, |
'title'=>$name, |
'text'=>'<font size="+1">'. |
'text'=>$name, |
$name.'</font>', |
|
'no_mt'=>1, |
'no_mt'=>1, |
}); |
}); |
$plain.=$name.' > '; |
$plain.=$name.' > '; |
} |
} |
$plain=~s/\>\;\s*$//; |
$plain=~s/\>\;\s*$//; |
return (&Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp', |
return (&Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp', |
'LC_docs_path'),$randompick,$ishidden,$isencrypted,$plain,$is_random_order); |
undef, undef, 1 ),$randompick,$ishidden,$isencrypted,$plain,$is_random_order); |
} |
} |
|
|
sub log_docs { |
sub log_docs { |
Line 1125 sub docs_change_log {
|
Line 1175 sub docs_change_log {
|
foreach my $key (@changes) { |
foreach my $key (@changes) { |
$wholeentry.=':'.$docslog{$id}{'logentry'}{$key}; |
$wholeentry.=':'.$docslog{$id}{'logentry'}{$key}; |
} |
} |
if ($wholeentry!~/\Q$env{'form.containingphrase'}\E/i) { next; } |
if ($wholeentry!~/\Q$env{'form.containingphrase'}\E/i) { next; } |
} |
} |
my $count = 0; |
my $count = 0; |
my $time = |
my $time = |
Line 1176 sub docs_change_log {
|
Line 1226 sub docs_change_log {
|
if ($oldname ne '' && $oldname ne $newname) { |
if ($oldname ne '' && $oldname ne $newname) { |
$r->print(&LONCAPA::map::qtescape($newname)); |
$r->print(&LONCAPA::map::qtescape($newname)); |
} |
} |
} |
} |
$r->print('<ul>'); |
$r->print('<ul>'); |
for (my $idx=0;$idx<=$docslog{$id}{'logentry'}{'maxidx'};$idx++) { |
for (my $idx=0;$idx<=$docslog{$id}{'logentry'}{'maxidx'};$idx++) { |
if ($docslog{$id}{'logentry'}{'after_order_res_'.$idx}) { |
if ($docslog{$id}{'logentry'}{'after_order_res_'.$idx}) { |
Line 1214 sub update_paste_buffer {
|
Line 1264 sub update_paste_buffer {
|
|
|
my ($errtext,$fatal) = &mapread($coursenum,$coursedom, |
my ($errtext,$fatal) = &mapread($coursenum,$coursedom, |
$env{'form.copyfolder'}); |
$env{'form.copyfolder'}); |
|
|
return if ($fatal); |
return if ($fatal); |
|
|
# Mark for copying |
# Mark for copying |
Line 1223 sub update_paste_buffer {
|
Line 1273 sub update_paste_buffer {
|
&Apache::lonnet::appenv({'docs.markedcopy_supplemental' => $title}); |
&Apache::lonnet::appenv({'docs.markedcopy_supplemental' => $title}); |
($title) = &parse_supplemental_title($title); |
($title) = &parse_supplemental_title($title); |
} elsif ($env{'docs.markedcopy_supplemental'}) { |
} elsif ($env{'docs.markedcopy_supplemental'}) { |
&Apache::lonnet::delenv('docs\\.markedcopy_supplemental'); |
&Apache::lonnet::delenv('docs.markedcopy_supplemental'); |
} |
} |
$url=~s{http(:|:)//https(:|:)//}{https$2//}; |
$url=~s{http(:|:)//https(:|:)//}{https$2//}; |
|
|
Line 1236 sub print_paste_buffer {
|
Line 1286 sub print_paste_buffer {
|
my ($r,$container) = @_; |
my ($r,$container) = @_; |
return if (!defined($env{'docs.markedcopy_url'})); |
return if (!defined($env{'docs.markedcopy_url'})); |
|
|
$r->print(<<ENDPASTE); |
$r->print('<fieldset>' |
<form name="pasteform" action="/adm/coursedocs" method="post"><p> |
.'<legend>'.&mt('Clipboard').'</legend>' |
ENDPASTE |
.'<form name="pasteform" action="/adm/coursedocs" method="post">' |
$r->print('<input type="submit" name="pastemarked" value="'.&mt('Paste').'" /> '); |
.'<input type="submit" name="pastemarked" value="'.&mt('Paste').'" /> ' |
|
); |
|
|
my $type; |
my $type; |
if ($env{'docs.markedcopy_url'} =~ m{^(?:/adm/wrapper/ext|(?:http|https)(?::|:))//} ) { |
if ($env{'docs.markedcopy_url'} =~ m{^(?:/adm/wrapper/ext|(?:http|https)(?::|:))//} ) { |
Line 1253 ENDPASTE
|
Line 1304 ENDPASTE
|
if ($extension eq 'sequence' && |
if ($extension eq 'sequence' && |
$env{'docs.markedcopy_url'} =~ m{/default_\d+\.sequence$ }x) { |
$env{'docs.markedcopy_url'} =~ m{/default_\d+\.sequence$ }x) { |
$icon = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL')); |
$icon = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL')); |
$icon .= '/folder_closed.gif'; |
$icon .= '/navmap.folder.closed.gif'; |
} |
} |
$icon = '<img src="'.$icon.'" alt="" class="LC_icon" />'; |
$icon = '<img src="'.$icon.'" alt="" class="LC_icon" />'; |
$r->print($icon.$type.': '. &parse_supplemental_title(&LONCAPA::map::qtescape($env{'docs.markedcopy_title'}))); |
$r->print($icon.$type.': '. &parse_supplemental_title(&LONCAPA::map::qtescape($env{'docs.markedcopy_title'}))); |
Line 1268 ENDPASTE
|
Line 1319 ENDPASTE
|
<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" /> |
<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" /> |
'); |
'); |
} |
} |
$r->print('</p></form>'); |
$r->print('</form></fieldset>'); |
} |
} |
|
|
sub do_paste_from_buffer { |
sub do_paste_from_buffer { |
Line 1327 sub do_paste_from_buffer {
|
Line 1378 sub do_paste_from_buffer {
|
} |
} |
# published maps can only exists once, so remove it from paste buffer when done |
# published maps can only exists once, so remove it from paste buffer when done |
if (($url=~/\.(page|sequence)$/) && ($url=~m {^/res/})) { |
if (($url=~/\.(page|sequence)$/) && ($url=~m {^/res/})) { |
&Apache::lonnet::delenv('docs\\.markedcopy'); |
&Apache::lonnet::delenv('docs.markedcopy'); |
} |
} |
if ($url=~ m{/smppg$}) { |
if ($url=~ m{/smppg$}) { |
my $db_name = &Apache::lonsimplepage::get_db_name($url); |
my $db_name = &Apache::lonsimplepage::get_db_name($url); |
Line 1338 sub do_paste_from_buffer {
|
Line 1389 sub do_paste_from_buffer {
|
$db_name =~ s{_\d*$ }{_$now}x; |
$db_name =~ s{_\d*$ }{_$now}x; |
my $result=&Apache::lonnet::put($db_name,\%contents, |
my $result=&Apache::lonnet::put($db_name,\%contents, |
$coursedom,$coursenum); |
$coursedom,$coursenum); |
$url =~ s{/(\d*)/smppg$ }{/$now/smppg}x; |
$url =~ s{/(\d*)/smppg$ }{/$now/smppg}x; |
$title=&mt('Copy of').' '.$title; |
$title=&mt('Copy of').' '.$title; |
} |
} |
} |
} |
Line 1352 sub do_paste_from_buffer {
|
Line 1403 sub do_paste_from_buffer {
|
if ($folder =~ /^supplemental/) { |
if ($folder =~ /^supplemental/) { |
$title = $env{'docs.markedcopy_supplemental'}; |
$title = $env{'docs.markedcopy_supplemental'}; |
} else { |
} else { |
(undef,undef,$title) = |
(undef,undef,$title) = |
&parse_supplemental_title($env{'docs.markedcopy_supplemental'}); |
&parse_supplemental_title($env{'docs.markedcopy_supplemental'}); |
} |
} |
} else { |
} else { |
Line 1376 sub uniqueness_check {
|
Line 1427 sub uniqueness_check {
|
$url=&LONCAPA::map::qtescape($url); |
$url=&LONCAPA::map::qtescape($url); |
if ($newurl eq $url) { |
if ($newurl eq $url) { |
$unique = 0; |
$unique = 0; |
last; |
last; |
} |
} |
} |
} |
return $unique; |
return $unique; |
Line 1402 sub update_parameter {
|
Line 1453 sub update_parameter {
|
&remember_parms($idx,$which,'set',$value); |
&remember_parms($idx,$which,'set',$value); |
} else { |
} else { |
&LONCAPA::map::delparameter($idx,'parameter_'.$which); |
&LONCAPA::map::delparameter($idx,'parameter_'.$which); |
|
|
&remember_parms($idx,$which,'del'); |
&remember_parms($idx,$which,'del'); |
} |
} |
return 1; |
return 1; |
Line 1430 sub handle_edit_cmd {
|
Line 1481 sub handle_edit_cmd {
|
&LONCAPA::map::makezombie($LONCAPA::map::order[$idx]); |
&LONCAPA::map::makezombie($LONCAPA::map::order[$idx]); |
splice(@LONCAPA::map::order, $idx, 1); |
splice(@LONCAPA::map::order, $idx, 1); |
|
|
} elsif ($cmd eq 'up' |
} elsif ($cmd eq 'up' |
&& ($idx) && (defined($LONCAPA::map::order[$idx-1]))) { |
&& ($idx) && (defined($LONCAPA::map::order[$idx-1]))) { |
@LONCAPA::map::order[$idx-1,$idx] = @LONCAPA::map::order[$idx,$idx-1]; |
@LONCAPA::map::order[$idx-1,$idx] = @LONCAPA::map::order[$idx,$idx-1]; |
|
|
Line 1455 sub handle_edit_cmd {
|
Line 1506 sub handle_edit_cmd {
|
} |
} |
|
|
sub editor { |
sub editor { |
my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$type)=@_; |
my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$crstype)=@_; |
|
|
my $container= ($env{'form.pagepath'}) ? 'page' |
my $container= ($env{'form.pagepath'}) ? 'page' |
: 'sequence'; |
: 'sequence'; |
|
|
Line 1470 sub editor {
|
Line 1520 sub editor {
|
$LONCAPA::map::order[0]=$idx; |
$LONCAPA::map::order[0]=$idx; |
$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); |
&breadcrumbs($folder,$allowed,$type); |
if ($allowed) { |
$r->print($breadcrumbtrail); |
($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order) = |
|
&breadcrumbs($allowed,$crstype); |
|
$r->print($breadcrumbtrail); |
|
} else { |
|
$randompick = -1; |
|
} |
|
|
# ------------------------------------------------------------ Process commands |
# ------------------------------------------------------------ Process commands |
|
|
# ---------------- if they are for this folder and user allowed to make changes |
# ---------------- if they are for this folder and user allowed to make changes |
Line 1495 sub editor {
|
Line 1550 sub editor {
|
($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container); |
($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container); |
return $errtext if ($fatal); |
return $errtext if ($fatal); |
} |
} |
|
|
if ($env{'form.pastemarked'}) { |
if ($env{'form.pastemarked'}) { |
my $paste_res = |
my $paste_res = |
&do_paste_from_buffer($coursenum,$coursedom,$folder); |
&do_paste_from_buffer($coursenum,$coursedom,$folder); |
if ($paste_res eq 'ok') { |
if ($paste_res eq 'ok') { |
($errtext,$fatal) = &storemap($coursenum,$coursedom,$folder.'.'.$container); |
($errtext,$fatal) = &storemap($coursenum,$coursedom,$folder.'.'.$container); |
Line 1541 sub editor {
|
Line 1596 sub editor {
|
return $errtext if ($fatal); |
return $errtext if ($fatal); |
} else { |
} else { |
$r->print('<p><span class="LC_error">'.&mt('No map selected.').'</span></p>'); |
$r->print('<p><span class="LC_error">'.&mt('No map selected.').'</span></p>'); |
|
|
} |
} |
} |
} |
&log_differences($plain); |
&log_differences($plain); |
Line 1551 sub editor {
|
Line 1606 sub editor {
|
my $idx=0; |
my $idx=0; |
my $shown=0; |
my $shown=0; |
if (($ishidden) || ($isencrypted) || ($randompick>=0) || ($is_random_order)) { |
if (($ishidden) || ($isencrypted) || ($randompick>=0) || ($is_random_order)) { |
$r->print('<p>'.&mt('Parameters').':<ul>'. |
$r->print('<div class="LC_Box">'. |
($randompick>=0?'<li>'.&mt('randomly pick [_1] resources',$randompick).'</li>':''). |
'<p>'.&mt('Parameters:'). |
|
'<ul>'. |
|
($randompick>=0?'<li>'.&mt('randomly pick [quant,_1,resource]',$randompick).'</li>':''). |
($ishidden?'<li>'.&mt('contents hidden').'</li>':''). |
($ishidden?'<li>'.&mt('contents hidden').'</li>':''). |
($isencrypted?'<li>'.&mt('URLs hidden').'</li>':''). |
($isencrypted?'<li>'.&mt('URLs hidden').'</li>':''). |
|
($is_random_order?'<li>'.&mt('random order').'</li>':''). |
'</ul></p>'); |
'</ul></p>'); |
} |
if ($randompick>=0) { |
if ($randompick>=0) { |
$r->print('<p class="LC_warning">' |
$r->print('<p>'.&mt('Caution: this folder is set to randomly pick a subset of resources. Adding or removing resources from this folder will change the set of resources that the students see, resulting in spurious or missing credit for completed problems, not limited to ones you modify. Do not modify the contents of this folder if it is in active student use.').'</p>'); |
.&mt('Caution: this folder is set to randomly pick a subset' |
} |
.' of resources. Adding or removing resources from this' |
if ($is_random_order) { |
.' folder will change the set of resources that the' |
$r->print('<p>'.&mt('Caution: this folder is set to randomly order its contents. Adding or removing resources from this folder will change the order of resources shown.').'</p>'); |
.' students see, resulting in spurious or missing credit' |
|
.' for completed problems, not limited to ones you' |
|
.' modify. Do not modify the contents of this folder if' |
|
.' it is in active student use.') |
|
.'</p>' |
|
); |
|
} |
|
if ($is_random_order) { |
|
$r->print('<p class="LC_warning">' |
|
.&mt('Caution: this folder is set to randomly order its' |
|
.' contents. Adding or removing resources from this folder' |
|
.' will change the order of resources shown.') |
|
.'</p>' |
|
); |
|
} |
|
$r->print('</div>'); |
} |
} |
$r->print('<table class="LC_docs_editor">'); |
|
|
my $output; |
|
|
|
&Apache::loncommon::start_data_table_count(); #setup a row counter |
foreach my $res (@LONCAPA::map::order) { |
foreach my $res (@LONCAPA::map::order) { |
my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]); |
my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]); |
$name=&LONCAPA::map::qtescape($name); |
$name=&LONCAPA::map::qtescape($name); |
$url=&LONCAPA::map::qtescape($url); |
$url=&LONCAPA::map::qtescape($url); |
unless ($name) { $name=(split(/\//,$url))[-1]; } |
unless ($name) { $name=(split(/\//,$url))[-1]; } |
unless ($name) { $idx++; next; } |
unless ($name) { $idx++; next; } |
$r->print(&entryline($idx,$name,$url,$folder,$allowed,$res, |
$output .= &entryline($idx,$name,$url,$folder,$allowed,$res, |
$coursenum)); |
$coursenum,$crstype); |
$idx++; |
$idx++; |
$shown++; |
$shown++; |
} |
} |
unless ($shown) { |
&Apache::loncommon::end_data_table_count(); |
$r->print('<tr><td>'.&mt('Currently no documents.').'</td></tr>'); |
|
|
if ($shown) { |
|
$r->print(&Apache::loncommon::start_data_table()); |
|
if ($allowed) { |
|
$r->print(&Apache::loncommon::start_data_table_header_row() |
|
.'<th colspan="2">'.&mt('Move').'</th>' |
|
.'<th>'.&mt('Actions').'</th>' |
|
.'<th colspan="2">'.&mt('Document').'</th>'); |
|
if ($folder !~ /^supplemental/) { |
|
$->print('<th colspan="4">'.&mt('Settings').'</th>'); |
|
} |
|
$r->print(&Apache::loncommon::end_data_table_header_row()); |
|
} |
|
$r->print($output |
|
.&Apache::loncommon::end_data_table() |
|
); |
|
} else { |
|
$r->print('<p class="LC_info">' |
|
.&mt('Currently no documents.') |
|
.'</p>' |
|
); |
} |
} |
$r->print("\n</table>\n"); |
|
if ($allowed) { |
if ($allowed) { |
&print_paste_buffer($r,$container); |
&print_paste_buffer($r,$container); |
} |
} |
Line 1649 sub process_file_upload {
|
Line 1744 sub process_file_upload {
|
return 'failed'; |
return 'failed'; |
} else { |
} else { |
if ($parseaction eq 'parse') { |
if ($parseaction eq 'parse') { |
my $total_embedded = keys(%{$allfiles}); |
my $total_embedded = scalar(keys(%{$allfiles})); |
if ($total_embedded > 0) { |
if ($total_embedded > 0) { |
my $num = 0; |
my $num = 0; |
my $state = ' |
my $state = ' |
Line 1660 sub process_file_upload {
|
Line 1755 sub process_file_upload {
|
<input type="hidden" name="phasetwo" value="'.$total_embedded.'" />'; |
<input type="hidden" name="phasetwo" value="'.$total_embedded.'" />'; |
$phase_status = 'phasetwo'; |
$phase_status = 'phasetwo'; |
|
|
$$upload_output .= |
$$upload_output .= |
'This file contains embedded multimedia objects, which need to be uploaded to LON-CAPA.<br />'. |
'This file contains embedded multimedia objects, which need to be uploaded to LON-CAPA.<br />'. |
&Apache::loncommon::ask_for_embedded_content( |
&Apache::loncommon::ask_for_embedded_content( |
'/adm/coursedocs',$state,$allfiles,$codebase); |
'/adm/coursedocs',$state,$allfiles,$codebase); |
Line 1710 sub parse_supplemental_title {
|
Line 1805 sub parse_supplemental_title {
|
$foldertitle=&Apache::lontexconvert::msgtexconverted($4); |
$foldertitle=&Apache::lontexconvert::msgtexconverted($4); |
my $name = &Apache::loncommon::plainname($uname,$udom); |
my $name = &Apache::loncommon::plainname($uname,$udom); |
$name = &HTML::Entities::encode($name,'"<>&\''); |
$name = &HTML::Entities::encode($name,'"<>&\''); |
|
$renametitle = &HTML::Entities::encode($renametitle,'"<>&\''); |
$title='<i>'.&Apache::lonlocal::locallocaltime($time).'</i> '. |
$title='<i>'.&Apache::lonlocal::locallocaltime($time).'</i> '. |
$name.': <br />'.$foldertitle; |
$name.': <br />'.$foldertitle; |
} |
} |
if (wantarray) { |
if (wantarray) { |
return ($title,$foldertitle,$renametitle); |
return ($title,$foldertitle,$renametitle); |
} |
} |
return $title; |
return $title; |
} |
} |
|
|
# --------------------------------------------------------------- An entry line |
# --------------------------------------------------------------- An entry line |
|
|
sub entryline { |
sub entryline { |
my ($index,$title,$url,$folder,$allowed,$residx,$coursenum)=@_; |
my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$crstype)=@_; |
|
|
my ($foldertitle,$pagetitle,$renametitle); |
my ($foldertitle,$pagetitle,$renametitle); |
if (&is_supplemental_title($title)) { |
if (&is_supplemental_title($title)) { |
($title,$foldertitle,$renametitle) = &parse_supplemental_title($title); |
($title,$foldertitle,$renametitle) = &parse_supplemental_title($title); |
Line 1736 sub entryline {
|
Line 1831 sub entryline {
|
} |
} |
|
|
my $orderidx=$LONCAPA::map::order[$index]; |
my $orderidx=$LONCAPA::map::order[$index]; |
|
|
|
|
$renametitle=~s/\\/\\\\/g; |
$renametitle=~s/\\/\\\\/g; |
$renametitle=~s/\"\;/\\\"/g; |
$renametitle=~s/\"\;/\\\"/g; |
$renametitle=~s/ /%20/g; |
$renametitle=~s/ /%20/g; |
my $line='<tr>'; |
my $line=&Apache::loncommon::start_data_table_row(); |
my ($form_start,$form_end); |
my ($form_start,$form_end); |
# Edit commands |
# Edit commands |
my ($container, $type, $esc_path, $path, $symb); |
my ($container, $type, $esc_path, $path, $symb); |
Line 1763 sub entryline {
|
Line 1858 sub entryline {
|
my $incindex=$index+1; |
my $incindex=$index+1; |
my $selectbox=''; |
my $selectbox=''; |
if (($folder!~/^supplemental/) && |
if (($folder!~/^supplemental/) && |
($#LONCAPA::map::order>0) && |
($#LONCAPA::map::order>0) && |
((split(/\:/, |
((split(/\:/, |
$LONCAPA::map::resources[$LONCAPA::map::order[0]]))[1] |
$LONCAPA::map::resources[$LONCAPA::map::order[0]]))[1] |
ne '') && |
ne '') && |
((split(/\:/, |
((split(/\:/, |
$LONCAPA::map::resources[$LONCAPA::map::order[1]]))[1] |
$LONCAPA::map::resources[$LONCAPA::map::order[1]]))[1] |
ne '')) { |
ne '')) { |
$selectbox= |
$selectbox= |
'<input type="hidden" name="currentpos" value="'.$incindex.'" />'. |
'<input type="hidden" name="currentpos" value="'.$incindex.'" />'. |
'<select name="newpos" onChange="this.form.submit()">'; |
'<select name="newpos" onchange="this.form.submit()">'; |
for (my $i=1;$i<=$#LONCAPA::map::order+1;$i++) { |
for (my $i=1;$i<=$#LONCAPA::map::order+1;$i++) { |
if ($i==$incindex) { |
if ($i==$incindex) { |
$selectbox.='<option value="" selected="1">('.$i.')</option>'; |
$selectbox.='<option value="" selected="selected">('.$i.')</option>'; |
} else { |
} else { |
$selectbox.='<option value="'.$i.'">'.$i.'</option>'; |
$selectbox.='<option value="'.$i.'">'.$i.'</option>'; |
} |
} |
Line 1805 sub entryline {
|
Line 1900 sub entryline {
|
} |
} |
} |
} |
} |
} |
if ($url=~/^\/res\/lib\/templates\//) { |
if ($url=~/^\/res\/lib\/templates\//) { |
$nocopy=1; |
$nocopy=1; |
$nocut=1; |
$nocut=1; |
} |
} |
my $copylink=' '; |
my $copylink=' '; |
my $cutlink=' '; |
my $cutlink=' '; |
|
|
my $skip_confirm = 0; |
my $skip_confirm = 0; |
if ( $folder =~ /^supplemental/ |
if ( $folder =~ /^supplemental/ |
|| ($url =~ m{( /smppg$ |
|| ($url =~ m{( /smppg$ |
Line 1844 END
|
Line 1939 END
|
$form_end = '</form>'; |
$form_end = '</form>'; |
$line.=(<<END); |
$line.=(<<END); |
<td> |
<td> |
<table class="LC_docs_entry_move"> |
<div class="LC_docs_entry_move"> |
<tr> |
<a href='/adm/coursedocs?cmd=up_$index&${type}path=$esc_path&${type}symb=$symb$cpinfo'> |
<td> |
<img src="${iconpath}move_up.gif" alt='$lt{'up'}' class="LC_icon" /> |
<a href='/adm/coursedocs?cmd=up_$index&${type}path=$esc_path&${type}symb=$symb$cpinfo'><img src="${iconpath}move_up.gif" alt='$lt{'up'}' class="LC_icon" /></a> |
</a> |
</td> |
</div> |
</tr> |
<div class="LC_docs_entry_move"> |
<tr> |
<a href='/adm/coursedocs?cmd=down_$index&${type}path=$esc_path&${type}symb=$symb$cpinfo'> |
<td> |
<img src="${iconpath}move_down.gif" alt='$lt{'dw'}' class="LC_icon" /> |
<a href='/adm/coursedocs?cmd=down_$index&${type}path=$esc_path&${type}symb=$symb$cpinfo'><img src="${iconpath}move_down.gif" alt='$lt{'dw'}' class="LC_icon" /></a> |
</a> |
</td> |
</div> |
</tr> |
|
</table> |
|
</td> |
</td> |
<td> |
<td> |
$form_start |
$form_start |
Line 1882 END
|
Line 1975 END
|
my $pagefile; |
my $pagefile; |
if ($uploaded) { |
if ($uploaded) { |
if ($extension eq 'sequence') { |
if ($extension eq 'sequence') { |
$icon=$iconpath.'/folder_closed.gif'; |
$icon=$iconpath.'/navmap.folder.closed.gif'; |
$url=~/\Q$coursenum\E\/([\/\w]+)\.sequence$/; |
$url=~/\Q$coursenum\E\/([\/\w]+)\.sequence$/; |
$url='/adm/coursedocs?'; |
$url='/adm/coursedocs?'; |
$folderarg=$1; |
$folderarg=$1; |
Line 1897 END
|
Line 1990 END
|
&Apache::lonnet::allowuploaded('/adm/coursedoc',$url); |
&Apache::lonnet::allowuploaded('/adm/coursedoc',$url); |
} |
} |
} |
} |
|
|
my $orig_url = $url; |
my $orig_url = $url; |
|
$orig_url=~s{http(:|:)//https(:|:)//}{https$2//}; |
my $external = ($url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/}); |
my $external = ($url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/}); |
if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) { |
if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) { |
my $symb=&Apache::lonnet::symbclean( |
my $symb=&Apache::lonnet::symbclean( |
Line 1920 END
|
Line 2014 END
|
} elsif ($url!~/\.(sequence|page)$/) { |
} elsif ($url!~/\.(sequence|page)$/) { |
$url='/adm/coursedocs/showdoc'.$url; |
$url='/adm/coursedocs/showdoc'.$url; |
} |
} |
} elsif ($url=~m|^/ext/|) { |
} elsif ($url=~m|^/ext/|) { |
$url='/adm/wrapper'.$url; |
$url='/adm/wrapper'.$url; |
$external = 1; |
$external = 1; |
} |
} |
Line 1931 END
|
Line 2025 END
|
} |
} |
if ($container eq 'page') { |
if ($container eq 'page') { |
my $symb=$env{'form.pagesymb'}; |
my $symb=$env{'form.pagesymb'}; |
|
|
$url=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]); |
$url=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]); |
$url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb); |
$url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb); |
} |
} |
Line 1941 END
|
Line 2035 END
|
my $foldername=&escape($foldertitle); |
my $foldername=&escape($foldertitle); |
my $folderpath=$env{'form.folderpath'}; |
my $folderpath=$env{'form.folderpath'}; |
if ($folderpath) { $folderpath.='&' }; |
if ($folderpath) { $folderpath.='&' }; |
# Append randompick number, hidden, and encrypted with ":" to foldername, |
# Append randompick number, hidden, and encrypted with ":" to foldername, |
# so it gets transferred between levels |
# so it gets transferred between levels |
$folderpath.=$folderarg.'&'.$foldername.':'.(&LONCAPA::map::getparameter($orderidx, |
$folderpath.=$folderarg.'&'.$foldername.':'.(&LONCAPA::map::getparameter($orderidx, |
'parameter_randompick'))[0] |
'parameter_randompick'))[0] |
Line 1953 END
|
Line 2047 END
|
'parameter_randomorder'))[0]=~/^yes$/i); |
'parameter_randomorder'))[0]=~/^yes$/i); |
$url.='folderpath='.&escape($folderpath).$cpinfo; |
$url.='folderpath='.&escape($folderpath).$cpinfo; |
$parameterset='<label>'.&mt('Randomly Pick: '). |
$parameterset='<label>'.&mt('Randomly Pick: '). |
'<input type="text" size="4" onChange="this.form.changeparms.value='."'randompick'".';this.form.submit()" name="randompick_'.$orderidx.'" value="'. |
'<input type="text" size="4" onchange="this.form.changeparms.value='."'randompick'".';this.form.submit()" name="randompick_'.$orderidx.'" value="'. |
(&LONCAPA::map::getparameter($orderidx, |
(&LONCAPA::map::getparameter($orderidx, |
'parameter_randompick'))[0]. |
'parameter_randompick'))[0]. |
'" />'. |
'" />'. |
Line 1961 END
|
Line 2055 END
|
my $ro_set= |
my $ro_set= |
((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); |
((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':''); |
$rand_order_text =' |
$rand_order_text =' |
<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onClick="this.form.changeparms.value=\'randomorder\';this.form.submit()" '.$ro_set.' /> '.&mt('Random Order').' </label></span>'; |
<span class="LC_nobreak"><label><input type="checkbox" name="randomorder_'.$orderidx.'" onclick="this.form.changeparms.value=\'randomorder\';this.form.submit()" '.$ro_set.' /> '.&mt('Random Order').' </label></span>'; |
} |
} |
if ($ispage) { |
if ($ispage) { |
my $pagename=&escape($pagetitle); |
my $pagename=&escape($pagetitle); |
Line 1981 END
|
Line 2075 END
|
$url.='pagepath='.&escape($pagepath). |
$url.='pagepath='.&escape($pagepath). |
'&pagesymb='.&escape($symb).$cpinfo; |
'&pagesymb='.&escape($symb).$cpinfo; |
} |
} |
if ($external) { |
if (($external) && ($allowed)) { |
my $form = ($folder =~ /^default/)? 'newext' : 'supnewext'; |
my $form = ($folder =~ /^default/)? 'newext' : 'supnewext'; |
$external = ' <a class="LC_docs_ext_edit" href="javascript:edittext(\''.$form.'\',\''.$residx.'\',\''.&escape($title).'\',\''.&escape($orig_url).'\');" >'.&mt('Edit').'</a>'; |
$external = ' <a class="LC_docs_ext_edit" href="javascript:edittext(\''.$form.'\',\''.$residx.'\',\''.&escape($title).'\',\''.&escape($orig_url).'\');" >'.&mt('Edit').'</a>'; |
} else { |
} else { |
undef($external); |
undef($external); |
} |
} |
|
my $reinit; |
|
if ($crstype eq 'Community') { |
|
$reinit = &mt('(re-initialize community to access)'); |
|
} else { |
|
$reinit = &mt('(re-initialize course to access)'); |
|
} |
$line.=' |
$line.=' |
<td class="LC_docs_entry_icon"> |
<td> |
'.($url?'<a href="'.$url.'">':'').'<img src="'.$icon.'" alt="" class="LC_icon" />'.($url?'</a>':'').' |
'.($url?'<a href="'.$url.'">':'').'<img src="'.$icon.'" alt="" class="LC_icon" />'.($url?'</a>':'').' |
</td> |
</td> |
<td class="LC_docs_entry_title"> |
<td> |
'.($url?"<a href=\"$url\">":'').$title.($url?'</a>':' <span class="LC_docs_reinit_warn">'.&mt('(re-initialize course to access)').'</span>').$external." |
'.($url?"<a href=\"$url\">":'').$title.($url?'</a>':' <span class="LC_docs_reinit_warn">'.$reinit.'</span>').$external." |
</td>"; |
</td>"; |
if (($allowed) && ($folder!~/^supplemental/)) { |
if (($allowed) && ($folder!~/^supplemental/)) { |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'hd' => 'Hidden', |
'hd' => 'Hidden', |
'ec' => 'URL hidden'); |
'ec' => 'URL hidden'); |
my $enctext= |
my $enctext= |
((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="1"':''); |
((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="checked"':''); |
my $hidtext= |
my $hidtext= |
((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="1"':''); |
((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="checked"':''); |
$line.=(<<ENDPARMS); |
$line.=(<<ENDPARMS); |
<td class="LC_docs_entry_parameter"> |
<td class="LC_docs_entry_parameter"> |
$form_start |
$form_start |
<label><input type="checkbox" name="hiddenresource_$orderidx" onClick="this.form.changeparms.value='hiddenresource';this.form.submit()" $hidtext /> $lt{'hd'}</label> |
<label><input type="checkbox" name="hiddenresource_$orderidx" onclick="this.form.changeparms.value='hiddenresource';this.form.submit()" $hidtext /> $lt{'hd'}</label> |
$form_end |
$form_end |
</td> |
</td> |
<td class="LC_docs_entry_parameter"> |
<td class="LC_docs_entry_parameter"> |
$form_start |
$form_start |
<label><input type="checkbox" name="encrypturl_$orderidx" onClick="this.form.changeparms.value='encrypturl';this.form.submit()" $enctext /> $lt{'ec'}</label> |
<label><input type="checkbox" name="encrypturl_$orderidx" onclick="this.form.changeparms.value='encrypturl';this.form.submit()" $enctext /> $lt{'ec'}</label> |
$form_end |
$form_end |
</td> |
</td> |
<td class="LC_docs_entry_parameter">$form_start $rand_order_text $form_end</td> |
<td class="LC_docs_entry_parameter">$form_start $rand_order_text $form_end</td> |
<td class="LC_docs_entry_parameter">$form_start $parameterset $form_end</td> |
<td class="LC_docs_entry_parameter">$form_start $parameterset $form_end</td> |
ENDPARMS |
ENDPARMS |
} |
} |
$line.="</tr>"; |
$line.=&Apache::loncommon::end_data_table_row(); |
return $line; |
return $line; |
} |
} |
|
|
Line 2044 sub tiehash {
|
Line 2144 sub tiehash {
|
$hashtied=1; |
$hashtied=1; |
} |
} |
} |
} |
} |
} |
} |
} |
|
|
sub untiehash { |
sub untiehash { |
Line 2093 sub checkonthis {
|
Line 2193 sub checkonthis {
|
if (($errorcount) || |
if (($errorcount) || |
($warningcount)) { |
($warningcount)) { |
if ($errorcount) { |
if ($errorcount) { |
$r->print('<img src="/adm/lonMisc/bomb.gif" /><span class="LC_error">'. |
$r->print('<img src="/adm/lonMisc/bomb.gif" alt="'.&mt('bomb').'" /><span class="LC_error">'. |
&mt('[quant,_1,error]',$errorcount).'</span>'); |
&mt('[quant,_1,error]',$errorcount).'</span>'); |
} |
} |
if ($warningcount) { |
if ($warningcount) { |
Line 2118 sub checkonthis {
|
Line 2218 sub checkonthis {
|
unless ($url=~/\$/) { |
unless ($url=~/\$/) { |
$r->print('<span class="LC_error">'.&mt('not found').'</b></span>'); |
$r->print('<span class="LC_error">'.&mt('not found').'</b></span>'); |
} else { |
} else { |
$r->print('<span class="LC_unknown">'.&mt('unable to verify variable URL').'</span>'); |
$r->print('<span class="LC_error">'.&mt('unable to verify variable URL').'</span>'); |
} |
} |
} else { |
} else { |
$r->print('<span class="LC_error">'.&mt('access denied').'</span>'); |
$r->print('<span class="LC_error">'.&mt('access denied').'</span>'); |
Line 2140 List Symbs
|
Line 2240 List Symbs
|
sub list_symbs { |
sub list_symbs { |
my ($r) = @_; |
my ($r) = @_; |
|
|
my $type = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
$r->print(&Apache::loncommon::start_page('Symb List')); |
$r->print(&Apache::loncommon::start_page('Symb List')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Symb List')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Symb List')); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
Line 2149 sub list_symbs {
|
Line 2249 sub list_symbs {
|
'<div class="LC_error">'. |
'<div class="LC_error">'. |
&mt('Unable to retrieve information about course contents'). |
&mt('Unable to retrieve information about course contents'). |
'</div>'); |
'</div>'); |
&Apache::lonnet::logthis('Symb list failed - could not create navmap object in '.lc($type).':'.$env{'request.course.id'}); |
&Apache::lonnet::logthis('Symb list failed - could not create navmap object in '.lc($crstype).':'.$env{'request.course.id'}); |
} else { |
} else { |
$r->print("<pre>\n"); |
$r->print("<pre>\n"); |
foreach my $res ($navmap->retrieveResources()) { |
foreach my $res ($navmap->retrieveResources()) { |
$r->print($res->compTitle()."\t".$res->symb()."\n"); |
$r->print($res->compTitle()."\t".$res->symb()."\n"); |
} |
} |
$r->print("\n</pre>\n"); |
$r->print("\n</pre>\n"); |
} |
} |
$r->print('<a href="/adm/coursedocs">'.&mt('Return to DOCS').'</a>'); |
$r->print('<hr /><a href="/adm/coursedocs">'.&mt('Back to Course Editor').'</a>'); |
} |
} |
|
|
|
|
sub verifycontent { |
sub verifycontent { |
my ($r) = @_; |
my ($r) = @_; |
my $type = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
my $loaderror=&Apache::lonnet::overloaderror($r); |
$r->print(&Apache::loncommon::start_page('Verify '.$crstype.' Documents')); |
if ($loaderror) { return $loaderror; } |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Verify '.$crstype.' Documents')); |
$r->print(&Apache::loncommon::start_page('Verify '.$type.' Documents')); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Verify '.$type.' Documents')); |
|
$hashtied=0; |
$hashtied=0; |
undef %alreadyseen; |
undef %alreadyseen; |
%alreadyseen=(); |
%alreadyseen=(); |
Line 2176 sub verifycontent {
|
Line 2274 sub verifycontent {
|
if ($hash{$key}=~/\.(page|sequence)$/) { |
if ($hash{$key}=~/\.(page|sequence)$/) { |
if (($key=~/^src_/) && ($alreadyseen{&unescape($hash{$key})})) { |
if (($key=~/^src_/) && ($alreadyseen{&unescape($hash{$key})})) { |
$r->print('<hr /><span class="LC_error">'. |
$r->print('<hr /><span class="LC_error">'. |
&mt('The following sequence or page is included more than once in your '.$type.': '). |
&mt('The following sequence or page is included more than once in your '.$crstype.':').' '. |
&unescape($hash{$key}).'</span><br />'. |
&unescape($hash{$key}).'</span><br />'. |
&mt('Note that grading records for problems included in this sequence or folder will overlap.<hr />')); |
&mt('Note that grading records for problems included in this sequence or folder will overlap.').'<hr />'); |
} |
} |
} |
} |
if (($key=~/^src\_(.+)$/) && (!$alreadyseen{&unescape($hash{$key})})) { |
if (($key=~/^src\_(.+)$/) && (!$alreadyseen{&unescape($hash{$key})})) { |
Line 2186 sub verifycontent {
|
Line 2284 sub verifycontent {
|
} |
} |
} |
} |
&untiehash(); |
&untiehash(); |
$r->print('<h1>'.&mt('Done').'.</h1>'.'<a href="/adm/coursedocs">'. |
$r->print( |
&mt('Return to DOCS').'</a>'); |
'<p class="LC_success">'.&mt('Done').'</p>' |
|
.'<hr />' |
|
.'<p><a href="/adm/coursedocs">' |
|
.&mt('Back to Course Editor') |
|
.'</a></p>' |
|
); |
} |
} |
|
|
|
|
Line 2199 sub devalidateversioncache {
|
Line 2302 sub devalidateversioncache {
|
|
|
sub checkversions { |
sub checkversions { |
my ($r) = @_; |
my ($r) = @_; |
my $type = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
$r->print(&Apache::loncommon::start_page("Check $type Document Versions")); |
$r->print(&Apache::loncommon::start_page("Check $crstype Document Versions")); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs("Check $type Document Versions")); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs("Check $crstype Document Versions")); |
my $header=''; |
my $header=''; |
my $startsel=''; |
my $startsel=''; |
my $monthsel=''; |
my $monthsel=''; |
Line 2252 sub checkversions {
|
Line 2355 sub checkversions {
|
if ($haschanged) { |
if ($haschanged) { |
if (&Apache::lonnet::put('resourceversions',\%newsetversions, |
if (&Apache::lonnet::put('resourceversions',\%newsetversions, |
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
$env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') { |
$env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') { |
$r->print('<h1>'.&mt('Your Version Settings have been Saved').'</h1>'); |
$r->print('<h1>'.&mt('Your Version Settings have been Saved').'</h1>'); |
} else { |
} else { |
$r->print('<h1><span class="LC_error">'.&mt('An Error Occured while Attempting to Save your Version Settings').'</span></h1>'); |
$r->print('<h1><span class="LC_error">'.&mt('An Error Occured while Attempting to Save your Version Settings').'</span></h1>'); |
Line 2262 sub checkversions {
|
Line 2365 sub checkversions {
|
&changewarning($r,''); |
&changewarning($r,''); |
if ($env{'form.timerange'} eq 'all') { |
if ($env{'form.timerange'} eq 'all') { |
# show all documents |
# show all documents |
$header=&mt('All Documents in '.$type); |
$header=&mt('All Documents in '.$crstype); |
$allsel=1; |
$allsel=1; |
foreach my $key (keys(%hash)) { |
foreach my $key (keys(%hash)) { |
if ($key=~/^ids\_(\/res\/.+)$/) { |
if ($key=~/^ids\_(\/res\/.+)$/) { |
Line 2307 sub checkversions {
|
Line 2410 sub checkversions {
|
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
$env{'course.'.$env{'request.course.id'}.'.num'}); |
$env{'course.'.$env{'request.course.id'}.'.num'}); |
my %lt=&Apache::lonlocal::texthash |
my %lt=&Apache::lonlocal::texthash |
('st' => 'Version changes since start of '.$type, |
('st' => 'Version changes since start of '.$crstype, |
'lm' => 'Version changes since last Month', |
'lm' => 'Version changes since last Month', |
'lw' => 'Version changes since last Week', |
'lw' => 'Version changes since last Week', |
'sy' => 'Version changes since Yesterday', |
'sy' => 'Version changes since Yesterday', |
Line 2316 sub checkversions {
|
Line 2419 sub checkversions {
|
'fi' => 'File', |
'fi' => 'File', |
'md' => 'Modification Date', |
'md' => 'Modification Date', |
'mr' => 'Most recently published Version', |
'mr' => 'Most recently published Version', |
've' => 'Version used in '.$type, |
've' => 'Version used in '.$crstype, |
'vu' => 'Set Version to be used in '.$type, |
'vu' => 'Set Version to be used in '.$crstype, |
'sv' => 'Set Versions to be used in '.$type.' according to Selections below', |
'sv' => 'Set Versions to be used in '.$crstype.' according to Selections below', |
'sm' => 'Keep all Resources up-to-date with most recent Versions (default)', |
'sm' => 'Keep all Resources up-to-date with most recent Versions (default)', |
'sc' => 'Set all Resource Versions to current Version (Fix Versions)', |
'sc' => 'Set all Resource Versions to current Version (Fix Versions)', |
'di' => 'Differences'); |
'di' => 'Differences'); |
Line 2365 ENDHEADERS
|
Line 2468 ENDHEADERS
|
'<td title="'.$lt{'mr'}.'"><span class="LC_nobreak">Most Recent: '. |
'<td title="'.$lt{'mr'}.'"><span class="LC_nobreak">Most Recent: '. |
'<font size="+1">'.$currentversion.'</font>'. |
'<font size="+1">'.$currentversion.'</font>'. |
'</span></td>'. |
'</span></td>'. |
'<td title="'.$lt{'ve'}.'"><span class="LC_nobreak">In '.$type.': '. |
'<td title="'.$lt{'ve'}.'"><span class="LC_nobreak">In '.$crstype.': '. |
'<font size="+1">'); |
'<font size="+1">'); |
# Used in course |
# Used in course |
my $usedversion=$hash{'version_'.$linkurl}; |
my $usedversion=$hash{'version_'.$linkurl}; |
Line 2379 ENDHEADERS
|
Line 2482 ENDHEADERS
|
# Set version |
# Set version |
$r->print(&Apache::loncommon::select_form($setversions{$linkurl}, |
$r->print(&Apache::loncommon::select_form($setversions{$linkurl}, |
'set_version_'.$linkurl, |
'set_version_'.$linkurl, |
('select_form_order' => |
{'select_form_order' => |
['',1..$currentversion,'mostrecent'], |
['',1..$currentversion,'mostrecent'], |
'' => '', |
'' => '', |
'mostrecent' => 'most recent', |
'mostrecent' => &mt('most recent'), |
map {$_,$_} (1..$currentversion)))); |
map {$_,$_} (1..$currentversion)})); |
$r->print('</span></td></tr><tr><td></td>'); |
$r->print('</span></td></tr><tr><td></td>'); |
my $lastold=1; |
my $lastold=1; |
for (my $prevvers=1;$prevvers<$currentversion;$prevvers++) { |
for (my $prevvers=1;$prevvers<$currentversion;$prevvers++) { |
Line 2393 ENDHEADERS
|
Line 2496 ENDHEADERS
|
$lastold=$prevvers; |
$lastold=$prevvers; |
} |
} |
} |
} |
# |
# |
# Code to figure out how many version entries should go in |
# Code to figure out how many version entries should go in |
# each of the four columns |
# each of the four columns |
my $entries_per_col = 0; |
my $entries_per_col = 0; |
Line 2404 ENDHEADERS
|
Line 2507 ENDHEADERS
|
$entries_per_col = $num_entries/4 + 1; |
$entries_per_col = $num_entries/4 + 1; |
} |
} |
my $entries_count = 0; |
my $entries_count = 0; |
$r->print('<td valign="top"><font size="-2">'); |
$r->print('<td valign="top"><font size="-2">'); |
my $cols_output = 1; |
my $cols_output = 1; |
for (my $prevvers=$lastold;$prevvers<$currentversion;$prevvers++) { |
for (my $prevvers=$lastold;$prevvers<$currentversion;$prevvers++) { |
my $url=$root.'.'.$prevvers.'.'.$extension; |
my $url=$root.'.'.$prevvers.'.'.$extension; |
Line 2437 ENDHEADERS
|
Line 2540 ENDHEADERS
|
} |
} |
} |
} |
$r->print('</table></form>'); |
$r->print('</table></form>'); |
$r->print('<h1>'.&mt('Done').'.</h1>'); |
$r->print('<p class="LC_success">'.&mt('Done').'</p>'); |
|
|
&untiehash(); |
&untiehash(); |
} |
} |
Line 2483 sub changewarning {
|
Line 2586 sub changewarning {
|
$message='Changes will become active for your current session after [_1], or the next time you log in.'; |
$message='Changes will become active for your current session after [_1], or the next time you log in.'; |
} |
} |
$r->print("\n\n". |
$r->print("\n\n". |
'<script type="text/javascript">function reinit(tf) { tf.submit();'.$postexec.' }</script>'."\n". |
'<script type="text/javascript">'."\n". |
|
'// <![CDATA['."\n". |
|
'function reinit(tf) { tf.submit();'.$postexec.' }'."\n". |
|
'// ]]>'."\n". |
|
'</script>'."\n". |
'<form name="reinitform" method="post" action="/adm/roles" target="loncapaclient">'. |
'<form name="reinitform" method="post" action="/adm/roles" target="loncapaclient">'. |
'<input type="hidden" name="orgurl" value="'.$url. |
'<input type="hidden" name="orgurl" value="'.$url. |
'" /><input type="hidden" name="selectrole" value="1" /><h3><span class="LC_warning">'. |
'" /><input type="hidden" name="selectrole" value="1" /><p class="LC_warning">'. |
&mt($message,' <input type="hidden" name="'. |
&mt($message,' <input type="hidden" name="'. |
$env{'request.role'}.'" value="1" /><input type="button" value="'. |
$env{'request.role'}.'" value="1" /><input type="button" value="'. |
&mt('re-initializing '.$course_type).'" onClick="reinit(this.form)" />'). |
&mt('re-initializing '.$course_type).'" onclick="reinit(this.form)" />'). |
$help{'Caching'}.'</span></h3></form>'."\n\n"); |
$help{'Caching'}.'</p></form>'."\n\n"); |
} |
} |
|
|
|
|
Line 2498 sub init_breadcrumbs {
|
Line 2605 sub init_breadcrumbs {
|
my ($form,$text)=@_; |
my ($form,$text)=@_; |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::add_breadcrumb({href=>"/adm/coursedocs", |
&Apache::lonhtmlcommon::add_breadcrumb({href=>"/adm/coursedocs", |
text=>"Edit ".&Apache::loncommon::course_type(), |
text=>&Apache::loncommon::course_type().' Editor', |
faq=>273, |
faq=>273, |
bug=>'Instructor Interface', |
bug=>'Instructor Interface', |
help => 'Docs_Adding_Course_Doc'}); |
help => 'Docs_Adding_Course_Doc'}); |
Line 2516 sub handler {
|
Line 2623 sub handler {
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
return OK if $r->header_only; |
return OK if $r->header_only; |
my $type = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
|
|
|
|
# --------------------------------------------- Initialize help topics for this |
# --------------------------------------------- Initialize help topics for this |
Line 2537 sub handler {
|
Line 2644 sub handler {
|
'Option_Response_Simple'); |
'Option_Response_Simple'); |
$help{'Bulletin Board'} = &Apache::loncommon::help_open_topic( |
$help{'Bulletin Board'} = &Apache::loncommon::help_open_topic( |
'Docs_About_Bulletin_Board,Docs_Editing_Templated_Pages'); |
'Docs_About_Bulletin_Board,Docs_Editing_Templated_Pages'); |
$help{'My Personal Info'} = &Apache::loncommon::help_open_topic( |
$help{'My Personal Information Page'} = &Apache::loncommon::help_open_topic( |
'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); |
'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); |
$help{'Group Files'} = &Apache::loncommon::help_open_topic('Docs_About_Group_Files'); |
$help{'Group Portfolio'} = &Apache::loncommon::help_open_topic('Docs_About_Group_Files'); |
$help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); |
$help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); |
|
|
# does this user have privileges to modify docs |
# does this user have privileges to modify docs |
Line 2557 sub handler {
|
Line 2664 sub handler {
|
&init_breadcrumbs('versions','Check/Set Resource Versions'); |
&init_breadcrumbs('versions','Check/Set Resource Versions'); |
&checkversions($r); |
&checkversions($r); |
} elsif ($allowed && $env{'form.dumpcourse'}) { |
} elsif ($allowed && $env{'form.dumpcourse'}) { |
&init_breadcrumbs('dumpcourse','Dump '.&Apache::loncommon::course_type().' DOCS to Construction Space'); |
&init_breadcrumbs('dumpcourse','Dump '.&Apache::loncommon::course_type().' Documents to Construction Space'); |
&dumpcourse($r); |
&dumpcourse($r); |
} elsif ($allowed && $env{'form.exportcourse'}) { |
} elsif ($allowed && $env{'form.exportcourse'}) { |
&init_breadcrumbs('exportcourse','Export '.&Apache::loncommon::course_type().' to IMS'); |
&init_breadcrumbs('exportcourse','IMS Export'); |
&exportcourse($r); |
&exportcourse($r); |
} else { |
} else { |
# is this a standard course? |
# is this a standard course? |
Line 2582 sub handler {
|
Line 2689 sub handler {
|
&Apache::loncommon::restore_course_settings('docs_folderpath', |
&Apache::loncommon::restore_course_settings('docs_folderpath', |
{'folderpath' => 'scalar'}); |
{'folderpath' => 'scalar'}); |
} |
} |
if (!$env{'form.folderpath'}) { |
if (!$allowed) { |
|
unless($env{'form.folderpath'} =~ /^supplemental/) { |
|
$env{'form.folderpath'} = ''; |
|
} |
|
} |
|
if (!$env{'form.folderpath'} && $allowed) { |
&Apache::loncommon::restore_course_settings('docs_folderpath', |
&Apache::loncommon::restore_course_settings('docs_folderpath', |
{'pagepath' => 'scalar'}); |
{'pagepath' => 'scalar'}); |
} |
} |
Line 2591 sub handler {
|
Line 2703 sub handler {
|
} |
} |
if ($env{'form.folderpath'} =~ /^supplemental_\d+/) { |
if ($env{'form.folderpath'} =~ /^supplemental_\d+/) { |
$env{'form.folderpath'} = 'supplemental&'. |
$env{'form.folderpath'} = 'supplemental&'. |
&escape(&mt('Supplemental '.$type.' Documents')).'&'. |
&escape(&mt('Supplemental '.$crstype.' Documents')).'&'. |
$env{'form.folderpath'}; |
$env{'form.folderpath'}; |
} |
} |
&Apache::loncommon::store_course_settings('docs_folderpath', |
&Apache::loncommon::store_course_settings('docs_folderpath', |
Line 2614 sub handler {
|
Line 2726 sub handler {
|
if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) { |
if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) { |
$showdoc='/'.$1; |
$showdoc='/'.$1; |
} |
} |
unless ($showdoc) { # got called from remote |
if ($showdoc) { # got called in sequence from course |
if (($env{'form.folder'}=~/^(?:group|default)_/) || |
$allowed=0; |
|
} else { |
|
if (($env{'form.folder'}=~/^(?:group|default)_/) || |
($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) { |
($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) { |
$forcestandard = 1; |
$forcestandard = 1; |
} |
} |
$forcesupplement=($env{'form.folder'}=~/^supplemental_/); |
$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'); |
} |
} |
} else { # got called in sequence from course |
|
$allowed=0; |
|
} |
} |
|
|
|
# subroutine to list form elements |
|
sub create_list_elements { |
|
my @formarr = @_; |
|
my $list = ''; |
|
for my $button (@formarr){ |
|
for my $picture(keys %$button) { |
|
#my $link = Apache::lonhtmlcommon::htmltag('a' ,$button->{$picture}, {href => "test"}); |
|
$list .= Apache::lonhtmlcommon::htmltag('li', $picture.' '.$button->{$picture}, {class => 'LC_menubuttons_inline_text'}); |
|
} |
|
} |
|
return $list; |
|
} |
|
|
|
# subroutine to create ul from list elements |
|
sub create_form_ul { |
|
my $list = shift; |
|
my $ul = Apache::lonhtmlcommon::htmltag('ul',$list, {class => 'LC_ListStyleNormal'}); |
|
return $ul; |
|
} |
|
|
# 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'}; |
|
|
# 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=&escape(&Apache::loncommon::plainname($uname,$udom)); |
my $plainname=&escape(&Apache::loncommon::plainname($uname,$udom)); |
Line 2646 sub handler {
|
Line 2778 sub handler {
|
$script .= &editing_js($udom,$uname); |
$script .= &editing_js($udom,$uname); |
} |
} |
# -------------------------------------------------------------------- Body tag |
# -------------------------------------------------------------------- Body tag |
$script = '<script type="text/javascript">'."\n".$script."\n".'</script>'; |
$script = '<script type="text/javascript">'."\n" |
my $brcrum = [{href=>"/adm/createuser",text=>"$type Documents"}]; |
.'// <![CDATA['."\n" |
$r->print(&Apache::loncommon::start_page("$type Documents", $script, |
.$script."\n" |
{'force_register' => $showdoc, |
.'// ]]>'."\n" |
'bread_crumbs' => $brcrum}). |
.'</script>'."\n"; |
&Apache::loncommon::help_open_menu('','',273,'RAT')); |
|
|
# Breadcrumbs |
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
if ($allowed) { |
|
&Apache::lonhtmlcommon::add_breadcrumb({ |
|
href=>"/adm/coursedocs",text=>"$crstype Editor"}); |
|
|
|
$r->print(&Apache::loncommon::start_page("$crstype Editor", $script, |
|
{'force_register' => $showdoc,}) |
|
.&Apache::loncommon::help_open_menu('','',273,'RAT') |
|
.&Apache::lonhtmlcommon::breadcrumbs( |
|
'Editing the Table of Contents for your '.$crstype, |
|
'Docs_Adding_Course_Doc') |
|
); |
|
} elsif ($showdoc) { |
|
$r->print(&Apache::loncommon::start_page("$crstype documents",undef, |
|
{'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 = (); |
my %codebase = (); |
my %codebase = (); |
my ($upload_result,$upload_output); |
my ($upload_result,$upload_output); |
if ($allowed) { |
if ($allowed) { |
if (($env{'form.uploaddoc.filename'}) && |
if (($env{'form.uploaddoc.filename'}) && |
($env{'form.cmd'}=~/^upload_(\w+)/)) { |
($env{'form.cmd'}=~/^upload_(\w+)/)) { |
# Process file upload - phase one - upload and parse primary file. |
# Process file upload - phase one - upload and parse primary file. |
undef($hadchanges); |
undef($hadchanges); |
$upload_result = &process_file_upload(\$upload_output,$coursenum, |
$upload_result = &process_file_upload(\$upload_output,$coursenum, |
$coursedom,\%allfiles, |
$coursedom,\%allfiles, |
Line 2684 sub handler {
|
Line 2842 sub handler {
|
$newname{$i} = &process_secondary_uploads(\$upload_output,$coursedom,$coursenum,'embedded_item_',$i,$residx); |
$newname{$i} = &process_secondary_uploads(\$upload_output,$coursedom,$coursenum,'embedded_item_',$i,$residx); |
$origname{$i} = &unescape($env{'form.embedded_orig_'.$i}); |
$origname{$i} = &unescape($env{'form.embedded_orig_'.$i}); |
if (exists($env{'form.embedded_codebase_'.$i})) { |
if (exists($env{'form.embedded_codebase_'.$i})) { |
$javacodebase = &unescape($env{'form.embedded_codebase_'.$i}); |
$javacodebase = &unescape($env{'form.embedded_codebase_'.$i}); |
$origname{$i} =~ s#^\Q$javacodebase\E/##; |
$origname{$i} =~ s#^\Q$javacodebase\E/##; |
} |
} |
my @attributes = (); |
my @attributes = (); |
if ($env{'form.embedded_attrib_'.$i} =~ /:/) { |
if ($env{'form.embedded_attrib_'.$i} =~ /:/) { |
Line 2721 sub handler {
|
Line 2879 sub handler {
|
$attrib_regexp = $attribs{$item}[0]; |
$attrib_regexp = $attribs{$item}[0]; |
} |
} |
if ($content =~ m#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#) { |
if ($content =~ m#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#) { |
} |
} |
$content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi; |
$content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi; |
} |
} |
if (exists($codebase{$item})) { |
if (exists($codebase{$item})) { |
$content =~ s/(codebase\s*=\s*["']?)\Q$codebase{$item}\E(["']?)/$1.$2/i; #' stupid emacs |
$content =~ s/(codebase\s*=\s*["']?)\Q$codebase{$item}\E(["']?)/$1.$2/i; #' stupid emacs |
Line 2734 sub handler {
|
Line 2892 sub handler {
|
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $url = &Apache::lonnet::store_edited_file($primary_url,$content,$docudom,$docuname,\$saveresult); |
my $url = &Apache::lonnet::store_edited_file($primary_url,$content,$docudom,$docuname,\$saveresult); |
} else { |
} else { |
&Apache::lonnet::logthis('retrieval of uploaded file - '.$primary_url.' - for editing, failed: '.$getstatus); |
&Apache::lonnet::logthis('retrieval of uploaded file - '.$primary_url.' - for editing, failed: '.$getstatus); |
} |
} |
} |
} |
} |
} |
Line 2743 sub handler {
|
Line 2901 sub handler {
|
unless ($showdoc || $upload_result eq 'phasetwo') { |
unless ($showdoc || $upload_result eq 'phasetwo') { |
# ----------------------------------------------------------------------------- |
# ----------------------------------------------------------------------------- |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'uplm' => 'Upload a new main '.lc($type).' document', |
'uplm' => 'Upload a new main '.lc($crstype).' document', |
'upls' => 'Upload a new supplemental '.lc($type).' document', |
'upls' => 'Upload a new supplemental '.lc($crstype).' document', |
'impp' => 'Import a document', |
'impp' => 'Import a document', |
'pubd' => 'Published Documents', |
|
'copm' => 'All documents out of a published map into this folder', |
'copm' => 'All documents out of a published map into this folder', |
'upld' => 'Upload Document', |
'upld' => 'Import Document', |
'srch' => 'Search', |
'srch' => 'Search', |
'impo' => 'Import', |
'impo' => 'Import', |
'book' => 'Import Bookmarks', |
'book' => 'Import Bookmarks', |
'selm' => 'Select Map', |
'selm' => 'Select Map', |
'load' => 'Load Map', |
'load' => 'Load Map', |
'reco' => 'Recover Deleted Resources', |
'reco' => 'Recover Deleted Documents', |
'newf' => 'New Folder', |
'newf' => 'New Folder', |
'newp' => 'New Composite Page', |
'newp' => 'New Composite Page', |
'extr' => 'External Resource', |
'extr' => 'External Resource', |
'syll' => 'Syllabus', |
'syll' => 'Syllabus', |
'navc' => 'Navigate Contents', |
'navc' => 'Table of Contents', |
'sipa' => 'Simple Page', |
'sipa' => 'Simple Course Page', |
'sipr' => 'Simple Problem', |
'sipr' => 'Simple Problem', |
'drbx' => 'Drop Box', |
'drbx' => 'Drop Box', |
'scuf' => 'Score Upload Form', |
'scuf' => 'Score Upload Form', |
'bull' => 'Bulletin Board', |
'bull' => 'Discussion Board', |
'mypi' => 'My Personal Info', |
'mypi' => 'My Personal Information Page', |
'grpo' => 'Group Files', |
'grpo' => 'Group Portfolio', |
'rost' => 'Course Roster', |
'rost' => 'Course Roster', |
'abou' => 'About User', |
'abou' => 'Personal Information Page for a User', |
'imsf' => 'Import IMS package', |
'imsf' => 'IMS Import', |
|
'imsl' => 'Import IMS package', |
'file' => 'File', |
'file' => 'File', |
'title' => 'Title', |
'title' => 'Title', |
'comment' => 'Comment', |
'comment' => 'Comment', |
'parse' => 'Upload embedded images/multimedia files if HTML file!', |
'parse' => 'Upload embedded images/multimedia files if HTML file', |
'nd' => 'New Document', |
'nd' => 'Upload Document', |
'pm' => 'Published Map', |
'pm' => 'Published Map', |
'sd' => 'Special Document', |
'sd' => 'Special Document', |
'mo' => 'More Options', |
'mo' => 'More Options', |
'hao' => 'Hide all Options' |
|
); |
); |
# ----------------------------------------------------------------------------- |
# ----------------------------------------------------------------------------- |
my $fileupload=(<<FIUP); |
my $fileupload=(<<FIUP); |
Line 2795 FIUP
|
Line 2952 FIUP
|
</label> |
</label> |
CHBO |
CHBO |
|
|
|
my $fileuploada = "<input type='submit' value='".$lt{'upld'}."' /> $help{'Uploading_From_Harddrive'}"; |
my $fileuploadform=(<<FUFORM); |
my $fileuploadform=(<<FUFORM); |
<form name="uploaddocument" action="/adm/coursedocs" method="post" enctype="multipart/form-data"> |
<form name="uploaddocument" action="/adm/coursedocs" method="post" enctype="multipart/form-data"> |
|
<input type="hidden" name="active" value="aa" /> |
$fileupload |
$fileupload |
<br /> |
<br /> |
$lt{'title'}:<br /> |
$lt{'title'}:<br /> |
Line 2807 CHBO
|
Line 2966 CHBO
|
<span class="LC_nobreak"> |
<span class="LC_nobreak"> |
$checkbox |
$checkbox |
</span> |
</span> |
<br /> |
FUFORM |
<br /> |
#$list .= Apache::lonhtmlcommon::htmltag('li', $picture.' '.$button->{$picture}, {class => 'LC_menubuttons_inline_text'}); |
<span class="LC_nobreak"> |
#$fileuploadform .= create_form_ul(create_list_elements(@fileuploada)); |
<input type="submit" value="$lt{'upld'}" /> |
$fileuploadform .= create_form_ul(Apache::lonhtmlcommon::htmltag('li',$fileuploada,{class => 'LC_menubuttons_inline_text'})); |
$help{'Uploading_From_Harddrive'} |
$fileuploadform .= (<<FUFORM); |
</span> |
|
</form> |
</form> |
FUFORM |
FUFORM |
|
|
my $simpleeditdefaultform=(<<SEDFFORM); |
my $simpleeditdefaultform=(<<SEDFFORM); |
<form action="/adm/coursedocs" method="post" name="simpleeditdefault"> |
<form action="/adm/coursedocs" method="post" name="simpleeditdefault"> |
$lt{'pubd'}<br /> |
<input type="hidden" name="active" value="bb" /> |
$uploadtag |
SEDFFORM |
<input type="button" onClick="javascript:groupsearch()" value="$lt{'srch'}" /> |
my @simpleeditdefaultforma = ( |
<br /> |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/src.png" alt="'.$lt{srch}.'" onclick="javascript:groupsearch()" />' => "$uploadtag<a class='LC_menubuttons_link' href='javascript:groupsearch()'>$lt{'srch'}</a>" }, |
<span class="LC_nobreak"> |
{ '<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'}" }, |
<input type="button" onClick="javascript:groupimport();" value="$lt{'impo'}" /> |
{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/vbkm.png" alt="'.$lt{book}.'" onclick="javascript:groupopen(0,1,1);" />' => "<a class='LC_menubuttons_link' href='javascript:groupopen(0,1,1);'>$lt{'book'}</a>" }, |
$help{'Importing_LON-CAPA_Resource'} |
); |
</span> |
$simpleeditdefaultform .= create_form_ul(create_list_elements(@simpleeditdefaultforma)); |
<br /> |
$simpleeditdefaultform .=(<<SEDFFORM); |
<input type="button" onClick="javascript:groupopen(0,1,1);" value="$lt{'book'}" /> |
|
<hr /> |
<hr /> |
<p> |
<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> |
</p> |
Line 2844 SEDFFORM
|
Line 3001 SEDFFORM
|
<form action="/adm/coursedocs" method="post" name="newext"> |
<form action="/adm/coursedocs" method="post" name="newext"> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:makenewext('newext');">$lt{'extr'}</a>$help{'Adding_External_Resource'} |
<input name="newext" type="button" onClick="javascript:makenewext('newext');" |
|
value="$lt{'extr'}" /> $help{'Adding_External_Resource'} |
|
</span> |
|
</form> |
</form> |
ERFORM |
ERFORM |
|
|
Line 2865 ERFORM
|
Line 3019 ERFORM
|
if ($env{'form.folder'} eq '' || |
if ($env{'form.folder'} eq '' || |
$env{'form.folder'} eq 'supplemental') { |
$env{'form.folder'} eq 'supplemental') { |
$folderpath='default&'. |
$folderpath='default&'. |
&escape(&mt('Main '.$type.' Documents')); |
&escape(&mt('Main '.$crstype.' Documents')); |
} |
} |
} |
} |
unless ($env{'form.pagepath'}) { |
unless ($env{'form.pagepath'}) { |
$containertag = '<input type="hidden" name="folderpath" value="" />'; |
$containertag = '<input type="hidden" name="folderpath" value="" />'; |
$uploadtag = '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($folderpath,'<>&"').'" />'; |
$uploadtag = '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($folderpath,'<>&"').'" />'; |
} |
} |
$r->print(&generate_admin_options($containertag,$uploadtag,\%lt,\%help,\%env)); |
$r->print(<<HIDDENFORM); |
$r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc', |
<form name="renameform" method="post" action="/adm/coursedocs"> |
&mt('Editing the Table of Contents for your '.$type))); |
<input type="hidden" name="title" /> |
|
<input type="hidden" name="cmd" /> |
|
<input type="hidden" name="markcopy" /> |
|
<input type="hidden" name="copyfolder" /> |
|
$containertag |
|
</form> |
|
<form name="simpleedit" method="post" action="/adm/coursedocs"> |
|
<input type="hidden" name="importdetail" value="" /> |
|
$uploadtag |
|
</form> |
|
HIDDENFORM |
|
} |
|
# --------------------------------------------------------- Main tab structure |
|
|
|
my $activeClass = 1; |
|
my $active = ''; |
|
my %tabtitles = ( |
|
main => { |
|
Course => &mt('Main Course Documents'), |
|
Community => &mt('Main Community Documents'), |
|
}, |
|
supplemental => { |
|
Course => &mt('Supplemental Course Documents'), |
|
Community => &mt('Supplemental Community Documents'), |
|
}, |
|
); |
|
if ($allowed) { |
|
$r->print('<ul class="LC_TabContentBigger" id="mainnav">'); |
|
if (($standard) && ($allowed) && (!$forcesupplement) && (($env{'form.folderpath'}=~/^default/) || $env{'form.folderpath'}eq"" || ($env{'form.pagepath'}))) { |
|
if($activeClass == 1){ |
|
$active = 'class="active"'; |
|
$activeClass = 0; |
|
} |
|
} |
|
$r->print('<li '.$active |
|
. ' onmouseover="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');"' |
|
. ' onclick="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');"><a href="#"><b>'.$tabtitles{'main'}{$crstype}.'</b></a></li>'); |
|
$active = ''; |
|
if (!$forcestandard || ($env{'form.folderpath'}=~/^supplemental/)) { |
|
if($activeClass == 1){ |
|
$active = 'class="active"'; |
|
} |
|
} |
|
$r->print('<li '.$active |
|
.' onmouseover="javascript:showPage(this,\'supplCourseDocuments\',\'mainnav\',\'maincoursedoc\');"' |
|
.' onclick="javascript:showPage(this,\'supplCourseDocuments\',\'mainnav\',\'maincoursedoc\');"><a href="#"><b>'.$tabtitles{'supplemental'}{$crstype}.'</b></a></li>'); |
|
$r->print('</ul>'); |
|
} else { |
|
$r->print('<br />'); |
} |
} |
|
$r->print('<div class="LC_Box" style="clear:both;margin:0;">' |
|
.'<div id="maincoursedoc" style="margin:0 0;padding:0 0;">'); |
# --------------------------------------------------------- Standard documents |
# --------------------------------------------------------- Standard documents |
$r->print('<table class="LC_docs_documents">'); |
my $savefolderpath; |
|
$active = 'style="display: none;"'; |
if (($standard) && ($allowed) && (!$forcesupplement)) { |
if($activeClass == 0){ |
$r->print('<tr><td class="LC_docs_document">'); |
$active = 'style="display: block;"'; |
# '<h2>'.&mt('Main Course Documents'). |
} |
# ($allowed?' '.$help{'Main_Course_Documents'}:'').'</h2>'); |
if ($allowed) { |
|
$r->print('<div class="LC_ContentBox" id="mainCourseDocuments" '.$active.'>'); |
my $folder=$env{'form.folder'}; |
my $folder=$env{'form.folder'}; |
if ($folder eq '' || $folder eq 'supplemental') { |
if ($folder eq '' || $folder=~/^supplemental/) { |
$folder='default'; |
$folder='default'; |
$env{'form.folderpath'}='default&'.&escape(&mt('Main '.$type.' Documents')); |
$savefolderpath = $env{'form.folderpath'}; |
|
$env{'form.folderpath'}='default&'.&escape($tabtitles{'main'}{$crstype}); |
$uploadtag = '<input type="hidden" name="folderpath" value="'. |
$uploadtag = '<input type="hidden" name="folderpath" value="'. |
&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />'; |
&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />'; |
} |
} |
my $postexec=''; |
my $postexec=''; |
if ($folder eq 'default') { |
if ($folder eq 'default') { |
$r->print('<script type="text/javascript">this.window.name="loncapaclient";</script>'); |
$r->print('<script type="text/javascript">'."\n" |
|
.'// <![CDATA['."\n" |
|
.'this.window.name="loncapaclient";'."\n" |
|
.'// ]]>'."\n" |
|
.'</script>'."\n" |
|
); |
} else { |
} else { |
#$postexec='self.close();'; |
#$postexec='self.close();'; |
} |
} |
$hadchanges=0; |
|
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed, |
|
$upload_output,$type); |
|
if ($error) { |
|
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
|
} |
|
if ($hadchanges) { |
|
&mark_hash_old(); |
|
} |
|
&changewarning($r,$postexec); |
|
my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. |
my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. |
'.sequence'; |
'.sequence'; |
my $pageseq = '/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. |
my $pageseq = '/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. |
Line 2920 ERFORM
|
Line 3121 ERFORM
|
|
|
my $recoverform=(<<RFORM); |
my $recoverform=(<<RFORM); |
<form action="/adm/groupsort" method="post" name="recover"> |
<form action="/adm/groupsort" method="post" name="recover"> |
<input type="button" name="recovermap" onClick="javascript:groupopen('$readfile',1,0)" value="$lt{'reco'}" /> |
<a class="LC_menubuttons_link" href="javascript:groupopen('$readfile',1,0)">$lt{'reco'}</a> |
</form> |
</form> |
RFORM |
RFORM |
|
|
my $imspform=(<<IMSPFORM); |
my $imspform=(<<IMSPFORM); |
<form action="/adm/imsimportdocs" method="post" name="ims"> |
<form action="/adm/imsimportdocs" method="post" name="ims"> |
<input type="hidden" name="folder" value="$folder" /> |
<input type="hidden" name="folder" value="$folder" /> |
<input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" /> |
<a class="LC_menubuttons_link" href="javascript:makeims();">$lt{'imsf'}</a> |
</form> |
</form> |
IMSPFORM |
IMSPFORM |
|
|
my $newnavform=(<<NNFORM); |
my $newnavform=(<<NNFORM); |
<form action="/adm/coursedocs" method="post" name="newnav"> |
<form action="/adm/coursedocs" method="post" name="newnav"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'navc'}=/adm/navmaps" /> |
value="$lt{'navc'}=/adm/navmaps" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:document.newnav.submit()">$lt{'navc'}</a> |
<input name="newnav" type="submit" value="$lt{'navc'}" /> |
|
$help{'Navigate_Content'} |
$help{'Navigate_Content'} |
</span> |
|
</form> |
</form> |
NNFORM |
NNFORM |
my $newsmppageform=(<<NSPFORM); |
my $newsmppageform=(<<NSPFORM); |
<form action="/adm/coursedocs" method="post" name="newsmppg"> |
<form action="/adm/coursedocs" method="post" name="newsmppg"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:makesmppage();"> $lt{'sipa'}</a> |
<input name="newsmppg" type="button" value="$lt{'sipa'}" |
$help{'Simple Page'} |
onClick="javascript:makesmppage();" /> $help{'Simple Page'} |
|
</span> |
|
</form> |
</form> |
NSPFORM |
NSPFORM |
|
|
my $newsmpproblemform=(<<NSPROBFORM); |
my $newsmpproblemform=(<<NSPROBFORM); |
<form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
<form action="/adm/coursedocs" method="post" name="newsmpproblem"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:makesmpproblem();">$lt{'sipr'}</a> |
<input name="newsmpproblem" type="button" value="$lt{'sipr'}" |
$help{'Simple Problem'} |
onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} |
|
</span> |
|
</form> |
</form> |
|
|
NSPROBFORM |
NSPROBFORM |
|
|
my $newdropboxform=(<<NDBFORM); |
my $newdropboxform=(<<NDBFORM); |
<form action="/adm/coursedocs" method="post" name="newdropbox"> |
<form action="/adm/coursedocs" method="post" name="newdropbox"> |
$uploadtag |
<input type="hidden" name="active" value="cc" /> |
|
$uploadtag |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:makedropbox();">$lt{'drbx'}</a> |
<input name="newdropbox" type="button" value="$lt{'drbx'}" |
</form> |
onClick="javascript:makedropbox();" /> |
|
</span> |
|
</form> |
|
NDBFORM |
NDBFORM |
|
|
my $newexuploadform=(<<NEXUFORM); |
my $newexuploadform=(<<NEXUFORM); |
<form action="/adm/coursedocs" method="post" name="newexamupload"> |
<form action="/adm/coursedocs" method="post" name="newexamupload"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:makeexamupload();">$lt{'scuf'}</a> |
<input name="newexamupload" type="button" value="$lt{'scuf'}" |
|
onClick="javascript:makeexamupload();" /> |
|
$help{'Score_Upload_Form'} |
$help{'Score_Upload_Form'} |
</span> |
|
</form> |
</form> |
NEXUFORM |
NEXUFORM |
|
|
my $newbulform=(<<NBFORM); |
my $newbulform=(<<NBFORM); |
<form action="/adm/coursedocs" method="post" name="newbul"> |
<form action="/adm/coursedocs" method="post" name="newbul"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:makebulboard();" >$lt{'bull'}</a> |
<input name="newbulletin" type="button" value="$lt{'bull'}" |
|
onClick="javascript:makebulboard();" /> |
|
$help{'Bulletin Board'} |
$help{'Bulletin Board'} |
</span> |
|
</form> |
</form> |
NBFORM |
NBFORM |
|
|
my $newaboutmeform=(<<NAMFORM); |
my $newaboutmeform=(<<NAMFORM); |
<form action="/adm/coursedocs" method="post" name="newaboutme"> |
<form action="/adm/coursedocs" method="post" name="newaboutme"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:document.newaboutme.submit()">$lt{'mypi'}</a> |
<input name="newaboutme" type="submit" value="$lt{'mypi'}" /> |
$help{'My Personal Information Page'} |
$help{'My Personal Info'} |
|
</span> |
|
</form> |
</form> |
NAMFORM |
NAMFORM |
|
|
my $newaboutsomeoneform=(<<NASOFORM); |
my $newaboutsomeoneform=(<<NASOFORM); |
<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:makeabout();">$lt{'abou'}</a> |
<input name="newaboutsomeone" type="button" value="$lt{'abou'}" |
|
onClick="javascript:makeabout();" /> |
|
</span> |
|
</form> |
</form> |
NASOFORM |
NASOFORM |
|
|
|
|
my $newrosterform=(<<NROSTFORM); |
my $newrosterform=(<<NROSTFORM); |
<form action="/adm/coursedocs" method="post" name="newroster"> |
<form action="/adm/coursedocs" method="post" name="newroster"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'rost'}=/adm/viewclasslist" /> |
value="$lt{'rost'}=/adm/viewclasslist" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:document.newroster.submit()">$lt{'rost'}</a> |
<input name="newroster" type="submit" value="$lt{'rost'}" /> |
|
$help{'Course Roster'} |
$help{'Course Roster'} |
</span> |
|
</form> |
</form> |
NROSTFORM |
NROSTFORM |
|
|
$r->print(<<ENDFORM); |
my $specialdocumentsform; |
|
my @specialdocumentsforma; |
|
my $newfolderform; |
|
my $newfolderb; |
|
|
<ul class="LC_TabContent"> |
|
<li>$lt{'nd'}</li> |
|
<li>$lt{'pm'}</li> |
|
<li>$lt{'pubd'}</li> |
|
<li>$lt{'sd'}</li> |
|
<li>$lt{'mo'}</li> |
|
<li>$lt{'hao'}</li> |
|
</ul> |
|
|
|
<table class="LC_docs_adddocs"> |
|
<!-- <tr> |
|
<th>$lt{'uplm'}</th> |
|
<th>$lt{'impp'}</th> |
|
<th>$lt{'spec'}</th> |
|
</tr> --> |
|
<tr> |
|
<td> |
|
$fileuploadform |
|
</td> |
|
<td> |
|
$simpleeditdefaultform |
|
<hr /> |
|
$recoverform |
|
ENDFORM |
|
unless ($env{'form.pagepath'}) { |
|
$r->print(<<ENDFORM); |
|
<hr /> |
|
$extresourcesform |
|
<br /> |
|
$imspform |
|
ENDFORM |
|
} |
|
$r->print('</td><td>'); |
|
unless ($env{'form.pagepath'}) { |
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"> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<input type="hidden" name="active" value="cc" /> |
<input name="newpage" type="button" |
<a class="LC_menubuttons_link" href="javascript:makenewpage(document.newpage,'$pageseq');">$lt{'newp'}</a> |
onClick="javascript:makenewpage(this.form,'$pageseq');" |
$help{'Adding_Pages'} |
value="$lt{'newp'}" />$help{'Adding_Pages'} |
|
</span> |
|
</form> |
</form> |
NPFORM |
NPFORM |
|
|
my $newfolderform=(<<NFFORM); |
|
|
$newfolderform=(<<NFFORM); |
<form action="/adm/coursedocs" method="post" name="newfolder"> |
<form action="/adm/coursedocs" method="post" name="newfolder"> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<input type="hidden" name="active" value="aa" /> |
<input name="newfolder" type="button" |
<a href="javascript:makenewfolder(document.newfolder,'$folderseq');">$lt{'newf'}</a>$help{'Adding_Folders'} |
onClick="javascript:makenewfolder(this.form,'$folderseq');" |
|
value="$lt{'newf'}" />$help{'Adding_Folders'} |
|
</span> |
|
</form> |
</form> |
NFFORM |
NFFORM |
|
|
my $newsylform=(<<NSYLFORM); |
my $newsylform=(<<NSYLFORM); |
<form action="/adm/coursedocs" method="post" name="newsyl"> |
<form action="/adm/coursedocs" method="post" name="newsyl"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" /> |
value="$lt{'syll'}=/public/$coursedom/$coursenum/syllabus" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:document.newsyl.submit()">$lt{'syll'}</a> |
<input name="newsyl" type="submit" value="$lt{'syll'}" /> |
|
$help{'Syllabus'} |
$help{'Syllabus'} |
</span> |
|
</form> |
</form> |
NSYLFORM |
NSYLFORM |
|
|
my $newgroupfileform=(<<NGFFORM); |
my $newgroupfileform=(<<NGFFORM); |
<form action="/adm/coursedocs" method="post" name="newgroupfiles"> |
<form action="/adm/coursedocs" method="post" name="newgroupfiles"> |
|
<input type="hidden" name="active" value="cc" /> |
$uploadtag |
$uploadtag |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> |
value="$lt{'grpo'}=/adm/$coursedom/$coursenum/aboutme" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:document.newgroupfiles.submit()">$lt{'grpo'}</a> |
<input name="newgroupfiles" type="submit" value="$lt{'grpo'}" /> |
$help{'Group Portfolio'} |
$help{'Group Files'} |
|
</span> |
|
</form> |
</form> |
NGFFORM |
NGFFORM |
|
@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/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}, |
|
); |
|
|
|
} |
|
push @specialdocumentsforma, ({'<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}, |
|
{'<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/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}, |
|
{'<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},); |
|
|
|
$specialdocumentsform = create_form_ul(create_list_elements(@specialdocumentsforma)); |
|
|
$r->print(<<ENDFORM); |
if($env{'form.pagepath'}) { |
<br /> |
|
$newfolderform |
@specialdocumentsforma=( |
<br /> |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.&mt('Simple Problem').'" onclick="javascript:makesmpproblem();" />'=>$newsmpproblemform}, |
$newpageform |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/scoreupfrm.png" alt="'.&mt('Score Upload Form').'" onclick="javascript:makeexamupload();" />'=>$newexuploadform} |
<br /> |
); |
$newsylform |
$specialdocumentsform= create_form_ul(create_list_elements(@specialdocumentsforma)); |
<br /> |
} |
$newnavform |
|
<br /> |
my @tools = ( |
$newsmppageform |
# {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" />'=>$extresourcesform}, |
<br /> |
# {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" />'=>$imspform}, |
$newsmpproblemform |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/recover.png" alt="'.$lt{reco}.'" onclick="javascript:groupopen(\''.$readfile.'\',1,0)" />'=>$recoverform}, |
<br /> |
); |
$newdropboxform |
|
<br /> |
my @importdoc = ( |
$newexuploadform |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'newext\');" />'=>$extresourcesform}, |
<br /> |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" onclick="javascript:makeims();" />'=>$imspform}, |
$newbulform |
); |
<br /> |
$fileuploadform = create_form_ul(create_list_elements(@importdoc)) . '<hr/>' . $fileuploadform; |
$newaboutmeform |
my %orderhash = ( |
<br /> |
'00' => ['Newfolder',$newfolderform], |
$newaboutsomeoneform |
'aa' => ['Import Documents',$fileuploadform], |
<br /> |
'bb' => ['Published Resources',$simpleeditdefaultform], |
$newgroupfileform |
'cc' => ['Special Documents',$specialdocumentsform], |
<br /> |
'dd' => ['Tools', create_form_ul(create_list_elements(@tools)).&generate_admin_options($containertag,$uploadtag,\%help,\%env)], |
$newrosterform |
); |
ENDFORM |
my $tid='1'; |
|
$hadchanges=0; |
|
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); |
|
if ($error) { |
|
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
|
} |
|
if ($hadchanges) { |
|
&mark_hash_old(); |
} |
} |
|
|
|
&changewarning($r,''); |
|
$r->print(&generate_edit_table($tid,\%orderhash)); |
|
|
|
$r->print('</div>'); |
|
} |
if ($env{'form.pagepath'}) { |
if ($env{'form.pagepath'}) { |
$r->print(<<ENDBLOCK); |
|
$newsmpproblemform |
|
<br /> |
|
$newexuploadform |
|
ENDBLOCK |
|
} |
} |
$r->print('</td></tr>'."\n". |
|
'</table>'); |
|
$r->print('</td></tr>'); |
|
} |
|
# ----------------------------------------------------- Supplemental documents |
# ----------------------------------------------------- Supplemental documents |
if (!$forcestandard) { |
$active = 'style="display: none;"'; |
$r->print('<tr><td class="LC_docs_document">'); |
if($activeClass == 1){ |
# '<h2>'.&mt('Supplemental Course Documents'). |
$active = 'style="display: block;"'; |
# ($allowed?' '.$help{'Supplemental'}:'').'</h2>'); |
} |
|
$r->print('<div class="LC_ContentBox" id="supplCourseDocuments" '.$active.'>'); |
my $folder=$env{'form.folder'}; |
my $folder=$env{'form.folder'}; |
unless ($folder=~/^supplemental/) { |
unless ($folder=~/^supplemental/) { |
$folder='supplemental'; |
$folder='supplemental'; |
Line 3177 ENDBLOCK
|
Line 3350 ENDBLOCK
|
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&'. |
&escape(&mt('Supplemental '.$type.' Documents')); |
&escape(&mt('Supplemental '.$crstype.' Documents')); |
} |
} elsif ($allowed) { |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type); |
$env{'form.folderpath'} = $savefolderpath; |
if ($error) { |
|
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
|
} |
} |
|
$env{'form.pagepath'} = ''; |
if ($allowed) { |
if ($allowed) { |
my $folderseq= |
my $folderseq= |
'/uploaded/'.$coursedom.'/'.$coursenum.'/supplemental_'.time. |
'/uploaded/'.$coursedom.'/'.$coursenum.'/supplemental_'.time. |
Line 3190 ENDBLOCK
|
Line 3362 ENDBLOCK
|
|
|
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); |
|
|
|
my $supupdocformbtn = "<input type='submit' value='".$lt{'upld'}."' />$help{'Uploading_From_Harddrive'}"; |
my $supupdocform=(<<SUPDOCFORM); |
my $supupdocform=(<<SUPDOCFORM); |
<form action="/adm/coursedocs" method="post" enctype="multipart/form-data"> |
<form action="/adm/coursedocs" method="post" name="supuploaddocument" enctype="multipart/form-data"> |
|
<input type="hidden" name="active" value="ee" /> |
$fileupload |
$fileupload |
<br /> |
<br /> |
<br /> |
<br /> |
Line 3200 ENDBLOCK
|
Line 3374 ENDBLOCK
|
</span> |
</span> |
<br /><br /> |
<br /><br /> |
$lt{'comment'}:<br /> |
$lt{'comment'}:<br /> |
<textarea cols=50 rows=4 name='comment'> |
<textarea cols="50" rows="4" name="comment"></textarea> |
</textarea> |
|
<br /> |
<br /> |
<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" /> |
<span class="LC_nobreak"> |
|
<input type="submit" value="$lt{'upld'}" /> |
|
$help{'Uploading_From_Harddrive'} |
|
</span> |
|
</form> |
|
SUPDOCFORM |
SUPDOCFORM |
|
$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"> |
|
<input type="hidden" name="active" value="ee" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:makenewfolder(document.supnewfolder,'$folderseq');">$lt{'newf'}</a> |
<input name="newfolder" type="button" |
$help{'Adding_Folders'} |
onClick="javascript:makenewfolder(this.form,'$folderseq');" |
|
value="$lt{'newf'}" /> $help{'Adding_Folders'} |
|
</span> |
|
</form> |
</form> |
SNFFORM |
SNFFORM |
|
|
|
|
my $supnewextform=(<<SNEFORM); |
my $supnewextform=(<<SNEFORM); |
<form action="/adm/coursedocs" method="post" name="supnewext"> |
<form action="/adm/coursedocs" method="post" name="supnewext"> |
|
<input type="hidden" name="active" value="ff" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:makenewext('supnewext');">$lt{'extr'}</a> $help{'Adding_External_Resource'} |
<input name="newext" type="button" |
|
onClick="javascript:makenewext('supnewext');" |
|
value="$lt{'extr'}" /> $help{'Adding_External_Resource'} |
|
</span> |
|
</form> |
</form> |
SNEFORM |
SNEFORM |
|
|
my $supnewsylform=(<<SNSFORM); |
my $supnewsylform=(<<SNSFORM); |
<form action="/adm/coursedocs" method="post" name="supnewsyl"> |
<form action="/adm/coursedocs" method="post" name="supnewsyl"> |
|
<input type="hidden" name="active" value="ff" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="Syllabus=/public/$coursedom/$coursenum/syllabus" /> |
value="Syllabus=/public/$coursedom/$coursenum/syllabus" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:document.supnewsyl.submit()">$lt{'syll'}</a> |
<input name="newsyl" type="submit" value="$lt{'syll'}" /> |
|
$help{'Syllabus'} |
$help{'Syllabus'} |
</span> |
|
</form> |
</form> |
SNSFORM |
SNSFORM |
|
|
my $supnewaboutmeform=(<<SNAMFORM); |
my $supnewaboutmeform=(<<SNAMFORM); |
<form action="/adm/coursedocs" method="post" name="subnewaboutme"> |
<form action="/adm/coursedocs" method="post" name="supnewaboutme"> |
|
<input type="hidden" name="active" value="ff" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="folderpath" value="$path" /> |
<input type="hidden" name="importdetail" |
<input type="hidden" name="importdetail" |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
value="$plainname=/adm/$udom/$uname/aboutme" /> |
<span class="LC_nobreak"> |
<a class="LC_menubuttons_link" href="javascript:document.supnewaboutme.submit()">$lt{'mypi'}</a> |
<input name="newaboutme" type="submit" value="$lt{'mypi'}" /> |
$help{'My Personal Information Page'} |
$help{'My Personal Info'} |
|
</span> |
|
</form> |
</form> |
SNAMFORM |
SNAMFORM |
|
|
$r->print(<<ENDSUPFORM); |
|
<ul class="LC_TabContent"> |
my @specialdocs = ( |
<li>$lt{'nd'}</li> |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="document.supnewsyl.submit()" />' |
<li>$lt{'sd'}</li> |
=>$supnewsylform}, |
<li>$lt{'hao'}</li> |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/myaboutme.png" alt="'.$lt{mypi}.'" onclick="document.supnewaboutme.submit()" />' |
</ul> |
=>$supnewaboutmeform}, |
<table class="LC_docs_adddocs"> |
); |
<tr><td> |
my @supimportdoc = ( |
$supupdocform |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'supnewext\');" />' |
</td> |
=>$supnewextform}, |
<td> |
); |
$supnewfolderform |
$supupdocform = create_form_ul(create_list_elements(@supimportdoc)) . '<hr/>' . $supupdocform; |
<br /> |
my %suporderhash = ( |
$supnewextform |
'00' => ['Supnewfolder', $supnewfolderform], |
<br /> |
'ee' => ['Import Documents',$supupdocform], |
$supnewsylform |
'ff' => ['Special Documents',create_form_ul(create_list_elements(@specialdocs))] |
<br /> |
); |
$supnewaboutmeform |
|
</td></tr> |
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); |
</table></td></tr> |
if ($error) { |
ENDSUPFORM |
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
} |
} |
|
my $tid='2'; |
|
$r->print(&generate_edit_table($tid,\%suporderhash)); |
|
} else { |
|
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); |
|
if ($error) { |
|
$r->print('<p><span class="LC_error">'.$error.'</span></p>'); |
|
} |
} |
} |
$r->print('</table>'); |
|
|
|
|
$r->print('</div>'); |
|
$r->print('</div></div>'); |
|
|
|
|
if ($allowed) { |
if ($allowed) { |
$r->print(' |
$r->print(' |
<form method="post" name="extimport" action="/adm/coursedocs"> |
<form method="post" name="extimport" action="/adm/coursedocs"> |
Line 3306 ENDSUPFORM
|
Line 3480 ENDSUPFORM
|
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |
} |
} |
|
|
sub generate_admin_options { |
sub generate_admin_options { |
my ($containertag,$uploadtag,$lt_ref,$help_ref,$env_ref) = @_; |
my ($containertag,$uploadtag,$help_ref,$env_ref) = @_; |
my %lt = %{$lt_ref}; |
my %lt=&Apache::lonlocal::texthash( |
|
'vc' => 'Verify Content', |
|
'cv' => 'Check/Set Resource Versions', |
|
'ls' => 'List Symbs', |
|
'sl' => 'Show Log', |
|
'imse' => 'IMS Export', |
|
'dcd' => 'Dump Course Documents to Construction Space: available on other servers' |
|
); |
my %help = %{$help_ref}; |
my %help = %{$help_ref}; |
my %env = %{$env_ref}; |
my %env = %{$env_ref}; |
my $dumpbut=&dumpbutton(); |
my $dumpbut=&dumpbutton(); |
my $exportbut=&exportbutton(); |
my $exportbut=&exportbutton(); |
return (<<ENDOPTIONFORM); |
my @list = ( |
<form name="renameform" method="post" action="/adm/coursedocs"> |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/verify.png" alt="'.$lt{vc}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "verify", "'.$lt{'vc'}.'")\' />' |
<input type="hidden" name="title" /> |
=> "<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"verify\", \"$lt{'vc'}\")'>$lt{'vc'}</a>$help{'Verify_Content'}"}, |
<input type="hidden" name="cmd" /> |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/resversion.png" alt="'.$lt{cv}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "versions", "'.$lt{'cv'}.'")\' />' |
<input type="hidden" name="markcopy" /> |
=>"<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"versions\", \"$lt{'cv'}\")'>$lt{'cv'}</a>$help{'Check_Resource_Versions'}"}, |
<input type="hidden" name="copyfolder" /> |
); |
$containertag |
if($dumpbut ne ''){ |
</form> |
push @list, {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/dump.png" alt="'.$lt{dcd}.'" />'=>$dumpbut}; |
<form name="simpleedit" method="post" action="/adm/coursedocs"> |
} |
<input type="hidden" name="importdetail" value="" /> |
push @list, ({'<img class="LC_noBorder LC_middle" src="/res/adm/pages/imsexport.png" alt="'.$lt{imse}.'" class="LC_menubuttons_link" href=\'javascript:injectData(document.courseverify, "dummy", "exportcourse", "'.&mt('IMS Export').'")\' />' |
$uploadtag |
=>$exportbut}, |
</form> |
{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/symbs.png" alt="'.$lt{ls}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "listsymbs", "'.$lt{'ls'}.'")\' />' |
<form action="/adm/coursedocs" method="post" name="courseverify"> |
=>"<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"listsymbs\", \"$lt{'ls'}\")'>$lt{'ls'}</a><input type='hidden' name='folder' value='$env{'form.folder'}' />"}, |
<ul style="list-style-type:none"> |
{'<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'}.'")\' />' |
<li> |
=>"<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"docslog\", \"$lt{'sl'}\")'>$lt{'sl'}</a>"}, |
<input type="submit" name="verify" value="$lt{'vc'}" />$help{'Verify_Content'} |
); |
</li> |
return '<form action="/adm/coursedocs" method="post" name="courseverify"><input type="hidden" id="dummy" />'.create_form_ul(create_list_elements(@list)).'</form>'; |
<li> |
|
<input type="submit" name="versions" value="$lt{'cv'}" />$help{'Check_Resource_Versions'} |
|
</li> |
|
<li> |
|
$dumpbut |
|
</li> |
|
<li> |
|
$exportbut |
|
</li> |
|
<li> |
|
<input type="submit" name="listsymbs" value="$lt{'ls'}" /> |
|
</li> |
|
<li> |
|
<input type="hidden" name="folder" value="$env{'form.folder'}" /> |
|
<input type="submit" name="docslog" value="$lt{'sl'}" /> |
|
</li> |
|
</ul> |
|
</form> |
|
<div style="clear: both; height: 0px;"> </div> |
|
ENDOPTIONFORM |
|
} |
} |
|
|
|
|
sub generate_edit_table { |
sub generate_edit_table { |
my ($optionhash_ref,$namehash_ref,$orderhash_ref) = @_; |
my ($tid,$orderhash_ref) = @_; |
my %optionhash = %{$optionhash_ref}; #id verlinkt mit inhalt |
return unless(ref($orderhash_ref) eq 'HASH'); |
my %namehash = %{$namehash_ref}; #name verlinkt mit id |
my %orderhash = %{$orderhash_ref}; |
my %orderhash = %{$orderhash_ref}; #name mit kürzel verlinkt mit name |
|
my $form; |
my $form; |
$form = '<div class="LC_ContentBoxSpecial"><h4 class="LC_hcell">'.&mt('Upload Course Documents').'<h4>'; |
my $activetab; |
$form .= '<ul class="LC_TabContent">'; |
my $active; |
|
if($env{'form.active'} ne ''){ |
|
$activetab = $env{'form.active'}; |
|
} |
|
$form = '<div class="LC_Box" style="margin-right:0">'; |
|
$form .= '<ul id="navigation'.$tid.'" class="LC_TabContent">'; |
foreach my $name (sort(keys(%orderhash))){ |
foreach my $name (sort(keys(%orderhash))){ |
if($name eq 'zz_hide'){ |
if($name ne '00'){ |
$form .= '<li><a onclick="hideAllSection();" href="#">'.&mt($orderhash{$name}).'</a></li>'; |
if($activetab eq '' || $activetab ne $name){ |
}else{ |
$active = ''; |
$form .= '<li><a onclick="popUpSection(\''.$namehash{$orderhash{$name}}.'\');" href="#">'.&mt($orderhash{$name}).'</a></li>'; |
}elsif($activetab eq $name){ |
} |
$active = 'class="active"'; |
|
} |
|
$form .= '<li '.$active |
|
.' onmouseover="javascript:showPage(this, \''.$name.$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');"' |
|
.' onclick="javascript:showPage(this, \''.$name.$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');"><a href="javascript:;"><b>'.&mt(${$orderhash{$name}}[0]).'</b></a></li>'; |
|
} else { |
|
$form .= '<li '.$active.'>'.${$orderhash{$name}}[1].'</li>'; |
|
|
|
} |
} |
} |
foreach my $field (keys(%optionhash)){ |
$form .= '</ul>'; |
$form .= '<div id="'.$field.'" class="LC_ContentBox LC_hideThis">'.$optionhash{$field}.'</div>'; |
$form .= '<div id="content'.$tid.'" style="padding: 0 0; margin: 0 0; clear: both;">'; |
|
foreach my $field (keys(%orderhash)){ |
|
if($field ne '00'){ |
|
if($activetab eq '' || $activetab ne $field){ |
|
$active = 'style="display: none;"'; |
|
}elsif($activetab eq $field){ |
|
$active = 'style="display:block;"'; |
|
} |
|
$form .= '<div id="'.$field.$tid.'"' |
|
.' class="LC_ContentBox" '.$active.'>'.${$orderhash{$field}}[1] |
|
.'</div>'; |
|
} |
} |
} |
$form .= '</div>'; |
$form .= '</div></div>'; |
|
|
return $form; |
return $form; |
} |
} |
|
|
Line 3385 sub editing_js {
|
Line 3572 sub editing_js {
|
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 Uploaded Score', |
p_msp => 'Title for the 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', |
p_mbb => 'Title for the Bulletin Board', |
p_mbb => 'Title for the Discussion Board', |
p_mab => "Enter user:domain for User's 'About Me' Page", |
p_mab => "Enter user:domain for User's Personal Information Page", |
p_mab2 => "About [_99]", |
p_mab2 => 'Personal Information Page of ', |
p_mab_alrt1 => 'Not a valid user:domain', |
p_mab_alrt1 => 'Not a valid user:domain', |
p_mab_alrt2 => 'Please enter both user and domain in the format user:domain', |
p_mab_alrt2 => 'Please enter both user and domain in the format user:domain', |
p_chn => 'New Title', |
p_chn => 'New Title', |
Line 3438 function edittext(targetname,residx,titl
|
Line 3625 function edittext(targetname,residx,titl
|
|
|
function makeexamupload() { |
function makeexamupload() { |
var title=prompt('$lt{"p_mxu"}'); |
var title=prompt('$lt{"p_mxu"}'); |
if (title) { |
if (title) { |
this.document.forms.newexamupload.importdetail.value= |
this.document.forms.newexamupload.importdetail.value= |
escape(title)+'=/res/lib/templates/examupload.problem'; |
escape(title)+'=/res/lib/templates/examupload.problem'; |
this.document.forms.newexamupload.submit(); |
this.document.forms.newexamupload.submit(); |
Line 3447 function makeexamupload() {
|
Line 3634 function makeexamupload() {
|
|
|
function makesmppage() { |
function makesmppage() { |
var title=prompt('$lt{"p_msp"}'); |
var title=prompt('$lt{"p_msp"}'); |
if (title) { |
if (title) { |
this.document.forms.newsmppg.importdetail.value= |
this.document.forms.newsmppg.importdetail.value= |
escape(title)+'=/adm/$udom/$uname/$now/smppg'; |
escape(title)+'=/adm/$udom/$uname/$now/smppg'; |
this.document.forms.newsmppg.submit(); |
this.document.forms.newsmppg.submit(); |
Line 3456 function makesmppage() {
|
Line 3643 function makesmppage() {
|
|
|
function makesmpproblem() { |
function makesmpproblem() { |
var title=prompt('$lt{"p_msb"}'); |
var title=prompt('$lt{"p_msb"}'); |
if (title) { |
if (title) { |
this.document.forms.newsmpproblem.importdetail.value= |
this.document.forms.newsmpproblem.importdetail.value= |
escape(title)+'=/res/lib/templates/simpleproblem.problem'; |
escape(title)+'=/res/lib/templates/simpleproblem.problem'; |
this.document.forms.newsmpproblem.submit(); |
this.document.forms.newsmpproblem.submit(); |
Line 3465 function makesmpproblem() {
|
Line 3652 function makesmpproblem() {
|
|
|
function makedropbox() { |
function makedropbox() { |
var title=prompt('$lt{"p_mdb"}'); |
var title=prompt('$lt{"p_mdb"}'); |
if (title) { |
if (title) { |
this.document.forms.newdropbox.importdetail.value= |
this.document.forms.newdropbox.importdetail.value= |
escape(title)+'=/res/lib/templates/DropBox.problem'; |
escape(title)+'=/res/lib/templates/DropBox.problem'; |
this.document.forms.newdropbox.submit(); |
this.document.forms.newdropbox.submit(); |
Line 3490 function makeabout() {
|
Line 3677 function makeabout() {
|
if ((comp[0]) && (comp[1])) { |
if ((comp[0]) && (comp[1])) { |
this.document.forms.newaboutsomeone.importdetail.value= |
this.document.forms.newaboutsomeone.importdetail.value= |
'$lt{"p_mab2"}'+escape(user)+'=/adm/'+comp[1]+'/'+comp[0]+'/aboutme'; |
'$lt{"p_mab2"}'+escape(user)+'=/adm/'+comp[1]+'/'+comp[0]+'/aboutme'; |
this.document.forms.newaboutsomeone.submit(); |
this.document.forms.newaboutsomeone.submit(); |
} else { |
} else { |
alert("$lt{'p_mab_alrt1'}"); |
alert("$lt{'p_mab_alrt1'}"); |
} |
|
} else { |
|
alert("$lt{'p_mab_alrt2'}"); |
|
} |
|
} |
} |
|
} else { |
|
alert("$lt{'p_mab_alrt2'}"); |
|
} |
|
} |
} |
} |
|
|
function makeims() { |
function makeims() { |
var caller = document.forms.ims.folder.value; |
var caller = document.forms.ims.folder.value; |
var newlocation = "/adm/imsimportdocs?folder="+caller+"&phase=one"; |
var newlocation = "/adm/imsimportdocs?folder="+caller+"&phase=one"; |
newWindow = window.open("","IMSimport","HEIGHT=700,WIDTH=750,scrollbars=yes"); |
newWindow = window.open("","IMSimport","HEIGHT=700,WIDTH=750,scrollbars=yes"); |
newWindow.location.href = newlocation; |
newWindow.location.href = newlocation; |
} |
} |
|
|
|
|
function finishpick() { |
function finishpick() { |
var title=this.document.forms.extimport.title.value; |
var title=this.document.forms.extimport.title.value; |
var url=this.document.forms.extimport.url.value; |
var url=this.document.forms.extimport.url.value; |
var form=this.document.forms.extimport.useform.value; |
var form=this.document.forms.extimport.useform.value; |
var residx=this.document.forms.extimport.residx.value; |
var residx=this.document.forms.extimport.residx.value; |
eval('this.document.forms.'+form+'.importdetail.value="'+title+'='+url+'='+residx+'";this.document.forms.'+form+'.submit();'); |
eval('this.document.forms.'+form+'.importdetail.value="'+title+'='+url+'='+residx+'";this.document.forms.'+form+'.submit();'); |
} |
} |
|
|
function changename(folderpath,index,oldtitle,container,pagesymb) { |
function changename(folderpath,index,oldtitle,container,pagesymb) { |
var title=prompt('$lt{"p_chn"}',oldtitle); |
var title=prompt('$lt{"p_chn"}',oldtitle); |
if (title) { |
if (title) { |
this.document.forms.renameform.markcopy.value=-1; |
this.document.forms.renameform.markcopy.value=-1; |
this.document.forms.renameform.title.value=title; |
this.document.forms.renameform.title.value=title; |
this.document.forms.renameform.cmd.value='rename_'+index; |
this.document.forms.renameform.cmd.value='rename_'+index; |
if (container == 'sequence') { |
if (container == 'sequence') { |
this.document.forms.renameform.folderpath.value=folderpath; |
this.document.forms.renameform.folderpath.value=folderpath; |
} |
} |
if (container == 'page') { |
if (container == 'page') { |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
} |
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
} |
} |
|
|
function removeres(folderpath,index,oldtitle,container,pagesymb,skip_confirm) { |
function removeres(folderpath,index,oldtitle,container,pagesymb,skip_confirm) { |
if (skip_confirm || confirm('$lt{"p_rmr1"}\\n\\n$lt{"p_rmr2a"} "'+oldtitle+'" $lt{"p_rmr2b"}')) { |
if (skip_confirm || confirm('$lt{"p_rmr1"}\\n\\n$lt{"p_rmr2a"} "'+oldtitle+'" $lt{"p_rmr2b"}')) { |
this.document.forms.renameform.markcopy.value=-1; |
this.document.forms.renameform.markcopy.value=-1; |
this.document.forms.renameform.cmd.value='del_'+index; |
this.document.forms.renameform.cmd.value='del_'+index; |
if (container == 'sequence') { |
if (container == 'sequence') { |
this.document.forms.renameform.folderpath.value=folderpath; |
this.document.forms.renameform.folderpath.value=folderpath; |
} |
} |
if (container == 'page') { |
if (container == 'page') { |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
} |
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
} |
} |
|
|
function cutres(folderpath,index,oldtitle,container,pagesymb,folder,skip_confirm) { |
function cutres(folderpath,index,oldtitle,container,pagesymb,folder,skip_confirm) { |
if (skip_confirm || confirm('$lt{"p_ctr1a"}\\n$lt{"p_ctr1b"}\\n\\n$lt{"p_ctr2a"} "'+oldtitle+'" $lt{"p_ctr2b"}')) { |
if (skip_confirm || confirm('$lt{"p_ctr1a"}\\n$lt{"p_ctr1b"}\\n\\n$lt{"p_ctr2a"} "'+oldtitle+'" $lt{"p_ctr2b"}')) { |
this.document.forms.renameform.cmd.value='cut_'+index; |
this.document.forms.renameform.cmd.value='cut_'+index; |
this.document.forms.renameform.markcopy.value=index; |
this.document.forms.renameform.markcopy.value=index; |
this.document.forms.renameform.copyfolder.value=folder+'.'+container; |
this.document.forms.renameform.copyfolder.value=folder+'.'+container; |
if (container == 'sequence') { |
if (container == 'sequence') { |
this.document.forms.renameform.folderpath.value=folderpath; |
this.document.forms.renameform.folderpath.value=folderpath; |
} |
} |
if (container == 'page') { |
if (container == 'page') { |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
} |
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
} |
} |
|
|
function markcopy(folderpath,index,oldtitle,container,pagesymb,folder) { |
function markcopy(folderpath,index,oldtitle,container,pagesymb,folder) { |
this.document.forms.renameform.markcopy.value=index; |
this.document.forms.renameform.markcopy.value=index; |
this.document.forms.renameform.copyfolder.value=folder+'.'+container; |
this.document.forms.renameform.copyfolder.value=folder+'.'+container; |
if (container == 'sequence') { |
if (container == 'sequence') { |
this.document.forms.renameform.folderpath.value=folderpath; |
this.document.forms.renameform.folderpath.value=folderpath; |
} |
} |
if (container == 'page') { |
if (container == 'page') { |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagepath.value=folderpath; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
this.document.forms.renameform.pagesymb.value=pagesymb; |
} |
} |
this.document.forms.renameform.submit(); |
this.document.forms.renameform.submit(); |
} |
} |
|
|
|
function unselectInactive(nav) { |
|
currentNav = document.getElementById(nav); |
|
currentLis = currentNav.getElementsByTagName('LI'); |
|
for (i = 0; i < currentLis.length; i++) { |
|
if(currentLis[i].className == 'right active' || currentLis[i].className == 'right'){ |
|
currentLis[i].className = 'right'; |
|
}else{ |
|
currentLis[i].className = 'i'; |
|
} |
|
} |
|
} |
|
|
|
function hideAll(current, nav, data) { |
|
unselectInactive(nav); |
|
if(current.className == 'right'){ |
|
current.className = 'right active' |
|
}else{ |
|
current.className = 'active'; |
|
} |
|
currentData = document.getElementById(data); |
|
currentDivs = currentData.getElementsByTagName('DIV'); |
|
for (i = 0; i < currentDivs.length; i++) { |
|
if(currentDivs[i].className == 'LC_ContentBox'){ |
|
currentDivs[i].style.display = 'none'; |
|
} |
|
} |
|
} |
|
|
|
function openTabs(pageId) { |
|
tabnav = document.getElementById(pageId).getElementsByTagName('UL'); |
|
if(tabnav.length > 2 ){ |
|
currentNav = document.getElementById(tabnav[1].id); |
|
currentLis = currentNav.getElementsByTagName('LI'); |
|
for(i = 0; i< currentLis.length; i++){ |
|
if(currentLis[i].className == 'active') { |
|
funcString = currentLis[i].onclick.toString(); |
|
tab = funcString.split('"'); |
|
if(tab.length < 2) { |
|
tab = funcString.split("'"); |
|
} |
|
currentData = document.getElementById(tab[1]); |
|
currentData.style.display = 'block'; |
|
} |
|
} |
|
} |
|
} |
|
|
|
function showPage(current, pageId, nav, data) { |
|
hideAll(current, nav, data); |
|
openTabs(pageId); |
|
unselectInactive(nav); |
|
current.className = 'active'; |
|
currentData = document.getElementById(pageId); |
|
currentData.style.display = 'block'; |
|
return false; |
|
} |
|
|
|
function injectData(current, hiddenField, name, value) { |
|
currentElement = document.getElementById(hiddenField); |
|
currentElement.name = name; |
|
currentElement.value = value; |
|
current.submit(); |
|
} |
|
|
ENDNEWSCRIPT |
ENDNEWSCRIPT |
} |
} |
Line 3603 Available help topics
|
Line 3853 Available help topics
|
|
|
=item mapread() |
=item mapread() |
|
|
Mapread read maps into LONCAPA::map:: global arrays |
Mapread read maps into LONCAPA::map:: global arrays |
@order and @resources, determines status |
@order and @resources, determines status |
sets @order - pointer to resources in right order |
sets @order - pointer to resources in right order |
sets @resources - array with the resources with correct idx |
sets @resources - array with the resources with correct idx |