4
0
mirror of https://github.com/AzuraCast/AzuraCast.git synced 2024-06-13 20:56:36 +00:00

Unify mount form config; make mounts/remotes selectable on public page.

This commit is contained in:
Buster Neece 2019-03-24 00:46:54 -05:00
parent 14cf4da86b
commit 748ade0089
No known key found for this signature in database
GPG Key ID: 6D9E12FF03411F4E
18 changed files with 677 additions and 520 deletions

View File

@ -0,0 +1,149 @@
<?php
return [
'method' => 'post',
'enctype' => 'multipart/form-data',
'groups' => [
'basic_info' => [
'elements' => [
'name' => [
'text',
[
'label' => __('Mount Point URL'),
'description' => __('This name should always begin with a slash (/), and must be a valid URL, such as /autodj.mp3'),
'required' => true,
]
],
'display_name' => [
'text',
[
'label' => __('Display Name'),
'description' => __('The display name assigned to this mount point when viewing it on administrative or public pages. Leave blank to automatically generate one.'),
]
],
'is_visible_on_public_pages' => [
'toggle',
[
'label' => __('Show on Public Pages'),
'description' => __('Enable to allow listeners to select this mount point on this station\'s public pages.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => true,
]
],
'is_default' => [
'toggle',
[
'label' => __('Set as Default Mount Point'),
'description' => __('If this mount is the default, it will be played on the radio preview and the public radio page in this system.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => false,
]
],
'relay_url' => [
'text',
[
'label' => __('Relay Stream URL'),
'description' => __('Enter the full URL of another stream to relay its broadcast through this mount point.'),
'default' => '',
]
],
'is_public' => [
'toggle',
[
'label' => __('Publish to "Yellow Pages" Directories'),
'description' => __('Enable to advertise this mount point on "Yellow Pages" public radio directories.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => false,
]
],
'enable_autodj' => [
'toggle',
[
'label' => __('Enable AutoDJ'),
'description' => __('If enabled, the AutoDJ will automatically play music to this mount point.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => true,
]
],
],
],
'autodj' => [
'legend' => __('Configure AutoDJ Broadcasting'),
'class' => 'fieldset_autodj',
'elements' => [
'autodj_format' => [
'radio',
[
'label' => __('AutoDJ Format'),
'choices' => [],
]
],
'autodj_bitrate' => [
'radio',
[
'label' => __('AutoDJ Bitrate (kbps)'),
'choices' => [
32 => '32',
48 => '48',
64 => '64',
96 => '96',
128 => '128',
192 => '192',
256 => '256',
320 => '320',
],
'default' => 128,
]
],
],
],
'advanced_items' => [
'legend' => __('Advanced Configuration'),
'elements' => [
'custom_listen_url' => [
'text',
[
'label' => __('Custom Stream URL'),
'label_class' => 'advanced',
'description' => __('You can set a custom URL for this stream that AzuraCast will use when referring to it. Leave empty to use the default value.')
]
],
],
],
'grp_submit' => [
'elements' => [
'submit' => [
'submit',
[
'type' => 'submit',
'label' => __('Save Changes'),
'class' => 'ui-button btn-lg btn-primary',
]
],
],
],
],
];

View File

@ -1,155 +1,32 @@
<?php
use App\Entity\StationMount;
return [
'method' => 'post',
'enctype' => 'multipart/form-data',
$form_config = require __DIR__.'/generic.php';
'groups' => [
'basic_info' => [
'elements' => [
'name' => [
'text',
[
'label' => __('Mount Point Name/URL'),
'description' => __('This name should always begin with a slash (/), and must be a valid URL, such as /autodj.mp3'),
'required' => true,
]
],
'is_default' => [
'toggle',
[
'label' => __('Set as Default Mount Point'),
'description' => __('If this mount is the default, it will be played on the radio preview and the public radio page in this system.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => false,
]
],
'fallback_mount' => [
'text',
[
'label' => __('Fallback Mount'),
'description' => __('If this mount point is not playing audio, listeners will automatically be redirected to this mount point. The default is /error.mp3, a repeating error message.'),
'default' => '/error.mp3',
]
],
'relay_url' => [
'text',
[
'label' => __('Relay Stream URL'),
'description' => __('Enter the full URL of another stream to relay its broadcast through this mount point.'),
'default' => '',
]
],
'is_public' => [
'radio',
[
'label' => __('Advertise to YP Directories (Public Station)'),
'description' => __('Set to "yes" to advertise this stream on the YP public radio directories.'),
'choices' => [0 => __('No'), 1 => __('Yes')],
'default' => 0,
]
],
'enable_autodj' => [
'toggle',
[
'label' => __('Enable AutoDJ'),
'description' => __('If enabled, the AutoDJ will automatically play music to this mount point.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => true,
]
],
],
],
'autodj' => [
'legend' => __('Configure AutoDJ Broadcasting'),
'class' => 'fieldset_autodj',
'elements' => [
'autodj_format' => [
'radio',
[
'label' => __('AutoDJ Format'),
'choices' => [
StationMount::FORMAT_MP3 => 'MP3',
StationMount::FORMAT_OGG => 'OGG Vorbis',
StationMount::FORMAT_OPUS => 'OGG Opus',
StationMount::FORMAT_AAC => 'AAC+ (MPEG4 HE-AAC v2)',
],
'default' => StationMount::FORMAT_MP3,
]
],
'autodj_bitrate' => [
'radio',
[
'label' => __('AutoDJ Bitrate (kbps)'),
'choices' => [
32 => '32',
48 => '48',
64 => '64',
96 => '96',
128 => '128',
192 => '192',
256 => '256',
320 => '320',
],
'default' => 128,
]
],
],
],
'advanced_items' => [
'legend' => __('Advanced Configuration'),
'elements' => [
'custom_listen_url' => [
'text',
[
'label' => __('Custom Stream URL'),
'label_class' => 'advanced',
'description' => __('You can set a custom URL for this stream that AzuraCast will use when referring to it. Leave empty to use the default value.')
]
],
'frontend_config' => [
'textarea',
[
'label' => __('Custom Frontend Configuration'),
'label_class' => 'advanced',
'description' => __('You can include any special mount point settings here, in either JSON { key: \'value\' } format or XML &lt;key&gt;value&lt;/key&gt;'),
]
],
],
],
'grp_submit' => [
'elements' => [
'submit' => [
'submit',
[
'type' => 'submit',
'label' => __('Save Changes'),
'class' => 'ui-button btn-lg btn-primary',
]
],
],
],
],
$form_config['groups']['basic_info']['elements']['fallback_mount'] = [
'text',
[
'label' => __('Fallback Mount'),
'description' => __('If this mount point is not playing audio, listeners will automatically be redirected to this mount point. The default is /error.mp3, a repeating error message.'),
'default' => '/error.mp3',
]
];
$form_config['groups']['autodj']['elements']['autodj_format'][1]['choices'] = [
StationMount::FORMAT_MP3 => 'MP3',
StationMount::FORMAT_OGG => 'OGG Vorbis',
StationMount::FORMAT_OPUS => 'OGG Opus',
StationMount::FORMAT_AAC => 'AAC+ (MPEG4 HE-AAC v2)',
];
$form_config['groups']['autodj']['elements']['autodj_format'][1]['default'] = StationMount::FORMAT_MP3;
$form_config['groups']['advanced_items']['elements']['frontend_config'] = [
'textarea',
[
'label' => __('Custom Frontend Configuration'),
'label_class' => 'advanced',
'description' => __('You can include any special mount point settings here, in either JSON { key: \'value\' } format or XML &lt;key&gt;value&lt;/key&gt;'),
]
];
return $form_config;

View File

@ -1,157 +1,35 @@
<?php
use App\Entity\StationMount;
return [
'method' => 'post',
'enctype' => 'multipart/form-data',
$form_config = require __DIR__.'/generic.php';
'groups' => [
$form_config['groups']['basic_info']['elements']['name'][1]['validator'] = function($text) {
$forbidden_paths = ['listen', 'admin', 'statistics', '7.html'];
'basic_info' => [
'elements' => [
foreach($forbidden_paths as $forbidden_path) {
if (stripos($text, $forbidden_path) !== false) {
return __('Stream path cannot include reserved keywords: %s', implode(', ', $forbidden_paths));
}
}
'name' => [
'text',
[
'label' => __('Mount Point Name/URL'),
'description' => __('This name should always begin with a slash (/), and must be a valid URL, such as /autodj.mp3'),
'required' => true,
'validator' => function($text) {
$forbidden_paths = ['listen', 'admin', 'statistics', '7.html'];
return true;
};
foreach($forbidden_paths as $forbidden_path) {
if (stripos($text, $forbidden_path) !== false) {
return __('Stream path cannot include reserved keywords: %s', implode(', ', $forbidden_paths));
}
}
return true;
},
]
],
'is_default' => [
'toggle',
[
'label' => __('Is Default Mount'),
'description' => __('If this mount is the default, it will be played on the radio preview and the public radio page in this system.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => false,
]
],
'relay_url' => [
'text',
[
'label' => __('Relay Stream URL'),
'description' => __('Enter the full URL of another stream to relay its broadcast through this mount point.'),
'default' => '',
]
],
'is_public' => [
'toggle',
[
'label' => __('Advertise to YP Directories (Public Station)'),
'description' => __('Set to "yes" to advertise this stream on the YP public radio directories.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => false,
]
],
'authhash' => [
'text',
[
'label' => __('YP Directory Authorization Hash'),
'description' => sprintf(__('If your stream is set to advertise to YP directories above, you must specify an authorization hash. You can manage authhashes <a href="%s" target="_blank">on the SHOUTcast web site</a>.'),
'https://rmo.shoutcast.com'),
'default' => '',
]
],
'enable_autodj' => [
'toggle',
[
'label' => __('Enable AutoDJ'),
'description' => __('If set to "Yes", the AutoDJ will automatically play music to this mount point.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => true,
]
],
],
],
'autodj' => [
'legend' => __('Configure AutoDJ Broadcasting'),
'class' => 'fieldset_autodj',
'elements' => [
'autodj_format' => [
'radio',
[
'label' => __('AutoDJ Format'),
'choices' => [
StationMount::FORMAT_MP3 => 'MP3',
StationMount::FORMAT_AAC => 'AAC+ (MPEG4 HE-AAC v2)',
],
'default' => StationMount::FORMAT_MP3,
]
],
'autodj_bitrate' => [
'radio',
[
'label' => __('AutoDJ Bitrate (kbps)'),
'choices' => [
32 => '32',
48 => '48',
64 => '64',
96 => '96',
128 => '128',
192 => '192',
256 => '256',
320 => '320',
],
'default' => 128,
]
],
],
],
'advanced_items' => [
'legend' => __('Advanced Configuration'),
'elements' => [
'custom_listen_url' => [
'text',
[
'label' => __('Custom Stream URL'),
'label_class' => 'advanced',
'description' => __('You can set a custom URL for this stream that AzuraCast will use when referring to it. Leave empty to use the default value.')
]
],
],
],
'grp_submit' => [
'elements' => [
'submit' => [
'submit',
[
'type' => 'submit',
'label' => __('Save Changes'),
'class' => 'ui-button btn-lg btn-primary',
]
],
],
],
],
$form_config['groups']['basic_info']['elements']['authhash'] = [
'text',
[
'label' => __('YP Directory Authorization Hash'),
'description' => sprintf(__('If your stream is set to advertise to YP directories above, you must specify an authorization hash. You can manage authhashes <a href="%s" target="_blank">on the SHOUTcast web site</a>.'),
'https://rmo.shoutcast.com'),
'default' => '',
]
];
$form_config['groups']['autodj']['elements']['autodj_format'][1]['choices'] = [
StationMount::FORMAT_MP3 => 'MP3',
StationMount::FORMAT_AAC => 'AAC+ (MPEG4 HE-AAC v2)',
];
$form_config['groups']['autodj']['elements']['autodj_format'][1]['default'] = StationMount::FORMAT_MP3;
return $form_config;

View File

@ -7,6 +7,25 @@ return [
'basic_info' => [
'elements' => [
'display_name' => [
'text',
[
'label' => __('Display Name'),
'description' => __('The display name assigned to this relay when viewing it on administrative or public pages. Leave blank to automatically generate one.'),
]
],
'is_visible_on_public_pages' => [
'toggle',
[
'label' => __('Show on Public Pages'),
'description' => __('Enable to allow listeners to select this relay on this station\'s public pages.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => true,
]
],
'type' => [
'radio',
[
@ -49,7 +68,7 @@ return [
'toggle',
[
'label' => __('Broadcast AutoDJ to Remote Station'),
'description' => __('If set to "Yes", the AutoDJ on this installation will automatically play music to this mount point.'),
'description' => __('If enabled, the AutoDJ on this installation will automatically play music to this mount point.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => 0,
@ -127,12 +146,13 @@ return [
],
'is_public' => [
'radio',
'toggle',
[
'label' => __('Advertise to YP Directories (Public Station)'),
'description' => __('Set to "yes" to advertise this stream on the YP public radio directories.'),
'choices' => [0 => __('No'), 1 => __('Yes')],
'default' => 0,
'label' => __('Publish to "Yellow Pages" Directories'),
'description' => __('Enable to advertise this mount point on "Yellow Pages" public radio directories.'),
'selected_text' => __('Yes'),
'deselected_text' => __('No'),
'default' => false,
]
],

View File

@ -7,8 +7,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-03-23T04:31:53+00:00\n"
"PO-Revision-Date: 2019-03-23T04:31:53+00:00\n"
"POT-Creation-Date: 2019-03-24T05:46:26+00:00\n"
"PO-Revision-Date: 2019-03-24T05:46:26+00:00\n"
"Language: \n"
#: /var/azuracast/www/src/Form/StationForm.php:79
@ -125,7 +125,7 @@ msgstr ""
#: /var/azuracast/www/src/Acl.php:191
#: /var/azuracast/www/config/menus/station.php:81
#: /var/azuracast/www/templates/stations/profile/index.phtml:247
#: /var/azuracast/www/templates/stations/profile/index.phtml:248
#: /var/azuracast/www/templates/stations/remotes/index.phtml:1
#: /var/azuracast/www/templates/stations/remotes/index.phtml:5
msgid "Remote Relays"
@ -406,10 +406,10 @@ msgid "Supervisord Log"
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/CustomFieldsController.php:71
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:69
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:73
#: /var/azuracast/www/src/Controller/Admin/StationsController.php:49
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:68
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:79
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:69
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:83
#: /var/azuracast/www/src/Controller/Stations/Files/EditController.php:136
#: /var/azuracast/www/src/Controller/Stations/MountsController.php:100
#: /var/azuracast/www/src/Controller/Stations/StreamersController.php:108
@ -421,9 +421,9 @@ msgid "%s updated."
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/CustomFieldsController.php:71
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:69
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:73
#: /var/azuracast/www/src/Controller/Admin/StationsController.php:49
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:79
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:83
#: /var/azuracast/www/src/Controller/Stations/MountsController.php:100
#: /var/azuracast/www/src/Controller/Stations/StreamersController.php:108
#: /var/azuracast/www/src/Controller/Stations/RemotesController.php:82
@ -440,10 +440,10 @@ msgid "Custom Field"
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/CustomFieldsController.php:79
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:81
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:85
#: /var/azuracast/www/src/Controller/Admin/StationsController.php:55
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:76
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:87
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:77
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:91
#: /var/azuracast/www/src/Controller/Stations/Files/EditController.php:145
#: /var/azuracast/www/src/Controller/Stations/MountsController.php:108
#: /var/azuracast/www/src/Controller/Stations/StreamersController.php:116
@ -455,9 +455,9 @@ msgid "Edit %s"
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/CustomFieldsController.php:79
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:81
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:85
#: /var/azuracast/www/src/Controller/Admin/StationsController.php:55
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:87
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:91
#: /var/azuracast/www/src/Controller/Stations/MountsController.php:108
#: /var/azuracast/www/src/Controller/Stations/StreamersController.php:116
#: /var/azuracast/www/src/Controller/Stations/RemotesController.php:90
@ -481,10 +481,10 @@ msgid "Add %s"
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/CustomFieldsController.php:95
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:99
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:103
#: /var/azuracast/www/src/Controller/Admin/StationsController.php:69
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:92
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:105
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:93
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:109
#: /var/azuracast/www/src/Controller/Stations/MountsController.php:133
#: /var/azuracast/www/src/Controller/Stations/StreamersController.php:139
#: /var/azuracast/www/src/Controller/Stations/RemotesController.php:115
@ -494,25 +494,25 @@ msgstr ""
msgid "%s deleted."
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:69
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:81
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:99
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:112
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:73
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:85
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:103
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:116
#: /var/azuracast/www/templates/admin/users/index.phtml:10
msgid "User"
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:75
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:79
msgid "Another user already exists with this e-mail address. Please update the e-mail address."
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:94
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:98
msgid "You cannot delete your own account."
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:112
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:116
#: /var/azuracast/www/src/Controller/Admin/Stations/CloneController.php:52
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:55
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:56
#: /var/azuracast/www/src/Controller/Stations/Files/EditController.php:57
#: /var/azuracast/www/src/Controller/Stations/WebhooksController.php:80
#: /var/azuracast/www/src/Controller/Stations/WebhooksController.php:125
@ -524,7 +524,7 @@ msgstr ""
msgid "%s not found."
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:117
#: /var/azuracast/www/src/Controller/Admin/UsersController.php:121
#: /var/azuracast/www/src/Controller/Frontend/AccountController.php:97
#: /var/azuracast/www/src/Controller/Frontend/AccountController.php:126
msgid "Logged in successfully."
@ -549,10 +549,10 @@ msgstr ""
msgid "Install SHOUTcast"
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:55
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:68
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:76
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:92
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:56
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:69
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:77
#: /var/azuracast/www/src/Controller/Admin/ApiController.php:93
#: /var/azuracast/www/src/Controller/Frontend/ApiKeysController.php:60
#: /var/azuracast/www/src/Controller/Frontend/ApiKeysController.php:95
#: /var/azuracast/www/src/Controller/Frontend/ApiKeysController.php:102
@ -566,9 +566,9 @@ msgstr ""
msgid "Sync Task Output"
msgstr ""
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:79
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:87
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:105
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:83
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:91
#: /var/azuracast/www/src/Controller/Admin/PermissionsController.php:109
#: /var/azuracast/www/templates/admin/permissions/index.phtml:10
msgid "Permission"
msgstr ""
@ -641,7 +641,7 @@ msgstr ""
msgid "Remote Relay"
msgstr ""
#: /var/azuracast/www/src/Controller/Stations/Reports/SoundExchangeController.php:173
#: /var/azuracast/www/src/Controller/Stations/Reports/SoundExchangeController.php:174
msgid "SoundExchange Report"
msgstr ""
@ -717,43 +717,30 @@ msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:69
#: /var/azuracast/www/templates/stations/playlists/index.phtml:32
#: /var/azuracast/www/templates/stations/playlists/index.phtml:45
#: /var/azuracast/www/templates/frontend/public/index.phtml:38
#: /var/azuracast/www/templates/frontend/public/index.phtml:51
msgid "Playlist"
msgstr ""
#: /var/azuracast/www/src/Controller/Stations/ProfileController.php:80
#: /var/azuracast/www/src/Controller/Stations/ProfileController.php:98
#: /var/azuracast/www/src/Controller/Stations/ProfileController.php:92
#: /var/azuracast/www/src/Controller/Stations/ProfileController.php:110
#: /var/azuracast/www/config/forms/song.php:33
#: /var/azuracast/www/config/forms/media.php:21
#: /var/azuracast/www/templates/stations/reports/timeline.phtml:35
#: /var/azuracast/www/templates/stations/reports/requests.phtml:26
#: /var/azuracast/www/templates/stations/queue/index.phtml:26
#: /var/azuracast/www/templates/frontend/public/player_component.js.phtml:7
#: /var/azuracast/www/templates/frontend/public/index.js.phtml:8
#: /var/azuracast/www/templates/frontend/public/index.js.phtml:28
msgid "Song Title"
msgstr ""
#: /var/azuracast/www/src/Controller/Stations/ProfileController.php:81
#: /var/azuracast/www/src/Controller/Stations/ProfileController.php:99
#: /var/azuracast/www/src/Controller/Stations/ProfileController.php:93
#: /var/azuracast/www/src/Controller/Stations/ProfileController.php:111
#: /var/azuracast/www/config/forms/media.php:28
#: /var/azuracast/www/templates/frontend/public/player_component.js.phtml:8
#: /var/azuracast/www/templates/frontend/public/index.js.phtml:9
#: /var/azuracast/www/templates/frontend/public/index.js.phtml:29
msgid "Song Artist"
msgstr ""
#: /var/azuracast/www/src/Controller/Frontend/PublicController.php:37
#: /var/azuracast/www/src/Controller/Frontend/PublicController.php:99
msgid "Station not found!"
msgstr ""
#: /var/azuracast/www/src/Controller/Frontend/PublicController.php:103
msgid "Live streaming is not enabled on this station."
msgstr ""
#: /var/azuracast/www/src/Controller/Frontend/PublicController.php:109
msgid "This station does not support live streaming."
msgstr ""
#: /var/azuracast/www/src/Controller/Frontend/AccountController.php:73
msgid "Too many login attempts"
msgstr ""
@ -844,14 +831,14 @@ msgid "Public Page"
msgstr ""
#: /var/azuracast/www/config/menus/station.php:46
#: /var/azuracast/www/templates/stations/profile/index.phtml:368
#: /var/azuracast/www/templates/stations/profile/index.phtml:370
#: /var/azuracast/www/templates/stations/files/index.phtml:1
#: /var/azuracast/www/templates/stations/files/index.phtml:24
msgid "Music Files"
msgstr ""
#: /var/azuracast/www/config/menus/station.php:53
#: /var/azuracast/www/templates/stations/profile/index.phtml:369
#: /var/azuracast/www/templates/stations/profile/index.phtml:371
#: /var/azuracast/www/templates/stations/files/index.phtml:109
#: /var/azuracast/www/templates/stations/playlists/index.phtml:4
#: /var/azuracast/www/templates/stations/playlists/index.phtml:16
@ -1024,31 +1011,37 @@ msgstr ""
msgid "Any time a live streamer/DJ disconnects from the stream"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:16
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:16
msgid "Mount Point Name/URL"
#: /var/azuracast/www/config/forms/mount/generic.php:14
msgid "Mount Point URL"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:17
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:17
#: /var/azuracast/www/config/forms/mount/generic.php:15
msgid "This name should always begin with a slash (/), and must be a valid URL, such as /autodj.mp3"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:25
msgid "Set as Default Mount Point"
#: /var/azuracast/www/config/forms/mount/generic.php:23
#: /var/azuracast/www/config/forms/remote.php:13
#: /var/azuracast/www/templates/stations/streamers/index.phtml:27
msgid "Display Name"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:26
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:37
msgid "If this mount is the default, it will be played on the radio preview and the public radio page in this system."
#: /var/azuracast/www/config/forms/mount/generic.php:24
msgid "The display name assigned to this mount point when viewing it on administrative or public pages. Leave blank to automatically generate one."
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:27
#: /var/azuracast/www/config/forms/mount/icecast.php:56
#: /var/azuracast/www/config/forms/mount/icecast.php:66
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:38
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:58
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:79
#: /var/azuracast/www/config/forms/mount/generic.php:31
#: /var/azuracast/www/config/forms/remote.php:21
msgid "Show on Public Pages"
msgstr ""
#: /var/azuracast/www/config/forms/mount/generic.php:32
msgid "Enable to allow listeners to select this mount point on this station's public pages."
msgstr ""
#: /var/azuracast/www/config/forms/mount/generic.php:33
#: /var/azuracast/www/config/forms/mount/generic.php:44
#: /var/azuracast/www/config/forms/mount/generic.php:64
#: /var/azuracast/www/config/forms/mount/generic.php:75
#: /var/azuracast/www/config/forms/station_clone.php:56
#: /var/azuracast/www/config/forms/station_clone.php:68
#: /var/azuracast/www/config/forms/station_clone.php:81
@ -1070,17 +1063,16 @@ msgstr ""
#: /var/azuracast/www/config/forms/station.php:370
#: /var/azuracast/www/config/forms/station.php:400
#: /var/azuracast/www/config/forms/streamer.php:48
#: /var/azuracast/www/config/forms/remote.php:53
#: /var/azuracast/www/config/forms/remote.php:134
#: /var/azuracast/www/config/forms/remote.php:23
#: /var/azuracast/www/config/forms/remote.php:72
#: /var/azuracast/www/config/forms/remote.php:153
msgid "Yes"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:28
#: /var/azuracast/www/config/forms/mount/icecast.php:56
#: /var/azuracast/www/config/forms/mount/icecast.php:67
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:39
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:59
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:80
#: /var/azuracast/www/config/forms/mount/generic.php:34
#: /var/azuracast/www/config/forms/mount/generic.php:45
#: /var/azuracast/www/config/forms/mount/generic.php:65
#: /var/azuracast/www/config/forms/mount/generic.php:76
#: /var/azuracast/www/config/forms/station_clone.php:55
#: /var/azuracast/www/config/forms/station_clone.php:67
#: /var/azuracast/www/config/forms/station_clone.php:80
@ -1102,93 +1094,74 @@ msgstr ""
#: /var/azuracast/www/config/forms/station.php:371
#: /var/azuracast/www/config/forms/station.php:401
#: /var/azuracast/www/config/forms/streamer.php:49
#: /var/azuracast/www/config/forms/remote.php:54
#: /var/azuracast/www/config/forms/remote.php:134
#: /var/azuracast/www/config/forms/remote.php:24
#: /var/azuracast/www/config/forms/remote.php:73
#: /var/azuracast/www/config/forms/remote.php:154
msgid "No"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:36
msgid "Fallback Mount"
#: /var/azuracast/www/config/forms/mount/generic.php:42
msgid "Set as Default Mount Point"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:37
msgid "If this mount point is not playing audio, listeners will automatically be redirected to this mount point. The default is /error.mp3, a repeating error message."
#: /var/azuracast/www/config/forms/mount/generic.php:43
msgid "If this mount is the default, it will be played on the radio preview and the public radio page in this system."
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:45
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:47
#: /var/azuracast/www/config/forms/mount/generic.php:53
msgid "Relay Stream URL"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:46
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:48
#: /var/azuracast/www/config/forms/mount/generic.php:54
msgid "Enter the full URL of another stream to relay its broadcast through this mount point."
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:54
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:56
#: /var/azuracast/www/config/forms/remote.php:132
msgid "Advertise to YP Directories (Public Station)"
#: /var/azuracast/www/config/forms/mount/generic.php:62
#: /var/azuracast/www/config/forms/remote.php:151
msgid "Publish to \"Yellow Pages\" Directories"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:55
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:57
#: /var/azuracast/www/config/forms/remote.php:133
msgid "Set to \"yes\" to advertise this stream on the YP public radio directories."
#: /var/azuracast/www/config/forms/mount/generic.php:63
#: /var/azuracast/www/config/forms/remote.php:152
msgid "Enable to advertise this mount point on \"Yellow Pages\" public radio directories."
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:64
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:77
#: /var/azuracast/www/config/forms/mount/generic.php:73
msgid "Enable AutoDJ"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:65
#: /var/azuracast/www/config/forms/mount/generic.php:74
msgid "If enabled, the AutoDJ will automatically play music to this mount point."
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:75
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:89
#: /var/azuracast/www/config/forms/remote.php:63
#: /var/azuracast/www/config/forms/mount/generic.php:84
#: /var/azuracast/www/config/forms/remote.php:82
msgid "Configure AutoDJ Broadcasting"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:82
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:96
#: /var/azuracast/www/config/forms/remote.php:69
#: /var/azuracast/www/config/forms/mount/generic.php:91
#: /var/azuracast/www/config/forms/remote.php:88
msgid "AutoDJ Format"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:96
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:108
#: /var/azuracast/www/config/forms/remote.php:82
#: /var/azuracast/www/config/forms/mount/generic.php:99
#: /var/azuracast/www/config/forms/remote.php:101
msgid "AutoDJ Bitrate (kbps)"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:116
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:127
#: /var/azuracast/www/config/forms/mount/generic.php:119
msgid "Advanced Configuration"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:122
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:133
#: /var/azuracast/www/config/forms/mount/generic.php:125
msgid "Custom Stream URL"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:124
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:135
#: /var/azuracast/www/config/forms/mount/generic.php:127
msgid "You can set a custom URL for this stream that AzuraCast will use when referring to it. Leave empty to use the default value."
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:131
msgid "Custom Frontend Configuration"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:133
msgid "You can include any special mount point settings here, in either JSON { key: 'value' } format or XML &lt;key&gt;value&lt;/key&gt;"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:147
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:149
#: /var/azuracast/www/config/forms/mount/generic.php:141
#: /var/azuracast/www/config/forms/custom_field.php:27
#: /var/azuracast/www/config/forms/playlist.php:367
#: /var/azuracast/www/config/forms/api_key.php:20
@ -1206,32 +1179,40 @@ msgstr ""
#: /var/azuracast/www/config/forms/webhook/discord.php:125
#: /var/azuracast/www/config/forms/station.php:441
#: /var/azuracast/www/config/forms/streamer.php:58
#: /var/azuracast/www/config/forms/remote.php:149
#: /var/azuracast/www/config/forms/remote.php:169
#: /var/azuracast/www/config/forms/song.php:47
#: /var/azuracast/www/config/forms/media.php:139
msgid "Save Changes"
msgstr ""
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:24
#: /var/azuracast/www/config/forms/mount/icecast.php:9
msgid "Fallback Mount"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:10
msgid "If this mount point is not playing audio, listeners will automatically be redirected to this mount point. The default is /error.mp3, a repeating error message."
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:26
msgid "Custom Frontend Configuration"
msgstr ""
#: /var/azuracast/www/config/forms/mount/icecast.php:28
msgid "You can include any special mount point settings here, in either JSON { key: 'value' } format or XML &lt;key&gt;value&lt;/key&gt;"
msgstr ""
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:11
msgid "Stream path cannot include reserved keywords: %s"
msgstr ""
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:36
msgid "Is Default Mount"
msgstr ""
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:67
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:21
msgid "YP Directory Authorization Hash"
msgstr ""
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:68
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:22
msgid "If your stream is set to advertise to YP directories above, you must specify an authorization hash. You can manage authhashes <a href=\"%s\" target=\"_blank\">on the SHOUTcast web site</a>."
msgstr ""
#: /var/azuracast/www/config/forms/mount/shoutcast2.php:78
msgid "If set to \"Yes\", the AutoDJ will automatically play music to this mount point."
msgstr ""
#: /var/azuracast/www/config/forms/station_clone.php:9
msgid "New Station Details"
msgstr ""
@ -1891,7 +1872,7 @@ msgstr ""
#: /var/azuracast/www/config/forms/station.php:82
#: /var/azuracast/www/templates/stations/profile/index.phtml:169
#: /var/azuracast/www/templates/stations/profile/index.phtml:185
#: /var/azuracast/www/templates/stations/mounts/index.phtml:46
#: /var/azuracast/www/templates/stations/mounts/index.phtml:48
#: /var/azuracast/www/templates/stations/remotes/index.phtml:43
#: /var/azuracast/www/templates/stations/playlists/index.phtml:91
#: /var/azuracast/www/templates/stations/webhooks/index.phtml:40
@ -1902,7 +1883,7 @@ msgstr ""
#: /var/azuracast/www/config/forms/automation.php:15
#: /var/azuracast/www/templates/stations/profile/index.phtml:162
#: /var/azuracast/www/templates/stations/profile/index.phtml:182
#: /var/azuracast/www/templates/stations/mounts/index.phtml:44
#: /var/azuracast/www/templates/stations/mounts/index.phtml:46
#: /var/azuracast/www/templates/stations/remotes/index.phtml:41
#: /var/azuracast/www/templates/frontend/profile/index.phtml:67
msgid "Enabled"
@ -2267,7 +2248,7 @@ msgstr ""
#: /var/azuracast/www/templates/stations/files/index.phtml:100
#: /var/azuracast/www/templates/stations/playlists/reorder.phtml:23
#: /var/azuracast/www/templates/stations/reports/performance.phtml:28
#: /var/azuracast/www/templates/frontend/public/index.phtml:76
#: /var/azuracast/www/templates/frontend/public/index.phtml:89
#: /var/azuracast/www/templates/frontend/public/dj.js.phtml:27
#: /var/azuracast/www/templates/frontend/public/embedrequests.phtml:20
msgid "Title"
@ -2632,63 +2613,71 @@ msgstr ""
msgid "Enable to allow this account to log in and stream."
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:13
#: /var/azuracast/www/config/forms/remote.php:14
msgid "The display name assigned to this relay when viewing it on administrative or public pages. Leave blank to automatically generate one."
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:22
msgid "Enable to allow listeners to select this relay on this station's public pages."
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:32
msgid "Remote Station Type"
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:26
#: /var/azuracast/www/config/forms/remote.php:45
msgid "Remote Station Listening URL"
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:27
#: /var/azuracast/www/config/forms/remote.php:46
msgid "Example: if the remote radio URL is %s, enter <code>%s</code>."
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:39
#: /var/azuracast/www/config/forms/remote.php:58
msgid "Remote Station Listening Mountpoint/SID"
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:40
#: /var/azuracast/www/config/forms/remote.php:59
msgid "Specify a mountpoint (i.e. <code>%s</code>) or a Shoutcast SID (i.e. <code>%s</code>) to specify a specific stream to use for statistics or broadcasting."
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:51
#: /var/azuracast/www/config/forms/remote.php:70
msgid "Broadcast AutoDJ to Remote Station"
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:52
msgid "If set to \"Yes\", the AutoDJ on this installation will automatically play music to this mount point."
#: /var/azuracast/www/config/forms/remote.php:71
msgid "If enabled, the AutoDJ on this installation will automatically play music to this mount point."
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:100
#: /var/azuracast/www/config/forms/remote.php:119
msgid "Remote Station Source Port"
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:101
#: /var/azuracast/www/config/forms/remote.php:120
msgid "If the port you broadcast to is different from the one you listed in the URL above, specify the source port here."
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:108
#: /var/azuracast/www/config/forms/remote.php:127
msgid "Remote Station Source Mountpoint/SID"
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:109
#: /var/azuracast/www/config/forms/remote.php:128
msgid "If the mountpoint (i.e. <code>/radio.mp3</code>) or Shoutcast SID (i.e. <code>2</code>) you broadcast to is different from the one listed above, specify the source mount point here."
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:116
#: /var/azuracast/www/config/forms/remote.php:135
msgid "Remote Station Source Username"
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:117
#: /var/azuracast/www/config/forms/remote.php:136
msgid "If you are broadcasting using AutoDJ, enter the source username here. This may be blank."
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:124
#: /var/azuracast/www/config/forms/remote.php:143
msgid "Remote Station Source Password"
msgstr ""
#: /var/azuracast/www/config/forms/remote.php:125
#: /var/azuracast/www/config/forms/remote.php:144
msgid "If you are broadcasting using AutoDJ, enter the source password here."
msgstr ""
@ -2894,7 +2883,7 @@ msgstr ""
#: /var/azuracast/www/templates/stations/reports/duplicates.phtml:24
#: /var/azuracast/www/templates/stations/reports/requests.phtml:28
#: /var/azuracast/www/templates/stations/queue/index.phtml:28
#: /var/azuracast/www/templates/frontend/public/index.phtml:79
#: /var/azuracast/www/templates/frontend/public/index.phtml:92
#: /var/azuracast/www/templates/frontend/public/embedrequests.phtml:23
msgid "Actions"
msgstr ""
@ -3023,10 +3012,6 @@ msgstr ""
msgid "Username"
msgstr ""
#: /var/azuracast/www/templates/stations/streamers/index.phtml:27
msgid "Display Name"
msgstr ""
#: /var/azuracast/www/templates/stations/streamers/index.phtml:28
msgid "Notes"
msgstr ""
@ -3117,9 +3102,9 @@ msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:167
#: /var/azuracast/www/templates/stations/profile/index.phtml:205
#: /var/azuracast/www/templates/stations/profile/index.phtml:306
#: /var/azuracast/www/templates/stations/profile/index.phtml:313
#: /var/azuracast/www/templates/stations/profile/index.phtml:321
#: /var/azuracast/www/templates/stations/profile/index.phtml:308
#: /var/azuracast/www/templates/stations/profile/index.phtml:315
#: /var/azuracast/www/templates/stations/profile/index.phtml:323
#: /var/azuracast/www/templates/frontend/api_keys/new_key.phtml:20
#: /var/azuracast/www/templates/frontend/profile/enable_two_factor.phtml:39
msgid "Copy to Clipboard"
@ -3159,74 +3144,74 @@ msgid "Local Streams"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:233
#: /var/azuracast/www/templates/stations/profile/index.phtml:254
#: /var/azuracast/www/templates/stations/profile/index.phtml:255
#: /var/azuracast/www/templates/frontend/index/index.phtml:81
#: /var/azuracast/www/templates/frontend/public/player_component.phtml:32
msgid "Play/Pause"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:269
#: /var/azuracast/www/templates/stations/profile/index.phtml:273
#: /var/azuracast/www/templates/stations/profile/index.phtml:271
#: /var/azuracast/www/templates/stations/profile/index.phtml:275
msgid "Download %s"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:284
#: /var/azuracast/www/templates/stations/profile/index.phtml:286
msgid "Icecast (Broadcasting Service)"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:286
#: /var/azuracast/www/templates/stations/profile/index.phtml:288
msgid "SHOUTcast DNAS 2 (Broadcasting Service)"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:289
#: /var/azuracast/www/templates/stations/profile/index.phtml:362
#: /var/azuracast/www/templates/stations/profile/index.phtml:291
#: /var/azuracast/www/templates/stations/profile/index.phtml:364
msgid "Loading..."
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:299
#: /var/azuracast/www/templates/stations/profile/index.phtml:301
msgid "Administration URL"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:303
#: /var/azuracast/www/templates/stations/profile/index.phtml:305
msgid "Administrator Password"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:310
#: /var/azuracast/www/templates/stations/profile/index.phtml:312
msgid "Source Password"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:318
#: /var/azuracast/www/templates/stations/profile/index.phtml:320
msgid "Relay Password"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:332
#: /var/azuracast/www/templates/stations/profile/index.phtml:377
#: /var/azuracast/www/templates/stations/profile/index.phtml:334
#: /var/azuracast/www/templates/stations/profile/index.phtml:379
msgid "Restart"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:336
#: /var/azuracast/www/templates/stations/profile/index.phtml:381
#: /var/azuracast/www/templates/stations/profile/index.phtml:338
#: /var/azuracast/www/templates/stations/profile/index.phtml:383
msgid "Start"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:340
#: /var/azuracast/www/templates/stations/profile/index.phtml:385
#: /var/azuracast/www/templates/stations/profile/index.phtml:342
#: /var/azuracast/www/templates/stations/profile/index.phtml:387
msgid "Stop"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:350
#: /var/azuracast/www/templates/stations/profile/index.phtml:352
msgid "AutoDJ Disabled"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:351
#: /var/azuracast/www/templates/stations/profile/index.phtml:353
msgid "AutoDJ has been disabled for this station. No music will automatically be played when a source is not live."
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:359
#: /var/azuracast/www/templates/stations/profile/index.phtml:361
msgid "Liquidsoap (AutoDJ Service)"
msgstr ""
#: /var/azuracast/www/templates/stations/profile/index.phtml:364
#: /var/azuracast/www/templates/stations/profile/index.phtml:366
msgid "LiquidSoap is currently shuffling from <b>%d uploaded songs</b> in <b>%d playlists</b>."
msgstr ""
@ -3275,7 +3260,7 @@ msgstr ""
msgid "Delete mount point \"%s\"?"
msgstr ""
#: /var/azuracast/www/templates/stations/mounts/index.phtml:39
#: /var/azuracast/www/templates/stations/mounts/index.phtml:40
msgid "Default Mount"
msgstr ""
@ -3318,7 +3303,7 @@ msgstr ""
#: /var/azuracast/www/templates/stations/files/index.phtml:101
#: /var/azuracast/www/templates/stations/playlists/reorder.phtml:24
#: /var/azuracast/www/templates/stations/reports/performance.phtml:29
#: /var/azuracast/www/templates/frontend/public/index.phtml:77
#: /var/azuracast/www/templates/frontend/public/index.phtml:90
#: /var/azuracast/www/templates/frontend/public/dj.js.phtml:28
#: /var/azuracast/www/templates/frontend/public/embedrequests.phtml:21
msgid "Artist"
@ -3326,7 +3311,7 @@ msgstr ""
#: /var/azuracast/www/templates/stations/files/index.phtml:102
#: /var/azuracast/www/templates/stations/playlists/reorder.phtml:25
#: /var/azuracast/www/templates/frontend/public/index.phtml:78
#: /var/azuracast/www/templates/frontend/public/index.phtml:91
#: /var/azuracast/www/templates/frontend/public/embedrequests.phtml:22
msgid "Album"
msgstr ""
@ -3876,16 +3861,16 @@ msgstr ""
msgid "To verify that the code was set up correctly, enter the 6-digit code the app shows you."
msgstr ""
#: /var/azuracast/www/templates/frontend/public/index.phtml:30
#: /var/azuracast/www/templates/frontend/public/index.phtml:48
#: /var/azuracast/www/templates/frontend/public/index.phtml:43
#: /var/azuracast/www/templates/frontend/public/index.phtml:61
msgid "Song History"
msgstr ""
#: /var/azuracast/www/templates/frontend/public/index.phtml:34
#: /var/azuracast/www/templates/frontend/public/index.phtml:47
msgid "Request Song"
msgstr ""
#: /var/azuracast/www/templates/frontend/public/index.phtml:67
#: /var/azuracast/www/templates/frontend/public/index.phtml:80
msgid "Request a Song"
msgstr ""
@ -3902,7 +3887,7 @@ msgid "Full Volume"
msgstr ""
#: /var/azuracast/www/templates/frontend/public/embedrequests.js.phtml:13
#: /var/azuracast/www/templates/frontend/public/index.js.phtml:59
#: /var/azuracast/www/templates/frontend/public/index.js.phtml:80
msgid "Request"
msgstr ""

View File

@ -34,14 +34,53 @@ class PublicController
$station = $request->getStation();
if (!$station->getEnablePublicPage()) {
throw new \Azura\Exception(__('Station not found!'));
throw new \App\Exception\StationNotFound;
}
$frontend_adapter = $request->getStationFrontend();
$frontend = $request->getStationFrontend();
// List all publicly available streams.
$current_stream = null;
$streams = [];
foreach ($station->getMounts() as $mount) {
/** @var Entity\StationMount $mount */
if ($mount->isVisibleOnPublicPages()) {
$stream = [
'name' => $mount->getDisplayName(),
'url' => (string)$frontend->getUrlForMount($station, $mount),
];
$streams[] = $stream;
if ($mount->getIsDefault()) {
$current_stream = $stream;
}
}
}
$remotes = $request->getStationRemotes();
foreach($remotes as $ra_proxy) {
$remote = $ra_proxy->getRemote();
if ($remote->isVisibleOnPublicPages()) {
$streams[] = [
'name' => $remote->getDisplayName(),
'url' => (string)$ra_proxy->getAdapter()->getPublicUrl($remote)
];
}
}
if (0 === count($streams)) {
throw new \App\Exception\StationUnsupported;
}
if (null === $current_stream) {
$current_stream = reset($streams);
}
return $request->getView()->renderToResponse($response, $template_name, $template_vars + [
'station' => $station,
'stream_url' => $frontend_adapter->getStreamUrl($station),
'streams' => $streams,
'current_stream' => $current_stream,
]);
}
@ -96,17 +135,17 @@ class PublicController
$station = $request->getStation();
if (!$station->getEnablePublicPage()) {
throw new \Azura\Exception(__('Station not found!'));
throw new \App\Exception\StationNotFound;
}
if (!$station->getEnableStreamers()) {
throw new \Azura\Exception(__('Live streaming is not enabled on this station.'));
throw new \App\Exception\StationUnsupported;
}
$backend = $request->getStationBackend();
if (!($backend instanceof Liquidsoap)) {
throw new \Azura\Exception(__('This station does not support live streaming.'));
throw new \App\Exception\StationUnsupported;
}
$wss_url = (string)$backend->getWebStreamingUrl($station, $request->getRouter()->getBaseUrl());

View File

@ -49,12 +49,24 @@ class ProfileController
$remotes = $request->getStationRemotes();
$stream_urls = [
'local' => $frontend->getStreamUrls($station),
'local' => [],
'remote' => [],
];
foreach ($station->getMounts() as $mount) {
$stream_urls['local'][] = [
$mount->getDisplayName(),
(string)$frontend->getUrlForMount($station, $mount),
];
}
foreach($remotes as $ra_proxy) {
$stream_urls['remote'][] = $ra_proxy->getAdapter()->getPublicUrl($ra_proxy->getRemote());
$remote = $ra_proxy->getRemote();
$stream_urls['remote'][] = [
$remote->getDisplayName(),
(string)$ra_proxy->getAdapter()->getPublicUrl($remote)
];
}
// Statistics about backend playback.

View File

@ -0,0 +1,33 @@
<?php declare(strict_types=1);
namespace App\Entity\Migration;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20190324040155 extends AbstractMigration
{
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('ALTER TABLE station_remotes ADD display_name VARCHAR(255) DEFAULT NULL, ADD is_visible_on_public_pages TINYINT(1) NOT NULL');
$this->addSql('ALTER TABLE station_mounts ADD display_name VARCHAR(255) DEFAULT NULL, ADD is_visible_on_public_pages TINYINT(1) NOT NULL');
$this->addSql('UPDATE station_remotes SET is_visible_on_public_pages=1');
$this->addSql('UPDATE station_mounts SET is_visible_on_public_pages=1');
}
public function down(Schema $schema) : void
{
// this down() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('ALTER TABLE station_mounts DROP display_name, DROP is_visible_on_public_pages');
$this->addSql('ALTER TABLE station_remotes DROP display_name, DROP is_visible_on_public_pages');
}
}

View File

@ -45,6 +45,18 @@ class StationMount implements StationMountInterface
*/
protected $name = '';
/**
* @ORM\Column(name="display_name", type="string", length=255, nullable=true)
* @var string|null
*/
protected $display_name;
/**
* @ORM\Column(name="is_visible_on_public_pages", type="boolean")
* @var bool
*/
protected $is_visible_on_public_pages = true;
/**
* @ORM\Column(name="is_default", type="boolean")
* @var bool
@ -143,6 +155,50 @@ class StationMount implements StationMountInterface
$this->name = $this->_truncateString('/' . ltrim($new_name, '/'), 100);
}
/**
* @return string
*/
public function getDisplayName(): string
{
if (!empty($this->display_name)) {
return $this->display_name;
}
if ($this->enable_autodj) {
return $this->autodj_bitrate.'kbps '.strtoupper($this->autodj_format);
}
return $this->name;
}
/**
* @param string|null $display_name
*/
public function setDisplayName(?string $display_name): void
{
$this->display_name = $this->_truncateString($display_name);
}
/**
* @return bool
*/
public function isVisibleOnPublicPages(): bool
{
if ($this->is_default) {
return true;
}
return $this->is_visible_on_public_pages;
}
/**
* @param bool $is_visible_on_public_pages
*/
public function setIsVisibleOnPublicPages(bool $is_visible_on_public_pages): void
{
$this->is_visible_on_public_pages = $is_visible_on_public_pages;
}
/**
* @return bool
*/

View File

@ -38,6 +38,18 @@ class StationRemote implements StationMountInterface
*/
protected $station;
/**
* @ORM\Column(name="display_name", type="string", length=255, nullable=true)
* @var string|null
*/
protected $display_name;
/**
* @ORM\Column(name="is_visible_on_public_pages", type="boolean")
* @var bool
*/
protected $is_visible_on_public_pages = true;
/**
* @ORM\Column(name="type", type="string", length=50)
* @var string
@ -131,6 +143,46 @@ class StationRemote implements StationMountInterface
return $this->station;
}
/**
* @return string
*/
public function getDisplayName(): string
{
if (!empty($this->display_name)) {
return $this->display_name;
}
if ($this->enable_autodj) {
return $this->autodj_bitrate.'kbps '.strtoupper($this->autodj_format);
}
return \App\Utilities::truncateUrl($this->url);
}
/**
* @param string|null $display_name
*/
public function setDisplayName(?string $display_name): void
{
$this->display_name = $this->_truncateString($display_name);
}
/**
* @return bool
*/
public function isVisibleOnPublicPages(): bool
{
return $this->is_visible_on_public_pages;
}
/**
* @param bool $is_visible_on_public_pages
*/
public function setIsVisibleOnPublicPages(bool $is_visible_on_public_pages): void
{
$this->is_visible_on_public_pages = $is_visible_on_public_pages;
}
/**
* @return string
*/

View File

@ -0,0 +1,18 @@
<?php
namespace App\Exception;
use Monolog\Logger;
class StationUnsupported extends \Azura\Exception
{
protected $logger_level = Logger::INFO;
public function __construct(string $message = '', int $code = 0, \Throwable $previous = null)
{
if (empty($message)) {
$message = 'This feature is not currently supported on this station.';
}
parent::__construct($message, $code, $previous);
}
}

View File

@ -16,7 +16,7 @@ $assets
<div class="stations nowplaying">
<?=$this->fetch('frontend/public/player_component', [
'stream_url' => $stream_url,
'current_stream' => $current_stream,
'autoplay' => $autoplay
]) ?>
</div>

View File

@ -1,12 +1,32 @@
$(function() {
// Handle multi-stream selection
$('#stream-selector a.dropdown-item').on('click', function(e) {
var stream_url = $(this).data('url');
var stream_name = $(this).text();
var main_play_btn = $('#main-play-btn');
var is_playing = main_play_btn.hasClass('playing');
stopAllPlayers();
$('#stream-selector button').text(stream_name);
main_play_btn.attr('data-url', stream_url).data('url', stream_url);
if (is_playing) {
handlePlayClick(stream_url);
}
});
// Song history Vue component
songHistory = new Vue({
el: '#station-history',
data: {
history: [
{
song: {
title: '<?= __('Song Title') ?>',
artist: '<?= __('Song Artist') ?>'
title: '<?=__('Song Title') ?>',
artist: '<?=__('Song Artist') ?>'
}
}
]
@ -39,6 +59,7 @@ $(function() {
buttons: ['close']
});
// Song request modal dialog component
var request_dialog = $('#modal-request');
request_dialog.on('show.bs.modal', function (event) {

View File

@ -18,10 +18,23 @@ $assets
<div class="public-page">
<div class="card">
<div class="card-body">
<?php if (count($streams) > 1): ?>
<div id="stream-selector" class="dropdown float-right">
<button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<?=$this->e($current_stream['name']) ?>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<?php foreach($streams as $stream_row): ?>
<a class="dropdown-item" href="javascript:;" data-url="<?=$this->e($stream_row['url']) ?>"><?=$this->e($stream_row['name']) ?></a>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
<h2 class="card-title"><?=$this->e($station->getName()) ?></h2>
<div class="stations nowplaying">
<?=$this->fetch('frontend/public/player_component', ['stream_url' => $stream_url, 'autoplay' => $autoplay]) ?>
<?=$this->fetch('frontend/public/player_component', ['current_stream' => $current_stream, 'autoplay' => $autoplay]) ?>
</div>
</div>

View File

@ -29,7 +29,7 @@ $assets->addInlineJs($this->fetch('frontend/public/player_component.js'), 95);
<div class="d-flex flex-row align-items-center mt-2 pt-1 border-top border-black-divider">
<div class="">
<a class="btn-audio" role="button" title="<?=__('Play/Pause') ?>" href="#" data-url="<?=$this->e($stream_url) ?>" <?php if ($autoplay): ?>data-autoplay="true"<?php endif; ?>>
<a id="main-play-btn" class="btn-audio" role="button" title="<?=__('Play/Pause') ?>" href="#" data-url="<?=$this->e($current_stream['url']) ?>" <?php if ($autoplay): ?>data-autoplay="true"<?php endif; ?>>
<i class="material-icons lg" style="line-height: 1">play_circle_filled</i>
</a>
</div>

View File

@ -34,10 +34,12 @@
<a class="btn btn-sm btn-danger" data-confirm-title="<?=$this->e(__('Delete mount point "%s"?', $row->getName())) ?>" href="<?=$router->named('stations:mounts:delete', ['station' => $station->getId(), 'id' => $row->getId(), 'csrf' => $csrf]) ?>"><?=__('Delete') ?></a>
</td>
<td>
<big><a href="<?=$this->e($frontend->getUrlForMount($station, $row)) ?>" target="_blank"><?=$this->e($row->getName()) ?></a></big>
<?php if ($row->getIsDefault()): ?>
<br><span class="label label-success"><?=__('Default Mount') ?></span>
<?php endif; ?>
<h5 class="m-0"><a href="<?=$this->e($frontend->getUrlForMount($station, $row)) ?>" target="_blank"><?=$this->e($row->getDisplayName()) ?></a></h5>
<div>
<?php if ($row->getIsDefault()): ?>
<span class="badge badge-success"><?=__('Default Mount') ?></span>
<?php endif; ?>
</div>
</td>
<td>
<?php if ($row->getEnableAutodj()): ?>

View File

@ -227,7 +227,7 @@ $user = $request->getUser();
</tr>
</thead>
<tbody>
<?php foreach($stream_urls['local'] as $stream_url): ?>
<?php foreach($stream_urls['local'] as [$stream_name, $stream_url]): ?>
<tr class="align-middle">
<td>
<a class="btn-audio" href="#" data-url="<?=$this->e((string)$stream_url) ?>" title="<?=__('Play/Pause') ?>">
@ -235,7 +235,8 @@ $user = $request->getUser();
</a>
</td>
<td>
<a href="<?=$this->e((string)$stream_url) ?>"><?=$this->e((string)$stream_url) ?></a>
<h6 class="mb-0"><?=$this->e($stream_name) ?></h6>
<a href="<?=$this->e($stream_url) ?>"><?=$this->truncateUrl($stream_url) ?></a>
</td>
</tr>
<?php endforeach; ?>
@ -248,7 +249,7 @@ $user = $request->getUser();
</tr>
</thead>
<tbody>
<?php foreach($stream_urls['remote'] as $stream_url): ?>
<?php foreach($stream_urls['remote'] as [$stream_name, $stream_url]): ?>
<tr class="align-middle">
<td>
<a class="btn-audio" href="#" data-url="<?=$this->e((string)$stream_url) ?>" title="<?=__('Play/Pause') ?>">
@ -256,7 +257,8 @@ $user = $request->getUser();
</a>
</td>
<td>
<a href="<?=$this->e((string)$stream_url) ?>"><?=$this->e((string)$stream_url) ?></a>
<h6 class="mb-0"><?=$this->e($stream_name) ?></h6>
<a href="<?=$this->e($stream_url) ?>"><?=$this->truncateUrl($stream_url) ?></a>
</td>
</tr>
<?php endforeach; ?>

View File

@ -34,7 +34,7 @@
<a class="btn btn-sm btn-danger" data-confirm-title="<?=$this->e(__('Delete remote relay "%s"?', $row->getUrl())) ?>" href="<?=$router->fromHere('stations:remotes:delete', ['id' => $row->getId(), 'csrf' => $csrf]) ?>"><?=__('Delete') ?></a>
</td>
<td>
<big><a href="<?=$this->e($row->getUrl()) ?>" target="_blank"><?=$this->e($row->getUrl()) ?></a> # <?=$row->getMount() ?></big>
<h5 class="m-0"><a href="<?=$this->e($row->getUrl()) ?>" target="_blank"><?=$this->e($row->getDisplayName()) ?></a></h5>
</td>
<td>
<?php if ($row->getEnableAutodj()): ?>