/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/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
