--- loncom/interface/lonmenu.pm 2011/11/30 18:34:25 1.315.2.15
+++ loncom/interface/lonmenu.pm 2012/10/31 12:54:13 1.389
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.315.2.15 2011/11/30 18:34:25 raeburn Exp $
+# $Id: lonmenu.pm,v 1.389 2012/10/31 12:54:13 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -26,10 +26,6 @@
# http://www.lon-capa.org/
#
#
-# There is one parameter controlling the action of this module:
-#
-# environment.remote - if this is 'on', the routines controll the remote
-# control, otherwise they render the main window controls;
=head1 NAME
@@ -37,7 +33,8 @@ Apache::lonmenu
=head1 SYNOPSIS
-Coordinates the response to clicking an image.
+Loads contents of /home/httpd/lonTabs/mydesk.tab,
+used to generate inline menu, and Main Menu page.
This is part of the LearningOnline Network with CAPA project
described at http://www.lon-capa.org.
@@ -76,10 +73,19 @@ It is set to 'done' in the BEGIN block o
=item @primary_menu
The elements of this array reference arrays that are made up of the components
-of those lines of mydesk.tab that start with prim.
+of those lines of mydesk.tab that start with prim:.
It is used by primary_menu() to generate the corresponding menu.
It gets filled in the BEGIN block of this module.
+=item %primary_sub_menu
+
+The keys of this hash reference are the names of items in the primary_menu array
+which have sub-menus. For each key, the corresponding value is a reference to
+an array containing components extracted from lines in mydesk.tab which begin
+with primsub:.
+This hash, which is used by primary_menu to generate sub-menus, is populated in
+the BEGIN block.
+
=item @secondary_menu
The elements of this array reference arrays that are made up of the components
@@ -109,36 +115,21 @@ entries from mydesk.tab
Same as primary_menu() but operates on @secondary_menu.
-=item show_return_link()
+=item create_submenu()
-=item registerurl()
-
-This gets called in the header section
+Creates XHTML for unordered list of sub-menu items which belong to a
+particular top-level menu item. Uses hover pseudo class in css to display
+dropdown list when mouse hovers over top-level item. Support for IE6
+(no hover psuedo class) via LC_hoverable class for
tag for top-
+level item, which employs jQuery to handle behavior on mouseover.
+
+Inputs: 4 - (a) link and (b) target for anchor href in top level item,
+ (c) title for text wrapped by anchor tag in top level item.
+ (d) reference to array of arrays of sub-menu items.
=item innerregister()
-This gets called in order to register a URL, both with the Remote
-and in the body of the document
-
-=item loadevents()
-
-=item unloadevents()
-
-=item startupremote()
-
-=item setflags()
-
-=item maincall()
-
-=item load_remote_msg()
-
-=item get_menu_name()
-
-=item reopenmenu()
-
-=item open()
-
-Open the menu
+This gets called in order to register a URL in the body of the document
=item clear()
@@ -156,12 +147,11 @@ The javascript is usually similar to "go
=item rawconfig()
-=item close()
-
-=item footer()
-
=item utilityfunctions()
+Output from this routine is a number of javascript functions called by
+items in the inline menu, and in some cases items in the Main Menu page.
+
=item serverform()
=item constspaceform()
@@ -186,11 +176,13 @@ use Apache::lonhtmlcommon();
use Apache::loncommon();
use Apache::lonenc();
use Apache::lonlocal;
+use Apache::lonmsg();
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);
+ $readdesk @primary_menu %primary_submenu @secondary_menu);
my @inlineremote;
@@ -205,15 +197,15 @@ sub prep_menuitem {
} else { # textual Link
$link = &mt($$menuitem[3]);
}
- return '
|;
}
# primary_menu() evaluates @primary_menu and returns XHTML for the menu
# that contains following links:
-# About, Message, Roles, Help, Logout
+# About, Message, Personal, Roles, Help, Logout
# @primary_menu is filled within the BEGIN block of this module with
# entries from mydesk.tab
sub primary_menu {
@@ -235,16 +227,41 @@ sub primary_menu {
next if $$menuitem[4] !~ /public/ ##we've a public user,
&& $public; ##who should not see all
##links
- next if $$menuitem[4] eq 'onlypublic'# hide links which are
+ next if $$menuitem[4] eq 'onlypublic'# hide links which are
&& !$public; # only visible to public
# users
next if $$menuitem[4] eq 'roles' ##show links depending on
- && &Apache::loncommon::show_course(); ##term 'Courses' or
+ && &Apache::loncommon::show_course(); ##term 'Courses' or
next if $$menuitem[4] eq 'courses' ##'Roles' wanted
&& !&Apache::loncommon::show_course(); ##
-
-
- if ($$menuitem[3] eq 'Help') { # special treatment for helplink
+
+ my $title = $menuitem->[3];
+ if (defined($primary_submenu{$title})) {
+ my ($link,$target);
+ if ($menuitem->[0] ne '') {
+ $link = $menuitem->[0];
+ $target = '_top';
+ } else {
+ $link = '#';
+ }
+ my @primsub;
+ if (ref($primary_submenu{$title}) eq 'ARRAY') {
+ foreach my $item (@{$primary_submenu{$title}}) {
+ next if (($item->[2] eq 'wishlist') && (!$env{'user.adv'}));
+ next if (($item->[2] eq 'reqcrs') && (!&check_for_rcrs()));
+ next if ((($item->[2] eq 'portfolio') ||
+ ($item->[2] eq 'blog')) &&
+ (!&Apache::lonnet::usertools_access('','',$item->[2],
+ undef,'tools')));
+ push(@primsub,$item);
+ }
+ if (@primsub > 0) {
+ $menu .= &create_submenu($link,$target,$title,\@primsub);
+ } elsif ($link) {
+ $menu .= '
';
+ return $menu;
}
sub innerregister {
- my ($forcereg,$titletable,$bread_crumbs) = @_;
- my $result = '';
- my ($uname,$thisdisfn);
+ my ($forcereg,$bread_crumbs) = @_;
my $const_space = ($env{'request.state'} eq 'construct');
my $is_const_dir = 0;
@@ -440,44 +439,26 @@ sub innerregister {
$env{'request.registered'} = 1;
- my $noremote = ($env{'environment.remote'} eq 'off');
-
undef(@inlineremote);
- my $reopen=&Apache::lonmenu::reopenmenu();
-
- my $newmail='';
+ my $resurl;
+ if ( $env{'request.symb'} && $env{'request.course.id'} ) {
- if (&Apache::lonmsg::newmail() && !$noremote) {
- # We have new mail and remote is up
- $newmail= 'swmenu.setstatus("you have","messages");';
- }
-
- my ($breadcrumb,$separator,$resurl);
- if ($noremote
- && ($env{'request.symb'})
- && ($env{'request.course.id'})) {
-
- (my $mapurl, my $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);
my $restitle = &Apache::lonnet::gettitle(&Apache::lonnet::symbread());
- my $contentstext;
- if ($env{'course.'.$env{'request.course.id'}.'.type'} eq 'Community') {
- $contentstext = &mt('Community Contents');
- } else {
- $contentstext = &mt('Course Contents');
- }
+
+#SD
+#course_type only Course and Community?
+#
my @crumbs;
unless (($forcereg) && ($env{'request.noversionuri'} eq '/adm/navmaps')
&& ($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'})) {
- my $navhref = "javascript:gopost('/adm/navmaps','')";
- if ($env{'environment.remotenavmap'} eq 'on') {
- $navhref = "javascript:gonav('/adm/navmaps');";
- }
- @crumbs = ({text => $contentstext,
- href => $navhref});
+ @crumbs = ({text => Apache::loncommon::course_type()
+ . ' Contents',
+ href => "Javascript:gopost('/adm/navmaps','')"});
}
if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) {
push(@crumbs, {text => '...',
@@ -492,29 +473,17 @@ sub innerregister {
&Apache::lonhtmlcommon::clear_breadcrumbs();
&Apache::lonhtmlcommon::add_breadcrumb(@crumbs);
-
- #$breadcrumb .= &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0);
- unless (($env{'request.state'} eq 'edit') || ($newmail) ||
- ($env{'request.state'} eq 'construct') ||
- ($env{'form.register'})) {
- $separator = &Apache::loncommon::head_subbox();
- }
- #
- } elsif (!$const_space){
- #a situation when we're looking at a resource outside of context of a
+ }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'});
}
- if ($env{'request.state'} eq 'construct') {
- $newmail = $titletable;
- }
- my $timesync = ( $noremote ? '' : 'swmenu.syncclock(1000*'.time.');' );
- my $tablestart = ( $noremote ? '
' : '');
- my $tableend = ( $noremote ? '
' : '');
# =============================================================================
# ============================ This is for URLs that actually can be registered
- if (($env{'request.noversionuri'}!~m{^/(res/)*adm/}) || ($forcereg)) {
+ return '' unless ( ($env{'request.noversionuri'}!~m{^/(res/)*adm/})
+ || $forcereg );
+
# -- This applies to homework problems for users with grading privileges
my $crs='/'.$env{'request.course.id'};
if ($env{'request.course.sec'}) {
@@ -524,23 +493,29 @@ sub innerregister {
my $hwkadd='';
if ($env{'request.symb'} ne '' &&
- $env{'request.filename'}=~/\.(problem|exam|quiz|assess|survey|form|task)$/) {
+ $env{'request.filename'}=~/$LONCAPA::assess_re/) {
if (&Apache::lonnet::allowed('mgr',$crs)) {
- $hwkadd.=&switch('','',7,2,'pgrd.gif','problem[_1]','grades[_4]',
+ $hwkadd.=&switch('','',7,2,'pgrd.png','Content Grades','grades[_4]',
"gocmd('/adm/grades','gradingmenu')",
- 'Modify user grades for this assessment resource');
+ 'Content Grades');
} elsif (&Apache::lonnet::allowed('vgr',$crs)) {
- $hwkadd.=&switch('','',7,2,'subm.gif','view sub-[_1]','missions[_1]',
+ $hwkadd.=&switch('','',7,2,'subm.png','Content Submissions','missions[_1]',
"gocmd('/adm/grades','submission')",
- 'View user submissions for this assessment resource');
+ 'Content Submissions');
}
}
if ($env{'request.symb'} ne '' &&
&Apache::lonnet::allowed('opa',$crs)) {
- $hwkadd.=&switch('','',7,3,'pparm.gif','problem[_2]','parms[_2]',
+ $hwkadd.=&switch('','',7,3,'pparm.png','Content Settings','parms[_2]',
"gocmd('/adm/parmset','set')",
- 'Modify parameter settings for this resource');
+ 'Content Settings');
}
+ if ($env{'request.symb'}=~/^uploaded/ &&
+ &Apache::lonnet::allowed('mdc',$crs)) {
+ $hwkadd.=&switch('','',7,4,'docs.png','Folder/Page Content','parms[_2]',
+ "gocmd('/adm/coursedocs','direct')",
+ 'Folder/Page Content');
+ }
# -- End Homework
###
### Determine whether or not to display the 'cstr' button for this
@@ -548,7 +523,7 @@ sub innerregister {
###
my $editbutton = '';
my $noeditbutton = 1;
- my ($cnum,$cdom);
+ my ($cnum,$cdom,$cfile,$switchserver,$home,$uploaded);
if ($env{'request.course.id'}) {
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
@@ -560,7 +535,7 @@ sub innerregister {
#
# Set defaults for authors
my ($top,$bottom) = ('con-','struct');
- my $action = "go('/priv/".$env{'user.name'}."');";
+ my $action = "go('/priv/".$env{'user.domain'}.'/'.$env{'user.name'}."');";
my $cadom = $env{'request.role.domain'};
my $caname = $env{'user.name'};
my $desc = "Enter my construction space";
@@ -568,104 +543,62 @@ sub innerregister {
if ($env{'request.role'} =~ /^ca/) {
($cadom,$caname)=($env{'request.role'}=~/($match_domain)\/($match_username)$/);
($top,$bottom) = ('co con-','struct');
- $action = "go('/priv/".$caname."');";
+ $action = "go('/priv/".$cadom.'/'.$caname."');";
$desc = "Enter construction space as co-author";
} elsif ($env{'request.role'} =~ /^aa/) {
($cadom,$caname)=($env{'request.role'}=~/($match_domain)\/($match_username)$/);
($top,$bottom) = ('co con-','struct');
- $action = "go('/priv/".$caname."');";
+ $action = "go('/priv/".$cadom.'/'.$caname."');";
$desc = "Enter construction space as assistant co-author";
}
# Check that we are on the correct machine
my $home = &Apache::lonnet::homeserver($caname,$cadom);
my $allowed=0;
my @ids=&Apache::lonnet::current_machine_ids();
- foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } }
- if (!$allowed) {
+ if (($home ne 'no_host') && (grep(/^\Q$home\E$/,@ids))) {
$editbutton=&switch('','',6,1,$top,,$bottom,$action,$desc);
- $noeditbutton = 0;
}
- }
+ } else {
#
# We are an author for some stuff, but currently do not have the role of author.
# Figure out if we have authoring privileges for the resource we are looking at.
-# This should maybe become a privilege check in lonnet
#
- ##
- ## Determine if user can edit url.
- ##
- my $cfile='';
- my $cfuname='';
- my $cfudom='';
- my $uploaded;
- my $switchserver='';
- my $home;
- if ($env{'request.filename'}) {
- my $file=&Apache::lonnet::declutter($env{'request.filename'});
- if (defined($cnum) && defined($cdom)) {
- $uploaded = &is_course_upload($file,$cnum,$cdom);
- }
- if (!$uploaded) {
- $file=~s/^($match_domain)\/($match_username)/\/priv\/$2/;
- # Check that the user has permission to edit this resource
- ($cfuname,$cfudom)=&Apache::loncacc::constructaccess($file,$1);
- if (defined($cfudom)) {
- $home=&Apache::lonnet::homeserver($cfuname,$cfudom);
- my $allowed=0;
- my @ids=&Apache::lonnet::current_machine_ids();
- foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } }
- if ($allowed) {
- $cfile=$file;
- } else {
- $switchserver=$file;
+ my ($cfile,$switchserver,$home,$uploaded);
+ if ($env{'request.filename'}) {
+ my $file=&Apache::lonnet::declutter($env{'request.filename'});
+ ##
+ ## Determine if user can edit url.
+ ##
+ ($cfile,$home,$switchserver,$uploaded) =
+ &Apache::lonnet::can_edit_resource($file,$cnum,$cdom);
+ }
+ # Turn the button on or off
+ if (($cfile) && ($home ne '') && ($home ne 'no_host')) {
+ my $nocrsedit;
+ # Suppress display where CC has switched to student role.
+ if ($env{'request.course.id'}) {
+ unless(&Apache::lonnet::allowed('mdc',
+ $env{'request.course.id'})) {
+ $nocrsedit = 1;
}
}
- }
- }
- # Finally, turn the button on or off
- if (($cfile || $switchserver) && !$const_space) {
- my $nocrsedit;
- # Suppress display where CC has switched to student role.
- if ($env{'request.course.id'}) {
- unless(&Apache::lonnet::allowed('mdc',
- $env{'request.course.id'})) {
- $nocrsedit = 1;
+ if ($nocrsedit) {
+ $editbutton=&clear(6,1);
+ } else {
+ $editbutton = &get_editbutton($cfile,$home,$switchserver,$uploaded);
}
- }
- if ($nocrsedit) {
+ } elsif ($editbutton eq '') {
$editbutton=&clear(6,1);
- } else {
- my $bot = "go('$cfile')";
- 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='.
- &HTML::Entities::encode($env{'request.role'},'"<>&').'&symb='.
- &HTML::Entities::encode($env{'request.symb'},'"<>&');
- $bot = "need_switchserver('$cfile');";
- }
- }
- $editbutton=&switch
- ('','',6,1,'pcstr.gif','edit[_1]','resource[_2]',
- $bot,"Edit this resource");
- $noeditbutton = 0;
}
- } elsif ($editbutton eq '') {
- $editbutton=&clear(6,1);
}
- }
- if (($noeditbutton) && ($env{'request.filename'})) {
+ } elsif (($env{'request.filename'}) && $env{'request.course.id'}) {
if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
my $file=&Apache::lonnet::declutter($env{'request.filename'});
- if (defined($cnum) && defined($cdom)) {
- if (&is_course_upload($file,$cnum,$cdom)) {
- my $cfile = &edit_course_upload($file,$cnum,$cdom);
- if ($cfile) {
- $editbutton=&switch
- ('','',6,1,'pcstr.gif','edit[_1]',
- 'resource[_2]',"go('".$cfile."');",
- 'Edit this resource');
- }
+ if (($cnum =~ /$match_courseid/) && ($cdom =~ /$match_domain/)) {
+ my ($cfile,$home,$switchserver,$uploaded) =
+ &Apache::lonnet::can_edit_resource($file,$cnum,$cdom);
+ if (($uploaded) && ($cfile ne '')) {
+ $editbutton = &get_editbutton($cfile,$home,$switchserver,$uploaded);
}
}
}
@@ -685,14 +618,16 @@ sub innerregister {
###
###
# Prepare the rest of the buttons
- my $menuitems;
+ my ($menuitems,$got_prt,$got_wishlist);
if ($const_space) {
#
# We are in construction space
#
- my ($uname,$thisdisfn) =
- ($env{'request.filename'}=~m|^/home/([^/]+)/public_html/(.*)|);
- my $currdir = '/priv/'.$uname.'/'.$thisdisfn;
+
+ my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
+ my ($udom,$uname,$thisdisfn) =
+ ($env{'request.filename'}=~m{^\Q$londocroot/priv/\E([^/]+)/([^/]+)/(.*)$});
+ my $currdir = '/priv/'.$udom.'/'.$uname.'/'.$thisdisfn;
if ($currdir =~ m-/$-) {
$is_const_dir = 1;
} else {
@@ -703,91 +638,90 @@ sub innerregister {
# Probably should be in mydesk.tab
#
$menuitems=(< 'Notes',
- bookmark => 'Bookmark',
- catalog => 'Info',
- evaluate => 'Evaluate',
- feedback => 'Communicate',
- printout => 'Print',
- );
- }
$menuitems=(< 0){
- $menuitems.="anot2.gif";
+ $menuitems.="anot2.png";
}else{
- $menuitems.="anot.gif";
+ $menuitems.="anot.png";
}
-$menuitems.="&anno-[_1]&tations[_1]&annotate()&";
-$menuitems.="Make notes and annotations about this resource&&1&$icon_text{'annotate'}\n";
+$menuitems.="&Notes&&annotate()&";
+$menuitems.="Make notes and annotations about this resource&&1\n";
- unless ($noremote) {
- my $showreqcrs = &check_for_rcrs();
- if ($showreqcrs) {
- $menuitems.="s&8&1&rcrs.gif&request[_1]&course[_16]".
- "&go('/adm/requestcourse')&Course requests\n";
- }
- }
unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|viewclasslist|portfolio)(\?|$)/) {
- if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/})) {
- my $tail;
- unless ($env{'request.state'} eq 'construct') {
- $tail = '&&&'.$icon_text{'catalog'};
- }
+ if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/}) && ($env{'request.noversionuri'} !~ m{^/uploaded/$match_domain/$match_courseid/docs/})) {
$menuitems.=(<
-#$inlineremote[21] $inlineremote[23]
-#ENDARROWSINLINE
-# if ( &hidden_button_check() ne 'yes' ) {
-# $inlinebuttons .= (<
-#ENDINLINEICONS
-# }
-# } else { # not iconsonly
-# if ( $inlineremote[21] ne '' || $inlineremote[23] ne '' ) {
-# $inlinebuttons = (<
$inlineremote[21]
$inlineremote[23]
-#ENDFIRSTLINE
-# }
-# if ( &hidden_button_check() ne 'yes' ) {
-# foreach my $row ( 6 .. 9 ) {
-# if ( $inlineremote[ ${row} . '1' ] ne ''
-# || $inlineremote[ $row . '2' ] ne ''
-# || $inlineremote[ $row . '3' ] ne '' )
-# {
-# $inlinebuttons .= <<"ENDLINE";
-#
$inlineremote["${row}1"]
$inlineremote["${row}2"]
$inlineremote["${row}3"]
-#ENDLINE
-# }
-# }
-# }
-# }
- }
- $breadcrumb = &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0);
- $result =(<
-// BEGIN LON-CAPA Internal
-
-$timesync
-$breadcrumb
-
-
-
-$newmail
-
-
-
-ENDREGTEXT
-# Registered, graphical output
- } else {
- my $requri=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0]));
- $requri=&Apache::lonenc::check_encrypt(&unescape($requri));
- my $cursymb=&Apache::lonenc::check_encrypt($env{'request.symb'});
- my $navstatus=&get_nav_status();
- my $clearcstr;
-
- if ($env{'user.adv'}) { $clearcstr='clearbut(6,1)'; }
- $result = (<
-//
-
-ENDREGTHIS
- }
-# =============================================================================
- } else {
-# ========================================== This can or will not be registered
- if ($noremote) {
-# Not registered
- $result= (<
-//
-
-ENDDONOTREGTHIS
- }
-# =============================================================================
- }
- return $result;
-}
-
-sub is_course_upload {
- my ($file,$cnum,$cdom) = @_;
- my $uploadpath = &LONCAPA::propath($cdom,$cnum);
- $uploadpath =~ s{^\/}{};
- if (($file =~ m{^\Q$uploadpath\E/userfiles/docs/}) ||
- ($file =~ m{^userfiles/\Q$cdom\E/\Q$cnum\E/docs/})) {
- return 1;
- }
- return;
-}
-
-sub edit_course_upload {
- my ($file,$cnum,$cdom) = @_;
- my $cfile;
- if ($file =~/\.(htm|html|css|js|txt)$/) {
- my $ext = $1;
- my $url = &Apache::lonnet::hreflocation('',$file);
- my $home = &Apache::lonnet::homeserver($cnum,$cdom);
- my @ids=&Apache::lonnet::current_machine_ids();
- my $dest;
- if ($home && grep(/^\Q$home\E$/,@ids)) {
- $dest = $url.'?forceedit=1';
- } else {
- unless (&Apache::lonnet::get_locks()) {
- $dest = '/adm/switchserver?otherserver='.
- $home.'&role='.$env{'request.role'}.
- '&url='.$url.'&forceedit=1';
- }
- }
- if ($dest) {
- $cfile = &HTML::Entities::encode($dest,'"<>&');
- }
- }
- return $cfile;
-}
-
-sub loadevents() {
- if ($env{'request.state'} eq 'construct' ||
- $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
- return 'LONCAPAreg();';
-}
-
-sub unloadevents() {
- if ($env{'request.state'} eq 'construct' ||
- $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
- return 'LONCAPAstale();';
-}
-
-
-sub startupremote {
- my ($lowerurl)=@_;
- if ($env{'environment.remote'} eq 'off') {
- return ('');
- }
-#
-# The Remote actually gets launched!
-#
- my $configmenu=&rawconfig();
- my $esclowerurl=&escape($lowerurl);
- my $message=&mt('"Waiting for Remote Control window to load: "+[_1]','waited');
- return(<
-//
-
-ENDREMOTESTARTUP
-}
-sub setflags() {
- return(<
-//
-
-ENDSETFLAGS
+ return &Apache::lonhtmlcommon::scripttag('', 'start')
+ . &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0)
+ . &Apache::lonhtmlcommon::scripttag('', 'end');
}
-sub maincall() {
- if ($env{'environment.remote'} eq 'off') { return ''; }
- return(<
-//
-
-ENDMAINCALL
-}
-
-sub load_remote_msg {
- my ($lowerurl)=@_;
-
- if ($env{'environment.remote'} eq 'off') { return ''; }
-
- my $esclowerurl=&escape($lowerurl);
- my $link=&mt('[_1]Continue[_2] on in Inline Menu mode'
- ,''
- ,'');
- return(<
-
-
-
$link
-ENDREMOTEFORM
-}
-
-sub get_menu_name {
- my $hostid = $Apache::lonnet::perlvar{'lonHostID'};
- $hostid =~ s/\W//g;
- return 'LCmenu'.$hostid;
-}
-
-
-sub reopenmenu {
- if ($env{'environment.remote'} eq 'off') { return ''; }
- my $menuname = &get_menu_name();
- my $nothing = &Apache::lonhtmlcommon::javascript_nothing();
- return('window.open('.$nothing.',"'.$menuname.'","",false);');
-}
-
-
-sub open {
- my $returnval='';
- if ($env{'environment.remote'} eq 'off') {
- return
- '';
+sub get_editbutton {
+ my ($cfile,$home,$switchserver,$uploaded) = @_;
+ my $jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver,
+ $uploaded,$env{'request.symb'});
+ if ($jscall) {
+ return &switch('','',6,1,'pcstr.png','Edit','resource[_2]',
+ $jscall,"Edit this resource");
}
- my $menuname = &get_menu_name();
-
-# unless (shift eq 'unix') {
-# resizing does not work on linux because of virtual desktop sizes
-# $returnval.=(<
-ENDOPEN
- return '';
}
-
# ================================================================== Raw Config
sub clear {
my ($row,$col)=@_;
- unless ($env{'environment.remote'} eq 'off') {
- if (($row<1) || ($row>13)) { return ''; }
- return "\n".qq(window.status+='.';swmenu.clearbut($row,$col););
- } else {
- $inlineremote[10*$row+$col]='';
- return '';
- }
+ $inlineremote[10*$row+$col]='';
+ return '';
}
# ============================================ Switch a button or create a link
@@ -1211,39 +807,25 @@ sub clear {
# The javascript is usually similar to "go('/adm/roles')" or "cstrgo(..)".
sub switch {
- my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat,$nobreak,$inlinetools)=@_;
+ my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat,$nobreak)=@_;
$act=~s/\$uname/$uname/g;
$act=~s/\$udom/$udom/g;
$top=&mt($top);
$bot=&mt($bot);
$desc=&mt($desc);
- if (($env{'environment.remote'} ne 'off') || ($env{'environment.icons'} eq 'classic')) {
- $img=&mt($img);
- }
my $idx=10*$row+$col;
- if ($cat ne '') {
- $category_members{$cat}.=':'.$idx;
- }
+ $category_members{$cat}.=':'.$idx;
- unless ($env{'environment.remote'} eq 'off') {
- if (($row<1) || ($row>13)) { return ''; }
-# Remote
- return "\n".
- qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc"););
- } else {
-# Inline Remote
- if ($env{'environment.icons'} ne 'classic') {
- $img=~s/\.gif$/\.png/;
- }
- if ($nobreak==2) { return ''; }
- my $text=$top.' '.$bot;
- $text=~s/\s*\-\s*//gs;
+# Inline Menu
+ if ($nobreak==2) { return ''; }
+ my $text=$top.' '.$bot;
+ $text=~s/\s*\-\s*//gs;
- my $pic=
+ my $pic=
'';
- if ($env{'browser.interface'} eq 'faketextual') {
+ if ($env{'browser.interface'} eq 'faketextual') {
# Main Menu
if ($nobreak==3) {
$inlineremote[$idx]="\n".
@@ -1262,21 +844,22 @@ sub switch {
'