Fehler bei der Verarbeitung der Vorlage.
Error on line 56, column 23 in 10132#10165#278683314
groupService.getGroup(page.getGroupId()) is undefined.
It cannot be assigned to pageGroup
1<#if (!getterUtil.getBoolean((showLoggedIn.getData())!false) || permissionChecker.isSignedIn()) > 
2    <#assign hasPages   = prPageRoot.getData()?trim?has_content /> 
3    <#if hasPages> 
4      <#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.service.LayoutLocalService")> 
5      <#assign layoutService      = serviceLocator.findService("com.liferay.portal.service.LayoutService") /> 
6      <#assign groupService       = serviceLocator.findService("com.liferay.portal.service.GroupService")> 
7      <#assign rootPage           = layoutLocalService.getLayout(prPageRoot.getData()?number)! /> 
8      <#if rootPage??> 
9        <#assign rootLevel      = layoutService.getLayouts(rootPage.getGroupId(), rootPage.isPrivateLayout(), rootPage.getLayoutId()) /> 
10        <div class="container-fluid"> 
11          <div class="row"> 
12            <div class="col-3"> 
13              <h1>&nbsp;</h1> 
14              <style> 
15                ul.pr-nav { 
16 
17                  margin-left:0.5em; 
18                  margin-bottom:0.25em; 
19 
20
21 
22                ul.pr-nav-root { 
23 
24                  margin-left: 0; 
25 
26
27 
28                li.pr-navitem { 
29 
30                  list-style: none; 
31                  margin-bottom:0.25em; 
32                   
33
34 
35                .pr-active { 
36 
37                  font-weight: bold; 
38 
39
40 
41                .pr-loading { 
42 
43                  opacity: 0.5; 
44 
45
46 
47              </style> 
48              <ul class="pr-nav pr-nav-root"> 
49                <li class="pr-navitem"><a id="prNavMainItem" href="" class="pr-navitem pr-active"></a></li> 
50                <li class="pr-navitem"> 
51                  <ul class="pr-nav"> 
52                    <#list rootLevel as page> 
53                      <#assign targetURL    = "" /> 
54                      <#assign isURL        = "url" == page.getType() /> 
55                      <#assign isLinkToPage = "link_to_layout" == page.getType() /> 
56                      <#assign pageGroup    = groupService.getGroup(page.getGroupId()) /> 
57                      <#assign pageUrl      = "/" /> 
58 
59                      <#if page.isPrivateLayout()> 
60                        <#assign pageUrl = pageUrl + "group" /> 
61                      <#else>   
62                        <#assign pageUrl = pageUrl + "web" /> 
63                      </#if> 
64                      <#assign pageUrl = pageUrl + pageGroup.friendlyURL + page.friendlyURL /> 
65 
66                      <li class="pr-navitem pr-navitem-root"><a href="${htmlUtil.escapeAttribute(pageUrl)}" class="pr-navitem">${page.nameCurrentValue}</a></li> 
67                    </#list> 
68                    <#if prGalleryFolder.getData()?trim?has_content> 
69                      <li class="pr-navitem"><a class="pr-gallery" href="#" data-gallery="${prGalleryFolder.getData()?trim}">Bildergalerie</a></li> 
70                    </#if> 
71                    <#if prGalleryAdditions.getSiblings()?has_content> 
72                      <#assign dlFolderService  = serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFolderService") /> 
73                      <#list prGalleryAdditions.getSiblings() as cur_prGalleryAdditions> 
74                        <#if cur_prGalleryAdditions.getData()?has_content> 
75                            <#assign dlFolder = dlFolderService.getFolder(cur_prGalleryAdditions.getData()?number) /> 
76                            <li class="pr-navitem"><a class="pr-gallery" href="#" data-gallery="${cur_prGalleryAdditions.getData()?trim}">${(cur_prGalleryAdditions.prGalleryAdditionName.getData())!dlFolder.name}</a></li> 
77                        </#if> 
78                      </#list> 
79                    </#if> 
80                  </ul> 
81                </li> 
82              </ul> 
83            </div> 
84              <div class="col-9"> 
85      <#else> 
86        <#assign hasPages   = false /> 
87      </#if> 
88    </#if> 
89    <#if prSelectExistingContent.getData()?trim?has_content> 
90      <div class="pr-maincontent"> 
91        ${journalContentUtil.getContent(groupId, prSelectExistingContent.getData(), '278683314', 'VIEW', 'de_DE', xmlRequest)!'<script>console.debug("No Content for Article#${prSelectExistingContent.getData()}...");</script>'} 
92      </div> 
93    <#else> 
94        <div class="lr-printable">	 
95            <#assign displayDate    = .vars['reserved-article-display-date'].data?datetime('EEE, dd MMM yyyy hh:mm:ss zzz') /> 
96            <h5>${(prCategory.getData())!"News"} vom ${displayDate?string('dd.MM.yyyy')}</h5> 
97            <h1 class="pr-headline">${.vars["reserved-article-title"].getData()}</h1> 
98            <div class="pr-maincontent">${prMainContent.getData()}</div> 
99            <#if prDownloads.getSiblings()?has_content> 
100                <div class="pr-downloads"> 
101                    <strong>Downloads:</strong> 
102                    <#assign hasDownloads=false /> 
103                	<#list prDownloads.getSiblings() as cur_prDownloads> 
104                	    <div class="pr-download-entry"> 
105                	        <#assign downloadUrl=cur_prDownloads.getData() /> 
106                	        <#if downloadUrl?has_content> 
107                	            <#assign hasDownloads=true/> 
108                	            <#assign urlSegments=downloadUrl?split("/") /> 
109                    	        <a class="pr-download-link" href="${downloadUrl}"> 
110                    	            <i class="fa-solid fa-file"></i>&nbsp; 
111                    	            <#attempt> 
112                    	                ${urlSegments[4]} 
113                    	            <#recover> 
114                    	                Download 
115                    	            </#attempt> 
116                    		    </a> 
117                            </#if> 
118                        </div> 
119            	    </#list> 
120            	</div> 
121            	<#if !hasDownloads> 
122            	<style>.pr-downloads { display:none; }</style> 
123            	</#if> 
124            </#if> 
125        </div> 
126    </#if> 
127    <#if hasPages> 
128        </div> 
129      </div> 
130    </div> 
131    <script> 
132      queueMicrotask(() => { 
133 
134        const content       = jQuery(".pr-maincontent"); 
135        let lastLoadedURL   = ''; 
136        let originalContent = null; 
137 
138        // ----- check LightBox ----- 
139        try { 
140            var lightBoxInstance    =lightbox; 
141        } catch(ex) { 
142            jQuery("head").append('<link href="/lightbox/css/lightbox.min.css" type="text/css" rel="stylesheet">'); 
143            jQuery.getScript("/lightbox/js/lightbox.min.js"); 
144
145 
146        document.getElementById('prNavMainItem').innerHTML = (document.querySelector('h1.pr-headline') ?? document.querySelector('.pr-maincontent h1')).innerHTML; 
147 
148        document.querySelectorAll("a.pr-navitem").forEach((l) => { 
149 
150          l.addEventListener('click', (e) => { 
151 
152            const _this   = jQuery(e.target); 
153 
154            if (originalContent === null) { 
155 
156              originalContent = content.html(); 
157 
158
159 
160            e.preventDefault(); 
161            e.stopPropagation(); 
162 
163            jQuery("ul.pr-nav-root ul.pr-nav a.pr-navitem").removeClass("pr-active"); 
164 
165            if (e.target.href !== document.location.href) { 
166 
167              _this.addClass("pr-active"); 
168               
169              if (e.target.href !== lastLoadedURL) { 
170 
171                content.addClass("pr-loading"); 
172   
173                jQuery.get(e.target.href, function (html) { 
174     
175                    var parsedHtml = jQuery(html); 
176                    const parseContent  = parsedHtml.find(".pr-maincontent"); 
177 
178                    parsedHtml.find("#breadcrumbs").remove(); 
179     
180                    content.html(parseContent.length ? parseContent.html() : parsedHtml.find("#content").html()); 
181     
182                    window.jqLastLoadedPage = html; 
183     
184                    jQuery.each(window.jqLastLoadedPage.match(/<script[\s\S]*?>([\s\S]*?)<\/script>/gi), function (x, script) { 
185     
186                        if (script.indexOf("Liferay.Portlet.addHTML") != -1) { 
187                            content.append(script); 
188
189     
190                    }); 
191     
192                    lastLoadedURL = e.target.href; 
193 
194                    content.removeClass("pr-loading"); 
195     
196                }).fail(function (e) { 
197     
198                    alert("Seite konnte nicht geladen werden..."); 
199                    content.removeClass("pr-loading"); 
200     
201                }); 
202   
203
204 
205            } else { 
206 
207              content.html(originalContent); 
208 
209
210 
211          }); 
212 
213        }); 
214 
215        document.querySelectorAll("a.pr-gallery").forEach(a => a.addEventListener('click', (e) => { 
216 
217          const galleryId = e.target.dataset.gallery; 
218 
219          e.preventDefault(); 
220          e.stopPropagation(); 
221 
222          if (galleryId !== lastLoadedURL) { 
223 
224            content.addClass("pr-loading"); 
225 
226            jQuery.getJSON("/web/suite-dgzmk/aktuelles?p_p_id=dgzmkpressrelease_WAR_dgzmkpressreleaseportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_resource_id=get-gallery-" + galleryId + "&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_count=1", (result) => { 
227 
228              var lbContainer = jQuery('<div style="width:100%;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;align-content:flex-start;"></div>'); 
229 
230              jQuery.each(result.gallery, function (i, image) { 
231 
232                  var lbImageBlock = jQuery('<div style="display:flex;margin:5px;flex:0 0 auto;flex-direction:column;"></div>'); 
233                  var lbImageLink = jQuery('<a data-lightbox="' + result.portletID + '"></a>'); 
234                  var lbImage = jQuery('<img style="height:85px;cursor:pointer;"/>'); 
235                  var lbDownload = jQuery('<div style="text-align:right;"><a href="' + image.fullSize + '" target="_download" style="color:black;font-size:0.85em;font-weight:bold;">&gt;Download</a></div>'); 
236 
237                  lbImageLink.attr("href", image.preview); 
238 
239                  lbImage.attr("src", image.thumbnail); 
240                  lbImage.attr("title", image.title); 
241                  lbImage.attr("alt", image.title); 
242 
243                  lbImageBlock.append(lbImageLink); 
244                  lbImageBlock.append(lbDownload); 
245 
246                  lbImageLink.append(lbImage); 
247 
248                  lbContainer.append(lbImageBlock); 
249 
250              }); 
251 
252              content.html(""); 
253 
254              content.append(lbContainer); 
255 
256              lightbox.option({ 
257                  'maxHeight': 600, 
258                  'wrapAround': true 
259              }); 
260 
261 
262              lastLoadedURL = galleryId; 
263 
264              content.removeClass("pr-loading"); 
265 
266            }).fail((ex) => { 
267 
268              console.error("Error loading Gallery...", e.target.href, ex); 
269              content.removeClass("pr-loading"); 
270 
271            }); 
272 
273
274 
275        })); 
276 
277      }); 
278         
279    </script> 
280    </#if> 
281</#if>