Soundy Background Music - Version 3.0

Version Description

  • After having upgraded Soundy to 3.0, please clear the cache of Soundy's admin pages in your browser. The reason is that a few CSS and Javascript files have been modified and these files are typically cached by browsers.
Download this release

Release Info

Developer bducouedic
Plugin Icon 128x128 Soundy Background Music
Version 3.0
Comparing to
See all releases

Code changes from version 2.7 to 3.0

css/style-back-end.css CHANGED
@@ -151,6 +151,53 @@ table.war_soundy_no_border td
151
  cursor: pointer;
152
  }
153
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  .war_comment
155
  {
156
  color: #2eaecc !important;
151
  cursor: pointer;
152
  }
153
 
154
+ .war_soundy_responsive_list li
155
+ {
156
+ margin: 0 3px 3px 3px;
157
+ padding: 0.4em;
158
+ padding-left: 1em;
159
+ cursor: ns-resize;
160
+ border: 1px solid #aaaaaa;
161
+ border-radius: 3px;
162
+ }
163
+
164
+ .war_soundy_responsive_list_field
165
+ {
166
+ display: inline-block;
167
+ width: 130px;
168
+ min-width: 130px;
169
+ }
170
+
171
+ .war_soundy_responsive_comment
172
+ {
173
+ display: inline-block;
174
+ width: 215px;
175
+ min-width: 215px;
176
+ border: 0px red solid;
177
+ }
178
+
179
+ .war_soundy_responsive_list_row_header
180
+ {
181
+ background: #cccccc !important;
182
+ cursor: auto !important;
183
+ font-weight: bold !important;
184
+ }
185
+
186
+ .war_soundy_responsive_list_row_footer
187
+ {
188
+ background: #cccccc !important;
189
+ cursor: auto !important;
190
+ font-weight: normal !important;
191
+ }
192
+
193
+ .war_soundy_responsive_sortable_placeholder
194
+ {
195
+ height: 1.5em;
196
+ line-height: 1.2em;
197
+ background: #ffffcc;
198
+ border: 1px solid #ffffcc;
199
+ }
200
+
201
  .war_comment
202
  {
203
  color: #2eaecc !important;
js/back-end.js CHANGED
@@ -78,6 +78,7 @@ war_SoundyAdmin.prototype.initSettingsTabs = function( args )
78
  _this.initImgPreviewInContextDefault();
79
  _this.initPlayPausePosition();
80
  _this.initLengthUnits();
 
81
  _this.initImgPreviewInContextPosition();
82
  _this.initSubmit();
83
  }
@@ -547,6 +548,140 @@ war_SoundyAdmin.prototype.initLengthUnits = function()
547
  } );
548
  }
549
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
550
  war_SoundyAdmin.prototype.initPlayPausePosition = function()
551
  {
552
  var _this = this;
78
  _this.initImgPreviewInContextDefault();
79
  _this.initPlayPausePosition();
80
  _this.initLengthUnits();
81
+ _this.initResponsiveTab();
82
  _this.initImgPreviewInContextPosition();
83
  _this.initSubmit();
84
  }
548
  } );
549
  }
550
 
551
+ war_SoundyAdmin.prototype.initResponsiveTab = function()
552
+ {
553
+ var _this = this;
554
+
555
+ var jquery_radio_responsive_mode = jQuery( 'input:radio[name=war_soundy_responsive_mode]' );
556
+ var jquery_responsive_table_row = jQuery( '#war_soundy_responsive_list').parent().parent();
557
+ var jquery_responsive_scale_row = jQuery( '#war_soundy_responsive_scale_reference_window_width').parent().parent();
558
+
559
+ var jquery_tr = jQuery( '#war_soundy_responsive_mode_table' ).parent().parent();
560
+ var th = jquery_tr.children( 'th' );
561
+ th.css( 'width', '10%' );
562
+
563
+ jquery_radio_responsive_mode.change
564
+ (
565
+ function()
566
+ {
567
+ var mode = jQuery( 'input:radio[name=war_soundy_responsive_mode]:checked' ).val();
568
+
569
+ if( mode == 'none' )
570
+ {
571
+ jquery_responsive_table_row.hide();
572
+ jquery_responsive_scale_row.hide();
573
+ }
574
+ else if( mode == 'table' )
575
+ {
576
+ jquery_responsive_table_row.show();
577
+ jquery_responsive_scale_row.hide();
578
+ }
579
+ else if( mode == 'scale' )
580
+ {
581
+ jquery_responsive_table_row.hide();
582
+ jquery_responsive_scale_row.show();
583
+ }
584
+ }
585
+ );
586
+
587
+ jquery_radio_responsive_mode.change();
588
+
589
+ var jquery_responsive_list = jQuery( '#war_soundy_responsive_list' );
590
+ jquery_responsive_list.sortable(
591
+ {
592
+ axis: 'y',
593
+ opacity: 1,
594
+ placeholder: 'war_soundy_responsive_sortable_placeholder'
595
+ } );
596
+ // jquery_responsive_list.disableSelection();
597
+
598
+ jQuery( '.war_soundy_responsive_input_field_integer' ).change
599
+ (
600
+ function()
601
+ {
602
+ this.value = this.value.trim();
603
+ if( /[^0-9]/.test( this.value ) && this.value != '' )
604
+ {
605
+ jQuery( this ).css( 'background-color', '#ffbbbb' );
606
+ jQuery( this ).focus();
607
+ var pos = jQuery( this ).offset();
608
+ jQuery( 'body' ).append( '<div id="war_soundy_error_temp">Error !</div>' );
609
+ _this.jquery_error_responsive_integer = jQuery( '#war_soundy_error_temp' );
610
+ _this.jquery_error_responsive_integer.css( 'position', 'absolute' );
611
+ _this.jquery_error_responsive_integer.css( 'top', pos.top + 4 );
612
+ _this.jquery_error_responsive_integer.css( 'left', pos.left - 40 );
613
+ _this.jquery_error_responsive_integer.css( 'color', 'red' );
614
+ }
615
+ else
616
+ {
617
+ jQuery( this ).css( 'background-color', '' );
618
+ if( _this.jquery_error_responsive_integer != undefined )
619
+ {
620
+ _this.jquery_error_responsive_integer.remove();
621
+ }
622
+ }
623
+ }
624
+ );
625
+
626
+ jQuery( '#war_soundy_responsive_scale_button_current_window_width' ).click
627
+ (
628
+ function()
629
+ {
630
+ var window_width = jQuery( window ).width();
631
+ var jquery_width = jQuery( '#war_soundy_responsive_scale_reference_window_width' );
632
+ jquery_width.val( window_width );
633
+ jquery_width.css( 'background-color', '#1e8cbe' );
634
+ jquery_width.animate(
635
+ {
636
+ backgroundColor: ''
637
+ }, 1000 );
638
+ }
639
+ );
640
+
641
+ jQuery( '#war_soundy_responsive_preview_window_width' ).change
642
+ (
643
+ function()
644
+ {
645
+ if( this.value > screen.width )
646
+ {
647
+ jQuery( this ).css( 'background-color', '#ffbbbb' );
648
+ jQuery( this ).focus();
649
+ var pos = jQuery( this ).offset();
650
+ jQuery( 'body' ).append( '<div id="war_soundy_responsive_error_temp_preview">' +
651
+ 'Error: Preview Window Width cannot be larger than current screen width (' + screen.width + ' px).</div>' );
652
+ _this.jquery_error_responsive_preview = jQuery( '#war_soundy_responsive_error_temp_preview' );
653
+ _this.jquery_error_responsive_preview.css( 'position', 'absolute' );
654
+ _this.jquery_error_responsive_preview.css( 'top', pos.top + 4 );
655
+ _this.jquery_error_responsive_preview.css( 'left', pos.left + 110 );
656
+ _this.jquery_error_responsive_preview.css( 'color', 'red' );
657
+ }
658
+ else
659
+ {
660
+ jQuery( this ).css( 'background-color', '' );
661
+ if( _this.jquery_error_responsive_preview != undefined )
662
+ {
663
+ _this.jquery_error_responsive_preview.remove();
664
+ }
665
+ }
666
+ }
667
+ );
668
+
669
+ jQuery( '#war_soundy_responsive_button_preview' ).click
670
+ (
671
+ function()
672
+ {
673
+ var window_width = jQuery( '#war_soundy_responsive_preview_window_width' ).val();
674
+ var window_left = Math.round( screen.width / 2 - window_width / 2 );
675
+ var window_top = Math.round( screen.height / 2 - window_width / 2 );
676
+ window_top = ( window_top < 0 ) ? 0 : window_top;
677
+ var page_url = jQuery( '#war_soundy_responsive_preview_url' ).val();
678
+ if( _this.window_responsive_preview != undefined ) _this.window_responsive_preview.close();
679
+ _this.window_responsive_preview = window.open( page_url, 'war_soundy_responsive_preview',
680
+ 'width=' + window_width + ',height=' + window_width + ',left=' + window_left + ',top=' + window_top );
681
+ }
682
+ );
683
+ }
684
+
685
  war_SoundyAdmin.prototype.initPlayPausePosition = function()
686
  {
687
  var _this = this;
js/front-end.js CHANGED
@@ -217,7 +217,7 @@ war_SoundyFrontEnd.prototype.initPPButton = function()
217
  } );
218
 
219
  _this.audio_player.bind( 'play' , function()
220
- {
221
  if( _this.hovering )
222
  {
223
  _this.audio_control.attr( 'src', _this.button_url_pause_hover );
@@ -242,4 +242,127 @@ war_SoundyFrontEnd.prototype.initPPButton = function()
242
  }
243
  }
244
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  }
217
  } );
218
 
219
  _this.audio_player.bind( 'play' , function()
220
+ {
221
  if( _this.hovering )
222
  {
223
  _this.audio_control.attr( 'src', _this.button_url_pause_hover );
242
  }
243
  }
244
  }
245
+
246
+ if( war_soundy_responsive_mode != 'none' )
247
+ {
248
+ var window_width = jQuery( window ).width();
249
+
250
+ switch( war_soundy_button_corner )
251
+ {
252
+ case 'upper_right':
253
+ default:
254
+ var prop_x = 'right';
255
+ var prop_y = 'top';
256
+ break;
257
+ case 'upper_left':
258
+ var prop_x = 'left';
259
+ var prop_y = 'top';
260
+ break;
261
+ case 'bottom_right':
262
+ var prop_x = 'right';
263
+ var prop_y = 'bottom';
264
+ break;
265
+ case 'bottom_left':
266
+ var prop_x = 'left';
267
+ var prop_y = 'bottom';
268
+ break;
269
+ }
270
+
271
+ if( war_soundy_responsive_mode == 'table' )
272
+ {
273
+ for( var index in war_soundy_responsive_table_rows )
274
+ {
275
+ var row = war_soundy_responsive_table_rows[ index ];
276
+ if( row.button_size != -1 )
277
+ {
278
+ if( row.window_width_min != -1 && row.window_width_max != -1 )
279
+ {
280
+ if( row.window_width_min <= window_width && window_width <= row.window_width_max )
281
+ {
282
+ jQuery( '.war_soundy_audio_control' ).css( 'width', row.button_size );
283
+ }
284
+ }
285
+ else if( row.window_width_min != -1 )
286
+ {
287
+ if( row.window_width_min <= window_width )
288
+ {
289
+ jQuery( '.war_soundy_audio_control' ).css( 'width', row.button_size );
290
+ }
291
+ }
292
+ else if( row.window_width_max != -1 )
293
+ {
294
+ if( window_width <= row.window_width_max )
295
+ {
296
+ jQuery( '.war_soundy_audio_control' ).css( 'width', row.button_size );
297
+ }
298
+ }
299
+ }
300
+ }
301
+
302
+ if( jQuery( '.war_soundy_audio_control.war_soundy_pp_corner' ).length )
303
+ {
304
+ for( var index in war_soundy_responsive_table_rows )
305
+ {
306
+ var row = war_soundy_responsive_table_rows[ index ];
307
+ if( row.offset_x != -1 || row.offset_y != -1 )
308
+ {
309
+ if( row.window_width_min != -1 && row.window_width_max != -1 )
310
+ {
311
+ if( row.window_width_min <= window_width && window_width <= row.window_width_max )
312
+ {
313
+ if( row.offset_x != -1 ) jQuery( '.war_soundy_audio_control.war_soundy_pp_corner' ).css( prop_x, row.offset_x );
314
+ if( row.offset_y != -1 ) jQuery( '.war_soundy_audio_control.war_soundy_pp_corner' ).css( prop_y, row.offset_y );
315
+ }
316
+ }
317
+ else if( row.window_width_min != -1 )
318
+ {
319
+ if( row.window_width_min <= window_width )
320
+ {
321
+ if( row.offset_x != -1 ) jQuery( '.war_soundy_audio_control.war_soundy_pp_corner' ).css( prop_x, row.offset_x );
322
+ if( row.offset_y != -1 ) jQuery( '.war_soundy_audio_control.war_soundy_pp_corner' ).css( prop_y, row.offset_y );
323
+ }
324
+ }
325
+ else if( row.window_width_max != -1 )
326
+ {
327
+ if( window_width <= row.window_width_max )
328
+ {
329
+ if( row.offset_x != -1 ) jQuery( '.war_soundy_audio_control.war_soundy_pp_corner' ).css( prop_x, row.offset_x );
330
+ if( row.offset_y != -1 ) jQuery( '.war_soundy_audio_control.war_soundy_pp_corner' ).css( prop_y, row.offset_y );
331
+ }
332
+ }
333
+ }
334
+ }
335
+ }
336
+ }
337
+ else // if( war_soundy_responsive_mode == 'scale' )
338
+ {
339
+ var scale_factor = ( window_width * 0.7 / war_soundy_responsive_reference_window_width ) + 0.3;
340
+
341
+ jQuery( '.war_soundy_audio_control' ).load
342
+ (
343
+ function()
344
+ {
345
+ var button_size = jQuery( this ).width();
346
+ var responsive_button_size = Math.round( button_size * scale_factor );
347
+ jQuery( this ).css( 'width', responsive_button_size );
348
+
349
+ var jquery_corner_button = jQuery( '.war_soundy_audio_control.war_soundy_pp_corner' );
350
+ if( jquery_corner_button.length )
351
+ {
352
+ var offset_x = jquery_corner_button.css( prop_x );
353
+ offset_x = offset_x.replace( 'px', '' );
354
+ var offset_y = jquery_corner_button.css( prop_y );
355
+ offset_y = offset_y.replace( 'px', '' );
356
+ var responsive_offset_x = Math.round( offset_x * scale_factor );
357
+ var responsive_offset_y = Math.round( offset_y * scale_factor );
358
+
359
+ jquery_corner_button.css( prop_x, responsive_offset_x );
360
+ jquery_corner_button.css( prop_y, responsive_offset_y );
361
+ }
362
+
363
+ jQuery( '.war_soundy_audio_control' ).unbind( 'load' );
364
+ }
365
+ );
366
+ }
367
+ }
368
  }
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: bducouedic
3
  Tags: audio, sound, music, background, soundtrack, background sound, background audio, background music, posts, pages
4
  Requires at least: 3.6
5
  Tested up to: 4.1
6
- Stable tag: 2.7
7
  License: GPL2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
  Donate link: http://webartisan.ch/en/products/soundy-background-music/free-wordpress-plugin/#wa_donate
@@ -38,6 +38,7 @@ A play and pause button image can be uploaded by the administrator to replace th
38
  * Default Play/Pause button images can be overriden by the site administrator. He can upload these images or just specify their URLs.
39
  * Full Control for the site administrator over Play/Pause button positioning.
40
  * Play/Pause Button Preview in the context of any page or post.
 
41
  * Audio Volume Control for site administrator as well as page/post authors.
42
  * Auto Play Option.
43
  * Audio Loop Option.
@@ -167,6 +168,9 @@ This happens when the PHP parser version is too old. Soundy needs PHP 5.3 or hig
167
 
168
  = Changelog =
169
 
 
 
 
170
  = 2.7 &nbsp;&nbsp; - &nbsp;&nbsp; December 20th, 2014 =
171
  * Fixed bug on the front-end appearing in themes using Ajax to reload only the content part of the pages when the visitor navigates on the website.
172
 
@@ -214,6 +218,9 @@ This happens when the PHP parser version is too old. Soundy needs PHP 5.3 or hig
214
 
215
  == Upgrade Notice ==
216
 
 
 
 
217
  = 2.4 =
218
  * **IMPORTANT**: After having upgraded Soundy Background Music to 2.4, please clear the cache of Soundy's admin pages in your browser as well as the cache of all front pages using the plugin. The reason is that a few CSS and Javascript files have been modified and these files are typically cached by browsers.
219
  * [**Soundy Audio Playlist Plugin**](http://wordpress.org/plugins/soundy-audio-playlist/) is now available.
3
  Tags: audio, sound, music, background, soundtrack, background sound, background audio, background music, posts, pages
4
  Requires at least: 3.6
5
  Tested up to: 4.1
6
+ Stable tag: 3.0
7
  License: GPL2
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
  Donate link: http://webartisan.ch/en/products/soundy-background-music/free-wordpress-plugin/#wa_donate
38
  * Default Play/Pause button images can be overriden by the site administrator. He can upload these images or just specify their URLs.
39
  * Full Control for the site administrator over Play/Pause button positioning.
40
  * Play/Pause Button Preview in the context of any page or post.
41
+ * Play/Pause Button size and positioning can be made responsive in the Play/Pause Responsiveness tab of the plugin settings page.
42
  * Audio Volume Control for site administrator as well as page/post authors.
43
  * Auto Play Option.
44
  * Audio Loop Option.
168
 
169
  = Changelog =
170
 
171
+ = 3.0 &nbsp;&nbsp; - &nbsp;&nbsp; January 3rd, 2015 =
172
+ * Play/Pause button size and corner positioning can now be made responsive in "Button Responsiveness" tab of plugin settings page.
173
+
174
  = 2.7 &nbsp;&nbsp; - &nbsp;&nbsp; December 20th, 2014 =
175
  * Fixed bug on the front-end appearing in themes using Ajax to reload only the content part of the pages when the visitor navigates on the website.
176
 
218
 
219
  == Upgrade Notice ==
220
 
221
+ = 3.0 =
222
+ * After having upgraded Soundy to 3.0, please clear the cache of Soundy's admin pages in your browser. The reason is that a few CSS and Javascript files have been modified and these files are typically cached by browsers.
223
+
224
  = 2.4 =
225
  * **IMPORTANT**: After having upgraded Soundy Background Music to 2.4, please clear the cache of Soundy's admin pages in your browser as well as the cache of all front pages using the plugin. The reason is that a few CSS and Javascript files have been modified and these files are typically cached by browsers.
226
  * [**Soundy Audio Playlist Plugin**](http://wordpress.org/plugins/soundy-audio-playlist/) is now available.
soundy.php CHANGED
@@ -1,13 +1,13 @@
1
  <?php
2
  /**
3
  * @package Soundy_Background_Music
4
- * @version 2.6
5
  */
6
  /*
7
  Plugin Name: Soundy Background Music
8
  Plugin URI: http://www.webartisan.ch/en/products/soundy-background-music/free-wordpress-plugin/
9
  Description: This plugin allows administrators and authors to set a background sound on any post or page.
10
- Version: 2.7
11
  Author: Bertrand du Couédic
12
  Author URI: http://webartisan.ch/en/about
13
  License: GPL2
@@ -31,7 +31,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
31
  class WarSoundy
32
  {
33
  public $soundy_type = 'free';
34
- public $soundy_version = '2.7';
35
  public $soundy_free_wp_home_url = 'http://wordpress.org/plugins/soundy-background-music/';
36
  public $sdy_pl_free_wp_home_url = 'http://wordpress.org/plugins/soundy-audio-playlist/';
37
  public $soundy_pro_home_url = 'http://webartisan.ch/products/soundy-background-music/pro-wordpress-plugin/';
@@ -56,9 +56,11 @@ class WarSoundy
56
  public $pause_hover_url = '/images/buttons/48x48/pause-square-blue.png';
57
  public $button_dimensions = '48x48';
58
  public $page_preview_url = '';
 
 
 
59
  public $user_agent_is_mobile;
60
  public $post_id;
61
-
62
  public $plugin_name;
63
  public $plugin_url;
64
  public $plugin_path;
@@ -149,6 +151,8 @@ class WarSoundy
149
  {
150
  update_option( 'war_soundy_enable_pp_corner', 'yes' );
151
  }
 
 
152
  }
153
  }
154
 
@@ -210,12 +214,83 @@ class WarSoundy
210
  $audio_url = get_option( 'war_soundy_audio_file_url' );
211
  $audio_url = str_replace( 'soundy-music-pro', 'soundy-background-music', $audio_url );
212
  update_option( 'war_soundy_audio_file_url', $audio_url );
 
 
213
  }
214
 
215
  public function deactivate()
216
  {
217
  }
218
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  public function add_plugin_settings_menu()
220
  {
221
  $html_page_title = 'Soundy Background Music';
@@ -251,6 +326,8 @@ class WarSoundy
251
  wp_enqueue_script( 'jquery-ui-mouse' );
252
  wp_enqueue_script( 'jquery-ui-tabs' );
253
  wp_enqueue_script( 'jquery-ui-slider' );
 
 
254
 
255
  wp_enqueue_script( 'soundy-jquery-form' );
256
  wp_enqueue_script( 'soundy-back-end' );
@@ -361,6 +438,7 @@ class WarSoundy
361
  $this->add_settings_section_audio_track();
362
  $this->add_settings_section_play_pause_button();
363
  $this->add_settings_section_play_pause_position_corner();
 
364
  $this->add_settings_section_play_pause_position_static();
365
  }
366
 
@@ -581,7 +659,7 @@ class WarSoundy
581
  'war_soundy_settings_section_play_pause_position_corner'
582
  );
583
 
584
- add_settings_field(
585
  'war_soundy_preview_in_context_position',
586
  'Preview in Context',
587
  array( $this, 'add_settings_field_preview_in_context_position' ),
@@ -589,8 +667,61 @@ class WarSoundy
589
  'war_soundy_settings_section_play_pause_position_corner'
590
  );
591
  }
592
-
593
- public function add_settings_section_play_pause_position_static()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
594
  {
595
  add_settings_section(
596
  'war_soundy_settings_section_play_pause_position_static',
@@ -631,12 +762,179 @@ class WarSoundy
631
  echo 'In this tab you can position the play/pause button in any corner of the page/post window or document.';
632
  }
633
 
 
 
 
 
 
634
  public function display_settings_section_play_pause_position_static_header()
635
  {
636
  echo '';
637
  }
638
 
639
- public function add_settings_field_enable_bg_sound( $args )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
640
  {
641
  ?>
642
  <input type="checkbox"
1
  <?php
2
  /**
3
  * @package Soundy_Background_Music
4
+ * @version 3.0
5
  */
6
  /*
7
  Plugin Name: Soundy Background Music
8
  Plugin URI: http://www.webartisan.ch/en/products/soundy-background-music/free-wordpress-plugin/
9
  Description: This plugin allows administrators and authors to set a background sound on any post or page.
10
+ Version: 3.0
11
  Author: Bertrand du Couédic
12
  Author URI: http://webartisan.ch/en/about
13
  License: GPL2
31
  class WarSoundy
32
  {
33
  public $soundy_type = 'free';
34
+ public $soundy_version = '3.0';
35
  public $soundy_free_wp_home_url = 'http://wordpress.org/plugins/soundy-background-music/';
36
  public $sdy_pl_free_wp_home_url = 'http://wordpress.org/plugins/soundy-audio-playlist/';
37
  public $soundy_pro_home_url = 'http://webartisan.ch/products/soundy-background-music/pro-wordpress-plugin/';
56
  public $pause_hover_url = '/images/buttons/48x48/pause-square-blue.png';
57
  public $button_dimensions = '48x48';
58
  public $page_preview_url = '';
59
+ public $responsive_table_number_of_rows = 10;
60
+ public $responsive_scale_reference_window_width = 2048;
61
+
62
  public $user_agent_is_mobile;
63
  public $post_id;
 
64
  public $plugin_name;
65
  public $plugin_url;
66
  public $plugin_path;
151
  {
152
  update_option( 'war_soundy_enable_pp_corner', 'yes' );
153
  }
154
+
155
+ $this->initResponsive();
156
  }
157
  }
158
 
214
  $audio_url = get_option( 'war_soundy_audio_file_url' );
215
  $audio_url = str_replace( 'soundy-music-pro', 'soundy-background-music', $audio_url );
216
  update_option( 'war_soundy_audio_file_url', $audio_url );
217
+
218
+ $this->initResponsive();
219
  }
220
 
221
  public function deactivate()
222
  {
223
  }
224
 
225
+ public function initResponsive()
226
+ {
227
+ add_option( 'war_soundy_responsive_scale_reference_window_width', $this->responsive_scale_reference_window_width );
228
+
229
+ $table_rows = array(
230
+ array(
231
+ 'comment' => 'Low Res. Mobile',
232
+ 'window_width_min' => '',
233
+ 'window_width_max' => 400,
234
+ 'button_size' => 20,
235
+ 'offset_x' => 20,
236
+ 'offset_y' => 20
237
+ ),
238
+ array(
239
+ 'comment' => 'Medium Res. Mobile',
240
+ 'window_width_min' => 401,
241
+ 'window_width_max' => 800,
242
+ 'button_size' => 25,
243
+ 'offset_x' => 25,
244
+ 'offset_y' => 25
245
+ ),
246
+ array(
247
+ 'comment' => 'High Res. Mobile',
248
+ 'window_width_min' => 801,
249
+ 'window_width_max' => 1200,
250
+ 'button_size' => 30,
251
+ 'offset_x' => 30,
252
+ 'offset_y' => 30
253
+ ),
254
+ array(
255
+ 'comment' => 'Low Res. Screen',
256
+ 'window_width_min' => 1201,
257
+ 'window_width_max' => 1600,
258
+ 'button_size' => 35,
259
+ 'offset_x' => 35,
260
+ 'offset_y' => 35
261
+ ),
262
+ array(
263
+ 'comment' => 'Medium Res. Screen',
264
+ 'window_width_min' => 1601,
265
+ 'window_width_max' => 2000,
266
+ 'button_size' => 40,
267
+ 'offset_x' => 40,
268
+ 'offset_y' => 40
269
+ ),
270
+ array(
271
+ 'comment' => 'High Res. Screen',
272
+ 'window_width_min' => 2001,
273
+ 'window_width_max' => '',
274
+ 'button_size' => 50,
275
+ 'offset_x' => 50,
276
+ 'offset_y' => 50
277
+ )
278
+ );
279
+
280
+ for( $i = 0; $i < count( $table_rows ); $i++ )
281
+ {
282
+ $index = $i + 1;
283
+ $row = $table_rows[ $i ];
284
+
285
+ add_option( 'war_soundy_responsive_comment_' . $index, $row[ 'comment' ] );
286
+ add_option( 'war_soundy_responsive_window_width_min_' . $index, $row[ 'window_width_min' ] );
287
+ add_option( 'war_soundy_responsive_window_width_max_' . $index, $row[ 'window_width_max' ] );
288
+ add_option( 'war_soundy_responsive_button_size_' . $index, $row[ 'button_size' ] );
289
+ add_option( 'war_soundy_responsive_offset_x_' . $index, $row[ 'offset_x' ] );
290
+ add_option( 'war_soundy_responsive_offset_y_' . $index, $row[ 'offset_y' ] );
291
+ }
292
+ }
293
+
294
  public function add_plugin_settings_menu()
295
  {
296
  $html_page_title = 'Soundy Background Music';
326
  wp_enqueue_script( 'jquery-ui-mouse' );
327
  wp_enqueue_script( 'jquery-ui-tabs' );
328
  wp_enqueue_script( 'jquery-ui-slider' );
329
+ wp_enqueue_script( 'jquery-ui-sortable' );
330
+ wp_enqueue_script( 'jquery-effects-core' );
331
 
332
  wp_enqueue_script( 'soundy-jquery-form' );
333
  wp_enqueue_script( 'soundy-back-end' );
438
  $this->add_settings_section_audio_track();
439
  $this->add_settings_section_play_pause_button();
440
  $this->add_settings_section_play_pause_position_corner();
441
+ $this->add_settings_section_play_pause_responsive();
442
  $this->add_settings_section_play_pause_position_static();
443
  }
444
 
659
  'war_soundy_settings_section_play_pause_position_corner'
660
  );
661
 
662
+ add_settings_field(
663
  'war_soundy_preview_in_context_position',
664
  'Preview in Context',
665
  array( $this, 'add_settings_field_preview_in_context_position' ),
667
  'war_soundy_settings_section_play_pause_position_corner'
668
  );
669
  }
670
+
671
+ public function add_settings_section_play_pause_responsive()
672
+ {
673
+ add_settings_section(
674
+ 'war_soundy_settings_section_play_pause_responsive',
675
+ 'Play/Pause Button Responsiveness',
676
+ array( $this, 'display_settings_section_play_pause_responsive_header' ),
677
+ 'soundy'
678
+ );
679
+
680
+ register_setting( 'war_soundy', 'war_soundy_responsive_mode' );
681
+ add_settings_field(
682
+ 'war_soundy_responsive_mode',
683
+ 'Responsive Mode',
684
+ array( $this, 'add_settings_field_responsive_mode' ),
685
+ 'soundy',
686
+ 'war_soundy_settings_section_play_pause_responsive'
687
+ );
688
+
689
+ for( $i = 1; $i <= $this->responsive_table_number_of_rows; $i++ )
690
+ {
691
+ register_setting( 'war_soundy', 'war_soundy_responsive_comment_' . $i, array( $this, 'do_sanitize_field' ) );
692
+ register_setting( 'war_soundy', 'war_soundy_responsive_window_width_min_' . $i );
693
+ register_setting( 'war_soundy', 'war_soundy_responsive_window_width_max_' . $i );
694
+ register_setting( 'war_soundy', 'war_soundy_responsive_button_size_' . $i );
695
+ register_setting( 'war_soundy', 'war_soundy_responsive_offset_x_' . $i );
696
+ register_setting( 'war_soundy', 'war_soundy_responsive_offset_y_' . $i );
697
+ }
698
+ add_settings_field(
699
+ 'war_soundy_responsive_table',
700
+ 'Table Driven Mode',
701
+ array( $this, 'add_settings_field_responsive_table' ),
702
+ 'soundy',
703
+ 'war_soundy_settings_section_play_pause_responsive'
704
+ );
705
+
706
+ register_setting( 'war_soundy', 'war_soundy_responsive_scale_reference_window_width' );
707
+ add_settings_field(
708
+ 'war_soundy_responsive_scale_reference_window_width',
709
+ 'Scale Driven Mode',
710
+ array( $this, 'add_settings_field_responsive_scale' ),
711
+ 'soundy',
712
+ 'war_soundy_settings_section_play_pause_responsive'
713
+ );
714
+
715
+ add_settings_field(
716
+ 'war_soundy_responsive_preview',
717
+ 'Preview',
718
+ array( $this, 'add_settings_field_responsive_preview' ),
719
+ 'soundy',
720
+ 'war_soundy_settings_section_play_pause_responsive'
721
+ );
722
+ }
723
+
724
+ public function add_settings_section_play_pause_position_static()
725
  {
726
  add_settings_section(
727
  'war_soundy_settings_section_play_pause_position_static',
762
  echo 'In this tab you can position the play/pause button in any corner of the page/post window or document.';
763
  }
764
 
765
+ public function display_settings_section_play_pause_responsive_header()
766
+ {
767
+ echo 'In this tab you can control the responsiveness of the Play/Pause button.';
768
+ }
769
+
770
  public function display_settings_section_play_pause_position_static_header()
771
  {
772
  echo '';
773
  }
774
 
775
+ public function add_settings_field_responsive_mode( $args )
776
+ {
777
+ $responsive_mode = get_option( 'war_soundy_responsive_mode' );
778
+ $responsive_mode = $responsive_mode ? $responsive_mode : 'none';
779
+ ?>
780
+ <input type="radio"
781
+ id="war_soundy_responsive_mode_none"
782
+ name="war_soundy_responsive_mode"
783
+ value="none"
784
+ style="margin: 5px 0 5px 0;" <?php echo ( $responsive_mode == 'none' ? 'checked' : '' ); ?>/>
785
+ <label for="war_soundy_responsive_mode_none"
786
+ style="margin-top: 0;">No Responsiveness</label>
787
+ <br>
788
+ <input type="radio"
789
+ id="war_soundy_responsive_mode_table"
790
+ name="war_soundy_responsive_mode"
791
+ value="table"
792
+ style="margin: 5px 0 5px 0;" <?php echo ( $responsive_mode == 'table' ? 'checked' : '' ); ?>/>
793
+ <label for="war_soundy_responsive_mode_table"
794
+ style="margin-top: 0;">Table Driven Responsive Mode</label>
795
+ <br>
796
+ <input type="radio"
797
+ id="war_soundy_responsive_mode_scale"
798
+ name="war_soundy_responsive_mode"
799
+ value="scale"
800
+ style="margin: 5px 0 5px 0;" <?php echo ( $responsive_mode == 'scale' ? 'checked' : '' ); ?>/>
801
+ <label for="war_soundy_responsive_mode_scale"
802
+ style="margin-top: 0;">Scale Driven Responsive Mode</label>
803
+ <?php
804
+ }
805
+
806
+ public function add_settings_field_responsive_table( $args )
807
+ {
808
+ $responsive_mode = get_option( 'war_soundy_responsive_table' );
809
+ $responsive_mode = $responsive_mode ? $responsive_mode : 'none';
810
+ ?>
811
+ <span class="war_comment">You can define window width ranges with corresponding button width/height and offsets.<br>
812
+ Button X and Y Offset Fields are used only for Play/Pause button positioned in a corner.<br>
813
+ Button Width/Height Field is used for all Play/Pause buttons.</span>
814
+ <ul class="war_soundy_responsive_list">
815
+ <li class="war_soundy_responsive_list_row_header">
816
+ <div class="war_soundy_responsive_comment">Comment</div>
817
+ <div class="war_soundy_responsive_list_field">From<br>Window<br>Width</div>
818
+ <div class="war_soundy_responsive_list_field">To<br>Window<br>Width</div>
819
+ <div class="war_soundy_responsive_list_field">Button<br>Width/<br>Height</div>
820
+ <div class="war_soundy_responsive_list_field">Button<br>X<br>Offset</div>
821
+ <div class="war_soundy_responsive_list_field">Button<br>Y<br>Offset</div>
822
+ </li>
823
+ </ul>
824
+ <ul id="war_soundy_responsive_list"
825
+ class="war_soundy_responsive_list">
826
+ <?php
827
+ for( $i = 1; $i <= $this->responsive_table_number_of_rows; $i++ )
828
+ {
829
+ ?>
830
+ <li>
831
+ <div class="war_soundy_responsive_comment">
832
+ <input type="text"
833
+ name="war_soundy_responsive_comment_<?php echo $i; ?>"
834
+ id="war_soundy_responsive_comment_<?php echo $i; ?>"
835
+ value="<?php echo get_option( 'war_soundy_responsive_comment_' . $i ); ?>"
836
+ size="20" />
837
+ </div>
838
+ <div class="war_soundy_responsive_list_field">
839
+ <input type="text"
840
+ class="war_soundy_responsive_input_field_integer"
841
+ name="war_soundy_responsive_window_width_min_<?php echo $i; ?>"
842
+ id="war_soundy_responsive_window_width_min_<?php echo $i; ?>"
843
+ value="<?php echo get_option( 'war_soundy_responsive_window_width_min_' . $i ); ?>"
844
+ size="4" /> px
845
+ </div>
846
+ <div class="war_soundy_responsive_list_field">
847
+ <input type="text"
848
+ class="war_soundy_responsive_input_field_integer"
849
+ name="war_soundy_responsive_window_width_max_<?php echo $i; ?>"
850
+ id="war_soundy_responsive_window_width_max_<?php echo $i; ?>"
851
+ value="<?php echo get_option( 'war_soundy_responsive_window_width_max_' . $i ); ?>"
852
+ size="4" /> px
853
+ </div>
854
+ <div class="war_soundy_responsive_list_field">
855
+ <input type="text"
856
+ class="war_soundy_responsive_input_field_integer"
857
+ name="war_soundy_responsive_button_size_<?php echo $i; ?>"
858
+ id="war_soundy_responsive_button_size_<?php echo $i; ?>"
859
+ value="<?php echo get_option( 'war_soundy_responsive_button_size_' . $i ); ?>"
860
+ size="4" /> px
861
+ </div>
862
+ <div class="war_soundy_responsive_list_field">
863
+ <input type="text"
864
+ class="war_soundy_responsive_input_field_integer"
865
+ name="war_soundy_responsive_offset_x_<?php echo $i; ?>"
866
+ id="war_soundy_responsive_offset_x_<?php echo $i; ?>"
867
+ value="<?php echo get_option( 'war_soundy_responsive_offset_x_' . $i ); ?>"
868
+ size="4" /> px
869
+ </div>
870
+ <div class="war_soundy_responsive_list_field">
871
+ <input type="text"
872
+ class="war_soundy_responsive_input_field_integer"
873
+ name="war_soundy_responsive_offset_y_<?php echo $i; ?>"
874
+ id="war_soundy_responsive_offset_y_<?php echo $i; ?>"
875
+ value="<?php echo get_option( 'war_soundy_responsive_offset_y_' . $i ); ?>"
876
+ size="4" /> px
877
+ </div>
878
+ </li>
879
+ <?php
880
+ }
881
+ ?>
882
+ </ul>
883
+ <ul class="war_soundy_responsive_list">
884
+ <li class="war_soundy_responsive_list_row_footer">
885
+ <span style="font-size: 1em;">
886
+ <span id="war_comment" style="margin-left: 1%;">You can change the order of the rows with drag & drop.</span>
887
+ </span>
888
+ </li>
889
+ </ul>
890
+ <?php
891
+ }
892
+
893
+ public function add_settings_field_responsive_scale( $args )
894
+ {
895
+ ?>
896
+ <div class="war_comment" style="margin-bottom: 6px;">Play/Pause button width, height and offsets are scaled according to window width.<br>
897
+ The Reference Window Width is the window width for which the scale factor is 1.</div>
898
+ <div style="font-weight: bold;">Reference Window Width:</div>
899
+ <input id="war_soundy_responsive_scale_reference_window_width"
900
+ name="war_soundy_responsive_scale_reference_window_width"
901
+ class="war_soundy_responsive_input_field_integer"
902
+ value="<?php echo get_option( 'war_soundy_responsive_scale_reference_window_width' ); ?>"
903
+ size="4"
904
+ style="margin-top: 3px; margin-bottom: 3px;" /> px<br>
905
+ <button id="war_soundy_responsive_scale_button_current_window_width"
906
+ type="button"
907
+ class="war_soundy"
908
+ style="margin-top: 3px; margin-bottom: 3px;" />Insert Current Window Width</button>
909
+ <?php
910
+ }
911
+
912
+ public function add_settings_field_responsive_preview( $args )
913
+ {
914
+ ?>
915
+ <div class="war_comment" style="margin-bottom: 6px;">IMPORTANT: You must save your changes before using Preview.</div>
916
+ <div style="font-weight: bold;">Preview Window Width:</div>
917
+ <input id="war_soundy_responsive_preview_window_width"
918
+ class="war_soundy_responsive_input_field_integer"
919
+ value=""
920
+ size="4"
921
+ style="margin-top: 3px; margin-bottom: 3px;" /> px
922
+ <div style="margin-top: 3px; margin-bottom: 3px;">
923
+ <div style="font-weight: bold;">Page:</div>
924
+ <select id="war_soundy_responsive_preview_url"
925
+ class="war_soundy_page_preview_url"
926
+ style="margin-top: 3px; margin-bottom: 3px;">
927
+ <?php $this->add_page_preview_url_options() ?>
928
+ </select>
929
+ </div>
930
+ <button id="war_soundy_responsive_button_preview"
931
+ type="button"
932
+ class="war_soundy"
933
+ style="margin-top: 3px; margin-bottom: 3px;" />Preview</button>
934
+ <?php
935
+ }
936
+
937
+ public function add_settings_field_enable_bg_sound( $args )
938
  {
939
  ?>
940
  <input type="checkbox"
templates/front-end.php CHANGED
@@ -89,6 +89,43 @@ class WarSoundyFrontEnd
89
 
90
  $pp_code = str_replace( array( "\n", "\r" ), ' ', $pp_code );
91
  $audio_code = str_replace( array( "\n", "\r" ), ' ', $audio_code );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  ?>
93
  <link rel="prefetch" href="<?php echo $audio_file_url; ?>">
94
  <link rel="prefetch" href="<?php echo $this->button_url_play; ?>">
@@ -108,6 +145,26 @@ class WarSoundyFrontEnd
108
  button_url_pause_hover: '<?php echo $this->hover_url_pause; ?>',
109
  user_agent_is_IOS: <?php echo $this->user_agent_is_IOS() ?>
110
  } );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  </script>
112
  <?php
113
  }
89
 
90
  $pp_code = str_replace( array( "\n", "\r" ), ' ', $pp_code );
91
  $audio_code = str_replace( array( "\n", "\r" ), ' ', $audio_code );
92
+
93
+ $responsive_mode = get_option( 'war_soundy_responsive_mode' );
94
+ if( $responsive_mode != 'none' )
95
+ {
96
+ if( $responsive_mode == 'table' )
97
+ {
98
+ $responsive_table_rows = array();
99
+ for( $i = 1; $i <= $this->soundy->responsive_table_number_of_rows; $i++ )
100
+ {
101
+ $window_width_min = get_option( 'war_soundy_responsive_window_width_min_' . $i );
102
+ $window_width_min = ( $window_width_min == '' ) ? -1 : $window_width_min;
103
+ $window_width_max = get_option( 'war_soundy_responsive_window_width_max_' . $i );
104
+ $window_width_max = ( $window_width_max == '' ) ? -1 : $window_width_max;
105
+
106
+ if( $window_width_min != -1 || $window_width_max != -1 )
107
+ {
108
+ $button_size = get_option( 'war_soundy_responsive_button_size_' . $i );
109
+ $button_size = ( $button_size == '' ) ? -1 : $button_size;
110
+ $offset_x = get_option( 'war_soundy_responsive_offset_x_' . $i );
111
+ $offset_x = ( $offset_x == '' ) ? -1 : $offset_x;
112
+ $offset_y = get_option( 'war_soundy_responsive_offset_y_' . $i );
113
+ $offset_y = ( $offset_y == '' ) ? -1 : $offset_y;
114
+ $responsive_table_rows[] = '{ ' .
115
+ 'window_width_min: ' . $window_width_min . ',' .
116
+ 'window_width_max: ' . $window_width_max . ',' .
117
+ 'button_size: ' . $button_size . ',' .
118
+ 'offset_x: ' . $offset_x . ',' .
119
+ 'offset_y: ' . $offset_y .
120
+ '}';
121
+ }
122
+ }
123
+ }
124
+ else // if( $responsive_mode == 'scale' )
125
+ {
126
+ $responsive_reference_window_width = get_option( 'war_soundy_responsive_scale_reference_window_width' );
127
+ }
128
+ }
129
  ?>
130
  <link rel="prefetch" href="<?php echo $audio_file_url; ?>">
131
  <link rel="prefetch" href="<?php echo $this->button_url_play; ?>">
145
  button_url_pause_hover: '<?php echo $this->hover_url_pause; ?>',
146
  user_agent_is_IOS: <?php echo $this->user_agent_is_IOS() ?>
147
  } );
148
+
149
+ var war_soundy_responsive_mode = '<?php echo $responsive_mode; ?>';
150
+ var war_soundy_button_corner = '<?php echo get_option( "war_soundy_pp_corner" ); ?>';
151
+ <?php
152
+ if( $responsive_mode != 'none' )
153
+ {
154
+ if( $responsive_mode == 'table' )
155
+ {
156
+ echo 'var war_soundy_responsive_table_rows = new Array();';
157
+ foreach( $responsive_table_rows as $row )
158
+ {
159
+ echo 'war_soundy_responsive_table_rows.push( ' . $row . ' );';
160
+ }
161
+ }
162
+ else // if( $responsive_mode == 'scale' )
163
+ {
164
+ echo 'var war_soundy_responsive_reference_window_width = ' . $responsive_reference_window_width . ';';
165
+ }
166
+ }
167
+ ?>
168
  </script>
169
  <?php
170
  }
templates/settings.php CHANGED
@@ -36,25 +36,26 @@
36
 
37
  <div id="war_soundy_tabs">
38
  <ul>
39
- <li><a id="war_soundy_tab_label_audio_track" href="#war_soundy_tab_panel_audio_track">Audio Track</a></li>
40
- <li><a id="war_soundy_tab_label_play_pause_button" href="#war_soundy_tab_panel_play_pause_button">Play/Pause Button</a></li>
41
- <li><a id="war_soundy_tab_label_play_pause_position_corner" href="#war_soundy_tab_panel_play_pause_position_corner">Play/Pause Button Corner Position</a></li>
42
- <li><a id="war_soundy_tab_label_play_pause_position_static" href="#war_soundy_tab_panel_play_pause_position_static">Play/Pause Static Position</a></li>
43
- </ul>
 
44
  <div id="war_soundy_tab_panel_audio_track">
45
- <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_audio_track' ); ?>
46
  </div>
47
  <div id="war_soundy_tab_panel_play_pause_button">
48
- <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_play_pause_button' ); ?>
49
  </div>
50
  <div id="war_soundy_tab_panel_play_pause_position_corner">
51
- <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_play_pause_position_corner' ); ?>
52
  </div>
 
 
 
53
  <div id="war_soundy_tab_panel_play_pause_position_static">
54
- <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_play_pause_position_static' ); ?>
55
- </div>
56
- <div id="war_soundy_tab_panel_license_key">
57
- <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_license_key' ); ?>
58
  </div>
59
  </div>
60
 
36
 
37
  <div id="war_soundy_tabs">
38
  <ul>
39
+ <li><a id="war_soundy_tab_label_audio_track" href="#war_soundy_tab_panel_audio_track">Audio Track</a></li>
40
+ <li><a id="war_soundy_tab_label_play_pause_button" href="#war_soundy_tab_panel_play_pause_button">Play/Pause Button</a></li>
41
+ <li><a id="war_soundy_tab_label_play_pause_position_corner" href="#war_soundy_tab_panel_play_pause_position_corner">Play/Pause Button Corner Position</a></li>
42
+ <li><a id="war_soundy_tab_label_play_pause_responsive" href="#war_soundy_tab_panel_play_pause_responsive">Play/Pause Button Responsiveness</a></li>
43
+ <li><a id="war_soundy_tab_label_play_pause_position_static" href="#war_soundy_tab_panel_play_pause_position_static">Play/Pause Static Position</a></li>
44
+ </ul>
45
  <div id="war_soundy_tab_panel_audio_track">
46
+ <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_audio_track' ); ?>
47
  </div>
48
  <div id="war_soundy_tab_panel_play_pause_button">
49
+ <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_play_pause_button' ); ?>
50
  </div>
51
  <div id="war_soundy_tab_panel_play_pause_position_corner">
52
+ <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_play_pause_position_corner' ); ?>
53
  </div>
54
+ <div id="war_soundy_tab_panel_play_pause_responsive">
55
+ <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_play_pause_responsive' ); ?>
56
+ </div>
57
  <div id="war_soundy_tab_panel_play_pause_position_static">
58
+ <?php $this->do_settings_section( 'soundy', 'war_soundy_settings_section_play_pause_position_static' ); ?>
 
 
 
59
  </div>
60
  </div>
61