aimmath-commit Mailing List for AiM Assessment in Mathematics (Page 23)
Brought to you by:
gustav_delius,
npstrick
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(73) |
Aug
(96) |
Sep
(240) |
Oct
(34) |
Nov
(12) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(31) |
Feb
(6) |
Mar
(17) |
Apr
(6) |
May
(5) |
Jun
|
Jul
|
Aug
(2) |
Sep
(2) |
Oct
(19) |
Nov
|
Dec
|
2005 |
Jan
|
Feb
|
Mar
(14) |
Apr
(33) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <gus...@us...> - 2003-07-11 10:39:44
|
Update of /cvsroot/aimmath/AIM/imagecache In directory sc8-pr-cvs1:/tmp/cvs-serv17085/imagecache Added Files: Tag: develop_2_1 README Log Message: A directory for temporary GIF files --- NEW FILE: README --- A directory for temporary GIF files containing dynamically generated images. |
From: <gus...@us...> - 2003-07-11 09:31:13
|
Update of /cvsroot/aimmath/AIM/WEB-INF/logs In directory sc8-pr-cvs1:/tmp/cvs-serv16629/WEB-INF/logs Added Files: Tag: develop_2_1 README Log Message: directory for various log files created by AiM --- NEW FILE: README --- various log files for the system. |
From: <nps...@us...> - 2003-07-10 23:32:12
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv8719/WEB-INF/maple Modified Files: Tag: develop_2_1 PackageList Log Message: Fixed corrupted version Index: PackageList =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/PackageList,v retrieving revision 1.1.1.1.2.2 retrieving revision 1.1.1.1.2.3 diff -C2 -d -r1.1.1.1.2.2 -r1.1.1.1.2.3 *** PackageList 10 Jul 2003 20:10:03 -0000 1.1.1.1.2.2 --- PackageList 10 Jul 2003 23:32:09 -0000 1.1.1.1.2.3 *************** *** 1,4 **** ! aim/Trig aim/Util1 aim/Quiz aim/QuizCache --- 1,34 ---- ! OS ! Util ! I18n ! Class ! Pot ! Date ! ParsedText ! Random ! Cache ! ImageCache ! HTML ! LaTeX ! Local ! SafeParse ! aim/Test ! aim/Util aim/Util1 + aim/Mark + aim/SyntaxHints + aim/Diff + aim/Int + aim/Functions + aim/Trig + aim/Matrix + aim/Student + aim/Register + aim/Question + aim/TextQuestion + aim/MCQuestion + aim/MRQuestion + aim/MatrixQuestion + aim/MultiQuestion aim/Quiz aim/QuizCache |
From: <nps...@us...> - 2003-07-10 21:38:17
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv23000/WEB-INF/maple Removed Files: Tag: develop_2_1 trylast.mpl Log Message: --- trylast.mpl DELETED --- |
From: <nps...@us...> - 2003-07-10 21:32:12
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv21652/WEB-INF/maple Modified Files: Tag: develop_2_1 Make.mpl Log Message: Fixed stray diff markup Index: Make.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Make.mpl,v retrieving revision 1.1.1.1.2.3 retrieving revision 1.1.1.1.2.4 diff -C2 -d -r1.1.1.1.2.3 -r1.1.1.1.2.4 *** Make.mpl 10 Jul 2003 20:10:03 -0000 1.1.1.1.2.3 --- Make.mpl 10 Jul 2003 21:32:09 -0000 1.1.1.1.2.4 *************** *** 102,113 **** Make_ok := true: while (line <> 0) do - <<<<<<< Make.mpl - line := util_unixify(line): - ======= # remove comment (possibly preceded by whitespace) or # whitespace at end of line from line line := StringTools:-RegSub("^([^ \t#]*)([ \t]*#.*|[ \t]*.*$)?", line, "\\1"); line := util_unixify(line); - >>>>>>> 1.1.1.1.2.2 if line <> "" then Make_ok := evalb(package_read(cat(line,".mpl")) and Make_ok): --- 102,109 ---- |
From: <nps...@us...> - 2003-07-10 20:10:08
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin In directory sc8-pr-cvs1:/tmp/cvs-serv8131/WEB-INF/maple/aim/admin Modified Files: Tag: develop_2_1 Generate.mpl Notify.mpl Quiz.mpl Register.mpl SourceDir.mpl SourceFile.mpl Student.mpl Subject.mpl SubjectHome.mpl Zone.mpl Added Files: Tag: develop_2_1 ZoneAdminHome.mpl ZoneStudentHome.mpl Log Message: Many changes, mostly to implement multipart questions --- NEW FILE: ZoneAdminHome.mpl --- # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details read("Package.mpl"): Package("aim/admin/ZoneAdminHome",""): ###################################################################### `aim/admin/Command/Declare`('`admin/ZoneAdminHome`', ['Parameter', "Action" :: {"LoadZoneAdminHome","SaveZoneAdminHome"} = "LoadZoneAdminHome" ], ['Parameter',"HeadText"::`HTML/String` = ""], ['Parameter',"FootText"::`HTML/String` = ""], ################################################## ['Action',"LoadZoneAdminHome", "Reload the home page header and footer from disk.", ['LinkText' = __("Reload home page")]], ['Action',"SaveZoneAdminHome", "Save options.", ['LinkText' = __("Save home page")]], ################################################## ['Template', [["a", "name"="top"]], ["center", ["h1",__("Zone administrator login page editor")]], ["br"], [["hr","noshade"]], [["table","width" = "100%"], ["tr", [["td","width" = "14%"],`HTML/CloseButton`], [["td","width" = "13%"], [["a", "href" = "#bottom"],__("Bottom")]], [["td","width" = "17%"],{["LoadZoneAdminHome"]}], [["td","width" = "17%"],{["SaveZoneAdminHome"]}], [["td","width" = "13%"], [["a", "href" = "#header"],__("Header")]], [["td","width" = "13%"], [["a", "href" = "#footer"],__("Footer")]], [["td","width" = "13%"], [["a", "href" = "#preview"],__("Preview")]]]], [["hr", "noshade"]], ["h2",__("Home page")], ["br"], __("#Explain home page head and foot"), [["a", "name" = "header"],["h3",__("Header:")]], ["br"], [["textarea", "name" = "HeadText", "cols" = "70", "rows" = "20"], {"headtext"} ], ["br"], [["a", "name"="footer"],["h3",__("Footer:")]], ["br"], [["textarea", "name" = "FootText", "cols" = "70", "rows" = "10"], {"foottext"} ], ["br"], [["hr", "noshade"]], [["a", "name" = "preview"],["h3",__("Preview:")]], {"headtext"}, ["hr"], [["font", "color" = "blue"], __("Subject selection form goes here.") ], ["hr"], {"foottext"}, ["br"], [["hr", "noshade"]], [["table","width" = "100%"], ["tr", [["td","width" = "14%"],`HTML/CloseButton`], [["td","width" = "17%"],{["LoadZoneAdminHome"]}], [["td","width" = "17%"],{["SaveZoneAdminHome"]}], [["td","width" = "13%"], [["a", "href" = "#top"],__("Top")]], [["td","width" = "13%"], [["a", "href" = "#header"],__("Header")]], [["td","width" = "13%"], [["a", "href" = "#footer"],__("Footer")]], [["td","width" = "13%"], [["a", "href" = "#preview"],__("Preview")]]]], [["hr", "noshade"]], [["a", "name"="bottom"]] ], ################################################## ['Process', proc(page::`aim/admin/Page`,p::table) local headtext,foottext,headfile,footfile,action; headfile := cat(DefaultZone['RootDir'],"/adminhead.html"); footfile := cat(DefaultZone['RootDir'],"/adminfoot.html"); action := p["Action"]; if action = "LoadZoneAdminHome" then headtext := traperror(`Util/TextFileContents`(headfile)); if headtext = lasterror then headtext := "<h1>Administrator login page</h1>\n<br/>\n"; fi; foottext := traperror(`Util/TextFileContents`(footfile)); if foottext = lasterror then foottext := ""; fi; else headtext := p["HeadText"]; if headtext = "" then headtext := "<h1>Administrator login page</h1>\n<br/>\n"; fi; foottext := p["FootText"]; fprintf(headfile,"%s",headtext); fprintf(footfile,"%s",foottext); traperror(fclose(headfile)); traperror(fclose(footfile)); fi; page['Title'] :=__("Administrator login page edit:"); page['FillTemplate', "Title" = subject['Title'], "headtext" = headtext, "foottext" = foottext ]; end ] ): ###################################################################### EndPackage(): --- NEW FILE: ZoneStudentHome.mpl --- # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details read("Package.mpl"): Package("aim/admin/ZoneStudentHome",""): ###################################################################### `aim/admin/Command/Declare`('`admin/ZoneStudentHome`', ['Parameter', "Action" :: {"LoadZoneStudentHome","SaveZoneStudentHome"} = "LoadZoneStudentHome" ], ['Parameter',"HeadText"::`HTML/String` = ""], ['Parameter',"FootText"::`HTML/String` = ""], ################################################## ['Action',"LoadZoneStudentHome", "Reload the home page header and footer from disk.", ['LinkText' = __("Reload home page")]], ['Action',"SaveZoneStudentHome", "Save options.", ['LinkText' = __("Save home page")]], ################################################## ['Template', [["a", "name"="top"]], ["center", ["h1",__("Zone student login page editor")]], ["br"], [["hr","noshade"]], [["table","width" = "100%"], ["tr", [["td","width" = "14%"],`HTML/CloseButton`], [["td","width" = "13%"], [["a", "href" = "#bottom"],__("Bottom")]], [["td","width" = "17%"],{["LoadZoneStudentHome"]}], [["td","width" = "17%"],{["SaveZoneStudentHome"]}], [["td","width" = "13%"], [["a", "href" = "#header"],__("Header")]], [["td","width" = "13%"], [["a", "href" = "#footer"],__("Footer")]], [["td","width" = "13%"], [["a", "href" = "#preview"],__("Preview")]]]], [["hr", "noshade"]], ["h2",__("Home page")], ["br"], __("#Explain home page head and foot"), [["a", "name" = "header"],["h3",__("Header:")]], ["br"], [["textarea", "name" = "HeadText", "cols" = "70", "rows" = "20"], {"headtext"} ], ["br"], [["a", "name"="footer"],["h3",__("Footer:")]], ["br"], [["textarea", "name" = "FootText", "cols" = "70", "rows" = "10"], {"foottext"} ], ["br"], [["hr", "noshade"]], [["a", "name" = "preview"],["h3",__("Preview:")]], {"headtext"}, ["hr"], [["font", "color" = "blue"], __("Subject selection form goes here.") ], ["hr"], {"foottext"}, ["br"], [["hr", "noshade"]], [["table","width" = "100%"], ["tr", [["td","width" = "14%"],`HTML/CloseButton`], [["td","width" = "17%"],{["LoadZoneStudentHome"]}], [["td","width" = "17%"],{["SaveZoneStudentHome"]}], [["td","width" = "13%"], [["a", "href" = "#top"],__("Top")]], [["td","width" = "13%"], [["a", "href" = "#header"],__("Header")]], [["td","width" = "13%"], [["a", "href" = "#footer"],__("Footer")]], [["td","width" = "13%"], [["a", "href" = "#preview"],__("Preview")]]]], [["hr", "noshade"]], [["a", "name"="bottom"]] ], ################################################## ['Process', proc(page::`aim/admin/Page`,p::table) local headtext,foottext,headfile,footfile,action; headfile := cat(DefaultZone['RootDir'],"/studenthead.html"); footfile := cat(DefaultZone['RootDir'],"/studentfoot.html"); action := p["Action"]; if action = "LoadZoneStudentHome" then headtext := traperror(`Util/TextFileContents`(headfile)); if headtext = lasterror then headtext := "<h1>Administrator login page</h1>\n<br/>\n"; fi; foottext := traperror(`Util/TextFileContents`(footfile)); if foottext = lasterror then foottext := ""; fi; else headtext := p["HeadText"]; if headtext = "" then headtext := "<h1>Administrator login page</h1>\n<br/>\n"; fi; foottext := p["FootText"]; fprintf(headfile,"%s",headtext); fprintf(footfile,"%s",foottext); traperror(fclose(headfile)); traperror(fclose(footfile)); fi; page['Title'] :=__("Administrator login page edit:"); page['FillTemplate', "Title" = subject['Title'], "headtext" = headtext, "foottext" = foottext ]; end ] ): ###################################################################### EndPackage(): Index: Generate.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Generate.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Generate.mpl 5 May 2003 03:25:46 -0000 1.2 --- Generate.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 109,119 **** cat( __("Passwords were generated for the following students:"), ! "\n<br>\n", studentlist, ! "\n<br>\n", sprintf( __("Click on the %s link to send email to these students, telling them their passwords."), page['ActionLink',"Notify",[idlist]]), ! "\n<br>\n"); fi; else --- 109,119 ---- cat( __("Passwords were generated for the following students:"), ! "\n<br/>\n", studentlist, ! "\n<br/>\n", sprintf( __("Click on the %s link to send email to these students, telling them their passwords."), page['ActionLink',"Notify",[idlist]]), ! "\n<br/>\n"); fi; else *************** *** 123,127 **** "<font color='red'>", __("There was an error while generating passwords:"), ! "</font>\n<br>\n<pre>\n", err, "\n</pre>\n"); --- 123,127 ---- "<font color='red'>", __("There was an error while generating passwords:"), ! "</font>\n<br/>\n<pre>\n", err, "\n</pre>\n"); Index: Notify.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Notify.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Notify.mpl 5 May 2003 03:25:46 -0000 1.2 --- Notify.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 107,113 **** html, __("The following students were notified of their passwords:"), ! "\n<br>\n", "<table>\n",op(map(line,notified)),"</table>\n", ! "<br>\n"; fi; --- 107,113 ---- html, __("The following students were notified of their passwords:"), ! "\n<br/>\n", "<table>\n",op(map(line,notified)),"</table>\n", ! "<br/>\n"; fi; *************** *** 115,123 **** html := html, ! "<hr>", __("The following students were not notified, because their email addresses are not known:"), ! "\n<br>\n", "<table>\n",op(map(line,noemail)),"</table>\n", ! "<br>\n"; fi; --- 115,123 ---- html := html, ! "<hr/>", __("The following students were not notified, because their email addresses are not known:"), ! "\n<br/>\n", "<table>\n",op(map(line,noemail)),"</table>\n", ! "<br/>\n"; fi; *************** *** 125,135 **** html := html, ! "<hr>", __("The following students were not found in the register:"), ! "\n<br>\n", "<table>\n", op(map(i -> cat("<tr><td>",i,"</td></tr>\n"),badids)), "</table>\n", ! "<br>\n"; fi; html := cat(html); --- 125,135 ---- html := html, ! "<hr/>", __("The following students were not found in the register:"), ! "\n<br/>\n", "<table>\n", op(map(i -> cat("<tr><td>",i,"</td></tr>\n"),badids)), "</table>\n", ! "<br/>\n"; fi; html := cat(html); Index: Quiz.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Quiz.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Quiz.mpl 5 May 2003 03:25:46 -0000 1.2 --- Quiz.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 187,191 **** "rows" = "15" ], {"selectortext"}], ! "\n<br>\n", [["hr", "noshade"]], --- 187,191 ---- "rows" = "15" ], {"selectortext"}], ! "\n<br/>\n", [["hr", "noshade"]], *************** *** 252,256 **** if err = lasterror then page['SetError', ! cat(__("Error while creating quiz %s:"),"\n<br>\n%s<br>\n"), quizname,err]; RETURN(); --- 252,256 ---- if err = lasterror then page['SetError', ! cat(__("Error while creating quiz %s:"),"\n<br/>\n%s<br/>\n"), quizname,err]; RETURN(); *************** *** 381,385 **** [["th", "align" = "left", "width" = "10%"]," "], [["th", "align" = "left", "width" = "10%"]," "]], ! ["tr", [["td", "colspan" = "6"],["hr"]]]); if p["ShowHiddenQuestions"] = "true" then --- 381,385 ---- [["th", "align" = "left", "width" = "10%"]," "], [["th", "align" = "left", "width" = "10%"]," "]], ! ["tr", [["td", "colspan" = "7"],["hr"]]]); if p["ShowHiddenQuestions"] = "true" then Index: Register.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Register.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Register.mpl 5 May 2003 03:25:46 -0000 1.2 --- Register.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 355,359 **** textfile := p["FileToUpload"]; if not(type([textfile],[string])) then ! page['SetError',__("Invalid upload file:<br> %A<br>"),textfile]; RETURN(); fi; --- 355,359 ---- textfile := p["FileToUpload"]; if not(type([textfile],[string])) then ! page['SetError',__("Invalid upload file:<br/> %A<br/>"),textfile]; RETURN(); fi; *************** *** 366,370 **** err := traperror(register['LoadText',p["FileToUpload"]]); if err = lasterror then ! page['SetError',__("Error uploading register:<br>%s<br>"),err]; RETURN(); fi; --- 366,370 ---- err := traperror(register['LoadText',p["FileToUpload"]]); if err = lasterror then ! page['SetError',__("Error uploading register:<br/>%s<br/>"),err]; RETURN(); fi; *************** *** 373,377 **** err := traperror(register['MergeText',textfile]); if err = lasterror then ! page['SetError',__("Error uploading register:<br>%s<br>"),err]; RETURN(); fi; --- 373,377 ---- err := traperror(register['MergeText',textfile]); if err = lasterror then ! page['SetError',__("Error uploading register:<br/>%s<br/>"),err]; RETURN(); fi; *************** *** 436,440 **** "<td><input type='checkbox' name='",s['ID'],"Selected'", `if`(member(s['ID'],sl)," checked",""), ! "></td>\n", "<td>",s['ID'],"</td>\n", "<td>",s['Name'],"</td>\n", --- 436,440 ---- "<td><input type='checkbox' name='",s['ID'],"Selected'", `if`(member(s['ID'],sl)," checked",""), ! "/></td>\n", "<td>",s['ID'],"</td>\n", "<td>",s['Name'],"</td>\n", *************** *** 467,471 **** "</tr>\n", op(map(studentline,studentlist,page,selected)), ! "</table>\n<br>\n"); page['Title'] := --- 467,471 ---- "</tr>\n", op(map(studentline,studentlist,page,selected)), ! "</table>\n<br/>\n"); page['Title'] := Index: SourceDir.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/SourceDir.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** SourceDir.mpl 5 May 2003 03:25:46 -0000 1.2 --- SourceDir.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 167,171 **** title := cat( ! "<h1>",__("AIM source files"),"</h1><br>\n", "<table>\n", "<tr><td>",__("Subject:"),"</td>\n", --- 167,171 ---- title := cat( ! "<h1>",__("AIM source files"),"</h1><br/>\n", "<table>\n", "<tr><td>",__("Subject:"),"</td>\n", *************** *** 174,178 **** "<td>",quiztitle,"</td></tr>\n", "</table>", ! "\n<br>\n"); shorttitle := sprintf("%s:%s:%s",__("Source"),subjname,quizname); --- 174,178 ---- "<td>",quiztitle,"</td></tr>\n", "</table>", ! "\n<br/>\n"); shorttitle := sprintf("%s:%s:%s",__("Source"),subjname,quizname); *************** *** 181,190 **** title := cat( ! "<h1>",__("AIM source files"),"</h1><br>\n", "<table>\n", "<tr><td>",__("Subject:"),"</td>\n", "<td>",subjtitle,"</td></tr>\n", "</table>", ! "\n<br>\n"); shorttitle := sprintf("%s:%s",__("Source"),subjname); --- 181,190 ---- title := cat( ! "<h1>",__("AIM source files"),"</h1><br/>\n", "<table>\n", "<tr><td>",__("Subject:"),"</td>\n", "<td>",subjtitle,"</td></tr>\n", "</table>", ! "\n<br/>\n"); shorttitle := sprintf("%s:%s",__("Source"),subjname); *************** *** 194,198 **** title := cat( ! "<h1>",__("AIM source files"),"</h1><br>\n", "<table>\n", "<tr><td>",__("Subject:"),"</td>\n", --- 194,198 ---- title := cat( ! "<h1>",__("AIM source files"),"</h1><br/>\n", "<table>\n", "<tr><td>",__("Subject:"),"</td>\n", *************** *** 201,205 **** "<td>",p["Dir"],"</td></tr>\n", "</table>", ! "\n<br>\n"); shorttitle := sprintf("%s:%s",__("Source"),subjname,p["Dir"]); --- 201,205 ---- "<td>",p["Dir"],"</td></tr>\n", "</table>", ! "\n<br/>\n"); shorttitle := sprintf("%s:%s",__("Source"),subjname,p["Dir"]); Index: SourceFile.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/SourceFile.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** SourceFile.mpl 5 May 2003 03:25:46 -0000 1.2 --- SourceFile.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 314,318 **** if nops(questions) = 0 then ! compreport := compreport,"\n<br>\n",__("No questions found"),"\n<br>\n"; fi; --- 314,318 ---- if nops(questions) = 0 then ! compreport := compreport,"\n<br/>\n",__("No questions found"),"\n<br/>\n"; fi; *************** *** 341,352 **** compreport := compreport, ! "<hr noshade>\n", sprintf( ! __("Question <font color='red'><tt>%s</tt></font>: compilation error\n<br>\n"), qname), msg; if errline > 0 then ! compreport := compreport,"\n<hr>\n<pre>\n"; for i from 1 to errline - 1 do compreport := compreport,lines[i]; --- 341,352 ---- compreport := compreport, ! "<hr noshade/>\n", sprintf( ! __("Question <font color='red'><tt>%s</tt></font>: compilation error\n<br/>\n"), qname), msg; if errline > 0 then ! compreport := compreport,"\n<hr/>\n<pre>\n"; for i from 1 to errline - 1 do compreport := compreport,lines[i]; *************** *** 363,367 **** fi; ! compreport := compreport,"<hr noshade>\n"; else compreport := --- 363,367 ---- fi; ! compreport := compreport,"<hr noshade/>\n"; else compreport := *************** *** 369,375 **** "<font color='red'>", __("Error: malformed compilation report"), ! "</font>\n<br>\n<pre>\n", `HTML/Escape`(sprintf("%a",eval(question))), ! "\n</pre>\n<br>\n"; fi; od; --- 369,375 ---- "<font color='red'>", __("Error: malformed compilation report"), ! "</font>\n<br/>\n<pre>\n", `HTML/Escape`(sprintf("%a",eval(question))), ! "\n</pre>\n<br/>\n"; fi; od; Index: Student.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Student.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Student.mpl 5 May 2003 03:25:46 -0000 1.2 --- Student.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 236,240 **** "value=\"",student['Password'],"\" ", "size=\"50\" ", ! "name=\"StudentPassword\"></td>\n", "</tr>\n"); --- 236,240 ---- "value=\"",student['Password'],"\" ", "size=\"50\" ", ! "name=\"StudentPassword\"/></td>\n", "</tr>\n"); Index: Subject.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Subject.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Subject.mpl 5 May 2003 03:25:46 -0000 1.2 --- Subject.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 340,344 **** if err = lasterror then page['SetError', ! cat(__("Error while creating subject %s:"),"\n<br>\n%s<br>\n"), subjectname,err]; RETURN(); --- 340,344 ---- if err = lasterror then page['SetError', ! cat(__("Error while creating subject %s:"),"\n<br/>\n%s<br/>\n"), subjectname,err]; RETURN(); Index: SubjectHome.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/SubjectHome.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** SubjectHome.mpl 5 May 2003 03:25:46 -0000 1.2 --- SubjectHome.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 123,127 **** if headtext = lasterror then ! headtext := sprintf("<h1>%s</h1>\n<br>\n",subject['Title']); fi; --- 123,127 ---- if headtext = lasterror then ! headtext := sprintf("<h1>%s</h1>\n<br/>\n",subject['Title']); fi; *************** *** 133,137 **** headtext := p["HeadText"]; if headtext = "" then ! headtext := sprintf("<h1>%s</h1>\n<br>\n",subject['Title']); fi; --- 133,137 ---- headtext := p["HeadText"]; if headtext = "" then ! headtext := sprintf("<h1>%s</h1>\n<br/>\n",subject['Title']); fi; Index: Zone.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Zone.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Zone.mpl 5 May 2003 03:25:46 -0000 1.2 --- Zone.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 86,89 **** --- 86,105 ---- 'Command' = "admin/Register"]], + ['Action',"EditStudentHome", + "Edit the header and footer for the home page seen by students. + (In between the header and footer goes an automatically generated + quiz selection form.", + ['LinkText' = __("Edit student login page"), + 'Command' = "admin/ZoneStudentHome"] + ], + + ['Action',"EditAdminHome", + "Edit the header and footer for the home page seen by students. + (In between the header and footer goes an automatically generated + quiz selection form.", + ['LinkText' = __("Edit administrator login page"), + 'Command' = "admin/ZoneAdminHome"] + ], + ################################################## *************** *** 190,195 **** --- 206,213 ---- [["td", "width" = "50%", "align" = "right"], {"togglehidden"}]]], + {"explainhidden"}, {"subjecttable"}, ["br"], + ["hr"], __("New subject:")," ", [["inputtext", "name" = "SubjectToCreate", "value" = ""]], *************** *** 198,201 **** --- 216,230 ---- __("#Explain new subjects hidden"), [["hr","noshade"]], + + ########## + + ["h2",__("Login pages")], + ["br"], + {["EditStudentHome"]}, + ["br"], + {["EditAdminHome"]}, + ["br"], + [["hr","noshade"]], + [["table","width" = "100%"], ["tr", *************** *** 206,244 **** [["td","width" = "17%"],{["SaveZoneOptions"]}]]], [["hr", "noshade"]], - - ########## - - ["h2",__("Student login page")], - ["br"], - __("#Explain student head and foot"), - ["h3",__("Header:")], - ["br"], - [["textarea", "name" = "StudentHead", "cols" = "70", "rows" = "20"], - {"studenthead"} - ], - ["br"], - ["h3",__("Footer:")], - ["br"], - [["textarea", "name" = "StudentFoot", "cols" = "70", "rows" = "10"], - {"studentfoot"} - ], - ["br"], - - ["h2",__("Administrator login page")], - ["br"], - __("#Explain admin head and foot"), - ["h3",__("Header:")], - ["br"], - [["textarea", "name" = "AdminHead", "cols" = "70", "rows" = "20"], - {"adminhead"} - ], - ["br"], - ["h3",__("Footer:")], - ["br"], - [["textarea", "name" = "AdminFoot", "cols" = "70", "rows" = "10"], - {"adminfoot"} - ], - ["br"], - [["a", "name"="bottom"]] ], --- 235,238 ---- *************** *** 250,254 **** local subject,excludedsubject,nam,subjectlist,ord,err, ! subjecttable,subjectnumber,togglehidden,hiddensubjects, studenthead,studentfoot,adminhead,adminfoot, studentheadfile,studentfootfile,adminheadfile,adminfootfile; --- 244,249 ---- local subject,excludedsubject,nam,subjectlist,ord,err, ! subjecttable,subjectnumber,togglehidden,explainhidden, ! hiddensubjects,visiblesubjects, studenthead,studentfoot,adminhead,adminfoot, studentheadfile,studentfootfile,adminheadfile,adminfootfile; *************** *** 363,437 **** fi; - subjecttable := - `new/HTML/Tag`( - ["table", "width" = "100%"], - ["tr", - [["th", "align" = "left", "width" = "10%"], - __("Subject number")], - [["th", "align" = "left", "width" = "50%"], - __("Name")], - [["th", "align" = "left", "width" = "10%"]," "], - [["th", "align" = "left", "width" = "10%"]," "], - [["th", "align" = "left", "width" = "10%"]," "], - [["th", "align" = "left", "width" = "10%"]," "]], - ["tr", [["td", "colspan" = "8"],["hr"]]]); - - if p["ShowHiddenSubjects"] = "true" then - togglehidden := page['ActionLink',"HideHiddenSubjects"]; - subjecttable['AddContents', - ["tr",[["td", "colspan" = "8"], - __("Visible subjects")]]]; - else - togglehidden := - sprintf(__("#Explain hidden subjects (%s)"), - page['ActionLink',"ShowHiddenSubjects"]); - fi; ! subjectnumber := 0; ! for nam in DefaultZone['SubjectNames'] do ! subjectnumber := subjectnumber + 1; ! subjecttable['AddContents', ! ["tr", ! [["td", "align" = "left"], ! [["inputtext", ! "name" = cat(nam,"Order"), ! "value" = sprintf("%A",subjectnumber), ! "size" = "3"]]], ! [["td","align" = "left"],nam], ! [["td","align" = "left"], ! page['ActionLink',"LoadSubjectOptions",[nam]]], ! [["td","align" = "left"], ! page['ActionLink',"AnalyzeSubject",[nam]]], ! [["td","align" = "left"], ! page['ActionLink',"ToggleSubject",[nam],__("Hide")]]]] ! od; ! if p["ShowHiddenSubjects"] = "true" then ! subjecttable['AddContents', ! ["tr",[["td", "colspan" = "8"],["hr"]]], ! ["tr",[["td", "colspan" = "8"], ! __("Hidden subjects")]]]; ! hiddensubjects := ! `OS/ListFiles`(cat(DefaultZone['RootDir'],"/subjects")); ! hiddensubjects := ! {op(hiddensubjects)} minus {op(DefaultZone['SubjectNames'])}; ! hiddensubjects := sort([op(hiddensubjects)]); ! for nam in hiddensubjects do subjecttable['AddContents', ["tr", ! [["td", "align" = "left"], " "], ! [["td","align" = "left"],nam], ! [["td","align" = "left"], ! page['ActionLink',"LoadSubjectOptions",[nam]]], ! [["td","align" = "left"]," "], ! [["td","align" = "left"], ! page['ActionLink',"ToggleSubject",[nam],__("Unhide")]]]] ! od; ! fi; page['Title'] := __("Zone:"); --- 358,456 ---- fi; ! visiblesubjects := DefaultZone['SubjectNames']; ! hiddensubjects := ! `OS/ListFiles`(cat(DefaultZone['RootDir'],"/subjects")); ! hiddensubjects := ! {op(hiddensubjects)} minus {op(visiblesubjects)}; ! hiddensubjects := sort([op(hiddensubjects)]); ! if visiblesubjects = [] and ! hiddensubjects = [] then ! subjecttable := ! __("There are no visible or hidden subjects for this zone."); ! else ! subjecttable := ! `new/HTML/Tag`( ! ["table", "width" = "100%"], ! ["tr", ! [["th", "align" = "left", "width" = "10%"], ! __("Subject number")], ! [["th", "align" = "left", "width" = "50%"], ! __("Name")], ! [["th", "align" = "left", "width" = "10%"]," "], ! [["th", "align" = "left", "width" = "10%"]," "], ! [["th", "align" = "left", "width" = "10%"]," "], ! [["th", "align" = "left", "width" = "10%"]," "]], ! ["tr", [["td", "colspan" = "8"],["hr"]]]); ! if p["ShowHiddenSubjects"] = "true" then ! togglehidden := page['ActionLink',"HideHiddenSubjects"]; ! explainhidden := ""; ! subjecttable['AddContents', ! ["tr",[["td", "colspan" = "8"], ! __("Visible subjects")]]]; ! else ! togglehidden := page['ActionLink',"ShowHiddenSubjects"]; ! explainhidden := ! sprintf(__("#Explain hidden subjects (%s)"), ! page['ActionLink',"ShowHiddenSubjects"]); ! fi; ! if visiblesubjects = [] then subjecttable['AddContents', ["tr", ! [["td", "align" = "center","colspan" = "8"], ! __("There are no visible subjects for this zone.")]]]; ! else ! subjectnumber := 0; ! for nam in DefaultZone['SubjectNames'] do ! subjectnumber := subjectnumber + 1; ! subjecttable['AddContents', ! ["tr", ! [["td", "align" = "left"], ! [["inputtext", ! "name" = cat(nam,"Order"), ! "value" = sprintf("%A",subjectnumber), ! "size" = "3"]]], ! [["td","align" = "left"],nam], ! [["td","align" = "left"], ! page['ActionLink',"LoadSubjectOptions",[nam]]], ! [["td","align" = "left"], ! page['ActionLink',"AnalyzeSubject",[nam]]], ! [["td","align" = "left"], ! page['ActionLink',"ToggleSubject",[nam],__("Hide")]]]] ! od; ! fi; ! ! if p["ShowHiddenSubjects"] = "true" then ! if hiddensubjects = [] then ! subjecttable['AddContents', ! ["tr", ! [["td", "align" = "center","colspan" = "8"], ! __("There are no hidden subjects for this zone.")]]]; ! else ! subjecttable['AddContents', ! ["tr",[["td", "colspan" = "8"],["hr"]]], ! ["tr",[["td", "colspan" = "8"], ! __("Hidden subjects")]]]; ! ! for nam in hiddensubjects do ! subjecttable['AddContents', ! ["tr", ! [["td", "align" = "left"], " "], ! [["td","align" = "left"],nam], ! [["td","align" = "left"], ! page['ActionLink',"LoadSubjectOptions",[nam]]], ! [["td","align" = "left"]," "], ! [["td","align" = "left"], ! page['ActionLink',"ToggleSubject",[nam],__("Unhide")]]]] ! od; ! fi; ! fi; ! fi; page['Title'] := __("Zone:"); *************** *** 452,455 **** --- 471,475 ---- page['FillTemplate', "togglehidden" = togglehidden, + "explainhidden" = explainhidden, "subjecttable" = subjecttable['ToString'], "studenthead" = studenthead, |
From: <nps...@us...> - 2003-07-10 20:10:08
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/review In directory sc8-pr-cvs1:/tmp/cvs-serv8131/WEB-INF/maple/aim/review Modified Files: Tag: develop_2_1 Quiz.mpl Added Files: Tag: develop_2_1 Question.mpl Log Message: Many changes, mostly to implement multipart questions --- NEW FILE: Question.mpl --- # @(#)$Id: Question.mpl,v 1.1.2.1 2003/07/10 20:10:04 npstrick Exp $ # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details read("Package.mpl"): Package("aim/review/Question"," This package defines the GUI allowing the administrator to review a student's answers to a question. " ): ###################################################################### rqc0 := `new/aim/Quiz/Context`(): rqc0['StudentIsGuest'] := false: rqc0['StudentIsTeacher'] := true: rqc0['QuizReviewMode'] := false: rqc0['QuestionReviewMode'] := true: rqc0['QuizTryMode'] := false: rqc0['QuestionTryMode'] := false: rqc0['UseRecordedSeed'] := true: rqc0['UseSeedParameter'] := true: rqc0['GenerateSeed'] := false: rqc0['ReportSeed'] := true: rqc0['InviteSeedSelection'] := false: rqc0['RecordSeed'] := false: rqc0['DeleteSeed'] := false: rqc0['InviteAnswers'] := false: rqc0['InviteValidation'] := false: rqc0['InviteMarking'] := false: rqc0['InviteNewVersion'] := false: rqc0['InviteNewQuiz'] := false: rqc0['AcceptAnswers'] := true: rqc0['LoadHistory'] := true: rqc0['SaveHistory'] := false: rqc0['AcceptAnswers'] := true: rqc0['UseRecordedAnswers'] := true: rqc0['MarkRequested'] := true: rqc0['ShowPrevious'] := true: rqc0['ShowFeedback'] := true: rqc0['ShowMark'] := true: rqc0['ShowRightAnswer'] := false: rqc0['ShowSolution'] := false: rqc0['ShowNotes'] := true: rqc0['ShowMarkSummary'] := true: `Package/Assign`( `aim/review/Question/Context/NoSol`::`aim/Quiz/Context`, "A #`aim/Quiz/Context`# object for use in reviewing quizzes.", eval(rqc0) ): unassign('rqc0'): ###################################################################### rqc1 := `new/aim/Quiz/Context`(): rqc1['StudentIsGuest'] := false: rqc1['StudentIsTeacher'] := true: rqc1['QuizReviewMode'] := false: rqc1['QuestionReviewMode'] := true: rqc1['QuizTryMode'] := false: rqc1['QuestionTryMode'] := false: rqc1['UseRecordedSeed'] := true: rqc1['UseSeedParameter'] := true: rqc1['GenerateSeed'] := false: rqc1['ReportSeed'] := true: rqc1['InviteSeedSelection'] := false: rqc1['RecordSeed'] := false: rqc1['DeleteSeed'] := false: rqc1['InviteAnswers'] := false: rqc1['InviteValidation'] := false: rqc1['InviteMarking'] := false: rqc1['InviteNewVersion'] := false: rqc1['InviteNewQuiz'] := false: rqc1['AcceptAnswers'] := true: rqc1['LoadHistory'] := true: rqc1['SaveHistory'] := false: rqc1['AcceptAnswers'] := true: rqc1['UseRecordedAnswers'] := true: rqc1['MarkRequested'] := true: rqc1['ShowPrevious'] := true: rqc1['ShowFeedback'] := true: rqc1['ShowMark'] := true: rqc1['ShowRightAnswer'] := true: rqc1['ShowSolution'] := true: rqc1['ShowNotes'] := true: rqc1['ShowMarkSummary'] := true: `Package/Assign`( `aim/review/Question/Context/Sol`::`aim/Quiz/Context`, "A #`aim/Quiz/Context`# object for use in reviewing quizzes.", eval(rqc1) ): unassign('rqc1'): ###################################################################### `aim/admin/Command/Declare`('`review/Question`', ['Parameter',"SubjectName" = 'required',""], ['Parameter',"QuizName" = 'required',""], ['Parameter',"QuizSeed"::integer = 0,""], ['Parameter',"QuestionLabel"::string = 'required',""], ['Parameter',"AttemptNumber"::integer = -1,""], ['Parameter',"StudentID" = 'required',""], ['Parameter',"ShowSolution"::boolean = false,""], ################################################## ['Action',"ReviewQuestion", "Review the question", ['LinkText' = __("Review"), 'Arguments' = ["AttemptNumber"]]], ['Action',"ShowSolution", "Show the correct answers and solutions", ['LinkText' = __("Show solutions"), 'ExtraScript' = "f.ShowSolution.value = 'true';"]], ['Action',"HideSolution", "Hide the correct answers and solutions", ['LinkText' = __("Hide solutions"), 'ExtraScript' = "f.ShowSolution.value = 'false';"]], ['Action',"EditSource", "Edit the source file for a question", ['Command' = "admin/SourceFile", 'LinkText' = __("Edit source file"), 'Arguments' = ["SourceFile"]]], ['Action',"LoadSubjectOptions", "Visit the main subject admin page", ['Command' = "admin/Subject", 'LinkText' = __("Subject options")]], ['Action',"LoadQuizOptions", "Visit the main quiz admin page", ['Command' = "admin/Quiz", 'LinkText' = __("Quiz options")]], ['Action',"ReviewSubject", "Review this student's results in all quizzes for this subject.", ['Command' = "review/Subject", 'LinkText' = __("Review subject")]], ['Action',"ReviewQuiz", "Review this student's results in all questions for this quiz.", ['Command' = "review/Quiz", 'LinkText' = __("Review quiz")]], # ['Action',"EmailStudent", # "Send email to this student", # ['Command' = "email/Student", # 'LinkText' = __("Email student")]], ['Action',"LoadStudentDetails", "Edit the student's personal details", ['LinkText' = __("Student details"), 'Command' = "admin/Student"]], ################################################## ['Template', ["center", ["h1", __("Question review page")]], ["br"], [["hr","noshade"]], [["table","width" = "100%"], ["tr", [["td","width" = "16%"],`HTML/CloseButton`], [["td","width" = "17%"],{["LoadSubjectOptions"]}], [["td","width" = "17%"],{["LoadQuizOptions"]}], [["td","width" = "17%"],{"emailstudent"}], [["td","width" = "17%"],{"adminstudent"}], [["td","width" = "17%"],{"togglesolution"}]]], [["hr", "noshade"]], ["table", ["tr", [["th","align" = "left"],__("Subject")], ["td",{"subjecttitle"}], ["td",{["LoadSubjectOptions"]}], ["td",{["ReviewSubject"]}]], ["tr", [["th","align" = "left"],__("Quiz")], ["td",{"quiztitle"}], ["td",{["LoadQuizOptions"]}], ["td",{["ReviewQuiz"]}]], ["tr", [["th","align" = "left"],__("Seed")], ["td",{"quizseed"}]], ["tr", [["th","align" = "left"],__("Student name")], ["td",{"studentname"}], ["td",{"adminstudent"}], ["td",{"emailstudent"}]]], {"attemptselector"}, ["br"], {"show"}, ["br"], [["hr", "noshade"]], [["a", "name" = "bottom"]] ], ################################################## ['Process', proc(page::`aim/admin/Page`,p::table) local subject,register,quiz,id, student,studentname,emailstudent,adminstudent,togglesolution, seed,quizversion,quizinstance,history,labeltable, question,label,rawtable,quizcontext,questionversion, attemptnum,numattempts,subqversion,subqhistory,attempt, questioninstance,attemptselector,i,bgcol; subject := eval(page['Subject']); register := eval(subject['GetRegister']); id := p["StudentID"]; student := register['GetStudent',id]; if student = NULL then studentname := __("Not known"); emailstudent := ""; adminstudent := ""; else studentname := student['Name']; emailstudent := student['EmailLink']; adminstudent := page['ActionLink',"LoadStudentDetails"]; fi; quiz := traperror(eval(subject['GetQuiz',p["QuizName"]])); if not(type(quiz,`aim/Quiz`)) then page['SetError',"%s: %s",__("Could not load quiz"),p["QuizName"]]; RETURN(); fi; if p["QuizSeed"] = "0" then seed := quiz['GetSeed',id,true]; if seed = NULL then page['SetError', __("Student %s (%s) has not attempted quiz %s"), id, `if`(student = NULL,__("name not known"),student['Name']), quiz['Name']]; RETURN(); fi; else seed := traperror(sscanf(p["QuizSeed"],"%d")[1]); if not(type(seed,posint)) then page['SetError',__("Could not extract quiz seed")]; RETURN(); fi; fi; quizversion := eval(quiz['MakeVersion',seed]); questionversion := eval(quizversion['LabelTable'][p["QuestionLabel"]]); history := traperror(eval(quiz['GetHistory',id,seed])); if not(type(history,`aim/Quiz/History`)) then page['SetError', __("Could not load history for quiz %s and student %s"), quiz['Name'], id]; RETURN(); fi; labeltable := eval(history['LabelTable']); attemptnum := op(sscanf(p["AttemptNumber"],"%d")); if (attemptnum = 0) then # Use raw answers supplied as parameters rawtable := eval(param); else # Use raw answers from recorded history rawtable := table([]); numattempts := []; for subqversion in questionversion['SubQuestions'] do subqhistory := eval(labeltable[subqversion['Label']]); if not(type([subqhistory],[`aim/Question/History`])) then page['SetError', __("Could not load history for question %s in quiz %s and student %s"), p["QuizName"], subqversion['Label'], id]; RETURN(); fi; numattempts := [op(numattempts),subqhistory['Count']]; attempt := traperror(eval(subqhistory['Attempt',attemptnum])); if not(type([attempt],[`aim/Question/ShortAttempt`])) then page['SetError', __("Could not load attempt number %d for question %s in quiz %s and student %s"), attemptnum, subqversion['Label'], p["QuizName"], id]; fi; rawtable[subqversion['CGILabel']] := attempt['RawAnswer']; od; fi; if p["ShowSolution"] = "true" then quizcontext := `aim/review/Quiz/Context/Sol`; togglesolution := page['ActionLink',"HideSolution"]; else quizcontext := `aim/review/Quiz/Context/NoSol`; togglesolution := page['ActionLink',"ShowSolution"]; fi; questioninstance := `aim/Question/MakeInstance/Recursive`( eval(questionversion),eval(rawtable),eval(labeltable), eval(quizcontext),false,attemptnum); if numattempts = [] then # The question has no bottom-level subquestions attemptselector := ""; elif min(op(numattempts)) < max(op(numattempts)) then # Something is wrong - all subquestions should have # the same number of attempts ERROR( sprintf( __("Inconsistent subquestion histories for question %s in quiz %s"), p["QuestionLabel"],p["QuizName"])); else numattempts := numattempts[1]; if attemptnum < 0 then # count backwards from the end attemptnum := numattempts + 1 + attemptnum; fi; attemptselector := `new/HTML/Tag`(["tr"]); if attemptnum > 1 then attemptselector['AddContents', ["td", page['ActionLink', "ReviewQuestion", [sprintf("%d",attemptnum - 1)], __("Previous")]]]; fi; for i from 1 to numattempts do bgcol := `if`(i = attemptnum,"yellow","white"); attemptselector['AddContents', [["td", "bgcolor" = bgcol], page['ActionLink', "ReviewQuestion", [sprintf("%d",i)], sprintf("%d",i)]]]; od; if attemptnum < numattempts then attemptselector['AddContents', ["td", page['ActionLink', "ReviewQuestion", [sprintf("%d",attemptnum + 1)], __("Next")]]]; fi; fi; attemptselector := `new/HTML/Tag`("table",eval(attemptselector)); attemptselector := attemptselector['ToString']; page['Title'] := cat(__("Review:"),subject['Name'],":", quiz['Name'],":", questionversion['Label'],":", student['Surname']); page['FillTemplate', "subjecttitle" = subject['Title'], "quiztitle" = quiz['Title'], "quizseed" = sprintf("%d",seed), "studentid" = id, "studentname" = studentname, "emailstudent" = emailstudent, "adminstudent" = adminstudent, "togglesolution" = togglesolution, "attemptselector" = attemptselector, "show" = questioninstance['Show',quizcontext] ]; end ] ): EndPackage(): Index: Quiz.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/review/Quiz.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Quiz.mpl 5 May 2003 03:25:46 -0000 1.2 --- Quiz.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 18,21 **** --- 18,22 ---- rqc0['StudentIsTeacher'] := true: rqc0['QuizReviewMode'] := true: + rqc0['QuestionReviewMode'] := false: rqc0['QuizTryMode'] := false: rqc0['QuestionTryMode'] := false: *************** *** 40,46 **** rqc0['ShowPrevious'] := true: rqc0['ShowFeedback'] := true: - rqc0['ShowFeedbackMC'] := true: rqc0['ShowMark'] := true: - rqc0['ShowMarkMC'] := true: rqc0['ShowRightAnswer'] := false: rqc0['ShowSolution'] := false: --- 41,45 ---- *************** *** 62,65 **** --- 61,65 ---- rqc1['StudentIsTeacher'] := true: rqc1['QuizReviewMode'] := true: + rqc1['QuestionReviewMode'] := true: rqc1['QuizTryMode'] := true: rqc1['QuestionTryMode'] := true: *************** *** 84,90 **** rqc1['ShowPrevious'] := true: rqc1['ShowFeedback'] := true: - rqc1['ShowFeedbackMC'] := true: rqc1['ShowMark'] := true: - rqc1['ShowMarkMC'] := true: rqc1['ShowRightAnswer'] := true: rqc1['ShowSolution'] := true: --- 84,88 ---- *************** *** 125,133 **** 'ExtraScript' = "f.ShowSolution.value = 'false';"]], ! ['Action',"TryQuestion", ! "Try a question", ! ['Command' = "try/Question", ! 'LinkText' = __("Try"), ! 'Arguments' = ["QuestionName","QuestionSeed","RawAnswer"]]], ['Action',"EditSource", --- 123,131 ---- 'ExtraScript' = "f.ShowSolution.value = 'false';"]], ! ['Action',"ReviewQuestion", ! "Review a question", ! ['Command' = "review/Question", ! 'LinkText' = __("Review"), ! 'Arguments' = ["QuestionLabel","AttemptNumber"]]], ['Action',"EditSource", *************** *** 205,209 **** local subject,register,quiz,id, student,studentname,emailstudent,adminstudent,togglesolution, ! seed,quizversion,quizinstance,history,questionhistory, question,label,rawtable,quizcontext; --- 203,207 ---- local subject,register,quiz,id, student,studentname,emailstudent,adminstudent,togglesolution, ! seed,quizversion,quizinstance,history,labeltable, question,label,rawtable,quizcontext; *************** *** 260,276 **** rawtable := table([]); ! questionhistory := eval(history['QuestionHistory']); for question in quizversion['Questions'] do label := question['Label']; rawtable[cat("RawAnswer",label)] := ! eval(questionhistory[label])['LastRawAnswer']; od; - quizinstance := - eval(quizversion['MakeInstance', - eval(rawtable), - eval(history), - true]); - if p["ShowSolution"] = "true" then quizcontext := `aim/review/Quiz/Context/Sol`; --- 258,268 ---- rawtable := table([]); ! labeltable := eval(history['LabelTable']); for question in quizversion['Questions'] do label := question['Label']; rawtable[cat("RawAnswer",label)] := ! eval(labeltable[label])['LastRawAnswer']; od; if p["ShowSolution"] = "true" then quizcontext := `aim/review/Quiz/Context/Sol`; *************** *** 280,283 **** --- 272,281 ---- togglesolution := page['ActionLink',"ShowSolution"]; fi; + + quizinstance := + eval(quizversion['MakeInstance', + eval(rawtable), + eval(history), + eval(quizcontext)]); quizinstance['SetBody',quizcontext]; |
From: <nps...@us...> - 2003-07-10 20:10:08
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/try In directory sc8-pr-cvs1:/tmp/cvs-serv8131/WEB-INF/maple/aim/try Modified Files: Tag: develop_2_1 Question.mpl Quiz.mpl Log Message: Many changes, mostly to implement multipart questions Index: Question.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/try/Question.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Question.mpl 5 May 2003 03:25:46 -0000 1.2 --- Question.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 20,23 **** --- 20,24 ---- qdc['StudentIsTeacher'] := true: qdc['QuizReviewMode'] := false: + qdc['QuestionReviewMode'] := false: qdc['QuizTryMode'] := false: qdc['QuestionTryMode'] := true: *************** *** 42,48 **** qdc['ShowPrevious'] := true: qdc['ShowFeedback'] := true: - qdc['ShowFeedbackMC'] := true: qdc['ShowMark'] := true: - qdc['ShowMarkMC'] := true: qdc['ShowRightAnswer'] := true: qdc['ShowSolution'] := true: --- 43,47 ---- *************** *** 67,77 **** ['Parameter',"QuestionName" = 'required',""], ['Parameter',"SourceFile" = "",""], ['Parameter',"QuestionSeed"::integer = 0,""], ! ['Parameter',"RawAnswer" = ""], ! ! ['Parameter',"Action"::{"Mark","NewVersion"} = "Mark"], ################################################## --- 66,81 ---- ['Parameter',"QuestionName" = 'required',""], + ['Parameter',"QuestionLabel" = "",""], + ['Parameter',"SourceFile" = "",""], ['Parameter',"QuestionSeed"::integer = 0,""], ! ['Parameter', ! "Action"::{"Mark", ! "TryQuestion", ! "NewVersion", ! "TryRightAnswer"} = ! "TryRightAnswer"], ################################################## *************** *** 121,126 **** ["tr", [["td","width" = "16%"],`HTML/CloseButton`], ! [["td","width" = "16%"],[["a", "href" = "#bottom"],__("Bottom")], ! [["td","width" = "16%"],{"editsource"}]]]], [["hr", "noshade"]], __("Seed: "), --- 125,132 ---- ["tr", [["td","width" = "16%"],`HTML/CloseButton`], ! [["td","width" = "16%"],[["a", "href" = "#bottom"],__("Bottom")]], ! [["td","width" = "16%"],{"editsource"}], ! [["td","width" = "16%"],{["Mark"]}], ! [["td","width" = "16%"],{["NewVersion"]}]]], [["hr", "noshade"]], __("Seed: "), *************** *** 145,150 **** question,qname,title,shorttitle, dir,fullqfile,vrsion,instance,seed, ! show,rawans,editsource,err,fulldir,attempt, ! rightans,numrows,numcols,i,j,cell; global AimCache; --- 151,156 ---- question,qname,title,shorttitle, dir,fullqfile,vrsion,instance,seed, ! show,rawtable,rawans,editsource,err,fulldir, ! qlist,q,userightans; global AimCache; *************** *** 179,183 **** qname := p["QuestionName"]; - editsource := NULL; --- 185,188 ---- *************** *** 185,189 **** editsource := sprintf( ! "<input type=hidden name=\"SourceFile\" value=%a>\n%s\n", p["SourceFile"], page['ActionLink',"EditSource"]); --- 190,194 ---- editsource := sprintf( ! "<input type=hidden name='SourceFile' value='%s'/>\n%s\n", p["SourceFile"], page['ActionLink',"EditSource"]); *************** *** 200,206 **** "<font color='red'>", sprintf(__("Cannot load question file: %s"),fullqfile), ! "</font>\n<br>\n", `HTML/Escape`(err), ! "<br>\n", page['ActionLink',"Mark",[],__("Retry")]); page['FillTemplate',"editsource" = editsource,"show" = err]; --- 205,211 ---- "<font color='red'>", sprintf(__("Cannot load question file: %s"),fullqfile), ! "</font>\n<br/>\n", `HTML/Escape`(err), ! "<br/>\n", page['ActionLink',"Mark",[],__("Retry")]); page['FillTemplate',"editsource" = editsource,"show" = err]; *************** *** 213,221 **** "<font color='red'>", __("Malformed question"), ! "</font><br>\n", page['ActionLink',"Mark",[],__("Retry")], ! "\n<br><pre>\n", `HTML/Escape`(sprintf("%a",eval(question))), ! "\n</pre><br>\n"); page['FillTemplate',"editsource" = editsource,"show" = err]; RETURN(); --- 218,226 ---- "<font color='red'>", __("Malformed question"), ! "</font><br/>\n", page['ActionLink',"Mark",[],__("Retry")], ! "\n<br/><pre>\n", `HTML/Escape`(sprintf("%a",eval(question))), ! "\n</pre><br/>\n"); page['FillTemplate',"editsource" = editsource,"show" = err]; RETURN(); *************** *** 231,235 **** editsource := sprintf( ! "<input type=hidden name=\"SourceFile\" value=%a>\n%s\n", p["SourceFile"], page['ActionLink',"EditSource"]); --- 236,240 ---- editsource := sprintf( ! "<input type=hidden name='SourceFile' value='%s'>\n%s\n", p["SourceFile"], page['ActionLink',"EditSource"]); *************** *** 248,260 **** "<font color='red'>", __("Error in MakeVersion:"), ! "</font><br>\n", `HTML/Escape`(err), ! "<br>\n", page['ActionLink',"Mark",[],__("Retry")], ! "<br>\n", __("Question:"), ! "<br>\n<pre>\n", `HTML/Escape`(`Class/ToString`(question,20,80))), ! "</pre><br>\n"; page['FillTemplate',"editsource" = editsource,"show" = err]; RETURN(); --- 253,265 ---- "<font color='red'>", __("Error in MakeVersion:"), ! "</font><br/>\n", `HTML/Escape`(err), ! "<br/>\n", page['ActionLink',"Mark",[],__("Retry")], ! "<br/>\n", __("Question:"), ! "<br/>\n<pre>\n", `HTML/Escape`(`Class/ToString`(question,20,80))), ! "</pre><br/>\n"; page['FillTemplate',"editsource" = editsource,"show" = err]; RETURN(); *************** *** 266,274 **** "<font color='red'>", __("Malformed question version:"), ! "</font><br>\n", page['ActionLink',"Mark",[],__("Retry")], ! "\n<br><pre>\n", `HTML/Escape`(sprintf("%a",eval(question))), ! "\n</pre><br>\n"); page['FillTemplate',"editsource" = editsource,"show" = err]; RETURN(); --- 271,279 ---- "<font color='red'>", __("Malformed question version:"), ! "</font><br/>\n", page['ActionLink',"Mark",[],__("Retry")], ! "\n<br/><pre>\n", `HTML/Escape`(sprintf("%a",eval(question))), ! "\n</pre><br/>\n"); page['FillTemplate',"editsource" = editsource,"show" = err]; RETURN(); *************** *** 279,318 **** "<font color='red'>", __("Question Initialization Failed:"), ! "</font><br>\n", vrsion['Preamble'], ! "\n<br><pre>\n"); page['FillTemplate',"editsource" = editsource,"show" = err,"title" = qname]; RETURN(); ! else ! ! rawans := p["RawAnswer"]; ! if p["Action"] = "NewVersion" or rawans = "" then ! if type(question,`aim/TextQuestion`) then ! rawans := `aim/EntryHint`(vrsion['RightAnswer']); ! elif type(question,`aim/MatrixQuestion`) then ! rawans := ""; ! rightans := vrsion['RightAnswer']; ! numrows := vrsion['NumRows']; ! numcols := vrsion['NumCols']; ! ! for i to numrows do ! for j to numcols do ! cell := traperror(`aim/EntryHint`(rightans[i,j])); ! if cell = lasterror then cell := ""; fi; ! rawans := rawans,cell; ! if j < numcols then rawans := rawans,"|"; fi; ! od; ! if i < numrows then rawans := rawans,"\n"; fi; ! od; ! rawans := cat(rawans); ! elif type(question,`aim/MCQuestion`) then ! rawans := vrsion['RightLabel']; ! elif type(question,`aim/MRQuestion`) then ! rawans := sprintf("%a",vrsion['RightLabels']); ! else ! rawans := ""; ! fi; ! fi; # if `Util/RemoveWhiteSpace`(vrsion['Note']) <> "" then --- 284,294 ---- "<font color='red'>", __("Question Initialization Failed:"), ! "</font><br/>\n", vrsion['Preamble'], ! "\n<br/><pre>\n"); page['FillTemplate',"editsource" = editsource,"show" = err,"title" = qname]; RETURN(); ! else # question version constructed, seems OK # if `Util/RemoveWhiteSpace`(vrsion['Note']) <> "" then *************** *** 320,324 **** # cat( # vrsion['Postamble'], ! # "<br><b>",__("Question note:"),"</b> ",`HTML/Escape`(vrsion['Note'])); # fi; --- 296,300 ---- # cat( # vrsion['Postamble'], ! # "<br/><b>",__("Question note:"),"</b> ",`HTML/Escape`(vrsion['Note'])); # fi; *************** *** 326,335 **** cat( vrsion['Postamble'], ! "<br>\n", page['ActionLink',"Mark"]," ", page['ActionLink',"NewVersion"], ! "\n<br><hr>\n"); ! instance := traperror(eval(vrsion['MakeInstance',rawans])); if instance = lasterror then --- 302,341 ---- cat( vrsion['Postamble'], ! "<br/>\n", page['ActionLink',"Mark"]," ", page['ActionLink',"NewVersion"], ! "\n<br/><hr/>\n"); ! if p["QuestionLabel"] = "" then ! rawtable := eval(p); ! else ! rawtable := table([]); ! if type([vrsion],[`aim/MultiQuestion/Version`]) then ! for q in vrsion['SubQuestions'] do ! rawans := ! p[cat("RawAnswer",p["QuestionLabel"],q['Label'])]; ! if not(type([rawans],[string])) then ! rawans := ""; ! fi; ! rawtable[cat("RawAnswer",q['Label'])] := rawans; ! od; ! else ! rawans := ! p[cat("RawAnswer",p["QuestionLabel"])]; ! if not(type([rawans],[string])) then ! rawans := ""; ! fi; ! rawtable["RawAnswer"] := rawans; ! fi; ! fi; ! ! userightans := ! evalb((p["Action"] = "NewVersion") or ! (p["Action"] = "TryRightAnswer")); ! ! instance := ! traperror(eval( ! `aim/Question/MakeInstance/Recursive`( ! vrsion,rawtable,table([]),`try/Question/Context`,userightans))); if instance = lasterror then *************** *** 339,349 **** "<font color='red'>", __("Error in MakeInstance:"), ! "</font><br>\n", `HTML/Escape`(err), ! "<br>\n", page['ActionLink',"Mark",[],__("Retry")], ! "<br>\n", __("Question version:"), ! "<br>\n<pre>\n", `HTML/Escape`(`Class/ToString`(vrsion,20,80))), "\n</pre>\n"; --- 345,355 ---- "<font color='red'>", __("Error in MakeInstance:"), ! "</font><br/>\n", `HTML/Escape`(err), ! "<br/>\n", page['ActionLink',"Mark",[],__("Retry")], ! "<br/>\n", __("Question version:"), ! "<br/>\n<pre>\n", `HTML/Escape`(`Class/ToString`(vrsion,20,80))), "\n</pre>\n"; *************** *** 357,365 **** "<font color='red'>", __("Malformed question instance:"), ! "</font><br>\n", page['ActionLink',"Mark",[],__("Retry")], ! "\n<br><pre>\n", `HTML/Escape`(sprintf("%a",eval(instance))), ! "\n</pre><br>\n"); page['FillTemplate',"editsource" = editsource,"show" = err]; RETURN(); --- 363,371 ---- "<font color='red'>", __("Malformed question instance:"), ! "</font><br/>\n", page['ActionLink',"Mark",[],__("Retry")], ! "\n<br/><pre>\n", `HTML/Escape`(sprintf("%a",eval(instance))), ! "\n</pre><br/>\n"); page['FillTemplate',"editsource" = editsource,"show" = err]; RETURN(); *************** *** 367,372 **** else - attempt := eval(instance['Attempt']); - show := instance['Show',`try/Question/Context`]; --- 373,376 ---- *************** *** 377,383 **** "<font color='red'>", __("Error in Show: result was not a string."), ! "</font><br>\n", page['ActionLink',"Mark",[],__("Retry")], ! "<br><pre>\n", `HTML/Escape`(sprintf("%a",eval(show))), "\n</pre>\n"); --- 381,387 ---- "<font color='red'>", __("Error in Show: result was not a string."), ! "</font><br/>\n", page['ActionLink',"Mark",[],__("Retry")], ! "<br/><pre>\n", `HTML/Escape`(sprintf("%a",eval(show))), "\n</pre>\n"); *************** *** 388,394 **** fi; # ENDS: if instance = lasterror then ... - page['HiddenParameters'] := - page['HiddenParameters'] minus {"RawAnswer"}; - title := "<center><h1>",__("AIM question trial"),"</h1></center>\n", --- 392,395 ---- *************** *** 433,436 **** --- 434,439 ---- shorttitle := cat(shorttitle); page['Title'] := shorttitle; + + p["QuestionLabel"] := ""; page['FillTemplate', Index: Quiz.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/try/Quiz.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Quiz.mpl 5 May 2003 03:25:46 -0000 1.2 --- Quiz.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 20,23 **** --- 20,24 ---- qdc['StudentIsTeacher'] := true: qdc['QuizReviewMode'] := false: + qdc['QuestionReviewMode'] := false: qdc['QuizTryMode'] := true: qdc['QuestionTryMode'] := false: *************** *** 75,78 **** --- 76,83 ---- } + function Validate() { + Mark(); + } + ", `aim/MRQuestion/Script`, *************** *** 115,119 **** "Try an individual question.", ['Command' = "try/Question", ! 'Arguments' = ["QuestionName","QuestionSeed","RawAnswer"], 'LinkText' = __("Try question")]], --- 120,124 ---- "Try an individual question.", ['Command' = "try/Question", ! 'Arguments' = ["QuestionName","QuestionSeed","QuestionLabel"], 'LinkText' = __("Try question")]], *************** *** 177,181 **** proc(page::`aim/admin/Page`,p::table) ! local subject,quizname,quiz,quizversion,quizinstance, seed,keys,question,label,cgilabel,questiontable, rawans,rightans,numrows,numcols,i,j,cell; --- 182,186 ---- proc(page::`aim/admin/Page`,p::table) ! local subject,quizname,quiz,quizversion,quizinstance,quizhistory, seed,keys,question,label,cgilabel,questiontable, rawans,rightans,numrows,numcols,i,j,cell; *************** *** 236,240 **** od; ! quizinstance := eval(quizversion['MakeInstance',p]); quizinstance['SetBody',`try/Quiz/Context`]; --- 241,248 ---- od; ! quizhistory := `new/aim/Quiz/History`(quizversion); ! ! quizinstance := ! eval(quizversion['MakeInstance',p,quizhistory,`try/Quiz/Context`]); quizinstance['SetBody',`try/Quiz/Context`]; *************** *** 244,248 **** `new/HTML/Tag`(["table", "width" = "100%"]); ! for question in quizversion['Questions'] do label := question['Label']; questiontable['AddContents', --- 252,256 ---- `new/HTML/Tag`(["table", "width" = "100%"]); ! for question in quizversion['TopQuestions'] do label := question['Label']; questiontable['AddContents', |
From: <nps...@us...> - 2003-07-10 20:10:08
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/analyze In directory sc8-pr-cvs1:/tmp/cvs-serv8131/WEB-INF/maple/aim/analyze Modified Files: Tag: develop_2_1 Question.mpl Quiz.mpl Log Message: Many changes, mostly to implement multipart questions Index: Question.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/analyze/Question.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Question.mpl 5 May 2003 03:25:46 -0000 1.2 --- Question.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 36,40 **** ['Parameter',"QuizName" = 'required'], ['Parameter',"QuestionName" = 'required'], ! ['Parameter', "ValidityConstraint":: --- 36,40 ---- ['Parameter',"QuizName" = 'required'], ['Parameter',"QuestionName" = 'required'], ! ['Parameter',"PartLabel"::string = 'required'], ['Parameter', "ValidityConstraint":: *************** *** 217,222 **** proc(page::`aim/admin/Page`,p::table) ! local action,subject,quizname,quiz,questionname,question,analysis, ! opts,summary,timedatestring; global AimCache; --- 217,222 ---- proc(page::`aim/admin/Page`,p::table) ! local action,subject,quizname,quiz,questionname,partlabel, ! question,analysis,opts,summary,timedatestring; global AimCache; *************** *** 227,231 **** quizname := p["QuizName"]; ! quiz := traperror(subject['GetQuiz',quizname]); if not(type(quiz,`aim/Quiz`)) then --- 227,232 ---- quizname := p["QuizName"]; ! ! quiz := traperror(eval(subject['GetQuiz',quizname])); if not(type(quiz,`aim/Quiz`)) then *************** *** 237,241 **** questionname := p["QuestionName"]; ! question := traperror(quiz['GetQuestion',questionname]); if not(type(question,`aim/Question`)) then --- 238,243 ---- questionname := p["QuestionName"]; ! partlabel := p["PartLabel"]; ! question := traperror(quiz['GetQuestion',questionname,partlabel]); if not(type(question,`aim/Question`)) then *************** *** 249,253 **** if p["Action"] = "AnalyzeQuestion" then analysis := ! traperror(eval(quiz['GetQuestionAnalysis',questionname])); fi; --- 251,255 ---- if p["Action"] = "AnalyzeQuestion" then analysis := ! traperror(eval(quiz['GetQuestionAnalysis',questionname,partlabel])); fi; Index: Quiz.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/analyze/Quiz.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Quiz.mpl 5 May 2003 03:25:46 -0000 1.2 --- Quiz.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 *************** *** 62,66 **** "", ['Command' = "analyze/Question", ! 'Arguments' = ["QuestionName"], 'LinkText' = __("Analyze")]], --- 62,66 ---- "", ['Command' = "analyze/Question", ! 'Arguments' = ["QuestionName","PartLabel"], 'LinkText' = __("Analyze")]], *************** *** 125,129 **** local subject,register,ids,action,quizname,quiz, qnames,i,istring,qname,question,analysis,entry, ! resultstable,questiontable,timedatestring,f,g; action := p["Action"]; --- 125,130 ---- local subject,register,ids,action,quizname,quiz, qnames,i,istring,qname,question,analysis,entry, ! resultstable,questiontable,timedatestring,f,g, ! qlist,nllist; action := p["Action"]; *************** *** 157,161 **** analysis['Sort',p["OrderStudentsBy"]]; ! qnames := quiz['QuestionNames']; if analysis['AnalysisTime'] = NULL then --- 158,163 ---- analysis['Sort',p["OrderStudentsBy"]]; ! qlist := quiz['Questions']; ! nllist := map(q -> [q['Name'],q['PartLabel']],qlist); if analysis['AnalysisTime'] = NULL then *************** *** 166,178 **** if action = "DownloadQuiz" then ! f := (n,x) -> cat(x['MarkString',n],"\t"); g := ! proc(entry,qnames) sprintf("%s\t%s\t%s\t%s%s\n", entry['StudentID'], entry['StudentFirstName'], entry['StudentSurname'], ! cat(op(map(f,qnames,entry))), entry['TotalMarkString']); end; --- 168,180 ---- if action = "DownloadQuiz" then ! f := (n,x) -> cat(x['MarkString',op(n)],"\t"); g := ! proc(entry,nllist) sprintf("%s\t%s\t%s\t%s%s\n", entry['StudentID'], entry['StudentFirstName'], entry['StudentSurname'], ! cat(op(map(f,nllist,entry))), entry['TotalMarkString']); end; *************** *** 186,192 **** __("First name"),"\t", __("Surname"),"\t", ! seq(sprintf("%d\t",i),i=1..nops(qnames)), __("Total"),"\n", ! op(map(g,analysis['Entries'],qnames))); page['SetContentType',"text/tab-separated-values"]; --- 188,194 ---- __("First name"),"\t", __("Surname"),"\t", ! seq(sprintf("%d\t",i),i=1..nops(nllist)), __("Total"),"\n", ! op(map(g,analysis['Entries'],nllist))); page['SetContentType',"text/tab-separated-values"]; *************** *** 194,200 **** fi; ! f := (n,x) -> cat("<td>",x['MarkString',n],"</td>\n"); ! g := proc(entry,qnames) cat( "<tr>\n<td>", --- 196,202 ---- fi; ! f := (n,x) -> cat("<td>",x['MarkString',op(n)],"</td>\n"); ! g := proc(entry,nllist) cat( "<tr>\n<td>", *************** *** 208,212 **** entry['StudentSurname'], "</td>\n", ! op(map(f,qnames,entry)), "<td>",entry['TotalMarkString'],"</td>\n", "</tr>\n"); --- 210,214 ---- entry['StudentSurname'], "</td>\n", ! op(map(f,nllist,entry)), "<td>",entry['TotalMarkString'],"</td>\n", "</tr>\n"); *************** *** 214,218 **** resultstable := ! cat(op(map(g,analysis['Entries'],qnames))); resultstable := --- 216,220 ---- resultstable := ! cat(op(map(g,analysis['Entries'],nllist))); resultstable := *************** *** 223,227 **** "<th>",__("Name"),"</th>\n", seq(sprintf("<th><a href='#Q%d'>%d</a></th>\n",i,i), ! i=1..nops(qnames)), "<th>",__("Total"),"</th>\n", "</tr>", --- 225,229 ---- "<th>",__("Name"),"</th>\n", seq(sprintf("<th><a href='#Q%d'>%d</a></th>\n",i,i), ! i=1..nops(nllist)), "<th>",__("Total"),"</th>\n", "</tr>", *************** *** 236,240 **** ["tr", [["th","width" = "10%","noscroll"]], # question number ! [["th","width" = "45%","align"="left"],__("Question name")], [["th","width" = "15%"]], # edit link [["th","width" = "15%"]], # try link --- 238,243 ---- ["tr", [["th","width" = "10%","noscroll"]], # question number ! [["th","width" = "40%","align"="left"],__("Question name")], ! [["th","width" = "5%"]], # part label [["th","width" = "15%"]], # edit link [["th","width" = "15%"]], # try link *************** *** 242,257 **** ]); ! for i to nops(qnames) do istring := sprintf("%d",i); ! qname := qnames[i]; ! questiontable['AddContents', ! ["tr", ! ["td",[["a", "name" = cat("Q",istring)],istring]], ! ["td",qname], ! ["td",page['ActionLink',"EditQuestion",[qname]]], ! ["td",page['ActionLink',"TryQuestion",[qname]]], ! ["td",page['ActionLink',"AnalyzeQuestion",[qname]]]]]; ! question := traperror(eval(quiz['GetQuestion',qname])); if type(question,`aim/Question`) then if assigned(question['Description']) and question['Description'] <> "" then --- 245,261 ---- ]); ! for i to nops(nllist) do istring := sprintf("%d",i); ! question := qlist[i]; if type(question,`aim/Question`) then + qname := question['Name']; + questiontable['AddContents', + ["tr", + ["td",[["a", "name" = cat("Q",istring)],istring]], + ["td",qname], + ["td",question['PartLabel']], + ["td",page['ActionLink',"EditQuestion",[qname]]], + ["td",page['ActionLink',"TryQuestion",[qname]]], + ["td",page['ActionLink',"AnalyzeQuestion",[qname,question['PartLabel']]]]]]; if assigned(question['Description']) and question['Description'] <> "" then |
From: <nps...@us...> - 2003-07-10 20:10:08
|
Update of /cvsroot/aimmath/AIM/doc In directory sc8-pr-cvs1:/tmp/cvs-serv8131/doc Modified Files: Tag: develop_2_1 format.html todo.html Log Message: Many changes, mostly to implement multipart questions Index: format.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/format.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** format.html 20 Apr 2003 23:14:41 -0000 1.1.1.1 --- format.html 10 Jul 2003 20:10:05 -0000 1.1.1.1.2.1 *************** *** 68,71 **** --- 68,72 ---- <pre><font color='green'> + shift> 87453978 local> p,x h> p := x^4 + randpoly(x, degree=3, coeffs=rand(-3..3)); *************** *** 87,90 **** --- 88,99 ---- <br> <ul> + <li>It is recommended that every question should have a + <tt><font color='green'>shift></font></tt> flag, whose argument is + a randomly chosen integer, which should be left unchanged when + the question is edited. The reason for this is technical: it + ensures that questions are robustly randomized, while minimizing + the damage if a question needs to be modified while a quiz is + running. + </li> <li>The <tt><font color='green'>local></font></tt> flag says that p and x are local variables for this question. Without this, if x had *************** *** 94,99 **** is processed, and the value assigned to p is removed afterwards. AIM is reasonably good at working out which variables should be ! treated as local, but it is nonetheless good practise to tell it explicitly. </li> <li>The <tt><font color='green'>h></font></tt> (hidden) flag --- 103,113 ---- is processed, and the value assigned to p is removed afterwards. AIM is reasonably good at working out which variables should be ! treated as local, but it is nonetheless good practice to tell it explicitly. + + We refer to variables declared in this way as + <em>pseudolocals</em>. As far as Maple is concerned, they are + actually global variables, but AIM itself sets and unsets them at + appropriate points to make them behave locally. </li> <li>The <tt><font color='green'>h></font></tt> (hidden) flag *************** *** 113,118 **** plain text, not LaTeX). If the <tt><font color='green'>note></font></tt> flag is omitted, then AIM will ! construct a note recording the values of all local variables; for ! more elaborate questions, this can be awkward and inefficient. </li> <li> --- 127,132 ---- plain text, not LaTeX). If the <tt><font color='green'>note></font></tt> flag is omitted, then AIM will ! construct a note recording the values of all pseudolocal variables; ! for more elaborate questions, this can be awkward and inefficient. </li> <li> *************** *** 131,135 **** \[ @Int(p,x)@ \] </font></pre> ! (using the neutral integration operator Int). </li> <li> --- 145,154 ---- \[ @Int(p,x)@ \] </font></pre> ! (using the neutral integration operator Int). Expressions in this ! context can only refer to global and pseudolocal variables, not to ! local variables or parameters. This is not in practice a ! restriction for <tt><font color='green'>t></font></tt> flags, but ! it will be a restriction in various other contexts discussed later ! where the same syntax is used. </li> <li> *************** *** 165,168 **** --- 184,188 ---- <pre><font color='green'> + shift> 8748273605 t> The following figure p> plots[display](plottools[torus]([0,0,0],1,2), scaling=constrained); *************** *** 210,218 **** <pre><font color='green'> # A multiple-response question. t> Consider the following matrix: p> A = matrix(2, 2, [cos(theta),-sin(theta), sin(theta), cos(theta)]); ! t> Which of the following properties does this matrix posess? c> MR("symmetric", "anti-symmetric", "orthonormal", "singular", "non-singular") a> {"orthonormal", "non-singular"} --- 230,239 ---- <pre><font color='green'> # A multiple-response question. + shift> 9066875006 t> Consider the following matrix: p> A = matrix(2, 2, [cos(theta),-sin(theta), sin(theta), cos(theta)]); ! t> Which of the following properties does this matrix possess? c> MR("symmetric", "anti-symmetric", "orthonormal", "singular", "non-singular") a> {"orthonormal", "non-singular"} *************** *** 227,230 **** --- 248,341 ---- worse, and 1 for a perfectly correct answer. + <h3>A question with several parts</h3> + + A question may be divided into subquestions (which may in turn be + further subdivided). This is only recommended when the subquestions + are linked, so that the mark for one part might depend on the + answer given to another part. Here is an example: + + <pre><font color='green'> + name> primes + local> lowerbound,ans1 + shift> 7645848653 + t> Recall that Euclid proved that their are infinitely many primes + h> lowerbound := rnd(20..40); + note> sprintf("p2>p1>%a",lowerbound) + sq> + t> Find a prime $p_1$ such that $p_1 > @lowerbound@$ + c> posint + av> p1 + ap> $p_1 =$ + s> [proc(ans) + if isprime(ans) then + if ans > lowerbound then + RETURN(1); + else + `aim/t`("Your answer is prime, but is too small."); + `aim/SetAnswerNote`("too small"); + fi; + else + ans1 := ans; + `aim/t`("Your answer is composite: $@ans1@ = @ifactor(ans1)@$"); + `aim/SetAnswerNote`("composite"); + fi; + RETURN(0); + end, + nextprime(lowerbound) + ] + esq> + sq> + t> Find a another prime $p_2$ such that $p_2 > p_1$ + c> posint + av> p2 + ap> $p_2 =$ + s> [proc(ans) + if isprime(ans) then + if ans > p1 then + RETURN(1); + else + `aim/t`("Your answer is prime, but is too small."); + `aim/SetAnswerNote`("too small"); + fi; + else + ans1 := ans; + `aim/t`("Your answer is composite: $@ans1@ = @ifactor(ans1)@$"); + `aim/SetAnswerNote`("composite"); + fi; + RETURN(0); + end, + nextprime(nextprime(lowerbound)) + ] + esq> + end> + </font></pre> + + The subquestions are enclosed between <tt><font + color='green'>sq></font></tt> and <tt><font + color='green'>esq></font></tt>. The <tt><font + color='green'>c></font></tt> flags specify that the answers should + have the maple type <tt><font color='green'>posint</font></tt>, in + other words they must be positive integers. If not, then the answers + are rejected as being invalid, without any penalty. The line + <tt><font color='green'>av> p1</font></tt> specifies that at an + appropriate point, the global variable <tt><font + color='green'>p1</font></tt> should be set equal to the student's + first answer; this allows the second marking procedure to refer to + <tt><font color='green'>p1</font></tt> when it checks that + p<sub>2</sub> > p<sub>1</sub>. (This assignment is automatically + removed when it is no longer needed.) The <tt><font + color='green'>ap></font></tt> flag specifies the string used to prompt + the student for an answer. The + <tt><font color='green'>`aim/t`</font></tt> function works like a + <tt><font color='green'>t></font></tt> flag; see + <a href='#hide'>below</a> for more details. One subtlety is that + <tt><font color='green'>@...@</font></tt> sequences in the argument + to <tt><font color='green'>`aim/t`</font></tt> only work with + global or pseudolocal variables, hence the need to copy the parameter + <tt><font color='green'>ans</font></tt> to the pseudolocal variable + <tt><font color='green'>ans1</font></tt>. Note also the use of the + <tt><font color='green'>`aim/SetAnswerNote`</font></tt> function to + record a short note about the general nature of the answer; this is + used by AIM's facilities for analyzing results. <h2>Detailed description of flags</h2> *************** *** 240,244 **** <tr><td>ap></td> <td><a href='#prompt'>prompt></a></td> ! <td>Specify the prompt for the student's answer</td> </tr> <tr><td>c></td> --- 351,361 ---- <tr><td>ap></td> <td><a href='#prompt'>prompt></a></td> ! <td>Specify the prompt for the student's answer (in LaTeX)</td> ! </tr> ! <tr><td>pp></td> ! <td><a href='#prompt'>postprompt></a></td> ! <td>Specify a string to go directly after the box in which the ! student's answer is entered. ! </td> </tr> <tr><td>c></td> *************** *** 311,314 **** --- 428,439 ---- <td>Specify the value of the question</td> </tr> + <tr><td>sq></td> + <td><a href='#subquestion'>subquestion></a></td> + <td>Declare the start of a subquestion</td> + </tr> + <tr><td>esq></td> + <td><a href='#endsubquestion'>endsubquestion></a></td> + <td>Declare the end of a subquestion</td> + </tr> <tr><td><<i>string</i>></td> <td><a href="#<string>"><<i>string</i>></a></td> *************** *** 337,340 **** --- 462,479 ---- </font></pre> + <a name='postprompt'><h3>postprompt>/pp></h3></a> + + For example, if the answer is supposed to be a length measured in + meters, then one could have a line + <pre><font color='green'> + postprompt> meters + </font></pre> + + <a name='answervariable'><h3>answervariable>/av></h3></a> + + The attached text should be the name of a global variable in which to + record the students answer, so that other parts of the same question + can refer to it. + <a name='mapletype'><h3>mapletype>/c></h3></a> *************** *** 455,459 **** functions that can be used in these flags: <ul> ! <li>The function `aim/t` mimics the behaviour of the <tt><font color='green'>t></font></tt> flag. The advantage is that it can be made conditional, for example --- 594,598 ---- functions that can be used in these flags: <ul> ! <li>The function `aim/t` mimics the behavior of the <tt><font color='green'>t></font></tt> flag. The advantage is that it can be made conditional, for example *************** *** 477,481 **** </font></pre> </li> ! <li>Analogously, the function `aim/p` mimics the behaviour of the <tt><font color='green'>p></font></tt> flag. </li> --- 616,620 ---- </font></pre> </li> ! <li>Analogously, the function `aim/p` mimics the behavior of the <tt><font color='green'>p></font></tt> flag. </li> *************** *** 628,635 **** initially had no assigned value, then its unassigned state is also restored.) This kind of scoping is handled by AIM itself; as far as ! Maple is concerned, the variables in question are global. Some ! technicalities are discussed in the documentation of the <a ! href='Local.html'>Local package</a>, but they can be ignored by most ! users. <br><br> Example: --- 767,774 ---- initially had no assigned value, then its unassigned state is also restored.) This kind of scoping is handled by AIM itself; as far as ! Maple is concerned, the variables in question are global, so we refer ! to them as <em>pseudolocals</em>. Some technicalities are discussed ! in the documentation of the <a href='Local.html'>Local package</a>, ! but they can be ignored by most users. <br><br> Example: *************** *** 836,845 **** color='green'>s></font></tt> flag, then the maximum mark is ignored except that an error will be generated if the checking procedure ! returns a mark that is too large.<h3><a name="<string>"><<i>string</i>>/<<i>string</i>></a></h3> - This family of flags (one flag for each value of <b><i>string</i></b>) are used - to define named strings called <i>question parameters</i>. The attached text is substituted for every occurrence - of the target string (which is exactly the same string as the flag, i.e. <<i><b>string</b></i>>) in the text attached to - flags that follow this line within the same question. <p>Example:</p> <pre><font color="green">####################### --- 975,1000 ---- color='green'>s></font></tt> flag, then the maximum mark is ignored except that an error will be generated if the checking procedure ! returns a mark that is too large. ! ! <a name='#subquestion'><h3>subquestion>/sq></h3></a><br> ! <a name='#endsubquestion'><h3>endsubquestion>/esq></h3></a> ! ! These flags should occur in matched pairs to declare subquestions of a ! multi-part question. (For historical reasons, ! <tt><font color='green'>end></font></tt> is allowed as an alternative ! to <tt><font color='green'>esq></font></tt> or ! <tt><font color='green'>endsubquestion></font></tt>.) It is ! recommended that you put all initialization of local variables at the ! beginning, before any subquestions. ! ! <h3><a name="<string>"><<i>string</i>>/<<i>string</i>></a></h3> ! ! This family of flags (one flag for each value of <b><i>string</i></b>) ! are used to define named strings called <i>question ! parameters</i>. The attached text is substituted for every occurrence ! of the target string (which is exactly the same string as the ! flag, i.e. <<i><b>string</b></i>>) in the text attached to flags ! that follow this line within the same question. <p>Example:</p> <pre><font color="green">####################### *************** *** 859,869 **** # end of foo.aim ######################</font></pre> ! <p>In the first two non-commented lines this example we define two question parameters, <font color="green" face="Courier New" size="2"><Range></font> ! and<font color="green"> <font face="Courier New" size="2" color="green"><Difficulty>.</font></font><font face="Courier New" size="2"> ! </font>Every occurrence of <font color="green" face="Courier New" size="2"><Range></font> ! in the subsequent lines is replaced by the string "<font face="Courier New" size="2" color="green">0..9</font>" ! and every occurrence of <font face="Courier New" size="2" color="green"><Difficulty></font> ! in the following lines is replaced by "<font face="Courier New" size="2" color="green">easy</font>". ! After the substitution the question would read:</p> <pre><font color="green">k> Addition,easy l> a,b --- 1014,1032 ---- # end of foo.aim ######################</font></pre> ! ! <p>In the first two non-commented lines this example we define two ! question parameters, <font color="green" face="Courier New" ! size="2"><Range></font> and<font color="green"> <font ! face="Courier New" size="2" ! color="green"><Difficulty>.</font></font><font face="Courier ! New" size="2"> </font>Every occurrence of <font color="green" ! face="Courier New" size="2"><Range></font> in the subsequent ! lines is replaced by the string "<font face="Courier New" ! size="2" color="green">0..9</font>" and every occurrence of <font ! face="Courier New" size="2" color="green"><Difficulty></font> in ! the following lines is replaced by "<font face="Courier New" ! size="2" color="green">easy</font>". After the substitution the ! question would read:</p> ! <pre><font color="green">k> Addition,easy l> a,b *************** *** 874,886 **** end> </font></pre> ! <p>Only simple textual substitution is performed - no evaluation of the text ! attached to the flag is performed prior to the substitution. The substitutions ! will only take place on lines that come after the line on which the parameter is ! defined. The targets of the substitutions can occur anywhere in the text ! attached to any flag (but not in a flag itself). In particular, parameter definitions can contain the targets of ! other parameters, but care should be taken to avoid circular substitutions. The ! only exception to this is the include> flag, which cannot contain any ! question parameter targets since all file inclusions are performed before any ! parameter substitution takes place. <br> <br> The <b><i>string</i></b> --- 1037,1053 ---- end> </font></pre> ! ! <p>Only simple textual substitution is performed - no evaluation of ! the text attached to the flag is performed prior to the ! substitution. The substitutions will only take place on lines that ! come after the line on which the parameter is defined. The ! targets of the substitutions can occur anywhere in the text attached ! to any flag (but not in a flag itself). In particular, parameter ! definitions can contain the targets of other parameters, but care ! should be taken to avoid circular substitutions. The only exception to ! this is the include> flag, which cannot contain any question ! parameter targets since all file inclusions are performed before any ! parameter substitution takes place. ! <br> <br> The <b><i>string</i></b> *************** *** 888,906 **** contain the character ">" (as that signifies the end of the flag). Thus, <font face="Courier New" size="2" color="green"><>,</font> ! <font face="Courier New" size="2" color="green"><1>,</font> <font face="Courier New" size="2" color="green"><a>, <Range></font>, ! and <font face="Courier New" size="2" color="green"><Newton's method number ! of iterations></font> are all valid parameter flags. All occurrences of ! potential targets of the form <<i>string</i>> in the question source code ! for which there is no corresponding parameter defined are left unchanged, so the ! parameter substitution mechanism should have no effect on the ordinary use of ! < and > in a question. The question is compiled after all of the textual ! substitutions of parameters have been made, so no parameter information is stored in the compiled version of ! the question. </p> ! <p>Only the first definition of a particular parameter is used, all subsequent ! definitions of the same parameter within the same question are ignored. This feature is useful for ! making parameterized questions as follows:</p> --- 1055,1077 ---- contain the character ">" (as that signifies the end of the flag). Thus, <font face="Courier New" size="2" color="green"><>,</font> ! <font face="Courier New" size="2" color="green"><1>,</font> ! <font face="Courier New" size="2" color="green"><a>, <Range></font>, ! and <font face="Courier New" size="2" color="green"><Newton's ! method number of iterations></font> are all valid parameter ! flags. All occurrences of potential targets of the form ! <<i>string</i>> in the question source code for which there is ! no corresponding parameter defined are left unchanged, so the ! parameter substitution mechanism should have no effect on the ordinary ! use of < and > in a question. The question is compiled after all ! of the textual substitutions of parameters have been made, so no ! parameter information is stored in the compiled version of the ! question. </p> ! <p>Only the first definition of a particular parameter is used, all ! subsequent definitions of the same parameter within the same question ! are ignored. This feature is useful for making parameterized ! questions as follows:</p> Index: todo.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/todo.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** todo.html 20 Apr 2003 23:14:56 -0000 1.1.1.1 --- todo.html 10 Jul 2003 20:10:05 -0000 1.1.1.1.2.1 *************** *** 16,21 **** <ol> ! <li>Editing of login pages should be moved out of the zone admin ! page to a separate page </li> <li>Students should first select a subject, and only then be asked --- 16,36 ---- <ol> ! <li>Customized parsing procedures eg for permutations, subsets of R, finite ! Abelian groups</li> ! <li>Separate parsing from validation</li> ! <li>Richtext editor option for home pages etc</li> ! <li>Facility for students to request help, with automatic ! recording of the context. ! </li> ! <li>Update error handling to use try/catch/finally</li> ! <li>File locking</li> ! <li>Check whether AIM would load much faster if everything was in ! a single .m file. ! </li> ! <li>Better support for standard question types</li> ! <li>Zone should contain default values for subject options ! (including visibility of newly created subjects). ! Subject should contain default values for quiz options ! (including visibility of newly created quizzes). </li> <li>Students should first select a subject, and only then be asked *************** *** 51,58 **** <li>Compilation of question files in .mpl or .xml format</li> <li>Arrange for the server to run as user 'aim', not 'nobody' or 'root'</li> - <li>Check package dependency statements</li> - <li>If the student revisits a quiz that they have already tried, we should - have MarkRequested = true iff that was true at the last visit.</li> - <li>save times of quiz attempts</li> <li>Subject-specific and quiz-specific initialization files.</li> <li>Random package: --- 66,69 ---- *************** *** 65,75 **** <li>Check systematically for parsing of strings supplied as CGI parameters, and ensure safety.</li> ! <li>Internationalize and localize.</li> ! <li>Hints and subquestions</li> <li>Write HTML help for teachers and include links from admin pages</li> <li>Multiple choice questions with answers selected from an image map</li> - <li>Customized parsing procedures eg for permutations, subsets of R, finite - Abelian groups</li> - <li>Separate parsing from validation</li> <li>'Lightweight' question versions with no images or solutions (used for re-marking, for example) --- 76,82 ---- <li>Check systematically for parsing of strings supplied as CGI parameters, and ensure safety.</li> ! <li>Hints</li> <li>Write HTML help for teachers and include links from admin pages</li> <li>Multiple choice questions with answers selected from an image map</li> <li>'Lightweight' question versions with no images or solutions (used for re-marking, for example) *************** *** 81,94 **** <li>In Maple 6: external function calls for file operations and TtH conversion</li> - <li>Quiz navigation bar: - <ol> - <li>no marks link if marks are not to be reported</li> - <li>validate, mark, submit buttons?</li> - <li>return to right position in page</li> - </ol> - </li> - <li>Internationalize collation, conventions about names etc</li> <li>Date package: better handling of time zones, parallel to Java. Work out ! wht happens while the clocks are changing.</li> <li>Check treatment of special characters (comma,apostrophe,..) in student names,id's,passwords, especially when using plain text files</li> --- 88,93 ---- <li>In Maple 6: external function calls for file operations and TtH conversion</li> <li>Date package: better handling of time zones, parallel to Java. Work out ! what happens while the clocks are changing.</li> <li>Check treatment of special characters (comma,apostrophe,..) in student names,id's,passwords, especially when using plain text files</li> *************** *** 113,125 **** records from the subject review page. </li> ! <li>Up/download of source directories as zip files ! </li> ! <li>A more systematic way of making toolbars</li> ! </li> <li>A framework for links to lecture notes.</li> <li>Hooks for site-specific facilities eg access to central ! records.</li> ! <li>In the Java code, set timouts for TtH and Maple. ! </li> </ol> </body> --- 112,124 ---- records from the subject review page. </li> ! <li>Up/download of source directories as zip files</li> <li>A framework for links to lecture notes.</li> <li>Hooks for site-specific facilities eg access to central ! records.</li> ! <li>Internationalize collation, conventions about names etc</li> ! <li>In the Java code, set timouts for TtH and Maple.</li> ! <li>Check package dependency statements</li> ! <li>save times of quiz attempts</li> ! <li>A more systematic way of making toolbars</li> </ol> </body> |
From: <gus...@us...> - 2003-07-10 07:05:18
|
Update of /cvsroot/aimmath/CVSROOT In directory sc8-pr-cvs1:/tmp/cvs-serv26007 Modified Files: cvswrappers Log Message: .exe, .zip, .gif are now binary Index: cvswrappers =================================================================== RCS file: /cvsroot/aimmath/CVSROOT/cvswrappers,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** cvswrappers 17 Jan 2002 22:11:06 -0000 1.1 --- cvswrappers 10 Jul 2003 07:05:14 -0000 1.2 *************** *** 11,23 **** # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # ! # wildcard [option value][option value]... # # where option is one of ! # -f from cvs filter value: path to filter ! # -t to cvs filter value: path to filter ! # -m update methodology value: MERGE or COPY ! # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: ! #*.gif -k 'b' --- 11,25 ---- # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # ! # wildcard [option value][option value]... # # where option is one of ! # -f from cvs filter value: path to filter ! # -t to cvs filter value: path to filter ! # -m update methodology value: MERGE or COPY ! # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: ! *.gif -k 'b' ! *.zip -k 'b' ! *.exe -k 'b' |
From: <gr...@us...> - 2003-07-09 18:05:18
|
Update of /cvsroot/aimmath/AIM/examples/Trig In directory sc8-pr-cvs1:/tmp/cvs-serv805 Added Files: Tag: develop_2_1 advancedlevel.aim Log Message: Missed this one before ... a sample quiz that includes example questions - GG --- NEW FILE: advancedlevel.aim --- # @(#)$Id: advancedlevel.aim,v 1.1.2.1 2003/07/09 18:05:15 gregg0 Exp $ # Copyright (C) 2003 Greg Gamble # Distributed without warranty under the GPL - see README for details i> EXAMPLES/Trig/trig_eqn_cosxr.aim, EXAMPLES/Trig/trig_eqn_sinnxr.aim, EXAMPLES/Trig/trig_eqn_cosnx-1.aim, EXAMPLES/Trig/trig_eqn_tansqxn.aim, EXAMPLES/Trig/trig_eqn_rewsincos.aim, EXAMPLES/Trig/trig_eqn_sinnx-r.aim, EXAMPLES/Trig/trig_eqn_dblang1.aim, EXAMPLES/Trig/trig_eqn_tan2x.aim, EXAMPLES/Trig/trig_eqn_dblang2.aim, EXAMPLES/Trig/trig_eqn_dblang3.aim, EXAMPLES/Trig/trig_eqn_quadtan.aim |
From: <gr...@us...> - 2003-07-09 17:01:40
|
Update of /cvsroot/aimmath/AIM/images In directory sc8-pr-cvs1:/tmp/cvs-serv24015 Added Files: Tag: develop_2_1 equi.gif isos.gif Log Message: Added two of Neil's .gif images that are used in Trig quiz examples. - GG --- NEW FILE: equi.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: isos.gif --- (This appears to be a binary file; contents omitted.) |
From: <gr...@us...> - 2003-07-09 16:45:23
|
Update of /cvsroot/aimmath/AIM/examples/Trig In directory sc8-pr-cvs1:/tmp/cvs-serv22214/Trig Log Message: Directory /cvsroot/aimmath/AIM/examples/Trig added to the repository |
From: <gr...@us...> - 2003-07-09 16:44:22
|
Update of /cvsroot/aimmath/AIM/examples In directory sc8-pr-cvs1:/tmp/cvs-serv22065/examples Log Message: Directory /cvsroot/aimmath/AIM/examples added to the repository |
From: <gr...@us...> - 2003-07-09 10:15:31
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim In directory sc8-pr-cvs1:/tmp/cvs-serv1089 Modified Files: Tag: develop_2_1 Compile.mpl Util.mpl Log Message: Now allows EXAMPLES to be used as an abbreviation for the ROOT/examples directory (soon to be created), for included files. - GG Index: Compile.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Compile.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Compile.mpl 5 May 2003 03:25:46 -0000 1.2 --- Compile.mpl 9 Jul 2003 10:15:28 -0000 1.2.2.1 *************** *** 114,117 **** --- 114,119 ---- # make the file list from the comma separated filenames filelist:=map(`Util/StripEndSpaces`,[`Util/CommaSplit`(lines[n][2])]); + # expand EXAMPLES to path of examples directory + filelist:=map(`aim/ExpandExamplesPath`, filelist); # ignore blank filenames filelist:=remove(x->x="",filelist); Index: Util.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Util.mpl,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Util.mpl 5 May 2003 03:25:46 -0000 1.2 --- Util.mpl 9 Jul 2003 10:15:28 -0000 1.2.2.1 *************** *** 363,366 **** --- 363,381 ---- ###################################################################### + `Package/Assign`( + `aim/ExpandExamplesPath`::string, + "If present, expands @EXAMPLES/@ at the head of path string @path@ + to the absolute path of the @examples@ directory on the system, + or otherwise returns @path@ untouched.", + proc(path::string) + local p; + p := StringTools:-RegSub("^EXAMPLES/(.*)", path, + cat(DefaultZone['WebDir'], "/examples/\\1")); + return `if`(type(p, string), p, path); + end + ): + + ###################################################################### + EndPackage(): |
From: <gr...@us...> - 2003-07-09 10:05:22
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv325 Modified Files: Tag: develop_2_1 PackageList Log Message: Two new package files have been added (aim/Trig.mpl, aim/Util1.mpl) - GG Index: PackageList =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/PackageList,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** PackageList 20 Apr 2003 23:15:42 -0000 1.1.1.1 --- PackageList 9 Jul 2003 10:05:19 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,11 ---- + # @(#)$Id$ + + # Copyright (C) 2003 Neil Strickland + # Distributed without warranty under the GPL - see README for details + + # This file lists the package names of AIM without the .mpl extension + # Comments (starting with a #, possibly preceded by whitespace) and + # whitespace at the end of the line is ignored. + OS Util *************** *** 28,31 **** --- 37,42 ---- aim/MRQuestion aim/MatrixQuestion + aim/Trig + aim/Util1 aim/Quiz aim/QuizCache |
From: <gr...@us...> - 2003-07-09 09:59:51
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim In directory sc8-pr-cvs1:/tmp/cvs-serv31913/aim Added Files: Tag: develop_2_1 Trig.mpl Util1.mpl Log Message: Added two new package files mainly for use with trigonometry problems. - GG --- NEW FILE: Trig.mpl --- # @(#)$Id: Trig.mpl,v 1.1.2.1 2003/07/09 09:59:48 gregg0 Exp $ # Copyright (C) 2003 Greg Gamble # Distributed without warranty under the GPL - see README for details read("Package.mpl"): Package("aim/Trig"," This package provides some useful functions for use in trigonometry questions. Look in the ROOT/examples/Trig directory for some example quiz files demonstrating the functions. The README in that directory has more details. " ): ###################################################################### `Package/Assign`( `type/aim/Trig/Problem`::boolean, "A trigonometry problem is defined to be a list of form @[eq, interval, solns]@ where <dl> <dt>@eq@</dt> <dd>is an equation (the trigonometric equation the students are asked to solve),</dd> <dt>@interval@</dt> <dd>is a Maple range, e.g. @-Pi/2 .. Pi/2@, that defines the interval over which @eq@ is to be solved, and</dd> <dt>@solns@</dt> <dd>is the list of (correct) solutions of @eq@ in @interval@ (the case for #`aim/Trig/Test`#) or, in order, the smallest, largest and number of solutions of @eq@ in @interval@ (the case for #`aim/TrigSLN/Test`#)</dd> </dl>", proc(e) evalb(type(e, list) and nops(e) = 3 and type(e[1], equation) and type(e[2], range) and type(e[3], list) and {op(remove(type, e[3], realcons))} subset {EMPTYCELL}); end ): ###################################################################### `Package/Assign`( `aim/Trig/Test`::[numeric, string, string, list, list], "This function assumes that the student was asked to do a trigonometry question @Q@ where the expected answer is all the solutions of an equation on a certain interval. The first argument @a@ might be an #`aim/Question/Attempt`# or #`aim/Question/ShortAttempt`# object (in which case we put @ans := a['Answer']@) or it might just be the student's answer (in which case we put @ans = a@). In any case, the function checks whether @ans@ is correct. If not, it checks that @ans@ contains the right number of solutions and awards a mark according to the number of correct solutions, essentially @(ncorrect - nwrong)/nrightans@, where @ncorrect@ and @nwrong@ are the numbers of correct and wrong solutions in @ans@, respectively, and @nrightans@ is the number of solutions in the right answer. A solution is deemed correct if it is accurate to 2 decimal places. Solutions that are inaccurate but within 5% also score, but at the rate of 80% that of a fully correct answer. Wrong or inaccurate answers generate feedback, identifying which of the solutions are incorrect. The function returns a list of the form @[mark, feedback, note, [wrong], [partright]]@. If @a@ is an #`aim/Question/Attempt`# then the function also sets @a['RawMark']@ to @mark@, appends @feedback@ to @a['Feedback']@, and @note@ to @a['Note']@. ", proc(a, Q::`aim/Trig/Problem`) local i, j, ans, argtype, rightans, wrong, mark, partright, eq, interval, llim, rlim, feedback, note; if type(a,`aim/Question/Attempt`) then argtype := "attempt"; ans := a['Answer']; elif type(a,`aim/Question/ShortAttempt`) then argtype := "shortattempt"; ans := a['Answer']; else argtype := "ordinary"; ans := eval(a); fi; ans := sort([op(ans)], `<` @ evalf); eq, interval, rightans := op(Q); llim, rlim := op(interval); feedback := NULL; note := ""; if is(ans[1] < llim - 0.01 or ans[-1] > rlim + 0.01) then feedback := feedback, sprintf( __("Solutions should lie in the interval $(%s, %s)$.\\\\"), TextStyle(LaTeX(llim)), TextStyle(LaTeX(rlim)) ); note := __("Solutions do not all lie in required interval"); if is(ans[1] < -2 * Pi - 0.01 or ans[-1] > 2 * Pi + 0.01) then feedback := feedback, __("Perhaps you attempted to give answers in degrees; note that answers should be in radians.\\\\"); note := __("Solutions in degrees?"); fi; fi; j := 1; mark := 0; wrong := NULL; partright := NULL; for i to nops(ans) do while j < nops(rightans) and is(op(j, rightans) < op(i, ans)) and not `aim/TestNumeric`(op(j, rightans), op(i, ans), 'margin' = 0.02) do j := j + 1; od; if j > nops(rightans) then wrong := wrong, i; elif type(op(j, rightans), Not(float)) then # exact answer only accepted if `aim/TestEqual`(op(j, rightans), op(i, ans)) then mark := mark + 1/nops(rightans); j := j + 1; else wrong := wrong, i; fi; elif `aim/TestNumeric`(op(j, rightans), op(i, ans), 'dpround' = -2) then mark := mark + 1/nops(rightans); j := j + 1; elif `aim/TestNumeric`(op(j, rightans), op(i, ans), 'margin' = 0.02) then if i < nops(ans) and is(op(i, ans) < op(j, rightans)) and is(op(i + 1, ans) <= op(j, rightans)) then wrong := wrong, i; else partright := partright, i; mark := mark + 0.8/nops(rightans); j := j + 1; fi; else wrong := wrong, i; fi; od; if mark = 0 then feedback := feedback, __("None of the solutions you have given is correct.\\\\"); if note = "" then note := __("No correct solutions"); fi; elif nops(ans) > nops(rightans) then # penalise for too many solutions mark := max(0, mark - (nops(ans) - nops(rightans))/nops(rightans)); if note = "" then note := __("At least one extraneous solution"); fi; if nops([wrong]) = 1 then feedback := feedback, __("You gave an extra solution which is not correct.\\\\"); else feedback := feedback, __("You gave some extra solutions which are not correct.\\\\"); fi; elif nops([partright]) > 0 and note = "" then note := __("At least one inaccurate solution"); fi; if mark = 0 then ; #already dealt with elif mark < 1 then if nops(ans) <> nops(rightans) then if note = "" then note := __("Insufficient number of solutions"); fi; if nops(rightans) = 1 then feedback := feedback, __("Note that, in all, there is only one solution.\\\\"); else feedback := feedback, sprintf( __("Note that, in all, there are %d (distinct) solutions.\\\\"), nops(rightans) ); fi; fi; if nops([wrong]) + nops([partright]) > 0 then feedback := feedback, __("Ordering your solutions from smallest to largest \\dots\\\\"); fi; if nops([wrong]) = 1 then feedback := feedback, sprintf( __("Your %s solution is incorrect.\\\\"), nth(wrong) ); elif nops([wrong]) > 1 then feedback := feedback, sprintf( __("Your %s"), nth(wrong[1]) ); for i from 2 to nops([wrong]) - 1 do feedback := feedback, sprintf( __(", %s"), nth(wrong[i]) ); od; feedback := feedback, sprintf( __(" and %s solutions are incorrect.\\\\"), nth(wrong[-1]) ); fi; if nops([partright]) = 1 then feedback := feedback, sprintf( __("Your %s solution is nearly correct (but has insufficient accuracy).\\\\"), nth(partright) ); elif nops([partright]) > 1 then feedback := feedback, sprintf( __("Your %s"), nth(partright[1]) ); for i from 2 to nops([partright]) - 1 do feedback := feedback, sprintf( __(", %s"), nth(partright[i]) ); od; feedback := feedback, sprintf( __(" and %s solutions are nearly correct (but do not have sufficient accuracy).\\\\"), nth(partright[-1]) ); fi; fi; RETURN([mark, cat("<latex>\n", feedback, "</latex>\n"), note, [wrong], [partright]]); end ): ###################################################################### `Package/Assign`( `aim/TrigSLN/Test`::[numeric, string, string, list, list], "This function assumes that the student was asked to do a trigonometry question @Q@ where the expected answer is the smallest, largest and number of solutions of an equation on a certain interval. The first argument @a@ might be an #`aim/Question/Attempt`# or #`aim/Question/ShortAttempt`# object (in which case we put @ans := a['Answer']@) or it might just be the student's answer (in which case we put @ans = a@). In any case, the function checks whether @ans@ is correct. If not, it checks @1/3@ is awarded for each accurate solution; @1/3@ is also awarded for giving the correct number of solutions. A solution is deemed correct if it is accurate to 2 decimal places. Solutions that are inaccurate but within 5% also score, but at the rate of 80% that of a fully correct answer. Wrong or inaccurate answers generate feedback, identifying which of the solutions are incorrect. The function returns a list of the form @[mark, feedback, note, [wrong], [partright]]@. If @a@ is an #`aim/Question/Attempt`# then the function also sets @a['RawMark']@ to @mark@, appends @feedback@ to @a['Feedback']@, and @note@ to @a['Note']@. ", proc(a, Q::`aim/Trig/Problem`) local i, j, allans, ans, argtype, rightans, wrong, mark, partright, eq, interval, llim, rlim, feedback, note; if type(a,`aim/Question/Attempt`) then argtype := "attempt"; ans := a['Answer']; elif type(a,`aim/Question/ShortAttempt`) then argtype := "shortattempt"; ans := a['Answer']; else argtype := "ordinary"; ans := eval(a); fi; eq, interval, rightans := op(Q); llim, rlim := op(interval); feedback := NULL; note := ""; allans := ans; ans := select(type, [op(1 .. 2, ans)], realcons); if nops(ans) = 2 and is(ans[1] > ans[2]) then ans[1], ans[2] := ans[2], ans[1]; feedback := feedback, __("Your solutions were given in the wrong order.\\\\"); note := __("Solutions in wrong order"); fi; if nops(ans) > 0 and is(ans[1] < llim - 0.01 or ans[-1] > rlim + 0.01) then feedback := feedback, sprintf( __("Solutions should lie in the interval $(%s, %s)$.\\\\"), TextStyle(LaTeX(llim)), TextStyle(LaTeX(rlim)) ); note := __("Solutions do not all lie in required interval"); if is(ans[1] < -2 * Pi - 0.01 or ans[-1] > 2 * Pi + 0.01) then feedback := feedback, __("Perhaps you attempted to give answers in degrees; note that answers should be in radians.\\\\"); note := __("Solutions in degrees?"); fi; fi; j := 1; mark := 0; wrong := NULL; partright := NULL; for i to nops(ans) do while j < 2 and op(j, rightans) < op(i, ans) and not `aim/TestNumeric`(op(j, rightans), op(i, ans), 'margin' = 0.02) do j := j + 1; od; if j > 2 then wrong := wrong, i; elif type(op(j, rightans), Not(float)) then # exact answer only accepted if `aim/TestEqual`(op(j, rightans), op(i, ans)) then mark := mark + 1/3; j := j + 1; else wrong := wrong, i; fi; elif `aim/TestNumeric`(op(j, rightans), op(i, ans), 'dpround' = -2) then mark := mark + 1/3; j := j + 1; elif `aim/TestNumeric`(op(j, rightans), op(i, ans), 'margin' = 0.02) then if i < nops(ans) and is(op(i, ans) < op(j, rightans)) and is(op(i + 1, ans) <= op(j, rightans)) then wrong := wrong, i; else if i = 1 and j = 2 then feedback := feedback, __("You have missed a smaller solution.\\\\"); note := __("Missed a smaller solution"); fi; partright := partright, i; mark := mark + 0.8/3; j := j + 1; fi; else wrong := wrong, i; fi; od; if mark = 0 then feedback := feedback, __("You gave no correct solutions.\\\\"); note := __("No correct solutions"); elif mark < 2/3 then if nops([wrong]) = 1 and nops(ans) = 2 then feedback := feedback, sprintf( __("Your %s solution is incorrect.\\\\"), `if`(evalb(wrong = 1), "smaller", "larger") ); fi; if nops([partright]) = 1 then if nops(ans) = 1 then feedback := feedback, __("The solution you have given is nearly correct (but has insufficient accuracy).\\\\"); else feedback := feedback, sprintf( __("Your %s solution is nearly correct (but has insufficient accuracy).\\\\"), `if`(evalb(partright = 1), "smaller", "larger") ); fi; elif nops([partright]) = 2 then feedback := feedback, __("Both your solutions are nearly correct (but have insufficient accuracy).\\\\"); fi; fi; ans := allans; if op(3, rightans) = op(3, ans) then mark := mark + 1/3; else feedback := feedback, __("You have not given the (correct) number of solutions.\\\\"); if note = "" then note := __("Incorrect number of solutions"); fi; wrong := wrong, 3; fi; if mark = 0 then note := __("Totally incorrect answer"); elif nops([partright]) > 0 and note = "" then note := __("At least one inaccurate solution"); fi; RETURN([mark, cat("<latex>\n", feedback, "</latex>\n"), note, [wrong], [partright]]); end ): ###################################################################### EndPackage(): --- NEW FILE: Util1.mpl --- # @(#)$Id: Util1.mpl,v 1.1.2.1 2003/07/09 09:59:48 gregg0 Exp $ # Copyright (C) 2003 Greg Gamble # Distributed without warranty under the GPL - see README for details ("Package.mpl"): Package("aim/Util1"," This package provides some extra utility functions initially created as they were needed by or were useful with the #`aim/Trig`# package. " ): ###################################################################### `Package/Assign`( decplaces::float, "Returns @x@ rounded to @n@ decimal places", proc(x::realcons, n::integer) round(x * 10^n) * 0.1^n; end ): `Package/Assign`( `SimplestDecimal`::float, "Returns @x@ to the least number of decimal places required to represent @x@ accurately. The optional argument @'maxdp' = d@ or @'maxsf' = s@ may be included, where @d, s@ are integers, in which case at most @d@ decimal places or @s@ significant digits are included in the returned result, rounding if necessary.", proc(x::realcons) local d; d := Digits; if nargs > 1 then if op(1, args[2]) = 'maxsf' then d := op(2, args[2]); elif op(1, args[2]) = 'maxdp' then d := op(2, args[2]); if floor(abs(x)) <> 0 then d := d + floor( log[10]( abs(x) ) ) + 1; fi; fi; fi; while d > 1 and evalf[d](x) = evalf[d - 1](x) do d := d - 1; od; return evalf[d](x); end ): `Package/Assign`( Exists::boolean, "exists quantifier, returns the result of: exists x in @lis@, @func@(x) where @func@ is @f@ if @f@ has type procedure or is defined by @func@ := x -> type(x, @f@)", proc(lis::{list,set,string}, f) local x, func; func := `if`(type(f, procedure), f, x -> type(x, f)); for x in lis do if func(x) then return true; fi; od; return false; end ): `Package/Assign`( Forall::boolean, "forall quantifier, returns the result of: for all x in @lis@, @func@(x) where @func@ is @f@ if @f@ has type procedure or is defined by @func@ := x -> type(x, @f@)", proc(lis::{list,set,string}, f) local func; func := `if`(type(f, procedure), f, x -> type(x, f)); not Exists(lis, x -> not func(x)); end ): `Package/Assign`( In::boolean, "Returns @true@ if @x@ is in the interval [@llim@, @rlim@], or @false@ otherwise", proc(x::realcons, llim::realcons, rlim::realcons) is(x >= llim and x <= rlim); end ): `Package/Assign`( nth::string, "Returns the ordinal corresponding to @n@, e.g. @nth(3)@ returns 3rd", proc(n::integer) local lasttwo, lastdigit; if n < 0 then cat(n, "th"); else lasttwo := irem(n, 100); lastdigit := irem(n, 10); if lastdigit = 1 and lasttwo <> 11 then cat(n, "st"); elif lastdigit = 2 and lasttwo <> 12 then cat(n, "nd"); elif lastdigit = 3 and lasttwo <> 13 then cat(n, "rd"); else cat(n, "th"); fi; fi; end ): `Package/Assign`( TextStyle::string, "Returns a LaTeX textstyle version of a displaystyle LaTeX string. At the moment it only changes \"\\frac{..}{..}\" to \"{..}/{..}\"", proc(s::string) local s_, pos, posb, posn, bcount; s_ := s; do pos := SearchText("\\frac", s_); if pos = 0 then return s_; fi; posb := pos + 5; while posb < length(s_) and s_[posb] = " " do posb := posb + 1; od; posn := posb; #position of start of numerator bcount := 0; if s_[posb] = "{" then bcount := bcount + 1; posb := posb + 1; fi; while bcount > 0 and posb < length(s_) do if s_[posb] = "{" then bcount := bcount + 1; elif s_[posb] = "}" then bcount := bcount - 1; fi; posb := posb + 1; od; if posb >= length(s_) or bcount < 0 then # s_ doesn't have a well-formed \frac{..}{..} ... just return return s_; fi; s_ := cat(s_[1 .. pos - 1], s_[posn .. posb - 1], "/", s_[posb .. -1]); od; end ): ###################################################################### EndPackage(): |
From: <gr...@us...> - 2003-07-09 09:41:36
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv29933 Modified Files: Tag: develop_2_1 Aim.mpl Make.mpl Log Message: Allow PackageList to have comments and whitespace. - GG Index: Aim.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Aim.mpl,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.2 diff -C2 -d -r1.1.1.1.2.1 -r1.1.1.1.2.2 *** Aim.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 --- Aim.mpl 9 Jul 2003 09:41:33 -0000 1.1.1.1.2.2 *************** *** 17,22 **** while (line <> 0) do if line <> "" then - line := util_unixify(line); lines := lines,line: fi; --- 17,25 ---- while (line <> 0) do + # remove comment (possibly preceded by whitespace) or + # whitespace at end of line from line + line := StringTools:-RegSub("^([^ \t#]*)([ \t]*#.*|[ \t]*.*$)?", line, "\\1"); + line := util_unixify(line); if line <> "" then lines := lines,line: fi; Index: Make.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Make.mpl,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.2 diff -C2 -d -r1.1.1.1.2.1 -r1.1.1.1.2.2 *** Make.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 --- Make.mpl 9 Jul 2003 09:41:33 -0000 1.1.1.1.2.2 *************** *** 97,100 **** --- 97,103 ---- Make_ok := true; while (line <> 0) do + # remove comment (possibly preceded by whitespace) or + # whitespace at end of line from line + line := StringTools:-RegSub("^([^ \t#]*)([ \t]*#.*|[ \t]*.*$)?", line, "\\1"); line := util_unixify(line); if line <> "" then |
From: <gr...@us...> - 2003-07-09 09:34:21
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv29264 Modified Files: Tag: develop_2_1 ConfigFields.mpl Log Message: Updated data re MapleVersion. Corrected typo. - GG Index: ConfigFields.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/ConfigFields.mpl,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.2 diff -C2 -d -r1.1.1.1.2.1 -r1.1.1.1.2.2 *** ConfigFields.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 --- ConfigFields.mpl 9 Jul 2003 09:34:18 -0000 1.1.1.1.2.2 *************** *** 22,29 **** integer," The major version number of Maple under which AIM is running. The ! allowed values are 5, 6 or 7. Maple 8 is not currently supported ! because various features of the codegen package have been withdrawn ! and replaced by a different mechanism. (This will probably be a Good ! Thing in the long term.)"], ['ServletURL', --- 22,27 ---- integer," The major version number of Maple under which AIM is running. The ! known allowed values are 5, 6, 7 or 8 (though some things are undoubtedly ! broken for Maple 5)."], ['ServletURL', *************** *** 45,49 **** ['RootDir', string," ! The top of the directory heirarchy where AIM's data files (with information about subjects, quizzes, questions and students) are stored."], --- 43,47 ---- ['RootDir', string," ! The top of the directory hierarchy where AIM's data files (with information about subjects, quizzes, questions and students) are stored."], |
From: <gr...@us...> - 2003-07-09 09:29:27
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv28701 Modified Files: Tag: develop_2_1 Random.mpl Log Message: Added function: randnotfrom - GG Index: Random.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Random.mpl,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.2 diff -C2 -d -r1.1.1.1.2.1 -r1.1.1.1.2.2 *** Random.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 --- Random.mpl 9 Jul 2003 09:29:24 -0000 1.1.1.1.2.2 *************** *** 257,259 **** --- 257,276 ---- ); + `Package/Assign`( + randnotfrom::integer, + "Return a random integer in a range or list not in @lis1@ that is + coprime to each element of @lis2@ (@lis2@ is optional; if omitted + it is taken to be the empty set)", + proc(range::{integer,range(integer),list}, lis1::{list,set}, + lis2::{list(integer),set(integer)}) + local n, lis2_; + n := Rand(range); + lis2_ := `if`(evalb(nargs = 2), {}, lis2); + while member(n, lis1) or Exists(lis2_, x -> igcd(n, x) <> 1) do + n := Rand(range); + od; + n; + end + ): + EndPackage(): |
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv12886 Modified Files: Tag: develop_2_1 Aim.mpl AliceServer.mpl AutoConf.mpl Cache.mpl Class.mpl ConfigFields.mpl Console.mpl Date.mpl fixintrep5.mpl fixintrep6.mpl FullPackage.mpl HTML.mpl I18n.mpl ImageCache.mpl LaTeX.mpl Local.mpl Make.mpl OS0_DOS.mpl OS0_Linux.mpl OS0.mpl OS0_OSX.mpl OS.mpl Package.mpl ParsedText.mpl Pot.mpl Random.mpl SafeParse.mpl Servlet.mpl Site.mpl trylast.mpl Util0.mpl Util.mpl Log Message: Ensuring develop_2_1 .mpl files have id headers - GG Index: Aim.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Aim.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Aim.mpl 20 Apr 2003 23:15:21 -0000 1.1.1.1 --- Aim.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: AliceServer.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/AliceServer.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** AliceServer.mpl 20 Apr 2003 23:15:22 -0000 1.1.1.1 --- AliceServer.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: AutoConf.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/AutoConf.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** AutoConf.mpl 20 Apr 2003 23:15:24 -0000 1.1.1.1 --- AutoConf.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Cache.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Cache.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Cache.mpl 20 Apr 2003 23:15:24 -0000 1.1.1.1 --- Cache.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Class.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Class.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Class.mpl 20 Apr 2003 23:15:27 -0000 1.1.1.1 --- Class.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: ConfigFields.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/ConfigFields.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** ConfigFields.mpl 20 Apr 2003 23:15:28 -0000 1.1.1.1 --- ConfigFields.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Console.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Console.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Console.mpl 20 Apr 2003 23:15:28 -0000 1.1.1.1 --- Console.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Date.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Date.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Date.mpl 20 Apr 2003 23:15:31 -0000 1.1.1.1 --- Date.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: fixintrep5.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/fixintrep5.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** fixintrep5.mpl 20 Apr 2003 23:15:32 -0000 1.1.1.1 --- fixintrep5.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: fixintrep6.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/fixintrep6.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** fixintrep6.mpl 20 Apr 2003 23:15:32 -0000 1.1.1.1 --- fixintrep6.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: FullPackage.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/FullPackage.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** FullPackage.mpl 20 Apr 2003 23:15:34 -0000 1.1.1.1 --- FullPackage.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: HTML.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/HTML.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** HTML.mpl 20 Apr 2003 23:15:37 -0000 1.1.1.1 --- HTML.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: I18n.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/I18n.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** I18n.mpl 20 Apr 2003 23:15:37 -0000 1.1.1.1 --- I18n.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: ImageCache.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/ImageCache.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** ImageCache.mpl 20 Apr 2003 23:15:38 -0000 1.1.1.1 --- ImageCache.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: LaTeX.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/LaTeX.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** LaTeX.mpl 20 Apr 2003 23:15:40 -0000 1.1.1.1 --- LaTeX.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + read("Package.mpl"): Package("LaTeX"," Index: Local.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Local.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Local.mpl 20 Apr 2003 23:15:40 -0000 1.1.1.1 --- Local.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Make.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Make.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Make.mpl 20 Apr 2003 23:15:40 -0000 1.1.1.1 --- Make.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS0_DOS.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS0_DOS.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** OS0_DOS.mpl 20 Apr 2003 23:15:42 -0000 1.1.1.1 --- OS0_DOS.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS0_Linux.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS0_Linux.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** OS0_Linux.mpl 20 Apr 2003 23:15:42 -0000 1.1.1.1 --- OS0_Linux.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS0.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS0.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** OS0.mpl 20 Apr 2003 23:15:41 -0000 1.1.1.1 --- OS0.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS0_OSX.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS0_OSX.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** OS0_OSX.mpl 20 Apr 2003 23:15:42 -0000 1.1.1.1 --- OS0_OSX.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** OS.mpl 20 Apr 2003 23:15:41 -0000 1.1.1.1 --- OS.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Package.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Package.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Package.mpl 20 Apr 2003 23:15:42 -0000 1.1.1.1 --- Package.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: ParsedText.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/ParsedText.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** ParsedText.mpl 20 Apr 2003 23:15:43 -0000 1.1.1.1 --- ParsedText.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Pot.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Pot.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Pot.mpl 20 Apr 2003 23:15:43 -0000 1.1.1.1 --- Pot.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Random.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Random.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Random.mpl 20 Apr 2003 23:15:44 -0000 1.1.1.1 --- Random.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: SafeParse.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/SafeParse.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** SafeParse.mpl 20 Apr 2003 23:15:46 -0000 1.1.1.1 --- SafeParse.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Servlet.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Servlet.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Servlet.mpl 20 Apr 2003 23:15:46 -0000 1.1.1.1 --- Servlet.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Site.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Site.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Site.mpl 20 Apr 2003 23:15:46 -0000 1.1.1.1 --- Site.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: trylast.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/trylast.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** trylast.mpl 20 Apr 2003 23:15:47 -0000 1.1.1.1 --- trylast.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Util0.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Util0.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Util0.mpl 20 Apr 2003 23:15:49 -0000 1.1.1.1 --- Util0.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Util.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Util.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** Util.mpl 20 Apr 2003 23:15:49 -0000 1.1.1.1 --- Util.mpl 8 Jul 2003 06:21:33 -0000 1.1.1.1.2.1 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details |
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv32399 Modified Files: Aim.mpl AliceServer.mpl AutoConf.mpl Cache.mpl Class.mpl ConfigFields.mpl Console.mpl Date.mpl fixintrep5.mpl fixintrep6.mpl FullPackage.mpl HTML.mpl I18n.mpl ImageCache.mpl LaTeX.mpl Local.mpl Make.mpl OS0_DOS.mpl OS0_Linux.mpl OS0.mpl OS0_OSX.mpl OS.mpl Package.mpl ParsedText.mpl Pot.mpl Random.mpl SafeParse.mpl Servlet.mpl Site.mpl trylast.mpl Util0.mpl Util.mpl Log Message: Re-commit of files with headers added. Apparently didn't go through previously. - GG Index: Aim.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Aim.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Aim.mpl 20 Apr 2003 23:15:21 -0000 1.1.1.1 --- Aim.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: AliceServer.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/AliceServer.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** AliceServer.mpl 20 Apr 2003 23:15:22 -0000 1.1.1.1 --- AliceServer.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: AutoConf.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/AutoConf.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** AutoConf.mpl 20 Apr 2003 23:15:24 -0000 1.1.1.1 --- AutoConf.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Cache.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Cache.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Cache.mpl 20 Apr 2003 23:15:24 -0000 1.1.1.1 --- Cache.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Class.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Class.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Class.mpl 20 Apr 2003 23:15:27 -0000 1.1.1.1 --- Class.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: ConfigFields.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/ConfigFields.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** ConfigFields.mpl 20 Apr 2003 23:15:28 -0000 1.1.1.1 --- ConfigFields.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Console.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Console.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Console.mpl 20 Apr 2003 23:15:28 -0000 1.1.1.1 --- Console.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Date.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Date.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Date.mpl 20 Apr 2003 23:15:31 -0000 1.1.1.1 --- Date.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: fixintrep5.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/fixintrep5.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** fixintrep5.mpl 20 Apr 2003 23:15:32 -0000 1.1.1.1 --- fixintrep5.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: fixintrep6.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/fixintrep6.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** fixintrep6.mpl 20 Apr 2003 23:15:32 -0000 1.1.1.1 --- fixintrep6.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: FullPackage.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/FullPackage.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** FullPackage.mpl 20 Apr 2003 23:15:34 -0000 1.1.1.1 --- FullPackage.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: HTML.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/HTML.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** HTML.mpl 20 Apr 2003 23:15:37 -0000 1.1.1.1 --- HTML.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: I18n.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/I18n.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** I18n.mpl 20 Apr 2003 23:15:37 -0000 1.1.1.1 --- I18n.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: ImageCache.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/ImageCache.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** ImageCache.mpl 20 Apr 2003 23:15:38 -0000 1.1.1.1 --- ImageCache.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: LaTeX.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/LaTeX.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** LaTeX.mpl 20 Apr 2003 23:15:40 -0000 1.1.1.1 --- LaTeX.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + read("Package.mpl"): Package("LaTeX"," Index: Local.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Local.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Local.mpl 20 Apr 2003 23:15:40 -0000 1.1.1.1 --- Local.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Make.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Make.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Make.mpl 20 Apr 2003 23:15:40 -0000 1.1.1.1 --- Make.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS0_DOS.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS0_DOS.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** OS0_DOS.mpl 20 Apr 2003 23:15:42 -0000 1.1.1.1 --- OS0_DOS.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS0_Linux.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS0_Linux.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** OS0_Linux.mpl 20 Apr 2003 23:15:42 -0000 1.1.1.1 --- OS0_Linux.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS0.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS0.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** OS0.mpl 20 Apr 2003 23:15:41 -0000 1.1.1.1 --- OS0.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS0_OSX.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS0_OSX.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** OS0_OSX.mpl 20 Apr 2003 23:15:42 -0000 1.1.1.1 --- OS0_OSX.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: OS.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/OS.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** OS.mpl 20 Apr 2003 23:15:41 -0000 1.1.1.1 --- OS.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Package.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Package.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Package.mpl 20 Apr 2003 23:15:42 -0000 1.1.1.1 --- Package.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: ParsedText.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/ParsedText.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** ParsedText.mpl 20 Apr 2003 23:15:43 -0000 1.1.1.1 --- ParsedText.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Pot.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Pot.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Pot.mpl 20 Apr 2003 23:15:43 -0000 1.1.1.1 --- Pot.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Random.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Random.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Random.mpl 20 Apr 2003 23:15:44 -0000 1.1.1.1 --- Random.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: SafeParse.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/SafeParse.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** SafeParse.mpl 20 Apr 2003 23:15:46 -0000 1.1.1.1 --- SafeParse.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Servlet.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Servlet.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Servlet.mpl 20 Apr 2003 23:15:46 -0000 1.1.1.1 --- Servlet.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Site.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Site.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Site.mpl 20 Apr 2003 23:15:46 -0000 1.1.1.1 --- Site.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: trylast.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/trylast.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** trylast.mpl 20 Apr 2003 23:15:47 -0000 1.1.1.1 --- trylast.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Util0.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Util0.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Util0.mpl 20 Apr 2003 23:15:49 -0000 1.1.1.1 --- Util0.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details Index: Util.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Util.mpl,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Util.mpl 20 Apr 2003 23:15:49 -0000 1.1.1.1 --- Util.mpl 8 Jul 2003 04:30:41 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- + # @(#)$Id$ + # Copyright (C) 2003 Neil Strickland # Distributed without warranty under the GPL - see README for details |
From: <gus...@us...> - 2003-07-08 01:00:20
|
Update of /cvsroot/aimmath/AIM/bin In directory sc8-pr-cvs1:/tmp/cvs-serv6368/bin Added Files: Tag: gustav_2_1 blat.exe Log Message: Included for convenience --- NEW FILE: blat.exe --- (This appears to be a binary file; contents omitted.) |
From: <gus...@us...> - 2003-07-08 00:58:22
|
Update of /cvsroot/aimmath/AIM/bin In directory sc8-pr-cvs1:/tmp/cvs-serv6087/bin Log Message: Directory /cvsroot/aimmath/AIM/bin added to the repository --> Using per-directory sticky tag `gustav_2_1' |