relive gui

This commit is contained in:
MaZderMind 2014-12-27 20:56:20 +01:00
parent ab0a2cfbf2
commit da15fd33e4
39 changed files with 22068 additions and 53 deletions

View file

@ -5696,12 +5696,19 @@ a.inverted {
clear: both;
height: 120px;
color: black; }
.event-previews .event-preview.live {
background-color: #d87500; }
.event-previews .event-preview.live .metadata li, .event-previews .event-preview.live h3 {
color: white; }
.event-previews .event-preview.live:hover .metadata li, .event-previews .event-preview.live:hover h3 {
color: white; }
.event-previews .event-preview.live:hover h3 {
text-decoration: underline; }
.event-previews .event-preview.template {
display: none; }
.event-previews .event-preview .video-thumbnail {
float: left;
height: 120px;
width: 160px; }
height: 120px; }
.event-previews .event-preview:hover, .event-previews .event-preview:focus, .event-previews .event-preview:active {
text-decoration: none; }
.event-previews .event-preview:hover .metadata li, .event-previews .event-preview:hover h3, .event-previews .event-preview:focus .metadata li, .event-previews .event-preview:focus h3, .event-previews .event-preview:active .metadata li, .event-previews .event-preview:active h3 {
@ -5715,7 +5722,7 @@ a.inverted {
color: #333333;
min-width: inherit; }
.event-previews .event-preview .caption {
margin-left: 160px;
margin-left: 220px;
padding-left: 16px; }
.event-previews .event-preview .caption h3 {
margin-top: 0; }
@ -5759,7 +5766,7 @@ a.inverted {
padding: 0;
margin-top: 0;
margin-bottom: 0;
min-width: 75px; }
min-width: 95px; }
.navbar .input-group {
margin-bottom: 5px; }
.navbar .button-wrapper {
@ -5818,7 +5825,14 @@ a.inverted {
width: 60px; }
.event-previews-tags .event-preview .caption,
.event-previews-search .event-preview .caption {
margin-left: 60px; } }
margin-left: 60px; }
.rooms .room-group li.sendezentrum a .teaser {
display: none; }
.rooms .room-group li.sendezentrum a .title {
position: static;
margin-top: 10px;
text-align: center; } }
.program.scroll-container {
overflow: hidden;
overflow-x: scroll; }

File diff suppressed because one or more lines are too long

View file

@ -571,12 +571,28 @@ a.inverted {
height: 120px;
color: black;
&.live {
background-color: $brand-primary;
.metadata li, h3 {
color: white;
}
&:hover {
.metadata li, h3 {
color: white;
}
h3 {
text-decoration: underline;
}
}
}
&.template { display: none; }
.video-thumbnail {
float: left;
height: 120px;
width: 160px;
}
&:hover, &:focus, &:active {
@ -600,7 +616,7 @@ a.inverted {
}
.caption {
margin-left: 160px;
margin-left: 220px;
padding-left: $padding-large-horizontal;
h3 {
@ -665,7 +681,7 @@ a.inverted {
padding: 0;
margin-top: 0;
margin-bottom: 0;
min-width: 75px;
min-width: 95px;
}
.input-group {
margin-bottom: $padding-small-vertical;
@ -751,6 +767,15 @@ a.inverted {
margin-left: 60px;
}
}
.rooms .room-group li.sendezentrum a {
.teaser { display: none; }
.title {
position: static;
margin-top: 10px;
text-align: center;
}
}
}
.program {

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -0,0 +1,14 @@
<?xml version="1.0" standalone="no"?>
<svg id="bigplay" viewBox="0 0 100 200" style="background-color:#ffffff00" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
x="0px" y="0px" width="100px" height="200px"
>
<g id="dark">
<path id="Polygon" d="M 72.5 49.5 L 38.75 68.9856 L 38.75 30.0144 L 72.5 49.5 Z" fill="#ffffff" opacity="0.75" />
<path id="Ellipse" d="M 13 50.5 C 13 29.7891 29.7891 13 50.5 13 C 71.2109 13 88 29.7891 88 50.5 C 88 71.2109 71.2109 88 50.5 88 C 29.7891 88 13 71.2109 13 50.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="0.75"/>
</g>
<g id="light">
<path id="Polygon2" d="M 72.5 149.5 L 38.75 168.9856 L 38.75 130.0144 L 72.5 149.5 Z" fill="#ffffff" opacity="1.0" />
<path id="Ellipse2" d="M 13 150.5 C 13 129.7891 29.7891 113 50.5 113 C 71.2109 113 88 129.7891 88 150.5 C 88 171.211 71.2109 188 50.5 188 C 29.7891 188 13 171.211 13 150.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="1.0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Binary file not shown.

9597
assets/js/lib/relive/jquery.js vendored Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,980 @@
.mejs-offscreen{
/* Accessibility: hide screen reader texts (and prefer "top" for RTL languages). */
position: absolute !important;
top: -10000px;
overflow: hidden;
width: 1px;
height: 1px;
}
.mejs-container {
position: relative;
background: #000;
font-family: Helvetica, Arial;
text-align: left;
vertical-align: top;
text-indent: 0;
}
.me-plugin {
position: absolute;
}
.mejs-embed, .mejs-embed body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
background: #000;
overflow: hidden;
}
.mejs-fullscreen {
/* set it to not show scroll bars so 100% will work */
overflow: hidden !important;
}
.mejs-container-fullscreen {
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
overflow: hidden;
z-index: 1000;
}
.mejs-container-fullscreen .mejs-mediaelement,
.mejs-container-fullscreen video {
width: 100%;
height: 100%;
}
.mejs-clear {
clear: both;
}
/* Start: LAYERS */
.mejs-background {
position: absolute;
top: 0;
left: 0;
}
.mejs-mediaelement {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.mejs-poster {
position: absolute;
top: 0;
left: 0;
background-size: contain ;
background-position: 50% 50% ;
background-repeat: no-repeat ;
}
:root .mejs-poster img {
display: none ;
}
.mejs-poster img {
border: 0;
padding: 0;
border: 0;
}
.mejs-overlay {
position: absolute;
top: 0;
left: 0;
}
.mejs-overlay-play {
cursor: pointer;
}
.mejs-overlay-button {
position: absolute;
top: 50%;
left: 50%;
width: 100px;
height: 100px;
margin: -50px 0 0 -50px;
background: url(bigplay.svg) no-repeat;
}
.no-svg .mejs-overlay-button {
background-image: url(bigplay.png);
}
.mejs-overlay:hover .mejs-overlay-button {
background-position: 0 -100px ;
}
.mejs-overlay-loading {
position: absolute;
top: 50%;
left: 50%;
width: 80px;
height: 80px;
margin: -40px 0 0 -40px;
background: #333;
background: url(background.png);
background: rgba(0, 0, 0, 0.9);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.9)), to(rgba(0,0,0,0.9)));
background: -webkit-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
background: -moz-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
background: -o-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
background: -ms-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
background: linear-gradient(rgba(50,50,50,0.9), rgba(0,0,0,0.9));
}
.mejs-overlay-loading span {
display: block;
width: 80px;
height: 80px;
background: transparent url(loading.gif) 50% 50% no-repeat;
}
/* End: LAYERS */
/* Start: CONTROL BAR */
.mejs-container .mejs-controls {
position: absolute;
list-style-type: none;
margin: 0;
padding: 0;
bottom: 0;
left: 0;
background: url(background.png);
background: rgba(0, 0, 0, 0.7);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7)));
background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7));
height: 30px;
width: 100%;
}
.mejs-container .mejs-controls div {
list-style-type: none;
background-image: none;
display: block;
float: left;
margin: 0;
padding: 0;
width: 26px;
height: 26px;
font-size: 11px;
line-height: 11px;
font-family: Helvetica, Arial;
border: 0;
}
.mejs-controls .mejs-button button {
cursor: pointer;
display: block;
font-size: 0;
line-height: 0;
text-decoration: none;
margin: 7px 5px;
padding: 0;
position: absolute;
height: 16px;
width: 16px;
border: 0;
background: transparent url(controls.svg) no-repeat;
}
.no-svg .mejs-controls .mejs-button button {
background-image: url(controls.png);
}
/* :focus for accessibility */
.mejs-controls .mejs-button button:focus {
outline: dotted 1px #999;
}
/* End: CONTROL BAR */
/* Start: Time (Current / Duration) */
.mejs-container .mejs-controls .mejs-time {
color: #fff;
display: block;
height: 17px;
width: auto;
padding: 10px 3px 0 3px ;
overflow: hidden;
text-align: center;
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
.mejs-container .mejs-controls .mejs-time a {
color: #fff;
font-size: 11px;
line-height: 12px;
display: block;
float: left;
margin: 1px 2px 0 0;
width: auto;
}
/* End: Time (Current / Duration) */
/* Start: Play/Pause/Stop */
.mejs-controls .mejs-play button {
background-position: 0 0;
}
.mejs-controls .mejs-pause button {
background-position: 0 -16px;
}
.mejs-controls .mejs-stop button {
background-position: -112px 0;
}
/* Start: Play/Pause/Stop */
/* Start: Progress Bar */
.mejs-controls div.mejs-time-rail {
direction: ltr;
width: 200px;
padding-top: 5px;
}
.mejs-controls .mejs-time-rail span, .mejs-controls .mejs-time-rail a {
display: block;
position: absolute;
width: 180px;
height: 10px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
cursor: pointer;
}
.mejs-controls .mejs-time-rail .mejs-time-total {
margin: 5px;
background: #333;
background: rgba(50,50,50,0.8);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8)));
background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8));
}
.mejs-controls .mejs-time-rail .mejs-time-buffering {
width: 100%;
background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-webkit-background-size: 15px 15px;
-moz-background-size: 15px 15px;
-o-background-size: 15px 15px;
background-size: 15px 15px;
-webkit-animation: buffering-stripes 2s linear infinite;
-moz-animation: buffering-stripes 2s linear infinite;
-ms-animation: buffering-stripes 2s linear infinite;
-o-animation: buffering-stripes 2s linear infinite;
animation: buffering-stripes 2s linear infinite;
}
@-webkit-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
@-moz-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
@-ms-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
@-o-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
@keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
.mejs-controls .mejs-time-rail .mejs-time-loaded {
background: #3caac8;
background: rgba(60,170,200,0.8);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(44,124,145,0.8)), to(rgba(78,183,212,0.8)));
background: -webkit-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
background: -moz-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
background: -o-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
background: -ms-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
background: linear-gradient(rgba(44,124,145,0.8), rgba(78,183,212,0.8));
width: 0;
}
.mejs-controls .mejs-time-rail .mejs-time-current {
background: #fff;
background: rgba(255,255,255,0.8);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8)));
background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8));
width: 0;
}
.mejs-controls .mejs-time-rail .mejs-time-handle {
display: none;
position: absolute;
margin: 0;
width: 10px;
background: #fff;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
cursor: pointer;
border: solid 2px #333;
top: -2px;
text-align: center;
}
.mejs-controls .mejs-time-rail .mejs-time-float {
position: absolute;
display: none;
background: #eee;
width: 36px;
height: 17px;
border: solid 1px #333;
top: -26px;
margin-left: -18px;
text-align: center;
color: #111;
}
.mejs-controls .mejs-time-rail .mejs-time-float-current {
margin: 2px;
width: 30px;
display: block;
text-align: center;
left: 0;
}
.mejs-controls .mejs-time-rail .mejs-time-float-corner {
position: absolute;
display: block;
width: 0;
height: 0;
line-height: 0;
border: solid 5px #eee;
border-color: #eee transparent transparent transparent;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
top: 15px;
left: 13px;
}
.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float {
width: 48px;
}
.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-current {
width: 44px;
}
.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-corner {
left: 18px;
}
/*
.mejs-controls .mejs-time-rail:hover .mejs-time-handle {
visibility:visible;
}
*/
/* End: Progress Bar */
/* Start: Fullscreen */
.mejs-controls .mejs-fullscreen-button button {
background-position: -32px 0;
}
.mejs-controls .mejs-unfullscreen button {
background-position: -32px -16px;
}
/* End: Fullscreen */
/* Start: Mute/Volume */
.mejs-controls .mejs-volume-button {
}
.mejs-controls .mejs-mute button {
background-position: -16px -16px;
}
.mejs-controls .mejs-unmute button {
background-position: -16px 0;
}
.mejs-controls .mejs-volume-button {
position: relative;
}
.mejs-controls .mejs-volume-button .mejs-volume-slider {
display: none;
height: 115px;
width: 25px;
background: url(background.png);
background: rgba(50, 50, 50, 0.7);
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
top: -115px;
left: 0;
z-index: 1;
position: absolute;
margin: 0;
}
.mejs-controls .mejs-volume-button:hover {
-webkit-border-radius: 0 0 4px 4px;
-moz-border-radius: 0 0 4px 4px;
border-radius: 0 0 4px 4px;
}
/*
.mejs-controls .mejs-volume-button:hover .mejs-volume-slider {
display: block;
}
*/
.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total {
position: absolute;
left: 11px;
top: 8px;
width: 2px;
height: 100px;
background: #ddd;
background: rgba(255, 255, 255, 0.5);
margin: 0;
}
.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current {
position: absolute;
left: 11px;
top: 8px;
width: 2px;
height: 100px;
background: #ddd;
background: rgba(255, 255, 255, 0.9);
margin: 0;
}
.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle {
position: absolute;
left: 4px;
top: -3px;
width: 16px;
height: 6px;
background: #ddd;
background: rgba(255, 255, 255, 0.9);
cursor: N-resize;
-webkit-border-radius: 1px;
-moz-border-radius: 1px;
border-radius: 1px;
margin: 0;
}
/* horizontal version */
.mejs-controls a.mejs-horizontal-volume-slider {
height: 26px;
width: 56px;
position: relative;
display: block;
float: left;
vertical-align: middle;
}
.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total {
position: absolute;
left: 0;
top: 11px;
width: 50px;
height: 8px;
margin: 0;
padding: 0;
font-size: 1px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
background: #333;
background: rgba(50,50,50,0.8);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8)));
background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8));
}
.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
position: absolute;
left: 0;
top: 11px;
width: 50px;
height: 8px;
margin: 0;
padding: 0;
font-size: 1px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
background: #fff;
background: rgba(255,255,255,0.8);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8)));
background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8));
}
.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle {
display: none;
}
/* End: Mute/Volume */
/* Start: Track (Captions and Chapters) */
.mejs-controls .mejs-captions-button {
position: relative;
}
.mejs-controls .mejs-captions-button button {
background-position: -48px 0;
}
.mejs-controls .mejs-captions-button .mejs-captions-selector {
visibility: hidden;
position: absolute;
bottom: 26px;
right: -51px;
width: 85px;
height: 100px;
background: url(background.png);
background: rgba(50,50,50,0.7);
border: solid 1px transparent;
padding: 10px 10px 0 10px;
overflow: hidden;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
/*
.mejs-controls .mejs-captions-button:hover .mejs-captions-selector {
visibility: visible;
}
*/
.mejs-controls .mejs-captions-button .mejs-captions-selector ul {
margin: 0;
padding: 0;
display: block;
list-style-type: none !important;
overflow: hidden;
}
.mejs-controls .mejs-captions-button .mejs-captions-selector ul li {
margin: 0 0 6px 0;
padding: 0;
list-style-type: none !important;
display: block;
color: #fff;
overflow: hidden;
}
.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input {
clear: both;
float: left;
margin: 3px 3px 0 5px;
}
.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label {
width: 55px;
float: left;
padding: 4px 0 0 0;
line-height: 15px;
font-family: helvetica, arial;
font-size: 10px;
}
.mejs-controls .mejs-captions-button .mejs-captions-translations {
font-size: 10px;
margin: 0 0 5px 0;
}
.mejs-chapters {
position: absolute;
top: 0;
left: 0;
-xborder-right: solid 1px #fff;
width: 10000px;
z-index: 1;
}
.mejs-chapters .mejs-chapter {
position: absolute;
float: left;
background: #222;
background: rgba(0, 0, 0, 0.7);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7)));
background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7));
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#323232,endColorstr=#000000);
overflow: hidden;
border: 0;
}
.mejs-chapters .mejs-chapter .mejs-chapter-block {
font-size: 11px;
color: #fff;
padding: 5px;
display: block;
border-right: solid 1px #333;
border-bottom: solid 1px #333;
cursor: pointer;
}
.mejs-chapters .mejs-chapter .mejs-chapter-block-last {
border-right: none;
}
.mejs-chapters .mejs-chapter .mejs-chapter-block:hover {
background: #666;
background: rgba(102,102,102, 0.7);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(102,102,102,0.7)), to(rgba(50,50,50,0.6)));
background: -webkit-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
background: -moz-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
background: -o-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
background: -ms-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
background: linear-gradient(rgba(102,102,102,0.7), rgba(50,50,50,0.6));
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#666666,endColorstr=#323232);
}
.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title {
font-size: 12px;
font-weight: bold;
display: block;
white-space: nowrap;
text-overflow: ellipsis;
margin: 0 0 3px 0;
line-height: 12px;
}
.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan {
font-size: 12px;
line-height: 12px;
margin: 3px 0 4px 0;
display: block;
white-space: nowrap;
text-overflow: ellipsis;
}
.mejs-captions-layer {
position: absolute;
bottom: 0;
left: 0;
text-align:center;
line-height: 20px;
font-size: 16px;
color: #fff;
}
.mejs-captions-layer a {
color: #fff;
text-decoration: underline;
}
.mejs-captions-layer[lang=ar] {
font-size: 20px;
font-weight: normal;
}
.mejs-captions-position {
position: absolute;
width: 100%;
bottom: 15px;
left: 0;
}
.mejs-captions-position-hover {
bottom: 35px;
}
.mejs-captions-text {
padding: 3px 5px;
background: url(background.png);
background: rgba(20, 20, 20, 0.5);
white-space: pre-wrap;
}
/* End: Track (Captions and Chapters) */
/* Start: Error */
.me-cannotplay {
}
.me-cannotplay a {
color: #fff;
font-weight: bold;
}
.me-cannotplay span {
padding: 15px;
display: block;
}
/* End: Error */
/* Start: Loop */
.mejs-controls .mejs-loop-off button {
background-position: -64px -16px;
}
.mejs-controls .mejs-loop-on button {
background-position: -64px 0;
}
/* End: Loop */
/* Start: backlight */
.mejs-controls .mejs-backlight-off button {
background-position: -80px -16px;
}
.mejs-controls .mejs-backlight-on button {
background-position: -80px 0;
}
/* End: backlight */
/* Start: Picture Controls */
.mejs-controls .mejs-picturecontrols-button {
background-position: -96px 0;
}
/* End: Picture Controls */
/* context menu */
.mejs-contextmenu {
position: absolute;
width: 150px;
padding: 10px;
border-radius: 4px;
top: 0;
left: 0;
background: #fff;
border: solid 1px #999;
z-index: 1001; /* make sure it shows on fullscreen */
}
.mejs-contextmenu .mejs-contextmenu-separator {
height: 1px;
font-size: 0;
margin: 5px 6px;
background: #333;
}
.mejs-contextmenu .mejs-contextmenu-item {
font-family: Helvetica, Arial;
font-size: 12px;
padding: 4px 6px;
cursor: pointer;
color: #333;
}
.mejs-contextmenu .mejs-contextmenu-item:hover {
background: #2C7C91;
color: #fff;
}
/* Start: Source Chooser */
.mejs-controls .mejs-sourcechooser-button {
position: relative;
}
.mejs-controls .mejs-sourcechooser-button button {
background-position: -128px 0;
}
.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector {
visibility: hidden;
position: absolute;
bottom: 26px;
right: -10px;
width: 130px;
height: 100px;
background: url(background.png);
background: rgba(50,50,50,0.7);
border: solid 1px transparent;
padding: 10px;
overflow: hidden;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul {
margin: 0;
padding: 0;
display: block;
list-style-type: none !important;
overflow: hidden;
}
.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li {
margin: 0 0 6px 0;
padding: 0;
list-style-type: none !important;
display: block;
color: #fff;
overflow: hidden;
}
.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input {
clear: both;
float: left;
margin: 3px 3px 0 5px;
}
.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label {
width: 100px;
float: left;
padding: 4px 0 0 0;
line-height: 15px;
font-family: helvetica, arial;
font-size: 10px;
}
/* End: Source Chooser */
/* Start: Postroll */
.mejs-postroll-layer {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
background: url(background.png);
background: rgba(50,50,50,0.7);
z-index: 1000;
overflow: hidden;
}
.mejs-postroll-layer-content {
width: 100%;
height: 100%;
}
.mejs-postroll-close {
position: absolute;
right: 0;
top: 0;
background: url(background.png);
background: rgba(50,50,50,0.7);
color: #fff;
padding: 4px;
z-index: 100;
cursor: pointer;
}
/* End: Postroll */
/* Start: Speed */
div.mejs-speed-button {
width: 46px !important;
position: relative;
}
.mejs-controls .mejs-button.mejs-speed-button button {
background: transparent;
width: 36px;
font-size: 11px;
line-height: normal;
color: #ffffff;
}
.mejs-controls .mejs-speed-button .mejs-speed-selector {
visibility: hidden;
position: absolute;
top: -100px;
left: -10px;
width: 60px;
height: 100px;
background: url(background.png);
background: rgba(50, 50, 50, 0.7);
border: solid 1px transparent;
padding: 0;
overflow: hidden;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
.mejs-controls .mejs-speed-button:hover > .mejs-speed-selector {
visibility: visible;
}
.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label.mejs-speed-selected {
color: rgba(33, 248, 248, 1);
}
.mejs-controls .mejs-speed-button .mejs-speed-selector ul {
margin: 0;
padding: 0;
display: block;
list-style-type: none !important;
overflow: hidden;
}
.mejs-controls .mejs-speed-button .mejs-speed-selector ul li {
margin: 0 0 6px 0;
padding: 0 10px;
list-style-type: none !important;
display: block;
color: #fff;
overflow: hidden;
}
.mejs-controls .mejs-speed-button .mejs-speed-selector ul li input {
clear: both;
float: left;
margin: 3px 3px 0 5px;
display: none;
}
.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label {
width: 60px;
float: left;
padding: 4px 0 0 0;
line-height: 15px;
font-family: helvetica, arial;
font-size: 11.5px;
color: white;
margin-left: 5px;
cursor: pointer;
}
.mejs-controls .mejs-speed-button .mejs-speed-selector ul li:hover {
background-color: rgb(200, 200, 200) !important;
background-color: rgba(255,255,255,.4) !important;
}
/* End: Speed */
/* Start: Skip Back */
.mejs-controls .mejs-button.mejs-skip-back-button {
background: transparent url(skipback.png) no-repeat;
background-position: 3px 3px;
}
.mejs-controls .mejs-button.mejs-skip-back-button button {
background: transparent;
font-size: 9px;
line-height: normal;
color: #ffffff;
}
/* End: Skip Back */

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,289 @@
/* TED player */
.mejs-container.mejs-ted {
}
.mejs-ted .mejs-controls {
background: #eee;
height: 65px;
}
.mejs-ted .mejs-button,
.mejs-ted .mejs-time {
position: absolute;
background: #ddd;
}
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-total {
background-color: none;
background: url(controls-ted.png) repeat-x 0 -52px;
height: 6px;
}
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-buffering {
height: 6px;
}
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-loaded {
background-color: none;
background: url(controls-ted.png) repeat-x 0 -52px;
width: 0;
height: 6px;
}
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-current {
width: 0;
height: 6px;
background-color: none;
background: url(controls-ted.png) repeat-x 0 -59px;
}
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-handle {
display: block;
margin: 0;
width: 14px;
height: 21px;
top: -7px;
border: 0;
background: url(controls-ted.png) no-repeat 0 0;
}
.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-float {
display: none;
}
.mejs-ted .mejs-controls .mejs-playpause-button {
top: 29px;
left: 9px;
width: 49px;
height: 28px;
}
.mejs-ted .mejs-controls .mejs-playpause-button button {
width: 49px;
height: 28px;
background: url(controls-ted.png) no-repeat -50px -23px;
margin: 0;
padding: 0;
}
.mejs-ted .mejs-controls .mejs-pause button {
background-position: 0 -23px;
}
.mejs-ted .mejs-controls .mejs-fullscreen-button {
top: 34px;
right: 9px;
width: 17px;
height: 15px;
background : none;
}
.mejs-ted .mejs-controls .mejs-fullscreen-button button {
width: 19px;
height: 17px;
background: transparent url(controls-ted.png) no-repeat 0 -66px;
margin: 0;
padding: 0;
}
.mejs-ted .mejs-controls .mejs-unfullscreen button {
background: transparent url(controls-ted.png) no-repeat -21px -66px;
margin: 0;
padding: 0;
}
.mejs-ted .mejs-controls .mejs-volume-button {
top: 30px;
right: 35px;
width: 24px;
height: 22px;
}
.mejs-ted .mejs-controls .mejs-mute button {
background: url(controls-ted.png) no-repeat -15px 0;
width: 24px;
height: 22px;
margin: 0;
padding: 0;
}
.mejs-ted .mejs-controls .mejs-unmute button {
background: url(controls-ted.png) no-repeat -40px 0;
width: 24px;
height: 22px;
margin: 0;
padding: 0;
}
.mejs-ted .mejs-controls .mejs-volume-button .mejs-volume-slider {
background: #fff;
border: solid 1px #aaa;
border-width: 1px 1px 0 1px;
width: 22px;
height: 65px;
top: -65px;
}
.mejs-ted .mejs-controls .mejs-volume-button .mejs-volume-total {
background: url(controls-ted.png) repeat-y -41px -66px;
left: 8px;
width: 6px;
height: 50px;
}
.mejs-ted .mejs-controls .mejs-volume-button .mejs-volume-current {
left: 8px;
width: 6px;
background: url(controls-ted.png) repeat-y -48px -66px;
height: 50px;
}
.mejs-ted .mejs-controls .mejs-volume-button .mejs-volume-handle {
display: none;
}
.mejs-ted .mejs-controls .mejs-time span {
color: #333;
}
.mejs-ted .mejs-controls .mejs-currenttime-container {
position: absolute;
top: 32px;
right: 100px;
border: solid 1px #999;
background: #fff;
color: #333;
padding-top: 2px;
border-radius: 3px;
color: #333;
}
.mejs-ted .mejs-controls .mejs-duration-container {
position: absolute;
top: 32px;
right: 65px;
border: solid 1px #999;
background: #fff;
color: #333;
padding-top: 2px;
border-radius: 3px;
color: #333;
}
.mejs-ted .mejs-controls .mejs-time button{
color: #333;
}
.mejs-ted .mejs-controls .mejs-captions-button {
display: none;
}
/* END: TED player */
/* WMP player */
.mejs-container.mejs-wmp {
}
.mejs-wmp .mejs-controls {
background: transparent url(controls-wmp-bg.png) center 16px no-repeat;
height: 65px;
}
.mejs-wmp .mejs-button,
.mejs-wmp .mejs-time {
position: absolute;
background: transparent;
}
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-total {
background-color: transparent;
border: solid 1px #ccc;
height: 3px;
}
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-buffering {
height: 3px;
}
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-loaded {
background-color: rgba(255,255,255,0.3);
width: 0;
height: 3px;
}
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-current {
width: 0;
height: 1px;
background-color: #014CB6;
border: solid 1px #7FC9FA;
border-width: 1px 0;
border-color: #7FC9FA #fff #619FF2 #fff;
}
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-handle {
display: block;
margin: 0;
width: 16px;
height: 9px;
top: -3px;
border: 0;
background: url(controls-wmp.png) no-repeat 0 -80px;
}
.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-float {
display: none;
}
.mejs-wmp .mejs-controls .mejs-playpause-button {
top: 10px;
left: 50%;
margin: 10px 0 0 -20px;
width: 40px;
height: 40px;
}
.mejs-wmp .mejs-controls .mejs-playpause-button button {
width: 40px;
height: 40px;
background: url(controls-wmp.png) no-repeat 0 0;
margin: 0;
padding: 0;
}
.mejs-wmp .mejs-controls .mejs-pause button {
background-position: 0 -40px;
}
.mejs-wmp .mejs-controls .mejs-currenttime-container {
position: absolute;
top: 25px;
left: 50%;
margin-left: -93px;
}
.mejs-wmp .mejs-controls .mejs-duration-container {
position: absolute;
top: 25px;
left: 50%;
margin-left: -58px;
}
.mejs-wmp .mejs-controls .mejs-volume-button {
top: 32px;
right: 50%;
margin-right: -55px;
width: 20px;
height: 15px;
}
.mejs-wmp .mejs-controls .mejs-volume-button button {
margin: 0;
padding: 0;
background: url(controls-wmp.png) no-repeat -42px -17px;
width: 20px;
height: 15px;
}
.mejs-wmp .mejs-controls .mejs-unmute button {
margin: 0;
padding: 0;
background: url(controls-wmp.png) no-repeat -42px 0;
width: 20px;
height: 15px;
}
.mejs-wmp .mejs-controls .mejs-volume-button .mejs-volume-slider {
background: rgba(102,102,102,0.6);
}
.mejs-wmp .mejs-controls .mejs-fullscreen-button {
top: 32px;
right: 50%;
margin-right: -82px;
width: 15px;
height: 14px;
}
.mejs-wmp .mejs-controls .mejs-fullscreen-button button {
margin: 0;
padding: 0;
background: url(controls-wmp.png) no-repeat -63px 0;
width: 15px;
height: 14px;
}
.mejs-wmp .mejs-controls .mejs-captions-button {
display: none;
}
/* END: WMP player */

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -1,14 +1,17 @@
// mediaelement-player
$(function() {
var
$parent = $('.event-previews'),
$loading = $parent,
$tpl = $parent.find('.template').detach().removeClass('template');
$.ajax({
url: '/~peter/relive.json',
success: function(els) {
console.log(els);
$loading.hide();
(function(strings) {
strings['en-US'] = {
'Download File': 'Open HLS-Stream in Desktop-Player'
}
})(mejs.i18n.locale.strings);
$('video').mediaelementplayer({
mode: 'auto_plugin',
// hack z-index so that the flash plugin get's the click on the fullscreen button
enableAutosize: true,
pluginPath: 'assets/js/lib/relive/',
});
});

View file

@ -74,6 +74,14 @@ else if(preg_match('@^feedback$@', $route, $m))
include('pages/feedback.php');
}
else if(preg_match('@^relive/([0-9]+)$@', $route, $m))
{
$_GET = array(
'id' => $m[1],
);
include('pages/relive-player.php');
}
else if(preg_match('@^relive$@', $route, $m))
{
include('pages/relive.php');

View file

@ -46,6 +46,11 @@ function link_stream($protocol, $room, $format, $translated = false)
return '#';
}
function link_vod($id)
{
return 'relive/'.rawurlencode($id).'/';
}
function streamname($room)
{
switch($room)

24
pages/relive-player.php Normal file
View file

@ -0,0 +1,24 @@
<?php
require_once('lib/bootstrap.php');
$talks = file_get_contents('http://vod.c3voc.de/relive/index.json');
$talks = json_decode($talks, true);
$talkhit = null;
foreach($talks as $talk) {
if($talk['id'] == $_GET['id'])
$talkhit = $talk;
}
if(!$talkhit) return;
echo $tpl->render(array(
'page' => 'relive-player',
'title' => 'Relive!',
'talk' => $talkhit,
'width' => 1024,
'height' => 576,
'relive' => true,
));

View file

@ -2,10 +2,19 @@
require_once('lib/bootstrap.php');
$talks = file_get_contents('http://vod.c3voc.de/relive/index.json');
$talks = utf8_decode($talks);
$talks = json_decode($talks, true);
usort($talks, function($a, $b) {
$sort = array('live', 'recorded', 'released');
return array_search($a['status'], $sort) > array_search($b['status'], $sort);
});
echo $tpl->render(array(
'page' => 'relive',
'title' => 'Relive!',
'extraScripts' => array(
'assets/js/lustiges-relive-script.js',
),
'talks' => $talks,
'relive' => true,
));

View file

@ -0,0 +1,16 @@
<div style="width: 100%; height: 100%; max-width: <?=h($width)?>px; margin: 0 auto;">
<video
autoplay="autoplay"
preload="auto"
width="<?=h($width)?>"
height="<?=h($height)?>"
style="width: 100%; height: 100%;"
class="nosubs relive"
>
<source
src="http://vod.c3voc.de/relive/<?=h($talk['playlist'])?>"
title="h.264 (HLS)"
type="application/x-mpegURL"
/>
</video>
</div>

View file

@ -32,18 +32,21 @@
<link href="assets/img/favicon/16x16.png" rel="icon" type="image/png" sizes="16x16" />
<link type="text/css" rel="stylesheet" href="assets/css/lib/font-awesome.min.css" />
<link type="text/css" rel="stylesheet" href="assets/css/lib/mediaelementplayer.min.css" />
<link type="text/css" rel="stylesheet" href="assets/css/lustige-styles.css" />
<script type="text/javascript" src="assets/js/lib/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/lib/jquery.scrollTo.min.js"></script>
<script type="text/javascript" src="assets/js/lib/bootstrap.min.js"></script>
<script type="text/javascript" src="assets/js/lib/mediaelement-and-player.min.js"></script>
<script type="text/javascript" src="assets/js/lustiges-script.js"></script>
<? if(isset($extraScripts)) foreach($extraScripts as $script): ?>
<script type="text/javascript" src="<?=h($script)?>"></script>
<? endforeach ?>
<? if(@$relive): ?>
<link type="text/css" rel="stylesheet" href="assets/js/lib/relive/mediaelementplayer.min.css" />
<script type="text/javascript" src="assets/js/lib/relive/mediaelement-and-player.min.js"></script>
<script type="text/javascript" src="assets/js/lustiges-relive-script.js"></script>
<? else: ?>
<link type="text/css" rel="stylesheet" href="assets/css/lib/mediaelementplayer.min.css" />
<script type="text/javascript" src="assets/js/lib/mediaelement-and-player.min.js"></script>
<script type="text/javascript" src="assets/js/lustiges-script.js"></script>
<? endif ?>
</head>
<body class="<?=h($page)?>">
<? include("$assemblies/header.phtml") ?>

View file

@ -0,0 +1,15 @@
<div class="container-fluid">
<h1><?=h($title)?></h1>
<h2><?=h($talk['title'])?></h2>
<? include("$assemblies/player/relive.phtml") ?>
<div class="text">
<h3>Use a Desktop-Player!</h3>
<p>Browsers and Video doesn't go together well, even in 2014 and especially when it's live. So for your best viewing-experience please use a Desktop-Player like VLC or mplayer: <a href="http://vod.c3voc.de/relive/<?=h($talk['playlist'])?>">HLS-Playlist</a></p>
<? if($talk['status'] == 'released'): ?>
<h3>Released</h3>
<p>This talk is already released! Take a look at <a href="<?=h($talk['release_url'])?>">media.ccc.de</a>.</p>
<? endif ?>
</div>
</div>

View file

@ -1,29 +1,32 @@
<div class="container-fluid">
<h1>Experimetal ReLive Recordings</h1>
<h1><?=h($title)?></h1>
<div class="event-previews">
<h2 class="loading">Loading…</h2>
<div class="event-previews relive">
<a class="event-preview template" href="url.html">
<img alt="Readable Title" class="video-thumbnail" src="">
<div class="caption">
<ul class="metadata">
<li>
<span class="fa fa-clock-o"></span>
36 min
</li>
<li>
<span class="fa fa-calendar-o"></span>
2013-12-28
</li>
<li class="persons">
<span class="fa fa-user"></span>
C B
</li>
</ul>
<h3>Readable Title</h3>
</div>
</a>
<? foreach ($talks as $talk): ?>
<a class="event-preview <?=h($talk['status'])?>" href="<?=h(link_vod($talk['id']))?>">
<img alt="<?=h($talk['title'])?>" class="video-thumbnail" src="http://vod.c3voc.de/relive/<?=h($talk['thumbnail'])?>">
<div class="caption">
<ul class="metadata">
<li>
<span class="fa fa-clock-o"></span>
<?=h(round($talk['duration']/60))?> min
</li>
<li>
<span class="fa fa-cogs"></span>
<?=h($talk['status'])?>
</li>
<li>
<span class="fa fa-sign-in"></span>
<?=h($talk['room'])?>
</li>
</ul>
<h3><?=h($talk['title'])?>
<? if($talk['status'] == 'live'): ?>&nbsp;(Currently Live!)<? endif ?>
</h3>
</div>
</a>
<? endforeach ?>
</div>
</div>

View file

@ -74,7 +74,7 @@
</div>
</li>
<li class="col-sm-6">
<a href="http://vod.c3voc.de/relive/"><span class="fa fa-play-circle"></span> ReLive</a>
<a href="relive/"><span class="fa fa-play-circle"></span> ReLive</a>
</li>
</ul>
</div>