Detalle historias animadas

An error occurred while processing the template.
Denied access to method or field getAttribute of class org.apache.catalina.core.ApplicationHttpRequest

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign url = request.getAttribute("C...  [in template "20902#20940#7261276" at line 141, column 1]
----
1<style> 
2  #naranja { 
3    color: orange !important; 
4  } 
5 
6  #siguiente, #anterior { 
7    font-size: 90px; 
8    top: 100px; 
9  } 
10 
11  #siguiente a, #anterior a { 
12    cursor: pointer; 
13  } 
14 
15  .image, .bloqueAudio { 
16    display: none; 
17  } 
18 
19  #image0 { 
20    display: block; 
21  } 
22 
23  .resumen { 
24    color: #707070; 
25    border-top: 1px dotted #E9C1DB; 
26    border-bottom: 1px dotted #E9C1DB; 
27    clear: both; 
28    margin: 20px 0; 
29    padding: 0 0 20px; 
30  } 
31 
32  .nivo-controlNav { 
33    position: absolute; 
34    right: 0; 
35  } 
36 
37  .nivo-controlNav a { 
38    display: block; 
39    width: 22px; 
40    height: 22px; 
41    background: url(/o/x61tThemeIkasbilWAR-theme/images/slider/bullets.png) no-repeat; 
42    text-indent: -9999px; 
43    border: 0; 
44    margin-right: 3px; 
45    float: left; 
46  } 
47 
48  .nivo-controlNav a.active { 
49    background-position: 0 -22px; 
50  } 
51 
52  #detalle-habe-aldizkaria-fitxa > div:last-of-type #imgNode { 
53    text-align: center; 
54  } 
55 
56  #detalle-habe-aldizkaria-fitxa > div:last-of-type #imgNode + #siguiente a { 
57    float: right; 
58  } 
59 
60  @media only screen and (max-device-width: 1024px) and (min-device-width: 768px) and (orientation: portrait) { 
61    #siguiente, #anterior { 
62      font-size: 60px; 
63      padding: 0; 
64    } 
65 
66    #detalle-habe-aldizkaria-fitxa > div:last-of-type #imgNode { 
67      padding: 0; 
68    } 
69  } 
70 
71  @media (max-width: 480px) { 
72    #siguiente, #anterior { 
73      font-size: 50px; 
74      top: 55px; 
75    } 
76  } 
77</style> 
78 
79<script> 
80  $(document).ready(function () { 
81    $("#audio0").trigger('play'); 
82  }); 
83 
84  var slideIndex = 0; 
85 
86  function showSlides(pos, posPunto) { 
87    var i; 
88    var slides = document.getElementsByClassName("image"); 
89    var nivos = document.getElementsByClassName("nivo-control"); 
90    var audio = document.getElementById("audio" + slideIndex); 
91    $(".nivo-control").removeClass("active"); 
92 
93    //Interrumpe el audio si no se ha reproducido del todo al pasar a otro 
94    if (audio.duration > 0 && !audio.paused) { 
95      audio.pause(); 
96      audio.currentTime = 0; 
97    } 
98 
99    //Pone invisibles todas las imagenes 
100    for (i = 0; i < slides.length; i++) { 
101      slides[i].style.display = "none"; 
102    } 
103 
104    if (pos == 1 && posPunto == -1) { 
105      //Flecha derecha 
106      slideIndex++; 
107      if (slideIndex == slides.length) { 
108        slideIndex = 0; 
109      } 
110    } else if (pos == -1 && posPunto == -1) { 
111      //Flecha izquierda 
112      slideIndex--; 
113      if (slideIndex == -1) { 
114        slideIndex = slides.length - 1; 
115      } 
116    } else { 
117      //Se hace click en cualquier punto 
118      $(".nivo-control").removeClass("active"); 
119      slideIndex = posPunto; 
120    } 
121 
122    //Actualiza el estilo de los botones cuando se haga click sobre alguna flecha 
123    for (i = 0; i < nivos.length; i++) { 
124      if (nivos[i].getAttribute("rel") == slideIndex) { 
125        nivos[i].className = "nivo-control active"; 
126      } 
127    } 
128 
129    //Actualiza el estilo de los botones cuando se haga click en uno 
130    $(".nivo-control").click(function () { 
131      $(this).addClass("active"); 
132    }); 
133 
134    //Muestra la imagen que corresponde junto a su reproduccion 
135    slides[slideIndex].style.display = "block"; 
136    audio = document.getElementById("audio" + slideIndex); 
137    audio.play(); 
138  } 
139</script> 
140 
141<#assign url = request.getAttribute("CURRENT_URL")> 
142<#assign id = paramUtil.getString(request, "articleId")> 
143 
144<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
145<#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]> 
146<#assign artResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, id)/> 
147<#assign DLAppLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")> 
148 
149<#--Incrementamos el valor de las visitas cada vez que se entra en el detalle--> 
150<#assign assetEntryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil"]> 
151<#assign assetEntry = assetEntryLocalServiceUtil.getEntry("com.liferay.journal.model.JournalArticle", artResourcePK)> 
152 
153<#--Contadores--> 
154<#assign $contadorImg = 0 /> 
155<#assign $contadorAudio = 0 /> 
156 
157<#if id?has_content> 
158  <#if journalArticleLocalService??> 
159    <#assign articleById = journalArticleLocalService.getDisplayArticle(getterUtil.getLong(groupId), id) /> 
160    <#assign document = saxReaderUtil.read(articleById.getContentByLocale(locale)) > 
161 
162    <#assign titulo = document.valueOf("//dynamic-element[@field-reference='izenburua']/dynamic-content/text()") /> 
163    <#assign descripcion = document.valueOf("//dynamic-element[@field-reference='deskribapena']/dynamic-content/text()") /> 
164    <#assign imagen = document.valueOf("//dynamic-element[@field-reference='irudia']/dynamic-content/text()") /> 
165 
166    <#assign slideNodes = document.selectNodes("//dynamic-element[@field-reference='slide']") /> 
167    <#assign imagenNodes = document.selectNodes("//dynamic-element[@field-reference='imagen']/dynamic-content/text()") /> 
168    <#assign audiosNodes = document.selectNodes("//dynamic-element[@field-reference='audio']/dynamic-content/text()") /> 
169 
170    <div class="col-xs-12 col-md-12 col-lg-12 separadorDerecho" id="detalle-habe-aldizkaria-fitxa"> 
171      <#--PARTE IZQUIERDA--> 
172      <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> 
173        <#if imagen != ''> 
174          <#assign jsonImagen = jsonFactoryUtil.createJSONObject(imagen)> 
175          <#assign imagenFile = DLAppLocalService.getFileEntryByUuidAndGroupId(jsonImagen.getString("uuid"), getterUtil.getLong(groupId)) > 
176          <#assign imagenUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + 
177          "/" + imagenFile.getFolderId() +  "/" + htmlUtil.unescape(imagenFile.getTitle())> 
178          <img src="${imagenUrl}" width="210" height="176"> 
179        </#if> 
180      </div> 
181      <#--PARTE DERECHA--> 
182      <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> 
183        <#if titulo != ''> 
184          <div class="titulo"> 
185            <h2>${titulo}</h2> 
186          </div> 
187        </#if> 
188        <div class="descripcion"> 
189          <p>${descripcion}</p> 
190        </div> 
191        <#--PARTE FLECHA ANTERIOR--> 
192        <div id="anterior" class="col-xs-2 col-sm-1 col-md-2 col-lg-2"> 
193          <a onclick="showSlides(-1, -1)"><i id="naranja" class="glyphicon glyphicon-triangle-left"></i></a> 
194        </div> 
195        <#--PARTE IMAGEN Y PUNTOS--> 
196        <div id="imgNode" class="col-xs-8 col-sm-10 col-md-8 col-lg-8"> 
197          <#if imagenNodes?is_sequence> 
198            <#assign temporary_image_src = "" /> 
199            <#list imagenNodes as imagenNodes_e> 
200              <#assign temporary_image_src = imagenNodes_e.getText() /> 
201              <#assign jsonImagen = jsonFactoryUtil.createJSONObject(temporary_image_src)> 
202              <#assign imagenFile = DLAppLocalService.getFileEntryByUuidAndGroupId(jsonImagen.getString("uuid"), getterUtil.getLong(groupId)) > 
203              <#assign imagenUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + 
204              "/" + imagenFile.getFolderId() +  "/" + htmlUtil.unescape(imagenFile.getTitle())> 
205              <#assign $idImg = "image" + $contadorImg /> 
206              <div id=${$idImg} class="image"> 
207                <img id="image" src="${imagenUrl}"> 
208              </div> 
209              <#assign $contadorImg = $contadorImg + 1 /> 
210            </#list> 
211          </#if> 
212          <div id="nivo-controlNav" class="nivo-controlNav"> 
213            <script type="text/javascript"> 
214              //Se crean los puntos con sus respectivos onclicks para que el orden no se pierda 
215              var noPos = 0; 
216              var nivo = document.getElementById("nivo-controlNav"); 
217              for (j = 0; j < ${$contadorImg}; j++) { 
218                var a = document.createElement("a"); 
219                var node = document.createTextNode(j + 1); 
220                if (j == 0) { 
221                  a.className = "nivo-control active"; 
222                } else { 
223                  a.className = "nivo-control"; 
224                } 
225                a.rel = j; 
226                a.appendChild(node); 
227 
228                a.onclick = (function (noPos, j) { 
229                  return function () { 
230                    showSlides(noPos, j); 
231                  }; 
232                })(noPos, j); 
233 
234                nivo.appendChild(a); 
235 
236              } 
237            </script> 
238          </div> 
239        </div> 
240        <#--PARTE FLECHA SIGUIENTE--> 
241        <div id="siguiente" class="col-xs-2 col-sm-1 col-md-2 col-lg-2"> 
242          <a onclick="showSlides(1, -1)"><i id="naranja" class="glyphicon glyphicon-triangle-right"></i></a> 
243        </div> 
244        <#if audiosNodes?is_sequence> 
245          <#assign temporary_image_src = "" /> 
246          <#list audiosNodes as audiosNodes_e> 
247            <#assign temporary_audio_src = audiosNodes_e.getText() /> 
248            <#assign jsonAudio = jsonFactoryUtil.createJSONObject(temporary_audio_src)> 
249            <#assign audioFile = DLAppLocalService.getFileEntryByUuidAndGroupId(jsonAudio.getString("uuid"), getterUtil.getLong(groupId)) > 
250            <#assign audioUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + 
251            "/" + audioFile.getFolderId() +  "/" + htmlUtil.unescape(audioFile.getTitle())> 
252            <#assign $idAudio = "audio" + $contadorAudio /> 
253            <div class="bloqueAudio"> 
254              <#--<#if $contadorAudio == 0> 
255                <audio id=${$idAudio} preload="auto" autoplay controls> 
256              <#else>--> 
257              <audio id=${$idAudio} preload="auto" controls> 
258                <#--</#if>--> 
259                <source src="${audioUrl}" type="audio/mpeg"> 
260              </audio> 
261            </div> 
262            <#assign $contadorAudio = $contadorAudio + 1 /> 
263          </#list> 
264        </#if> 
265      </div> 
266    </div> 
267  </#if> 
268</#if> 

detalle2

Document library

02-10-2009

x61pRelaContWAR

16350536

x61pViewCountWAR

1137

anadir a favorito

x61pAnadirFavoritoWAR