--- loncom/interface/loncommon.pm 2012/12/22 15:43:03 1.1075.2.20 +++ loncom/interface/loncommon.pm 2013/01/09 16:33:56 1.1075.2.27 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.1075.2.20 2012/12/22 15:43:03 raeburn Exp $ +# $Id: loncommon.pm,v 1.1075.2.27 2013/01/09 16:33:56 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -67,6 +67,8 @@ use Apache::lonhtmlcommon(); use Apache::loncoursedata(); use Apache::lontexconvert(); use Apache::lonclonecourse(); +use Apache::lonuserutils(); +use Apache::lonuserstate(); use LONCAPA qw(:DEFAULT :match); use DateTime::TimeZone; use DateTime::Locale::Catalog; @@ -5026,8 +5028,6 @@ sub bodytag { } if (!$realm) { $realm=' '; } -# Set messages - my $messages=&domainlogo($domain); my $extra_body_attr = &make_attr_string($forcereg,\%design); @@ -5068,7 +5068,19 @@ sub bodytag { if ($env{'request.state'} eq 'construct') { $forcereg=1; } - unless ($env{'environment.remote'} eq 'on') { + my $funclist; + if (($env{'environment.remote'} eq 'on') && ($env{'request.state'} ne 'construct')) { + $bodytag .= Apache::lonhtmlcommon::scripttag(Apache::lonmenu::utilityfunctions(), 'start')."\n". + Apache::lonmenu::serverform(); + my $forbodytag; + &Apache::lonmenu::prepare_functions($env{'request.noversionuri'}, + $forcereg,$args->{'group'}, + $args->{'bread_crumbs'}, + $advtoolsref,'',\$forbodytag); + unless (ref($args->{'bread_crumbs'}) eq 'ARRAY') { + $funclist = $forbodytag; + } + } else { # if ($env{'request.state'} eq 'construct') { # $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls @@ -5077,13 +5089,11 @@ sub bodytag { if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { - unless ($env{'request.noversionuri'} =~ m{/res/adm/pages/bookmarkmenu/}) { - if ($dc_info) { - $dc_info = qq|$dc_info|; - } - $bodytag .= qq|
$name $role
- $realm $dc_info
|; + if ($dc_info) { + $dc_info = qq|$dc_info|; } + $bodytag .= qq|
$name $role
+ $realm $dc_info
|; return $bodytag; } @@ -5110,13 +5120,17 @@ sub bodytag { $bodytag .= &Apache::lonmenu::innerregister($forcereg, $args->{'bread_crumbs'}); } elsif ($forcereg) { - $bodytag .= &Apache::lonmenu::innerregister($forcereg); + $bodytag .= &Apache::lonmenu::innerregister($forcereg,undef, + $args->{'group'}); } else { - $bodytag .= - &Apache::lonmenu::prepare_functions($env{'request.noversionuri'}, - $forcereg,$args->{'group'}, - $args->{'bread_crumbs'}, - $advtoolsref); + my $forbodytag; + &Apache::lonmenu::prepare_functions($env{'request.noversionuri'}, + $forcereg,$args->{'group'}, + $args->{'bread_crumbs'}, + $advtoolsref,'',\$forbodytag); + unless (ref($args->{'bread_crumbs'}) eq 'ARRAY') { + $bodytag .= $forbodytag; + } } }else{ # this is to seperate menu from content when there's no secondary @@ -5152,7 +5166,6 @@ sub bodytag {
  • $menu
  • $realm $dc_info
    |; } - my $funclist; if ($env{'request.state'} eq 'construct') { if (!$public){ if ($env{'request.state'} eq 'construct') { @@ -5164,17 +5177,7 @@ sub bodytag { } } } - return(< -$upperleft - $messages  - -$titleinfo $dc_info $menu - - -$funclist -ENDBODY + return $bodytag."\n".$funclist; } sub dc_courseid_toggle { @@ -6626,7 +6629,7 @@ ol.LC_docs_parameters li.LC_docs_paramet } ul#LC_secondary_menu { - clear: both; + clear: right; color: $fontmenu; background: $tabbg; list-style: none; @@ -7491,6 +7494,11 @@ sub start_page { }else{ $result .= &Apache::lonhtmlcommon::breadcrumbs(); } + } elsif (($env{'environment.remote'} eq 'on') && + ($env{'form.inhibitmenu'} ne 'yes') && + ($env{'request.noversionuri'} =~ m{^/res/}) && + ($env{'request.noversionuri'} !~ m{^/res/adm/pages/})) { + $result .= '

    '; } return $result; } @@ -13290,6 +13298,26 @@ sub commit_studentrole { return $result; } +sub show_role_extent { + my ($scope,$context,$role) = @_; + $scope =~ s{^/}{}; + my @courseroles = &Apache::lonuserutils::roles_by_context('course',1); + push(@courseroles,'co'); + my @authorroles = &Apache::lonuserutils::roles_by_context('author'); + if (($context eq 'course') || (grep(/^\Q$role\E/,@courseroles))) { + $scope =~ s{/}{_}; + return ''.$env{'course.'.$scope.'.description'}.''; + } elsif (($context eq 'author') || (grep(/^\Q$role\E/,@authorroles))) { + my ($audom,$auname) = split(/\//,$scope); + return &mt('[_1] Author Space',''. + &Apache::loncommon::plainname($auname,$audom).''); + } else { + $scope =~ s{/$}{}; + return &mt('Domain: [_1]',''. + &Apache::lonnet::domain($scope,'description').''); + } +} + ############################################################ ############################################################ @@ -14096,6 +14124,32 @@ sub update_content_constraints { return; } +sub allmaps_incourse { + my ($cdom,$cnum,$chome,$cid) = @_; + if ($cdom eq '' || $cnum eq '' || $chome eq '' || $cid eq '') { + $cid = $env{'request.course.id'}; + $cdom = $env{'course.'.$cid.'.domain'}; + $cnum = $env{'course.'.$cid.'.num'}; + $chome = $env{'course.'.$cid.'.home'}; + } + my %allmaps = (); + my $lastchange = + &Apache::lonnet::get_coursechange($cdom,$cnum); + if ($lastchange > $env{'request.course.tied'}) { + my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum"); + unless ($ferr) { + &update_content_constraints($cdom,$cnum,$chome,$cid); + } + } + my $navmap = Apache::lonnavmaps::navmap->new(); + if (defined($navmap)) { + foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_map() },1,0,1)) { + $allmaps{$res->src()} = 1; + } + } + return \%allmaps; +} + sub parse_supplemental_title { my ($title) = @_; @@ -14305,7 +14359,7 @@ sub check_captcha { output_folder => $captcha_params{'output_dir'}, data_folder => $captcha_params{'db_dir'}, ); - my $captcha_chk = $captcha->check_code($code,$md5sum); + $captcha_chk = $captcha->check_code($code,$md5sum); my %captcha_hash = ( 0 => 'Code not checked (file error)', -1 => 'Failed: code expired',