--- capa/capa51/pProj/capaCgiUtils.c 1999/10/13 20:05:00 1.3 +++ capa/capa51/pProj/capaCgiUtils.c 1999/11/08 22:30:02 1.4 @@ -1454,23 +1454,25 @@ char *class_dir; char *c_owner;char *cla append_qtext("Top"); sprintf(buf,"  Next",question_idx+2); append_qtext(buf); }*/ - q_leng = strlen(prob_idx->question); - if ( !prob_idx->show_br ) { - append_qtext(prob_idx->question); - } else { - for(idx=0;idx= g_qsize ) { - char *temp_text; - g_qsize=g_qchar_cnt*2; - temp_text=capa_malloc(g_qsize,sizeof(char)); - strncpy(temp_text,g_question_txt,g_qsize); - capa_mfree(g_question_txt); - g_question_txt=temp_text; - } - g_question_txt[g_qchar_cnt]=prob_idx->question[idx]; - g_qchar_cnt++; - if(prob_idx->question[idx] == '\n' ) { - append_qtext("
\n"); + if (prob_idx->question != NULL) { + q_leng = strlen(prob_idx->question); + if ( !prob_idx->show_br ) { + append_qtext(prob_idx->question); + } else { + for(idx=0;idx= g_qsize ) { + char *temp_text; + g_qsize=g_qchar_cnt*2; + temp_text=capa_malloc(g_qsize,sizeof(char)); + strncpy(temp_text,g_question_txt,g_qsize); + capa_mfree(g_question_txt); + g_question_txt=temp_text; + } + g_question_txt[g_qchar_cnt]=prob_idx->question[idx]; + g_qchar_cnt++; + if(prob_idx->question[idx] == '\n' ) { + append_qtext("
\n"); + } } } } @@ -1683,9 +1685,9 @@ void display_last_subjective(int q_idx) void create_answer_area(Problem_t *p,int q_idx) { - int ii; + int ii=0; char buf[MAX_BUFFER_SIZE]; - + AnswerInfo_t *ai; #ifdef CGI_DBUG fprintf(g_cgi,"Enter create_answer_area() [%d]\n",q_idx); fflush(g_cgi); #endif /* CGI_DBUG */ @@ -1695,9 +1697,16 @@ void create_answer_area(Problem_t *p,int } if ( p->show_ans_box ) { if ( p->ans_op == ANS_AND ) { - for(ii=0;iians_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,"

Answer %d of %d:\n",ii+1,p->ans_cnt,q_idx+1,ii+1); + } else { + sprintf(buf,"

Answer %d of %d:\n",ii+1,p->ans_cnt,q_idx+1,ii+1); + } + append_qtext(buf); + for(ii=1, ai=p->ans_list;iians_cnt;ai=ai->ans_next,ii++) { + if (ai->ans_type == ANSWER_IS_FORMULA) { + sprintf(buf,"

Answer %d of %d:\n",ii+1,p->ans_cnt,q_idx+1,ii+1); } else { sprintf(buf,"

Answer %d of %d:\n",ii+1,p->ans_cnt,q_idx+1,ii+1); } @@ -2185,7 +2194,8 @@ char *class_dir;char *class;char *studen set_score, /* Score on a set */ term_score=0, /* Total points received */ term_valid=0, /* Total points possible */ - result; + result, + tot_num_sets=0; T_entry entry; /* Database entry for a set */ char buf[MAX_BUFFER_SIZE]; /* Output line buffer */ char buf2[MAX_BUFFER_SIZE]; /* Output line buffer */ @@ -2200,7 +2210,7 @@ char *class_dir;char *class;char *studen fprintf(stdout,"Unable to complete actions.\n"); return; } - + printf(""); sprintf(class_fullpath,"%s/%s",class_dir,class); chdir(class_fullpath); configResult=read_capa_config("web_status_line_length",buf); @@ -2221,9 +2231,18 @@ char *class_dir;char *class;char *studen for (set_idx=1; set_idx<=set; set_idx++) { g_inhibit_response=capa_check_option(OPTION_INHIBIT_RESPONSE,set_idx, g_student_data.s_sec); - if (g_inhibit_response > 0) continue; + if (g_inhibit_response > 0) { + printf("\n",set_idx); + continue; + } + if ( capa_check_date(CHECK_OPEN_DATE,g_student_number, + g_student_data.s_sec,set_idx) < 0 ){ + printf("\n",set_idx); + continue; + } if (capa_get_header(&header,set_idx)) return; + tot_num_sets++; capa_get_entry(&entry,student_number,set_idx); sscanf(header.num_questions,"%d", &(question_cnt) ); valid_wgt = 0; set_score = 0; @@ -2267,7 +2286,11 @@ char *class_dir;char *class;char *studen printf("\n\n


\n"); /* SHOW TOTALS */ /* 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); if (result != 0 && result != -1) { if (strcasecmp(buf2,"none")==0) {