| … | |
… | |
| 41 | my $hostname = $r->hostname(); |
41 | my $hostname = $r->hostname(); |
| 42 | my $port = $r->get_server_port(); |
42 | my $port = $r->get_server_port(); |
| 43 | my $uri = $r->uri; |
43 | my $uri = $r->uri; |
| 44 | my $courseName = $self->{ce}->{courseName}; |
44 | my $courseName = $self->{ce}->{courseName}; |
| 45 | my $editFileSuffix = $self->{ce}->{editFileSuffix}; |
45 | my $editFileSuffix = $self->{ce}->{editFileSuffix}; |
| 46 | my $seed = ($r->param('seed')) ? $r->param('seed') : ''; |
46 | my $problemSeed = ($r->param('problemSeed')) ? $r->param('problemSeed') : ''; |
| 47 | my $displayMode = ($r->param('displayMode')) ? $r->param('displayMode') : ''; |
47 | my $displayMode = ($r->param('displayMode')) ? $r->param('displayMode') : ''; |
| 48 | |
48 | |
| 49 | my $viewURL = "http://$hostname:$port"; |
49 | my $viewURL = "http://$hostname:$port"; |
| 50 | $viewURL .= "/webwork/$courseName/$setName/$problemNumber/?"; |
50 | $viewURL .= "/webwork/$courseName/$setName/$problemNumber/?"; |
| 51 | $viewURL .= $self->url_authen_args; |
51 | $viewURL .= $self->url_authen_args; |
| 52 | $viewURL .= "&displayMode=$displayMode&seed=$seed"; # optional displayMode and seed overrides |
52 | $viewURL .= "&displayMode=$displayMode&problemSeed=$problemSeed"; # optional displayMode and problemSeed overrides |
| 53 | $viewURL .= "&editMode=temporaryFile"; |
53 | $viewURL .= "&editMode=temporaryFile"; |
| 54 | $viewURL .= '&sourceFilePath='.$self->{ce}->{currentSourceFilePath}; # path to pg text for viewing |
54 | $viewURL .= '&sourceFilePath='.$self->{ce}->{currentSourceFilePath}; # path to pg text for viewing |
| 55 | $viewURL .= "&submit_button=$submit_button"; # allows Problem.pg to recognize state |
55 | $viewURL .= "&submit_button=$submit_button"; # allows Problem.pg to recognize state |
| 56 | $viewURL .= '&editErrors='.$self->{ce}->{editErrors}; # of problem being viewed. |
56 | $viewURL .= '&editErrors='.$self->{ce}->{editErrors}; # of problem being viewed. |
| 57 | $r->header_out(Location => $viewURL ); |
57 | $r->header_out(Location => $viewURL ); |
| … | |
… | |
| 127 | |
127 | |
| 128 | ######################################################################### |
128 | ######################################################################### |
| 129 | # Format the page |
129 | # Format the page |
| 130 | ######################################################################### |
130 | ######################################################################### |
| 131 | # Define parameters for textarea |
131 | # Define parameters for textarea |
| 132 | # FIXME these parameters should be capable of being updated dynamically. |
132 | # FIXME |
|
|
133 | # Should the seed be set from some particular user instance?? |
|
|
134 | # The mode list should be obtained from global.conf ultimately |
| 133 | my $rows = 20; |
135 | my $rows = 20; |
| 134 | my $columns = 80; |
136 | my $columns = 80; |
| 135 | my $mode_list = ['HTML', 'HTML_tth','HTML_dpng', 'Latex2HTML']; |
137 | my $mode_list = ['plainText','formattedText','images']; |
| 136 | my $mode = ( defined($r->param('mode')) ) ? $r->param('mode') : 'HTML_tth'; |
138 | my $displayMode = $self->{displayMode}; |
| 137 | my $seed = ( defined($r->param('seed')) ) ? $r->param('seed') : '1234'; |
139 | my $problemSeed = $self->{problemSeed}; |
| 138 | my $uri = $r->uri; |
140 | my $uri = $r->uri; |
| 139 | ######################################################################## |
141 | ######################################################################## |
| 140 | # Define a link to view the problem |
142 | # Define a link to view the problem |
| 141 | #FIXME |
143 | #FIXME |
| 142 | |
144 | |
| … | |
… | |
| 149 | return CGI::p($header), |
151 | return CGI::p($header), |
| 150 | #CGI::start_form("POST",$r->uri,-target=>'_problem'), doesn't pass on the target parameter??? |
152 | #CGI::start_form("POST",$r->uri,-target=>'_problem'), doesn't pass on the target parameter??? |
| 151 | qq!<form method="POST" action="$uri" enctype="application/x-www-form-urlencoded", target="_problem">!, |
153 | qq!<form method="POST" action="$uri" enctype="application/x-www-form-urlencoded", target="_problem">!, |
| 152 | $self->hidden_authen_fields, |
154 | $self->hidden_authen_fields, |
| 153 | CGI::div( |
155 | CGI::div( |
| 154 | CGI::textfield(-name=>'seed',-value=>$seed), |
156 | CGI::textfield(-name=>'problemSeed',-value=>$problemSeed), |
| 155 | 'Mode: ', |
157 | 'Mode: ', |
| 156 | CGI::popup_menu(-name=>'mode', -'values'=>$mode_list, |
158 | CGI::popup_menu(-name=>'displayMode', -'values'=>$mode_list, |
| 157 | -default=>$mode), |
159 | -default=>$displayMode), |
| 158 | CGI::a( |
160 | CGI::a( |
| 159 | {-href=>'http://webwork.math.rochester.edu/docs/docs/pglanguage/manpages/',-target=>"manpage_window"}, |
161 | {-href=>'http://webwork.math.rochester.edu/docs/docs/pglanguage/manpages/',-target=>"manpage_window"}, |
| 160 | 'Manpages', |
162 | 'Manpages', |
| 161 | ) |
163 | ) |
| 162 | ), |
164 | ), |
| … | |
… | |
| 198 | my $path_info = $r->path_info || ""; |
200 | my $path_info = $r->path_info || ""; |
| 199 | my $db = $self->{db}; |
201 | my $db = $self->{db}; |
| 200 | my $user = $r->param('user'); |
202 | my $user = $r->param('user'); |
| 201 | my $effectiveUserName = $r->param('effectiveUser'); |
203 | my $effectiveUserName = $r->param('effectiveUser'); |
| 202 | my $courseName = $ce->{courseName}; |
204 | my $courseName = $ce->{courseName}; |
| 203 | |
205 | |
|
|
206 | # FIXME -- sometimes this doesn't find a set |
| 204 | my $set = $db->getGlobalUserSet($effectiveUserName, $setName); |
207 | # my $set = $db->getGlobalUserSet($effectiveUserName, $setName); |
| 205 | my $setID = $set->set_id; |
208 | # my $setID = $set->set_id; |
| 206 | |
209 | |
| 207 | # Find URL for viewing problem |
210 | # Find URL for viewing problem |
| 208 | # my $viewProblemURL = "/webwork/$courseName/".join("/",$setID,$problemNumber)."?" .$self->url_authen_args(); |
|
|
| 209 | |
211 | |
| 210 | # find path to pg file for the problem |
212 | # find path to pg file for the problem |
| 211 | # FIXME there is a descrepency in the way that the problems are found. |
213 | # FIXME there is a discrepancy in the way that the problems are found. |
|
|
214 | # FIXME more error checking is needed in case the problem doesn't exist. |
| 212 | # my $problem_record = $db->getUserProblem($user,$setID,1); |
215 | # my $problem_record = $db->getUserProblem($user,$setID,1); |
| 213 | my $problem_record = $db->getGlobalUserProblem($effectiveUserName, $setName, $problemNumber); |
216 | my $problem_record = $db->getGlobalUserProblem($effectiveUserName, $setName, $problemNumber); |
| 214 | my $templateDirectory = $ce->{courseDirs}->{templates}; |
217 | my $templateDirectory = $ce->{courseDirs}->{templates}; |
| 215 | my $problemPath = $templateDirectory."/".$problem_record->source_file; |
218 | my $problemPath = $templateDirectory."/".$problem_record->source_file; |
| 216 | my $editFileSuffix = 'tmp'; |
219 | my $editFileSuffix = 'tmp'; |
| 217 | my $submit_button = $r->param('submit'); |
220 | my $submit_button = $r->param('submit'); |
|
|
221 | |
|
|
222 | my $displayMode = ( defined($r->param('displayMode')) ) ? $r->param('displayMode') : $ce->{pg}->{options}->{displayMode}; |
|
|
223 | my $problemSeed = ( defined($r->param('problemSeed')) ) ? $r->param('problemSeed') : $problem_record->problem_seed; |
|
|
224 | $problemSeed = '1234' unless defined($problemSeed) and $problemSeed =~/\S/; |
| 218 | |
225 | |
| 219 | my $problemContents = ''; |
226 | my $problemContents = ''; |
| 220 | my $currentSourceFilePath = ''; |
227 | my $currentSourceFilePath = ''; |
| 221 | # update the .pg and .pg.tmp files in the directory |
228 | # update the .pg and .pg.tmp files in the directory |
| 222 | if (not defined($submit_button) ) { |
229 | if (not defined($submit_button) ) { |
| … | |
… | |
| 269 | |
276 | |
| 270 | }; |
277 | }; |
| 271 | |
278 | |
| 272 | |
279 | |
| 273 | # return values. FIXME -- is this the right way to pass the values to body?? |
280 | # return values. FIXME -- is this the right way to pass the values to body?? |
|
|
281 | # Should temporary results be passed in self or in ce?? |
| 274 | # $ce->{viewProblemURL} = $viewProblemURL; |
282 | # $ce->{viewProblemURL} = $viewProblemURL; |
| 275 | $ce->{problemPath} = $problemPath; |
283 | $ce->{problemPath} = $problemPath; |
|
|
284 | $self->{displayMode} = $displayMode; |
|
|
285 | $self->{problemSeed} = $problemSeed; |
| 276 | $ce->{path_components} = join("/",$setID,$problemNumber); |
286 | # $ce->{path_components} = join("/",$setID,$problemNumber); |
| 277 | |
287 | |
| 278 | # FIXME there is no way to edit in a temporary file -- all editing takes place on disk!!! |
288 | # FIXME there is no way to edit in a temporary file -- all editing takes place on disk!!! |
| 279 | |
289 | |
| 280 | |
290 | |
| 281 | |
291 | |