mirror of
https://github.com/AzuraCast/AzuraCast.git
synced 2024-06-18 06:57:05 +00:00
Auto-load most Vue component deps from Webpack manifest.
This commit is contained in:
parent
b572b3dbc7
commit
ffa6d6b4fc
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -36,6 +36,7 @@ tmp/cache/*---*
|
||||||
/web/static/dist/**/*
|
/web/static/dist/**/*
|
||||||
!/web/static/dist/.gitkeep
|
!/web/static/dist/.gitkeep
|
||||||
/web/static/assets.json
|
/web/static/assets.json
|
||||||
|
/web/static/webpack.json
|
||||||
|
|
||||||
# Ansible deployment files
|
# Ansible deployment files
|
||||||
/ansible/
|
/ansible/
|
||||||
|
|
|
@ -445,7 +445,7 @@ return [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
'webcaster' => [
|
'Webcaster' => [
|
||||||
'order' => 10,
|
'order' => 10,
|
||||||
'require' => ['vue-component-common'],
|
'require' => ['vue-component-common'],
|
||||||
'files' => [
|
'files' => [
|
||||||
|
@ -462,83 +462,32 @@ return [
|
||||||
[
|
[
|
||||||
'src' => 'dist/lib/webcaster/webcast.js',
|
'src' => 'dist/lib/webcaster/webcast.js',
|
||||||
],
|
],
|
||||||
[
|
|
||||||
'src' => 'dist/Webcaster.js',
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
'radio_player' => [
|
'StationMedia' => [
|
||||||
'order' => 10,
|
|
||||||
'require' => ['vue-component-common'],
|
|
||||||
'files' => [
|
|
||||||
'js' => [
|
|
||||||
[
|
|
||||||
'src' => 'dist/RadioPlayer.js',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
|
|
||||||
'inline_player' => [
|
|
||||||
'order' => 10,
|
|
||||||
'require' => ['vue-component-common'],
|
|
||||||
'files' => [
|
|
||||||
'js' => [
|
|
||||||
[
|
|
||||||
'src' => 'dist/InlinePlayer.js',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
|
|
||||||
'station_media_manager' => [
|
|
||||||
'order' => 10,
|
'order' => 10,
|
||||||
'require' => ['vue-component-common', 'bootstrap-vue'],
|
'require' => ['vue-component-common', 'bootstrap-vue'],
|
||||||
'files' => [
|
// Auto-managed by Assets
|
||||||
'js' => [
|
|
||||||
[
|
|
||||||
'src' => 'dist/StationMedia.js',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
|
|
||||||
'station_playlists' => [
|
'StationPlaylists' => [
|
||||||
'order' => 10,
|
'order' => 10,
|
||||||
'require' => ['vue-component-common', 'bootstrap-vue', 'moment_base', 'moment_timezone'],
|
'require' => ['vue-component-common', 'bootstrap-vue', 'moment_base', 'moment_timezone'],
|
||||||
'replace' => ['moment'],
|
'replace' => ['moment'],
|
||||||
'files' => [
|
// Auto-managed by Assets
|
||||||
'js' => [
|
|
||||||
[
|
|
||||||
'src' => 'dist/StationPlaylists.js',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
|
|
||||||
'station_streamers' => [
|
'StationStreamers' => [
|
||||||
'order' => 10,
|
'order' => 10,
|
||||||
'require' => ['vue-component-common', 'bootstrap-vue', 'moment'],
|
'require' => ['vue-component-common', 'bootstrap-vue', 'moment'],
|
||||||
'files' => [
|
// Auto-managed by Assets
|
||||||
'js' => [
|
|
||||||
[
|
|
||||||
'src' => 'dist/StationStreamers.js',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
|
|
||||||
'station_on_demand' => [
|
'StationOnDemand' => [
|
||||||
'order' => 10,
|
'order' => 10,
|
||||||
'require' => ['vue-component-common', 'bootstrap-vue'],
|
'require' => ['vue-component-common', 'bootstrap-vue'],
|
||||||
'files' => [
|
// Auto-managed by Assets
|
||||||
'js' => [
|
|
||||||
[
|
|
||||||
'src' => 'dist/StationOnDemand.js',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -367,7 +367,13 @@ return [
|
||||||
$versioned_files = json_decode(file_get_contents($assets_file), true, 512, JSON_THROW_ON_ERROR);
|
$versioned_files = json_decode(file_get_contents($assets_file), true, 512, JSON_THROW_ON_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new App\Assets($libraries, $versioned_files);
|
$vueComponents = [];
|
||||||
|
$assets_file = $settings[Settings::BASE_DIR] . '/web/static/webpack.json';
|
||||||
|
if (file_exists($assets_file)) {
|
||||||
|
$vueComponents = json_decode(file_get_contents($assets_file), true, 512, JSON_THROW_ON_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new App\Assets($libraries, $versioned_files, $vueComponents);
|
||||||
},
|
},
|
||||||
|
|
||||||
// Synchronized (Cron) Tasks
|
// Synchronized (Cron) Tasks
|
||||||
|
|
|
@ -11,6 +11,7 @@ const sass = require('gulp-sass');
|
||||||
const clean_css = require('gulp-clean-css');
|
const clean_css = require('gulp-clean-css');
|
||||||
const revdel = require('gulp-rev-delete-original');
|
const revdel = require('gulp-rev-delete-original');
|
||||||
const webpackStream = require('webpack-stream');
|
const webpackStream = require('webpack-stream');
|
||||||
|
const gulpIgnore = require('gulp-ignore');
|
||||||
|
|
||||||
var jsFiles = {
|
var jsFiles = {
|
||||||
// Core Libraries
|
// Core Libraries
|
||||||
|
@ -216,7 +217,8 @@ gulp.task('bundle_deps', gulp.parallel(
|
||||||
gulp.task('clean', function () {
|
gulp.task('clean', function () {
|
||||||
return del([
|
return del([
|
||||||
'../web/static/dist/**/*',
|
'../web/static/dist/**/*',
|
||||||
'../web/static/assets.json'
|
'../web/static/assets.json',
|
||||||
|
'../web/static/webpack.json'
|
||||||
], { force: true });
|
], { force: true });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -234,13 +236,12 @@ gulp.task('concat-js', function () {
|
||||||
|
|
||||||
gulp.task('build-vue', function () {
|
gulp.task('build-vue', function () {
|
||||||
return gulp.src(['vue/*.js', 'vue/*.vue'])
|
return gulp.src(['vue/*.js', 'vue/*.vue'])
|
||||||
.pipe(sourcemaps.init())
|
|
||||||
.pipe(webpackStream(require('./webpack.config.js')))
|
.pipe(webpackStream(require('./webpack.config.js')))
|
||||||
|
.pipe(gulpIgnore.exclude('webpack.json'))
|
||||||
.pipe(babel({
|
.pipe(babel({
|
||||||
presets: ['@babel/env']
|
presets: ['@babel/env']
|
||||||
}))
|
}))
|
||||||
.pipe(uglify())
|
.pipe(uglify())
|
||||||
.pipe(sourcemaps.write())
|
|
||||||
.pipe(gulp.dest('../web/static/dist'));
|
.pipe(gulp.dest('../web/static/dist'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
58
frontend/package-lock.json
generated
58
frontend/package-lock.json
generated
|
@ -14397,6 +14397,37 @@
|
||||||
"vinyl": "^2.0.0"
|
"vinyl": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gulp-ignore": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/gulp-ignore/-/gulp-ignore-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-hRQDJipaU5A84J7QacNGG+bnFU3QLESdjuJCRTAZ5VuKsz4LmvOrECFJeeCtqxP3RV0Pn6mawU0Q3CFZGpirSg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"gulp-match": "^1.1.0",
|
||||||
|
"through2": "^3.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"through2": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.4",
|
||||||
|
"readable-stream": "2 || 3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gulp-match": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"minimatch": "^3.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gulp-rev": {
|
"gulp-rev": {
|
||||||
"version": "8.1.1",
|
"version": "8.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/gulp-rev/-/gulp-rev-8.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/gulp-rev/-/gulp-rev-8.1.1.tgz",
|
||||||
|
@ -15412,6 +15443,18 @@
|
||||||
"integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=",
|
"integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lodash.get": {
|
||||||
|
"version": "4.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
|
||||||
|
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"lodash.has": {
|
||||||
|
"version": "4.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz",
|
||||||
|
"integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"lodash.some": {
|
"lodash.some": {
|
||||||
"version": "4.6.0",
|
"version": "4.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
|
||||||
|
@ -19112,6 +19155,21 @@
|
||||||
"webpack-sources": "^1.4.1"
|
"webpack-sources": "^1.4.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"webpack-assets-manifest": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-JV9V2QKc5wEWQptdIjvXDUL1ucbPLH2f27toAY3SNdGZp+xSaStAgpoMcvMZmqtFrBc9a5pTS1058vxyMPOzRQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "^2.0",
|
||||||
|
"lodash.get": "^4.0",
|
||||||
|
"lodash.has": "^4.0",
|
||||||
|
"mkdirp": "^0.5",
|
||||||
|
"schema-utils": "^1.0.0",
|
||||||
|
"tapable": "^1.0.0",
|
||||||
|
"webpack-sources": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"webpack-sources": {
|
"webpack-sources": {
|
||||||
"version": "1.4.3",
|
"version": "1.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
|
||||||
|
|
|
@ -61,6 +61,7 @@
|
||||||
"gulp-babel": "^8.0.0",
|
"gulp-babel": "^8.0.0",
|
||||||
"gulp-clean-css": "^3.9.2",
|
"gulp-clean-css": "^3.9.2",
|
||||||
"gulp-concat": "^2.6.1",
|
"gulp-concat": "^2.6.1",
|
||||||
|
"gulp-ignore": "^3.0.0",
|
||||||
"gulp-rev": "^8.1.1",
|
"gulp-rev": "^8.1.1",
|
||||||
"gulp-rev-delete-original": "^0.2.3",
|
"gulp-rev-delete-original": "^0.2.3",
|
||||||
"gulp-sass": "^4.1.0",
|
"gulp-sass": "^4.1.0",
|
||||||
|
@ -71,6 +72,7 @@
|
||||||
"sass-loader": "^7.3.1",
|
"sass-loader": "^7.3.1",
|
||||||
"vue-loader": "14.2.2",
|
"vue-loader": "14.2.2",
|
||||||
"vue-template-compiler": "^2.6.11",
|
"vue-template-compiler": "^2.6.11",
|
||||||
|
"webpack-assets-manifest": "^3.1.1",
|
||||||
"webpack-stream": "^5.1.1"
|
"webpack-stream": "^5.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
|
const WebpackAssetsManifest = require('webpack-assets-manifest');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
mode: 'production',
|
mode: 'production',
|
||||||
|
@ -16,7 +17,7 @@ module.exports = {
|
||||||
extensions: ['*', '.js', '.vue', '.json']
|
extensions: ['*', '.js', '.vue', '.json']
|
||||||
},
|
},
|
||||||
output: {
|
output: {
|
||||||
publicPath: '/static/dist',
|
publicPath: 'dist/',
|
||||||
filename: '[name].js',
|
filename: '[name].js',
|
||||||
sourceMapFilename: '[name].map',
|
sourceMapFilename: '[name].map',
|
||||||
library: '[name]'
|
library: '[name]'
|
||||||
|
@ -24,10 +25,24 @@ module.exports = {
|
||||||
optimization: {
|
optimization: {
|
||||||
splitChunks: {
|
splitChunks: {
|
||||||
cacheGroups: {
|
cacheGroups: {
|
||||||
vendor: {
|
moment: {
|
||||||
test: /node_modules/,
|
test: /[\\/]node_modules[\\/]moment/,
|
||||||
|
name: 'vendor-moment',
|
||||||
|
priority: 2,
|
||||||
chunks: 'initial',
|
chunks: 'initial',
|
||||||
|
enforce: true
|
||||||
|
},
|
||||||
|
fullcalendar: {
|
||||||
|
test: /[\\/]node_modules[\\/]@fullcalendar/,
|
||||||
|
name: 'vendor-fullcalendar',
|
||||||
|
priority: 2,
|
||||||
|
chunks: 'initial',
|
||||||
|
enforce: true
|
||||||
|
},
|
||||||
|
vendor: {
|
||||||
|
test: /[\\/]node_modules[\\/]/,
|
||||||
name: 'vendor',
|
name: 'vendor',
|
||||||
|
chunks: 'initial',
|
||||||
enforce: true
|
enforce: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,8 +66,12 @@ module.exports = {
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.IgnorePlugin({
|
new WebpackAssetsManifest({
|
||||||
resourceRegExp: /^vue$/
|
output: '../web/static/webpack.json',
|
||||||
|
writeToDisk: true,
|
||||||
|
merge: true,
|
||||||
|
publicPath: true,
|
||||||
|
entrypoints: true
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
performance: {
|
performance: {
|
||||||
|
|
|
@ -42,17 +42,50 @@ class Assets
|
||||||
*
|
*
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function __construct(array $libraries = [], array $versioned_files = [])
|
public function __construct(
|
||||||
{
|
array $libraries = [],
|
||||||
|
array $versioned_files = [],
|
||||||
|
array $vueComponents = []
|
||||||
|
) {
|
||||||
foreach ($libraries as $library_name => $library) {
|
foreach ($libraries as $library_name => $library) {
|
||||||
$this->addLibrary($library, $library_name);
|
$this->addLibrary($library, $library_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->versioned_files = $versioned_files;
|
$this->versioned_files = $versioned_files;
|
||||||
|
$this->addVueComponents($vueComponents);
|
||||||
|
|
||||||
$this->csp_nonce = preg_replace('/[^A-Za-z0-9\+\/=]/', '', base64_encode(random_bytes(18)));
|
$this->csp_nonce = preg_replace('/[^A-Za-z0-9\+\/=]/', '', base64_encode(random_bytes(18)));
|
||||||
$this->csp_domains = [];
|
$this->csp_domains = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function addVueComponents(array $vueComponents = [])
|
||||||
|
{
|
||||||
|
if (!empty($vueComponents['entrypoints'])) {
|
||||||
|
foreach ($vueComponents['entrypoints'] as $componentName => $componentDeps) {
|
||||||
|
|
||||||
|
$library = $this->libraries[$componentName] ?? [
|
||||||
|
'order' => 10,
|
||||||
|
'require' => [],
|
||||||
|
'files' => [],
|
||||||
|
];
|
||||||
|
|
||||||
|
if (!in_array('vue-component-common', $library['require'], true)) {
|
||||||
|
$library['require'][] = 'vue-component-common';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($componentDeps['js'] as $componentDep) {
|
||||||
|
if ('dist/vendor.js' !== $componentDep) {
|
||||||
|
$library['files']['js'][] = [
|
||||||
|
'src' => $componentDep,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addLibrary($library, $componentName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a library to the collection.
|
* Add a library to the collection.
|
||||||
*
|
*
|
||||||
|
|
|
@ -12,7 +12,7 @@ $this->layout('main', ['title' => __('Dashboard'), 'manual' => true]);
|
||||||
|
|
||||||
$assets
|
$assets
|
||||||
->load('vue')
|
->load('vue')
|
||||||
->load('inline_player')
|
->load('InlinePlayer')
|
||||||
->addInlineJs($this->fetch('partials/radio_controls.js'), 95)
|
->addInlineJs($this->fetch('partials/radio_controls.js'), 95)
|
||||||
->addInlineJs($this->fetch('frontend/index/index.js', ['stations' => $stations]));
|
->addInlineJs($this->fetch('frontend/index/index.js', ['stations' => $stations]));
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
<?php
|
<?php
|
||||||
$this->layout('minimal', [
|
$this->layout('minimal', [
|
||||||
'page_class' => 'dj station-'.$station->getShortName(),
|
'page_class' => 'dj station-' . $station->getShortName(),
|
||||||
'title' => 'Web DJ - '.$this->e($station->getName()),
|
'title' => 'Web DJ - ' . $this->e($station->getName()),
|
||||||
'hide_footer' => true
|
'hide_footer' => true,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/** @var \App\Assets $assets */
|
/** @var \App\Assets $assets */
|
||||||
$assets
|
$assets
|
||||||
->load('vue')
|
->load('vue')
|
||||||
->load('webcaster')
|
->load('Webcaster')
|
||||||
->addInlineJs($this->fetch('frontend/public/dj.js', ['station' => $station, 'base_uri' => $base_uri]));
|
->addInlineJs($this->fetch('frontend/public/dj.js', ['station' => $station, 'base_uri' => $base_uri]));
|
||||||
?>
|
?>
|
||||||
<section id="content" role="main" style="height: 100vh;">
|
<section id="content" role="main" style="height: 100vh;">
|
||||||
|
|
|
@ -9,7 +9,7 @@ $this->layout('minimal', [
|
||||||
$assets
|
$assets
|
||||||
->load('vue')
|
->load('vue')
|
||||||
->load('fancybox')
|
->load('fancybox')
|
||||||
->load('station_on_demand')
|
->load('StationOnDemand')
|
||||||
->addInlineJs($this->fetch('frontend/public/ondemand.js', [
|
->addInlineJs($this->fetch('frontend/public/ondemand.js', [
|
||||||
'station' => $station,
|
'station' => $station,
|
||||||
'custom_fields' => $custom_fields,
|
'custom_fields' => $custom_fields,
|
||||||
|
|
|
@ -8,7 +8,7 @@ $this->layout('minimal', [
|
||||||
/** @var \App\Assets $assets */
|
/** @var \App\Assets $assets */
|
||||||
$assets
|
$assets
|
||||||
->load('vue')
|
->load('vue')
|
||||||
->load('station_on_demand')
|
->load('StationOnDemand')
|
||||||
->addInlineJs($this->fetch('frontend/public/ondemand.js', [
|
->addInlineJs($this->fetch('frontend/public/ondemand.js', [
|
||||||
'station' => $station,
|
'station' => $station,
|
||||||
'custom_fields' => $custom_fields,
|
'custom_fields' => $custom_fields,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/** @var \App\Assets $assets */
|
/** @var \App\Assets $assets */
|
||||||
$assets
|
$assets
|
||||||
->load('radio_player')
|
->load('RadioPlayer')
|
||||||
->addInlineJs($this->fetch('frontend/public/player_component.js', [
|
->addInlineJs($this->fetch('frontend/public/player_component.js', [
|
||||||
'station' => $station,
|
'station' => $station,
|
||||||
'nowplaying' => $nowplaying,
|
'nowplaying' => $nowplaying,
|
||||||
|
|
|
@ -10,8 +10,8 @@ $assets
|
||||||
->load('vue')
|
->load('vue')
|
||||||
->load('moment')
|
->load('moment')
|
||||||
->load('fancybox')
|
->load('fancybox')
|
||||||
->load('inline_player')
|
->load('InlinePlayer')
|
||||||
->load('station_media_manager')
|
->load('StationMedia')
|
||||||
->addInlineJs($this->fetch('partials/radio_controls.js'), 95)
|
->addInlineJs($this->fetch('partials/radio_controls.js'), 95)
|
||||||
->addInlineJs($this->fetch('stations/files/index.js', [
|
->addInlineJs($this->fetch('stations/files/index.js', [
|
||||||
'playlists' => $playlists,
|
'playlists' => $playlists,
|
||||||
|
|
|
@ -5,7 +5,7 @@ $this->layout('main', [
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/** @var \App\Assets $assets */
|
/** @var \App\Assets $assets */
|
||||||
$assets->load('station_playlists')
|
$assets->load('StationPlaylists')
|
||||||
->addInlineJs($this->fetch('stations/playlists/index.js', [
|
->addInlineJs($this->fetch('stations/playlists/index.js', [
|
||||||
'station_tz' => $station_tz,
|
'station_tz' => $station_tz,
|
||||||
]));
|
]));
|
||||||
|
|
|
@ -12,7 +12,7 @@ $this->layout('main', [
|
||||||
|
|
||||||
$assets
|
$assets
|
||||||
->load('vue')
|
->load('vue')
|
||||||
->load('inline_player')
|
->load('InlinePlayer')
|
||||||
->addInlineJs($this->fetch('partials/radio_controls.js'), 95)
|
->addInlineJs($this->fetch('partials/radio_controls.js'), 95)
|
||||||
->load('clipboard')
|
->load('clipboard')
|
||||||
->load('fancybox')
|
->load('fancybox')
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
$this->layout('main', ['title' => __('Streamer/DJ Accounts'), 'manual' => true]);
|
$this->layout('main', ['title' => __('Streamer/DJ Accounts'), 'manual' => true]);
|
||||||
|
|
||||||
/** @var \App\Assets $assets */
|
/** @var \App\Assets $assets */
|
||||||
$assets->load('station_streamers')
|
$assets->load('StationStreamers')
|
||||||
->addInlineJs($this->fetch('stations/streamers/index.js', [
|
->addInlineJs($this->fetch('stations/streamers/index.js', [
|
||||||
'station_tz' => $station_tz,
|
'station_tz' => $station_tz,
|
||||||
]));
|
]));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user