Diff for /loncom/interface/lonparmset.pm between versions 1.413.2.1 and 1.416

version 1.413.2.1, 2008/12/12 20:22:33 version 1.416, 2008/11/19 21:14:42
Line 44  This module sets coursewide and assessme Line 44  This module sets coursewide and assessme
   
 =head1 INTERNAL SUBROUTINES  =head1 INTERNAL SUBROUTINES
   
 =over 4  =over
   
 =cut  
   
 ###################################################################  
 ###################################################################  
   
 package Apache::lonparmset;  
   
 use strict;  
 use Apache::lonnet;  
 use Apache::Constants qw(:common :http REDIRECT);  
 use Apache::lonhtmlcommon();  
 use Apache::loncommon;  
 use GDBM_File;  
 use Apache::lonhomework;  
 use Apache::lonxml;  
 use Apache::lonlocal;  
 use Apache::lonnavmaps;  
 use Apache::longroup;  
 use Apache::lonrss;  
 use LONCAPA qw(:DEFAULT :match);  
   
   
 ##################################################  
 ##################################################  
   
 =pod  =pod
   
 =item parmval  =item parmval()
   
 Figure out a cascading parameter.  Figure out a cascading parameter.
   
Line 98  Returns:  A list, the first item is the Line 73  Returns:  A list, the first item is the
 2 - Map or Folder level for specific student  2 - Map or Folder level for specific student
 1 - resource level for specific student  1 - resource level for specific student
   
   =item parmval_by_symb()
   
   =item reset_caches()
   
   =item cacheparmhash() 
   
   =item parmhash()
   
   =item symbcache()
   
   =item preset_defaults()
   
   =item date_sanity_info()
   
   =item storeparm()
   
   Store a parameter by symb
   
       Takes
       - symb
       - name of parameter
       - level
       - new value
       - new type
       - username
       - userdomain
   
   =item log_parmset()
   
   =item storeparm_by_symb_inner()
   
   =item valout()
   
   Format a value for output.
   
   Inputs:  $value, $type, $editable
   
   Returns: $value, formatted for output.  If $type indicates it is a date,
   localtime($value) is returned.
   $editable will return an icon to click on
   
   =item plink()
   
   Produces a link anchor.
   
   Inputs: $type,$dis,$value,$marker,$return,$call
   
   Returns: scalar with html code for a link which will envoke the 
   javascript function 'pjump'.
   
   =item page_js()
   
   =item startpage()
   
   =item print_row()
   
   =item print_td()
   
   =item print_usergroups()
   
   =item parm_control_group()
   
   =item extractResourceInformation() : 
   
   Given the course data hash, extractResourceInformation extracts lots of information about the course's resources into a variety of hashes.
   
   Input: See list below:
   
   =item * B<ids> : An array that will contain all of the ids in the course.
   
   =item * B<typep> : hash, id->type, where "type" contains the extension of the file, thus, I<problem exam quiz assess survey form>.
   
   =item * B<keyp> : hash, id->key list, will contain a comma separated list of the meta-data keys available for the given id
   
   =item * B<allparms> : hash, name of parameter->display value (what is the display value?)
   
   =item * B<allparts> : hash, part identification->text representation of part, where the text representation is "[Part $part]"
   
   =item * B<allkeys> : hash, full key to part->display value (what's display value?)
   
   =item * B<allmaps> : hash, ???
   
   =item * B<fcat> : ???
   
   =item * B<defp> : hash, ???
   
   =item * B<mapp> : ??
   
   =item * B<symbp> : hash, id->full sym?
   
   
   
   =item isdateparm()
   
   =item parmmenu()
   
   =item partmenu()
   
   =item usermenu()
   
   =item displaymenu()
   
   =item mapmenu()
   
   =item levelmenu()
   
   =item sectionmenu()
   
   =item keysplit()
   
   =item keysinorder()
   
   =item keysinorder_bytype()
   
   =item keysindisplayorder()
   
   =item standardkeyorder()
   
   =item assessparms() : 
   
   Show assessment data and parameters.  This is a large routine that should
   be simplified and shortened... someday.
   
   Inputs: $r
   
   Returns: nothing
   
   Variables used (guessed by Jeremy):
   
   =item * B<pscat>: ParameterS CATegories? ends up a list of the types of parameters that exist, e.g., tol, weight, acc, opendate, duedate, answerdate, sig, maxtries, type.
   
   =item * B<psprt>: ParameterS PaRTs? a list of the parts of a problem that we are displaying? Used to display only selected parts?
   
   =item * B<@catmarker> contains list of all possible parameters including part #s
   
   =item * B<$fullkeyp> contains the full part/id # for the extraction of proper parameters
   
   =item * B<$tempkeyp> contains part 0 only (no ids - ie, subparts)
           When storing information, store as part 0
           When requesting information, request from full part
   
   =item crsenv()
   
   Show and set course data and parameters.  This is a large routine that should
   be simplified and shortened... someday.
   
   Inputs: $r
   
   Returns: nothing
   
   =item can_modify_catsettings()
   
   =item assign_course_categories()
   
   =item tablestart()
   
   =item tableend()
   
   =item extractuser()
   
   =item parse_listdata_key()
   
   =item listdata()
   
   =item date_interval_selector()
   
   =item get_date_interval_from_form()
   
   =item default_selector()
   
   =item string_selector()
   
   =item dateshift()
   
   =item newoverview()
   
   =item secgroup_lister()
   
   =item overview()
   
   =item clean_parameters()
   
   =item date_shift_one()
   
   =item date_shift_two()
   
   =item parse_key()
   
   =item check_cloners() :
   
   Checks if new users included in list of allowed cloners
   are valid users.  Replaces supplied list with 
   cleaned list containing only users with valid usernames
   and domains.
   
   Inputs: $clonelist, $oldcloner 
   where $clonelist is ref to array of requested cloners,
   and $oldcloner is ref to array of currently allowed
   cloners.
   
   Returns: string - comma separated list of requested
   cloners (username:domain) who do not exist in system.
   
   =item change_clone() :
   
   Modifies the list of courses a user can clone (stored
   in the user's environment.db file), called when a
   change is made to the list of users allowed to clone
   a course.
   
   Inputs: $action,$cloner
   where $action is add or drop, and $cloner is identity of 
   user for whom cloning ability is to be changed in course. 
   
   
   =item check_cloners()
   
   =item change_clone()
   
   =item header()
   
   Output html header for page
   
   =item print_main_menu()
   
   =item output_row()
   
   Set portfolio metadata
   
   =item order_meta_fields()
   
   =item addmetafield()
   
   =item setrestrictmeta()
   
   =item get_added_meta_fieldnames()
   
   =item get_deleted_meta_fieldnames()
   
   =item defaultsetter()
   
   =item components()
   
   =item load_parameter_names()
   
   =item parm_change_log()
   
   =item handler() : 
   
   Main handler.  Calls &assessparms and &crsenv subroutines.
   
   
   =back
   
 =cut  =cut
   
 ##################################################  ###################################################################
   ###################################################################
   
   package Apache::lonparmset;
   
   use strict;
   use Apache::lonnet;
   use Apache::Constants qw(:common :http REDIRECT);
   use Apache::lonhtmlcommon();
   use Apache::loncommon;
   use GDBM_File;
   use Apache::lonhomework;
   use Apache::lonxml;
   use Apache::lonlocal;
   use Apache::lonnavmaps;
   use Apache::longroup;
   use Apache::lonrss;
   use LONCAPA qw(:DEFAULT :match);
   
   
 sub parmval {  sub parmval {
     my ($what,$id,$def,$uname,$udom,$csec,$cgroup,$courseopt)=@_;      my ($what,$id,$def,$uname,$udom,$csec,$cgroup,$courseopt)=@_;
     return &parmval_by_symb($what,&symbcache($id),$def,$uname,$udom,$csec,      return &parmval_by_symb($what,&symbcache($id),$def,$uname,$udom,$csec,
Line 302  sub reset_caches { Line 550  sub reset_caches {
     }      }
 }  }
   
   
   
 sub preset_defaults {  sub preset_defaults {
     my $type=shift;      my $type=shift;
     if (&rulescache($type.'_action') eq 'default') {      if (&rulescache($type.'_action') eq 'default') {
Line 316  sub preset_defaults { Line 566  sub preset_defaults {
     }      }
 }  }
   
 ##################################################  
   
   
 sub date_sanity_info {  sub date_sanity_info {
    my $checkdate=shift;     my $checkdate=shift;
Line 371  sub storeparm { Line 622  sub storeparm {
     &storeparm_by_symb(&symbcache($sresid),$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,'',$cgroup);      &storeparm_by_symb(&symbcache($sresid),$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,'',$cgroup);
 }  }
   
 #  
 # Store a parameter by symb  
 #  
 # Takes  
 # - symb  
 # - name of parameter  
 # - level  
 # - new value  
 # - new type  
 # - username  
 # - userdomain  
 my %recstack;  my %recstack;
 sub storeparm_by_symb {  sub storeparm_by_symb {
     my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$recflag,$cgroup)=@_;      my ($symb,$spnam,$snum,$nval,$ntype,$uname,$udom,$csec,$recflag,$cgroup)=@_;
Line 536  sub storeparm_by_symb_inner { Line 776  sub storeparm_by_symb_inner {
     return '';      return '';
 }  }
   
 ##################################################  
 ##################################################  
   
 =pod  
   
 =item valout  
   
 Format a value for output.  
   
 Inputs:  $value, $type, $editable  
   
 Returns: $value, formatted for output.  If $type indicates it is a date,  
 localtime($value) is returned.  
 $editable will return an icon to click on  
   
 =cut  
   
 ##################################################  
 ##################################################  
 sub valout {  sub valout {
     my ($value,$type,$editable)=@_;      my ($value,$type,$editable)=@_;
     my $result = '';      my $result = '';
Line 611  sub valout { Line 833  sub valout {
     return $result;      return $result;
 }  }
   
 ##################################################  
 ##################################################  
   
 =pod  
   
 =item plink  
   
 Produces a link anchor.  
   
 Inputs: $type,$dis,$value,$marker,$return,$call  
   
 Returns: scalar with html code for a link which will envoke the   
 javascript function 'pjump'.  
   
 =cut  
   
 ##################################################  
 ##################################################  
 sub plink {  sub plink {
     my ($type,$dis,$value,$marker,$return,$call)=@_;      my ($type,$dis,$value,$marker,$return,$call)=@_;
     my $winvalue=$value;      my $winvalue=$value;
Line 711  sub startpage { Line 916  sub startpage {
     my %loaditems = ('onunload' => "pclose()",      my %loaditems = ('onunload' => "pclose()",
      'onload'   => "group_or_section('cgroup')",);       'onload'   => "group_or_section('cgroup')",);
   
       if ((($env{'form.command'} eq 'set') && ($env{'form.url'})
        && (!$env{'form.dis'})) || ($env{'form.symb'})) {
    &Apache::lonhtmlcommon::add_breadcrumb({help=>'Problem_Parameters',
       text=>"Problem Parameters"});
       } else {
    &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',
      text=>"Table Mode",
      help => 'Course_Setting_Parameters'});
       }
     my $start_page =       my $start_page = 
  &Apache::loncommon::start_page('Set/Modify Course Parameters',   &Apache::loncommon::start_page('Set/Modify Course Parameters',
        &page_js(),         &page_js(),
Line 927  sub parm_control_group { Line 1141  sub parm_control_group {
     return($coursereply,$resultitem,$resultgroup,$resultlevel,$resulttype);      return($coursereply,$resultitem,$resultgroup,$resultlevel,$resulttype);
 }  }
   
 =pod  
   
 =item B<extractResourceInformation>: Given the course data hash, extractResourceInformation extracts lots of information about the course's resources into a variety of hashes.  
   
 Input: See list below:  
   
 =over 4  
   
 =item B<ids>: An array that will contain all of the ids in the course.  
   
 =item B<typep>: hash, id->type, where "type" contains the extension of the file, thus, I<problem exam quiz assess survey form>.  
   
 =item B<keyp>: hash, id->key list, will contain a comma separated list of the meta-data keys available for the given id  
   
 =item B<allparms>: hash, name of parameter->display value (what is the display value?)  
   
 =item B<allparts>: hash, part identification->text representation of part, where the text representation is "[Part $part]"  
   
 =item B<allkeys>: hash, full key to part->display value (what's display value?)  
   
 =item B<allmaps>: hash, ???  
   
 =item B<fcat>: ???  
   
 =item B<defp>: hash, ???  
   
 =item B<mapp>: ??  
   
 =item B<symbp>: hash, id->full sym?  
   
 =back  
   
 =cut  
   
 sub extractResourceInformation {  sub extractResourceInformation {
     my $ids = shift;      my $ids = shift;
Line 1053  sub extractResourceInformation { Line 1235  sub extractResourceInformation {
 }  }
   
   
 ##################################################  
 ##################################################  
   
 sub isdateparm {  sub isdateparm {
     my $type=shift;      my $type=shift;
Line 1455  sub standardkeyorder { Line 1635  sub standardkeyorder {
             'parameter_0_discusshide' => 20);              'parameter_0_discusshide' => 20);
 }  }
   
 ##################################################  
 ##################################################  
   
 =pod  
   
 =item assessparms  
   
 Show assessment data and parameters.  This is a large routine that should  
 be simplified and shortened... someday.  
   
 Inputs: $r  
   
 Returns: nothing  
   
 Variables used (guessed by Jeremy):  
   
 =over 4  
   
 =item B<pscat>: ParameterS CATegories? ends up a list of the types of parameters that exist, e.g., tol, weight, acc, opendate, duedate, answerdate, sig, maxtries, type.  
   
 =item B<psprt>: ParameterS PaRTs? a list of the parts of a problem that we are displaying? Used to display only selected parts?  
   
 =item B<allmaps>:  
   
 =back  
   
 =cut  
   
 ##################################################  
 ##################################################  
 sub assessparms {  sub assessparms {
   
     my $r=shift;      my $r=shift;
Line 2057  ENDMAPONE Line 2208  ENDMAPONE
 } # end sub assessparms  } # end sub assessparms
   
   
 ##################################################  
 ##################################################  
   
 =pod  
   
 =item crsenv  
   
 Show and set course data and parameters.  This is a large routine that should  
 be simplified and shortened... someday.  
   
 Inputs: $r  
   
 Returns: nothing  
   
 =cut  
   
 ##################################################  
 ##################################################  
 sub crsenv {  sub crsenv {
     my $r=shift;      my $r=shift;
     my $setoutput='';      my $setoutput='';
   
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv',
    text=>"Course Environment"});
     my $breadcrumbs =       my $breadcrumbs = 
  &Apache::lonhtmlcommon::breadcrumbs('Edit Course Environment');   &Apache::lonhtmlcommon::breadcrumbs('Edit Course Environment');
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
Line 3115  sub newoverview { Line 3251  sub newoverview {
   
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
       text=>"Overview Mode"});
     my $start_page = &Apache::loncommon::start_page('Set Parameters');      my $start_page = &Apache::loncommon::start_page('Set Parameters');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
     $r->print(<<ENDOVER);      $r->print(<<ENDOVER);
Line 3275  sub overview { Line 3413  sub overview {
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
   
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
    text=>"Overview Mode"});
     my $start_page=&Apache::loncommon::start_page('Modify Parameters');      my $start_page=&Apache::loncommon::start_page('Modify Parameters');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
     $r->print(<<ENDOVER);      $r->print(<<ENDOVER);
Line 3309  sub clean_parameters { Line 3449  sub clean_parameters {
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
   
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=cleanparameters',
       text=>"Clean Parameters"});
     my $start_page=&Apache::loncommon::start_page('Clean Parameters');      my $start_page=&Apache::loncommon::start_page('Clean Parameters');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Clean');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Clean');
     $r->print(<<ENDOVER);      $r->print(<<ENDOVER);
Line 3392  sub date_shift_one { Line 3534  sub date_shift_one {
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
   
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
       text=>"Shifting Dates"});
     my $start_page=&Apache::loncommon::start_page('Shift Dates');      my $start_page=&Apache::loncommon::start_page('Shift Dates');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
     $r->print(<<ENDOVER);      $r->print(<<ENDOVER);
Line 3417  sub date_shift_two { Line 3561  sub date_shift_two {
     my ($r) = @_;      my ($r) = @_;
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
       text=>"Shifting Dates"});
     my $start_page=&Apache::loncommon::start_page('Shift Dates');      my $start_page=&Apache::loncommon::start_page('Shift Dates');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
     $r->print(<<ENDOVER);      $r->print(<<ENDOVER);
Line 3471  sub parse_key { Line 3617  sub parse_key {
     return %data;      return %data;
 }  }
   
 ##################################################  
 ##################################################  
   
 =pod  
   
 =item check_cloners  
   
 Checks if new users included in list of allowed cloners  
 are valid users.  Replaces supplied list with   
 cleaned list containing only users with valid usernames  
 and domains.  
   
 Inputs: $clonelist, $oldcloner   
 where $clonelist is ref to array of requested cloners,  
 and $oldcloner is ref to array of currently allowed  
 cloners.  
   
 Returns: string - comma separated list of requested  
 cloners (username:domain) who do not exist in system.  
   
 =item change_clone  
   
 Modifies the list of courses a user can clone (stored  
 in the user's environment.db file), called when a  
 change is made to the list of users allowed to clone  
 a course.  
   
 Inputs: $action,$cloner  
 where $action is add or drop, and $cloner is identity of   
 user for whom cloning ability is to be changed in course.   
   
 =cut  
   
 ##################################################  
 ##################################################  
   
 sub extract_cloners {  sub extract_cloners {
     my ($clonelist,$allowclone) = @_;      my ($clonelist,$allowclone) = @_;
Line 3622  sub change_clone { Line 3734  sub change_clone {
 }  }
   
   
 ##################################################  
 ##################################################  
   
 =pod  
   
 =item * header  
   
 Output html header for page  
   
 =cut  
   
 ##################################################  
 ##################################################  
 sub header {  sub header {
     return &Apache::loncommon::start_page('Parameter Manager');      return &Apache::loncommon::start_page('Parameter Manager');
 }  }
 ##################################################  
 ##################################################  
   
 sub print_main_menu {  sub print_main_menu {
     my ($r,$parm_permission)=@_;      my ($r,$parm_permission)=@_;
     #      #
       $r->print(&header());
       $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Manager'));
     $r->print(<<ENDMAINFORMHEAD);      $r->print(<<ENDMAINFORMHEAD);
 <form method="post" enctype="multipart/form-data"  <form method="post" enctype="multipart/form-data"
       action="/adm/parmset" name="studentform">        action="/adm/parmset" name="studentform">
Line 3654  ENDMAINFORMHEAD Line 3757  ENDMAINFORMHEAD
     my $mgr  = &Apache::lonnet::allowed('mgr',$env{'request.course.id'});      my $mgr  = &Apache::lonnet::allowed('mgr',$env{'request.course.id'});
   
     my @menu =      my @menu =
         ( { divider=>'Settings for Your Course',          ( { categorytitle=>'Settings for Your Course',
   },      items => [
           { text => 'Set Course Environment',    { linktext => 'Set Course Environment',
     action => 'crsenv',      url => '/adm/parmset?action=crsenv',
             permission => $parm_permission,      permission => $parm_permission,
             help => 'Course_Environment',      help => 'Course_Environment',
             },      },
           { text => 'Set Portfolio Metadata',    { linktext => 'Set Portfolio Metadata',
     action => 'setrestrictmeta',      url => '/adm/parmset?action=setrestrictmeta',
             permission => $parm_permission,      permission => $parm_permission,
             },      },
   { text => 'Manage Course Slots',    { linktext => 'Manage Course Slots',
     url => '/adm/slotrequest?command=showslots',      url => '/adm/slotrequest?command=showslots',
     permission => $vgr,      permission => $vgr,
             },      },
   { text => 'Reset Student Access Times',    { linktext => 'Reset Student Access Times',
     url => '/adm/helper/resettimes.helper',      url => '/adm/helper/resettimes.helper',
     permission => $mgr,      permission => $mgr,
             },      },
   
           { text => 'Set Parameter Setting Default Actions',    { linktext => 'Set Parameter Setting Default Actions',
             action => 'setdefaults',      url => '/adm/parmset?action=setdefaults',
             permission => $parm_permission,      permission => $parm_permission,
             },                }]},          
   { divider => 'New and Existing Parameter Settings for Your Resources',    { categorytitle => 'New and Existing Parameter Settings for Your Resources',
     },      items => [
           { text => 'Set/Modify Resource Parameters - Helper Mode',    { linktext => 'Set/Modify Resource Parameters - Helper Mode',
             url => '/adm/helper/parameter.helper',      url => '/adm/helper/parameter.helper',
             permission => $parm_permission,      permission => $parm_permission,
             help => 'Parameter_Helper',      help => 'Parameter_Helper',
             },      },
    { text => 'Set/Modify Resource Parameters - Overview Mode',    { linktext => 'Set/Modify Resource Parameters - Overview Mode',
             action => 'newoverview',      url => '/adm/parmset?action=newoverview',
             permission => $parm_permission,      permission => $parm_permission,
             help => 'Parameter_Overview',      help => 'Parameter_Overview',
             },      },
           { text => 'Set/Modify Resource Parameters - Table Mode',    { linktext => 'Set/Modify Resource Parameters - Table Mode',
             action => 'settable',      url => '/adm/parmset?action=settable',
             permission => $parm_permission,      permission => $parm_permission,
             help => 'Table_Mode',      help => 'Table_Mode',
             },      }]},
            { divider => 'Existing Parameter Settings for Your Resources',             { categorytitle => 'Existing Parameter Settings for Your Resources',
   },       items => [
   { text => 'Modify Resource Parameters - Overview Mode',    { linktext => 'Modify Resource Parameters - Overview Mode',
             action => 'setoverview',      url => '/adm/parmset?action=setoverview',
             permission => $parm_permission,      permission => $parm_permission,
             help => 'Parameter_Overview',      help => 'Parameter_Overview',
      },                },          
   { text => 'Parameter Change Log and Course Blog Posting/User Notification',    { linktext => 'Parameter Change Log and Course Blog Posting/User Notification',
             action => 'parameterchangelog',      url => '/adm/parmset?action=parameterchangelog',
             permission => $parm_permission,      permission => $parm_permission,
             },      }]}
           );            );
     my $menu_html = '';  #---- Remove when done ----
     foreach my $menu_item (@menu) {  #    my $menu_html = '';
  if ($menu_item->{'divider'}) {  #    foreach my $menu_item (@menu) {
     $menu_html .= '<h3>'.&mt($menu_item->{'divider'}).'</h3>';  # if ($menu_item->{'categorytitle'}) {
     next;  #    $menu_html .= '<h3>'.&mt($menu_item->{'categorytitle'}).'</h3>';
  }  #    next;
         next if (! $menu_item->{'permission'});  # }
         $menu_html.='<p>';  #        next if (! $menu_item->{'permission'});
         $menu_html.='<span class="LC_parm_menu_item">';  #        $menu_html.='<p>';
         if (exists($menu_item->{'url'})) {  #        $menu_html.='<span class="LC_parm_menu_item">';
             $menu_html.=qq{<a href="$menu_item->{'url'}">};  #        if (exists($menu_item->{'url'})) {
         } else {  #            $menu_html.=qq{<a href="$menu_item->{'url'}">};
             $menu_html.=  #        } else {
                 qq{<a href="/adm/parmset?action=$menu_item->{'action'}">};  #            $menu_html.=
         }  #                qq{<a href="/adm/parmset?action=$menu_item->{'action'}">};
         $menu_html.= &mt($menu_item->{'text'}).'</a></span>';  #        }
         if (exists($menu_item->{'help'})) {  #        $menu_html.= &mt($menu_item->{'linktext'}).'</a></span>';
             $menu_html.=  #        if (exists($menu_item->{'help'})) {
                 &Apache::loncommon::help_open_topic($menu_item->{'help'});  #            $menu_html.=
         }  #                &Apache::loncommon::help_open_topic($menu_item->{'help'});
         $menu_html.='</p>'.$/;  #        }
     }  #        $menu_html.='</p>'.$/;
     $r->print($menu_html);  #    }
   # --------------------------
   
       $r->print(&Apache::lonhtmlcommon::generate_menu(@menu));
     return;      return;
 }  }
 ### Set portfolio metadata  
   
   
 sub output_row {  sub output_row {
     my ($r, $field_name, $field_text, $added_flag) = @_;      my ($r, $field_name, $field_text, $added_flag) = @_;
     my $output;      my $output;
Line 3787  sub output_row { Line 3895  sub output_row {
     }      }
     return ($output);      return ($output);
 }  }
   
   
   
 sub order_meta_fields {  sub order_meta_fields {
     my ($r)=@_;      my ($r)=@_;
     my $idx = 1;      my $idx = 1;
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};      my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
     $r->print(&Apache::loncommon::start_page('Order Metadata Fields'));      $r->print(&Apache::loncommon::start_page('Order Metadata Fields'));
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',
       text=>"Add Metadata Field"});
     &Apache::lonhtmlcommon::add_breadcrumb      &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>"/adm/parmset?action=setrestrictmeta",              ({href=>"/adm/parmset?action=setrestrictmeta",
               text=>"Restrict Metadata"},                text=>"Restrict Metadata"},
Line 3869  sub order_meta_fields { Line 3982  sub order_meta_fields {
     $r->print('</table>');      $r->print('</table>');
     return 'ok';      return 'ok';
 }  }
   
   
 sub continue {  sub continue {
     my $output;      my $output;
     $output .= '<form action="" method="post">';      $output .= '<form action="" method="post">';
Line 3876  sub continue { Line 3991  sub continue {
     $output .= '<input type="submit" value="Continue" />';      $output .= '<input type="submit" value="Continue" />';
     return ($output);      return ($output);
 }  }
   
   
 sub addmetafield {  sub addmetafield {
     my ($r)=@_;      my ($r)=@_;
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',
       text=>"Add Metadata Field"});
     $r->print(&Apache::loncommon::start_page('Add Metadata Field'));      $r->print(&Apache::loncommon::start_page('Add Metadata Field'));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field'));
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
Line 3922  sub addmetafield { Line 4041  sub addmetafield {
     }      }
     $r->print('</form>');      $r->print('</form>');
 }  }
   
   
   
 sub setrestrictmeta {  sub setrestrictmeta {
     my ($r)=@_;      my ($r)=@_;
     my $next_meta;      my $next_meta;
     my $output;      my $output;
     my $item_num;      my $item_num;
     my $put_result;      my $put_result;
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setrestrictmeta',
       text=>"Restrict Metadata"});
     $r->print(&Apache::loncommon::start_page('Restrict Metadata'));      $r->print(&Apache::loncommon::start_page('Restrict Metadata'));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata'));
     my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
Line 4005  ENDenv Line 4129  ENDenv
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
     return 'ok';      return 'ok';
 }  }
 ##################################################  
   
   
 sub get_added_meta_fieldnames {  sub get_added_meta_fieldnames {
     my ($cid) = @_;      my ($cid) = @_;
     my %fields;      my %fields;
Line 4018  sub get_added_meta_fieldnames { Line 4144  sub get_added_meta_fieldnames {
     }      }
     return \%fields;      return \%fields;
 }  }
   
   
   
 sub get_deleted_meta_fieldnames {  sub get_deleted_meta_fieldnames {
     my ($cid) = @_;      my ($cid) = @_;
     my %fields;      my %fields;
Line 4035  sub get_deleted_meta_fieldnames { Line 4164  sub get_deleted_meta_fieldnames {
 sub defaultsetter {  sub defaultsetter {
     my ($r) = @_;      my ($r) = @_;
   
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setdefaults',
       text=>"Set Defaults"});
     my $start_page =       my $start_page = 
  &Apache::loncommon::start_page('Parameter Setting Default Actions');   &Apache::loncommon::start_page('Parameter Setting Default Actions');
     my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults');      my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults');
Line 4231  sub components { Line 4362  sub components {
 }  }
   
 my %standard_parms;  my %standard_parms;
   
   
 sub load_parameter_names {  sub load_parameter_names {
     open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");      open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");
     while (my $configline=<$config>) {      while (my $configline=<$config>) {
Line 4260  sub standard_parameter_names { Line 4393  sub standard_parameter_names {
     }      }
 }  }
   
 #  
 # Parameter Change Log  
 #  
   
   
 sub parm_change_log {  sub parm_change_log {
     my ($r)=@_;      my ($r)=@_;
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',
    text=>"Parameter Change Log"});
     $r->print(&Apache::loncommon::start_page('Parameter Change Log'));      $r->print(&Apache::loncommon::start_page('Parameter Change Log'));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Change Log'));      $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Change Log'));
   
Line 4428  sub check_for_course_info { Line 4560  sub check_for_course_info {
     return 0;      return 0;
 }  }
   
 ##################################################  
 ##################################################  
   
 =pod  
   
 =item * handler  
   
 Main handler.  Calls &assessparms and &crsenv subroutines.  
   
 =cut  
   
 ##################################################  
 ##################################################  
   
 sub handler {  sub handler {
     my $r=shift;      my $r=shift;
   
     &reset_caches();      &reset_caches();
   
     if ($r->header_only) {      &Apache::loncommon::content_type($r,'text/html');
  &Apache::loncommon::content_type($r,'text/html');      $r->send_http_header;
  $r->send_http_header;      return OK if $r->header_only;
  return OK;  
     }  
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
     ['action','state',      ['action','state',
                                              'pres_marker',                                               'pres_marker',
Line 4475  sub handler { Line 4593  sub handler {
     my $exists = &check_for_course_info();      my $exists = &check_for_course_info();
   
     if ($env{'request.course.id'} &&  $parm_permission && $exists) {      if ($env{'request.course.id'} &&  $parm_permission && $exists) {
   
         # Start Page  
         &Apache::loncommon::content_type($r,'text/html');  
         $r->send_http_header;  
   
   
         #          #
         # Main switch on form.action and form.state, as appropriate          # Main switch on form.action and form.state, as appropriate
         #          #
Line 4488  sub handler { Line 4600  sub handler {
         #  the table mode          #  the table mode
         if ((($env{'form.command'} eq 'set') && ($env{'form.url'})          if ((($env{'form.command'} eq 'set') && ($env{'form.url'})
      && (!$env{'form.dis'})) || ($env{'form.symb'})) {       && (!$env{'form.dis'})) || ($env{'form.symb'})) {
             &Apache::lonhtmlcommon::add_breadcrumb({help=>'Problem_Parameters',  
     text=>"Problem Parameters"});  
     &assessparms($r);      &assessparms($r);
   
         } elsif (! exists($env{'form.action'})) {          } elsif (! exists($env{'form.action'})) {
             $r->print(&header());  
             $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Manager'));  
             &print_main_menu($r,$parm_permission);              &print_main_menu($r,$parm_permission);
         } elsif ($env{'form.action'} eq 'crsenv' && $parm_permission) {          } elsif ($env{'form.action'} eq 'crsenv') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv',  
     text=>"Course Environment"});  
             &crsenv($r);               &crsenv($r); 
         } elsif ($env{'form.action'} eq 'setoverview' && $parm_permission) {          } elsif ($env{'form.action'} eq 'setoverview') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',  
     text=>"Overview Mode"});  
     &overview($r);      &overview($r);
  } elsif ($env{'form.action'} eq 'addmetadata' && $parm_permission) {   } elsif ($env{'form.action'} eq 'addmetadata') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',  
     text=>"Add Metadata Field"});  
     &addmetafield($r);      &addmetafield($r);
  } elsif ($env{'form.action'} eq 'ordermetadata' && $parm_permission) {   } elsif ($env{'form.action'} eq 'ordermetadata') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',  
     text=>"Add Metadata Field"});  
     &order_meta_fields($r);      &order_meta_fields($r);
         } elsif ($env{'form.action'} eq 'setrestrictmeta' && $parm_permission) {          } elsif ($env{'form.action'} eq 'setrestrictmeta') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setrestrictmeta',  
     text=>"Restrict Metadata"});  
     &setrestrictmeta($r);      &setrestrictmeta($r);
         } elsif ($env{'form.action'} eq 'newoverview' && $parm_permission) {          } elsif ($env{'form.action'} eq 'newoverview') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',  
     text=>"Overview Mode"});  
     &newoverview($r);      &newoverview($r);
         }  elsif ($env{'form.action'} eq 'setdefaults' && $parm_permission) {          } elsif ($env{'form.action'} eq 'setdefaults') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setdefaults',  
     text=>"Set Defaults"});  
     &defaultsetter($r);      &defaultsetter($r);
  } elsif ($env{'form.action'} eq 'settable' && $parm_permission) {   } elsif ($env{'form.action'} eq 'settable') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',  
     text=>"Table Mode",  
     help => 'Course_Setting_Parameters'});  
     &assessparms($r);      &assessparms($r);
         } elsif ($env{'form.action'} eq 'parameterchangelog' && $parm_permission) {          } elsif ($env{'form.action'} eq 'parameterchangelog') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',  
     text=>"Parameter Change Log"});  
     &parm_change_log($r);      &parm_change_log($r);
         } elsif ($env{'form.action'} eq 'cleanparameters' && $parm_permission) {          } elsif ($env{'form.action'} eq 'cleanparameters') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=cleanparameters',  
     text=>"Clean Parameters"});  
     &clean_parameters($r);      &clean_parameters($r);
         } elsif ($env{'form.action'} eq 'dateshift1' && $parm_permission) {          } elsif ($env{'form.action'} eq 'dateshift1') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},  
                                                     text=>"Shifting Dates"});  
             &date_shift_one($r);              &date_shift_one($r);
         } elsif ($env{'form.action'} eq 'dateshift2' && $parm_permission) {          } elsif ($env{'form.action'} eq 'dateshift2') {
             &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},  
                                                     text=>"Shifting Dates"});  
             &date_shift_two($r);              &date_shift_two($r);
  } elsif ($env{'form.action'} eq 'categorizecourse' && $parm_permission) {   } elsif ($env{'form.action'} eq 'categorizecourse') {
             &assign_course_categories($r);              &assign_course_categories($r);
         }           } 
     } else {      } else {
Line 4567  sub handler { Line 4649  sub handler {
 1;  1;
 __END__  __END__
   
 =pod  
   
 =back  
   
 =cut  
   
   
   

Removed from v.1.413.2.1  
changed lines
  Added in v.1.416


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