/static StaticR Static appStatic
/auth   AuthR   Auth   getAuth

/favicon.ico FaviconR GET
/robots.txt RobotsR GET

/        HomeR    GET POST
/profile ProfileR GET
/users   UsersR   GET                                         !adminAny

/term                       TermShowR         GET
/term/edit                  TermEditR         GET POST        !adminAny
/term/#TermId/edit          TermEditExistR    GET             !adminAny

-- For Pattern Synonyms see Foundation
/course/                    CourseListR       GET
!/course/new                CourseNewR        GET POST        !lecturerAny
!/course/#TermId            CourseListTermR   GET
/course/#TermId/#Text CourseR !updateFavourite:
  /show                       CourseShowR GET POST
  /edit                       CourseEditR GET POST            !lecturer

  /ex SheetR                                                  !registered:
    /                                  SheetListR       GET
    /#Text/show                        SheetShowR       GET            !time
    /#Text/#SheetFileType/#FilePath    SheetFileR       GET            !time
    /new                               SheetNewR        GET POST       !lecturer
    /#Text/edit                        SheetEditR       GET POST       !lecturer
    /#Text/delete                      SheetDelR        GET POST       !lecturer
    /#Text/correctors                  SheetCorrectorsR GET POST       !lecturer
    !/#Text/submission/#SubmissionMode SubmissionR      GET POST       !time


!/#{ZIPArchiveName SubmissionId} SubmissionDownloadArchiveR GET
!/#CryptoUUIDSubmission/#FilePath SubmissionDownloadSingleR GET

!/#UUID CryptoUUIDDispatchR GET

-- TODO below
/submission                 SubmissionListR GET POST
/submission/#CryptoUUIDSubmission SubmissionDemoR GET POST
/submissions.zip SubmissionDownloadMultiArchiveR POST

-- For demonstration
/course/#CryptoUUIDCourse/edit CourseEditIDR GET
