#lang scribble/doc @(require "common.ss") @title[#:tag "multi-file"]{Multiple-File Submissions} By default, the system is set up for submissions of single a single file, straight fom DrScheme using the handin-client. There is some limited support for multi-file submissions in @schememodname[handin-server/checker] and in the handin-client. It is possible to submit multiple files, and have the system generate a single file that is the concatenation of all submission files (used only with text files). To set up multi-file submissions, do the following: @itemize[ @item{Add a @scheme[:multi-file] keyword in @scheme[check:], and as a value, use the suffix that should be used for the single concatenated output file.} @item{You can also add a @scheme[:names-checker] keyword--the value can be a regexp that all submitted files must follow (e.g., @scheme[".*[.]scm$"]), or a list of expected file names. Alternatively, it can be a 1-argument procedure that will receive the (sorted) list of submitted files and can throw an error if some files are missing or some files are forbidden.} @item{Make sure that @scheme[:create-text?] is on if you want the contents of a multi-file submission to be unpacked and filenames checked.} @item{In the @filepath{info.ss} file of the handin-client you need to set @scheme[enable-multifile-handin] to @scheme[#t], and adjust @scheme[selection-default] to patterns that are common to your course. (It can be a single pattern, or a list of them.)}] On the server side, each submission is saved in a file called @filepath{raw}, which contains all submitted files. In the @filepath{grading} directory, you will get a @filepath{text.} file (@filepath{} is the suffix that is used as a value for @scheme[:multi-file]) that contains all submitted files with clear separators. A possible confusion is that every submission is a complete set of files that overwrites any existing submission, whereas students may think that the server accumulates incoming files. To avoid such confusion, when a submission arrives an there is already an existing previous submission, the contents is compared, and if there are files that existed in the old submission but not in the new ones, the student will see a warning pop-up that allows aborting the submission. On the client side, students will have an additional file-menu entry for submitting multiple files, which pops up a dialog that can be used to submit multiple files. In this dialog, students choose their working directory, and the @scheme[selection-default] entry from the @filepath{handin-client/info.ss} file specifies a few patterns that can be used to automatically select files. The dialog provides all handin-related functionality that is available in DrScheme. For further convenience, it can be used as a standalone application: in the account management dialog, the @onscreen{Un/Install} tab has a button that will ask for a directory where it will create an executable for the multi-file submission utility---the resulting executable can be used outside of DrScheme (but PLT Scheme is still required, so it cannot be uninstalled).