Skip to content

Commit

Permalink
Accessibility plugin (#142)
Browse files Browse the repository at this point in the history
* mediaelement a11y plugin

* demo entry page optimization

* added a11y to README.md

* Gruntfile adjustment

* added German translation to a11y/README.md
  • Loading branch information
Mista-T authored and karawitan committed Nov 25, 2019
1 parent 63bcabf commit ab43161
Show file tree
Hide file tree
Showing 17 changed files with 839 additions and 40 deletions.
8 changes: 5 additions & 3 deletions Gruntfile.js
Expand Up @@ -19,11 +19,11 @@ module.exports = function (grunt) {
watch: {
scripts: {
files: ['src/**/*.js', 'test/core/*.js'],
tasks: ['eslint', 'browserify', 'concat', 'uglify', 'copy:translation']
tasks: ['eslint', 'browserify', 'concat', 'uglify', 'copy']
},
stylesheet: {
files: ['src/**/*.css', 'src/css/**/*.png', 'src/css/**/*.svg'],
tasks: ['postcss', 'copy:build']
tasks: ['postcss', 'copy']
}
},

Expand All @@ -40,6 +40,7 @@ module.exports = function (grunt) {
browserify: {
dist: {
files: {
'dist/a11y/a11y.js': 'src/a11y/a11y.js',
'dist/ads/ads.js': 'src/ads/ads.js',
'dist/ads-vast-vpaid/ads-vast-vpaid.js': 'src/ads-vast-vpaid/ads-vast-vpaid.js',
'dist/airplay/airplay.js': 'src/airplay/airplay.js',
Expand Down Expand Up @@ -111,6 +112,7 @@ module.exports = function (grunt) {
]
},
files: {
'dist/a11y/a11y.css': 'src/a11y/a11y.css',
'dist/ads/ads.css': 'src/ads/ads.css',
'dist/airplay/airplay.css': 'src/airplay/airplay.css',
'dist/chromecast/chromecast.css': 'src/chromecast/chromecast.css',
Expand Down Expand Up @@ -139,6 +141,7 @@ module.exports = function (grunt) {
]
},
files: {
'dist/a11y/a11y.min.css': 'dist/a11y/a11y.css',
'dist/ads/ads.min.css': 'dist/ads/ads.css',
'dist/airplay/airplay.min.css': 'dist/airplay/airplay.css',
'dist/chromecast/chromecast.min.css': 'dist/chromecast/chromecast.css',
Expand All @@ -155,7 +158,6 @@ module.exports = function (grunt) {
'dist/vrview/vrview.min.css': 'dist/vrview/vrview.css'
}
},

},
copy: {
main: {
Expand Down
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -179,6 +179,7 @@ See`src/` directory, and check how the files were written to ensure compatibilit
<a id="plugins"></a>
## Available plugins

* [A11y](docs/a11y.md)
* [Ads](docs/ads.md)
* [AirPlay](docs/airplay.md)
* [Chromecast](docs/chromecast.md)
Expand Down
40 changes: 40 additions & 0 deletions demo/a11y.html
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>MediaElement.js 4.2 - Accessibility Plugin</title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="icon" href="favicon.ico" type="image/x-icon">

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mediaelement/4.2.9/mediaelementplayer.css">
<link rel="stylesheet" href="../dist/a11y/a11y.css">
<link rel="stylesheet" href="demo.css">
</head>
<body>
<div id="container">
<h1>Accessibility Plugin</h1>
<p><a href="index.html">Back to Main</a> </p>

<h2>Video Player (w/o Voice-Over)</h2>
<div class="media-wrapper">
<video id="player1" width="750" height="421" controls preload="none" playsinline
data-video-description='[{"src": "https://video.aktion-mensch.de/magnolia/aktion-mensch-videoplayer/aktion-mensch_beispiel/aktion-mensch_beispiel_signlanguageVideo.mp4", "type": "video/mp4"}, {"src": "https://video.aktion-mensch.de/magnolia/aktion-mensch-videoplayer/aktion-mensch_beispiel/aktion-mensch_beispiel_signlanguageVideo.webm", "type": "video/webm"}, {"src": "https://video.aktion-mensch.de/magnolia/aktion-mensch-videoplayer/aktion-mensch_beispiel/aktion-mensch_beispiel_signlanguageVideo.ogv", "type": "video/ogv"}]'
data-audio-description='[{"src": "https://video.aktion-mensch.de/magnolia/aktion-mensch_beispiel_audioDescription.mp3", "type": "audio/mp3"}]'
>
<source src="https://video.aktion-mensch.de/magnolia/aktion-mensch_beispiel_video.mp4" type="video/mp4" />
<source src="https://video.aktion-mensch.de/magnolia/aktion-mensch_beispiel_video.webm" type="video/webm" />
<source src="https://video.aktion-mensch.de/magnolia/aktion-mensch_beispiel_video.ogv" type="video/ogg" />
</video>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mediaelement/4.2.9/mediaelement-and-player.min.js"></script>
<script src="../dist/a11y/a11y.js"></script>
<script>
new MediaElementPlayer('player1', {
features: ['playpause', 'current', 'progress', 'duration', 'volume', 'a11y', 'fullscreen'],
});
</script>
</body>
</html>
60 changes: 23 additions & 37 deletions demo/index.html
Expand Up @@ -38,26 +38,22 @@
flex: 1;
color: #000;
}
.columns{
display: flex;
flex:1;
}
.main{
flex: 1;
order: 2;
}
.sidebar-first{
width: 33%;
order: 1;
}
.sidebar-second{
width: 33%;
order: 3;
}
ul {
box-sizing: border-box;
display: flex;
padding: 0 30px;
width: 100%;
flex-wrap: wrap;
list-style: none;
}
li {
box-sizing: border-box;
flex: 0 0 auto;
width: 33%;
padding: 5px;
}
</style>
Expand All @@ -70,31 +66,21 @@ <h1><img src="https://cloud.githubusercontent.com/assets/910829/22357262/e6cf32b
<p>Following is the list of examples of the available plugins for MediaElement player</p>
</header>
<section class="content">
<div class="columns">
<main class="main">
<ul>
<li><a href="multiple1.html">Context Menu/Loop/Stop</a></li>
<li><a href="playlist.html">Playlist</a></li>
<li><a href="quality.html">Quality</a></li>
</ul>
</main>
<aside class="sidebar-first">
<ul>
<li><a href="airplay.html">AirPlay</a></li>
<li><a href="multiple2.html">Jump Forward/Skip Backward/Speed</a></li>
<li><a href="postroll.html">Postroll</a></li>
</ul>
</aside>

<aside class="sidebar-second">
<ul>
<li><a href="chromecast.html">Chromecast</a></li>
<li><a href="markers.html">Markers</a></li>
<li><a href="preview.html">Preview</a></li>
<li><a href="vrview.html">VRView</a></li>
</ul>
</aside>
</div>
<main class="main">
<ul>
<li><a href="a11y.html">A11y</a></li>
<li><a href="airplay.html">AirPlay</a></li>
<li><a href="chromecast.html">Chromecast</a></li>
<li><a href="markers.html">Markers</a></li>
<li><a href="multiple1.html">Context Menu/Loop/Stop</a></li>
<li><a href="multiple2.html">Jump Forward/Skip Backward/Speed</a></li>
<li><a href="playlist.html">Playlist</a></li>
<li><a href="postroll.html">Postroll</a></li>
<li><a href="preview.html">Preview</a></li>
<li><a href="quality.html">Quality</a></li>
<li><a href="vrview.html">VRView</a></li>
</ul>
</main>
</section>
<footer class="footer"></footer>
</div>
Expand Down
21 changes: 21 additions & 0 deletions dist/a11y/a11y-i18n.js
@@ -0,0 +1,21 @@
'use strict';

if (mejs.i18n.de !== undefined) {
mejs.i18n.de['mejs.a11y-audio-description'] = 'Audio Deskription An/Aus';
mejs.i18n.de['mejs.a11y-video-description'] = 'Video Deskription An/Aus';
}

if (mejs.i18n.fr !== undefined) {
mejs.i18n.fr['mejs.a11y-audio-description'] = 'Audio-description étendue On/Off';
mejs.i18n.fr['mejs.a11y-video-description'] = 'Langue des signes On/Off';
}

if (mejs.i18n.nl !== undefined) {
mejs.i18n.nl['mejs.a11y-audio-description'] = 'Audiobeschrijving Aan/Uit';
mejs.i18n.nl['mejs.a11y-video-description'] = 'Gebarentaal Aan/Uit';
}

if (mejs.i18n.tr !== undefined) {
mejs.i18n.tr['mejs.a11y-audio-description'] = 'Sesli betimleme değiştir';
mejs.i18n.tr['mejs.a11y-video-description'] = 'Görüntülü betimleme değişti';
}
35 changes: 35 additions & 0 deletions dist/a11y/a11y.css
@@ -0,0 +1,35 @@
.mejs-video-description-button > button,
.mejs__video-description-button > button,
.mejs-audio-description-button > button,
.mejs__audio-description-button > button {
background-repeat: no-repeat;
background-size: contain;
opacity: 0.7;
}

.mejs-video-description-button.video-description-on > button,
.mejs__video-description-button.video-description-on > button,
.mejs-audio-description-button.audio-description-on > button,
.mejs__audio-description-button.audio-description-on > button {
opacity: 1;
}

.mejs-video-description-button > button,
.mejs__video-description-button > button {
background-image: url('video-description-icon.svg');
}

.mejs-audio-description-button > button,
.mejs__audio-description-button > button {
background-image: url('audio-description-icon.svg');
}

.mejs-volume-button.hidden,
.mejs__volume-button.hidden {
display: none;
}

.mejs-audio-description-player,
.mejs__audio-description-player {
display: none;
}

0 comments on commit ab43161

Please sign in to comment.