version 1.464, 2016/12/01 16:37:53
|
version 1.478, 2017/09/09 21:30:12
|
Line 497 sub secondary_menu {
|
Line 497 sub secondary_menu {
|
my $url = $$menuitem[0]; |
my $url = $$menuitem[0]; |
$url =~ s{\[cdom\]/\[cnum\]}{$cdom/$cnum}; |
$url =~ s{\[cdom\]/\[cnum\]}{$cdom/$cnum}; |
if (&Apache::lonnet::is_on_map($url)) { |
if (&Apache::lonnet::is_on_map($url)) { |
unless ($$menuitem[0] =~ /\?register=1/) { |
unless ($$menuitem[0] =~ /(\?|\&)register=1/) { |
$$menuitem[0] .= '?register=1'; |
$$menuitem[0] .= (($$menuitem[0]=~/\?/)? '&' : '?').'register=1'; |
} |
} |
} else { |
} else { |
$$menuitem[0] =~ s{\?register=1}{}; |
$$menuitem[0] =~ s{\&?register=1}{}; |
} |
} |
|
if ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://}) { |
|
if (($ENV{'SERVER_PORT'} == 443) || ($env{'request.use_absolute'} =~ m{^https://})) { |
|
unless ($$menuitem[0] =~ m{^https?://}) { |
|
$$menuitem[0] = 'http://'.$ENV{'SERVER_NAME'}.$$menuitem[0]; |
|
} |
|
unless ($$menuitem[0] =~ /(\&|\?)usehttp=1/) { |
|
$$menuitem[0] .= (($$menuitem[0]=~/\?/) ? '&' : '?').'usehttp=1'; |
|
} |
|
} |
|
} |
|
$$menuitem[0] = &HTML::Entities::encode($$menuitem[0],'&<>"'); |
} |
} |
$menu .= &prep_menuitem(\@$menuitem); |
$menu .= &prep_menuitem(\@$menuitem); |
} |
} |
Line 521 sub secondary_menu {
|
Line 532 sub secondary_menu {
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
($escurl = $env{'request.filename'}) =~ s{^\Q$londocroot\E}{}; |
($escurl = $env{'request.filename'}) =~ s{^\Q$londocroot\E}{}; |
$escurl = &escape($escurl); |
$escurl = &escape($escurl); |
} |
} |
$menu =~ s/\[url\]/$escurl/g; |
$menu =~ s/\[url\]/$escurl/g; |
$menu =~ s/\[symb\]/$escsymb/g; |
$menu =~ s/\[symb\]/$escsymb/g; |
} |
} |
Line 625 sub build_submenu {
|
Line 636 sub build_submenu {
|
} |
} |
|
|
sub innerregister { |
sub innerregister { |
my ($forcereg,$bread_crumbs,$group,$pagebuttonshide) = @_; |
my ($forcereg,$bread_crumbs,$group,$pagebuttonshide,$hostname) = @_; |
my $const_space = ($env{'request.state'} eq 'construct'); |
my $const_space = ($env{'request.state'} eq 'construct'); |
my $is_const_dir = 0; |
my $is_const_dir = 0; |
|
|
Line 635 sub innerregister {
|
Line 646 sub innerregister {
|
|
|
undef(@inlineremote); |
undef(@inlineremote); |
|
|
my ($mapurl,$resurl,$crstype); |
my ($mapurl,$resurl,$crstype,$navmap); |
|
|
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
# |
# |
Line 643 sub innerregister {
|
Line 654 sub innerregister {
|
# |
# |
$crstype = &Apache::loncommon::course_type(); |
$crstype = &Apache::loncommon::course_type(); |
if ($env{'request.symb'}) { |
if ($env{'request.symb'}) { |
($mapurl, my $rid, $resurl) = &Apache::lonnet::decode_symb(&Apache::lonnet::symbread()); |
my $ignorenull; |
|
unless ($env{'request.noversionuri'} eq '/adm/navmaps') { |
|
$ignorenull = 1; |
|
} |
|
my $symb = &Apache::lonnet::symbread('','',$ignorenull); |
|
($mapurl, my $rid, $resurl) = &Apache::lonnet::decode_symb($symb); |
my $coursetitle = $env{'course.'.$env{'request.course.id'}.'.description'}; |
my $coursetitle = $env{'course.'.$env{'request.course.id'}.'.description'}; |
|
|
my $maptitle = &Apache::lonnet::gettitle($mapurl); |
my $maptitle = &Apache::lonnet::gettitle($mapurl); |
my $restitle = &Apache::lonnet::gettitle(&Apache::lonnet::symbread()); |
my $restitle = &Apache::lonnet::gettitle($symb); |
my @crumbs; |
my (@crumbs,@mapcrumbs); |
|
if (($env{'request.noversionuri'} ne '/adm/navmaps') && ($mapurl ne '') && |
|
(!(($crstype eq 'Placement') && !$env{'request.role.adv'}))) { |
|
$navmap = Apache::lonnavmaps::navmap->new(); |
|
if (ref($navmap)) { |
|
@mapcrumbs = $navmap->recursed_crumbs($mapurl); |
|
} |
|
} |
unless (($forcereg) && |
unless (($forcereg) && |
($env{'request.noversionuri'} eq '/adm/navmaps') && |
($env{'request.noversionuri'} eq '/adm/navmaps') && |
($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'}) || |
($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'}) || |
Line 657 sub innerregister {
|
Line 680 sub innerregister {
|
href => "Javascript:gopost('/adm/navmaps','')"}); |
href => "Javascript:gopost('/adm/navmaps','')"}); |
} |
} |
if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { |
if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { |
push(@crumbs, {text => '...', |
if (@mapcrumbs) { |
no_mt => 1}); |
push(@crumbs,@mapcrumbs); |
|
} elsif (!(($crstype eq 'Placement') && (!$env{'request.role.adv'}))) { |
|
push(@crumbs, {text => '...', |
|
no_mt => 1}); |
|
} |
} |
} |
|
|
unless (($crstype eq 'Placement') || (!$env{'request.role.adv'})) { |
unless ((($crstype eq 'Placement') && (!$env{'request.role.adv'})) || (@mapcrumbs) || |
push @crumbs, {text => $maptitle, no_mt => 1} if ($maptitle |
(!$maptitle) || ($maptitle eq 'default.sequence') || |
&& $maptitle ne 'default.sequence' |
($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'})) { |
&& $maptitle ne $coursetitle); |
push @crumbs, {text => $maptitle, no_mt => 1, href => $mapurl}; |
} |
} |
|
|
push @crumbs, {text => $restitle, no_mt => 1} if $restitle; |
push @crumbs, {text => $restitle, no_mt => 1} if $restitle; |
Line 692 sub innerregister {
|
Line 719 sub innerregister {
|
} |
} |
my $trail; |
my $trail; |
if ($env{'form.folderpath'}) { |
if ($env{'form.folderpath'}) { |
&prepare_functions($resurl,$forcereg,$group,undef,undef,1); |
&prepare_functions($resurl,$forcereg,$group,undef,undef,1,$hostname); |
($trail) = |
($trail) = |
&Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); |
&Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); |
} else { |
} else { |
Line 707 sub innerregister {
|
Line 734 sub innerregister {
|
} elsif ($resurl =~ m{^\Q/uploaded$courseurl/portfolio/syllabus/}) { |
} elsif ($resurl =~ m{^\Q/uploaded$courseurl/portfolio/syllabus/}) { |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&prepare_functions('/public'.$courseurl."/syllabus", |
&prepare_functions('/public'.$courseurl."/syllabus", |
$forcereg,$group,undef,undef,1); |
$forcereg,$group,undef,undef,1,$hostname); |
$title = &mt('Syllabus File'); |
$title = &mt('Syllabus File'); |
my ($trail) = |
my ($trail) = |
&Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); |
&Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1,$hostname); |
return $trail; |
return $trail; |
} |
} |
unless ($env{'request.state'} eq 'construct') { |
unless ($env{'request.state'} eq 'construct') { |
Line 734 sub innerregister {
|
Line 761 sub innerregister {
|
$forceview,$editbutton); |
$forceview,$editbutton); |
if (($resurl =~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) || |
if (($resurl =~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) || |
($env{'request.role'} !~/^(aa|ca|au)/)) { |
($env{'request.role'} !~/^(aa|ca|au)/)) { |
$editbutton = &prepare_functions($resurl,$forcereg,$group); |
$editbutton = &prepare_functions($resurl,$forcereg,$group,'','','',$hostname); |
} |
} |
if ($editbutton eq '') { |
if ($editbutton eq '') { |
$editbutton = &clear(6,1); |
$editbutton = &clear(6,1); |
Line 908 if ($env{'browser.mobile'}) {
|
Line 935 if ($env{'browser.mobile'}) {
|
$is_mobile = 1; |
$is_mobile = 1; |
} |
} |
|
|
unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|viewclasslist|portfolio|exttools?)(\?|$)/) { |
unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|viewclasslist|portfolio|ext\.tool)(\?|$)/) { |
if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/}) && ($env{'request.noversionuri'} !~ m{^/uploaded/$match_domain/$match_courseid/docs/})) { |
if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/}) && ($env{'request.noversionuri'} !~ m{^/uploaded/$match_domain/$match_courseid/docs/})) { |
$menuitems.=(<<ENDREALRES); |
$menuitems.=(<<ENDREALRES); |
s&6&3&catalog.png&Info&info[_1]&catalog_info('$is_mobile')&Show Metadata |
s&6&3&catalog.png&Info&info[_1]&catalog_info('$is_mobile')&Show Metadata |
Line 1033 ENDMENUITEMS
|
Line 1060 ENDMENUITEMS
|
} |
} |
|
|
sub get_editbutton { |
sub get_editbutton { |
my ($cfile,$home,$switchserver,$forceedit,$forceview,$forcereg) = @_; |
my ($cfile,$home,$switchserver,$forceedit,$forceview,$forcereg,$hostname) = @_; |
my $jscall; |
my $jscall; |
if (($forceview) && ($env{'form.todocs'})) { |
if (($forceview) && ($env{'form.todocs'})) { |
my ($folderpath,$command,$navmap); |
my ($folderpath,$command,$navmap); |
Line 1053 sub get_editbutton {
|
Line 1080 sub get_editbutton {
|
$jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver, |
$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.folderpath'}), |
&escape($env{'form.title'}),$env{'form.idx'}, |
&escape($env{'form.title'}),$hostname, |
&escape($env{'form.suppurl'}),$env{'form.todocs'}, |
$env{'form.idx'},&escape($env{'form.suppurl'}), |
$suppanchor); |
$env{'form.todocs'},$suppanchor); |
} |
} |
if ($jscall) { |
if ($jscall) { |
my $icon = 'pcstr.png'; |
my $icon = 'pcstr.png'; |
Line 1072 sub get_editbutton {
|
Line 1099 sub get_editbutton {
|
} |
} |
|
|
sub prepare_functions { |
sub prepare_functions { |
my ($resurl,$forcereg,$group,$bread_crumbs,$advtools,$docscrumbs) = @_; |
my ($resurl,$forcereg,$group,$bread_crumbs,$advtools,$docscrumbs,$hostname) = @_; |
unless ($env{'request.registered'}) { |
unless ($env{'request.registered'}) { |
undef(@inlineremote); |
undef(@inlineremote); |
} |
} |
Line 1118 sub prepare_functions {
|
Line 1145 sub prepare_functions {
|
# This applies in course context |
# This applies in course context |
# |
# |
if (($perms{'mdc'}) && |
if (($perms{'mdc'}) && |
(($resurl eq "/public/$cdom/$cnum/syllabus") || |
(($resurl =~ m{^/?public/$cdom/$cnum/syllabus}) || |
($resurl =~ m{^/uploaded/$cdom/$cnum/portfolio/syllabus/}))) { |
($resurl =~ m{^/?uploaded/$cdom/$cnum/portfolio/syllabus/}) || |
$cfile = $resurl; |
(($resurl =~ m{^/?uploaded/$cdom/$cnum/default_\d+\.sequence$}) && ($env{'form.navmap'})))) { |
|
if ($resurl =~ m{^/}) { |
|
$cfile = $resurl; |
|
} else { |
|
$cfile = "/$resurl"; |
|
} |
$home = &Apache::lonnet::homeserver($cnum,$cdom); |
$home = &Apache::lonnet::homeserver($cnum,$cdom); |
if ($env{'form.forceedit'}) { |
if ($env{'form.forceedit'}) { |
$forceview = 1; |
$forceview = 1; |
} else { |
} else { |
$forceedit = 1; |
$forceedit = 1; |
} |
} |
$editbutton = &get_editbutton($cfile,$home,$switchserver, |
if ($cfile =~ m{^/uploaded/$cdom/$cnum/default_\d+\.sequence$}) { |
$forceedit,$forceview,$forcereg); |
my $text = 'Edit Folder'; |
|
&switch('','',7,4,'docs-22x22.png','Edit Folder','parms[_2]', |
|
"gocmd('/adm/coursedocs','direct')", |
|
'Folder/Page Content'); |
|
$editbutton = 1; |
|
} else { |
|
$editbutton = &get_editbutton($cfile,$home,$switchserver, |
|
$forceedit,$forceview,$forcereg, |
|
$hostname); |
|
} |
} elsif (($resurl eq '/adm/extresedit') && |
} elsif (($resurl eq '/adm/extresedit') && |
(($env{'form.symb'}) || ($env{'form.folderpath'}))) { |
(($env{'form.symb'}) || ($env{'form.folderpath'}))) { |
($cfile,$home,$switchserver,$forceedit,$forceview) = |
($cfile,$home,$switchserver,$forceedit,$forceview) = |
Line 1136 sub prepare_functions {
|
Line 1177 sub prepare_functions {
|
$env{'form.symb'}); |
$env{'form.symb'}); |
if ($cfile ne '') { |
if ($cfile ne '') { |
$editbutton = &get_editbutton($cfile,$home,$switchserver, |
$editbutton = &get_editbutton($cfile,$home,$switchserver, |
$forceedit,$forceview,$forcereg, |
$forceedit,$forceview,$forcereg); |
$env{'form.title'},$env{'form.suppurl'}); |
|
} |
} |
} elsif (($resurl =~ m{^/?adm/viewclasslist$}) && |
} elsif (($resurl =~ m{^/?adm/viewclasslist$}) && |
(&Apache::lonnet::allowed('opa',$env{'request.course.id'}))) { |
(&Apache::lonnet::allowed('opa',$env{'request.course.id'}))) { |
Line 1155 sub prepare_functions {
|
Line 1195 sub prepare_functions {
|
&Apache::lonnet::clutter($resurl),$env{'request.symb'},$group); |
&Apache::lonnet::clutter($resurl),$env{'request.symb'},$group); |
if ($cfile ne '') { |
if ($cfile ne '') { |
$editbutton = &get_editbutton($cfile,$home,$switchserver, |
$editbutton = &get_editbutton($cfile,$home,$switchserver, |
$forceedit,$forceview,$forcereg); |
$forceedit,$forceview,$forcereg, |
|
$hostname); |
} |
} |
} |
} |
} |
} |
Line 1205 sub prepare_functions {
|
Line 1246 sub prepare_functions {
|
if (($env{'form.folderpath'} =~ /^supplemental/) && |
if (($env{'form.folderpath'} =~ /^supplemental/) && |
(&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) && |
(&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) && |
(($resurl =~ m{^/adm/wrapper/ext/}) || |
(($resurl =~ m{^/adm/wrapper/ext/}) || |
($resurl =~ m{^/adm/$cdom/$cnum/\d+/exttools?$}) || |
($resurl =~ m{^/adm/$cdom/$cnum/\d+/ext\.tool$}) || |
($resurl =~ m{^/uploaded/$cdom/$cnum/supplemental/}) || |
($resurl =~ m{^/uploaded/$cdom/$cnum/supplemental/}) || |
($resurl eq '/adm/supplemental') || |
($resurl eq '/adm/supplemental') || |
($resurl =~ m{^/public/$cdom/$cnum/syllabus$}) || |
($resurl =~ m{^/public/$cdom/$cnum/syllabus$}) || |
Line 1217 sub prepare_functions {
|
Line 1258 sub prepare_functions {
|
$suppanchor = $env{'form.anchor'}; |
$suppanchor = $env{'form.anchor'}; |
} |
} |
my $esc_path=&escape(&HTML::Entities::encode(&escape($env{'form.folderpath'}),'<>&"')); |
my $esc_path=&escape(&HTML::Entities::encode(&escape($env{'form.folderpath'}),'<>&"')); |
|
my $link = '/adm/coursedocs?command=direct&forcesupplement=1&supppath='. |
|
"$esc_path&anchor=$suppanchor"; |
|
if ($env{'request.use_absolute'} ne '') { |
|
$link = $env{'request.use_absolute'}.$link; |
|
} |
&switch('','',7,4,'docs-22x22.png','Edit Folder','parms[_2]', |
&switch('','',7,4,'docs-22x22.png','Edit Folder','parms[_2]', |
"location.href='/adm/coursedocs?command=direct&forcesupplement=1&supppath=$esc_path&anchor=$suppanchor'", |
"location.href='$link'",'Folder/Page Content'); |
'Folder/Page Content'); |
|
} |
} |
} |
} |
} |
} |
Line 2099 sub roles_selector {
|
Line 2144 sub roles_selector {
|
my ($cdom,$cnum,$httphost) = @_; |
my ($cdom,$cnum,$httphost) = @_; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
my $now = time; |
my $now = time; |
my (%courseroles,%seccount,%courseprivs); |
my (%courseroles,%seccount,%courseprivs,%roledesc); |
my $is_cc; |
my $is_cc; |
my ($js,$form,$switcher); |
my ($js,$form,$switcher); |
my $ccrole; |
my $ccrole; |
Line 2110 sub roles_selector {
|
Line 2155 sub roles_selector {
|
} |
} |
my ($privref,$gotsymb,$destsymb); |
my ($privref,$gotsymb,$destsymb); |
my $destinationurl = $ENV{'REQUEST_URI'}; |
my $destinationurl = $ENV{'REQUEST_URI'}; |
if ($destinationurl =~ /\?symb=/) { |
if ($destinationurl =~ /(\?|\&)symb=/) { |
$gotsymb = 1; |
$gotsymb = 1; |
} elsif ($destinationurl =~ m{^/enc/}) { |
} elsif ($destinationurl =~ m{^/enc/}) { |
my $plainurl = &Apache::lonenc::unencrypted($destinationurl); |
my $plainurl = &Apache::lonenc::unencrypted($destinationurl); |
if ($plainurl =~ /\?symb=/) { |
if ($plainurl =~ /(\?|\&)symb=/) { |
$gotsymb = 1; |
$gotsymb = 1; |
} |
} |
} |
} |
Line 2149 sub roles_selector {
|
Line 2194 sub roles_selector {
|
if ($is_cc) { |
if ($is_cc) { |
&get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs); |
&get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs); |
} elsif ($env{'request.role'} =~ m{^\Qcr/$cdom/$cdom-domainconfig/\E(\w+)\.\Q/$cdom/$cnum\E}) { |
} elsif ($env{'request.role'} =~ m{^\Qcr/$cdom/$cdom-domainconfig/\E(\w+)\.\Q/$cdom/$cnum\E}) { |
&get_customadhoc_roles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs,$privref); |
&get_customadhoc_roles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs,\%roledesc,$privref); |
} else { |
} else { |
my %gotnosection; |
my %gotnosection; |
foreach my $item (keys(%env)) { |
foreach my $item (keys(%env)) { |
Line 2203 sub roles_selector {
|
Line 2248 sub roles_selector {
|
} |
} |
if ((keys(%seccount) > 1) || ($numdiffsec > 1)) { |
if ((keys(%seccount) > 1) || ($numdiffsec > 1)) { |
my @submenu; |
my @submenu; |
$js = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs,$privref); |
$js = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs,\%roledesc,$privref); |
$form = |
$form = |
'<form name="rolechooser" method="post" action="'.$httphost.'/adm/roles">'."\n". |
'<form name="rolechooser" method="post" action="'.$httphost.'/adm/roles">'."\n". |
' <input type="hidden" name="destinationurl" value="'. |
' <input type="hidden" name="destinationurl" value="'. |
Line 2245 sub roles_selector {
|
Line 2290 sub roles_selector {
|
if ($include) { |
if ($include) { |
my $rolename; |
my $rolename; |
if ($role =~ m{^cr/$cdom/$cdom\-domainconfig/(\w+)(?:/\w+|$)}) { |
if ($role =~ m{^cr/$cdom/$cdom\-domainconfig/(\w+)(?:/\w+|$)}) { |
$rolename = &mt('Helpdesk [_1]',$1); |
$rolename = $roledesc{$role}; |
|
if ($rolename eq '') { |
|
$rolename = &mt('Helpdesk [_1]',$1); |
|
} |
} else { |
} else { |
$rolename = &Apache::lonnet::plaintext($role); |
$rolename = &Apache::lonnet::plaintext($role); |
} |
} |
Line 2332 sub get_all_courseroles {
|
Line 2380 sub get_all_courseroles {
|
} |
} |
|
|
sub get_customadhoc_roles { |
sub get_customadhoc_roles { |
my ($cdom,$cnum,$courseroles,$seccount,$courseprivs,$privref) = @_; |
my ($cdom,$cnum,$courseroles,$seccount,$courseprivs,$roledesc,$privref) = @_; |
unless ((ref($courseroles) eq 'HASH') && (ref($seccount) eq 'HASH') && |
unless ((ref($courseroles) eq 'HASH') && (ref($seccount) eq 'HASH') && |
(ref($courseprivs) eq 'HASH')) { |
(ref($courseprivs) eq 'HASH') && (ref($roledesc) eq 'HASH')) { |
return; |
return; |
} |
} |
if ($env{'environment.adhocroles.'.$cdom} ne '') { |
my $is_helpdesk = 0; |
my @customroles = split(/,/,$env{'environment.adhocroles.'.$cdom}); |
my $now = time; |
if (@customroles > 1) { |
foreach my $role ('dh','da') { |
if ($env{"user.role.dh./$cdom/"}) { |
if ($env{"user.role.$role./$cdom/"}) { |
my ($start,$end)=split(/\./,$env{"user.role.dh./$cdom/"}); |
my ($start,$end)=split(/\./,$env{"user.role.$role./$cdom/"}); |
my $now = time; |
if (!($start && ($now<$start)) && !($end && ($now>$end))) { |
if (!($start && ($now<$start)) & !($end && ($now>$end))) { |
$is_helpdesk = 1; |
my $numsec = 1; |
last; |
my @sections; |
} |
my ($allseclist,$cached) = |
} |
&Apache::lonnet::is_cached_new('courseseclist',$cdom.'_'.$cnum); |
} |
if (defined($cached)) { |
if ($is_helpdesk) { |
if ($allseclist ne '') { |
my ($possroles,$description) = &Apache::lonnet::get_my_adhocroles($cdom.'_'.$cnum); |
@sections = split(/,/,$allseclist); |
my %available; |
$numsec += scalar(@sections); |
if (ref($possroles) eq 'ARRAY') { |
} |
map { $available{$_} = 1; } @{$possroles}; |
} else { |
} |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
$numsec += scalar(keys(%sections_count)); |
if (ref($domdefaults{'adhocroles'}) eq 'HASH') { |
$allseclist = join(',',sort(keys(%sections_count))); |
if (keys(%{$domdefaults{'adhocroles'}})) { |
&Apache::lonnet::do_cache_new('courseseclist',$cdom.'_'.$cnum,$allseclist); |
my $numsec = 1; |
} |
my @sections; |
my (%adhoc,$gotprivs); |
my ($allseclist,$cached) = |
my $prefix = "cr/$cdom/$cdom".'-domainconfig'; |
&Apache::lonnet::is_cached_new('courseseclist',$cdom.'_'.$cnum); |
foreach my $role (@customroles) { |
if (defined($cached)) { |
next if (($role eq '') || ($role =~ /\W/)); |
if ($allseclist ne '') { |
$seccount->{"$prefix/$role"} = $numsec; |
@sections = split(/,/,$allseclist); |
$courseroles->{"$prefix/$role"} = \@sections; |
$numsec += scalar(@sections); |
if ((ref($privref) eq 'ARRAY') && (@{$privref} > 0)) { |
} |
if (exists($env{"user.priv.$prefix/$role./$cdom/$cnum./"})) { |
} else { |
$courseprivs->{"$prefix/$role./$cdom/$cnum./"} = |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
$env{"user.priv.$prefix/$role./$cdom/$cnum./"}; |
@sections = sort(keys(%sections_count)); |
$courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"} = |
$numsec += scalar(@sections); |
$env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/"}; |
$allseclist = join(',',@sections); |
$courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"} = |
&Apache::lonnet::do_cache_new('courseseclist',$cdom.'_'.$cnum,$allseclist); |
$env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/$cnum"}; |
} |
} else { |
my (%adhoc,$gotprivs); |
unless ($gotprivs) { |
my $prefix = "cr/$cdom/$cdom".'-domainconfig'; |
my ($adhocroles,$privscached) = |
foreach my $role (keys(%{$domdefaults{'adhocroles'}})) { |
&Apache::lonnet::is_cached_new('adhocroles',$cdom); |
next if (($role eq '') || ($role =~ /\W/)); |
if ((defined($privscached)) && (ref($adhocroles) eq 'HASH')) { |
$seccount->{"$prefix/$role"} = $numsec; |
%adhoc = %{$adhocroles}; |
$roledesc->{"$prefix/$role"} = $description->{$role}; |
} else { |
if ((ref($privref) eq 'ARRAY') && (@{$privref} > 0)) { |
my $confname = &Apache::lonnet::get_domainconfiguser($cdom); |
if (exists($env{"user.priv.$prefix/$role./$cdom/$cnum./"})) { |
my %roledefs = &Apache::lonnet::dump('roles',$cdom,$confname,'rolesdef_'); |
$courseprivs->{"$prefix/$role./$cdom/$cnum./"} = |
foreach my $key (keys(%roledefs)) { |
$env{"user.priv.$prefix/$role./$cdom/$cnum./"}; |
(undef,my $rolename) = split(/_/,$key); |
$courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"} = |
if ($rolename ne '') { |
$env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/"}; |
$adhoc{$rolename} = $roledefs{$key}; |
$courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"} = |
} |
$env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/$cnum"}; |
|
} else { |
|
unless ($gotprivs) { |
|
my ($adhocroles,$privscached) = |
|
&Apache::lonnet::is_cached_new('adhocroles',$cdom); |
|
if ((defined($privscached)) && (ref($adhocroles) eq 'HASH')) { |
|
%adhoc = %{$adhocroles}; |
|
} else { |
|
my $confname = &Apache::lonnet::get_domainconfiguser($cdom); |
|
my %roledefs = &Apache::lonnet::dump('roles',$cdom,$confname,'rolesdef_'); |
|
foreach my $key (keys(%roledefs)) { |
|
(undef,my $rolename) = split(/_/,$key); |
|
if ($rolename ne '') { |
|
my ($systempriv,$domainpriv,$coursepriv) = split(/\_/,$roledefs{$key}); |
|
$coursepriv = &Apache::lonnet::course_adhocrole_privs($rolename,$cdom,$cnum,$coursepriv); |
|
$adhoc{$rolename} = join('_',($systempriv,$domainpriv,$coursepriv)); |
} |
} |
&Apache::lonnet::do_cache_new('adhocroles',$cdom,\%adhoc); |
|
} |
} |
$gotprivs = 1; |
&Apache::lonnet::do_cache_new('adhocroles',$cdom,\%adhoc); |
} |
} |
($courseprivs->{"$prefix/$role./$cdom/$cnum./"}, |
$gotprivs = 1; |
$courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"}, |
|
$courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"}) = |
|
split(/\_/,$adhoc{$role}); |
|
} |
} |
|
($courseprivs->{"$prefix/$role./$cdom/$cnum./"}, |
|
$courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"}, |
|
$courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"}) = |
|
split(/\_/,$adhoc{$role}); |
} |
} |
} |
} |
|
if ($available{$role}) { |
|
$courseroles->{"$prefix/$role"} = \@sections; |
|
} |
} |
} |
} |
} |
} |
} |
Line 2407 sub get_customadhoc_roles {
|
Line 2473 sub get_customadhoc_roles {
|
} |
} |
|
|
sub jump_to_role { |
sub jump_to_role { |
my ($cdom,$cnum,$seccount,$courseroles,$courseprivs,$privref) = @_; |
my ($cdom,$cnum,$seccount,$courseroles,$courseprivs,$roledesc,$privref) = @_; |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
this => 'This role has section(s) associated with it.', |
this => 'This role has section(s) associated with it.', |
ente => 'Enter a specific section.', |
ente => 'Enter a specific section.', |