version 1.13, 2000/03/22 21:08:03
|
version 1.21, 2000/10/10 20:03:23
|
Line 1
|
Line 1
|
|
/* Most of the web output generation routines. |
|
Copyright (C) 1992-2000 Michigan State University |
|
|
|
The CAPA system is free software; you can redistribute it and/or |
|
modify it under the terms of the GNU General Public License as |
|
published by the Free Software Foundation; either version 2 of the |
|
License, or (at your option) any later version. |
|
|
|
The CAPA system is distributed in the hope that it will be useful, |
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
General Public License for more details. |
|
|
|
You should have received a copy of the GNU General Public |
|
License along with the CAPA system; see the file COPYING. If not, |
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
Boston, MA 02111-1307, USA. |
|
|
|
As a special exception, you have permission to link this program |
|
with the TtH/TtM library and distribute executables, as long as you |
|
follow the requirements of the GNU GPL in regard to all of the |
|
software in the executable aside from TtH/TtM. |
|
*/ |
|
|
/* ===================================================================== */ |
/* ===================================================================== */ |
/* copyrighted by Isaac Tsai, 1998, 1999, 2000 */ |
|
/* ===================================================================== */ |
/* ===================================================================== */ |
#include <stdio.h> |
#include <stdio.h> |
#include <ctype.h> |
#include <ctype.h> |
Line 229 void web_printheader(FILE *out)
|
Line 252 void web_printheader(FILE *out)
|
fprintf(out,"<HTML><HEAD>\n"); |
fprintf(out,"<HTML><HEAD>\n"); |
fprintf(out,"<BODY BGCOLOR=\"#FFFFFF\" LINK=\"#0000EE\" VLINK=\"#EE1100\">\n"); |
fprintf(out,"<BODY BGCOLOR=\"#FFFFFF\" LINK=\"#0000EE\" VLINK=\"#EE1100\">\n"); |
} |
} |
|
|
#ifdef CAPA_WEB |
|
fprintf(out,"<!-- capasbin, CAPA Version %s, %s -->\n", |
|
CAPA_VER,COMPILE_DATE); |
|
#else |
|
fprintf(out,"<!-- capahtml, CAPA Version %s, %s -->\n", |
|
CAPA_VER,COMPILE_DATE); |
|
#endif |
|
} |
} |
|
|
void web_printfooter(FILE *out) |
void web_printfooter(FILE *out) |
Line 388 char *log_string;
|
Line 403 char *log_string;
|
tmtime=localtime(&t); |
tmtime=localtime(&t); |
strftime(timeStr,FILE_NAME_LENGTH,"%d/%m %X",tmtime); |
strftime(timeStr,FILE_NAME_LENGTH,"%d/%m %X",tmtime); |
/*ct[ strlen(ct)-1 ]=0;*/ /* Trash newline */ |
/*ct[ strlen(ct)-1 ]=0;*/ /* Trash newline */ |
protect_log_string(log_string); |
/*protect_log_string(log_string);*/ /* done on indiviual answers now*/ |
fprintf(fp,"%s\t%s\t%s\n",student_number,timeStr,log_string); fflush(fp); |
fprintf(fp,"%s\t%s\t%s\n",student_number,timeStr,log_string); fflush(fp); |
fclose(fp); |
fclose(fp); |
return (0); |
return (0); |
Line 398 char *log_string;
|
Line 413 char *log_string;
|
void w_get_responses(int x,int q_idx,char* submissions_str) |
void w_get_responses(int x,int q_idx,char* submissions_str) |
{ |
{ |
int leng, sub_idx; |
int leng, sub_idx; |
char buf[MAX_BUFFER_SIZE]; |
char buf[MAX_BUFFER_SIZE],*tmp; |
if( !strncmp(g_entries[x].name,"INPUT",5) ) { |
if( !strncmp(g_entries[x].name,"INPUT",5) ) { |
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,"INPUT%d",&q_idx); |
sscanf(g_entries[x].name,"INPUT%d",&q_idx); |
Line 412 void w_get_responses(int x,int q_idx,cha
|
Line 427 void w_get_responses(int x,int q_idx,cha
|
} |
} |
leng = strlen( g_entries[x].val ); |
leng = strlen( g_entries[x].val ); |
if ( leng > 0 ) { |
if ( leng > 0 ) { |
sprintf(buf,"%d\t%s\t",q_idx,g_entries[x].val); |
tmp=strsave(g_entries[x].val); |
|
protect_log_string(tmp); |
|
sprintf(buf,"%d\t%s\t",q_idx,tmp); |
|
capa_mfree(tmp); |
strcat(submissions_str,buf); |
strcat(submissions_str,buf); |
} |
} |
} |
} |
Line 436 void w_get_responses(int x,int q_idx,cha
|
Line 454 void w_get_responses(int x,int q_idx,cha
|
} |
} |
leng = strlen( g_entries[x].val ); |
leng = strlen( g_entries[x].val ); |
if ( leng > 0 ) { |
if ( leng > 0 ) { |
sprintf(buf,"%d\t%s\t",q_idx,g_entries[x].val); |
tmp=strsave(g_entries[x].val); |
|
protect_log_string(tmp); |
|
sprintf(buf,"%d\t%s\t",q_idx,tmp); |
|
capa_mfree(tmp); |
strcat(submissions_str,buf); |
strcat(submissions_str,buf); |
} |
} |
} |
} |
Line 1421 char *class_dir; char *c_owner;char *cla
|
Line 1442 char *class_dir; char *c_owner;char *cla
|
} |
} |
} |
} |
|
|
if ((mode==CHECK_ANSWER_MODE) || (mode== TRY_SET_MODE)) |
if ((mode==CHECK_ANSWER_MODE) || (mode== TRY_SET_MODE) || (mode==VIEW_PREVIOUS_MODE)) |
capa_set_login_time(g_student_number,set); |
capa_set_login_time(g_student_number,set); |
|
|
capa_get_header(&header,set); |
capa_get_header(&header,set); |
Line 1518 char *class_dir; char *c_owner;char *cla
|
Line 1539 char *class_dir; char *c_owner;char *cla
|
} |
} |
if(mode == VIEW_PREVIOUS_MODE) { /* VIEW_PREVIOUS_MODE */ |
if(mode == VIEW_PREVIOUS_MODE) { /* VIEW_PREVIOUS_MODE */ |
/* |
/* |
if( display_ans ) { |
|
if( prob_idx->ans_type == ANSWER_IS_FLOAT ) { |
if( prob_idx->ans_type == ANSWER_IS_FLOAT ) { |
a = (double)atof(prob_idx->answer); |
a = (double)atof(prob_idx->answer); |
sprintf(cmp_ans,prob_idx->ans_fmt, a); |
sprintf(cmp_ans,prob_idx->ans_fmt, a); |
Line 1539 char *class_dir; char *c_owner;char *cla
|
Line 1559 char *class_dir; char *c_owner;char *cla
|
sprintf(buf,"<p><tt><b>Answer:</b> %s</tt><br>\n",cmp_ans); |
sprintf(buf,"<p><tt><b>Answer:</b> %s</tt><br>\n",cmp_ans); |
} |
} |
*/ |
*/ |
|
if( display_ans ) { |
c_ans=answers_string(ANSWER_STRING_MODE, prob_idx); |
c_ans=answers_string(ANSWER_STRING_MODE, prob_idx); |
sprintf(buf,"<p><tt><b>Answer:</b> %s</tt><br>",c_ans); |
sprintf(buf,"<p><tt><b>Answer:</b> %s</tt><br>",c_ans); |
append_qtext(buf); |
append_qtext(buf); |
Line 1547 char *class_dir; char *c_owner;char *cla
|
Line 1568 char *class_dir; char *c_owner;char *cla
|
sprintf(buf,"<p><b>Explanation: </b>\n<p>%s<br>\n",prob_idx->explain); |
sprintf(buf,"<p><b>Explanation: </b>\n<p>%s<br>\n",prob_idx->explain); |
append_qtext(buf); |
append_qtext(buf); |
} |
} |
|
} |
} else { /* could be TRY_SET_MODE, CHECK_ANSWER_MODE */ |
} else { /* could be TRY_SET_MODE, CHECK_ANSWER_MODE */ |
if( g_passdue ) { |
if( g_passdue ) { |
get_response(header.partial_credit[question_idx],entry.answers[question_idx],question_idx,prob_idx); |
get_response(header.partial_credit[question_idx],entry.answers[question_idx],question_idx,prob_idx); |
Line 2758 int *hc;int *qc;int *fs;
|
Line 2780 int *hc;int *qc;int *fs;
|
configResult=read_capa_config("homework_weight",buf); |
configResult=read_capa_config("homework_weight",buf); |
if (configResult != 0 && configResult != -1 ) { |
if (configResult != 0 && configResult != -1 ) { |
sscanf(buf,"%f", &hw_w); |
sscanf(buf,"%f", &hw_w); |
if(hw_w <= 0.0 ) { |
if(hw_w < 0.0 ) { |
hw_w = DEFAULT_HW_W; |
hw_w = DEFAULT_HW_W; |
} |
} |
} else { |
} else { |
Line 2767 int *hc;int *qc;int *fs;
|
Line 2789 int *hc;int *qc;int *fs;
|
configResult=read_capa_config("quiz_weight",buf); |
configResult=read_capa_config("quiz_weight",buf); |
if (configResult != 0 && configResult != -1 ) { |
if (configResult != 0 && configResult != -1 ) { |
sscanf(buf,"%f", &qz_w); |
sscanf(buf,"%f", &qz_w); |
if(qz_w <= 0.0 ) { |
if(qz_w < 0.0 ) { |
qz_w = DEFAULT_QZ_W; |
qz_w = DEFAULT_QZ_W; |
} |
} |
} else { |
} else { |
Line 2776 int *hc;int *qc;int *fs;
|
Line 2798 int *hc;int *qc;int *fs;
|
configResult=read_capa_config("exam_weight",buf); |
configResult=read_capa_config("exam_weight",buf); |
if (configResult != 0 && configResult != -1 ) { |
if (configResult != 0 && configResult != -1 ) { |
sscanf(buf,"%f", &ex_w); |
sscanf(buf,"%f", &ex_w); |
if(ex_w <= 0.0 ) { |
if(ex_w < 0.0 ) { |
ex_w = DEFAULT_EX_W; |
ex_w = DEFAULT_EX_W; |
} |
} |
} else { |
} else { |
Line 2785 int *hc;int *qc;int *fs;
|
Line 2807 int *hc;int *qc;int *fs;
|
configResult=read_capa_config("final_weight",buf); |
configResult=read_capa_config("final_weight",buf); |
if (configResult != 0 && configResult != -1 ) { |
if (configResult != 0 && configResult != -1 ) { |
sscanf(buf,"%f", &fe_w); |
sscanf(buf,"%f", &fe_w); |
if(fe_w <= 0.0 ) { |
if(fe_w < 0.0 ) { |
fe_w = DEFAULT_FE_W; |
fe_w = DEFAULT_FE_W; |
} |
} |
} else { |
} else { |
Line 2794 int *hc;int *qc;int *fs;
|
Line 2816 int *hc;int *qc;int *fs;
|
configResult=read_capa_config("correction_weight",buf); |
configResult=read_capa_config("correction_weight",buf); |
if (configResult != 0 && configResult != -1 ) { |
if (configResult != 0 && configResult != -1 ) { |
sscanf(buf,"%f", &pc_w); |
sscanf(buf,"%f", &pc_w); |
if(pc_w <= 0.0 ) { |
if(pc_w < 0.0 ) { |
pc_w = DEFAULT_PC_W; |
pc_w = DEFAULT_PC_W; |
} |
} |
} else { |
} else { |