version 1.321, 2010/03/22 20:11:22
|
version 1.331, 2010/06/14 09:16:33
|
Line 177 sub prep_menuitem {
|
Line 177 sub prep_menuitem {
|
return '<li><a' |
return '<li><a' |
# highlighting for new messages |
# highlighting for new messages |
. ( $$menuitem[4] eq 'newmsg' ? ' class="LC_new_message"' : '') |
. ( $$menuitem[4] eq 'newmsg' ? ' class="LC_new_message"' : '') |
. qq| href="$$menuitem[0]">$link</a></li>|; |
. qq| href="$$menuitem[0]" target="_top">$link</a></li>|; |
} |
} |
|
|
# primary_menu() evaluates @primary_menu and returns XHTML for the menu |
# primary_menu() evaluates @primary_menu and returns XHTML for the menu |
Line 216 sub primary_menu {
|
Line 216 sub primary_menu {
|
if ($$menuitem[3] eq 'Help') { # special treatment for helplink |
if ($$menuitem[3] eq 'Help') { # special treatment for helplink |
$menu .= '<li>'.&Apache::loncommon::top_nav_help('Help').'</li>'; |
$menu .= '<li>'.&Apache::loncommon::top_nav_help('Help').'</li>'; |
} else { |
} else { |
my @items = @{$menuitem}; |
$menu .= prep_menuitem($menuitem); |
$items[0] = 'javascript:'.$menuitem->[0].';'; |
|
$menu .= &prep_menuitem(\@items); |
|
} |
} |
} |
} |
|
$menu =~ s/\[domain\]/$env{'user.domain'}/g; |
|
$menu =~ s/\[user\]/$env{'user.name'}/g; |
|
|
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>"; |
} |
} |
|
|
sub show_return_link { |
sub show_return_link { |
|
if (($env{'request.noversionuri'} =~ m{^/adm/(viewclasslist|navmaps)($|\?)}) |
|
|| ($env{'request.noversionuri'} =~ m{^/adm/.*/aboutme($|\?)})) { |
|
|
|
return if ($env{'form.register'}); |
|
} |
return (($env{'request.noversionuri'}=~m{^/(res|public)/} && |
return (($env{'request.noversionuri'}=~m{^/(res|public)/} && |
$env{'request.symb'} eq '') |
$env{'request.symb'} eq '') |
|| |
|| |
Line 305 sub show_return_link {
|
Line 348 sub show_return_link {
|
(($env{'request.noversionuri'}=~/^\/adm\//) && |
(($env{'request.noversionuri'}=~/^\/adm\//) && |
($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) && |
($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) && |
($env{'request.noversionuri'}!~ |
($env{'request.noversionuri'}!~ |
m[^/adm/.*/(smppg|bulletinboard|aboutme)($|\?)]) |
m{^/adm/.*/(smppg|bulletinboard)($|\?)}) |
)); |
)); |
} |
} |
|
|
sub innerregister { |
sub innerregister { |
Line 331 sub innerregister {
|
Line 374 sub innerregister {
|
#SD |
#SD |
#course_type only Course and Community? |
#course_type only Course and Community? |
# |
# |
my @crumbs = ({text => Apache::loncommon::course_type() |
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', |
. ' Contents', |
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 => '...', |
push(@crumbs, {text => '...', |
no_mt => 1}); |
no_mt => 1}); |
Line 348 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 437 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 447 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 470 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"); |
Line 558 if(length($annotation) > 0){
|
Line 619 if(length($annotation) > 0){
|
$menuitems.="&anno-[_1]&tations[_1]&annotate()&"; |
$menuitems.="&anno-[_1]&tations[_1]&annotate()&"; |
$menuitems.="Make notes and annotations about this resource&&1\n"; |
$menuitems.="Make notes and annotations about this resource&&1\n"; |
|
|
unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) { |
unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|viewclasslist|portfolio)(\?|$)/) { |
if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/})) { |
if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/})) { |
$menuitems.=(<<ENDREALRES); |
$menuitems.=(<<ENDREALRES); |
s&6&3&catalog.png&catalog[_2]&info[_1]&catalog_info()&Show Metadata |
s&6&3&catalog.png&catalog[_2]&info[_1]&catalog_info()&Show Metadata |
Line 616 ENDMENUITEMS
|
Line 677 ENDMENUITEMS
|
'tools', @inlineremote[63]); |
'tools', @inlineremote[63]); |
} |
} |
|
|
|
unless ($env{'request.noversionuri'}=~ m{^/adm/(navmaps|viewclasslist)(\?|$)}) { |
Apache::lonhtmlcommon::add_breadcrumb_tool( |
Apache::lonhtmlcommon::add_breadcrumb_tool( |
'advtools', @inlineremote[61,71,72,73,92]); |
'advtools', @inlineremote[61,71,72,73,92]); |
|
} |
} |
} |
} |
} |
|
|
Line 665 sub edit_course_upload {
|
Line 727 sub edit_course_upload {
|
|
|
# ================================================================== Raw Config |
# ================================================================== Raw Config |
|
|
#SD |
|
#this is called by |
|
#lonmenu |
|
# |
|
sub clear { |
sub clear { |
my ($row,$col)=@_; |
my ($row,$col)=@_; |
$inlineremote[10*$row+$col]=''; |
$inlineremote[10*$row+$col]=''; |
Line 1059 function go(url) {
|
Line 1117 function go(url) {
|
} |
} |
} |
} |
|
|
function gotop(url) { |
|
if (url!='' && url!= null) { |
|
top.location.href = url; |
|
} |
|
} |
|
|
|
function gopost(url,postdata) { |
function gopost(url,postdata) { |
if (url!='') { |
if (url!='') { |
this.document.server.action=url; |
this.document.server.action=url; |
Line 1154 function edit_bookmarks() {
|
Line 1206 function edit_bookmarks() {
|
go(''); |
go(''); |
w_BookmarkPal_flag=1; |
w_BookmarkPal_flag=1; |
bookmarkpal=window.open("/adm/bookmarks", |
bookmarkpal=window.open("/adm/bookmarks", |
"BookmarkPal", "width=400,height=505,scrollbars=0"); |
"BookmarkPal", "width=500,height=505,scrollbars=0"); |
} |
} |
|
|
function annotate() { |
function annotate() { |