--- loncom/interface/lonmenu.pm 2011/01/18 19:52:46 1.344
+++ loncom/interface/lonmenu.pm 2011/09/27 14:50:12 1.351
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.344 2011/01/18 19:52:46 www Exp $
+# $Id: lonmenu.pm,v 1.351 2011/09/27 14:50:12 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -155,6 +155,7 @@ use Apache::lonenc();
use Apache::lonlocal;
use LONCAPA qw(:DEFAULT :match);
use HTML::Entities();
+use Apache::lonwishlist();
use vars qw(@desklines %category_names %category_members %category_positions
$readdesk @primary_menu @secondary_menu);
@@ -358,9 +359,10 @@ sub innerregister {
undef(@inlineremote);
+ my $resurl;
if ( $env{'request.symb'} && $env{'request.course.id'} ) {
- my ($mapurl,$rid,$resurl) = &Apache::lonnet::decode_symb(&Apache::lonnet::symbread());
+ (my $mapurl, my $rid, $resurl) = &Apache::lonnet::decode_symb(&Apache::lonnet::symbread());
my $coursetitle = $env{'course.'.$env{'request.course.id'}.'.description'};
my $maptitle = &Apache::lonnet::gettitle($mapurl);
@@ -530,7 +532,7 @@ sub innerregister {
}
}
$editbutton=&switch
- ('','',6,1,'pcstr.png','edit[_1]','resource[_2]',
+ ('','',6,1,'pcstr.png','Edit','resource[_2]',
$bot,"Edit this resource");
$noeditbutton = 0;
}
@@ -546,7 +548,7 @@ sub innerregister {
my $cfile = &edit_course_upload($file,$cnum,$cdom);
if ($cfile) {
$editbutton=&switch
- ('','',6,1,'pcstr.png','edit[_1]',
+ ('','',6,1,'pcstr.png','Edit',
'resource[_2]',"go('".$cfile."');",
'Edit this resource');
}
@@ -554,6 +556,18 @@ sub innerregister {
}
}
}
+ if ($env{'request.course.id'}) {
+ if ($resurl eq "public/$cdom/$cnum/syllabus") {
+ if ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ /\w/) {
+ if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
+ $editbutton=&switch('','',6,1,'pcstr.png','Edit',
+ 'resource[_2]',
+ "go('/adm/courseprefs?phase=display&actions=courseinfo')",
+ 'Edit this resource');
+ }
+ }
+ }
+ }
###
###
# Prepare the rest of the buttons
@@ -681,10 +695,10 @@ ENDMENUITEMS
#publish button in construction space
if ($env{'request.state'} eq 'construct'){
&Apache::lonhtmlcommon::add_breadcrumb_tool(
- 'advtools', @inlineremote[63]);
+ 'advtools', $inlineremote[63]);
} else {
&Apache::lonhtmlcommon::add_breadcrumb_tool(
- 'tools', @inlineremote[63]);
+ 'tools', $inlineremote[63]);
}
unless ($env{'request.noversionuri'}=~ m{^/adm/(navmaps|viewclasslist)(\?|$)}) {
@@ -1105,52 +1119,6 @@ sub utilityfunctions {
my $confirm_switch = &mt("Editing requires switching to the resource's home server.").'\n'.
&mt('Switch server?');
- my $start_page_wishlistlink =
- &Apache::loncommon::start_page('Set link to wishlist',undef,
- {'only_body' => 1,
- 'js_ready' => 1,
- 'bgcolor' => '#FFFFFF',});
-
- my $warningLink = &mt('You must insert a title!');
-
- # HTML-Markup for 'Set a link for this resource to wishlist'
- # this is written via JavaScript document.write (function set_wishlistlink)
- # it is split into 3 parts and the inputfields for title and path are left out
- # these fields are inserted later to set the values for title and path
- # automatically via JavaScript (document.title and location.pathname)
- my %folders = &Apache::lonnet::get('wishlist',['folders']);
- if ($folders{'folders'} eq '') {
- $folders{'folders'} = '';
- }
- my $in_page_wishlistlink1 = '
'.&mt('Set a link to wishlist').'
'.
- '';
-
- # remove all \n for inserting on javascript document.write
- $in_page_wishlistlink1 =~ s/\n//g;
- $in_page_wishlistlink2 =~ s/\n//g;
- $in_page_wishlistlink3 =~ s/\n//g;
-
- my $end_page_wishlistlink =
- &Apache::loncommon::end_page({'js_ready' => 1});
return (<'
- +'function newlinksubmit(){'
- +'var title = document.getElementsByName("title")[0].value;'
- +'if (!title) {'
- +'alert("$warningLink");'
- +'return false;}'
- +'return true;}'
- +'<\/scr'+'ipt>'
- +'$in_page_wishlistlink1'
- +''
- +'$in_page_wishlistlink2'
- +''
- +'$in_page_wishlistlink3'
- +'$end_page_wishlistlink' );
- wishlistlink.document.close();
+ if (!title) {
+ title = document.title;
+ title = title.replace(/^LON-CAPA /,'');
+ }
+ if (!path) {
+ path = location.pathname;
+ }
+ Win = window.open('/adm/wishlist?mode=newLink&setTitle='+title+'&setPath='+path,
+ 'wishlistNewLink','width=560,height=350,scrollbars=0');
}
function open_Wishlist_Import(rat) {
@@ -1363,7 +1314,7 @@ sub roles_selector {
my ($cdom,$cnum) = @_;
my $crstype = &Apache::loncommon::course_type();
my $now = time;
- my (%courseroles,%seccount);
+ my (%courseroles,%seccount,%courseprivs);
my $is_cc;
my $role_selector;
my $ccrole;
@@ -1371,7 +1322,17 @@ sub roles_selector {
$ccrole = 'co';
} else {
$ccrole = 'cc';
- }
+ }
+ my $priv;
+ my $destinationurl = $ENV{'REQUEST_URI'};
+ my $reqprivs = &required_privs();
+ if (ref($reqprivs) eq 'HASH') {
+ my $destination = $destinationurl;
+ $destination =~ s/(\?.*)$//;
+ if (exists($reqprivs->{$destination})) {
+ $priv = $reqprivs->{$destination};
+ }
+ }
if ($env{'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum}) {
my ($start,$end) = split(/\./,$env{'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum});
@@ -1384,7 +1345,7 @@ sub roles_selector {
}
}
if ($is_cc) {
- &get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount);
+ &get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs,$priv);
} else {
my %gotnosection;
foreach my $item (keys(%env)) {
@@ -1400,6 +1361,18 @@ sub roles_selector {
$gotnosection{$role} = 1;
}
}
+ if ($priv ne '') {
+ my $cnumsec = $cnum;
+ if ($sec ne '') {
+ $cnumsec .= "/$sec";
+ }
+ $courseprivs{"$role./$cdom/$cnumsec./"} =
+ $env{"user.priv.$role./$cdom/$cnumsec./"};
+ $courseprivs{"$role./$cdom/$cnumsec./$cdom/"} =
+ $env{"user.priv.$role./$cdom/$cnumsec./$cdom/"};
+ $courseprivs{"$role./$cdom/$cnumsec./$cdom/$cnumsec"} =
+ $env{"user.priv.$role./$cdom/$cnumsec./$cdom/$cnumsec"};
+ }
if (ref($courseroles{$role}) eq 'ARRAY') {
if ($sec ne '') {
if (!grep(/^\Q$sec\E$/,@{$courseroles{$role}})) {
@@ -1425,7 +1398,7 @@ sub roles_selector {
}
my @roles_order = ($ccrole,'in','ta','ep','ad','st');
if (keys(%courseroles) > 1) {
- $role_selector = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles);
+ $role_selector = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs,$priv);
$role_selector .= '