Skip to content

Commit e6a4d58

Browse files
committed
Generate track data for shortcode builder.
1 parent ade7f91 commit e6a4d58

File tree

1 file changed

+113
-52
lines changed

1 file changed

+113
-52
lines changed

src/inc/generator.php

Lines changed: 113 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
*/
2121
function ableplayer_generate( $format = 'shortcode' ) {
2222
if ( isset( $_POST['generator'] ) ) {
23-
$nonce = $_POST['_wpnonce'];
23+
$nonce = sanitize_text_field( $_POST['_wpnonce'] );
2424
if ( ! wp_verify_nonce( $nonce, 'ableplayer-nonce' ) ) {
2525
wp_die( 'Invalid nonce' );
2626
}
@@ -36,17 +36,18 @@ function ableplayer_generate( $format = 'shortcode' ) {
3636
'type' => 'error',
3737
);
3838
}
39-
foreach ( $post as $key => $value ) {
39+
foreach ( $post as $key => $v ) {
4040
if ( in_array( $key, $keys, true ) ) {
41-
if ( is_array( $value ) ) {
42-
if ( in_array( 'all', $value, true ) ) {
43-
unset( $value[0] );
44-
}
45-
$v = implode( ',', $value );
46-
} else {
47-
$v = $value;
41+
if ( 'speed' === $key && $v === ableplayer_get_settings( 'default_speed' ) ) {
42+
continue;
43+
}
44+
if ( 'heading' === $key && $v === ableplayer_get_settings( 'default_heading' ) ) {
45+
continue;
4846
}
4947
if ( '' !== $v ) {
48+
if ( in_array( $key, array( 'captions', 'subtitles', 'descriptions', 'chapters' ), true ) ) {
49+
$v .= ableplayer_shortcode_track( $key, $post );
50+
}
5051
$array[ $key ] = $v;
5152
$string .= " $key="$v"";
5253
}
@@ -70,6 +71,37 @@ function ableplayer_generate( $format = 'shortcode' ) {
7071
}
7172
}
7273

74+
/**
75+
* Get the srclang and label for a shortcode track.
76+
*
77+
* @param string $kind Type of track.
78+
* @param array $post Array of data to test.
79+
*
80+
* @return string
81+
*/
82+
function ableplayer_shortcode_track( $kind, $post ) {
83+
// Handle track srclang and label.
84+
$default_lang = str_replace( '_', '-', get_locale() );
85+
$kinds = array(
86+
'captions' => __( 'Captions', 'ableplayer' ),
87+
'subtitles' => __( 'Subtitles', 'ableplayer' ),
88+
'description' => __( 'Description', 'ableplayer' ),
89+
'chapters' => __( 'Chapters', 'ableplayer' ),
90+
);
91+
92+
$v = '';
93+
$srclang = isset( $post[ $kind . '-srclang'] ) ? $post[ $kind . '-srclang'] : '';
94+
$label = isset( $post[ $kind . '-label'] ) ? $post[ $kind . '-label'] : '';
95+
if ( $srclang && $srclang !== $default_lang ) {
96+
$v .= '|' . $srclang;
97+
}
98+
if ( $label && $srclang !== $kinds['captions'] ) {
99+
$v .= '|' . $label;
100+
}
101+
102+
return $v;
103+
}
104+
73105
/**
74106
* Form to create a shortcode
75107
*
@@ -101,6 +133,13 @@ function ableplayer_generator_fields( $data ) {
101133
$shortcode = isset( $params['shortcode'] ) ? $params['shortcode'] : '[ableplayer]';
102134
$last_shortcode = ableplayer_get_settings( 'last_shortcode' );
103135
$shortcode = ( ! isset( $params['shortcode'] ) && $last_shortcode ) ? "[$last_shortcode]" : $shortcode;
136+
$default_lang = str_replace( '_', '-', get_locale() );
137+
$kinds = array(
138+
'captions' => __( 'Captions', 'ableplayer' ),
139+
'subtitles' => __( 'Subtitles', 'ableplayer' ),
140+
'description' => __( 'Description', 'ableplayer' ),
141+
'chapters' => __( 'Chapters', 'ableplayer' ),
142+
);
104143
?>
105144
<div id="ableplayer-generator" class="generator">
106145
<div class="ableplayer-generator-data">
@@ -193,99 +232,121 @@ function ableplayer_generator_fields( $data ) {
193232
<details>
194233
<summary><?php esc_html_e( 'Add Media Tracks', 'ableplayer' ); ?></summary>
195234
<div class="ableplayer-media-preview">
196-
<div><button type="button" class="button-secondary upload-ableplayer-media upload-captions" data-input="captions"><?php esc_html_e( 'Add Captions', 'ableplayer' ); ?></button></div>
197-
<div class="preview-captions"></div>
198-
<input type="hidden" name="captions" value="">
199-
<div class="ableplayer-track-details">
200-
<?php
201-
ableplayer_settings_field(
202-
array(
203-
'name' => 'captions-srclang',
204-
'label' => __( 'Language Code', 'ableplayer' ),
205-
'type' => 'text',
206-
),
207-
'generator'
208-
);
209-
ableplayer_settings_field(
210-
array(
211-
'name' => 'captions-label',
212-
'label' => __( 'Language Label', 'ableplayer' ),
213-
'type' => 'text',
214-
),
215-
'generator'
216-
);
217-
?>
235+
<div>
236+
<button type="button" class="button-secondary upload-ableplayer-media upload-captions" data-input="captions"><?php esc_html_e( 'Add Captions', 'ableplayer' ); ?></button>
237+
<button type="button" class="button-secondary ableplayer-remove-preview" data-input="captions"><?php esc_html_e( 'Remove', 'ableplayer' ); ?></button>
238+
</div>
239+
<div>
240+
<div class="preview-captions"></div>
241+
<input type="hidden" name="captions" value="">
242+
<div class="ableplayer-track-details">
243+
<?php
244+
ableplayer_settings_field(
245+
array(
246+
'name' => 'captions-srclang',
247+
'label' => __( 'Language Code', 'ableplayer' ),
248+
'type' => 'text',
249+
'default' => $default_lang,
250+
),
251+
'generator'
252+
);
253+
ableplayer_settings_field(
254+
array(
255+
'name' => 'captions-label',
256+
'label' => __( 'Captions Label', 'ableplayer' ),
257+
'type' => 'text',
258+
'default' => $kinds['captions'],
259+
),
260+
'generator'
261+
);
262+
?>
263+
</div>
218264
</div>
219265
</div>
220266
<div class="ableplayer-media-preview">
221-
<div><button type="button" class="button-secondary upload-ableplayer-media upload-subtitles" data-input="subtitles"><?php esc_html_e( 'Add Subtitles', 'ableplayer' ); ?></button></div>
267+
<div>
268+
<button type="button" class="button-secondary upload-ableplayer-media upload-subtitles" data-input="subtitles"><?php esc_html_e( 'Add Subtitles', 'ableplayer' ); ?></button>
269+
<button type="button" class="button-secondary ableplayer-remove-preview" data-input="subtitles"><?php esc_html_e( 'Remove', 'ableplayer' ); ?></button>
270+
</div>
222271
<div class="preview-subtitles"></div>
223272
<input type="hidden" name="subtitles" value="">
224273
<div class="ableplayer-track-details">
225274
<?php
226275
ableplayer_settings_field(
227276
array(
228-
'name' => 'subtitles-srclang',
229-
'label' => __( 'Language Code', 'ableplayer' ),
230-
'type' => 'text',
277+
'name' => 'subtitles-srclang',
278+
'label' => __( 'Language Code', 'ableplayer' ),
279+
'type' => 'text',
280+
'default' => $default_lang,
231281
),
232282
'generator'
233283
);
234284
ableplayer_settings_field(
235285
array(
236-
'name' => 'subtitles-label',
237-
'label' => __( 'Language Label', 'ableplayer' ),
238-
'type' => 'text',
286+
'name' => 'subtitles-label',
287+
'label' => __( 'Subtitles Label', 'ableplayer' ),
288+
'type' => 'text',
289+
'default' => $kinds['subtitles'],
239290
),
240291
'generator'
241292
);
242293
?>
243294
</div>
244295
</div>
245296
<div class="ableplayer-media-preview">
246-
<div><button type="button" class="button-secondary upload-ableplayer-media upload-descriptions" data-input="descriptions"><?php esc_html_e( 'Add Audio Description', 'ableplayer' ); ?></button></div>
297+
<div>
298+
<button type="button" class="button-secondary upload-ableplayer-media upload-descriptions" data-input="descriptions"><?php esc_html_e( 'Add Audio Description', 'ableplayer' ); ?></button>
299+
<button type="button" class="button-secondary ableplayer-remove-preview" data-input="descriptions"><?php esc_html_e( 'Remove', 'ableplayer' ); ?></button>
300+
</div>
247301
<div class="preview-descriptions"></div>
248302
<input type="hidden" name="descriptions" value="">
249303
<div class="ableplayer-track-details">
250304
<?php
251305
ableplayer_settings_field(
252306
array(
253-
'name' => 'descriptions-srclang',
254-
'label' => __( 'Language Code', 'ableplayer' ),
255-
'type' => 'text',
307+
'name' => 'descriptions-srclang',
308+
'label' => __( 'Language Code', 'ableplayer' ),
309+
'type' => 'text',
310+
'default' => $default_lang,
256311
),
257312
'generator'
258313
);
259314
ableplayer_settings_field(
260315
array(
261-
'name' => 'descriptions-label',
262-
'label' => __( 'Language Label', 'ableplayer' ),
263-
'type' => 'text',
316+
'name' => 'descriptions-label',
317+
'label' => __( 'Descriptions Label', 'ableplayer' ),
318+
'type' => 'text',
319+
'default' => $kinds['descriptions'],
264320
),
265321
'generator'
266322
);
267323
?>
268324
</div>
269325
</div>
270326
<div class="ableplayer-media-preview">
271-
<div><button type="button" class="button-secondary upload-ableplayer-media upload-chapters" data-input="chapters"><?php esc_html_e( 'Add Chapters', 'ableplayer' ); ?></button></div>
327+
<div>
328+
<button type="button" class="button-secondary upload-ableplayer-media upload-chapters" data-input="chapters"><?php esc_html_e( 'Add Chapters', 'ableplayer' ); ?></button>
329+
<button type="button" class="button-secondary ableplayer-remove-preview" data-input="chapters"><?php esc_html_e( 'Remove', 'ableplayer' ); ?></button>
330+
</div>
272331
<div class="preview-chapters"></div>
273332
<input type="hidden" name="chapters" value="">
274333
<div class="ableplayer-track-details">
275334
<?php
276335
ableplayer_settings_field(
277336
array(
278-
'name' => 'chapter-srclang',
279-
'label' => __( 'Language Code', 'ableplayer' ),
280-
'type' => 'text',
337+
'name' => 'chapter-srclang',
338+
'label' => __( 'Language Code', 'ableplayer' ),
339+
'type' => 'text',
340+
'default' => $default_lang,
281341
),
282342
'generator'
283343
);
284344
ableplayer_settings_field(
285345
array(
286-
'name' => 'chapter-label',
287-
'label' => __( 'Language Label', 'ableplayer' ),
288-
'type' => 'text',
346+
'name' => 'chapter-label',
347+
'label' => __( 'Chapters Label', 'ableplayer' ),
348+
'type' => 'text',
349+
'default' => $kinds['chapters'],
289350
),
290351
'generator'
291352
);

0 commit comments

Comments
 (0)