--- loncom/interface/lonparmset.pm 2008/06/20 17:38:51 1.401 +++ loncom/interface/lonparmset.pm 2008/11/11 20:12:17 1.414 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.401 2008/06/20 17:38:51 bisitz Exp $ +# $Id: lonparmset.pm,v 1.414 2008/11/11 20:12:17 droeschl Exp $ # # Copyright Michigan State University Board of Trustees # @@ -325,14 +325,31 @@ sub date_sanity_info { my $crsprefix='course.'.$env{'request.course.id'}.'.'; if ($env{$crsprefix.'default_enrollment_end_date'}) { if ($checkdate>$env{$crsprefix.'default_enrollment_end_date'}) { - $result.='
'.&mt('After course enrollment end!'); + $result.='
' + .&mt('After course enrollment end!') + .'
'; } } if ($env{$crsprefix.'default_enrollment_start_date'}) { if ($checkdate<$env{$crsprefix.'default_enrollment_start_date'}) { - $result.='
'.&mt('Before course enrollment start!'); + $result.='
' + .&mt('Before course enrollment start!') + .'
'; } } +# Preparation for additional warnings about dates in the past/future. +# An improved, more context sensitive version is recommended, +# e.g. warn for due and answer dates which are defined before the corresponding open date, etc. +# if ($checkdate'; +# } +# if ($checkdate>time) { +# $result.='
' +# .'('.&mt('in the future').')' +# .'
'; +# } return $result; } ################################################## @@ -551,27 +568,38 @@ sub valout { } else { if ($type eq 'date_interval') { my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($value); + my @timer; $year=$year-70; $mday--; if ($year) { - $result.=$year.' yrs '; +# $result.=&mt('[quant,_1,yr]',$year).' '; + push(@timer,&mt('[quant,_1,yr]',$year)); } if ($mon) { - $result.=$mon.' mths '; +# $result.=&mt('[quant,_1,mth]',$mon).' '; + push(@timer,&mt('[quant,_1,mth]',$mon)); } if ($mday) { - $result.=$mday.' days '; +# $result.=&mt('[quant,_1,day]',$mday).' '; + push(@timer,&mt('[quant,_1,day]',$mday)); } if ($hour) { - $result.=$hour.' hrs '; +# $result.=&mt('[quant,_1,hr]',$hour).' '; + push(@timer,&mt('[quant,_1,hr]',$hour)); } if ($min) { - $result.=$min.' mins '; +# $result.=&mt('[quant,_1,min]',$min).' '; + push(@timer,&mt('[quant,_1,min]',$min)); } if ($sec) { - $result.=$sec.' secs '; +# $result.=&mt('[quant,_1,sec]',$sec).' '; + push(@timer,&mt('[quant,_1,sec]',$sec)); } - $result=~s/\s+$//; +# $result=~s/\s+$//; + if (!@timer) { # Special case: all entries 0 -> display "0 secs" intead of empty field to keep this field editable + push(@timer,&mt('[quant,_1,sec]',0)); + } + $result.=join(", ",@timer); } elsif (&isdateparm($type)) { $result = &Apache::lonlocal::locallocaltime($value). &date_sanity_info($value); @@ -683,6 +711,15 @@ sub startpage { my %loaditems = ('onunload' => "pclose()", 'onload' => "group_or_section('cgroup')",); + if ((($env{'form.command'} eq 'set') && ($env{'form.url'}) + && (!$env{'form.dis'})) || ($env{'form.symb'})) { + &Apache::lonhtmlcommon::add_breadcrumb({help=>'Problem_Parameters', + text=>"Problem Parameters"}); + } else { + &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable', + text=>"Table Mode", + help => 'Course_Setting_Parameters'}); + } my $start_page = &Apache::loncommon::start_page('Set/Modify Course Parameters', &page_js(), @@ -973,7 +1010,7 @@ sub extractResourceInformation { if (!exists($$allparms{$name}) || $$allparms{$name} =~ m/^\s*$/ ) { my $display= &Apache::lonnet::metadata($srcf,$key.'.display'); my $parmdis = $display; - $parmdis =~ s/\[Part.*$//g; + $parmdis =~ s/\s*\[Part.*$//g; $$allparms{$name}=$parmdis; if (ref($defkeytype)) { $$defkeytype{$name}= @@ -985,7 +1022,7 @@ sub extractResourceInformation { # allparts is a hash of all parts # my $part= &Apache::lonnet::metadata($srcf,$key.'.part'); - $$allparts{$part} = "Part: $part"; + $$allparts{$part} = &mt('Part: [_1]',$part); # # Remember all keys going with this resource # @@ -1107,8 +1144,8 @@ ENDSCRIPT if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) { $r->print(' checked'); } - $r->print('>'.($$allparms{$tempkey}=~/\S/ ? $$allparms{$tempkey} - : $tempkey) + $r->print('>'.($$allparms{$tempkey}=~/\S/ ? &mt($$allparms{$tempkey}) + : &mt($tempkey)) .''); $cnt++; if ($cnt==3) { @@ -1116,21 +1153,46 @@ ENDSCRIPT $cnt=0; } } - $r->print(' - -Select All
-Select Common Only - -Add Problem Dates -Add Content Dates
-Add Discussion Settings -Add Visibilities
-Add Part Parameters - -Unselect All - -'); - $r->print(''); + $r->print('' + .'' + .'' + .'
'.&mt('Parameter Selection').'' + .'' + .'• '.&mt('Select All').'' + .'' + .'
' + .'' + .'• '.&mt('Select Common Only').'' + .'' + .'
' + .'' + .'• '.&mt('Unselect All').'' + .'' + .'
' + .'' + .'' + .'
'.&mt('Add Selection for...').'' + .'' + .'• '.&mt('Problem Dates').'' + .'' + .'' + .' • '.&mt('Content Dates').'' + .'' +# .'
' + .'' + .' • '.&mt('Discussion Settings').'' + .'' + .'' + .' • '.&mt('Visibilities').'' + .'' +# .'
' + .'' + .' • '.&mt('Part Parameters').'' + .'' + .'
' + .'' + .'' + ); } sub partmenu { @@ -1160,21 +1222,18 @@ sub usermenu { my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '. &Apache::loncommon::selectstudent_link('parmform','uname','udom'); my $selscript=&Apache::loncommon::studentbrowser_javascript(); - my %lt=&Apache::lonlocal::texthash( - 'se' => "Section", - 'gr' => "Group", - 'fu' => "For User", - 'oi' => "or ID", - 'ad' => "at Domain" - ); + my $sections=''; my %sectionhash = &Apache::loncommon::get_sections(); my $groups; my %grouphash = &Apache::longroup::coursegroups(); + my $g_s_header=''; + my $g_s_footer=''; + if (%sectionhash) { - $sections=$lt{'se'}.': print(< -$sections -$groups -
-$lt{'fu'} - -$lt{'oi'} - -$lt{'ad'} -$chooseopt - -ENDMENU + + if (%sectionhash || %grouphash) { + $g_s_header='
'.&mt('Group/Section').'
'; + $g_s_footer='
'; + } + + $r->print('' + .$g_s_header + .$sections + .$groups + .$g_s_footer + .'
'.&mt('User').'
' + .&mt('For User [_1] or Student/Employee ID [_2] at Domain [_3]' + ,'' + ,' ' + ,$chooseopt) + .'
' + .'
' + ); } sub displaymenu { @@ -1256,7 +1322,7 @@ sub displaymenu { $r->print('
'.&mt('Select Parameters to View').''. &mt('Select Parts to View').'
'); &parmmenu($r,$allparms,$pscat,$keyorder); - $r->print(''); + $r->print(''); &partmenu($r,$allparts,$psprt); $r->print('
'); } @@ -1899,7 +1965,7 @@ ENDTABLEHEADFOUR } $r->print('

' .&mt('Set Defaults for All Resources in [_1]Specifically for [_2][_3]' - ,$foldermap.'
$showtitle
' + ,$foldermap.'
'.$showtitle.'
' ,$tmp ,''.$coursename.'' ) @@ -2022,6 +2088,8 @@ 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'}; @@ -2126,6 +2194,8 @@ sub crsenv { $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; } @@ -2134,11 +2204,12 @@ sub crsenv { &change_clone($value,\@oldcloner); } # Update environment and nohist_courseids.db - if ($name eq 'description' || $name eq 'cloners') { + 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,'Course'); + $crs,undef,undef,'.'); $chome = &Apache::lonnet::homeserver($crs,$dom); } } @@ -2151,9 +2222,10 @@ sub crsenv { $chome,'notime'); } } - if ($name eq 'cloners') { + if (($name eq 'cloners') || ($name eq 'hidefromcat') || ($name eq 'categories')) { if (ref($crsinfo{$env{'request.course.id'}}) eq 'HASH') { - $crsinfo{$env{'request.course.id'}}{'cloners'} = $value; + &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'); @@ -2209,6 +2281,7 @@ sub crsenv { 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').'
'. @@ -2345,12 +2418,29 @@ sub crsenv { '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"').')', - ); - my @Display_Order = ('url','description','courseid','cloners','grading', + ' ('.&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', + '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', @@ -2360,6 +2450,7 @@ sub crsenv { 'allow_discussion_post_editing', 'languages', 'timezone', + 'datelocale', 'nothideprivileged', 'rndseed', 'receiptalg', @@ -2379,10 +2470,11 @@ sub crsenv { 'texengine', 'disablesigfigs', 'disableexampointprint', - 'task_messages','task_grading', - ); + 'task_messages','task_grading')); foreach my $parameter (sort(keys(%values))) { - unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./)) { + 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); @@ -2412,6 +2504,32 @@ sub crsenv { &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', @@ -2445,14 +2563,26 @@ sub crsenv { my $Parameter=&mt('Parameter'); my $Value=&mt('Value'); my $Set=&mt('Set'); - my $browse_js= - ''; - + my ($jscript,$categorize_js); + my $browse_js = &Apache::loncommon::browser_and_searcher_javascript('parmset'); + if ($can_categorize) { + $categorize_js = <'; my $start_page = &Apache::loncommon::start_page('Set Course Environment', - $browse_js); + $jscript); my $end_page = &Apache::loncommon::end_page(); my $end_table=&Apache::loncommon::end_data_table(); @@ -2473,6 +2603,98 @@ $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.').'

'. + '
'."\n" + .&Apache::loncommon::assign_categories_table($cathash, + $currsettings{'categories'})."\n" + .'

'; + } else { + $categoriesform .= &mt('No categories defined for this domain'); + } + $r->print($start_page.$categoriesform.$end_page); + return; +} + ################################################## # Overview mode ################################################## @@ -2767,8 +2989,8 @@ sub listdata { $$resourcedata{$thiskey}, '',1,'',''). ''. -(($$resourcedata{$thiskey}!=0)?''. -&mt('Shift all dates based on this date').'':''). +(($$resourcedata{$thiskey}!=0)?''. +&mt('Shift all dates based on this date').'':''). &date_sanity_info($$resourcedata{$thiskey}) ); } elsif ($thistype eq 'date_interval') { @@ -2904,6 +3126,8 @@ 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"}); my $start_page = &Apache::loncommon::start_page('Set Parameters'); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview'); $r->print(<'/adm/parmset?action=setoverview', + text=>"Overview Mode"}); my $start_page=&Apache::loncommon::start_page('Modify Parameters'); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview'); $r->print(<'/adm/parmset?action=cleanparameters', + text=>"Clean Parameters"}); my $start_page=&Apache::loncommon::start_page('Clean Parameters'); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Clean'); $r->print(<'/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(<'/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(<print(&header()); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Manager')); $r->print(< @@ -3443,84 +3677,88 @@ ENDMAINFORMHEAD my $mgr = &Apache::lonnet::allowed('mgr',$env{'request.course.id'}); my @menu = - ( { divider=>'Settings for Your Course', - }, - { text => 'Set Course Environment', - action => 'crsenv', - permission => $parm_permission, - help => 'Course_Environment', - }, - { text => 'Set Portfolio Metadata', - action => 'setrestrictmeta', - permission => $parm_permission, - }, - { text => 'Manage Course Slots', - url => '/adm/slotrequest?command=showslots', - permission => $vgr, - }, - { text => 'Reset Student Access Times', - url => '/adm/helper/resettimes.helper', - permission => $mgr, - }, - - { text => 'Set Parameter Setting Default Actions', - action => 'setdefaults', - permission => $parm_permission, - }, - { divider => 'New and Existing Parameter Settings for Your Resources', - }, - { text => 'Set/Modify Resource Parameters - Helper Mode', - url => '/adm/helper/parameter.helper', - permission => $parm_permission, - help => 'Parameter_Helper', - }, - { text => 'Set/Modify Resource Parameters - Overview Mode', - action => 'newoverview', - permission => $parm_permission, - help => 'Parameter_Overview', - }, - { text => 'Set/Modify Resource Parameters - Table Mode', - action => 'settable', - permission => $parm_permission, - help => 'Table_Mode', - }, - { divider => 'Existing Parameter Settings for Your Resources', - }, - { text => 'Modify Resource Parameters - Overview Mode', - action => 'setoverview', - permission => $parm_permission, - help => 'Parameter_Overview', - }, - { text => 'Parameter Change Log and Course Blog Posting/User Notification', - action => 'parameterchangelog', - permission => $parm_permission, - }, + ( { categorytitle=>'Settings for Your Course', + items => [ + { linktext => 'Set Course Environment', + url => '/adm/parmset?action=crsenv', + permission => $parm_permission, + help => 'Course_Environment', + }, + { linktext => 'Set Portfolio Metadata', + url => '/adm/parmset?action=setrestrictmeta', + permission => $parm_permission, + }, + { linktext => 'Manage Course Slots', + url => '/adm/slotrequest?command=showslots', + permission => $vgr, + }, + { linktext => 'Reset Student Access Times', + url => '/adm/helper/resettimes.helper', + permission => $mgr, + }, + + { linktext => 'Set Parameter Setting Default Actions', + url => '/adm/parmset?action=setdefaults', + permission => $parm_permission, + }]}, + { categorytitle => 'New and Existing Parameter Settings for Your Resources', + items => [ + { linktext => 'Set/Modify Resource Parameters - Helper Mode', + url => '/adm/helper/parameter.helper', + permission => $parm_permission, + help => 'Parameter_Helper', + }, + { linktext => 'Set/Modify Resource Parameters - Overview Mode', + url => '/adm/parmset?action=newoverview', + permission => $parm_permission, + help => 'Parameter_Overview', + }, + { linktext => 'Set/Modify Resource Parameters - Table Mode', + url => '/adm/parmset?action=settable', + permission => $parm_permission, + help => 'Table_Mode', + }]}, + { categorytitle => 'Existing Parameter Settings for Your Resources', + items => [ + { linktext => 'Modify Resource Parameters - Overview Mode', + url => '/adm/parmset?action=setoverview', + permission => $parm_permission, + help => 'Parameter_Overview', + }, + { linktext => 'Parameter Change Log and Course Blog Posting/User Notification', + url => '/adm/parmset?action=parameterchangelog', + permission => $parm_permission, + }]} ); - my $menu_html = ''; - foreach my $menu_item (@menu) { - if ($menu_item->{'divider'}) { - $menu_html .= '

'.&mt($menu_item->{'divider'}).'

'; - next; - } - next if (! $menu_item->{'permission'}); - $menu_html.='

'; - $menu_html.=''; - if (exists($menu_item->{'url'})) { - $menu_html.=qq{}; - } else { - $menu_html.= - qq{}; - } - $menu_html.= &mt($menu_item->{'text'}).''; - if (exists($menu_item->{'help'})) { - $menu_html.= - &Apache::loncommon::help_open_topic($menu_item->{'help'}); - } - $menu_html.='

'.$/; - } - $r->print($menu_html); +#---- Remove when done ---- +# my $menu_html = ''; +# foreach my $menu_item (@menu) { +# if ($menu_item->{'categorytitle'}) { +# $menu_html .= '

'.&mt($menu_item->{'categorytitle'}).'

'; +# next; +# } +# next if (! $menu_item->{'permission'}); +# $menu_html.='

'; +# $menu_html.=''; +# if (exists($menu_item->{'url'})) { +# $menu_html.=qq{}; +# } else { +# $menu_html.= +# qq{}; +# } +# $menu_html.= &mt($menu_item->{'linktext'}).''; +# if (exists($menu_item->{'help'})) { +# $menu_html.= +# &Apache::loncommon::help_open_topic($menu_item->{'help'}); +# } +# $menu_html.='

'.$/; +# } +# -------------------------- + + $r->print(&Apache::lonhtmlcommon::generate_menu(@menu)); return; } + ### Set portfolio metadata sub output_row { my ($r, $field_name, $field_text, $added_flag) = @_; @@ -3582,6 +3820,8 @@ sub order_meta_fields { my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; 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"}); &Apache::lonhtmlcommon::add_breadcrumb ({href=>"/adm/parmset?action=setrestrictmeta", text=>"Restrict Metadata"}, @@ -3667,6 +3907,8 @@ sub continue { } sub addmetafield { my ($r)=@_; + &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata', + 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'}; @@ -3717,6 +3959,8 @@ sub setrestrictmeta { my $output; my $item_num; my $put_result; + &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setrestrictmeta', + 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'}; @@ -3824,6 +4068,8 @@ sub get_deleted_meta_fieldnames { 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'); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults'); @@ -4056,6 +4302,8 @@ sub standard_parameter_names { sub parm_change_log { my ($r)=@_; + &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable', + text=>"Parameter Change Log"}); $r->print(&Apache::loncommon::start_page('Parameter Change Log')); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Change Log')); @@ -4236,11 +4484,10 @@ sub handler { &reset_caches(); - if ($r->header_only) { - &Apache::loncommon::content_type($r,'text/html'); - $r->send_http_header; - return OK; - } + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + return OK if $r->header_only; + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['action','state', 'pres_marker', @@ -4264,12 +4511,6 @@ sub handler { my $exists = &check_for_course_info(); if ($env{'request.course.id'} && $parm_permission && $exists) { - - # Start Page - &Apache::loncommon::content_type($r,'text/html'); - $r->send_http_header; - - # # Main switch on form.action and form.state, as appropriate # @@ -4277,64 +4518,36 @@ sub handler { # the table mode if ((($env{'form.command'} eq 'set') && ($env{'form.url'}) && (!$env{'form.dis'})) || ($env{'form.symb'})) { - &Apache::lonhtmlcommon::add_breadcrumb({help=>'Problem_Parameters', - text=>"Problem Parameters"}); &assessparms($r); - } elsif (! exists($env{'form.action'})) { - $r->print(&header()); - $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Manager')); &print_main_menu($r,$parm_permission); - } elsif ($env{'form.action'} eq 'crsenv' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=crsenv', - text=>"Course Environment"}); + } elsif ($env{'form.action'} eq 'crsenv') { &crsenv($r); - } elsif ($env{'form.action'} eq 'setoverview' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview', - text=>"Overview Mode"}); + } elsif ($env{'form.action'} eq 'setoverview') { &overview($r); - } elsif ($env{'form.action'} eq 'addmetadata' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata', - text=>"Add Metadata Field"}); + } elsif ($env{'form.action'} eq 'addmetadata') { &addmetafield($r); - } elsif ($env{'form.action'} eq 'ordermetadata' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata', - text=>"Add Metadata Field"}); + } elsif ($env{'form.action'} eq 'ordermetadata') { &order_meta_fields($r); - } elsif ($env{'form.action'} eq 'setrestrictmeta' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setrestrictmeta', - text=>"Restrict Metadata"}); + } elsif ($env{'form.action'} eq 'setrestrictmeta') { &setrestrictmeta($r); - } elsif ($env{'form.action'} eq 'newoverview' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview', - text=>"Overview Mode"}); + } elsif ($env{'form.action'} eq 'newoverview') { &newoverview($r); - } elsif ($env{'form.action'} eq 'setdefaults' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setdefaults', - text=>"Set Defaults"}); + } elsif ($env{'form.action'} eq 'setdefaults') { &defaultsetter($r); - } elsif ($env{'form.action'} eq 'settable' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable', - text=>"Table Mode", - help => 'Course_Setting_Parameters'}); + } elsif ($env{'form.action'} eq 'settable') { &assessparms($r); - } elsif ($env{'form.action'} eq 'parameterchangelog' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable', - text=>"Parameter Change Log"}); + } elsif ($env{'form.action'} eq 'parameterchangelog') { &parm_change_log($r); - } elsif ($env{'form.action'} eq 'cleanparameters' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=cleanparameters', - text=>"Clean Parameters"}); + } elsif ($env{'form.action'} eq 'cleanparameters') { &clean_parameters($r); - } elsif ($env{'form.action'} eq 'dateshift1' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'}, - text=>"Shifting Dates"}); + } elsif ($env{'form.action'} eq 'dateshift1') { &date_shift_one($r); - } elsif ($env{'form.action'} eq 'dateshift2' && $parm_permission) { - &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'}, - text=>"Shifting Dates"}); + } 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) {