ÚLTIMOS EPISODIOS PUBLICADOS
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> audioVideoUrl [in template "15553970#15554109#17210296" at line 68, column 103] ---- 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: ${audioVideoUrl} [in template "15553970#15554109#17210296" at line 68, column 101] ----
1<#if entries?has_content>
2 <#assign urlBase = "" />
3 <#assign urlFriendly = themeDisplay.getLayout().getFriendlyURL() />
4 <#assign urlCurrent = themeDisplay.getURLCurrent() />
5 <#if urlCurrent?contains(urlFriendly)>
6 <#assign urlBase = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()?keep_before_last("/")?remove_ending("/") />
7 <#else>
8 <#assign urlBase = themeDisplay.getPortalURL() +themeDisplay.getURLCurrent()?remove_ending("/") />
9 </#if>
10
11
12
13 <div class="row">
14 <#list entries as curEntry>
15
16 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry, true) />
17 <#assign renderer = curEntry.getAssetRenderer()>
18 <#assign className = renderer.getClassName()>
19
20 <#if className == "com.liferay.journal.model.JournalArticle">
21 <#assign journalArticle = renderer.getArticle()>
22 <#assign jaResourcePrimKey = journalArticle.getResourcePrimKey()>
23 <#assign reproducciones = journalArticle.getExpandoBridge().getAttribute('reproducciones')>
24 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
25 <#assign rootElement = document.getRootElement()>
26 <#assign defaultLanguageId = parseXml ("@default-locale", rootElement)>
27
28 <#assign title = getField("Título", locale, defaultLanguageId, rootElement)!>
29 <#assign resume = getField("Resumen", locale, defaultLanguageId, rootElement)!>
30
31 <#attempt>
32 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='imagen']")>
33 <#assign img = xPathSelector.selectSingleNode(rootElement).getStringValue()>
34 <#if isJson(img)>
35 <#assign imgJson = jsonFactoryUtil.createJSONObject(img)>
36 <#assign imgUrl = "/documents/" + imgJson.groupId + "/" + imgJson.uuid >
37 </#if>
38
39 <#recover>
40 <#assign imgUrl = "">
41 </#attempt>
42
43 <#attempt>
44 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ArchivoDeAudioVideo']")>
45 <#assign audioVideo = xPathSelector.selectSingleNode(rootElement).getStringValue()>
46 <#if isJson(audioVideo)>
47 <#assign audioVideoJson = jsonFactoryUtil.createJSONObject(audioVideo)>
48 <#assign audioVideoUrl = "/documents/" + audioVideoJson.groupId + "/" + audioVideoJson.uuid >
49 </#if>
50
51 <#recover>
52 <#assign audioVideoUrl = "">
53 </#attempt>
54
55 <#-- OBTIENE LAS CATEGORIAS -->
56 <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]/>
57 <#assign categoryList = assetCategoryLocalServiceUtil.getCategories(className , journalArticle.resourcePrimKey) >
58
59 <div class="col-sm-6">
60 <div class="latest-publications-card">
61 <div class="latest-publications-header">
62 <div class="header-img">
63 <img loading="lazy" decoding="async" src="${imgUrl}" width="370" height="290" alt="Serie image">
64 </div>
65 <div class="header-content">
66 <div class="actions-cont">
67 <div class="actions">
68 <a class="jPlayerPlay" url="${audioVideoUrl}" title="${title}" id="${jaResourcePrimKey}" counter="${reproducciones}">
69 <i class="play icon-play"></i>
70 </a>
71 </div>
72 </div>
73 </div>
74 </div>
75 <div class="latest-publications-content">
76 <h5 class="title"><a href="${viewURL}">${title}</a></h5>
77 <p class="meta">
78 <span class="date">
79 <#setting locale="es_ES">
80 ${journalArticle.getDisplayDate()?date?string["d MMMM'.' yyyy"]}
81 </span>
82 </p>
83 <div class="content-resume small">
84 <p>${resume}</p>
85 </div>
86 <p class="read-more small">
87 <a href="${viewURL}" class="button-detail">
88 Leer más... <i class="icon-long-arrow-right"></i>
89 </a>
90 </p>
91 <p class="tags">
92 <#list categoryList as category>
93 <a href="${urlBase + '/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=1'}" class="view_category">
94 <i class="icon-tag"></i> ${category.getName()}
95 </a>
96 </#list>
97 </p>
98 </div>
99 </div>
100 </div>
101 </#if>
102 </#list>
103 </div>
104</#if>
105
106
107
108
109<#function getField field languageId defaultLanguageId xml>
110 <#local defaultSelector = "//dynamic-content[@language-id='" + defaultLanguageId + "' and ancestor-or-self::*[@name='" + field + "']]">
111 <#local localeSelector = "//dynamic-content[@language-id='" + languageId + "' and parent::*[@name='" + field + "']]">
112
113 <#local selector = saxReaderUtil.createXPath(localeSelector)>
114 <#local value = selector.selectSingleNode(xml)!>
115
116 <#if value?has_content && value.getText()?has_content>
117 <#return value.getText()>
118 </#if>
119
120 <#local selector = saxReaderUtil.createXPath(defaultSelector)>
121 <#local value = selector.selectSingleNode(xml)!>
122
123 <#if value?has_content && value.getText()?has_content>
124 <#return value.getText()>
125 </#if>
126
127 <#return "">
128</#function>
129
130<#function parseXml xpath xml>
131 <#local selector = saxReaderUtil.createXPath(xpath)>
132 <#local result = selector.selectSingleNode(xml)!>
133
134 <#if result?has_content>
135 <#return result.getStringValue()>
136 </#if>
137
138 <#return "">
139</#function>
140
141<#function isJson json>
142 <#local value = json?trim>
143 <#return value?has_content && value?starts_with("{") && value?ends_with("}")>
144</#function>
PUBLICACIONES POR ETAPAS EDUCATIVAS
SERIES
Bachillerato
SERIES
Primaria
null Once Erasmus+, always Erasmus: la aventura de dos alumnos asturianos en el Franco-Condado
MARIA RODRIGUEZ ALVAREZ
modificado hace 2 meses
Repasamos con Ángela y Alfonso, de 4ºESO, su movilidad Erasmus+ en Morteau, una localidad francesa en la frontera suiza. Allí estuvieron alojados durante quince días en casa de Sarah, que también participa en este podcast, grabado durante su estancia en el IES Selgas. Los tres conversan con Lía Brea, coordinadora Erasmus+ del centro.

PUBLICACIONES POR CENTROS EDUCATIVOS
SERIES
CP La Ería
EPISODIOS
+ 3 más
SERIES
IES La Ería
SERIES
IES La Fresneda
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> audioVideoUrl [in template "15553970#15554109#17210302" at line 128, column 67] ---- 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: ${audioVideoUrl} [in template "15553970#15554109#17210302" at line 128, column 65] ----
1<#assign dynamicQueryFactoryUtil = staticUtil["com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil"] />
2<#assign classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")>
3<#assign expandoValueLocalService = serviceLocator.findService("com.liferay.expando.kernel.service.ExpandoValueLocalService")>
4<#assign propertyFactoryUtil = staticUtil["com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil"] />
5<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
6<#assign expandoValueClass = staticUtil["com.liferay.portal.kernel.util.ClassResolverUtil"].resolveByPortalClassLoader("com.liferay.expando.kernel.model.ExpandoValue") />
7<#assign PortalClassLoaderUtil = staticUtil["com.liferay.portal.kernel.util.PortalClassLoaderUtil"] />
8<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
9<#assign expandoColumnLocalService = serviceLocator.findService("com.liferay.expando.kernel.service.ExpandoColumnLocalService") />
10<#assign expandoTableLocalService = serviceLocator.findService("com.liferay.expando.kernel.service.ExpandoTableLocalService") />
11
12<#if entries?has_content>
13
14
15
16<#assign title = "">
17<#if portletPreferences["portletSetupTitle_es_ES"]??>
18 <#assign title = portletPreferences["portletSetupTitle_es_ES"]?first />
19</#if>
20
21<h1 style="text-align: center; white-space: nowrap;">${title}</h1>
22
23
24<#assign classNameId = classNameLocalService.getClassNameId("com.liferay.journal.model.JournalArticle")>
25<#assign entryIds = [] />
26<#assign assetEntries = AssetEntryLocalService.getGroupEntries(themeDisplay.getScopeGroupId())>
27
28<#assign structureId = portletPreferences["classTypeIdsJournalArticleAssetRendererFactory"] />
29
30<#list assetEntries as assetEntry>
31 <#if assetEntry.className =="com.liferay.journal.model.JournalArticle" && assetEntry.getVisible() == true && structureId[0] == assetEntry.getClassTypeId()?string >
32 <#assign entryId =journalArticleLocalService.fetchLatestArticle(assetEntry.getClassPK()).id/>
33 <#assign entryIds = entryIds + [entryId] />
34 </#if>
35</#list>
36
37<#assign expandoTable = expandoTableLocalService.getTable(companyId, classNameId, "CUSTOM_FIELDS") />
38<#assign expandoColumn = expandoColumnLocalService.getColumn(expandoTable.getTableId(), "reproducciones") />
39<#assign columnId = expandoColumn.getColumnId() />
40
41<#assign dynamicQuery = dynamicQueryFactoryUtil.forClass(expandoValueClass, PortalClassLoaderUtil.getClassLoader())>
42<#assign valueIdProperty = propertyFactoryUtil.forName("classPK")/>
43<#assign dynamicQuery = dynamicQuery.add(valueIdProperty.in(entryIds))/>
44<#assign propertyColumnId = propertyFactoryUtil.forName("columnId") />
45<#assign dynamicQuery = dynamicQuery.add(propertyColumnId.eq(columnId)) />
46<#assign expandoValues = expandoValueLocalService.dynamicQuery(dynamicQuery) />
47
48<#assign convertedValues = []>
49<#list expandoValues as value>
50
51 <#assign dataNumber = value.data?number>
52
53 <#assign convertedValues = convertedValues + [{
54 "value": value,
55 "dataNumber": dataNumber
56 }]>
57</#list>
58
59<#assign sortedValues = convertedValues?sort_by("dataNumber")>
60<#assign sortedValues = sortedValues?reverse>
61
62<#assign delta = portletPreferences["delta"][0]?number>
63
64<#assign urlBase = "" />
65<#assign urlFriendly = themeDisplay.getLayout().getFriendlyURL() />
66<#assign urlCurrent = themeDisplay.getURLCurrent() />
67<#if urlCurrent?contains(urlFriendly)>
68 <#assign urlBase = themeDisplay.getURLCurrent()?keep_before_last("/") />
69<#else>
70 <#assign urlBase = themeDisplay.getURLCurrent() />
71</#if>
72
73<#assign counter = 0>
74
75<div class="row">
76 <#list sortedValues as value>
77
78 <#if counter lt delta>
79 <#assign journalArticle = journalArticleLocalService.getArticle(value.value.classPK) />
80 <#assign jaResourcePrimKey = journalArticle.getResourcePrimKey()>
81 <#assign assetEntry = AssetEntryLocalService.fetchEntry(classNameId, jaResourcePrimKey) />
82 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetEntry, true) />
83 <#assign reproducciones = journalArticle.getExpandoBridge().getAttribute('reproducciones')>
84 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
85 <#assign rootElement = document.getRootElement()>
86 <#assign defaultLanguageId = parseXml ("@default-locale", rootElement)>
87
88 <#assign title = getField("Título", locale, defaultLanguageId, rootElement)!>
89 <#assign resume = getField("Resumen", locale, defaultLanguageId, rootElement)!>
90
91 <#attempt>
92 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='imagen']")>
93 <#assign img = xPathSelector.selectSingleNode(rootElement).getStringValue()>
94 <#if isJson(img)>
95 <#assign imgJson = jsonFactoryUtil.createJSONObject(img)>
96 <#assign imgUrl = "/documents/" + imgJson.groupId + "/" + imgJson.uuid >
97 </#if>
98 <#recover>
99 <#assign imgUrl = "">
100 </#attempt>
101
102 <#attempt>
103 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ArchivoDeAudioVideo']")>
104 <#assign audioVideo = xPathSelector.selectSingleNode(rootElement).getStringValue()>
105 <#if isJson(audioVideo)>
106 <#assign audioVideoJson = jsonFactoryUtil.createJSONObject(audioVideo)>
107 <#assign audioVideoUrl = "/documents/" + audioVideoJson.groupId + "/" + audioVideoJson.uuid >
108 </#if>
109 <#recover>
110 <#assign audioVideoUrl = "">
111 </#attempt>
112
113
114
115 <#-- OBTIENE LAS CATEGORIAS -->
116 <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]/>
117 <#assign categoryList = assetCategoryLocalServiceUtil.getCategories(className , journalArticle.resourcePrimKey) >
118
119 <div class="col-sm-6">
120 <div class="latest-publications-card">
121 <div class="latest-publications-header">
122 <div class="header-img">
123 <img loading="lazy" decoding="async" src="${imgUrl}" width="370" height="290" alt="Serie image">
124 </div>
125 <div class="header-content">
126 <div class="actions-cont">
127 <div class="actions">
128 <a class="jPlayerPlay" url="${audioVideoUrl}" title="${title}" id="${jaResourcePrimKey}" counter="${reproducciones}">
129 <i class="play icon-play"></i>
130 </a>
131 </div>
132 </div>
133 </div>
134 </div>
135 <div class="latest-publications-content">
136 <h5 class="title"><a href="${viewURL}">${title}</a></h5>
137 <p class="meta">
138 <span class="date">
139 ${journalArticle.getDisplayDate()?date?string["d MMMM'.' yyyy"]}
140 </span>
141 </p>
142 <div class="content-resume small">
143 <p>${resume}</p>
144 </div>
145 <p class="read-more small">
146 <a href="${viewURL}" class="button-detail">
147 Leer más... <i class="icon-long-arrow-right"></i>
148 </a>
149 </p>
150 <p class="tags">
151 <#list categoryList as category>
152 <a href="${urlBase + '/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=1'}" class="view_category">
153 <i class="icon-tag"></i> ${category.getName()}
154 </a>
155 </#list>
156 </p>
157 </div>
158 </div>
159 </div>
160 <#assign counter = counter + 1>
161 <#else>
162 <#break>
163 </#if>
164 </#list>
165</div>
166
167</#if>
168
169
170<#function getField field languageId defaultLanguageId xml>
171 <#local defaultSelector = "//dynamic-content[@language-id='" + defaultLanguageId + "' and ancestor-or-self::*[@name='" + field + "']]">
172 <#local localeSelector = "//dynamic-content[@language-id='" + languageId + "' and parent::*[@name='" + field + "']]">
173
174 <#local selector = saxReaderUtil.createXPath(localeSelector)>
175 <#local value = selector.selectSingleNode(xml)!>
176
177 <#if value?has_content && value.getText()?has_content>
178 <#return value.getText()>
179 </#if>
180
181 <#local selector = saxReaderUtil.createXPath(defaultSelector)>
182 <#local value = selector.selectSingleNode(xml)!>
183
184 <#if value?has_content && value.getText()?has_content>
185 <#return value.getText()>
186 </#if>
187
188 <#return "">
189</#function>
190
191<#function parseXml xpath xml>
192 <#local selector = saxReaderUtil.createXPath(xpath)>
193 <#local result = selector.selectSingleNode(xml)!>
194
195 <#if result?has_content>
196 <#return result.getStringValue()>
197 </#if>
198
199 <#return "">
200</#function>
201
202<#function isJson json>
203 <#local value = json?trim>
204 <#return value?has_content && value?starts_with("{") && value?ends_with("}")>
205</#function>