'.
join(' / ',split(/\//,$uri)).
' '.
"$title");
@@ -2046,14 +2482,14 @@ ENDTABLEHEADFOUR
my %maplist;
if ($pschp eq 'all') {
- %maplist = %allmaps;
+ %maplist = %allmaps;
} else {
%maplist = ($pschp => $mapp{$pschp});
}
#-------------------------------------------- for each map, gather information
my $mapid;
- foreach $mapid (sort {$maplist{$a} cmp $maplist{$b}} keys %maplist) {
+ foreach $mapid (sort {$maplist{$a} cmp $maplist{$b}} keys %maplist) {
my $maptitle = $maplist{$mapid};
#----------------------- loop through ids and get all parameter types for map
@@ -2065,16 +2501,16 @@ ENDTABLEHEADFOUR
my %default = ();
my $map = 0;
-# $r->print("Catmarker: @catmarker \n");
-
+# $r->print("Catmarker: @catmarker \n");
+
foreach (@ids) {
- ($map)=(/([\d]*?)\./);
- my $rid = $_;
-
+ ($map)=(/([\d]*?)\./);
+ my $rid = $_;
+
# $r->print("$mapid:$map: $rid \n");
- if ($map eq $mapid) {
- my $uri=&Apache::lonnet::declutter($uris{$rid});
+ if ($map eq $mapid) {
+ my $uri=&Apache::lonnet::declutter($uris{$rid});
# $r->print("Keys: $keyp{$rid} \n");
#--------------------------------------------------------------------
@@ -2084,40 +2520,40 @@ ENDTABLEHEADFOUR
# When storing information, store as part 0
# When requesting information, request from full part
#-------------------------------------------------------------------
- foreach (&keysplit($keyp{$rid})) {
- my $tempkeyp = $_;
- my $fullkeyp = $tempkeyp;
- $tempkeyp =~ s/_\w+_/_0_/;
-
- if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
- $part{$tempkeyp}="0";
- $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');
- my $parmdis=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
- if ($allparms{$name{$tempkeyp}} ne '') {
- my $identifier;
- if ($parmdis =~ /(\s*\[Part.*)$/) {
- $identifier = $1;
- }
- $display{$tempkeyp} = $allparms{$name{$tempkeyp}}.$identifier;
- } else {
- $display{$tempkeyp} = $parmdis;
- }
- unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
- $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
- $display{$tempkeyp} =~ s/_\w+_/_0_/;
- $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
- $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
+ foreach (&keysplit($keyp{$rid})) {
+ my $tempkeyp = $_;
+ my $fullkeyp = $tempkeyp;
+ $tempkeyp =~ s/_\w+_/_0_/;
+
+ if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
+ $part{$tempkeyp}="0";
+ $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');
+ my $parmdis=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
+ if ($allparms{$name{$tempkeyp}} ne '') {
+ my $identifier;
+ if ($parmdis =~ /(\s*\[Part.*)$/) {
+ $identifier = $1;
+ }
+ $display{$tempkeyp} = $allparms{$name{$tempkeyp}}.$identifier;
+ } else {
+ $display{$tempkeyp} = $parmdis;
+ }
+ unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
+ $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
+ $display{$tempkeyp} =~ s/_\w+_/_0_/;
+ $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
+ $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
+ }
+ } # end loop through keys
}
- } # end loop through keys
- }
} # end loop through ids
-
+
#---------------------------------------------------- print header information
my $foldermap=&mt($maptitle=~/^uploaded/?'Folder':'Map');
my $showtitle=$maptitles{$maptitle}.($maptitle!~/^uploaded/?' ['.$maptitle.']':'');
my $tmp="";
if ($uname) {
- my $person=&Apache::loncommon::plainname($uname,$udom);
+ my $person=&Apache::loncommon::plainname($uname,$udom);
$tmp.=&mt("User")." $uname \($person\) ".
&mt('in')." \n";
} else {
@@ -2148,7 +2584,7 @@ ENDTABLEHEADFOUR
.&Apache::loncommon::end_data_table_header_row()
);
- foreach (&keysinorder(\%name,\%keyorder)) {
+ foreach (&keysinorder(\%name,\%keyorder)) {
$r->print(&Apache::loncommon::start_data_table_row());
&print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,
\%type,\%display,$defbgone,$defbgtwo,$defbgthree,
@@ -2174,10 +2610,10 @@ ENDTABLEHEADFOUR
my %display = ();
my %type = ();
my %default = ();
-
+
foreach (@ids) {
my $rid = $_;
-
+
my $uri=&Apache::lonnet::declutter($uris{$rid});
#--------------------------------------------------------------------
@@ -2188,45 +2624,45 @@ ENDTABLEHEADFOUR
# When requesting information, request from full part
#-------------------------------------------------------------------
foreach (&keysplit($keyp{$rid})) {
- my $tempkeyp = $_;
- my $fullkeyp = $tempkeyp;
- $tempkeyp =~ s/_\w+_/_0_/;
- if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
- $part{$tempkeyp}="0";
- $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');
- my $parmdis=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
- if ($allparms{$name{$tempkeyp}} ne '') {
- my $identifier;
- if ($parmdis =~ /(\s*\[Part.*)$/) {
- $identifier = $1;
+ my $tempkeyp = $_;
+ my $fullkeyp = $tempkeyp;
+ $tempkeyp =~ s/_\w+_/_0_/;
+ if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
+ $part{$tempkeyp}="0";
+ $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');
+ my $parmdis=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
+ if ($allparms{$name{$tempkeyp}} ne '') {
+ my $identifier;
+ if ($parmdis =~ /(\s*\[Part.*)$/) {
+ $identifier = $1;
+ }
+ $display{$tempkeyp} = $allparms{$name{$tempkeyp}}.$identifier;
+ } else {
+ $display{$tempkeyp} = $parmdis;
}
- $display{$tempkeyp} = $allparms{$name{$tempkeyp}}.$identifier;
- } else {
- $display{$tempkeyp} = $parmdis;
- }
- unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
- $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
- $display{$tempkeyp} =~ s/_\w+_/_0_/;
- $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
- $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
- }
+ unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
+ $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
+ $display{$tempkeyp} =~ s/_\w+_/_0_/;
+ $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
+ $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
+ }
} # end loop through keys
} # end loop through ids
-
+
#---------------------------------------------------- print header information
- my $setdef=&mt("Set Defaults for All Resources in Course");
+ my $setdef=&mt("Set Defaults for All Resources in Course");
$r->print(<
$setdef
$coursename
ENDMAPONE
if ($uname) {
- my $person=&Apache::loncommon::plainname($uname,$udom);
+ my $person=&Apache::loncommon::plainname($uname,$udom);
$r->print(" ".&mt("User")." $uname \($person\) \n");
} else {
$r->print(" ".&mt("ALL")." ".&mt("USERS")." \n");
}
-
+
if ($csec) {$r->print(&mt("Section")." $csec \n")};
if ($cgroup) {$r->print(&mt("Group")." $cgroup \n")};
$r->print(" \n");
@@ -2239,7 +2675,7 @@ ENDMAPONE
.&Apache::loncommon::end_data_table_header_row()
);
- foreach (&keysinorder(\%name,\%keyorder)) {
+ foreach (&keysinorder(\%name,\%keyorder)) {
$r->print(&Apache::loncommon::start_data_table_row());
&print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,
\%type,\%display,$defbgone,$defbgtwo,$defbgthree,
@@ -2254,619 +2690,6 @@ ENDMAPONE
$r->print(''.&Apache::loncommon::end_page());
} # end sub assessparms
-
-
-sub crsenv {
- my $r=shift;
- my $setoutput='';
-
- &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv',
- text=>"Course Environment"});
- my $breadcrumbs =
- &Apache::lonhtmlcommon::breadcrumbs('Edit Course Environment');
- my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
- my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
-
- my (%crsinfo,$chome);
-
- #
- # Go through list of changes
- foreach (keys %env) {
- next if ($_!~/^form\.(.+)\_setparmval$/);
- my $name = $1;
- my $value = $env{'form.'.$name.'_value'};
- if ($name eq 'newp') {
- $name = $env{'form.newp_name'};
- }
- if ($name eq 'url') {
- $value=~s/^\/res\///;
- my $bkuptime=time;
- my @tmp = &Apache::lonnet::get
- ('environment',['url'],$dom,$crs);
- $setoutput.=&mt('Backing up previous URL').': '.
- &Apache::lonnet::put
- ('environment',
- {'top level map backup '.$bkuptime => $tmp[1] },
- $dom,$crs).
- ' ';
- }
- #
- # Deal with modified default spreadsheets
- if ($name =~ /^spreadsheet_default_(classcalc|
- studentcalc|
- assesscalc)$/x) {
- my $sheettype = $1;
- if ($sheettype eq 'classcalc') {
- # no need to do anything since viewing the sheet will
- # cause it to be updated.
- } elsif ($sheettype eq 'studentcalc') {
- # expire all the student spreadsheets
- &Apache::lonnet::expirespread('','','studentcalc');
- } else {
- # expire all the assessment spreadsheets
- # this includes non-default spreadsheets, but better to
- # be safe than sorry.
- &Apache::lonnet::expirespread('','','assesscalc');
- # expire all the student spreadsheets
- &Apache::lonnet::expirespread('','','studentcalc');
- }
- }
- #
- # Deal with the enrollment dates
- if ($name =~ /^default_enrollment_(start|end)_date$/) {
- $value=&Apache::lonhtmlcommon::get_date_from_form($name.'_value');
- }
- #
- # Deal with the emails
- if ($name =~ /\.email$/) {
- foreach my $specifier (split(',',$value)) {
- my ($user,$sections_or_groups)=
- ($specifier=~/^([^\(]+)\(([^\)]+)\)/);
- if (!$sections_or_groups) {
- $user = $specifier;
- }
- my ($name,$domain) = split(':',$user);
- if (!defined($user) || !defined($domain)) {
- $setoutput.= ' '.
- &mt("Invalid e-mail address specified, address must be of the form username:domain what was specified was ([_1])",$user).
- ' ';
- undef($value);
- } elsif (&Apache::lonnet::homeserver($user,$domain) eq 'no_host') {
- $setoutput.= ' '.
- &mt("Invalid e-mail address specified, user [_1] is unknown.",$name).
- ' ';
- undef($value);
- }
- }
- }
- # Get existing cloners
- my @oldcloner = ();
- if ($name eq 'cloners') {
- my %clonenames=&Apache::lonnet::dump('environment',$dom,$crs,'cloners');
- if ($clonenames{'cloners'} =~ /,/) {
- @oldcloner = split/,/,$clonenames{'cloners'};
- } else {
- $oldcloner[0] = $clonenames{'cloners'};
- }
- }
- #
- # Let the user know we made the changes
- if ($name && defined($value)) {
- my %failed_cloners;
- if ($name eq 'cloners') {
- $value =~ s/\s//g;
- $value =~ s/^,//;
- $value =~ s/,$//;
- # check requested clones are valid users.
- %failed_cloners = &check_cloners(\$value,\@oldcloner);
- }
- my $put_result = &Apache::lonnet::put('environment',
- {$name=>$value},$dom,$crs);
- if ($put_result eq 'ok') {
- $setoutput.=&mt('Set').' '.$name.' '.&mt('to').' ';
- if ($name =~ /^default_enrollment_(start|end)_date$/) {
- $setoutput .= &Apache::lonlocal::locallocaltime($value);
- } elsif ($name eq 'categories') {
- $setoutput .= $env{'form.categories_display'};
- } else {
- $setoutput .= $value;
- }
- $setoutput .= ' . ';
- if ($name eq 'cloners') {
- &change_clone($value,\@oldcloner);
- }
- # Update environment and nohist_courseids.db
- if (($name eq 'description') || ($name eq 'cloners') ||
- ($name eq 'hidefromcat') || ($name eq 'categories')) {
- if ($chome eq '') {
- %crsinfo =
- &Apache::lonnet::courseiddump($dom,'.',1,'.','.',
- $crs,undef,undef,'.');
- $chome = &Apache::lonnet::homeserver($crs,$dom);
- }
- }
- if ($name eq 'description' && defined($value)) {
- &Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.description' => $value});
- if (ref($crsinfo{$env{'request.course.id'}}) eq 'HASH') {
- $crsinfo{$env{'request.course.id'}}{'description'} = $value;
- my $putresult =
- &Apache::lonnet::courseidput($dom,\%crsinfo,
- $chome,'notime');
- }
- }
- if (($name eq 'cloners') || ($name eq 'hidefromcat') || ($name eq 'categories')) {
- if (ref($crsinfo{$env{'request.course.id'}}) eq 'HASH') {
- &Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.'.$name => $value});
- $crsinfo{$env{'request.course.id'}}{$name} = $value;
- my $putresult =
- &Apache::lonnet::courseidput($dom,\%crsinfo,
- $chome,'notime');
- }
- }
- } else {
- $setoutput.=&mt('Unable to set').' '.$name.' '.&mt('to').
- ' '.$value.' '.&mt('due to').' '.$put_result.'. ';
- }
- if (($name eq 'cloners') && (keys(%failed_cloners) > 0)) {
- $setoutput.= &mt('Unable to include').': ';
- my @fails;
- my $num = 0;
- if (defined($failed_cloners{'format'})) {
- $fails[$num] .= ''.$failed_cloners{'format'}.
- ' , '.&mt('reason').' - '.
- &mt('Invalid format');
- $num ++;
- }
- if (defined($failed_cloners{'domain'})) {
- $fails[$num] .= ''.$failed_cloners{'domain'}.
- ' , '.&mt('reason').' - '.
- &mt('Domain does not exist');
- $num ++;
- }
- if (defined($failed_cloners{'newuser'})) {
- $fails[$num] .= ''.$failed_cloners{'newuser'}. ' , '.&mt('reason').' - '.
- &mt('LON-CAPA user(s) do(es) not exist.').
- '. '.&mt('Please ').
- ' '.
- &mt('add the user(s)').' , '.
- &mt('and then return to the ').
- ''.
- &mt('Course Parameters page').' '.
- &mt('to add the new user(s) to the list of possible cloners');
- }
- $setoutput .= join('; ',@fails).'. ';
- }
- }
- }
-
- 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'},
- {'freshen_cache' => 1});
-
-# -------------------------------------------------------- Get parameters again
-
- my %values=&Apache::lonnet::dump('environment',$dom,$crs);
- my $SelectStyleFile=&mt('Select Style File');
- my $SelectSpreadsheetFile=&mt('Select Spreadsheet File');
- my $output='';
- my $can_categorize;
- if (! exists($values{'con_lost'})) {
- my %descriptions=
- ('url' => ''.&mt('Top Level Map').' '.
- '".
- &mt('Select Map').' '.
- &mt('Modification may make assessment data inaccessible!').
- ' ',
- 'description' => ''.&mt('Course Description').' ',
- 'courseid' => ''.&mt('Course ID or number').
- ' '.
- '('.&mt('internal, optional').')',
- 'cloners' => ''.&mt('Users allowed to clone course').' '
- .'("'.&mt('user:domain,user:domain,*:domain').' ") '
- .&mt('Users with active Course Coordinator role in this course are permitted to clone and need not be included.').' '
- .&mt('Use [_1] to allow course to be cloned by anyone in the specified domain.','"*:domain "').' '
- .&mt('Use [_1] to allow unrestricted cloning in all domains.','"* "'),
- 'grading' => ''.&mt('Grading').' '.
- &mt('[_1], [_2], or [_3]','"standard "','"external "','"spreadsheet "').&Apache::loncommon::help_open_topic('GradingOptions'),
- 'task_grading' => ''.&mt('Bridge Task Grading').' '
- .&mt('Instructors and TAs in sections, when grading bridge tasks, should be allowed to grade other sections.').' '
- .'('.&mt('[_1]: they are allowed (this is the default). [_2]: no, they can only grade their own section.','"any "','"section "').')',
- 'default_xml_style' => ''.&mt('Default XML Style File').' '.
- '$SelectStyleFile ",
- 'question.email' => ''.&mt('Feedback Addresses for Resource Content Question').' '
- .'("'.&mt('user:domain,user:domain(section;section;...;*;...),...').' ")',
- 'question.email.text' => ''.&mt('Custom Text for Resource Content Question Option in Feedback').' ',
- 'comment.email' => ''.&mt('Feedback Addresses for Course Content Comments').' '
- .'("'.&mt('user:domain,user:domain(section;section;...;*;...),...').' ")',
- 'comment.email.text' => ''.&mt('Custom Text for Course Content Option in Feedback').' ',
- 'policy.email' => ''.&mt('Feedback Addresses for Course Policy').' '
- .'("'.&mt('user:domain,user:domain(section;section;...;*;...),...').' ")',
- 'policy.email.text' => ''.&mt('Custom Text for Course Policy Option in Feedback').' ',
- 'hideemptyrows' => ''.&mt('Hide Empty Rows in Spreadsheets').' '
- .'('.&mt('[_1] for default hiding','"yes "').')',
- 'pageseparators' => ''.&mt('Visibly Separate Items on Pages').' '
- .'('.&mt('[_1] for visible separation.','"yes "').' '
- .&mt('Changes will not show until next login.').')',
- 'student_classlist_view' => ''.&mt('Allow students to view classlist.').' '
- .'('.&mt('[_1]: students can view all sections. [_2]: students can only view their own section. blank or [_3] prevents student view.','"all "','"section "','"disabled "').')',
- 'student_classlist_portfiles' => ''.&mt('Include link to accessible portfolio files').' '
- .'('.&mt("[_1] for link to each a listing of each student's files.",'"yes "').')',
- 'student_classlist_opt_in' => ''.&mt("Student's agreement needed for listing in student-viewable roster").' '
- .'('.&mt('[_1] to require students to opt-in to listing in the roster (on the roster page).','"yes "').')',
- 'plc.roles.denied'=> ''.&mt('Disallow chat room use for Roles').' '
- .'('.&mt('[_1]: student, [_2]: TA, [_3]: instructor','"st "','"ta "','"in "').') '
- .'("'.&mt('role,role,...').' ") '
- .Apache::loncommon::help_open_topic("Course_Disable_Discussion"),
- 'plc.users.denied' =>
- ''.&mt('Disallow chat room use for Users').' '.
- '("'.&mt('user:domain,user:domain,...').' ")',
-
- 'pch.roles.denied'=> ''.&mt('Disallow Resource Discussion for Roles').' '
- .'('.&mt('[_1]: student, [_2]: TA, [_3]: instructor','"st "','"ta "','"in "')
- .'("'.&mt('role,role,...').' ") '
- .Apache::loncommon::help_open_topic("Course_Disable_Discussion"),
- 'pch.users.denied' =>
- ''.&mt('Disallow Resource Discussion for Users').' '.
- '("'.&mt('user:domain,user:domain,...').' ")',
- 'spreadsheet_default_classcalc'
- => ''.&mt('Default Course Spreadsheet').' '.
- '$SelectSpreadsheetFile ",
- 'spreadsheet_default_studentcalc'
- => ''.&mt('Default Student Spreadsheet').' '.
- '$SelectSpreadsheetFile ",
- 'spreadsheet_default_assesscalc'
- => ''.&mt('Default Assessment Spreadsheet').' '.
- '$SelectSpreadsheetFile ",
- 'allow_limited_html_in_feedback'
- => ''.&mt('Allow limited HTML in discussion posts').' '.
- '('.&mt('Set value to [_1] to allow.','"yes "').')',
- 'allow_discussion_post_editing'
- => ''.&mt('Allow users with specified roles to edit/delete their own discussion posts').' '
- .'('.&mt('[_1]: student, [_2]: TA, [_3]: instructor','"st "','"ta "','"in "').') '
- .'('.&mt('Set value to [_1] to allow all roles.','"yes "').')'
- .'("'.&mt('role:section,role:section,...').' ") '
- .'('.&mt('Example: "st:001,st:002,in,cc " would permit students in sections 001 and 002 and instructors in any section, and course coordinators to edit their own posts.').')',
- 'rndseed'
- => ''.&mt('Randomization algorithm used').' '
- .''
- .&mt('Modifying this will make problems have different numbers and answers!')
- .' ',
- 'receiptalg'
- => ''.&mt('Receipt algorithm used').' '.
- &mt('This controls how receipt numbers are generated.'),
- 'suppress_tries'
- => ''.&mt('Suppress number of tries in printing').' '.
- ' ('.&mt('[_1] to suppress, anything else to not suppress','"yes "').')',
- 'problem_stream_switch'
- => ''.&mt('Allow problems to be split over pages').' '.
- ' ('.&mt('[_1] if allowed, anything else if not','"yes "').')',
- 'default_paper_size'
- => ''.&mt('Default paper type').' '.
- ' ('.&mt('supported types').': Letter [8 1/2x11 in], Legal [8 1/2x14 in],'.
- ' Tabloid [11x17 in], Executive [7 1/2x10 in], A2 [420x594 mm],'.
- ' A3 [297x420 mm], A4 [210x297 mm], A5 [148x210 mm], A6 [105x148 mm])',
- 'print_header_format'
- => ' '.&mt('Print header format').' '
- .&mt('Substitutions: [_1]: student name, [_2]: course id, [_3]: assignment note. Numbers after the % limit the field size.','"%n "','"%c "','"%a "'),
- 'default_enrollment_start_date' => ''.&mt('Default beginning date for student access.').' ',
- 'default_enrollment_end_date' => ''.&mt('Default ending date for student access.').' ',
- 'nothideprivileged' => ''.&mt('Privileged users that should not be hidden on staff listings').' '
- .'("'.&mt('user:domain,user:domain,*:domain').' ")',
- 'languages' => ''.&mt('Languages used').' ',
- 'disable_receipt_display'
- => ''.&mt('Disable display of problem receipts').' '.
- ' ('.&mt('"[_1]" to disable, anything else if not','yes ').')',
- 'task_messages'
- => ''.&mt('Send message to student when clicking Done on Tasks').' ('.&mt('[_1] to send a message only to student, [_2] to send message to student and add record to user information page for instructors. Leave blank to disable.','"only_student "','"student_and_user_notes_screen "').')',
- 'disablesigfigs'
- => ''.&mt('Disable checking of Significant Figures').' '.
- ' ('.&mt('"[_1]" to disable, anything else if not','yes ').')',
- 'disableexampointprint'
- => ''.&mt('Disable automatically printing point values onto exams.').' '.
- ' ('.&mt('"[_1]" to disable, anything else if not','yes ').')',
- 'externalsyllabus'
- => ''.&mt('URL of Syllabus (not using internal handler)').' ',
- 'tthoptions'
- => ''.&mt('Default set of options to pass to tth/m when converting TeX').' ',
-
- 'texengine'
- => ''.&mt('Force all students in the course to use a specific math rendering engine.').' '
- .'('.&mt("[_1], [_2] (Convert to Images), [_3] (TeX to HTML), or blank for student's preference",'"jsMath "','"mimetex "','"tth "').')',
- 'timezone'
- => ''.&mt('Timezone in which the course takes place').' ',
-
- 'suppress_embed_prompt'
- => ''.&mt('Suppress prompt to upload items referenced in a web page being uploaded to portfolio, when current role is student.').' '.
- ' ('.&mt('[_1] to suppress, anything else to not suppress','"yes "').')',
- 'hidefromcat'
- => ''.&mt('Exclude from course catalog').' '.
- ' ('.&mt('[_1] to exclude, anything else to include - included if assigned an institutional code, or manually catagorized','"yes "').')',
- 'categories'
- => ''.&mt('Categorize course').' '.
- &mt('Display Categories').' ',
- 'datelocale'
- => ''.&mt('Locale used for course calendar').' ',
- );
- 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',
- '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')) {
- 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.' ';
- if ($parameter =~ /^default_enrollment_(start|end)_date$/) {
- $output .= ''.
- &Apache::lonhtmlcommon::date_setter('envform',
- $parameter.'_value',
- $values{$parameter},
- $onchange).
- ' ';
- } elsif ($parameter eq 'timezone') {
- my $includeempty = 1;
- my $timezone = &Apache::lonlocal::gettimezone();
- $output .= ''.
- &Apache::loncommon::select_timezone($parameter.'_value',
- $timezone,
- $onchange,$includeempty).' ';
- } elsif ($parameter eq 'datelocale') {
- my $includeempty = 1;
- my $locale_obj = &Apache::lonlocal::getdatelocale();
- my $currdatelocale;
- if (ref($locale_obj)) {
- $currdatelocale = $locale_obj->id();
- }
- $output .= ''.
- &Apache::loncommon::select_datelocale($parameter.'_value',
- $currdatelocale,
- $onchange,$includeempty).' ';
- } 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 .= ''.
- ' '.
- ' ';
- } else {
- $output .= ''.
- &Apache::lonhtmlcommon::textbox($parameter.'_value',
- $values{$parameter},
- 40,$onchange).' ';
- }
- $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";
- }
- 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');
- my ($jscript,$categorize_js);
- my $browse_js = &Apache::loncommon::browser_and_searcher_javascript('parmset');
- if ($can_categorize) {
- $categorize_js = <'."\n".
- $browse_js."\n".$categorize_js."\n".'';
- my $start_page =
- &Apache::loncommon::start_page('Set Course Environment',
- $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
-
-
-$end_page
-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 = <
-
-function updateCategories() {
- var newcategories = '';
- var unescapedcats = '';
- if (document.chgcats.usecategory.length) {
- for (var i=0; i 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;
-}
-
-
-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 = ''.&mt('Categorize Course').' ';
- if ($hascats) {
- my %currsettings =
- &Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum);
- $categoriesform .= &mt('Assign one or more categories to this course.').' '.
- ' ';
- } else {
- $categoriesform .= &mt('No categories defined for this domain');
- }
- $r->print($start_page.$categoriesform.$end_page);
- return;
-}
-
##################################################
# Overview mode
##################################################
@@ -2874,20 +2697,20 @@ my $tableopen;
sub tablestart {
if ($tableopen) {
- return '';
+ return '';
} else {
- $tableopen=1;
- return &Apache::loncommon::start_data_table().''.&mt('Parameter').' '.
- &mt('Delete').' '.&mt('Set to ...').' ';
+ $tableopen=1;
+ return &Apache::loncommon::start_data_table().''.&mt('Parameter').' '.
+ &mt('Delete').' '.&mt('Set to ...').' ';
}
}
sub tableend {
if ($tableopen) {
- $tableopen=0;
- return &Apache::loncommon::end_data_table();
+ $tableopen=0;
+ return &Apache::loncommon::end_data_table();
} else {
- return'';
+ return'';
}
}
@@ -2900,16 +2723,16 @@ sub readdata {
my $classlist=&Apache::loncoursedata::get_classlist();
foreach (keys %$classlist) {
if ($_=~/^($match_username)\:($match_domain)$/) {
- my ($tuname,$tudom)=($1,$2);
- my $useropt=&Apache::lonnet::get_userresdata($tuname,$tudom);
+ my ($tuname,$tudom)=($1,$2);
+ my $useropt=&Apache::lonnet::get_userresdata($tuname,$tudom);
foreach my $userkey (keys %{$useropt}) {
- if ($userkey=~/^$env{'request.course.id'}/) {
+ if ($userkey=~/^$env{'request.course.id'}/) {
my $newkey=$userkey;
- $newkey=~s/^($env{'request.course.id'}\.)/$1\[useropt\:$tuname\:$tudom\]\./;
- $$resourcedata{$newkey}=$$useropt{$userkey};
- }
- }
- }
+ $newkey=~s/^($env{'request.course.id'}\.)/$1\[useropt\:$tuname\:$tudom\]\./;
+ $$resourcedata{$newkey}=$$useropt{$userkey};
+ }
+ }
+ }
}
return $resourcedata;
}
@@ -2927,87 +2750,87 @@ sub storedata {
my @deldata=();
undef @deldata;
foreach (keys %env) {
- if ($_=~/^form\.([a-z]+)\_(.+)$/) {
- my $cmd=$1;
- my $thiskey=$2;
- my ($tuname,$tudom)=&extractuser($thiskey);
- my $tkey=$thiskey;
+ if ($_=~/^form\.([a-z]+)\_(.+)$/) {
+ my $cmd=$1;
+ my $thiskey=$2;
+ my ($tuname,$tudom)=&extractuser($thiskey);
+ my $tkey=$thiskey;
+ if ($tuname) {
+ $tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;
+ }
+ if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') {
+ my ($data, $typeof, $text);
+ if ($cmd eq 'set') {
+ $data=$env{$_};
+ $typeof=$env{'form.typeof_'.$thiskey};
+ $text = &mt('Saved modified parameter for');
+ } elsif ($cmd eq 'datepointer') {
+ $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_});
+ $typeof=$env{'form.typeof_'.$thiskey};
+ $text = &mt('Saved modified date for');
+ } elsif ($cmd eq 'dateinterval') {
+ $data=&get_date_interval_from_form($thiskey);
+ $typeof=$env{'form.typeof_'.$thiskey};
+ $text = &mt('Saved modified date for');
+ }
+ if (defined($data) and $$olddata{$thiskey} ne $data) {
if ($tuname) {
- $tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;
- }
- if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') {
- my ($data, $typeof, $text);
- if ($cmd eq 'set') {
- $data=$env{$_};
- $typeof=$env{'form.typeof_'.$thiskey};
- $text = &mt('Saved modified parameter for');
- } elsif ($cmd eq 'datepointer') {
- $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_});
- $typeof=$env{'form.typeof_'.$thiskey};
- $text = &mt('Saved modified date for');
- } elsif ($cmd eq 'dateinterval') {
- $data=&get_date_interval_from_form($thiskey);
- $typeof=$env{'form.typeof_'.$thiskey};
- $text = &mt('Saved modified date for');
- }
- if (defined($data) and $$olddata{$thiskey} ne $data) {
- if ($tuname) {
- if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,
- $tkey.'.type' => $typeof},
- $tudom,$tuname) eq 'ok') {
- &log_parmset({$tkey=>$data,$tkey.'.type' => $typeof},0,$tuname,$tudom);
- $r->print(' '.$text.' '.
- &Apache::loncommon::plainname($tuname,$tudom));
- } else {
- $r->print(''.
- &mt('Error saving parameters').'
');
- }
- &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
- } else {
- $newdata{$thiskey}=$data;
- $newdata{$thiskey.'.type'}=$typeof;
- }
- }
- } elsif ($cmd eq 'del') {
- if ($tuname) {
- if (&Apache::lonnet::del('resourcedata',[$tkey],$tudom,$tuname) eq 'ok') {
- &log_parmset({$tkey=>''},1,$tuname,$tudom);
- $r->print(' '.&mt('Deleted parameter for').' '.&Apache::loncommon::plainname($tuname,$tudom));
- } else {
- $r->print(''.
- &mt('Error deleting parameters').'
');
- }
- &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
- } else {
- push (@deldata,$thiskey,$thiskey.'.type');
- }
- }
- }
+ if (&Apache::lonnet::put('resourcedata',{$tkey=>$data,
+ $tkey.'.type' => $typeof},
+ $tudom,$tuname) eq 'ok') {
+ &log_parmset({$tkey=>$data,$tkey.'.type' => $typeof},0,$tuname,$tudom);
+ $r->print(' '.$text.' '.
+ &Apache::loncommon::plainname($tuname,$tudom));
+ } else {
+ $r->print(''.
+ &mt('Error saving parameters').'
');
+ }
+ &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
+ } else {
+ $newdata{$thiskey}=$data;
+ $newdata{$thiskey.'.type'}=$typeof;
+ }
+ }
+ } elsif ($cmd eq 'del') {
+ if ($tuname) {
+ if (&Apache::lonnet::del('resourcedata',[$tkey],$tudom,$tuname) eq 'ok') {
+ &log_parmset({$tkey=>''},1,$tuname,$tudom);
+ $r->print(' '.&mt('Deleted parameter for').' '.&Apache::loncommon::plainname($tuname,$tudom));
+ } else {
+ $r->print(''.
+ &mt('Error deleting parameters').'
');
+ }
+ &Apache::lonnet::devalidateuserresdata($tuname,$tudom);
+ } else {
+ push (@deldata,$thiskey,$thiskey.'.type');
+ }
+ }
+ }
}
# Store all course level
my $delentries=$#deldata+1;
my @newdatakeys=keys %newdata;
my $putentries=$#newdatakeys+1;
if ($delentries) {
- if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {
- my %loghash=map { $_ => '' } @deldata;
- &log_parmset(\%loghash,1);
- $r->print(''.&mt('Deleted [_1] parameter(s) ',$delentries));
- } else {
- $r->print(''.
- &mt('Error deleting parameters').'
');
- }
- &Apache::lonnet::devalidatecourseresdata($crs,$dom);
+ if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {
+ my %loghash=map { $_ => '' } @deldata;
+ &log_parmset(\%loghash,1);
+ $r->print(''.&mt('Deleted [_1] parameter(s) ',$delentries));
+ } else {
+ $r->print(''.
+ &mt('Error deleting parameters').'
');
+ }
+ &Apache::lonnet::devalidatecourseresdata($crs,$dom);
}
if ($putentries) {
- if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {
- &log_parmset(\%newdata,0);
- $r->print(''.&mt('Saved [_1] parameter(s)',$putentries/2).' ');
- } else {
- $r->print(''.
- &mt('Error saving parameters').'
');
- }
- &Apache::lonnet::devalidatecourseresdata($crs,$dom);
+ if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {
+ &log_parmset(\%newdata,0);
+ $r->print(''.&mt('Saved [_1] parameter(s)',$putentries/2).' ');
+ } else {
+ $r->print(''.
+ &mt('Error saving parameters').'
');
+ }
+ &Apache::lonnet::devalidatecourseresdata($crs,$dom);
}
}
@@ -3020,15 +2843,15 @@ sub parse_listdata_key {
my ($key,$listdata) = @_;
# split into student/section affected, and
# the realm (folder/resource part and parameter
- my ($student,$realm) =
- ($key=~/^\Q$env{'request.course.id'}\E\.\[([^\.]+)\]\.(.+)$/);
+ my ($student,$realm) =
+ ($key=~/^\Q$env{'request.course.id'}\E\.\[([^\.]+)\]\.(.+)$/);
# if course wide student would be undefined
if (!defined($student)) {
- ($realm)=($key=~/^\Q$env{'request.course.id'}\E\.(.+)$/);
+ ($realm)=($key=~/^\Q$env{'request.course.id'}\E\.(.+)$/);
}
# strip off the .type if it's not the Question type parameter
if ($realm=~/\.type$/ && !exists($listdata->{$key.'.type'})) {
- $realm=~s/\.type//;
+ $realm=~s/\.type//;
}
# split into resource+part and parameter name
my ($res, $parm) = ($realm=~/^(.*)\.(.*)$/);
@@ -3049,135 +2872,136 @@ sub listdata {
my %keyorder=&standardkeyorder();
foreach my $thiskey (sort {
- my ($astudent,$ares,$apart,$aparm) = &parse_listdata_key($a,$listdata);
- my ($bstudent,$bres,$bpart,$bparm) = &parse_listdata_key($b,$listdata);
+ my ($astudent,$ares,$apart,$aparm) = &parse_listdata_key($a,$listdata);
+ my ($bstudent,$bres,$bpart,$bparm) = &parse_listdata_key($b,$listdata);
- # get the numerical order for the param
- $aparm=$keyorder{'parameter_0_'.$aparm};
- $bparm=$keyorder{'parameter_0_'.$bparm};
+ # get the numerical order for the param
+ $aparm=$keyorder{'parameter_0_'.$aparm};
+ $bparm=$keyorder{'parameter_0_'.$bparm};
- my $result=0;
+ my $result=0;
- if ($sortorder eq 'realmstudent') {
+ if ($sortorder eq 'realmstudent') {
if ($ares ne $bres ) {
- $result = ($ares cmp $bres);
- } elsif ($astudent ne $bstudent) {
- $result = ($astudent cmp $bstudent);
- } elsif ($apart ne $bpart ) {
- $result = ($apart cmp $bpart);
- }
- } else {
- if ($astudent ne $bstudent) {
- $result = ($astudent cmp $bstudent);
- } elsif ($ares ne $bres ) {
- $result = ($ares cmp $bres);
- } elsif ($apart ne $bpart ) {
- $result = ($apart cmp $bpart);
- }
- }
-
- if (!$result) {
+ $result = ($ares cmp $bres);
+ } elsif ($astudent ne $bstudent) {
+ $result = ($astudent cmp $bstudent);
+ } elsif ($apart ne $bpart ) {
+ $result = ($apart cmp $bpart);
+ }
+ } else {
+ if ($astudent ne $bstudent) {
+ $result = ($astudent cmp $bstudent);
+ } elsif ($ares ne $bres ) {
+ $result = ($ares cmp $bres);
+ } elsif ($apart ne $bpart ) {
+ $result = ($apart cmp $bpart);
+ }
+ }
+
+ if (!$result) {
if (defined($aparm) && defined($bparm)) {
- $result = ($aparm <=> $bparm);
+ $result = ($aparm <=> $bparm);
} elsif (defined($aparm)) {
- $result = -1;
+ $result = -1;
} elsif (defined($bparm)) {
- $result = 1;
- }
- }
+ $result = 1;
+ }
+ }
- $result;
+ $result;
} keys %{$listdata}) {
- if ($$listdata{$thiskey.'.type'}) {
+ if ($$listdata{$thiskey.'.type'}) {
my $thistype=$$listdata{$thiskey.'.type'};
if ($$resourcedata{$thiskey.'.type'}) {
- $thistype=$$resourcedata{$thiskey.'.type'};
- }
- my ($middle,$part,$name)=
- ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
- my $section=&mt('All Students');
- if ($middle=~/^\[(.*)\]/) {
- my $issection=$1;
- if ($issection=~/^useropt\:($match_username)\:($match_domain)/) {
- $section=&mt('User').": ".&Apache::loncommon::plainname($1,$2);
- } else {
- $section=&mt('Group/Section').': '.$issection;
- }
- $middle=~s/^\[(.*)\]//;
- }
- $middle=~s/\.+$//;
- $middle=~s/^\.+//;
- my $realm=''.&mt('All Resources').' ';
- if ($middle=~/^(.+)\_\_\_\(all\)$/) {
- $realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' ('.$1.') ';
- } elsif ($middle) {
- my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);
- $realm=''.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' ('.$url.' in '.$map.' id: '.$id.') ';
- }
- if ($sortorder eq 'realmstudent') {
- if ($realm ne $oldrealm) {
- $r->print(&tableend()."\n$realm ");
- $oldrealm=$realm;
- $oldsection='';
- }
- if ($section ne $oldsection) {
- $r->print(&tableend()."\n$section ");
- $oldsection=$section;
- $oldpart='';
- }
- } else {
- if ($section ne $oldsection) {
- $r->print(&tableend()."\n$section ");
- $oldsection=$section;
- $oldrealm='';
- }
- if ($realm ne $oldrealm) {
- $r->print(&tableend()."\n$realm ");
- $oldrealm=$realm;
- $oldpart='';
- }
- }
- if ($part ne $oldpart) {
- $r->print(&tableend().
- "\n".''.&mt('Part').": $part ");
- $oldpart=$part;
- }
+ $thistype=$$resourcedata{$thiskey.'.type'};
+ }
+ my ($middle,$part,$name)=
+ ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
+ my $section=&mt('All Students');
+ if ($middle=~/^\[(.*)\]/) {
+ my $issection=$1;
+ if ($issection=~/^useropt\:($match_username)\:($match_domain)/) {
+ $section=&mt('User').": ".&Apache::loncommon::plainname($1,$2);
+ } else {
+ $section=&mt('Group/Section').': '.$issection;
+ }
+ $middle=~s/^\[(.*)\]//;
+ }
+ $middle=~s/\.+$//;
+ $middle=~s/^\.+//;
+ my $realm=''.&mt('All Resources').' ';
+ if ($middle=~/^(.+)\_\_\_\(all\)$/) {
+ $realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' ('.$1.') ';
+ } elsif ($middle) {
+ my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);
+ $realm=''.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' ('.$url.' in '.$map.' id: '.$id.') ';
+ }
+ if ($sortorder eq 'realmstudent') {
+ if ($realm ne $oldrealm) {
+ $r->print(&tableend()."\n$realm ");
+ $oldrealm=$realm;
+ $oldsection='';
+ }
+ if ($section ne $oldsection) {
+ $r->print(&tableend()."\n$section ");
+ $oldsection=$section;
+ $oldpart='';
+ }
+ } else {
+ if ($section ne $oldsection) {
+ $r->print(&tableend()."\n$section ");
+ $oldsection=$section;
+ $oldrealm='';
+ }
+ if ($realm ne $oldrealm) {
+ $r->print(&tableend()."\n$realm ");
+ $oldrealm=$realm;
+ $oldpart='';
+ }
+ }
+ if ($part ne $oldpart) {
+ $r->print(&tableend().
+ "\n".''.&mt('Part').": $part ");
+ $oldpart=$part;
+ }
#
# Ready to print
#
- $r->print(&tablestart().
- &Apache::loncommon::start_data_table_row().
- ''.&standard_parameter_names($name).
- ' ');
- $foundkeys++;
- if (&isdateparm($thistype)) {
- my $jskey='key_'.$pointer;
- $pointer++;
- $r->print(
- &Apache::lonhtmlcommon::date_setter('parmform',
- $jskey,
- $$resourcedata{$thiskey},
- '',1,'','').
+ my $parmitem = &standard_parameter_names($name);
+ $r->print(&tablestart().
+ &Apache::loncommon::start_data_table_row().
+ ' '.&mt($parmitem).
+ ' ');
+ $foundkeys++;
+ if (&isdateparm($thistype)) {
+ my $jskey='key_'.$pointer;
+ $pointer++;
+ $r->print(
+ &Apache::lonhtmlcommon::date_setter('parmform',
+ $jskey,
+ $$resourcedata{$thiskey},
+ '',1,'','').
' '.
(($$resourcedata{$thiskey}!=0)?''.
&mt('Shift all dates based on this date').' ':'').
&date_sanity_info($$resourcedata{$thiskey})
- );
- } elsif ($thistype eq 'date_interval') {
- $r->print(&date_interval_selector($thiskey,
- $$resourcedata{$thiskey}));
- } elsif ($thistype =~ m/^string/) {
- $r->print(&string_selector($thistype,$thiskey,
- $$resourcedata{$thiskey}));
- } else {
- $r->print(&default_selector($thiskey,$$resourcedata{$thiskey}));
- }
- $r->print(' ');
- $r->print(' '.&Apache::loncommon::end_data_table_row());
- }
+ );
+ } elsif ($thistype eq 'date_interval') {
+ $r->print(&date_interval_selector($thiskey,
+ $$resourcedata{$thiskey}));
+ } elsif ($thistype =~ m/^string/) {
+ $r->print(&string_selector($thistype,$thiskey,
+ $$resourcedata{$thiskey}));
+ } else {
+ $r->print(&default_selector($thiskey,$$resourcedata{$thiskey}));
+ }
+ $r->print(' ');
+ $r->print('
'.&Apache::loncommon::end_data_table_row());
+ }
}
return $foundkeys;
}
@@ -3187,17 +3011,17 @@ sub date_interval_selector {
my ($thiskey, $showval) = @_;
my $result;
foreach my $which (['days', 86400, 31],
- ['hours', 3600, 23],
- ['minutes', 60, 59],
- ['seconds', 1, 59]) {
- my ($name, $factor, $max) = @{ $which };
- my $amount = int($showval/$factor);
- $showval %= $factor;
- my %select = ((map {$_ => $_} (0..$max)),
- 'select_form_order' => [0..$max]);
- $result .= &Apache::loncommon::select_form($amount,$name.'_'.$thiskey,
- %select);
- $result .= ' '.&mt($name);
+ ['hours', 3600, 23],
+ ['minutes', 60, 59],
+ ['seconds', 1, 59]) {
+ my ($name, $factor, $max) = @{ $which };
+ my $amount = int($showval/$factor);
+ $showval %= $factor;
+ my %select = ((map {$_ => $_} (0..$max)),
+ 'select_form_order' => [0..$max]);
+ $result .= &Apache::loncommon::select_form($amount,$name.'_'.$thiskey,
+ %select);
+ $result .= ' '.&mt($name);
}
$result .= ' ';
return $result;
@@ -3208,13 +3032,13 @@ sub get_date_interval_from_form {
my ($key) = @_;
my $seconds = 0;
foreach my $which (['days', 86400],
- ['hours', 3600],
- ['minutes', 60],
- ['seconds', 1]) {
- my ($name, $factor) = @{ $which };
- if (defined($env{'form.'.$name.'_'.$key})) {
- $seconds += $env{'form.'.$name.'_'.$key} * $factor;
- }
+ ['hours', 3600],
+ ['minutes', 60],
+ ['seconds', 1]) {
+ my ($name, $factor) = @{ $which };
+ if (defined($env{'form.'.$name.'_'.$key})) {
+ $seconds += $env{'form.'.$name.'_'.$key} * $factor;
+ }
}
return $seconds;
}
@@ -3225,35 +3049,35 @@ sub default_selector {
return ' ';
}
-my %strings =
+my %strings =
(
'string_yesno'
=> [[ 'yes', 'Yes' ],
- [ 'no', 'No' ]],
+ [ 'no', 'No' ]],
'string_problemstatus'
=> [[ 'yes', 'Yes' ],
- [ 'answer', 'Yes, and show correct answer if they exceed the maximum number of tries.' ],
- [ 'no', 'No, don\'t show correct/incorrect feedback.' ],
- [ 'no_feedback_ever', 'No, show no feedback at all.' ]],
+ [ 'answer', 'Yes, and show correct answer if they exceed the maximum number of tries.' ],
+ [ 'no', 'No, don\'t show correct/incorrect feedback.' ],
+ [ 'no_feedback_ever', 'No, show no feedback at all.' ]],
);
sub string_selector {
my ($thistype, $thiskey, $showval) = @_;
-
+
if (!exists($strings{$thistype})) {
- return &default_selector($thiskey,$showval);
+ return &default_selector($thiskey,$showval);
}
my $result;
foreach my $possibilities (@{ $strings{$thistype} }) {
- my ($name, $description) = @{ $possibilities };
- $result .= ' ';
+ my ($name, $description) = @{ $possibilities };
+ $result .= ' ';
}
return $result;
}
@@ -3299,7 +3123,7 @@ sub newoverview {
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
- text=>"Overview Mode"});
+ text=>"Overview Mode"});
my $start_page = &Apache::loncommon::start_page('Set Parameters');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
$r->print(<print('');
-
- $r->print('
- ');
+ $r->print(&Apache::lonhtmlcommon::row_closure(1));
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
+ $r->print('');
+
+ $r->print('');
+ $r->print('
');
+ $r->print(&Apache::lonhtmlcommon::start_pick_box());
&parmmenu($r,\%allparms,\@pscat,\%keyorder);
- $r->print('
- '.
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
+ &parmboxes($r,\%allparms,\@pscat,\%keyorder);
+ $r->print(&Apache::lonhtmlcommon::start_pick_box());
+ $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parts to View')));
+ $r->print(''.
''.&mt('Parts').' '.&mt('Section(s)').
' '.&mt('Group(s)').' ');
&partmenu($r,\%allparts,\@psprt);
@@ -3385,11 +3216,17 @@ ENDOVER
$r->print(' ');
&groupmenu($r,\@selected_groups);
$r->print('
');
- $r->print('
');
-
+ #$r->print('
');
+ $r->print(&Apache::lonhtmlcommon::row_closure(1));
+ $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('
');
@@ -3405,19 +3242,19 @@ ENDOVER
if (($env{'form.store'}) || ($env{'form.dis'})) {
- if ($env{'form.store'}) { &storedata($r,$crs,$dom); }
+ if ($env{'form.store'}) { &storedata($r,$crs,$dom); }
# Read modified data
- my $resourcedata=&readdata($crs,$dom);
+ my $resourcedata=&readdata($crs,$dom);
# List data
- &listdata($r,$resourcedata,$listdata,$sortorder);
+ &listdata($r,$resourcedata,$listdata,$sortorder);
}
$r->print(&tableend().
- ((($env{'form.store'}) || ($env{'form.dis'}))?'
':'').
- ''.&Apache::loncommon::end_page());
+ ((($env{'form.store'}) || ($env{'form.dis'}))?'
':'').
+ ''.&Apache::loncommon::end_page());
}
sub secgroup_lister {
@@ -3461,7 +3298,7 @@ sub overview {
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
- text=>"Overview Mode"});
+ text=>"Overview Mode"});
my $start_page=&Apache::loncommon::start_page('Modify Parameters');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
$r->print(<print(&tableend().''.
- ($foundkeys?' ':&mt('There are no parameters.')).'
'.
- &Apache::loncommon::end_page());
+ ($foundkeys?' ':&mt('There are no parameters.')).''.
+ &Apache::loncommon::end_page());
}
sub clean_parameters {
@@ -3497,7 +3334,7 @@ sub clean_parameters {
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=cleanparameters',
- text=>"Clean Parameters"});
+ text=>"Clean Parameters"});
my $start_page=&Apache::loncommon::start_page('Clean Parameters');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Clean');
$r->print(<print(''.
- &mt('These parameters refer to resources that do not exist.').
- ' '.
- ' '.' '.
- ' ');
+ &mt('These parameters refer to resources that do not exist.').
+ ''.
+ ' '.' '.
+ ' ');
$r->print(&Apache::loncommon::start_data_table().
- ''.
- ''.&mt('Delete').' '.
- ''.&mt('Parameter').' '.
- ' ');
+ ''.
+ ''.&mt('Delete').' '.
+ ''.&mt('Parameter').' '.
+ ' ');
foreach my $thiskey (sort(keys(%{$resourcedata}))) {
- next if (!exists($resourcedata->{$thiskey.'.type'})
- && $thiskey=~/\.type$/);
- my %data = &parse_key($thiskey);
- if (1) { #exists($data{'realm_exists'})
- #&& !$data{'realm_exists'}) {
- $r->print(&Apache::loncommon::start_data_table_row().
- ''.
- ' ' );
-
- $r->print('');
- my $display_value = $resourcedata->{$thiskey};
- if (&isdateparm($resourcedata->{$thiskey.'.type'})) {
- $display_value =
- &Apache::lonlocal::locallocaltime($display_value);
- }
- $r->print(&mt('Parameter: "[_1]" with value: "[_2]"',
- &standard_parameter_names($data{'parameter_name'}),
- $resourcedata->{$thiskey}));
- $r->print(' ');
- if ($data{'scope_type'} eq 'all') {
- $r->print(&mt('All users'));
- } elsif ($data{'scope_type'} eq 'user') {
- $r->print(&mt('User: [_1]',join(':',@{$data{'scope'}})));
- } elsif ($data{'scope_type'} eq 'section') {
- $r->print(&mt('Section: [_1]',$data{'scope'}));
- } elsif ($data{'scope_type'} eq 'group') {
- $r->print(&mt('Group: [_1]',$data{'scope'}));
- }
- $r->print(' ');
- if ($data{'realm_type'} eq 'all') {
- $r->print(&mt('All Resources'));
- } elsif ($data{'realm_type'} eq 'folder') {
- $r->print(&mt('Folder: [_1]'),$data{'realm'});
- } elsif ($data{'realm_type'} eq 'symb') {
- my ($map,$resid,$url) =
- &Apache::lonnet::decode_symb($data{'realm'});
- $r->print(&mt('Resource: [_1] with ID: [_2] in folder [_3]',
- $url,$resid,$map));
- }
- $r->print(' '.&mt('Part: [_1]',$data{'parameter_part'}));
- $r->print(' ');
-
- }
+ next if (!exists($resourcedata->{$thiskey.'.type'})
+ && $thiskey=~/\.type$/);
+ my %data = &parse_key($thiskey);
+ if (1) { #exists($data{'realm_exists'})
+ #&& !$data{'realm_exists'}) {
+ $r->print(&Apache::loncommon::start_data_table_row().
+ ''.
+ ' ' );
+
+ $r->print('');
+ my $display_value = $resourcedata->{$thiskey};
+ if (&isdateparm($resourcedata->{$thiskey.'.type'})) {
+ $display_value =
+ &Apache::lonlocal::locallocaltime($display_value);
+ }
+ my $parmitem = &standard_parameter_names($data{'parameter_name'});
+ $parmitem = &mt($parmitem);
+ $r->print(&mt('Parameter: "[_1]" with value: "[_2]"',
+ $parmitem,$resourcedata->{$thiskey}));
+ $r->print(' ');
+ if ($data{'scope_type'} eq 'all') {
+ $r->print(&mt('All users'));
+ } elsif ($data{'scope_type'} eq 'user') {
+ $r->print(&mt('User: [_1]',join(':',@{$data{'scope'}})));
+ } elsif ($data{'scope_type'} eq 'section') {
+ $r->print(&mt('Section: [_1]',$data{'scope'}));
+ } elsif ($data{'scope_type'} eq 'group') {
+ $r->print(&mt('Group: [_1]',$data{'scope'}));
+ }
+ $r->print(' ');
+ if ($data{'realm_type'} eq 'all') {
+ $r->print(&mt('All Resources'));
+ } elsif ($data{'realm_type'} eq 'folder') {
+ $r->print(&mt('Folder: [_1]'),$data{'realm'});
+ } elsif ($data{'realm_type'} eq 'symb') {
+ my ($map,$resid,$url) =
+ &Apache::lonnet::decode_symb($data{'realm'});
+ $r->print(&mt('Resource: [_1] with ID: [_2] in folder [_3]',
+ $url,$resid,$map));
+ }
+ $r->print(' '.&mt('Part: [_1]',$data{'parameter_part'}));
+ $r->print(' ');
+
+ }
}
$r->print(&Apache::loncommon::end_data_table().''.
- ' '.
- '
'.
- &Apache::loncommon::end_page());
+ ' '.
+ ''.
+ &Apache::loncommon::end_page());
}
sub date_shift_one {
@@ -3582,7 +3420,7 @@ sub date_shift_one {
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"});
+ text=>"Shifting Dates"});
my $start_page=&Apache::loncommon::start_page('Shift Dates');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
$r->print(<'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
- text=>"Shifting Dates"});
+ text=>"Shifting Dates"});
my $start_page=&Apache::loncommon::start_page('Shift Dates');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
$r->print(<'Settings for this Course',
- items => [
- { linktext => 'Course Environment',
- url => '/adm/parmset?action=crsenv',
- permission => $parm_permission,
- linktitle =>'Edit environment settings for this course.' ,
- icon => 'preferences-desktop-remote-desktop.png' ,
- #help => 'Course_Environment',
- },
- { linktext => 'Portfolio Metadata',
- url => '/adm/parmset?action=setrestrictmeta',
- permission => $parm_permission,
- linktitle => 'Restrict metadata for this course.' ,
- icon =>'contact-new.png' ,
- },
- { linktext => 'Manage Course Slots',
- url => '/adm/slotrequest?command=showslots',
- permission => $vgr,
- linktitle =>'Manage slots for this course.' ,
- icon => 'format-justify-fill.png' ,
- },
- { linktext => 'Reset Student Access Times',
- url => '/adm/helper/resettimes.helper',
- permission => $mgr,
- linktitle =>'Reset access times for folders/maps, resources or the course.' ,
- icon => 'start-here.png' ,
- },
-
- { linktext => 'Set Parameter Setting Default Actions',
- url => '/adm/parmset?action=setdefaults',
- permission => $parm_permission,
- linktitle =>'Set default actions for parameters.' ,
- icon => 'folder-new.png' ,
- }]},
- { categorytitle => 'New and Existing Parameter Settings for Resources',
- items => [
- { linktext => 'Edit Resource Parameters - Helper Mode',
- url => '/adm/helper/parameter.helper',
- permission => $parm_permission,
- linktitle =>'Set/Modify resource parameters in helper mode.' ,
- icon => 'dialog-information.png' ,
- #help => 'Parameter_Helper',
- },
- { linktext => 'Edit Resource Parameters - Overview Mode',
- url => '/adm/parmset?action=newoverview',
- permission => $parm_permission,
- linktitle =>'Set/Modify resource parameters in overview mode.' ,
- icon => 'edit-find.png' ,
- #help => 'Parameter_Overview',
- },
- { linktext => 'Edit Resource Parameters - Table Mode',
- url => '/adm/parmset?action=settable',
- permission => $parm_permission,
- linktitle =>'Set/Modify resource parameters in table mode.' ,
- icon => 'edit-copy.png' ,
- #help => 'Table_Mode',
- }]},
+ ( { categorytitle=>"Settings for this $crstype",
+ items => [
+ { linktext => "$crstype Configuration",
+ url => '/adm/courseprefs?origin=params',
+ permission => $parm_permission,
+ linktitle => "Edit $lc_crstype configuration." ,
+ icon => 'preferences-desktop-remote-desktop.png' ,
+ #help => 'Course_Environment',
+ },
+ { linktext => 'Portfolio Metadata',
+ url => '/adm/parmset?action=setrestrictmeta',
+ permission => $parm_permission,
+ linktitle => "Restrict metadata for this $lc_crstype." ,
+ icon =>'contact-new.png' ,
+ },
+ { linktext => "Manage $crstype Slots",
+ url => '/adm/slotrequest?command=showslots',
+ permission => $vgr,
+ linktitle => "Manage slots for this $lc_crstype." ,
+ icon => 'rsrv.png' ,
+ },
+ { linktext => 'Reset Student Access Times',
+ url => '/adm/helper/resettimes.helper',
+ permission => $mgr,
+ linktitle => "Reset access times for folders/maps, resources or the $lc_crstype." ,
+ icon => 'start-here.png' ,
+ },
+
+ { linktext => 'Set Parameter Setting Default Actions',
+ url => '/adm/parmset?action=setdefaults',
+ permission => $parm_permission,
+ linktitle =>'Set default actions for parameters.' ,
+ icon => 'folder-new.png' ,
+ }]},
+ { categorytitle => 'New and Existing Parameter Settings for Resources',
+ items => [
+ { linktext => 'Edit Resource Parameters - Helper Mode',
+ url => '/adm/helper/parameter.helper',
+ permission => $parm_permission,
+ linktitle =>'Set/Modify resource parameters in helper mode.' ,
+ icon => 'dialog-information.png' ,
+ #help => 'Parameter_Helper',
+ },
+ { linktext => 'Edit Resource Parameters - Overview Mode',
+ url => '/adm/parmset?action=newoverview',
+ permission => $parm_permission,
+ linktitle =>'Set/Modify resource parameters in overview mode.' ,
+ icon => 'edit-find.png' ,
+ #help => 'Parameter_Overview',
+ },
+ { linktext => 'Edit Resource Parameters - Table Mode',
+ url => '/adm/parmset?action=settable',
+ permission => $parm_permission,
+ linktitle =>'Set/Modify resource parameters in table mode.' ,
+ icon => 'edit-copy.png' ,
+ #help => 'Table_Mode',
+ }]},
{ categorytitle => 'Existing Parameter Settings for Resources',
- items => [
- { linktext => 'Modify Resource Parameters - Overview Mode',
- url => '/adm/parmset?action=setoverview',
- permission => $parm_permission,
- linktitle =>'Set/Modify existing resource parameters in overview mode.' ,
- icon => 'preferences-desktop-wallpaper.png' ,
- #help => 'Parameter_Overview',
- },
- { linktext => 'Change Log',
- url => '/adm/parmset?action=parameterchangelog',
- permission => $parm_permission,
- linktitle =>'View parameter and course blog posting/user notification change log.' ,
- icon => 'emblem-system.png' ,
- }]}
+ items => [
+ { linktext => 'Modify Resource Parameters - Overview Mode',
+ url => '/adm/parmset?action=setoverview',
+ permission => $parm_permission,
+ linktitle =>'Set/Modify existing resource parameters in overview mode.' ,
+ icon => 'preferences-desktop-wallpaper.png' ,
+ #help => 'Parameter_Overview',
+ },
+ { linktext => 'Change Log',
+ url => '/adm/parmset?action=parameterchangelog',
+ permission => $parm_permission,
+ linktitle =>"View parameter and $lc_crstype blog posting/user notification change log." ,
+ icon => 'document-properties.png',
+ }]}
);
$r->print(&Apache::lonhtmlcommon::generate_menu(@menu));
return;
@@ -3897,24 +3737,24 @@ sub output_row {
my @options= ( ['active', 'Show to student'],
['stuadd', 'Provide text area for students to type metadata'],
['choices','Provide choices for students to select from']);
-# ['onlyone','Student may select only one choice']);
+# ['onlyone','Student may select only one choice']);
if ($added_flag) {
push @options,['deleted', 'Delete Metadata Field'];
}
$output = &Apache::loncommon::start_data_table_row();
- $output .= ''.$field_text.': ';
+ $output .= ''.$field_text.': ';
$output .= &Apache::loncommon::end_data_table_row();
foreach my $opt (@options) {
- my $checked = ($options =~ m/$opt->[0]/) ? ' checked="checked" ' : '' ;
- $output .= &Apache::loncommon::continue_data_table_row();
- $output .= ''.(' ' x 5).'
- '.
- &mt($opt->[1]).' ';
- $output .= &Apache::loncommon::end_data_table_row();
- }
+ my $checked = ($options =~ m/$opt->[0]/) ? ' checked="checked" ' : '' ;
$output .= &Apache::loncommon::continue_data_table_row();
- $output .= ''.(' ' x 10).' ';
+ $output .= ''.(' ' x 5).'
+ '.
+ &mt($opt->[1]).' ';
+ $output .= &Apache::loncommon::end_data_table_row();
+ }
+ $output .= &Apache::loncommon::continue_data_table_row();
+ $output .= ''.(' ' x 10).' ';
$output .= &Apache::loncommon::end_data_table_row();
my $multiple_checked;
my $single_checked;
@@ -3925,16 +3765,16 @@ sub output_row {
$multiple_checked = ' checked="checked"';
$single_checked = '';
}
- $output .= &Apache::loncommon::continue_data_table_row();
- $output .= ''.(' ' x 10).'
-
- '.&mt('Student may select multiple choices from list').' ';
- $output .= &Apache::loncommon::end_data_table_row();
- $output .= &Apache::loncommon::continue_data_table_row();
- $output .= ''.(' ' x 10).'
-
- '.&mt('Student may select only one choice from list').' ';
- $output .= &Apache::loncommon::end_data_table_row();
+ $output .= &Apache::loncommon::continue_data_table_row();
+ $output .= ''.(' ' x 10).'
+
+ '.&mt('Student may select multiple choices from list').' ';
+ $output .= &Apache::loncommon::end_data_table_row();
+ $output .= &Apache::loncommon::continue_data_table_row();
+ $output .= ''.(' ' x 10).'
+
+ '.&mt('Student may select only one choice from list').' ';
+ $output .= &Apache::loncommon::end_data_table_row();
}
return ($output);
}
@@ -3948,7 +3788,7 @@ sub order_meta_fields {
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
$r->print(&Apache::loncommon::start_page('Order Metadata Fields'));
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',
- text=>"Add Metadata Field"});
+ text=>"Add Metadata Field"});
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"/adm/parmset?action=setrestrictmeta",
text=>"Restrict Metadata"},
@@ -3963,32 +3803,32 @@ sub order_meta_fields {
if ($newpos > $currentpos) {
# moving stuff up
for ($i=0;$i<$currentpos;$i++) {
- $neworder[$i]=$oldorder[$i];
+ $neworder[$i]=$oldorder[$i];
}
for ($i=$currentpos;$i<$newpos;$i++) {
- $neworder[$i]=$oldorder[$i+1];
+ $neworder[$i]=$oldorder[$i+1];
}
$neworder[$newpos]=$oldorder[$currentpos];
for ($i=$newpos+1;$i<=$#oldorder;$i++) {
- $neworder[$i]=$oldorder[$i];
+ $neworder[$i]=$oldorder[$i];
}
} else {
# moving stuff down
- for ($i=0;$i<$newpos;$i++) {
- $neworder[$i]=$oldorder[$i];
- }
- $neworder[$newpos]=$oldorder[$currentpos];
- for ($i=$newpos+1;$i<$currentpos+1;$i++) {
- $neworder[$i]=$oldorder[$i-1];
- }
- for ($i=$currentpos+1;$i<=$#oldorder;$i++) {
- $neworder[$i]=$oldorder[$i];
- }
+ for ($i=0;$i<$newpos;$i++) {
+ $neworder[$i]=$oldorder[$i];
+ }
+ $neworder[$newpos]=$oldorder[$currentpos];
+ for ($i=$newpos+1;$i<$currentpos+1;$i++) {
+ $neworder[$i]=$oldorder[$i-1];
+ }
+ for ($i=$currentpos+1;$i<=$#oldorder;$i++) {
+ $neworder[$i]=$oldorder[$i];
+ }
}
- my $ordered_fields = join ",", @neworder;
+ my $ordered_fields = join ",", @neworder;
my $put_result = &Apache::lonnet::put('environment',
- {'metadata.addedorder'=>$ordered_fields},$dom,$crs);
- &Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.metadata.addedorder' => $ordered_fields});
+ {'metadata.addedorder'=>$ordered_fields},$dom,$crs);
+ &Apache::lonnet::appenv({'course.'.$env{'request.course.id'}.'.metadata.addedorder' => $ordered_fields});
}
my $fields = &get_added_meta_fieldnames($env{'request.course.id'});
my $ordered_fields;
@@ -4000,8 +3840,8 @@ sub order_meta_fields {
$ordered_fields = join ",", @fields_in_order;
}
my $put_result = &Apache::lonnet::put('environment',
- {'metadata.addedorder'=>$ordered_fields},$dom,$crs);
- }
+ {'metadata.addedorder'=>$ordered_fields},$dom,$crs);
+ }
$r->print('');
my $num_fields = scalar(@fields_in_order);
foreach my $key (@fields_in_order) {
@@ -4039,7 +3879,7 @@ sub continue {
sub addmetafield {
my ($r)=@_;
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',
- text=>"Add Metadata Field"});
+ text=>"Add Metadata Field"});
$r->print(&Apache::loncommon::start_page('Add Metadata Field'));
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field'));
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
@@ -4052,7 +3892,7 @@ sub addmetafield {
$options =~ s/,,/,/;
my $put_result = &Apache::lonnet::put('environment',
{'metadata.'.$meta_field.'.options'=>$options},$dom,$crs);
-
+
$r->print('Undeleted Metadata Field '.$env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.added'}." with result ".$put_result.' ');
}
$r->print(&continue());
@@ -4094,7 +3934,7 @@ sub setrestrictmeta {
my $item_num;
my $put_result;
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setrestrictmeta',
- text=>"Restrict Metadata"});
+ text=>"Restrict Metadata"});
$r->print(&Apache::loncommon::start_page('Restrict Metadata'));
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata'));
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
@@ -4109,21 +3949,21 @@ sub setrestrictmeta {
my $meta_key = $2;
if ($save_field ne $meta_field) {
$save_field = $meta_field;
- if ($env{'form.'.$meta_field.'_stuadd'}) {
- $options.='stuadd,';
- }
- if ($env{'form.'.$meta_field.'_choices'}) {
- $options.='choices,';
- }
- if ($env{'form.'.$meta_field.'_onlyone'} eq 'single') {
- $options.='onlyone,';
- }
- if ($env{'form.'.$meta_field.'_active'}) {
- $options.='active,';
- }
- if ($env{'form.'.$meta_field.'_deleted'}) {
- $options.='deleted,';
- }
+ if ($env{'form.'.$meta_field.'_stuadd'}) {
+ $options.='stuadd,';
+ }
+ if ($env{'form.'.$meta_field.'_choices'}) {
+ $options.='choices,';
+ }
+ if ($env{'form.'.$meta_field.'_onlyone'} eq 'single') {
+ $options.='onlyone,';
+ }
+ if ($env{'form.'.$meta_field.'_active'}) {
+ $options.='active,';
+ }
+ if ($env{'form.'.$meta_field.'_deleted'}) {
+ $options.='deleted,';
+ }
my $name = $save_field;
$put_result = &Apache::lonnet::put('environment',
{'metadata.'.$meta_field.'.options'=>$options,
@@ -4134,7 +3974,7 @@ sub setrestrictmeta {
}
}
&Apache::lonnet::coursedescription($env{'request.course.id'},
- {'freshen_cache' => 1});
+ {'freshen_cache' => 1});
# Get the default metadata fields
my %metadata_fields = &Apache::lonmeta::fieldnames('portfolio');
# Now get possible added metadata fields
@@ -4144,8 +3984,8 @@ sub setrestrictmeta {
foreach my $field (sort(keys(%metadata_fields))) {
if ($field ne 'courserestricted') {
$row_alt = $row_alt ? 0 : 1;
- $output.= &output_row($r, $field, $metadata_fields{$field});
- }
+ $output.= &output_row($r, $field, $metadata_fields{$field});
+ }
}
my $buttons = (<
@@ -4163,7 +4003,7 @@ ENDButtons
$output.= &output_row($r, $field, $$added_metadata_fields{$field},$added_flag, $row_alt);
}
$output .= &Apache::loncommon::end_data_table();
- $r->print(<print(<
$output
$buttons
@@ -4208,9 +4048,9 @@ sub defaultsetter {
my ($r) = @_;
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setdefaults',
- text=>"Set Defaults"});
- my $start_page =
- &Apache::loncommon::start_page('Parameter Setting Default Actions');
+ text=>"Set Defaults"});
+ my $start_page =
+ &Apache::loncommon::start_page('Parameter Setting Default Actions');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults');
$r->print(< 'Days',
- 'hours' => 'Hours',
- 'min' => 'Minutes',
- 'sec' => 'Seconds',
- 'yes' => 'Yes',
- 'no' => 'No');
+ 'hours' => 'Hours',
+ 'min' => 'Minutes',
+ 'sec' => 'Seconds',
+ 'yes' => 'Yes',
+ 'no' => 'No');
my @standardoptions=('','default');
my @standarddisplay=('',&mt('Default value when manually setting'));
my @dateoptions=('','default');
my @datedisplay=('',&mt('Default value when manually setting'));
foreach my $tempkey (&keysindisplayorder(\%allparms,\%keyorder)) {
- unless ($tempkey) { next; }
- push @standardoptions,'when_setting_'.$tempkey;
- push @standarddisplay,&mt('Automatically set when setting ').$tempkey;
- if (&isdateparm($defkeytype{$tempkey})) {
- push @dateoptions,'later_than_'.$tempkey;
- push @datedisplay,&mt('Automatically set later than ').$tempkey;
- push @dateoptions,'earlier_than_'.$tempkey;
- push @datedisplay,&mt('Automatically set earlier than ').$tempkey;
- }
+ unless ($tempkey) { next; }
+ push @standardoptions,'when_setting_'.$tempkey;
+ push @standarddisplay,&mt('Automatically set when setting ').$tempkey;
+ if (&isdateparm($defkeytype{$tempkey})) {
+ push @dateoptions,'later_than_'.$tempkey;
+ push @datedisplay,&mt('Automatically set later than ').$tempkey;
+ push @dateoptions,'earlier_than_'.$tempkey;
+ push @datedisplay,&mt('Automatically set earlier than ').$tempkey;
+ }
}
$r->print(&mt('Manual setting rules apply to all interfaces.').' '.
- &mt('Automatic setting rules apply to table mode interfaces only.'));
+ &mt('Automatic setting rules apply to table mode interfaces only.'));
$r->print("\n".&Apache::loncommon::start_data_table().
- &Apache::loncommon::start_data_table_header_row().
- "".&mt('Rule for parameter').' '.
- &mt('Action').' '.&mt('Value').' '.
- &Apache::loncommon::end_data_table_header_row());
+ &Apache::loncommon::start_data_table_header_row().
+ "".&mt('Rule for parameter').' '.
+ &mt('Action').' '.&mt('Value').' '.
+ &Apache::loncommon::end_data_table_header_row());
foreach my $tempkey (&keysindisplayorder(\%allparms,\%keyorder)) {
- unless ($tempkey) { next; }
- $r->print("\n".&Apache::loncommon::start_data_table_row().
- "".$allparms{$tempkey}."\n (".$tempkey.') ');
- my $action=&rulescache($tempkey.'_action');
- $r->print('');
- if (&isdateparm($defkeytype{$tempkey})) {
- for (my $i=0;$i<=$#dateoptions;$i++) {
- if ($dateoptions[$i]=~/\_$tempkey$/) { next; }
- $r->print("\n$datedisplay[$i] ");
- }
- } else {
- for (my $i=0;$i<=$#standardoptions;$i++) {
- if ($standardoptions[$i]=~/\_$tempkey$/) { next; }
- $r->print("\n$standarddisplay[$i] ");
- }
- }
- $r->print(' ');
- unless (&isdateparm($defkeytype{$tempkey})) {
- $r->print("\n ".&mt('Triggering value(s) of other parameter (optional, comma-separated):').
- ' ');
- }
- $r->print("\n \n");
+ unless ($tempkey) { next; }
+ $r->print("\n".&Apache::loncommon::start_data_table_row().
+ " ".$allparms{$tempkey}."\n (".$tempkey.') ');
+ my $action=&rulescache($tempkey.'_action');
+ $r->print('');
+ if (&isdateparm($defkeytype{$tempkey})) {
+ for (my $i=0;$i<=$#dateoptions;$i++) {
+ if ($dateoptions[$i]=~/\_$tempkey$/) { next; }
+ $r->print("\n$datedisplay[$i] ");
+ }
+ } else {
+ for (my $i=0;$i<=$#standardoptions;$i++) {
+ if ($standardoptions[$i]=~/\_$tempkey$/) { next; }
+ $r->print("\n$standarddisplay[$i] ");
+ }
+ }
+ $r->print(' ');
+ unless (&isdateparm($defkeytype{$tempkey})) {
+ $r->print("\n ".&mt('Triggering value(s) of other parameter (optional, comma-separated):').
+ ' ');
+ }
+ $r->print("\n \n");
if (&isdateparm($defkeytype{$tempkey})) {
- my $days=&rulescache($tempkey.'_days');
- my $hours=&rulescache($tempkey.'_hours');
- my $min=&rulescache($tempkey.'_min');
- my $sec=&rulescache($tempkey.'_sec');
- $r->print(<print(< $lt{'days'}
$lt{'hours'}
$lt{'min'}
$lt{'sec'}
ENDINPUTDATE
- } elsif ($defkeytype{$tempkey} eq 'string_yesno') {
+ } 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'}
- $lt{'no'}
+ $r->print(< $lt{'yes'}
+ $lt{'no'}
ENDYESNO
} else {
- $r->print(' ');
- }
+ $r->print(' ');
+ }
$r->print(' '.&Apache::loncommon::end_data_table_row());
}
$r->print(&Apache::loncommon::end_data_table().
- "\n".' '."\n".
- &Apache::loncommon::end_page());
+ "\n".' '."\n".
+ &Apache::loncommon::end_page());
return;
}
@@ -4370,90 +4210,100 @@ sub components {
my ($key,$uname,$udom,$exeuser,$exedomain,$typeflag)=@_;
if ($typeflag) {
- $key=~s/\.type$//;
+ $key=~s/\.type$//;
}
my ($middle,$part,$name)=
- ($key=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
+ ($key=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
my $issection;
my $section=&mt('All Students');
if ($middle=~/^\[(.*)\]/) {
- $issection=$1;
- $section=&mt('Group/Section').': '.$issection;
- $middle=~s/^\[(.*)\]//;
+ $issection=$1;
+ $section=&mt('Group/Section').': '.$issection;
+ $middle=~s/^\[(.*)\]//;
}
$middle=~s/\.+$//;
$middle=~s/^\.+//;
if ($uname) {
- $section=&mt('User').": ".&Apache::loncommon::plainname($uname,$udom);
- $issection='';
+ $section=&mt('User').": ".&Apache::loncommon::plainname($uname,$udom);
+ $issection='';
}
my $realm=''.&mt('All Resources').' ';
- my $realmdescription=&mt('all resources');
+ my $realmdescription=&mt('all resources');
if ($middle=~/^(.+)\_\_\_\(all\)$/) {
- $realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' ('.$1.') ';
- $realmdescription=&mt('folder').' '.&Apache::lonnet::gettitle($1);
+ $realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' ('.$1.') ';
+ $realmdescription=&mt('folder').' '.&Apache::lonnet::gettitle($1);
} elsif ($middle) {
- my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);
- $realm=''.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' ('.$url.' in '.$map.' id: '.$id.') ';
- $realmdescription=&mt('resource').' '.&Apache::lonnet::gettitle($middle);
+ my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);
+ $realm=''.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' ('.$url.' in '.$map.' id: '.$id.') ';
+ $realmdescription=&mt('resource').' '.&Apache::lonnet::gettitle($middle);
}
my $what=$part.'.'.$name;
return ($realm,$section,$name,$part,
- $what,$middle,$uname,$udom,$issection,$realmdescription);
+ $what,$middle,$uname,$udom,$issection,$realmdescription);
}
my %standard_parms;
-
+my %standard_parms_types;
sub load_parameter_names {
open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");
while (my $configline=<$config>) {
- if ($configline !~ /\S/ || $configline=~/^\#/) { next; }
- chomp($configline);
- my ($short,$plain)=split(/:/,$configline);
- my (undef,$name,$type)=split(/\&/,$short,3);
- if ($type eq 'display') {
- $standard_parms{$name} = $plain;
- }
+ if ($configline !~ /\S/ || $configline=~/^\#/) { next; }
+ chomp($configline);
+ my ($short,$plain)=split(/:/,$configline);
+ my (undef,$name,$type)=split(/\&/,$short,3);
+ if ($type eq 'display') {
+ $standard_parms{$name} = $plain;
+ } elsif ($type eq 'type') {
+ $standard_parms_types{$name} = $plain;
+ }
}
close($config);
$standard_parms{'int_pos'} = 'Positive Integer';
$standard_parms{'int_zero_pos'} = 'Positive Integer or Zero';
- %standard_parms=&Apache::lonlocal::texthash(%standard_parms);
}
sub standard_parameter_names {
my ($name)=@_;
if (!%standard_parms) {
- &load_parameter_names();
+ &load_parameter_names();
}
if ($standard_parms{$name}) {
- return $standard_parms{$name};
- } else {
- return $name;
+ return $standard_parms{$name};
+ } else {
+ return $name;
}
}
-
+sub standard_parameter_types {
+ my ($name)=@_;
+ if (!%standard_parms_types) {
+ &load_parameter_names();
+ }
+ if ($standard_parms_types{$name}) {
+ return $standard_parms_types{$name};
+ }
+ return;
+}
sub parm_change_log {
my ($r)=@_;
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',
- text=>"Parameter Change Log"});
+ text=>"Parameter Change Log"});
$r->print(&Apache::loncommon::start_page('Parameter Change Log'));
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Change Log'));
my %parmlog=&Apache::lonnet::dump('nohist_parameterlog',
- $env{'course.'.$env{'request.course.id'}.'.domain'},
- $env{'course.'.$env{'request.course.id'}.'.num'});
+ $env{'course.'.$env{'request.course.id'}.'.domain'},
+ $env{'course.'.$env{'request.course.id'}.'.num'});
if ((keys(%parmlog))[0]=~/^error\:/) { undef(%parmlog); }
$r->print('');
+ ' '.&mt('Include parameter types').''.
+ ' ');
my $courseopt=&Apache::lonnet::get_courseresdata($env{'course.'.$env{'request.course.id'}.'.num'},
- $env{'course.'.$env{'request.course.id'}.'.domain'});
+ $env{'course.'.$env{'request.course.id'}.'.domain'});
$r->print(&Apache::loncommon::start_data_table().&Apache::loncommon::start_data_table_header_row().
- ''.&mt('Time').' '.&mt('User').' '.&mt('Extent').' '.&mt('Users').' '.
- &mt('Parameter').' '.&mt('Part').' '.&mt('New Value').' '.&mt('Announce').' '.
- &Apache::loncommon::end_data_table_header_row());
+ ''.&mt('Time').' '.&mt('User').' '.&mt('Extent').' '.&mt('Users').' '.
+ &mt('Parameter').' '.&mt('Part').' '.&mt('New Value').' '.&mt('Announce').' '.
+ &Apache::loncommon::end_data_table_header_row());
my $shown=0;
my $folder='';
if ($env{'form.displayfilter'} eq 'currentfolder') {
- my $last='';
- if (tie(my %hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db',
- &GDBM_READER(),0640)) {
- $last=$hash{'last_known'};
- untie(%hash);
- }
- if ($last) { ($folder) = &Apache::lonnet::decode_symb($last); }
- }
- foreach my $id (sort
- {
- if ($parmlog{$b}{'exe_time'} ne $parmlog{$a}{'exe_time'}) {
- return $parmlog{$b}{'exe_time'} <=>$parmlog{$a}{'exe_time'}
- }
- my $aid = (split('00000',$a))[-1];
- my $bid = (split('00000',$b))[-1];
- return $bid<=>$aid;
- } (keys(%parmlog))) {
+ my $last='';
+ if (tie(my %hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db',
+ &GDBM_READER(),0640)) {
+ $last=$hash{'last_known'};
+ untie(%hash);
+ }
+ if ($last) { ($folder) = &Apache::lonnet::decode_symb($last); }
+ }
+ foreach my $id (sort
+ {
+ if ($parmlog{$b}{'exe_time'} ne $parmlog{$a}{'exe_time'}) {
+ return $parmlog{$b}{'exe_time'} <=>$parmlog{$a}{'exe_time'}
+ }
+ my $aid = (split('00000',$a))[-1];
+ my $bid = (split('00000',$b))[-1];
+ return $bid<=>$aid;
+ } (keys(%parmlog))) {
my @changes=keys(%{$parmlog{$id}{'logentry'}});
- my $count = 0;
- my $time =
- &Apache::lonlocal::locallocaltime($parmlog{$id}{'exe_time'});
- my $plainname =
- &Apache::loncommon::plainname($parmlog{$id}{'exe_uname'},
- $parmlog{$id}{'exe_udom'});
- my $about_me_link =
- &Apache::loncommon::aboutmewrapper($plainname,
- $parmlog{$id}{'exe_uname'},
- $parmlog{$id}{'exe_udom'});
- my $send_msg_link='';
- if ((($parmlog{$id}{'exe_uname'} ne $env{'user.name'})
- || ($parmlog{$id}{'exe_udom'} ne $env{'user.domain'}))) {
- $send_msg_link =' '.
- &Apache::loncommon::messagewrapper(&mt('Send message'),
- $parmlog{$id}{'exe_uname'},
- $parmlog{$id}{'exe_udom'});
- }
- my $row_start=&Apache::loncommon::start_data_table_row();
- my $makenewrow=0;
- my %istype=();
- my $output;
- foreach my $changed (reverse(sort(@changes))) {
+ my $count = 0;
+ my $time =
+ &Apache::lonlocal::locallocaltime($parmlog{$id}{'exe_time'});
+ my $plainname =
+ &Apache::loncommon::plainname($parmlog{$id}{'exe_uname'},
+ $parmlog{$id}{'exe_udom'});
+ my $about_me_link =
+ &Apache::loncommon::aboutmewrapper($plainname,
+ $parmlog{$id}{'exe_uname'},
+ $parmlog{$id}{'exe_udom'});
+ my $send_msg_link='';
+ if ((($parmlog{$id}{'exe_uname'} ne $env{'user.name'})
+ || ($parmlog{$id}{'exe_udom'} ne $env{'user.domain'}))) {
+ $send_msg_link =' '.
+ &Apache::loncommon::messagewrapper(&mt('Send message'),
+ $parmlog{$id}{'exe_uname'},
+ $parmlog{$id}{'exe_udom'});
+ }
+ my $row_start=&Apache::loncommon::start_data_table_row();
+ my $makenewrow=0;
+ my %istype=();
+ my $output;
+ foreach my $changed (reverse(sort(@changes))) {
my $value=$parmlog{$id}{'logentry'}{$changed};
- my $typeflag = ($changed =~/\.type$/ &&
- !exists($parmlog{$id}{'logentry'}{$changed.'.type'}));
+ my $typeflag = ($changed =~/\.type$/ &&
+ !exists($parmlog{$id}{'logentry'}{$changed.'.type'}));
my ($realm,$section,$parmname,$part,$what,$middle,$uname,$udom,$issection,$realmdescription)=
- &components($changed,$parmlog{$id}{'uname'},$parmlog{$id}{'udom'},undef,undef,$typeflag);
- if ($env{'form.displayfilter'} eq 'currentfolder') {
- if ($folder) {
- if ($middle!~/^\Q$folder\E/) { next; }
- }
- }
- if ($typeflag) {
- $istype{$parmname}=$value;
- if (!$env{'form.includetypes'}) { next; }
- }
- $count++;
- if ($makenewrow) {
- $output .= $row_start;
- } else {
- $makenewrow=1;
- }
- $output .=''.$realm.' '.$section.' '.
- &standard_parameter_names($parmname).' '.
- ($part?&mt('Part: [_1]',$part):&mt('All Parts')).' ';
- my $stillactive=0;
- if ($parmlog{$id}{'delflag'}) {
- $output .= &mt('Deleted');
- } else {
- if ($typeflag) {
- $output .= &mt('Type: [_1]',&standard_parameter_names($value));
- } else {
- my ($level,@all)=&parmval_by_symb($what,$middle,&Apache::lonnet::metadata($middle,$what),
- $uname,$udom,$issection,$issection,$courseopt);
- if (&isdateparm($istype{$parmname})) {
- $output .= &Apache::lonlocal::locallocaltime($value);
- } else {
- $output .= $value;
- }
- if ($value ne $all[$level]) {
- $output .= ''.&mt('Not active anymore').' ';
- } else {
- $stillactive=1;
- }
- }
- }
- $output .= ' ';
- if ($stillactive) {
- my $title=&mt('Changed [_1]',&standard_parameter_names($parmname));
- my $description=&mt('Changed [_1] for [_2] to [_3]',&standard_parameter_names($parmname),$realmdescription,
- (&isdateparm($istype{$parmname})?&Apache::lonlocal::locallocaltime($value):$value));
- if (($uname) && ($udom)) {
- $output .=
- &Apache::loncommon::messagewrapper('Notify User',
- $uname,$udom,$title,
- $description);
- } else {
- $output .=
- &Apache::lonrss::course_blog_link($id,$title,
- $description);
- }
- }
- $output .= ' '.&Apache::loncommon::end_data_table_row();
- }
+ &components($changed,$parmlog{$id}{'uname'},$parmlog{$id}{'udom'},undef,undef,$typeflag);
+ if ($env{'form.displayfilter'} eq 'currentfolder') {
+ if ($folder) {
+ if ($middle!~/^\Q$folder\E/) { next; }
+ }
+ }
+ if ($typeflag) {
+ $istype{$parmname}=$value;
+ if (!$env{'form.includetypes'}) { next; }
+ }
+ $count++;
+ if ($makenewrow) {
+ $output .= $row_start;
+ } else {
+ $makenewrow=1;
+ }
+ my $parmitem = &standard_parameter_names($parmname);
+ $output .=''.$realm.' '.$section.' '.
+ &mt($parmitem).' '.
+ ($part?&mt('Part: [_1]',$part):&mt('All Parts')).' ';
+ my $stillactive=0;
+ if ($parmlog{$id}{'delflag'}) {
+ $output .= &mt('Deleted');
+ } else {
+ if ($typeflag) {
+ my $parmitem = &standard_parameter_names($value);
+ $parmitem = &mt($parmitem);
+ $output .= &mt('Type: [_1]',$parmitem);
+ } else {
+ my ($level,@all)=&parmval_by_symb($what,$middle,&Apache::lonnet::metadata($middle,$what),
+ $uname,$udom,$issection,$issection,$courseopt);
+ my $showvalue = $value;
+ if ($istype{$parmname} eq '') {
+ my $type = &standard_parameter_types($parmname);
+ if ($type ne '') {
+ if (&isdateparm($type)) {
+ $showvalue =
+ &Apache::lonlocal::locallocaltime($value);
+ }
+ }
+ } else {
+ if (&isdateparm($istype{$parmname})) {
+ $showvalue =
+ &Apache::lonlocal::locallocaltime($value);
+ }
+ }
+ $output .= $showvalue;
+ if ($value ne $all[$level]) {
+ $output .= ''.&mt('Not active anymore').' ';
+ } else {
+ $stillactive=1;
+ }
+ }
+ }
+ $output .= ' ';
+
+ if ($stillactive) {
+ my $parmitem = &standard_parameter_names($parmname);
+ $parmitem = &mt($parmitem);
+ my $title=&mt('Changed [_1]',$parmitem);
+ my $description=&mt('Changed [_1] for [_2] to [_3]',
+ $parmitem,$realmdescription,
+ (&isdateparm($istype{$parmname})?&Apache::lonlocal::locallocaltime($value):$value));
+ if (($uname) && ($udom)) {
+ $output .=
+ &Apache::loncommon::messagewrapper('Notify User',
+ $uname,$udom,$title,
+ $description);
+ } else {
+ $output .=
+ &Apache::lonrss::course_blog_link($id,$title,
+ $description);
+ }
+ }
+ $output .= ' '.&Apache::loncommon::end_data_table_row();
+ }
if ($env{'form.displayfilter'} eq 'containing') {
- my $wholeentry=$about_me_link.':'.
- $parmlog{$id}{'exe_uname'}.':'.$parmlog{$id}{'exe_udom'}.':'.
- $output;
- if ($wholeentry!~/\Q$env{'form.containingphrase'}\E/i) { next; }
- }
+ my $wholeentry=$about_me_link.':'.
+ $parmlog{$id}{'exe_uname'}.':'.$parmlog{$id}{'exe_udom'}.':'.
+ $output;
+ if ($wholeentry!~/\Q$env{'form.containingphrase'}\E/i) { next; }
+ }
if ($count) {
- $r->print($row_start.''.$time.'
+ $r->print($row_start.''.$time.'
'.$about_me_link.
- ''.$parmlog{$id}{'exe_uname'}.
- ':'.$parmlog{$id}{'exe_udom'}.' '.
- $send_msg_link.' '.$output);
- $shown++;
- }
- if (!($env{'form.show'} eq &mt('all')
- || $shown<=$env{'form.show'})) { last; }
+ ''.$parmlog{$id}{'exe_uname'}.
+ ':'.$parmlog{$id}{'exe_udom'}.' '.
+ $send_msg_link.''.$output);
+ $shown++;
+ }
+ if (!($env{'form.show'} eq &mt('all')
+ || $shown<=$env{'form.show'})) { last; }
}
$r->print(&Apache::loncommon::end_data_table());
$r->print(&Apache::loncommon::end_page());
}
+sub update_slots {
+ my ($slot_name,$cdom,$cnum,$symb,$uname,$udom) = @_;
+ my %slot=&Apache::lonnet::get_slot($slot_name);
+ if (!keys(%slot)) {
+ return 'error: slot does not exist';
+ }
+ my $max=$slot{'maxspace'};
+ if (!defined($max)) { $max=99999; }
+
+ my %consumed=&Apache::lonnet::dump('slot_reservations',$cdom,$cnum,
+ "^$slot_name\0");
+ my ($tmp)=%consumed;
+ if ($tmp=~/^error: 2 / ) {
+ return 'error: unable to determine current slot status';
+ }
+ my $last=0;
+ foreach my $key (keys(%consumed)) {
+ my $num=(split('\0',$key))[1];
+ if ($num > $last) { $last=$num; }
+ if ($consumed{$key}->{'name'} eq $uname.':'.$udom) {
+ return 'ok';
+ }
+ }
+
+ if (scalar(keys(%consumed)) >= $max) {
+ return 'error: no space left in slot';
+ }
+ my $wanted=$last+1;
+
+ my %reservation=('name' => $uname.':'.$udom,
+ 'timestamp' => time,
+ 'symb' => $symb);
+
+ my $success=&Apache::lonnet::newput('slot_reservations',
+ {"$slot_name\0$wanted" =>
+ \%reservation},
+ $cdom, $cnum);
+ if ($success eq 'ok') {
+ my %storehash = (
+ symb => $symb,
+ slot => $slot_name,
+ action => 'reserve',
+ context => 'parameter',
+ );
+ &Apache::lonnet::instructor_log('slotreservationslog',\%storehash,
+ '',$uname,$udom,$cnum,$cdom);
+
+ &Apache::lonnet::instructor_log($cdom.'_'.$cnum.'_slotlog',\%storehash,
+ '',$uname,$udom,$uname,$udom);
+ }
+ return $success;
+}
+
+sub delete_slots {
+ my ($slot_name,$cdom,$cnum,$uname,$udom,$symb) = @_;
+ my $delresult;
+ my %consumed = &Apache::lonnet::dump('slot_reservations',$cdom,
+ $cnum, "^$slot_name\0");
+ if (&Apache::lonnet::error(%consumed)) {
+ return 'error: unable to determine current slot status';
+ }
+ my ($tmp)=%consumed;
+ if ($tmp=~/^error: 2 /) {
+ return 'error: unable to determine current slot status';
+ }
+ foreach my $key (keys(%consumed)) {
+ if ($consumed{$key}->{'name'} eq $uname.':'.$udom) {
+ my $num=(split('\0',$key))[1];
+ my $entry = $slot_name.'\0'.$num;
+ $delresult = &Apache::lonnet::del('slot_reservations',[$entry],
+ $cdom,$cnum);
+ if ($delresult eq 'ok') {
+ my %storehash = (
+ symb => $symb,
+ slot => $slot_name,
+ action => 'release',
+ context => 'parameter',
+ );
+ &Apache::lonnet::instructor_log('slotreservationslog',\%storehash,
+ 1,$uname,$udom,$cnum,$cdom);
+ &Apache::lonnet::instructor_log($cdom.'_'.$cnum.'_slotlog',\%storehash,
+ 1,$uname,$udom,$uname,$udom);
+ }
+ }
+ }
+ return $delresult;
+}
+
sub check_for_course_info {
my $navmap = Apache::lonnavmaps::navmap->new();
return 1 if ($navmap);
@@ -4614,7 +4570,7 @@ sub handler {
return OK if $r->header_only;
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['action','state',
+ ['action','state',
'pres_marker',
'pres_value',
'pres_type',
@@ -4623,16 +4579,17 @@ sub handler {
&Apache::lonhtmlcommon::clear_breadcrumbs();
&Apache::lonhtmlcommon::add_breadcrumb({href=>"/adm/parmset",
- text=>"Parameter Manager",
- faq=>10,
- bug=>'Instructor Interface',
- help => 'Parameter_Manager'});
+ text=>"Parameter Manager",
+ faq=>10,
+ bug=>'Instructor Interface',
+ help =>
+ 'Parameter_Manager,Course_Environment,Parameter_Helper,Parameter_Overview,Table_Mode'});
# ----------------------------------------------------- Needs to be in a course
my $parm_permission =
- (&Apache::lonnet::allowed('opa',$env{'request.course.id'}) ||
- &Apache::lonnet::allowed('opa',$env{'request.course.id'}.'/'.
- $env{'request.course.sec'}));
+ (&Apache::lonnet::allowed('opa',$env{'request.course.id'}) ||
+ &Apache::lonnet::allowed('opa',$env{'request.course.id'}.'/'.
+ $env{'request.course.sec'}));
my $exists = &check_for_course_info();
if ($env{'request.course.id'} && $parm_permission && $exists) {
@@ -4642,47 +4599,43 @@ sub handler {
# Check first if coming from someone else headed directly for
# the table mode
if ((($env{'form.command'} eq 'set') && ($env{'form.url'})
- && (!$env{'form.dis'})) || ($env{'form.symb'})) {
- &assessparms($r);
+ && (!$env{'form.dis'})) || ($env{'form.symb'})) {
+ &assessparms($r);
} elsif (! exists($env{'form.action'})) {
&print_main_menu($r,$parm_permission);
- } elsif ($env{'form.action'} eq 'crsenv') {
- &crsenv($r);
} elsif ($env{'form.action'} eq 'setoverview') {
- &overview($r);
- } elsif ($env{'form.action'} eq 'addmetadata') {
- &addmetafield($r);
- } elsif ($env{'form.action'} eq 'ordermetadata') {
- &order_meta_fields($r);
+ &overview($r);
+ } elsif ($env{'form.action'} eq 'addmetadata') {
+ &addmetafield($r);
+ } elsif ($env{'form.action'} eq 'ordermetadata') {
+ &order_meta_fields($r);
} elsif ($env{'form.action'} eq 'setrestrictmeta') {
- &setrestrictmeta($r);
+ &setrestrictmeta($r);
} elsif ($env{'form.action'} eq 'newoverview') {
- &newoverview($r);
+ &newoverview($r);
} elsif ($env{'form.action'} eq 'setdefaults') {
- &defaultsetter($r);
- } elsif ($env{'form.action'} eq 'settable') {
- &assessparms($r);
+ &defaultsetter($r);
+ } elsif ($env{'form.action'} eq 'settable') {
+ &assessparms($r);
} elsif ($env{'form.action'} eq 'parameterchangelog') {
- &parm_change_log($r);
+ &parm_change_log($r);
} elsif ($env{'form.action'} eq 'cleanparameters') {
- &clean_parameters($r);
+ &clean_parameters($r);
} elsif ($env{'form.action'} eq 'dateshift1') {
&date_shift_one($r);
} elsif ($env{'form.action'} eq 'dateshift2') {
&date_shift_two($r);
- } elsif ($env{'form.action'} eq 'categorizecourse') {
- &assign_course_categories($r);
- }
+ }
} else {
# ----------------------------- Not in a course, or not allowed to modify parms
- if ($exists) {
- $env{'user.error.msg'}=
- "/adm/parmset:opa:0:0:Cannot modify assessment parameters";
- } else {
- $env{'user.error.msg'}=
- "/adm/parmset::0:1:Course environment gone, reinitialize the course";
- }
- return HTTP_NOT_ACCEPTABLE;
+ if ($exists) {
+ $env{'user.error.msg'}=
+ "/adm/parmset:opa:0:0:Cannot modify assessment parameters";
+ } else {
+ $env{'user.error.msg'}=
+ "/adm/parmset::0:1:Course environment gone, reinitialize the course";
+ }
+ return HTTP_NOT_ACCEPTABLE;
}
&reset_caches();