Fehler bei der Verarbeitung der Vorlage.
?substring(...) argument #2 had invalid value: The index must be at least 0, but was -1. ---- FTL stack trace ("~" means nesting-related): - Failed at: #local lResult = lResult?substring(0,... [in template "10155#10193#6634329" in function "getShortTitle" at line 141, column 9] - Reached through: #assign lShortTitle = getShortTitle(l... [in template "10155#10193#6634329" in macro "archiveDisplay" at line 86, column 9] - Reached through: @archiveDisplay entry [in template "10155#10193#6634329" at line 28, column 57] ----
1<#setting url_escaping_charset='ISO-8859-1'>
2<#assign liferay_ui = taglibLiferayHash["/META-INF/liferay-ui.tld"] />
3<#assign redirectURL = renderResponse.createRenderURL() />
4<#assign backLink = currentURL?url/>
5<#assign lBiImage = "/documents/804663/804682/bi-img/b3ae601e-5ecc-422a-9527-2a556bbd36da?t=1427875520771" />
6<#assign lBiType = "BI" />
7<#assign lBiStructureId = 769975/>
8<#global assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
9<#global assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
10<#global lClassNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")>
11<#global lDDMStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")>
12<#global journalClassName="com.liferay.journal.model.JournalArticle"/>
13
14<#global DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
15
16<#assign lClassId = lClassNameLocalService.getClassNameId(journalClassName) />
17<#if entries?has_content>
18 <section class="section-communications">
19 <#list entries as entry>
20 <article class="communication-item grid__row">
21 <#assign lChapo = "" />
22 <#assign entry = entry />
23 <#assign className = lClassNameLocalService.getClassName(entry.getClassNameId()).getValue() >
24 <#if className == journalClassName >
25 <#if entry.getAssetRenderer()??>
26 <#assign renderer = entry.getAssetRenderer() >
27 <#if renderer.getArticle()??>
28 <@archiveDisplay entry/>
29 </#if>
30 </#if>
31 </#if>
32 <#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())>
33 <div class="lfr-meta-actions" style="float: right;"><@getEditIcon /></div>
34 </#if>
35 </article>
36
37 </#list>
38 </section>
39</#if>
40
41<#macro archiveDisplay entry>
42 <#assign availableLanguages = entry.getAvailableLanguageIds() />
43 <#assign journalArticle = renderer.getArticle() >
44 <#assign viewURL = "/web/communication/detail?groupId=${entry.getGroupId()}&articleId=${journalArticle.getArticleId()}&redirect=${backLink}" />
45 <#assign lStructureId = journalArticle.getStructureId() />
46 <#assign lStructure = lDDMStructureLocalService.getStructure(themeDisplay.getCompanyGroupId(),lClassId,lStructureId?string) />
47 <#assign lStructureName = lStructure.getName()?trim />
48 <#assign rootElement = getContentXml(entry) />
49 <#if lStructure.getStructureId() == lBiStructureId>
50 <#assign image = lBiImage />
51 <#else>
52 <#assign image = "" >
53 <#assign image = getStructureValue2("Image",rootElement, availableLanguages) />
54
55 <#if image == "" >
56 <#assign image = "noImage" >
57 <#else>
58 <#local imageJson = jsonFactoryUtil.createJSONObject(image)/>
59 <#local imageObject = DLFileEntryLocalService.getFileEntryByUuidAndGroupId(imageJson.getString("uuid"),imageJson.getString("groupId")?number) />
60 <#local imageUrl = "/documents/"+imageObject.getGroupId()+"/"+imageObject.getFolderId()+"/"+ imageJson.getString("title")+"/"+imageJson.getString("uuid") />
61 </#if>
62 </#if>
63
64 <#assign lChapoNode = getNodes("Lead", rootElement) />
65
66 <#if lChapoNode?size!=0>
67 <#assign lChapo = getStructureValue(lChapoNode[0], "fr_FR")/>
68 </#if>
69 <#if image != "noImage">
70 <div class="grid__col-xxs--12 grid__col-m--5">
71 <figure class="communication-img" style="height: auto;">
72 <a class="loading" href="${viewURL}">
73 <img src="${imageUrl}" alt="" class="js-lazy is-loaded">
74 <span>Lire la suite</span>
75 <i class="icon icon_arrow-right">
76 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
77 <use xlink:href="/documents/10181/2591868/sprite.svg#svg-arrow-right"></use>
78 <use xlink:href="#svg-arrow-right"></use>
79 </svg>
80 </i>
81 </a>
82 </figure>
83 </div>
84 </#if>
85 <#assign lTitle = entry.getTitle(locale) />
86 <#assign lShortTitle = getShortTitle(lTitle) />
87 <#assign eSummary = entry.getSummary(locale, true) />
88 <#assign eSummary = stringUtil.shorten(eSummary, 230) />
89
90 <#if image != "noImage">
91 <div class="grid__col-xxs--12 grid__col-m--7">
92 <#else>
93 <div class="grid__col-xxs--12">
94 <div class="grid__col-m--12 col-xs-no-gutter col-n-gutter">
95 </#if>
96 <div class="communication-info">
97 <@entryLinkCreator linkText="" entry=entry type="title" />
98 </div>
99
100 <h3 class="communication-title"><a href="${viewURL}">${lShortTitle}</a></h3>
101 <p class="communication-desc">${eSummary}</p>
102 <!--<p class="communication-cat"><@getPouvoir entry=entry /></p>-->
103
104
105
106 <#if image != "noImage">
107 </div>
108 <#else>
109 </div>
110
111 </div>
112 </#if>
113
114
115 <a class="communication-link" href="${viewURL}" ></a>
116
117
118
119 <#--
120 <#if lChapo??>
121 <#if lChapo!="">
122 ${lChapo}
123 </#if>
124 </#if>
125
126 <#if eSummary?has_content>
127 <#if eSummary!=lTitle>
128 <br/>
129 </#if>
130 </#if>
131 -->
132
133</#macro>
134
135<#function getShortTitle pTitle=''>
136 <#local lResult = pTitle?trim />
137 <#-- Test if last 22 chars is a timestamp -->
138 <#local lMatch = lResult?matches("^.*([01][0-9]|2[0-3]):[0-5]\\d:[0-5]\\d$") />
139 <#if lMatch>
140
141 <#local lResult = lResult?substring(0,lResult?length-22) />
142
143 </#if>
144 <#return lResult />
145</#function>
146
147<#macro getCategoryDate entry>
148 <#assign lTypologie = "" />
149 <#assign lPouvoir = "" />
150 <#assign dateFormat = "dd.MM.yyyy" />
151 <#assign categories = entry.getCategories()>
152
153 <#list categories as category>
154 <#if assetVocabularyService.getVocabulary(category.vocabularyId)??>
155 <#assign vocabulary = assetVocabularyService.getVocabulary(category.vocabularyId) />
156 <#if vocabulary.name = "020 Typologies">
157 <#assign lCategory = category.getDescription(locale)?trim />
158 <#if lCategory=="" >
159 <#assign lCategory = category.getDescription(locale)?trim />
160 </#if>
161 <#assign lTypologie = lTypologie+" | "+lCategory />
162 </#if>
163 <#if vocabulary.name = "010 Pouvoirs">
164 <#assign lCategory = category.getDescription(themeDisplay.getLocale())?trim />
165 <#if lCategory=="" >
166 <#assign lCategory = category.getDescription(locale)?trim />
167 </#if>
168 <#assign lPouvoir = lPouvoir+" | "+lCategory />
169 </#if>
170 </#if>
171 </#list>
172 ${dateUtil.getDate(entry.getPublishDate(), dateFormat, locale)}
173
174 <#if lTypologie??>
175 ${lTypologie}
176 </#if>
177
178</#macro>
179
180<#macro getPouvoir entry>
181
182 <#assign lPouvoir = "" />
183
184 <#assign categories = entry.getCategories()>
185
186 <#list categories as category>
187 <#if assetVocabularyService.getVocabulary(category.vocabularyId)?? >
188 <#assign vocabulary = assetVocabularyService.getVocabulary(category.vocabularyId) />
189 <#if vocabulary.name = "010 Pouvoirs">
190 <#assign lCategory = category.getDescription(themeDisplay.getLocale())?trim />
191 <#if lCategory=="" >
192 <#assign lCategory = category.getTitle(themeDisplay.getLocale())?trim />
193 </#if>
194 <#assign lPouvoir = lCategory />
195 </#if>
196 </#if>
197 </#list>
198
199 <#if lPouvoir??>
200 ${lPouvoir}
201 </#if>
202</#macro>
203
204<#macro entryLinkCreator entry linkText type>
205 <#assign entryRenderURL = renderResponse.createRenderURL() />
206 ${entryRenderURL.setParameter("struts_action", "/asset_publisher/view_content")}
207 ${entryRenderURL.setParameter("assetEntryId", entry.getEntryId()?string)}
208 ${entryRenderURL.setParameter("redirect", renderResponse.encodeURL("${currentURL}"))}
209 ${entryRenderURL.setParameter("portlet_id", "test")}
210 ${entryRenderURL.setWindowState("maximized")}
211 ${entryRenderURL.setParameter("type", entry.getAssetRendererFactory().getType())}
212 <#if type == "title">
213 <@getCategoryDate entry/>
214 <#else>
215 ${linkText}
216 </#if>
217</#macro>
218
219
220<#function getNodes pElementName pXmlContent>
221 <#assign lElementXPath = "dynamic-element[@name='"+pElementName+"']"/>
222 <#assign lXPathSelector = saxReaderUtil.createXPath(lElementXPath) />
223 <#assign lResult = lXPathSelector.selectNodes(pXmlContent) />
224 <#return lResult/>
225</#function>
226
227<#function getStructureValue pNode pDefaultLanguage>
228 <#assign lResult = "" />
229 <#assign lCurElementXPath = "dynamic-content[@language-id='" + locale + "']" />
230 <#assign lXPathSelector = saxReaderUtil.createXPath(lCurElementXPath) />
231 <#if lXPathSelector.selectSingleNode(pNode)??>
232 <#assign lValue = lXPathSelector.selectSingleNode(pNode) />
233 <#assign lResult = lValue.getStringValue() />
234 <#else>
235 <#assign lCurElementXPath = "dynamic-content[@language-id='fr_FR']" />
236 <#assign lXPathSelector = saxReaderUtil.createXPath(lCurElementXPath) />
237 <#if lXPathSelector.selectSingleNode(pNode)?? >
238 <#assign lValue = lXPathSelector.selectSingleNode(pNode) />
239 <#assign lResult = lValue.getStringValue() />
240 <#else>
241 <#assign lCurElementXPath = "dynamic-content[@language-id='" + pDefaultLanguage + "']" />
242 <#assign lXPathSelector = saxReaderUtil.createXPath(lCurElementXPath) />
243 <#assign lValue = lXPathSelector.selectSingleNode(pNode) />
244 <#assign lResult = lValue.getStringValue() />
245 </#if>
246 </#if>
247 <#return lResult?string />
248</#function>
249
250<#function getContentXml entry>
251 <#assign renderer = entry.getAssetRenderer() />
252 <#assign className = renderer.getClassName() />
253 <#if className == "com.liferay.journal.model.JournalArticle">
254 <#assign journalArticle = renderer.getArticle() />
255 <#assign document = saxReaderUtil.read(journalArticle.getContent())/>
256 <#assign rootElement = document.getRootElement() />
257 <#return rootElement/>
258 </#if>
259 <#return "noJournalArticle"/>
260</#function>
261
262<#function getStructureValue2 elementName xmlContent availableLanguages>
263 <#assign availableLanguagesXPathSelector = saxReaderUtil.createXPath("/*/@available-locales") />
264 <#if availableLanguagesXPathSelector.selectSingleNode(xmlContent)?? >
265 <#assign available = availableLanguagesXPathSelector.selectSingleNode(xmlContent) />
266 </#if>
267 <#if availableLanguages?seq_contains(locale.toString())>
268 <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='" + locale + "']" />
269 <#else>
270 <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='" + entry.getDefaultLanguageId() + "']" />
271 </#if>
272 <#assign xPathSelector = saxReaderUtil.createXPath(curElementXPath) />
273 <#if xPathSelector.selectSingleNode(xmlContent)?? >
274 <#assign structureValue = xPathSelector.selectSingleNode(xmlContent).getStringValue() />
275 <#else>
276 <#assign structureValue = "" />
277 </#if>
278 <#return structureValue/>
279</#function>
280
281<#macro getEditIcon>
282 <#local redirectURL = renderResponse.createRenderURL() />
283
284 ${redirectURL.setParameter("struts_action", "/asset_publisher/add_asset_redirect")}
285 ${redirectURL.setWindowState("pop_up")}
286
287 <#local editPortletURL = renderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL) />
288
289 <#if validator.isNotNull(editPortletURL)>
290 <#local title = languageUtil.get(locale, "edit") />
291
292 <@liferay_ui["icon"]
293 iconCssClass="icon-pencil"
294 message=title
295 url="javascript:Liferay.Util.openWindow({dialog: {width: 960}, id:'" + renderResponse.getNamespace() + "editAsset', title: '" + title + "', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});"
296 />
297 </#if>
298</#macro>