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

www www@source.lon-capa.org
Wed, 09 Mar 2011 00:35:57 -0000


www		Wed Mar  9 00:35:57 2011 EDT

  Modified files:              
    /loncom/interface	lonquickgrades.pm 
  Log:
  Move up and down
  
  
Index: loncom/interface/lonquickgrades.pm
diff -u loncom/interface/lonquickgrades.pm:1.71 loncom/interface/lonquickgrades.pm:1.72
--- loncom/interface/lonquickgrades.pm:1.71	Sun Feb 20 23:57:35 2011
+++ loncom/interface/lonquickgrades.pm	Wed Mar  9 00:35:57 2011
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Quick Student Grades Display
 #
-# $Id: lonquickgrades.pm,v 1.71 2011/02/20 23:57:35 www Exp $
+# $Id: lonquickgrades.pm,v 1.72 2011/03/09 00:35:57 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -165,7 +165,7 @@
 
 sub endGradeScreen {
    my ($r)=@_;
-   $r->print('</div></div></div>');
+   $r->print('</div></div></div>'.&Apache::loncommon::end_page());
 }
 
 
@@ -398,9 +398,7 @@
                  .&Apache::loncommon::end_data_table_row());
     }
 
-    $r->print(&Apache::loncommon::end_data_table()
-             .&Apache::loncommon::end_page());
-
+    $r->print(&Apache::loncommon::end_data_table());
 }
 
 #
@@ -425,24 +423,26 @@
 # Loading old categories
     %categories=&Apache::lonnet::dump('grading_categories',$cdom,$cnum);
 # Storing
-    if (($cangrade) && (($env{'form.storechanges'}) || ($env{'form.storemove'} ne ''))) {
+    if (($cangrade) && (($env{'form.storechanges'}) || ($env{'form.storemove'} ne '') || ($env{'form.cmd'} ne ''))) {
 # Process the changes
         %categories=&process_category_edits($r,$cangrade,%categories);
 # Actually store
-        &Apache::lonnet::logthis("Storing ".$categories{'order'});
         &Apache::lonnet::put('grading_categories',\%categories,$cdom,$cnum);
     }
 # new categories loaded now
 # Form only generated if user can change the grading categories
     if ($cangrade) {
-        $r->print('<form method="post">');
+        $r->print('<form method="post" name="quickform" action="/adm/quickgrades">');
     }
 #
     &output_category_table($r,$cangrade,$navmap,%categories);
 #
     if ($cangrade) {
         $r->print('<input type="hidden" name="storemove" value="" />'.
-                  '<input type="submit" name="storechanges" value="'.&mt("Save changes to grading categories").'" /></form>');
+                  '<input type="hidden" name="cmd" value="" />'.
+                  '<input type="submit" name="storechanges" value="'.&mt("Save changes to grading categories").'" />'.
+                  '<script>function storecmd (cmd) { document.quickform.cmd.value=cmd; document.quickform.submit(); }</script>'.
+                  '</form>');
     }
 }
 
@@ -453,20 +453,25 @@
 sub process_category_edits {
     my ($r,$cangrade,%categories)=@_;
     unless ($cangrade) { return %categories; }
+# First store everything
+    foreach my $id (split(/\,/,$categories{'order'})) {
+        %categories=&set_category_name($cangrade,$id,$env{'form.name_'.$id},%categories);
+        %categories=&set_category_total($cangrade,$id,$env{'form.totaltype_'.$id},$env{'form.total_'.$id},%categories);
+        %categories=&set_category_weight($cangrade,$id,$env{'form.weight_'.$id},%categories);
+# More changes here
+    }
+
+# Now deal with commands
     my $cmd=$env{'form.cmd'};
     if ($cmd eq 'createnewcat') {
         %categories=&make_new_category($r,$cangrade,undef,%categories);
+    } elsif ($cmd=~/^up\_(.+)$/) {
+        %categories=&move_up_category($1,$cangrade,%categories);
+    } elsif ($cmd=~/^down\_(.+)$/) {
+        %categories=&move_down_category($1,$cangrade,%categories);
     } elsif ($cmd=~/^delcat\_(.+)$/) {
         %categories=&del_category($1,$cangrade,%categories);
-    } else {
-# Simply store the rest of the stuff
-        foreach my $id (split(/\,/,$categories{'order'})) {
-            %categories=&set_category_name($cangrade,$id,$env{'form.name_'.$id},%categories);
-            %categories=&set_category_total($cangrade,$id,$env{'form.totaltype_'.$id},$env{'form.total_'.$id},%categories);
-            %categories=&set_category_weight($cangrade,$id,$env{'form.weight_'.$id},%categories);
-# More changes here
-        }
-    }
+    } 
     return %categories;
 }
 
@@ -530,12 +535,12 @@
         $r->print(<<ENDMOVE);
 <td>
 <div class="LC_docs_entry_move">
-  <a href='/adm/quickgrades?cmd=up_$id&storechanges=1'>
+  <a href='javascript:storecmd("up_$id");'>
     <img src="${iconpath}move_up.gif" alt='$lt{'up'}' class="LC_icon" />
   </a>
 </div>
 <div class="LC_docs_entry_move">
-  <a href='/adm/quickgrades?cmd=down_$id&storechanges=1'>
+  <a href='javascript:storecmd("down_$id");'>
     <img src="${iconpath}move_down.gif" alt='$lt{'dw'}' class="LC_icon" />
   </a>
 </div>
@@ -550,7 +555,7 @@
             }
         }
         $r->print("\n</select>\n</td>\n");
-        $r->print('<td><a href="/adm/quickgrades?cmd=delcat_'.$id.'&storechanges=1">'.&mt('Delete').'</a></td>');
+        $r->print('<td><a href="javascript:storecmd(\'delcat_'.$id.'\');">'.&mt('Delete').'</a></td>');
         $r->print('<td><input type="text" name="name_'.$id.
                   '" value="'.&Apache::lonhtmlcommon::entity_encode($categories{$id.'_name'}).'" /></td>');
     } else {
@@ -602,7 +607,7 @@
     my ($r,$cangrade,$sum,$total)=@_;
     $r->print(&Apache::loncommon::start_data_table_row());
     if ($cangrade) {
-        $r->print('<td colspan="3"><a href="/adm/quickgrades?cmd=createnewcat&storechanges=1">'.&mt('Create New Category').'</a></td>');
+        $r->print('<td colspan="3"><a href="javascript:storecmd(\'createnewcat\');">'.&mt('Create New Category').'</a></td>');
     }
     $r->print('<td colspan="5">'.&mt('Current:').$sum.'<br />'.&mt('Total:').$total.'<br /></td>');
 }
@@ -648,6 +653,29 @@
 }
 
 #
+# Move category up
+#
+
+sub move_up_category {
+    my ($id,$cangrade,%categories)=@_;
+    my $currentpos=&current_pos_category($id,%categories);
+    if ($currentpos<1) { return %categories; }
+    return &move_category($id,$cangrade,$currentpos-1,%categories);
+}
+
+#
+# Move category down
+#
+
+sub move_down_category {
+    my ($id,$cangrade,%categories)=@_;
+    my $currentpos=&current_pos_category($id,%categories);
+    my @order=split(/\,/,$categories{'order'});
+    if ($currentpos>=$#order) { return %categories; }
+    return &move_category($id,$cangrade,$currentpos+1,%categories);
+}
+
+#
 # Move a category to a desired position n the display order
 #