frontpage-banner-hero

Ponsse Products Carousel

Chargement...
Chargement...
Voir tous les produits

ponsse-frontpage-usp-1

TECHNOLOGIE DE POINTE LIRE PLUS
TECHNOLOGIE DE POINTE LIRE PLUS

Agrégateur de contenus

Ponsse-frontpage-banner-split-1440-620

PONSSE SERVICES Ponsse le proporcionará una atención al cliente amplia y profesional LIRE PLUS

ponsse-frontpage-video-banner-minimalistic

Ponsse-frontpage-banner-split

LOGGING TOGETHER WORLDWIDE Ponsse est une entreprise familiale dont les racines sont profondément ancrées dans la campagne finlandaise. LIRE PLUS

Agrégateur de contenus

Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> assetRenderer.getArticle  [in template "1812923#1812963#1814626" at line 48, column 34]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: journalArticle = assetRenderer.getArt...  [in template "1812923#1812963#1814626" at line 48, column 17]
----
1<#assign showNews = 8 
2count = 0 /> 
3 
4<div class="ponsse-news"> 
5    <div class="header"> 
6        <div class="title"><@liferay_ui["message"] key="ponsse.news" /></div> 
7        <div class="all-events-text"> 
8            <a href=${themeDisplay.getThemeSetting("ponsse.news-link")}> 
9                <i class="fas fa-arrow-right"></i> 
10                <@liferay_ui["message"] key="ponsse.view-all-news" /> 
11            </a> 
12        </div> 
13    </div> 
14 
15 
16    <div class="content" id="ponsse-news-content"> 
17        <div class="arrow-left" id="ponsse-news-left-arrow" onclick="scrollContent(false)"> 
18            <i class="fas fa-chevron-left"></i> 
19        </div> 
20        <div class="arrow-right" id="ponsse-news-right-arrow" onclick="scrollContent(true)"> 
21            <i class="fas fa-chevron-right"></i> 
22        </div> 
23        <#if !entries?has_content> 
24            <#if !themeDisplay.isSignedIn()> 
25                ${renderRequest.setAttribute("PORTLET_CONFIGURATOR_VISIBILITY", true)} 
26            </#if> 
27 
28            <div class="alert alert-info"> 
29                <@liferay_ui["message"] key="there-are-no-results" /> 
30            </div> 
31        </#if> 
32 
33        <#assign  
34            dateFormat = "dd.MM.yyyy "  
35            newsLink = themeDisplay.getThemeSetting("ponsse.news-link") 
36            homeName = portalUtil.getLayoutFriendlyURL(layout, themeDisplay)?keep_after_last("/") 
37        /> 
38 
39        <#list entries as entry> 
40            <#assign 
41                entry = entry 
42 
43                assetRenderer = entry.getAssetRenderer() 
44 
45                entryTitle = htmlUtil.escape(entry.getTitle(locale)) 
46                entryDescription = htmlUtil.escape(entry.getDescription(locale)) 
47 
48                journalArticle = assetRenderer.getArticle() 
49                structureKey = journalArticle.getDDMStructureKey() 
50 
51                document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) 
52                rootElement = document.getRootElement() 
53                elements = rootElement.elements() 
54                imageContent = "" 
55                displayLocales = "" 
56                categories = entry.getCategories() 
57            /> 
58 
59            <#if categories?has_content> 
60                <#list categories as cat> 
61                    <#if (cat.getVocabularyId()?long == 1814586)> 
62                        <#assign displayLocales = cat.getName() + ", " + displayLocales/> 
63                    </#if> 
64 
65                </#list> 
66            </#if> 
67             
68            <#if ( !displayLocales?has_content || displayLocales?contains(locale) || ( stringUtil.equals("228126", structureKey) && displayLocales?contains("en_US") ) ) && (count < showNews)> 
69                <#list elements as element> 
70                    <#if "cisionMainImage" == element.attributeValue("name") > 
71                        <#assign imageContent = element.element("dynamic-content").getText() /> 
72                    <#elseif "cisionDocumentLibraryImage" == element.attributeValue("name") && element.element("dynamic-content").getText()?has_content > 
73                        <#assign imageContent = element.element("dynamic-content").getText()/> 
74                        <#break> 
75                    <#elseif "newsMainImage" == element.attributeValue("name")> 
76                        <#assign imageContent = getImageUrl(element.element("dynamic-content").getText()) /> 
77                    </#if> 
78                </#list> 
79 
80                <div class="asset-abstract news-item"> 
81                    <div class="pull-right"> 
82                        <@getEditIcon /> 
83                    </div> 
84 
85                    <a href="${getViewUrl(entry)}"> 
86                        <div class="news-image"> 
87                            <#if imageContent?has_content> 
88                                <img src="${imageContent}"/> 
89                            <#else> 
90                                <img src="/o/ponsse-theme/images/default-thumbnail-ponsse-290x200.jpg"/> 
91                            </#if> 
92                        </div> 
93 
94                        <div class="news-details"> 
95                            <div class="news-title">${entryTitle}</div> 
96                            <div class="news-date"><@getMetadataField fieldName="publish-date" /></div> 
97                        </div> 
98                    </a> 
99                </div> 
100                <#assign count = count + 1/> 
101                <#if (count == showNews)><#break></#if> 
102            </#if> 
103        </#list> 
104    </div> 
105 
106</div> 
107 
108<#macro getEditIcon> 
109    <#if assetRenderer.hasEditPermission(themeDisplay.getPermissionChecker())> 
110        <#assign redirectURL = renderResponse.createRenderURL() /> 
111 
112        ${redirectURL.setParameter("mvcPath", "/add_asset_redirect.jsp")} 
113        ${redirectURL.setWindowState("pop_up")} 
114 
115        <#assign editPortletURL = assetRenderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL)!"" /> 
116 
117        <#if validator.isNotNull(editPortletURL)> 
118            <#assign title = languageUtil.format(locale, "edit-x", entryTitle, false) /> 
119 
120            <@liferay_ui["icon"] 
121            cssClass="icon-monospaced visible-interaction" 
122            icon="pencil" 
123            markupView="lexicon" 
124            message=title 
125            url="javascript:Liferay.Util.openWindow({id:'" + renderResponse.getNamespace() + "editAsset', title: '" + title + "', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});" 
126            /> 
127        </#if> 
128    </#if> 
129</#macro> 
130 
131<#macro getMetadataField fieldName> 
132    <#if stringUtil.split(metadataFields)?seq_contains(fieldName)> 
133        <#assign dateFormat = "dd.MM.yyyy" /> 
134        <#if stringUtil.equals(fieldName, "author")> 
135            <@liferay.language key="by" /> ${htmlUtil.escape(portalUtil.getUserName(assetRenderer.getUserId(), assetRenderer.getUserName()))} 
136        <#elseif stringUtil.equals(fieldName, "categories")> 
137            <@liferay_ui["asset-categories-summary"] 
138            className=entry.getClassName() 
139            classPK=entry.getClassPK() 
140            portletURL=renderResponse.createRenderURL() 
141            /> 
142        <#elseif stringUtil.equals(fieldName, "create-date")> 
143            ${dateUtil.getDate(entry.getCreateDate(), dateFormat, locale)} 
144        <#elseif stringUtil.equals(fieldName, "expiration-date")> 
145            ${dateUtil.getDate(entry.getExpirationDate(), dateFormat, locale)} 
146        <#elseif stringUtil.equals(fieldName, "modified-date")> 
147            ${dateUtil.getDate(entry.getModifiedDate(), dateFormat, locale)} 
148        <#elseif stringUtil.equals(fieldName, "priority")> 
149            ${entry.getPriority()} 
150        <#elseif stringUtil.equals(fieldName, "publish-date")> 
151            ${dateUtil.getDate(entry.getPublishDate(), dateFormat, locale)} 
152        <#elseif stringUtil.equals(fieldName, "tags")> 
153            <@liferay_ui["asset-tags-summary"] 
154            className=entry.getClassName() 
155            classPK=entry.getClassPK() 
156            portletURL=renderResponse.createRenderURL() 
157            /> 
158        <#elseif stringUtil.equals(fieldName, "view-count")> 
159            ${entry.getViewCount()} <@liferay.language key="views" /> 
160        </#if> 
161    </#if> 
162</#macro> 
163 
164<#function getViewUrl entry> 
165    <#local 
166        viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry.getAssetRenderer(), entry, !stringUtil.equals(assetLinkBehavior, "showFullContent")) 
167        newViewUrl = viewURL?split("?")[0]?replace("/mYU7Sv3Vlsel/", "/P4s3zYhpxHUQ/")?replace("/${homeName}/", "/${newsLink}/") 
168    /> 
169    <#return newViewUrl> 
170</#function> 
171 
172<#function getImageUrl content> 
173    <#local imageURL = "/o/ponsse-theme/images/default-thumbnail-ponsse-304x171.jpg" /> 
174    <#if content?has_content> 
175        <#local 
176        imageUUID = jsonFactoryUtil.createJSONObject(content).getString("uuid") 
177        siteId =  themeDisplay.getSiteGroupId() 
178        imageURL = "/documents/${siteId}/${imageUUID}" 
179        /> 
180    </#if> 
181    <#return imageURL> 
182</#function> 
183 
184 
185<script> 
186        var cachebuster = Math.round(new Date().getTime() / 1000); 
187        var path = "/o/ponsse-theme/js/utils.js?cb=" + cachebuster; 
188        document.write("<script type='text/javascript' src='"+ path + "'><\/scr" + "ipt>"); 
189</script> 
190 
191<script> 
192    function hideArrowsNewsArrows(e) { 
193        var target = e.target; 
194        var scrollWidth = target.scrollWidth; 
195        var offsetWidth = target.offsetWidth; 
196        var scrollLeft = target.scrollLeft; 
197        var scrollDistance = scrollWidth - offsetWidth; 
198        var scrollPosition = scrollDistance - scrollLeft; 
199        var leftArrow = document.getElementById('ponsse-news-left-arrow') 
200        var rightArrow = document.getElementById('ponsse-news-right-arrow') 
201 
202        if (scrollPosition === scrollDistance) { 
203            leftArrow.style.display = "none"; 
204        } else { 
205            leftArrow.style.display = "flex"; 
206
207        if (scrollPosition === 0) { 
208            rightArrow.style.display = "none"; 
209        } else { 
210            rightArrow.style.display = "flex"; 
211
212
213 
214    dragToScrollHorizontal('ponsse-news-content', 'news-item', function (e) { 
215        hideArrowsNewsArrows(e); 
216    }) 
217 
218    function scrollContent(left) { 
219        var content = document.getElementById('ponsse-news-content'); 
220        smooth_scroll_to_horizontal(content, content.scrollLeft + 290 * (left ? 1 : -1), 400) 
221
222</script> 

ponsse-frontpage-ctl

SPÉCIALISTE DE L´EXPLOITATION FORESTIÈRE PAR COUPE À LONGUEUR La méthode de coupe à longueur est une méthode d’exploitation forestière moderne et respectueuse de la nature. LIRE PLUS
SPÉCIALISTE DE L´EXPLOITATION FORESTIÈRE PAR COUPE À LONGUEUR La méthode de coupe à longueur est une méthode d’exploitation forestière moderne et respectueuse de la nature. LIRE PLUS

ponsse-frontpage-subscribe-banner

RESTEZ CONNECTÉ AVEC PONSSE S'inscrire à notre newsletter & PONSSE News S'inscrire