Skip to content

Commit c8b9e8b

Browse files
LUT-31992 V8 : Add a new freemarker processor to determine if a plugin is enabled within templates
1 parent 74adff0 commit c8b9e8b

File tree

4 files changed

+63
-22
lines changed

4 files changed

+63
-22
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package fr.paris.lutece.portal.service.plugin;
2+
3+
import freemarker.template.TemplateBooleanModel;
4+
import freemarker.template.TemplateMethodModelEx;
5+
import freemarker.template.TemplateModelException;
6+
import freemarker.template.TemplateScalarModel;
7+
8+
import java.util.List;
9+
10+
public class PluginActiveTemplateMethod implements TemplateMethodModelEx
11+
{
12+
@Override
13+
public Object exec( @SuppressWarnings( "rawtypes" ) List arguments ) throws TemplateModelException
14+
{
15+
int argsSize = arguments.size( );
16+
17+
if ( argsSize != 1 )
18+
{
19+
throw new TemplateModelException( "Must be called with exactly one argument (the plugin name)" );
20+
}
21+
22+
String pluginName = ( (TemplateScalarModel) arguments.get( 0 ) ).getAsString( );
23+
24+
boolean isPluginActive = PluginService.isPluginEnable( pluginName );
25+
26+
if ( isPluginActive )
27+
{
28+
return TemplateBooleanModel.TRUE;
29+
}
30+
else
31+
{
32+
return TemplateBooleanModel.FALSE;
33+
}
34+
}
35+
}

src/java/fr/paris/lutece/portal/service/template/AppTemplateService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import fr.paris.lutece.portal.service.i18n.I18nService;
3838
import fr.paris.lutece.portal.service.i18n.I18nTemplateMethod;
3939
import fr.paris.lutece.portal.service.plugin.Plugin;
40+
import fr.paris.lutece.portal.service.plugin.PluginActiveTemplateMethod;
4041
import fr.paris.lutece.portal.service.plugin.PluginService;
4142
import fr.paris.lutece.portal.service.security.SecurityTokenHandler;
4243
import fr.paris.lutece.portal.service.util.AppLogService;
@@ -75,6 +76,7 @@ public static void init( String strTemplatePath, final ServletContext context )
7576
_context= context;
7677
_strTemplateDefaultPath = strTemplatePath;
7778
getFreeMarkerTemplateService( ).setSharedVariable( "i18n", new I18nTemplateMethod( ) );
79+
FreeMarkerTemplateService.getInstance( ).setSharedVariable( "isPluginEnable", new PluginActiveTemplateMethod( ) );
7880
}
7981

8082
/**

webapp/WEB-INF/templates/admin/util/editor/editor_tinymce5.html

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,18 @@
3737

3838
// Set buttons
3939
if( luteceInsertServices.length > 0 ){
40-
if( luteceInsertServices.includes('library') && autorizedInsertService.includes('library') ){
41-
if( luteceInsertServices.includes('image') ){
42-
luteceToolbar = ' luteceImage';
43-
insertServiceConfigImage = {lutece_insert_service_media_type_image : '#dskey{library.insert_service_media_type_image}', lutece_insert_service_media_type_image_space : '#dskey{library.insert_service_media_type_image_space}'};
44-
}
45-
if( luteceInsertServices.includes('pdf') ){
46-
luteceToolbar += ' lutecePdf';
47-
insertServiceConfigPdf = { lutece_insert_service_media_type_pdf : '#dskey{library.insert_service_media_type_pdf}', lutece_insert_service_media_type_pdf_space : '#dskey{library.insert_service_media_type_pdf_space}' };
48-
}
49-
}
40+
<#if isPluginEnable( "library" )>
41+
if( luteceInsertServices.includes('library') && autorizedInsertService.includes('library') ){
42+
if( luteceInsertServices.includes('image') ){
43+
luteceToolbar = ' luteceImage';
44+
insertServiceConfigImage = {lutece_insert_service_media_type_image : '#dskey{library.insert_service_media_type_image}', lutece_insert_service_media_type_image_space : '#dskey{library.insert_service_media_type_image_space}'};
45+
}
46+
if( luteceInsertServices.includes('pdf') ){
47+
luteceToolbar += ' lutecePdf';
48+
insertServiceConfigPdf = { lutece_insert_service_media_type_pdf : '#dskey{library.insert_service_media_type_pdf}', lutece_insert_service_media_type_pdf_space : '#dskey{library.insert_service_media_type_pdf_space}' };
49+
}
50+
}
51+
</#if>
5052

5153
if( luteceInsertServices.includes('pagelinkservice') && autorizedInsertService.includes('pagelinkservice') ){
5254
luteceToolbar += ' lutecePageLink';
@@ -136,4 +138,4 @@
136138
});
137139
})
138140
</script>
139-
</#macro>
141+
</#macro>

webapp/WEB-INF/templates/admin/util/editor/editor_tinymce6.html

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,18 @@
3737

3838
// Set buttons
3939
if( luteceInsertServices.length > 0 ){
40-
if( luteceInsertServices.includes('library') && autorizedInsertService.includes('library') ){
41-
if( luteceInsertServices.includes('image') ){
42-
luteceToolbar = ' luteceImage';
43-
insertServiceConfigImage = {lutece_insert_service_media_type_image : '#dskey{library.insert_service_media_type_image}', lutece_insert_service_media_type_image_space : '#dskey{library.insert_service_media_type_image_space}'};
44-
}
45-
if( luteceInsertServices.includes('pdf') ){
46-
luteceToolbar += ' lutecePdf';
47-
insertServiceConfigPdf = { lutece_insert_service_media_type_pdf : '#dskey{library.insert_service_media_type_pdf}', lutece_insert_service_media_type_pdf_space : '#dskey{library.insert_service_media_type_pdf_space}' };
48-
}
49-
}
40+
<#if isPluginEnable( "library" )>
41+
if( luteceInsertServices.includes('library') && autorizedInsertService.includes('library') ){
42+
if( luteceInsertServices.includes('image') ){
43+
luteceToolbar = ' luteceImage';
44+
insertServiceConfigImage = {lutece_insert_service_media_type_image : '#dskey{library.insert_service_media_type_image}', lutece_insert_service_media_type_image_space : '#dskey{library.insert_service_media_type_image_space}'};
45+
}
46+
if( luteceInsertServices.includes('pdf') ){
47+
luteceToolbar += ' lutecePdf';
48+
insertServiceConfigPdf = { lutece_insert_service_media_type_pdf : '#dskey{library.insert_service_media_type_pdf}', lutece_insert_service_media_type_pdf_space : '#dskey{library.insert_service_media_type_pdf_space}' };
49+
}
50+
}
51+
</#if>
5052

5153
if( luteceInsertServices.includes('pagelinkservice') && autorizedInsertService.includes('pagelinkservice') ){
5254
luteceToolbar += ' lutecePageLink';
@@ -133,4 +135,4 @@
133135
});
134136
})
135137
</script>
136-
</#macro>
138+
</#macro>

0 commit comments

Comments
 (0)