version 1.2, 1999/10/13 18:45:28
|
version 1.6, 1999/11/29 19:44:21
|
Line 404 void w_get_responses(int x,int q_idx,cha
|
Line 404 void w_get_responses(int x,int q_idx,cha
|
sscanf(g_entries[x].name,"INPUT%d",&q_idx); |
sscanf(g_entries[x].name,"INPUT%d",&q_idx); |
if( q_idx > 0 && q_idx < MAX_PROBLEM_CNT ) { |
if( q_idx > 0 && q_idx < MAX_PROBLEM_CNT ) { |
if ( ! is_all_ws(g_entries[x].val) ) { |
if ( ! is_all_ws(g_entries[x].val) ) { |
leng = strlen(g_entries[x].val) + 1; |
|
g_stu_ans_pp[q_idx] = (StudentAnswer_t *)capa_malloc(sizeof(StudentAnswer_t),1); |
g_stu_ans_pp[q_idx] = (StudentAnswer_t *)capa_malloc(sizeof(StudentAnswer_t),1); |
(g_stu_ans_pp[q_idx])->a_idx = 1; |
(g_stu_ans_pp[q_idx])->a_idx = 1; |
(g_stu_ans_pp[q_idx])->a_str = strsave(g_entries[x].val); |
(g_stu_ans_pp[q_idx])->a_str = strsave(g_entries[x].val); |
if (leng > ANSWER_STRING_LENG) |
|
(g_stu_ans_pp[q_idx])->a_str[ANSWER_STRING_LENG] = '\0'; |
|
(g_stu_ans_pp[q_idx])->a_next = NULL; |
(g_stu_ans_pp[q_idx])->a_next = NULL; |
trim_response_ws((g_stu_ans_pp[q_idx])->a_str); |
trim_response_ws((g_stu_ans_pp[q_idx])->a_str); |
} |
} |
Line 424 void w_get_responses(int x,int q_idx,cha
|
Line 421 void w_get_responses(int x,int q_idx,cha
|
if( q_idx > 0 && q_idx < MAX_PROBLEM_CNT ) { |
if( q_idx > 0 && q_idx < MAX_PROBLEM_CNT ) { |
if ( ! is_all_ws(g_entries[x].val) ) { |
if ( ! is_all_ws(g_entries[x].val) ) { |
StudentAnswer_t *sa_p; |
StudentAnswer_t *sa_p; |
leng = strlen(g_entries[x].val) + 1; |
|
sa_p = (StudentAnswer_t *)capa_malloc(sizeof(StudentAnswer_t),1); |
sa_p = (StudentAnswer_t *)capa_malloc(sizeof(StudentAnswer_t),1); |
sa_p->a_idx = sub_idx; |
sa_p->a_idx = sub_idx; |
sa_p->a_str = strsave(g_entries[x].val); |
sa_p->a_str = strsave(g_entries[x].val); |
if (leng > ANSWER_STRING_LENG) sa_p->a_str[ANSWER_STRING_LENG] = '\0'; |
|
sa_p->a_next = NULL; |
sa_p->a_next = NULL; |
if( g_stu_ans_pp[q_idx] == NULL ) { |
if( g_stu_ans_pp[q_idx] == NULL ) { |
g_stu_ans_pp[q_idx] = sa_p; |
g_stu_ans_pp[q_idx] = sa_p; |
Line 451 void w_get_responses(int x,int q_idx,cha
|
Line 446 void w_get_responses(int x,int q_idx,cha
|
if( index(g_entries[x].name, ',' ) == NULL ) { /* only one answer */ |
if( index(g_entries[x].name, ',' ) == NULL ) { /* only one answer */ |
sscanf(g_entries[x].name,"LAST%d",&q_idx); |
sscanf(g_entries[x].name,"LAST%d",&q_idx); |
if( q_idx > 0 && q_idx < MAX_PROBLEM_CNT ) { |
if( q_idx > 0 && q_idx < MAX_PROBLEM_CNT ) { |
leng = strlen(g_entries[x].val) + 1; |
|
sa_p = (StudentAnswer_t *)capa_malloc(sizeof(StudentAnswer_t),1); |
sa_p = (StudentAnswer_t *)capa_malloc(sizeof(StudentAnswer_t),1); |
sa_p->a_idx = 1; |
sa_p->a_idx = 1; |
sa_p->a_str = strsave(g_entries[x].val); |
sa_p->a_str = strsave(g_entries[x].val); |
if (leng > ANSWER_STRING_LENG) sa_p->a_str[ANSWER_STRING_LENG] = '\0'; |
|
sa_p->a_next = NULL; |
sa_p->a_next = NULL; |
g_last_ans_pp[q_idx] = sa_p; |
g_last_ans_pp[q_idx] = sa_p; |
} |
} |
} else { |
} else { |
sscanf(g_entries[x].name,"LAST%d,%d",&q_idx,&sub_idx); |
sscanf(g_entries[x].name,"LAST%d,%d",&q_idx,&sub_idx); |
if( q_idx > 0 && q_idx < MAX_PROBLEM_CNT ) { |
if( q_idx > 0 && q_idx < MAX_PROBLEM_CNT ) { |
leng = strlen(g_entries[x].val) + 1; |
|
sa_p = (StudentAnswer_t *)capa_malloc(sizeof(StudentAnswer_t),1); |
sa_p = (StudentAnswer_t *)capa_malloc(sizeof(StudentAnswer_t),1); |
sa_p->a_idx = sub_idx; |
sa_p->a_idx = sub_idx; |
sa_p->a_str = strsave(g_entries[x].val); |
sa_p->a_str = strsave(g_entries[x].val); |
if (leng > ANSWER_STRING_LENG) sa_p->a_str[ANSWER_STRING_LENG] = '\0'; |
|
sa_p->a_next = NULL; |
sa_p->a_next = NULL; |
if( g_last_ans_pp[q_idx] == NULL) { |
if( g_last_ans_pp[q_idx] == NULL) { |
g_last_ans_pp[q_idx] = sa_p; |
g_last_ans_pp[q_idx] = sa_p; |
Line 1043 print_mainmenu(class,sn,pin)char *class;
|
Line 1034 print_mainmenu(class,sn,pin)char *class;
|
fprintf(stdout,"<input type=\"submit\" value=\"Display Quiz summary\" ></form>\n"); |
fprintf(stdout,"<input type=\"submit\" value=\"Display Quiz summary\" ></form>\n"); |
} |
} |
outcome = check_termscore_option(); |
outcome = check_termscore_option(); |
fprintf(stdout,"<!-- Outcome of check_termscore_option()=%d --!>\n",outcome); |
fprintf(stdout,"<!-- Outcome of check_termscore_option()=%d -->\n",outcome); |
/*Termscore Button*/ |
/*Termscore Button*/ |
if( outcome ) { |
if( outcome ) { |
fprintf(stdout,"<li><form method=\"post\" "); |
fprintf(stdout,"<li><form method=\"post\" "); |
Line 1454 char *class_dir; char *c_owner;char *cla
|
Line 1445 char *class_dir; char *c_owner;char *cla
|
append_qtext("<A href=\"#TOP\">Top</A>"); |
append_qtext("<A href=\"#TOP\">Top</A>"); |
sprintf(buf," <A href=\"#P%d\">Next</A>",question_idx+2); append_qtext(buf); |
sprintf(buf," <A href=\"#P%d\">Next</A>",question_idx+2); append_qtext(buf); |
}*/ |
}*/ |
q_leng = strlen(prob_idx->question); |
if (prob_idx->question != NULL) { |
if ( !prob_idx->show_br ) { |
q_leng = strlen(prob_idx->question); |
append_qtext(prob_idx->question); |
if ( !prob_idx->show_br ) { |
} else { |
append_qtext(prob_idx->question); |
for(idx=0;idx<q_leng;idx++) { |
} else { |
if ( g_qchar_cnt+2 >= g_qsize ) { |
for(idx=0;idx<q_leng;idx++) { |
char *temp_text; |
if ( g_qchar_cnt+2 >= g_qsize ) { |
g_qsize=g_qchar_cnt*2; |
char *temp_text; |
temp_text=capa_malloc(g_qsize,sizeof(char)); |
g_qsize=g_qchar_cnt*2; |
strncpy(temp_text,g_question_txt,g_qsize); |
temp_text=capa_malloc(g_qsize,sizeof(char)); |
capa_mfree(g_question_txt); |
strncpy(temp_text,g_question_txt,g_qsize); |
g_question_txt=temp_text; |
capa_mfree(g_question_txt); |
} |
g_question_txt=temp_text; |
g_question_txt[g_qchar_cnt]=prob_idx->question[idx]; |
} |
g_qchar_cnt++; |
g_question_txt[g_qchar_cnt]=prob_idx->question[idx]; |
if(prob_idx->question[idx] == '\n' ) { |
g_qchar_cnt++; |
append_qtext("<br>\n"); |
if(prob_idx->question[idx] == '\n' ) { |
|
append_qtext("<br>\n"); |
|
} |
} |
} |
} |
} |
} |
} |
Line 1683 void display_last_subjective(int q_idx)
|
Line 1676 void display_last_subjective(int q_idx)
|
|
|
void create_answer_area(Problem_t *p,int q_idx) |
void create_answer_area(Problem_t *p,int q_idx) |
{ |
{ |
int ii; |
int ii=0; |
char buf[MAX_BUFFER_SIZE]; |
char buf[MAX_BUFFER_SIZE]; |
|
AnswerInfo_t *ai; |
#ifdef CGI_DBUG |
#ifdef CGI_DBUG |
fprintf(g_cgi,"Enter create_answer_area() [%d]\n",q_idx); fflush(g_cgi); |
fprintf(g_cgi,"Enter create_answer_area() [%d]\n",q_idx); fflush(g_cgi); |
#endif /* CGI_DBUG */ |
#endif /* CGI_DBUG */ |
Line 1695 void create_answer_area(Problem_t *p,int
|
Line 1688 void create_answer_area(Problem_t *p,int
|
} |
} |
if ( p->show_ans_box ) { |
if ( p->show_ans_box ) { |
if ( p->ans_op == ANS_AND ) { |
if ( p->ans_op == ANS_AND ) { |
for(ii=0;ii<p->ans_cnt;ii++) { |
if (p->ans_type == ANSWER_IS_FORMULA) { |
if (p->ans_type == ANSWER_IS_FORMULA) { |
/* first answer is stored in p, the rest are linked off of p->ans_list */ |
sprintf(buf,"<p><B>Answer %d of %d:</B><input size=80 name=\"INPUT%02d,%02d\" value=\"\">\n",ii+1,p->ans_cnt,q_idx+1,ii+1); |
sprintf(buf,"<p><B>Answer %d of %d:</B><input size=80 name=\"INPUT%02d,%02d\" value=\"\">\n",ii+1,p->ans_cnt,q_idx+1,ii+1); |
|
} else { |
|
sprintf(buf,"<p><B>Answer %d of %d:</B><input name=\"INPUT%02d,%02d\" value=\"\">\n",ii+1,p->ans_cnt,q_idx+1,ii+1); |
|
} |
|
append_qtext(buf); |
|
for(ii=1, ai=p->ans_list;ii<p->ans_cnt;ai=ai->ans_next,ii++) { |
|
if (ai->ans_type == ANSWER_IS_FORMULA) { |
|
sprintf(buf,"<p><B>Answer %d of %d:</B><input size=80 name=\"INPUT%02d,%02d\" value=\"\">\n",ii+1,p->ans_cnt,q_idx+1,ii+1); |
} else { |
} else { |
sprintf(buf,"<p><B>Answer %d of %d:</B><input name=\"INPUT%02d,%02d\" value=\"\">\n",ii+1,p->ans_cnt,q_idx+1,ii+1); |
sprintf(buf,"<p><B>Answer %d of %d:</B><input name=\"INPUT%02d,%02d\" value=\"\">\n",ii+1,p->ans_cnt,q_idx+1,ii+1); |
} |
} |
Line 1886 char buf[MAX_BUFFER_SIZE];
|
Line 1886 char buf[MAX_BUFFER_SIZE];
|
} |
} |
|
|
/* returns a -1 if there were not enough answers, otherwise the number of responses |
/* returns a -1 if there were not enough answers, otherwise the number of responses |
for the question is returned*/ |
for the question is returned |
|
!!!!!AS A SIDEEFFECT IT ALSO CROPS ANSWERS TO ANSWER_STRING_LENG!!!!!!! |
|
*/ |
int gather_answers(char ***ans,int q_idx,Problem_t *p) |
int gather_answers(char ***ans,int q_idx,Problem_t *p) |
{ |
{ |
int cnt; |
int cnt; |
Line 1896 int gather_answers(char ***ans,int q_idx
|
Line 1898 int gather_answers(char ***ans,int q_idx
|
sa_p= g_stu_ans_pp[q_idx+1]; |
sa_p= g_stu_ans_pp[q_idx+1]; |
for(i=0;((i<p->ans_cnt)&&(sa_p));i++){ |
for(i=0;((i<p->ans_cnt)&&(sa_p));i++){ |
ans[0][i]=sa_p->a_str; |
ans[0][i]=sa_p->a_str; |
|
if ((strlen(ans[0][i])+1) > ANSWER_STRING_LENG) ans[0][i][ANSWER_STRING_LENG]='\0'; |
sa_p=sa_p->a_next; |
sa_p=sa_p->a_next; |
} |
} |
cnt=p->ans_cnt; |
cnt=p->ans_cnt; |
Line 1903 int gather_answers(char ***ans,int q_idx
|
Line 1906 int gather_answers(char ***ans,int q_idx
|
} else { |
} else { |
*ans=(char**)capa_malloc(p->ans_cnt,1); |
*ans=(char**)capa_malloc(p->ans_cnt,1); |
ans[0][0]=g_stu_ans_pp[q_idx+1]->a_str; |
ans[0][0]=g_stu_ans_pp[q_idx+1]->a_str; |
|
if ((strlen(ans[0][0])+1) > ANSWER_STRING_LENG) ans[0][0][ANSWER_STRING_LENG]='\0'; |
cnt=1; |
cnt=1; |
} |
} |
return cnt; |
return cnt; |
Line 1993 int tries;
|
Line 1997 int tries;
|
submit_subjective(q_idx,p); |
submit_subjective(q_idx,p); |
return; |
return; |
} |
} |
|
|
cnt=gather_answers(&ans,q_idx,p); |
cnt=gather_answers(&ans,q_idx,p); |
if (cnt == -1) { |
if (cnt == -1) { |
g_tried[q_idx]--; |
g_tried[q_idx]--; |
Line 2185 char *class_dir;char *class;char *studen
|
Line 2189 char *class_dir;char *class;char *studen
|
set_score, /* Score on a set */ |
set_score, /* Score on a set */ |
term_score=0, /* Total points received */ |
term_score=0, /* Total points received */ |
term_valid=0, /* Total points possible */ |
term_valid=0, /* Total points possible */ |
result; |
result, |
|
tot_num_sets=0; |
T_entry entry; /* Database entry for a set */ |
T_entry entry; /* Database entry for a set */ |
char buf[MAX_BUFFER_SIZE]; /* Output line buffer */ |
char buf[MAX_BUFFER_SIZE]; /* Output line buffer */ |
char buf2[MAX_BUFFER_SIZE]; /* Output line buffer */ |
char buf2[MAX_BUFFER_SIZE]; /* Output line buffer */ |
Line 2200 char *class_dir;char *class;char *studen
|
Line 2205 char *class_dir;char *class;char *studen
|
fprintf(stdout,"Unable to complete actions.\n"); |
fprintf(stdout,"Unable to complete actions.\n"); |
return; |
return; |
} |
} |
|
printf("<!--print_summary-->"); |
sprintf(class_fullpath,"%s/%s",class_dir,class); |
sprintf(class_fullpath,"%s/%s",class_dir,class); |
chdir(class_fullpath); |
chdir(class_fullpath); |
configResult=read_capa_config("web_status_line_length",buf); |
configResult=read_capa_config("web_status_line_length",buf); |
Line 2221 char *class_dir;char *class;char *studen
|
Line 2226 char *class_dir;char *class;char *studen
|
for (set_idx=1; set_idx<=set; set_idx++) { |
for (set_idx=1; set_idx<=set; set_idx++) { |
g_inhibit_response=capa_check_option(OPTION_INHIBIT_RESPONSE,set_idx, |
g_inhibit_response=capa_check_option(OPTION_INHIBIT_RESPONSE,set_idx, |
g_student_data.s_sec); |
g_student_data.s_sec); |
if (g_inhibit_response > 0) continue; |
if (g_inhibit_response > 0) { |
|
printf("<!-- Set %d is inhibited -->\n",set_idx); |
|
continue; |
|
} |
|
if ( capa_check_date(CHECK_OPEN_DATE,g_student_number, |
|
g_student_data.s_sec,set_idx) < 0 ){ |
|
printf("<!-- Set %d is not open -->\n",set_idx); |
|
continue; |
|
} |
|
|
if (capa_get_header(&header,set_idx)) return; |
if (capa_get_header(&header,set_idx)) return; |
|
tot_num_sets++; |
capa_get_entry(&entry,student_number,set_idx); |
capa_get_entry(&entry,student_number,set_idx); |
sscanf(header.num_questions,"%d", &(question_cnt) ); |
sscanf(header.num_questions,"%d", &(question_cnt) ); |
valid_wgt = 0; set_score = 0; |
valid_wgt = 0; set_score = 0; |
Line 2267 char *class_dir;char *class;char *studen
|
Line 2281 char *class_dir;char *class;char *studen
|
printf("\n</TABLE>\n<hr>\n"); |
printf("\n</TABLE>\n<hr>\n"); |
/* SHOW TOTALS */ |
/* SHOW TOTALS */ |
/* if capalogin_show_summary_score is set to none don't show it */ |
/* if capalogin_show_summary_score is set to none don't show it */ |
sprintf(buf,"%d sets, total = %3d/%3d (%d%%)\n", set, term_score, term_valid, 100*term_score/term_valid); |
if (term_valid > 0) { |
|
sprintf(buf,"%d sets, total = %3d/%3d (%d%%)\n", tot_num_sets, term_score, term_valid, 100*term_score/term_valid); |
|
} else { |
|
sprintf(buf,"%d sets, total = %3d/%3d\n", tot_num_sets, term_score, term_valid); |
|
} |
result=read_capa_config("capalogin_show_summary_score",buf2); |
result=read_capa_config("capalogin_show_summary_score",buf2); |
if (result != 0 && result != -1) { |
if (result != 0 && result != -1) { |
if (strcasecmp(buf2,"none")==0) { |
if (strcasecmp(buf2,"none")==0) { |
Line 2383 FILE *out;
|
Line 2401 FILE *out;
|
i, /* Question counter */ |
i, /* Question counter */ |
set_score, /* Score on a set */ |
set_score, /* Score on a set */ |
term_score=0, /* Total points received */ |
term_score=0, /* Total points received */ |
term_valid=0, /* Total points possible */ |
term_valid=0; /* Total points possible */ |
result; |
|
T_entry entry; /* Database entry for a set */ |
T_entry entry; /* Database entry for a set */ |
char buf[MAX_BUFFER_SIZE]; /* Output line buffer */ |
char buf[MAX_BUFFER_SIZE]; /* Output line buffer */ |
char buf2[MAX_BUFFER_SIZE]; /* Output line buffer */ |
|
T_header header; /* Problem set header */ |
T_header header; /* Problem set header */ |
int question_cnt,valid_wgt, rate,configResult, |
int question_cnt,valid_wgt,configResult; |
status_line_length=DEFAULT_STATUS_LINE_LENGTH,row; |
|
char class_fullpath[ONE_K],*serverName; |
char class_fullpath[ONE_K],*serverName; |
int hw_c, hw_r, qz_c, qz_r, fs, homework_count, quiz_count; |
int hw_c, hw_r, qz_c, qz_r, fs, homework_count, quiz_count; |
int ex_c, epc_c; |
|
float hw_w, qz_w, ex_w, fe_w, pc_w; |
float hw_w, qz_w, ex_w, fe_w, pc_w; |
int idx, entry_count, tmp_len; |
int idx, entry_count, tmp_len; |
float *S, *F; |
float *S, *F; |
int *X; |
int *X; |
char *capa_server, *qz_p, *ex_p, *epc_p; |
char *capa_server; |
int max_set[4]; |
int max_set[4]; |
char **c_path_pp; |
char **c_path_pp; |
|
|
|
/*Unused Vars |
|
char buf2[MAX_BUFFER_SIZE]; |
|
char *qz_p, *ex_p, *epc_p; |
|
int ex_c, epc_c, result; |
|
int rate, status_line_length=DEFAULT_STATUS_LINE_LENGTH,row; |
|
*/ |
|
|
serverName=getenv("SERVER_NAME"); |
serverName=getenv("SERVER_NAME"); |
if (!serverName) { |
if (!serverName) { |
fprintf(out,"Enviroment variable SERVER_NAME not set.\n"); |
fprintf(out,"Enviroment variable SERVER_NAME not set.\n"); |