version 1.273, 2009/07/09 19:28:36
|
version 1.284, 2009/10/06 14:06:12
|
Line 137 use Apache::loncommon();
|
Line 137 use Apache::loncommon();
|
use Apache::lonenc(); |
use Apache::lonenc(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
|
use HTML::Entities(); |
|
|
use vars qw(@desklines %category_names %category_members %category_positions $readdesk); |
use vars qw(@desklines %category_names %category_members %category_positions |
|
$readdesk @primary_menu @secondary_menu); |
|
|
|
|
my @inlineremote; |
my @inlineremote; |
|
|
|
sub prep_menuitem { |
|
my $menuitem = shift; |
|
return '' unless ref $menuitem eq 'ARRAY'; |
|
my $link; |
|
if ($$menuitem[1]) { # graphical Link |
|
$link = "<img class=\"LC_noBorder\"" |
|
. " src=\"" . Apache::loncommon::lonhttpdurl($$menuitem[1]) . "\"" |
|
. " alt=\"" . mt($$menuitem[2]) . "\" />"; |
|
} else { # textual Link |
|
$link = mt($$menuitem[3]); |
|
} |
|
return "<li><a href=\"javascript:$$menuitem[0]\">$link</a></li>"; |
|
} |
|
|
|
# primary_menu() evaluates @primary_menu and returns XHTML for the menu |
|
# that contains following links: |
|
# About, Message, Roles, Help, Logout |
|
# @primary_menu is filled within the BEGIN block of this module with |
|
# entries from mydesk.tab |
|
sub primary_menu { |
|
my $menu; |
|
# each element of @primary contains following array: |
|
# (link url, icon path, alt text, link text, condition) |
|
foreach my $menuitem (@primary_menu) { |
|
# evaluate conditions |
|
next if $$menuitem[4] eq 'nonewmsg' # show links depending on |
|
&& Apache::lonmsg::mynewmail(); # whether a new msg |
|
next if $$menuitem[4] eq 'newmsg' # arrived or not |
|
&& !Apache::lonmsg::mynewmail(); # |
|
next if $$menuitem[4] !~ /public/ ##we've a public user, |
|
&& $env{'user.name'} eq 'public' ##who should not see all |
|
&& $env{'user.domain'} eq 'public'; ##links |
|
next if $$menuitem[4] eq 'onlypublic'# hide links which are |
|
&& $env{'user.name'} ne 'public' # only visible to public |
|
&& $env{'user.domain'} ne 'public'; # users |
|
next if $$menuitem[4] eq 'roles' ##show links depending on |
|
&& 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 |
|
$menu .= '<li>'.Apache::loncommon::top_nav_help('Help').'</li>'; |
|
} else { |
|
$menu .= prep_menuitem(\@$menuitem); |
|
} |
|
} |
|
|
|
return "<ol class=\"LC_smallMenu LC_right\">$menu</ol>"; |
|
} |
|
|
|
|
|
sub secondary_menu { |
|
my $menu; |
|
|
|
foreach my $menuitem (@secondary_menu) { |
|
# evaluate conditions |
|
next if $$menuitem[4] ne 'always' |
|
&& !$env{'request.course.id'}; |
|
next if $$menuitem[4] eq 'showreturn' |
|
&& !show_return_link() |
|
&& !($env{'request.state'} eq 'construct'); |
|
next if $$menuitem[4] =~ /^mdc/ |
|
&& !Apache::lonnet::allowed('mdc', $env{'request.course.id'}); |
|
next if $$menuitem[4] =~ /nogrp$/ |
|
&& Apache::loncommon::course_type() eq 'Group'; |
|
next if $$menuitem[4] =~ /group$/ |
|
&& Apache::loncommon::course_type() ne 'Group'; |
|
next if $$menuitem[4] eq 'remotenav' |
|
&& $env{'environment.remotenavmap'} ne 'on'; |
|
next if $$menuitem[4] eq 'noremotenav' |
|
&& $env{'environment.remotenavmap'} eq 'on'; |
|
next if $$menuitem[4] =~ /showgroups$/ |
|
&& !Apache::lonnet::allowed('vcg', $env{'request.course.id'} |
|
. ($env{'request.course.sec'} ? "/$env{'request.course.sec'}" |
|
: '')) |
|
&& !Apache::lonnet::get_active_groups( |
|
$env{'user.domain'}, $env{'user.name'}, |
|
$env{'course.' . $env{'request.course.id'} . '.domain'}, |
|
$env{'course.' . $env{'request.course.id'} . '.num'}); |
|
|
|
|
|
if($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) { |
|
# special treatment for role selector |
|
my $roles_selector = roles_selector( |
|
$env{'course.' . $env{'request.course.id'} . '.domain'}, |
|
$env{'course.' . $env{'request.course.id'} . '.num'} ); |
|
|
|
$menu .= $roles_selector ? "<li>$roles_selector</li>" |
|
: ''; |
|
} else { |
|
$menu .= prep_menuitem(\@$menuitem); |
|
} |
|
} |
|
if ($menu =~ /\[url\].*\[symb\]/) { |
|
my $escurl = escape( Apache::lonenc::check_encrypt( |
|
$env{'request.noversionuri'})); |
|
|
|
my $escsymb = escape( Apache::lonenc::check_encrypt( |
|
$env{'request.symb'})); |
|
|
|
if ( $env{'request.state'} eq 'construct' |
|
and ( $env{'request.noversionuri'} eq '' |
|
|| !defined($env{'request.noversionuri'}))) |
|
{ |
|
($escurl = $env{'request.filename'}) =~ |
|
s{^/home/([^/]+)/public_html/(.*)$}{/priv/$1/$2}; |
|
|
|
$escurl = escape($escurl); |
|
} |
|
$menu =~ s/\[url\]/$escurl/g; |
|
$menu =~ s/\[symb\]/$escsymb/g; |
|
} |
|
|
|
return "<ul id=\"LC_TabMainMenuContent\">$menu</ul>"; |
|
} |
|
|
|
|
|
# |
|
# This routine returns a translated hash for the menu items in the top inline menu row |
|
# Probably should be in mydesk.tab |
|
|
|
#SD this sub is deprecated - don't use it |
sub initlittle { |
sub initlittle { |
return &Apache::lonlocal::texthash('ret' => 'Return to Last Location', |
return &Apache::lonlocal::texthash('ret' => 'Return to Last Location', |
'nav' => 'Navigate Contents', |
'nav' => 'Course Contents', |
'main' => 'Main Menu', |
'main' => 'Main Menu', |
'roles' => (&Apache::loncommon::show_course()? |
'roles' => (&Apache::loncommon::show_course()? |
'Courses':'Roles'), |
'Courses':'Roles'), |
Line 159 sub initlittle {
|
Line 284 sub initlittle {
|
); |
); |
} |
} |
|
|
|
#SD this sub is deprecated - don't use it |
|
#SD functionality is covered by new loncommon::bodytag and primary_menu(), secondary_menu() |
sub menubuttons { |
sub menubuttons { |
my $forcereg=shift; |
my $forcereg=shift; |
my $registration=shift; |
|
my $titletable=shift; |
my $titletable=shift; |
|
# |
|
# Early-out for pages that should not have a menu, triggered by query string "inhibitmenu=yes" |
|
# |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['inhibitmenu']); |
['inhibitmenu']); |
if (($env{'form.inhibitmenu'} eq 'yes') || |
if (($env{'form.inhibitmenu'} eq 'yes') || |
Line 179 sub menubuttons {
|
Line 308 sub menubuttons {
|
my $role_selector; |
my $role_selector; |
my $showgroups=0; |
my $showgroups=0; |
my ($cnum,$cdom); |
my ($cnum,$cdom); |
|
# |
|
# if the URL is hidden, symbs and the non-versioned version of the URL would be encrypted |
|
# |
my $escurl=&escape(&Apache::lonenc::check_encrypt($env{'request.noversionuri'})); |
my $escurl=&escape(&Apache::lonenc::check_encrypt($env{'request.noversionuri'})); |
my $escsymb=&escape(&Apache::lonenc::check_encrypt($env{'request.symb'})); |
my $escsymb=&escape(&Apache::lonenc::check_encrypt($env{'request.symb'})); |
|
|
Line 187 sub menubuttons {
|
Line 319 sub menubuttons {
|
$logo.'" alt="LON-CAPA Logo" class="LC_noBorder" /></a>'; |
$logo.'" alt="LON-CAPA Logo" class="LC_noBorder" /></a>'; |
|
|
if ($env{'request.state'} eq 'construct') { |
if ($env{'request.state'} eq 'construct') { |
|
# |
|
# We are in construction space |
|
# |
if (($env{'request.noversionuri'} eq '') || (!defined($env{'request.noversionuri'}))) { |
if (($env{'request.noversionuri'} eq '') || (!defined($env{'request.noversionuri'}))) { |
my $returnurl = $env{'request.filename'}; |
my $returnurl = $env{'request.filename'}; |
$returnurl =~ s:^/home/([^/]+)/public_html/(.*)$:/priv/$1/$2:; |
$returnurl =~ s:^/home/([^/]+)/public_html/(.*)$:/priv/$1/$2:; |
Line 194 sub menubuttons {
|
Line 329 sub menubuttons {
|
} |
} |
} |
} |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
|
# |
|
# We are in a course |
|
# |
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my %coursegroups; |
my %coursegroups; |
Line 272 ENDRELOAD
|
Line 410 ENDRELOAD
|
<li><a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a></li> |
<li><a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a></li> |
ENDCRELOAD |
ENDCRELOAD |
} |
} |
my $reg=''; |
my $reg = $forcereg ? &innerregister($forcereg,$titletable) : ''; |
if ($registration) { |
my $form = &serverform(); |
$reg=&innerregister($forcereg,$titletable); |
my $utility = &utilityfunctions(); |
} |
|
my $form=&serverform(); |
#Prepare the message link that indicates the arrival of new mail |
my $utility=&utilityfunctions(); |
my $messagelink = Apache::lonmsg::mynewmail() ? "Message (new)" : "Message"; |
|
$messagelink = '<a href="javascript:go(\'/adm/communicate\');">' |
my $messagelink = ""; |
. mt($messagelink) .'</a>'; |
if(&Apache::lonmsg::mynewmail()){ |
|
$messagelink = '<a href="javascript:go(\'/adm/communicate\');">Message(new)</a>' |
my $helplink = &Apache::loncommon::top_nav_help('Help'); |
}else{ |
|
$messagelink = '<a href="javascript:go(\'/adm/communicate\');">Message</a>' |
|
} |
|
my $helplink=&Apache::loncommon::top_nav_help('Help'); |
|
return (<<ENDINLINEMENU); |
return (<<ENDINLINEMENU); |
<script type="text/javascript"> |
<script type="text/javascript"> |
// BEGIN LON-CAPA Internal |
|
// <![CDATA[ |
// <![CDATA[ |
|
// BEGIN LON-CAPA Internal |
$utility |
$utility |
// ]]> |
// ]]> |
</script> |
</script> |
Line 346 sub registerurl {
|
Line 480 sub registerurl {
|
(!&Apache::lonnet::is_on_map( |
(!&Apache::lonnet::is_on_map( |
&unescape($env{'request.noversionuri'})))) && |
&unescape($env{'request.noversionuri'})))) && |
(!$forcereg))) { |
(!$forcereg))) { |
return $result. |
return |
'<script type="text/javascript">function LONCAPAreg(){;} function LONCAPAstale(){}</script>'.$force_title; |
$result |
|
.'<script type="text/javascript">'."\n" |
|
.'// <![CDATA['."\n" |
|
.'function LONCAPAreg(){;} function LONCAPAstale(){}'."\n" |
|
.'// ]]>'."\n" |
|
.'</script>' |
|
.$force_title; |
} |
} |
# Graphical display after login only |
# Graphical display after login only |
if ($env{'request.registered'} && !$forcereg) { return ''; } |
if ($env{'request.registered'} && !$forcereg) { return ''; } |
Line 373 sub innerregister {
|
Line 513 sub innerregister {
|
my $reopen=&Apache::lonmenu::reopenmenu(); |
my $reopen=&Apache::lonmenu::reopenmenu(); |
|
|
my $newmail=''; |
my $newmail=''; |
my $breadcrumb; |
|
|
|
if (&Apache::lonmsg::newmail() && !$noremote) { |
if (&Apache::lonmsg::newmail() && !$noremote) { |
# We have new mail and remote is up |
# We have new mail and remote is up |
$newmail= 'swmenu.setstatus("you have","messages");'; |
$newmail= 'swmenu.setstatus("you have","messages");'; |
} |
} |
|
|
|
my $breadcrumb; |
if ($noremote |
if ($noremote |
&& ($env{'request.symb'}) |
&& ($env{'request.symb'}) |
&& ($env{'request.course.id'})) { |
&& ($env{'request.course.id'})) { |
Line 453 sub innerregister {
|
Line 594 sub innerregister {
|
} |
} |
if ($env{'user.author'}) { |
if ($env{'user.author'}) { |
if ($env{'request.role'}=~/^(aa|ca|au)/) { |
if ($env{'request.role'}=~/^(aa|ca|au)/) { |
|
# |
|
# We have the role of an author |
|
# |
# Set defaults for authors |
# Set defaults for authors |
my ($top,$bottom) = ('con-','struct'); |
my ($top,$bottom) = ('con-','struct'); |
my $action = "go('/priv/".$env{'user.name'}."');"; |
my $action = "go('/priv/".$env{'user.name'}."');"; |
Line 481 sub innerregister {
|
Line 625 sub innerregister {
|
$noeditbutton = 0; |
$noeditbutton = 0; |
} |
} |
} |
} |
|
# |
|
# 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. |
## Determine if user can edit url. |
## |
## |
Line 539 sub innerregister {
|
Line 688 sub innerregister {
|
# Prepare the rest of the buttons |
# Prepare the rest of the buttons |
my $menuitems; |
my $menuitems; |
if ($const_space) { |
if ($const_space) { |
|
# |
|
# We are in construction space |
|
# |
my ($uname,$thisdisfn) = |
my ($uname,$thisdisfn) = |
($env{'request.filename'}=~m|^/home/([^/]+)/public_html/(.*)|); |
($env{'request.filename'}=~m|^/home/([^/]+)/public_html/(.*)|); |
my $currdir = '/priv/'.$uname.'/'.$thisdisfn; |
my $currdir = '/priv/'.$uname.'/'.$thisdisfn; |
Line 548 sub innerregister {
|
Line 700 sub innerregister {
|
$currdir =~ s|[^/]+$||; |
$currdir =~ s|[^/]+$||; |
my $cleandisfn = &Apache::loncommon::escape_single($thisdisfn); |
my $cleandisfn = &Apache::loncommon::escape_single($thisdisfn); |
my $esc_currdir = &Apache::loncommon::escape_single($currdir); |
my $esc_currdir = &Apache::loncommon::escape_single($currdir); |
|
# |
|
# Probably should be in mydesk.tab |
|
# |
$menuitems=(<<ENDMENUITEMS); |
$menuitems=(<<ENDMENUITEMS); |
s&6&1&list.gif&list[_1]&dir[_1]&golist('$esc_currdir')&List current directory |
s&6&1&list.gif&list[_1]&dir[_1]&golist('$esc_currdir')&List current directory |
s&6&2&rtrv.gif&retrieve[_1]&version[_1]&gocstr('/adm/retrieve','/~$uname/$cleandisfn')&Retrieve old version |
s&6&2&rtrv.gif&retrieve[_1]&version[_1]&gocstr('/adm/retrieve','/~$uname/$cleandisfn')&Retrieve old version |
Line 558 ENDMENUITEMS
|
Line 713 ENDMENUITEMS
|
} |
} |
} elsif ( defined($env{'request.course.id'}) && |
} elsif ( defined($env{'request.course.id'}) && |
$env{'request.symb'} ne '' ) { |
$env{'request.symb'} ne '' ) { |
|
# |
|
# We are in a course and looking at a registred URL |
|
# Should probably be in mydesk.tab |
|
# |
$menuitems=(<<ENDMENUITEMS); |
$menuitems=(<<ENDMENUITEMS); |
c&3&1 |
c&3&1 |
s&2&1&back.gif&backward[_1]&&gopost('/adm/flip','back:'+currentURL)&Go to the previous resource in the course sequence&&1 |
s&2&1&back.gif&backward[_1]&&gopost('/adm/flip','back:'+currentURL)&Go to the previous resource in the course sequence&&1 |
Line 581 if(length($annotation) > 0){
|
Line 740 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 ($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)(\?|$)/) { |
unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) { |
if (!$env{'request.enc'}) { |
if (!$env{'request.enc'}) { |
$menuitems.=(<<ENDREALRES); |
$menuitems.=(<<ENDREALRES); |
Line 682 ENDREGTEXT
|
Line 848 ENDREGTEXT
|
$result = (<<ENDREGTHIS); |
$result = (<<ENDREGTHIS); |
|
|
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
// BEGIN LON-CAPA Internal |
// BEGIN LON-CAPA Internal |
var swmenu=null; |
var swmenu=null; |
|
|
Line 717 var swmenu=null;
|
Line 884 var swmenu=null;
|
} |
} |
|
|
// END LON-CAPA Internal |
// END LON-CAPA Internal |
|
// ]]> |
</script> |
</script> |
ENDREGTHIS |
ENDREGTHIS |
} |
} |
Line 732 ENDDONOTREGTEXT
|
Line 900 ENDDONOTREGTEXT
|
$result = (<<ENDDONOTREGTHIS); |
$result = (<<ENDDONOTREGTHIS); |
|
|
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
// BEGIN LON-CAPA Internal |
// BEGIN LON-CAPA Internal |
var swmenu=null; |
var swmenu=null; |
|
|
Line 756 var swmenu=null;
|
Line 925 var swmenu=null;
|
} |
} |
|
|
// END LON-CAPA Internal |
// END LON-CAPA Internal |
|
// ]]> |
</script> |
</script> |
ENDDONOTREGTHIS |
ENDDONOTREGTHIS |
} |
} |
Line 826 sub startupremote {
|
Line 996 sub startupremote {
|
my $message=&mt('"Waiting for Remote Control window to load: "+[_1]','waited'); |
my $message=&mt('"Waiting for Remote Control window to load: "+[_1]','waited'); |
return(<<ENDREMOTESTARTUP); |
return(<<ENDREMOTESTARTUP); |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
var timestart; |
var timestart; |
function wheelswitch() { |
function wheelswitch() { |
if (typeof(document.wheel) != 'undefined') { |
if (typeof(document.wheel) != 'undefined') { |
Line 876 function main() {
|
Line 1047 function main() {
|
wait(); |
wait(); |
} |
} |
|
|
|
// ]]> |
</script> |
</script> |
ENDREMOTESTARTUP |
ENDREMOTESTARTUP |
} |
} |
Line 883 ENDREMOTESTARTUP
|
Line 1055 ENDREMOTESTARTUP
|
sub setflags() { |
sub setflags() { |
return(<<ENDSETFLAGS); |
return(<<ENDSETFLAGS); |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
menuloaded=0; |
menuloaded=0; |
tim=0; |
tim=0; |
|
// ]]> |
</script> |
</script> |
ENDSETFLAGS |
ENDSETFLAGS |
} |
} |
Line 893 sub maincall() {
|
Line 1067 sub maincall() {
|
if ($env{'environment.remote'} eq 'off') { return ''; } |
if ($env{'environment.remote'} eq 'off') { return ''; } |
return(<<ENDMAINCALL); |
return(<<ENDMAINCALL); |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
main(); |
main(); |
|
// ]]> |
</script> |
</script> |
ENDMAINCALL |
ENDMAINCALL |
} |
} |
Line 935 sub reopenmenu {
|
Line 1111 sub reopenmenu {
|
sub open { |
sub open { |
my $returnval=''; |
my $returnval=''; |
if ($env{'environment.remote'} eq 'off') { |
if ($env{'environment.remote'} eq 'off') { |
return '<script type="text/javascript">self.name="loncapaclient";</script>'; |
return |
|
'<script type="text/javascript">'."\n" |
|
.'// <![CDATA['."\n" |
|
.'self.name="loncapaclient";'."\n" |
|
.'// ]]>'."\n" |
|
.'</script>'; |
} |
} |
my $menuname = &get_menu_name(); |
my $menuname = &get_menu_name(); |
|
|
Line 948 sub open {
|
Line 1129 sub open {
|
#} |
#} |
#ENDRESIZE |
#ENDRESIZE |
# } |
# } |
$returnval.=(<<ENDOPEN); |
$returnval=(<<ENDOPEN); |
|
// <![CDATA[ |
window.status='Opening LON-CAPA Remote Control'; |
window.status='Opening LON-CAPA Remote Control'; |
var menu=window.open("/res/adm/pages/menu.html?inhibitmenu=yes","$menuname", |
var menu=window.open("/res/adm/pages/menu.html?inhibitmenu=yes","$menuname", |
"height=375,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5"); |
"height=375,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5"); |
self.name='loncapaclient'; |
self.name='loncapaclient'; |
|
// ]]> |
ENDOPEN |
ENDOPEN |
return '<script type="text/javascript">'.$returnval.'</script>'; |
return '<script type="text/javascript">'.$returnval.'</script>'; |
} |
} |
Line 963 ENDOPEN
|
Line 1146 ENDOPEN
|
sub clear { |
sub clear { |
my ($row,$col)=@_; |
my ($row,$col)=@_; |
unless ($env{'environment.remote'} eq 'off') { |
unless ($env{'environment.remote'} eq 'off') { |
|
if (($row<1) || ($row>13)) { return ''; } |
return "\n".qq(window.status+='.';swmenu.clearbut($row,$col);); |
return "\n".qq(window.status+='.';swmenu.clearbut($row,$col);); |
} else { |
} else { |
$inlineremote[10*$row+$col]=''; |
$inlineremote[10*$row+$col]=''; |
Line 988 sub switch {
|
Line 1172 sub switch {
|
$category_members{$cat}.=':'.$idx; |
$category_members{$cat}.=':'.$idx; |
|
|
unless ($env{'environment.remote'} eq 'off') { |
unless ($env{'environment.remote'} eq 'off') { |
|
if (($row<1) || ($row>13)) { return ''; } |
# Remote |
# Remote |
return "\n". |
return "\n". |
qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc");); |
qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc");); |
Line 1005 sub switch {
|
Line 1190 sub switch {
|
&Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$img). |
&Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$img). |
'" align="'.($nobreak==3?'right':'left').'" class="LC_noBorder" />'; |
'" align="'.($nobreak==3?'right':'left').'" class="LC_noBorder" />'; |
if ($env{'browser.interface'} eq 'faketextual') { |
if ($env{'browser.interface'} eq 'faketextual') { |
# Accessibility |
# Main Menu |
if ($nobreak==3) { |
if ($nobreak==3) { |
$inlineremote[$idx]="\n". |
$inlineremote[$idx]="\n". |
'<td class="LC_menubuttons_text" align="right">'.$text. |
'<td class="LC_menubuttons_text" align="right">'.$text. |
Line 1061 sub openmenu {
|
Line 1246 sub openmenu {
|
sub inlinemenu { |
sub inlinemenu { |
undef(@inlineremote); |
undef(@inlineremote); |
undef(%category_members); |
undef(%category_members); |
|
# calling rawconfig with "1" will evaluate mydesk.tab, even if there is no active remote control |
&rawconfig(1); |
&rawconfig(1); |
my $output='<table id="LC_mainmenu"><tr>'; |
my $output='<table id="LC_mainmenu"><tr>'; |
for (my $col=1; $col<=2; $col++) { |
for (my $col=1; $col<=2; $col++) { |
Line 1092 sub inlinemenu {
|
Line 1278 sub inlinemenu {
|
} |
} |
|
|
sub rawconfig { |
sub rawconfig { |
|
# |
|
# This evaluates mydesk.tab |
|
# Need to add more positions and more privileges to deal with all |
|
# menu items. |
|
# |
my $textualoverride=shift; |
my $textualoverride=shift; |
my $output=''; |
my $output=''; |
unless ($env{'environment.remote'} eq 'off') { |
unless ($env{'environment.remote'} eq 'off') { |
Line 1126 sub rawconfig {
|
Line 1317 sub rawconfig {
|
$prt=~s/\$requested_domain/$requested_domain/g; |
$prt=~s/\$requested_domain/$requested_domain/g; |
if ($category_names{$cat}!~/\w/) { $cat='oth'; } |
if ($category_names{$cat}!~/\w/) { $cat='oth'; } |
my $type = &Apache::loncommon::course_type(); |
my $type = &Apache::loncommon::course_type(); |
if ($type eq 'Group') { |
# |
$desc = &convert_menu_function($desc,$type); |
# I don't think we support this |
} |
# |
|
# if ($type eq 'Group') { |
|
# $desc = &convert_menu_function($desc,$type); |
|
# } |
if ($pro eq 'clear') { |
if ($pro eq 'clear') { |
$output.=&clear($row,$col); |
$output.=&clear($row,$col); |
} elsif ($pro eq 'any') { |
} elsif ($pro eq 'any') { |
Line 1207 sub rawconfig {
|
Line 1401 sub rawconfig {
|
$output.=&clear($row,$col); |
$output.=&clear($row,$col); |
next; |
next; |
} |
} |
} elsif ($prt eq 'reqcrs') { |
} elsif (($prt eq 'reqcrsnsc') || ($prt eq 'reqcrsshc')) { |
my $showreqcrs = 0; |
if (($prt eq 'reqcrsnsc') && ($show_course)) { |
foreach my $type ('official','unofficial') { |
next; |
if (&Apache::lonnet::usertools_access($env{'user.name'}, |
} |
$env{'user.domain'}, |
if (($prt eq 'reqcrsshc') && (!$show_course)) { |
$type,undef,'requestcourses')) { |
next; |
$showreqcrs = 1; |
|
last; |
|
} |
|
} |
} |
|
my $showreqcrs = &check_for_rcrs(); |
if (!$showreqcrs) { |
if (!$showreqcrs) { |
$output.=&clear($row,$col); |
$output.=&clear($row,$col); |
next; |
next; |
Line 1237 sub rawconfig {
|
Line 1429 sub rawconfig {
|
return $output; |
return $output; |
} |
} |
|
|
|
sub check_for_rcrs { |
|
my $showreqcrs = 0; |
|
my @reqtypes = ('official','unofficial','community'); |
|
foreach my $type (@reqtypes) { |
|
if (&Apache::lonnet::usertools_access($env{'user.name'}, |
|
$env{'user.domain'}, |
|
$type,undef,'requestcourses')) { |
|
$showreqcrs = 1; |
|
last; |
|
} |
|
} |
|
if (!$showreqcrs) { |
|
foreach my $type (@reqtypes) { |
|
if ($env{'environment.reqcrsotherdom.'.$type} ne '') { |
|
$showreqcrs = 1; |
|
last; |
|
} |
|
} |
|
} |
|
return $showreqcrs; |
|
} |
|
|
# ======================================================================= Close |
# ======================================================================= Close |
|
|
sub close { |
sub close { |
Line 1244 sub close {
|
Line 1458 sub close {
|
my $menuname = &get_menu_name(); |
my $menuname = &get_menu_name(); |
return(<<ENDCLOSE); |
return(<<ENDCLOSE); |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
window.status='Accessing Remote Control'; |
window.status='Accessing Remote Control'; |
menu=window.open("/adm/rat/empty.html","$menuname", |
menu=window.open("/adm/rat/empty.html","$menuname", |
"height=350,width=150,scrollbars=no,menubar=no"); |
"height=350,width=150,scrollbars=no,menubar=no"); |
Line 1253 menu.autologout=0;
|
Line 1468 menu.autologout=0;
|
window.status='Closing Remote Control'; |
window.status='Closing Remote Control'; |
menu.close(); |
menu.close(); |
window.status='Done.'; |
window.status='Done.'; |
|
// ]]> |
</script> |
</script> |
ENDCLOSE |
ENDCLOSE |
} |
} |
Line 1498 sub get_nav_status {
|
Line 1714 sub get_nav_status {
|
return $navstatus; |
return $navstatus; |
} |
} |
|
|
#FIXME this needs to move into mydesktab and the other locations |
#FIXME this needs to move into mydesk.tab and the other locations |
# the text is generated |
# the text is generated |
sub convert_menu_function { |
# |
my ($rolename,$type) = @_; |
# We currently do not support this anyway. |
if ($type eq 'Group') { |
# |
$rolename =~ s/student/member/g; |
#sub convert_menu_function { |
$rolename =~ s/group/team/g; |
# my ($rolename,$type) = @_; |
$rolename =~ s/course/group/g; |
# if ($type eq 'Group') { |
$rolename =~ s/Course/Group/g; |
# $rolename =~ s/student/member/g; |
} |
# $rolename =~ s/group/team/g; |
return $rolename; |
# $rolename =~ s/course/group/g; |
} |
# $rolename =~ s/Course/Group/g; |
|
# } |
|
# return $rolename; |
|
#} |
|
|
sub hidden_button_check { |
sub hidden_button_check { |
my $hidden; |
my $hidden; |
Line 1592 sub roles_selector {
|
Line 1811 sub roles_selector {
|
} |
} |
$role_selector .= '</select>'."\n". |
$role_selector .= '</select>'."\n". |
'<input type="hidden" name="destinationurl" value="'. |
'<input type="hidden" name="destinationurl" value="'. |
$ENV{'REQUEST_URI'}.'" />'."\n". |
&HTML::Entities::encode($ENV{'REQUEST_URI'}).'" />'."\n". |
'<input type="hidden" name="gotorole" value="1" />'."\n". |
'<input type="hidden" name="gotorole" value="1" />'."\n". |
'<input type="hidden" name="selectrole" value="" />'."\n". |
'<input type="hidden" name="selectrole" value="" />'."\n". |
'<input type="hidden" name="switch" value="1" />'."\n". |
'<input type="hidden" name="switch" value="1" />'."\n". |
Line 1770 END
|
Line 1989 END
|
|
|
BEGIN { |
BEGIN { |
if (! defined($readdesk)) { |
if (! defined($readdesk)) { |
{ |
{ |
my $tabfile = $Apache::lonnet::perlvar{'lonTabDir'}.'/mydesk.tab'; |
my $tabfile = $Apache::lonnet::perlvar{'lonTabDir'}.'/mydesk.tab'; |
if ( CORE::open( my $config,"<$tabfile") ) { |
if ( CORE::open( my $config,"<$tabfile") ) { |
while (my $configline=<$config>) { |
while (my $configline=<$config>) { |
$configline=(split(/\#/,$configline))[0]; |
$configline=(split(/\#/,$configline))[0]; |
$configline=~s/^\s+//; |
$configline=~s/^\s+//; |
chomp($configline); |
chomp($configline); |
if ($configline=~/^cat\:/) { |
if ($configline=~/^cat\:/) { |
my @entries=split(/\:/,$configline); |
my @entries=split(/\:/,$configline); |
$category_positions{$entries[2]}=$entries[1]; |
$category_positions{$entries[2]}=$entries[1]; |
$category_names{$entries[2]}=$entries[3]; |
$category_names{$entries[2]}=$entries[3]; |
} elsif ($configline) { |
} elsif ($configline=~/^prim\:/) { |
push(@desklines,$configline); |
my @entries = (split(/\:/, $configline))[1..5]; |
} |
push @primary_menu, \@entries; |
} |
} elsif ($configline=~/^scnd\:/) { |
CORE::close($config); |
my @entries = (split(/\:/, $configline))[1..5]; |
} |
push @secondary_menu, \@entries; |
} |
} elsif ($configline) { |
$readdesk='done'; |
push(@desklines,$configline); |
|
} |
|
} |
|
CORE::close($config); |
|
} |
|
} |
|
$readdesk='done'; |
} |
} |
} |
} |
|
|
1; |
1; |
__END__ |
__END__ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|