Portal Escolarización en Andalucía

Descubre más

Portal de Becas y Ayudas

Descubre más

Atrás Instrucciones de 26 de julio de 2024, de la Dirección General de Ordenación, Inclusión, Participación y Evaluación Educativa, por la que se regulan las enseñanzas de la etapa de Educación Secundaria Obligatoria para personas adultas para el curso 2024-2025

Se ha producido un error al procesar la plantilla.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> journalArticle  [in template "20099#20125#959235" at line 13, column 99]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign assetEntry = AssetEntryLocalS...  [in template "20099#20125#959235" at line 13, column 1]
----
1<#-- Obtener los servicios necesarios --> 
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
3<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
4<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
5 
6<#-- Obtener valores del request --> 
7<#assign groupId = themeDisplay.getScopeGroupId() /> 
8<#assign classPK = request.getAttribute("CLASS_PK")!"" /> 
9<#assign className = "com.liferay.journal.model.JournalArticle" /> 
10<#assign journalArticle = request.getAttribute("JOURNAL_ARTICLE")!"" /> 
11 
12<#-- Obtener el assetEntry del JournalArticle --> 
13<#assign assetEntry = AssetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", journalArticle.resourcePrimKey) /> 
14<#assign classCategories = AssetCategoryLocalService.getCategories(assetEntry.className, assetEntry.classPK) /> 
15 
16<#-- Configuración de URL y otros parámetros --> 
17<#assign 
18	viewURL = requestMap.attributes.viewURL!"" 
19	target = "" 
20	site_default_url = htmlUtil.escape(themeDisplay.getScopeGroup().getDisplayURL(themeDisplay, false)) 
21/> 
22 
23<#-- Asignación de los IDs de vocabularios Tema y Etapa --> 
24<#assign TemaID = 893934 /> 
25<#assign EtapaID = 893470 /> 
26 
27<#-- Función para obtener todas las categorías de un vocabulario --> 
28<#function getCategoriesByVocabularyId vocabularyId> 
29    <#assign categoryList = []> 
30    <#assign categories = AssetCategoryLocalService.getVocabularyCategories(vocabularyId, -1, -1, null) /> 
31    <#list categories as category> 
32        <#assign categoryList = categoryList + [{"id": category.getCategoryId(), "name": category.getName()}] /> 
33    </#list> 
34    <#return categoryList> 
35</#function> 
36 
37<#-- Obtener todas las categorías de los vocabularios --> 
38<#assign allTemas = getCategoriesByVocabularyId(TemaID) /> 
39<#assign allEtapas = getCategoriesByVocabularyId(EtapaID) /> 
40 
41<#-- Crear listas de categorías presentes en el artículo --> 
42<#assign categoriasTematicas = []> 
43<#assign categoriasEducativas = []> 
44 
45<#-- Verificar si cada categoría está presente en el artículo --> 
46<#list allTemas as tema> 
47    <#assign isPresent = false /> 
48    <#list classCategories as category> 
49        <#if category.getCategoryId() == tema.id> 
50            <#assign isPresent = true /> 
51        </#if> 
52    </#list> 
53    <#if isPresent> 
54        <#assign categoriasTematicas = categoriasTematicas + [{"name": tema.name}] /> 
55    </#if> 
56</#list> 
57 
58<#list allEtapas as etapa> 
59    <#assign isPresent = false /> 
60    <#list classCategories as category> 
61        <#if category.getCategoryId() == etapa.id> 
62            <#assign isPresent = true /> 
63        </#if> 
64    </#list> 
65    <#if isPresent> 
66        <#assign categoriasEducativas = categoriasEducativas + [{"name": etapa.name}] /> 
67    </#if> 
68</#list> 
69 
70<#-- Actualizar enlaces --> 
71<#if (EnlaceAPgina.data?has_content && EnlaceAPgina.data != '{}')> 
72	<#assign viewURL = EnlaceAPgina.getFriendlyUrl() /> 
73	<#assign target = "_self" /> 
74<#elseif (enlaceExterno.getData()?? && enlaceExterno.getData() != "")> 
75	<#assign viewURL = enlaceExterno.getData() /> 
76	<#assign target = "_blank" /> 
77</#if> 
78 
79<#-- Visualización del contenido --> 
80<div class="contenido-web-banner mb-5"> 
81    <div class="container"> 
82        <div class="contenido-web-banner__cont-header-logo"> 
83            <div class="contenido-web-banner__container-header"> 
84                <header class="contenido-web-banner__header"> 
85                    <h2 class="contenido-web-banner__alias"> 
86                        ${.vars['reserved-article-title'].data} 
87                    </h2> 
88                </header> 
89            </div> 
90        </div> 
91    </div> 
92</div> 
93 
94<div class="container card-container content-link"> 
95    <div class="card-container-content"> 
96        <div class="card-body"> 
97            <#if (imagenBanner.getData())?? && imagenBanner.getData() != ""> 
98                <a href="${viewURL}" target="${target}" class="card-link"> 
99                    <div class="card-image" style="background-image: url('${imagenBanner.getData()}');"></div> 
100                    <div class="overlay"> 
101                        <#if (contentBanner.getData()?? && (contentBanner.getData()?length != 0))> 
102                            <div class="card-text"> 
103                                <p>${htmlUtil.extractText(contentBanner.getData())}</p> 
104                            </div> 
105                        </#if> 
106                    </div> 
107                </a> 
108            <#else> 
109                <a href="${viewURL}" target="${target}" class="card-link"> 
110                    <div class="card-image" style="background-image: url('/educacion/portales/o/portales-theme/images/logos/logo-junta-white.svg');"></div> 
111                    <div class="overlay"> 
112                        <#if (contentBanner.getData()?? && (contentBanner.getData()?length != 0))> 
113                            <div class="card-text"> 
114                                <p>${htmlUtil.extractText(contentBanner.getData())}</p> 
115                            </div> 
116                        </#if> 
117                    </div> 
118                </a> 
119            </#if> 
120        </div> 
121        <div class="card-aside"> 
122					<div class="card-aside__vocabulary"> 
123						<#if categoriasTematicas?has_content> 
124                <h4 class="text-muted"><span class="icon-tags" aria-hidden="true"></span> Temas:</h4> 
125                <ul> 
126                    <#list categoriasTematicas as categoria> 
127                        <li> 
128                            <span class="badge badge-pill badge-primary">${categoria.name}</span> 
129                        </li> 
130                    </#list> 
131                </ul> 
132            </#if> 
133					</div> 
134					<div class="card-aside__vocabulary"> 
135						<#if categoriasEducativas?has_content> 
136                <h4 class="text-muted"><span class="icon-tags" aria-hidden="true"></span> Etapas:</h4> 
137                <ul> 
138                    <#list categoriasEducativas as categoria> 
139                        <li> 
140                            <span class="badge badge-pill badge-primary">${categoria.name}</span> 
141                        </li> 
142                    </#list> 
143                </ul> 
144            </#if> 
145					</div> 
146        </div> 
147    </div> 
148</div> 
149 
150<#-- Botón "Volver" --> 
151<#assign backURL = (request.getParameter("p_l_back_url"))!"" /> 
152<#include "${templatesPath}/398918" > 
153<div class="container"> 
154    <div class="back_button"> 
155        <a href="${backURL}"> 
156            <span class="icon-reply" title="Volver" aria-label="Volver"></span> 
157            Volver 
158        </a> 
159    </div> 
160</div> 
161 
162<style> 
163	.card-container-content { 
164		display: flex; 
165		flex-direction: row; 
166
167	@media (max-width: 768px) { 
168		.card-container-content { 
169			flex-direction: column-reverse; 
170
171
172	.card-container-content .card-body { 
173		width: 75%; 
174		flex: 2; 
175		position: relative; 
176		padding: 0; 
177		min-height: 400px; 
178		aspect-ratio: 16/9; 
179
180	@media (max-width: 768px) { 
181		.card-container-content .card-body { 
182			width: 100% 
183
184
185	.card-container-content .card-body .card-link { 
186		color: inherit; 
187		text-decoration: none; 
188		height: 100%; 
189		position: relative; 
190		display: flex; 
191		padding: 1.875rem; 
192		background-color: transparent; 
193
194	.card-container-content .card-body .card-link .card-image { 
195		padding: 20px; 
196		color: white; 
197		position: absolute; 
198		top: 0; 
199		left: 0; 
200		width: 100%; 
201		height: 100%; 
202		min-height: 400px; 
203		background-position: center; 
204		background-size: cover; 
205
206	.card-container-content .card-body .card-link .card-image::after { 
207		position: absolute; 
208		top: 0; 
209		left: 0; 
210		content: ""; 
211		width: 100%; 
212		height: 100%; 
213		background: -moz-linear-gradient(top, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.3) 50%, black 100%); 
214		background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.3) 50%, black 100%); 
215		background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 10%, rgba(0, 0, 0, 0.3) 50%, #000 100%); 
216
217	.overlay { 
218		position: relative; 
219		margin-top: auto; 
220		color: white; 
221		background-color: transparent; 
222		padding: 0.9375rem; 
223
224	.card-text { 
225		color: white; 
226		//text-align: left; 
227
228	.card-aside { 
229		display: flex; 
230		flex-direction: column; 
231		gap: 10px; 
232		padding-left: 20px; 
233		white-space: nowrap; 
234		width: 25%; 
235
236	@media (max-width: 768px) { 
237		.card-aside { 
238			width: 100%; 
239
240
241	.card-aside h4 { 
242		margin-bottom: 10px; 
243		//border-bottom: 1px solid var(--text-muted); 
244		padding-bottom: 5px; 
245
246	.card-aside ul { 
247		list-style: none; 
248		padding-left: 0; 
249		display: flex; 
250		flex-direction: row; 
251		flex-wrap: wrap; 
252
253	.card-aside ul li { 
254		margin-bottom: 10px; 
255
256	.card-aside ul .badge { 
257		padding: 10px; 
258		font-size: 14px; 
259		background-color: var(--primary-color); 
260
261</style>