Diff for /loncom/interface/lonhelper.pm between versions 1.44 and 1.48

version 1.44, 2003/09/02 20:58:31 version 1.48, 2003/09/29 16:33:09
Line 926  package Apache::lonhelper::message; Line 926  package Apache::lonhelper::message;
   
 =pod  =pod
   
 =head1 Element: messageX<message, helper element>  =head1 Elements
   
   =head2 Element: messageX<message, helper element>
   
 Message elements display their contents, and  Message elements display their contents, and
 transition directly to the state in the <nextstate> attribute. Example:  transition directly to the state in the <nextstate> attribute. Example:
Line 1667  resources in that sequence, or recurses Line 1669  resources in that sequence, or recurses
 to false. The "suppressEmptySequences" attribute reflects the   to false. The "suppressEmptySequences" attribute reflects the 
 suppressEmptySequences argument to the render routine, which will cause  suppressEmptySequences argument to the render routine, which will cause
 folders that have all of their contained resources filtered out to also  folders that have all of their contained resources filtered out to also
 be filtered out.  be filtered out. The 'addstatus' attribute, if true, will add the icon
   and long status display columns to the display.
   
 =head3 SUB-TAGS  =head3 SUB-TAGS
   
Line 1695  be filtered out. Line 1698  be filtered out.
   default, the value will be the resource ID of the object ($res->{ID}).    default, the value will be the resource ID of the object ($res->{ID}).
   
 =item * <mapurl>X<mapurl>: If the URL of a map is given here, only that map  =item * <mapurl>X<mapurl>: If the URL of a map is given here, only that map
   will be displayed, instead of the whole course.    will be displayed, instead of the whole course. If the attribute
     "evaluate" is given and is true, the contents of the mapurl will be
     evaluated with "sub { my $helper = shift; my $state = shift;" and
     "}", with the return value used as the mapurl.
   
 =back  =back
   
Line 1730  sub start_resource { Line 1736  sub start_resource {
     $paramHash->{'multichoice'} = $token->[2]{'multichoice'};      $paramHash->{'multichoice'} = $token->[2]{'multichoice'};
     $paramHash->{'suppressEmptySequences'} = $token->[2]{'suppressEmptySequences'};      $paramHash->{'suppressEmptySequences'} = $token->[2]{'suppressEmptySequences'};
     $paramHash->{'toponly'} = $token->[2]{'toponly'};      $paramHash->{'toponly'} = $token->[2]{'toponly'};
       $paramHash->{'addstatus'} = $token->[2]{'addstatus'};
     return '';      return '';
 }  }
   
Line 1806  sub start_mapurl { Line 1813  sub start_mapurl {
   
     my $contents = Apache::lonxml::get_all_text('/mapurl',      my $contents = Apache::lonxml::get_all_text('/mapurl',
                                                 $parser);                                                  $parser);
       $paramHash->{EVAL_MAP_URL} = $token->[2]{'evaluate'};
     $paramHash->{MAP_URL} = $contents;      $paramHash->{MAP_URL} = $contents;
 }  }
   
Line 1861  BUTTONS Line 1869  BUTTONS
     my $filterFunc = $self->{FILTER_FUNC};      my $filterFunc = $self->{FILTER_FUNC};
     my $choiceFunc = $self->{CHOICE_FUNC};      my $choiceFunc = $self->{CHOICE_FUNC};
     my $valueFunc = $self->{VALUE_FUNC};      my $valueFunc = $self->{VALUE_FUNC};
     my $mapUrl = $self->{MAP_URL};  
     my $multichoice = $self->{'multichoice'};      my $multichoice = $self->{'multichoice'};
   
       # Evaluate the map url as needed
       my $mapUrl;
       if ($self->{EVALUATE_MAP_URL}) {
    my $mapUrlFunc = eval('sub { my $helper = shift; my $state = shift; ' . 
       $self->{MAP_URL} . '}');
    $mapUrl = &$mapUrlFunc($helper, $self);
       } else {
    $mapUrl = $self->{MAP_URL};
       }
   
     # Create the composite function that renders the column on the nav map      # Create the composite function that renders the column on the nav map
     # have to admit any language that lets me do this can't be all bad      # have to admit any language that lets me do this can't be all bad
     #  - Jeremy (Pythonista) ;-)      #  - Jeremy (Pythonista) ;-)
Line 1895  BUTTONS Line 1912  BUTTONS
     };      };
   
     $ENV{'form.condition'} = !$self->{'toponly'};      $ENV{'form.condition'} = !$self->{'toponly'};
       my $cols = [$renderColFunc, Apache::lonnavmaps::resource()];
       if ($self->{'addstatus'}) {
    push @$cols, (Apache::lonnavmaps::part_status_summary());
   
       }
     $result .=       $result .= 
         &Apache::lonnavmaps::render( { 'cols' => [$renderColFunc,           &Apache::lonnavmaps::render( { 'cols' => $cols,
                                                   Apache::lonnavmaps::resource()],  
                                        'showParts' => 0,                                         'showParts' => 0,
                                        'filterFunc' => $filterFunc,                                         'filterFunc' => $filterFunc,
                                        'resource_no_folder_link' => 1,                                         'resource_no_folder_link' => 1,
Line 1936  package Apache::lonhelper::student; Line 1957  package Apache::lonhelper::student;
 Student elements display a choice of students enrolled in the current  Student elements display a choice of students enrolled in the current
 course. Currently it is primitive; this is expected to evolve later.  course. Currently it is primitive; this is expected to evolve later.
   
 Student elements take three attributes: "variable", which means what  Student elements take the following attributes: 
 it usually does, "multichoice", which if true allows the user  
 to select multiple students, and "coursepersonnel" which if true   =over 4
 adds the course personnel to the top of the student selection.  
   =item * B<variable>: 
   
   Does what it usually does: declare which helper variable to put the
   result in.
   
   =item * B<multichoice>: 
   
   If true allows the user to select multiple students. Defaults to false.
   
   =item * B<coursepersonnel>: 
   
   If true adds the course personnel to the top of the student
   selection. Defaults to false.
   
   =item * B<activeonly>:
   
   If true, only active students and course personnel will be
   shown. Defaults to false.
   
   =back
   
 =cut  =cut
   
Line 1970  sub start_student { Line 2011  sub start_student {
     $helper->declareVar($paramHash->{'variable'});      $helper->declareVar($paramHash->{'variable'});
     $paramHash->{'multichoice'} = $token->[2]{'multichoice'};      $paramHash->{'multichoice'} = $token->[2]{'multichoice'};
     $paramHash->{'coursepersonnel'} = $token->[2]{'coursepersonnel'};      $paramHash->{'coursepersonnel'} = $token->[2]{'coursepersonnel'};
       $paramHash->{'sctiveonly'} = $token->[2]{'activeonly'};
     if (defined($token->[2]{'nextstate'})) {      if (defined($token->[2]{'nextstate'})) {
         $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'};          $paramHash->{NEXTSTATE} = $token->[2]{'nextstate'};
     }      }
Line 2042  BUTTONS Line 2084  BUTTONS
     # Constants      # Constants
     my $section = Apache::loncoursedata::CL_SECTION();      my $section = Apache::loncoursedata::CL_SECTION();
     my $fullname = Apache::loncoursedata::CL_FULLNAME();      my $fullname = Apache::loncoursedata::CL_FULLNAME();
       my $status = Apache::loncoursedata::CL_STATUS();
   
     # Load up the students      # Load up the students
     my $classlist = &Apache::loncoursedata::get_classlist();      my $classlist = &Apache::loncoursedata::get_classlist();
Line 2056  BUTTONS Line 2099  BUTTONS
   
     # username, fullname, section, type      # username, fullname, section, type
     for (@keys) {      for (@keys) {
  push @$choices, [$_, $classlist->{$_}->[$fullname],    # Filter out inactive students if we've set "activeonly"
  $classlist->{$_}->[$section], 'Student'];   if (!$self->{'activeonly'} || $classlist->{$_}->[$status] eq
       'Active') {
       push @$choices, [$_, $classlist->{$_}->[$fullname], 
        $classlist->{$_}->[$section], 'Student'];
    }
     }      }
   
     my $name = $self->{'coursepersonnel'} ? 'Name' : 'Student Name';      my $name = $self->{'coursepersonnel'} ? 'Name' : 'Student Name';
Line 2302  BUTTONS Line 2349  BUTTONS
     my @fileList;      my @fileList;
   
     # If the subdirectory is in local CSTR space      # If the subdirectory is in local CSTR space
     if ($subdir =~ m|/home/([^/]+)/public_html|) {      my $metadir;
       if ($subdir =~ m|/home/([^/]+)/public_html/(.*)|) {
         my $user = $1;          my $user = $1;
         my $domain = $Apache::lonnet::perlvar{'lonDefDomain'};          my $domain = $Apache::lonnet::perlvar{'lonDefDomain'};
    $metadir='/res/'.$domain.'/'.$user.'/'.$2;
           @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');
       } elsif ($subdir =~ m|^~([^/]+)/(.*)$|) {
    $subdir='/home/'.$1.'/public_html/'.$2;
           my $user = $1;
           my $domain = $Apache::lonnet::perlvar{'lonDefDomain'};
    $metadir='/res/'.$domain.'/'.$user.'/'.$2;
         @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');          @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');
     } else {      } else {
         # local library server resource space          # local library server resource space
Line 2343  BUTTONS Line 2398  BUTTONS
     }      }
   
             # Get the title              # Get the title
             my $title = Apache::lonpubdir::getTitleString($fileName);              my $title = Apache::lonpubdir::getTitleString(($metadir?$metadir:$subdir) .'/'. $file);
   
             # Netscape 4 is stupid and there's nowhere to put the              # Netscape 4 is stupid and there's nowhere to put the
             # information on the input tag that the file is Published,              # information on the input tag that the file is Published,
Line 2381  BUTTONS Line 2436  BUTTONS
     $result .= "</table>\n";      $result .= "</table>\n";
   
     if (!$choices) {      if (!$choices) {
         $result .= '<font color="#FF0000">There are no files available to select in this directory. Please go back and select another option.</font><br /><br />';          $result .= '<font color="#FF0000">There are no files available to select in this directory ('.$subdir.'). Please go back and select another option.</font><br /><br />';
     }      }
   
     $result .= $buttons;      $result .= $buttons;
Line 2867  sub render { Line 2922  sub render {
     }      }
   
     if ($self->{'restartCourse'}) {      if ($self->{'restartCourse'}) {
    my $targetURL = '/adm/menu';
    if ($ENV{'course.'.$ENV{'request.course.id'}.'.clonedfrom'}) {
       $targetURL = '/adm/parmset?overview=1';
    }
         $result .= "<center>\n" .          $result .= "<center>\n" .
             "<form action='/adm/roles' method='post' target='loncapaclient'>\n" .              "<form action='/adm/roles' method='post' target='loncapaclient'>\n" .
             "<input type='button' onclick='history.go(-1)' value='&lt;- Previous' />" .              "<input type='button' onclick='history.go(-1)' value='&lt;- Previous' />" .
             "<input type='hidden' name='orgurl' value='/adm/menu' />" .              "<input type='hidden' name='orgurl' value='$targetURL' />" .
             "<input type='hidden' name='selectrole' value='1' />\n" .              "<input type='hidden' name='selectrole' value='1' />\n" .
             "<input type='hidden' name='" . $ENV{'request.role'} .               "<input type='hidden' name='" . $ENV{'request.role'} . 
             "' value='1' />\n<input type='submit' value='Finish Course Initialization' />\n" .              "' value='1' />\n<input type='submit' value='Finish Course Initialization' />\n" .
Line 2927  sub render { Line 2986  sub render {
     my $vars = $helper->{VARS};      my $vars = $helper->{VARS};
   
     # FIXME: Unify my designators with the standard ones      # FIXME: Unify my designators with the standard ones
     my %dateTypeHash = ('open_date' => "Opening Date",      my %dateTypeHash = ('open_date' => "opening date",
                         'due_date' => "Due Date",                          'due_date' => "due date",
                         'answer_date' => "Answer Date",                          'answer_date' => "answer date",
  'tries' => 'Number of Tries'   'tries' => 'number of tries',
    'weight' => 'problem weight'
  );   );
     my %parmTypeHash = ('open_date' => "0_opendate",      my %parmTypeHash = ('open_date' => "0_opendate",
                         'due_date' => "0_duedate",                          'due_date' => "0_duedate",
                         'answer_date' => "0_answerdate",                          'answer_date' => "0_answerdate",
  'tries' => '0_maxtries' );   'tries' => '0_maxtries',
    'weight' => '0_weight' );
           
     my $affectedResourceId = "";      my $affectedResourceId = "";
     my $parm_name = $parmTypeHash{$vars->{ACTION_TYPE}};      my $parm_name = $parmTypeHash{$vars->{ACTION_TYPE}};
Line 2981  sub render { Line 3042  sub render {
     if ($vars->{ACTION_TYPE} eq 'tries') {      if ($vars->{ACTION_TYPE} eq 'tries') {
  $result .= ' to <b>' . $vars->{TRIES} . '</b>';   $result .= ' to <b>' . $vars->{TRIES} . '</b>';
     }      }
       if ($vars->{ACTION_TYPE} eq 'weight') {
    $result .= ' to <b>' . $vars->{WEIGHT} . '</b>';
       }
     $result .= "</li>\n";      $result .= "</li>\n";
     if ($vars->{ACTION_TYPE} eq 'due_date' ||       if ($vars->{ACTION_TYPE} eq 'due_date' || 
         $vars->{ACTION_TYPE} eq 'answer_date') {          $vars->{ACTION_TYPE} eq 'answer_date') {
Line 3001  sub render { Line 3065  sub render {
     } elsif ($vars->{ACTION_TYPE} eq 'tries') {      } elsif ($vars->{ACTION_TYPE} eq 'tries') {
  $result .= "<input type='hidden' name='pres_value' " .   $result .= "<input type='hidden' name='pres_value' " .
     "value='" . $vars->{TRIES} . "' />\n";      "value='" . $vars->{TRIES} . "' />\n";
       } elsif ($vars->{ACTION_TYPE} eq 'weight') {
    $result .= "<input type='hidden' name='pres_value' " .
       "value='" . $vars->{WEIGHT} . "' />\n";
     }      }
   
     $result .= $resourceString;      $result .= $resourceString;
Line 3031  sub render { Line 3098  sub render {
     }      }
   
     # Print value      # Print value
     if ($vars->{ACTION_TYPE} ne 'tries') {      if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') {
  $result .= "<li>to <b>" . ctime($vars->{PARM_DATE}) . "</b> (" .   $result .= "<li>to <b>" . ctime($vars->{PARM_DATE}) . "</b> (" .
     Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE})       Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE}) 
     . ")</li>\n";      . ")</li>\n";

Removed from v.1.44  
changed lines
  Added in v.1.48


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>