[Bio] / FigWebServices / assignments.cgi Repository:
ViewVC logotype

Diff of /FigWebServices/assignments.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1, Wed Jan 14 20:20:32 2004 UTC revision 1.9, Tue May 25 17:27:49 2004 UTC
# Line 1  Line 1 
   
1  use FIG;  use FIG;
2  my $fig = new FIG;  my $fig = new FIG;
3    
# Line 22  Line 21 
21    
22  my $html = [];  my $html = [];
23    
24    my $user = $cgi->param('user');
25    if (! $user)
26    {
27        push(@$html,$cgi->h1("Sorry, you need to specify a user to process assignment sets"));
28    }
29    else
30    {
31  my $request = $cgi->param("request");  my $request = $cgi->param("request");
32  $request = defined($request) ? $request : "";  $request = defined($request) ? $request : "";
33    
34  if ($cgi->param('delete checked entries'))  if ($cgi->param('delete checked entries'))
35  {  {
36      &delete_checked($fig,$cgi,$html);      &delete_checked($fig,$cgi,$html);
37            $cgi->delete('delete checked entries');
38            $cgi->delete("request");
39            $cgi->delete("set");
40      &show_initial($fig,$cgi,$html);      &show_initial($fig,$cgi,$html);
41  }  }
42  elsif    ($request eq "edit_set")  elsif    ($request eq "edit_set")
# Line 46  Line 55 
55  {  {
56      &show_initial($fig,$cgi,$html);      &show_initial($fig,$cgi,$html);
57  }  }
58    }
59    
60  &HTML::show_page($cgi,$html);  &HTML::show_page($cgi,$html);
61    
62  sub show_initial {  sub show_initial {
63      my($fig,$cgi,$html) = @_;      my($fig,$cgi,$html) = @_;
64        my($set,$when,$comment);
65    
66      my @sets = &assignment_sets;      my $user = $cgi->param('user');
67        my @sets = &assignment_sets($user);
68      if (@sets == 0)      if (@sets == 0)
69      {      {
70          push(@$html,$cgi->h1("No Assignment Sets Defined"));          push(@$html,$cgi->h1("No Assignment Sets Defined"));
# Line 60  Line 72 
72      }      }
73    
74      my $target = "window$$";      my $target = "window$$";
     my $user = $cgi->param('user');  
75      push(@$html, $cgi->h1('Assignment Sets'),      push(@$html, $cgi->h1('Assignment Sets'),
76                   $cgi->start_form(-action => "assignments.cgi",                   $cgi->start_form(-action => "assignments.cgi",
77                                    -target => $target,                                    -target => $target,
# Line 71  Line 82 
82      my $col_hdrs = ["Edit/Examine","Delete","Accept All","Set Date","Comment"];      my $col_hdrs = ["Edit/Examine","Delete","Accept All","Set Date","Comment"];
83      my $tab      = [];      my $tab      = [];
84      my $title    = "Existing Assignment Sets";      my $title    = "Existing Assignment Sets";
85    
86      foreach $set (sort { &compare_set_names($a,$b) } @sets)      foreach $set (sort { &compare_set_names($a,$b) } @sets)
87      {      {
88          $set =~ /(\d+-\d+-\d+:\d+:\d+:\d+)(:(.*))?/;          $set =~ /(\d+-\d+-\d+:\d+:\d+:\d+)(:(.*))?/;
# Line 91  Line 103 
103  sub edit_link {  sub edit_link {
104      my($cgi,$set) = @_;      my($cgi,$set) = @_;
105    
106      return $cgi->self_url() . "&request=edit_set&set=$set";      return "<a href=" . $cgi->self_url() . "&request=edit_set&set=$set&all=0>edit</a>" . "/" .
107               "<a href=" . $cgi->self_url() . "&request=edit_set&set=$set&all=1>examine</a>";
108  }  }
109    
110  sub delete_link {  sub delete_link {
111      my($cgi,$set) = @_;      my($cgi,$set) = @_;
112    
113      return $cgi->self_url() . "&request=delete_set&set=$set";      return "<a href=" . $cgi->self_url() . "&request=delete_set&set=$set>delete</a>";
114  }  }
115    
116  sub accept_link {  sub accept_link {
117      my($cgi,$set) = @_;      my($cgi,$set) = @_;
118    
119      return $cgi->self_url() . "&request=accept_set&set=$set";      return "<a href=" . $cgi->self_url() . "&request=accept_set&set=$set>accept</a>";
120  }  }
121    
122  sub assignment_sets {  sub assignment_sets {
123        my($user) = @_;
124    
125        my $userR = $user;
126        $userR =~ s/^master://;
127      my @sets = ();      my @sets = ();
128      if (opendir(SETS,"$FIG_Config::data/Assignments"))      if (opendir(SETS,"$FIG_Config::data/Assignments/$userR"))
129      {      {
130          @sets = grep { $_ =~ /^\d+-\d+-\d+:\d+:\d+:\d+/ } readdir(SETS);          @sets = grep { $_ =~ /^\d+-\d+-\d+:\d+:\d+:\d+/ } readdir(SETS);
131          closedir(SETS);          closedir(SETS);
# Line 131  Line 147 
147          }          }
148          else          else
149          {          {
150              returnb ($whenA[6] cmp $whenB[6]);              return ($whenA[6] cmp $whenB[6]);
151          }          }
152      }      }
153      return ($a cmp $b);      return ($a cmp $b);
# Line 147  Line 163 
163          push(@$html,$cgi->h1("Sorry, but you need to specify a user to edit assignments"));          push(@$html,$cgi->h1("Sorry, but you need to specify a user to edit assignments"));
164          return;          return;
165      }      }
     elsif ($user =~ /^master:/)  
     {  
         $userR = "master";  
     }  
166      else      else
167      {      {
168          $userR = $user;          $userR = $user;
169            $userR =~ s/^master://;
170      }      }
171    
172      my $set  = $cgi->param('set');      my $set  = $cgi->param('set');
# Line 164  Line 177 
177      }      }
178    
179      my $target = "window$$";      my $target = "window$$";
180      if (-s "$FIG_Config::data/Assignments/$userR/$set")      if (-e "$FIG_Config::data/Assignments/$userR/$set")
181      {      {
182          push(@$html, $cgi->h1('Edit Set $set'),          if (open(SET,"<$FIG_Config::data/Assignments/$userR/$set"))
183            {
184                my $op = $cgi->param('all') ? "Examine" : "Edit";
185                push(@$html, $cgi->h1("$op Set $set"),
186                       $cgi->start_form(-method => 'post',                       $cgi->start_form(-method => 'post',
187                                        -target => $target,                                        -target => $target,
188                                        -action => 'edit_checked.cgi'                                            -action => 'assignments.cgi'
189                                        ),                                        ),
190                       $cgi->hidden(-name => 'user', -value => $user),                       $cgi->hidden(-name => 'user', -value => $user),
191                       $cgi->hidden(-name => 'set', -value => $set)                       $cgi->hidden(-name => 'set', -value => $set)
# Line 177  Line 193 
193    
194          $col_hdrs = ["delete","PEG","Functions"];          $col_hdrs = ["delete","PEG","Functions"];
195          $tab      = [];          $tab      = [];
196          if (open(SET,"<$FIG_Config::data/Assignments/$userR/$set"))              my @keep = ();
         {  
197              while (defined($line = <SET>))              while (defined($line = <SET>))
198              {              {
199                  chop $line;                  chop $line;
# Line 187  Line 202 
202                  $func2 = &func_of($fig,$peg,$user);                  $func2 = &func_of($fig,$peg,$user);
203                  if ($func1 ne $func2)                  if ($func1 ne $func2)
204                  {                  {
205                        push(@keep,"$line\n");
206                      push(@$tab,[                      push(@$tab,[
207                                  $cgi->checkbox(-name => 'checked', -value => $peg, -checked => 1,-override => 1),                                  $cgi->checkbox(-name => 'checked', -value => $peg, -checked => 0,-override => 1),
208                                  &HTML::fid_link($cgi,$peg),                                  &HTML::fid_link($cgi,$peg),
209                                  "$func1<br>$func2"                                  "\@nowrap:$func1<br>$func2"
210                                 ]                                 ]
211                           );                           );
212                  }                  }
213              }              }
214              close(SET);              close(SET);
215          }  
216          push(@$html,&HTML::make_table($col_hdrs,$tab,"",["nowrap"]));  #           if (open(SET,">$FIG_Config::data/Assignments/$userR/$set"))
217    #           {
218    #               foreach $line (@keep)
219    #               {
220    #                   print SET $line;
221    #               }
222    #               close(SET);
223    #               chmod(0777,"$FIG_Config::data/Assignments/$userR/$set");
224    #           }
225    
226                if (@$tab > 0)
227                {
228                    push(@$html,&HTML::make_table($col_hdrs,$tab,""));
229          push(@$html,$cgi->submit("delete checked entries"));          push(@$html,$cgi->submit("delete checked entries"));
230      }      }
231                else
232                {
233                    push(@$html,$cgi->h2("No new assignments"));
234                }
235            }
236            else
237            {
238                push(@$html,$cgi->h1("Sorry, could not open $FIG_Config::data/Assignments/$userR/$set; sounds like a permissions problem"));
239            }
240        }
241        else
242        {
243            push(@$html,$cgi->h1("Sorry, $set does not exist for user $user"));
244        }
245  }  }
246    
247  sub delete_set {  sub delete_set {
# Line 209  Line 251 
251      my $userR = $user;      my $userR = $user;
252      $userR =~ s/^master://;      $userR =~ s/^master://;
253      my $set  = $cgi->param('set');      my $set  = $cgi->param('set');
254      if (-s "$FIG_Config::data/Assignments/$userR/$set")      if (-e "$FIG_Config::data/Assignments/$userR/$set")
255      {      {
256          unlink("$FIG_Config::data/Assignments/$userR/$set");          unlink("$FIG_Config::data/Assignments/$userR/$set");
257          push(@$html,$cgi->h1("Deleted set $set"));          push(@$html,$cgi->h1("Deleted set $set"));
# Line 225  Line 267 
267    
268      my $user = $cgi->param('user');      my $user = $cgi->param('user');
269      my $set  = $cgi->param('set');      my $set  = $cgi->param('set');
270        my @flds = split(/:/,$set);
271        my $who = $flds[4];
272    
273      if ($user)      if ($user)
274      {      {
275          my $userR = $user;          my $userR = $user;
276          $userR =~ s/^master://;          if ($userR =~ s/^master://)
277          if (system("fig assign_functionF $user $FIG_Config::data/Assignments/$userR/$set > /dev/null") == 0)          {
278                $who = "master:$who";
279            }
280    
281            if (system("$FIG_Config::bin/fig assign_functionF $who $FIG_Config::data/Assignments/$userR/$set > /dev/null") == 0)
282          {          {
283              push(@$html,$cgi->h1("Made Assignments from $set"));              push(@$html,$cgi->h1("Made Assignments from $set"));
284          }          }
285          else          else
286          {          {
287              push(@$html,$cgi->h1("Call Support: some error occurred"));              push(@$html,$cgi->h1("Call Support: some error occurred in accepting assignments from $FIG_Config::data/Assignments/$userR/$set"));
288          }          }
289      }      }
290      else      else
# Line 261  Line 310 
310    
311  sub delete_checked {  sub delete_checked {
312      my($fig,$cgi,$html) = @_;      my($fig,$cgi,$html) = @_;
313        my($line);
314    
315      my $user = $cgi->param('user');      my $user = $cgi->param('user');
316      my $set  = $cgi->param('set');      my $set  = $cgi->param('set');
317        my @checked = $cgi->param('checked');
318        my %checked = map { $_ => 1 } @checked;
319    
320      if ($user)      if ($user)
321      {      {
322          my $userR = $user;          my $userR = $user;
323          $userR =~ s/^master://;          $userR =~ s/^master://;
324          if (-s "$FIG_Config::data/Assignments/$userR/$set")          if (-s "$FIG_Config::data/Assignments/$userR/$set")
325          {          {
326              @entries = `cat $FIG_Config::data/Assignments/$userR/$set`;              if (rename("$FIG_Config::data/Assignments/$userR/$set","$FIG_Config::data/Assignments/$userR/$set~"))
327                {
328                    if (open(IN,"<$FIG_Config::data/Assignments/$userR/$set~") &&
329                        open(OUT,">$FIG_Config::data/Assignments/$userR/$set"))
330                    {
331                        while (defined($line = <IN>))
332                        {
333                            if (($line =~ /^(\S+)/) && (! $checked{$1}))
334                            {
335                                print OUT $line;
336                            }
337                        }
338                        close(IN);
339                        close(OUT);
340    
341                        if (chmod(0777,"$FIG_Config::data/Assignments/$userR/$set"))
342                        {
343                            unlink("$FIG_Config::data/Assignments/$userR/$set~");
344                            push(@$html,$cgi->h1("ok"));
345                        }
346                        else
347                        {
348                            push(@$html,$cgi->h1("chmod failure: permissions problem"));
349                        }
350                    }
351                    else
352                    {
353                        push(@$html,$cgi->h1("could not open $FIG_Config::data/Assignments/$userR/$set; maybe a permissions problem"));
354                    }
355                }
356                else
357                {
358                    push(@$html,$cgi->h1("Could not rename $FIG_Config::data/Assignments/$userR/$set"));
359                }
360            }
361        }
362        else
363        {
364            push(@$html,$cgi->h1("invalid user"));
365        }
366  }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.9

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3