PRueba iframe - Cruz Roja
Publicador de contenidos
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> articleName [in template "20115#20151#119416624" at line 198, column 60]
----
Tip: If the failing expression is known to be 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: ${articleName} [in template "20115#20151#119416624" at line 198, column 58]
---- 1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 2<!-- necesario para montar la url para realizar la donacion --> 3<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")/> 4<#assign group = groupLocalService.getGroup(groupId)/> 5<#assign groupFriendlyURL = group.getFriendlyURL() /> 6<#assign friendlyURL = group.getPathFriendlyURL(false,themeDisplay) + groupFriendlyURL /> 7 8<#attempt> 9 <#assign assetEntry = renderRequest.getAttribute('LIFERAY_SHARED_LAYOUT_ASSET_ENTRY') /> 10 11 <#assign classPK = assetEntry.classPK /> 12 13 <#assign article = journalArticleLocalService.fetchLatestArticle(classPK) /> 14 15 <#assign articleId = journalArticleLocalService.fetchLatestArticle(classPK).articleId /> 16 17 <#assign docXml = saxReaderUtil.read(article.getContent()) /> 18 19 <#if docXml?has_content> 20 <#assign idExterno = docXml .valueOf("//dynamic-element[@name='idCampana']/dynamic-content/text()") /> 21 <#assign articleName = htmlUtil.escape(article.getTitle(locale))/> 22 23 <div class="evr-donation" style="margin-top: 1.875rem;"> 24 <div class="evr-donation__module"> 25 26 <div id="evr-donation__when" class="evr-donation__when clearfix"> 27 <button class="btn btn-primary btn-normal selected" id="punctual"> <@liferay.language key="once-text"/> </button> 28 <button class="btn btn-primary btn-normal btn-bordered-primary" id="periodic"> <@liferay.language key="monthly-text"/> </button> 29 </div> 30 <div class="evr-donation__quantity-area"> 31 <div class="evr-donation__quantity-area__title"> 32 <@liferay.language key="elige-cantidad-text"/> 33 </div> 34 <div class="evr-donation__quantity-area__actions"> 35 <div id="euros" class="evr-donation__quantity-area__euros"> 36 <#assign primerNumero = docXml .valueOf("//dynamic-element[@name='cantidadPrimera']/dynamic-content/text()") /> 37 <a class="selected" id="primerNumero" data-amount="${primerNumero}">${primerNumero}€</a> 38 39 <#assign segundoNumero = docXml .valueOf("//dynamic-element[@name='cantidadSegunda']/dynamic-content/text()") /> 40 <a id="segundoNumero" data-amount="${segundoNumero}">${segundoNumero}€</a> 41 42 <#assign tercerNumero = docXml .valueOf("//dynamic-element[@name='cantidadTercera']/dynamic-content/text()") /> 43 <a id="tercerNumero" data-amount="${tercerNumero}">${tercerNumero}€</a> 44 45 <!-- input de otra cantidad --> 46 <div class="form-group input-text-wrapper evr-donation__quantity-area__other"> 47 <input class="field form-control" id="otraCantidad" style="font-size:1.775rem; padding-right:0rem;" autocomplete="off" value="" aria-invalid="false" type="number" min="0" placeholder= <@liferay.language key="otra-cantidad-text"/> > 48 </div> 49 <div role="alert" class="required" id="errorAmount" 50 style="display:none; text-align:center; color:red;">La donación debe ser mayor que 0 51 </div> 52 </div> 53 <button id="colaborarButton" class="btn btn-primary w100" 54 onclick="colaborar()"><@liferay.language key="colaborar-link"/></button> 55 </div> 56 </div> 57 58 </div> 59 </div> 60 61 </#if> 62 <#recover> 63</#attempt> 64 65 66<script> 67 68 var amount = 0; 69 var periodicity = 'punctual'; 70 var url; 71 72 function when(){ 73 periodicity = $("#evr-donation__when").find(".btn.selected").attr("id"); 74 $("#evr-donation__when").find(".btn").click(function(){ 75 $("#evr-donation__when").find(".btn").each(function(){ 76 $(this).addClass("btn-bordered-primary"); 77 $(this).removeClass("selected"); 78 }); 79 $(this).removeClass("btn-bordered-primary"); 80 $(this).addClass("selected"); 81 periodicity = $(this).attr("id"); 82 updateDataLayer(amount, periodicity); 83 }); 84 } 85 86 function howmuch(){ 87 amount = $("#euros").find("a.selected").attr("data-amount"); 88 $("#euros").find("a").click(function(){ 89 $("#euros").find("a").each(function(){ 90 $(this).removeClass("selected"); 91 }); 92 $(this).addClass("selected"); 93 $("#otraCantidad").removeClass("hasval"); 94 $("#otraCantidad").val(''); 95 $("#otraCantidad").parent().removeClass("has-error"); 96 $("#otraCantidad").removeClass("error-field"); 97 $("#errorAmount").hide(); 98 $("#colaborarButton").prop('disabled', false); 99 amount = $(this).attr("data-amount"); 100 updateDataLayer(amount, periodicity); 101 }); 102 } 103 104 function other(){ 105 $("#otraCantidad").removeClass("hasval"); 106 $("#otraCantidad").val(''); 107 108 $("#otraCantidad").on("cut copy paste",function(e){ 109 return false; 110 }); 111 $("#otraCantidad").keypress(function(e){ 112 if(isNaN(String.fromCharCode(e.charCode))){ 113 return false; 114 } 115 }); 116 117 if($("#otraCantidad").val() !=""){ 118 $("#otraCantidad").addClass("hasval"); 119 } 120 else{ 121 $("#otraCantidad").removeClass("hasval"); 122 } 123 124 $("#otraCantidad").change(function () { 125 if ($(this).val() != "") { 126 $(this).addClass("hasval"); 127 $("#euros").find("a").each(function () { 128 $(this).removeClass("selected"); 129 }); 130 const regexPositiveDonation = /^[1-9]\d*$/; 131 const isValid = regexPositiveDonation.test($(this).val()); 132 $("#otraCantidad").parent().toggleClass("has-error", !isValid); 133 $("#otraCantidad").toggleClass("error-field", !isValid); 134 $("#colaborarButton").prop('disabled', !isValid); 135 $("#errorAmount").toggle(!isValid); 136 } else { 137 $(this).removeClass("hasval"); 138 } 139 amount = $(this).val(); 140 updateDataLayer(amount, periodicity); 141 }); 142 143 $("#otraCantidad").click(function(){ 144 $("#euros").find("a").each(function(){ 145 $(this).removeClass("selected"); 146 }); 147 if($(this).val() !=""){ 148 $(this).addClass("hasval"); 149 } 150 else{ 151 $(this).removeClass("hasval"); 152 } 153 amount = $(this).val(); 154 updateDataLayer(amount, periodicity); 155 }); 156 } 157 158 function colaborar() { 159 var articleIdCheck = "noArticle"; 160 updateDataLayer(amount, periodicity); 161 <#if articleId?has_content && articleId!=""> 162 articleIdCheck = ${articleId}; 163 </#if> 164 165 encryptParam(url, periodicity, amount, articleIdCheck); 166 } 167 168 function encryptParam(url, periodicity, amount, articleId){ 169 var endpoint = "/o/utils-api/util/encrypt/"+periodicity+"/"+amount+"/"+articleId; 170 $.ajax({ 171 url: endpoint, 172 type: 'GET', 173 cache: false, 174 dataType: "json" 175 }).done(function (data, textStatus, jsqXHR) { 176 var url = "${friendlyURL}/"+"donacion"+"?periodicity="+data.periodicityEncrypted + "&money=" + data.amountEncrypted + "&articleId=" + data.articleIdEncrypted; 177 url = url.replace(/ /g, ""); 178 location.href = url; 179 }).fail(function (jqXHR, textStatus, errorThrown) { 180 console.error(errorThrown); 181 }); 182 } 183 184 otraCantidad.oninput = function () { 185 if (this.value.length > 5) { 186 this.value = this.value.slice(0,5); 187 } 188 } 189 190 function updateDataLayer(price,variant){ 191 var data = { 192 'event': 'productDetail', 193 'ecommerce': { 194 'detail': { 195 'actionField': 196 {'list': 'Haz un donativo'}, 197 'products': [{ 198 'name': '${articleName}', // articleName 199 'id': '${articleId}', // articleId 200 'price': price, // price 201 'brand': 'Cruz Roja', // brand 202 'variant': variant // periodicity 203 }] 204 } 205 } 206 }; 207 if (dataLayer.length > 0) { 208 for (let i = 0; i < dataLayer.length; i++) { 209 if (typeof dataLayer[i].ecommerce !== 'undefined') { 210 dataLayer.splice(i, 1); 211 } 212 } 213 } 214 dataLayer.push(data); 215 } 216 217 $(document).ready(function () { 218 when(); 219 howmuch(); 220 other(); 221 updateDataLayer(amount, periodicity); 222 }); 223 224</script> 225 226<style> 227 /* Chrome, Safari, Edge, Opera */ 228 input::-webkit-outer-spin-button, 229 input::-webkit-inner-spin-button { 230 -webkit-appearance: none; 231 margin: 0; 232 } 233 234 /* Firefox */ 235 input[type=number] { 236 -moz-appearance: textfield; 237 } 238</style> Publicador de contenidos
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> articleName [in template "20115#20151#119416624" at line 198, column 60]
----
Tip: If the failing expression is known to be 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: ${articleName} [in template "20115#20151#119416624" at line 198, column 58]
---- 1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 2<!-- necesario para montar la url para realizar la donacion --> 3<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")/> 4<#assign group = groupLocalService.getGroup(groupId)/> 5<#assign groupFriendlyURL = group.getFriendlyURL() /> 6<#assign friendlyURL = group.getPathFriendlyURL(false,themeDisplay) + groupFriendlyURL /> 7 8<#attempt> 9 <#assign assetEntry = renderRequest.getAttribute('LIFERAY_SHARED_LAYOUT_ASSET_ENTRY') /> 10 11 <#assign classPK = assetEntry.classPK /> 12 13 <#assign article = journalArticleLocalService.fetchLatestArticle(classPK) /> 14 15 <#assign articleId = journalArticleLocalService.fetchLatestArticle(classPK).articleId /> 16 17 <#assign docXml = saxReaderUtil.read(article.getContent()) /> 18 19 <#if docXml?has_content> 20 <#assign idExterno = docXml .valueOf("//dynamic-element[@name='idCampana']/dynamic-content/text()") /> 21 <#assign articleName = htmlUtil.escape(article.getTitle(locale))/> 22 23 <div class="evr-donation" style="margin-top: 1.875rem;"> 24 <div class="evr-donation__module"> 25 26 <div id="evr-donation__when" class="evr-donation__when clearfix"> 27 <button class="btn btn-primary btn-normal selected" id="punctual"> <@liferay.language key="once-text"/> </button> 28 <button class="btn btn-primary btn-normal btn-bordered-primary" id="periodic"> <@liferay.language key="monthly-text"/> </button> 29 </div> 30 <div class="evr-donation__quantity-area"> 31 <div class="evr-donation__quantity-area__title"> 32 <@liferay.language key="elige-cantidad-text"/> 33 </div> 34 <div class="evr-donation__quantity-area__actions"> 35 <div id="euros" class="evr-donation__quantity-area__euros"> 36 <#assign primerNumero = docXml .valueOf("//dynamic-element[@name='cantidadPrimera']/dynamic-content/text()") /> 37 <a class="selected" id="primerNumero" data-amount="${primerNumero}">${primerNumero}€</a> 38 39 <#assign segundoNumero = docXml .valueOf("//dynamic-element[@name='cantidadSegunda']/dynamic-content/text()") /> 40 <a id="segundoNumero" data-amount="${segundoNumero}">${segundoNumero}€</a> 41 42 <#assign tercerNumero = docXml .valueOf("//dynamic-element[@name='cantidadTercera']/dynamic-content/text()") /> 43 <a id="tercerNumero" data-amount="${tercerNumero}">${tercerNumero}€</a> 44 45 <!-- input de otra cantidad --> 46 <div class="form-group input-text-wrapper evr-donation__quantity-area__other"> 47 <input class="field form-control" id="otraCantidad" style="font-size:1.775rem; padding-right:0rem;" autocomplete="off" value="" aria-invalid="false" type="number" min="0" placeholder= <@liferay.language key="otra-cantidad-text"/> > 48 </div> 49 <div role="alert" class="required" id="errorAmount" 50 style="display:none; text-align:center; color:red;">La donación debe ser mayor que 0 51 </div> 52 </div> 53 <button id="colaborarButton" class="btn btn-primary w100" 54 onclick="colaborar()"><@liferay.language key="colaborar-link"/></button> 55 </div> 56 </div> 57 58 </div> 59 </div> 60 61 </#if> 62 <#recover> 63</#attempt> 64 65 66<script> 67 68 var amount = 0; 69 var periodicity = 'punctual'; 70 var url; 71 72 function when(){ 73 periodicity = $("#evr-donation__when").find(".btn.selected").attr("id"); 74 $("#evr-donation__when").find(".btn").click(function(){ 75 $("#evr-donation__when").find(".btn").each(function(){ 76 $(this).addClass("btn-bordered-primary"); 77 $(this).removeClass("selected"); 78 }); 79 $(this).removeClass("btn-bordered-primary"); 80 $(this).addClass("selected"); 81 periodicity = $(this).attr("id"); 82 updateDataLayer(amount, periodicity); 83 }); 84 } 85 86 function howmuch(){ 87 amount = $("#euros").find("a.selected").attr("data-amount"); 88 $("#euros").find("a").click(function(){ 89 $("#euros").find("a").each(function(){ 90 $(this).removeClass("selected"); 91 }); 92 $(this).addClass("selected"); 93 $("#otraCantidad").removeClass("hasval"); 94 $("#otraCantidad").val(''); 95 $("#otraCantidad").parent().removeClass("has-error"); 96 $("#otraCantidad").removeClass("error-field"); 97 $("#errorAmount").hide(); 98 $("#colaborarButton").prop('disabled', false); 99 amount = $(this).attr("data-amount"); 100 updateDataLayer(amount, periodicity); 101 }); 102 } 103 104 function other(){ 105 $("#otraCantidad").removeClass("hasval"); 106 $("#otraCantidad").val(''); 107 108 $("#otraCantidad").on("cut copy paste",function(e){ 109 return false; 110 }); 111 $("#otraCantidad").keypress(function(e){ 112 if(isNaN(String.fromCharCode(e.charCode))){ 113 return false; 114 } 115 }); 116 117 if($("#otraCantidad").val() !=""){ 118 $("#otraCantidad").addClass("hasval"); 119 } 120 else{ 121 $("#otraCantidad").removeClass("hasval"); 122 } 123 124 $("#otraCantidad").change(function () { 125 if ($(this).val() != "") { 126 $(this).addClass("hasval"); 127 $("#euros").find("a").each(function () { 128 $(this).removeClass("selected"); 129 }); 130 const regexPositiveDonation = /^[1-9]\d*$/; 131 const isValid = regexPositiveDonation.test($(this).val()); 132 $("#otraCantidad").parent().toggleClass("has-error", !isValid); 133 $("#otraCantidad").toggleClass("error-field", !isValid); 134 $("#colaborarButton").prop('disabled', !isValid); 135 $("#errorAmount").toggle(!isValid); 136 } else { 137 $(this).removeClass("hasval"); 138 } 139 amount = $(this).val(); 140 updateDataLayer(amount, periodicity); 141 }); 142 143 $("#otraCantidad").click(function(){ 144 $("#euros").find("a").each(function(){ 145 $(this).removeClass("selected"); 146 }); 147 if($(this).val() !=""){ 148 $(this).addClass("hasval"); 149 } 150 else{ 151 $(this).removeClass("hasval"); 152 } 153 amount = $(this).val(); 154 updateDataLayer(amount, periodicity); 155 }); 156 } 157 158 function colaborar() { 159 var articleIdCheck = "noArticle"; 160 updateDataLayer(amount, periodicity); 161 <#if articleId?has_content && articleId!=""> 162 articleIdCheck = ${articleId}; 163 </#if> 164 165 encryptParam(url, periodicity, amount, articleIdCheck); 166 } 167 168 function encryptParam(url, periodicity, amount, articleId){ 169 var endpoint = "/o/utils-api/util/encrypt/"+periodicity+"/"+amount+"/"+articleId; 170 $.ajax({ 171 url: endpoint, 172 type: 'GET', 173 cache: false, 174 dataType: "json" 175 }).done(function (data, textStatus, jsqXHR) { 176 var url = "${friendlyURL}/"+"donacion"+"?periodicity="+data.periodicityEncrypted + "&money=" + data.amountEncrypted + "&articleId=" + data.articleIdEncrypted; 177 url = url.replace(/ /g, ""); 178 location.href = url; 179 }).fail(function (jqXHR, textStatus, errorThrown) { 180 console.error(errorThrown); 181 }); 182 } 183 184 otraCantidad.oninput = function () { 185 if (this.value.length > 5) { 186 this.value = this.value.slice(0,5); 187 } 188 } 189 190 function updateDataLayer(price,variant){ 191 var data = { 192 'event': 'productDetail', 193 'ecommerce': { 194 'detail': { 195 'actionField': 196 {'list': 'Haz un donativo'}, 197 'products': [{ 198 'name': '${articleName}', // articleName 199 'id': '${articleId}', // articleId 200 'price': price, // price 201 'brand': 'Cruz Roja', // brand 202 'variant': variant // periodicity 203 }] 204 } 205 } 206 }; 207 if (dataLayer.length > 0) { 208 for (let i = 0; i < dataLayer.length; i++) { 209 if (typeof dataLayer[i].ecommerce !== 'undefined') { 210 dataLayer.splice(i, 1); 211 } 212 } 213 } 214 dataLayer.push(data); 215 } 216 217 $(document).ready(function () { 218 when(); 219 howmuch(); 220 other(); 221 updateDataLayer(amount, periodicity); 222 }); 223 224</script> 225 226<style> 227 /* Chrome, Safari, Edge, Opera */ 228 input::-webkit-outer-spin-button, 229 input::-webkit-inner-spin-button { 230 -webkit-appearance: none; 231 margin: 0; 232 } 233 234 /* Firefox */ 235 input[type=number] { 236 -moz-appearance: textfield; 237 } 238</style> Título Baja suscripciones
Baja suscripciones
Baja suscripciones embed
