~jan0sch/smederee
Showing details for patch 3f39da9ab55bec418ff1d7a8c4450f1aa75619e7.
diff -rN -u old-smederee/modules/hub/src/main/scala/de/smederee/hub/VcsRepositoryRoutes.scala new-smederee/modules/hub/src/main/scala/de/smederee/hub/VcsRepositoryRoutes.scala --- old-smederee/modules/hub/src/main/scala/de/smederee/hub/VcsRepositoryRoutes.scala 2025-02-03 01:56:55.511022331 +0000 +++ new-smederee/modules/hub/src/main/scala/de/smederee/hub/VcsRepositoryRoutes.scala 2025-02-03 01:56:55.511022331 +0000 @@ -32,6 +32,8 @@ final class VcsRepositoryRoutes[F[_]: Async](config: DarcsConfiguration, darcs: DarcsCommands[F]) extends Http4sDsl[F] { + private val createRepoPath = uri"/repo/create" + private val parseCreateRepositoryForm: AuthedRoutes[Account, F] = AuthedRoutes.of { case ar @ POST -> Root / "repo" / "create" as user => for { @@ -43,9 +45,9 @@ private val showCreateRepositoryForm: AuthedRoutes[Account, F] = AuthedRoutes.of { case ar @ GET -> Root / "repo" / "create" as user => for { - csrf <- Sync[F].delay(ar.req.getCsrfToken) - output <- darcs.initialize(config.repositoriesDirectory.toPath)("TEST-REPO")(Chain.empty) - resp <- Ok(output.toString) + csrf <- Sync[F].delay(ar.req.getCsrfToken) + // output <- darcs.initialize(config.repositoriesDirectory.toPath)("TEST-REPO")(Chain.empty) + resp <- Ok(views.html.createRepository()(createRepoPath, csrf, "Create a new repository".some)()) } yield resp } diff -rN -u old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/createRepository.scala.html new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/createRepository.scala.html --- old-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/createRepository.scala.html 1970-01-01 00:00:00.000000000 +0000 +++ new-smederee/modules/hub/src/main/twirl/de/smederee/hub/views/createRepository.scala.html 2025-02-03 01:56:55.511022331 +0000 @@ -0,0 +1,40 @@ +@import NewVcsRepositoryForm._ + +@(lang: LanguageCode = LanguageCode("en"), pathPrefix: Option[Uri] = None)(action: Uri, csrf: Option[CsrfToken] = None, title: Option[String] = None)(formData: Map[String, String] = Map.empty, formErrors: FormErrors = FormErrors.empty) +@main(lang, pathPrefix)()(csrf, title) { +@defining(lang.toLocale) { implicit locale => + <div class="content"> + <div class="pure-g"> + <div class="pure-u-1-1 pure-u-md-1-1 signup"> + <div class="form-errors"> + @formErrors.get(fieldGlobal).map { es => + @for(error <- es) { + <p class="alert alert-danger"> + <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> + <span class="sr-only">Fehler:</span> + @error + </p> + } + } + </div> + <div class="signup-form"> + <form action="@createFullPath(pathPrefix)(action)" method="POST" accept-charset="UTF-8" class="pure-form pure-form-aligned" autocomplete="on"> + <fieldset id="repository-data"> + <div class="pure-control-group"> + <label for="@{fieldName}">Name</label> + <input class="pure-input-1-2" id="@{fieldName}" name="@{fieldName}" placeholder="Please enter a repository name." maxlength="64" required="" type="text" value="@{formData.get(fieldName)}" autocomplete="username"> + <small class="pure-form-message" id="@{fieldName}.help">A repository name must start with a letter or number and must contain only lowercase alphanumeric ASCII characters as well as minus or underscore signs. It must be between 2 and 64 characters long.</small> + @renderFormErrors(fieldName, formErrors) + </div> + @csrfToken(csrf) + <div class="pure-controls"> + <button type="submit" class="pure-button">@Messages("form.signup.button.submit")</button> + </div> + </fieldset> + </form> + </div> + </div> + </div> + </div> +} +}