Bugfixes for Freemarker functions

git-svn-id: https://svn.libreccm.org/ccm/trunk@6086 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2019-05-25 17:43:43 +00:00
parent 4115973bf0
commit c53a4b6bde
3 changed files with 58 additions and 32 deletions

View File

@ -114,11 +114,11 @@
</#function> </#function>
<#function getProjectMemberSurname member> <#function getProjectMemberSurname member>
<#return member["./surname"]> <#return member["./@surname"]>
</#function> </#function>
<#function getProjectMemberGivenname member> <#function getProjectMemberGivenname member>
<#return member["./givenname"]> <#return member["./@givenname"]>
</#function> </#function>

View File

@ -20,10 +20,12 @@ import freemarker.cache.TemplateLoader;
import freemarker.cache.WebappTemplateLoader; import freemarker.cache.WebappTemplateLoader;
import freemarker.ext.dom.NodeModel; import freemarker.ext.dom.NodeModel;
import freemarker.template.Configuration; import freemarker.template.Configuration;
import freemarker.template.SimpleNumber;
import freemarker.template.Template; import freemarker.template.Template;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
import freemarker.template.TemplateMethodModelEx; import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModelException; import freemarker.template.TemplateModelException;
import freemarker.template.TemplateNumberModel;
import freemarker.template.TemplateScalarModel; import freemarker.template.TemplateScalarModel;
import org.libreccm.theming.manifest.DateFormat; import org.libreccm.theming.manifest.DateFormat;
import org.libreccm.theming.manifest.ThemeManifest; import org.libreccm.theming.manifest.ThemeManifest;
@ -463,31 +465,55 @@ public class FreeMarkerPresentationManager implements PresentationManager {
final String style = ((TemplateScalarModel) list final String style = ((TemplateScalarModel) list
.get(0)) .get(0))
.getAsString(); .getAsString();
final String yearParam = ((TemplateScalarModel) list // final String yearParam = ((TemplateScalarModel) list
.get(1)) // .get(1))
.getAsString(); // .getAsString();
final String monthParam = ((TemplateScalarModel) list // final String monthParam = ((TemplateScalarModel) list
.get(2)) // .get(2))
.getAsString(); // .getAsString();
final String dayOfMonthParam = ((TemplateScalarModel) list // final String dayOfMonthParam = ((TemplateScalarModel) list
.get(3)) // .get(3))
.getAsString(); // .getAsString();
final String hourParam = ((TemplateScalarModel) list // final String hourParam = ((TemplateScalarModel) list
.get(4)) // .get(4))
.getAsString(); // .getAsString();
final String minuteParam = ((TemplateScalarModel) list // final String minuteParam = ((TemplateScalarModel) list
.get(5)) // .get(5))
.getAsString(); // .getAsString();
final String secondParam = ((TemplateScalarModel) list // final String secondParam = ((TemplateScalarModel) list
.get(6)) // .get(6))
.getAsString(); // .getAsString();
final int year = Integer.parseInt(yearParam); // final int year = Integer.parseInt(yearParam);
final int month = Integer.parseInt(monthParam); // final int month = Integer.parseInt(monthParam);
final int dayOfMonth = Integer.parseInt(dayOfMonthParam); // final int dayOfMonth = Integer.parseInt(dayOfMonthParam);
final int hour = Integer.parseInt(hourParam); // final int hour = Integer.parseInt(hourParam);
final int minute = Integer.parseInt(minuteParam); // final int minute = Integer.parseInt(minuteParam);
final int second = Integer.parseInt(secondParam); // final int second = Integer.parseInt(secondParam);
final int year = ((TemplateNumberModel) list
.get(1))
.getAsNumber()
.intValue();
final int month = ((TemplateNumberModel) list
.get(2))
.getAsNumber()
.intValue();
final int dayOfMonth = ((TemplateNumberModel) list
.get(3))
.getAsNumber()
.intValue();
final int hour = ((TemplateNumberModel) list
.get(4))
.getAsNumber()
.intValue();
final int minute = ((TemplateNumberModel) list
.get(5))
.getAsNumber()
.intValue();
final int second = ((TemplateNumberModel) list
.get(6))
.getAsNumber()
.intValue();
final String format = findFormat(dateFormats, style, locale) final String format = findFormat(dateFormats, style, locale)
.orElse("YYYY-MM-dd"); .orElse("YYYY-MM-dd");

View File

@ -35,11 +35,11 @@
</#function> </#function>
<#function formatDateTime style date> <#function formatDateTime style date>
<#assign year = (date["./@year"]?size > 0)?then(date["./@year"], 0)> <#assign year = (date["./@year"]?size > 0)?then(date["./@year"]?number, 0)>
<#assign month = (date["./@month"]?size > 0)?then(date["./@month"], 0)> <#assign month = (date["./@month"]?size > 0)?then(date["./@month"]?number + 1, 0)>
<#assign day = (date["./@day"]?size > 0)?then(date["./@day"], 0)> <#assign day = (date["./@day"]?size > 0)?then(date["./@day"]?number, 0)>
<#assign hour = (date["./@hour"]?size > 0)?then(date["./@hour"], 0)> <#assign hour = (date["./@hour"]?size > 0)?then(date["./@hour"]?number, 0)>
<#assign minute = (date["./@minute"]?size > 0)?then(date["./@minute"], 0)> <#assign minute = (date["./@minute"]?size > 0)?then(date["./@minute"]?number, 0)>
<#assign second = (date["./@second"]?size > 0)?then(date["./@second"], 0)> <#assign second = (date["./@second"]?size > 0)?then(date["./@second"]?number, 0)>
<#return _formatDateTime(style, year, month, day, hour, minute, second)> <#return _formatDateTime(style, year, month, day, hour, minute, second)>
</#function> </#function>