MP3-jPlayer - Version 2.2

Version Description

  • Simplified error handling to try and eliminate the false triggering of messages that was occurring on some devices.
  • Added an option to control the frontend display of player error messages, the options are: Never / To admins only / To all. The setting is under advanced tab, default is admins only.
  • Fixed the bug on index/cat pages that broke players in some scenarios when using the 'Show in full content' and 'Show in excerpts' options.
  • Fixed the functioning of 'Show in excerpts' option (this option is still for manually written excerpts only).
  • Added developer methods for contolling css output and design page visibility.
  • Added support in the popout player for the stats collection modules (allows play and download via the popout to be captured).
  • Some css hardening on jQuery ui components.
Download this release

Release Info

Developer simon.ward
Plugin Icon 128x128 MP3-jPlayer
Version 2.2
Comparing to
See all releases

Code changes from version 2.1 to 2.2

admin-colours.php CHANGED
@@ -51,8 +51,14 @@ function mp3j_print_colours_page()
51
 
52
  //..current stylesheet url to js
53
  $player_theme = $O['player_theme'];
54
- $js_current_css = "\nvar MP3J_THEME_PATH = '" . $css_urls[ $player_theme ]['url'] . "';";
55
-
 
 
 
 
 
 
56
  //..other stylesheet urls to js
57
  //$js_stylesheets = '';
58
  $c = count( $css_urls );
51
 
52
  //..current stylesheet url to js
53
  $player_theme = $O['player_theme'];
54
+ if ( isset( $css_urls[ $player_theme ]['url'] ) ) {
55
+ $js_current_css = "\nvar MP3J_THEME_PATH = '" . $css_urls[ $player_theme ]['url'] . "';";
56
+ }
57
+ else { //fall back to default
58
+ $js_current_css = "\nvar MP3J_THEME_PATH = '" . $css_urls['defaultLight']['url'] . "';";
59
+ }
60
+
61
+
62
  //..other stylesheet urls to js
63
  //$js_stylesheets = '';
64
  $c = count( $css_urls );
admin-settings.php CHANGED
@@ -72,6 +72,9 @@ function mp3j_print_admin_page()
72
  if (isset($_POST['replacerShortcode_single'])) {
73
  $O['replacerShortcode_single'] = $mp3_fox->prep_value( $_POST['replacerShortcode_single'] );
74
  }
 
 
 
75
 
76
  $O['echo_debug'] = ( isset($_POST['mp3foxEchoDebug']) ) ? "true" : "false";
77
  $O['add_track_numbering'] = ( isset($_POST['mp3foxAddTrackNumbers']) ) ? "true" : "false";
@@ -386,7 +389,7 @@ function mp3j_print_admin_page()
386
  <tr>
387
  <td style="width:100px;"><strong>Default Folder</strong>&nbsp;&nbsp;</td>
388
  <td style="width:100px;"><?php echo $folderButton; ?>&nbsp;&nbsp;</td>
389
- <td><strong>Path:</strong> <input type="text" style="width:250px;" name="mp3foxfolder" value="<?php echo $O['mp3_dir']; ?>" /> &nbsp; <strong><a href="javascript:" onclick="jQuery('#folderHelp').toggle();">Help..</a></strong></td>
390
  </tr>
391
  <tr>
392
  <td></td>
@@ -403,13 +406,13 @@ function mp3j_print_admin_page()
403
  <hr /><br>
404
 
405
 
406
-
407
  <!-- Auto Counterpart -->
408
  <label for="autoCounterpart" style="margin:0px 0 0 0px;">Auto-find counterpart files &nbsp; </label>
409
  <input type="checkbox" name="autoCounterpart" id="autoCounterpart" value="true" <?php echo ( $O['autoCounterpart'] === "true" ? 'checked="checked"' : ''); ?>/>
410
 
411
  <p class="description" style="margin:10px 0 0 0px;">This will pick up a fallback format if it's in the same location as the playlisted track, based on a
412
- filename match. <strong><a href="javascript:" onclick="jQuery('#counterpartHelp').toggle();">Help..</a></strong></p>
413
 
414
  <div id="counterpartHelp" class="helpBox" style="display:none; margin:10px 0 0 30px; max-width:550px;">
415
  <p class="description" style="margin-bottom:10px;">With this option ticked, the plugin will automatically look for counterpart files for any players on a page. The
@@ -721,6 +724,17 @@ function mp3j_print_admin_page()
721
 
722
  <br><br><hr>
723
  <p class="tabD" style="margin:0 0 10px 0;">Other Settings</p>
 
 
 
 
 
 
 
 
 
 
 
724
  <p><input type="checkbox" id="mp3foxEchoDebug" name="mp3foxEchoDebug" value="true" <?php if ($O['echo_debug'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp;<label for="mp3foxEchoDebug">Turn on debug</label><br />&nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(info appears in the source view near the bottom)</span></p>
725
 
726
 
72
  if (isset($_POST['replacerShortcode_single'])) {
73
  $O['replacerShortcode_single'] = $mp3_fox->prep_value( $_POST['replacerShortcode_single'] );
74
  }
75
+ if (isset($_POST['showErrors'])) {
76
+ $O['showErrors'] = $mp3_fox->prep_value( $_POST['showErrors'] );
77
+ }
78
 
79
  $O['echo_debug'] = ( isset($_POST['mp3foxEchoDebug']) ) ? "true" : "false";
80
  $O['add_track_numbering'] = ( isset($_POST['mp3foxAddTrackNumbers']) ) ? "true" : "false";
389
  <tr>
390
  <td style="width:100px;"><strong>Default Folder</strong>&nbsp;&nbsp;</td>
391
  <td style="width:100px;"><?php echo $folderButton; ?>&nbsp;&nbsp;</td>
392
+ <td><strong>Path:</strong> <input type="text" style="width:250px;" name="mp3foxfolder" value="<?php echo $O['mp3_dir']; ?>" /> &nbsp; <strong><a href="javascript:" onclick="jQuery('#folderHelp').toggle(300);">Help..</a></strong></td>
393
  </tr>
394
  <tr>
395
  <td></td>
406
  <hr /><br>
407
 
408
 
409
+
410
  <!-- Auto Counterpart -->
411
  <label for="autoCounterpart" style="margin:0px 0 0 0px;">Auto-find counterpart files &nbsp; </label>
412
  <input type="checkbox" name="autoCounterpart" id="autoCounterpart" value="true" <?php echo ( $O['autoCounterpart'] === "true" ? 'checked="checked"' : ''); ?>/>
413
 
414
  <p class="description" style="margin:10px 0 0 0px;">This will pick up a fallback format if it's in the same location as the playlisted track, based on a
415
+ filename match. <strong><a href="javascript:" onclick="jQuery('#counterpartHelp').toggle(300);">Help..</a></strong></p>
416
 
417
  <div id="counterpartHelp" class="helpBox" style="display:none; margin:10px 0 0 30px; max-width:550px;">
418
  <p class="description" style="margin-bottom:10px;">With this option ticked, the plugin will automatically look for counterpart files for any players on a page. The
724
 
725
  <br><br><hr>
726
  <p class="tabD" style="margin:0 0 10px 0;">Other Settings</p>
727
+
728
+
729
+ <p style="margin-bottom:10px;"><strong>Show error messages</strong>:
730
+ &nbsp;&nbsp;&nbsp;
731
+ <select name="showErrors">
732
+ <option value="false"<?php if ( 'false' == $O['showErrors'] ) { echo ' selected="selected"'; } ?>>Never</option>
733
+ <option value="admin"<?php if ( 'admin' == $O['showErrors'] ) { echo ' selected="selected"'; } ?>>To Admins only</option>
734
+ <option value="true"<?php if ( 'true' == $O['showErrors'] ) { echo ' selected="selected"'; } ?>>To All</option>
735
+ </select></p>
736
+
737
+
738
  <p><input type="checkbox" id="mp3foxEchoDebug" name="mp3foxEchoDebug" value="true" <?php if ($O['echo_debug'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp;<label for="mp3foxEchoDebug">Turn on debug</label><br />&nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(info appears in the source view near the bottom)</span></p>
739
 
740
 
css/dark.css CHANGED
@@ -168,7 +168,7 @@ div.mjp-volwrap { position:absolute; height:11px; bottom:40px; right:0px; width:
168
  border:2px solid #303030; border-bottom:0px;
169
  -webkit-border-top-right-radius: 2px; -moz-border-radius-topright: 2px; border-top-right-radius: 2px;
170
  }
171
- div.MIsliderVolume { position:absolute; top:-1px; right:1px; left:28px; height:11px; border:0px; font-size:1px; cursor:pointer; z-index:150; }
172
  div.MIsliderVolume .ui-widget-header { background:transparent url('images/volgrad-light.png') repeat-y 10px top; border-right:1px solid #808080; }
173
  div.MIsliderVolume .ui-slider-handle { display:none; }
174
  div.mjp-volwrap:hover .ui-slider-handle, div.MIsliderVolume .ui-slider-handle:hover { display:none; }
@@ -242,14 +242,14 @@ div.mp3j-finfo {
242
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
243
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
244
  /* mp3t */
245
- span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; }
246
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
247
  span.posbar_mp3j .ui-slider-handle { background:url('images/t40b.png') repeat; top:-1px; margin-left:-4px; border:1px solid #555; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
248
  span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t40b.png') repeat; border-color:#202020; }
249
 
250
  /* mp3j */
251
- span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; }
252
- span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:-500; height:100%; }
253
  span.posbarB_mp3j .ui-slider-handle { background:url('images/t50b.png') repeat 0px 0px; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #555; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
254
  span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t50b.png') repeat 0px 0px; border-color:#202020; }
255
 
@@ -267,14 +267,14 @@ div.mp3j-finfo {
267
  span.gfxbutton_mp3j.pause-mjp:hover { background-color:#303030; }
268
 
269
  /* VOLUMES */
270
- span.vol_mp3t { position:absolute; top:-9px; right:5px; width:90%; max-width:85px; height:3px; }
271
- span.vol_mp3j { position:absolute; top:-11px; right:11px; width:85%; max-width:82px; height:3px; }
272
  span.vol_mp3j.flipped { right:4px; }
273
- span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { z-index:500; height:100%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; background:url('images/volgrad-dark.png') repeat-y -30px top; }
274
 
275
  span.vol_mp3t .ui-slider-handle, span.vol_mp3j .ui-slider-handle {
276
  background:#404040 url('images/buttonset-darkplayer-grads8.png') no-repeat -127px -125px;
277
- height:10px;
278
  width:10px !important;
279
  padding:0px;
280
  margin-left:-6px;
168
  border:2px solid #303030; border-bottom:0px;
169
  -webkit-border-top-right-radius: 2px; -moz-border-radius-topright: 2px; border-top-right-radius: 2px;
170
  }
171
+ div.MIsliderVolume, div.MIsliderVolume.ui-widget-content { position:absolute; top:-1px; right:1px; left:28px; height:11px; border:0 !important; font-size:1px; cursor:pointer; z-index:150; }
172
  div.MIsliderVolume .ui-widget-header { background:transparent url('images/volgrad-light.png') repeat-y 10px top; border-right:1px solid #808080; }
173
  div.MIsliderVolume .ui-slider-handle { display:none; }
174
  div.mjp-volwrap:hover .ui-slider-handle, div.MIsliderVolume .ui-slider-handle:hover { display:none; }
242
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
243
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
244
  /* mp3t */
245
+ span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; background:none !important; }
246
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
247
  span.posbar_mp3j .ui-slider-handle { background:url('images/t40b.png') repeat; top:-1px; margin-left:-4px; border:1px solid #555; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
248
  span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t40b.png') repeat; border-color:#202020; }
249
 
250
  /* mp3j */
251
+ span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; background:none !important; }
252
+ span.posbarB_mp3j .ui-widget-header { background:transparent !important; z-index:-500; height:100%; }
253
  span.posbarB_mp3j .ui-slider-handle { background:url('images/t50b.png') repeat 0px 0px; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #555; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
254
  span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t50b.png') repeat 0px 0px; border-color:#202020; }
255
 
267
  span.gfxbutton_mp3j.pause-mjp:hover { background-color:#303030; }
268
 
269
  /* VOLUMES */
270
+ span.vol_mp3t { position:absolute; top:-9px; right:5px; width:90%; max-width:85px; height:3px; border:0 !important; }
271
+ span.vol_mp3j { position:absolute; top:-11px; right:11px; width:85%; max-width:82px; height:3px; border:0 !important; }
272
  span.vol_mp3j.flipped { right:4px; }
273
+ span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { z-index:500; height:100% !important; -webkit-border-radius: 2px !important; -moz-border-radius: 2px !important; border-radius: 2px !important; background:url('images/volgrad-dark.png') repeat-y -30px top !important; }
274
 
275
  span.vol_mp3t .ui-slider-handle, span.vol_mp3j .ui-slider-handle {
276
  background:#404040 url('images/buttonset-darkplayer-grads8.png') no-repeat -127px -125px;
277
+ height:10px !important;
278
  width:10px !important;
279
  padding:0px;
280
  margin-left:-6px;
css/light.css CHANGED
@@ -166,8 +166,8 @@ div.transport-MI { position:absolute; width:auto; height:38px; right:2px; bottom
166
  div.mjp-volwrap { position:absolute; height:11px; bottom:41px; right:0px; width:108px; background-color:#e0e0e0; z-index:140;
167
  border-left:1px solid #f8f8f8; border-bottom:1px solid #f8f8f8;
168
  }
169
- div.MIsliderVolume { position:absolute; top:0px; right:1px; left:28px; height:11px; border:0px; font-size:1px; cursor:pointer; z-index:150; background-color:#b0b0b0; }
170
- div.MIsliderVolume .ui-widget-header { background:#e0e0e0 url('images/volgrad-dark.png') repeat-y 35px top; border-right:0px solid #d0d0d0; cursor:pointer; }
171
  div.MIsliderVolume .ui-slider-handle { display:none; }
172
  div.mjp-volwrap:hover .ui-slider-handle, div.MIsliderVolume .ui-slider-handle:hover { display:none; }
173
  div.MIsliderVolume .ui-state-active, div.MIsliderVolume .ui-widget-content .ui-state-active { display:none; }
@@ -242,13 +242,13 @@ div.mp3j-finfo {
242
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
243
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
244
  /* mp3t */
245
- span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; }
246
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
247
  span.posbar_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat; top:-1px; margin-left:-4px; border:1px solid #aaa; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
248
  span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat; border-color:#888; }
249
 
250
  /* mp3j */
251
- span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; }
252
  span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:-500; height:100%; }
253
  span.posbarB_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat 0px 0px; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #aaa; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
254
  span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat 0px 0px; border-color:#888; }
@@ -265,8 +265,8 @@ div.mp3j-finfo {
265
  span.gfxbutton_mp3j.pause-mjp:hover { background-color:#e0e0e0; }
266
 
267
  /* VOLUMES */
268
- span.vol_mp3t { position:absolute; top:-9px; right:5px; width:90%; max-width:85px; height:3px; }
269
- span.vol_mp3j { position:absolute; top:-11px; right:11px; width:85%; max-width:82px; height:3px; }
270
  span.vol_mp3j.flipped { right:4px; }
271
  span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { z-index:500; height:100%; background:url('images/volgrad-dark.png') repeat-y 10px top; }
272
 
166
  div.mjp-volwrap { position:absolute; height:11px; bottom:41px; right:0px; width:108px; background-color:#e0e0e0; z-index:140;
167
  border-left:1px solid #f8f8f8; border-bottom:1px solid #f8f8f8;
168
  }
169
+ div.MIsliderVolume, div.MIsliderVolume.ui-widget-content { position:absolute; top:0px; right:1px; left:28px; height:11px; border:0 !important; font-size:1px; cursor:pointer; z-index:150; background:#b0b0b0 !important; }
170
+ div.MIsliderVolume .ui-widget-header { background:#e0e0e0 url('images/volgrad-dark.png') repeat-y 35px top !important; border-right:0px solid #d0d0d0 !important; cursor:pointer; background-color:#e0e0e0 !important; }
171
  div.MIsliderVolume .ui-slider-handle { display:none; }
172
  div.mjp-volwrap:hover .ui-slider-handle, div.MIsliderVolume .ui-slider-handle:hover { display:none; }
173
  div.MIsliderVolume .ui-state-active, div.MIsliderVolume .ui-widget-content .ui-state-active { display:none; }
242
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
243
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
244
  /* mp3t */
245
+ span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; background:none !important; }
246
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
247
  span.posbar_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat; top:-1px; margin-left:-4px; border:1px solid #aaa; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
248
  span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat; border-color:#888; }
249
 
250
  /* mp3j */
251
+ span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; background:none !important; }
252
  span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:-500; height:100%; }
253
  span.posbarB_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat 0px 0px; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #aaa; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
254
  span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat 0px 0px; border-color:#888; }
265
  span.gfxbutton_mp3j.pause-mjp:hover { background-color:#e0e0e0; }
266
 
267
  /* VOLUMES */
268
+ span.vol_mp3t { position:absolute; top:-9px; right:5px; width:90%; max-width:85px; height:3px; border:0 !important; }
269
+ span.vol_mp3j { position:absolute; top:-11px; right:11px; width:85%; max-width:82px; height:3px; border:0 !important; }
270
  span.vol_mp3j.flipped { right:4px; }
271
  span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { z-index:500; height:100%; background:url('images/volgrad-dark.png') repeat-y 10px top; }
272
 
css/text.css CHANGED
@@ -226,13 +226,13 @@ div.mp3j-finfo {
226
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
227
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
228
  /* mp3t */
229
- span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; }
230
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
231
  span.posbar_mp3j .ui-slider-handle { background:none; top:-1px; margin-left:-4px; border:1px solid #aaa; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
232
  span.posbar_mp3j .ui-slider-handle:hover { background:none; border-color:#888; }
233
 
234
  /* mp3j */
235
- span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; }
236
  span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:-500; height:100%; }
237
  span.posbarB_mp3j .ui-slider-handle { background:none; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #aaa; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
238
  span.posbarB_mp3j .ui-slider-handle:hover { background:none; border-color:#888; }
@@ -249,8 +249,8 @@ div.mp3j-finfo {
249
  span.gfxbutton_mp3j.pause-mjp:hover { }
250
 
251
  /* VOLUMES */
252
- span.vol_mp3t { position:absolute; top:-9px; right:5px; width:90%; max-width:85px; height:3px; }
253
- span.vol_mp3j { position:absolute; top:-11px; right:11px; width:85%; max-width:82px; height:3px; }
254
  span.vol_mp3j.flipped { right:4px; }
255
  span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { z-index:500; height:100%; background:url('images/volgrad-dark.png') repeat-y 10px top; }
256
 
226
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
227
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
228
  /* mp3t */
229
+ span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; background:none !important; }
230
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
231
  span.posbar_mp3j .ui-slider-handle { background:none; top:-1px; margin-left:-4px; border:1px solid #aaa; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
232
  span.posbar_mp3j .ui-slider-handle:hover { background:none; border-color:#888; }
233
 
234
  /* mp3j */
235
+ span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; background:none !important; }
236
  span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:-500; height:100%; }
237
  span.posbarB_mp3j .ui-slider-handle { background:none; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #aaa; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
238
  span.posbarB_mp3j .ui-slider-handle:hover { background:none; border-color:#888; }
249
  span.gfxbutton_mp3j.pause-mjp:hover { }
250
 
251
  /* VOLUMES */
252
+ span.vol_mp3t { position:absolute; top:-9px; right:5px; width:90%; max-width:85px; height:3px; border:0 !important; }
253
+ span.vol_mp3j { position:absolute; top:-11px; right:11px; width:85%; max-width:82px; height:3px; border:0 !important; }
254
  span.vol_mp3j.flipped { right:4px; }
255
  span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { z-index:500; height:100%; background:url('images/volgrad-dark.png') repeat-y 10px top; }
256
 
css/v1-skins/v1-dark.css CHANGED
@@ -430,13 +430,13 @@ div.mp3j-finfo {
430
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
431
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
432
  /* mp3t */
433
- span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0px solid #f77; }
434
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
435
  span.posbar_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat; top:-1px; margin-left:-4px; border:1px solid #bbb; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
436
  span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat; border-color:#999; }
437
 
438
  /* mp3j */
439
- span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; }
440
  span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:-450; height:100%; }
441
  span.posbarB_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat 0px 0px; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #bbb; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
442
  span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat 0px 0px; border-color:#999; }
430
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
431
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
432
  /* mp3t */
433
+ span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0px solid #f77; background:none !important; }
434
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
435
  span.posbar_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat; top:-1px; margin-left:-4px; border:1px solid #bbb; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
436
  span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat; border-color:#999; }
437
 
438
  /* mp3j */
439
+ span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; background:none !important; }
440
  span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:-450; height:100%; }
441
  span.posbarB_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat 0px 0px; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #bbb; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
442
  span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat 0px 0px; border-color:#999; }
css/v1-skins/v1-silver.css CHANGED
@@ -424,13 +424,13 @@ ul.ul-mjp.mp3j_widgetmods li a { font-size:10px !important; line-height:14px !im
424
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
425
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
426
  /* mp3t */
427
- span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0px solid #f77; }
428
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
429
  span.posbar_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat; top:-1px; margin-left:-4px; border:1px solid #bbb; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
430
  span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat; border-color:#999; }
431
 
432
  /* mp3j */
433
- span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; }
434
  span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:-450; height:100%; }
435
  span.posbarB_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat 0px 0px; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #bbb; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
436
  span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat 0px 0px; border-color:#999; }
424
  span.bars_mp3j { position:absolute; width:100%; top:0px; bottom:0px; }
425
  span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ bottom:-5px; left:0px; min-height:3px; height:12%; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }
426
  /* mp3t */
427
+ span.posbar_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0px solid #f77; background:none !important; }
428
  span.posbar_mp3j .ui-widget-header { z-index:-500; }
429
  span.posbar_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat; top:-1px; margin-left:-4px; border:1px solid #bbb; bottom:-8px; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
430
  span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat; border-color:#999; }
431
 
432
  /* mp3j */
433
+ span.posbarB_mp3j { position:absolute; width:100%; top:0px; bottom:0px; border:0; cursor:pointer; z-index:499; background:none !important; }
434
  span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:-450; height:100%; }
435
  span.posbarB_mp3j .ui-slider-handle { background:url('images/t50l.png') repeat 0px 0px; top:-2px; bottom:-8px; margin-left:-4px; border:1px solid #bbb; width:8px; z-index:500; cursor:default; padding:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
436
  span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t50l.png') repeat 0px 0px; border-color:#999; }
frontend.php CHANGED
@@ -33,6 +33,19 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
33
  }
34
 
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  /**
37
  * Provides support for WP versions below 3.3 that can't late enqueue. Labourious
38
  * checking of active widgets, and loose checking post content for shortcodes and extensions
@@ -105,17 +118,21 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
105
  $JS .= ( $O['encode_files'] !== 'true' ) ? "\n\t\tMP3_JPLAYER.vars.play_f = " . $O['encode_files'] . ";" : "";
106
  $JS .= ( $O['force_browser_dload'] !== 'true' ) ? "\n\t\tMP3_JPLAYER.vars.force_dload = " . $O['force_browser_dload'] . ";" : "";
107
  $JS .= "\n\t\tMP3_JPLAYER.vars.dload_text = '" . $O['dload_text'] . "';";
108
- $JS .= "\n\t\tMP3_JPLAYER.vars.stylesheet_url = '" . $this->PP_css_url . "';";
109
 
 
 
 
110
  if ( $O['force_browser_dload'] == "true" && $O['dloader_remote_path'] !== "" ) {
111
  $JS .= "\n\t\tMP3_JPLAYER.vars.dl_remote_path = '" . $O['dloader_remote_path'] . "';";
112
  }
113
 
114
- //$JS .= "\n\t\tMP3_JPLAYER.popout_css = {\n";
115
- //$JS .= $this->PP_css_settings;
116
- //$JS .= "\n\t\t};";
 
 
117
 
118
- $JS .= "\n\t\tMP3_JPLAYER.init();"; //close if MP3_JPLAYER exists
119
  $JS .= "\n\t}";
120
  $JS .= "\n});\n</script>\n";
121
  echo $JS;
@@ -208,8 +225,7 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
208
  function inline_play_handler( $atts, $content = null ) {
209
 
210
  $this->dbug['str'] .= "\n### Checking [mp3t]...";
211
- if ( !$this->Caller && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
212
- $this->dbug['str'] .= "\nExiting (player_onblog is unticked)";
213
  return;
214
  }
215
 
@@ -257,7 +273,6 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
257
  $CSSext = '-mjp';
258
  $font1Class = ( $C['font_family_1'] === 'theme' ) ? '' : ' ' . $C['font_family_1'] . $CSSext;
259
 
260
-
261
  $divO = '<span class="unsel-mjp ' . $cssclass . $font1Class . '">';
262
  $divC = "</span>";
263
  $b = "";
@@ -266,8 +281,6 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
266
  $divC = "</div>";
267
  }
268
 
269
-
270
-
271
  // Set font weight
272
  $b = ( $bold == "false" || $bold == "0" || $bold == "n" ) ? " style=\"font-weight:500;\"" : " style=\"font-weight:700;\"";
273
 
@@ -298,16 +311,11 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
298
  $pos = "<span class=\"bars_mp3j\"><span class=\"load_mp3j\" id=\"load_mp3j_" . $id . "\"></span><span class=\"posbar_mp3j\" id=\"posbar_mp3j_" . $id. "\"></span>" . $vol_h . "</span>";
299
  $play_h = "<span class=\"textbutton_mp3j play-mjp\" style=\"font-size:" .$fontsize. ";\" id=\"playpause_mp3j_" . $id . "\">" . $play . "</span>";
300
 
301
- //$title_h = ( $title == "#USE#" || $title != "" ) ? "<span class=\"T_mp3j\" id=\"T_mp3j_" . $id . "\">" . $outputTitle . "</span>" : "";
302
  $title_h = ( $title != "" ) ? "<span class=\"T_mp3j\" style=\"font-size:" .$fontsize. ";\" id=\"T_mp3j_" . $id . "\">" . $outputTitle . "</span>" : "";
303
 
304
  $closeWrap = ( $ind != "y" ) ? "<span style=\"display:none;\" id=\"statusMI_" . $id . "\"></span></span>" . $divC : "<span class=\"indi_mp3j\" style=\"font-size:" .(intval($fontsize)*0.7) . "px;\" id=\"statusMI_" . $id . "\"></span></span>" . $divC;
305
-
306
-
307
  $errorMsg = "<span class=\"s-nosolution\" id=\"mp3j_nosolution_" . $id . "\" style=\"display:none;\"></span>";
308
-
309
-
310
-
311
  // Assemble them
312
  $html = ( $flip != "l" ) ? $openWrap . $pos . $title_h . $spacer . $play_h . $closeWrap . $errorMsg : $openWrap . $pos . $play_h . $spacer . $title_h . $closeWrap . $errorMsg;
313
 
@@ -330,8 +338,7 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
330
  function inline_play_graphic( $atts, $content = null ) {
331
 
332
  $this->dbug['str'] .= "\n### Checking [mp3j]...";
333
- if ( !$this->Caller && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
334
- $this->dbug['str'] .= "\nExiting (player_onblog is unticked)";
335
  return;
336
  }
337
 
@@ -366,7 +373,6 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
366
  }
367
  $cssclass = $style;
368
 
369
-
370
  $tn = $this->decide_S_playlist( $track, $caption, $counterpart, $ids );
371
  if ( !$tn ) {
372
  $this->dbug['str'] .= "\nExiting (no track here)";
@@ -400,9 +406,6 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
400
  }
401
  }
402
 
403
- // tell js it's graphics buttons
404
- //$play = "#USE_G#";
405
-
406
  // Make id'd span elements
407
  $flippedcss = ( $flip == "r" ) ? "" : " flipped";
408
  $openWrap = $divO . "<span id=\"playpause_wrap_mp3j_" . $id . "\" class=\"wrap_inline_mp3j\"" . $b . ">";
@@ -719,13 +722,11 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
719
  {
720
  //Bailout
721
  $this->dbug['str'] .= "\n### Checking [mp3-jplayer]...";
722
- if ( !$this->Caller && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
723
- $this->dbug['str'] .= "\nExiting (player_onblog is unticked)";
724
  return;
725
  }
726
 
727
 
728
-
729
  $O = $this->theSettings;
730
  $pID = $this->Player_ID;
731
  $ATTS = shortcode_atts( array( // Defaults
@@ -847,7 +848,9 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
847
  $player = $this->drawPlaylistPlayer( $ATTS );
848
 
849
  //js player info
850
- $playerInfo = "{ list:MP3jPLAYLISTS." .$PlayerName. ", tr:" .$trnum. ", type:'MI', lstate:" .$ATTS['list']. ", loop:" .$ATTS['loop']. ", play_txt:'Play', pause_txt:'Pause', pp_title:'" .$pp_title. "', autoplay:" .$ATTS['autoplay']. ", download:" .$dload_info. ", vol:" .$ATTS['vol']. ", height:" .$pp_height. ", cssclass:'" .$ATTS['userClasses']. "', popout_css:{" .$player['js']. "} }";
 
 
851
  $playerJS = "<script>MP3jPLAYERS.push(" . $playerInfo . ");</script>\n\n";
852
 
853
 
@@ -863,136 +866,137 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
863
 
864
  /* Handles [mp3-popout] shortcode
865
  link to popout player. */
866
- function popout_link_player ( $atts, $content = null )
867
- {
868
- //bailout conditions
869
- $this->dbug['str'] .= "\n### Checking [mp3-popout]...";
870
- if ( !$this->Caller && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
871
- $this->dbug['str'] .= "\nExiting (player_onblog is unticked)";
872
- return;
873
- }
874
-
875
- $O = $this->theSettings;
876
- $pID = $this->Player_ID;
877
- $ATTS = shortcode_atts( array( // Defaults
878
- 'tracks' => '',
879
- 'track' => '',
880
- 'captions' => '',
881
- 'dload' => $this->theSettings['show_downloadmp3'],
882
- 'title' => '',
883
- 'text' => $this->theSettings['popout_button_title'],
884
- 'stop' => 'y',
885
- 'pn' => 'y',
886
- 'list' => $this->theSettings['playlist_show'],
887
- 'width' => '',
888
- 'pos' => $this->theSettings['player_float'],
889
- 'shuffle' => false,
890
- 'pick' => '',
891
- 'id' => '',
892
- 'loop' => $this->theSettings['playlist_repeat'],
893
- 'autoplay' => $this->theSettings['auto_play'],
894
- 'vol' => $this->theSettings['initial_vol'],
895
- 'height' => $this->theSettings['playerHeight'],
896
- 'tag' => 'p',
897
- 'image' => '',
898
- 'fsort' => 'asc',
899
- 'style' => '',
900
- 'images' => 'true',
901
- 'imagesize' => $O['imageSize'],
902
- 'imglinks' => '',
903
- 'ids' => '',
904
- 'counterparts' => '',
905
- 'counterpart' => '',
906
- 'font_size_1' => $O['colour_settings']['font_size_1'],
907
- 'font_size_2' => $O['colour_settings']['font_size_2'],
908
- 'font_family_1' => $O['colour_settings']['font_family_1'],
909
- 'font_family_2' => $O['colour_settings']['font_family_2'],
910
- 'titlealign' => $O['colour_settings']['titleAlign'],
911
- 'titleoffset' => $O['colour_settings']['titleOffset'],
912
- 'titleoffsetr' => $O['colour_settings']['titleOffsetR'],
913
- 'titlebold' => $O['colour_settings']['titleBold'],
914
- 'titleitalic' => $O['colour_settings']['titleItalic'],
915
- 'captionbold' => $O['colour_settings']['captionBold'],
916
- 'captionitalic' => $O['colour_settings']['captionItalic'],
917
- 'listbold' => $O['colour_settings']['listBold'],
918
- 'listitalic' => $O['colour_settings']['listItalic'],
919
- 'listalign' => $O['colour_settings']['listAlign'],
920
- 'imagealign' => $O['colour_settings']['imageAlign'],
921
- 'imgoverflow' => $O['colour_settings']['imgOverflow'],
922
- 'titletop' => $O['colour_settings']['titleTop'],
923
- 'titlecol' => '',
924
- 'fontsize' => ''
925
- ), $atts );
926
-
927
- //Alias some params
928
- if ( $ATTS['tracks'] == '' && $ATTS['track'] != '' ) {
929
- $ATTS['tracks'] = $ATTS['track'];
930
- }
931
- if ( $ATTS['counterparts'] == '' && $ATTS['counterpart'] != '' ) {
932
- $ATTS['counterparts'] = $ATTS['counterpart'];
933
- }
934
- $ATTS['userClasses'] = $O['colour_settings']['userClasses'] . ' ' . $ATTS['style'];
935
-
936
- $ATTS['pptext'] = $ATTS['text'];
937
-
938
- //Try build a playlist
939
- $TRACKS = $this->decide_M_playlist( $ATTS );
940
- if ( !$TRACKS ) {
941
- $this->dbug['str'] .= "\nExiting (no tracks here)";
942
- return;
943
- }
944
- //$trackCount = count( $TRACKS );
945
- $ATTS['trackCount'] = count( $TRACKS );
946
-
947
- extract( $ATTS );
948
- //$ATTS['cssclass'] = $ATTS['style'];
949
-
950
- //Make js list
951
- $PlayerName = "popout_" . $this->M_no;
952
- $listJS = $this->writePlaylistJS( $TRACKS, $PlayerName );
953
-
954
- //Make settings..
955
- //$ATTS['cssclass'] = ( $ATTS['cssclass'] == "" ) ? "wrap-mjp" : $ATTS['cssclass'];
956
- $pp_height = (int)$height;
957
- $pp_height = ( empty($pp_height) || $pp_height === 0 ) ? 'false' : $pp_height;
958
- //$play = "#USE_G#";
959
- $pp_title = ( $title == "" ) ? get_bloginfo('name') : $title;
960
- $pp_title = str_replace("'", "\'", $pp_title);
961
- $pp_title = str_replace("&#039;", "\'", $pp_title);
962
- $list = ( $list == "true" || $list == "y" || $list == "1" ) ? "true" : "false";
963
- $dload_info = ( $dload == "true" || $dload == "y" || $dload == "1" ) ? "true" : "false";
964
- $autoplay = ( $autoplay == "true" || $autoplay == "y" || $autoplay == "1" ) ? "true" : "false";
965
- $loop = ( $loop == "true" || $loop == "y" || $loop == "1" ) ? "true" : "false";
966
-
967
-
968
- //Make player
969
- //$image_h = ( $image == "" ) ? "<div class=\"mp3j-popout-link\"></div>" : "<img class=\"mp3j-popout-link-image\" src=\"" . $image . "\" />";
970
- //$player = '<div class="mp3j-popout-link-wrap unsel-mjp" id="mp3j_popout_' . $pID . '">' . $image_h . '<'.$tag.'>' . $text . '</'.$tag.'></div>';
971
- $image_h = ( $image === "" ) ? '<div class="popout-image-mjp"></div>' : '<img class="popout-image-mjp-custom" src="' . $image . '" />';
972
- $text_h = ( $text !== "" ) ? '<div class="popout-text-mjp"><'.$tag.'>' . $text . '</'.$tag.'></div>' : '';
973
-
974
- $player = '<div class="popout-wrap-mjp unsel-mjp" id="mp3j_popout_' . $pID . '">';
975
- $player .= $image_h . $text_h;
976
- //$player .= '<br class="clearL-mjp">';
977
- $player .= '</div>';
978
-
979
-
980
- ////
981
- $output = $this->drawPlaylistPlayer( $ATTS, true );
982
- //js player info
983
- $playerInfo = "{ list: MP3jPLAYLISTS." . $PlayerName . ", tr:0, type:'popout', lstate:" . $list . ", loop:" . $loop . ", play_txt:'Play', pause_txt:'Pause', pp_title:'" . $pp_title . "', autoplay:" . $autoplay . ", download:" . $dload_info . ", vol:" . $vol . ", height:" . $pp_height . ", cssclass: '" . $ATTS['userClasses'] . "', popout_css:{" .$output['js']. "} }";
984
- $playerJS = "<script>MP3jPLAYERS.push(" . $playerInfo . ");</script>\n\n";
985
-
986
-
987
-
988
-
989
- //Finish up
990
- $this->dbug['str'] .= "\nOK (id " . $this->Player_ID . ")";
991
- $this->M_no++;
992
- $this->Player_ID++;
993
-
994
- return $player . $listJS . $playerJS;
995
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
996
 
997
 
998
  //###########################
33
  }
34
 
35
 
36
+
37
+
38
+ function mp3j_settings ( $devsettings = array() )
39
+ {
40
+ foreach ( $this->setup as $k => $v ) {
41
+ if ( array_key_exists( $k, $devsettings ) ) {
42
+ $this->setup[ $k ] = $devsettings[ $k ];
43
+ }
44
+ }
45
+ }
46
+
47
+
48
+
49
  /**
50
  * Provides support for WP versions below 3.3 that can't late enqueue. Labourious
51
  * checking of active widgets, and loose checking post content for shortcodes and extensions
118
  $JS .= ( $O['encode_files'] !== 'true' ) ? "\n\t\tMP3_JPLAYER.vars.play_f = " . $O['encode_files'] . ";" : "";
119
  $JS .= ( $O['force_browser_dload'] !== 'true' ) ? "\n\t\tMP3_JPLAYER.vars.force_dload = " . $O['force_browser_dload'] . ";" : "";
120
  $JS .= "\n\t\tMP3_JPLAYER.vars.dload_text = '" . $O['dload_text'] . "';";
 
121
 
122
+ if ( $this->setup['stylesheetPopout'] === true ) {
123
+ $JS .= "\n\t\tMP3_JPLAYER.vars.stylesheet_url = '" . $this->PP_css_url . "';";
124
+ }
125
  if ( $O['force_browser_dload'] == "true" && $O['dloader_remote_path'] !== "" ) {
126
  $JS .= "\n\t\tMP3_JPLAYER.vars.dl_remote_path = '" . $O['dloader_remote_path'] . "';";
127
  }
128
 
129
+ $showErrors = $O['showErrors'];
130
+ if ( $showErrors === 'admin' ) {
131
+ $showErrors = ( current_user_can( 'manage_options' ) ) ? 'true' : 'false';
132
+ }
133
+ $JS .= "\n\t\tMP3_JPLAYER.showErrors = " . $showErrors . ";";
134
 
135
+ $JS .= "\n\t\tMP3_JPLAYER.init();";
136
  $JS .= "\n\t}";
137
  $JS .= "\n});\n</script>\n";
138
  echo $JS;
225
  function inline_play_handler( $atts, $content = null ) {
226
 
227
  $this->dbug['str'] .= "\n### Checking [mp3t]...";
228
+ if ( ! $this->canRun() ) {
 
229
  return;
230
  }
231
 
273
  $CSSext = '-mjp';
274
  $font1Class = ( $C['font_family_1'] === 'theme' ) ? '' : ' ' . $C['font_family_1'] . $CSSext;
275
 
 
276
  $divO = '<span class="unsel-mjp ' . $cssclass . $font1Class . '">';
277
  $divC = "</span>";
278
  $b = "";
281
  $divC = "</div>";
282
  }
283
 
 
 
284
  // Set font weight
285
  $b = ( $bold == "false" || $bold == "0" || $bold == "n" ) ? " style=\"font-weight:500;\"" : " style=\"font-weight:700;\"";
286
 
311
  $pos = "<span class=\"bars_mp3j\"><span class=\"load_mp3j\" id=\"load_mp3j_" . $id . "\"></span><span class=\"posbar_mp3j\" id=\"posbar_mp3j_" . $id. "\"></span>" . $vol_h . "</span>";
312
  $play_h = "<span class=\"textbutton_mp3j play-mjp\" style=\"font-size:" .$fontsize. ";\" id=\"playpause_mp3j_" . $id . "\">" . $play . "</span>";
313
 
 
314
  $title_h = ( $title != "" ) ? "<span class=\"T_mp3j\" style=\"font-size:" .$fontsize. ";\" id=\"T_mp3j_" . $id . "\">" . $outputTitle . "</span>" : "";
315
 
316
  $closeWrap = ( $ind != "y" ) ? "<span style=\"display:none;\" id=\"statusMI_" . $id . "\"></span></span>" . $divC : "<span class=\"indi_mp3j\" style=\"font-size:" .(intval($fontsize)*0.7) . "px;\" id=\"statusMI_" . $id . "\"></span></span>" . $divC;
 
 
317
  $errorMsg = "<span class=\"s-nosolution\" id=\"mp3j_nosolution_" . $id . "\" style=\"display:none;\"></span>";
318
+
 
 
319
  // Assemble them
320
  $html = ( $flip != "l" ) ? $openWrap . $pos . $title_h . $spacer . $play_h . $closeWrap . $errorMsg : $openWrap . $pos . $play_h . $spacer . $title_h . $closeWrap . $errorMsg;
321
 
338
  function inline_play_graphic( $atts, $content = null ) {
339
 
340
  $this->dbug['str'] .= "\n### Checking [mp3j]...";
341
+ if ( ! $this->canRun() ) {
 
342
  return;
343
  }
344
 
373
  }
374
  $cssclass = $style;
375
 
 
376
  $tn = $this->decide_S_playlist( $track, $caption, $counterpart, $ids );
377
  if ( !$tn ) {
378
  $this->dbug['str'] .= "\nExiting (no track here)";
406
  }
407
  }
408
 
 
 
 
409
  // Make id'd span elements
410
  $flippedcss = ( $flip == "r" ) ? "" : " flipped";
411
  $openWrap = $divO . "<span id=\"playpause_wrap_mp3j_" . $id . "\" class=\"wrap_inline_mp3j\"" . $b . ">";
722
  {
723
  //Bailout
724
  $this->dbug['str'] .= "\n### Checking [mp3-jplayer]...";
725
+ if ( ! $this->canRun() ) {
 
726
  return;
727
  }
728
 
729
 
 
730
  $O = $this->theSettings;
731
  $pID = $this->Player_ID;
732
  $ATTS = shortcode_atts( array( // Defaults
848
  $player = $this->drawPlaylistPlayer( $ATTS );
849
 
850
  //js player info
851
+ $popoutcss = ( $this->setup['cssPopout'] === true ) ? "{ enabled:true, " .$player['js']. "}" : "{ enabled:false, " .$player['js']. "}";
852
+ //$playerInfo = "{ list:MP3jPLAYLISTS." .$PlayerName. ", tr:" .$trnum. ", type:'MI', lstate:" .$ATTS['list']. ", loop:" .$ATTS['loop']. ", play_txt:'Play', pause_txt:'Pause', pp_title:'" .$pp_title. "', autoplay:" .$ATTS['autoplay']. ", download:" .$dload_info. ", vol:" .$ATTS['vol']. ", height:" .$pp_height. ", cssclass:'" .$ATTS['userClasses']. "', popout_css:{" .$player['js']. "} }";
853
+ $playerInfo = "{ list:MP3jPLAYLISTS." .$PlayerName. ", tr:" .$trnum. ", type:'MI', lstate:" .$ATTS['list']. ", loop:" .$ATTS['loop']. ", play_txt:'Play', pause_txt:'Pause', pp_title:'" .$pp_title. "', autoplay:" .$ATTS['autoplay']. ", download:" .$dload_info. ", vol:" .$ATTS['vol']. ", height:" .$pp_height. ", cssclass:'" .$ATTS['userClasses']. "', popout_css:" .$popoutcss. " }";
854
  $playerJS = "<script>MP3jPLAYERS.push(" . $playerInfo . ");</script>\n\n";
855
 
856
 
866
 
867
  /* Handles [mp3-popout] shortcode
868
  link to popout player. */
869
+ function popout_link_player ( $atts, $content = null )
870
+ {
871
+ //bailout conditions
872
+ $this->dbug['str'] .= "\n### Checking [mp3-popout]...";
873
+ if ( ! $this->canRun() ) {
874
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
875
  }
876
+
877
+ $O = $this->theSettings;
878
+ $pID = $this->Player_ID;
879
+ $ATTS = shortcode_atts( array( // Defaults
880
+ 'tracks' => '',
881
+ 'track' => '',
882
+ 'captions' => '',
883
+ 'dload' => $this->theSettings['show_downloadmp3'],
884
+ 'title' => '',
885
+ 'text' => $this->theSettings['popout_button_title'],
886
+ 'stop' => 'y',
887
+ 'pn' => 'y',
888
+ 'list' => $this->theSettings['playlist_show'],
889
+ 'width' => '',
890
+ 'pos' => $this->theSettings['player_float'],
891
+ 'shuffle' => false,
892
+ 'pick' => '',
893
+ 'id' => '',
894
+ 'loop' => $this->theSettings['playlist_repeat'],
895
+ 'autoplay' => $this->theSettings['auto_play'],
896
+ 'vol' => $this->theSettings['initial_vol'],
897
+ 'height' => $this->theSettings['playerHeight'],
898
+ 'tag' => 'p',
899
+ 'image' => '',
900
+ 'fsort' => 'asc',
901
+ 'style' => '',
902
+ 'images' => 'true',
903
+ 'imagesize' => $O['imageSize'],
904
+ 'imglinks' => '',
905
+ 'ids' => '',
906
+ 'counterparts' => '',
907
+ 'counterpart' => '',
908
+ 'font_size_1' => $O['colour_settings']['font_size_1'],
909
+ 'font_size_2' => $O['colour_settings']['font_size_2'],
910
+ 'font_family_1' => $O['colour_settings']['font_family_1'],
911
+ 'font_family_2' => $O['colour_settings']['font_family_2'],
912
+ 'titlealign' => $O['colour_settings']['titleAlign'],
913
+ 'titleoffset' => $O['colour_settings']['titleOffset'],
914
+ 'titleoffsetr' => $O['colour_settings']['titleOffsetR'],
915
+ 'titlebold' => $O['colour_settings']['titleBold'],
916
+ 'titleitalic' => $O['colour_settings']['titleItalic'],
917
+ 'captionbold' => $O['colour_settings']['captionBold'],
918
+ 'captionitalic' => $O['colour_settings']['captionItalic'],
919
+ 'listbold' => $O['colour_settings']['listBold'],
920
+ 'listitalic' => $O['colour_settings']['listItalic'],
921
+ 'listalign' => $O['colour_settings']['listAlign'],
922
+ 'imagealign' => $O['colour_settings']['imageAlign'],
923
+ 'imgoverflow' => $O['colour_settings']['imgOverflow'],
924
+ 'titletop' => $O['colour_settings']['titleTop'],
925
+ 'titlecol' => '',
926
+ 'fontsize' => ''
927
+ ), $atts );
928
+
929
+ //Alias some params
930
+ if ( $ATTS['tracks'] == '' && $ATTS['track'] != '' ) {
931
+ $ATTS['tracks'] = $ATTS['track'];
932
+ }
933
+ if ( $ATTS['counterparts'] == '' && $ATTS['counterpart'] != '' ) {
934
+ $ATTS['counterparts'] = $ATTS['counterpart'];
935
+ }
936
+ $ATTS['userClasses'] = $O['colour_settings']['userClasses'] . ' ' . $ATTS['style'];
937
+
938
+ $ATTS['pptext'] = $ATTS['text'];
939
+
940
+ //Try build a playlist
941
+ $TRACKS = $this->decide_M_playlist( $ATTS );
942
+ if ( !$TRACKS ) {
943
+ $this->dbug['str'] .= "\nExiting (no tracks here)";
944
+ return;
945
+ }
946
+ //$trackCount = count( $TRACKS );
947
+ $ATTS['trackCount'] = count( $TRACKS );
948
+
949
+ extract( $ATTS );
950
+ //$ATTS['cssclass'] = $ATTS['style'];
951
+
952
+ //Make js list
953
+ $PlayerName = "popout_" . $this->M_no;
954
+ $listJS = $this->writePlaylistJS( $TRACKS, $PlayerName );
955
+
956
+ //Make settings..
957
+ //$ATTS['cssclass'] = ( $ATTS['cssclass'] == "" ) ? "wrap-mjp" : $ATTS['cssclass'];
958
+ $pp_height = (int)$height;
959
+ $pp_height = ( empty($pp_height) || $pp_height === 0 ) ? 'false' : $pp_height;
960
+ //$play = "#USE_G#";
961
+ $pp_title = ( $title == "" ) ? get_bloginfo('name') : $title;
962
+ $pp_title = str_replace("'", "\'", $pp_title);
963
+ $pp_title = str_replace("&#039;", "\'", $pp_title);
964
+ $list = ( $list == "true" || $list == "y" || $list == "1" ) ? "true" : "false";
965
+ $dload_info = ( $dload == "true" || $dload == "y" || $dload == "1" ) ? "true" : "false";
966
+ $autoplay = ( $autoplay == "true" || $autoplay == "y" || $autoplay == "1" ) ? "true" : "false";
967
+ $loop = ( $loop == "true" || $loop == "y" || $loop == "1" ) ? "true" : "false";
968
+
969
+
970
+ //Make player
971
+ //$image_h = ( $image == "" ) ? "<div class=\"mp3j-popout-link\"></div>" : "<img class=\"mp3j-popout-link-image\" src=\"" . $image . "\" />";
972
+ //$player = '<div class="mp3j-popout-link-wrap unsel-mjp" id="mp3j_popout_' . $pID . '">' . $image_h . '<'.$tag.'>' . $text . '</'.$tag.'></div>';
973
+ $image_h = ( $image === "" ) ? '<div class="popout-image-mjp"></div>' : '<img class="popout-image-mjp-custom" src="' . $image . '" />';
974
+ $text_h = ( $text !== "" ) ? '<div class="popout-text-mjp"><'.$tag.'>' . $text . '</'.$tag.'></div>' : '';
975
+
976
+ $player = '<div class="popout-wrap-mjp unsel-mjp" id="mp3j_popout_' . $pID . '">';
977
+ $player .= $image_h . $text_h;
978
+ //$player .= '<br class="clearL-mjp">';
979
+ $player .= '</div>';
980
+
981
+
982
+ ////
983
+ $output = $this->drawPlaylistPlayer( $ATTS, true );
984
+ //js player info
985
+ $popoutcss = ( $this->setup['cssPopout'] === true ) ? "{ enabled:true, " .$output['js']. "}" : "{ enabled:false, " .$output['js']. "}";
986
+ //$playerInfo = "{ list: MP3jPLAYLISTS." . $PlayerName . ", tr:0, type:'popout', lstate:" . $list . ", loop:" . $loop . ", play_txt:'Play', pause_txt:'Pause', pp_title:'" . $pp_title . "', autoplay:" . $autoplay . ", download:" . $dload_info . ", vol:" . $vol . ", height:" . $pp_height . ", cssclass: '" . $ATTS['userClasses'] . "', popout_css:{" .$output['js']. "} }";
987
+ $playerInfo = "{ list: MP3jPLAYLISTS." . $PlayerName . ", tr:0, type:'popout', lstate:" . $list . ", loop:" . $loop . ", play_txt:'Play', pause_txt:'Pause', pp_title:'" . $pp_title . "', autoplay:" . $autoplay . ", download:" . $dload_info . ", vol:" . $vol . ", height:" . $pp_height . ", cssclass: '" . $ATTS['userClasses'] . "', popout_css:" .$popoutcss. " }";
988
+ $playerJS = "<script>MP3jPLAYERS.push(" . $playerInfo . ");</script>\n\n";
989
+
990
+
991
+
992
+
993
+ //Finish up
994
+ $this->dbug['str'] .= "\nOK (id " . $this->Player_ID . ")";
995
+ $this->M_no++;
996
+ $this->Player_ID++;
997
+
998
+ return $player . $listJS . $playerJS;
999
+ }
1000
 
1001
 
1002
  //###########################
js/{mp3-jplayer-2.0.js → mp3-jplayer-2.2.js} RENAMED
@@ -1,5 +1,5 @@
1
  /*
2
- MP3-jPlayer 2.0
3
  http://sjward.org/jplayer-for-wordpress
4
  */
5
 
@@ -31,6 +31,8 @@ var MP3_JPLAYER = {
31
  mutes: [],
32
  preSlideVol: false,
33
  exData: false,
 
 
34
 
35
  vars: {
36
  play_f: true,
@@ -138,10 +140,10 @@ var MP3_JPLAYER = {
138
  var tt = event.jPlayer.status.duration;
139
  that.E_loading( that.tID, lp, tt, pt );
140
  });
141
- jQuery(this.jpID).bind(jQuery.jPlayer.event.error, function(event) {
142
- //console.log( 'E:: ' + event.jPlayer.error.type );
143
- that.check_show_jperrors( event );
144
- });
145
 
146
  that.lastformats = supplied;
147
  },
@@ -203,7 +205,9 @@ var MP3_JPLAYER = {
203
 
204
  check_show_jperrors: function ( event ) {
205
  if ( this.tID !== '' && ! this.jperrorIDs[ this.tID ] ) {
206
- this.show_nosolution( this.tID, event.jPlayer.error.type );
 
 
207
  this.jperrorIDs[ this.tID ] = event.jPlayer.error.type;
208
  }
209
  },
@@ -224,7 +228,6 @@ var MP3_JPLAYER = {
224
  }
225
  jQuery('#mp3j_nosolution_' + j).empty().append(message).fadeIn(200);
226
 
227
- //if ( this.exData !== false && errortype === 'e_url' ) {
228
  if ( this.exData !== false ) {
229
  this.exData.jperror = errortype;
230
  var x;
@@ -323,7 +326,7 @@ var MP3_JPLAYER = {
323
  }
324
  }
325
 
326
- if ( pt > 3 && this.exData !== false ) { //TODO:skip threshold
327
  var x;
328
  var l = this.extCalls.change_post.length;
329
  for ( x = 0; x < l; x += 1 ) {
@@ -660,7 +663,6 @@ var MP3_JPLAYER = {
660
 
661
  jQuery(this.jpID).jPlayer("volume", 1 ); //Vol scaling fix
662
  jQuery('#mp3j_nosolution_' + j).hide();
663
-
664
  txt = ('MI' === p.type) ? '<span class="mp3-finding"></span><span class="mp3-tint"></span><span class="mjp-connecting">Connecting</span>' : '<span class="Smp3-finding"></span><span class="mp3-gtint"></span>';
665
  jQuery(this.eID.indiM + j).empty().append(txt);
666
  this.button(j, 'pause');
@@ -675,13 +677,9 @@ var MP3_JPLAYER = {
675
  jQuery(this.eID.dload + j).hide().addClass('whilelinks').fadeIn(400);
676
  }
677
  }
678
-
679
  p.tr = track;
680
  this.tID = j;
681
 
682
- //console.log('--------------');
683
- //console.log('p.list[track].formats (arr): ' + p.list[track].formats );
684
- //console.log('this.lastformats (str): ' +this.lastformats);
685
  var formatString = p.list[track].formats[0] + ( (typeof p.list[track].formats[1] !== 'undefined') ? ',' + p.list[track].formats[1] : '' );
686
  if ( formatString !== this.lastformats || this.jperrorIDs[ j ] ) {
687
  this.jperrorIDs[ j ] = false;
@@ -743,12 +741,10 @@ var MP3_JPLAYER = {
743
  this.state = 'playing';
744
  jQuery(this.jpID).jPlayer("play");
745
  },
746
-
747
  pauseit: function () {
748
  this.state = 'paused';
749
  jQuery(this.jpID).jPlayer("pause");
750
  },
751
-
752
  clearit: function () {
753
  this.state = '';
754
  jQuery(this.jpID).jPlayer("clearMedia");
@@ -849,7 +845,6 @@ var MP3_JPLAYER = {
849
  },
850
 
851
  deviceInfo: function () {
852
-
853
  var isMobile = false;
854
  var os = '';
855
  var device = '';
@@ -885,10 +880,8 @@ var MP3_JPLAYER = {
885
  }
886
  }
887
  }
888
-
889
  return { os:os, device:device, isMobile:isMobile };
890
  }
891
-
892
  };
893
 
894
  // Force browser download
1
  /*
2
+ MP3-jPlayer
3
  http://sjward.org/jplayer-for-wordpress
4
  */
5
 
31
  mutes: [],
32
  preSlideVol: false,
33
  exData: false,
34
+ exThresh: 2,
35
+ showErrors: false,
36
 
37
  vars: {
38
  play_f: true,
140
  var tt = event.jPlayer.status.duration;
141
  that.E_loading( that.tID, lp, tt, pt );
142
  });
143
+ //jQuery(this.jpID).bind(jQuery.jPlayer.event.error, function(event) {
144
+ // console.log( 'E:: ' + event.jPlayer.error.type );
145
+ // that.check_show_jperrors( event );
146
+ //});
147
 
148
  that.lastformats = supplied;
149
  },
205
 
206
  check_show_jperrors: function ( event ) {
207
  if ( this.tID !== '' && ! this.jperrorIDs[ this.tID ] ) {
208
+ if ( this.showErrors === true ) {
209
+ this.show_nosolution( this.tID, event.jPlayer.error.type );
210
+ }
211
  this.jperrorIDs[ this.tID ] = event.jPlayer.error.type;
212
  }
213
  },
228
  }
229
  jQuery('#mp3j_nosolution_' + j).empty().append(message).fadeIn(200);
230
 
 
231
  if ( this.exData !== false ) {
232
  this.exData.jperror = errortype;
233
  var x;
326
  }
327
  }
328
 
329
+ if ( pt >= this.exThresh && this.exData !== false ) {
330
  var x;
331
  var l = this.extCalls.change_post.length;
332
  for ( x = 0; x < l; x += 1 ) {
663
 
664
  jQuery(this.jpID).jPlayer("volume", 1 ); //Vol scaling fix
665
  jQuery('#mp3j_nosolution_' + j).hide();
 
666
  txt = ('MI' === p.type) ? '<span class="mp3-finding"></span><span class="mp3-tint"></span><span class="mjp-connecting">Connecting</span>' : '<span class="Smp3-finding"></span><span class="mp3-gtint"></span>';
667
  jQuery(this.eID.indiM + j).empty().append(txt);
668
  this.button(j, 'pause');
677
  jQuery(this.eID.dload + j).hide().addClass('whilelinks').fadeIn(400);
678
  }
679
  }
 
680
  p.tr = track;
681
  this.tID = j;
682
 
 
 
 
683
  var formatString = p.list[track].formats[0] + ( (typeof p.list[track].formats[1] !== 'undefined') ? ',' + p.list[track].formats[1] : '' );
684
  if ( formatString !== this.lastformats || this.jperrorIDs[ j ] ) {
685
  this.jperrorIDs[ j ] = false;
741
  this.state = 'playing';
742
  jQuery(this.jpID).jPlayer("play");
743
  },
 
744
  pauseit: function () {
745
  this.state = 'paused';
746
  jQuery(this.jpID).jPlayer("pause");
747
  },
 
748
  clearit: function () {
749
  this.state = '';
750
  jQuery(this.jpID).jPlayer("clearMedia");
845
  },
846
 
847
  deviceInfo: function () {
 
848
  var isMobile = false;
849
  var os = '';
850
  var device = '';
880
  }
881
  }
882
  }
 
883
  return { os:os, device:device, isMobile:isMobile };
884
  }
 
885
  };
886
 
887
  // Force browser download
license.txt ADDED
@@ -0,0 +1,281 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5
+ 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
6
+
7
+ Everyone is permitted to copy and distribute verbatim copies
8
+ of this license document, but changing it is not allowed.
9
+
10
+ Preamble
11
+
12
+ The licenses for most software are designed to take away your
13
+ freedom to share and change it. By contrast, the GNU General Public
14
+ License is intended to guarantee your freedom to share and change free
15
+ software--to make sure the software is free for all its users. This
16
+ General Public License applies to most of the Free Software
17
+ Foundation's software and to any other program whose authors commit to
18
+ using it. (Some other Free Software Foundation software is covered by
19
+ the GNU Library General Public License instead.) You can apply it to
20
+ your programs, too.
21
+
22
+ When we speak of free software, we are referring to freedom, not
23
+ price. Our General Public Licenses are designed to make sure that you
24
+ have the freedom to distribute copies of free software (and charge for
25
+ this service if you wish), that you receive source code or can get it
26
+ if you want it, that you can change the software or use pieces of it
27
+ in new free programs; and that you know you can do these things.
28
+
29
+ To protect your rights, we need to make restrictions that forbid
30
+ anyone to deny you these rights or to ask you to surrender the rights.
31
+ These restrictions translate to certain responsibilities for you if you
32
+ distribute copies of the software, or if you modify it.
33
+
34
+ For example, if you distribute copies of such a program, whether
35
+ gratis or for a fee, you must give the recipients all the rights that
36
+ you have. You must make sure that they, too, receive or can get the
37
+ source code. And you must show them these terms so they know their
38
+ rights.
39
+
40
+ We protect your rights with two steps: (1) copyright the software, and
41
+ (2) offer you this license which gives you legal permission to copy,
42
+ distribute and/or modify the software.
43
+
44
+ Also, for each author's protection and ours, we want to make certain
45
+ that everyone understands that there is no warranty for this free
46
+ software. If the software is modified by someone else and passed on, we
47
+ want its recipients to know that what they have is not the original, so
48
+ that any problems introduced by others will not reflect on the original
49
+ authors' reputations.
50
+
51
+ Finally, any free program is threatened constantly by software
52
+ patents. We wish to avoid the danger that redistributors of a free
53
+ program will individually obtain patent licenses, in effect making the
54
+ program proprietary. To prevent this, we have made it clear that any
55
+ patent must be licensed for everyone's free use or not licensed at all.
56
+
57
+ The precise terms and conditions for copying, distribution and
58
+ modification follow.
59
+
60
+ GNU GENERAL PUBLIC LICENSE
61
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
62
+
63
+ 0. This License applies to any program or other work which contains
64
+ a notice placed by the copyright holder saying it may be distributed
65
+ under the terms of this General Public License. The "Program", below,
66
+ refers to any such program or work, and a "work based on the Program"
67
+ means either the Program or any derivative work under copyright law:
68
+ that is to say, a work containing the Program or a portion of it,
69
+ either verbatim or with modifications and/or translated into another
70
+ language. (Hereinafter, translation is included without limitation in
71
+ the term "modification".) Each licensee is addressed as "you".
72
+
73
+ Activities other than copying, distribution and modification are not
74
+ covered by this License; they are outside its scope. The act of
75
+ running the Program is not restricted, and the output from the Program
76
+ is covered only if its contents constitute a work based on the
77
+ Program (independent of having been made by running the Program).
78
+ Whether that is true depends on what the Program does.
79
+
80
+ 1. You may copy and distribute verbatim copies of the Program's
81
+ source code as you receive it, in any medium, provided that you
82
+ conspicuously and appropriately publish on each copy an appropriate
83
+ copyright notice and disclaimer of warranty; keep intact all the
84
+ notices that refer to this License and to the absence of any warranty;
85
+ and give any other recipients of the Program a copy of this License
86
+ along with the Program.
87
+
88
+ You may charge a fee for the physical act of transferring a copy, and
89
+ you may at your option offer warranty protection in exchange for a fee.
90
+
91
+ 2. You may modify your copy or copies of the Program or any portion
92
+ of it, thus forming a work based on the Program, and copy and
93
+ distribute such modifications or work under the terms of Section 1
94
+ above, provided that you also meet all of these conditions:
95
+
96
+ a) You must cause the modified files to carry prominent notices
97
+ stating that you changed the files and the date of any change.
98
+
99
+ b) You must cause any work that you distribute or publish, that in
100
+ whole or in part contains or is derived from the Program or any
101
+ part thereof, to be licensed as a whole at no charge to all third
102
+ parties under the terms of this License.
103
+
104
+ c) If the modified program normally reads commands interactively
105
+ when run, you must cause it, when started running for such
106
+ interactive use in the most ordinary way, to print or display an
107
+ announcement including an appropriate copyright notice and a
108
+ notice that there is no warranty (or else, saying that you provide
109
+ a warranty) and that users may redistribute the program under
110
+ these conditions, and telling the user how to view a copy of this
111
+ License. (Exception: if the Program itself is interactive but
112
+ does not normally print such an announcement, your work based on
113
+ the Program is not required to print an announcement.)
114
+
115
+ These requirements apply to the modified work as a whole. If
116
+ identifiable sections of that work are not derived from the Program,
117
+ and can be reasonably considered independent and separate works in
118
+ themselves, then this License, and its terms, do not apply to those
119
+ sections when you distribute them as separate works. But when you
120
+ distribute the same sections as part of a whole which is a work based
121
+ on the Program, the distribution of the whole must be on the terms of
122
+ this License, whose permissions for other licensees extend to the
123
+ entire whole, and thus to each and every part regardless of who wrote it.
124
+ Thus, it is not the intent of this section to claim rights or contest
125
+ your rights to work written entirely by you; rather, the intent is to
126
+ exercise the right to control the distribution of derivative or
127
+ collective works based on the Program.
128
+
129
+ In addition, mere aggregation of another work not based on the Program
130
+ with the Program (or with a work based on the Program) on a volume of
131
+ a storage or distribution medium does not bring the other work under
132
+ the scope of this License.
133
+
134
+ 3. You may copy and distribute the Program (or a work based on it,
135
+ under Section 2) in object code or executable form under the terms of
136
+ Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+ a) Accompany it with the complete corresponding machine-readable
139
+ source code, which must be distributed under the terms of Sections
140
+ 1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+ b) Accompany it with a written offer, valid for at least three
143
+ years, to give any third party, for a charge no more than your
144
+ cost of physically performing source distribution, a complete
145
+ machine-readable copy of the corresponding source code, to be
146
+ distributed under the terms of Sections 1 and 2 above on a medium
147
+ customarily used for software interchange; or,
148
+
149
+ c) Accompany it with the information you received as to the offer
150
+ to distribute corresponding source code. (This alternative is
151
+ allowed only for noncommercial distribution and only if you
152
+ received the program in object code or executable form with such
153
+ an offer, in accord with Subsection b above.)
154
+
155
+ The source code for a work means the preferred form of the work for
156
+ making modifications to it. For an executable work, complete source
157
+ code means all the source code for all modules it contains, plus any
158
+ associated interface definition files, plus the scripts used to
159
+ control compilation and installation of the executable. However, as a
160
+ special exception, the source code distributed need not include
161
+ anything that is normally distributed (in either source or binary
162
+ form) with the major components (compiler, kernel, and so on) of the
163
+ operating system on which the executable runs, unless that component
164
+ itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering
167
+ access to copy from a designated place, then offering equivalent
168
+ access to copy the source code from the same place counts as
169
+ distribution of the source code, even though third parties are not
170
+ compelled to copy the source along with the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program
173
+ except as expressly provided under this License. Any attempt
174
+ otherwise to copy, modify, sublicense or distribute the Program is
175
+ void, and will automatically terminate your rights under this License.
176
+ However, parties who have received copies, or rights, from you under
177
+ this License will not have their licenses terminated so long as such
178
+ parties remain in full compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not
181
+ signed it. However, nothing else grants you permission to modify or
182
+ distribute the Program or its derivative works. These actions are
183
+ prohibited by law if you do not accept this License. Therefore, by
184
+ modifying or distributing the Program (or any work based on the
185
+ Program), you indicate your acceptance of this License to do so, and
186
+ all its terms and conditions for copying, distributing or modifying
187
+ the Program or works based on it.
188
+
189
+ 6. Each time you redistribute the Program (or any work based on the
190
+ Program), the recipient automatically receives a license from the
191
+ original licensor to copy, distribute or modify the Program subject to
192
+ these terms and conditions. You may not impose any further
193
+ restrictions on the recipients' exercise of the rights granted herein.
194
+ You are not responsible for enforcing compliance by third parties to
195
+ this License.
196
+
197
+ 7. If, as a consequence of a court judgment or allegation of patent
198
+ infringement or for any other reason (not limited to patent issues),
199
+ conditions are imposed on you (whether by court order, agreement or
200
+ otherwise) that contradict the conditions of this License, they do not
201
+ excuse you from the conditions of this License. If you cannot
202
+ distribute so as to satisfy simultaneously your obligations under this
203
+ License and any other pertinent obligations, then as a consequence you
204
+ may not distribute the Program at all. For example, if a patent
205
+ license would not permit royalty-free redistribution of the Program by
206
+ all those who receive copies directly or indirectly through you, then
207
+ the only way you could satisfy both it and this License would be to
208
+ refrain entirely from distribution of the Program.
209
+
210
+ If any portion of this section is held invalid or unenforceable under
211
+ any particular circumstance, the balance of the section is intended to
212
+ apply and the section as a whole is intended to apply in other
213
+ circumstances.
214
+
215
+ It is not the purpose of this section to induce you to infringe any
216
+ patents or other property right claims or to contest validity of any
217
+ such claims; this section has the sole purpose of protecting the
218
+ integrity of the free software distribution system, which is
219
+ implemented by public license practices. Many people have made
220
+ generous contributions to the wide range of software distributed
221
+ through that system in reliance on consistent application of that
222
+ system; it is up to the author/donor to decide if he or she is willing
223
+ to distribute software through any other system and a licensee cannot
224
+ impose that choice.
225
+
226
+ This section is intended to make thoroughly clear what is believed to
227
+ be a consequence of the rest of this License.
228
+
229
+ 8. If the distribution and/or use of the Program is restricted in
230
+ certain countries either by patents or by copyrighted interfaces, the
231
+ original copyright holder who places the Program under this License
232
+ may add an explicit geographical distribution limitation excluding
233
+ those countries, so that distribution is permitted only in or among
234
+ countries not thus excluded. In such case, this License incorporates
235
+ the limitation as if written in the body of this License.
236
+
237
+ 9. The Free Software Foundation may publish revised and/or new versions
238
+ of the General Public License from time to time. Such new versions will
239
+ be similar in spirit to the present version, but may differ in detail to
240
+ address new problems or concerns.
241
+
242
+ Each version is given a distinguishing version number. If the Program
243
+ specifies a version number of this License which applies to it and "any
244
+ later version", you have the option of following the terms and conditions
245
+ either of that version or of any later version published by the Free
246
+ Software Foundation. If the Program does not specify a version number of
247
+ this License, you may choose any version ever published by the Free Software
248
+ Foundation.
249
+
250
+ 10. If you wish to incorporate parts of the Program into other free
251
+ programs whose distribution conditions are different, write to the author
252
+ to ask for permission. For software which is copyrighted by the Free
253
+ Software Foundation, write to the Free Software Foundation; we sometimes
254
+ make exceptions for this. Our decision will be guided by the two goals
255
+ of preserving the free status of all derivatives of our free software and
256
+ of promoting the sharing and reuse of software generally.
257
+
258
+ NO WARRANTY
259
+
260
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+ REPAIR OR CORRECTION.
269
+
270
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+ POSSIBILITY OF SUCH DAMAGES.
279
+
280
+ END OF TERMS AND CONDITIONS
281
+
main.php CHANGED
@@ -2,7 +2,7 @@
2
  if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
3
 
4
  // ---------------------- Update Me
5
- var $version_of_plugin = "2.1";
6
  var $M_no = 0;
7
  var $F_no = 0;
8
  var $S_no = 0;
@@ -15,14 +15,21 @@ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
15
  var $F_listname = false;
16
  var $F_listlength = false;
17
  var $F_LISTS = array();
 
 
 
 
 
 
 
 
 
18
 
19
  var $currentID = '';
20
  var $LibraryI = false;
21
  var $JS = array(
22
  'playlists' => array(),
23
- //'listref' => array(),
24
- 'players' => array(),
25
- 'Stitle' => ''
26
  );
27
  var $dbug = array(
28
  'str' => '',
@@ -37,7 +44,6 @@ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
37
  var $stylesheet = "";
38
  var $folder_order = "asc";
39
  var $PP_css_url = "";
40
- //var $PP_css_settings = "";
41
  var $PluginFolder = "";
42
 
43
  var $allowedFeedExtensions = array();
@@ -72,6 +78,54 @@ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
72
 
73
 
74
  ////
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  //##########
76
  function getImageSizeWP ( $size )
77
  {
@@ -1101,9 +1155,7 @@ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
1101
  wp_enqueue_script( 'jquery-ui-mouse', $this->PluginFolder . '/js/wp-backwards-compat/ui.mouse.js', false, '1.8.10' );
1102
  wp_enqueue_script( 'jquery-ui-slider', $this->PluginFolder . '/js/wp-backwards-compat/ui.slider.js', false, '1.8.10' );
1103
  }
1104
- //if ( $this->theSettings['touch_punch_js'] == "true" ) { // add ui patch for touch screens
1105
  wp_enqueue_script( 'jquery-touch-punch', $this->PluginFolder . '/js/wp-backwards-compat/jquery.ui.touch-punch.min.js', false, '0.2.2' );
1106
- //}
1107
  $this->dbug['str'] .= "\n\nScript request added (jQuery & UI)";
1108
  }
1109
  else {
@@ -1112,33 +1164,27 @@ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
1112
 
1113
  //jplayer and plugin js
1114
  wp_enqueue_script( 'jplayer271', $this->PluginFolder . '/js/jquery.jplayer.min.2.7.1.js', false, '2.7.1' );
1115
- wp_enqueue_script( 'mp3-jplayer', $this->PluginFolder . '/js/mp3-jplayer-2.0.js', false, '2.0' );
1116
 
1117
  $skins = $this->SKINS;
1118
- $themepath = $skins[ $theme ]['url'];
1119
-
1120
- $name = strrchr( $themepath, "/");
1121
- $name = str_replace( "/", "", $name);
1122
- $name = str_replace( ".css", "", $name);
1123
- wp_enqueue_style( $name, $themepath, false, $this->version_of_plugin );
1124
 
1125
- $this->dbug['str'] .= "\nScript request added (MP3-jPlayer and css)\n";
1126
- $this->write_user_style( $theme );
1127
- $this->PP_css_url = ( strpos($themepath, "http://") === false ) ? $this->WPinstallpath . $themepath : $themepath;
 
 
 
 
1128
  $this->SCRIPT_CALL = true;
1129
  return;
1130
  }
1131
 
1132
-
1133
- //~~~~~
1134
- function write_user_style( $theme )
1135
- {
1136
- //if ( $this->theSettings['use_fixed_css'] == "false" ) {
1137
- echo $this->writeColoursCSS();
1138
- //}
1139
- return;
1140
- }
1141
-
1142
 
1143
  //~~~~~
1144
  function writeColoursCSS ()
@@ -1303,9 +1349,7 @@ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
1303
  $ppTITLE_STYLE = 'cssTitle: { "left": "' .$ATTS['titleoffset']. '", "right":"' .$ATTS['titleoffsetr']. '", "top":"' .$ATTS['titletop']. '" },';
1304
  $ppIMAGE_STYLE = 'cssImage: { "overflow": "' .$ATTS['imgoverflow']. '", "width":"'.$ppImgW.'", "height":"'.$ppImgH.'" },';
1305
  $ppFONT_SIZES = 'cssFontSize: { "title": "' .$ATTS['font_size_1']. 'px", "caption": "' .( intval($ATTS['font_size_1']) * 0.7 ). 'px", "list": "' .$ATTS['font_size_2']. 'px" },';
1306
-
1307
-
1308
-
1309
  //if ( $this->PP_css_settings === '' ) {
1310
  $PPcss = $this->makeColourPropsJS();
1311
  $PPcss .= "\n\t\t\t" .$ppINTERFACE_STYLE . "\n\t\t\t" . $ppTITLE_STYLE . "\n\t\t\t" . $ppIMAGE_STYLE . "\n\t\t\t" . $ppFONT_SIZES;
@@ -1505,7 +1549,8 @@ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
1505
  'allowRangeRequests' => 'true',
1506
  'playerHeight' => '92px',
1507
  'font_size_mp3t' => '18px',
1508
- 'font_size_mp3j' => '18px'
 
1509
  );
1510
 
1511
  $theOptions = get_option($this->adminOptionsName);
2
  if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
3
 
4
  // ---------------------- Update Me
5
+ var $version_of_plugin = "2.2";
6
  var $M_no = 0;
7
  var $F_no = 0;
8
  var $S_no = 0;
15
  var $F_listname = false;
16
  var $F_listlength = false;
17
  var $F_LISTS = array();
18
+ var $isExcerpt = false;
19
+ var $isAllowedExcerpt = false;
20
+ var $setup = array(
21
+ 'stylesheet' => true,
22
+ 'cssHead' => true,
23
+ 'stylesheetPopout' => true,
24
+ 'cssPopout' => true,
25
+ 'designPage' => true
26
+ );
27
 
28
  var $currentID = '';
29
  var $LibraryI = false;
30
  var $JS = array(
31
  'playlists' => array(),
32
+ 'players' => array()
 
 
33
  );
34
  var $dbug = array(
35
  'str' => '',
44
  var $stylesheet = "";
45
  var $folder_order = "asc";
46
  var $PP_css_url = "";
 
47
  var $PluginFolder = "";
48
 
49
  var $allowedFeedExtensions = array();
78
 
79
 
80
  ////
81
+ //~~~~~
82
+ function get_excerpt_handler( $stored = "" )
83
+ {
84
+ global $post;
85
+ $this->dbug['str'] .= "\n#early excerpt [" .$post->post_title. "]#";
86
+ $this->isExcerpt = true;
87
+ $this->isAllowedExcerpt = false;
88
+ if ( $stored != "" && $this->theSettings['run_shcode_in_excerpt'] ) {
89
+ $this->isAllowedExcerpt = true;
90
+ }
91
+ return $stored;
92
+ }
93
+
94
+ //~~~~~
95
+ function afterExcerpt ( $stuff = '' )
96
+ {
97
+ global $post;
98
+ $this->dbug['str'] .= "\n#late excerpt [" .$post->post_title. "]#";
99
+ $this->isExcerpt = false;
100
+ $this->isAllowedExcerpt = false;
101
+ return $stuff;
102
+ }
103
+
104
+ //~~~~~
105
+ function canRun ()
106
+ {
107
+ $allowed = true;
108
+
109
+ if ( $this->isExcerpt === true ) {
110
+ if ( $this->isAllowedExcerpt === false ) {
111
+ $this->dbug['str'] .= "\nExiting (isExcerpt, allowed/manual:false)";
112
+ $allowed = false;
113
+ }
114
+ }
115
+ else {
116
+ if ( ! $this->Caller && ! is_singular() ) {
117
+ if ( $this->theSettings['player_onblog'] == 'false' ) {
118
+ $this->dbug['str'] .= "\nExiting (player_onblog is unticked)";
119
+ $allowed = false;
120
+ }
121
+ }
122
+ }
123
+ return $allowed;
124
+ }
125
+
126
+
127
+
128
+
129
  //##########
130
  function getImageSizeWP ( $size )
131
  {
1155
  wp_enqueue_script( 'jquery-ui-mouse', $this->PluginFolder . '/js/wp-backwards-compat/ui.mouse.js', false, '1.8.10' );
1156
  wp_enqueue_script( 'jquery-ui-slider', $this->PluginFolder . '/js/wp-backwards-compat/ui.slider.js', false, '1.8.10' );
1157
  }
 
1158
  wp_enqueue_script( 'jquery-touch-punch', $this->PluginFolder . '/js/wp-backwards-compat/jquery.ui.touch-punch.min.js', false, '0.2.2' );
 
1159
  $this->dbug['str'] .= "\n\nScript request added (jQuery & UI)";
1160
  }
1161
  else {
1164
 
1165
  //jplayer and plugin js
1166
  wp_enqueue_script( 'jplayer271', $this->PluginFolder . '/js/jquery.jplayer.min.2.7.1.js', false, '2.7.1' );
1167
+ wp_enqueue_script( 'mp3-jplayer', $this->PluginFolder . '/js/mp3-jplayer-2.2.js', false, '2.2' );
1168
 
1169
  $skins = $this->SKINS;
1170
+ if ( isset( $skins[ $theme ]['url'] ) ) {
1171
+ $themepath = $skins[ $theme ]['url'];
1172
+ } else { //fall back to default
1173
+ $themepath = $skins['defaultLight']['url'];
1174
+ $this->dbug['str'] .= "\nNo css, falling back to default";
1175
+ }
1176
 
1177
+ if ( $this->setup['stylesheet'] === true ) {
1178
+ wp_enqueue_style( 'mp3-jplayer', $themepath, false, $this->version_of_plugin );
1179
+ }
1180
+ if ( $this->setup['cssHead'] === true ) {
1181
+ echo $this->writeColoursCSS();
1182
+ }
1183
+ $this->PP_css_url = $themepath;
1184
  $this->SCRIPT_CALL = true;
1185
  return;
1186
  }
1187
 
 
 
 
 
 
 
 
 
 
 
1188
 
1189
  //~~~~~
1190
  function writeColoursCSS ()
1349
  $ppTITLE_STYLE = 'cssTitle: { "left": "' .$ATTS['titleoffset']. '", "right":"' .$ATTS['titleoffsetr']. '", "top":"' .$ATTS['titletop']. '" },';
1350
  $ppIMAGE_STYLE = 'cssImage: { "overflow": "' .$ATTS['imgoverflow']. '", "width":"'.$ppImgW.'", "height":"'.$ppImgH.'" },';
1351
  $ppFONT_SIZES = 'cssFontSize: { "title": "' .$ATTS['font_size_1']. 'px", "caption": "' .( intval($ATTS['font_size_1']) * 0.7 ). 'px", "list": "' .$ATTS['font_size_2']. 'px" },';
1352
+
 
 
1353
  //if ( $this->PP_css_settings === '' ) {
1354
  $PPcss = $this->makeColourPropsJS();
1355
  $PPcss .= "\n\t\t\t" .$ppINTERFACE_STYLE . "\n\t\t\t" . $ppTITLE_STYLE . "\n\t\t\t" . $ppIMAGE_STYLE . "\n\t\t\t" . $ppFONT_SIZES;
1549
  'allowRangeRequests' => 'true',
1550
  'playerHeight' => '92px',
1551
  'font_size_mp3t' => '18px',
1552
+ 'font_size_mp3j' => '18px',
1553
+ 'showErrors' => 'admin'
1554
  );
1555
 
1556
  $theOptions = get_option($this->adminOptionsName);
mp3jplayer.php CHANGED
@@ -3,12 +3,12 @@
3
  Plugin Name: MP3-jPlayer
4
  Plugin URI: http://mp3-jplayer.com
5
  Description: Easy, Flexible Audio for WordPress.
6
- Version: 2.1
7
  Author: Simon Ward
8
  Author URI: http://www.sjward.org
9
  License: GPL2
10
 
11
- Copyright 2014 Simon Ward
12
 
13
  This program is free software; you can redistribute it and/or modify
14
  it under the terms of the GNU General Public License, version 2, as
@@ -24,15 +24,14 @@ License: GPL2
24
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
  */
26
 
27
-
28
  if ( ! function_exists( 'get_bloginfo' ) ) {
29
  die();
30
  }
31
 
32
 
33
- $mp3j_path = dirname(__FILE__);
34
- include_once( $mp3j_path . '/main.php');
35
- include_once( $mp3j_path . '/frontend.php'); //extends main
36
 
37
  if ( class_exists("MP3j_Front") ) {
38
  $mp3_fox = new MP3j_Front();
@@ -40,15 +39,14 @@ if ( class_exists("MP3j_Front") ) {
40
 
41
  if ( isset($mp3_fox) )
42
  {
43
- include_once( $mp3j_path . '/widget-ui.php'); //ui widget (playlister)
44
- include_once( $mp3j_path . '/widget-sh.php'); //shortcodes Widget
45
 
46
  $ops = $mp3_fox->theSettings;
47
  if ( is_admin() )
48
  {
49
- include_once( $mp3j_path . '/admin-settings.php'); //settings page
50
- //include_once( $mp3j_path . '/admin-help.php');
51
- include_once( $mp3j_path . '/admin-colours.php');
52
 
53
  function mp3j_adminpage()
54
  {
@@ -72,11 +70,11 @@ if ( isset($mp3_fox) )
72
  add_submenu_page( 'mp3-jplayer', 'Settings | MP3 jPlayer', 'Settings', 'manage_options', 'mp3-jplayer', 'mp3j_print_admin_page' ); //root in sub
73
  add_action( 'admin_head-'. $pluginpage, array(&$mp3_fox, 'mp3j_admin_header') );
74
 
75
- //Design page
76
- $subm_colours = add_submenu_page( 'mp3-jplayer', 'Design | MP3 jPlayer', 'Design', 'manage_options', 'mp3-jplayer-colours', 'mp3j_print_colours_page' );
77
- add_action( 'admin_head-'. $subm_colours, array(&$mp3_fox, 'mp3j_admin_colours_header') );
78
- $mp3_fox->dbug['str'] .= 'colours handle: ' . $subm_colours;
79
-
80
  //Extension pages
81
  foreach ( $mp3_fox->EXTpages as $p ) {
82
  $submenu = add_submenu_page( $p['parent'], $p['title'], $p['menuName'], $p['capability'], $p['slug'], $p['drawFunction'] );
@@ -84,11 +82,7 @@ if ( isset($mp3_fox) )
84
  add_action( 'admin_head-'. $submenu, $p['scriptsFunction'] );
85
  }
86
  }
87
-
88
- //Help page
89
- //$subm_help = add_submenu_page( 'mp3-jplayer', 'Help | MP3 jPlayer', 'Help', 'manage_options', 'mp3-jplayer-help', 'mp3j_print_help_page' );
90
- //add_action( 'admin_head-'. $subm_help, array(&$mp3_fox, 'mp3j_admin_header') );
91
-
92
  add_filter( 'plugin_action_links', 'mp3j_plugin_links', 10, 2 );
93
  }
94
 
@@ -104,9 +98,7 @@ if ( isset($mp3_fox) )
104
 
105
  add_action('deactivate_mp3-jplayer/mp3jplayer.php', array(&$mp3_fox, 'uninitFox'));
106
  add_action('admin_menu', 'mp3j_adminpage', 100);
107
-
108
  //add_action( 'admin_enqueue_scripts', array(&$mp3_fox, 'adminPostEditHead') );
109
-
110
  }
111
 
112
 
@@ -127,6 +119,11 @@ if ( isset($mp3_fox) )
127
  $lib = apply_filters('mp3j_grab_library', '' );
128
  return $lib;
129
  }
 
 
 
 
 
130
 
131
 
132
  //Widgets
@@ -146,23 +143,17 @@ if ( isset($mp3_fox) )
146
  add_shortcode('mp3j', array(&$mp3_fox, 'inline_play_graphic'));
147
  add_shortcode('mp3-jplayer', array(&$mp3_fox, 'primary_player'));
148
 
149
- //if ( shortcode_exists('popout') ) {
150
  remove_shortcode('popout');
151
- //}
152
  add_shortcode('popout', array(&$mp3_fox, 'popout_link_player'));
153
  add_shortcode('mp3-popout', array(&$mp3_fox, 'popout_link_player'));
154
 
155
  if ( $ops['replace_WP_playlist'] === 'true' && ! is_admin() ) {
156
- //if ( shortcode_exists('playlist') ) {
157
  remove_shortcode('playlist');
158
- //}
159
  add_shortcode('playlist', array(&$mp3_fox, 'replacePlaylistShortcode'));
160
  }
161
 
162
  if ( ! is_admin() && ($ops['replace_WP_audio'] === 'true' || $ops['replace_WP_embedded'] === 'true' || $ops['replace_WP_attached'] === 'true') ) {
163
- //if ( shortcode_exists('audio') ) {
164
  remove_shortcode('audio');
165
- //}
166
  add_shortcode('audio', array(&$mp3_fox, 'replaceAudioShortcode'));
167
  }
168
 
@@ -181,6 +172,9 @@ if ( isset($mp3_fox) )
181
  add_action('wp_footer', array(&$mp3_fox, 'checkAddScripts'), 1); //Final chance to enqueue, process this action early (priority < 20).
182
  add_action('wp_footer', array(&$mp3_fox, 'footercode_handler'), 200); //Add any inline js, process this action late (enqueues fire at priority 20).
183
 
 
 
 
184
  //options
185
  if ( $ops['make_player_from_link'] == "true" ) {
186
  add_filter('the_content', array(&$mp3_fox, 'replace_links'), 1);
3
  Plugin Name: MP3-jPlayer
4
  Plugin URI: http://mp3-jplayer.com
5
  Description: Easy, Flexible Audio for WordPress.
6
+ Version: 2.2
7
  Author: Simon Ward
8
  Author URI: http://www.sjward.org
9
  License: GPL2
10
 
11
+ Copyright 2015 Simon Ward
12
 
13
  This program is free software; you can redistribute it and/or modify
14
  it under the terms of the GNU General Public License, version 2, as
24
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
  */
26
 
 
27
  if ( ! function_exists( 'get_bloginfo' ) ) {
28
  die();
29
  }
30
 
31
 
32
+ $path = dirname(__FILE__);
33
+ include_once( $path . '/main.php');
34
+ include_once( $path . '/frontend.php'); //extends main
35
 
36
  if ( class_exists("MP3j_Front") ) {
37
  $mp3_fox = new MP3j_Front();
39
 
40
  if ( isset($mp3_fox) )
41
  {
42
+ include_once( $path . '/widget-ui.php'); //ui widget (playlister)
43
+ include_once( $path . '/widget-sh.php'); //shortcodes Widget
44
 
45
  $ops = $mp3_fox->theSettings;
46
  if ( is_admin() )
47
  {
48
+ include_once( $path . '/admin-settings.php'); //settings page
49
+ include_once( $path . '/admin-colours.php');
 
50
 
51
  function mp3j_adminpage()
52
  {
70
  add_submenu_page( 'mp3-jplayer', 'Settings | MP3 jPlayer', 'Settings', 'manage_options', 'mp3-jplayer', 'mp3j_print_admin_page' ); //root in sub
71
  add_action( 'admin_head-'. $pluginpage, array(&$mp3_fox, 'mp3j_admin_header') );
72
 
73
+ if ( $mp3_fox->setup['designPage'] === true ) {
74
+ $subm_colours = add_submenu_page( 'mp3-jplayer', 'Design | MP3 jPlayer', 'Design', 'manage_options', 'mp3-jplayer-colours', 'mp3j_print_colours_page' );
75
+ add_action( 'admin_head-'. $subm_colours, array(&$mp3_fox, 'mp3j_admin_colours_header') );
76
+ $mp3_fox->dbug['str'] .= 'colours handle: ' . $subm_colours;
77
+ }
78
  //Extension pages
79
  foreach ( $mp3_fox->EXTpages as $p ) {
80
  $submenu = add_submenu_page( $p['parent'], $p['title'], $p['menuName'], $p['capability'], $p['slug'], $p['drawFunction'] );
82
  add_action( 'admin_head-'. $submenu, $p['scriptsFunction'] );
83
  }
84
  }
85
+
 
 
 
 
86
  add_filter( 'plugin_action_links', 'mp3j_plugin_links', 10, 2 );
87
  }
88
 
98
 
99
  add_action('deactivate_mp3-jplayer/mp3jplayer.php', array(&$mp3_fox, 'uninitFox'));
100
  add_action('admin_menu', 'mp3j_adminpage', 100);
 
101
  //add_action( 'admin_enqueue_scripts', array(&$mp3_fox, 'adminPostEditHead') );
 
102
  }
103
 
104
 
119
  $lib = apply_filters('mp3j_grab_library', '' );
120
  return $lib;
121
  }
122
+
123
+ function mp3j_settings ( $settings = array() ) {
124
+ do_action('mp3j_settings', $settings );
125
+ }
126
+ add_action('mp3j_settings', array(&$mp3_fox, 'mp3j_settings'), 1, 1 );
127
 
128
 
129
  //Widgets
143
  add_shortcode('mp3j', array(&$mp3_fox, 'inline_play_graphic'));
144
  add_shortcode('mp3-jplayer', array(&$mp3_fox, 'primary_player'));
145
 
 
146
  remove_shortcode('popout');
 
147
  add_shortcode('popout', array(&$mp3_fox, 'popout_link_player'));
148
  add_shortcode('mp3-popout', array(&$mp3_fox, 'popout_link_player'));
149
 
150
  if ( $ops['replace_WP_playlist'] === 'true' && ! is_admin() ) {
 
151
  remove_shortcode('playlist');
 
152
  add_shortcode('playlist', array(&$mp3_fox, 'replacePlaylistShortcode'));
153
  }
154
 
155
  if ( ! is_admin() && ($ops['replace_WP_audio'] === 'true' || $ops['replace_WP_embedded'] === 'true' || $ops['replace_WP_attached'] === 'true') ) {
 
156
  remove_shortcode('audio');
 
157
  add_shortcode('audio', array(&$mp3_fox, 'replaceAudioShortcode'));
158
  }
159
 
172
  add_action('wp_footer', array(&$mp3_fox, 'checkAddScripts'), 1); //Final chance to enqueue, process this action early (priority < 20).
173
  add_action('wp_footer', array(&$mp3_fox, 'footercode_handler'), 200); //Add any inline js, process this action late (enqueues fire at priority 20).
174
 
175
+ add_filter('get_the_excerpt', array(&$mp3_fox, 'get_excerpt_handler'), 1);
176
+ add_filter('the_content', array(&$mp3_fox, 'afterExcerpt'), 9999);
177
+
178
  //options
179
  if ( $ops['make_player_from_link'] == "true" ) {
180
  add_filter('the_content', array(&$mp3_fox, 'replace_links'), 1);
popout.php CHANGED
@@ -6,7 +6,7 @@
6
  <title></title>
7
 
8
  <!--
9
- MP3-jPlayer 2.0
10
  http://mp3-jplayer.com
11
  --->
12
 
@@ -17,7 +17,7 @@
17
  <script type='text/javascript' src='js/popout/slider.min.js'></script>
18
  <script type='text/javascript' src='js/wp-backwards-compat/jquery.ui.touch-punch.min.js'></script>
19
  <script type='text/javascript' src='js/jquery.jplayer.min.2.7.1.js'></script>
20
- <script type='text/javascript' src='js/mp3-jplayer-2.0.js'></script>
21
 
22
  <script type='text/javascript'>
23
  function loadcss(filename) {
@@ -30,9 +30,15 @@
30
  }
31
  };
32
 
 
 
 
 
33
  if( window.opener && !window.opener.closed && window.opener.MP3_JPLAYER && window.opener.MP3_JPLAYER.launched_ID !== null ) {
34
 
35
- loadcss( window.opener.MP3_JPLAYER.vars.stylesheet_url );
 
 
36
 
37
  MP3_JPLAYER.vars.play_f = false; // always set false!
38
  MP3_JPLAYER.plugin_path = window.opener.MP3_JPLAYER.plugin_path;
@@ -42,7 +48,7 @@
42
  MP3_JPLAYER.vars.dl_remote_path = window.opener.MP3_JPLAYER.vars.dl_remote_path;
43
 
44
  var pl_info_wo = window.opener.MP3_JPLAYER.pl_info; //copy
45
- var auto_play = ( window.opener.MP3_JPLAYER.was_playing !== 'undefined' && window.opener.MP3_JPLAYER.was_playing === true ) ? true : pl_info_wo[MP3_JPLAYER.launched_ID].autoplay;
46
  window.opener.MP3_JPLAYER.was_playing = false;
47
 
48
  MP3_JPLAYER.pl_info = [{
@@ -69,11 +75,32 @@
69
 
70
  MP3_JPLAYER.extStyles = window.opener.MP3_JPLAYER.extStyles;
71
  MP3_JPLAYER.skinJS = window.opener.MP3_JPLAYER.skinJS;
 
 
 
 
 
 
 
 
 
 
 
 
72
  }
73
 
74
 
75
  jQuery(document).ready(function () {
76
  if( window.opener && !window.opener.closed && window.opener.MP3_JPLAYER && window.opener.MP3_JPLAYER.launched_ID !== null ) {
 
 
 
 
 
 
 
 
 
77
  if ( MP3_JPLAYER.skinJS !== '' ) {
78
  jQuery.getScript( MP3_JPLAYER.skinJS, function () {
79
  MJP_SKINS_INIT();
@@ -83,22 +110,6 @@
83
  MP3_JPLAYER.init();
84
  }
85
 
86
- /*
87
- var j;
88
- var l = MP3_JPLAYER.extJS.length;
89
- if ( l > 0 ) {
90
- for ( j = 0; j < l; j +=1 ) {
91
- jQuery.getScript( MP3_JPLAYER.extJS[ j ], function () {
92
- MJP_SKINS_INIT();
93
- });
94
- }
95
- MP3_JPLAYER.init();
96
- } else {
97
-
98
- }
99
- */
100
-
101
-
102
  } else {
103
  jQuery("body").empty();
104
  jQuery("body").css("background", '#222');
@@ -106,6 +117,7 @@
106
  jQuery("body").append("<h4 style='margin-left:10px; font:normal normal 700 14px arial,sans-serif;'>Please launch a playlist from the site to use me, I've been refreshed and can't find my parent window.</h4>");
107
  return;
108
  }
 
109
  });
110
  </script>
111
 
@@ -187,7 +199,7 @@
187
 
188
 
189
  <script type="text/javascript">
190
- if(window.opener && !window.opener.closed) {
191
 
192
  if ( MP3_JPLAYER.pl_info[0].height !== false ) {
193
  jQuery(".interface-mjp").css({ "height": MP3_JPLAYER.pl_info[0].height+"px" });
@@ -209,7 +221,7 @@
209
 
210
  jQuery(".wrap-mjp").addClass(MP3_JPLAYER.pl_info[0].cssclass);
211
 
212
- if ( MP3_JPLAYER.pl_info[0].popout_css !== "undefined" ) {
213
  var PPcss = MP3_JPLAYER.pl_info[0].popout_css;
214
 
215
  jQuery("body").css( "background" , PPcss.colours[0] + " url('" + PPcss.colours[11] + "')");
6
  <title></title>
7
 
8
  <!--
9
+ MP3-jPlayer
10
  http://mp3-jplayer.com
11
  --->
12
 
17
  <script type='text/javascript' src='js/popout/slider.min.js'></script>
18
  <script type='text/javascript' src='js/wp-backwards-compat/jquery.ui.touch-punch.min.js'></script>
19
  <script type='text/javascript' src='js/jquery.jplayer.min.2.7.1.js'></script>
20
+ <script type='text/javascript' src='js/mp3-jplayer-2.2.js'></script>
21
 
22
  <script type='text/javascript'>
23
  function loadcss(filename) {
30
  }
31
  };
32
 
33
+ function getParentInfo ( j ) {
34
+ jQuery.getScript( window.opener.MP3_JPLAYER.extJS[ j ].loc, function(){} );
35
+ };
36
+
37
  if( window.opener && !window.opener.closed && window.opener.MP3_JPLAYER && window.opener.MP3_JPLAYER.launched_ID !== null ) {
38
 
39
+ if ( typeof window.opener.MP3_JPLAYER.vars.stylesheet_url !== 'undefined' ) {
40
+ loadcss( window.opener.MP3_JPLAYER.vars.stylesheet_url );
41
+ }
42
 
43
  MP3_JPLAYER.vars.play_f = false; // always set false!
44
  MP3_JPLAYER.plugin_path = window.opener.MP3_JPLAYER.plugin_path;
48
  MP3_JPLAYER.vars.dl_remote_path = window.opener.MP3_JPLAYER.vars.dl_remote_path;
49
 
50
  var pl_info_wo = window.opener.MP3_JPLAYER.pl_info; //copy
51
+ var auto_play = ( typeof window.opener.MP3_JPLAYER.was_playing !== 'undefined' && window.opener.MP3_JPLAYER.was_playing === true ) ? true : pl_info_wo[MP3_JPLAYER.launched_ID].autoplay;
52
  window.opener.MP3_JPLAYER.was_playing = false;
53
 
54
  MP3_JPLAYER.pl_info = [{
75
 
76
  MP3_JPLAYER.extStyles = window.opener.MP3_JPLAYER.extStyles;
77
  MP3_JPLAYER.skinJS = window.opener.MP3_JPLAYER.skinJS;
78
+
79
+ MP3_JPLAYER.exThresh = window.opener.MP3_JPLAYER.exThresh;
80
+ MP3_JPLAYER.showErrors = window.opener.MP3_JPLAYER.showErrors;
81
+
82
+ if ( typeof window.opener.statsMJPajax !== 'undefined' ) {
83
+ var wos = window.opener.statsMJPajax;
84
+ var statsMJPajax = {};
85
+ statsMJPajax.WPajaxurl = wos.WPajaxurl;
86
+ statsMJPajax.page = ( typeof wos.page !== 'undefined' ) ? wos.page : '';
87
+ statsMJPajax.vID = ( typeof wos.vID !== 'undefined' ) ? wos.vID : '';
88
+ statsMJPajax.rfr = ( typeof wos.rfr !== 'undefined' ) ? wos.rfr : '';
89
+ }
90
  }
91
 
92
 
93
  jQuery(document).ready(function () {
94
  if( window.opener && !window.opener.closed && window.opener.MP3_JPLAYER && window.opener.MP3_JPLAYER.launched_ID !== null ) {
95
+
96
+ var j;
97
+ var l = window.opener.MP3_JPLAYER.extJS.length;
98
+ if ( l > 0 ) {
99
+ for ( j = 0; j < l; j +=1 ) {
100
+ getParentInfo( j );
101
+ }
102
+ }
103
+
104
  if ( MP3_JPLAYER.skinJS !== '' ) {
105
  jQuery.getScript( MP3_JPLAYER.skinJS, function () {
106
  MJP_SKINS_INIT();
110
  MP3_JPLAYER.init();
111
  }
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  } else {
114
  jQuery("body").empty();
115
  jQuery("body").css("background", '#222');
117
  jQuery("body").append("<h4 style='margin-left:10px; font:normal normal 700 14px arial,sans-serif;'>Please launch a playlist from the site to use me, I've been refreshed and can't find my parent window.</h4>");
118
  return;
119
  }
120
+
121
  });
122
  </script>
123
 
199
 
200
 
201
  <script type="text/javascript">
202
+ if( window.opener && ! window.opener.closed ) {
203
 
204
  if ( MP3_JPLAYER.pl_info[0].height !== false ) {
205
  jQuery(".interface-mjp").css({ "height": MP3_JPLAYER.pl_info[0].height+"px" });
221
 
222
  jQuery(".wrap-mjp").addClass(MP3_JPLAYER.pl_info[0].cssclass);
223
 
224
+ if ( MP3_JPLAYER.pl_info[0].popout_css.enabled === true ) {
225
  var PPcss = MP3_JPLAYER.pl_info[0].popout_css;
226
 
227
  jQuery("body").css( "background" , PPcss.colours[0] + " url('" + PPcss.colours[11] + "')");
readme.txt CHANGED
@@ -3,20 +3,18 @@ Author URI: http://sjward.org
3
  Plugin URI: http://mp3-jplayer.com
4
  Contributors: simon.ward
5
  Donate link: http://www.sjward.org/jplayer-for-wordpress
6
- Tags: audio, audio player, audio playlist, mp3 player, music player, media, playlist player, media player, audio widget, audio download, html5 audio, music player, create audio playlist, mp3, music, html5, flash, jplayer, playlist, jquery, shortcode, widget, css, post, page, sidebar, html 5
7
  License: GPLv2 or later
8
  Requires at least: 2.9
9
  Tested up to: 4.1
10
- Stable tag: 2.1
11
 
12
  Easy, Flexible Audio for WordPress.
13
 
14
  == Description ==
15
 
16
  = Mobile friendly HTML5 audio players and audio playlist players =
17
-
18
  * Add audio player styling and colour options, flexible music playlist players and single-file audio players, popout players and popout links, audio widget players, and downloads to your site.
19
-
20
  * Works with all built-in WordPress options for adding your music, including the recently introduced *Create Audio Playlist* drag & drop interface.
21
 
22
 
@@ -27,17 +25,18 @@ Easy, Flexible Audio for WordPress.
27
 
28
  MP3-jPlayer will expand WP's native shortcodes with new functions and options, giving you a lot of choice in how to set up your music playlists. Here's a few of the features:
29
 
30
- * Flexible multi-player plugin, add unlimited players to pages, posts, sidebars, and template files.
31
  * Offer audio downloads to visitors or logged-in users.
32
- * Playlist entire folders with one simple command.
33
  * Can be selectively integrated with WordPress default audio players.
34
  * Customise the colour scheme, fonts, title and image placements and more on the Player Design page.
35
- * A fully integrated Pop-out player that can be launched from playlist players, or from a stand-alone link.
36
- * Shortcode parameters to give you individual control of player heights, widths, volumes, downloads, player styling, and allow you to play from your library, local folders or urls.
37
  * You can use custom fields to manage playlists.
38
  * Supports playback via HTML5 wherever possible, and falls back to Flash automatically if necessary.
39
  * Supports mp3, m4a, mp4, webm, oga, ogg, and wav files.
40
  * Very easy file counterparting, just upload.
 
41
  * Great compatibility across browsers / platforms. Works on iPhone, iPad, Android.
42
  * Editable player designs via CSS.
43
  * Multisite compatible.
@@ -91,18 +90,27 @@ Either on the [forum at Wordpress](https://wordpress.org/support/plugin/mp3-jpla
91
 
92
  == Screenshots ==
93
 
94
- 1. An example playlist player.
95
- 2. A Popout player on a desktop.
96
- 3. A single file player and a playlister.
97
  4. The plugin's Settings screen.
98
  5. The plugin's Design screen.
99
- 6. Single-file Button players.
100
- 7. Single-file Text players.
101
  8. A Popout player playing on an Android phone.
102
 
103
 
104
  == Changelog ==
105
 
 
 
 
 
 
 
 
 
 
106
  = 2.1 =
107
  * Fixed plugin compatibility with old versions of WP pre 3.6.
108
  * Fixed the widget's folder feed (it was picking up all audio regardless of chosen formats), and the admin-side info message that shows the track count.
3
  Plugin URI: http://mp3-jplayer.com
4
  Contributors: simon.ward
5
  Donate link: http://www.sjward.org/jplayer-for-wordpress
6
+ Tags: audio, audio player, audio playlist, mp3 player, music player, media, mobile, iphone, ipad, integration, multisite, playlist player, media player, audio widget, audio download, html5 audio, music player, mp3, music, html5, flash, jplayer, playlist, jquery, shortcode, widget, css, post, page, sidebar, html 5
7
  License: GPLv2 or later
8
  Requires at least: 2.9
9
  Tested up to: 4.1
10
+ Stable tag: 2.2
11
 
12
  Easy, Flexible Audio for WordPress.
13
 
14
  == Description ==
15
 
16
  = Mobile friendly HTML5 audio players and audio playlist players =
 
17
  * Add audio player styling and colour options, flexible music playlist players and single-file audio players, popout players and popout links, audio widget players, and downloads to your site.
 
18
  * Works with all built-in WordPress options for adding your music, including the recently introduced *Create Audio Playlist* drag & drop interface.
19
 
20
 
25
 
26
  MP3-jPlayer will expand WP's native shortcodes with new functions and options, giving you a lot of choice in how to set up your music playlists. Here's a few of the features:
27
 
28
+ * Flexible multi-player audio plugin, add unlimited audio players to pages, posts, sidebars, and template files.
29
  * Offer audio downloads to visitors or logged-in users.
30
+ * Playlist folders with one simple feed folder command.
31
  * Can be selectively integrated with WordPress default audio players.
32
  * Customise the colour scheme, fonts, title and image placements and more on the Player Design page.
33
+ * A fully integrated Pop-out player that can be launched from playlist players, or from a stand-alone popout link.
34
+ * Shortcode parameters to give you individual control of player heights, widths, volumes, downloads, styling, and allow you to play from your library, local folders or urls.
35
  * You can use custom fields to manage playlists.
36
  * Supports playback via HTML5 wherever possible, and falls back to Flash automatically if necessary.
37
  * Supports mp3, m4a, mp4, webm, oga, ogg, and wav files.
38
  * Very easy file counterparting, just upload.
39
+ * Plays Icecast and Shoutcast audio streams.
40
  * Great compatibility across browsers / platforms. Works on iPhone, iPad, Android.
41
  * Editable player designs via CSS.
42
  * Multisite compatible.
90
 
91
  == Screenshots ==
92
 
93
+ 1. An example audio playlist player.
94
+ 2. A Popout playlist on a desktop.
95
+ 3. A single file music player and a music playlist.
96
  4. The plugin's Settings screen.
97
  5. The plugin's Design screen.
98
+ 6. Single-file Button audio players.
99
+ 7. Single-file Text music players.
100
  8. A Popout player playing on an Android phone.
101
 
102
 
103
  == Changelog ==
104
 
105
+ = 2.2 =
106
+ * Simplified error handling to try and eliminate the false triggering of messages that was occurring on some devices.
107
+ * Added an option to control the frontend display of player error messages, the options are: Never / To admins only / To all. The setting is under advanced tab, default is admins only.
108
+ * Fixed the bug on index/cat pages that broke players in some scenarios when using the 'Show in full content' and 'Show in excerpts' options.
109
+ * Fixed the functioning of 'Show in excerpts' option (this option is still for manually written excerpts only).
110
+ * Added developer methods for contolling css output and design page visibility.
111
+ * Added support in the popout player for the stats collection modules (allows play and download via the popout to be captured).
112
+ * Some css hardening on jQuery ui components.
113
+
114
  = 2.1 =
115
  * Fixed plugin compatibility with old versions of WP pre 3.6.
116
  * Fixed the widget's folder feed (it was picking up all audio regardless of chosen formats), and the admin-side info message that shows the track count.
widget-ui.php CHANGED
@@ -102,6 +102,8 @@ if ( class_exists("WP_Widget") ) {
102
  $pn = ( $instance['pn_buttons'] == "true" ) ? "y" : "n";
103
  $stop = ( $instance['stop_button'] == "true" ) ? "y" : "n";
104
  $images = ( $instance['images'] == "true" ) ? "true" : "false";
 
 
105
  $SHORTCODE .= ' list="' . $list . '"';
106
  $SHORTCODE .= ' autoplay="' . $autoplay . '"';
107
  $SHORTCODE .= ' loop="' . $loop . '"';
@@ -114,7 +116,7 @@ if ( class_exists("WP_Widget") ) {
114
  $SHORTCODE .= ' pos="' . $instance['position'] . '"';
115
  $SHORTCODE .= ' shuffle="' . $instance['shuffle'] . '"';
116
  $SHORTCODE .= ' pick="' . $instance['slice_size'] . '"';
117
- $SHORTCODE .= ' height="' . $instance['player_height'] . '"';
118
  $SHORTCODE .= ' style="' . $instance['style'] . '"';
119
  $SHORTCODE .= ']';
120
 
102
  $pn = ( $instance['pn_buttons'] == "true" ) ? "y" : "n";
103
  $stop = ( $instance['stop_button'] == "true" ) ? "y" : "n";
104
  $images = ( $instance['images'] == "true" ) ? "true" : "false";
105
+ $height = ( $instance['player_height'] == "" ) ? $mp3_fox->theSettings['playerHeight'] : $instance['player_height'];
106
+
107
  $SHORTCODE .= ' list="' . $list . '"';
108
  $SHORTCODE .= ' autoplay="' . $autoplay . '"';
109
  $SHORTCODE .= ' loop="' . $loop . '"';
116
  $SHORTCODE .= ' pos="' . $instance['position'] . '"';
117
  $SHORTCODE .= ' shuffle="' . $instance['shuffle'] . '"';
118
  $SHORTCODE .= ' pick="' . $instance['slice_size'] . '"';
119
+ $SHORTCODE .= ' height="' . $height . '"';
120
  $SHORTCODE .= ' style="' . $instance['style'] . '"';
121
  $SHORTCODE .= ']';
122