## CHANGES OKUSON package ## Frank Lübeck / Max Neunhöffer ## This file documents the changes between released versions of OKUSON. How to apply an update of OKUSON to earlier releases: ----------------------------------------------------- See the separate file UPGRADE for upgrades. Changes from 1.2-fix2 to 1.3 * Fixed the problem that the custom export tags %c, %v and %h didn't work correctly if sheet names were not equal to the sheet numbers. (Reported by Timo Hanke) * Some new files in the 'scripts' subdirectory: SendEmail.py send email to all participants (individually, such that they don't see other email addresses) startNOSERVER.py a utility for scripts with access to all current data of a server RWTHCampus2people.py automatically registers participants using data from the RWTH Campus system (.csv format) It generates random initial passwords. This is RWTH specific but probably slight variations could be useful in other places. SendInitPasswords.py writes mails to inform automatically registered participants about their initial password exampleMailSendInitPasswords example mail template README.RWTH_Campus infos how to use registration via RWTH Campus together with OKUSON * Added in Config.xml. This function should generate a salutation which can be used by scripts which generate emails to the participants. * Added element in Config.xml. This allows to specify data which are not allowed to be changed by the participant via the SubmitRegChange function. This can be used if certain data were imported from somewhere else. * Added a check for negative score to ignore in that case (as promised in the comments of Config.xml); reported by Sebastian Mayer. * Allow access to ShowDetailedScoreTable with tutor authentification. * Set passwd information for group 0 such that a password must be given explicitly for group 0 for accessing it via /tutors.html. * Added a script scripts/getexamresults.py for input of exam results for data/exams.txt. * Added %[nr]r to custom export for exam registrations. * Removed and added some buttons in administration .tpl files. * Corrected some HTML errors in plugins (done by Marc) * Extended publicstatistics plugin with chart function (done by Marc) * Included scheine plugin by Ingo * Included personalizedcoversheets plugin by Ingo * Added english template pages in "html.english". Changes from 1.2-fix1 to 1.2-fix2 * Moved repository to svn. Changes from 1.2 to 1.2-fix1 * Problems with compiling the rxp parser with gcc 4 and with python 2.5 seem to be resolved by newest svn-version of pyRXP (provided by Robin Becker). Changes from 1.1-fix5 to 1.2 * Change highscoretable sample plugin to only consider non-guest IDs * Allow configuration of multiple choice scores for wrong and correct answers. Allow default values in the configuration file. Make lower limit of score for a multiple choice exercise configurable in the Exercise element with a default option in the configuration file. [-> One can now set the maximal and minimal score of a question to 0 to take it out of the grading. -> It is now possible to have MC questions which count more than others.] * Included Marc Ensenbachs publicstatistics plugin in the plugin samples. * Use the configuration option "RestrictToOwnGroup" also in the per person homework score page for tutors. If this option is off, then a tutor may also edit the homework scores of a participant not in his group. * Patched pyrxp.c on Max's web page to allow for compilation with GCC >=4.0 * Moved "SeedFromId" to the Utils module such that Exercises does not need import WebWorkers * Documented how to force a page break between exercises in a pdf-sheet. * Now the custom export returns a list sorted by ID's, and it excludes the guest ID's (as promised for in Config.xml). * Corrected bug that in custom export %0e included all exams instead of exam number 0 only. * Made the text width for pdf-pages (and text images) a bit smaller such that filed exercise sheets are better readable and the punch holes are outside the text. * Fixed a bug that two threads running in parallel could use the same "uniquename" for file locking. This bug could lead to crashes of the server! * Add the possibility to customize the date/time format that is used for displaying date and time. The format can be specified with the configuration option "DateTimeFormat". * Fix display problem of the table on the global statistics page(s). * Fix marking of wrong ids on the free homework input form. * Change css style sheets to foreground color black. * Fixed compilation of pyRXP with gcc 4.0 and later. * Allow the administrator to put people into overbooked groups by ignoring the maximal group size. Changes from 1.1-fix4 to 1.1-fix5 * Changed MIME type for *.ps files to 'application/postscript'. * Give a little bit more personal information back after successful registration to an exam to better detect caching bugs in browsers. * Incorporated Marc's free homework input form. This is available under /HomeworkFree and uses one more configuration switch "RestrictToOwnGroup". * Incorporated Ingo's patch ik2 to allow PersonDataField and friends in generic pages without available personal data. * Incorporated Ingo's patch ik3 for a tag which allows for mouse selection of the group. Added documentation. * Incorporated Ingo's patches ik4 to ik6 to add a framework for extensions called "plugins". See okuson/server/plugins.sample for examples. Note that there is no documentation for this available apart from the code itself. :-) Changes from 1.1-fix3 to 1.1-fix4 * Fixed a bug with locale.str in ExportResults. * Explained the scoring of interactive exercises in the manual (was only in sample web page before). * Two corrections in the documentation of . * New attribute 'nodisplay' for , for example to exclude the default group "0" from the listing. * Custom export of person data: added format switch for including the custom data; added variant of homework export which includes the stored details (scores for the individual exercises). * New feature of example solutions to written exercises, which are displayed with the written exercises as soon as the sheet is closed. See Manual section 5.2. * Inserted a suggestion by Marc to display the prefix of the multiple choice question in the statistics page for a certain variant. * Create a switch "InteractiveMode". If this is 1 (default is 0), then the resulting points are shown in the multiple choice sheets already before the closing time of the sheet, if the user already has submitted once. This is intended for interactive exercises only. * Display a message when a browser submits impossible values. The values are ignored as before this change. * Improved the help text of the "schein.py" script. * Fix "Show Global Statistics for group" in administrator menu, allow access for tutors not only from administrators hosts, and allow administrator access after login. * Allow registration if the first password is the administrator password, even if registration is switched off. * New configuration option "MaxStringInputLength" to give the maximal length of the input in string fields in multiple choice exercises. * New mime types .avi, .rm. * Forcing PGM output from ghostscript to avoid non-antialiased images with big LaTeX input (should not make a difference for most people). Changes from 1.1-fix2 to 1.1-fix3 * Fixed an embarrassing bug in "CleanWeb", introduced in 1.1-fix2. Pages containing certain elements (like ) did no longer work. * Fixed a small typo in html/edithomeworkperson.tpl (a double colon). Changes from 1.1-fix1 to 1.1-fix2 * Made a small change to the RandObj class in SimpleRand because of an integer overflow occuring in Python 2.2 (was no problem in 2.3). Should not be visible. * Fixed all (???) places where user entered data (last name, first name, studies, email, wishlist, string answers, persondata) is put back on some web page, which is sent out. To avoid cross site scripting attacks we replace "<" by "<", ">" by ">" and "&" by "&" in those places. This should never hurt and should make cross site scripting attacks at least a bit harder. * Amended the manual with respect of TEXT elements in EXERCISE elements: Only a prefix and a postfix to all questions are considered, not TEXTs between questions, even for the case order="f". (Sorry Axel!) The behaviour of OKUSON was not changed, only the documentation changed. * Added a warning that OKUSON is not running with the non-official version 2.3+ of python shipped with Suse Linux 9.0. * Fixed the handling of LaTeX texts in exercises to fix a bug reported by Daniel Robertz which showed up, when TeX comment lines were at the end of the LaTeX input. TeX comments now are filtered out completely. * Added new element to display the OKUSON version. Added this to all sample pages at the bottom. * Added a manual section, explaining how to deliver non-template files with the OKUSON server. * Made a page with result statistics for single group available to tutor of that group. * Fixed a bug with the generic export functionality (concerning exercise results). * Created favicon.ico, because browsers ask for it. Changes from 1.1 to 1.1-fix1 * Documented 'maxsize' entry in file groupinfo.txt * Fixed bugs in helper scripts resulting from export format changes. (distribute.py, numbergroups.py and prettyprintgroupdist.py). * Fixed bug that showed up when tutors changed their password (groupinfo.txt was messed up and the server did no longer start). * Fixed bug in display of element, which prevented custom group data from being displayed properly. * In case of non-individual exercises display future sheets for admins. * Report XML parsing errors correctly without putting the whole file twice into the log. Changes from 1.0-fix3 to 1.1 * Generic and easy to extend export function in admin menue via format string, accompanied by a script 'scripts/sortselect.py' for sorting and filtering. * 'testexercise' now displays 'Overfull \hbox'es from LaTeX log file. * New switch in Config.xml and for .tpl files. (Switch defaults to 1, if set to 0, no password is needed for sheets and PDF sheets don't use table.) * Substituted the to and related tags by more flexible tags. * Substituted the to and related tags by more flexible tags. * Substituted the to by more flexible configuration options (allows an arbitrary number of additional data and a better naming). * Introduced a "LINEDICT" type for leaves in AsciiData module, for storing whole dictionaries with string values. * Allow change of .tpl files without restarting the server: If a .tpl file has changed and can be parsed then the internal parse tree of the template is updated before it is used. * Added 'value = ""' for string input fields, if nothing was entered before. This hopefully avoids pre-filled-in fields by "intelligent" browsers. * Changed authentication for statistics. Login is no longer necessary. * Fixed two bugs with ExamGradingFunction reported by Thorsten. * Put a hint to "schein.py" into the manual. * Handle additional info to "Studiengang" better * Header and Footer configurable (change from Ingo) * Introduced a switch in Config.py to allow/disallow registration. * Introduced a switch in Config.py to allow/disallow exam registration. * Introduced a switch in Config.py to allow/disallow group choice during registration. * Implemented group choice during registration. * Implemented group change during semester. * Introduce a switch in Config.py to allow/disallow group change after registration. * Make administrator menu a function (AdminMenu) to allow different behaviour according to login status. * Make cookies persistent (resolution (13 weeks) and login status (60 minutes). * Simplify/unify authentication code (AuthenticateAdmin is gone). * Better statistical displays (thanks to Lehrstuhl A) * Display of exam registration status (thanks to Lehrstuhl A). * Star homework exercises (do not count in the denominator, thanks to LAFM). * Maximal possible homework score (thanks to LAFM). * Fixed bug with non-uniform distribution of variants in the case of 3 variants. * Sort order by TotalMCScore, TotalHomeScore, and TotalScore (thanks to LAFM). * Logrotate script to keep logfile data small * Helper script to make stickers for (paper) database. * Implemented maximal size of tutoring groups. * Fixed some bugs in "schein.py" helper script. * Improved format of log messages (timestamps), User-Agent * Fixed bug with unequal distribution of variants in case of 3 variants. * Input field names now contain the sheet name to prevent browsers from filling in answers from old sheets. * Display of correct solution even if participant selected "no answer" after closure of sheet. * OKUSON now counts globally the number of exams and exports accordingly. * Export of additional score info from exams. * Generic script "sortselect.py" to handle exported data efficiently with respect to selecting subsets of people and sorting. * New tags and to display registration status in a generic way. * Homework scores and exam scores can be floats. Exports and display of floats is according to locale. Only file store scores always with . instead of , as decimal point. * Improved random behaviour for exactly three variants. ATTENTION: DO NOT USE DATA OF SUBMISSIONS FROM OLDER VERSIONS!!! Changes from 1.0-fix2 to 1.0-fix3 * Striping comments from LaTeX code in alt-attributes of images (-> can now safely add references and solutions in exercise comments) * Resolve a subtle bug with non-thread-safeness of the pyRXP XML parser (there is now a global pyRXP Lock object and the interface to the parser has been improved). * Fix a bug within pyRXP which led to memory leaks during online validation of outgoing pages. * Added Thorsten's statistic functions. * Added Ingo's suggestion for tag (not in standard templates!) * Fix timeout-functionality by only using timeouts in Python 2.3 and higher. Upgrading to Python 2.3 is now recommended to avoid hanging threads. * Acknowledgements in the manual. * Added Ingo's patches to support maximal possible scores and displaying them. * New script "showdiffsintemplates" to do what it says. * Small layout change in "regchange2.tpl". * Small layout change in display of maximal points to avoid German words in code. * Documentation of new tags. * Documentation of statistic functions. * Fixed a bug in the evaluation of choice questions where selecting no answer is the correct solution reported by Axel. * Fixed a bug in the statistic function for the noninteractive case. Changes from 1.0-fix1 to 1.0-fix2 --------------------------------- * Added little feature in server/fmTools/AsciiData.py not related to OKUSON * Tweaked the thread management to avoid two possible problems: - leftover threads if connection stays open - make worker threads "daemonic" such that they exit if the main thread does Changes from 1.0 to 1.0-fix1 ---------------------------- * Small layout change in html.sample/edithomeworkperson.tpl. * Fix of bug for "c" ("choice") questions. Changes from 1.0-pre4 to 1.0 ------------------------------ * added support for ExamGradingFunction to automatically calculate messages and grades for results of exams. This should now complete the support for exams. * added 'Content-Disposition' header line for PDF sheets * fixed nasty bug in scripts/distribute.py * documentation of external data formats as far as the user is concerned * documentation of internal data formats as far as necessary for automatic grading functions and for overview * documentation of automatic grading * documentation of handling of exams * documented missing interface elements * added an example of needed resources * chapter with customization examples * cleanup pyRXP directory after build * allow group number 0 in tutor input pages * added some utilities to 'scripts' subdirectory * improved 'testsheet' for optionally using the NoTable template (-n option) * guest IDs are no longer members of groups (in cache in GroupInfo objects) * sorting of IDs consistent (numerical if possible) * little paragraph about usage of TEXINPUTS (e.g., for exercises containing images) * made tutors page more user friendly by adding name column and separating lines * added a script to remove a person from all data files when server is *not* running. Please pay ATTENTION to your data when using this! * fixed bug with SHEETS element in .bla files reported by Ingo * now floating point entries are allowed in homework excercises (this uses new "FLOAT" and "NUMBER" types in the AsciiData module * changed log entries: validation only logs message if not successful, and for main user/sheet dependend pages a log-message now shows the id and sheet number (before the standard webserver line) * the builtin webserver now waits some maximal number of seconds on terminating threads (set via BuiltinWebServer.TERMWAIT, default 3 sec) * with 'testsheet' the questions of interactive exercises are now separated by a thin empty line Changes from 1.0-pre3 to 1.0-pre4 ----------------------------------- * remove sending of "Location" header at administrator login to please opera * fixed validity bug in /doctypehelp.tpl * added correction of "Content-length" header in NoValidFunction after removal of validation icon, this fixes a nasty behaviour with opera * added explicit Path to Set-Cookie header * introduced PDF template without table for courses without interactive exercises and attribute for using it; added some corresponding alternative .tpl files (called .tpl.nointeractive) * added pseudo elements for getting radio button and check box corresponding to persondataX components * new pseudo element for select options with persondataX values * made group 0 a valid group, so it doesn't need the groups.txt file in case of just one group (but put an entry with password in groupinfo.txt to use the /tutors.html interface) Changes from 1.0-pre2 to 1.0-pre3 ----------------------------------- Attention: The following four configuration options are new in the file Config.xml.sample: DocumentRoot, GroupInfoFile, GradingFunction, GradingActive, and GuestIdRegExp. They are all optional and have sensible defaults. * removed bug with double use of . * introduced the 'openfrom' attribute for sheets, including admin access to not yet open sheets via administrator menu. * sensible messages for 'start' when server already running and for 'stop' when no server is running. * introduced on the fly validation of delivered XHTML pages to the BuiltinWebServer, in OKUSON's Server nonvalid files are written to temporary directories and in that case the validator icon is removed. Corrected a few errors detected by this in html.sample directory: adminlogin.tpl, generalinfo.tpl, results.tpl, sheet.tpl * improved the element used in html/results.tpl, now the consideration of each of the interactive resp. homework exercises can can be switched off. * remove temporary files for PDF sheets. * removed bug that made page with distribution into exercises classes nonvalid * added export of people for distribution into groups * added helper scripts to facilitate distribution in a semi-automatic way * document this process in the manual under "Managing Participants" * distribution into exercise classes should now be ready for usage * added configuration option 'DocumentRoot', this changes "Config.xml"! * added a few sanity checks at startup * added export facility for people including group membership, documented * added sort functionality for export of people * added option to send personal message to participant via admin menu * re-styled administrator's menu * moved files in server/Tools to a subpackage 'fmTools' * added data structure for general information on tutoring groups, new entry GroupInfoFile in "Config.xml"! * added convenient deletion of private messages by administrator * several improvements (we think) in sample OKUSON.css style sheet * new optional configuration options "GradingFunction" and "GradingActive", which allow automatic grading. * display of grades based on automatic decision via the GradingFunction in the result page. * added feature to register (and unregister) for exams * export of registered participants for exam via administrator menu * only allow super-password access from administrator enabled client hosts * pages for tutors to change group password and to enter homework results for people in their group, by sheet and by person (for all sheets) * introduce guest ID (usually 100000) via a configuration option GuestIdRegExp (optional, defaults to ^$ which matches only the empty id). Guest IDs do not appear in exports and one can authenticate to them with any password, even the empty one. * added export of results including multiple choice, homework, and exams * corrected a nasty bug with "choice" exercises * added possibility to resubmit all submissions for a sheet to correct potential errors in the "correct solutions". * made output at startup shorter (not every loaded web page is shown) * add optional attribute "maxhomescore", not used up to now * corrected loading of extra LaTeX headers in all cases * improved testexercise and testsheet scripts, can now use other image viewer * much more complete documentation Changes from 1.0-pre1 to 1.0-pre2 ----------------------------------- * removed bug with redisplaying sheets including previous submissions. * the ./stop and ./restart scripts no longer need the administrator password (thereby removing a problem with passwords containing '&' characters) * changed default for access of BuiltinWebServer: from all hosts