Skip to content

Commit

Permalink
Provide default GSP layout for Turbo Frame
Browse files Browse the repository at this point in the history
  • Loading branch information
rainboyan committed May 15, 2024
1 parent 27dc3fb commit 158c47d
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 8 deletions.
8 changes: 8 additions & 0 deletions plugins/turbo/app/views/layouts/turbo/frame.gsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<html>
<head>
<g:layoutHead/>
</head>
<body>
<g:layoutBody/>
</body>
</html>
6 changes: 5 additions & 1 deletion plugins/turbo/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ ext."signing.secretKeyRingFile" = project.hasProperty("signing.secretKeyRingFile
ext.isReleaseVersion = !projectVersion.endsWith("SNAPSHOT")

ext {
grailsVersion = '5.1.0'
springBootVersion = '2.6.6'
servletVersion = '4.0.1'
}
Expand All @@ -22,6 +23,7 @@ apply plugin: "idea"
apply plugin: "groovy"
apply plugin: "org.graceframework.asset-pipeline"
apply plugin: "org.graceframework.grace-plugin"
apply plugin: "org.graceframework.grace-gsp"
apply plugin: "maven-publish"
apply plugin: "signing"

Expand All @@ -33,7 +35,9 @@ dependencies {
compileOnly "org.springframework.boot:spring-boot-autoconfigure:$springBootVersion"
compileOnly "javax.servlet:javax.servlet-api:$servletVersion"
compileOnly "org.graceframework:grace-core:$graceVersion"
compileOnly "org.graceframework:grace-web-common:$graceVersion"
compileOnly "org.grails:grails-web-common:$grailsVersion"
compileOnly "org.grails:grails-web-gsp:$grailsVersion"
compileOnly "org.grails:grails-web-sitemesh:$grailsVersion"
}

tasks.withType(Sign) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@

import org.springframework.web.filter.OncePerRequestFilter;

import grails.web.http.HttpHeaders;
import grails.web.mime.MimeType;
import org.grails.web.sitemesh.GrailsLayoutDecoratorMapper;
import org.grails.web.util.GrailsApplicationAttributes;

/**
Expand All @@ -36,21 +35,29 @@
*/
public class TurboRequestFilter extends OncePerRequestFilter {

private static final String TURBO_FRAME_LAYOUT = "turbo/frame";

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {

request.setAttribute(GrailsApplicationAttributes.CONTENT_FORMAT, TurboMimeType.TURBO_STREAM_FORMAT);
request.setAttribute(GrailsApplicationAttributes.RESPONSE_FORMAT, TurboMimeType.TURBO_STREAM_FORMAT);
request.setAttribute(GrailsApplicationAttributes.RESPONSE_MIME_TYPE, TurboMimeType.TURBO_STREAM);
response.setContentType(TurboMimeType.TURBO_STREAM.getName());
if (HttpServletRequestExtension.isTurboStream(request)) {
request.setAttribute(GrailsApplicationAttributes.CONTENT_FORMAT, TurboMimeType.TURBO_STREAM_FORMAT);
request.setAttribute(GrailsApplicationAttributes.RESPONSE_FORMAT, TurboMimeType.TURBO_STREAM_FORMAT);
request.setAttribute(GrailsApplicationAttributes.RESPONSE_MIME_TYPE, TurboMimeType.TURBO_STREAM);
response.setContentType(TurboMimeType.TURBO_STREAM.getName());
}

if (HttpServletRequestExtension.isTurboFrame(request)) {
request.setAttribute(GrailsLayoutDecoratorMapper.LAYOUT_ATTRIBUTE, TURBO_FRAME_LAYOUT);
}

filterChain.doFilter(request, response);
}

@Override
protected boolean shouldNotFilter(HttpServletRequest request) {
return !HttpServletRequestExtension.isTurboStream(request);
return !HttpServletRequestExtension.isTurboRequest(request);
}

}

0 comments on commit 158c47d

Please sign in to comment.