11package run .halo .search .widget ;
22
3+ import lombok .RequiredArgsConstructor ;
4+ import org .pf4j .PluginWrapper ;
35import org .springframework .stereotype .Component ;
6+ import org .springframework .util .PropertyPlaceholderHelper ;
47import org .thymeleaf .context .ITemplateContext ;
58import org .thymeleaf .model .IModel ;
69import org .thymeleaf .model .IModelFactory ;
710import org .thymeleaf .processor .element .IElementModelStructureHandler ;
811import reactor .core .publisher .Mono ;
912import run .halo .app .theme .dialect .TemplateHeadProcessor ;
1013
14+ import java .util .Properties ;
15+
1116@ Component
17+ @ RequiredArgsConstructor
1218public class SearchWidgetHeadProcessor implements TemplateHeadProcessor {
1319
14- public SearchWidgetHeadProcessor () {
15- }
20+ static final PropertyPlaceholderHelper PROPERTY_PLACEHOLDER_HELPER = new PropertyPlaceholderHelper ("${" , "}" );
21+
22+ private final PluginWrapper pluginWrapper ;
1623
1724 @ Override
1825 public Mono <Void > process (ITemplateContext context , IModel model ,
@@ -23,11 +30,15 @@ public Mono<Void> process(ITemplateContext context, IModel model,
2330 }
2431
2532 private String searchWidgetScript () {
26- return """
33+
34+ final Properties properties = new Properties ();
35+ properties .setProperty ("version" , pluginWrapper .getDescriptor ().getVersion ());
36+
37+ return PROPERTY_PLACEHOLDER_HELPER .replacePlaceholders ("""
2738 <!-- PluginSearchWidget start -->
28- <script src="/plugins/PluginSearchWidget/assets/static/search-widget.iife.js" async></script>
29- <link rel="stylesheet" href="/plugins/PluginSearchWidget/assets/static/style.css" />
39+ <script src="/plugins/PluginSearchWidget/assets/static/search-widget.iife.js?version=${version} " async></script>
40+ <link rel="stylesheet" href="/plugins/PluginSearchWidget/assets/static/style.css?version=${version} " />
3041 <!-- PluginSearchWidget end -->
31- """ ;
42+ """ , properties ) ;
3243 }
3344}
0 commit comments