--- loncom/interface/courseprefs.pm 2010/02/12 00:39:51 1.8.2.6
+++ loncom/interface/courseprefs.pm 2010/03/08 14:41:01 1.25
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set configuration settings for a course
#
-# $Id: courseprefs.pm,v 1.8.2.6 2010/02/12 00:39:51 raeburn Exp $
+# $Id: courseprefs.pm,v 1.25 2010/03/08 14:41:01 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -28,6 +28,185 @@
###############################################################
##############################################################
+=pod
+
+=head1 NAME
+
+courseprefs- Handler to set/modify course configuration
+
+=head1 SYNOPSIS
+
+courseprefs provides an interface for setting general course configuration
+
+=head1 DESCRIPTION
+
+This module is used for configuration of a course
+
+=head1 INTERNAL SUBROUTINES
+
+=over
+
+=item get_allitems()
+
+=item print_config_box()
+
+=item process_changes()
+
+=item get_sec_str()
+
+=item check_clone()
+
+=item store_changes()
+
+=item update_env()
+
+=item display_disallowed()
+
+=item get_course()
+
+=item get_jscript()
+
+=item cloners_javascript()
+
+=item print_courseinfo()
+
+=item new_cloners_dom_row()
+
+=item can_modify_catsettings()
+
+=item assign_course_categories()
+
+=item print_localization()
+
+=item get_lang_choices()
+
+=item print_feedback()
+
+=item user_table()
+
+=item select_recipient()
+
+=item select_sections()
+
+=item print_discussion()
+
+=item role_checkboxes()
+
+=item print_classlists()
+
+=item print_appearance()
+
+=item print_grading()
+
+=item print_printouts()
+
+=item print_spreadsheet()
+
+=item print_bridgetasks()
+
+=item print_other()
+
+=item get_other_items()
+
+=item item_table_row_start()
+
+=item item_table_row_end()
+
+=item yes_no_radio()
+
+=item select_from_options()
+
+=item make_item_rows()
+
+Creates table used to display and set course configuration items.
+
+Inputs: $cdom,$items,$ordered,$settings,$rowtotal,$crstype
+where $cdom is course's domain, $items is HASH ref for current config
+item, $ordered is ARRAY ref of items to include in row in
+display order, $settings is HASH ref of current values forrow,
+$rowtotal is SCALAR ref used to accumulate row count, $crstype is
+course type.
+
+Returns: $datatable
+HTML mark-up of data table which accumulates individual rows.
+
+=item nothidepriv_row()
+
+Creates row containing form elements used to display and set
+whether Domain coordinators who are currently included in
+advanced course user .db file for a course are to be hidden (e.g.,
+in syllabus, or from course user lists).
+
+Inputs: $cdom,$item,$settings,$crstype
+where $cdom is course domain, item is nothideprivileged, $settings is
+HASH ref of the current values for nothideprivileged, $crstype is
+course type (Course or Community).
+
+Return: $datatable
+HTML mark-up for Privileged users (Domain Coordinators) in staff listing.
+
+=item print_hdrfmt_row()
+
+Creates row containing form elements used to display and set
+substitution items and text to be used in the header included
+on printouts.
+
+Inputs: $item,$settings
+where $item is print_header_format, and $settings is a HASH ref
+of the current values stored for print_header_format.
+
+Returns: $output
+HTML mark-up containing Javascript functions: reOrder() and getIndexByName()
+used to dynamically update position selectboxes, and HTML table elements
+for the "Print header format" row.
+
+=item position_selector()
+
+Creates a select box which can be used to reorder substitutions
+and text included in a printout header.
+
+Inputs: $pos,$num,$maxnum
+where $pos is current position, $num is the unique identifier,
+and $maxnum is the total number of items (both substitutions
+and text in the printout header.
+
+Returns: $output
+HTML mark-up for the selectbox and a hidden form element containing
+the current position.
+
+=item substitution_selector()
+
+Creates a combination of select box for choosing an item
+(student name, course ID or assignment note) to substitute,
+and a corresponding size limit in the header used for printouts.
+
+Inputs: $num,$subst,$limit,$crstype
+where $num is the unique identifier, $subst is the current
+substitution (n,c or a, for name, course or note respectively,
+$limit is the current size limit (integer), and $crstype is
+course type - course or community.
+
+Returns: $output
+HTML mark-up for selectbox and textbox (separate table cells).
+
+=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.
+
+Returns: nothing
+
+=back
+
+=cut
+
+
package Apache::courseprefs;
use strict;
@@ -93,6 +272,8 @@ sub handler {
gens => 'General community settings',
idnu => 'Community ID or number',
desc => 'Community Description',
+ ownr => 'Community Owner',
+ cown => 'Community Co-owners',
catg => 'Categorize community',
excc => 'Exclude from community catalog',
clon => 'Users allowed to clone community',
@@ -118,6 +299,8 @@ sub handler {
gens => 'General course settings',
idnu => 'Course ID or number',
desc => 'Course Description',
+ ownr => 'Course Owner',
+ cown => 'Course Co-owners',
catg => 'Categorize course',
excc => 'Exclude from course catalog',
clon => 'Users allowed to clone course',
@@ -161,27 +344,25 @@ sub handler {
'courseinfo' =>
{ text => $lt{'gens'},
help => 'Course_Environment',
- header => [{col1 => 'Setting',
- col2 => 'Value'}],
- ordered => ['description','courseid','categories',
- 'hidefromcat','cloners','externalsyllabus',
- 'url','rolenames'],
+ ordered => ['owner','co-owners','description','courseid',
+ 'categories','hidefromcat','externalsyllabus',
+ 'cloners','url','rolenames'],
itemtext => {
- description => $lt{'desc'},
- courseid => $lt{'idnu'},
- categories => $lt{'catg'},
- hidefromcat => $lt{'excc'},
- cloners => $lt{'clon'},
- externalsyllabus => 'URL of Syllabus',
- url => 'Top Level Map',
- rolenames => $lt{'rept'},
+ 'owner' => $lt{'ownr'},
+ 'co-owners' => $lt{'cown'},
+ 'description' => $lt{'desc'},
+ 'courseid' => $lt{'idnu'},
+ 'categories' => $lt{'catg'},
+ 'hidefromcat' => $lt{'excc'},
+ 'cloners' => $lt{'clon'},
+ 'externalsyllabus' => 'URL of Syllabus',
+ 'url' => 'Top Level Map',
+ 'rolenames' => $lt{'rept'},
},
},
'localization' =>
- { text => 'Language/TimeZone/Locale',
+ { text => 'Language & Time Localization',
help => 'Course_Environment',
- header => [{col1 => 'Setting',
- col2 => 'Value',}],
ordered => ['languages','timezone','datelocale'],
itemtext => {
languages => 'Languages used',
@@ -193,9 +374,7 @@ sub handler {
{ text => 'Feedback messages',
help => 'Course_Environment',
header => [{col1 => 'Questions about:',
- col2 => 'Recipients'},
- {col1 => 'Questions about:',
- col2 => 'Custom Text'}],
+ col2 => 'Recipients'}],
ordered => ['question.email','comment.email','policy.email'],
itemtext => {
'question.email' => 'Resource Content',
@@ -206,8 +385,6 @@ sub handler {
'discussion' =>
{ text => 'Discussion and Chat',
help => 'Course_Environment',
- header => [{col1 => 'Setting',
- col2 => 'Value',}],
ordered => ['plc.roles.denied','plc.users.denied',
'pch.roles.denied','pch.users.denied',
'allow_limited_html_in_feedback',
@@ -217,7 +394,7 @@ sub handler {
'plc.users.denied' => 'No Resource Discussion',
'pch.roles.denied' => 'No Chat room use',
'pch.users.denied' => 'No Chat room use',
- allow_limited_html_in_feedback => 'Allow limited HTML in discussion posts',
+ allow_limited_html_in_feedback => 'Allow limited HTML in discussion',
allow_discussion_post_editing => 'Users can edit/delete own discussion posts',
},
},
@@ -246,13 +423,11 @@ sub handler {
'appearance' =>
{ text => 'Display of resources ',
help => 'Course_Environment',
- header => [{col1 => 'Setting',
- col2 => 'Value'}],
ordered => ['default_xml_style','pageseparators',
'disable_receipt_display','texengine',
'tthoptions'],
itemtext => {
- default_xml_style => 'Default XML Style File',
+ default_xml_style => 'Default XML style file',
pageseparators => 'Visibly Separate Items on Pages',
disable_receipt_display => 'Disable display of problem receipts',
texengine => 'Force use of a specific math rendering engine',
@@ -262,8 +437,6 @@ sub handler {
'grading' =>
{ text => 'Grading',
help => 'Course_Environment',
- header => [{col1 => 'Setting',
- col2 => 'Value',}],
ordered => ['grading','rndseed',
'receiptalg','disablesigfigs'],
itemtext => {
@@ -277,24 +450,21 @@ sub handler {
'printouts' =>
{ text => 'Printout generation',
help => 'Course_Environment',
- header => [{col1 => 'Setting',
- col2 => 'Value',}],
ordered => ['problem_stream_switch','suppress_tries',
'default_paper_size','print_header_format',
- 'disableexampointprint'],
+ 'disableexampointprint','canuse_pdfforms'],
itemtext => {
problem_stream_switch => 'Allow problems to be split over pages',
suppress_tries => 'Suppress number of tries in printing',
default_paper_size => 'Default paper type',
print_header_format => 'Print header format',
disableexampointprint => 'Disable automatically printing point values on exams',
+ canuse_pdfforms => 'Users can print problems as PDF forms and upload later for grading',
},
},
'spreadsheet' =>
{ text => 'Spreadsheets',
help => 'Course_Environment',
- header => [{col1 => 'Setting',
- col2 => 'Value'}],
ordered => ['spreadsheet_default_classcalc',
'spreadsheet_default_studentcalc',
'spreadsheet_default_assesscalc','hideemptyrows'],
@@ -308,8 +478,6 @@ sub handler {
'bridgetasks' =>
{ text => 'Bridge tasks',
help => 'Course_Environment',
- header => [{col1 => 'Setting',
- col2 => 'Value'}],
ordered => ['task_messages','task_grading',
'suppress_embed_prompt'],
itemtext => {
@@ -365,21 +533,20 @@ sub print_config_box {
my $itemtext = $item->{'itemtext'};
my $rowtotal = 0;
my $output =
- '