[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm lonmainmenu.pm lonmenu.pm mydesk.tab
www
lon-capa-cvs-allow@mail.lon-capa.org
Wed, 11 Apr 2007 02:42:03 -0000
This is a MIME encoded message
--www1176259323
Content-Type: text/plain
www Tue Apr 10 22:42:03 2007 EDT
Modified files:
/loncom/interface loncommon.pm lonmainmenu.pm lonmenu.pm mydesk.tab
Log:
Categories on the Main Menu Screen
- we can sort these into better categories later
- eventually, mydesk.tab should become mydesk.xml
--www1176259323
Content-Type: text/plain
Content-Disposition: attachment; filename="www-20070410224203.txt"
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.520 loncom/interface/loncommon.pm:1.521
--- loncom/interface/loncommon.pm:1.520 Tue Apr 10 16:05:21 2007
+++ loncom/interface/loncommon.pm Tue Apr 10 22:42:00 2007
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.520 2007/04/10 20:05:21 raeburn Exp $
+# $Id: loncommon.pm,v 1.521 2007/04/11 02:42:00 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -3849,6 +3849,13 @@
font-size: smaller;
}
+.LC_menu_category {
+ color: $font;
+ font-family: $sans;
+ font-size: larger;
+ font-weight: bold;
+}
+
td.LC_menubuttons_text {
color: $font;
font-family: $sans;
Index: loncom/interface/lonmainmenu.pm
diff -u loncom/interface/lonmainmenu.pm:1.4 loncom/interface/lonmainmenu.pm:1.5
--- loncom/interface/lonmainmenu.pm:1.4 Fri Apr 21 18:00:56 2006
+++ loncom/interface/lonmainmenu.pm Tue Apr 10 22:42:00 2007
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# displays the main menu
#
-# $Id: lonmainmenu.pm,v 1.4 2006/04/21 22:00:56 albertel Exp $
+# $Id: lonmainmenu.pm,v 1.5 2007/04/11 02:42:00 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -72,7 +72,7 @@
$env{'environment.remote'}='off';
}
$r->print(&Apache::loncommon::start_page('Main Menu',$script_tag));
- $r->print('<table id="LC_menubuttons_mainmenu">'.&Apache::lonmenu::inlinemenu().'</table>'.$form);
+ $r->print(&Apache::lonmenu::inlinemenu().$form);
$r->print(&Apache::loncommon::end_page());
return OK;
}
Index: loncom/interface/lonmenu.pm
diff -u loncom/interface/lonmenu.pm:1.208 loncom/interface/lonmenu.pm:1.209
--- loncom/interface/lonmenu.pm:1.208 Thu Mar 8 20:29:54 2007
+++ loncom/interface/lonmenu.pm Tue Apr 10 22:42:00 2007
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.208 2007/03/09 01:29:54 albertel Exp $
+# $Id: lonmenu.pm,v 1.209 2007/04/11 02:42:00 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -46,7 +46,7 @@
use Apache::lonlocal;
use LONCAPA qw(:DEFAULT :match);
-use vars qw(@desklines $readdesk);
+use vars qw(@desklines %category_names %category_members %category_positions $readdesk);
my @inlineremote;
@@ -477,14 +477,14 @@
$env{'request.symb'} ne '' ) {
$menuitems=(<<ENDMENUITEMS);
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&3&forw.gif&forward[_1]&&gopost('/adm/flip','forward:'+currentURL)&Go to the next resource in the course sequence&3
+s&2&1&back.gif&backward[_1]&&gopost('/adm/flip','back:'+currentURL)&Go to the previous resource in the course sequence&&1
+s&2&3&forw.gif&forward[_1]&&gopost('/adm/flip','forward:'+currentURL)&Go to the next resource in the course sequence&&3
c&6&3
c&8&1
c&8&2
s&8&3&prt.gif&prepare[_1]&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document
-s&9&1&sbkm.gif&set[_1]&bookmark[_2]&set_bookmark()&Set a bookmark for this resource&1
-s&9&3&anot.gif&anno-[_1]&tations[_1]&annotate()&Make notes and annotations about this resource&1
+s&9&1&sbkm.gif&set[_1]&bookmark[_2]&set_bookmark()&Set a bookmark for this resource&&1
+s&9&3&anot.gif&anno-[_1]&tations[_1]&annotate()&Make notes and annotations about this resource&&1
ENDMENUITEMS
unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {
$menuitems.=(<<ENDREALRES);
@@ -812,7 +812,7 @@
# The javascript is usually similar to "go('/adm/roles')" or "cstrgo(..)".
sub switch {
- my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$nobreak)=@_;
+ 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);
@@ -820,6 +820,9 @@
$desc=&mt($desc);
$img=&mt($img);
+ my $idx=10*$row+$col;
+ $category_members{$cat}.=':'.$idx;
+
unless (($env{'browser.interface'} eq 'textual') ||
($env{'environment.remote'} eq 'off')) {
# Remote
@@ -831,10 +834,10 @@
my $text=$top.' '.$bot;
$text=~s/\s*\-\s*//gs;
if ($nobreak) {
- $inlineremote[10*$row+$col]=
+ $inlineremote[$idx]=
'<a href="javascript:'.$act.';">'.$text.'</a>';
} else {
- $inlineremote[10*$row+$col]="\n<br />".
+ $inlineremote[$idx]="\n<br />".
$desc.' <a href="javascript:'.$act.';">'.$text.'</a>';
}
} else {
@@ -852,17 +855,17 @@
if ($env{'browser.interface'} eq 'faketextual') {
# Accessibility
if ($nobreak==3) {
- $inlineremote[10*$row+$col]="\n".
+ $inlineremote[$idx]="\n".
'<td class="LC_menubuttons_text" align="right">'.$text.
'</td><td class="LC_menubuttons_img" align="left">'.
'<a href="javascript:'.$act.';">'.$pic.'</a></td></tr>';
} elsif ($nobreak) {
- $inlineremote[10*$row+$col]="\n<tr>".
+ $inlineremote[$idx]="\n<tr>".
'<td class="LC_menubuttons_img" align="left">'.
'<a href="javascript:'.$act.';">'.$pic.'</a></td>
<td class="LC_menubuttons_text" align="left">'.$text.'</td>';
} else {
- $inlineremote[10*$row+$col]="\n<tr>".
+ $inlineremote[$idx]="\n<tr>".
'<td class="LC_menubuttons_img" align="left">'.
'<a href="javascript:'.$act.';">'.$pic.
'</a></td><td class="LC_menubuttons_text" colspan="3">'.
@@ -870,7 +873,7 @@
}
} else {
# Inline Menu
- $inlineremote[10*$row+$col]=
+ $inlineremote[$idx]=
'<a href="javascript:'.$act.';">'.$pic.
'</a><span class="LC_menubuttons_inline_text">'.$desc.'</span>';
}
@@ -881,12 +884,12 @@
sub secondlevel {
my $output='';
my
- ($uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc)=@_;
+ ($uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat)=@_;
if ($prt eq 'any') {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
} elsif ($prt=~/^r(\w+)/) {
if ($rol eq $1) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
}
return $output;
@@ -903,8 +906,32 @@
sub inlinemenu {
@inlineremote=();
undef @inlineremote;
+ %category_members=();
+ undef %category_members;
&rawconfig(1);
- return join('',map { (defined($_)?$_:'') } @inlineremote);
+ my $output='<table><tr>';
+ for (my $col=1; $col<=2; $col++) {
+ $output.='<td>';
+ for (my $row=1; $row<=8; $row++) {
+ foreach my $cat (keys(%category_members)) {
+ if ($category_positions{$cat} ne "$col,$row") { next; }
+ $output.='<table id="LC_menubuttons_mainmenu"><tr><td colspan="4" class="LC_menu_category">'.&mt($category_names{$cat}).'</td></tr>';
+ my %active=();
+ foreach my $menu_item (split(/\:/,$category_members{$cat})) {
+ if ($inlineremote[$menu_item]) {
+ $active{$menu_item}=1;
+ }
+ }
+ foreach my $item (sort(keys(%active))) {
+ $output.=$inlineremote[$item];
+ }
+ $output.='</table>';
+ }
+ }
+ $output.="</td>";
+ }
+ $output.="</tr></table>";
+ return $output;
}
sub rawconfig {
@@ -935,7 +962,7 @@
my $rol=$env{'request.role'};
my $requested_domain = $env{'request.role.domain'};
foreach my $line (@desklines) {
- my ($row,$col,$pro,$prt,$img,$top,$bot,$act,$desc)=split(/\:/,$line);
+ my ($row,$col,$pro,$prt,$img,$top,$bot,$act,$desc,$cat)=split(/\:/,$line);
$prt=~s/\$uname/$uname/g;
$prt=~s/\$udom/$udom/g;
$prt=~s/\$crs/$crs/g;
@@ -948,29 +975,29 @@
$output.=&clear($row,$col);
} elsif ($pro eq 'any') {
$output.=&secondlevel(
- $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
+ $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
} elsif ($pro eq 'smp') {
unless ($adv) {
$output.=&secondlevel(
- $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
+ $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro eq 'adv') {
if ($adv) {
$output.=&secondlevel(
- $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc);
+ $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
}
} elsif (($pro=~/^p(\w+)/) && ($prt)) {
if (&Apache::lonnet::allowed($1,$prt)) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro eq 'course') {
if ($env{'request.course.fn'}) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro =~ /^courseenv_(.*)$/) {
my $key = $1;
if ($env{'course.'.$env{'request.course.id'}.'.'.$key}) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro =~ /^course_(.*)$/) {
# Check for permissions inside of a course
@@ -978,7 +1005,7 @@
(&Apache::lonnet::allowed($1,$env{'request.course.id'}.
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))
)) {
- $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
}
} elsif ($pro eq 'author') {
if ($author) {
@@ -997,8 +1024,8 @@
my @ids=&Apache::lonnet::current_machine_ids();
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } }
if ($allowed) {
- $output.=switch($caname,$cadom,
- $row,$col,$img,$top,$bot,$act,$desc);
+ $output.=&switch($caname,$cadom,
+ $row,$col,$img,$top,$bot,$act,$desc,$cat);
}
}
}
@@ -1300,7 +1327,11 @@
$configline=(split(/\#/,$configline))[0];
$configline=~s/^\s+//;
chomp($configline);
- if ($configline) {
+ if ($configline=~/^cat\:/) {
+ my @entries=split(/\:/,$configline);
+ $category_positions{$entries[2]}=$entries[1];
+ $category_names{$entries[2]}=$entries[3];
+ } elsif ($configline) {
push(@desklines,$configline);
}
}
Index: loncom/interface/mydesk.tab
diff -u loncom/interface/mydesk.tab:1.79 loncom/interface/mydesk.tab:1.80
--- loncom/interface/mydesk.tab:1.79 Tue Apr 10 16:01:18 2007
+++ loncom/interface/mydesk.tab Tue Apr 10 22:42:00 2007
@@ -1,5 +1,18 @@
+# Categories
+# cat:column:row:title
+cat:1,2:com:Communication
+cat:1,3:set:Settings
+cat:2,1:umn:User Management
+cat:2,2:cmn:Course Management
+cat:2,2:dmn:Domain Management
+cat:2,3:grd:Grading and Statistics
+cat:2,4:crc:Course Content
+cat:1,1:rol:My Roles
+cat:1,1:rcr:My Courses
+cat:2,5:oth:Other
+
#
-# row:col:pro:prt:img:top:bot:act:txt
+# row:col:pro:prt:img:top:bot:act:txt:cat
# row-> row of remote to appear on
# col-> col of remote to appear on
# pro-> when to show the button
@@ -9,6 +22,7 @@
# bot-> txt for the bottom row of the remote
# act-> javascrtip to excute when clicked
# txt-> text to display in the extended remote or inline remote
+# cat-> category that this belongs into
#
# pro = clear clear the button
# pro = any any permission level is allowed this button
@@ -22,69 +36,69 @@
# courseenv_???? allowed if in course and course environment key exists
# author allowed if an author
#
-1:1:smp:any:courses.gif:choose[_1]:course[_1]:go('/adm/roles');:Choose the course to work on
-1:1:smp:rst:courses.gif:switch[_1]:course[_2]:go('/adm/roles');:Switch to another course
-1:1:adv:any:roles.gif:switch[_2]:role[_1]:go('/adm/roles');:Switch to another user role
-1:1:adv:rcm:roles.gif:choose[_2]:role[_2]:go('/adm/roles');:Choose the user role
+1:1:smp:any:courses.gif:choose[_1]:course[_1]:go('/adm/roles');:Choose the course to work on:rcr
+1:1:smp:rst:courses.gif:switch[_1]:course[_2]:go('/adm/roles');:Switch to another course:rcr
+1:1:adv:any:roles.gif:switch[_2]:role[_1]:go('/adm/roles');:Switch to another user role:rol
+1:1:adv:rcm:roles.gif:choose[_2]:role[_2]:go('/adm/roles');:Choose the user role:rol
1:2:clear
-1:2:course:any:docs.gif:course[_3]:docs[_1]:go('/adm/coursedocs');:View documents included in this course
-1:2:pmdc:$crs:docs.gif:edit crs[_1]:docs[_2]:go('/adm/coursedocs');:Edit and view documents included in this course
+1:2:course:any:docs.gif:course[_3]:docs[_1]:go('/adm/coursedocs');:View documents included in this course:crc
+1:2:pmdc:$crs:docs.gif:edit crs[_1]:docs[_2]:go('/adm/coursedocs');:Edit and view documents included in this course:crc
2:1:clear
2:2:clear
-2:2:course:any:nav.gif:navigate[_1]:contents[_1]:gonav('/adm/navmaps');:Navigate the table of contents for this course
+2:2:course:any:nav.gif:navigate[_1]:contents[_1]:gonav('/adm/navmaps');:Navigate the table of contents for this course:crc
2:3:clear
3:1:clear
4:1:clear
-4:1:course:any:grds.gif:my[_1]:grades[_1]:go('/adm/quickgrades');:View current problem status and grading information
-4:1:pvgr:$crs:sprs.gif:course[_4]:grades[_2]:go('/adm/classcalc');:View calculated grades (Spreadsheet)
+4:1:course:any:grds.gif:my[_1]:grades[_1]:go('/adm/quickgrades');:View current problem status and grading information:grd
+4:1:pvgr:$crs:sprs.gif:course[_4]:grades[_2]:go('/adm/classcalc');:View calculated grades (Spreadsheet):grd
4:2:clear
-4:2:pvgr:$crs:chrt.gif:course[_5]:chart[_1]:gopost('/adm/statistics?reportSelected=student_assessment','Student Assessment');:View the course assessment progress chart
+4:2:pvgr:$crs:chrt.gif:course[_5]:chart[_1]:gopost('/adm/statistics?reportSelected=student_assessment','Student Assessment');:View the course assessment progress chart:grd
4:3:clear
-4:3:pvgr:$crs:stat.gif:course[_6]:stats[_1]:gopost('/adm/statistics','Problem Statistics');:View course assessment statistics
+4:3:pvgr:$crs:stat.gif:course[_6]:stats[_1]:gopost('/adm/statistics','Problem Statistics');:View course assessment statistics:grd
5:1:clear
-5:1:courseenv_student_classlist_view:any:clst.gif:course[_12]:roster[_1]:go('/adm/viewclasslist');:View course roster
-5:1:pcst:$crs:enrl.gif:course[_7]:enroll[_1]:go('/adm/dropadd');:Manage student enrollment
+5:1:courseenv_student_classlist_view:any:clst.gif:course[_12]:roster[_1]:go('/adm/viewclasslist');:View course roster:umn
+5:1:pcst:$crs:enrl.gif:course[_7]:enroll[_1]:go('/adm/dropadd');:Manage student enrollment:umn
#and groups in this course
5:1:pmky:$requested_domain:keys.gif:manage[_1]:acc keys[_1]:go('/adm/managekeys');:Manage Access Keys
5:2:clear
-5:2:pcst:$crs:cprv.gif:user[_1]:roles[_1]:go('/adm/createuser');:Create a user or modify the roles and privileges of a user
-5:2:pcca:$requested_domain:cprv.gif:user[_1]:roles[_1]:go('/adm/createuser');:Create a user or modify the roles and privileges of a user
-5:2:pcdc:/:cprv.gif:user[_1]:roles[_1]:go('/adm/createuser');:Create a user or modify the roles and privileges of a user
-5:2:pmau:$requested_domain:cprv.gif:user[_1]:roles[_1]:go('/adm/createuser');:Create a user or modify the roles and privileges of a user
+5:2:pcst:$crs:cprv.gif:user[_1]:roles[_1]:go('/adm/createuser');:Create a user or modify the roles and privileges of a user:umn
+5:2:pcca:$requested_domain:cprv.gif:user[_1]:roles[_1]:go('/adm/createuser');:Create a user or modify the roles and privileges of a user:umn
+5:2:pcdc:/:cprv.gif:user[_1]:roles[_1]:go('/adm/createuser');:Create a user or modify the roles and privileges of a user:umn
+5:2:pmau:$requested_domain:cprv.gif:user[_1]:roles[_1]:go('/adm/createuser');:Create a user or modify the roles and privileges of a user:umn
5:3:clear
-5:3:pccc:$requested_domain:ccrs.gif:create[_1]:course[_8]:go('/adm/createcourse');:Create a new course
-5:3:popa:$crs:parm.gif:course[_9]:parms[_1]:go('/adm/parmset');:Modify parameter settings for resources and the course
+5:3:pccc:$requested_domain:ccrs.gif:create[_1]:course[_8]:go('/adm/createcourse');:Create a new course:dmn
+5:3:popa:$crs:parm.gif:course[_9]:parms[_1]:go('/adm/parmset');:Modify parameter settings (due dates, etc) for resources and the course:cmn
6:1:clear
-6:1:author:rau:cstr.gif:con-[_1]:struct[_1]:go('/priv/$uname/');:Enter my resource construction space
-6:1:author:rca:cstr.gif:co con-[_1]:struct[_2]:go('/priv/$caname/');:Enter construction space as a co-author
-6:1:pmau:$requested_domain:conf.gif:domain[_1]:config[_1]:go('/adm/domainprefs');:Set domain configuration
+6:1:author:rau:cstr.gif:con-[_1]:struct[_1]:go('/priv/$uname/');:Enter my resource construction space:rol
+6:1:author:rca:cstr.gif:co con-[_1]:struct[_2]:go('/priv/$caname/');:Enter construction space as a co-author:rol
+6:1:pmau:$requested_domain:conf.gif:domain[_1]:config[_1]:go('/adm/domainprefs');:Set domain configuration:dom
6:2:clear
-6:2:pbre:$requested_domain:res.gif:resource[_1]:space[_1]:go('/res/$udom/?launch=1');:Browse published resources
-6:2:author:rau:res.gif:resource[_1]:space[_1]:go('/res/$udom/$uname/?launch=1');:Browse published resources
-6:2:author:rca:res.gif:co res[_1]:space[_2]:go('/res/$udom/$uname/?launch=1');:Browse published resources
+6:2:pbre:$requested_domain:res.gif:resource[_1]:space[_1]:go('/res/$udom/?launch=1');:Browse published resources:oth
+6:2:author:rau:res.gif:resource[_1]:space[_1]:go('/res/$udom/$uname/?launch=1');:Browse published resources:oth
+6:2:author:rca:res.gif:co res[_1]:space[_2]:go('/res/$udom/$uname/?launch=1');:Browse published resources:oth
6:3:clear
-6:3:pccc:$requested_domain:mcrs.gif:modify:course:go('/adm/modifycourse');:Modify course settings
+6:3:pccc:$requested_domain:mcrs.gif:modify:course:go('/adm/modifycourse');:Modify course settings:cmn
7:1:clear
-7:1:pwhn:$crs:new.gif:what is[_1]:new[_1]:go('/adm/whatsnew');:What's new?
+7:1:pwhn:$crs:new.gif:what is[_1]:new[_1]:go('/adm/whatsnew');:What's new?:cmn
7:2:clear
-7:2:adv:rcm:egrd.gif:enter[_1]:grades[_2]:go('/adm/grades');:Enter grades from check-out assessment resources
-7:2:pusc:$requested_domain:sctr.gif:send[_1]:scantron[_1]:gocmd('/adm/grades','scantronupload');:Send Scantron data to a course
-9:2:any:any:vbkm.gif:view[_1]:bookmark[_1]:edit_bookmarks():Use or edit my bookmark collection
+7:2:adv:rcm:egrd.gif:enter[_1]:grades[_2]:go('/adm/grades');:Enter grades from check-out assessment resources:oth
+7:2:pusc:$requested_domain:sctr.gif:send[_1]:scantron[_1]:gocmd('/adm/grades','scantronupload');:Send Scantron data to a course:oth
+9:2:any:any:vbkm.gif:view[_1]:bookmark[_1]:edit_bookmarks():Use or edit my bookmark collection:set
10:1:clear
-10:1:any:any:anno.gif:calendar[_1]:announce[_1]:go('/adm/announcements');:Course announcements and my calendar
-10:2:any:any:com.gif:commu-[_1]:nication[_1]:go('/adm/communicate');:Send and receive messages
+10:1:any:any:anno.gif:calendar[_1]:announce[_1]:go('/adm/announcements');:Course announcements and my calendar:com
+10:2:any:any:com.gif:commu-[_1]:nication[_1]:go('/adm/communicate');:Send and receive messages:com
10:3:clear
-10:3:ppsa:$requested_domain:mail.gif:bulk[_1]:e-mail[_1]:go('/adm/notify');:Send and display broadcast e-mail
-10:3:course_plc:any:bchat.gif:course[_10]:chat[_1]:chat_win();:Enter the chatroom for the course
+10:3:ppsa:$requested_domain:mail.gif:bulk[_1]:e-mail[_1]:go('/adm/notify');:Send and display broadcast e-mail:com
+10:3:course_plc:any:bchat.gif:course[_10]:chat[_1]:chat_win();:Enter the chatroom for the course:com
11:1:clear
-11:1:course:any:grps.gif:course[_12]:groups[_1]:go('/adm/coursegroups');:Enter my groups in the course
-11:1:course_vcg:any:grps.gif:course[_12]:groups[_1]:go('/adm/coursegroups');:Enter any group in the course
-11:1:course_mdg:any:grps.gif:course[_12]:groups[_1]:go('/adm/coursegroups');:Edit any group in the course
-11:2:any:any:port.gif:port-[_1]:folio[_1]:go('/adm/portfolio');:Enter my portfolio space
-11:3:any:any:blog.gif:edit[_1]:blogs[_1]:go('/adm/$udom/$uname/_rss.html');:Edit blogs, RSS feeds, and podcasts
+11:1:course:any:grps.gif:course[_12]:groups[_1]:go('/adm/coursegroups');:Enter my groups in the course:rcr
+11:1:course_vcg:any:grps.gif:course[_12]:groups[_1]:go('/adm/coursegroups');:Enter any group in the course:rcr
+11:1:course_mdg:any:grps.gif:course[_12]:groups[_1]:go('/adm/coursegroups');:Edit any group in the course:rcr
+11:2:any:any:port.gif:port-[_1]:folio[_1]:go('/adm/portfolio');:Enter my portfolio space:com
+11:3:any:any:blog.gif:edit[_1]:blogs[_1]:go('/adm/$udom/$uname/_rss.html');:Edit blogs, RSS feeds, and podcasts:com
12:1:clear
-12:1:any:any:src.gif:search[_3]:prtfolio[_1]:go('/adm/searchcat');:Search the database of accessible portfolio files
-12:1:course:any:src.gif:search[_1]:course[_11]:go('/adm/searchcat');:Search the contents of this course or accessible portfolio files
-12:1:pbre:$requested_domain:src.gif:search[_2]:library[_1]:go('/adm/searchcat');:Search the database of published resources and accessible portfolio files
-12:2:any:any:pref.gif:prefer-[_1]:ences[_1]:go('/adm/preferences');:Set my user preferences
-12:3:any:any:logout.gif:exit[_1]: [_1]:go('/adm/logout');:Exit LON-CAPA
+12:1:any:any:src.gif:search[_3]:prtfolio[_1]:go('/adm/searchcat');:Search the database of accessible portfolio files:com
+12:1:course:any:src.gif:search[_1]:course[_11]:go('/adm/searchcat');:Search the contents of this course or accessible portfolio files:com
+12:1:pbre:$requested_domain:src.gif:search[_2]:library[_1]:go('/adm/searchcat');:Search the database of published resources and accessible portfolio files:com
+12:2:any:any:pref.gif:prefer-[_1]:ences[_1]:go('/adm/preferences');:Set my user preferences:set
+12:3:any:any:logout.gif:exit[_1]: [_1]:go('/adm/logout');:Exit LON-CAPA:oth
--www1176259323--