--- loncom/interface/londocs.pm 2009/10/04 09:41:12 1.387 +++ loncom/interface/londocs.pm 2010/03/18 13:48:45 1.422 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.387 2009/10/04 09:41:12 tempelho Exp $ +# $Id: londocs.pm,v 1.422 2010/03/18 13:48:45 onken Exp $ # # Copyright Michigan State University Board of Trustees # @@ -117,17 +117,22 @@ sub authorhosts { sub dumpbutton { my ($home,$other,%outhash)=&authorhosts(); - my $type = &Apache::loncommon::course_type(); + my $crstype = &Apache::loncommon::course_type(); if ($home+$other==0) { return ''; } if ($home) { - my $link = "<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"dumpcourse\", \"".&mt('Dump '.$type.' DOCS to Construction Space')."\")'>".&mt('Dump '.$type.' DOCS to Construction Space')."</a>"; - return $link.' '. - &Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs').'<br />'; - } else { - return '<div>'. - &mt('Dump '.$type. - ' DOCS to Construction Space: available on other servers'). - '</div>'; + my $link = + "<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"dumpcourse\", \"" + .&mt('Dump '.$crstype.' Documents to Construction Space') + ."\")'>" + .&mt('Dump '.$crstype.' Documents to Construction Space') + .'</a>'; + return + $link.' ' + .&Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs') + .'<br />'; + } else { + return + &mt('Dump '.$crstype.' Documents to Construction Space: available on other servers'); } } @@ -141,10 +146,10 @@ sub clean { sub dumpcourse { my ($r) = @_; - my $type = &Apache::loncommon::course_type(); - $r->print(&Apache::loncommon::start_page('Dump '.$type.' DOCS to Construction Space'). + my $crstype = &Apache::loncommon::course_type(); + $r->print(&Apache::loncommon::start_page('Dump '.$crstype.' Documents to Construction Space'). '<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(); unless ($home) { return ''; } my $origcrsid=$env{'request.course.id'}; @@ -255,14 +260,14 @@ sub dumpcourse { $r->print(&Apache::loncommon::end_data_table()); &untiehash(); $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 { - my $type = &Apache::loncommon::course_type(); + my $crstype = &Apache::loncommon::course_type(); return "<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"exportcourse\", \"".&mt('IMS Export')."\")'>".&mt('IMS Export')."</a>". &Apache::loncommon::help_open_topic('Docs_Export_Course_Docs').'<br />'; } @@ -271,18 +276,28 @@ sub exportbutton { sub exportcourse { my $r=shift; - my $type = &Apache::loncommon::course_type(); + my $crstype = &Apache::loncommon::course_type(); my %discussiontime = &Apache::lonnet::dump('discussiontimes', $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); my $numdisc = keys(%discussiontime); my $navmap = Apache::lonnavmaps::navmap->new(); if (!defined($navmap)) { - $r->print(&Apache::loncommon::start_page('Export '.$type.' to IMS Package'). + $r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package'). '<h2>'.&mt('IMS Export Failed').'</h2>'. - '<div class="LC_error">'. - &mt('Unable to retrieve information about course contents'). - '</div><a href="/adm/coursedocs">'.&mt('Return to Course Editor').'</a>'); - &Apache::lonnet::logthis('IMS export failed - could not create navmap object in '.lc($type).':'.$env{'request.course.id'}); + '<div class="LC_error">'); + if ($crstype eq 'Community') { + $r->print(&mt('Unable to retrieve information about community contents')); + } 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; } my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef); @@ -331,20 +346,20 @@ sub exportcourse { open(OUTPUT, "zip -r $imszip * 2> /dev/null |"); close(OUTPUT); chdir $cwd; + $outcome .= '<p>' + .&mt('[_1]Your IMS package[_2] is ready for download.' + ,'<a href="'.$imszipfile.'">','</a>') + .'</p>'; if ($copyresult) { $outcome .= '<p class="LC_error">' .&mt('The following errors occurred during export - [_1]' ,$copyresult) .'</p>'; } - $outcome .= '<p>' - .&mt('[_1]Your IMS package[_2] is ready for download.' - ,'<a href="'.$imszipfile.'">','</a>') - .'</p>'; } else { $outcome = '<p class="LC_error">' .&mt('Unfortunately you will not be able to retrieve' - .' an IMS archive of this posts at this time,' + .' an IMS archive of your course at this time,' .' because there was a problem creating a' .' manifest file.') .'</p>' @@ -353,29 +368,31 @@ sub exportcourse { .'</a></p>'; } } - $r->print(&Apache::loncommon::start_page('Export '.$type.' to IMS Package')); + $r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package')); $r->print(&Apache::lonhtmlcommon::breadcrumbs('IMS Export')); $r->print($outcome); $r->print(&Apache::loncommon::end_page()); } else { - my $display; - $display = '<form name="exportdoc" action="" method="post">'."\n"; - $display .= '<p>' - .&mt('Choose which items you wish to export from your '.$type.'.') - .'</p>'; - $display .= '<div class="LC_columnSection"><fieldset>'. + my $display='<form name="exportdoc" action="" method="post">'."\n". + '<p>'. + &mt('Choose which items you wish to export from your '.$crstype.'.'). + '</p>'. + '<div class="LC_columnSection"><fieldset>'. '<legend>'.&mt('Content items').'</legend>'. '<input type="button" value="'.&mt('check all').'" '. 'onclick="javascript:checkAll(document.exportdoc.archive)" />'. ' <input type="button" value="'.&mt('uncheck all').'"'. - ' onclick="javascript:uncheckAll(document.exportdoc.archive)" /></fieldset>'. - '<fieldset>'. - '<legend>'.&mt('Discussion posts').'</legend>'. - '<input type="button" value="'.&mt('check all').'"'. - ' onclick="javascript:checkAll(document.exportdoc.discussion)" />'. - ' <input type="button" value="'.&mt('uncheck all').'"'. - ' onclick="javascript:uncheckAll(document.exportdoc.discussion)" />'. - '</fieldset></div>'; + ' onclick="javascript:uncheckAll(document.exportdoc.archive)" /></fieldset>'; + if ($numdisc > 0) { + $display .= '<fieldset>'. + '<legend>'.&mt('Discussion posts').'</legend>'. + '<input type="button" value="'.&mt('check all').'"'. + ' onclick="javascript:checkAll(document.exportdoc.discussion)" />'. + ' <input type="button" value="'.&mt('uncheck all').'"'. + ' onclick="javascript:uncheckAll(document.exportdoc.discussion)" />'. + '</fieldset>'; + } + $display .= '</div>'; my $curRes; my $depth = 0; my $count = 0; @@ -386,15 +403,11 @@ sub exportcourse { my $lastcontainer = $startcount; $display .= &Apache::loncommon::start_data_table() .&Apache::loncommon::start_data_table_header_row() - .'<th>'.&mt('Export content item?').'</th>' - .'<th>'; + .'<th>'.&mt('Export content item?').'</th>'; if ($numdisc > 0) { - $display .= &mt('Export discussion posts?'); - } else { - $display .= ' '; + $display .= '<th>'.&mt('Export discussion posts?').'</th>'; } - $display .= '</th>' - .&Apache::loncommon::end_data_table_header_row(); + $display .= &Apache::loncommon::end_data_table_header_row(); while ($curRes = $it->next()) { if (ref($curRes)) { $count ++; @@ -415,37 +428,33 @@ sub exportcourse { $ressymb = 'bulletin___'.$3.'___adm/wrapper/adm/'.$1.'/'.$2.'/'.$3.'/bulletinboard'; } } + my $currelem = $count+$boards+$startcount; $display .= &Apache::loncommon::start_data_table_row() .'<td>'."\n" .'<input type="checkbox" name="archive" value="'.$count.'" '; if (($curRes->is_sequence()) || ($curRes->is_page())) { - my $checkitem = $count + $boards + $startcount; - $display .= 'onclick="javascript:propagateCheck('."'$checkitem'".')"'; + $lastcontainer = $currelem; + $display .= 'onclick="javascript:propagateCheck('."'$currelem'".')"'; } $display .= ' />'."\n"; for (my $i=0; $i<$depth; $i++) { - $display .= '<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" alt="" />' - .'<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" alt="" />'."\n"; + $display .= ('<img src="/adm/lonIcons/whitespace1.gif" class="LC_docs_spacer" alt="" />' x2)."\n"; } if ($curRes->is_sequence()) { $display .= '<img src="/adm/lonIcons/navmap.folder.open.gif" alt="" /> '."\n"; - $lastcontainer = $count + $startcount + $boards; } elsif ($curRes->is_page()) { $display .= '<img src="/adm/lonIcons/navmap.page.open.gif" alt="" /> '."\n"; - $lastcontainer = $count + $startcount + $boards; } - my $currelem = $count+$boards+$startcount; $children{$parent{$depth}} .= $currelem.':'; $display .= ' '.$curRes->title().'</td>'."\n"; # Existing discussion posts? if ($discussiontime{$ressymb} > 0) { $boards ++; - $currelem = $count+$boards+$startcount; $display .= '<td align="right">' .'<input type="checkbox" name="discussion" value="'.$count.'" />' .'</td>'."\n"; - } else { + } elsif ($numdisc > 0) { $display .= '<td> </td>'."\n"; } $display .= &Apache::loncommon::end_data_table_row(); @@ -507,7 +516,7 @@ function containerCheck(item) { // ]]> </script> |; - $r->print(&Apache::loncommon::start_page('Export '.$type.' to IMS Package', + $r->print(&Apache::loncommon::start_page('Export '.$crstype.' to IMS Package', $scripttag)); $r->print(&Apache::lonhtmlcommon::breadcrumbs('IMS Export')); $r->print($display. @@ -998,7 +1007,7 @@ sub group_import { } sub breadcrumbs { - my ($where,$allowed,$type)=@_; + my ($allowed,$crstype)=@_; &Apache::lonhtmlcommon::clear_breadcrumbs(); my (@folders); if ($env{'form.pagepath'}) { @@ -1013,6 +1022,15 @@ sub breadcrumbs { my $isencrypted=0; my $ishidden=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) { my $folder=shift(@folders); my $foldername=shift(@folders); @@ -1032,11 +1050,7 @@ sub breadcrumbs { if ($3) { $isencrypted=1; } if ($4 ne '') { $is_random_order = 1; } if ($folder eq 'supplemental') { - if ($allowed) { - $name = &mt('Supplemental '.$type.' Documents'); - } else { - $name = &mt($type.' Documents'); - } + $name = &mt('Supplemental '.$crstype.' Documents'); } &Apache::lonhtmlcommon::add_breadcrumb( {'href'=>$url.$cpinfo, @@ -1492,8 +1506,7 @@ sub handle_edit_cmd { } 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' : 'sequence'; @@ -1508,9 +1521,14 @@ sub editor { $LONCAPA::map::resources[$idx]=''; } - my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order)= - &breadcrumbs($folder,$allowed,$type); - $r->print($breadcrumbtrail); + my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order); + if ($allowed) { + ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order) = + &breadcrumbs($allowed,$crstype); + $r->print($breadcrumbtrail); + } else { + $randompick = -1; + } # ------------------------------------------------------------ Process commands @@ -1627,23 +1645,26 @@ sub editor { unless ($name) { $name=(split(/\//,$url))[-1]; } unless ($name) { $idx++; next; } $output .= &entryline($idx,$name,$url,$folder,$allowed,$res, - $coursenum); + $coursenum,$crstype); $idx++; $shown++; } if ($shown) { - $r->print(&Apache::loncommon::start_data_table() - .&Apache::loncommon::start_data_table_header_row() - .'<th colspan="2">'.&mt('Move').'</th>' - .'<th>'.&mt('Actions').'</th>' - .'<th colspan="2">'.&mt('Document').'</th>' - .'<th colspan="4">'.&mt('Settings').'</th>' - .&Apache::loncommon::end_data_table_header_row() - .$output - .&Apache::loncommon::end_data_table() - ) - } - unless($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>' @@ -1780,6 +1801,7 @@ sub parse_supplemental_title { $foldertitle=&Apache::lontexconvert::msgtexconverted($4); my $name = &Apache::loncommon::plainname($uname,$udom); $name = &HTML::Entities::encode($name,'"<>&\''); + $renametitle = &HTML::Entities::encode($renametitle,'"<>&\''); $title='<i>'.&Apache::lonlocal::locallocaltime($time).'</i> '. $name.': <br />'.$foldertitle; } @@ -1792,8 +1814,7 @@ sub parse_supplemental_title { # --------------------------------------------------------------- An entry line sub entryline { - my ($index,$title,$url,$folder,$allowed,$residx,$coursenum)=@_; - + my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$crstype)=@_; my ($foldertitle,$pagetitle,$renametitle); if (&is_supplemental_title($title)) { ($title,$foldertitle,$renametitle) = &parse_supplemental_title($title); @@ -2050,18 +2071,24 @@ END $url.='pagepath='.&escape($pagepath). '&pagesymb='.&escape($symb).$cpinfo; } - if ($external) { + if (($external) && ($allowed)) { 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>'; } else { undef($external); } + my $reinit; + if ($crstype eq 'Community') { + $reinit = &mt('(re-initialize community to access)'); + } else { + $reinit = &mt('(re-initialize course to access)'); + } $line.=' <td> '.($url?'<a href="'.$url.'">':'').'<img src="'.$icon.'" alt="" class="LC_icon" />'.($url?'</a>':'').' </td> <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>"; if (($allowed) && ($folder!~/^supplemental/)) { my %lt=&Apache::lonlocal::texthash( @@ -2209,7 +2236,7 @@ List Symbs sub list_symbs { 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::lonhtmlcommon::breadcrumbs('Symb List')); my $navmap = Apache::lonnavmaps::navmap->new(); @@ -2218,25 +2245,25 @@ sub list_symbs { '<div class="LC_error">'. &mt('Unable to retrieve information about course contents'). '</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 { $r->print("<pre>\n"); 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('<a href="/adm/coursedocs">'.&mt('Return to DOCS').'</a>'); + $r->print('<hr /><a href="/adm/coursedocs">'.&mt('Back to Course Editor').'</a>'); } sub verifycontent { my ($r) = @_; - my $type = &Apache::loncommon::course_type(); + my $crstype = &Apache::loncommon::course_type(); my $loaderror=&Apache::lonnet::overloaderror($r); if ($loaderror) { return $loaderror; } - $r->print(&Apache::loncommon::start_page('Verify '.$type.' Documents')); - $r->print(&Apache::lonhtmlcommon::breadcrumbs('Verify '.$type.' Documents')); + $r->print(&Apache::loncommon::start_page('Verify '.$crstype.' Documents')); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Verify '.$crstype.' Documents')); $hashtied=0; undef %alreadyseen; %alreadyseen=(); @@ -2245,9 +2272,9 @@ sub verifycontent { if ($hash{$key}=~/\.(page|sequence)$/) { if (($key=~/^src_/) && ($alreadyseen{&unescape($hash{$key})})) { $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 />'. - &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})})) { @@ -2255,8 +2282,13 @@ sub verifycontent { } } &untiehash(); - $r->print('<h1>'.&mt('Done').'.</h1>'.'<a href="/adm/coursedocs">'. - &mt('Return to DOCS').'</a>'); + $r->print( + '<p class="LC_success">'.&mt('Done').'</p>' + .'<hr />' + .'<p><a href="/adm/coursedocs">' + .&mt('Back to Course Editor') + .'</a></p>' + ); } @@ -2268,9 +2300,9 @@ sub devalidateversioncache { sub checkversions { my ($r) = @_; - my $type = &Apache::loncommon::course_type(); - $r->print(&Apache::loncommon::start_page("Check $type Document Versions")); - $r->print(&Apache::lonhtmlcommon::breadcrumbs("Check $type Document Versions")); + my $crstype = &Apache::loncommon::course_type(); + $r->print(&Apache::loncommon::start_page("Check $crstype Document Versions")); + $r->print(&Apache::lonhtmlcommon::breadcrumbs("Check $crstype Document Versions")); my $header=''; my $startsel=''; my $monthsel=''; @@ -2331,7 +2363,7 @@ sub checkversions { &changewarning($r,''); if ($env{'form.timerange'} eq 'all') { # show all documents - $header=&mt('All Documents in '.$type); + $header=&mt('All Documents in '.$crstype); $allsel=1; foreach my $key (keys(%hash)) { if ($key=~/^ids\_(\/res\/.+)$/) { @@ -2376,7 +2408,7 @@ sub checkversions { $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); 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', 'lw' => 'Version changes since last Week', 'sy' => 'Version changes since Yesterday', @@ -2385,9 +2417,9 @@ sub checkversions { 'fi' => 'File', 'md' => 'Modification Date', 'mr' => 'Most recently published Version', - 've' => 'Version used in '.$type, - 'vu' => 'Set Version to be used in '.$type, -'sv' => 'Set Versions to be used in '.$type.' according to Selections below', + 've' => 'Version used in '.$crstype, + 'vu' => 'Set Version to be used in '.$crstype, +'sv' => 'Set Versions to be used in '.$crstype.' according to Selections below', 'sm' => 'Keep all Resources up-to-date with most recent Versions (default)', 'sc' => 'Set all Resource Versions to current Version (Fix Versions)', 'di' => 'Differences'); @@ -2434,7 +2466,7 @@ ENDHEADERS '<td title="'.$lt{'mr'}.'"><span class="LC_nobreak">Most Recent: '. '<font size="+1">'.$currentversion.'</font>'. '</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">'); # Used in course my $usedversion=$hash{'version_'.$linkurl}; @@ -2451,7 +2483,7 @@ ENDHEADERS ('select_form_order' => ['',1..$currentversion,'mostrecent'], '' => '', - 'mostrecent' => 'most recent', + 'mostrecent' => &mt('most recent'), map {$_,$_} (1..$currentversion)))); $r->print('</span></td></tr><tr><td></td>'); my $lastold=1; @@ -2506,7 +2538,7 @@ ENDHEADERS } } $r->print('</table></form>'); - $r->print('<h1>'.&mt('Done').'.</h1>'); + $r->print('<p class="LC_success">'.&mt('Done').'</p>'); &untiehash(); } @@ -2571,7 +2603,7 @@ sub init_breadcrumbs { my ($form,$text)=@_; &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb({href=>"/adm/coursedocs", - text=>"Edit ".&Apache::loncommon::course_type(), + text=>&Apache::loncommon::course_type().' Editor', faq=>273, bug=>'Instructor Interface', help => 'Docs_Adding_Course_Doc'}); @@ -2589,7 +2621,7 @@ sub handler { &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; return OK if $r->header_only; - my $type = &Apache::loncommon::course_type(); + my $crstype = &Apache::loncommon::course_type(); # --------------------------------------------- Initialize help topics for this @@ -2630,7 +2662,7 @@ sub handler { &init_breadcrumbs('versions','Check/Set Resource Versions'); &checkversions($r); } 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); } elsif ($allowed && $env{'form.exportcourse'}) { &init_breadcrumbs('exportcourse','IMS Export'); @@ -2655,7 +2687,12 @@ sub handler { &Apache::loncommon::restore_course_settings('docs_folderpath', {'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', {'pagepath' => 'scalar'}); } @@ -2664,7 +2701,7 @@ sub handler { } if ($env{'form.folderpath'} =~ /^supplemental_\d+/) { $env{'form.folderpath'} = 'supplemental&'. - &escape(&mt('Supplemental '.$type.' Documents')).'&'. + &escape(&mt('Supplemental '.$crstype.' Documents')).'&'. $env{'form.folderpath'}; } &Apache::loncommon::store_course_settings('docs_folderpath', @@ -2687,7 +2724,9 @@ sub handler { if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) { $showdoc='/'.$1; } - unless ($showdoc) { # got called from remote + if ($showdoc) { # got called in sequence from course + $allowed=0; + } else { if (($env{'form.folder'}=~/^(?:group|default)_/) || ($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) { $forcestandard = 1; @@ -2698,8 +2737,6 @@ sub handler { &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']); $script=&Apache::lonratedt::editscript('simple'); } - } else { # got called in sequence from course - $allowed=0; } # subroutine to list form elements @@ -2747,16 +2784,30 @@ sub create_form_ul { # Breadcrumbs &Apache::lonhtmlcommon::clear_breadcrumbs(); - &Apache::lonhtmlcommon::add_breadcrumb({ - href=>"/adm/createuser",text=>"$type Documents"}); + if ($allowed) { + &Apache::lonhtmlcommon::add_breadcrumb({ + href=>"/adm/coursedocs",text=>"$crstype Editor"}); - $r->print(&Apache::loncommon::start_page("$type Documents", $script, - {'force_register' => $showdoc,}) - .&Apache::loncommon::help_open_menu('','',273,'RAT') - .&Apache::lonhtmlcommon::breadcrumbs( - 'Editing the Table of Contents for your '.$type, - 'Docs_Adding_Course_Doc') - ); + $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 %codebase = (); @@ -2848,17 +2899,17 @@ sub create_form_ul { unless ($showdoc || $upload_result eq 'phasetwo') { # ----------------------------------------------------------------------------- my %lt=&Apache::lonlocal::texthash( - 'uplm' => 'Upload a new main '.lc($type).' document', - 'upls' => 'Upload a new supplemental '.lc($type).' document', + 'uplm' => 'Upload a new main '.lc($crstype).' document', + 'upls' => 'Upload a new supplemental '.lc($crstype).' document', 'impp' => 'Import a document', 'copm' => 'All documents out of a published map into this folder', - 'upld' => 'Upload Document', + 'upld' => 'Import Document', 'srch' => 'Search', 'impo' => 'Import', 'book' => 'Import Bookmarks', 'selm' => 'Select Map', 'load' => 'Load Map', - 'reco' => 'Recover Deleted Resources', + 'reco' => 'Recover Deleted Documents', 'newf' => 'New Folder', 'newp' => 'New Composite Page', 'extr' => 'External Resource', @@ -2878,7 +2929,7 @@ sub create_form_ul { 'file' => 'File', 'title' => 'Title', 'comment' => 'Comment', - 'parse' => 'Upload embedded images/multimedia files if HTML file!', + 'parse' => 'Upload embedded images/multimedia files if HTML file', 'nd' => 'Upload Document', 'pm' => 'Published Map', 'sd' => 'Special Document', @@ -2899,9 +2950,7 @@ FIUP </label> CHBO - my @fileuploada = ( - { '<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic01" />' => "<input type='submit' value='".$lt{'upld'}."' /> $help{'Uploading_From_Harddrive'}" }, - ); + my $fileuploada = "<input type='submit' value='".$lt{'upld'}."' /> $help{'Uploading_From_Harddrive'}"; my $fileuploadform=(<<FUFORM); <form name="uploaddocument" action="/adm/coursedocs" method="post" enctype="multipart/form-data"> <input type="hidden" name="active" value="aa" /> @@ -2916,7 +2965,9 @@ CHBO $checkbox </span> FUFORM - $fileuploadform .= create_form_ul(create_list_elements(@fileuploada)); + #$list .= Apache::lonhtmlcommon::htmltag('li', $picture.' '.$button->{$picture}, {class => 'LC_menubuttons_inline_text'}); + #$fileuploadform .= create_form_ul(create_list_elements(@fileuploada)); + $fileuploadform .= create_form_ul(Apache::lonhtmlcommon::htmltag('li',$fileuploada,{class => 'LC_menubuttons_inline_text'})); $fileuploadform .= (<<FUFORM); </form> FUFORM @@ -2926,9 +2977,9 @@ FUFORM <input type="hidden" name="active" value="bb" /> SEDFFORM my @simpleeditdefaultforma = ( - { '<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic03" />' => "$uploadtag<a onclick='javascript:groupsearch()'>$lt{'srch'}</a>" }, - { '<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic04" />' => "<a onclick='javascript:groupimport();'>$lt{'impo'}</a>$help{'Importing_LON-CAPA_Resource'}" }, - { '<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic05" />' => "<a onclick='javascript:groupopen(0,1,1);'>$lt{'book'}</a>" }, + { '<img class="LC_noBorder LC_middle" src="/res/adm/pages/src.png" alt="'.$lt{srch}.'" onclick="javascript:groupsearch()" />' => "$uploadtag<a onclick='javascript:groupsearch()'>$lt{'srch'}</a>" }, + { '<img class="LC_noBorder LC_middle" src="/res/adm/pages/res.png" alt="'.$lt{impo}.'" onclick="javascript:groupimport();"/>' => "<a onclick='javascript:groupimport();'>$lt{'impo'}</a>$help{'Importing_LON-CAPA_Resource'}" }, + { '<img class="LC_noBorder LC_middle" src="/res/adm/pages/vbkm.png" alt="'.$lt{book}.'" onclick="javascript:groupopen(0,1,1);" />' => "<a onclick='javascript:groupopen(0,1,1);'>$lt{'book'}</a>" }, ); $simpleeditdefaultform .= create_form_ul(create_list_elements(@simpleeditdefaultforma)); $simpleeditdefaultform .=(<<SEDFFORM); @@ -2966,7 +3017,7 @@ ERFORM if ($env{'form.folder'} eq '' || $env{'form.folder'} eq 'supplemental') { $folderpath='default&'. - &escape(&mt('Main '.$type.' Documents')); + &escape(&mt('Main '.$crstype.' Documents')); } } unless ($env{'form.pagepath'}) { @@ -2988,43 +3039,54 @@ ERFORM HIDDENFORM } # --------------------------------------------------------- Main tab structure - + my $activeClass = 1; my $active = ''; - - $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; - } - } - if($env{'request.role'}=~/^cc/){ - $r->print('<li '.$active.' onclick="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');"><a href="#"><b>'.&mt('Main Course Documents').'</b></a></li>'); - } - $active = ''; - if (!$forcestandard || ($env{'form.folderpath'}=~/^supplemental/)) { - if($activeClass == 1){ - $active = 'class="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.' 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.' 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('<li '.$active.' onclick="javascript:showPage(this,\'supplCourseDocuments\',\'mainnav\',\'maincoursedoc\');"><a href="#"><b>'.&mt('Supplemental Course Documents').'</b></a></li>'); - $r->print('</ul>' - .'<div class="LC_Box" style="clear:both;margin:0;">' + $r->print('<div class="LC_Box" style="clear:both;margin:0;">' .'<div id="maincoursedoc" style="margin:0 0;padding:0 0;">'); # --------------------------------------------------------- Standard documents my $savefolderpath; - my $active = 'style="display: none;"'; + $active = 'style="display: none;"'; if($activeClass == 0){ $active = 'style="display: block;"'; } - if($env{'request.role'}=~/^cc/){ + if ($allowed) { $r->print('<div class="LC_ContentBox" id="mainCourseDocuments" '.$active.'>'); my $folder=$env{'form.folder'}; if ($folder eq '' || $folder=~/^supplemental/) { $folder='default'; $savefolderpath = $env{'form.folderpath'}; - $env{'form.folderpath'}='default&'.&escape(&mt('Main '.$type.' Documents')); + $env{'form.folderpath'}='default&'.&escape($tabtitles{'main'}{$crstype}); $uploadtag = '<input type="hidden" name="folderpath" value="'. &HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />'; } @@ -3159,6 +3221,7 @@ NROSTFORM my $specialdocumentsform; my @specialdocumentsforma; my $newfolderform; +my $newfolderb; unless ($env{'form.pagepath'}) { my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); @@ -3172,21 +3235,16 @@ my $newfolderform; $help{'Adding_Pages'} </form> NPFORM - + + $newfolderform=(<<NFFORM); <form action="/adm/coursedocs" method="post" name="newfolder"> <input type="hidden" name="folderpath" value="$path" /> <input type="hidden" name="importdetail" value="" /> <input type="hidden" name="active" value="aa" /> - <a onclick="javascript:makenewfolder(document.newfolder,'$folderseq');">$lt{'newf'}</a>$help{'Adding_Folders'} + <a href="javascript:makenewfolder(document.newfolder,'$folderseq');">$lt{'newf'}</a>$help{'Adding_Folders'} </form> NFFORM - my @newfolderforma= ( - { '<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic02" />' => "$newfolderform" } - ); - - - $newfolderform = create_form_ul(create_list_elements(@newfolderforma)); my $newsylform=(<<NSYLFORM); <form action="/adm/coursedocs" method="post" name="newsyl"> @@ -3211,51 +3269,54 @@ NSYLFORM </form> NGFFORM @specialdocumentsforma=( - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic06" />'=>$newpageform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic07" />'=>$newsylform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic08" />'=>$newgroupfileform}, + {'<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" align="left" src="/res/adm/pages/docspacer.gif" alt="pic09" />'=>$newnavform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic10" />'=>$newsmppageform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic11" />'=>$newsmpproblemform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic12" />'=>$newdropboxform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic13" />'=>$newexuploadform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic14" />'=>$newbulform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic15" />'=>$newaboutmeform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic16" />'=>$newaboutsomeoneform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic17" />'=>$newrosterform},); + 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/chrt.png" alt="'.$lt{rost}.'" onclick="document.newroster.submit()" />'=>$newrosterform},); $specialdocumentsform = create_form_ul(create_list_elements(@specialdocumentsforma)); if($env{'form.pagepath'}) { @specialdocumentsforma=( - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic32" />'=>$newsmpproblemform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic33" />'=>$newexuploadform} + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.&mt('Simple Problem').'" onclick="javascript:makesmpproblem();" />'=>$newsmpproblemform}, + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/scoreupfrm.png" alt="'.&mt('Score Upload Form').'" onclick="javascript:makeexamupload();" />'=>$newexuploadform} ); $specialdocumentsform= create_form_ul(create_list_elements(@specialdocumentsforma)); } my @tools = ( - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic18" />'=>$extresourcesform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic19" />'=>$imspform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic20" />'=>$recoverform}, +# {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" />'=>$extresourcesform}, +# {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" />'=>$imspform}, + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/recover.png" alt="'.$lt{reco}.'" onclick="javascript:groupopen(\''.$readfile.'\',1,0)" />'=>$recoverform}, ); +my @importdoc = ( + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'newext\');" />'=>$extresourcesform}, + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" onclick="javascript:makeims();" />'=>$imspform}, +); +$fileuploadform = create_form_ul(create_list_elements(@importdoc)) . '<hr/>' . $fileuploadform; my %orderhash = ( - 'aa' => ['Upload Document',$fileuploadform.''.$newfolderform], + '00' => ['Newfolder',$newfolderform], + 'aa' => ['Import Documents',$fileuploadform], 'bb' => ['Published Resources',$simpleeditdefaultform], 'cc' => ['Special Documents',$specialdocumentsform], 'dd' => ['Tools', create_form_ul(create_list_elements(@tools)).&generate_admin_options($containertag,$uploadtag,\%help,\%env)], - 'zz' => ['Hide'], ); my $tid='1'; -my $varcd = 'Main Course Documents'; -$r->print(&generate_edit_table($tid,$varcd,\%orderhash)); $hadchanges=0; - my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type); + my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); if ($error) { $r->print('<p><span class="LC_error">'.$error.'</span></p>'); } @@ -3264,12 +3325,14 @@ $r->print(&generate_edit_table($tid,$var } &changewarning($r,''); +$r->print(&generate_edit_table($tid,\%orderhash)); + $r->print('</div>'); } if ($env{'form.pagepath'}) { } # ----------------------------------------------------- Supplemental documents - my $active = 'style="display: none;"'; + $active = 'style="display: none;"'; if($activeClass == 1){ $active = 'style="display: block;"'; } @@ -3281,8 +3344,8 @@ $r->print('</div>'); if ($folder =~ /^supplemental$/ && (($env{'form.folderpath'} =~ /^default\&/) || ($env{'form.folderpath'} eq ''))) { $env{'form.folderpath'} = 'supplemental&'. - &escape(&mt('Supplemental '.$type.' Documents')); - }else{ + &escape(&mt('Supplemental '.$crstype.' Documents')); + } elsif ($allowed) { $env{'form.folderpath'} = $savefolderpath; } $env{'form.pagepath'} = ''; @@ -3293,9 +3356,7 @@ $r->print('</div>'); my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); - my @supupdocform = ( - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic27" />'=>"<a onclick='document.supuploaddocument.submit()'>$lt{'upld'}</a>$help{'Uploading_From_Harddrive'}"}, - ); + my $supupdocformbtn = "<input type='submit' value='".$lt{'upld'}."' />$help{'Uploading_From_Harddrive'}"; my $supupdocform=(<<SUPDOCFORM); <form action="/adm/coursedocs" method="post" name="supuploaddocument" enctype="multipart/form-data"> <input type="hidden" name="active" value="ee" /> @@ -3312,7 +3373,7 @@ $r->print('</div>'); <input type="hidden" name="folderpath" value="$path" /> <input type="hidden" name="cmd" value="upload_supplemental" /> SUPDOCFORM - $supupdocform .= create_form_ul(create_list_elements(@supupdocform))."</form>"; + $supupdocform .= create_form_ul(Apache::lonhtmlcommon::htmltag('li',$supupdocformbtn,{class => 'LC_menubuttons_inline_text'}))."</form>"; my $supnewfolderform=(<<SNFFORM); <form action="/adm/coursedocs" method="post" name="supnewfolder"> @@ -3324,9 +3385,6 @@ SUPDOCFORM </form> SNFFORM - my @supnewfolderforma = ({'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic28" />'=>$supnewfolderform}); - $supnewfolderform = create_form_ul(create_list_elements(@supnewfolderforma)); - my $supnewextform=(<<SNEFORM); <form action="/adm/coursedocs" method="post" name="supnewext"> @@ -3361,26 +3419,36 @@ SNAMFORM my @specialdocs = ( - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic29" />'=>$supnewextform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic30" />'=>$supnewsylform}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic31" />'=>$supnewaboutmeform}, + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="document.supnewsyl.submit()" />' + =>$supnewsylform}, + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/myaboutme.png" alt="'.$lt{mypi}.'" onclick="document.supnewaboutme.submit()" />' + =>$supnewaboutmeform}, ); +my @supimportdoc = ( + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'supnewext\');" />' + =>$supnewextform}, + ); +$supupdocform = create_form_ul(create_list_elements(@supimportdoc)) . '<hr/>' . $supupdocform; my %suporderhash = ( - 'ee' => ['Upload Document',$supupdocform.' '.$supnewfolderform], - 'ff' => ['Special Documents',create_form_ul(create_list_elements(@specialdocs))], - 'zz' => ['Hide'], + '00' => ['Supnewfolder', $supnewfolderform], + 'ee' => ['Import Documents',$supupdocform], + 'ff' => ['Special Documents',create_form_ul(create_list_elements(@specialdocs))] ); -my $tid='2'; -my $varscd = 'Supplemental Course Documents'; + my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype); + if ($error) { + $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(&generate_edit_table($tid,$varscd,\%suporderhash)); -} -my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$type); - if ($error) { - $r->print('<p><span class="LC_error">'.$error.'</span></p>'); - } $r->print('</div>'); $r->print('</div></div>'); @@ -3414,22 +3482,29 @@ sub generate_admin_options { 'vc' => 'Verify Content', 'cv' => 'Check/Set Resource Versions', 'ls' => 'List Symbs', - 'sl' => 'Show Log' + 'sl' => 'Show Log', + 'imse' => 'IMS Export', + 'dcd' => 'Dump Course Documents to Construction Space: available on other servers' ); my %help = %{$help_ref}; my %env = %{$env_ref}; my $dumpbut=&dumpbutton(); my $exportbut=&exportbutton(); my @list = ( - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic21" />'=>"<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"verify\", \"$lt{'vc'}\")'>$lt{'vc'}</a>$help{'Verify_Content'}"}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic22" />'=>"<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"versions\", \"$lt{'cv'}\")'>$lt{'cv'}</a>$help{'Check_Resource_Versions'}"}, + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/verify.png" alt="'.$lt{vc}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "verify", "'.$lt{'vc'}.'")\' />' + => "<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"verify\", \"$lt{'vc'}\")'>$lt{'vc'}</a>$help{'Verify_Content'}"}, + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/resversion.png" alt="'.$lt{cv}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "versions", "'.$lt{'cv'}.'")\' />' + =>"<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"versions\", \"$lt{'cv'}\")'>$lt{'cv'}</a>$help{'Check_Resource_Versions'}"}, ); if($dumpbut ne ''){ - push @list, {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic23" />'=>$dumpbut}; + push @list, {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/dump.png" alt="'.$lt{dcd}.'" />'=>$dumpbut}; } - push @list, ({'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic24" />'=>$exportbut}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic25" />'=>"<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"listsymbs\", \"$lt{'ls'}\")'>$lt{'ls'}</a><input type='hidden' name='folder' value='$env{'form.folder'}' />"}, - {'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/docspacer.gif" alt="pic26" />'=>"<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"docslog\", \"$lt{'sl'}\")'>$lt{'sl'}</a>"}, + push @list, ({'<img class="LC_noBorder LC_middle" src="/res/adm/pages/imsexport.png" alt="'.$lt{imse}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "exportcourse", "'.&mt('IMS Export').'")\' />' + =>$exportbut}, + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/symbs.png" alt="'.$lt{ls}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "listsymbs", "'.$lt{'ls'}.'")\' />' + =>"<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"listsymbs\", \"$lt{'ls'}\")'>$lt{'ls'}</a><input type='hidden' name='folder' value='$env{'form.folder'}' />"}, + {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/log.png" alt="'.$lt{sl}.'" onclick=\'javascript:injectData(document.courseverify, "dummy", "docslog", "'.$lt{'sl'}.'")\' />' + =>"<a onclick='javascript:injectData(document.courseverify, \"dummy\", \"docslog\", \"$lt{'sl'}\")'>$lt{'sl'}</a>"}, ); return '<form action="/adm/coursedocs" method="post" name="courseverify"><input type="hidden" id="dummy" />'.create_form_ul(create_list_elements(@list)).'</form>'; @@ -3437,7 +3512,8 @@ sub generate_admin_options { sub generate_edit_table { - my ($tid,$varcd,$orderhash_ref) = @_; + my ($tid,$orderhash_ref) = @_; + return unless(ref($orderhash_ref) eq 'HASH'); my %orderhash = %{$orderhash_ref}; my $form; my $activetab; @@ -3445,37 +3521,33 @@ sub generate_edit_table { if($env{'form.active'} ne ''){ $activetab = $env{'form.active'}; } - $form = '<div class="LC_Box">'; + $form = '<div class="LC_Box" style="margin-right:0">'; $form .= '<ul id="navigation'.$tid.'" class="LC_TabContent">'; foreach my $name (sort(keys(%orderhash))){ - if($name eq 'zz'){ - if($activetab ne ''){ - $active = 'class="right"'; - }else{ - $active = 'class="right active"'; - } - $form .= '<li onclick="javascript:hideAll(this, \'navigation'.$tid.'\' ,\'content'.$tid.'\');" '.$active.'>'.&mt(${$orderhash{$name}}[0]).'</li>'; - }else{ + if($name ne '00'){ if($activetab eq '' || $activetab ne $name){ $active = ''; }elsif($activetab eq $name){ $active = 'class="active"'; } - $form .= '<li '.$active.' onclick="javascript:showPage(this, \''.$name.$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');">'.&mt(${$orderhash{$name}}[0]).'</li>'; - } + $form .= '<li '.$active.' 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>'; + + } } $form .= '</ul>'; - $form .= '<div id="content'.$tid.'" style="padding: 0 0; margin: 0 0;">'; + $form .= '<div id="content'.$tid.'" style="padding: 0 0; margin: 0 0; clear: both;">'; foreach my $field (keys(%orderhash)){ - if($field ne 'zz'){ - if($activetab eq '' || $activetab ne $field){ + if($field ne '00'){ + if($activetab eq '' || $activetab ne $field){ $active = 'style="display: none;"'; - }elsif($activetab eq $field){ + }elsif($activetab eq $field){ $active = 'style="display:block;"'; - } - $form .= '<div id="'.$field.$tid.'"' - .' class="LC_ContentBox" '.$active.'>'.${$orderhash{$field}}[1] - .'</div>'; + } + $form .= '<div id="'.$field.$tid.'"' + .' class="LC_ContentBox" '.$active.'>'.${$orderhash{$field}}[1] + .'</div>'; } } $form .= '</div></div>'; @@ -3715,12 +3787,15 @@ for (i = 0; i < currentDivs.length; i++) function openTabs(pageId) { tabnav = document.getElementById(pageId).getElementsByTagName('UL'); if(tabnav.length > 2 ){ - currentNav = document.getElementById(tabnav[0].id); + 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'; }