Diff for /capa/capa51/pProj/capaCgiUtils.c between versions 1.13 and 1.22

version 1.13, 2000/03/22 21:08:03 version 1.22, 2010/05/11 00:42:42
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 123  CAPA_ARG((char *s,char c)) Line 146  CAPA_ARG((char *s,char c))
     return -1;      return -1;
 }  }
   
 int getline  int capa_getline
 CAPA_ARG((char *s,int n,FILE *f))   CAPA_ARG((char *s,int n,FILE *f)) 
 {  {
     register int i=0;      register int i=0;
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 {

Removed from v.1.13  
changed lines
  Added in v.1.22


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>