MP3-jPlayer - Version 2.3.2

Version Description

  • Fixed the pick-up of titles and images when playing attached audio using the playlist widget.
  • Added ordering options for attached audio. Any audio attached to a page or post will now be ordered according to your setting on the player's 'Settings' page. You can order them by title or upload date, for any other setting they'll default to WP's menu order. ASC/DESC controls the direction.
  • Improved the 'novol' class for hiding volume controls, and added new modifier names 'nobars', 'nocase' which let you hide the bars, and the button bar background on playlist players.
  • Improved js robustness for increased compatibility across different themes/setups.
  • Added new developer methods - provide a volume scale factor (MP3_JPLAYER.factors.vol), and provide the available image data to callbacks regardless of the player or list type.
Download this release

Release Info

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

Code changes from version 2.3.1 to 2.3.2

admin-colours.php CHANGED
@@ -676,6 +676,14 @@ function mp3j_print_colours_page()
676
  <td><code>nopn</code></td>
677
  <td>Hides the prev/next buttons</td>
678
  </tr>
 
 
 
 
 
 
 
 
679
  <tr>
680
  <td><code>nolistbutton</code></td>
681
  <td>Hides the playlist button</td>
@@ -688,6 +696,14 @@ function mp3j_print_colours_page()
688
  <td><code>fullbars</code></td>
689
  <td>Position slider fills the screen/image area</td>
690
  </tr>
 
 
 
 
 
 
 
 
691
  </table>
692
  </div>
693
  </div><!-- Close Tab -->
676
  <td><code>nopn</code></td>
677
  <td>Hides the prev/next buttons</td>
678
  </tr>
679
+ <tr>
680
+ <td><code>novol</code></td>
681
+ <td>Hides the volume control</td>
682
+ </tr>
683
+ <tr>
684
+ <td><code>notitle</code></td>
685
+ <td>Hides the track title and caption</td>
686
+ </tr>
687
  <tr>
688
  <td><code>nolistbutton</code></td>
689
  <td>Hides the playlist button</td>
696
  <td><code>fullbars</code></td>
697
  <td>Position slider fills the screen/image area</td>
698
  </tr>
699
+ <tr>
700
+ <td><code>nobars</code></td>
701
+ <td>removes the position and load bars</td>
702
+ </tr>
703
+ <tr>
704
+ <td><code>nocase</code></td>
705
+ <td>removes the container bar around the buttons</td>
706
+ </tr>
707
  </table>
708
  </div>
709
  </div><!-- Close Tab -->
css/dark.css CHANGED
@@ -133,7 +133,7 @@ div.transport-MI { position:absolute; width:auto; height:38px; right:2px; bottom
133
  div.dloadmp3-MI.logintext {
134
  background-position:-395px -49px;
135
  cursor:pointer;
136
- background-color:transparent;
137
  }
138
  div.dloadmp3-MI.whilelinks:hover { }
139
  /*
@@ -520,9 +520,14 @@ ul.gill-mjp a { font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
520
  .nopn div.next-mjp { display:none; }
521
  .nostop div.stop-mjp { display:none; }
522
  .notitle div.player-track-title { display:none; }
523
- .novol div.mjp-volwrap { display:none; }
524
  div.wrap-mjp.noplayer { display:none; }
525
 
 
 
 
 
 
 
526
  .fullbars div.bars_holder { left:0px; right:0px; height:auto; top:0px; }
527
  .fullbars div.jp-total-time { bottom:45px; text-align:right; z-index:90; }
528
  .fullbars div.jp-play-time { right:95px; bottom:45px; text-align:right; z-index:90; }
@@ -532,6 +537,18 @@ div.wrap-mjp.noplayer { display:none; }
532
  .fullbars span.mp3-tint { position:relative; padding:0 4px 0 4px; margin:0 3px 0 -8px; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; overflow:hidden; }
533
  .fullbars div.mjp-volwrap { bottom:auto; top:0px; right:0px; -webkit-border-bottom-left-radius:2px; -moz-border-radius-bottomleft:2px; border-bottom-left-radius: 2px; }
534
 
 
 
 
 
 
 
 
 
 
 
 
 
535
  div.bigger1 span { font-size:18px !important; }
536
  div.bigger2 span { font-size:23px !important; }
537
  div.bigger3 span { font-size:28px !important; }
133
  div.dloadmp3-MI.logintext {
134
  background-position:-395px -49px;
135
  cursor:pointer;
136
+ background-color:#303030;
137
  }
138
  div.dloadmp3-MI.whilelinks:hover { }
139
  /*
520
  .nopn div.next-mjp { display:none; }
521
  .nostop div.stop-mjp { display:none; }
522
  .notitle div.player-track-title { display:none; }
 
523
  div.wrap-mjp.noplayer { display:none; }
524
 
525
+ .novol div.mjp-volwrap { display:none; }
526
+ .novol div.bars_holder,
527
+ .novol div.statusMI { left:0px; right:0px; }
528
+ .novol span.vol_mp3t,
529
+ .novol span.vol_mp3j { display:none; }
530
+
531
  .fullbars div.bars_holder { left:0px; right:0px; height:auto; top:0px; }
532
  .fullbars div.jp-total-time { bottom:45px; text-align:right; z-index:90; }
533
  .fullbars div.jp-play-time { right:95px; bottom:45px; text-align:right; z-index:90; }
537
  .fullbars span.mp3-tint { position:relative; padding:0 4px 0 4px; margin:0 3px 0 -8px; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; overflow:hidden; }
538
  .fullbars div.mjp-volwrap { bottom:auto; top:0px; right:0px; -webkit-border-bottom-left-radius:2px; -moz-border-radius-bottomleft:2px; border-bottom-left-radius: 2px; }
539
 
540
+ .nocase .innerx { display:none; }
541
+ .nocase .innertab { border-bottom:0; }
542
+ .nocase .transport-MI { right:0; }
543
+ .nocase .buttons-wrap-mjp { left:0; }
544
+ .nocase .transport-MI div,
545
+ .nocase .buttons-wrap-mjp div { -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
546
+ .nocase .mjp-volwrap { bottom:42px; border-top:0; }
547
+
548
+ .nobars .bars_holder,
549
+ .nobars .statusMI { display:none; }
550
+
551
+
552
  div.bigger1 span { font-size:18px !important; }
553
  div.bigger2 span { font-size:23px !important; }
554
  div.bigger3 span { font-size:28px !important; }
css/light.css CHANGED
@@ -23,7 +23,7 @@ div.innerx, div.innerleft, div.innerright, div.innertab, div.innertab2 { positio
23
  div.innerx { left:0px; height:39px; right:0px; bottom:0px; background-color:#d9d9d9; border:1px solid #d0d0d0; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; z-index:18; }
24
  div.innerleft { display:none; }
25
  div.innerright { display:none; }
26
- div.innertab { left:0px; top:0px; right:0px; bottom:41px; border-bottom:1px solid #fff; }
27
 
28
  /* PLAYLIST */
29
  .ul-mjp { margin:0px !important; padding:3px 8px 4px 8px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; border-top:1px solid #f0f0f0; }
@@ -112,7 +112,7 @@ div.transport-MI { position:absolute; width:auto; height:38px; right:2px; bottom
112
  /* background-position:-395px -97px; */
113
  background-position:-395px -48px;
114
  padding:0;
115
- height:40px;
116
  cursor:default;
117
  min-width:36px;
118
  }
@@ -131,7 +131,7 @@ div.transport-MI { position:absolute; width:auto; height:38px; right:2px; bottom
131
  div.dloadmp3-MI.logintext {
132
  background-position:-395px -48px;
133
  cursor:pointer;
134
- background-color:transparent;
135
  }
136
  div.dloadmp3-MI.whilelinks:hover { }
137
  /*
@@ -515,10 +515,15 @@ ul.gill-mjp a { font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
515
  .nopn div.next-mjp { display:none; }
516
  .nostop div.stop-mjp { display:none; }
517
  .notitle div.player-track-title { display:none; }
518
- .novol div.mjp-volwrap { display:none; }
519
  div.wrap-mjp.noplayer { display:none; }
520
 
521
- .fullbars div.bars_holder { left:0px; right:0px; height:auto; top:0px; bottom:41px; border-bottom:1px solid #f8f8f8; }
 
 
 
 
 
 
522
  .fullbars div.jp-total-time { bottom:44px; text-align:right; z-index:90; }
523
  .fullbars div.jp-play-time { right:95px; bottom:44px; text-align:right; z-index:90; }
524
  .fullbars div.statusMI { right:12px; left:auto; bottom:42px; padding:2px 0 2px 0; width:80px; height:auto; background:none; z-index:90; border:none; }
@@ -540,6 +545,17 @@ div.bigger3 .indi_mp3j, div.bigger3 .Smp3-finding, div.bigger3 .mp3-gtint, div.b
540
  div.bigger4 .indi_mp3j, div.bigger4 .Smp3-finding, div.bigger4 .mp3-gtint, div.bigger4 .Smp3-tint,
541
  div.bigger5 .indi_mp3j, div.bigger5 .Smp3-finding, div.bigger5 .mp3-gtint, div.bigger5 .Smp3-tint { font-size:70% !important; }
542
 
 
 
 
 
 
 
 
 
 
 
 
543
 
544
  /* ===== ===== */
545
  div.mp3j-dlframe,
23
  div.innerx { left:0px; height:39px; right:0px; bottom:0px; background-color:#d9d9d9; border:1px solid #d0d0d0; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; z-index:18; }
24
  div.innerleft { display:none; }
25
  div.innerright { display:none; }
26
+ div.innertab { left:0px; top:0px; right:0px; bottom:41px; border-bottom:1px solid #f8f8f8; }
27
 
28
  /* PLAYLIST */
29
  .ul-mjp { margin:0px !important; padding:3px 8px 4px 8px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; border-top:1px solid #f0f0f0; }
112
  /* background-position:-395px -97px; */
113
  background-position:-395px -48px;
114
  padding:0;
115
+ height:38px;
116
  cursor:default;
117
  min-width:36px;
118
  }
131
  div.dloadmp3-MI.logintext {
132
  background-position:-395px -48px;
133
  cursor:pointer;
134
+ background-color:#d9d9d9;
135
  }
136
  div.dloadmp3-MI.whilelinks:hover { }
137
  /*
515
  .nopn div.next-mjp { display:none; }
516
  .nostop div.stop-mjp { display:none; }
517
  .notitle div.player-track-title { display:none; }
 
518
  div.wrap-mjp.noplayer { display:none; }
519
 
520
+ .novol div.mjp-volwrap { display:none; }
521
+ .novol div.bars_holder,
522
+ .novol div.statusMI { left:0px; right:0px; }
523
+ .novol span.vol_mp3t,
524
+ .novol span.vol_mp3j { display:none; }
525
+
526
+ .fullbars div.bars_holder { left:0px; right:0px; height:auto; top:0px; bottom:41px; }
527
  .fullbars div.jp-total-time { bottom:44px; text-align:right; z-index:90; }
528
  .fullbars div.jp-play-time { right:95px; bottom:44px; text-align:right; z-index:90; }
529
  .fullbars div.statusMI { right:12px; left:auto; bottom:42px; padding:2px 0 2px 0; width:80px; height:auto; background:none; z-index:90; border:none; }
545
  div.bigger4 .indi_mp3j, div.bigger4 .Smp3-finding, div.bigger4 .mp3-gtint, div.bigger4 .Smp3-tint,
546
  div.bigger5 .indi_mp3j, div.bigger5 .Smp3-finding, div.bigger5 .mp3-gtint, div.bigger5 .Smp3-tint { font-size:70% !important; }
547
 
548
+ .nocase .innerx { display:none; }
549
+ .nocase .innertab,
550
+ .nocase .statusMI { border-bottom:0; bottom:42px; }
551
+ .nocase .transport-MI { right:0; }
552
+ .nocase .buttons-wrap-mjp { left:0; }
553
+ .nocase .transport-MI div,
554
+ .nocase .buttons-wrap-mjp div { -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
555
+ .nocase .mjp-volwrap { bottom:42px; border:0; }
556
+
557
+ .nobars .bars_holder,
558
+ .nobars .statusMI { display:none; }
559
 
560
  /* ===== ===== */
561
  div.mp3j-dlframe,
css/text.css CHANGED
@@ -498,9 +498,13 @@ ul.gill-mjp a { font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
498
  .nopn div.next-mjp { display:none; }
499
  .nostop div.stop-mjp { display:none; }
500
  .notitle div.player-track-title { display:none; }
501
-
502
  div.wrap-mjp.noplayer { display:none; }
503
 
 
 
 
 
 
504
  .fullbars div.bars_holder { left:0px; right:0px; height:auto; top:0px; background:none; }
505
  .fullbars div.interface-mjp { padding:0px 0 39px 0; }
506
  .fullbars div.innertab { bottom:39px; }
@@ -518,7 +522,7 @@ div.bigger3 .indi_mp3j, div.bigger3 .Smp3-finding, div.bigger3 .mp3-gtint, div.b
518
  div.bigger4 .indi_mp3j, div.bigger4 .Smp3-finding, div.bigger4 .mp3-gtint, div.bigger4 .Smp3-tint,
519
  div.bigger5 .indi_mp3j, div.bigger5 .Smp3-finding, div.bigger5 .mp3-gtint, div.bigger5 .Smp3-tint { font-size:70% !important; }
520
 
521
-
522
 
523
 
524
  /* ===== ===== */
498
  .nopn div.next-mjp { display:none; }
499
  .nostop div.stop-mjp { display:none; }
500
  .notitle div.player-track-title { display:none; }
 
501
  div.wrap-mjp.noplayer { display:none; }
502
 
503
+ .novol div.mjp-volwrap { display:none; }
504
+ .novol div.bars_holder { left:0px; right:0px; }
505
+ .novol span.vol_mp3t,
506
+ .novol span.vol_mp3j { display:none; }
507
+
508
  .fullbars div.bars_holder { left:0px; right:0px; height:auto; top:0px; background:none; }
509
  .fullbars div.interface-mjp { padding:0px 0 39px 0; }
510
  .fullbars div.innertab { bottom:39px; }
522
  div.bigger4 .indi_mp3j, div.bigger4 .Smp3-finding, div.bigger4 .mp3-gtint, div.bigger4 .Smp3-tint,
523
  div.bigger5 .indi_mp3j, div.bigger5 .Smp3-finding, div.bigger5 .mp3-gtint, div.bigger5 .Smp3-tint { font-size:70% !important; }
524
 
525
+ .nobars .bars_holder { display:none; }
526
 
527
 
528
  /* ===== ===== */
css/v1-skins/v1-dark.css CHANGED
@@ -191,15 +191,6 @@ ul.gill-mjp a { font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
191
  .ui-state-default,
192
  .ui-widget-content .ui-state-default { outline:none; border:0px; }
193
 
194
- /* ===== user style param ===== */
195
- .nolistbutton div.playlist-toggle-MI { visibility:hidden; }
196
- .nopopoutbutton div.mp3j-popout-MI { display:none; }
197
- .nopn div.prev-mjp { display:none; }
198
- .nopn div.next-mjp { display:none; }
199
- .nostop div.stop-mjp { display:none; }
200
- .notitle div.player-track-title { display:none; }
201
- .novol div.mjp-volwrap { display:none; }
202
- div.wrap-mjp.noplayer { display:none; }
203
 
204
  /* ===== ===== */
205
  div.mp3j-dlframe,
@@ -851,4 +842,20 @@ div.mp3j-finfo {
851
  .fullbars div.MIsliderVolume .ui-state-active, .fullbars div.MIsliderVolume .ui-widget-content .ui-state-active { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; }
852
 
853
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
854
 
191
  .ui-state-default,
192
  .ui-widget-content .ui-state-default { outline:none; border:0px; }
193
 
 
 
 
 
 
 
 
 
 
194
 
195
  /* ===== ===== */
196
  div.mp3j-dlframe,
842
  .fullbars div.MIsliderVolume .ui-state-active, .fullbars div.MIsliderVolume .ui-widget-content .ui-state-active { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; }
843
 
844
 
845
+ /* ===== user style param ===== */
846
+ .nolistbutton div.playlist-toggle-MI { visibility:hidden; }
847
+ .nopopoutbutton div.mp3j-popout-MI { display:none; }
848
+ .nopn div.prev-mjp { display:none; }
849
+ .nopn div.next-mjp { display:none; }
850
+ .nostop div.stop-mjp { display:none; }
851
+ .notitle div.player-track-title { display:none; }
852
+ div.wrap-mjp.noplayer { display:none; }
853
+
854
+ .novol div.mjp-volwrap { display:none; }
855
+ .novol div.bars_holder { left:0px; right:0px; }
856
+ .novol span.vol_mp3t,
857
+ .novol span.vol_mp3j { display:none; }
858
+
859
+ .nobars .bars_holder { display:none; }
860
+
861
 
css/v1-skins/v1-silver.css CHANGED
@@ -190,15 +190,6 @@ ul.gill-mjp a { font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
190
  .ui-state-default,
191
  .ui-widget-content .ui-state-default { outline:none; border:0px; }
192
 
193
- /* ===== user style param ===== */
194
- .nolistbutton div.playlist-toggle-MI { visibility:hidden; }
195
- .nopopoutbutton div.mp3j-popout-MI { display:none; }
196
- .nopn div.prev-mjp { display:none; }
197
- .nopn div.next-mjp { display:none; }
198
- .nostop div.stop-mjp { display:none; }
199
- .notitle div.player-track-title { display:none; }
200
- .novol div.mjp-volwrap { display:none; }
201
- div.wrap-mjp.noplayer { display:none; }
202
 
203
  /* ===== ===== */
204
  div.mp3j-dlframe,
@@ -853,5 +844,18 @@ ul.ul-mjp.mp3j_widgetmods li a { font-size:10px !important; line-height:14px !im
853
  .fullbars div.bars_holder { left:0px; right:0px; height:auto; bottom:38px; top:0px; background-image: url('images/t60w.png'); background-repeat: repeat-x; background-position: left bottom; background-color:transparent; border:0; }
854
 
855
 
856
-
857
-
 
 
 
 
 
 
 
 
 
 
 
 
 
190
  .ui-state-default,
191
  .ui-widget-content .ui-state-default { outline:none; border:0px; }
192
 
 
 
 
 
 
 
 
 
 
193
 
194
  /* ===== ===== */
195
  div.mp3j-dlframe,
844
  .fullbars div.bars_holder { left:0px; right:0px; height:auto; bottom:38px; top:0px; background-image: url('images/t60w.png'); background-repeat: repeat-x; background-position: left bottom; background-color:transparent; border:0; }
845
 
846
 
847
+ /* ===== user style param ===== */
848
+ .nolistbutton div.playlist-toggle-MI { visibility:hidden; }
849
+ .nopopoutbutton div.mp3j-popout-MI { display:none; }
850
+ .nopn div.prev-mjp { display:none; }
851
+ .nopn div.next-mjp { display:none; }
852
+ .nostop div.stop-mjp { display:none; }
853
+ .notitle div.player-track-title { display:none; }
854
+ div.wrap-mjp.noplayer { display:none; }
855
+
856
+ .novol div.mjp-volwrap { display:none; }
857
+ .novol div.bars_holder { left:0px; right:0px; }
858
+ .novol span.vol_mp3t,
859
+ .novol span.vol_mp3j { display:none; }
860
+
861
+ .nobars .bars_holder { display:none; }
frontend.php CHANGED
@@ -58,7 +58,6 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
58
  $allowed_widget_B = $this->has_allowed_widget( "mp3mi-widget" );
59
 
60
  //Flagged in template
61
- //if ( $this->scriptsflag == "true" && $this->theSettings['disable_template_tag'] == "false" ) {
62
  if ( $this->scriptsflag == "true" ) {
63
  $scripts = true;
64
  }
@@ -80,6 +79,10 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
80
  $this->add_Scripts( $style );
81
  }
82
 
 
 
 
 
83
  return;
84
  }
85
 
@@ -163,7 +166,8 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
163
 
164
  if ( $ids !== '' ) //came via [audio] shortcode, has 1 attachment
165
  {
166
- $TRACKS = $this->IDsToTracks( $ids, 'false' );
 
167
  if ( ! $TRACKS ) {
168
  return false;
169
  }
@@ -194,7 +198,7 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
194
  $playername = $this->F_listname;
195
  //TODO: track numbering issue
196
  $trackNumber = ( $this->theSettings['add_track_numbering'] == "true" ) ? $track . '. ' : '';
197
- $TRACKS = $this->F_LISTS[$playername];
198
  }
199
  else // Has arbitrary file/uri
200
  {
@@ -251,7 +255,7 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
251
  'counterpart' => '',
252
  'counterparts' => '',
253
  'ids' => '',
254
- 'fontsize' => $this->theSettings['font_size_mp3t']
255
  ), $atts ) );
256
 
257
  //Alias some params
@@ -363,7 +367,7 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
363
  'counterpart' => '',
364
  'counterparts' => '',
365
  'ids' => '',
366
- 'fontsize' => $this->theSettings['font_size_mp3j']
367
  ), $atts));
368
 
369
  if ( $track == '' && $tracks != '' ) {
@@ -457,11 +461,23 @@ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Fro
457
  //###############
458
  function getPostAttachedAudio ( $postID )
459
  {
 
 
 
 
 
 
 
 
 
 
460
  $args = array(
461
- 'post_type' => 'attachment',
462
- 'numberposts' => -1,
463
- 'post_status' => 'any',
464
- 'post_parent' => $postID
 
 
465
  );
466
 
467
  $attachments = get_posts( $args );
58
  $allowed_widget_B = $this->has_allowed_widget( "mp3mi-widget" );
59
 
60
  //Flagged in template
 
61
  if ( $this->scriptsflag == "true" ) {
62
  $scripts = true;
63
  }
79
  $this->add_Scripts( $style );
80
  }
81
 
82
+ // Always define js player info and playlist arrays here as some
83
+ // themes cause issues if it's left until shortcode is processed.
84
+ $this->defineJSvars();
85
+
86
  return;
87
  }
88
 
166
 
167
  if ( $ids !== '' ) //came via [audio] shortcode, has 1 attachment
168
  {
169
+ //$TRACKS = $this->IDsToTracks( $ids, 'false' );
170
+ $TRACKS = $this->IDsToTracks( $ids, 'true' );
171
  if ( ! $TRACKS ) {
172
  return false;
173
  }
198
  $playername = $this->F_listname;
199
  //TODO: track numbering issue
200
  $trackNumber = ( $this->theSettings['add_track_numbering'] == "true" ) ? $track . '. ' : '';
201
+ $TRACKS = $this->F_LISTS[ $playername ];
202
  }
203
  else // Has arbitrary file/uri
204
  {
255
  'counterpart' => '',
256
  'counterparts' => '',
257
  'ids' => '',
258
+ 'fontsize' => $this->theSettings['font_size_mp3t'],
259
  ), $atts ) );
260
 
261
  //Alias some params
367
  'counterpart' => '',
368
  'counterparts' => '',
369
  'ids' => '',
370
+ 'fontsize' => $this->theSettings['font_size_mp3j'],
371
  ), $atts));
372
 
373
  if ( $track == '' && $tracks != '' ) {
461
  //###############
462
  function getPostAttachedAudio ( $postID )
463
  {
464
+ $O = $this->theSettings;
465
+
466
+ if ( 'title' === $O['library_sortcol'] ) {
467
+ $sortcol = 'title';
468
+ } else if ( 'date' === $O['library_sortcol'] ) {
469
+ $sortcol = 'post_date';
470
+ } else {
471
+ $sortcol = 'menu_order';
472
+ }
473
+
474
  $args = array(
475
+ 'post_type' => 'attachment',
476
+ 'numberposts' => -1,
477
+ 'post_status' => 'any',
478
+ 'post_parent' => $postID,
479
+ 'orderby' => $sortcol,
480
+ 'order' => $O['library_direction']
481
  );
482
 
483
  $attachments = get_posts( $args );
js/{mp3-jplayer-2.3.1.js → mp3-jplayer-2.3.2.js} RENAMED
@@ -49,6 +49,7 @@ var MP3_JPLAYER = {
49
  exData: false,
50
  exThresh: 2,
51
  showErrors: false,
 
52
 
53
  vars: {
54
  play_f: true,
@@ -119,7 +120,7 @@ var MP3_JPLAYER = {
119
  } else {
120
  that.setAudio( track );
121
  that.playit();
122
- jQuery(that.jpID).jPlayer("volume", vol/100 ); //Set to player vol
123
  if ( track === false ) { //silence
124
  that.clearit();
125
  }
@@ -373,7 +374,7 @@ var MP3_JPLAYER = {
373
  },
374
  slide: function (event, ui) {
375
  if (j === that.tID) {
376
- jQuery(that.jpID).jPlayer("volume", ui.value/100);
377
  }
378
  if ( ui.value === 0 ) {
379
  jQuery('#innerExt1_' + j).addClass('vol-muted');
@@ -463,7 +464,7 @@ var MP3_JPLAYER = {
463
  p.vol = 0;
464
  } else {
465
  if ( j === that.tID ) {
466
- jQuery( that.jpID ).jPlayer( 'volume', that.mutes[j]/100 );
467
  }
468
  jQuery( '#innerExt1_' + j ).removeClass( 'vol-muted' );
469
  jQuery( that.eID.vol + j ).slider( 'value', that.mutes[j] );
@@ -656,7 +657,7 @@ var MP3_JPLAYER = {
656
  this.jperrorIDs[ j ] = false;
657
  this.setAudio( p.list[track] );
658
  this.playit();
659
- jQuery(this.jpID).jPlayer("volume", p.vol/100 ); //Reset to correct vol
660
  }
661
 
662
  exData.mp3 = p.list[track].mp3;
49
  exData: false,
50
  exThresh: 2,
51
  showErrors: false,
52
+ factors: { vol: 1 },
53
 
54
  vars: {
55
  play_f: true,
120
  } else {
121
  that.setAudio( track );
122
  that.playit();
123
+ jQuery(that.jpID).jPlayer("volume", that.factors.vol * vol/100 ); //Set to player vol
124
  if ( track === false ) { //silence
125
  that.clearit();
126
  }
374
  },
375
  slide: function (event, ui) {
376
  if (j === that.tID) {
377
+ jQuery(that.jpID).jPlayer("volume", that.factors.vol * ui.value/100);
378
  }
379
  if ( ui.value === 0 ) {
380
  jQuery('#innerExt1_' + j).addClass('vol-muted');
464
  p.vol = 0;
465
  } else {
466
  if ( j === that.tID ) {
467
+ jQuery( that.jpID ).jPlayer( 'volume', that.factors.vol * that.mutes[j]/100 );
468
  }
469
  jQuery( '#innerExt1_' + j ).removeClass( 'vol-muted' );
470
  jQuery( that.eID.vol + j ).slider( 'value', that.mutes[j] );
657
  this.jperrorIDs[ j ] = false;
658
  this.setAudio( p.list[track] );
659
  this.playit();
660
+ jQuery(this.jpID).jPlayer("volume", this.factors.vol * p.vol/100 ); //Reset to correct vol
661
  }
662
 
663
  exData.mp3 = p.list[track].mp3;
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.3.1";
6
  var $M_no = 0;
7
  var $F_no = 0;
8
  var $S_no = 0;
@@ -700,6 +700,12 @@ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
700
  $track = $this->makeTrack( $Vs[$i] );
701
  $keyParts = explode('.', $k, 2);
702
  $track['caption'] = ( empty($keyParts[1]) ) ? '' : $keyParts[1];
 
 
 
 
 
 
703
  $TRACKS[] = $track;
704
  }
705
  $TRACKS = $this->addFEEDtracks( $TRACKS );
@@ -1176,7 +1182,7 @@ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
1176
 
1177
  //jplayer and plugin js
1178
  wp_enqueue_script( 'jplayer271', $this->PluginFolder . '/js/jquery.jplayer.min.2.7.1.js', false, '2.7.1' );
1179
- wp_enqueue_script( 'mp3-jplayer', $this->PluginFolder . '/js/mp3-jplayer-2.3.1.js', false, '2.3.1' );
1180
 
1181
  $skins = $this->SKINS;
1182
  if ( isset( $skins[ $theme ]['url'] ) ) {
2
  if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
3
 
4
  // ---------------------- Update Me
5
+ var $version_of_plugin = "2.3.2";
6
  var $M_no = 0;
7
  var $F_no = 0;
8
  var $S_no = 0;
700
  $track = $this->makeTrack( $Vs[$i] );
701
  $keyParts = explode('.', $k, 2);
702
  $track['caption'] = ( empty($keyParts[1]) ) ? '' : $keyParts[1];
703
+
704
+ //if ( $images === 'true' ) {
705
+ $track['image'] = 'true'; //no other way to specify images via custom fields so always try grab them.
706
+ //}
707
+
708
+
709
  $TRACKS[] = $track;
710
  }
711
  $TRACKS = $this->addFEEDtracks( $TRACKS );
1182
 
1183
  //jplayer and plugin js
1184
  wp_enqueue_script( 'jplayer271', $this->PluginFolder . '/js/jquery.jplayer.min.2.7.1.js', false, '2.7.1' );
1185
+ wp_enqueue_script( 'mp3-jplayer', $this->PluginFolder . '/js/mp3-jplayer-2.3.2.js', false, '2.3.2' );
1186
 
1187
  $skins = $this->SKINS;
1188
  if ( isset( $skins[ $theme ]['url'] ) ) {
mp3jplayer.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: MP3-jPlayer
4
  Plugin URI: http://mp3-jplayer.com
5
  Description: Easy, Flexible Audio for WordPress.
6
- Version: 2.3.1
7
  Author: Simon Ward
8
  Author URI: http://www.sjward.org
9
  License: GPL2
3
  Plugin Name: MP3-jPlayer
4
  Plugin URI: http://mp3-jplayer.com
5
  Description: Easy, Flexible Audio for WordPress.
6
+ Version: 2.3.2
7
  Author: Simon Ward
8
  Author URI: http://www.sjward.org
9
  License: GPL2
popout.php CHANGED
@@ -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.3.1.js'></script>
21
 
22
  <script type='text/javascript'>
23
  function loadcss(filename) {
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.3.2.js'></script>
21
 
22
  <script type='text/javascript'>
23
  function loadcss(filename) {
readme.txt CHANGED
@@ -7,7 +7,7 @@ Tags: audio, audio player, audio playlist, mp3 player, music player, media, mobi
7
  License: GPLv2 or later
8
  Requires at least: 2.9
9
  Tested up to: 4.1
10
- Stable tag: 2.3.1
11
 
12
  Easy, Flexible Audio for WordPress.
13
 
@@ -15,15 +15,15 @@ Easy, Flexible Audio for WordPress.
15
 
16
  = Mobile friendly HTML5 audio players and audio playlist players =
17
 
18
- * Adds style and colour options for audio players.
19
- * Enhanced music playlist players and single-file audio players
20
- * Additional popout players and popout links, audio widget players, and audio downloads.
21
  * Works with all built-in WordPress options for adding your music, including the recently introduced *Create Audio Playlist* drag & drop interface.
22
 
23
 
24
- [Player Demos](http://mp3-jplayer.com/player-skins/) <br>
25
  [How to Add Your Players](http://mp3-jplayer.com/adding-players/) <br>
26
- [Help & Docs](http://mp3-jplayer.com/help-docs/)
27
 
28
 
29
  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:
@@ -45,7 +45,6 @@ MP3-jPlayer will expand WP's native shortcodes with new functions and options, g
45
  * Multisite compatible.
46
 
47
 
48
-
49
  See [the plugin's home page](http://mp3-jplayer.com) for info, demos, documentation, and help articles.
50
 
51
 
@@ -105,12 +104,19 @@ Either on the [forum at Wordpress](https://wordpress.org/support/plugin/mp3-jpla
105
 
106
  == Changelog ==
107
 
 
 
 
 
 
 
 
108
  = 2.3.1 =
109
  * Added developer methods for hooking into the player's Javascript events, these also add support for some of the up-coming extensions.
110
  * Corrected the help message admin-side that shows on the widget when it's set to an invalid path.
111
 
112
  = 2.3 =
113
- * Fixed a major issue on index/cat/search type pages that could incorrectly assign the playlists or break players in some scenarios.
114
  * Added support for custom js (for skin extensions) on the player Design page.
115
  * Renamed the MP3-jPlayer plugin class instance to MP3JP.
116
 
7
  License: GPLv2 or later
8
  Requires at least: 2.9
9
  Tested up to: 4.1
10
+ Stable tag: 2.3.2
11
 
12
  Easy, Flexible Audio for WordPress.
13
 
15
 
16
  = Mobile friendly HTML5 audio players and audio playlist players =
17
 
18
+ * Style and colour options for your audio players.
19
+ * Flexible Music playlist players and single-file audio players.
20
+ * Popout players and popout links, audio widget players, and smooth audio downloads.
21
  * Works with all built-in WordPress options for adding your music, including the recently introduced *Create Audio Playlist* drag & drop interface.
22
 
23
 
24
+ [Basic Demo - Showing the included player skins](http://mp3-jplayer.com/player-skins/) <br>
25
  [How to Add Your Players](http://mp3-jplayer.com/adding-players/) <br>
26
+ [Help & Docs main page](http://mp3-jplayer.com/help-docs/)
27
 
28
 
29
  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:
45
  * Multisite compatible.
46
 
47
 
 
48
  See [the plugin's home page](http://mp3-jplayer.com) for info, demos, documentation, and help articles.
49
 
50
 
104
 
105
  == Changelog ==
106
 
107
+ = 2.3.2 =
108
+ * Fixed the pick-up of titles and images when playing attached audio using the playlist widget.
109
+ * Added ordering options for attached audio. Any audio attached to a page or post will now be ordered according to your setting on the player's 'Settings' page. You can order them by title or upload date, for any other setting they'll default to WP's menu order. ASC/DESC controls the direction.
110
+ * Improved the 'novol' class for hiding volume controls, and added new modifier names 'nobars', 'nocase' which let you hide the bars, and the button bar background on playlist players.
111
+ * Improved js robustness for increased compatibility across different themes/setups.
112
+ * Added new developer methods - provide a volume scale factor (MP3_JPLAYER.factors.vol), and provide the available image data to callbacks regardless of the player or list type.
113
+
114
  = 2.3.1 =
115
  * Added developer methods for hooking into the player's Javascript events, these also add support for some of the up-coming extensions.
116
  * Corrected the help message admin-side that shows on the widget when it's set to an invalid path.
117
 
118
  = 2.3 =
119
+ * Fixed an issue on index/cat/search type pages that could incorrectly assign the playlists or break players in some scenarios.
120
  * Added support for custom js (for skin extensions) on the player Design page.
121
  * Renamed the MP3-jPlayer plugin class instance to MP3JP.
122
 
widget-ui.php CHANGED
@@ -51,10 +51,6 @@ if ( class_exists("WP_Widget") ) {
51
  else if ( $instance['widget_mode'] == "2" )
52
  {
53
  $SHORTCODE .= ' tracks="' . $instance['arb_playlist'] . '"';
54
- //$SHORTCODE .= ' captions="' . $instance['captions'] . '"';
55
- //$SHORTCODE .= ' images="' . $instance['images'] . '"';
56
- //$SHORTCODE .= ' imglinks="' . $instance['image_urls'] . '"';
57
-
58
  }
59
  else if ( $instance['widget_mode'] == "3" )
60
  {
@@ -77,22 +73,19 @@ if ( class_exists("WP_Widget") ) {
77
  if ( !is_singular() ) {
78
  return;
79
  }
80
-
81
  global $post;
82
  $attachments = $MP3JP->getPostAttachedAudio( $post->ID );
 
83
 
84
- $urls = '';
85
  if ( $attachments !== false ) {
86
  foreach ( $attachments as $a ) {
87
- $urls .= $a->guid . ',';
88
- $i++;
89
  }
90
  }
91
  else {
92
  return;
93
  }
94
- $SHORTCODE .= ' tracks="' . $urls . '"';
95
- //$SHORTCODE .= ' images="true"';
96
  }
97
 
98
  //params
51
  else if ( $instance['widget_mode'] == "2" )
52
  {
53
  $SHORTCODE .= ' tracks="' . $instance['arb_playlist'] . '"';
 
 
 
 
54
  }
55
  else if ( $instance['widget_mode'] == "3" )
56
  {
73
  if ( !is_singular() ) {
74
  return;
75
  }
 
76
  global $post;
77
  $attachments = $MP3JP->getPostAttachedAudio( $post->ID );
78
+ $filenames = '';
79
 
 
80
  if ( $attachments !== false ) {
81
  foreach ( $attachments as $a ) {
82
+ $filenames .= substr( strrchr( $a->guid, "/" ), 1 ) . ',';
 
83
  }
84
  }
85
  else {
86
  return;
87
  }
88
+ $SHORTCODE .= ' tracks="' . $filenames . '"';
 
89
  }
90
 
91
  //params