Ponsse Products Carousel

ponsse-frontpage-usp-1

TECNOLOGÍA DE PUNTA PARE OBTENER MÁS INFORMA
TECNOLOGÍA DE PUNTA PARE OBTENER MÁS INFORMA

Publicador de contenidos

Ponsse-frontpage-banner-split-1440-620

PONSSE SERVICIO Ponsse le proporcionará una atención al cliente amplia y profesional PARE OBTENER MÁS INFORMA

ponsse-frontpage-video-banner-minimalistic

Ponsse-frontpage-banner-split

A LOGGER'S BEST FRIEND Ponsse es una empresa familiar cuyas raíces se encuentran en las profundidades del campo finlandés. PARE OBTENER MÁS INFORMA

Publicador de contenidos

Se ha producido un error al procesar la plantilla.
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")  
73														 && element.element("dynamic-content").getText()?has_content  
74														 && element.element("dynamic-content").getText() != "{}" > 
75                        <#assign imageContent = element.element("dynamic-content").getText()/> 
76                        <#break> 
77                    <#elseif "newsMainImage" == element.attributeValue("name")> 
78                        <#assign imageContent = getImageUrl(element.element("dynamic-content").getText()) /> 
79                    </#if> 
80                </#list> 
81 
82                <div class="asset-abstract news-item"> 
83                    <div class="pull-right"> 
84                        <@getEditIcon /> 
85                    </div> 
86 
87                    <a href="${getViewUrl(entry)}"> 
88                        <div class="news-image"> 
89                            <#if imageContent?has_content> 
90                                <img src="${imageContent}"/> 
91                            <#else> 
92                                <img src="/o/ponsse-theme/images/default-thumbnail-ponsse-290x200.jpg"/> 
93                            </#if> 
94                        </div> 
95 
96                        <div class="news-details"> 
97                            <div class="news-title">${entryTitle}</div> 
98                            <div class="news-date"><@getMetadataField fieldName="publish-date" /></div> 
99                        </div> 
100                    </a> 
101                </div> 
102                <#assign count = count + 1/> 
103                <#if (count == showNews)><#break></#if> 
104            </#if> 
105        </#list> 
106    </div> 
107 
108</div> 
109 
110<#macro getEditIcon> 
111    <#if assetRenderer.hasEditPermission(themeDisplay.getPermissionChecker())> 
112        <#assign redirectURL = renderResponse.createRenderURL() /> 
113 
114        ${redirectURL.setParameter("mvcPath", "/add_asset_redirect.jsp")} 
115        ${redirectURL.setWindowState("pop_up")} 
116 
117        <#assign editPortletURL = assetRenderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL)!"" /> 
118 
119        <#if validator.isNotNull(editPortletURL)> 
120            <#assign title = languageUtil.format(locale, "edit-x", entryTitle, false) /> 
121 
122            <@liferay_ui["icon"] 
123            cssClass="icon-monospaced visible-interaction" 
124            icon="pencil" 
125            markupView="lexicon" 
126            message=title 
127            url="javascript:Liferay.Util.openWindow({id:'" + renderResponse.getNamespace() + "editAsset', title: '" + title + "', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});" 
128            /> 
129        </#if> 
130    </#if> 
131</#macro> 
132 
133<#macro getMetadataField fieldName> 
134    <#if stringUtil.split(metadataFields)?seq_contains(fieldName)> 
135        <#assign dateFormat = "dd.MM.yyyy" /> 
136        <#if stringUtil.equals(fieldName, "author")> 
137            <@liferay.language key="by" /> ${htmlUtil.escape(portalUtil.getUserName(assetRenderer.getUserId(), assetRenderer.getUserName()))} 
138        <#elseif stringUtil.equals(fieldName, "categories")> 
139            <@liferay_ui["asset-categories-summary"] 
140            className=entry.getClassName() 
141            classPK=entry.getClassPK() 
142            portletURL=renderResponse.createRenderURL() 
143            /> 
144        <#elseif stringUtil.equals(fieldName, "create-date")> 
145            ${dateUtil.getDate(entry.getCreateDate(), dateFormat, locale)} 
146        <#elseif stringUtil.equals(fieldName, "expiration-date")> 
147            ${dateUtil.getDate(entry.getExpirationDate(), dateFormat, locale)} 
148        <#elseif stringUtil.equals(fieldName, "modified-date")> 
149            ${dateUtil.getDate(entry.getModifiedDate(), dateFormat, locale)} 
150        <#elseif stringUtil.equals(fieldName, "priority")> 
151            ${entry.getPriority()} 
152        <#elseif stringUtil.equals(fieldName, "publish-date")> 
153            ${dateUtil.getDate(entry.getPublishDate(), dateFormat, locale)} 
154        <#elseif stringUtil.equals(fieldName, "tags")> 
155            <@liferay_ui["asset-tags-summary"] 
156            className=entry.getClassName() 
157            classPK=entry.getClassPK() 
158            portletURL=renderResponse.createRenderURL() 
159            /> 
160        <#elseif stringUtil.equals(fieldName, "view-count")> 
161            ${entry.getViewCount()} <@liferay.language key="views" /> 
162        </#if> 
163    </#if> 
164</#macro> 
165 
166<#function getViewUrl entry> 
167    <#local 
168        viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry.getAssetRenderer(), entry, !stringUtil.equals(assetLinkBehavior, "showFullContent")) 
169        newViewUrl = viewURL?split("?")[0]?replace("/mYU7Sv3Vlsel/", "/P4s3zYhpxHUQ/")?replace("/${homeName}/", "/${newsLink}/") 
170    /> 
171    <#return newViewUrl> 
172</#function> 
173 
174<#function getImageUrl content> 
175    <#local imageURL = "/o/ponsse-theme/images/default-thumbnail-ponsse-304x171.jpg" /> 
176    <#if content?has_content> 
177        <#local 
178        imageUUID = jsonFactoryUtil.createJSONObject(content).getString("uuid") 
179        siteId =  themeDisplay.getSiteGroupId() 
180        imageURL = "/documents/${siteId}/${imageUUID}" 
181        /> 
182    </#if> 
183    <#return imageURL> 
184</#function> 
185 
186 
187<script> 
188        var cachebuster = Math.round(new Date().getTime() / 1000); 
189        var path = "/o/ponsse-theme/js/utils.js?cb=" + cachebuster; 
190        document.write("<script type='text/javascript' src='"+ path + "'><\/scr" + "ipt>"); 
191</script> 
192 
193<script> 
194    function hideArrowsNewsArrows(e) { 
195        var target = e.target; 
196        var scrollWidth = target.scrollWidth; 
197        var offsetWidth = target.offsetWidth; 
198        var scrollLeft = target.scrollLeft; 
199        var scrollDistance = scrollWidth - offsetWidth; 
200        var scrollPosition = scrollDistance - scrollLeft; 
201        var leftArrow = document.getElementById('ponsse-news-left-arrow') 
202        var rightArrow = document.getElementById('ponsse-news-right-arrow') 
203 
204        if (scrollPosition === scrollDistance) { 
205            leftArrow.style.display = "none"; 
206        } else { 
207            leftArrow.style.display = "flex"; 
208
209        if (scrollPosition === 0) { 
210            rightArrow.style.display = "none"; 
211        } else { 
212            rightArrow.style.display = "flex"; 
213
214
215 
216    dragToScrollHorizontal('ponsse-news-content', 'news-item', function (e) { 
217        hideArrowsNewsArrows(e); 
218    }) 
219 
220    function scrollContent(left) { 
221        var content = document.getElementById('ponsse-news-content'); 
222        smooth_scroll_to_horizontal(content, content.scrollLeft + 290 * (left ? 1 : -1), 400) 
223
224</script> 

ponsse-frontpage-ctl

Dedicado a la tala de corte a medida El método de corte a medida es un método de tala moderno y respetuoso con la naturaleza. PARE OBTENER MÁS INFORMA
Dedicado a la tala de corte a medida El método de corte a medida es un método de tala moderno y respetuoso con la naturaleza. PARE OBTENER MÁS INFORMA