--- loncom/interface/lonmenu.pm 2012/09/26 00:39:32 1.369.2.24 +++ loncom/interface/lonmenu.pm 2012/05/21 16:24:14 1.372 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.369.2.24 2012/09/26 00:39:32 raeburn Exp $ +# $Id: lonmenu.pm,v 1.372 2012/05/21 16:24:14 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -115,42 +115,10 @@ entries from mydesk.tab Same as primary_menu() but operates on @secondary_menu. -=item create_submenu() - -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 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 - =item clear() =item switch() @@ -202,7 +170,7 @@ use HTML::Entities(); use Apache::lonwishlist(); use vars qw(@desklines %category_names %category_members %category_positions - $readdesk @primary_menu %primary_submenu @secondary_menu %secondary_submenu); + $readdesk @primary_menu %primary_submenu @secondary_menu); my @inlineremote; @@ -257,30 +225,51 @@ sub primary_menu { my $title = $menuitem->[3]; if (defined($primary_submenu{$title})) { - my ($link,$target); + my ($link,$target,$numsub); 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 .= '
  • '.&mt($title).'
  • '; + $numsub = @{$primary_submenu{$title}}; + if ($numsub) { + $title = + ''.$title. + ''. + '▼'; } } + $menu .= '
  • '. + ''.$title.''; + if ($numsub) { + $menu .= ''; + } + $menu .= '
  • '; } elsif ($$menuitem[3] eq 'Help') { # special treatment for helplink if ($public) { my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'}; @@ -337,13 +326,12 @@ sub secondary_menu { ? "/$env{'request.course.sec'}" : ''); my $canedit = &Apache::lonnet::allowed('mdc', $env{'request.course.id'}); - my $canviewroster = $env{'course.'.$env{'request.course.id'}.'.student_classlist_view'}; - my $canviewgrps = &Apache::lonnet::allowed('vcg', $crs_sec); - my $canmodifyuser = &Apache::lonnet::allowed('cst', $crs_sec); - my $canviewwnew = &Apache::lonnet::allowed('whn', $crs_sec); + my $canviewgrps = &Apache::lonnet::allowed('vcg', $crs_sec); + my $canmodifyuser = &Apache::lonnet::allowed('cst', $crs_sec); + my $canviewwnew = &Apache::lonnet::allowed('whn', $crs_sec); my $canmodpara = &Apache::lonnet::allowed('opa', $crs_sec); my $canvgr = &Apache::lonnet::allowed('vgr', $crs_sec); - my $canmgr = &Apache::lonnet::allowed('mgr', $crs_sec); + my $canmgr = &Apache::lonnet::allowed('mgr', $crs_sec); my $author = &getauthor(); my %groups = &Apache::lonnet::get_active_groups( @@ -359,10 +347,6 @@ sub secondary_menu { && !$env{'request.course.id'}; next if $$menuitem[4] =~ /^mdc/ && !$canedit; - next if $$menuitem[4] eq 'mdcCourse' - && ($crstype eq 'Community'); - next if $$menuitem[4] eq 'mdcCommunity' - && ($crstype eq 'Course'); next if $$menuitem[4] eq 'nvgr' && $canvgr; next if $$menuitem[4] eq 'vgr' @@ -370,7 +354,7 @@ sub secondary_menu { next if $$menuitem[4] eq 'cst' && !$canmodifyuser; next if $$menuitem[4] eq 'ncst' - && ($canmodifyuser || !$canviewroster); + && $canmodifyuser; next if $$menuitem[4] eq 'mgr' && !$canmgr; next if $$menuitem[4] eq 'nmgr' @@ -379,45 +363,19 @@ sub secondary_menu { && !$canviewwnew; next if $$menuitem[4] eq 'opa' && !$canmodpara; - next if $$menuitem[4] eq 'nvcg' - && ($canviewgrps || !%groups); + next if $$menuitem[4] =~ /showgroups$/ + && !$canviewgrps + && !%groups; next if $$menuitem[4] eq 'author' && !$author; - my $title = $menuitem->[3]; - if (defined($secondary_submenu{$title})) { - my ($link,$target); - if ($menuitem->[0] ne '') { - $link = $menuitem->[0]; - $target = '_top'; - } else { - $link = '#'; - } - my @scndsub; - if (ref($secondary_submenu{$title}) eq 'ARRAY') { - foreach my $item (@{$secondary_submenu{$title}}) { - if (ref($item) eq 'ARRAY') { - next if ($item->[2] eq 'vgr' && !$canvgr); - next if ($item->[2] eq 'opa' && !$canmodpara); - next if ($item->[2] eq 'cst' && !$canmodifyuser); - next if ($item->[2] eq 'mgr' && !$canmgr); - next if ($item->[2] eq 'vcg' && !$canviewgrps); - push(@scndsub,$item); - } - } - if (@scndsub > 0) { - $menu .= &create_submenu($link,$target,$title,\@scndsub); - } elsif ($link) { - $menu .= '
  • '.&mt($title).'
  • '; - } - } - } elsif ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) { + 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 ? "
  • $roles_selector
  • " + $menu .= $roles_selector ? "
  • $roles_selector
  • " : ''; } else { $menu .= &prep_menuitem(\@$menuitem); @@ -443,69 +401,8 @@ sub secondary_menu { } $menu =~ s/\[uname\]/$$author{user}/g; $menu =~ s/\[udom\]/$$author{dom}/g; - if ($menu) { - $menu = ""; - } - return $menu; -} -sub create_submenu { - my ($link,$target,$title,$submenu) = @_; - return unless (ref($submenu) eq 'ARRAY'); - my $disptarget; - if ($target ne '') { - $disptarget = ' target="'.$target.'"'; - } - my $menu = '
  • '. - ''. - ''.&mt($title). - ''. - ' ▼'. - '
  • '; - return $menu; -} - -sub registerurl { - my ($forcereg) = @_; - my $result = ''; - if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; } - my $force_title=''; - if ($env{'request.state'} eq 'construct') { - $force_title=&Apache::lonxml::display_title(); - } - if (($env{'environment.remote'} eq 'off') || - ((($env{'request.publicaccess'}) || - (!&Apache::lonnet::is_on_map( - &unescape($env{'request.noversionuri'})))) && - (!$forcereg))) { - return - $result - .'' - .$force_title; - } -# Graphical display after login only - if ($env{'request.registered'} && !$forcereg) { return ''; } - $result.=&innerregister($forcereg); - return $result.$force_title; + return ""; } sub innerregister { @@ -517,19 +414,8 @@ sub innerregister { $env{'request.registered'} = 1; - my $noremote = ($env{'environment.remote'} eq 'off'); - undef(@inlineremote); - my $reopen=&Apache::lonmenu::reopenmenu(); - - my $newmail=''; - - if (&Apache::lonmsg::newmail() && !$noremote) { - # We have new mail and remote is up - $newmail= 'swmenu.setstatus("you have","messages");'; - } - my $resurl; if ( $env{'request.symb'} && $env{'request.course.id'} ) { @@ -568,11 +454,11 @@ sub innerregister { &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb({text => 'View Resource'}); } - my $timesync = ( $noremote ? '' : 'swmenu.syncclock(1000*'.time.');' ); # ============================================================================= # ============================ 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'}) { @@ -580,38 +466,30 @@ sub innerregister { } $crs=~s/\_/\//g; - my %swtext; - if ($noremote) { - %swtext = &get_inline_text(); - } else { - %swtext = &get_rc_text(); - } my $hwkadd=''; if ($env{'request.symb'} ne '' && $env{'request.filename'}=~/$LONCAPA::assess_re/) { if (&Apache::lonnet::allowed('mgr',$crs)) { - $hwkadd.=&switch('','',7,2,'pgrd.png',$swtext{'pgrd'},'grades[_4]', + $hwkadd.=&switch('','',7,2,'pgrd.png','Content Grades','grades[_4]', "gocmd('/adm/grades','gradingmenu')", 'Content Grades'); } elsif (&Apache::lonnet::allowed('vgr',$crs)) { - $hwkadd.=&switch('','',7,2,'subm.png',$swtext{'subm'},'missions[_1]', + $hwkadd.=&switch('','',7,2,'subm.png','Content Submissions','missions[_1]', "gocmd('/adm/grades','submission')", 'Content Submissions'); } } if ($env{'request.symb'} ne '' && &Apache::lonnet::allowed('opa',$crs)) { - $hwkadd.=&switch('','',7,3,'pparm.png',$swtext{'pparm'},'parms[_2]', + $hwkadd.=&switch('','',7,3,'pparm.png','Content Settings','parms[_2]', "gocmd('/adm/parmset','set')", 'Content Settings'); } - if ($noremote) { - if ($env{'request.symb'}=~/^uploaded/ && - &Apache::lonnet::allowed('mdc',$crs)) { - $hwkadd.=&switch('','',7,4,'docs.png',$swtext{'docs'},'parms[_2]', - "gocmd('/adm/coursedocs','direct')", - 'Folder/Page Content'); - } + 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 ### @@ -654,7 +532,7 @@ sub innerregister { my @ids=&Apache::lonnet::current_machine_ids(); foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } if (!$allowed) { - $editbutton=&switch('','',6,1,,$top,$bottom,$action,$desc); + $editbutton=&switch('','',6,1,$top,,$bottom,$action,$desc); $noeditbutton = 0; } } @@ -721,7 +599,7 @@ sub innerregister { } } $editbutton=&switch - ('','',6,1,'pcstr.png',$swtext{'pcstr'},'resource[_2]', + ('','',6,1,'pcstr.png','Edit','resource[_2]', $bot,"Edit this resource"); $noeditbutton = 0; } @@ -737,7 +615,7 @@ sub innerregister { my $cfile = &edit_course_upload($file,$cnum,$cdom); if ($cfile) { $editbutton=&switch - ('','',6,1,'pcstr.png',$swtext{'pcstr'}, + ('','',6,1,'pcstr.png','Edit', 'resource[_2]',"go('".$cfile."');", 'Edit this resource'); } @@ -749,7 +627,7 @@ sub innerregister { if ($resurl eq "public/$cdom/$cnum/syllabus") { if ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ /\w/) { if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) { - $editbutton=&switch('','',6,1,'pcstr.png',$swtext{'pcstr'}, + $editbutton=&switch('','',6,1,'pcstr.png','Edit', 'resource[_2]', "go('/adm/courseprefs?phase=display&actions=courseinfo')", 'Edit this resource'); @@ -760,7 +638,7 @@ sub innerregister { ### ### # Prepare the rest of the buttons - my ($menuitems,$got_prt,$got_wishlist,$cstritems); + my $menuitems; if ($const_space) { # # We are in construction space @@ -786,10 +664,6 @@ s&6&3&pub.png&Publish&resource[_3]&gocst s&7&1&del.png&Delete&resource[_2]&gocstr('/adm/cfile?action=delete','/priv/$udom/$uname/$cleandisfn')&Delete this resource s&7&2&prt.png&Print&printout[_1]&gocstr('/adm/printout','/priv/$udom/$uname/$cleandisfn')&Prepare a printable document ENDMENUITEMS - unless ($noremote) { - $cstritems = $menuitems; - undef($menuitems); - } } if (ref($bread_crumbs) eq 'ARRAY') { &Apache::lonhtmlcommon::clear_breadcrumbs(); @@ -800,28 +674,24 @@ ENDMENUITEMS } elsif ( defined($env{'request.course.id'}) && $env{'request.symb'} ne '' ) { # -# We are in a course and looking at a registered URL +# We are in a course and looking at a registred URL # Should probably be in mydesk.tab # - $menuitems=(< 0){ }else{ $menuitems.="anot.png"; } -$menuitems.="&$swtext{'anot'}&tations[_1]&annotate()&"; +$menuitems.="&Notes&&annotate()&"; $menuitems.="Make notes and annotations about this resource&&1\n"; unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|viewclasslist|portfolio)(\?|$)/) { - if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/}) && ($env{'request.noversionuri'} !~ m{^/uploaded/$match_domain/$match_courseid/docs/})) { + if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/})) { $menuitems.=(< -// - - -$cstrcrumbs -ENDREGTHIS - } - } else { - unless ($noremote) { -# Not registered, graphical - return (< -// - -ENDDONOTREGTHIS - } - return ''; } -} - -sub get_inline_text { - my %text = ( - pgrd => 'Content Grades', - subm => 'Content Submissions', - pparm => 'Content Settings', - docs => 'Folder/Page Content', - pcstr => 'Edit', - prt => 'Print', - alnk => 'Stored Links', - anot => 'Notes', - catalog => 'Info', - eval => 'Evaluate', - fdbk => 'Feedback', - ); - return %text; -} -sub get_rc_text { - my %text = ( - pgrd => 'problem[_1]', - subm => 'view sub-[_1]', - pparm => 'problem[_2]', - pcstr => 'edit[_1]', - prt => 'prepare[_1]', - back => 'backward[_1]', - forw => 'forward[_1]', - alnk => 'add to[_1]', - anot => 'anno-[_1]', - catalog => 'catalog[_2]', - eval => 'evaluate[_1]', - fdbk => 'feedback[_1]', - ); - return %text; + return &Apache::lonhtmlcommon::scripttag('', 'start') + . &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0) + . &Apache::lonhtmlcommon::scripttag('', 'end'); } sub is_course_upload { @@ -1117,187 +818,12 @@ sub edit_course_upload { 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)=@_; - unless ($env{'environment.remote'} eq 'on') { - 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 -} - -sub maincall() { - unless ($env{'environment.remote'} eq 'on') { return ''; } - return(< -// - -ENDMAINCALL -} - -sub load_remote_msg { - my ($lowerurl)=@_; - - unless ($env{'environment.remote'} eq 'on') { 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 { - unless ($env{'environment.remote'} eq 'on') { return ''; } - my $menuname = &get_menu_name(); - my $nothing = &Apache::lonhtmlcommon::javascript_nothing(); - return('window.open('.$nothing.',"'.$menuname.'","",false);'); -} - - -sub open { - my $returnval=''; - unless ($env{'environment.remote'} eq 'on') { - return - ''; - } - 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)=@_; - if ($env{'environment.remote'} eq 'on') { - 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 @@ -1314,24 +840,6 @@ sub switch { my $idx=10*$row+$col; $category_members{$cat}.=':'.$idx; - if ($env{'environment.remote'} eq 'on') { - if (($row<1) || ($row>13)) { return ''; } - if ($env{'request.state'} eq 'construct') { - my $text = $top.' '.$bot; - $text=~s/\s*\-\s*//gs; - my $pic = ''.$text.''; - $inlineremote[$idx] = - ''. - $pic.''.$top.' '; - } -# Remote - $img=~s/\.png$/\.gif/; - return "\n". - qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc");); - } - # Inline Menu if ($nobreak==2) { return ''; } my $text=$top.' '.$bot; @@ -1362,19 +870,9 @@ sub switch { } } else { # Inline Menu - my @tools = (93,91,81,82,83); - unless ($env{'request.state'} eq 'construct') { - push(@tools,63); - } - if (($env{'environment.icons'} eq 'iconsonly') && - (grep(/^$idx$/,@tools))) { - $inlineremote[$idx] = - ''.$pic.''; - } else { - $inlineremote[$idx] = + $inlineremote[$idx]= ''.$pic. ''.$top.' '; - } } return ''; } @@ -1393,13 +891,6 @@ sub secondlevel { return $output; } -sub openmenu { - my $menuname = &get_menu_name(); - unless ($env{'environment.remote'} eq 'on') { return ''; } - my $nothing = &Apache::lonhtmlcommon::javascript_nothing(); - return "window.open(".$nothing.",'".$menuname."');"; -} - sub inlinemenu { undef(@inlineremote); undef(%category_members); @@ -1442,13 +933,7 @@ sub rawconfig { # my $textualoverride=shift; my $output=''; - if ($env{'environment.remote'} eq 'on') { - $output.= - "window.status='Opening Remote Control';var swmenu=".&openmenu(). -"\nwindow.status='Configuring Remote Control ';"; - } else { - unless ($textualoverride) { return ''; } - } + return '' unless $textualoverride; my $uname=$env{'user.name'}; my $udom=$env{'user.domain'}; my $adv=$env{'user.adv'}; @@ -1623,12 +1108,6 @@ sub rawconfig { $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat); } } - if ($env{'environment.remote'} eq 'on') { - $output.="\nwindow.status='Synchronizing Time';swmenu.syncclock(1000*".time.");\nwindow.status='Remote Control Configured.';"; - if (&Apache::lonmsg::newmail()) { - $output.='swmenu.setstatus("you have","messages");'; - } - } return $output; } @@ -1654,28 +1133,6 @@ sub check_for_rcrs { return $showreqcrs; } -# ======================================================================= Close - -sub close { - unless ($env{'environment.remote'} eq 'on') { return ''; } - my $menuname = &get_menu_name(); - return(< -// - -ENDCLOSE -} - sub dc_popup_js { my %lt = &Apache::lonlocal::texthash( more => '(More ...)', @@ -1701,27 +1158,6 @@ END } -sub countdown_toggle_js { - return <<"END"; - -function toggleCountdown() { - var countdownid = document.getElementById('duedatecountdown'); - var currstyle = countdownid.style.display; - if (currstyle == 'inline') { - countdownid.style.display = 'none'; - document.getElementById('ddcountcollapse').innerHTML=''; - document.getElementById('ddcountexpand').innerHTML='◄ '; - } else { - countdownid.style.display = 'inline'; - document.getElementById('ddcountcollapse').innerHTML='► '; - document.getElementById('ddcountexpand').innerHTML=''; - } - return; -} - -END -} - sub utilityfunctions { my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0])); if ($currenturl =~ m{^/adm/wrapper/ext/} @@ -1756,8 +1192,6 @@ sub utilityfunctions { my $esc_url=&escape($currenturl); my $esc_symb=&escape($currentsymb); - my $countdown = &countdown_toggle_js(); - return (<'.&Apache::lonnet::plaintext($role).''; } } - $role_selector .= ''."\n"; - if ($destsymb ne '') { - $role_selector .= ''."\n"; - } - $role_selector .= + $role_selector .= ''."\n". ''."\n". ''."\n". @@ -2337,73 +1740,6 @@ sub required_privs { return $privs; } -sub countdown_timer { - if (($env{'request.course.id'}) && ($env{'request.symb'} ne '') && - ($env{'request.filename'}=~/$LONCAPA::assess_re/)) { - my ($type,$hastimeleft,$slothastime); - my $now = time; - if ($env{'request.filename'} =~ /\.task$/) { - $type = 'Task'; - } else { - $type = 'problem'; - } - my ($status,$accessmsg,$slot_name,$slot) = - &Apache::lonhomework::check_slot_access('0',$type); - if ($slot_name ne '') { - if (ref($slot) eq 'HASH') { - if (($slot->{'starttime'} < $now) && - ($slot->{'endtime'} > $now)) { - $slothastime = 1; - } - } - } - if ($status ne 'CAN_ANSWER') { - return; - } - my $duedate = &Apache::lonnet::EXT("resource.0.duedate"); - my @interval=&Apache::lonnet::EXT("resource.0.interval"); - my $hastimeleft; - if (@interval > 1) { - my $first_access=&Apache::lonnet::get_first_access($interval[1]); - if ($first_access > 0) { - if ($first_access+$interval[0] > time) { - $hastimeleft = 1; - } - } - } - if (($duedate && $duedate > time) || - (!$duedate && $hastimeleft) || - ($slot_name ne '' && $slothastime)) { - my ($collapse,$expand,$alttxt,$title,$currdisp); - if ((@interval > 1 && $hastimeleft) || - ($type eq 'Task' && $slothastime)) { - $currdisp = 'inline'; - $collapse = '► '; - } else { - $currdisp = 'none'; - $expand = '◄ '; - } - unless ($env{'environment.icons'} eq 'iconsonly') { - $alttxt = &mt('Timer'); - $title = $alttxt.' '; - } - my $desc = &mt('Countdown to due date/time'); - return < - -$collapse - - - -$expand -$alttxt$title -END - } - } - return; -} - # ================================================================ Main Program BEGIN { @@ -2428,9 +1764,6 @@ BEGIN { } elsif ($configline=~/^scnd\:/) { my @entries = (split(/\:/, $configline))[1..5]; push @secondary_menu, \@entries; - } elsif ($configline=~/^scndsub\:/) { - my ($parent,@entries) = (split(/\:/, $configline))[1..4]; - push (@{$secondary_submenu{$parent}},\@entries); } elsif ($configline) { push(@desklines,$configline); } 500 Internal Server Error

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

    More information about this error may be available in the server error log.