I am using eloqua for email marketing and i do not see any way to define global variables in the email. Is there any script that eloqua uses that i can use to define some global variables at the top of the email so i do not have to define values several times in the html?
I am looking to define variables like this:
var mylink = "www.google.com";
<!DOCTYPE html>
<html>
<head> </head>
<body>
Visit Website
</body>
</html>
Eloqua actively blocks java scripting in emails[1].
What you are attempting is bypassing eloqua built in functions.
Either utilize the field merge or dynamic content modules to achieve your desired outcome.
If you have a range of values, picklists can be very powerful.
1 https://docs.oracle.com/en/cloud/saas/marketing/eloqua-user/Help/Emails/HTMLemailCodeRequirements.ht
Related
Freemarker (by default) uses the locale to build the file names it looks for when loading and including templates. For example, loading tos.ftl (the template) with the en_US locale would look for:
tos_en_US.ftl
tos_en.ftl
tos.ftl
This can be useful to translate whole pages when the pages are completely different between different languages. For example, a "Terms of Service" page might be mostly static so different languages would have completely different content. In this case, it is a hassle to externalize the whole content to messages loaded from message bundles.
I am now learning Thymeleaf and can't find any information about a similar functionality. I know that Thymeleaf uses localized message bundles to fill in th:text elements, but can it load localized versions of the template files?
Note: I'm using Spring Boot
I know it's a little bit too late but here is how I would attempt to solve this using the current version of Thymeleaf:
Presuming you have these 2 localised templates under path (from the template root) path/to/template:
localized_template_en.html
localized_template_ru.html
In your SomeController.class:
#GetMapping( "/locale_test" )
public String getLocalisedPage( Model model ) {
return "path/to/template/localized_template_"
+ LocaleContextHolder.getLocale().getLanguage();
}
As a result you will get the correct template given you use Spring localisation features (such as LocaleChangeInterceptor). If not - instead of using LocaleContextHolder implement your custom logic for postfix selection.
Thymeleaf's behaviour the same as Spring 4 MVC Internationalization (I guess you using Thymeleaf with Spring??), it uses messages.properties to realize that.
For example you have a template with #{hello} message:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<title></title>
</head>
<body>
<span th:text="#{hello}">
</body>
#{hello} text will be binded to the messages.properties proprty hello.
If you locale would be another, e.g. ru_RU you just add messages_ru_RU.properties and change the locale of your application.
After that, your message will be taken from localized properties file.
Note that necessarily to have messages.properties file if you using localized messages file.
I am learning Django by developing a web application. I have added the site to cloudflare CDN's free service. After a long learning curve i am able to send request to Django application using ajax, but strangely the response contains the script from cloudflare embedded as part of it.
Example ajax response:
<html><body>No arguments passed<script type="text/javascript">
//<![CDATA[
try{if (!window.CloudFlare) {var CloudFlare=[{verbose:0,p:0,byc:0,owlid:"cf",bag2:1,mirage2:0,oracle:0,paths:{cloudflare:"/cdn-cgi/nexp/dok3v=1613a3a185/"},atok:"b4c8a1a8481c9535dc367c9b4c8c52ab",petok:"e3070e55a3a1fceb44356d479cfa086f3dd56bbe-1429555139-1800",zone:"mydjango.in",rocket:"0",apps:{}}];CloudFlare.push({"apps":{"ape":"0c86dff90b5e1a63e6c69c775ca3d309"}});!function(a,b){a=document.createElement("script"),b=document.getElementsByTagName("script")[0],a.async=!0,a.src="//ajax.cloudflare.com/cdn-cgi/nexp/dok3v=7e13c32551/cloudflare.min.js",b.parentNode.insertBefore(a,b)}()}}catch(e){};
//]]>
</script>
</body></html>
The views.py code to return the response:
def send_response(request):
inpval = request.GET.get('inputval','')
if not inpval:
html = "<html><body>No arguments passed</body></html>"
else:
html = "<html><body> %s </body></html>" % inpval
return HttpResponse(html)
Can anyone help me understand how to remove this extra script from cloudflare?
Well, i figured out the issue, cloudflare is adding its own <script> tag just before </body>. So, instead of returning the result with html tags, just retrieved the values and processed them in the client.
Example:
if not inpval:
html = "No arguments passed"
I am new to Thymeleaf and converting my Web page from JSP to Thymeleaf. I have a strut tag like this:
<c:set var="someVariable" value="${someValue}"/>
That variable can be used anywhere in JSP. Is there any such alternatives for this in Thymeleaf?
You can use local variables.
Declare an HTML element with a th:with attribute. For example
<div th:with="someVariable=${someValue}">
The documentation states
When th:with is processed, that [someVariable] variable is created as a
local variable and added to the variables map coming from the context,
so that it is as available for evaluation as any other variables
declared in the context from the beginning, but only within the bounds
of the containing tag.
Just a note, if you wish to assign more than one variable, separate them with a comma :
<div th:with="someVariable=${someValue},anotherVariable=${anotherValue}">
See the third example : Local Variable section of Thymeleaf documentation
declare with th:with="varName=${'str'}
ref with in src th:src="#{${varName}}"
in more detail:
<head th:with="component =${'/static/component'}, bizJs = ${'/static/js/biz'}">
<span th:text="${component}"></span>
<script th:src="#{(${component})}"></script>
<script th:src="#{${bizJs} + '/static/js'}"></script>
</head>
How Can I Internationalize Strings located in Javascript File while Building a Spring MVC WebApp ?
I'm using <spring:message code="label1" /> to Internationalize some static Strings In the JSP Files, but what about error messages located in my js files for example? is there a way to resolve internationalization without including the plain js code in the jsp file ?
I thought about creating a list of values, one for each error, and proceed with ajax calls whenever the page is refreshed, so I can get the right message according the value of the lang variable, but is it wise to do so ?!
Include this piece of code in some common jsp , say header.jsp.
<script type="text/javascript">
function getSystemLocale() {
var systemLocale ='<%=RequestContextUtils.getLocale(request)%>';
return systemLocale;
}
function getResource(){
jQuery.i18n.properties({
name:'JS_Messages',
path: getContextPath()+'/resource-bundles/JS_Messages/',
mode:'both',
language:getSystemLocale(),
callback: function() {
jQuery.i18n.prop('error_message');
}
});
}
</script>
Structure will something as below. It will load all the properties files from the given path and search for the variable based on locale.
Remember the naming convention of file , ending with locale.
Need to include jquery.i18n.properties-min-1.0.9 for the same.
and simply in javascript you can access the key as alert(error_occured);
I am loading a jsp, in which there is an internal request to another server.
eg.
<html>
<head>
</head>
<body>
<div> Welcome to....</div>
.....
.....
<%
HttpConnection conn = new HttpConnection("http://someothersite/somepage");
conn.getResponse ();
%>
<div><%=response%></div>
....
</html>
what are all the better ways to reduce the response time in this case?
Try using Asynchronous Javascript(AJAX).
The response time may be the same. But it will not block the other parts of your page to get loaded. Populate the required div with the Ajax response.
You may get a lot of articles regarding how to use AJAX on a google search.
Less database connection and use optimize query.
use to cache js and picture