Tutkimuksen perusta
Uusimmat blogit ja artikkelit
Funetin juhlavuosi: 40 vuotta toimintaa ja 35 vuotta internetissä
Tänä vuonna on kulunut 40 vuotta Funet-tietoverkon perustamisesta ja 35 vuotta Suomen liittymisestä maailmanlaajuiseen internetiin. Juhlavuottaan viettävä Funet voi olla ylpeä monista saavutuksistaan, eikä Suomen liittäminen internetiin ole niistä vähäisin.
Lue lisää »EISCAT 3D -tutkajärjestelmä mullistaa ilmakehätutkimuksen
Pian valmistumassa olevan uuden EISCAT 3D -tutkajärjestelmän avulla saadaan revontulista kolmiulotteista kuvaa. Hanketta koordinoi Oulun yliopiston Sodankylän geofysiikan observatorio. CSC on hankkeessa tiiviisti mukana.
Lue lisää »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.
Lue lisää »Koronavirus laitetaan kuriin tieteen tietokantojen avulla
Koronavirus voidaan kukistaa kansainvälisellä yhteistyöllä ja tiedon jakamisella. Apuna ovat sähköiset tutkimusinfrastruktuurit. Suomi on jäsenenä näissä ja hyödyt ovat kiistattomat.
Lue lisää »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>