--- loncom/interface/lonmenu.pm 2012/11/16 23:37:16 1.392 +++ loncom/interface/lonmenu.pm 2012/11/27 23:45:08 1.393 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.392 2012/11/16 23:37:16 raeburn Exp $ +# $Id: lonmenu.pm,v 1.393 2012/11/27 23:45:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -441,63 +441,64 @@ sub innerregister { undef(@inlineremote); - my $resurl; + my ($mapurl,$resurl); - if ($env{'request.course.id'} && $env{'request.symb'} eq '') { - $resurl = $env{'request.noversionuri'}; - } - - if ( $env{'request.symb'} && $env{'request.course.id'} ) { - - (my $mapurl, my $rid, $resurl) = &Apache::lonnet::decode_symb(&Apache::lonnet::symbread()); - my $coursetitle = $env{'course.'.$env{'request.course.id'}.'.description'}; + if ($env{'request.course.id'}) { + if ($env{'request.symb'}) { + ($mapurl, my $rid, $resurl) = &Apache::lonnet::decode_symb(&Apache::lonnet::symbread()); + my $coursetitle = $env{'course.'.$env{'request.course.id'}.'.description'}; - my $maptitle = &Apache::lonnet::gettitle($mapurl); - my $restitle = &Apache::lonnet::gettitle(&Apache::lonnet::symbread()); + my $maptitle = &Apache::lonnet::gettitle($mapurl); + my $restitle = &Apache::lonnet::gettitle(&Apache::lonnet::symbread()); #SD #course_type only Course and Community? # - my @crumbs; - unless (($forcereg) && ($env{'request.noversionuri'} eq '/adm/navmaps') - && ($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'})) { - @crumbs = ({text => Apache::loncommon::course_type() - . ' Contents', - href => "Javascript:gopost('/adm/navmaps','')"}); - } - if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { - push(@crumbs, {text => '...', - no_mt => 1}); - } - - push @crumbs, {text => $maptitle, no_mt => 1} if ($maptitle - && $maptitle ne 'default.sequence' - && $maptitle ne $coursetitle); + my @crumbs; + unless (($forcereg) && + ($env{'request.noversionuri'} eq '/adm/navmaps') && + ($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'})) { + @crumbs = ({text => Apache::loncommon::course_type() + . ' Contents', + href => "Javascript:gopost('/adm/navmaps','')"}); + } + if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { + push(@crumbs, {text => '...', + no_mt => 1}); + } + + push @crumbs, {text => $maptitle, no_mt => 1} if ($maptitle + && $maptitle ne 'default.sequence' + && $maptitle ne $coursetitle); - push @crumbs, {text => $restitle, no_mt => 1} if $restitle; - - &Apache::lonhtmlcommon::clear_breadcrumbs(); - &Apache::lonhtmlcommon::add_breadcrumb(@crumbs); - } elsif ($env{'request.course.id'}) { - my $courseurl = &Apache::lonnet::courseid_to_courseurl($env{'request.course.id'}); - if ($env{'request.noversionuri'} =~ m{^\Q/uploaded$courseurl/supplemental/\E(default|\d+)/}) { - my $crstype = &Apache::loncommon::course_type(); - &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); - if ($env{'form.folderpath'}) { - my ($trail) = - &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype); - return $trail; - } else { + push @crumbs, {text => $restitle, no_mt => 1} if $restitle; + &Apache::lonhtmlcommon::clear_breadcrumbs(); + &Apache::lonhtmlcommon::add_breadcrumb(@crumbs); + } else { + $resurl = $env{'request.noversionuri'}; + my $courseurl = &Apache::lonnet::courseid_to_courseurl($env{'request.course.id'}); + my $crstype = &Apache::loncommon::course_type(); + my $title = &mt('View Resource'); + if ($resurl =~ m{^\Q/uploaded$courseurl/supplemental/\E(default|\d+)/}) { + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['folderpath','title']); &Apache::lonhtmlcommon::clear_breadcrumbs(); - &Apache::lonhtmlcommon::add_breadcrumb( + if ($env{'form.title'}) { + $title = $env{'form.title'}; + } + if ($env{'form.folderpath'}) { + my $editbutton = + &prepare_functions($resurl,$forcereg,$group,undef,undef,1); + my ($trail) = + &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); + return $trail; + } else { + &Apache::lonhtmlcommon::add_breadcrumb( {text => "Supplemental $crstype Content", href => "javascript:gopost('/adm/supplemental','')"}); - if ($env{'httpref.'.$env{'request.noversionuri'}} ne '') { - &Apache::lonhtmlcommon::add_breadcrumb({text => 'View Resource'}); + $title = &mt('View Resource'); + return &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); } - return &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype); } - } else { &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb({text => 'View Resource'}); } @@ -564,13 +565,17 @@ sub innerregister { "gocmd('/adm/parmset','set')", 'Content Settings'); } -# End grades/submissions check +# End grades/submissions check # -# This applies to items inside a folder/page modifiable in the course. +# This applies to items inside a folder/page modifiable in the course. # if (($env{'request.symb'}=~/^uploaded/) && ($perms{'mdc'})) { - &switch('','',7,4,'docs-22x22.png','Folder/Page Content','parms[_2]', + my $text = 'Edit Folder'; + if ($mapurl =~ /\.page$/) { + $text = 'Edit Page'; + } + &switch('','',7,4,'docs-22x22.png',$text,'parms[_2]', "gocmd('/adm/coursedocs','direct')", 'Folder/Page Content'); } @@ -745,7 +750,10 @@ sub get_editbutton { my ($cfile,$home,$switchserver,$forceedit,$forceview,$forcereg) = @_; my $jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver, - $forceedit,$forcereg,$env{'request.symb'}); + $forceedit,$forcereg,$env{'request.symb'}, + &escape($env{'form.folderpath'}), + &escape($env{'form.title'}),$env{'form.idx'}, + &escape($env{'form.suppurl'})); if ($jscall) { my $icon = 'pcstr.png'; my $label = 'Edit'; @@ -761,7 +769,7 @@ sub get_editbutton { } sub prepare_functions { - my ($resurl,$forcereg,$group,$bread_crumbs,$advtools) = @_; + my ($resurl,$forcereg,$group,$bread_crumbs,$advtools,$docscrumbs) = @_; unless ($env{'request.registered'}) { undef(@inlineremote); } @@ -824,6 +832,16 @@ sub prepare_functions { $editbutton = &get_editbutton($cfile,$home,$switchserver, $forceedit,$forceview,$forcereg); } + } elsif (($resurl eq '/adm/extresedit') && + (($env{'form.symb'}) || ($env{'form.folderpath'}))) { + ($cfile,$home,$switchserver,$forceedit,$forceview) = + &Apache::lonnet::can_edit_resource($resurl,$cnum,$cdom,$resurl, + $env{'form.symb'}); + if ($cfile ne '') { + $editbutton = &get_editbutton($cfile,$home,$switchserver, + $forceedit,$forceview,$forcereg, + $env{'form.title'},$env{'form.suppurl'}); + } } elsif ($resurl !~ m{^adm/($match_domain)/($match_username)/aboutme$}) { if ($env{'request.filename'}) { my $file=&Apache::lonnet::declutter($env{'request.filename'}); @@ -839,8 +857,8 @@ sub prepare_functions { } # End determination of 'Edit' icon/button display -# This applies to about me page for users in a course if ($env{'request.course.id'}) { +# This applies to about me page for users in a course if ($resurl =~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) { my ($sdom,$sname) = ($1,$2); unless (&Apache::lonnet::is_course($sdom,$sname)) { @@ -878,12 +896,36 @@ sub prepare_functions { 'Add records'); } } + } elsif ($resurl =~ m{^/?adm/viewclasslist}) { +# This applies to viewclasslist page for users in a course + if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { + &switch('','',6,4,'pparm.png','Settings', + '', + "go('/adm/courseprefs?actions=classlists&phase=display')", + 'Student-viewable classlist options'); + } + } + if (($env{'form.folderpath'} =~ /^supplemental/) && + (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) && + (($resurl =~ m{^/adm/wrapper/ext/}) || + ($resurl =~ m{^/uploaded/$cdom/$cnum/supplemental/}) || + ($resurl eq '/adm/supplemental'))) { + my @folders=split('&',$env{'form.folderpath'}); + if (@folders > 2) { + my $esc_path=&escape(&HTML::Entities::encode(&escape($env{'form.folderpath'}),'<>&"')); + &switch('','',7,4,'docs-22x22.png','Edit Folder','parms[_2]', + "location.href='/adm/coursedocs?command=direct&forcesupplement=1&supppath=$esc_path'", + 'Folder/Page Content'); + } } } # End checking for items for about me page for users in a course - - if ($env{'request.registered'}) { + if ($docscrumbs) { + &Apache::lonhtmlcommon::clear_breadcrumb_tools(); + &advtools_crumbs(@inlineremote); + return $editbutton; + } elsif ($env{'request.registered'}) { return $editbutton; } else { if (ref($bread_crumbs) eq 'ARRAY') { @@ -911,7 +953,10 @@ sub advtools_crumbs { } elsif ($env{'request.noversionuri'} !~ m{^/adm/(navmaps|viewclasslist)(\?|$)}) { &Apache::lonhtmlcommon::add_breadcrumb_tool( 'advtools', @funcs[61,71,72,73,74,92]); - } + } elsif ($env{'request.noversionuri'} eq '/adm/viewclasslist') { + &Apache::lonhtmlcommon::add_breadcrumb_tool( + 'advtools', @funcs[64]); + } } # ================================================================== Raw Config