<#-- WARNING : be careful to white-space and lines break in FreeMarker macros. # This macro template can be used to output white-space-sensitive formats (like RSS files). # See http://dev.lutece.paris.fr/jira/browse/LUTECE-765 --> <#-- Do not remove this comment --> <#-- Information about this commons file --> <#macro commonsFile>commons.html <#macro commonsName>Commons Bootstrap 3 <#macro commonsDescription>Freemarker Commons macros powered by Bootstrap CSS Framework 3.3 <#macro coreAdminCSSLinks> <#macro coreAdminJSLinks> <#global gClassActive='active' /> <#macro comboWithParams name default_value additionalParameters items > <#macro comboSortedWithParams name default_value additionalParameters items id=name> <#macro comboWithParamsAndLength name default_value additionalParameters items max_length > <#macro combo name default_value items > <@comboWithParams name="${name}" default_value="${default_value}" additionalParameters="" items=items /> <#macro comboSorted name default_value items > <@combo name="${name}" default_value="${default_value}" items=items?sort_by("name") /> <#macro radioImageList name default_value items inline=0> <#if inline=1> <#list items as item> <#else> <#list items as item>
<#macro checkboxList name default_values items inline=0> <#if inline=1> <#list items as item> <#else> <#list items as item> <#if item.checked >
<#else>
<#macro sort jsp_url attribute id="" > <#if jsp_url?contains("?")> <#local sort_url = jsp_url + "&sorted_attribute_name=" + attribute + "&asc_sort=" /> <#else> <#local sort_url = jsp_url + "?sorted_attribute_name=" + attribute + "&asc_sort=" />
<#macro pagination paginator > <#local nbLinkPagesToDisplay = 10 /> <#local offsetPrev = nbLinkPagesToDisplay / 2 /> <#local offsetNext = nbLinkPagesToDisplay / 2 /> <#if ( paginator.pageCurrent <= nbLinkPagesToDisplay - offsetPrev )> <#local offsetPrev = paginator.pageCurrent - 1 /> <#local offsetNext = nbLinkPagesToDisplay - offsetPrev /> <#elseif ( paginator.pageCurrent + offsetNext > paginator.pagesCount )> <#local offsetNext = paginator.pagesCount - paginator.pageCurrent /> <#local offsetPrev = nbLinkPagesToDisplay - offsetNext /> <#if ( paginator.pagesCount > 1 )> <#if ( paginator.pageCurrent - offsetPrev > 1 )>  #i18n{portal.util.labelFirst} <#if ( paginator.pageCurrent > 1 )>  #i18n{portal.util.labelPrevious} <#else>    <#if ( paginator.pageCurrent - offsetPrev > 1 )> ... <#list paginator.pagesLinks as link> <#if link.index == paginator.pageCurrent> ${link.name} <#else> ${link.name} <#if ( paginator.pageCurrent + offsetNext < paginator.pagesCount )> ... <#if ( paginator.pageCurrent < paginator.pagesCount )>  #i18n{portal.util.labelNext} <#if ( paginator.pageCurrent + offsetNext < paginator.pagesCount )>  #i18n{portal.util.labelLast} <#else>    <#macro paginationAdmin paginator combo=0 form=1 nb_items_per_page=nb_items_per_page showcount=1 showall=0> <#if (paginator.pagesCount > 1) > <@paginationPageLinks paginator=paginator /> <@div align='right'> <#if form == 1 >
<@paginationItemCount paginator=paginator combo=combo nb_items_per_page=nb_items_per_page showcount=showcount showall=showall/> <#if form == 1 >
<#macro paginationPageLinks paginator > <#local nbLinkPagesToDisplay = 10 /> <#local offsetPrev = nbLinkPagesToDisplay / 2 /> <#local offsetNext = nbLinkPagesToDisplay / 2 /> <#if ( paginator.pageCurrent <= nbLinkPagesToDisplay - offsetPrev )> <#local offsetPrev = paginator.pageCurrent - 1 /> <#local offsetNext = nbLinkPagesToDisplay - offsetPrev /> <#elseif ( paginator.pageCurrent + offsetNext > paginator.pagesCount )> <#local offsetNext = paginator.pagesCount - paginator.pageCurrent /> <#local offsetPrev = nbLinkPagesToDisplay - offsetNext /> <#macro paginationCombo paginator nb_items_per_page=nb_items_per_page showall=0>
<#macro paginationItemCount paginator combo=0 nb_items_per_page=nb_items_per_page showcount=1 showall=0> <#-- Display combo --> <#if combo == 1 > <@paginationCombo paginator=paginator nb_items_per_page=nb_items_per_page showall=showall /> <#-- Display item count --> <#if showcount == 1 > <#if (paginator.labelItemCount)?? && paginator.labelItemCount?has_content> - ${paginator.labelItemCount} : ${paginator.itemsCount} <#-- NAVIGATION --> <#macro item_navigation item_navigator id='item-navigator' align='' hideButtonTitle=[] buttonColor='info' buttonSize='sm'> <#local class = alignmentSettings(align,'') /> <#-- MACRO DEPRECATED This is now empty because it should not be used anymore and is kept only for backwards compatibility --> <#macro dataTable dataTableManager actionMacro="" tableClass="table table-striped table-condensed" caption=" " summary="data table" > <#if 0 < dataTableManager.items?size > <#if dataTableManager.enablePaginator>
<#if (dataTableManager.paginator.pagesCount > 1) > <@paginationPageLinks paginator=dataTableManager.paginator />
<@paginationItemCount paginator=dataTableManager.paginator combo=1 nb_items_per_page=dataTableManager.paginator.itemsPerPage?string />
<#list dataTableManager.listColumn as column> <#list dataTableManager.items as item> <#list dataTableManager.listColumn as column> <#if column.typeColumn = "STRING"> <#local propName = "item." + column.parameterName> <#local value = propName?eval> <#elseif column.typeColumn = "LABEL"> <#local propName = "item." + column.parameterName> <#local value = propName?eval> <#elseif column.typeColumn = "BOOLEAN"> <#local propName = "item." + column.parameterName> <#local value = propName?eval> <#if value?? && value> <#else> <#elseif column.typeColumn = "EMAIL"> <#local propName = "item." + column.parameterName> <#local value = propName?eval> <#elseif column.typeColumn = "ACTION"> <#if column.parameterName?? && column.parameterName != ""> <#local macroName = column.parameterName> <#elseif actionMacro?? && actionMacro != ""> <#local macroName = actionMacro> <#if macroName?? && macroName != "">
${caption}
#i18n{${column.titleKey}} <#if !(column.typeColumn = "ACTION") && column.sortable> <@sort jsp_url=dataTableManager.sortUrl attribute=column.parameterName />
${value!}#i18n{${value!}}#i18n{${column.labelTrue!}}#i18n{${column.labelFalse!}} <#if value?? && value != "">${value}<@.vars[macroName] item=item />
<#if dataTableManager.enablePaginator>
<#if (dataTableManager.paginator.pagesCount > 1) > <@paginationPageLinks paginator=dataTableManager.paginator />
<@paginationItemCount paginator=dataTableManager.paginator combo=0 nb_items_per_page=dataTableManager.paginator.itemsPerPage?string />
<#else> #i18n{portal.util.labelNoItem} <#macro filterPanel dataTableManager formClass="form-horizontal" > <#if dataTableManager.filterPanel.listFilter?? && 0 < dataTableManager.filterPanel.listFilter?size>
<#list dataTableManager.filterPanel.listFilter as filter>
<#if filter.filterType = "STRING"> <#elseif filter.filterType = "BOOLEAN"> checked="checked" /> <#elseif filter.filterType = "DROPDOWNLIST"> <#if filter.value??> <#local filter_value = filter.value > <#else> <#local filter_value = "" > <@combo name=dataTableManager.filterPanelPrefix+filter.parameterName default_value=filter_value items=filter.refList />
<#if dataTableManager.filterPanel.formUrl?contains("?")> <#local dataTableResetUrl = dataTableManager.filterPanel.formUrl + "&" + dataTableManager.filterPanelPrefix + "resetFilters=true" /> <#else> <#local dataTableResetUrl = dataTableManager.filterPanel.formUrl + "?" + dataTableManager.filterPanelPrefix + "resetFilters=true" />
<#macro fieldInputText i18nLabelKey inputName mandatory=false value="" maxlength=0 i18nHelpBlockKey='' cssClass='form-control'>
maxlength=${maxlength} /> <#if i18nHelpBlockKey != ''>

#i18n{${i18nHelpBlockKey}}

<#macro fieldInputPassword i18nLabelKey inputName mandatory=false value="" maxlength=0 i18nHelpBlockKey='' cssClass='form-control'>
maxlength=${maxlength}> <#if i18nHelpBlockKey != ''>

#i18n{${i18nHelpBlockKey}}

<#macro fieldInputWrapper i18nLabelKey inputName mandatory=false value="" maxlength=0 i18nHelpBlockKey='' cssClass='form-control'>
<#nested> <#if i18nHelpBlockKey != ''>

#i18n{${i18nHelpBlockKey}}

<#macro fieldStaticText i18nLabelKey cssClass='form-control' >

<#nested>

<#macro fieldInputCalendar i18nLabelKey inputName mandatory=false value="" i18nHelpBlockKey='' cssClass='form-control' language='fr'>
 
<#if i18nHelpBlockKey != ''>

#i18n{${i18nHelpBlockKey}}

<@getDatePickerBootstrap idField=inputName language=language /> <#macro fieldInputCheckBox i18nLabelKey inputName value="" disabled=false checked=false i18nHelpBlockKey='' cssClass='' >
<#if i18nHelpBlockKey != ''>

#i18n{${i18nHelpBlockKey}}

<#macro fieldInputRadioBox i18nLabelKey inputName value="" disabled=false checked=false i18nHelpBlockKey='' cssClass='' >
<#if i18nHelpBlockKey != ''>

#i18n{${i18nHelpBlockKey}}

<#macro fieldInputCheckBoxInline inputName value="" disabled=false checked=false > <#macro fieldInputRadioBoxInline inputName value="" disabled=false checked=false > <#macro fieldInputCombo i18nLabelKey inputName items value="" mandatory=false i18nHelpBlockKey='' cssClass='form-control' >
<#local params = "class='" + cssClass + "'" > <@comboWithParams name=inputName items=items default_value=value additionalParameters=params /> <#if i18nHelpBlockKey != ''>

#i18n{${i18nHelpBlockKey}}

<#macro fieldTextArea i18nLabelKey inputName mandatory=false value="" maxlength=0 i18nHelpBlockKey='' cssClass='form-control'>
<#if i18nHelpBlockKey != ''>

#i18n{${i18nHelpBlockKey}}

<#macro actionButtons button1Name='' button2Name='' i18nValue1Key='portal.admin.message.buttonValidate' i18nValue2Key='portal.admin.message.buttonCancel' url1='' url2='' icon1='save' icon2='times' offset=3> <@formGroup> <#if url1 != ''> <@aButton href='${url1}' buttonIcon=icon1 title='#i18n{${i18nValue1Key}}' /> <#else> <@button type='submit' name='${button1Name}' buttonIcon=icon1 title='#i18n{${i18nValue1Key}}' /> <#if url2 != ''> <@aButton href='${url2}' buttonIcon=icon2 title='#i18n{${i18nValue2Key}}' /> <#else> <#if button2Name != ''> <@button type='submit' name='${button2Name}' buttonIcon=icon2 title='#i18n{${i18nValue2Key}}' color='default' /> <#macro boxSized col i18nTitleKey boxClass='box-primary' >
<@boxHeader title=i18nTitleKey />
<#nested>
<#macro rowBox boxClass='box-primary' col=12>
<#nested>
<#macro rowBoxHeader i18nTitleKey boxClass='box-primary' col=12> <@rowBox boxClass=boxClass col=col > <@boxHeader i18nTitleKey=i18nTitleKey />
<#nested>
<#macro headerButtons> <#nested> <#macro messages errors=[] infos=[] warnings=[] errors_class="alert alert-danger" infos_class="alert alert-info" warnings_class="alert alert-warning"> <#if errors??> <#if errors?size > 0 >
<#list errors as error > ${error.message}
<#if infos??> <#if infos?size > 0 >
<#list infos as info > ${info.message}
<#if warnings??> <#if warnings?size > 0 >
x <#list warnings as warning > ${warning.message}
<#---------------------------NEW MACROS------------------------------> <#-- TABLE --> <#-- class: --> <#macro table id='' class='' responsive=true condensed=true hover=true striped=false bordered=false narrow=false collapsed=false params=''> <#local class = class /> <#if condensed> <#local class += ' table-condensed' /> <#if hover> <#local class += ' table-hover' /> <#if striped> <#local class += ' table-striped' /> <#if bordered> <#local class += ' table-bordered' /> <#if collapsed> <#local class += ' collapse' /> <#if responsive>
${params}> <#nested>
<#if responsive>
<#macro tableHeadBodySeparator> <#-- MACRO TR --> <#macro tr id='' class='' hide=[] params=''> <#local class += ' ' + displaySettings(hide,'') + ' ' + alignmentSettings(align) /> id="${id}"<#if class!=''> class="${class?trim}"<#if params!=''> ${params}> <#nested> <#-- MACRO TH --> <#-- valign: baseline|top|middle|bottom|bottom|text-top --> <#macro th id='' title='' scope='' class='' align='' valign='' hide=[] showXs=true showSm=true showMd=true showLg=true showXl=true cols=0 xs=0 sm=0 md=0 lg=0 xl=0 colspan=0 rowspan=0 flex=false params=''> <#local class += ' ' + displaySettings(hide,'') + ' ' + alignmentSettings(align,'text') /> <#local breakpoints = {'xs':xs, 'sm':sm, 'md':md, 'lg':lg, 'xl':xl}> <#list breakpoints as breakpointkey,breakpointvalue> <#if breakpointvalue!=0> <#local class += ' col-${breakpointkey}-${breakpointvalue}' /> style="vertical-align:${valign};"<#if flex> style="display:flex;"<#if id!=''> id="${id}"<#if title!=''> title="${title}"<#if scope!=''> scope="${scope}"<#if colspan gt 0> colspan="${colspan}"<#if rowspan gt 0> rowspan="${rowspan}"<#if params!=''> ${params}> <#nested> <#-- MACRO TD --> <#-- valign: baseline|top|middle|bottom|bottom|text-top --> <#macro td id='' class='' hide=[] align='' valign='' showXs=true showSm=true showMd=true showLg=true xs=0 sm=0 md=0 lg=0 xl=0 colspan=0 rowspan=0 flex=false params=''> <#local class += ' ' + displaySettings(hide,'') + ' ' + alignmentSettings(align,'text') /> <#local breakpoints = {'xs':xs, 'sm':sm, 'md':md, 'lg':lg, 'xl':xl}> <#local class += ' ' + responsiveDisplay('col',{'xs':xs, 'sm':sm, 'md':md, 'lg':lg, 'xl':xl}) /> style="vertical-align:${valign};"<#if flex> style="display:flex;"<#if id!=''> id="${id}"<#if colspan gt 0> colspan="${colspan}"<#if rowspan gt 0> rowspan="${rowspan}"<#if params!=''> ${params}> <#nested> <#--- MACRO SELECT (TO REPLACE "COMBO" MACROS) ---> <#macro select name items='' default_value='' id=name class='' size='' sort=false multiple=0 params='' title='' disabled=false tabIndex=0> <#-- ICONS --> <#-- Icons from FontAwesome 5.8.1 --> <#macro icon prefix='fa-' style='' class='' title='' id='' params=''> <#if style='docker' || style = 'github' || style='gitlab' || style='java' || style='jira' || style='jenkins' || style = 'twitter' > <#local prefix = 'fab ' + prefix /> <#else> <#local prefix = 'fa ' + prefix /> <#switch style> <#case 'arrows'> <#local iconStyle = 'arrows-alt' /> <#break> <#case 'arrows-h'> <#local iconStyle = 'arrows-alt-h' /> <#break> <#case 'arrows-v'> <#local iconStyle = 'arrows-alt-v' /> <#break> <#case 'clock-o'> <#local iconStyle = 'clock' /> <#break> <#case 'close'> <#local iconStyle = 'times' /> <#break> <#case 'external-link'> <#local iconStyle = 'external-link-alt' /> <#break> <#case 'file-pdf-o'> <#local iconStyle = 'file-pdf' /> <#break> <#case 'pencil'> <#local iconStyle = 'edit' /> <#break> <#case 'refresh'> <#local iconStyle = 'sync' /> <#break> <#default> <#local iconStyle = style /> <#-- ICONSTACK --> <#-- iconStack --> <#-- class: par défaut 2x peut être tout autre taille voir doc FontAwesome --> <#-- nested: 2 macro @icon une class fa-stack-2x , autre avec class fa-stack-1x dans l'ordre --> <#macro iconStack class='fa-2x' id='' params=''> ${id}<#if params!=''> ${params}> <#nested> <#-- FORM --> <#-- type: inline/horizontal/form --> <#macro tform type='horizontal' class='' align='' hide=[] action='' method='post' name='' id='' role='form' collapsed=false params=''> <#local class = class /> <#if align!=''><#local class += ' ' + alignmentSettings(align,'') /> <#if hide??><#local class += ' ' + displaySettings(hide,'block') /> <#if collapsed><#local class += ' collapse' /> <#switch type> <#case 'horizontal'> <#local class += ' form-horizontal'> <#break> <#case 'inline'> <#local class += ' form-inline'> <#break> <#default> <#local class += ' form'>
id="${id}"<#if action!=''> action="${action}"<#if method!=''> method="${method}"<#if name!=''> name="${name}"<#if role!=''> role="${role}"<#if params!=''> ${params}> <#nested>
<#-- FORM ELEMENT STRUCTURE --> <#-- formStyle values: empty/inline/horizontal/navbar-form/navbar-left... Default is horizontal --> <#-- groupStyle: success/warning/error... --> <#-- showLabel is deprecated in Lutece v7 --> <#macro formGroup class='' formStyle='horizontal' groupStyle='' rows=1 labelKey='' labelFor='' labelId='' labelClass='' helpKey='' id='' mandatory=false hideLabel=[] showLabel=true collapsed=false params=''> <#local displayLabelClass = displaySettings(hideLabel,'') /> <#if collapsed><#local class += ' collapse' />
id="${id}"<#if params!=''> ${params}> <#if rows=1> <#if labelKey!='' && formStyle='horizontal'> <#local labelClass += ' col-xs-12 col-sm-3 control-label'> <#local divClass = 'col-xs-12 col-sm-9 col-md-6'> <#elseif formStyle = 'inline'> <#local labelClass += ''> <#else> <#local divClass='col-xs-12 col-sm-offset-3 col-sm-6'> <#else> <#local labelClass += ' col-xs-12'> <#local divClass = 'col-xs-12'> <#if labelKey!=''> <#if formStyle='horizontal'>
<#assign formGroupMandatory = mandatory> <#assign labelFor = labelFor> <#assign helpKey = helpKey> <#nested> <#if class='success'> <@icon style='check' class='form-control-feedback' /> <#elseif class='warning'> <@icon style='warning' class='form-control-feedback' /> <#elseif class='error'> <@icon style='close' class='form-control-feedback' /> <#if helpKey!='' && formStyle!='inline'>id="${labelFor}_help">${helpKey} <#if formStyle="horizontal">
<#macro formField class=''>
<#nested>
<#-- showLabel is deprecated in Lutece v7 --> <#macro formLabel class='' labelFor='' labelId='' labelKey='' hideLabel=[] mandatory=true > <#local class += ' ' + displaySettings(hideLabel,'') /> <#macro formHelp style='inline' class='' labelFor=''> id="${labelFor}_help"> <#nested> <#-- INPUT TEXT/TEXTAREA/SEARCH/PASSWORD/EMAIL/FILE --> <#-- type : text/textarea/password/email/file/number. Default is text --> <#-- size: input-xs/input-sm/input-lg --> <#-- pattern: [A-F][0-9]{5} --> <#-- language: for input type DATE and datepickers --> <#macro input name type='text' value='' class='' size='' inputSize=0 maxlength=0 placeHolder='' rows=4 cols=40 richtext=false tabIndex='' id='' disabled=false readonly=false pattern='' title='' min=0 max=0 language='' params=''> <#if type='textarea'> <#elseif type='text' || type='search' || type='password' || type='email' || type='file' || type='number'> tabindex="${tabIndex}"<#if placeHolder!=''> placeholder="${placeHolder}"<#if title!=''> title="${title}"<#if maxlength > 0> maxlength="${maxlength}"<#if inputSize!=0> size="${inputSize}"<#if disabled> disabled<#if readonly> readonly<#if id!=''> id="${id}"<#if params!=''> ${params}<#if pattern!=''>pattern=${pattern}<#if min!=0> min="${min}"<#if max!=0> max="${max}"<#if formGroupMandatory?? && formGroupMandatory> required <#if labelFor?? && labelFor!='' && helpkey?? && helpKey!=''> aria-describedby="${labelFor}_help" /> <#elseif type='date' || type='datetime'> <#if type='date'> <@getDatePickerBootstrap idField='${id}' language=language /> <#elseif type='datetime'> <@getDateTimePickerBootstrap idField='${id}' language=language /> <#if id=''><@alert class='danger'>La saisie d'un ID pour le champ est obligatoire tabindex="${tabIndex}"<#if placeHolder!=''> placeholder="${placeHolder}"<#if title!=''> title="${title}"<#if maxlength > 0> maxlength="${maxlength}"<#if inputSize!=0> size="${inputSize}"<#if disabled> disabled<#if readonly> readonly<#if id!=''> id="${id}"<#if params!=''> ${params}<#if pattern!=''>pattern=${pattern}<#if min!=0> min="${min}"<#if max!=0> max="${max}"<#if formGroupMandatory?? && formGroupMandatory || mandatory> required <#if labelFor?? && labelFor!='' && helpkey?? && helpKey!=''> aria-describedby="${labelFor}_help" /> <#elseif type='hidden'> <#else><@icon style='warning' />Type not supported <#-- STATIC TEXT --> <#-- Bootstrap colors: muted/primary/success/info/warning/danger --> <#-- AdminLTE colors: red/yellow/aqua/blue/black/light-blue/green/gray/navy/teal/olive/lime/orange/fuchsia/purple/maroon --> <#macro staticText inForm=true color='' id='' params=''>

id="${id}"<#if params!=''> ${params}> <#nested>

<#-- CHECKBOX --> <#-- orientation: vertical/inline. Default is vertical --> <#-- TODO --> <#macro checkBox name id labelKey='' labelFor='' orientation='vertical' value='' tabIndex='' title='' disabled=false readonly=false checked=false params='' mandatory=false> <#if labelFor = ''><#local labelFor = id /> <#if orientation='vertical'>
class="checkbox-inline"<#if labelFor!=''> for="${labelFor}"<#if title!=''> title="${title}"> value="${value}"<#if tabIndex!=''> tabindex="${tabIndex}"<#if checked> checked<#if disabled> disabled<#if readonly> readonly<#if params!=''> ${params}<#if mandatory?? && mandatory> required /> <#if labelKey!=''> ${labelKey} <#else>   <#if orientation='vertical'>
<#-- RADIO BUTTON --> <#-- orientation: vertical/inline. Default is vertical --> <#macro radioButton name id='' labelKey='' labelFor='' orientation='vertical' value='' tabIndex='' title='' disabled=false readonly=false checked=false params=''> <#if orientation='vertical'>
class="radio-inline" for="${labelFor}"> value="${value}"<#if tabIndex!=''> tabindex="${tabIndex}"<#if checked> checked<#if disabled> disabled<#if readonly> readonly<#if mandatory?? && mandatory> required<#if params!=''> ${params} /> <#if labelKey!=''> ${labelKey} <#else>   <#if orientation='vertical'>
<#-- INPUT-GROUP --> <#-- size: sm/lg/no size--> <#macro inputGroup size='' class='' id='' params=''>
id="${id}"<#if params!=''> ${params}> <#nested>
<#macro inputGroupItem pos='' type='btn' id='' params=''> <#-- type: btn/text. default is btn--> <#if type = 'text'> <#local type = 'addon' /> id="${id}"<#if params!=''> ${params}> <#nested> <#-- DROPDOWN MENU --> <#-- class: dropdown-menu-right --> <#-- Expected content :
  • Your link here
  • --> <#macro dropdownMenu class='' id='' params=''> <#-- ROW --> <#macro row class='' id='' collapsed=false align='' params=''> <#if collapsed><#local class += ' ' + 'collapse' /> <#if align!=''><#local class+= ' ' + alignmentSettings(align) />
    id="${id}"<#if params!=''> ${params}> <#nested>
    <#-- COLUMNS --> <#-- cols = col-xs- (<544px)/col-sm- (>=544px)/col-md- (>=768px)/col-lg- (>=992px)/col-xl- (>=1200px) --> <#-- Push and Pull are deprecated in Bootstrap 4 --> <#-- offsetXs, offsetSm, offsetMd, offsetLg and offsetXl are deprecated. Use offset={} instead where the values are listed as following: offset={'xs':int, 'sm':int, 'md':int, 'lg':int, 'xl':int} --> <#-- Order uses flexbox. Use Order for xs/all breakpoints this way: order=int, or for other breakpoints this way: order={'sm':int, 'md':int, 'lg':int, 'xl':int} --> <#macro columns tag='div' offset={} offsetXs=0 offsetSm=0 offsetMd=0 offsetLg=0 offsetXl=0 order={} pushXs=0 pushSm=0 pushMd=0 pushLg=0 pushXl=0 pullXs=0 pullSm=0 pullMd=0 pullLg=0 pullXl=0 xs=12 sm=0 md=0 lg=0 xl=0 id='' class='' align='' collapsed=false params=''> <#if align!=''><#local class+= ' ' + alignmentSettings(align,'text') /> <#if collapsed><#local class += ' ' + 'collapse' /> <#if align!=''><#local class+= ' ' + alignmentSettings(align,'text') /> <#local class += ' ' + responsiveDisplay('col',{'xs':xs, 'sm':sm, 'md':md, 'lg':lg, 'xl':xl}) /> <#if offset?has_content> <#local class += ' ' + responsiveDisplay('offset',offset) /> <#elseif offsetXs > 0 || offsetSm > 0 || offsetMd > 0 || offsetLg > 0 || offsetXl > 0> <#local class += ' ' + responsiveDisplay('offset',{'xs':offsetXs, 'sm':offsetSm, 'md':offsetMd, 'lg':offsetLg, 'xl':offsetXl}) /> <#if pushXs > 0 || pushSm > 0 || pushMd > 0 || pushLg > 0 || pushXl > 0> <#local breakpoints = {'xs':pushXs, 'sm':pushSm, 'md':pushMd, 'lg':pushLg, 'xl':pushXl} /> <#list breakpoints as breakpointkey,breakpointvalue> <#if breakpointvalue!=0> <#local class += ' col-${breakpointkey}-push-${breakpointvalue}' /> <#if pullXs > 0 || pullSm > 0 || pullMd > 0 || pullLg > 0 || pullXl > 0> <#local breakpoints = {'xs':pullXs, 'sm':pullSm, 'md':pullMd, 'lg':pullLg, 'xl':pullXl} /> <#list breakpoints as breakpointkey,breakpointvalue> <#if breakpointvalue!=0> <#local class += ' col-${breakpointkey}-pull-${breakpointvalue}' /> <${tag}<#if class?trim!=''> class="${class?trim}"<#if id!=''> id="${id}"<#if params!=''> ${params}> <#nested> <#-- LISTS --> <#macro ul id='' class='' align='' hide=[] collapsed=false params=''> <#if collapsed><#local class += ' ' + 'collapse' /> <#if align!=''><#local class+= ' ' + alignmentSettings(align) /> <#if hide??><#local class += ' ' + displaySettings(hide,'block') /> class="${class?trim}"<#if params!=''> ${params}<#if id!=''> ${id}> <#nested> <#macro li id='' params='' class=''> class="${class}"<#if params!=''> ${params}<#if id!=''> ${id}> <#nested> <#-- DIV --> <#macro div id='' class='' hide=[] collapsed=false align='' params=''> <#if collapsed><#local class += ' ' + 'collapse' /> <#if align!=''> <#local class += ' ' + alignmentSettings(align,'text') />
    <#if hide??><#local class += ' ' + displaySettings(hide,'block') /> class="${class?trim}"<#if id!=''> id="${id}"<#if params!=''> ${params}> <#nested>
    <#if align!=''> <#-- PARAGRAPH --> <#macro p id='' class='' hide=[] collapsed=false align='' params=''> <#if collapsed><#local class += ' ' + 'collapse' /> <#local class += ' ' + alignmentSettings(align,'text') + ' ' + displaySettings(hide,'block') /> class="${class?trim}"<#if params!=''> ${params}<#if id!=''> ${id}> <#nested>

    <#-- SPAN --> <#macro span id='' class='' hide=[] collapsed=false align='' params=''> <#if collapsed><#local class += ' ' + 'collapse' /> <#local class += ' ' + alignmentSettings(align,'text') + ' ' + displaySettings(hide,'inline-flex') /> class="${class?trim}"<#if params!=''> ${params}<#if id!=''> ${id}> <#nested> <#-- PRE --> <#macro pre id='' class='' hide=[] collapsed=false align='' params=''> <#local class += ' ' + alignmentSettings(align,'text') + ' ' + displaySettings(hide,'block') /> class="${class?trim}"<#if params!=''> ${params}<#if id!=''> ${id}> <#nested> <#-- TABS --> <#-- Tab Container --> <#-- TAB Custom AdminLTE --> <#macro tabs color='' class='' id='' hide=[] collapsed=false params=''> <#if collapsed><#local class += ' ' + 'collapse' /> <#if hide??><#local class += ' ' + displaySettings(hide,'block') /> <#-- Bootstrap UL tabs --> <#-- type: tabs/tabs nav-justified/pills/pills nav-stacked/pills nav-justified --> <#macro tabList type='tabs' vertical=false id='' params='' color=''> <#-- this macro is deprecated. Used for backwards compatibility with Lutece v6 only --> <#-- type: tabs/tabs nav-justified/pills/pills nav-stacked/pills nav-justified --> <#macro listTabs type='tabs' id='' params=''> <#-- Tabs --> <#-- type: --> <#macro tabLink class='' hide=[] id='' active=false href='' title='' tabIcon='' params=''> <#local tabLinkClass = class /> <#if active><#local tabLinkClass += ' active' /> <#-- TAB Content AdminLTE --> <#macro tabContent id='' params=''>
    id="${id}"<#if params!=''> ${params}> <#nested>
    <#-- Tab Panel BS3 --> <#macro tabPanel id params='' active=false>
    ${params}> <#nested>
    <#-- ACCORDION --> <#-- The accordionContainer is the container for accordionPanel, which itself is the container for accordionHeader and accordionBody --> <#-- The childId argument in accordionPanel is meant to be used in the two sub-macros: accordionHeader and accordionBody --> <#macro accordionContainer id params=''>
    id="${id}"<#if params!=''> ${params}> <#assign parentId = id> <#nested>
    <#macro accordionPanel color='' collapsed=true childId='' id='' params=''>
    id="${id}"<#if params!=''> ${params}> <#if collapsed = true> <#assign aClass = 'collapsed'> <#assign expanded = 'false'> <#assign childClass = 'panel-collapse collapse'> <#else> <#assign aClass = ''> <#assign expanded = 'true'> <#assign childClass = 'panel-collapse collapse in'> <#assign childId = childId> <#nested>
    <#-- ACCORDION ELEMENT --> <#-- The boxTools parameter is unused, kept for backwards compatibility --> <#macro accordionHeader title='' parentId=parentId childId=childId boxTools=false id='' params='' headerIcon='' >
    id="${id}"<#if params!=''> ${params}>

    <#if headerIcon!=''><@icon style=headerIcon />   ${title}

    <#local nested><#nested> <#if nested?has_content>
    ${nested}
    <#macro accordionBody id=childId class=childClass expanded=expanded params=''>
    ${params}> <@boxBody> <#nested>
    <#macro progressBar description='' id='' params=''>
    id="${id}"<#if params!=''> ${params}>
    0%
    <#if description!=''> ${description} <#macro progress color='primary' id='' params='' value=0 min=0 max=100 text='' >
    id="${id}"<#if params!=''> ${params}>
    <#if text=''>${value}%<#else>${text}
    <#-- INFO-BOX AdminTLE (widget) --> <#-- color: only for the left side showing the icon. --> <#-- bgColor: for the right side containing the text --> <#macro infoBox color='' boxText='' boxIcon='' boxNumber='' unit='' bgColor='' progressBar='' progressDescription='' id='' params=''>
    id="${id}"<#if params!=''> ${params}> <@icon style=boxIcon />
    ${boxText} ${boxNumber?string(",000")}<#if unit!=''> ${unit} <#if bgColor!='' && progressBar!=''>
    <#if progressDescription!=''> ${progressDescription}
    <#-- TAG --> <#-- color: default/primary/success/info/warning/danger/ --> <#macro tag color='default' class='' size='' title='' tagIcon='' id='' params=''> title='${title}'<#if id!=''>id='${id}'<#if params!=''>${params}> <#if tagIcon !=''> <@icon style=tagIcon /> <#nested> <#-- BUTTON --> <#-- bootstrap 3 : size: btn-xs/btn-sm/btn-lg --> <#-- upcoming bootstrap 4 : size: btn-sm for small buttons/empty for medium buttons/btn-lg for large buttons --> <#-- color: default[bootstrap4 : secondary]/primary/success/warning/danger/info --> <#-- color (upcoming bootstrap 4): btn-outline-default/btn-outline-primary/btn-outline-success/btn-outline-warning/btn-outline-danger/btn-outline-info/ --> <#-- style: btn-block/btn-flat/close/navbar-toggle/collapsed... --> <#-- type: button/submit/reset --> <#-- params: data-toggle/data-target/data-dismiss... --> <#-- buttonIcon: icon name ex: info/check/comment/envelope... --> <#-- iconPosition: left/right --> <#-- cancel: switch to true for a cancellation form button. Adds the "formnovalidate" attribute to the button, as well as the right class --> <#-- formId: contains the form ID if the button is outside of the form --> <#-- buttonTargetId: contains the target element ID --> <#-- buttonNested=false : If true add content inside the button else -default- outside --> <#-- showTitle, showTitleXs, showTitleSm, showTitleMd, showTitleLg are deprecated in Lutece v7 --> <#macro button name='' id='' type='button' size='' color='' style='btn-flat' class='' params='' value='' title='' tabIndex='' hideTitle=[] showTitle=true showTitleXs=true showTitleSm=true showTitleMd=true showTitleLg=true buttonIcon='' disabled=false iconPosition='left' dropdownMenu=false cancel=false formId='' buttonTargetId='' buttonNested=false> <#if cancel || color = 'default' || color='btn-default' || color='btn-secondary' || color='secondary'> <#local buttonColor = 'default' /> <#elseif !cancel && color=''> <#local buttonColor = 'primary' /> <#else> <#local buttonColor = color /> <#-- Visibility of button title --> <#local displayTitleClass = displaySettings(hideTitle,'inline-flex') /> <#-- Visibility of button title: backwards compatibility with Lutece v6, BS3 only --> <#local showTitleClass = '' /> <#if showTitle = false><#local showTitleClass = 'sr-only' /> <#if showTitleXs = false><#local showTitleClass = showTitleClass + ' hidden-xs' /> <#if showTitleSm = false><#local showTitleClass = showTitleClass + ' hidden-sm' /> <#if showTitleMd = false><#local showTitleClass = showTitleClass + ' hidden-md' /> <#if showTitleLg = false><#local showTitleClass = showTitleClass + ' hidden-lg' /> <#if style != ''> <#if style?contains('card-control')> <#if style?contains('collapse')> <#local widgetAction = 'collapse' />
    <#elseif style?contains('remove')> <#local widgetAction = 'remove' /> <#local btnStyle = 'btn-flat ' + style?replace('collapse|remove', '', 'r')?trim /> <#elseif style?contains('modal')> <#local widgetAction = 'modal' /> <#local btnStyle = 'btn-flat ' + style?replace('modal', '', 'r')?trim /> <#else> <#local btnStyle = 'btn-flat ' + style /> <#if buttonNested><#local dropdownMenu=false /> <#if dropdownMenu> <#else> <#if !buttonNested><#nested> <#-- A BUTTON (LINK STYLED AS A BUTTON) --> <#-- size: btn-xs/btn-sm/btn-lg --> <#-- color: default/primary/success/warning/danger/info/ --> <#-- style: btn-block/btn-flat/disabled/btn-app --> <#-- icon: icon name ex: info/check/comment/envelope... --> <#-- showTitle, showTitleXs, showTitleSm, showTitleMd, showTitleLg are deprecated in Lutece v7 --> <#macro aButton name='' id='' href='' size='' color='primary' style='btn-flat' align='' class='' params='' title='' tabIndex='' hideTitle=[] showTitle=true showTitleXs=true showTitleSm=true showTitleMd=true showTitleLg=true buttonIcon='' disabled=false iconPosition='left' dropdownMenu=false> <#-- Bootstrap 4 transition --> <#if color='secondary'> <#local color_temp='default'> <#else> <#local color_temp=color> <#-- Visibility of button title --> <#local displayTitleClass = displaySettings(hideTitle,'inline-flex') /> <#-- Visibility of button title: backwards compatibility with Lutece v6, BS3 only --> <#local showTitleClass = '' /> <#if showTitle = false><#local showTitleClass = 'sr-only' /> <#if showTitleXs = false><#local showTitleClass = showTitleClass + ' hidden-xs' /> <#if showTitleSm = false><#local showTitleClass = showTitleClass + ' hidden-sm' /> <#if showTitleMd = false><#local showTitleClass = showTitleClass + ' hidden-md' /> <#if showTitleLg = false><#local showTitleClass = showTitleClass + ' hidden-lg' /> <#local class += ' ' + alignmentSettings(align,'') /> name="${name}"<#if id!=''> id="${id}" href="${href}" title="${title}"<#if params!=''> ${params}<#if disabled> disabled<#if dropdownMenu> data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <#if buttonIcon!='' && iconPosition='left'><@icon style=buttonIcon /> ${title} <#if buttonIcon!='' && iconPosition='right'><@icon style=buttonIcon /> <#if dropdownMenu>  <@icon style='caret-down' /> <#if !dropdownMenu> <#nested> <#if dropdownMenu> <#-- BTN TOOLBAR --> <#macro btnToolbar id='' class='' align='' ariaLabel='' params=''> <#if align!=''><#local class += ' ' + alignmentSettings(align) /> <#-- BTN GROUP --> <#-- size: sm/empty/lg --> <#-- align: left/center/right --> <#macro btnGroup align='' size='' class='' id='' params='' ariaLabel='' hide=[] showXs=true showSm=true showMd=true showLg=true showXl=true> <#local class += ' ' + displaySettings(hide,'') + ' ' + alignmentSettings(align,'') />
    aria-label="${ariaLabel}"<#if id!=''> id="${id}"<#if params!=''> ${params}> <#nested>
    <#-- Radio button/Checkbox as buttons (to use with btnGroup) --> <#-- type: radio/checkbox --> <#macro btnGroupRadioCheckbox type='checkbox' color='primary' size='' name='' id='' params='' ariaLabel='' labelFor='' labelKey='' labelParams='' tabIndex='' value='' checked=false> <#-- Simple links a href, anchors --> <#macro link href='' class='' id='' name='' title='' alt='' target='' params=''> class="${class}"<#if id!=''> id="${id}"<#if name!=''> name="${name}"<#if target!=''> target="${target}"<#if title!=''> title="${title}"<#if alt!=''> alt="${alt}"<#if params!=''> ${params}> <#nested> <#-- MODAL --> <#-- bgColor: modal-default/modal-primary/modal-info/modal-warning/modal-danger --> <#macro modal id params='' bgColor='' size=''> <#macro modalHeader titleLevel='h4' modalTitle='' id='' params=''> <#macro modalBody id='' params=''> <#macro modalFooter id='' params=''> <#-- BREADCRUMBS --> <#macro breadcrumbs id='' params=''> <#-- CALLOUT --> <#-- AdminLTE classes: info/warning/danger/success --> <#macro callOut color='' titleLevel='h3' title='' callOutIcon='' id='' params=''>
    id="${id}"<#if params!=''> ${params}> <#if title!=''><${titleLevel}><@icon style=callOutIcon /> ${title} <#nested>
    <#-- ALERT --> <#-- classes: alert-success/alert-info/alert-warning/alert-danger + alert-dismissible --> <#-- color: primary/success/info/warning/dange r--> <#macro alert class='' color='' titleLevel='h3' title='' iconTitle='' dismissible=false id='' params=''>
    id="${id}"<#if params!=''> ${params}> <#if dismissible> <@button color='' size='' style='close' params='data-dismiss="alert" aria-hidden="true"'> × <#if title!=''> <${titleLevel}> <#if iconTitle!=''><@icon style=iconTitle /> ${title} <#nested>
    <#----------------------------------------> <#-- AdminLTE Box --> <#-- color: default/primary/info/success/warning/danger --> <#-- style: solid (no top border) --> <#-- collapsed: true/false --> <#macro box color='' id='' style='' class='' params='' collapsed=false>
    id="${id}"<#if params!=''> ${params}> <#nested>
    <#-- The boxTools parameter is unused, kept for backwards compatibility --> <#macro boxHeader title='' i18nTitleKey='' hideTitle=[] showTitle=true id='' params='' boxTools=false titleLevel='h2'>
    id="${id}"<#if params!=''> ${params}> <${titleLevel} class="box-title<#if showTitle=false> sr-only"><#if title!=''>${title}<#if i18nTitleKey!=''>#i18n{${i18nTitleKey}} <#local nested><#nested> <#if nested?has_content>
    ${nested}
    <#macro boxBody class='' collapsed=false align='' id='' params=''> <#if collapsed><#local class += ' ' + 'collapse' /> <#if align!=''><#local class += ' ' + alignmentSettings(align,'text') />
    id="${id}"<#if params!=''> ${params}> <#nested>
    <#macro boxFooter class='' align='' id='' params=''> <#if align!=''><#local class += ' ' + alignmentSettings(align,'text') />
    id="${id}"<#if params!=''> ${params}> <#nested>
    <#----------------------------------------> <#-- AdminLTE Small Box --> <#-- color: Bootstrap + AdminLTE colors --> <#-- unit: %,... --> <#macro smallBox color='' title='' text='' boxIcon='' titleLevel='h3' unit='' url='' urlText='' id='' params='' fontSize='40px'>
    id="${id}"<#if params!=''> ${params}>

    ${text}

    <${titleLevel} style="font-size:${fontSize};">${title}<#if unit!=''>   ${unit}
    <@icon style=boxIcon />
    <#if url!=''> ${urlText} <@icon style='arrow-circle-right' />
    <#-- AdminLTE Error Page --> <#-- Error Type: 500,404... --> <#-- Color: primary/blue/navy/aqua/teal/green/orange/yellow/red/purple/maroon/gray/black... --> <#macro errorPage color='' errorType='' id='' params=''>
    id="${id}"<#if params!=''> ${params}>

    ${errorType}

    <@icon style='warning' class='text-${color}' /> <#if errorType=='404'> #i18n{portal.util.error404.title} <#elseif errorType='500'> #i18n{portal.util.error500.title} <#else>...

    <#if errorType=='404'> #i18n{portal.util.error404.text} <#elseif errorType='500'> #i18n{portal.util.error500.text} <#else>...

    <@aButton href='' size='' color='bg-${color}' style='btn-flat'> <@icon style='home' /> #i18n{portal.util.labelBackHome}
    <#-- CONTEXTUAL BACKGROUND P--> <#-- Bootstrap colors: primary/success/info/warning/danger --> <#-- AdminTLE colors: gray/gray-light/black/red/yellow/aqua/blue/light-blue/green/navy/teal/olive/lime/orange/fuchsia/purple/maroon --> <#macro coloredBg color='' type='p' id='' params=''> <${type} class="bg-${color}"<#if id!=''> id="${id}"<#if params!=''> ${params}> <#nested> <#macro listGroup id='' params=''>
      id="${id}"<#if params!=''> ${params}> <#nested>
    <#macro listGroupItem id='' params=''>
  • id="${id}"<#if params!=''> ${params}> <#nested>
  • <#macro unstyledList id='' params=''>
      id="${id}"<#if params!=''> ${params}> <#assign liClass = "margin"> <#nested>
    <#-- DROPDOWN MENU LIST --> <#macro dropdownList id='' params=''> <#macro dropdownItem class='' href='' title='' id='' params=''>
  • id="${id}"<#if params!=''> ${params}>${title}
  • <#-- CARDS --> <#macro card header=false headerTitle='' headerIcon=false headerTitleIcon=''>
    <#if header>
    <#if headerIcon><@icon style='${headerTitleIcon}' /> ${headerTitle}
    <#nested>
    <#-- FUNCTION: DISPLAY --> <#-- This function returns a "visible" or "hidden" class for any component --> <#-- breakpoints: "all" || "xs"/"sm"/"md"/"lg" --> <#-- display: unused --> <#function displaySettings breakPoints=[] display=''> <#local breakPointsOrdered = [] /> <#if breakPoints?seq_contains("all")> <#local breakPointsOrdered += ["all"] /> <#if breakPoints?seq_contains("xs")> <#local breakPointsOrdered += ["xs"] /> <#if breakPoints?seq_contains("sm")> <#local breakPointsOrdered += ["sm"] /> <#if breakPoints?seq_contains("md")> <#local breakPointsOrdered += ["md"] /> <#if breakPoints?seq_contains("lg")> <#local breakPointsOrdered += ["lg"] /> <#local displayClass = '' /> <#if breakPointsOrdered?? && breakPointsOrdered?size > 0> <#list breakPointsOrdered as breakPoint> <#if breakPoint = "all"> <#local displayClass = 'hidden' /> <#elseif breakPoint = "xs"> <#local displayClass = displayClass + ' hidden-xs' /> <#elseif breakPoint = 'sm'> <#local displayClass = displayClass + ' hidden-sm' /> <#elseif breakPoint = 'md'> <#local displayClass = displayClass + ' hidden-md' /> <#elseif breakPoint = 'lg'> <#local displayClass = displayClass + ' hidden-lg' /> <#else> <#local displayClass = displayClass + ' undefined_breakpoint' /> <#return displayClass?trim> <#-- This function returns responsive classes --> <#-- type: col|offset --> <#function responsiveDisplay type='' breakpoints={}> <#local responsiveDisplayClass = '' /> <#list breakpoints as breakpointkey,breakpointvalue> <#if breakpointvalue!=0> <#if type = 'col'> <#local responsiveDisplayClass += ' ${type}-${breakpointkey}-${breakpointvalue}' /> <#elseif type = 'offset'> <#local responsiveDisplayClass += ' col-${breakpointkey}-${type}-${breakpointvalue}' /> <#return responsiveDisplayClass?trim> <#function alignmentSettings align='' style=''> <#local x = ''> <#if align !=''> <#if align = 'left'> <#local x = 'pull-left' /> <#elseif align = 'right'> <#if style = 'text'> <#local x = 'text-right' /> <#elseif style = '' /> <#local x = 'pull-right' /> <#elseif align = 'center'> <#local x = 'text-center' /> <#else> <#return x> <#-- NEW MACRO LUTECE-2221 --> <#-- MACRO adminHeader --> <#macro adminHeader site_name=site_name>
    <#-- MACRO adminFooter --> <#macro adminFooter >
    <@coreAdminJSLinks /> ${javascript_files} <#-- MACRO adminHome --> <#macro adminHome > <@row> <@columns class='widget'>
    <@row> <@columns sm=4 md=4 lg=4 class='widget lutece-dashboard'> <#if dashboard_zone_1?has_content> ${dashboard_zone_1}
     
    <@columns sm=4 md=4 lg=4 class='widget lutece-dashboard'> <#if dashboard_zone_2?has_content> ${dashboard_zone_2}
     
    <@columns sm=4 md=4 lg=4 class='widget lutece-dashboard'> <#if dashboard_zone_3?has_content> ${dashboard_zone_3}
     
    <#-- adminContentHeader --> <#macro adminContentHeader >

    <#if feature_url?? && feature_title??> ${feature_title!''} <#else> ${feature_title!''} <#if page_title?has_content>${page_title}

    <@adminHeaderDocumentationLink />
    <#-- adminLoginPage --> <#macro adminLoginPage title='' site_name='SITE_NAME'>
    LUTECE Back-Office
    <#-- adminHeaderDocumentationLink --> <#macro adminHeaderDocumentationLink > <#macro adminSiteColumnOutline columnid=''>
    ${i18n("portal.site.columnId",columnid)}
    <#nested>
    <#-- adminMessagePage --> <#macro adminMessagePage title=''> <#local alerttype="yellow" /> <#local icontype="fa-info-circle" /> <#if message.type == 2 > <#local alerttype="red" /> <#local icontype="fa-question-circle" /> <#elseif message.type == 3 > <#local alerttype="yellow" /> <#local icontype="fa-exclamation-circle" /> <#elseif message.type == 4 > <#local alerttype="yellow" /> <#local icontype="fa-question-circle" /> <#elseif message.type == 5 > <#local alerttype="red" /> <#local icontype="fa-ban" /> <#-- fieldSet --> <#macro fieldSet class='' fieldsetId='' fieldsetParams='' legend='' legendClass='' legendId='' legendParams='' hideLegend=[] disabled=false> class="${class}"<#if fieldsetId!=''> id="${fieldsetId}"<#if fieldsetParams!=''> ${fieldsetParams}<#if disabled> disabled> <#if legend!=''> <#local legendClass += ' ' + displaySettings(hideLegend,'block') /> class="${legendClass?trim}"<#if legendId!=''> id="${legendId}"<#if legendParams!=''> ${legendParams}>${legend} <#nested> <#--Badge : BS badge + label --> <#macro badge color='primary' badgeIcon='' title='' htmlEl='deprecated' type='deprecated' style='deprecated' class='deprecated' > title="${title}" > <#if badgeIcon !=''> <@icon style=badgeIcon /> <#nested> <#-- RESPONSIVE --> <#-- HTML ELEMENTS --> <#macro img url='' alt='' title='' class='' id='' params=''> <#if alt!=''>${alt!}<#else>${title!}</#if> id="${id}"<#if params!=''> ${params} /> <#-- Email Default Template --> <#macro emailTemplate title='Lutece' footer_link='https://fr.lutece.paris.fr'>

    ${title}

    <#nested>
    <#macro adminLanguage languages lang action='jsp/admin/DoChangeLanguage.jsp' > #i18n{portal.admin.admin_home.language} <@tform method='post' action=action class='form-inline'>
      <#list languages as language>
    • <#if lang==language.code> <#local languageButtonColor='success'> <#else> <#local languageButtonColor='default'> <@button color='${languageButtonColor}' type='submit' name='language' value='${language.code}' title='${language.name}'/>
    <#macro adminAccessibilityMode> <@tform method='post' action='jsp/admin/DoModifyAccessibilityMode.jsp' class='form-inline'> <#if user.accessibilityMode> <@button color='link' size='md' type='submit' buttonIcon='eye' title='#i18n{portal.users.admin_header.labelDeactivateAccessibilityMode}'/> <#else> <@button color='link' size='md' type='submit' buttonIcon='eye-slash' title='#i18n{portal.users.admin_header.labelActivateAccessibilityMode}'/>