--- loncom/interface/lonparmset.pm 2009/03/29 18:25:33 1.438 +++ loncom/interface/lonparmset.pm 2009/05/08 22:47:01 1.445 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.438 2009/03/29 18:25:33 raeburn Exp $ +# $Id: lonparmset.pm,v 1.445 2009/05/08 22:47:01 neumanie Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1321,7 +1321,8 @@ sub parmmenu { ENDSCRIPT - $r->print(); + $r->print(); + $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parameters to View'))); $r->print("\n".''); my $cnt=0; foreach $tempkey (&keysindisplayorder($allparms,$keyorder)) { @@ -1382,7 +1383,8 @@ ENDSCRIPT } sub partmenu { - my ($r,$allparts,$psprt)=@_; + my ($r,$allparts,$psprt)=@_; + $r->print(''); + $r->print(''); } sub usermenu { @@ -1417,7 +1419,7 @@ sub usermenu { my $g_s_header=''; my $g_s_footer=''; - + if (%sectionhash) { $sections=&mt('Section:').' ' ,' ' - ,$chooseopt) - .'' - .'' - ); + ,$chooseopt)); } sub displaymenu { my ($r,$allparms,$allparts,$pscat,$psprt,$keyorder)=@_; - $r->print('
'.&mt('Select Parameters to View').''. - &mt('Select Parts to View').'
'); + $r->print('
'); + $r->print('

Step 2

'); + $r->print('
' ); + $r->print(&Apache::lonhtmlcommon::start_pick_box()); + &parmmenu($r,$allparms,$pscat,$keyorder); - $r->print('
'); + $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parts to View'))); &partmenu($r,$allparts,$psprt); - $r->print('
'); + $r->print(&Apache::lonhtmlcommon::end_pick_box()); + $r->print(''); } sub mapmenu { - my ($r,$allmaps,$pschp,$maptitles)=@_; - $r->print(''.&mt('Select Enclosing Map or Folder').' '); + my ($r,$allmaps,$pschp,$maptitles)=@_; + + $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Enclosing Map or Folder'))); $r->print('"); + } sub levelmenu { - my ($r,$alllevs,$parmlev)=@_; - $r->print(''.&mt('Select Parameter Level'). - &Apache::loncommon::help_open_topic('Course_Parameter_Levels').' '); + my ($r,$alllevs,$parmlev)=@_; + + $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parameter Level').&Apache::loncommon::help_open_topic('Course_Parameter_Levels'))); $r->print('"); + $r->print(""); } @@ -1862,15 +1862,21 @@ sub assessparms { } if (!$pssymb) { - $r->print(''); - if ($parmlev ne 'general') { - $r->print(''); - } - $r->print('
'); + + $r->print('
'); + $r->print('

Step 1

'); + $r->print('
' ); + $r->print(&Apache::lonhtmlcommon::start_pick_box()); + &levelmenu($r,\%alllevs,$parmlev); - $r->print('
'); - &mapmenu($r,\%allmaps,$pschp,\%maptitles); - $r->print('
'); + + if ($parmlev ne 'general') { + &mapmenu($r,\%allmaps,$pschp,\%maptitles); + } + + $r->print(&Apache::lonhtmlcommon::end_pick_box()); + $r->print(''); + &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt,\%keyorder); } else { my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb); @@ -1880,7 +1886,14 @@ sub assessparms { '

'); } - &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups); + $r->print('
'); + $r->print('

Step 3

'); + $r->print('
' ); + $r->print(&Apache::lonhtmlcommon::start_pick_box()); + &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups); + + $r->print(&Apache::lonhtmlcommon::end_pick_box()); + $r->print('
'); $r->print('

'.$message.'

'); @@ -2498,9 +2511,6 @@ sub crsenv { } } - my $start_table =&Apache::loncommon::start_data_table(); - my $start_header_row=&Apache::loncommon::start_data_table_header_row(); - my $end_header_row =&Apache::loncommon::end_data_table_header_row(); # ------------------------- Re-init course environment entries for this session &Apache::lonnet::coursedescription($env{'request.course.id'}, @@ -2512,7 +2522,14 @@ sub crsenv { my $SelectStyleFile=&mt('Select Style File'); my $SelectSpreadsheetFile=&mt('Select Spreadsheet File'); my $output=''; + my $output_SB = ''; # will be replaced by "$output" when all changes are done my $can_categorize; + my %lt=&Apache::lonlocal::texthash( + 'par' => 'Parameter', + 'val' => 'Value', + 'set' => 'Set?', + 'sav' => 'Save', + ); if (! exists($values{'con_lost'})) { my %descriptions= ('url' => ''.&mt('Top Level Map').'
'. @@ -2521,7 +2538,7 @@ sub crsenv { &mt('Select Map').'
'. &mt('Modification may make assessment data inaccessible!'). '', - 'description' => ''.&mt('Course Description').'', + 'description' => ''.&mt('Course Title').'', 'courseid' => ''.&mt('Course ID or number'). '
'. '('.&mt('internal, optional').')', @@ -2662,70 +2679,28 @@ sub crsenv { => ''.&mt('Replacement titles for standard course roles').'
'. '('.&mt('To replace the standard title for a course role, enter the title you wish to use, otherwise leave blank.').')', ); - 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', - 'default_xml_style','pageseparators', - 'question.email','question.email.text','comment.email', - 'comment.email.text','policy.email','policy.email.text', - 'student_classlist_view', - 'student_classlist_opt_in', - 'student_classlist_portfiles', - 'plc.roles.denied','plc.users.denied', - 'pch.roles.denied','pch.users.denied', - 'allow_limited_html_in_feedback', - 'allow_discussion_post_editing', - 'languages', - 'timezone', - 'datelocale', - 'rolenames', - 'nothideprivileged', - 'rndseed', - 'receiptalg', - 'problem_stream_switch', - 'suppress_tries', - 'suppress_embed_prompt', - 'default_paper_size', - 'print_header_format', - 'disable_receipt_display', - 'spreadsheet_default_classcalc', - 'spreadsheet_default_studentcalc', - 'spreadsheet_default_assesscalc', - 'hideemptyrows', - 'default_enrollment_start_date', - 'default_enrollment_end_date', - 'tthoptions', - 'texengine', - 'disablesigfigs', - 'disableexampointprint', - 'task_messages','task_grading')); - foreach my $parameter (sort(keys(%values))) { - unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./) || - ($parameter =~ m/^selfenroll_/) || ($parameter =~ /_selfenroll$/) - || ($parameter eq 'type') || - ($parameter =~ m/^(cc|in|ta|ep|ad|st)\.plaintext$/)) { - if (! $descriptions{$parameter}) { - $descriptions{$parameter}=$parameter; - push(@Display_Order,$parameter); - } - } - } - - foreach my $parameter (@Display_Order) { - my $description = $descriptions{$parameter}; - # onchange is javascript to automatically check the 'Set' button. - my $onchange = 'onFocus="javascript:window.document.forms'. - "['envform'].elements['".$parameter."_setparmval']". - '.checked=true;"'; - $output .= &Apache::loncommon::start_data_table_row(). - ''.$description.''; + + +# ---------------------------------------------------------------- +# Begin: New Version with Parameter Categories + + sub parameter_row { + # Create parameter row for course environment screen + + my ($parameter, $description) = @_; + + # Start Parameter Row + my $output = &Apache::loncommon::start_data_table_row(); + + # Column 1/3: Descriptive text of current parameter + $output .= ''.$description.''; + + # Column 2/3: Input field (Sometimes special field(s), depending on parameter) + + # onchange is javascript to automatically check the 'Set' button. + my $onchange = 'onFocus="javascript:window.document.forms' + ."['envform'].elements['".$parameter."_setparmval']" + .'.checked=true;"'; if ($parameter =~ /^default_enrollment_(start|end)_date$/) { $output .= ''. &Apache::lonhtmlcommon::date_setter('envform', @@ -2786,41 +2761,229 @@ sub crsenv { $values{'categories'}.'" />'. ''; - } else { - $output .= ''. - &Apache::lonhtmlcommon::textbox($parameter.'_value', - $values{$parameter}, - 40,$onchange).''; - } - unless ($parameter eq 'rolenames') { - $output .= ''. - &Apache::lonhtmlcommon::checkbox($parameter.'_setparmval'). - ''; - } - $output .= &Apache::loncommon::end_data_table_row()."\n"; - } - my $onchange = 'onFocus="javascript:window.document.forms'. - '[\'envform\'].elements[\'newp_setparmval\']'. - '.checked=true;"'; - $output.=&Apache::loncommon::start_data_table_row(). - ''.&mt('Create New Environment Variable').'
'. - ''. - ''. - ''. - &Apache::loncommon::end_data_table_row()."\n"; + } else { # Display default textbox in all other cases + $output .= '' + .&Apache::lonhtmlcommon::textbox($parameter.'_value', + $values{$parameter}, + 40, + $onchange) + .''; + } + + # Column 3/3: Check Box (in most cases) + unless ($parameter eq 'rolenames') { + $output .= '' + .&Apache::lonhtmlcommon::checkbox($parameter.'_setparmval') + .''; + } + + # End Parameter Row + $output .= &Apache::loncommon::end_data_table_row(); + + return $output; + } # End sub parameter_row + + + # Parameter Category Names + my %parm_cat_names = &Apache::lonlocal::texthash ( + 'cat_0' => 'Parameter Category Zero', + 'cat_1' => 'Parameter Category One', + 'cat_2' => 'Parameter Category Two', + 'cat_3' => 'Parameter Category Three', + 'cat_4' => 'Parameter Category Four', + 'cat_5' => 'Parameter Category Five', + 'cat_6' => 'Parameter Category Six', + 'cat_7' => 'Parameter Category Seven', + 'cat_can' => 'Parameter Category Can', + 'cat_custom' => 'Parameter Category Custom', + ); + + # Display Order of Parameter Categories + my @Display_Order = ( + 'cat_0', + 'cat_1', + 'cat_2', + 'cat_3', + 'cat_4', + 'cat_5', + 'cat_6', + 'cat_7', + 'cat_can', + 'cat_custom', + ); + + # Link Parameter Categories with Parameters + # Order of parameters is display order + my %parm_cat_parms = ( + 'cat_0' => [ + 'url', + 'description', + 'courseid', + 'cloners' + ], + 'cat_1' => [ + 'grading', + 'externalsyllabus', + 'default_xml_style', + 'pageseparators' + ], + 'cat_2' => [ + 'question.email', + 'question.email.text', + 'comment.email', + 'comment.email.text', + 'policy.email', + 'policy.email.text', + ], + 'cat_3' => [ + 'student_classlist_view', + 'student_classlist_opt_in', + 'student_classlist_portfiles', + 'plc.roles.denied', + 'plc.users.denied', + 'pch.roles.denied', + 'pch.users.denied', + 'allow_limited_html_in_feedback', + 'allow_discussion_post_editing', + ], + 'cat_4' => [ + 'languages', + 'timezone', + 'datelocale', + 'rolenames', + 'nothideprivileged', + 'rndseed', + 'receiptalg', + 'problem_stream_switch', + 'suppress_tries', + 'suppress_embed_prompt', + 'default_paper_size', + 'print_header_format', + 'disable_receipt_display', + ], + 'cat_5' => [ + 'spreadsheet_default_classcalc', + 'spreadsheet_default_studentcalc', + 'spreadsheet_default_assesscalc', + 'hideemptyrows', + ], + 'cat_6' => [ + 'default_enrollment_start_date', + 'default_enrollment_end_date', + ], + 'cat_7' => [ + 'tthoptions', + 'texengine', + 'disablesigfigs', + 'disableexampointprint', + 'task_messages', + 'task_grading', + ], + ); + + # Add special parameters depending on special context to parameter categories hash + my @can_cats; + (my $can_toggle_cat,$can_categorize) = &can_modify_catsettings($dom); + if ($can_toggle_cat) { + push(@can_cats,'hidefromcat'); } - my %lt=&Apache::lonlocal::texthash( - 'par' => 'Parameter', - 'val' => 'Value', - 'set' => 'Set?', - 'sav' => 'Save' - ); - - my $Parameter=&mt('Parameter'); - my $Value=&mt('Value'); - my $Set=&mt('Set'); + if ($can_categorize) { + push(@can_cats,'categories'); + } + $parm_cat_parms{'cat_can'} = [@can_cats]; + + # Add custom parameters to custom parameter category + my @custom_cats; + foreach my $parameter (sort(keys(%values))) { + unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./) || + ($parameter =~ m/^selfenroll_/) || ($parameter =~ /_selfenroll$/) + || ($parameter eq 'type') || + ($parameter =~ m/^(cc|in|ta|ep|ad|st)\.plaintext$/)) { + if (! $descriptions{$parameter}) { + $descriptions{$parameter}=$parameter; + push(@custom_cats,$parameter); + } + } + } + $parm_cat_parms{'cat_custom'} = [@custom_cats]; + + +# Display Course Parameter Overview +# Provide hyperlinks to detailed parameter settings +$output_SB .= '' + .'
' + .'

'.&mt('Course Parameter Overview').'

' + .'
' + .'
'; + + +my $buttons='
' + .'' + .'
'.&mt('Back to Course Parameter Overview').'' + .'
'; + +# Display all Parameters grouped by categories +$output_SB .= '

'.&mt('Course Parameters').'

'; + +foreach my $catkey (@Display_Order) { + if (!@{$parm_cat_parms{$catkey}}) { next; } # Only display non-empty categories + $output_SB .= &Apache::loncommon::start_data_table(); + $output_SB .= &Apache::loncommon::start_data_table_empty_row() + .'' + .'' + .'

'.$parm_cat_names{$catkey}.'

' + .'' + .&Apache::loncommon::end_data_table_empty_row + .&Apache::loncommon::start_data_table_header_row() + .''.$lt{'par'}.''.$lt{'val'}.''.$lt{'set'}.'' + .&Apache::loncommon::end_data_table_header_row(); + + foreach my $parameter (@{$parm_cat_parms{$catkey}}) { + my $description = $descriptions{$parameter}; + $output_SB .= ¶meter_row($parameter, $description); + } + # Add special row to custom category + # Offer possibilty to create a new environment variable + if ($catkey eq 'cat_custom') { + my $onchange = 'onFocus="javascript:window.document.forms' + .'[\'envform\'].elements[\'newp_setparmval\']' + .'.checked=true;"'; + $output_SB .= &Apache::loncommon::start_data_table_row() + .'' + .''.&mt('Create New Environment Variable').'
' + .'' + .'' + .'' + .'' + .'' + .&Apache::loncommon::end_data_table_row(); + } + # Add buttons row at end of each category + $output_SB .= &Apache::loncommon::start_data_table_empty_row() + .'' + .$buttons + .'' + .&Apache::loncommon::end_data_table_empty_row; + + $output_SB .= &Apache::loncommon::end_data_table() + . '
'; +} + +# End: New Version with Parameter Categories +# ---------------------------------------------------------------- + + + } + my ($jscript,$categorize_js); my $browse_js = &Apache::loncommon::browser_and_searcher_javascript('parmset'); if ($can_categorize) { @@ -2843,20 +3006,12 @@ ENDSCRIPT $jscript); my $end_page = &Apache::loncommon::end_page(); - my $end_table=&Apache::loncommon::end_data_table(); $r->print(< $setoutput -
-$start_table -$start_header_row -$lt{'par'}$lt{'val'}$lt{'set'} -$end_header_row -$output -$end_table - +$output_SB $end_page ENDENV @@ -3448,21 +3603,32 @@ ENDOVER } # Menu to select levels, etc - $r->print(' -
'); + #$r->print(' + # '); + #$r->print(''); } - $r->print('
'); + $r->print('
'); + #$r->print('

Step 1

'); + $r->print('
' ); + $r->print(&Apache::lonhtmlcommon::start_pick_box()); &levelmenu($r,\%alllevs,$parmlev); if ($parmlev ne 'general') { - $r->print('
'); + #$r->print(''); &mapmenu($r,\%allmaps,$pschp,\%maptitles); - $r->print('
'); - - $r->print(' -
'); + $r->print(&Apache::lonhtmlcommon::end_pick_box()); + $r->print(''); + #$r->print('
'); + + #$r->print(' + #
'); + $r->print('
'); + $r->print('
' ); + $r->print(&Apache::lonhtmlcommon::start_pick_box()); &parmmenu($r,\%allparms,\@pscat,\%keyorder); - $r->print('
- '. + + $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parts to View'))); + #$r->print('
'. + $r->print(''. '
'.&mt('Parts').''.&mt('Section(s)'). ''.&mt('Group(s)').'
'); &partmenu($r,\%allparts,\@psprt); @@ -3471,14 +3637,19 @@ ENDOVER $r->print(''); &groupmenu($r,\@selected_groups); $r->print('
'); - $r->print('
'); - + #$r->print('
'); + $r->print(&Apache::lonhtmlcommon::end_pick_box()); + $r->print(''); + + $r->print('
'); + $r->print('
' ); my $sortorder=$env{'form.sortorder'}; unless ($sortorder) { $sortorder='realmstudent'; } &sortmenu($r,$sortorder); - + $r->print('
'); + $r->print('

'); - + # Build the list data hash from the specified parms my $listdata; @@ -4433,12 +4604,12 @@ ENDINPUTDATE } elsif ($defkeytype{$tempkey} eq 'string_yesno') { my $yeschecked=''; my $nochecked=''; - if (&rulescache($tempkey.'_value') eq 'yes') { $yeschecked='checked="checked"'; } - if (&rulescache($tempkey.'_value') eq 'no') { $nochecked='checked="checked"'; } + if (&rulescache($tempkey.'_value') eq 'yes') { $yeschecked=' checked="checked"'; } + if (&rulescache($tempkey.'_value') eq 'no') { $nochecked=' checked="checked"'; } $r->print(< $lt{'yes'}
- +
+ ENDYESNO } else { $r->print(''); @@ -4800,7 +4971,8 @@ sub handler { text=>"Parameter Manager", faq=>10, bug=>'Instructor Interface', - help => 'Parameter_Manager'}); + help => + 'Parameter_Manager,Course_Environment,Parameter_Helper,Parameter_Overview,Table_Mode'}); # ----------------------------------------------------- Needs to be in a course my $parm_permission =