[LON-CAPA-cvs] cvs: loncom /interface lonpickcourse.pm

raeburn lon-capa-cvs@mail.lon-capa.org
Tue, 14 Nov 2006 16:51:42 -0000


This is a MIME encoded message

--raeburn1163523102
Content-Type: text/plain

raeburn		Tue Nov 14 11:51:42 2006 EDT

  Modified files:              
    /loncom/interface	lonpickcourse.pm 
  Log:
  Fix capitalizations in course types.
  
  Include $action argument in &build_filters() to allow use outside lonpickcourse.pm.
  
  Include $action argunment in &display_matched_courses() to allow use outside lonpickcourse.pm.
  
  Include filterlist argument in &build_filters to allow restrictions to be placed on which filters are displayed.
  
  Add $multiple argument to &gochoose_javascript().  Different Javascript function code now emitted depending on whether multiple course selections are allowed or not.
  
  Updated documentation.
  
  
--raeburn1163523102
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20061114115142.txt"

Index: loncom/interface/lonpickcourse.pm
diff -u loncom/interface/lonpickcourse.pm:1.56 loncom/interface/lonpickcourse.pm:1.57
--- loncom/interface/lonpickcourse.pm:1.56	Mon Nov 13 15:50:57 2006
+++ loncom/interface/lonpickcourse.pm	Tue Nov 14 11:51:42 2006
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Pick a course
 #
-# $Id: lonpickcourse.pm,v 1.56 2006/11/13 20:50:57 albertel Exp $
+# $Id: lonpickcourse.pm,v 1.57 2006/11/14 16:51:42 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -55,7 +55,7 @@
     my ($type,$title,$jscript,$multelement,$multiple,$roleelement,
         $lastaction,$autosubmit,$submitopener);
 
-    # Get course type - Course or Non-standard course.
+    # Get course type - Course or Non-standard Course.
     $type = $env{'form.type'};
     if (!defined($env{'form.type'})) {
         $type = 'Course';
@@ -114,7 +114,8 @@
     $r->print($submitopener);
 
 # ------------------------------------------ Display of filters to limit search
-    my (%filter,%list);
+    my $filter = {};
+    my $action = '/adm/pickcourse';
     if (!$onlyown) {
         my $filterlist = ['domainfilter','descriptfilter',
                           'instcodefilter','ownerfilter',
@@ -125,13 +126,13 @@
             push(@{$filterlist},'coursefilter');
         }
         $r->print(&build_filters($filterlist,$type,$roleelement,$multelement,
-                                 \%filter,\%list));
+                                 $filter,$action));
     }
 
 # ---------------------------------------------------------------- Get the data
     if ($env{'form.gosearch'} || $onlyown) {
-        my %courses = &search_courses($r,$type,$onlyown,\%filter);
-        &display_matched_courses($r,$type,$multiple,%courses);
+        my %courses = &search_courses($r,$type,$onlyown,$filter);
+        &display_matched_courses($r,$type,$multiple,$action,%courses);
     }
     $r->print(&Apache::loncommon::end_page());
     return OK;
@@ -166,8 +167,7 @@
 }
 
 sub display_matched_courses {
-    my ($r,$type,$multiple,%courses) = @_;
-    my $action = '/adm/pickcourse';
+    my ($r,$type,$multiple,$action,%courses) = @_;
     if ($env{'form.form'} eq 'portform') {
         $action = '/adm/portfolio';
     }
@@ -217,12 +217,10 @@
     if (!%courses) {
         $r->print(&mt('None found'));
     } elsif ($multiple) {
-        $r->print('<input type="button" value="Submit" onClick="gochoose('."'','','',1)".'" />');
+        $r->print('<input type="button" value="Submit" onClick="gochoose('."'','','')".'" />');
     }
     $r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'.
               "\n".'<input type="hidden" name="pickedcourse" value="" />'."\n".
-              '<input type="hidden" name="cnumelement" value="'.$env{'form.cnumelement'}.'" />'."\n".
-              '<input type="hidden" name="cdomelement" value="'.$env{'form.cdomelement'}.'" />'."\n".
               '<input type="hidden" name="type" value="'.$type.'" />'."\n");
     if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) {
         $r->print('<input type="hidden" name="roleelement" value="'.
@@ -233,6 +231,14 @@
         $r->print('<input type="hidden" name="cdom" value="" />');
         $r->print('<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />');
         $r->print('<input type="hidden" name="action" value="rolepicker" />');
+    } elsif ($env{'form.form'} eq 'modifycourse') {
+        $r->print('<input type="hidden" name="phase" value="menu" />'."\n");
+        $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','pickedcourse','type','form']));
+    } else {
+        $r->print('<input type="hidden" name="cnumelement" value="'.
+                  $env{'form.cnumelement'}.'" />'."\n".  
+                  '<input type="hidden" name="cdomelement" value="'.
+                  $env{'form.cdomelement'}.'" />'."\n");
     }
     $r->print("</form>\n");
     return;
@@ -246,8 +252,15 @@
 }
 
 sub build_filters {
-    my ($filterlist,$type,$roleelement,$multelement,$filter) = @_;
+    my ($filterlist,$type,$roleelement,$multelement,$filter,$action,
+        $caller) = @_;
     my $list;
+    my $formname;
+    if (defined($env{'form.form'})) {
+         $formname = $env{'form.form'};
+    } else {
+         $formname = $caller;
+    }
     my ($domainselectform,$sincefilterform,$ownerdomselectform,
         $instcodeform,$typeselectform);
     foreach my $item (@{$filterlist}) {
@@ -298,51 +311,68 @@
     $typeselectform =  '<select name="type" size="1"';
     $typeselectform .= ">\n";
     if ($type eq 'Course') {
-        $instcodeform = $lt{'cin'}.': <input type="text" name="instcodefilter"
- size="10" value="'.$list->{'instcodefilter'}.'" /><br />';
+        $instcodeform = 
+                '<input type="text" name="instcodefilter" size="10" value="'.
+                $list->{'instcodefilter'}.'" />';
     }
-    foreach my $posstype ('Course','Non-standard course') {
+    foreach my $posstype ('Course','Non-standard Course') {
         $typeselectform.='<option value="'.$posstype.'" "'.
             ($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype</option>\n";
     }
     $typeselectform.="</select>";
-    my $name_input;
-    if ($env{'form.cnameelement'} ne '') {
-        $name_input ='<input type="hidden" name="cnameelement" value="'.
-                     $env{'form.cnameelement'}.'" />';
-    }
-    my $courseidtag;
-    if (exists($filter->{'coursefilter'})) {
-        $courseidtag=&mt('LON-CAPA course ID').
-                     ': <input type="text" name="coursefilter" size="25" value="'.                     $list->{'coursefilter'}.'" /><br />';
-    }
-    my $output = <<"END";
-<form method="post" name="filterpicker" action="/adm/pickcourse">
+    my $output = qq|
+<form method="post" name="filterpicker" action="$action">
+<input type="hidden" name="form" value="$formname" />
+|;
+    if ($formname eq 'modifycourse') {
+        $output .= '<input type="hidden" name="phase" value="courselist" />';
+    } else {     
+        my $name_input;
+        if ($env{'form.cnameelement'} ne '') {
+            $name_input = '<input type="hidden" name="cnameelement" value="'.
+                          $env{'form.cnameelement'}.'" />';
+        }
+        $output .= qq|
 <input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" />
 <input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" />
 $name_input
-<input type="hidden" name="form" value="$env{'form.form'}" />
 $roleelement
 $multelement
-$lt{'cac'}: $sincefilterform
-<br />
-$lt{'cdo'}: $domainselectform
-<br />
-$lt{'cog'}: $typeselectform
-<br />
-$instcodeform
-$lt{'cow'}:
-<input type="text" name="ownerfilter" size="10" value="$list->{'ownerfilter'}" />
-<br />
-$lt{'cod'}: $ownerdomselectform
-<br />
-$courseidtag
-$lt{'cde'}:
-<input type="text" name="descriptfilter" size="40" value="$list->{'descriptfilter'}" />
+|;
+    }
+    if ($sincefilterform) { 
+        $output .= $lt{'cac'}.': '.$sincefilterform.'<br />'."\n";
+    }
+    if ($domainselectform) {
+        $output .= $lt{'cdo'}.': '.$domainselectform.'<br />'."\n";
+    }
+    if ($typeselectform) {
+        $output .= $lt{'cog'}.': '.$typeselectform.'<br />'."\n";
+    }
+    if ($instcodeform) {
+        $output .= $lt{'cin'}.': '.$instcodeform.'<br />'."\n";
+    }
+    if (exists($filter->{'ownerfilter'})) {
+        $output .= $lt{'cow'}.': '.
+                   '<input type="text" name="ownerfilter" size="10" value="'.
+                   $list->{'ownerfilter'}.'" /><br />'."\n".
+                   $lt{'cod'}.': '.$ownerdomselectform.'<br />'."\n";
+    }
+    if (exists($filter->{'coursefilter'})) {
+        $output .= &mt('LON-CAPA course ID').': '.
+                   '<input type="text" name="coursefilter" size="25" value="'.
+                    $list->{'coursefilter'}.'" /><br />';
+    }
+    if (exists($filter->{'descriptfilter'})) {
+        $output .=$lt{'cde'}.': '.
+                  '<input type="text" name="descriptfilter" size="40" value="'.
+                  $list->{'descriptfilter'}.'" />'."\n";
+    }
+    $output .= qq|
 <p><input type="submit" name="gosearch" value="Search" /></p>
 </form>
 <hr />
-END
+|;
     return $output; 
 }
 
@@ -396,67 +426,73 @@
 }
 
 sub gochoose_javascript {
-    my ($type,$autosubmit,$lastaction) = @_;
+    my ($type,$multiple,$autosubmit,$lastaction) = @_;
     my %elements = (
                      'Course' => {
                                  name  => 'coursepick',
                                  total => 'coursetotal',
                                  list  => 'courselist',
                                  },
-                     'Non-standard course' => {
+                     'Non-standard Course' => {
                                  name  => 'grouppick',
                                  total => 'grouptotal',
                                  list  => 'grouplist',
                               },
                     );
-    my $name_code;
-    if ($env{'form.cnameelement'} ne '') {
-        $name_code = 'opener.document.'.$env{'form.form'}.'.'.
-                      $env{'form.cnameelement'}.'.value=cdesc;';
-    }
-    my $output .= <<"ENDSCRIPT";
+    my $output .= qq|
 <script type="text/javascript">
-function gochoose(cname,cdom,cdesc,multiple,caller) {
+function gochoose(cname,cdom,cdesc) {
     var openerForm = "$env{'form.form'}";
     courseCount = 0;
     var courses = '';
-    if (multiple) {
-        if (typeof(document.courselist.course_id.length) == 'undefined') {
-            // only 1 course checkbox was created
-            if (document.courselist.course_id.checked) {
-                courses = courses + document.courselist.course_id.value + "&&";
+|;
+    if ($multiple) {
+        $output .= <<"ENDSCRIPT";
+    courseCount = 0;
+    var courses = '';
+    if (typeof(document.courselist.course_id.length) == 'undefined') {
+        // only 1 course checkbox was created
+        if (document.courselist.course_id.checked) {
+            courses = courses + document.courselist.course_id.value + "&&";
+            courseCount ++;
+        }
+    } else {
+        for (var j=0; j<document.courselist.course_id.length; j++) {
+            if (document.courselist.course_id[j].checked) {
+                courses = courses + document.courselist.course_id[j].value + "&&";
                 courseCount ++;
             }
+        }
+    }
+    opener.document.$env{'form.form'}.$elements{$type}{'total'}.value = courseCount;
+    if (typeof(opener.document.$env{'form.form'}.$elements{$type}{'name'}.length) ==
+        'undefined') {
+        if (opener.document.$env{'form.form'}.$elements{$type}{'name'}.value == 'specific') {
+            opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = true;
         } else {
-            for (var j=0; j<document.courselist.course_id.length; j++) {
-                if (document.courselist.course_id[j].checked) {
-                    courses = courses + document.courselist.course_id[j].value + "&&";
-                    courseCount ++;
-                }
-            }
+            opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = false;
         }
-        opener.document.$env{'form.form'}.$elements{$type}{'total'}.value = courseCount;
-        if (typeof(opener.document.$env{'form.form'}.$elements{$type}{'name'}.length) ==
-            'undefined') {
-            if (opener.document.$env{'form.form'}.$elements{$type}{'name'}.value == 'specific') {
-                opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = true;
+    } else {
+        for (var j=0; j<opener.document.$env{'form.form'}.$elements{$type}{'name'}.length; j++) {
+            if (opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].value == 'specific') {
+                opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = true;
             } else {
-                opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = false;
+                opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = false;
             }
-        } else {
-            for (var j=0; j<opener.document.$env{'form.form'}.$elements{$type}{'name'}.length; j++) {
-                if (opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].value == 'specific') {
-                    opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = true;
-                } else {
-                    opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = false;
-                }
-            }
-        }
-        if (courseCount > 0) {
-            courses = courses.substr(0,courses.length-2);
-            opener.document.$env{'form.form'}.$elements{$type}{'list'}.value = courses;
         }
+    }
+    if (courseCount > 0) {
+        courses = courses.substr(0,courses.length-2);
+        opener.document.$env{'form.form'}.$elements{$type}{'list'}.value = courses;
+    }
+ENDSCRIPT
     } else {
+        my $name_code;
+        if ($env{'form.cnameelement'} ne '') {
+            $name_code = 'opener.document.'.$env{'form.form'}.'.'.
+                          $env{'form.cnameelement'}.'.value=cdesc;';
+        }
+        $output .= qq|
         $name_code
         opener.document.$env{'form.form'}.$env{'form.cnumelement'}.value=cname;
         var slct=opener.document.$env{'form.form'}.$env{'form.cdomelement'};
@@ -469,7 +505,9 @@
                 if (slct.options[i].value==cdom) { slct.selectedIndex=i; }
             }
         }
+|;
     }
+    $output .= qq|
     if (openerForm == 'portform') {
         document.courselist.cnum.value = cname;
         document.courselist.cdom.value = cdom;
@@ -478,7 +516,7 @@
     $lastaction
 }
 </script>
-ENDSCRIPT
+|;
     return $output;
 }
 
@@ -512,7 +550,7 @@
 Course Domain - the domain of the course
 
 =item *
-Course Type - Course or Non-standard course
+Course Type - Course or Non-standard Course
 
 =item *
 Course Institutional Code - the institutional identifier assigned to the course
@@ -565,7 +603,7 @@
 X<create_user_javascript()>
 B<create_user_javascript($type)>:
 
-Input: 1 - $type  - the course type - Course or Non-standard course
+Input: 1 - $type  - the course type - Course or Non-standard Course
 
 Output: 1 - $output - javascript wrapped in E<lt>scriptE<gt>E<lt>/scriptE<gt> tags 
 
@@ -576,9 +614,9 @@
 
 =item *
 X<display_matched_courses()>
-B<display_matched_courses($r,$type,$multiple,%courses)>:
+B<display_matched_courses($r,$type,$multiple,$action,%courses)>:
 
-Input: 4 - request object, course type, multiple (0 or 1), hash of courses.
+Input: 5 - request object, course type, multiple (0 or 1), form action; hash of courses.
 
 Output: 0
 
@@ -597,10 +635,10 @@
 
 =item *
 X<build_filters()>
-B<build_filters($filterlist,$type,$roleelement,$multelement,$filter)>:
+B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action)>:
 
 
-Input: 5 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values.
+Input: 6 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values; form action.
 
 Output: 1 - $output - HTML for display of search criteria, and hidden form elements. 
 
@@ -631,9 +669,9 @@
 
 =item *
 X<gochoose_javascript()>
-B<gochoose_javascript($type,$autosubmit,$lastaction)>:
+B<gochoose_javascript($type,$multiple,$autosubmit,$lastaction)>:
 
-Input: 3 - course type; in context of DC selecting a CC role in a course: javascript code from Apache::lonroles::processpick(); final action to take after user chooses course(s):  either close window, or submit form for display of next page etc.
+Input: 4 - course type; single (0) or multiple courses (1); in context of DC selecting a CC role in a course: javascript code from Apache::lonroles::processpick(); final action to take after user chooses course(s):  either close window, or submit form for display of next page etc.
 
 Output: 1  $output - javascript wrapped in E<lt>scriptE<gt>E<lt>/scriptE<gt> tags
 

--raeburn1163523102--