version 1.272, 2009/07/09 08:53:39
|
version 1.277, 2009/08/05 11:01:38
|
Line 143 use vars qw(@desklines %category_names %
|
Line 143 use vars qw(@desklines %category_names %
|
|
|
my @inlineremote; |
my @inlineremote; |
|
|
|
# |
|
# This routine returns a translated hash for the menu items in the top inline menu row |
|
# Probably should be in mydesk.tab |
|
|
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' => 'Navigate Contents', |
Line 161 sub initlittle {
|
Line 165 sub initlittle {
|
|
|
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 185 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 196 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 206 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 287 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 357 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 390 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 471 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 502 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 565 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 577 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 590 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 682 ENDREGTEXT
|
Line 718 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 754 var swmenu=null;
|
} |
} |
|
|
// END LON-CAPA Internal |
// END LON-CAPA Internal |
|
// ]]> |
</script> |
</script> |
ENDREGTHIS |
ENDREGTHIS |
} |
} |
Line 732 ENDDONOTREGTEXT
|
Line 770 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 795 var swmenu=null;
|
} |
} |
|
|
// END LON-CAPA Internal |
// END LON-CAPA Internal |
|
// ]]> |
</script> |
</script> |
ENDDONOTREGTHIS |
ENDDONOTREGTHIS |
} |
} |
Line 826 sub startupremote {
|
Line 866 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 917 function main() {
|
wait(); |
wait(); |
} |
} |
|
|
|
// ]]> |
</script> |
</script> |
ENDREMOTESTARTUP |
ENDREMOTESTARTUP |
} |
} |
Line 883 ENDREMOTESTARTUP
|
Line 925 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 937 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 981 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 999 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 1016 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 1042 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 1060 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 1116 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 1148 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 1187 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 1244 sub close {
|
Line 1308 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 1318 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 1564 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 1687 sub jump_to_role {
|
Line 1756 sub jump_to_role {
|
' numsec['.$i.'] = "'.$seccount->{$items[$i]}.'";'."\n"; |
' numsec['.$i.'] = "'.$seccount->{$items[$i]}.'";'."\n"; |
} |
} |
} |
} |
my $output = <<"END"; |
return <<"END"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
//<![CDATA[ |
function adhocRole(roleitem) { |
function adhocRole(roleitem) { |
$js |
$js |
var newrole = document.rolechooser.elements[roleitem].options[document.rolechooser.elements[roleitem].selectedIndex].value; |
var newrole = document.rolechooser.elements[roleitem].options[document.rolechooser.elements[roleitem].selectedIndex].value; |
Line 1759 function retrieveIndex(item) {
|
Line 1829 function retrieveIndex(item) {
|
} |
} |
return -1; |
return -1; |
} |
} |
|
// ]]> |
|
|
</script> |
</script> |
END |
END |
return $output; |
|
} |
} |
|
|
|
|