version 1.326, 2010/04/19 09:22:14
|
version 1.331, 2010/06/14 09:16:33
|
Line 225 sub primary_menu {
|
Line 225 sub primary_menu {
|
return "<ol class=\"LC_primary_menu LC_right\">$menu</ol>"; |
return "<ol class=\"LC_primary_menu LC_right\">$menu</ol>"; |
} |
} |
|
|
|
#returns hashref {user=>'',dom=>''} containing: |
|
# own name, domain if user is au |
|
# name, domain of parent author if user is ca or aa |
|
#empty return if user is not an author or not on homeserver |
|
# |
|
#TODO this should probably be moved somewhere more central |
|
#since it can be used by different parts of the system |
|
sub getauthor{ |
|
return unless $env{'request.role'}=~/^(ca|aa|au)/; #nothing to do if user isn't some kind of author |
|
|
|
#co- or assistent author? |
|
my ($dom, $user) = ($env{'request.role'} =~ /^(?:ca|aa)\.\/($match_domain)\/($match_username)$/) |
|
? ($1, $2) #domain, username of the parent author |
|
: @env{ ('request.role.domain', 'user.name') }; #own domain, username |
|
|
|
# current server == home server? |
|
my $home = &Apache::lonnet::homeserver($user,$dom); |
|
foreach (&Apache::lonnet::current_machine_ids()){ |
|
return {user => $user, dom => $dom} if $_ eq $home; |
|
} |
|
|
|
# if wrong server |
|
return; |
|
} |
|
|
sub secondary_menu { |
sub secondary_menu { |
my $menu; |
my $menu; |
|
|
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
my $canedit = &Apache::lonnet::allowed('mdc', $env{'request.course.id'}); |
my $crs_sec = $env{'request.course.id'} . ($env{'request.course.sec'} |
my $canviewgrps = &Apache::lonnet::allowed('vcg', $env{'request.course.id'} |
? "/$env{'request.course.sec'}" |
. ($env{'request.course.sec'} ? "/$env{'request.course.sec'}" |
: ''); |
: '')); |
my $canedit = &Apache::lonnet::allowed('mdc', $env{'request.course.id'}); |
|
my $canviewgrps = &Apache::lonnet::allowed('vcg', $crs_sec); |
|
my $canmodifyuser = &Apache::lonnet::allowed('cst', $crs_sec); |
|
my $canviewwnew = &Apache::lonnet::allowed('whn', $crs_sec); |
|
my $canmodpara = &Apache::lonnet::allowed('opa', $crs_sec); |
|
my $author = getauthor(); |
|
|
my $showlink = &show_return_link(); |
my $showlink = &show_return_link(); |
my %groups = &Apache::lonnet::get_active_groups( |
my %groups = &Apache::lonnet::get_active_groups( |
$env{'user.domain'}, $env{'user.name'}, |
$env{'user.domain'}, $env{'user.name'}, |
$env{'course.' . $env{'request.course.id'} . '.domain'}, |
$env{'course.' . $env{'request.course.id'} . '.domain'}, |
$env{'course.' . $env{'request.course.id'} . '.num'}); |
$env{'course.' . $env{'request.course.id'} . '.num'}); |
|
|
foreach my $menuitem (@secondary_menu) { |
foreach my $menuitem (@secondary_menu) { |
# evaluate conditions |
# evaluate conditions |
next if ref($menuitem) ne 'ARRAY'; |
next if ref($menuitem) ne 'ARRAY'; |
next if $$menuitem[4] ne 'always' |
next if $$menuitem[4] ne 'always' |
|
&& $$menuitem[4] ne 'author' |
&& !$env{'request.course.id'}; |
&& !$env{'request.course.id'}; |
next if $$menuitem[4] eq 'showreturn' |
next if $$menuitem[4] eq 'showreturn' |
&& !$showlink |
&& !$showlink |
Line 253 sub secondary_menu {
|
Line 285 sub secondary_menu {
|
&& $crstype eq 'Community'; |
&& $crstype eq 'Community'; |
next if $$menuitem[4] eq 'mdcCommunity' |
next if $$menuitem[4] eq 'mdcCommunity' |
&& $crstype ne 'Community'; |
&& $crstype ne 'Community'; |
next if $$menuitem[4] =~ /^Course$/ |
next if $$menuitem[4] eq 'cst' |
&& $crstype eq 'Community'; |
&& !$canmodifyuser; |
next if $$menuitem[4] =~ /^Community$/ |
next if $$menuitem[4] eq 'whn' |
&& $crstype ne 'Community'; |
&& !$canviewwnew; |
|
next if $$menuitem[4] eq 'opa' |
|
&& !$canmodpara; |
next if $$menuitem[4] =~ /showgroups$/ |
next if $$menuitem[4] =~ /showgroups$/ |
&& !$canviewgrps |
&& !$canviewgrps |
&& !%groups; |
&& !%groups; |
|
next if $$menuitem[4] eq 'author' |
|
&& !$author; |
|
|
if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) { |
if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) { |
# special treatment for role selector |
# special treatment for role selector |
Line 292 sub secondary_menu {
|
Line 328 sub secondary_menu {
|
$menu =~ s/\[url\]/$escurl/g; |
$menu =~ s/\[url\]/$escurl/g; |
$menu =~ s/\[symb\]/$escsymb/g; |
$menu =~ s/\[symb\]/$escsymb/g; |
} |
} |
|
$menu =~ s/\[uname\]/$$author{user}/g; |
|
$menu =~ s/\[udom\]/$$author{dom}/g; |
|
|
return "<ul id=\"LC_secondary_menu\">$menu</ul>"; |
return "<ul id=\"LC_secondary_menu\">$menu</ul>"; |
} |
} |
Line 356 sub innerregister {
|
Line 394 sub innerregister {
|
|
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::add_breadcrumb(@crumbs); |
&Apache::lonhtmlcommon::add_breadcrumb(@crumbs); |
|
}elsif (! $const_space){ |
|
#a situation when we're looking at a resource outside of context of a |
|
#course or construction space (e.g. with cumulative rights) |
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
&Apache::lonhtmlcommon::add_breadcrumb({text => 'View Resource'}); |
} |
} |
# ============================================================================= |
# ============================================================================= |
# ============================ This is for URLs that actually can be registered |
# ============================ This is for URLs that actually can be registered |
Line 445 sub innerregister {
|
Line 488 sub innerregister {
|
my $cfuname=''; |
my $cfuname=''; |
my $cfudom=''; |
my $cfudom=''; |
my $uploaded; |
my $uploaded; |
|
my $switchserver=''; |
|
my $home; |
if ($env{'request.filename'}) { |
if ($env{'request.filename'}) { |
my $file=&Apache::lonnet::declutter($env{'request.filename'}); |
my $file=&Apache::lonnet::declutter($env{'request.filename'}); |
if (defined($cnum) && defined($cdom)) { |
if (defined($cnum) && defined($cdom)) { |
Line 455 sub innerregister {
|
Line 500 sub innerregister {
|
# Check that the user has permission to edit this resource |
# Check that the user has permission to edit this resource |
($cfuname,$cfudom)=&Apache::loncacc::constructaccess($file,$1); |
($cfuname,$cfudom)=&Apache::loncacc::constructaccess($file,$1); |
if (defined($cfudom)) { |
if (defined($cfudom)) { |
my $home=&Apache::lonnet::homeserver($cfuname,$cfudom); |
$home=&Apache::lonnet::homeserver($cfuname,$cfudom); |
my $allowed=0; |
my $allowed=0; |
my @ids=&Apache::lonnet::current_machine_ids(); |
my @ids=&Apache::lonnet::current_machine_ids(); |
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
if ($allowed) { |
if ($allowed) { |
$cfile=$file; |
$cfile=$file; |
|
} else { |
|
$switchserver=$file; |
} |
} |
} |
} |
} |
} |
} |
} |
# Finally, turn the button on or off |
# Finally, turn the button on or off |
if ($cfile && !$const_space) { |
if (($cfile || $switchserver) && !$const_space) { |
my $nocrsedit; |
my $nocrsedit; |
# Suppress display where CC has switched to student role. |
# Suppress display where CC has switched to student role. |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
Line 478 sub innerregister {
|
Line 525 sub innerregister {
|
if ($nocrsedit) { |
if ($nocrsedit) { |
$editbutton=&clear(6,1); |
$editbutton=&clear(6,1); |
} else { |
} else { |
|
if ($switchserver) { |
|
if ( $env{'request.symb'} && $env{'request.course.id'} ) { |
|
my ($mapurl,$rid,$resurl) = &Apache::lonnet::decode_symb(&Apache::lonnet::symbread()); |
|
$cfile = '/adm/switchserver?otherserver='.$home.'&role='.$env{'request.role'}.'&symb='.$env{'request.symb'}.'&origurl='.$resurl; |
|
} |
|
} |
$editbutton=&switch |
$editbutton=&switch |
('','',6,1,'pcstr.png','edit[_1]','resource[_2]', |
('','',6,1,'pcstr.png','edit[_1]','resource[_2]', |
"go('".$cfile."');","Edit this resource"); |
"go('".$cfile."');","Edit this resource"); |