diff --git a/app/controllers/ApplicationController.scala b/app/controllers/ApplicationController.scala index 90aef77d..3485dddc 100644 --- a/app/controllers/ApplicationController.scala +++ b/app/controllers/ApplicationController.scala @@ -1243,10 +1243,18 @@ case class ApplicationController @Inject() ( def show(id: UUID): Action[AnyContent] = loginAction.async { implicit request => withApplication(id) { application => + val openedTab = request.flash + .get("opened-tab") + .orElse( + request + .getQueryString("onglet") + .map(value => if (value === "invitation") "invite" else "answer") + ) + .getOrElse("answer") showApplication( application, AnswerFormData.form(request.currentUser, false), - openedTab = request.flash.get("opened-tab").getOrElse("answer"), + openedTab = openedTab, ) { html => eventService.log( EventType.ApplicationShowed, @@ -1447,7 +1455,7 @@ case class ApplicationController @Inject() ( Redirect( routes.ApplicationController.show(applicationId).withFragment("answer-error") ) - .flashing("answer-error" -> message, "opened-tab" -> "anwser") + .flashing("answer-error" -> message, "opened-tab" -> "answer") ) } { files => val form = diff --git a/app/views/application.scala b/app/views/application.scala index 3091bf8f..ea453aa6 100644 --- a/app/views/application.scala +++ b/app/views/application.scala @@ -551,7 +551,12 @@ object application { div( "Territoire concerné : ", views.helpers - .changeAreaSelect(selectedArea, Area.all, ApplicationController.show(application.id)) + .changeAreaSelect( + selectedArea, + Area.all, + ApplicationController.show(application.id), + "onglet" -> "invitation" + ) ), views.helpers.forms.CSRFInput, groupsWithUsersThatCanBeInvited.nonEmpty.some diff --git a/app/views/helpers/changeAreaSelect.scala b/app/views/helpers/changeAreaSelect.scala index 5b90d51a..f360e01b 100644 --- a/app/views/helpers/changeAreaSelect.scala +++ b/app/views/helpers/changeAreaSelect.scala @@ -8,12 +8,22 @@ import serializers.Keys object changeAreaSelect { - def apply(currentArea: Area, selectableAreas: List[Area], redirectUrlPath: Call): Tag = + def apply( + currentArea: Area, + selectableAreas: List[Area], + redirectUrlPath: Call, + query: (String, String)* + ): Tag = { + val queryString = { + val qs = query.map { case (key, value) => s"$key=$value" }.mkString("&") + if (qs.isEmpty) "" else (qs + "&") + } + val redirectUrlPrefix = s"$redirectUrlPath?$queryString${Keys.QueryParam.areaId}="; select( id := "changeAreaSelect", name := "area", data("current-area") := currentArea.id.toString, - data("redirect-url-prefix") := s"$redirectUrlPath?${Keys.QueryParam.areaId}=", + data("redirect-url-prefix") := redirectUrlPrefix, selectableAreas.map(area => scalatags.Text.tags.option( value := area.id.toString, @@ -22,5 +32,6 @@ object changeAreaSelect { ) ) ) + } }