Diff for /loncom/interface/lonparmset.pm between versions 1.396 and 1.408

version 1.396, 2008/05/28 23:53:35 version 1.408, 2008/08/28 04:42:27
Line 1010  sub extractResourceInformation { Line 1010  sub extractResourceInformation {
     $$mapp{$mapid}=$$mapp{$id};      $$mapp{$mapid}=$$mapp{$id};
     $$allmaps{$mapid}=$$mapp{$id};      $$allmaps{$mapid}=$$mapp{$id};
     if ($mapid eq '1') {      if ($mapid eq '1') {
  $$maptitles{$mapid}='Main Course Documents';   $$maptitles{$mapid}=&mt('Main Course Documents');
     } else {      } else {
  $$maptitles{$mapid}=   $$maptitles{$mapid}=
     &Apache::lonnet::gettitle($$mapp{$id});          &Apache::lonnet::gettitle($$mapp{$id});    
Line 1137  sub partmenu { Line 1137  sub partmenu {
     my ($r,$allparts,$psprt)=@_;      my ($r,$allparts,$psprt)=@_;
     $r->print('<select multiple name="psprt" size="8">');      $r->print('<select multiple name="psprt" size="8">');
     $r->print('<option value="all"');      $r->print('<option value="all"');
     $r->print(' selected') unless (@{$psprt});      $r->print(' selected="selected"') unless (@{$psprt});
     $r->print('>'.&mt('All Parts').'</option>');      $r->print('>'.&mt('All Parts').'</option>');
     my %temphash=();      my %temphash=();
     foreach (@{$psprt}) { $temphash{$_}=1; }      foreach (@{$psprt}) { $temphash{$_}=1; }
Line 1147  sub partmenu { Line 1147  sub partmenu {
  unless ($tempkey =~ /\./) {   unless ($tempkey =~ /\./) {
     $r->print('<option value="'.$tempkey.'"');      $r->print('<option value="'.$tempkey.'"');
     if ($$psprt[0] eq "all" ||  $temphash{$tempkey}) {      if ($$psprt[0] eq "all" ||  $temphash{$tempkey}) {
  $r->print(' selected');   $r->print(' selected="selected"');
     }      }
     $r->print('>'.$$allparts{$tempkey}.'</option>');      $r->print('>'.$$allparts{$tempkey}.'</option>');
  }   }
Line 1268  sub mapmenu { Line 1268  sub mapmenu {
     $r->print('<option value="all">'.&mt('All Maps or Folders').'</option>');      $r->print('<option value="all">'.&mt('All Maps or Folders').'</option>');
     foreach (sort {$$allmaps{$a} cmp $$allmaps{$b}} keys %{$allmaps}) {      foreach (sort {$$allmaps{$a} cmp $$allmaps{$b}} keys %{$allmaps}) {
  $r->print('<option value="'.$_.'"');   $r->print('<option value="'.$_.'"');
  if (($pschp eq $_)) { $r->print(' selected'); }   if (($pschp eq $_)) { $r->print(' selected="selected"'); }
  $r->print('>'.$$maptitles{$_}.($$allmaps{$_}!~/^uploaded/?' ['.$$allmaps{$_}.']':'').'</option>');   $r->print('>'.$$maptitles{$_}.($$allmaps{$_}!~/^uploaded/?' ['.$$allmaps{$_}.']':'').'</option>');
     }      }
     $r->print("</select>");      $r->print("</select>");
Line 1282  sub levelmenu { Line 1282  sub levelmenu {
     foreach (reverse sort keys %{$alllevs}) {      foreach (reverse sort keys %{$alllevs}) {
  $r->print('<option value="'.$$alllevs{$_}.'"');   $r->print('<option value="'.$$alllevs{$_}.'"');
  if ($parmlev eq $$alllevs{$_}) {   if ($parmlev eq $$alllevs{$_}) {
     $r->print(' selected');       $r->print(' selected="selected"'); 
  }   }
  $r->print('>'.$_.'</option>');   $r->print('>'.&mt($_).'</option>');
     }      }
     $r->print("</select>");      $r->print("</select>");
 }  }
Line 1300  sub sectionmenu { Line 1300  sub sectionmenu {
  $r->print('    <option value="'.$s.'"');   $r->print('    <option value="'.$s.'"');
  foreach (@{$selectedsections}) {   foreach (@{$selectedsections}) {
     if ($s eq $_) {      if ($s eq $_) {
  $r->print(' selected');   $r->print(' selected="selected"');
  last;   last;
     }      }
  }   }
Line 1319  sub groupmenu { Line 1319  sub groupmenu {
  $r->print('    <option value="'.$group.'"');   $r->print('    <option value="'.$group.'"');
  foreach (@{$selectedgroups}) {   foreach (@{$selectedgroups}) {
     if ($group eq $_) {      if ($group eq $_) {
  $r->print(' selected');   $r->print(' selected="selected"');
  last;   last;
     }      }
  }   }
Line 1881  ENDTABLEHEADFOUR Line 1881  ENDTABLEHEADFOUR
 #---------------------------------------------------- print header information  #---------------------------------------------------- print header information
                 my $foldermap=&mt($maptitle=~/^uploaded/?'Folder':'Map');                  my $foldermap=&mt($maptitle=~/^uploaded/?'Folder':'Map');
                 my $showtitle=$maptitles{$maptitle}.($maptitle!~/^uploaded/?' ['.$maptitle.']':'');                  my $showtitle=$maptitles{$maptitle}.($maptitle!~/^uploaded/?' ['.$maptitle.']':'');
                 $r->print(<<ENDMAPONE);                  my $tmp="";
 <center><h4>  
 Set Defaults for All Resources in $foldermap<br />  
 <font color="red"><i>$showtitle</i></font><br />  
 Specifically for  
 ENDMAPONE  
                 if ($uname) {                  if ($uname) {
     my $person=&Apache::loncommon::plainname($uname,$udom);      my $person=&Apache::loncommon::plainname($uname,$udom);
                     $r->print(&mt("User")." <font color=\"red\"><i>$uname \($person\) </i></font> ".                      $tmp.=&mt("User")." <font color=\"red\"><i>$uname \($person\) </i></font> ".
                         &mt('in')." \n");                          &mt('in')." \n";
                 } else {                  } else {
                     $r->print("<font color=\"red\"><i>".&mt('all').'</i></font> '.&mt('users in')." \n");                      $tmp.="<font color=\"red\"><i>".&mt('all').'</i></font> '.&mt('users in')." \n";
                 }                  }
                 if ($cgroup) {                  if ($cgroup) {
                     $r->print(&mt("Group")." <font color=\"red\"><i>$cgroup".                      $tmp.=&mt("Group")." <font color=\"red\"><i>$cgroup".
                               "</i></font> ".&mt('of')." \n");                                "</i></font> ".&mt('of')." \n";
                     $csec = '';                      $csec = '';
                 } elsif ($csec) {                  } elsif ($csec) {
                     $r->print(&mt("Section")." <font color=\"red\"><i>$csec".                      $tmp.=&mt("Section")." <font color=\"red\"><i>$csec".
                               "</i></font> ".&mt('of')." \n");                                "</i></font> ".&mt('of')." \n";
                 }                  }
                 $r->print("<font color=\"red\"><i>$coursename</i></font><br />");                  $r->print('<div align="center"><h4>'
                 $r->print("</h4>\n");                           .&mt('Set Defaults for All Resources in [_1]Specifically for [_2][_3]'
                                ,$foldermap.'<br /><font color="red"><i>'.$showtitle.'</i></font><br />'
                                ,$tmp
                                ,'<font color="red"><i>'.$coursename.'</i></font>'
                                )
                            ."<br /></h4>\n"
                            );
 #---------------------------------------------------------------- print table  #---------------------------------------------------------------- print table
                 $r->print('<p><table border="2">');                  $r->print('<p><table border="2">');
                 $r->print('<tr><th>'.&mt('Parameter Name').'</th>');                  $r->print('<tr><th>'.&mt('Parameter Name').'</th>');
Line 1916  ENDMAPONE Line 1917  ENDMAPONE
                            \%type,\%display,$defbgone,$defbgtwo,$defbgthree,                             \%type,\%display,$defbgone,$defbgtwo,$defbgthree,
                            $parmlev,$uname,$udom,$csec,$cgroup);                             $parmlev,$uname,$udom,$csec,$cgroup);
                 }                  }
                 $r->print("</table></center>");                  $r->print("</table></div>");
             } # end each map              } # end each map
         } # end of $parmlev eq map          } # end of $parmlev eq map
 #--------------------------------- Entry for parm level general (Course level)  #--------------------------------- Entry for parm level general (Course level)
Line 2125  sub crsenv { Line 2126  sub crsenv {
                 $setoutput.=&mt('Set').' <b>'.$name.'</b> '.&mt('to').' <b>';                  $setoutput.=&mt('Set').' <b>'.$name.'</b> '.&mt('to').' <b>';
                 if ($name =~ /^default_enrollment_(start|end)_date$/) {                  if ($name =~ /^default_enrollment_(start|end)_date$/) {
                     $setoutput .= &Apache::lonlocal::locallocaltime($value);                      $setoutput .= &Apache::lonlocal::locallocaltime($value);
                   } elsif ($name eq 'categories') {
                       $setoutput .= $env{'form.categories_display'};
                 } else {                  } else {
                     $setoutput .= $value;                      $setoutput .= $value;
                 }                  }
Line 2133  sub crsenv { Line 2136  sub crsenv {
                     &change_clone($value,\@oldcloner);                      &change_clone($value,\@oldcloner);
                 }                  }
                 # Update environment and nohist_courseids.db                  # Update environment and nohist_courseids.db
                 if ($name eq 'description' || $name eq 'cloners') {                  if (($name eq 'description') || ($name eq 'cloners') || 
                       ($name eq 'hidefromcat') || ($name eq 'categories')) {
                     if ($chome eq '') {                      if ($chome eq '') {
                         %crsinfo =                          %crsinfo =
                             &Apache::lonnet::courseiddump($dom,'.',1,'.','.',                              &Apache::lonnet::courseiddump($dom,'.',1,'.','.',
                                                  $crs,undef,undef,'Course');                                                   $crs,undef,undef,'.');
                         $chome = &Apache::lonnet::homeserver($crs,$dom);                          $chome = &Apache::lonnet::homeserver($crs,$dom);
                     }                      }
                 }                  }
Line 2150  sub crsenv { Line 2154  sub crsenv {
                                                          $chome,'notime');                                                           $chome,'notime');
                     }                      }
                 }                  }
                 if ($name eq 'cloners') {                  if (($name eq 'cloners') || ($name eq 'hidefromcat') || ($name eq 'categories')) {
                     if (ref($crsinfo{$env{'request.course.id'}}) eq 'HASH') {                      if (ref($crsinfo{$env{'request.course.id'}}) eq 'HASH') {
                         $crsinfo{$env{'request.course.id'}}{'cloners'} = $value;                          &Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.'.$name => $value});
                           $crsinfo{$env{'request.course.id'}}{$name} = $value;
                         my $putresult =                          my $putresult =
                             &Apache::lonnet::courseidput($dom,\%crsinfo,                              &Apache::lonnet::courseidput($dom,\%crsinfo,
                                                          $chome,'notime');                                                           $chome,'notime');
Line 2208  sub crsenv { Line 2213  sub crsenv {
     my $SelectStyleFile=&mt('Select Style File');      my $SelectStyleFile=&mt('Select Style File');
     my $SelectSpreadsheetFile=&mt('Select Spreadsheet File');      my $SelectSpreadsheetFile=&mt('Select Spreadsheet File');
     my $output='';      my $output='';
       my $can_categorize;
     if (! exists($values{'con_lost'})) {      if (! exists($values{'con_lost'})) {
         my %descriptions=          my %descriptions=
     ('url'            => '<b>'.&mt('Top Level Map').'</b><br />'.      ('url'            => '<b>'.&mt('Top Level Map').'</b><br />'.
Line 2339  sub crsenv { Line 2345  sub crsenv {
      'texengine'       'texengine'
          => '<b>'.&mt('Force all students in the course to use a specific math rendering engine.').'</b><br />'           => '<b>'.&mt('Force all students in the course to use a specific math rendering engine.').'</b><br />'
                    .'('.&mt('[_1], [_2] (Convert to Images), [_3] (TeX to HTML), or blank for student\'s preference','"<tt>jsMath</tt>"','"<tt>mimetex</tt>"','"<tt>tth</tt>"').')',                     .'('.&mt('[_1], [_2] (Convert to Images), [_3] (TeX to HTML), or blank for student\'s preference','"<tt>jsMath</tt>"','"<tt>mimetex</tt>"','"<tt>tth</tt>"').')',
                'timezone'
                    => '<b>'.&mt('Timezone in which the course takes place').'</b>',
   
              );                'suppress_embed_prompt'
         my @Display_Order = ('url','description','courseid','cloners','grading',                   => '<b>'.&mt('Suppress prompt to upload items referenced in a web page being uploaded to portfolio, when current role is student.').'</b><br />'.
                       ' ('.&mt('[_1] to suppress, anything else to not suppress','"<tt>yes</tt>"').')',
                'hidefromcat'
                    => '<b>'.&mt('Exclude from course catalog').'</b><br />'.
                       ' ('.&mt('[_1] to exclude, anything else to include - included if assigned an institutional code, or manually catagorized','"<tt>yes</tt>"').')',
                'categories'
                    => '<b>'.&mt('Categorize course').'</b> <a href="javascript:catsbrowser()">'.
                       &mt('Display Categories').'</a>',
                );
           my @Display_Order = ('url','description','courseid','cloners');
           (my $can_toggle_cat,$can_categorize) = &can_modify_catsettings($dom);
           if ($can_toggle_cat) {
               push(@Display_Order,'hidefromcat');
           }
           if ($can_categorize) {
               push(@Display_Order,'categories');
           }
           push (@Display_Order,('grading',
                              'externalsyllabus',                               'externalsyllabus',
                              'default_xml_style','pageseparators',                               'default_xml_style','pageseparators',
                              'question.email','question.email.text','comment.email','comment.email.text','policy.email','policy.email.text',                               'question.email','question.email.text','comment.email',
                                'comment.email.text','policy.email','policy.email.text',
                              'student_classlist_view',                               'student_classlist_view',
                              'student_classlist_opt_in',                               'student_classlist_opt_in',
                              'student_classlist_portfiles',                               'student_classlist_portfiles',
Line 2353  sub crsenv { Line 2379  sub crsenv {
                              'allow_limited_html_in_feedback',                               'allow_limited_html_in_feedback',
                              'allow_discussion_post_editing',                               'allow_discussion_post_editing',
                              'languages',                               'languages',
                                'timezone',
      'nothideprivileged',       'nothideprivileged',
                              'rndseed',                               'rndseed',
                              'receiptalg',                               'receiptalg',
                              'problem_stream_switch',                               'problem_stream_switch',
      'suppress_tries',       'suppress_tries',
                                'suppress_embed_prompt',
                              'default_paper_size',                               'default_paper_size',
      'print_header_format',       'print_header_format',
                              'disable_receipt_display',                               'disable_receipt_display',
Line 2371  sub crsenv { Line 2399  sub crsenv {
      'texengine',       'texengine',
      'disablesigfigs',       'disablesigfigs',
      'disableexampointprint',       'disableexampointprint',
      'task_messages','task_grading',       'task_messages','task_grading'));
                              );  
  foreach my $parameter (sort(keys(%values))) {   foreach my $parameter (sort(keys(%values))) {
             unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./)) {              unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./) ||
                       ($parameter =~ m/^selfenroll_/) || ($parameter =~ /_selfenroll$/)
                       || ($parameter eq 'type')) {
                 if (! $descriptions{$parameter}) {                  if (! $descriptions{$parameter}) {
                     $descriptions{$parameter}=$parameter;                      $descriptions{$parameter}=$parameter;
                     push(@Display_Order,$parameter);                      push(@Display_Order,$parameter);
Line 2397  sub crsenv { Line 2426  sub crsenv {
                                                         $values{$parameter},                                                          $values{$parameter},
                                                         $onchange).                                                          $onchange).
                                                         '</td>';                                                          '</td>';
               } elsif ($parameter eq 'timezone') {
                   my $includeempty = 1;
                   my $timezone = &Apache::lonlocal::gettimezone();
                   $output .= '<td>'.
                       &Apache::loncommon::select_timezone($parameter.'_value',
                                                           $timezone,
                                                           $onchange,$includeempty).'</td>';
               } elsif ($parameter eq 'categories') {
                   my $catdisplay;
                   if ($values{'categories'} ne '') {
                       my @curritems = split(/\&/,$values{'categories'});
                       foreach my $item (@curritems) {
                           my ($name,$parent,$pos) = split(/:/,$item);
                           $catdisplay .= &unescape($name).'&';
                       }
                       $catdisplay =~ s/\&$//;
                   } 
                   $output .= '<td>'.
                              '<input type="hidden" name="categories_value" value="'.
                              $values{'categories'}.'" />'.
                              '<input type="textbox" name="categories_display" value="'.
                              $catdisplay.'" readonly="readonly" size="40" /></td>';
             } else {              } else {
                 $output .= '<td>'.                  $output .= '<td>'.
                     &Apache::lonhtmlcommon::textbox($parameter.'_value',                      &Apache::lonhtmlcommon::textbox($parameter.'_value',
Line 2430  sub crsenv { Line 2481  sub crsenv {
     my $Parameter=&mt('Parameter');      my $Parameter=&mt('Parameter');
     my $Value=&mt('Value');      my $Value=&mt('Value');
     my $Set=&mt('Set');      my $Set=&mt('Set');
     my $browse_js=      my ($jscript,$categorize_js);
  '<script type="text/javascript" language="Javascript">'.      my $browse_js = &Apache::loncommon::browser_and_searcher_javascript('parmset');
  &Apache::loncommon::browser_and_searcher_javascript('parmset').      if ($can_categorize) {
  '</script>';          $categorize_js = <<ENDSCRIPT;
       function catsbrowser() {
       var catswin = null;
       var url = '/adm/parmset?action=categorizecourse';
       if (!catswin || catswin.closed) {
           catswin=window.open(url,'categorieswin','height=480,width=600,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no');
       } else {
           catswin.focus();
       }
   } 
   ENDSCRIPT
       }
       $jscript = '<script type="text/javascript" language="Javascript">'."\n".
                  $browse_js."\n".$categorize_js."\n".'</script>';
     my $start_page =       my $start_page = 
  &Apache::loncommon::start_page('Set Course Environment',   &Apache::loncommon::start_page('Set Course Environment',
        $browse_js);         $jscript);
     my $end_page =       my $end_page = 
  &Apache::loncommon::end_page();   &Apache::loncommon::end_page();
     my $end_table=&Apache::loncommon::end_data_table();      my $end_table=&Apache::loncommon::end_data_table();
Line 2458  $end_table Line 2521  $end_table
 $end_page  $end_page
 ENDENV  ENDENV
 }  }
   
   sub can_modify_catsettings {
       my ($dom) = @_;
       my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom);
       my ($can_toggle_cat,$can_categorize);
       if (ref($domconf{'coursecategories'}) eq 'HASH') {
           if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {
               $can_toggle_cat = 1;
           }
           if ($domconf{'coursecategories'}{'categorize'} eq 'crs') {
               $can_categorize = 1;
           }
       }
       return ($can_toggle_cat,$can_categorize);
   }
   
   sub assign_course_categories {
       my ($r) = @_;
       my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
       my $hascats = 0;
       my $cathash;
       my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);
       if (ref($domconf{'coursecategories'}) eq 'HASH') {
           $cathash = $domconf{'coursecategories'}{'cats'};
           if (ref($cathash) eq 'HASH') {
               $hascats = 1;   
           }
       }
       my $catwin_js;
       if ($hascats) {
           my $alert = &mt('Use \"Save\" in the main window to save course categories');
           $catwin_js = <<ENDSCRIPT;
   <script type="text/javascript">
   
   function updateCategories() {
       var newcategories = '';
       var unescapedcats = '';
       if (document.chgcats.usecategory.length) {
           for (var i=0; i<document.chgcats.usecategory.length; i++) {
               if (document.chgcats.usecategory[i].checked == true) {
                   newcategories = newcategories + document.chgcats.usecategory[i].value + '&';
                   unescapedcats = unescapedcats + document.chgcats.catname[i].value + ' & ';
               }
           }
           if (newcategories.length > 0) {
               newcategories = newcategories.slice(0,-1);
           }
           if (unescapedcats.length > 0) {
               unescapedcats = unescapedcats.slice(0,-3);
           }
       } else {
            if (document.chgcats.usecategory.checked == true) {
                newcategories = document.chgcats.usecategory.value;
                unescapedcats = document.chgcats.catname.value;
            }
       }
       opener.document.envform.categories_value.value = newcategories;
       opener.document.envform.categories_display.value = unescapedcats;
       opener.document.envform.categories_setparmval.checked = true;
       alert("$alert");
       self.close();
       return;
   }
   
   </script>
   ENDSCRIPT
       } else {
           my $onload; 
       }
       my $start_page =
           &Apache::loncommon::start_page('Course Categories',$catwin_js,
                                          {'only_body'      => 1,});
       my $end_page = &Apache::loncommon::end_page();
       my $categoriesform = '<h3>'.&mt('Categorize Course').'</h3>';
       if ($hascats) {
           my %currsettings =
               &Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum);
           $categoriesform .= &mt('Assign one or more categories to this course.').'<br /><br />'.
                                  '<form name="chgcats" action="/adm/parmset" method="post">'."\n"
                                  .&Apache::loncommon::assign_categories_table($cathash,
                                                          $currsettings{'categories'})."\n"
                                  .'<br /><input type="button" name="changes" value="'
                                  .&mt('Copy to main window').'" '
                                  .'onclick="javascript:updateCategories()" /></form><br />';
       } else {
           $categoriesform .= &mt('No categories defined for this domain');
       }
       $r->print($start_page.$categoriesform.$end_page);
       return;
   }
   
 ##################################################  ##################################################
 # Overview mode  # Overview mode
 ##################################################  ##################################################
Line 4319  sub handler { Line 4474  sub handler {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},              &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
                                                     text=>"Shifting Dates"});                                                      text=>"Shifting Dates"});
             &date_shift_two($r);              &date_shift_two($r);
  }          } elsif ($env{'form.action'} eq 'categorizecourse' && $parm_permission) {
               &assign_course_categories($r);
           } 
     } else {      } else {
 # ----------------------------- Not in a course, or not allowed to modify parms  # ----------------------------- Not in a course, or not allowed to modify parms
  if ($exists) {   if ($exists) {

Removed from v.1.396  
changed lines
  Added in v.1.408


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