Latest blogs and articles

More insights

Funet's anniversary: 40 years of action and 35 years in Internet

This year marks the 40th anniversary of the Funet (Finnish University and Research Network) and the 35th anniversary of Finland's connection to the global internet. Funet can be proud of its many achievements, not least the connection of Finland to the internet.

Read More »

The EISCAT 3D radar system to revolutionize atmospheric research

The new EISCAT 3D radar system will provide three-dimensional images of northern lights. The project is coordinated by the Sodankylä Geophysical Observatory of the University of Oulu. CSC is actively involved in the project.

Read More »

Poikkeustilasta pysyviin rakenteisiin

Korkeakoulujen IT-johtajien verkostot AAPA ja FUCIO sekä CSC kutsuivat korkeakoulujen pedagogiikan, opiskelun ja opetuksen tuen ja hallinnon sekä muut kiinnostuneet ideapankki.csc.fi -webinaariin kesäkuun lopussa.

Read More »

Tackling coronavirus with scientific databases

Coronavirus can be overcome through international cooperation and sharing of data, and electronic research infrastructures can help with this. They include hardware, information networks, databases and services that together make up a network of global information exchange. Finland is a member of these infrastructures and the benefits are undeniable.

Read More »
 
An error occurred while processing the template.
The following has evaluated to null or missing:
==> assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL)  [in template "10154#10192#411426" at line 10, column 32]

----
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: #assign viewURL = assetRenderer.getUR...  [in template "10154#10192#411426" at line 10, column 13]
----
1<#assign liferay_portlet = taglibLiferayHash["/META-INF/liferay-portlet.tld"] /> 
2<#assign liferay_ui = taglibLiferayHash["/META-INF/liferay-ui.tld"] /> 
3 
4<div class="kooste25 <@liferay_portlet.namespace />container"> 
5    <#list entries as entry> 
6        <#assign entry = entry /> 
7        <#assign assetRenderer = entry.getAssetRenderer() /> 
8        <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) /> 
9        <#if assetLinkBehavior != "showFullContent"> 
10            <#assign viewURL = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 
11        </#if> 
12         
13         
14        <#if entry.getClassName() == "com.liferay.journal.kernel.model.JournalArticle"> 
15         
16            <#assign article = entry.getAssetRenderer().getArticle()/> 
17            <#assign document = saxReaderUtil.read(article.getContentByLocale(locale.toString())) /> 
18            <#assign categories = entry.getCategories() /> 
19            <#assign headline = document.valueOf("//dynamic-element[@name='Headline']/dynamic-content/text()") /> 
20            <#assign summary = htmlUtil.escape(assetRenderer.getSummary(locale)) /> 
21    
22            <div class="boksi"> 
23                <div class="article-content"> 
24        <#list categories as category> 
25                     
26                            <#assign categoryTitle = category.getTitle("en_US", true) /> 
27                            <#assign categoryClass = categoryTitle?lower_case/> 
28                            <#assign categoryClass = categoryClass?replace("[^\\d\\w]", "-", "r")/> 
29 
30                            <#assign categoryId = category.getCategoryId() /> 
31                         
32                     
33                     
34                            <#if category.getTitle(locale.toString(), true) == "Artikkeli" || category.getTitle(locale.toString(), true) == "Article"> 
35                                <div class="ac-${categoryClass}">${category.getTitle(locale.toString(), true)}</div> 
36                            </#if> 
37                     
38                    </#list> 
39                <h3><a href="${viewURL}" target="_blank">${headline}</a></h3> 
40              
41                     
42               
43                   <section class="text"> 
44 
45                        <small><@getMetadataField fieldName="publish-date" /></small> 
46                        <p class="article-summary">${stringUtil.shorten(htmlUtil.stripHtml(summary), 200)}</p> 
47 
48                      <p><a class="readmore" href="${viewURL}" target="_blank"><@liferay.language key="read-more" /> »</a></p>   
49                 
50                    </section>  
51                     
52                
53                </div> 
54         
55                     
56             
57                 
58            </div> 
59        </#if> 
60 
61    <#if entry.getClassName() == "com.liferay.blogs.kernel.model.BlogsEntry"> 
62        <div class="boksi"> 
63	 
64		<#assign curEntry = entry /> 
65        <#assign categories = entry.getCategories() /> 
66	 
67		<#assign bloglink = "https://www.csc.fi/web/blog/post/-/blogs/"> 
68		<#assign urltitle = entry.getAssetRenderer().getUrlTitle() /> 
69	 
70		 
71        <div class="blog-content"> 
72 
73           <#list categories as category> 
74                     
75                    <#assign categoryTitle = category.getTitle("en_US", true) /> 
76                    <#assign categoryClass = categoryTitle?lower_case/> 
77                    <#assign categoryClass = categoryClass?replace("[^\\d\\w]", "-", "r")/> 
78 
79                    <#assign categoryId = category.getCategoryId() /> 
80                    <#assign portletURL = renderResponse.createRenderURL() /> 
81                    ${portletURL.setParameter("resetCur", "TRUE")} 
82                    ${portletURL.setParameter("categoryId", categoryId?string)} 
83                     
84                    <#if category.getTitle(locale.toString(), true) == "Blogi" || category.getTitle(locale.toString(), true) == "Blog"> 
85                        <div class="ac-${categoryClass}">${category.getTitle(locale.toString(), true)}</div> 
86                    </#if> 
87                     
88            </#list> 
89            <h3><a href="${bloglink}${urltitle}" target="_blank">${htmlUtil.escape(curEntry.getTitle())}</a></h3> 
90            
91			<section class="text"> 
92				<#assign summary = curEntry.getDescription() /> 
93 
94			 
95				 
96				<p class="article-summary">${stringUtil.shorten(htmlUtil.stripHtml(summary), 200)}</p> 
97              <p><a class="readmore" href="${bloglink}${urltitle}" target="_blank"><@liferay.language key="read-more" /> »</a></p>  
98                 
99			</section> 
100		</div> 
101	 
102        
103	</div> 
104    </#if> 
105    </#list> 
106</div> <!--csc-article-list--> 
107 
108<script type="text/javascript"> 
109    var container = document.querySelector('.csc-article-list'); 
110    var msnry; 
111 
112    // initialize Masonry after all images have loaded 
113    imagesLoaded( container, function() { 
114        msnry = new Masonry( container ); 
115    }); 
116</script> 
117 
118<#macro getMetadataField fieldName> 
119    <#if stringUtil.split(metadataFields)?seq_contains(fieldName)> 
120    <span class="metadata-entry metadata-" ${fieldName}"> 
121        <#assign dateFormat = "dd.MM.yyyy" /> 
122 
123        <#if fieldName == "author"> 
124            <@liferay.language key="by" /> ${portalUtil.getUserName(assetRenderer.getUserId(), 
125        assetRenderer.getUserName())} 
126        <#elseif fieldName == "categories"> 
127            <@liferay_ui["asset-categories-summary"] 
128            className=entry.getClassName() 
129            classPK=entry.getClassPK() 
130            portletURL=renderResponse.createRenderURL() 
131            /> 
132        <#elseif fieldName == "create-date"> 
133        ${dateUtil.getDate(entry.getCreateDate(), dateFormat, locale)} 
134        <#elseif fieldName == "expiration-date"> 
135        ${dateUtil.getDate(entry.getExpirationDate(), dateFormat, locale)} 
136        <#elseif fieldName == "modified-date"> 
137        ${dateUtil.getDate(entry.getModifiedDate(), dateFormat, locale)} 
138        <#elseif fieldName == "priority"> 
139        ${entry.getPriority()} 
140        <#elseif fieldName == "publish-date" && entry.getPublishDate()??> 
141        ${dateUtil.getDate(entry.getPublishDate(), dateFormat, locale)} 
142        <#elseif fieldName == "tags"> 
143            <@liferay_ui["asset-tags-summary"] 
144            className=entry.getClassName() 
145            classPK=entry.getClassPK() 
146            portletURL=renderResponse.createRenderURL() 
147            /> 
148        <#elseif fieldName == "view-count"> 
149            <@liferay_ui["icon"] 
150            image="history" 
151            /> 
152 
153        ${entry.getViewCount()} <@liferay.language key="views" /> 
154        </#if> 
155    </span> 
156    </#if> 
157</#macro>