commons.html

 1   <#-- WARNING : be careful to white-space and lines break in FreeMarker macros.
 2    # This macro template can be used to output white-space-sensitive formats (like RSS files).
 3    # See http://dev.lutece.paris.fr/jira/browse/LUTECE-765
 4   -->
 5   <#include "util/standard/macro_standard.html" />
 6   <#include "util/calendar/macro_datepicker.html" />
 7   <#-- Do not remove this comment -->
 8   
 9   <#macro comboWithParams name default_value additionalParameters items >
 10   <select id="${name}" name="${name}" ${additionalParameters} >
 11   <#list items as item>
 12   	<#if default_value="${item.code}">
 13   		<option selected="selected" value="${item.code}" >${item.name}</option>
 14      	<#else>
 15      		<option value="${item.code}" >${item.name}</option>
 16      	</#if>
 17   </#list>
 18   </select>
 19   </#macro>
 20   
 21   <#macro comboSortedWithParams name default_value additionalParameters items id=name>
 22   <select id="${id}" name="${name}" ${additionalParameters} >
 23   <#list items?sort_by("name") as item>
 24   	<#if default_value="${item.code}">
 25   		<option selected="selected" value="${item.code}" <#if !item.name?has_content>label="${i18n("portal.util.labelEmpty")}"</#if>>${item.name}</option>
 26      	<#else>
 27      		<option value="${item.code}" <#if !item.name?has_content>label="${i18n("portal.util.labelEmpty")}"</#if>>${item.name}</option>
 28      	</#if>
 29   </#list>
 30   </select>
 31   </#macro>
 32   
 33   <#macro comboWithParamsAndLength name default_value additionalParameters items max_length >
 34   	<select id="${name}" name="${name}" ${additionalParameters} >
 35   		<#list items as item>
 36       	    <#if max_length < item.name?length >
 37               	<#assign item_new = "..." + "${item.name?substring(item.name?length-max_length+3)}" >
 38               <#else>
 39                 	<#assign item_new = "${item.name}">
 40               </#if>
 41   			<#if default_value="${item.code}">
 42         			<option selected="selected" value="${item.code}" >${item_new}</option>
 43         		<#else>
 44         			<option value="${item.code}" >${item_new}</option>
 45         		</#if>
 46       	</#list>
 47   	</select>
 48   </#macro>
 49   
 50   <#macro combo name default_value items >
 51   	<@comboWithParams name="${name}" default_value="${default_value}" additionalParameters="" items=items />
 52   </#macro>
 53   
 54   <#macro comboSorted name default_value items >
 55   	<@combo name="${name}" default_value="${default_value}" items=items?sort_by("name") />
 56   </#macro>
 57   
 58   
 59   <#macro radioImageList name default_value items inline=0>
 60   <#if inline=1>
 61   	<#list items as item>
 62   		<label for="${name}" class="radio-inline">
 63   			<input <#if default_value="${item.code}">checked="checked"</#if> class="radio" type="radio" name="${name}" value="${item.code}">
 64   			<img src="${item.name}" alt="${item.name}" title="${item.name}">
 65   		</label>
 66   	</#list>
 67   <#else>
 68   	<#list items as item>
 69   		<div class="radio">
 70   			<label for="${name}">
 71   				<input <#if default_value="${item.code}">checked="checked"</#if> class="radio" type="radio" name="${name}" value="${item.code}">
 72   				<img src="${item.name}" alt="${item.name}" title="${item.name}">
 73   			</label>
 74   		</div>
 75   	</#list>
 76   </#if>
 77   </#macro>
 78   
 79   <#macro checkboxList name default_values items inline=0>
 80   <#if inline=1>
 81   	<#list items as item>
 82   		<label for="${name}" class="checkbox-inline">
 83   			<input <#if item.checked >checked</#if> class="checkbox" type="checkbox" name="${name}" value="${item.code}" />&nbsp;${item.name}
 84   		</label>
 85   	</#list>
 86    <#else>
 87   	<#list items as item>
 88   		<#if item.checked >
 89   			<div class="checkbox">
 90   			<label for="document_type"><input checked class="checkbox" type="checkbox" name="${name}" value="${item.code}" />&nbsp;${item.name}</label>
 91   			</div>
 92   		<#else>
 93   			<div class="checkbox">
 94   			<label for="document_type"><input class="checkbox" type="checkbox" name="${name}" value="${item.code}" />&nbsp;${item.name}</label>
 95   			</div>
 96   		</#if>
 97   	</#list>
 98   </#if>
 99   </#macro>
 100   
 101   <#macro sort jsp_url attribute id="" >
 102   	<#if jsp_url?contains("?")>
 103   		<#assign sort_url = jsp_url + "&amp;sorted_attribute_name=" + attribute + "&amp;asc_sort=" />
 104   	<#else>
 105   		<#assign sort_url = jsp_url + "?sorted_attribute_name=" + attribute + "&amp;asc_sort=" />
 106   	</#if>
 107   	<div class="btn-group" role="group" aria-label="sortButton">
 108   		<a class="btn btn-default btn-flat btn-xs" id="sort${id!}_${attribute!}" href="${sort_url}true#sort${id!}_${attribute!}" title="#i18n{portal.util.sort.asc}" >
 109   			<i class="fa fa-chevron-up"></i>
 110   		</a>
 111   		<a class="btn btn-default btn-flat btn-xs" href="${sort_url}false#sort${id!}_${attribute!}" title="#i18n{portal.util.sort.desc}">
 112   			<i class="fa fa-chevron-down"></i>
 113   		</a>
 114   	</div>
 115   </#macro>
 116   
 117   <#macro pagination paginator >
 118   	<#assign nbLinkPagesToDisplay = 10 />
 119   	<#assign offsetPrev = nbLinkPagesToDisplay / 2 />
 120   	<#assign offsetNext = nbLinkPagesToDisplay / 2 />
 121   	<#if ( paginator.pageCurrent <= nbLinkPagesToDisplay - offsetPrev )>
 122   		<#assign offsetPrev = paginator.pageCurrent - 1 />
 123   		<#assign offsetNext = nbLinkPagesToDisplay - offsetPrev />
 124   	<#elseif ( paginator.pageCurrent + offsetNext > paginator.pagesCount )>
 125   		<#assign offsetNext = paginator.pagesCount - paginator.pageCurrent />
 126   		<#assign offsetPrev = nbLinkPagesToDisplay - offsetNext />
 127   	</#if>
 128   
 129   <#if ( paginator.pagesCount > 1 )>
 130   	<#if ( paginator.pageCurrent - offsetPrev > 1 )>
 131   		<a href="${paginator.firstPageLink?xhtml}">
 132   			<i class="fa fa-arrow-circle-right"></i>&nbsp;#i18n{portal.util.labelFirst}
 133   		</a>
 134   	</#if>
 135   	<#if ( paginator.pageCurrent > 1 )>
 136   		<a href="${paginator.previousPageLink?xhtml}">
 137   			<i class="fa fa-arrow-circle-left"></i>&nbsp;#i18n{portal.util.labelPrevious}
 138   		</a>
 139   	<#else>
 140   		&nbsp;&nbsp;
 141   	</#if>
 142   	<#if ( paginator.pageCurrent - offsetPrev > 1 )>
 143   		<strong>...</strong>
 144   	</#if>
 145   	<#list paginator.pagesLinks as link>
 146   		<#if link.index == paginator.pageCurrent>
 147   			<strong>${link.name}</strong>
 148   		<#else>
 149   			<a href="${link.url?xhtml}">${link.name}</a>
 150   		</#if>
 151   	</#list>
 152   	<#if ( paginator.pageCurrent + offsetNext < paginator.pagesCount )>
 153   		<strong>...</strong>
 154   	</#if>
 155   	<#if ( paginator.pageCurrent < paginator.pagesCount )>
 156   		<a href="${paginator.nextPageLink?xhtml}">
 157   			<i class="fa fa-arrow-circle-right"></i>&nbsp;#i18n{portal.util.labelNext}
 158   		</a>
 159   		<#if ( paginator.pageCurrent + offsetNext < paginator.pagesCount )>
 160   			<a href="${paginator.lastPageLink?xhtml}">
 161   				<i class="fa fa-arrow-circle-left"></i>&nbsp;#i18n{portal.util.labelLast}
 162   			</a>
 163   		</#if>
 164   	<#else>
 165   		&nbsp;&nbsp;
 166   	</#if>
 167   </#if>
 168   </#macro>
 169   
 170   <#macro paginationAdmin paginator combo=0 form=1 nb_items_per_page=nb_items_per_page showcount=1 showall=0>
 171   		<#if (paginator.pagesCount > 1) >
 172   			<@paginationPageLinks paginator=paginator />
 173   		</#if>
 174   		<div class="pull-right">
 175   			<#if form == 1 >
 176   				<form method="post">
 177   			</#if>
 178   			<@paginationItemCount paginator=paginator combo=combo nb_items_per_page=nb_items_per_page showcount=showcount showall=showall/>
 179   			<#if form == 1 >
 180   				</form>
 181   			</#if>
 182   		</div>
 183    </#macro>
 184   
 185   <#macro paginationPageLinks paginator >
 186   <#assign nbLinkPagesToDisplay = 10 />
 187   <#assign offsetPrev = nbLinkPagesToDisplay / 2 />
 188   <#assign offsetNext = nbLinkPagesToDisplay / 2 />
 189   <#if ( paginator.pageCurrent <= nbLinkPagesToDisplay - offsetPrev )>
 190   	<#assign offsetPrev = paginator.pageCurrent - 1 />
 191   	<#assign offsetNext = nbLinkPagesToDisplay - offsetPrev />
 192   <#elseif ( paginator.pageCurrent + offsetNext > paginator.pagesCount )>
 193   	<#assign offsetNext = paginator.pagesCount - paginator.pageCurrent />
 194   	<#assign offsetPrev = nbLinkPagesToDisplay - offsetNext />
 195   </#if>
 196   <ul class="pagination pagination-sm">
 197   <#if ( paginator.pageCurrent - offsetPrev > 1 )>
 198   	<li>
 199   		<a href="${paginator.firstPageLink?xhtml}">
 200   			${paginator.labelFirst}
 201   		</a>
 202   	</li>
 203   </#if>
 204   <#if (paginator.pageCurrent > 1) >
 205   	<li class="previous">
 206   		<a href="${paginator.previousPageLink?xhtml}">
 207   			${paginator.labelPrevious}
 208   		</a>
 209   	</li>
 210   <#else>
 211   	<li class="disabled">
 212   		<a href="${paginator.firstPageLink?xhtml}">${paginator.labelPrevious}</a>
 213   	</li>
 214   </#if>
 215   <#if ( paginator.pageCurrent - offsetPrev > 1 )>
 216   	<li>
 217   		<a href="${(paginator.pagesLinks?first).url?xhtml}"><strong>...</strong></a>
 218   	</li>
 219   </#if>
 220   <#list paginator.pagesLinks as link>
 221   	<#if ( link.index == paginator.pageCurrent )>
 222   		<li class="active">
 223   			<a href="${link.url?xhtml}">${link.name}</a>
 224   		</li>
 225   	<#else>
 226   		<li>
 227   			<a href="${link.url?xhtml}">${link.name}</a>
 228   		</li>
 229   	</#if>
 230   </#list>
 231   <#if ( paginator.pageCurrent + offsetNext < paginator.pagesCount )>
 232   	<li>
 233   		<a href="${(paginator.pagesLinks?last).url?xhtml}"><strong>...</strong></a>
 234   	</li>
 235   </#if>
 236   <#if (paginator.pageCurrent < paginator.pagesCount) >
 237   	<li class="next">
 238   		<a href="${paginator.nextPageLink?xhtml}">
 239   			${paginator.labelNext}
 240   		</a>
 241   	</li>
 242   	<#if ( paginator.pageCurrent + offsetNext < paginator.pagesCount )>
 243   		<li class="next">
 244   			<a href="${paginator.lastPageLink?xhtml}">
 245   				${paginator.labelLast}
 246   			</a>
 247   		</li>
 248   	</#if>
 249   <#else>
 250   	<li class="disabled">
 251   		<a href="${paginator.lastPageLink?xhtml}">${paginator.labelNext}</a>
 252   	</li>
 253   </#if>
 254   </ul>
 255    </#macro>
 256   
 257   <#macro paginationCombo paginator nb_items_per_page=nb_items_per_page showall=0>
 258   <div class="form-group">
 259   	<label>${paginator.labelItemCountPerPage}</label>
 260     	<div class="input-group">
 261   	  <select data-max-item="${paginator.itemsCount}" class="form-control" name="${paginator.itemsPerPageParameterName}" id="${paginator.itemsPerPageParameterName}" title="${paginator.labelItemCountPerPage}">
 262     		<#list [ "10" , "20" , "50" , "100" ] as nb>
 263     			<#if nb_items_per_page = nb >
 264     				<option selected="selected" value="${nb}">${nb}</option>
 265     			<#else>
 266     				<option value="${nb}">${nb}</option>
 267     			</#if>
 268     		</#list>
 269     		<#if showall ==1>
 270     			<#if paginator.itemsCount &gt; 100 >
 271     				<option <#if nb_items_per_page?number = paginator.itemsCount?number >selected="selected"</#if> value="${paginator.itemsCount}" class="${nb_items_per_page}">#i18n{portal.util.labelAll}</option>
 272     			</#if>
 273     		</#if>
 274   	  </select>
 275   	  <span class="input-group-btn">
 276   		<button class="btn btn-default" type="submit" title="#i18n{portal.util.labelRefresh}">
 277   			<i class="fa fa-refresh"></i>
 278   		</button>
 279   	</span>
 280   	</div>
 281   </div>
 282   </#macro>
 283   
 284   <#macro paginationItemCount paginator combo=0 nb_items_per_page=nb_items_per_page showcount=1 showall=0>
 285   <#-- Display combo -->
 286   <#if combo == 1 >
 287     <@paginationCombo paginator=paginator nb_items_per_page=nb_items_per_page showall=showall />
 288   </#if>
 289   <#-- Display item count -->
 290   <#if showcount == 1 >
 291   <span class="showcount">
 292   	<#if (paginator.labelItemCount)?? && paginator.labelItemCount?has_content>&nbsp;-&nbsp;${paginator.labelItemCount} : </#if> ${paginator.itemsCount}
 293   </span>
 294   </#if>
 295   </#macro>
 296   
 297   
 298   <#macro item_navigation item_navigator id="item-navigator">
 299   <nav id="${id}" style="display:inline;">
 300   <#if (item_navigator.currentItemId > 0)>
 301   	<@aButton size='' href='${item_navigator.previousPageLink?xhtml}' title='#i18n{portal.util.labelPrevious}' buttonIcon='arrow-left' color='btn-info' showTitleXs=false showTitleSm=false />
 302   </#if>
 303   <#if (item_navigator.currentItemId < item_navigator.listItemSize - 1) >
 304   	<@aButton size='' href='${item_navigator.nextPageLink?xhtml}' title='#i18n{portal.util.labelNext}' buttonIcon='arrow-right' color='btn-info' showTitleXs=false showTitleSm=false />
 305   </#if>
 306   </nav>
 307   </#macro>
 308   
 309   <#macro dataTable dataTableManager actionMacro="" tableClass="table table-striped table-condensed" caption="&nbsp;" summary="data table" >
 310   	<#if 0 < dataTableManager.items?size >
 311   		<#if dataTableManager.enablePaginator>
 312   			<form class="form-inline" method="post" action="${dataTableManager.sortUrl}">
 313   			    <#if (dataTableManager.paginator.pagesCount > 1) >
 314   			        <@paginationPageLinks paginator=dataTableManager.paginator />
 315   			    </#if>
 316   			    <div class="pull-right">
 317   					<@paginationItemCount paginator=dataTableManager.paginator combo=1 nb_items_per_page=dataTableManager.paginator.itemsPerPage?string />
 318   				</div>
 319   				<input type="hidden" name="${dataTableManager.id}" id="${dataTableManager.id}" value="${dataTableManager.id}" />
 320   			</form>
 321   		</#if>
 322   		<table class="${tableClass}" summary="${summary}">
 323   			<caption>${caption}</caption>
 324   			<tr>
 325   				<#list dataTableManager.listColumn as column>
 326   					<th scope="col">
 327   						#i18n{${column.titleKey}}
 328   						<#if !(column.typeColumn = "ACTION") && column.sortable>
 329   							<@sort jsp_url=dataTableManager.sortUrl attribute=column.parameterName />
 330   						</#if>
 331   					</th>
 332   				</#list>
 333   			</tr>
 334   			<#list dataTableManager.items as item>
 335   				<tr>
 336   					<#list dataTableManager.listColumn as column>
 337   						<#if column.typeColumn = "STRING">
 338   							<#assign propName = "item." + column.parameterName>
 339   							<#assign value = propName?eval>
 340   							<td>${value!}</td>
 341   						<#elseif column.typeColumn = "LABEL">
 342   							<#assign propName = "item." + column.parameterName>
 343   							<#assign value = propName?eval>
 344   							<td>#i18n{${value!}}</td>
 345   						<#elseif column.typeColumn = "BOOLEAN">
 346   							<#assign propName = "item." + column.parameterName>
 347   							<#assign value = propName?eval>
 348   							<#if value?? && value>
 349   								<td><span class="label label-success" title="#i18n{${column.labelTrue!}}"><i class="glyphicon glyphicon-ok-sign icon-white"></i>#i18n{${column.labelTrue!}}</span></td>
 350   							<#else>
 351   								<td><span class="label label-important" title="#i18n{${column.labelFalse!}}"><i class="glyphicon glyphicon-remove-sign icon-white"></i>#i18n{${column.labelFalse!}}</span></td>
 352   							</#if>
 353   						<#elseif column.typeColumn = "EMAIL">
 354   							<#assign propName = "item." + column.parameterName>
 355   							<#assign value = propName?eval>
 356   							<td><#if value?? && value != ""><a href="mailto:${value}" title="${value}" >${value}</a></#if></td>
 357   						<#elseif column.typeColumn = "ACTION">
 358   							<#if column.parameterName?? && column.parameterName != "">
 359   								<#assign macroName = column.parameterName>
 360   							<#elseif actionMacro?? && actionMacro != "">
 361   								<#assign macroName = actionMacro>
 362   							</#if>
 363   							<#if macroName?? && macroName != "">
 364   								<td><@.vars[macroName] item=item /></td>
 365   							</#if>
 366   						</#if>
 367   					</#list>
 368   				</tr>
 369   			</#list>
 370   		</table>
 371   		<#if dataTableManager.enablePaginator>
 372   			<form class="form-inline" method="post" action="${dataTableManager.sortUrl}">
 373   			    <#if (dataTableManager.paginator.pagesCount > 1) >
 374   			        <@paginationPageLinks paginator=dataTableManager.paginator />
 375   			    </#if>
 376   			    <div class="pull-right">
 377   					<@paginationItemCount paginator=dataTableManager.paginator combo=0 nb_items_per_page=dataTableManager.paginator.itemsPerPage?string />
 378   				</div>
 379   				<input type="hidden" name="${dataTableManager.id}" id="${dataTableManager.id}" value="${dataTableManager.id}" />
 380   			</form>
 381   		</#if>
 382   	<#else>
 383   		#i18n{portal.util.labelNoItem}
 384   	</#if>
 385   </#macro>
 386   
 387   <#macro filterPanel dataTableManager formClass="form-horizontal" >
 388   	<#if dataTableManager.filterPanel.listFilter?? && 0 < dataTableManager.filterPanel.listFilter?size>
 389   		<form class="${formClass}" method="post" action="${dataTableManager.filterPanel.formUrl}" >
 390   			<fieldset>
 391   				<#list dataTableManager.filterPanel.listFilter as filter>
 392   					<div class="form-group">
 393   						<label class="col-xs-12 col-sm-3 col-md-3" for="description" >#i18n{${filter.filterLabel}} :</label>
 394   						<div class="col-xs-12 col-sm-9 col-md-9">
 395   							<#if filter.filterType = "STRING">
 396   								<input type="text" name="${dataTableManager.filterPanelPrefix}${filter.parameterName}" id="${filter.parameterName}" size="30" value="${filter.value!}"/>
 397   							<#elseif filter.filterType = "BOOLEAN">
 398   								<input type="checkbox" value="true" name="${dataTableManager.filterPanelPrefix}${filter.parameterName}" id="${dataTableManager.filterPanelPrefix}${filter.parameterName}" <#if filter.value?? && filter.value = "true">checked="checked" </#if>/>
 399   							<#elseif filter.filterType = "DROPDOWNLIST">
 400   								<#if filter.value??>
 401   									<#assign filter_value = filter.value >
 402   								<#else>
 403   									<#assign filter_value = "" >
 404   								</#if>
 405   								<@combo name=dataTableManager.filterPanelPrefix+filter.parameterName default_value=filter_value items=filter.refList />
 406   							</#if>
 407   						</div>
 408   					</div>
 409   				</#list>
 410   				<div class="form-group">
 411   					<input type="hidden" name="${dataTableManager.filterPanelPrefix}updateFilters" id="${dataTableManager.filterPanelPrefix}updateFilters" value="true" />
 412   					<input type="hidden" name="${dataTableManager.id}" id="${dataTableManager.id}" value="${dataTableManager.id}" />
 413   					<button class="btn btn-primary btn-sm" type="submit" >
 414   						<i class="fa fa-search"></i>
 415   						<span class="hidden-xs" >#i18n{portal.util.labelSearch}</span>
 416   					</button>
 417   					<#if dataTableManager.filterPanel.formUrl?contains("?")>
 418   						<#assign dataTableResetUrl = dataTableManager.filterPanel.formUrl + "&" + dataTableManager.filterPanelPrefix + "resetFilters=true" />
 419   					<#else>
 420   						<#assign dataTableResetUrl = dataTableManager.filterPanel.formUrl + "?" + dataTableManager.filterPanelPrefix + "resetFilters=true" />
 421   					</#if>
 422   					<a class="btn btn-primary btn-sm" href="${dataTableResetUrl}" title="#i18n{portal.util.labelReset}">
 423   						<i class="fa fa-remove-circle"></i>
 424   						<span class="hidden-xs" >#i18n{portal.util.labelReset}</span>
 425   					</a>
 426   				</div>
 427   			</fieldset>
 428   		</form>
 429   	</#if>
 430   </#macro>
 431   
 432   <#-- Macro messages : display message block for errors or infos -->
 433   <#macro messages errors=[] infos=[] warnings=[] errors_class="alert alert-danger" infos_class="alert alert-info" warnings_class="alert alert-warning">
 434   
 435       <#-- Error messages handling -->
 436       <#if errors??>
 437           <#if errors?size &gt; 0 >
 438               <div class="${errors_class}" id="messages_errors_div">
 439                   <a class="close" data-dismiss="alert" href="#">x</a>
 440                   <#list errors as error >
 441                       <i class="fa fa-exclamation-circle"></i> ${error.message} <br>
 442                   </#list>
 443               </div>
 444           </#if>
 445       </#if>
 446   
 447       <#-- Info messages handling -->
 448       <#if infos??>
 449           <#if infos?size &gt; 0 >
 450               <div class="${infos_class}" id="messages_infos_div" >
 451                   <a class="close" data-dismiss="alert" href="#">x</a>
 452                   <#list infos as info >
 453                       <i class="fa fa-info-circle"></i> ${info.message} <br>
 454                   </#list>
 455               </div>
 456           </#if>
 457       </#if>
 458   
 459       <#-- Warning messages handling -->
 460       <#if warnings??>
 461           <#if warnings?size &gt; 0 >
 462               <div class="${warnings_class}" id="messages_warnings_div" >
 463                   <a class="close" data-dismiss="alert" href="#">x</a>
 464                   <#list warnings as warning >
 465                       <i class="fa fa-info-circle"></i> ${warning.message} <br>
 466                   </#list>
 467               </div>
 468           </#if>
 469       </#if>
 470   
 471   </#macro>
 472   
 473   <#macro fieldInputText i18nLabelKey inputName mandatory=false value="" maxlength=0 i18nHelpBlockKey='' cssClass='form-control'>
 474   	<div class="form-group">
 475   		<label class="col-xs-12 col-sm-3 col-md-3 col-lg-3 control-label" for="${inputName}">#i18n{${i18nLabelKey}}&nbsp;<#if mandatory>*</#if>&nbsp;:</label>
 476   		<div class="col-xs-12 col-sm-9 col-md-6 col-lg-6">
 477   			<input class="${cssClass}" id="${inputName}" name="${inputName}" type="text" value="${value}" <#if maxlength &gt; 0>maxlength=${maxlength}</#if> />
 478   			<#if i18nHelpBlockKey != ''><p class="help-block">#i18n{${i18nHelpBlockKey}}</p></#if>
 479   		</div>
 480   	</div>
 481   </#macro>
 482   
 483   <#macro fieldInputPassword i18nLabelKey inputName mandatory=false value="" maxlength=0 i18nHelpBlockKey='' cssClass='form-control'>
 484   	<div class="form-group">
 485   		<label class="col-xs-12 col-sm-3 col-md-3 col-lg-3 control-label" for="${inputName}">#i18n{${i18nLabelKey}}&nbsp;<#if mandatory>*</#if>&nbsp;:</label>
 486   		<div class="col-xs-12 col-sm-9 col-md-6 col-lg-6">
 487   			<input class="${cssClass}" id="${inputName}" name="${inputName}" type="password" value="${value}" <#if maxlength &gt; 0>maxlength=${maxlength}</#if>>
 488   			<#if i18nHelpBlockKey != ''><p class="help-block">#i18n{${i18nHelpBlockKey}}</p></#if>
 489   		</div>
 490   	</div>
 491   </#macro>
 492   
 493   <#macro fieldInputWrapper i18nLabelKey inputName mandatory=false value="" maxlength=0 i18nHelpBlockKey='' cssClass='form-control'>
 494   	<div class="form-group">
 495   		<label class="col-xs-12 col-sm-3 col-md-3 col-lg-3 control-label" for="${inputName}">#i18n{${i18nLabelKey}}&nbsp;<#if mandatory>*</#if>&nbsp;:</label>
 496   		<div class="col-xs-12 col-sm-9 col-md-6 col-lg-6">
 497   			<#nested>
 498   			<#if i18nHelpBlockKey != ''><p class="help-block">#i18n{${i18nHelpBlockKey}}</p></#if>
 499   		</div>
 500   	</div>
 501   </#macro>
 502   
 503   <#macro fieldStaticText i18nLabelKey cssClass='form-control' >
 504   	<div class="form-group">
 505   		<label class="col-xs-12 col-sm-3 col-md-3 col-lg-3 control-label">#i18n{${i18nLabelKey}}&nbsp; :</label>
 506   		<div class="col-xs-12 col-sm-9 col-md-6 col-lg-6">
 507                       <p class="form-control-static">
 508   			<#nested>
 509                       </p>
 510   		</div>
 511   	</div>
 512   </#macro>
 513   
 514   <#macro fieldInputCalendar i18nLabelKey inputName mandatory=false value="" i18nHelpBlockKey='' cssClass='form-control' language='fr'>
 515   	<div class="form-group">
 516   		<label class="col-xs-12 col-sm-3 col-md-3 col-lg-3 control-label" for="${inputName}">#i18n{${i18nLabelKey}}&nbsp;<#if mandatory>*</#if>&nbsp;:</label>
 517   		<div class="col-xs-12 col-sm-9 col-md-6 col-lg-6">
 518   			<div class="input-group">
 519   				<div class="input-group-addon"><i class="fa fa-calendar">&nbsp;</i></div>
 520   				<input class="${cssClass}" id="${inputName}" name="${inputName}" type="text" value="${value}" >
 521   			</div>
 522   			<#if i18nHelpBlockKey != ''><p class="help-block">#i18n{${i18nHelpBlockKey}}</p></#if>
 523   		</div>
 524   	</div>
 525   	<@getDatePickerBootstrap idField=inputName language=language />
 526   </#macro>
 527   
 528   <#macro fieldInputCheckBox i18nLabelKey inputName value="" disabled=false checked=false i18nHelpBlockKey='' cssClass='' >
 529   	<div class="form-group">
 530   		<div class="col-xs-12 col-sm-offset-3 col-sm-6 col-md-offset-3 col-md-6 col-lg-offset-3 col-lg-6">
 531   			<div class="checkbox<#if disabled> disabled</#if> ">
 532   				<label>
 533   					<input class="${cssClass}" id="${inputName}" name="${inputName}" type="checkbox" value="${value}" <#if checked>checked</#if> <#if disabled>disabled</#if> >
 534   					#i18n{${i18nLabelKey}}
 535   				</label>
 536   			</div>
 537   			<#if i18nHelpBlockKey != ''><p class="help-block">#i18n{${i18nHelpBlockKey}}</p></#if>
 538   		</div>
 539   	</div>
 540   </#macro>
 541   
 542   <#macro fieldInputRadioBox i18nLabelKey inputName value="" disabled=false checked=false i18nHelpBlockKey='' cssClass='' >
 543   	<div class="form-group">
 544   		<div class="col-xs-12 col-sm-offset-3 col-sm-6 col-md-offset-3 col-md-6 col-lg-offset-3 col-lg-6">
 545   			<div class="radio<#if disabled> disabled</#if> ">
 546   				<label>
 547   					<input class="${cssClass}" id="${inputName}" name="${inputName}" type="radio" value="${value}" <#if checked>checked</#if> <#if disabled>disabled</#if> >
 548   					#i18n{${i18nLabelKey}}
 549   				</label>
 550   			</div>
 551   			<#if i18nHelpBlockKey != ''><p class="help-block">#i18n{${i18nHelpBlockKey}}</p></#if>
 552   		</div>
 553   	</div>
 554   </#macro>
 555   
 556   <#macro fieldInputCheckBoxInline inputName value="" disabled=false checked=false >
 557   	<label class="checkbox-inline<#if disabled> disabled</#if> ">
 558   		<input class="${cssClass}" id="${inputName}" name="${inputName}" type="checkbox" value="${value}" <#if checked>checked</#if> <#if disabled>disabled</#if> > #i18n{${i18nLabelKey}}
 559   	</label>
 560   </#macro>
 561   
 562   <#macro fieldInputRadioBoxInline inputName value="" disabled=false checked=false >
 563   	<label class="radio-inline<#if disabled> disabled</#if> ">
 564   		<input class="${cssClass}" id="${inputName}" name="${inputName}" type="radio" value="${value}" <#if checked>checked</#if> <#if disabled>disabled</#if> > #i18n{${i18nLabelKey}}
 565   	</label>
 566   </#macro>
 567   
 568   <#macro fieldInputCombo i18nLabelKey inputName items value="" mandatory=false i18nHelpBlockKey='' cssClass='form-control' >
 569   	<div class="form-group">
 570   		<label class="col-xs-12 col-sm-3 col-md-3 col-lg-3 control-label" for="${inputName}">#i18n{${i18nLabelKey}}&nbsp;<#if mandatory>*&nbsp;</#if>:</label>
 571   		<div class="col-xs-12 col-sm-9 col-md-6 col-lg-6">
 572   			<#assign params = "class='" + cssClass + "'" >
 573   			<@comboWithParams name=inputName items=items default_value=value additionalParameters=params />
 574   			<#if i18nHelpBlockKey != ''><p class="help-block">#i18n{${i18nHelpBlockKey}}</p></#if>
 575   		</div>
 576   	</div>
 577   </#macro>
 578   
 579   <#macro fieldTextArea i18nLabelKey inputName mandatory=false value="" maxlength=0 i18nHelpBlockKey='' cssClass='form-control'>
 580   	<div class="form-group">
 581   		<label class="col-xs-12 col-sm-3 col-md-3 col-lg-3 control-label" for="${inputName}">#i18n{${i18nLabelKey}}&nbsp;<#if mandatory>*</#if>&nbsp;:</label>
 582   		<div class="col-xs-12 col-sm-9 col-md-6 col-lg-6">
 583   			<textarea class="${cssClass}" id="${inputName}" name="${inputName}" <#if maxlength &gt; 0>maxlength=255</#if> >${value}</textarea>
 584   			<#if i18nHelpBlockKey != ''><p class="help-block">#i18n{${i18nHelpBlockKey}}</p></#if>
 585   		</div>
 586   	</div>
 587   </#macro>
 588   
 589   <#macro actionButtons button1Name='' button2Name='' i18nValue1Key='portal.admin.message.buttonValidate' i18nValue2Key='portal.admin.message.buttonCancel' url1='' url2='' icon1='fa fa-check' icon2='fa fa-close' offset=3 >
 590   <#assign col = 11 - offset />
 591   <div class="form-group">
 592       <div class="col-xs-12 col-sm-offset-${offset} col-sm-${col} col-md-offset-${offset} col-md-${col}">
 593           <#if url1 != ''>
 594   			<a class="btn btn-primary" href="${url1}"  >
 595   				<i class="${icon1}"></i>&nbsp;#i18n{${i18nValue1Key}}
 596   			</a>
 597           <#else>
 598   			<button  class="btn btn-primary" name="${button1Name}" type="submit">
 599   				<i class="${icon1}"></i>&nbsp;#i18n{${i18nValue1Key}}
 600   			</button>
 601           </#if>
 602           <#if url2 != ''>
 603   			<a class="btn btn-default" href="${url2}"  >
 604   				<i class="${icon2}"></i>&nbsp;#i18n{${i18nValue2Key}}
 605   			</a>
 606           <#else>
 607               <#if button2Name != ''>
 608   				<button class="btn btn-default" name="${button2Name}" type="submit" >
 609   					<i class="${icon2}"></i>&nbsp;#i18n{${i18nValue2Key}}
 610   				</button>
 611               </#if>
 612           </#if>
 613       </div>
 614   </div>
 615   </#macro>
 616   
 617   <#macro boxSized col i18nTitleKey boxClass='box-primary' >
 618       <div class="col-md-${col}">
 619           <div class="box ${boxClass}">
 620               <@boxHeader title=i18nTitleKey />
 621               <div class="box-body">
 622                   <#nested>
 623               </div>
 624           </div>
 625       </div>
 626   </#macro>
 627   
 628   <#macro rowBox boxClass='box-primary' col=12>
 629   <div class="row">
 630       <div class="col-xs-${col} col-sm-${col} col-md-${col}">
 631           <div class="box ${boxClass}">
 632               <#nested>
 633           </div>
 634       </div>
 635   </div>
 636   </#macro>
 637   
 638   <#macro rowBoxHeader i18nTitleKey boxClass='box-primary' col=12>
 639   <@rowBox boxClass=boxClass col=col >
 640       <@boxHeader i18nTitleKey=i18nTitleKey />
 641       <div class="box-body">
 642           <#nested>
 643       </div>
 644   </@rowBox>
 645   </#macro>
 646   
 647   <#--
 648   This is now empty because it should not be used anymore
 649   and is kept only for backwards compatibility
 650   -->
 651   <#macro headerButtons>
 652       <#nested>
 653   </#macro>
 654   
 655   <#macro tableHeadBodySeparator>
 656       </thead>
 657       <tbody>
 658   </#macro>
 659   
 660   
 661   <#---------------------------NEW MACROS------------------------------>
 662   	
 663   <#-- TABLE -->
 664   <#-- class: striped/bordered/hover/condensed -->
 665   <#macro table responsive=true class='' id='' params=''>
 666   	<#if responsive>
 667   	<div class="table-responsive">
 668   	</#if>
 669   	<table class="table table-hover table-condensed<#if class!=''> ${class}</#if>" id="${id}"<#if params!=''> ${params}</#if>>
 670   			<#nested>
 671   		</table>
 672   	<#if responsive>
 673   	</div>
 674   	</#if>
 675   </#macro>
 676   
 677   <#macro td xs=0 sm=0 md=0 lg=0 xl=0 class='' id='' params=''>
 678   	<td class="<#if xs!=0>col-xs-${xs}</#if><#if sm!=0> col-sm-${sm}</#if><#if md!=0> col-md-${md}</#if><#if lg!=0> col-lg-${lg}</#if><#if xl!=0> col-xl-${xl}</#if><#if class!=''>${class}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 679   		<#nested>
 680   	</td>
 681   </#macro>
 682   
 683   <#--- MACRO SELECT (TO REPLACE "COMBO" MACROS) --->
 684   <#macro select name items='' default_value=0 id=name size='' sort=false multiple=0 params='' title=''>
 685   	<select id="${id}" name="${name}" class="form-control<#if size!=''> input-${size}</#if>" <#if (multiple &gt; 0)>multiple size="${multiple}"</#if><#if params!=''> ${params}</#if><#if title!=''> ${title}</#if>>
 686   	<#if items?has_content>
 687   		<#if sort=true>
 688   			<#list items?sort_by("name") as item>
 689   			<#if default_value="${item.code}">
 690   			<option selected="selected" value="${item.code}" <#if !item.name?has_content>label="${i18n("portal.util.labelEmpty")}"</#if>>${item.name}</option>
 691   			<#else>
 692   			<option value="${item.code}" <#if !item.name?has_content>label="${i18n("portal.util.labelEmpty")}"</#if>>${item.name}</option>
 693   			</#if>
 694   			</#list>
 695   		<#else>
 696   			<#list items as item>
 697   			<#if default_value="${item.code}">
 698   			<option selected="selected" value="${item.code}" <#if !item.name?has_content>label="${i18n("portal.util.labelEmpty")}"</#if>>${item.name}</option>
 699   			<#else>
 700   			<option value="${item.code}" <#if !item.name?has_content>label="${i18n("portal.util.labelEmpty")}"</#if>>${item.name}</option>
 701   			</#if>
 702   			</#list>
 703   		</#if>
 704   	<#else>
 705   		<#nested>
 706   	</#if>
 707   	</select>
 708   </#macro>
 709   
 710   <#-- ICONS -->
 711   <#-- Icons from FontAwesome -->
 712   <#macro icon prefix='fa fa-' style='' class='' title='' id='' params=''>
 713     <i class="${prefix}${style}<#if class!=''> ${class}</#if>" aria-hidden="true"<#if title!=''> title='${title}'</#if><#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>></i>
 714   </#macro>
 715   
 716   <#-- FORM -->
 717   <#-- class: form-inline/form-horizontal/navbar-form/navbar-left/search-form... Default is horizontal -->
 718   <#macro tform class='form-horizontal' class2='' action='' method='post' name='' id='' role='form' params=''>
 719   	<form class="${class}<#if class2!=''> ${class2}</#if>"<#if id!=''> id="${id}"</#if><#if action!=''> action="${action}"</#if><#if method!=''> method="${method}"</#if><#if name!=''> name="${name}"</#if><#if role!=''> role="${role}"</#if><#if params!=''> ${params}</#if>>
 720   		<#nested>
 721   	</form>
 722   </#macro>
 723   
 724   <#-- FORM ELEMENT STRUCTURE -->
 725   <#-- formStyle values: empty/inline/horizontal/navbar-form/navbar-left... Default is horizontal -->
 726   <#-- groupStyle: success/warning/error... -->
 727   
 728   <#macro formGroup formStyle='horizontal' class='' groupStyle='' rows=1 labelKey='' labelFor='' labelId='' helpKey='' id='' mandatory=false showLabel=true params=''>
 729   	<div class="form-group<#if groupStyle!=''> has-${groupStyle} has-feedback</#if><#if class!=''> ${class}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 730   		<#if rows=1>
 731   			<#if labelKey!='' && formStyle='horizontal'>
 732   				<#assign labelClass = "col-xs-12 col-sm-3 control-label">
 733   				<#assign divClass = "col-xs-12 col-sm-9 col-md-6 col-lg-6">
 734   			<#elseif formStyle = 'inline'>
 735   				<#assign labelClass = ''>
 736   			<#else>
 737   				<#assign divClass="col-xs-12 col-sm-offset-3 col-sm-6">
 738   			</#if>
 739   		<#else>
 740   			<#assign labelClass = "col-xs-12">
 741   			<#assign divClass = "col-xs-12">
 742   		</#if>
 743   		<#if labelKey!=''>
 744   		<label class="${labelClass}<#if showLabel=false> sr-only</#if>" for="${labelFor}"<#if labelId!=''> id="${labelId}"</#if>>
 745   			${labelKey}
 746   			<#if mandatory=false>
 747   				&#160;
 748   			<#elseif mandatory=true>
 749   				&#160;<@icon style='asterisk' />
 750   			</#if>
 751   		</label>
 752   		</#if>
 753   		<#if formStyle="horizontal">
 754   		<div class="${divClass}">
 755   		</#if>
 756   			<#assign mandatory = mandatory>
 757   			<#assign labelFor = labelFor>
 758   			<#assign helpKey = helpKey>
 759   			<#nested>
 760   			<#if class='success'>
 761   				<@icon style='check' class='form-control-feedback' />
 762   			<#elseif class='warning'>
 763   				<@icon style='warning' class='form-control-feedback' />
 764   			<#elseif class='error'>
 765   				<@icon style='close' class='form-control-feedback' />
 766   			</#if>
 767   			<#if helpKey!='' && formStyle!='inline'><span class="help-block" <#if labelFor!=''>id="${labelFor}_help"</#if>>${helpKey}</span></#if>
 768   		<#if formStyle="horizontal">
 769   		</div>
 770   		</#if>
 771   	</div>
 772   </#macro>
 773   
 774   <#-- INPUT TEXT/TEXTAREA/SEARCH/PASSWORD/EMAIL/FILE -->
 775   <#-- type : text/textarea/password/email/file/number. Default is text -->
 776   <#-- size: input-xs/input-sm/input-lg -->
 777   <#-- incoming Bootstrap 4 size: form-control-sm/form-control-lg or empty for the normal size -->
 778   <#-- pattern: [A-F][0-9]{5} -->
 779   <#macro input name type='text' value='' class='' size='' inputSize=0 maxlength=0 placeHolder='' rows=4 cols=40 richtext=false tabIndex='' id='' mandatory=mandatory disabled=false readonly=false pattern='' params='' title='' min=0 max=0>
 780   	<#if type='textarea'>
 781   		<textarea name="${name}" class="form-control<#if size!=''> input-${size}</#if><#if class!=''> ${class}</#if><#if richtext> richtext</#if>" rows="${rows}" cols="${cols}"<#if tabIndex!=''> tabindex="${tabIndex}"</#if><#if placeHolder!=''> placeholder="${placeHolder}"</#if><#if title!=''> title="${title}"</#if><#if disabled> disabled</#if><#if readonly> readonly</#if><#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if><#if pattern!=''>pattern=${pattern}</#if><#if mandatory && !richtext> required</#if><#if labelFor!='' && helpKey!=''> aria-describedby="${labelFor}_help"</#if>><#nested></textarea>
 782   	<#elseif type='text' || type='search' || type='password' || type='email' || type='file' || type='number'>
 783   	<input class="form-control<#if size!=''> input-${size}</#if><#if class!=''> ${class}</#if> " id="${id}" name="${name}" type="${type}" value="${value}"<#if tabIndex!=''> tabindex="${tabIndex}"</#if><#if placeHolder!=''> placeholder="${placeHolder}"</#if><#if title!=''> title="${title}"</#if><#if maxlength &gt; 0> maxlength="${maxlength}"</#if><#if inputSize!=0> size="${inputSize}"</#if><#if disabled> disabled</#if><#if readonly> readonly</#if><#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if><#if pattern!=''>pattern=${pattern}</#if><#if min!=0> min="${min}"</#if><#if max!=0> max="${max}"</#if><#if mandatory> required</#if><#if labelFor!='' && helpKey!=''> aria-describedby="${labelFor}_help"</#if> />
 784   	<#else><@icon style='warning' />Type not supported
 785   	</#if>
 786   </#macro>
 787   
 788   <#-- STATIC TEXT -->
 789   <#-- Bootstrap colors: muted/primary/success/info/warning/danger -->
 790   <#-- AdminLTE colors: red/yellow/aqua/blue/black/light-blue/green/gray/navy/teal/olive/lime/orange/fuchsia/purple/maroon -->
 791   <#macro staticText inForm=true color='' id='' params=''>
 792       <p class="<#if inForm>form-control-static</#if><#if color!=''> text-${color}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 793           <#nested>
 794       </p>
 795   </#macro>
 796   
 797   <#-- CHECKBOX -->
 798   <#-- orientation: vertical/horizontal. Default is vertical -->
 799   <#macro checkBox name id='' labelKey='' labelFor='' orientation='vertical' value='' tabIndex='' title='' disabled=false readonly=false checked=false mandatory=mandatory params=''>
 800   	<#if orientation='vertical'>
 801   	<div class="checkbox">
 802   	</#if>
 803   	<label<#if orientation='horizontal'> class="checkbox-inline"</#if><#if labelFor!=''> for="${labelFor}"</#if>>
 804   	<input type="checkbox" id="${id}" name="${name}"<#if value!=''> value="${value}"</#if><#if tabIndex!=''> tabindex="${tabIndex}"</#if><#if checked> checked</#if><#if disabled> disabled</#if><#if readonly> readonly</#if><#if params!=''> ${params}</#if> />
 805   		<#if labelKey!=''>
 806   			${labelKey}
 807   		<#else>
 808   			&#160;
 809   		</#if>
 810   	</label>
 811   	<#if orientation='vertical'></div></#if>
 812   </#macro>
 813   
 814   <#-- RADIO BUTTON -->
 815   <#-- orientation: vertical/horizontal. Default is vertical -->
 816   <#macro radioButton name id='' value='' labelKey='' labelFor='' orientation='vertical' tabIndex='' title='' disabled=false readonly=false checked=false mandatory=mandatory params=''>
 817   	<#if orientation='vertical'>
 818   		<div class="radio">
 819   	</#if>
 820   			<label<#if orientation='horizontal'> class="radio-inline"</#if>>
 821   				<input type="radio" id="${id}" name="${name}"<#if value!=''> value="${value}"</#if><#if tabIndex!=''> tabindex="${tabIndex}"</#if><#if checked> checked</#if><#if disabled> disabled</#if><#if readonly> readonly</#if><#if mandatory> required</#if><#if params!=''> ${params}</#if> />
 822   			<#if labelKey!=''>
 823   					${labelKey}
 824   			<#else>
 825   					&#160;
 826   			</#if>
 827   			</label>
 828   <#if orientation='vertical'></div></#if>
 829   </#macro>
 830   
 831   
 832   <#-- INPUT-GROUP -->
 833   <#-- size: sm/lg/no size-->
 834   <#macro inputGroup size='' id='' params=''>
 835   	<div class="input-group<#if size!=''> input-group-${size}</#if>" <#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 836   		<#nested>
 837   	</div>
 838   </#macro>
 839   
 840   <#macro inputGroupItem type='btn' id='' params=''>
 841   <#-- type: btn/addon. default is btn-->
 842   	<span class="input-group-${type}"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 843   		<#nested>
 844   	</span>
 845   </#macro>
 846   
 847   <#-- DROPDOWN MENU -->
 848   <#-- class: dropdown-menu-right -->
 849   <#-- Expected content : <li><a>Your link here</a></li> -->
 850   <#macro dropdownMenu class='' id='' params=''>
 851   	<ul class="dropdown-menu ${class}"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 852   		<#nested>
 853   	</ul>
 854   </#macro>
 855   
 856   <#-- ROW -->
 857   <#macro row class='' id='' params=''>
 858   	<div class="row<#if class!=''> ${class}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 859   		<#nested>
 860   	</div>
 861   </#macro>
 862   
 863   <#-- COLUMNS -->
 864   <#-- cols = col-xs- (<544px)/col-sm- (>=544px)/col-md- (>=768px)/col-lg- (>=992px)/col-xl- (>=1200px) -->
 865   <#macro columns offsetXs=0 offsetSm=0 offsetMd=0 offsetLg=0 offsetXl=0 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='' params=''>
 866   	<div class="col-xs-${xs}<#if sm!=0> col-sm-${sm}</#if><#if md!=0> col-md-${md}</#if><#if lg!=0> col-lg-${lg}</#if><#if xl!=0> col-xl-${xl}</#if><#if offsetXs!=0> col-xs-offset-${offsetXs}</#if><#if offsetSm!=0> col-sm-offset-${offsetSm}</#if><#if offsetMd!=0> col-md-offset-${offsetMd}</#if><#if offsetLg!=0> col-lg-offset-${offsetLg}</#if><#if offsetXl!=0> col-xl-offset-${offsetXl}</#if><#if pushXs!=0> col-xs-push-${pushXs}</#if><#if pushSm!=0> col-sm-push-${pushSm}</#if><#if pushMd!=0> col-md-push-${pushMd}</#if><#if pushLg!=0> col-lg-push-${pushLg}</#if><#if pushXl!=0> col-xl-push-${pushXl}</#if><#if pullXs!=0> col-xs-pull-${pullXs}</#if><#if pullSm!=0> col-sm-pull-${pullSm}</#if><#if pullMd!=0> col-md-pull-${pullMd}</#if><#if pullLg!=0> col-lg-pull-${pullLg}</#if><#if pullXl!=0> col-xl-pull-${pullXl}</#if><#if class!=''> ${class}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 867   		<#nested>
 868   	</div>
 869   </#macro>
 870   
 871   <#-- TABS -->
 872   
 873   <#-- TAB Custom AdminLTE -->
 874   <#macro tabs color='' id='' params=''>
 875   	<div class="nav-tabs-custom<#if color!=''> ${color}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 876   		<#nested>
 877   	</div>
 878   </#macro>
 879   
 880   <#-- Bootstrap UL tabs -->
 881   <#-- type: tabs/tabs nav-justified/pills/pills nav-stacked/pills nav-justified -->
 882   <#macro listTabs type='tabs' id='' params=''>
 883   		<ul class="nav nav-${type}"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 884   			<#nested>
 885   		</ul>
 886   </#macro>
 887   
 888   <#-- TAB Content AdminLTE -->
 889   <#macro tabContent id='' params=''>
 890   		<div class="tab-content"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 891   			<#nested>
 892   		</div>
 893   </#macro>
 894   
 895   
 896   <#-- ACCORDION --> 
 897   <#-- The accordionContainer is the container for accordionPanel, which itself is the container for accordionHeader and accordionBody -->
 898   <#-- The childId argument in accordionPanel is meant to be used in the two sub-macros: accordionHeader and accordionBody -->
 899   <#macro accordionContainer id='' params=''>
 900   	<div class="box-group"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 901   		<#assign parentId = id>
 902   		<#nested>
 903   	</div>
 904   </#macro>
 905   
 906   <#macro accordionPanel color='' collapsed=true childId='' id='' params=''>
 907   	<div class="panel box box-${color}"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 908   		<#if collapsed = true>
 909   			<#assign aClass = 'collapsed'>
 910   			<#assign expanded = 'false'>
 911   			<#assign childClass = 'panel-collapse collapse'>
 912   		<#else>
 913   			<#assign aClass = ''>
 914   			<#assign expanded = 'true'>
 915   			<#assign childClass = 'panel-collapse collapse in'>
 916   		</#if>
 917   			<#assign childId = childId>
 918   		<#nested>
 919   	</div>
 920   </#macro>
 921   
 922   <#-- ACCORDION ELEMENT --> 
 923   <#-- The boxTools parameter is unused, kept for backwards compatibility -->
 924   <#macro accordionHeader title='' parentId=parentId childId=childId boxTools=false id='' params=''>
 925   		<div class="box-header with-border"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 926   			<h2 class="box-title">
 927   				<a class="${aClass}" data-toggle="collapse" data-parent="#${parentId}" href="#${childId}" aria-expanded="${expanded}">
 928   					${title}
 929   				</a>
 930   			</h2>
 931   			<#local nested><#nested></#local>
 932   			<#if nested?has_content>
 933   			<div class="box-tools">
 934   				${nested}
 935   			</div>
 936   			</#if>
 937   		</div>
 938   </#macro>
 939   
 940   <#macro accordionBody id=childId class=childClass expanded=expanded params=''>
 941   		<div id="${id}" class="${class}" aria-expanded="${expanded}"<#if params!=''> ${params}</#if>>
 942   			<@boxBody>
 943   				<#nested>
 944   			</@boxBody>
 945   		</div>
 946   </#macro>
 947   
 948   <#macro progressBar description='' id='' params=''>
 949   	<div class="progress"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 950   		<div id="progressbar" class="progress-bar progress-bar-striped" role="progressbar">
 951   			<div id="complexity">0%</div>
 952   		</div>
 953   	</div>
 954   	<#if description!=''>
 955   		<span class="progress-description">${description}</span>
 956   	</#if>
 957   </#macro>
 958   
 959   
 960   
 961   
 962   <#-- INFO-BOX AdminTLE (widget) -->
 963   <#-- color: only for the left side showing the icon. -->
 964   <#-- bgColor: for the right side containing the text -->
 965   <#macro infoBox color='' boxText='' boxIcon='' boxNumber='' unit='' bgColor='' progressBar='' progressDescription='' id='' params=''>
 966   	<div class="info-box<#if bgColor!=''> ${bgColor}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 967   		<span class="info-box-icon<#if color!=''> ${color}</#if>"><@icon style=boxIcon /></span>
 968   		<div class="info-box-content">
 969   			<span class="info-box-text">${boxText}</span>
 970   			<span class="info-box-number">${boxNumber?string(",000")}<#if unit!=''> <small>${unit}</small></#if></span>
 971   			<#if bgColor!='' && progressBar!=''>
 972   			<div class="progress">
 973   				<div class="progress-bar" style="width: ${progressBar}%"></div>
 974   			</div>
 975   			</#if>
 976   			<#if progressDescription!=''>
 977   			<span class="progress-description">${progressDescription}</span>
 978   			</#if>
 979   		</div>
 980   	</div>
 981   </#macro>
 982   
 983   <#-- TAG -->
 984   <#-- color: default/primary/success/info/warning/danger/ -->
 985   <#macro tag color='default' title='' type='span' id='' params=''>
 986   	<${type} class="label label-${color}"<#if title!=''> title='${title}'</#if><#if id!=''>id='${id}'</#if><#if params!=''>${params}</#if>>
 987   		<#nested>
 988   	</${type}>
 989   </#macro>
 990   
 991   <#-- BUTTON -->
 992   <#-- bootstrap 3 : size: btn-xs/btn-sm/btn-lg -->
 993   <#-- upcoming bootstrap 4 : size: btn-sm for small buttons/empty for medium buttons/btn-lg for large buttons -->
 994   <#-- color: btn-default[bootstrap4 : btn-secondary]/btn-primary/btn-success/btn-warning/btn-danger/btn-info/bg-purple/bg-blue/bg-navy/bg-teal/bg-maroon/bg-black/bg-gray/bg-olive/bg-lime/bg-orange/bg-fuchsia -->
 995   <#-- color (upcoming bootstrap 4): btn-outline-default/btn-outline-primary/btn-outline-success/btn-outline-warning/btn-outline-danger/btn-outline-info/ -->
 996   <#-- style: btn-block/btn-flat/close/navbar-toggle/collapsed... -->
 997   <#-- type: button/submit/reset -->
 998   <#-- params: data-toggle/data-target/data-dismiss... -->
 999   <#-- buttonIcon: icon name ex: info/check/comment/envelope... -->
 1000   <#-- iconPosition: left/right -->
 1001   <#-- cancel: switch to true for a cancellation form button. Adds the "formnovalidate" attribute to the button, as well as the right class -->
 1002   <#macro button name='' id='' type='button' size='' color='' style='btn-flat' class='' params='' value='' title='' tabIndex='' showTitle=true showTitleXs=true showTitleSm=true showTitleMd=true showTitleLg=true buttonIcon='' disabled=false iconPosition='left' dropdownMenu=false cancel=false>
 1003   	<#if cancel>
 1004   		<#assign buttonColor = 'btn-default' />
 1005   	<#elseif !cancel && color=''>
 1006   		<#assign buttonColor = 'btn-primary' />
 1007   	<#else>
 1008   		<#assign buttonColor = color />
 1009   	</#if>
 1010   	
 1011   	<#-- Visibility of button title -->
 1012   	<#assign showTitleClass = '' />
 1013   	<#if showTitle = false><#assign showTitleClass = 'sr-only' /></#if>
 1014   	<#if showTitleXs = false><#assign showTitleClass = showTitleClass + 'hidden-xs' /></#if>
 1015   	<#if showTitleSm = false><#assign showTitleClass = showTitleClass + ' ' + 'hidden-sm' /></#if>
 1016   	<#if showTitleMd = false><#assign showTitleClass = showTitleClass + ' ' + 'hidden-md' /></#if>
 1017   	<#if showTitleLg = false><#assign showTitleClass = showTitleClass + ' ' + 'hidden-lg' /></#if>
 1018   	
 1019   	<#if dropdownMenu>
 1020   	<div class="dropdown">
 1021   	</#if>
 1022   	
 1023   	<button class="<#if style!='close'>btn</#if><#if size!='' && style!='btn-box-tool'> btn-${size}</#if><#if buttonColor!='' && style!='btn-box-tool'> ${buttonColor}</#if><#if style!=''> ${style}</#if><#if dropdownMenu> dropdown-toggle</#if><#if class!=''> ${class}</#if>" type="${type}"<#if title!=''> title="${title}"</#if><#if name!=''> name="${name}"</#if><#if id!=''> id="${id}"</#if><#if value!=''> value="${value}"</#if><#if params!=''> ${params}</#if><#if disabled> disabled</#if><#if dropdownMenu> data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"</#if><#if cancel> formnovalidate</#if>>
 1024   		<#if buttonIcon!='' && iconPosition='left'><@icon style=buttonIcon /></#if>
 1025   		<#if showTitleClass!='' && style!='btn-box-tool'><span class="${showTitleClass}"></#if>${title}<#if showTitleClass!='' && style!='btn-box-tool'></span></#if>
 1026   		<#if buttonIcon!='' && iconPosition='right'><@icon style=buttonIcon /></#if>
 1027   		<#if dropdownMenu>
 1028   		&#160;<@icon style='caret-down' />
 1029   		</#if>
 1030   	</button>
 1031   	
 1032   	<#if dropdownMenu>
 1033   	<ul class="dropdown-menu"<#if id!=''> aria-labelledby="${id}"</#if>>
 1034   		<#nested>
 1035   	</ul>
 1036   	</div>
 1037   	</#if>
 1038   </#macro>
 1039   
 1040   <#-- A BUTTON (LINK STYLED AS A BUTTON) -->
 1041   <#-- size: btn-xs/btn-sm/btn-lg -->
 1042   <#-- color: btn-default/btn-primary/btn-success/btn-warning/btn-danger/btn-info/bg-purple/bg-blue/bg-navy/bg-teal/bg-maroon/bg-black/bg-gray/bg-olive/bg-lime/bg-orange/bg-fuchsia -->
 1043   <#-- style: btn-block/btn-flat/disabled/btn-app -->
 1044   <#-- icon: icon name ex: info/check/comment/envelope... -->
 1045   <#macro aButton name='' id='' href='' size='' color='btn-primary' style='btn-flat' class='' params='' title='' tabIndex='' showTitle=true showTitleXs=true showTitleSm=true showTitleMd=true showTitleLg=true buttonIcon='' disabled=false iconPosition='left' dropdownMenu=false>
 1046   	<#-- Bootstrap 4 transition -->
 1047   	<#if color='btn-secondary'>
 1048   		<#assign color_temp='btn-default'>
 1049   	<#else>
 1050   		<#assign color_temp=color>
 1051   	</#if>
 1052   	
 1053   	<#-- Visibility of button title -->
 1054   	<#assign showTitleClass = '' />
 1055   	<#if showTitle = false><#assign showTitleClass = 'sr-only' /></#if>
 1056   	<#if showTitleXs = false><#assign showTitleClass = showTitleClass + 'hidden-xs' /></#if>
 1057   	<#if showTitleSm = false><#assign showTitleClass = showTitleClass + ' ' + 'hidden-sm' /></#if>
 1058   	<#if showTitleMd = false><#assign showTitleClass = showTitleClass + ' ' + 'hidden-md' /></#if>
 1059   	<#if showTitleLg = false><#assign showTitleClass = showTitleClass + ' ' + 'hidden-lg' /></#if>
 1060   	
 1061   	<a class="btn<#if size!=''> btn-${size}</#if><#if color_temp!=''> ${color_temp}</#if><#if style!=''> ${style}</#if><#if class!=''> ${class}</#if>"<#if name!=''> name="${name}"</#if><#if id!=''> id="${id}"</#if> href="${href}" title="${title}"<#if params!=''> ${params}</#if><#if disabled> disabled</#if><#if dropdownMenu> data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"</#if>>
 1062   		<#if buttonIcon!='' && iconPosition='left'><@icon style=buttonIcon /></#if>
 1063   		<span class="${showTitleClass}">${title}</span>
 1064   		<#if buttonIcon!='' && iconPosition='right'><@icon style=buttonIcon /></#if>
 1065   		<#if dropdownMenu>
 1066   		&#160;<@icon style='caret-down' />
 1067   		</#if>
 1068   		<#nested>
 1069   	</a>
 1070   </#macro>
 1071   
 1072   <#-- BTN TOOLBAR -->
 1073   <#macro btnToolbar id='' params='' ariaLabel=''>
 1074   	<div class="btn-toolbar" role="toolbar"<#if ariaLabel!=''> aria-label="${ariaLabel}"</#if><#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1075   		<#nested>
 1076   	</div>
 1077   </#macro>
 1078   
 1079   <#-- BTN GROUP -->
 1080   <#-- size: sm/empty/lg -->
 1081   <#macro btnGroup size='' class='' id='' params='' ariaLabel=''>
 1082   	<div class="btn-group<#if size!=''> btn-group-${size}</#if><#if class!=''> ${class}</#if>" role="group"<#if ariaLabel!=''> aria-label="${ariaLabel}"</#if><#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1083   		<#nested>
 1084   	</div>
 1085   </#macro>
 1086   
 1087   <#-- Radio button/Checkbox as buttons (to use with btnGroup)  -->
 1088   <#-- type: radio/checkbox -->
 1089   <#macro btnGroupRadioCheckbox type='checkbox' color='primary' size='' name='' id='' params='' ariaLabel='' labelFor='' labelKey='' labelParams='' tabIndex='' value='' checked=false>
 1090   	<label class="btn btn-${color}<#if size!=''> btn-${size}</#if>" for="${labelFor}"<#if labelParams!=''> ${labelParams}</#if>>
 1091   	<input type="${type}" name="${name}" id="${id}" autocomplete="off"<#if value!=''> value="${value}"</#if><#if params!=''> ${params}</#if><#if tabIndex!=''> tabindex="${tabIndex}"</#if><#if checked> checked</#if> /><#if labelKey!=''>${labelKey}</#if>
 1092   	</label>
 1093   </#macro>
 1094   
 1095   
 1096   
 1097   <#-- MODAL -->
 1098   <#-- bgColor: modal-default/modal-primary/modal-info/modal-warning/modal-danger -->
 1099   <#macro modal id params='' bgColor=''>
 1100   <div class="modal ${bgColor} fade" tabindex="-1" role="dialog" id="${id}" data-toggle="modal"<#if params!=''> ${params}</#if>>
 1101   	<div class="modal-dialog" role="document">
 1102   		<div class="modal-content">
 1103   			<#nested>
 1104   		</div>
 1105   	</div>
 1106   </div>
 1107   </#macro>
 1108   
 1109   <#macro modalHeader titleLevel='h4' modalTitle='' id='' params=''>
 1110   <div class="modal-header"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1111   	<button type="button" class="close" data-dismiss="modal" aria-label="Close">
 1112   		<span aria-hidden="true">&times;</span>
 1113   	</button>
 1114   	<${titleLevel} class="modal-title">${modalTitle}</${titleLevel}>
 1115   </div>
 1116   </#macro>
 1117   
 1118   <#macro modalBody id='' params=''>
 1119   <div class="modal-body"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1120   	<#nested>
 1121   </div>
 1122   </#macro>
 1123   
 1124   <#macro modalFooter id='' params=''>
 1125   <div class="modal-footer"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1126   	<#nested>
 1127   </div>
 1128   </#macro>
 1129   
 1130   <#-- BREADCRUMBS -->
 1131   <#macro breadcrumbs id='' params=''>
 1132   <ol class="breadcrumb"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1133   	<#nested>
 1134   </ol>
 1135   </#macro>
 1136   
 1137   <#-- CALLOUT -->
 1138   <#-- AdminLTE classes: info/warning/danger/success -->
 1139   <#macro callOut color='' titleLevel='h3' title='' callOutIcon='' id='' params=''>
 1140   <div class="callout callout-${color}"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1141   	<#if title!=''><${titleLevel}><@icon style=callOutIcon /> ${title}</${titleLevel}></#if>
 1142   	<#nested>
 1143   </div>
 1144   </#macro>
 1145   
 1146   <#-- ALERT -->
 1147   <#-- classes: alert-success/alert-info/alert-warning/alert-danger + alert-dismissible -->
 1148   <#macro alert class='' titleLevel='h3' title='' iconTitle='' dismissible=false id='' params=''>
 1149   <div class="alert alert-${class}"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1150   	<#if dismissible>
 1151   		<@button color='' size='' style='close' params='data-dismiss="alert" aria-hidden="true"'>
 1152   			&times;
 1153   		</@button>
 1154   	</#if>
 1155   	<#if title!=''>
 1156   	<${titleLevel}>
 1157   		<#if iconTitle!=''><@icon style=iconTitle /></#if>
 1158   		${title}
 1159   	</${titleLevel}>
 1160   	</#if>
 1161   	<#nested>
 1162   </div>
 1163   </#macro>
 1164   
 1165   
 1166   <#---------------------------------------->
 1167   <#-- AdminLTE Box -->
 1168   <#-- color: default/primary/info/success/warning/danger -->
 1169   <#-- style: solid (no top border) -->
 1170   <#-- collapsed: true/false -->
 1171   <#macro box color='' id='' style='' class='' params='' collapsed=false>
 1172   <div class="box<#if color!=''> box-${color}</#if><#if style!=''> box-${style}</#if><#if class!=''> ${class}</#if><#if collapsed> collapsed-box</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1173   	<#nested>
 1174   </div>
 1175   </#macro>
 1176   
 1177   <#-- The boxTools parameter is unused, kept for backwards compatibility -->
 1178   <#macro boxHeader title='' i18nTitleKey='' showTitle=true id='' params='' boxTools=false titleLevel='h2'>
 1179   <div class="box-header with-border"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1180   <${titleLevel} class="box-title<#if showTitle=false> sr-only</#if>"><#if title!=''>${title}</#if><#if i18nTitleKey!=''>#i18n{${i18nTitleKey}}</#if></${titleLevel}>
 1181   	<#local nested><#nested></#local>
 1182   	<#if nested?has_content>
 1183   	<div class="box-tools">
 1184   		${nested}
 1185   	</div>
 1186   	</#if>
 1187   </div>
 1188   </#macro>
 1189   
 1190   <#macro boxBody class='' id='' params=''>
 1191   <div class="box-body<#if class!=''> ${class}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1192   	<#nested>
 1193   </div>
 1194   </#macro>
 1195   
 1196   <#macro boxFooter class='' id='' params=''>
 1197   <div class="box-footer<#if class!=''> ${class}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1198   	<#nested>
 1199   </div>
 1200   </#macro>
 1201   <#---------------------------------------->
 1202   	
 1203   	
 1204   
 1205   <#-- AdminLTE Small Box -->
 1206   <#-- color:Bootstrap + AdminLTE colors -->
 1207   <#-- unit: %,... -->
 1208   <#macro smallBox color='' title='' text='' boxIcon='' titleLevel='h3' unit='' url='' urlText='' id='' params=''>
 1209   <div class="small-box<#if color!=''> ${color}</#if>"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1210   	<div class="inner">
 1211   		<${titleLevel}>${title}<#if unit!=''><sup style="font-size:20px;">${unit}</sup></#if></${titleLevel}>
 1212   		<p>${text}</p>
 1213   	</div>
 1214   	<div class="icon">
 1215   		<@icon style=boxIcon />
 1216   	</div>
 1217   	<#if url!=''>
 1218   	<a class="small-box-footer" href="${url}">${urlText} <@icon style='arrow-circle-right' /></a>
 1219   	</#if>
 1220   </div>
 1221   </#macro>
 1222   
 1223   <#-- AdminLTE Error Page -->
 1224   <#-- Error Type: 500,404... -->
 1225   <#-- Color: primary/blue/navy/aqua/teal/green/orange/yellow/red/purple/maroon/gray/black... -->
 1226   <#macro errorPage color='' errorType='' id='' params=''>
 1227   <div class="error-page"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1228   	<h2 class="headline text-${color}">${errorType}</h2>
 1229   	<div class="error-content">
 1230   		<h3>
 1231   			<@icon style='warning' class='text-${color}' />
 1232   			<#if errorType=='404'>
 1233   				#i18n{portal.util.error404.title}
 1234   			<#elseif errorType='500'>
 1235   				#i18n{portal.util.error500.title}
 1236   			<#else>...
 1237   			</#if>
 1238   		</h3>
 1239   		<p>
 1240   			<#if errorType=='404'>
 1241   				#i18n{portal.util.error404.text} 
 1242   			<#elseif errorType='500'>
 1243   				#i18n{portal.util.error500.text} 
 1244   			<#else>...
 1245   			</#if>
 1246   		</p>
 1247   		<@aButton href='' size='' color='bg-${color}' style='btn-flat'>
 1248   			<@icon style='home' />
 1249   			#i18n{portal.util.labelBackHome}
 1250   		</@aButton>
 1251   	</div>
 1252   </div>
 1253   </#macro>
 1254   
 1255   <#-- CONTEXTUAL BACKGROUND P-->
 1256   <#-- Bootstrap colors: primary/success/info/warning/danger -->
 1257   <#-- AdminTLE colors: gray/gray-light/black/red/yellow/aqua/blue/light-blue/green/navy/teal/olive/lime/orange/fuchsia/purple/maroon -->
 1258   <#macro coloredBg color='' type='p' id='' params=''>
 1259   	<${type} class="bg-${color}"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1260   		<#nested>
 1261   	</${type}>
 1262   </#macro>
 1263   
 1264   <#macro listGroup id='' params=''>
 1265   	<ul class="list-group"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1266   	<#assign listElementClass = "list-group-item list-group-item-action">
 1267   	<#nested>
 1268   	</ul>
 1269   </#macro>
 1270   
 1271   <#macro unstyledList id='' params=''>
 1272   	<ul class="unstyled"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1273   	<#assign liClass = "margin">
 1274   	<#nested>
 1275   	</ul>
 1276   </#macro>
 1277   
 1278   <#-- DROPDOWN MENU LIST -->
 1279   <#macro dropdownList id='' params=''>
 1280   	<ul class="dropdown-menu"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1281   		<#nested>
 1282   	</ul>
 1283   </#macro>
 1284   
 1285   <#-- Will no longer exist in Boostrap 4. Use label/tag + .tag-pill instead -->
 1286   <#macro badge id='' params=''>
 1287   	<span class="badge"<#if id!=''> id="${id}"</#if><#if params!=''> ${params}</#if>>
 1288   		<#nested>
 1289   	</span>
 1290   </#macro>
 1291   
 1292   <#-- CARDS -->
 1293   <#macro card header=false headerTitle='' headerIcon=false headerTitleIcon=''>
 1294   	<div class="panel panel-default">
 1295   		<#if header><div class="panel-heading"><#if headerIcon><@icon style='${headerTitleIcon}' />&#160;</#if>${headerTitle}</div></#if>
 1296   		<div class="panel-body">
 1297   			<#nested>
 1298   		</div>
 1299   	</div>
 1300   </#macro>