');
if ($parmlev eq 'full') {
#
@@ -2955,7 +2639,7 @@ ENDPARMSELSCRIPT
$userspan ++;
}
$r->print('
');
- $r->print(&mt("User")." $uname ".&mt('at Domain')." $udom ");
+ $r->print(&mt('User [_1] at Domain [_2]',"'".$uname."'","'".$udom."'").'');
}
my %lt=&Apache::lonlocal::texthash(
'pie' => "Parameter in Effect",
@@ -3018,9 +2702,8 @@ ENDTABLEHEADFOUR
my $defbgtwo='';
my $defbgthree = '';
- foreach (@ids) {
+ foreach my $rid (@ids) {
- my $rid=$_;
my ($inmapid)=($rid=~/\.(\d+)$/);
if ((!$pssymb &&
@@ -3054,35 +2737,34 @@ ENDTABLEHEADFOUR
my $uri=&Apache::lonnet::declutter($uris{$rid});
my $filter=$env{'form.filter'};
- foreach (&keysplit($keyp{$rid})) {
- my $tempkeyp = $_;
+ foreach my $tempkeyp (&keysplit($keyp{$rid})) {
if (grep $_ eq $tempkeyp, @catmarker) {
- my $parmname=&Apache::lonnet::metadata($uri,$_.'.name');
+ my $parmname=&Apache::lonnet::metadata($uri,$tempkeyp.'.name');
# We may only want certain parameters listed
if ($filter) {
unless ($filter=~/\Q$parmname\E/) { next; }
}
- $name{$_}=$parmname;
- $part{$_}=&Apache::lonnet::metadata($uri,$_.'.part');
+ $name{$tempkeyp}=$parmname;
+ $part{$tempkeyp}=&Apache::lonnet::metadata($uri,$tempkeyp.'.part');
- my $parmdis=&Apache::lonnet::metadata($uri,$_.'.display');
- if ($allparms{$name{$_}} ne '') {
+ my $parmdis=&Apache::lonnet::metadata($uri,$tempkeyp.'.display');
+ if ($allparms{$name{$tempkeyp}} ne '') {
my $identifier;
if ($parmdis =~ /(\s*\[Part.*)$/) {
$identifier = $1;
}
- $display{$_} = $allparms{$name{$_}}.$identifier;
+ $display{$tempkeyp} = $allparms{$name{$tempkeyp}}.$identifier;
} else {
- $display{$_} = $parmdis;
+ $display{$tempkeyp} = $parmdis;
}
- unless ($display{$_}) { $display{$_}=''; }
- $display{$_}.=' ('.$name{$_}.')';
- $default{$_}=&Apache::lonnet::metadata($uri,$_);
- $type{$_}=&Apache::lonnet::metadata($uri,$_.'.type');
- $thistitle=&Apache::lonnet::metadata($uri,$_.'.title');
+ unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
+ $display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
+ $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$tempkeyp);
+ $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$tempkeyp.'.type');
+ $thistitle=&Apache::lonnet::metadata($uri,$tempkeyp.'.title');
}
}
- my $totalparms=scalar keys %name;
+ my $totalparms=scalar(keys(%name));
if ($totalparms>0) {
my $firstrow=1;
my $title=&Apache::lonnet::gettitle($symbp{$rid});
@@ -3108,17 +2790,16 @@ ENDTABLEHEADFOUR
$r->print('
'.$maptitles{$mapp{$rid}}.' ');
- foreach (&keysinorder_bytype(\%name,\%keyorder)) {
-
+ foreach my $item (&keysinorder_bytype(\%name,\%keyorder)) {
unless ($firstrow) {
$r->print('
');
} else {
undef $firstrow;
}
- &print_row($r,$_,\%part,\%name,\%symbp,$rid,\%default,
+ &print_row($r,$item,\%part,\%name,\%symbp,$rid,\%default,
\%type,\%display,$defbgone,$defbgtwo,
$defbgthree,$parmlev,$uname,$udom,$csec,
- $cgroup,\@usersgroups,$noeditgrp,$readonly);
+ $cgroup,\@usersgroups,$noeditgrp);
}
}
}
@@ -3142,7 +2823,7 @@ ENDTABLEHEADFOUR
#-------------------------------------------- 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
@@ -3156,9 +2837,9 @@ ENDTABLEHEADFOUR
# $r->print("Catmarker: @catmarker \n");
- foreach (@ids) {
- ($map)=(/([\d]*?)\./);
- my $rid = $_;
+ foreach my $id (@ids) {
+ ($map)=($id =~ /([\d]*?)\./);
+ my $rid = $id;
# $r->print("$mapid:$map: $rid \n");
@@ -3173,12 +2854,11 @@ 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_/;
+ foreach my $fullkeyp (&keysplit($keyp{$rid})) {
+ my $tempkeyp = $fullkeyp;
+ $tempkeyp =~ s/_\w+_/_0_/;
- if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
+ 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');
@@ -3237,12 +2917,11 @@ ENDTABLEHEADFOUR
.&Apache::loncommon::end_data_table_header_row()
);
- foreach (&keysinorder(\%name,\%keyorder)) {
+ foreach my $item (&keysinorder(\%name,\%keyorder)) {
$r->print(&Apache::loncommon::start_data_table_row());
- &print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,
+ &print_row($r,$item,\%part,\%name,\%symbp,$mapid,\%default,
\%type,\%display,$defbgone,$defbgtwo,$defbgthree,
- $parmlev,$uname,$udom,$csec,$cgroup,'',$noeditgrp,
- $readonly);
+ $parmlev,$uname,$udom,$csec,$cgroup,'',$noeditgrp);
}
$r->print(&Apache::loncommon::end_data_table().''
.''
@@ -3265,8 +2944,8 @@ ENDTABLEHEADFOUR
my %type = ();
my %default = ();
- foreach (@ids) {
- my $rid = $_;
+ foreach $id (@ids) {
+ my $rid = $id;
my $uri=&Apache::lonnet::declutter($uris{$rid});
@@ -3277,11 +2956,10 @@ 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})) {
+ foreach my $fullkeyp (&keysplit($keyp{$rid})) {
+ my $tempkeyp = $fullkeyp;
+ $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');
@@ -3329,21 +3007,20 @@ ENDMAPONE
.&Apache::loncommon::end_data_table_header_row()
);
- foreach (&keysinorder(\%name,\%keyorder)) {
+ foreach my $item (&keysinorder(\%name,\%keyorder)) {
$r->print(&Apache::loncommon::start_data_table_row());
- &print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,
- \%type,\%display,$defbgone,$defbgtwo,$defbgthree,
- $parmlev,$uname,$udom,$csec,$cgroup,'',$noeditgrp,
- $readonly);
+ &print_row($r,$item,\%part,\%name,\%symbp,$mapid,\%default,
+ \%type,\%display,$defbgone,$defbgtwo,$defbgthree,
+ $parmlev,$uname,$udom,$csec,$cgroup,'',$noeditgrp);
}
$r->print(&Apache::loncommon::end_data_table()
.''
.''
);
} # end of $parmlev eq general
- $r->print('');
}
$r->print('');
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
} # end sub assessparms
@@ -3385,19 +3062,19 @@ sub readdata {
# Read userdata
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);
- foreach my $userkey (keys %{$useropt}) {
- if ($userkey=~/^$env{'request.course.id'}/) {
+ foreach my $user (keys(%$classlist)) {
+ if ($user=~/^($match_username)\:($match_domain)$/) {
+ my ($tuname,$tudom)=($1,$2);
+ my $useropt=&Apache::lonnet::get_userresdata($tuname,$tudom);
+ foreach my $userkey (keys(%{$useropt})) {
+ if ($userkey=~/^\Q$env{'request.course.id'}\E/) {
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};
+ }
+ }
}
}
- }
if (wantarray) {
return ($resourcedata,$classlist);
} else {
@@ -3423,14 +3100,14 @@ sub storedata {
if ($key =~ /^form\.([a-z]+)\_(.+)$/) {
my $cmd=$1;
my $thiskey=$2;
- next if ($cmd eq 'setipallow' || $cmd eq 'setipdeny' || $cmd eq 'setdeeplink');
+ next if ($cmd eq 'settext' || $cmd eq 'setipallow' || $cmd eq 'setipdeny');
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, $name, $valchk, $valmatch, $namematch);
+ my ($data, $typeof, $text, $name, $valchk, $valmatch);
if ($cmd eq 'set') {
$data=$env{$key};
$valmatch = '';
@@ -3439,8 +3116,8 @@ sub storedata {
$text = &mt('Saved modified parameter for');
if ($typeof eq 'string_questiontype') {
$name = 'type';
- } elsif ($typeof eq 'string_deeplink') {
- ($name) = ($typeof =~ /^string_(deeplink)$/);
+ } elsif ($typeof eq 'string_lenient') {
+ $name = 'lenient';
my $stringmatch = &standard_string_matches($typeof);
if (ref($stringmatch) eq 'ARRAY') {
foreach my $item (@{$stringmatch}) {
@@ -3456,8 +3133,6 @@ sub storedata {
}
}
}
- } elsif ($typeof eq 'string_lenient') {
- $name = 'lenient';
} elsif ($typeof eq 'string_discussvote') {
$name = 'discussvote';
} elsif ($typeof eq 'string_examcode') {
@@ -3491,18 +3166,37 @@ sub storedata {
}
} elsif ($cmd eq 'dateinterval') {
$data=&get_date_interval_from_form($thiskey);
+ if ($thiskey =~ /\.interval$/) {
+ $name = 'interval';
+ my $intervaltype = &get_intervaltype($name);
+ my $intervalmatch = &standard_interval_matches($intervaltype);
+ if (ref($intervalmatch) eq 'ARRAY') {
+ foreach my $item (@{$intervalmatch}) {
+ if (ref($item) eq 'ARRAY') {
+ my ($regexpname,$pattern) = @{$item};
+ if ($pattern ne '') {
+ if ($data =~ /$pattern/) {
+ $valmatch = $regexpname;
+ $valchk = '';
+ last;
+ }
+ }
+ }
+ }
+ }
+ }
$typeof=$env{'form.typeof_'.$thiskey};
$text = &mt('Saved modified date for');
}
if ($name ne '') {
my ($needsrelease,$needsnewer);
- $needsrelease = $Apache::lonnet::needsrelease{"parameter:$name:$valchk"};
+ $needsrelease = $Apache::lonnet::needsrelease{"parameter:$name:$valchk:$valmatch"};
if ($needsrelease) {
unless ($got_chostname) {
($chostname,$cmajor,$cminor)=¶meter_release_vars();
$got_chostname = 1;
}
- $needsnewer = ¶meter_releasecheck($name,$valchk,
+ $needsnewer = ¶meter_releasecheck($name,$valchk,$valmatch,
$needsrelease,
$cmajor,$cminor);
if ($needsnewer) {
@@ -3549,7 +3243,7 @@ sub storedata {
}
# Store all course level
my $delentries=$#deldata+1;
- my @newdatakeys=keys %newdata;
+ my @newdatakeys=keys(%newdata);
my $putentries=$#newdatakeys+1;
if ($delentries) {
if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {
@@ -3600,7 +3294,8 @@ sub parse_listdata_key {
}
sub listdata {
- my ($r,$resourcedata,$listdata,$sortorder,$caller,$classlist,$readonly)=@_;
+ my ($r,$resourcedata,$listdata,$sortorder,$caller,$classlist)=@_;
+
# Start list output
my $oldsection='';
@@ -3610,7 +3305,6 @@ sub listdata {
$tableopen=0;
my $foundkeys=0;
my %keyorder=&standardkeyorder();
- my $readonlyall = $readonly;
my ($secidx,%grouphash);
if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
@@ -3618,7 +3312,7 @@ sub listdata {
if (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {
%grouphash = &Apache::longroup::coursegroups();
} elsif ($env{'request.course.groups'} ne '') {
- map { $grouphash{$_} = 1; } split(/:/,$env{'request.course.groups'});
+ map { $grouphash{$_} = 1; } split(/,/,$env{'request.course.groups'});
}
}
@@ -3661,8 +3355,9 @@ sub listdata {
}
$result;
- } keys %{$listdata}) {
+ } keys(%{$listdata})) {
+ my $readonly;
if ($$listdata{$thiskey.'.type'}) {
my $thistype=$$listdata{$thiskey.'.type'};
if ($$resourcedata{$thiskey.'.type'}) {
@@ -3671,9 +3366,6 @@ sub listdata {
my ($middle,$part,$name)=
($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
my $section=&mt('All Students');
- $readonly = $readonlyall;
- my $userscope;
- my $showval = $$resourcedata{$thiskey};
if ($middle=~/^\[(.*)\]/) {
my $issection=$1;
if ($issection=~/^useropt\:($match_username)\:($match_domain)/) {
@@ -3681,12 +3373,11 @@ sub listdata {
if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
if (ref($classlist) eq 'HASH') {
if (ref($classlist->{$stuname.':'.$studom}) eq 'ARRAY') {
- next unless ($classlist->{$stuname.':'.$studom}->[$secidx] eq $env{'request.course.sec'});
+ next unless ($classlist->{$stuname.':'.$studom}->[$secidx] eq $env{'request.course.sec'});
}
}
}
- $section=&mt('User').": ".&Apache::loncommon::plainname($1,$2);
- $userscope = 1;
+ $section=&mt('User').": ".&Apache::loncommon::plainname($stuname,$studom);
} else {
if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
if (exists($grouphash{$issection})) {
@@ -3694,7 +3385,7 @@ sub listdata {
} elsif ($issection eq $env{'request.course.sec'}) {
$section = &mt('Section').': '.$issection;
} else {
- next;
+ next;
}
} else {
$section=&mt('Group/Section').': '.$issection;
@@ -3707,7 +3398,6 @@ sub listdata {
$middle=~s/\.+$//;
$middle=~s/^\.+//;
my $realm=''.&mt('All Resources').' ';
-
if ($middle=~/^(.+)\_\_\_\(all\)$/) {
$realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' ('.$1.') ';
} elsif ($middle) {
@@ -3751,13 +3441,8 @@ sub listdata {
''.&mt($parmitem).
' ');
unless ($readonly) {
- my $disabled;
- if (($name eq 'availablestudent') &&
- (($showval eq '') || ($userscope))) {
- $disabled = ' disabled="disabled"';
- }
$r->print(' ');
+ $thiskey.'" />');
}
$r->print('');
$foundkeys++;
@@ -3773,21 +3458,18 @@ sub listdata {
$jskey,
$$resourcedata{$thiskey},
'',1,$state));
- unless ($readonly) {
+ unless ($readonly) {
$r->print(
' '.
(($$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,$name,
$$resourcedata{$thiskey},$readonly));
} elsif ($thistype =~ m/^string/) {
- if ($name eq 'availablestudent') {
- $readonly = 1;
- }
$r->print(&string_selector($thistype,$thiskey,
$$resourcedata{$thiskey},$name,$readonly));
} else {
@@ -3803,76 +3485,6 @@ sub listdata {
return $foundkeys;
}
-
-sub date_interval_selector {
- my ($thiskey, $pname, $showval, $readonly) = @_;
- my ($result,%skipval);
- my $currval = $showval;
- 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,'',$readonly);
- $result .= ' '.&mt($name);
- }
- if ($pname eq 'interval') {
- unless ($skipval{'done'}) {
- my $checkedon = '';
- my $checkedproc = '';
- my $currproctorkey = '';
- my $currprocdisplay = 'hidden';
- my $currdonetext = &mt('Done');
- my $checkedoff = ' checked="checked"';
- if ($currval =~ /^(?:\d+)_done$/) {
- $checkedon = ' checked="checked"';
- $checkedoff = '';
- } elsif ($currval =~ /^(?:\d+)_done\:([^\:]+)\:$/) {
- $currdonetext = $1;
- $checkedon = ' checked="checked"';
- $checkedoff = '';
- } elsif ($currval =~ /^(?:\d+)_done_proctor_(.+)$/) {
- $currproctorkey = $1;
- $checkedproc = ' checked="checked"';
- $checkedoff = '';
- $currprocdisplay = 'text';
- } elsif ($currval =~ /^(?:\d+)_done\:([^\:]+)\:_proctor_(.+)$/) {
- $currdonetext = $1;
- $currproctorkey = $2;
- $checkedproc = ' checked="checked"';
- $checkedoff = '';
- $currprocdisplay = 'text';
- }
- my $onclick = ' onclick="toggleSecret(this.form,'."'done_','$thiskey'".');"';
- my $disabled;
- if ($readonly) {
- $disabled = ' disabled="disabled"';
- }
- $result .= ''.&mt('Include "done" button').
- ' '.
- &mt('No').' '.(' 'x2).
- ' '.
- &mt('Yes').' '.(' 'x2).
- ' '.
- &mt('Yes, with proctor key').' '.
- ' &').'"'.$disabled.' /> '.
- ''.&mt('Button text').': '.
- ' &').'"'.$disabled.' /> ';
- }
- }
- unless ($readonly) {
- $result .= ' ';
- }
- return $result;
-
-}
-
sub get_date_interval_from_form {
my ($key) = @_;
my $seconds = 0;
@@ -3885,6 +3497,9 @@ sub get_date_interval_from_form {
$seconds += $env{'form.'.$name.'_'.$key} * $factor;
}
}
+ if (($key =~ /\.interval$/) && ($env{'form.done_'.$key} eq '_done')) {
+ $seconds .= $env{'form.done_'.$key};
+ }
return $seconds;
}
@@ -3926,7 +3541,7 @@ sub string_ip_selector {
@{$access{'deny'}} = ('');
}
my ($disabled,$addmore);
- if ($readonly) {
+ if ($disabled) {
$disabled=' disabled="disabled"';
} else {
$addmore = "\n".''.&mt('Add more').' ';
@@ -3942,7 +3557,7 @@ sub string_ip_selector {
foreach my $curr (@{$access{$acctype}}) {
$output .= ''."\n";
$num ++;
@@ -3958,217 +3573,7 @@ sub string_ip_selector {
return $output;
}
-sub string_deeplink_selector {
- my ($thiskey, $showval, $readonly) = @_;
- my (@components,%values,@current,%titles,%options,%optiontext,%defaults,
- %selectnull,%domlti,%crslti,@possmenus);
- @components = ('state','others','listing','scope','protect','menus');
- %titles = &Apache::lonlocal::texthash (
- state => 'Access status',
- others => 'Hide other resources',
- listing => 'In Contents and/or Gradebook',
- scope => 'Access scope for link',
- protect => 'Link protection',
- menus => 'Menu Items Displayed',
- );
- %options = (
- state => ['only','off','both'],
- others => ['hide','unhide'],
- listing => ['full','absent','grades','details','datestatus'],
- scope => ['res','map','rec'],
- protect => ['none','key','ltid','ltic'],
- menus => ['std','colls'],
- );
- %optiontext = &Apache::lonlocal::texthash (
- only => 'deep only',
- off => 'deeplink off',
- both => 'regular + deep',
- hide => 'Hidden',
- unhide => 'Unhidden',
- full => 'Listed (linked) in both',
- absent => 'Not listed',
- grades => 'Listed in grades only',
- details => 'Listed (unlinked) in both',
- datestatus => 'Listed (unlinked) inc. status in both',
- res => 'resource only',
- map => 'enclosing map/folder',
- rec => 'recursive map/folder',
- none => 'not in use',
- key => 'key access',
- ltic => 'LTI access (course)',
- ltid => 'LTI access (domain)' ,
- std => 'Standard (all menus)',
- colls => 'Numbered collection',
- );
- %selectnull = &Apache::lonlocal::texthash (
- ltic => 'Select Launcher',
- ltid => 'Select Launcher',
- colls => 'Select',
- );
- if ($showval =~ /,/) {
- %values=();
- @current = split(/,/,$showval);
- ($values{'state'}) = ($current[0] =~ /^(only|off|both)$/);
- ($values{'others'}) = ($current[1] =~ /^(hide|unhide)$/);
- ($values{'listing'}) = ($current[2] =~ /^(full|absent|grades|details|datestatus)$/);
- ($values{'scope'}) = ($current[3] =~ /^(res|map|rec)$/);
- ($values{'protect'}) = ($current[4] =~ /^(key:[a-zA-Z\d_.!\@#\$%^&*()+=-]+|ltic:\d+|ltid:\d+)$/);
- ($values{'menus'}) = ($current[5] =~ /^(\d+)$/);
- } else {
- $defaults{'state'} = 'off',
- $defaults{'others'} = 'unhide',
- $defaults{'listing'} = 'full';
- $defaults{'scope'} = 'res';
- $defaults{'protect'} = 'none';
- $defaults{'menus'} = '0';
- }
- my $disabled;
- if ($readonly) {
- $disabled=' disabled="disabled"';
- }
- my %courselti =
- &Apache::lonnet::get_course_lti($env{'course.'.$env{'request.course.id'}.'.num'},
- $env{'course.'.$env{'request.course.id'}.'.domain'});
- foreach my $item (keys(%courselti)) {
- if (ref($courselti{$item}) eq 'HASH') {
- $crslti{$item} = $courselti{$item}{'name'};
- }
- }
- my %lti =
- &Apache::lonnet::get_domain_lti($env{'course.'.$env{'request.course.id'}.'.domain'},
- 'linkprot');
- foreach my $item (keys(%lti)) {
- if (($item =~ /^\d+$/) && (ref($lti{$item}) eq 'HASH')) {
- $domlti{$item} = $lti{$item}{'name'};
- }
- }
- if ($env{'course.'.$env{'request.course.id'}.'.menucollections'}) {
- foreach my $item (split(/;/,$env{'course.'.$env{'request.course.id'}.'.menucollections'})) {
- my ($num,$value) = split(/\%/,$item);
- if ($num =~ /^\d+$/) {
- push(@possmenus,$num);
- }
- }
- }
-
- my $output = ' '."\n";
- return $output;
-}
-
{
-
my %strings =
(
'string_yesno'
@@ -4183,7 +3588,7 @@ my %strings =
=> [[ 'problem', 'Standard Problem'],
[ 'survey', 'Survey'],
[ 'anonsurveycred', 'Anonymous Survey (credit for submission)'],
- [ 'exam', 'Exam'],
+ [ 'exam', 'Bubblesheet Exam'],
[ 'anonsurvey', 'Anonymous Survey'],
[ 'randomizetry', 'New Randomization Each N Tries (default N=1)'],
[ 'practice', 'Practice'],
@@ -4191,24 +3596,23 @@ my %strings =
'string_lenient'
=> [['yes', 'Yes' ],
[ 'no', 'No' ],
- [ 'default', 'Default - only bubblesheet grading is lenient' ]],
+ [ 'default', 'Default - only bubblesheet grading is lenient' ],
+ [ 'weighted', 'Yes, weighted (optionresponse in checkbox mode)' ]],
'string_discussvote'
=> [['yes','Yes'],
['notended','Yes, unless discussion ended'],
['no','No']],
'string_ip'
=> [['_allowfrom_','Hostname(s), or IP(s) from which access is allowed'],
- ['_denyfrom_','Hostname(s) or IP(s) from which access is disallowed']],
- 'string_deeplink'
- => [['on','Set choices for link protection, resource listing, access scope, and shown menu items']],
+ ['_denyfrom_',], 'Hostname(s) or IP(s) from which access is disallowed'],
);
my %stringmatches = (
+ 'string_lenient'
+ => [['weighted','^\-?[.\d]+,\-?[.\d]+,\-?[.\d]+,\-?[.\d]+$'],],
'string_ip'
=> [['_allowfrom_','[^\!]+'],
['_denyfrom_','\!']],
- 'string_deeplink'
- => [['on','^(only|off|both)\,(hide|unhide)\,(full|absent|grades|details|datestatus)\,(res|map|rec)\,(none|key\:\w+|ltic\:\d+|ltid\:\d+)\,(\d+|)$']],
);
my %stringtypes = (
@@ -4218,7 +3622,6 @@ my %stringtypes = (
discussvote => 'string_discussvote',
examcode => 'string_examcode',
acc => 'string_ip',
- deeplink => 'string_deeplink',
);
sub standard_string_options {
@@ -4237,43 +3640,66 @@ sub standard_string_matches {
return;
}
+sub get_stringtype {
+ my ($name) = @_;
+ if (exists($stringtypes{$name})) {
+ return $stringtypes{$name};
+ }
+ return;
+}
+
sub string_selector {
my ($thistype, $thiskey, $showval, $name, $readonly) = @_;
if (!exists($strings{$thistype})) {
- return &default_selector($thiskey,$showval,$readonly);
+ return &default_selector($thiskey,$showval,$readonly);
}
my %skiptype;
if (($thistype eq 'string_questiontype') ||
($thistype eq 'string_lenient') ||
($thistype eq 'string_discussvote') ||
+ ($thistype eq 'string_ip') ||
($name eq 'retrypartial')) {
my ($got_chostname,$chostname,$cmajor,$cminor);
foreach my $possibilities (@{ $strings{$thistype} }) {
next unless (ref($possibilities) eq 'ARRAY');
my ($parmval, $description) = @{ $possibilities };
- my $needsrelease=$Apache::lonnet::needsrelease{"parameter:$name:$parmval"};
+ my $parmmatch;
+ if (ref($stringmatches{$thistype}) eq 'ARRAY') {
+ foreach my $item (@{$stringmatches{$thistype}}) {
+ if (ref($item) eq 'ARRAY') {
+ if ($parmval eq $item->[0]) {
+ $parmmatch = $parmval;
+ $parmval = '';
+ last;
+ }
+ }
+ }
+ }
+ my $needsrelease=$Apache::lonnet::needsrelease{"parameter:$name:$parmval:$parmmatch"};
if ($needsrelease) {
unless ($got_chostname) {
($chostname,$cmajor,$cminor)=¶meter_release_vars();
$got_chostname = 1;
}
- my $needsnewer=¶meter_releasecheck($name,$parmval,$needsrelease,
- $cmajor,$cminor);
+ my $needsnewer=¶meter_releasecheck($name,$parmval,$parmmatch,
+ $needsrelease,$cmajor,$cminor);
if ($needsnewer) {
- $skiptype{$parmval} = 1;
+ if ($parmmatch ne '') {
+ $skiptype{$parmmatch} = 1;
+ } elsif ($parmval ne '') {
+ $skiptype{$parmval} = 1;
+ }
}
}
}
}
if ($thistype eq 'string_ip') {
- return &string_ip_selector($thiskey,$showval,$readonly);
- } elsif ($thistype eq 'string_deeplink') {
- return &string_deeplink_selector($thiskey,$showval,$readonly);
+ return &string_ip_selector($thiskey,$showval,$readonly);
}
-
+
my ($result,$disabled);
if ($readonly) {
@@ -4293,7 +3719,7 @@ sub string_selector {
foreach my $possibilities (@{ $strings{$thistype} }) {
next unless (ref($possibilities) eq 'ARRAY');
my ($name, $description) = @{ $possibilities };
- next if ($skiptype{$name});
+ next if ($skiptype{$name});
$rem = $i%($numinrow);
if ($rem == 0) {
if ($i > 0) {
@@ -4301,24 +3727,66 @@ sub string_selector {
}
$result .= ' ';
}
- $result .= ''.
+ my $colspan;
+ if ($i == @{ $strings{$thistype} }-1) {
+ $rem = @{ $strings{$thistype} }%($numinrow);
+ if ($rem) {
+ my $colsleft = $numinrow - $rem;
+ if ($colsleft) {
+ $colspan = $colsleft+1;
+ $colspan = ' colspan="'.$colspan.'"';
+ }
+ }
+ }
+ my ($add,$onchange,$css_class);
+ if ($thistype eq 'string_lenient') {
+ if ($name eq 'weighted') {
+ my $display;
+ my %relatives = &Apache::lonlocal::texthash(
+ corrchkd => 'Correct (checked)',
+ corrunchkd => 'Correct (unchecked)',
+ incorrchkd => 'Incorrect (checked)',
+ incorrunchkd => 'Incorrect (unchecked)',
+ );
+ my %textval = (
+ corrchkd => '1.0',
+ corrunchkd => '1.0',
+ incorrchkd => '0.0',
+ incorrunchkd => '0.0',
+ );
+ if ($showval =~ /^([\-\d\.]+)\,([\-\d\.]+)\,([\-\d\.]+)\,([\-\d\.]+)$/) {
+ $textval{'corrchkd'} = $1;
+ $textval{'corrunchkd'} = $2;
+ $textval{'incorrchkd'} = $3;
+ $textval{'incorrunchkd'} = $4;
+ $display = 'inline';
+ $showval = $name;
+ } else {
+ $display = 'none';
+ }
+ $add = ' '."\n";
+ }
+ $onchange = ' onclick="javascript:toggleParmTextbox(this.form,'."'$thiskey'".');"';
+ $css_class = ' class="LC_lenient_radio"';
+ }
+ $result .= ' '.
''.
' ';
+ $result .= ' />'.&mt($description).''.$add.'';
$i++;
}
- $rem = @{ $strings{$thistype} }%($numinrow);
- my $colsleft = $numinrow - $rem;
- if ($colsleft > 1 ) {
- $result .= ''.
- ' ';
- } elsif ($colsleft == 1) {
- $result .= ' ';
- }
$result .= ' ';
}
if ($result) {
@@ -4327,24 +3795,148 @@ sub string_selector {
return $result;
}
+my %intervals =
+ (
+ 'date_interval'
+ => [[ 'done', 'Yes' ],
+ [ '', 'No' ]],
+ );
+
+my %intervalmatches = (
+ 'date_interval'
+ => [['done','\d+_done$'],],
+ );
+
+my %intervaltypes = (
+ interval => 'date_interval',
+ );
+
+sub standard_interval_matches {
+ my ($interval_type) = @_;
+ if (ref($intervalmatches{$interval_type}) eq 'ARRAY') {
+ return $intervalmatches{$interval_type};
+ }
+ return;
+}
+
+sub get_intervaltype {
+ my ($name) = @_;
+ if (exists($intervaltypes{$name})) {
+ return $intervaltypes{$name};
+ }
+ return;
+}
+
+sub standard_interval_options {
+ my ($interval_type) = @_;
+ if (ref($intervals{$interval_type}) eq 'ARRAY') {
+ return $intervals{$interval_type};
+ }
+ return;
+}
+
+sub date_interval_selector {
+ my ($thiskey, $name, $showval, $readonly) = @_;
+ my ($result,%skipval);
+ if ($name eq 'interval') {
+ my $intervaltype = &get_intervaltype($name);
+ my ($got_chostname,$chostname,$cmajor,$cminor);
+ foreach my $possibilities (@{ $intervals{$intervaltype} }) {
+ next unless (ref($possibilities) eq 'ARRAY');
+ my ($parmval, $description) = @{ $possibilities };
+ my $parmmatch;
+ if (ref($intervalmatches{$intervaltype}) eq 'ARRAY') {
+ foreach my $item (@{$intervalmatches{$intervaltype}}) {
+ if (ref($item) eq 'ARRAY') {
+ if ($parmval eq $item->[0]) {
+ $parmmatch = $parmval;
+ $parmval = '';
+ last;
+ }
+ }
+ }
+ }
+ my $needsrelease=$Apache::lonnet::needsrelease{"parameter:$name:$parmval:$parmmatch"};
+ if ($needsrelease) {
+ unless ($got_chostname) {
+ ($chostname,$cmajor,$cminor)=¶meter_release_vars();
+ $got_chostname = 1;
+ }
+ my $needsnewer=¶meter_releasecheck($name,$parmval,$parmmatch,
+ $needsrelease,$cmajor,$cminor);
+ if ($needsnewer) {
+ if ($parmmatch ne '') {
+ $skipval{$parmmatch} = 1;
+ } elsif ($parmval ne '') {
+ $skipval{$parmval} = 1;
+ }
+ }
+ }
+ }
+ }
+
+ my $currval = $showval;
+ 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,'',$readonly);
+ $result .= ' '.&mt($name);
+ }
+ if ($name eq 'interval') {
+ unless ($skipval{'done'}) {
+ my $checkedon = '';
+ my $checkedoff = ' checked="checked"';
+ if ($currval =~ /^(\d+)_done$/) {
+ $checkedon = ' checked="checked"';
+ $checkedoff = '';
+ }
+ $result .= '
'.(' ' x 3).'('.&mt('Include "done" button').
+ ' '.
+ &mt('Yes').' '.
+ ' '.
+ &mt('No').' ) ';
+ }
+ }
+ unless ($readonly) {
+ $result .= '
';
+ }
+ return $result;
+}
+
sub oldversion_warning {
my ($name,$value,$chostname,$cmajor,$cminor,$needsrelease) = @_;
my $desc;
- my %stringtypes = (
- type => 'string_questiontype',
- lenient => 'string_lenient',
- retrypartial => 'string_yesno',
- discussvote => 'string_discussvote',
- examcode => 'string_examcode',
- );
- if (exists($stringtypes{$name})) {
+ my $stringtype = &get_stringtype($name);
+ if ($stringtype ne '') {
if ($name eq 'examcode') {
$desc = $value;
} elsif (ref($strings{$stringtypes{$name}}) eq 'ARRAY') {
foreach my $possibilities (@{ $strings{$stringtypes{$name}} }) {
next unless (ref($possibilities) eq 'ARRAY');
my ($parmval, $description) = @{ $possibilities };
- if ($parmval eq $value) {
+ my $parmmatch;
+ if (ref($stringmatches{$stringtypes{$name}}) eq 'ARRAY') {
+ foreach my $item (@{$stringmatches{$stringtypes{$name}}}) {
+ if (ref($item) eq 'ARRAY') {
+ my ($regexpname,$pattern) = @{$item};
+ if ($parmval eq $regexpname) {
+ if ($value =~ /$pattern/) {
+ $desc = $description;
+ $parmmatch = 1;
+ last;
+ }
+ }
+ }
+ }
+ last if ($parmmatch);
+ } elsif ($parmval eq $value) {
$desc = $description;
last;
}
@@ -4381,25 +3973,12 @@ sub oldversion_warning {
#
sub dateshift {
- my ($shift,$numchanges)=@_;
+ my ($shift)=@_;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $sec = $env{'request.course.sec'};
- my $secgrpregex;
- if ($sec ne '') {
- my @groups;
- if ($env{'request.course.groups'} ne '') {
- @groups = split(/:/,$env{'request.course.groups'});
- }
- if (@groups) {
- $secgrpregex = '(?:'.join('|',($sec,@groups)).')';
- } else {
- $secgrpregex = $sec;
- }
- }
my %data=&Apache::lonnet::dump('resourcedata',$dom,$crs);
# ugly retro fix for broken version of types
- foreach my $key (keys %data) {
+ foreach my $key (keys(%data)) {
if ($key=~/\wtype$/) {
my $newkey=$key;
$newkey=~s/type$/\.type/;
@@ -4409,13 +3988,9 @@ sub dateshift {
}
my %storecontent=();
# go through all parameters and look for dates
- foreach my $key (keys %data) {
+ foreach my $key (keys(%data)) {
if ($data{$key.'.type'}=~/^date_(start|end)$/) {
- if ($sec ne '') {
- next unless ($key =~ /^$env{'request.course.id'}\.\[$secgrpregex\]\./);
- }
my $newdate=$data{$key}+$shift;
- $$numchanges ++;
$storecontent{$key}=$newdate;
}
}
@@ -4429,19 +4004,16 @@ sub dateshift {
}
sub newoverview {
- my ($r,$parm_permission) = @_;
+ my ($r) = @_;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $readonly = 1;
- if ($parm_permission->{'edit'}) {
- undef($readonly);
- }
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
text=>"Overview Mode"});
my %loaditems = (
- 'onload' => "showHide_courseContent(); resize_scrollbox('mapmenuscroll','1','1');",
+ 'onload' => "showHide_courseContent(); resize_scrollbox('mapmenuscroll','1','1'); showHideLenient();",
);
my $js = '
';
+
my $start_page = &Apache::loncommon::start_page('Set Parameters',$js,
{'add_entries' => \%loaditems,});
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
$r->print($start_page.$breadcrumbs);
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print(<
+');
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -4783,24 +4347,14 @@ sub date_shift_one {
my ($r) = @_;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $sec = $env{'request.course.sec'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
+
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
text=>"Shifting Dates"});
- my $submit_text = &mt('Shift all dates accordingly');
- if ($sec ne '') {
- my @groups;
- if ($env{'request.course.groups'} ne '') {
- @groups = split(/:/,$env{'request.course.groups'});
- }
- if (@groups) {
- $submit_text = &mt("Shift dates set just for your section/group(s), accordingly");
- } else {
- $submit_text = &mt("Shift dates set just for your section, accordingly");
- }
- }
my $start_page=&Apache::loncommon::start_page('Shift Dates');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
$r->print($start_page.$breadcrumbs);
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print(''.
''.&mt('Currently set date:').' '.
&Apache::lonlocal::locallocaltime($env{'form.timebase'}).' '.
@@ -4812,7 +4366,8 @@ sub date_shift_one {
'
'.
' '.
' '.
- ' ');
+ ' ');
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -4820,57 +4375,26 @@ sub date_shift_two {
my ($r) = @_;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $sec = $env{'request.course.sec'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
text=>"Shifting Dates"});
my $start_page=&Apache::loncommon::start_page('Shift Dates');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
$r->print($start_page.$breadcrumbs);
+ &startSettingsScreen($r,'parmset',$crstype);
my $timeshifted=&Apache::lonhtmlcommon::get_date_from_form('timeshifted');
- $r->print(''.&mt('Shift Dates').' ');
- if ($sec ne '') {
- my @groups;
- if ($env{'request.course.groups'} ne '') {
- @groups = split(/:/,$env{'request.course.groups'});
- }
- if (@groups) {
- $r->print(''.
- &mt("Shift dates set just for your section/group(s), such that [_1] becomes [_2]",
- &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
- &Apache::lonlocal::locallocaltime($timeshifted)).
- '
');
- } else {
- $r->print(''.
- &mt("Shift dates set just for your section, such that [_1] becomes [_2]",
- &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
- &Apache::lonlocal::locallocaltime($timeshifted)).
- '
');
- }
- } else {
- $r->print(''.&mt('Shifting all dates such that [_1] becomes [_2]',
- &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
- &Apache::lonlocal::locallocaltime($timeshifted)).
- '
');
- }
+ $r->print(''.&mt('Shift Dates').' '.
+ ''.&mt('Shifting all dates such that [_1] becomes [_2]',
+ &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
+ &Apache::lonlocal::locallocaltime($timeshifted)).'
');
my $delta=$timeshifted-$env{'form.timebase'};
- my $numchanges = 0;
- my $result = &dateshift($delta,\$numchanges);
- if ($result eq 'ok') {
- $r->print(
- &Apache::lonhtmlcommon::confirm_success(&mt('Completed shifting of [quant,_1,date setting]',
- $numchanges)));
- } elsif ($result eq 'con_delayed') {
- $r->print(
- &Apache::lonhtmlcommon::confirm_success(&mt('Queued shifting of [quant,_1,date setting]',
- $numchanges)));
- } else {
- $r->print(
- &Apache::lonhtmlcommon::confirm_success(&mt('An error occurred attempting to shift dates'),1));
- }
+ &dateshift($delta);
$r->print(
+ &Apache::lonhtmlcommon::confirm_success(&mt('Done')).
' '.
&Apache::lonhtmlcommon::actionbox(
[''.&mt('Content and Problem Settings').' ']));
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -4886,7 +4410,8 @@ sub parse_key {
$data{'scope_type'} = 'user';
$data{'scope'} = [$1,$2];
} else {
- $data{'scope_type'} = 'secgroup';
+ #FIXME check for group scope
+ $data{'scope_type'} = 'section';
}
$middle=~s/^\[(.*)\]//;
}
@@ -4914,7 +4439,7 @@ sub parse_key {
sub header {
- return &Apache::loncommon::start_page('Content and Problem Settings');
+ return &Apache::loncommon::start_page('Settings');
}
@@ -4927,6 +4452,7 @@ sub print_main_menu {
my $crstype = &Apache::loncommon::course_type();
my $lc_crstype = lc($crstype);
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print(<
@@ -4937,73 +4463,35 @@ ENDMAINFORMHEAD
my $vgr = &Apache::lonnet::allowed('vgr',$env{'request.course.id'});
my $mgr = &Apache::lonnet::allowed('mgr',$env{'request.course.id'});
my $dcm = &Apache::lonnet::allowed('dcm',$env{'request.course.id'});
- my $vcb = &Apache::lonnet::allowed('vcb',$env{'request.course.id'});
- my $vpa = &Apache::lonnet::allowed('vpa',$env{'request.course.id'});
if ((!$dcm) && ($env{'request.course.sec'} ne '')) {
$dcm = &Apache::lonnet::allowed('dcm',$env{'request.course.id'}.
'/'.$env{'request.course.sec'});
}
- if ((!$vcb) && ($env{'request.course.sec'} ne '')) {
- $vcb = &Apache::lonnet::allowed('vcb',$env{'request.course.id'}.
- '/'.$env{'request.course.sec'});
- }
- my (%linktext,%linktitle,%url);
- if ($parm_permission->{'edit'}) {
- %linktext = (
- newoverview => 'Edit Resource Parameters - Overview Mode',
- settable => 'Edit Resource Parameters - Table Mode',
- setoverview => 'Modify Resource Parameters - Overview Mode',
- );
- %linktitle = (
- newoverview => 'Set/Modify resource parameters in overview mode.',
- settable => 'Set/Modify resource parameters in table mode.',
- setoverview => 'Set/Modify existing resource parameters in overview mode.',
- );
- } else {
- %linktext = (
- newoverview => 'View Resource Parameters - Overview Mode',
- settable => 'View Resource Parameters - Table Mode',
- setoverview => 'View Resource Parameters - Overview Mode',
- );
- %linktitle = (
- newoverview => 'Display resource parameters in overview mode.',
- settable => 'Display resource parameters in table mode.',
- setoverview => 'Display existing resource parameters in overview mode.',
- );
- }
- if ($mgr) {
- $linktext{'resettimes'} = 'Reset Student Access Times';
- $linktitle{'resettimes'} = "Reset access times for folders/maps, resources or the $lc_crstype.";
- $url{'resettimes'} = '/adm/helper/resettimes.helper';
- } elsif ($vgr) {
- $linktext{'resettimes'} = 'Display Student Access Times',
- $linktitle{'resettimes'} = "Display access times for folders/maps, resources or the $lc_crstype.",
- $url{'resettimes'} = '/adm/accesstimes';
- }
+
my @menu =
( { categorytitle=>"Content Settings for this $crstype",
items => [
{ linktext => 'Portfolio Metadata',
url => '/adm/parmset?action=setrestrictmeta',
- permission => $parm_permission->{'setrestrictmeta'},
+ permission => $parm_permission,
linktitle => "Restrict metadata for this $lc_crstype." ,
icon =>'contact-new.png' ,
},
- { linktext => $linktext{'resettimes'},
- url => $url{'resettimes'},
- permission => ($vgr || $mgr),
- linktitle => $linktitle{'resettimes'},
- icon => 'start-here.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 => 'Blocking Communication/Resource Access',
url => '/adm/setblock',
- permission => ($vcb || $dcm),
+ permission => $dcm,
linktitle => 'Configure blocking of communication/collaboration and access to resources during an exam',
icon => 'comblock.png',
},
{ linktext => 'Set Parameter Setting Default Actions',
url => '/adm/parmset?action=setdefaults',
- permission => $parm_permission->{'setdefaults'},
+ permission => $parm_permission,
linktitle =>'Set default actions for parameters.' ,
icon => 'folder-new.png' ,
}]},
@@ -5011,43 +4499,45 @@ ENDMAINFORMHEAD
items => [
{ linktext => 'Edit Resource Parameters - Helper Mode',
url => '/adm/helper/parameter.helper',
- permission => $parm_permission->{'helper'},
+ permission => $parm_permission,
linktitle =>'Set/Modify resource parameters in helper mode.' ,
icon => 'dialog-information.png' ,
#help => 'Parameter_Helper',
},
- { linktext => $linktext{'newoverview'},
+ { linktext => 'Edit Resource Parameters - Overview Mode',
url => '/adm/parmset?action=newoverview',
- permission => $parm_permission->{'newoverview'},
- linktitle => $linktitle{'newoverview'},
- icon => 'edit-find.png',
+ permission => $parm_permission,
+ linktitle =>'Set/Modify resource parameters in overview mode.' ,
+ icon => 'edit-find.png' ,
#help => 'Parameter_Overview',
},
- { linktext => $linktext{'settable'},
+ { linktext => 'Edit Resource Parameters - Table Mode',
url => '/adm/parmset?action=settable',
- permission => $parm_permission->{'settable'},
- linktitle => $linktitle{'settable'},
- icon => 'edit-copy.png',
+ 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 => $linktext{'setoverview'},
+ { linktext => 'Modify Resource Parameters - Overview Mode',
url => '/adm/parmset?action=setoverview',
- permission => $parm_permission->{'setoverview'},
- linktitle => $linktitle{'setoverview'},
- icon => 'preferences-desktop-wallpaper.png',
+ 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->{'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));
- $r->print(''.&Apache::loncommon::end_page());
+ $r->print('');
+ &endSettingsScreen($r);
+ $r->print(&Apache::loncommon::end_page());
return;
}
@@ -5115,6 +4605,7 @@ sub order_meta_fields {
my $idx = 1;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};;
$r->print(&Apache::loncommon::start_page('Order Metadata Fields'));
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',
text=>"Add Metadata Field"});
@@ -5123,11 +4614,12 @@ sub order_meta_fields {
text=>"Restrict Metadata"},
{text=>"Order Metadata"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Order Metadata'));
+ &startSettingsScreen($r,'parmset',$crstype);
if ($env{'form.storeorder'}) {
my $newpos = $env{'form.newpos'} - 1;
my $currentpos = $env{'form.currentpos'} - 1;
my @neworder = ();
- my @oldorder = split /,/,$env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'};
+ my @oldorder = split(/,/,$env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'});
my $i;
if ($newpos > $currentpos) {
# moving stuff up
@@ -5161,10 +4653,10 @@ sub order_meta_fields {
}
my $fields = &get_added_meta_fieldnames($env{'request.course.id'});
my $ordered_fields;
- my @fields_in_order = split /,/,$env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'};
+ my @fields_in_order = split(/,/,$env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'});
if (!@fields_in_order) {
# no order found, pick sorted order then create metadata.addedorder key.
- foreach my $key (sort keys %$fields) {
+ foreach my $key (sort(keys(%$fields))) {
push @fields_in_order, $key;
$ordered_fields = join ",", @fields_in_order;
}
@@ -5192,6 +4684,7 @@ sub order_meta_fields {
$idx ++;
}
$r->print('');
+ &endSettingsScreen($r);
return 'ok';
}
@@ -5200,7 +4693,7 @@ sub continue {
my $output;
$output .= '';
$output .= ' ';
- $output .= ' ';
+ $output .= ' ';
return ($output);
}
@@ -5213,6 +4706,8 @@ sub addmetafield {
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field'));
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
+ &startSettingsScreen($r,'parmset',$crstype);
if (exists($env{'form.undelete'})) {
my @meta_fields = &Apache::loncommon::get_env_multiple('form.undeletefield');
foreach my $meta_field(@meta_fields) {
@@ -5222,10 +4717,7 @@ sub addmetafield {
my $put_result = &Apache::lonnet::put('environment',
{'metadata.'.$meta_field.'.options'=>$options},$dom,$crs);
- $r->print(&mt('Undeleted Metadata Field [_1] with result [_2]',
- ''.$env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.added'}.
- ' ',$put_result).
- ' ');
+ $r->print('Undeleted Metadata Field '.$env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.added'}." with result ".$put_result.' ');
}
$r->print(&continue());
} elsif (exists($env{'form.fieldname'})) {
@@ -5237,17 +4729,12 @@ sub addmetafield {
{'metadata.'.$meta_field.'.values'=>"",
'metadata.'.$meta_field.'.added'=>"$display_field",
'metadata.'.$meta_field.'.options'=>""},$dom,$crs);
- $r->print(&mt('Added new Metadata Field [_1] with result [_2]',
- ''.$env{'form.fieldname'}.' ',$put_result).
- ' ');
+ $r->print('Added new Metadata Field '.$env{'form.fieldname'}." with result ".$put_result.' ');
$r->print(&continue());
} else {
my $fields = &get_deleted_meta_fieldnames($env{'request.course.id'});
if ($fields) {
- $r->print(&mt('You may undelete previously deleted fields.').
- ' '.
- &mt('Check those you wish to undelete and click Undelete.').
- ' ');
+ $r->print('You may undelete previously deleted fields. Check those you wish to undelete and click Undelete. ');
$r->print(' ');
foreach my $key(keys(%$fields)) {
$r->print(' '.$$fields{$key}.' print(' ');
$r->print(' ');
}
- $r->print(' '.
- &mt('[_1]Or[_2] you may enter a new metadata field name.',
- '',' ').
- '');
+ $r->print('Or you may enter a new metadata field name. print(' ');
- $r->print(' ');
+ $r->print(' ');
}
$r->print(' ');
+ &endSettingsScreen($r);
}
@@ -5279,13 +4764,10 @@ sub setrestrictmeta {
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata'));
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
+ &startSettingsScreen($r,'parmset',$crstype);
my $key_base = $env{'course.'.$env{'request.course.id'}.'.'};
my $save_field = '';
- my %lt = &Apache::lonlocal::texthash(
- addm => 'Add Metadata Field',
- ordm => 'Order Metadata Fields',
- save => 'Save',
- );
if ($env{'form.restrictmeta'}) {
foreach my $field (sort(keys(%env))) {
if ($field=~m/^form.(.+)_(.+)$/) {
@@ -5324,25 +4806,28 @@ sub setrestrictmeta {
my %metadata_fields = &Apache::lonmeta::fieldnames('portfolio');
# Now get possible added metadata fields
my $added_metadata_fields = &get_added_meta_fieldnames($env{'request.course.id'});
+ my $row_alt = 1;
$output .= &Apache::loncommon::start_data_table();
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});
}
}
my $buttons = (<
+
-
+
-
+
ENDButtons
my $added_flag = 1;
foreach my $field (sort(keys(%$added_metadata_fields))) {
- $output.= &output_row($r,$field,$$added_metadata_fields{$field},$added_flag);
+ $row_alt = $row_alt ? 0 : 1;
+ $output.= &output_row($r, $field, $$added_metadata_fields{$field},$added_flag, $row_alt);
}
$output .= &Apache::loncommon::end_data_table();
$r->print(<
ENDenv
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
return 'ok';
}
@@ -5391,14 +4877,16 @@ sub defaultsetter {
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setdefaults',
text=>"Set Defaults"});
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
my $start_page =
- &Apache::loncommon::start_page('Parameter Setting Default Actions');
+ &Apache::loncommon::start_page('Parameter Setting Default Actions');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults');
$r->print($start_page.$breadcrumbs);
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print('');
- my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
- my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
my @ids=();
my %typep=();
my %keyp=();
@@ -5449,11 +4937,11 @@ sub defaultsetter {
}
}
}
- foreach my $key (keys %allparms) {
+ foreach my $key (keys(%allparms)) {
$newrules{$key.'_triggers'}=$triggers{$key};
}
- &Apache::lonnet::put('parmdefactions',\%newrules,$dom,$crs);
- &Apache::lonnet::del('parmdefactions',\@delrules,$dom,$crs);
+ &Apache::lonnet::put('parmdefactions',\%newrules,$cdom,$cnum);
+ &Apache::lonnet::del('parmdefactions',\@delrules,$cdom,$cnum);
&resetrulescache();
}
my %lt=&Apache::lonlocal::texthash('days' => 'Days',
@@ -5541,6 +5029,7 @@ ENDYESNO
$r->print(&Apache::loncommon::end_data_table().
"\n".' '."\n");
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
return;
}
@@ -5587,7 +5076,7 @@ my %standard_parms;
my %standard_parms_types;
sub load_parameter_names {
- open(my $config,"<","$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");
+ open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");
while (my $configline=<$config>) {
if ($configline !~ /\S/ || $configline=~/^\#/) { next; }
chomp($configline);
@@ -5602,7 +5091,6 @@ sub load_parameter_names {
close($config);
$standard_parms{'int_pos'} = 'Positive Integer';
$standard_parms{'int_zero_pos'} = 'Positive Integer or Zero';
- $standard_parms{'scoreformat'} = 'Format for display of score';
}
sub standard_parameter_names {
@@ -5629,7 +5117,10 @@ sub standard_parameter_types {
}
sub parm_change_log {
- my ($r,$parm_permission)=@_;
+ my ($r)=@_;
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'}
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',
text=>"Parameter Change Log"});
my $js = ''."\n";
$r->print(&Apache::loncommon::start_page('Parameter Change Log',$js));
$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'});
+ &startSettingsScreen($r,'parmset',$crstype);
+ my %parmlog=&Apache::lonnet::dump('nohist_parameterlog',$cdom,$cnum);
if ((keys(%parmlog))[0]=~/^error\:/) { undef(%parmlog); }
@@ -5658,19 +5148,12 @@ sub parm_change_log {
$r->print(&Apache::loncommon::display_filter('parmslog').' '."\n".
' '.
'