--- loncom/interface/lonparmset.pm 2009/03/29 18:25:33 1.438
+++ loncom/interface/lonparmset.pm 2009/04/05 17:31:04 1.442
@@ -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.442 2009/04/05 17:31:04 droeschl Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2498,9 +2498,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 +2509,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 +2525,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 +2666,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 +2748,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').' '
+ .'
';
+foreach my $catkey (@Display_Order) {
+ if (!@{$parm_cat_parms{$catkey}}) { next; } # Only display non-empty categories
+ $output_SB .= ''
+ .''
+ .$parm_cat_names{$catkey}
+ .' '
+ .' ';
+}
+$output_SB .= ' '
+ .'
';
+
+
+my $buttons='';
+
+# 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 +2993,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
@@ -4800,7 +4942,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 =