Publications Office of the EU
Users - Cellar
DisplayCustomHeader
tesimonials last title

Testimonials

all clients

Publication Office portals using Cellar data

EUR-Lex

EUR-Lex is the online entry to search and retrieve EU Legal publications. The website and its content is available in all of the EU’s 24 official languages and is updated daily.

Cellar is the storage base of EUR-Lex, from where EUR-Lex retrieves the EU Legal publications and their metadata. 

Which are the publications that EUR-Lex provides access?

  • Treaties
  • Legal acts
  • Case-law
  • Other legal publications

How EUR-Lex uses Cellar data?


 

  1. Each publication in EUR-Lex is identified by a CELEX number. In Cellar, this publication is also identifier by the same CELEX number and also at least a unique cellar identifier. Both, can be used to retrieve the publication in Cellar (see Cellar data for details). 
  2. For each publication page, EUR-Lex includes links to retrieve in Cellar the publication in each available language and format (see publications for details). 
  3. For each publication page, EUR-Lex includes a link to retrieve from Cellar the XML notice associated to this publication (see metadata notices for details). 

OP Portal

OP Portal is the online entry to search and retrieve EU general publications and other types of publications and data. 

OP Portal retrieves the EU general publications and their metadata from Cellar.

Which are the publications that OP Portal provides access?

  • General publications
  • Legislation in force
  • Master data

  • EU Whoiswho

  • Publications and data, outside of Cellar.

How OP Portal uses Cellar data?


 

  1. For each publication page, OP Portal includes links to retrieve in Cellar the publication in each available language and format (see publications for details). 
  2. For each publication page, OP Portal includes a link to retrieve from Cellar the RDF notice associated to this publication (see metadata notices for details). 
Users title

USERS

Clients intro

Users

Who are Cellar's users?

Cellar users are:

  • The EU institutions and agencies that store their publications and associated metadata in Cellar (such as such as European Parliament, the Council of the European Union, the European Commission, the Court of Justice, etc.) 
  • Data (re)users, such as:
    • (Re)users and systems coming from the EU institutions and agencies, but also other users, such as academic and research institutions, publishers, Member States, legislators and Courts etc. These users can search and retrieve publications and their associated metadata directly from Cellar. 
    • Information systems of the Publication Office of the EU (such as EUR-Lex and OP Portal presented below) that retrieve publications and their associated metadata from Cellar and offer a dedicated interface to search and display them. 
all clients

Publication Office portals using Cellar data

EUR-Lex

EUR-Lex is the online entry to search and retrieve EU Legal publications. The website and its content is available in all of the EU’s 24 official languages and is updated daily.

Cellar is the storage base of EUR-Lex, from where EUR-Lex retrieves the EU Legal publications and their metadata. 

Which are the publications that EUR-Lex provides access?

  • Treaties
  • Legal acts
  • Case-law
  • Other legal publications

How EUR-Lex uses Cellar data?


 

  1. Each publication in EUR-Lex is identified by a CELEX number. In Cellar, this publication is also identifier by the same CELEX number and also at least a unique cellar identifier. Both, can be used to retrieve the publication in Cellar (see Cellar data for details). 
  2. For each publication page, EUR-Lex includes links to retrieve in Cellar the publication in each available language and format (see publications for details). 
  3. For each publication page, EUR-Lex includes a link to retrieve from Cellar the XML notice associated to this publication (see metadata notices for details). 

OP Portal

OP Portal is the online entry to search and retrieve EU general publications and other types of publications and data. 

OP Portal retrieves the EU general publications and their metadata from Cellar.

Which are the publications that OP Portal provides access?

  • General publications
  • Legislation in force
  • Master data

  • EU Whoiswho

  • Publications and data, outside of Cellar.

How OP Portal uses Cellar data?


 

  1. For each publication page, OP Portal includes links to retrieve in Cellar the publication in each available language and format (see publications for details). 
  2. For each publication page, OP Portal includes a link to retrieve from Cellar the RDF notice associated to this publication (see metadata notices for details). 
Clients external

Testimonials

Asset Publisher
An error occurred while processing the template.
The following has evaluated to null or missing:
==> jsonimg.groupId  [in template "10157#10197#10161502" at line 272, column 68]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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 urlJsonImg = urlJsonImg + jso...  [in template "10157#10197#10161502" at line 272, column 33]
----
1<link rel="stylesheet" href="/o/OPPortalEE/external/OwlCarousel/owl.carousel.min.css" /> 
2<link rel="stylesheet" href="/o/OPPortalEE/external/OwlCarousel/owl.theme.default.css" /> 
3<style> 
4.owl-item > div:after { 
5  font-family: sans-serif; 
6  font-size: 24px; 
7  font-weight: bold; 
8
9 
10 
11.owl-item img { 
12  transition: 0.45s; 
13
14 
15.speakerB { 
16  background-image: url("data:image/svg+xml,%3Csvg width='376' height='1' viewBox='0 0 376 1' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cline x1='0.200195' y1='0.5' x2='375.2' y2='0.5' stroke='%23DDDDDD'/%3E%3C/svg%3E%0A"); 
17  content: " "; 
18      background-size: contain; 
19    background-position: center; 
20  background-repeat:no-repeat; 
21  margin-bottom: 16px; 
22
23 
24 
25.speaker { 
26    width: 60px; 
27    height: 60px; 
28    overflow: hidden; 
29    border-radius: 50%; 
30    margin:0 auto; 
31   /* float: left; 
32    margin: 5px 10px 5px 40px;*/ 
33
34 
35.speaker img { 
36    height: 100%; 
37    -webkit-transform: translateX(-50%); 
38    transform: translateX(-50%); 
39    margin-left: 50%; 
40    transition: all ease-in-out 0.3s; 
41
42 
43.owl-item.active.center img {zoom:1; } 
44 
45h3.testimonial-title { 
46    width: 100%; 
47    float: left; 
48    text-align: center; 
49    font-style: normal; 
50    font-weight: bold; 
51    font-size: 16px; 
52    color: #003399; 
53    overflow-y: hidden; 
54    line-height: 16px; 
55    height: 32px; 
56
57 
58 
59p.subtitle { 
60    width: 100%; 
61    float: left; 
62    text-align: center; 
63    font-size: 13px; 
64    color: #757575; 
65    line-height: 18px; 
66    height: 36px; 
67    overflow-y: hidden; 
68
69 
70p.description { 
71    font-style: normal; 
72    font-weight: normal; 
73    font-size: 14px; 
74    line-height: 22px; 
75    color: #444444; 
76    text-align: center; 
77    overflow-y: hidden; 
78    height: 44px; 
79
80 
81.quoteTop { 
82    content: " "; 
83    width: 100%; 
84   background-image: url("data:image/svg+xml,%3Csvg width='376' height='31' viewBox='0 0 376 31' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cline x1='0.200195' y1='14.5' x2='375.2' y2='14.5' stroke='%23DDDDDD'/%3E%3Ccircle cx='187.7' cy='15.5' r='15.5' fill='%23DDDDDD'/%3E%3Cpath d='M189.977 22.1013C191.303 21.1579 192.28 20.365 192.909 19.7224C194.003 18.6013 194.55 17.5486 194.55 16.5642C194.55 16.2361 194.461 15.9968 194.283 15.8464C194.105 15.696 193.914 15.6208 193.709 15.6208C193.244 15.6892 192.937 15.7234 192.786 15.7234C191.897 15.7234 191.159 15.4226 190.571 14.821C189.983 14.2195 189.689 13.4333 189.689 12.4626C189.689 11.3689 190.011 10.5076 190.653 9.87864C191.296 9.23607 192.137 8.91478 193.176 8.91478C194.393 8.91478 195.404 9.35228 196.211 10.2273C197.018 11.1023 197.421 12.3122 197.421 13.8572C197.421 16.0447 196.525 18.0613 194.734 19.907C193.668 20.987 192.246 22.0261 190.469 23.0242L189.977 22.1013ZM178.738 22.1013C179.996 21.2263 180.946 20.4675 181.589 19.8249C182.737 18.6765 183.312 17.5964 183.312 16.5847C183.312 16.3113 183.243 16.0788 183.106 15.8874C182.956 15.7097 182.744 15.6208 182.471 15.6208C182.02 15.6892 181.719 15.7234 181.568 15.7234C180.666 15.7234 179.921 15.4226 179.333 14.821C178.745 14.2195 178.451 13.4128 178.451 12.4011C178.451 11.4714 178.745 10.6579 179.333 9.96068C179.935 9.26341 180.81 8.91478 181.958 8.91478C183.079 8.91478 184.063 9.32493 184.911 10.1452C185.759 10.9656 186.183 12.1824 186.183 13.7956C186.183 15.9831 185.328 17.9792 183.619 19.7839C182.553 20.905 181.09 21.9851 179.23 23.0242L178.738 22.1013Z' fill='white'/%3E%3C/svg%3E%0A"); 
85    height: 31px; 
86    background-position: center; 
87    background-repeat: no-repeat; 
88
89 
90.owl-item .item { 
91    padding: 20px; 
92    border: 1px solid #C4C4C4; 
93    margin-left: 20px; 
94    Margin-right: 20px; 
95    min-height: 100%; 
96    height: 100%; 
97    display: inline-block; 
98    width: 80%; 
99
100 
101/*.owl-carousel .owl-stage-outer { 
102    height:225px; 
103
104*/ 
105.owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span { 
106    background: #666666; 
107
108 
109.owl-theme .owl-dots .owl-dot span { 
110    width: 15px; 
111    height: 15px; 
112    border: 1px solid #666666; 
113	background: #fff; 
114
115 
116.fa-angle-left:before { 
117    content: " "; 
118    width: 56px; 
119    display: block; 
120    background-image: url("data:image/svg+xml,%3Csvg width='56' height='56' viewBox='0 0 56 56' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M35.2002 11.5L23.2002 26.5L35.2002 41.5' stroke='%23666666' stroke-width='7' stroke-miterlimit='10'/%3E%3C/svg%3E%0A"); 
121    height: 56px; 
122    background-position: center; 
123    background-repeat: no-repeat;  
124
125 
126.fa-angle-right:before { 
127    content: " "; 
128    display: block; 
129    width: 55px; 
130    background-image: url("data:image/svg+xml,%3Csvg width='55' height='56' viewBox='0 0 55 56' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.2002 44.5L32.2002 29.5L20.2002 14.5' stroke='%23666666' stroke-width='7' stroke-miterlimit='10'/%3E%3C/svg%3E%0A"); 
131    height: 56px; 
132    background-position: center; 
133    background-repeat: no-repeat;  
134
135 
136 
137 
138.faArrow { 
139	font-family: 'FontAwesome'; 
140	font-size: 40px; 
141	line-height: 60px; 
142  margin-top: -30px; 
143  position: absolute;  
144  top: 50%; 
145  text-align: center; 
146  width: 60px; height: 60px; 
147
148.owl-next,  
149.owl-prev { 
150 position: absolute; 
151    top: 115px; 
152    height: 55px; 
153    width: 55px; 
154
155.owl-next { 
156  right: 31.5%; 
157
158.owl-prev { 
159  left: 27.5%; 
160
161 
162.fa-angle-left { left: 0; } 
163.fa-angle-right { right: 0; } 
164 
165.owl-theme .owl-nav [class*='owl-']:hover { 
166    background: unset !important; 
167
168 
169.owl-carousel .owl-stage { 
170    padding-top: 35px; 
171    padding-bottom: 40px !important; 
172
173 
174.owl-item.active.center { 
175    transform: scale(1.2) !important; 
176    margin-right:-8px; 
177
178@media (max-width: 991.5px){ 
179    .owl-prev { 
180        left: 15.5%; 
181
182    .owl-next { 
183        right: 20.75%; 
184
185 
186
187 
188@media (max-width: 767.5px) { 
189    .owl-item.active.center { 
190        transform: none !important; 
191
192	 
193	.owl-item .item { 
194		width: 90%; 
195
196	 
197	.owl-next { 
198        right: -45px; 
199
200 
201 
202    .owl-prev { 
203     left: -35px; 
204
205
206 
207.owl-carousel .owl-dots.disabled, .owl-carousel .owl-nav.disabled { 
208    display: block; 
209
210 
211.owl-carousel.owl-drag .owl-item { 
212    transition: 900ms; 
213
214 
215.owl-carousel .active button.owl-dot, 
216.owl-carousel  button.owl-dot:hover{ 
217    background-color: #869791; 
218
219 
220.owl-carousel button.owl-dot { 
221    color: inherit; 
222    padding: 0!important; 
223    font: inherit; 
224    border: 1px solid #666; 
225    background: #fff; 
226    width: 15px; 
227    height: 15px; 
228    margin: 5px 7px; 
229    -webkit-backface-visibility: visible; 
230    transition: opacity 200ms ease; 
231    border-radius: 30px; 
232
233 
234.owl-theme .owl-dots .owl-dot span { 
235	display:none; 
236
237 
238.owl-stage .owl-item:nth-child(3) { 
239    transform: scale(1.2); 
240
241 
242.owl-item.active:not(center) { 
243    transform: scale(1) !important; 
244
245 
246 
247</style> 
248 
249<div class="testimonial-slider-container carousel-wrap" > 
250	<div class="owl-carousel owl-theme" id="testimonial-slider" style=""> 
251				 
252     
253	<#if entries?has_content> 
254		<#list entries as curEntry> 
255			<#assign curEntry = curEntry /> 
256			<#assign assetRenderer = curEntry.getAssetRenderer() /> 
257			<#assign className = assetRenderer.getClassName() /> 
258			<#assign article = assetRenderer.getArticle() /> 
259			<#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContent()) /> 
260 
261			<#assign rootElement = docXml.getRootElement() /> 
262			<#assign availableLocales = rootElement.attribute("available-locales").getText() /> 
263			<#assign defaultLocale = rootElement.attribute("default-locale").getText() /> 
264			 
265			<#if  article.isApproved() > 
266				<#assign articleId = article.getArticleId() /> 
267				 
268				<#assign authorName = docXml.valueOf("//dynamic-element[@name='AuthorName']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
269				<#assign img = docXml.valueOf("//dynamic-element[@name='Picture']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
270				<#assign jsonimg = jsonFactoryUtil.createJSONObject(img)> 
271				<#assign urlJsonImg = "/documents/" > 
272				<#assign urlJsonImg = urlJsonImg + jsonimg.groupId > 
273				<#assign urlJsonImg = urlJsonImg + "/" + jsonimg.fileEntryId > 
274				<#assign urlJsonImg = urlJsonImg + "/" + jsonimg.name > 
275				<#assign urlJsonImg = urlJsonImg + "/" + jsonimg.uuid > 
276				 
277				<#if (availableLocales?contains(locale)) > 
278					<#assign jobPosition = docXml.valueOf("//dynamic-element[@name='JobPosition']/dynamic-content[@language-id='"+locale+"']/text()") /> 
279					<#assign institutionName = docXml.valueOf("//dynamic-element[@name='InstitutionName']/dynamic-content[@language-id='"+locale+"']/text()") /> 
280					<#assign description = docXml.valueOf("//dynamic-element[@name='Description']/dynamic-content[@language-id='"+locale+"']/text()") /> 
281				<#else> 
282					<#assign jobPosition = docXml.valueOf("//dynamic-element[@name='JobPosition']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
283					<#assign institutionName = docXml.valueOf("//dynamic-element[@name='InstitutionName']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
284					<#assign description = docXml.valueOf("//dynamic-element[@name='Description']/dynamic-content[@language-id='"+defaultLocale+"']/text()") /> 
285				</#if> 
286				 
287				<div class="item" data-dot="<button role='button' class='owl-dot' aria-label='Go to slide ${curEntry_index + 1}'><span></span></button>" style=""> 
288				    <div class="quoteTop"></div> 
289					<div class="testimonial"> 
290					    <p class="description" style="">${description}</p> 
291					<div class="speakerB"><div class="speaker"> 
292					    <img alt="${authorName}"  
293						src="${urlJsonImg}"> 
294					    </div> 
295					</div> 
296 
297 
298					<h3 class="testimonial-title">${authorName}</h3> 
299					 
300					<p class="subtitle" style="">${jobPosition} / ${institutionName}</p> 
301					</div> 
302				</div> 
303			 
304			</#if> 
305			 
306		</#list> 
307	</#if> 
308 
309 
310 
311 
312</div> 
313</div> 
314<script src="/o/OPPortalEE/external/OwlCarousel/owl.carousel.min.js" ></script> 
315<script> 
316$(document).ready(function(){ 
317 
318// banner owl carousel 
319$(".owl-carousel").owlCarousel({ 
320    dots: true, 
321    dotsData: true, 
322    slideTransition: 'linear', 
323    smartSpeed:600, 
324    items : 3, // THIS IS IMPORTANT 
325      responsive : { 
326            320 : { items : 1  }, // from zero to 480 screen width 4 items 
327            375 : { items : 1  }, // from zero to 480 screen width 4 items 
328            425 : { items : 1  }, // from zero to 480 screen width 4 items 
329            768 : { items : 2  }, // from 480 screen widthto 768 6 items 
330            1024 : { items : 3   // from 768 screen width to 1024 8 items 
331
332        }, 
333    loop: true, 
334    nav: true, 
335    center: true, 
336    responsiveClass:true, 
337    navText : ['<i class="faArrow fa-angle-left" aria-hidden="true"></i>','<i class="faArrow fa-angle-right" aria-hidden="true"></i>'], 
338    autoplay: false 
339  }); 
340   
341  $( ".owl-prev" ).attr( "aria-label", "Previous testimony" ); 
342$( ".owl-next" ).attr( "aria-label", "Next testimony" ); 
343   
344}); 
345 
346/* $('.owl-carousel').owlCarousel({ 
347    items : 1, // THIS IS IMPORTANT 
348      responsive : { 
349            480 : { items : 1  }, // from zero to 480 screen width 4 items 
350            768 : { items : 2  }, // from 480 screen widthto 768 6 items 
351            1024 : { items : 3   // from 768 screen width to 1024 8 items 
352
353        }, 
354    loop: true, 
355    margin: 10, 
356    nav: true, 
357    center: true, 
358    navText : ['<i class="fa fa-angle-left" aria-hidden="true"></i>','<i class="fa fa-angle-right" aria-hidden="true"></i>'], 
359    autoplay: false, 
360    autoWidth:true, 
361    autoplayHoverPause: true, 
362}); */ 
363/*$(document).ready(function(){ 
364  $('.owl-carousel').owlCarousel(); 
365 
366});*/ 
367</script>