2020 */
2121function 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