--- loncom/interface/loncommon.pm 2012/12/22 15:43:03 1.1075.2.20
+++ loncom/interface/loncommon.pm 2013/01/28 15:52:51 1.1075.2.30
@@ -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.30 2013/01/28 15:52:51 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;
@@ -988,7 +990,7 @@ sub select_language {
my ($name,$selected,$includeempty) = @_;
my %langchoices;
if ($includeempty) {
- %langchoices = ('' => 'No language preference');
+ %langchoices = ('' => &mt('No language preference'));
}
foreach my $id (&languageids()) {
my $code = &supportedlanguagecode($id);
@@ -4885,7 +4887,7 @@ sub CSTR_pageheader {
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
my ($udom,$uname,$thisdisfn)=
- ($trailfile =~ m{^\Q$londocroot\E/priv/([^/]+)/([^/]+)/(.*)$});
+ ($trailfile =~ m{^\Q$londocroot\E/priv/([^/]+)/([^/]+)(?:|/(.*))$});
my $formaction = "/priv/$udom/$uname/$thisdisfn";
$formaction =~ s{/+}{/}g;
@@ -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 {
@@ -5692,7 +5695,8 @@ table.LC_nested tr.LC_empty_row td {
padding: 8px;
}
-table.LC_data_table tr.LC_empty_row td {
+table.LC_data_table tr.LC_empty_row td,
+table.LC_data_table tr.LC_footer_row td {
background-color: $sidebg;
}
@@ -6626,7 +6630,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 +7495,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;
}
@@ -11597,7 +11606,7 @@ sub cleanup_empty_dirs {
my $numitems = 0;
foreach my $item (@dircontents) {
if (-d "$path/$item") {
- &recurse_dirs("$path/$item");
+ &cleanup_empty_dirs("$path/$item");
if (-e "$path/$item") {
$numitems ++;
}
@@ -13290,6 +13299,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 +14125,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 +14360,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',