Skip to content

Commit 331ea10

Browse files
authored
Merge pull request #15317 from apache/app-welcome-page
Improve new app welcome page
2 parents dc50fe6 + 447e348 commit 331ea10

File tree

34 files changed

+1277
-373
lines changed

34 files changed

+1277
-373
lines changed

grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/assetPipeline/AssetPipeline.java

Lines changed: 44 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.grails.forge.template.URLTemplate;
3333

3434
import java.util.Set;
35+
import java.util.List;
3536

3637
@Singleton
3738
public class AssetPipeline implements DefaultFeature {
@@ -91,21 +92,49 @@ public void apply(GeneratorContext generatorContext) {
9192
.artifactId("jquery")
9293
.testAndDevelopmentOnly());
9394

94-
final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
95-
generatorContext.addTemplate("advancedgrails_svg", new URLTemplate("grails-app/assets/images/advancedgrails.svg", classLoader.getResource("assets/images/advancedgrails.svg")));
96-
generatorContext.addTemplate("apple-touch-icon_png", new URLTemplate("grails-app/assets/images/apple-touch-icon.png", classLoader.getResource("assets/images/apple-touch-icon.png")));
97-
generatorContext.addTemplate("apple-touch-icon-retina_png", new URLTemplate("grails-app/assets/images/apple-touch-icon-retina.png", classLoader.getResource("assets/images/apple-touch-icon-retina.png")));
98-
generatorContext.addTemplate("documentation_svg", new URLTemplate("grails-app/assets/images/documentation.svg", classLoader.getResource("assets/images/documentation.svg")));
99-
generatorContext.addTemplate("favicon_ico", new URLTemplate("grails-app/assets/images/favicon.ico", classLoader.getResource("assets/images/favicon.ico")));
100-
generatorContext.addTemplate("grails_svg", new URLTemplate("grails-app/assets/images/grails.svg", classLoader.getResource("assets/images/grails.svg")));
101-
generatorContext.addTemplate("grails-cupsonly-logo-white_svg", new URLTemplate("grails-app/assets/images/grails-cupsonly-logo-white.svg", classLoader.getResource("assets/images/grails-cupsonly-logo-white.svg")));
102-
generatorContext.addTemplate("slack_svg", new URLTemplate("grails-app/assets/images/slack.svg", classLoader.getResource("assets/images/slack.svg")));
103-
104-
generatorContext.addTemplate("application_js", new URLTemplate("grails-app/assets/javascripts/application.js", classLoader.getResource("assets/javascripts/application.js")));
105-
106-
generatorContext.addTemplate("application_css", new URLTemplate("grails-app/assets/stylesheets/application.css", classLoader.getResource("assets/stylesheets/application.css")));
107-
generatorContext.addTemplate("errors_css", new URLTemplate("grails-app/assets/stylesheets/errors.css", classLoader.getResource("assets/stylesheets/errors.css")));
108-
generatorContext.addTemplate("grails_css", new URLTemplate("grails-app/assets/stylesheets/grails.css", classLoader.getResource("assets/stylesheets/grails.css")));
95+
var assetPaths = List.of(
96+
// Keep categories separate for readability.
97+
"grails-app/assets/images/advancedgrails.svg",
98+
"grails-app/assets/images/community.svg",
99+
"grails-app/assets/images/documentation.svg",
100+
"grails-app/assets/images/favicon.ico",
101+
"grails-app/assets/images/grails.svg",
102+
"grails-app/assets/images/groovy.svg",
103+
"grails-app/assets/images/java.svg",
104+
"grails-app/assets/images/spring.svg",
105+
"grails-app/assets/images/spring-boot.svg",
106+
107+
"grails-app/assets/javascripts/application.js",
108+
"grails-app/assets/javascripts/welcome.js",
109+
110+
"grails-app/assets/stylesheets/application.css",
111+
"grails-app/assets/stylesheets/errors.css",
112+
"grails-app/assets/stylesheets/grails.css",
113+
"grails-app/assets/stylesheets/welcome.css"
114+
);
115+
116+
var classLoader = Thread.currentThread().getContextClassLoader();
117+
for (var assetTemplate : assetPaths) {
118+
addAssetTemplate(generatorContext, classLoader, assetTemplate);
119+
}
120+
}
121+
122+
private static void addAssetTemplate(GeneratorContext generatorContext, ClassLoader classLoader, String assetPath) {
123+
124+
// The template key is the filename with extension dot replaced by underscore,
125+
// e.g. application.css -> application_css
126+
var fileName = assetPath.substring(assetPath.lastIndexOf('/') + 1);
127+
var templateKey = fileName.replaceFirst("\\.", "_");
128+
129+
// Resource paths are relative to the classpath root (no leading slash)
130+
var resourcePath = assetPath.replaceFirst("^grails-app/", "");
131+
generatorContext.addTemplate(
132+
templateKey,
133+
new URLTemplate(
134+
assetPath,
135+
classLoader.getResource(resourcePath)
136+
)
137+
);
109138
}
110139

111140
@Override

grails-forge/grails-forge-core/src/main/resources/assets/images/advancedgrails.svg

Lines changed: 3 additions & 3 deletions
Loading
Binary file not shown.
Binary file not shown.
Lines changed: 9 additions & 0 deletions
Loading

grails-forge/grails-forge-core/src/main/resources/assets/images/documentation.svg

Lines changed: 2 additions & 2 deletions
Loading
Binary file not shown.

grails-forge/grails-forge-core/src/main/resources/assets/images/grails-cupsonly-logo-white.svg

Lines changed: 0 additions & 26 deletions
This file was deleted.

grails-forge/grails-forge-core/src/main/resources/assets/images/groovy.svg

Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading

0 commit comments

Comments
 (0)