| … | |
… | |
| 28 | |
28 | |
| 29 | if (defined($r->param('deleteSelected'))) { |
29 | if (defined($r->param('deleteSelected'))) { |
| 30 | foreach my $wannaDelete ($r->param('selectedSet')) { |
30 | foreach my $wannaDelete ($r->param('selectedSet')) { |
| 31 | $db->deleteGlobalSet($wannaDelete); |
31 | $db->deleteGlobalSet($wannaDelete); |
| 32 | } |
32 | } |
|
|
33 | } elsif (defined($r->param('scoreSelected'))) { |
|
|
34 | |
| 33 | } elsif (defined($r->param('makeNewSet'))) { |
35 | }elsif (defined($r->param('makeNewSet'))) { |
| 34 | my $newSetRecord = $db->{set}->{record}->new(); |
36 | my $newSetRecord = $db->{set}->{record}->new(); |
| 35 | my $newSetName = $r->param('newSetName'); |
37 | my $newSetName = $r->param('newSetName'); |
| 36 | $newSetRecord->set_id($newSetName); |
38 | $newSetRecord->set_id($newSetName); |
| 37 | $newSetRecord->set_header(""); |
39 | $newSetRecord->set_header(""); |
| 38 | $newSetRecord->problem_header(""); |
40 | $newSetRecord->problem_header(""); |
| … | |
… | |
| 41 | $newSetRecord->answer_date("0"); |
43 | $newSetRecord->answer_date("0"); |
| 42 | eval {$db->addGlobalSet($newSetRecord)}; |
44 | eval {$db->addGlobalSet($newSetRecord)}; |
| 43 | } |
45 | } |
| 44 | } |
46 | } |
| 45 | |
47 | |
|
|
48 | sub path { |
|
|
49 | my ($self, $args) = @_; |
|
|
50 | |
|
|
51 | my $ce = $self->{ce}; |
|
|
52 | my $root = $ce->{webworkURLs}->{root}; |
|
|
53 | my $courseName = $ce->{courseName}; |
|
|
54 | return $self->pathMacro($args, |
|
|
55 | "Home" => "$root", |
|
|
56 | $courseName => "$root/$courseName", |
|
|
57 | 'instructor' => "$root/$courseName/instructor", |
|
|
58 | 'sets' => '' |
|
|
59 | ); |
|
|
60 | } |
|
|
61 | |
| 46 | sub title { |
62 | sub title { |
| 47 | my $self = shift; |
63 | my $self = shift; |
| 48 | return "Instructor Tools - Problem Set List for ".$self->{ce}->{courseName}; |
64 | return "Instructor Tools - Problem Set List for ".$self->{ce}->{courseName}; |
| 49 | } |
65 | } |
| 50 | |
66 | |
| 51 | sub body { |
67 | sub body { |
| 52 | warn "body\n"; |
|
|
| 53 | my $self = shift; |
68 | my $self = shift; |
| 54 | my $r = $self->{r}; |
69 | my $r = $self->{r}; |
| 55 | my $db = $self->{db}; |
70 | my $db = $self->{db}; |
| 56 | my $ce = $self->{ce}; |
71 | my $ce = $self->{ce}; |
| 57 | my $authz = $self->{authz}; |
72 | my $authz = $self->{authz}; |
| … | |
… | |
| 63 | my $URL = $r->uri; |
78 | my $URL = $r->uri; |
| 64 | my $instructorBaseURL = "$root/$courseName/instructor"; |
79 | my $instructorBaseURL = "$root/$courseName/instructor"; |
| 65 | my $importURL = "$instructorBaseURL/problemSetImport/"; |
80 | my $importURL = "$instructorBaseURL/problemSetImport/"; |
| 66 | my $sort = $r->param('sort') ? $r->param('sort') : "due_date"; |
81 | my $sort = $r->param('sort') ? $r->param('sort') : "due_date"; |
| 67 | |
82 | |
|
|
83 | my @set_definition_files = $self->read_dir($ce->{courseDirs}->{templates},'\\.def'); |
| 68 | return CGI::em("You are not authorized to access the instructor tools") unless $authz->hasPermissions($user, "access_instructor_tools"); |
84 | return CGI::em("You are not authorized to access the instructor tools") unless $authz->hasPermissions($user, "access_instructor_tools"); |
| 69 | |
85 | |
| 70 | # Slurp each set record for this course in @sets |
86 | # Slurp each set record for this course in @sets |
| 71 | # Gather data from the database |
87 | # Gather data from the database |
| 72 | my @users = $db->listUsers; |
88 | my @users = $db->listUsers; |
| … | |
… | |
| 127 | . CGI::td({}, CGI::a({href=>$r->uri.$set->set_id."/users/?".$self->url_authen_args}, $userCountMessage)) |
143 | . CGI::td({}, CGI::a({href=>$r->uri.$set->set_id."/users/?".$self->url_authen_args}, $userCountMessage)) |
| 128 | ) . "\n" |
144 | ) . "\n" |
| 129 | } |
145 | } |
| 130 | $table = CGI::table({"border"=>"1"}, "\n".$table."\n"); |
146 | $table = CGI::table({"border"=>"1"}, "\n".$table."\n"); |
| 131 | |
147 | |
|
|
148 | my $form = join("", |
| 132 | my $form = CGI::start_form({"method"=>"POST", "action"=>$r->uri})."\n" # This form is for deleting sets, and points to itself |
149 | CGI::start_form({"method"=>"POST", "action"=>$r->uri}),"\n", # This form is for deleting sets, and points to itself |
| 133 | . $table."\n" |
150 | $table,"\n", |
| 134 | . CGI::br()."\n" |
151 | CGI::br(),"\n", |
| 135 | . $self->hidden_authen_fields."\n" |
152 | $self->hidden_authen_fields,"\n", |
| 136 | . CGI::submit({"name"=>"deleteSelected", "label"=>"Delete Selected"})."\n" |
153 | CGI::submit({"name"=>"deleteSelected", "label"=>"Delete Selected"}),"\n", |
|
|
154 | CGI::submit({"name"=>"scoreSelected", "label"=>"Score Selected"}),"\n", |
| 137 | . CGI::end_form()."\n" |
155 | CGI::end_form(),"\n", |
| 138 | . CGI::start_form({"method"=>"POST", "action"=>$r->uri})."\n" |
156 | CGI::start_form({"method"=>"POST", "action"=>$r->uri}),"\n", |
| 139 | . $self->hidden_authen_fields."\n" |
157 | $self->hidden_authen_fields,"\n", |
| 140 | . "New Set Name: " |
158 | "New Set Name: ", |
| 141 | . CGI::input({type=>"text", name=>"newSetName", value=>""}) |
159 | CGI::input({type=>"text", name=>"newSetName", value=>""}), |
| 142 | . CGI::submit({"name"=>"makeNewSet", "label"=>"Create"})."\n" |
160 | CGI::submit({"name"=>"makeNewSet", "label"=>"Create"}),"\n", |
| 143 | . CGI::end_form()."\n" |
161 | CGI::end_form(),"\n", |
| 144 | . CGI::start_form({"method"=>"POST", "action"=>$importURL})."\n" |
162 | CGI::start_form({"method"=>"POST", "action"=>$importURL}),"\n", |
| 145 | . $self->hidden_authen_fields."\n" |
163 | $self->hidden_authen_fields,"\n", |
| 146 | . CGI::submit({"name"=>"importSet", "label"=>"Import"})."\n" |
164 | CGI::submit({"name"=>"importSet", "label"=>"Import"}),"\n", |
|
|
165 | CGI::popup_menu(-name=>'set_definition_file', |
|
|
166 | -values=>\@set_definition_files, |
|
|
167 | ),' as set ', |
|
|
168 | CGI::input({type=>"text", name=>"importedSetName", value=>""}), |
| 147 | . CGI::end_form()."\n"; |
169 | CGI::end_form(),"\n" |
|
|
170 | ); |
| 148 | print $form; |
171 | print $form; |
| 149 | |
172 | |
| 150 | return ""; |
173 | return ""; |
| 151 | } |
174 | } |
| 152 | |
175 | |