diff --git a/Gruntfile.js b/Gruntfile.js
index 34b802f..9369716 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -85,9 +85,9 @@ module.exports = function (grunt) {
},
{
expand: true,
- cwd: 'node_modules/video.js/dist',
- src: ['video.min.js', 'video-js.min.css'],
- dest: 'static/videojs'
+ cwd: 'node_modules/plyr/dist',
+ src: ['plyr.min.js', 'plyr.css'],
+ dest: 'static/plyr'
},
{
expand: true,
diff --git a/bin/migrate b/bin/migrate
index e05ef46..d6d39eb 100644
--- a/bin/migrate
+++ b/bin/migrate
@@ -2,96 +2,42 @@
= 7 && PHP_MINOR_VERSION >= 1) ?: die('Sorry, PHP 7.1 or above is required to run XBackBone.');
if (php_sapi_name() !== 'cli') {
- die();
+ die();
}
use App\Database\DB;
+use App\Database\Migrator;
-require __DIR__ . '/../vendor/autoload.php';
+require __DIR__.'/../vendor/autoload.php';
-$config = include __DIR__ . '/../config.php';
+$config = include __DIR__.'/../config.php';
if (!$config) {
- die('config.php not found. Please create a new one.');
+ die('config.php not found. Please create a new one.');
}
-chdir(__DIR__ . '/../');
-
-DB::setDsn($config['db']['connection'] . ':' . $config['db']['dsn'], $config['db']['username'], $config['db']['password']);
+chdir(__DIR__.'/../');
$firstMigrate = false;
-if (!file_exists($config['db']['dsn']) && DB::driver() === 'sqlite') {
- touch($config['db']['dsn']);
- $firstMigrate = true;
+if ($config['db']['connection'] === 'sqlite' && !file_exists(__DIR__.'/../'.$config['db']['dsn'])) {
+ touch(__DIR__.'/../'.$config['db']['dsn']);
+ $firstMigrate = true;
}
-try {
- DB::doQuery('SELECT 1 FROM `migrations` LIMIT 1');
-} catch (PDOException $exception) {
- $firstMigrate = true;
-}
+$dsn = $config['db']['connection'] === 'sqlite' ? __DIR__.'/../'.$config['db']['dsn'] : $config['db']['dsn'];
+$db = new DB($config['db']['connection'].':'.$dsn, $config['db']['username'], $config['db']['password']);
-echo 'Connected.' . PHP_EOL;
-
-if ($firstMigrate) {
- echo 'Creating migrations table...' . PHP_EOL;
- DB::raw()->exec(file_get_contents('resources/schemas/migrations.sql'));
-}
-
-$files = glob('resources/schemas/' . DB::driver() . '/*.sql');
-
-$names = array_map(function ($path) {
- return basename($path);
-}, $files);
-
-$in = str_repeat('?, ', count($names) - 1) . '?';
-
-$inMigrationsTable = DB::doQuery("SELECT * FROM `migrations` WHERE `name` IN ($in)", $names)->fetchAll();
-
-
-foreach ($files as $file) {
-
- $continue = false;
- $exists = false;
-
- foreach ($inMigrationsTable as $migration) {
- if (basename($file) === $migration->name && $migration->migrated) {
- $continue = true;
- break;
- } else if (basename($file) === $migration->name && !$migration->migrated) {
- $exists = true;
- break;
- }
- }
- if ($continue) continue;
-
- $sql = file_get_contents($file);
- try {
- DB::raw()->exec($sql);
- if (!$exists) {
- DB::doQuery('INSERT INTO `migrations` VALUES (?,?)', [basename($file), 1]);
- } else {
- DB::doQuery('UPDATE `migrations` SET `migrated`=? WHERE `name`=?', [1, basename($file)]);
- }
- echo "Migrated '$file'" . PHP_EOL;
- } catch (PDOException $exception) {
- if (!$exists) {
- DB::doQuery('INSERT INTO `migrations` VALUES (?,?)', [basename($file), 0]);
- }
- echo "Error migrating '$file' (" . $exception->getMessage() . ')' . PHP_EOL;
- echo $exception->getTraceAsString() . PHP_EOL;
-
- }
-}
+$migrator = new Migrator($db, 'resources/schemas', $firstMigrate);
+$migrator->migrate();
if (isset($argv[1]) && $argv[1] === '--install') {
- DB::doQuery("INSERT INTO `users` (`email`, `username`, `password`, `is_admin`, `user_code`) VALUES ('admin@example.com', 'admin', ?, 1, ?)", [password_hash('admin', PASSWORD_DEFAULT), humanRandomString(5)]);
+ $db->query("INSERT INTO `users` (`email`, `username`, `password`, `is_admin`, `user_code`) VALUES ('admin@example.com', 'admin', ?, 1, ?)", [password_hash('admin', PASSWORD_DEFAULT), humanRandomString(5)]);
}
-if (file_exists(__DIR__ . '/../install')) {
- removeDirectory(__DIR__ . '/../install');
-}
+//if (file_exists(__DIR__.'/../install')) {
+// removeDirectory(__DIR__.'/../install');
+//}
-echo 'If you are upgrading from a previous version, please run a "php bin\clean".' . PHP_EOL;
-echo 'Done.' . PHP_EOL;
+echo 'If you are upgrading from a previous version, please run a "php bin\clean".'.PHP_EOL;
+echo 'Done.'.PHP_EOL;
exit(0);
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 7e25ef6..8128818 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2,49 +2,17 @@
"requires": true,
"lockfileVersion": 1,
"dependencies": {
- "@babel/runtime": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.0.tgz",
- "integrity": "sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ==",
- "requires": {
- "regenerator-runtime": "^0.13.2"
- }
- },
"@fortawesome/fontawesome-free": {
"version": "5.10.2",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.10.2.tgz",
"integrity": "sha512-9pw+Nsnunl9unstGEHQ+u41wBEQue6XPBsILXtJF/4fNN1L3avJcMF/gGF86rIjeTAgfLjTY9ndm68/X4f4idQ=="
},
- "@videojs/http-streaming": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-1.10.3.tgz",
- "integrity": "sha512-fxXtwVrQBdhOFh6GymPAPCb4utCI01Zs5fdyZgtR6FSsaz/zGmnzfNS5GvNjBi/hZviMsbNPFaOTTFMMNLNA3A==",
- "requires": {
- "aes-decrypter": "3.0.0",
- "global": "^4.3.0",
- "m3u8-parser": "4.3.0",
- "mpd-parser": "0.8.1",
- "mux.js": "5.1.3",
- "url-toolkit": "^2.1.3",
- "video.js": "^6.8.0 || ^7.0.0"
- }
- },
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
- "aes-decrypter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.0.0.tgz",
- "integrity": "sha1-eEihwUW5/b9Xrj4rWxvHzwZEqPs=",
- "requires": {
- "commander": "^2.9.0",
- "global": "^4.3.2",
- "pkcs7": "^1.0.2"
- }
- },
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
@@ -260,11 +228,6 @@
"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
"dev": true
},
- "commander": {
- "version": "2.20.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
- "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ=="
- },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -286,6 +249,11 @@
"integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=",
"dev": true
},
+ "core-js": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.1.tgz",
+ "integrity": "sha512-KX/dnuY/J8FtEwbnrzmAjUYgLqtk+cxM86hfG60LGiW3MmltIc2yAmDgBgEkfm0blZhUrdr1Zd84J2Y14mLxzg=="
+ },
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@@ -301,6 +269,11 @@
"array-find-index": "^1.0.1"
}
},
+ "custom-event-polyfill": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz",
+ "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w=="
+ },
"date-now": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
@@ -332,14 +305,6 @@
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
- "define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "requires": {
- "object-keys": "^1.0.12"
- }
- },
"delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
@@ -369,11 +334,6 @@
}
}
},
- "dom-walk": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
- "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
- },
"domelementtype": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
@@ -430,33 +390,6 @@
"is-arrayish": "^0.2.1"
}
},
- "es-abstract": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz",
- "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==",
- "requires": {
- "es-to-primitive": "^1.2.0",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.0",
- "is-callable": "^1.1.4",
- "is-regex": "^1.0.4",
- "object-inspect": "^1.6.0",
- "object-keys": "^1.1.1",
- "string.prototype.trimleft": "^2.0.0",
- "string.prototype.trimright": "^2.0.0"
- }
- },
- "es-to-primitive": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
- "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -534,25 +467,12 @@
}
}
},
- "for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "requires": {
- "is-callable": "^1.1.3"
- }
- },
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
"gaze": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
@@ -588,15 +508,6 @@
"path-is-absolute": "^1.0.0"
}
},
- "global": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
- "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
- "requires": {
- "min-document": "^2.19.0",
- "process": "~0.5.1"
- }
- },
"globule": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
@@ -936,14 +847,6 @@
"duplexer": "^0.1.1"
}
},
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
@@ -959,11 +862,6 @@
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
- "has-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
- "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
- },
"highlightjs": {
"version": "9.12.0",
"resolved": "https://registry.npmjs.org/highlightjs/-/highlightjs-9.12.0.tgz",
@@ -1018,11 +916,6 @@
"repeating": "^2.0.0"
}
},
- "individual": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/individual/-/individual-2.0.0.tgz",
- "integrity": "sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c="
- },
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -1054,16 +947,6 @@
"builtin-modules": "^1.0.0"
}
},
- "is-callable": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
- "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
- },
- "is-date-object": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
- "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
- },
"is-finite": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
@@ -1073,27 +956,6 @@
"number-is-nan": "^1.0.0"
}
},
- "is-function": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
- "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU="
- },
- "is-regex": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
- "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
- "requires": {
- "has": "^1.0.1"
- }
- },
- "is-symbol": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
- "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
- "requires": {
- "has-symbols": "^1.0.0"
- }
- },
"is-utf8": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
@@ -1126,11 +988,6 @@
"pako": "~0.2.5"
}
},
- "keycode": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz",
- "integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ="
- },
"livereload-js": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz",
@@ -1162,6 +1019,11 @@
"strip-bom": "^2.0.0"
}
},
+ "loadjs": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-3.6.1.tgz",
+ "integrity": "sha512-AZEBw2GWdJk2IzBgQ+Wohoao5j+t0rajqK8dJu8jQqgYxDTxhmCt0ayMo/vCa0ZAMvZxnJcam6uLICfnVd8KAw=="
+ },
"locate-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
@@ -1196,14 +1058,6 @@
"signal-exit": "^3.0.0"
}
},
- "m3u8-parser": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.3.0.tgz",
- "integrity": "sha512-bVbjuBMoVIgFL1vpXVIxjeaoB5TPDJRb0m5qiTdM738SGqv/LAmsnVVPlKjM4fulm/rr1XZsKM+owHm+zvqxYA==",
- "requires": {
- "global": "^4.3.2"
- }
- },
"map-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
@@ -1267,14 +1121,6 @@
"trim-newlines": "^1.0.0"
}
},
- "min-document": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
- "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
- "requires": {
- "dom-walk": "^0.1.0"
- }
- },
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -1307,15 +1153,6 @@
}
}
},
- "mpd-parser": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.8.1.tgz",
- "integrity": "sha512-WBTJ1bKk8OLUIxBh6s1ju1e2yz/5CzhPbgi6P3F3kJHKhGy1Z+ElvEnuzEbtC/dnbRcJtMXazE3f93N5LLdp9Q==",
- "requires": {
- "global": "^4.3.2",
- "url-toolkit": "^2.1.1"
- }
- },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -1334,11 +1171,6 @@
"minimatch": "^3.0.0"
}
},
- "mux.js": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-5.1.3.tgz",
- "integrity": "sha512-FhDcysLvAkO9H8ftBJ2sK1O4Rmz0AWnMS+2uqP7WjrnaAyE/ox11GEiZkRzrWIdp8at9R9qBHDqdURY3/h/xTg=="
- },
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
@@ -1381,16 +1213,6 @@
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
- "object-inspect": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
- "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ=="
- },
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -1430,15 +1252,6 @@
"integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
"dev": true
},
- "parse-headers": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz",
- "integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==",
- "requires": {
- "for-each": "^0.3.3",
- "string.prototype.trim": "^1.1.2"
- }
- },
"parse-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
@@ -1501,11 +1314,6 @@
"pinkie": "^2.0.0"
}
},
- "pkcs7": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-1.0.2.tgz",
- "integrity": "sha1-ttulJ1KMKUK/wSLOLa/NteWQdOc="
- },
"pkg-up": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
@@ -1526,6 +1334,18 @@
}
}
},
+ "plyr": {
+ "version": "3.5.6",
+ "resolved": "https://registry.npmjs.org/plyr/-/plyr-3.5.6.tgz",
+ "integrity": "sha512-buudbt2qwZYjEdBXW9DvQ7t/LqaSbv9tSjCrqg7nTXVM5BXNdhuiJCyvko+5+DFMdp30mliyKGoOHGXz43OwrA==",
+ "requires": {
+ "core-js": "^3.1.4",
+ "custom-event-polyfill": "^1.0.7",
+ "loadjs": "^3.6.1",
+ "rangetouch": "^2.0.0",
+ "url-polyfill": "^1.1.5"
+ }
+ },
"popper.js": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz",
@@ -1540,17 +1360,17 @@
"number-is-nan": "^1.0.0"
}
},
- "process": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
- "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
- },
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
+ "rangetouch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/rangetouch/-/rangetouch-2.0.0.tgz",
+ "integrity": "sha512-y66wTFbwh7KafYligRsmIYYR1kZY8U9tGHH9PgbVhBUFmGzPMsOSjslXPedgR5D3M9W1QKVbAf1AtaVAt7JJTw=="
+ },
"raw-body": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz",
@@ -1604,11 +1424,6 @@
"strip-indent": "^1.0.1"
}
},
- "regenerator-runtime": {
- "version": "0.13.3",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
- "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
- },
"repeating": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
@@ -1648,14 +1463,6 @@
"glob": "^7.0.5"
}
},
- "rust-result": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rust-result/-/rust-result-1.0.0.tgz",
- "integrity": "sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I=",
- "requires": {
- "individual": "^2.0.0"
- }
- },
"safe-json-parse": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz",
@@ -1741,34 +1548,6 @@
"integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=",
"dev": true
},
- "string.prototype.trim": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.0.tgz",
- "integrity": "sha512-9EIjYD/WdlvLpn987+ctkLf0FfvBefOCuiEr2henD8X+7jfwPnyvTdmW8OJhj5p+M0/96mBdynLWkxUr+rHlpg==",
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.13.0",
- "function-bind": "^1.1.1"
- }
- },
- "string.prototype.trimleft": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
- "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
- "requires": {
- "define-properties": "^1.1.3",
- "function-bind": "^1.1.1"
- }
- },
- "string.prototype.trimright": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
- "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
- "requires": {
- "define-properties": "^1.1.3",
- "function-bind": "^1.1.1"
- }
- },
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
@@ -1850,11 +1629,6 @@
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
"dev": true
},
- "tsml": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tsml/-/tsml-1.0.1.tgz",
- "integrity": "sha1-ifghi52eJX9H1/a1bQHFpNLGj8M="
- },
"underscore.string": {
"version": "3.3.5",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
@@ -1871,10 +1645,10 @@
"integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=",
"dev": true
},
- "url-toolkit": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.1.6.tgz",
- "integrity": "sha512-UaZ2+50am4HwrV2crR/JAf63Q4VvPYphe63WGeoJxeu8gmOm0qxPt+KsukfakPNrX9aymGNEkkaoICwn+OuvBw=="
+ "url-polyfill": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.7.tgz",
+ "integrity": "sha512-ZrAxYWCREjmMtL8gSbSiKKLZZticgihCvVBtrFbUVpyoETt8GQJeG2okMWA8XryDAaHMjJfhnc+rnhXRbI4DXA=="
},
"util-deprecate": {
"version": "1.0.2",
@@ -1892,45 +1666,6 @@
"spdx-expression-parse": "^3.0.0"
}
},
- "video.js": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.6.0.tgz",
- "integrity": "sha512-A0HSKzAmcYkd1xyExqUlM6n8bkghcX54iCvW08bPvvl3UHt8d8zijuylfIWu8vo1Z8fYyk9HPOFs1i3Cldr/cw==",
- "requires": {
- "@babel/runtime": "^7.4.5",
- "@videojs/http-streaming": "1.10.3",
- "global": "4.3.2",
- "keycode": "^2.2.0",
- "safe-json-parse": "4.0.0",
- "tsml": "1.0.1",
- "videojs-font": "3.2.0",
- "videojs-vtt.js": "^0.14.1",
- "xhr": "2.4.0"
- },
- "dependencies": {
- "safe-json-parse": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-4.0.0.tgz",
- "integrity": "sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw=",
- "requires": {
- "rust-result": "^1.0.0"
- }
- }
- }
- },
- "videojs-font": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-3.2.0.tgz",
- "integrity": "sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA=="
- },
- "videojs-vtt.js": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.14.1.tgz",
- "integrity": "sha512-YxOiywx6N9t3J5nqsE5WN2Sw4CSqVe3zV+AZm2T4syOc2buNJaD6ZoexSdeszx2sHLU/RRo2r4BJAXFDQ7Qo2Q==",
- "requires": {
- "global": "^4.3.1"
- }
- },
"websocket-driver": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
@@ -1962,21 +1697,11 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
- "xhr": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.0.tgz",
- "integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=",
- "requires": {
- "global": "~4.3.0",
- "is-function": "^1.0.1",
- "parse-headers": "^2.0.0",
- "xtend": "^4.0.0"
- }
- },
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
}
}
}
diff --git a/package.json b/package.json
index a5f3341..4acab13 100644
--- a/package.json
+++ b/package.json
@@ -5,9 +5,9 @@
"clipboard": "^2.0.4",
"highlightjs": "^9.12.0",
"jquery": "^3.4.1",
+ "plyr": "^3.5.6",
"popper.js": "^1.15.0",
- "tooltip.js": "^1.3.2",
- "video.js": "^7.6.0"
+ "tooltip.js": "^1.3.2"
},
"devDependencies": {
"grunt": "^1.0.4",
diff --git a/resources/templates/base.twig b/resources/templates/base.twig
index 2198ac8..0804873 100644
--- a/resources/templates/base.twig
+++ b/resources/templates/base.twig
@@ -16,7 +16,7 @@
-
+
{% block head %}{% endblock %}
@@ -34,7 +34,7 @@
-
+