Music Player for WooCommerce - Version 1.0.112

Version Description

  • Hides the download control of players, when are used the default players of devices.
Download this release

Release Info

Developer codepeople
Plugin Icon 128x128 Music Player for WooCommerce
Version 1.0.112
Comparing to
See all releases

Code changes from version 1.0.104 to 1.0.112

addons/wcfm.addon.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if(!class_exists('WCMP_WCFM_ADDON'))
3
+ {
4
+ class WCMP_WCFM_ADDON
5
+ {
6
+ private $_wcmp;
7
+
8
+ function __construct($wcmp)
9
+ {
10
+ $this->_wcmp = $wcmp;
11
+ add_action('after_wcfm_products_downloadable',array($this, 'show_settings'), 10, 2);
12
+ add_action('save_post_product', array($this, 'save_post'), 10, 3);
13
+ add_action('wp_ajax_delete_wcfm_product', array($this, 'delete_product'));
14
+ } // End __construct
15
+
16
+ public function show_settings($product_id, $product_type)
17
+ {
18
+ $post = get_post( $product_id );
19
+ wp_enqueue_style('wcmp-wcfm-css', plugin_dir_url(__FILE__).'wcfm/style.css');
20
+ wp_enqueue_script('wcmp-wcfm-js', plugin_dir_url(__FILE__).'wcfm/script.js');
21
+ ?>
22
+ <div class="page_collapsible simple variable grouped" id="wcfm_products_manage_form_wcmp_head"><label class="wcfmfa fa-object-group"></label><?php _e('Music Player', 'music-player-for-woocommerce'); ?><span></span></div>
23
+ <div class="wcfm-container simple variable grouped">
24
+ <div id="wcfm_products_manage_form_wcmp_expander" class="wcfm-content">
25
+ <input type="hidden" name="wcmp_nonce" value="<?php echo wp_create_nonce('wcmp_updating_product'); ?>" />
26
+ <?php
27
+ include_once dirname(__FILE__).'/../views/player_options.php';
28
+ ?>
29
+ </div>
30
+ </div>
31
+ <!-- end collapsible -->
32
+ <div class="wcfm_clearfix"></div>
33
+ <?php
34
+ } // End show_settings
35
+
36
+ public function save_post($post_id, $post, $update)
37
+ {
38
+ if(!empty($_POST['wcfm_products_manage_form']))
39
+ {
40
+ $arr = wp_parse_args($_POST['wcfm_products_manage_form']);
41
+ if(!empty($arr))
42
+ {
43
+ $_POST = array_replace_recursive($_POST, $arr);
44
+ $_REQUEST = array_replace_recursive($_REQUEST, $arr);
45
+
46
+ $post = wc_get_product( $post_id );
47
+ $this->_wcmp->save_post($post_id, $post, true);
48
+ }
49
+ }
50
+ } // End save_post
51
+
52
+ public function delete_product()
53
+ {
54
+ $proid = @intval($_POST['proid']);
55
+ if($proid) $this->_wcmp->delete_post($proid);
56
+ } // End delete_product
57
+
58
+ //******************** PRIVATE METHODS ************************
59
+
60
+
61
+ } // End WCMP_WCFM_ADDON
62
+ }
63
+
64
+ new WCMP_WCFM_ADDON($wcmp);
addons/wcfm/script.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ jQuery(
2
+ function(){
3
+ var $ = jQuery;
4
+ $('#wcfm_products_manage_form_wcmp_expander :checkbox').addClass('wcfm-checkbox');
5
+ }
6
+ );
addons/wcfm/style.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ .wcfm-tabWrap{overflow-y:auto !important;}
2
+ #wcfm_products_manage_form_wcmp_expander *{font-size:15px;}
3
+ #wcfm_products_manage_form_wcmp_expander .wcfm-checkbox{margin-right: 20px;}
4
+ #wcfm_products_manage_form_wcmp_expander .wcmp-player-settings td:first-child{ font-style: italic !important; font-weight: 600!important; vertical-align: top;}
5
+ #wcfm_products_manage_form_wcmp_expander .wcmp-player-settings table td{width:auto;}
6
+ #wcfm_products_manage_form_wcmp_expander table{margin-top:5px; margin-bottom:5px;}
7
+ #wcfm_products_manage_form_wcmp_expander .wcmp-player-settings,
8
+ #wcfm_products_manage_form_wcmp_expander .wcmp-player-demos{border: 1px solid #dfdfdf !important;padding:10px;}
9
+ #wcfm_products_manage_form_wcmp_expander .wcmp-demo-files a{white-space:nowrap !important;}
10
+ #wcfm_products_manage_form_wcmp_expander [name="_wcmp_file_percent"]{max-width: 150px;display: inline;}
11
+ #wcfm_products_manage_form_wcmp_expander .wcmp-tip-text li{list-style: none !important;}
css/style.css CHANGED
@@ -13,7 +13,7 @@
13
  .wcmp-player.track.mejs-wmp{width:40px !important;height:40px !important;}
14
  .wcmp-player.track.mejs-wmp .mejs-controls{height:40px !important; width:40px !important; background:transparent !important;}
15
 
16
- .wcmp-player-list{width:100%; border:0;}
17
  .wcmp-player-list *{word-break:normal !important;}
18
  .wcmp-player-list td{border:0;padding:5px;}
19
  .wcmp-player-list table{width:100%;margin:0;}
13
  .wcmp-player.track.mejs-wmp{width:40px !important;height:40px !important;}
14
  .wcmp-player.track.mejs-wmp .mejs-controls{height:40px !important; width:40px !important; background:transparent !important;}
15
 
16
+ .wcmp-player-list{width:100%; border:0;overflow:visible;}
17
  .wcmp-player-list *{word-break:normal !important;}
18
  .wcmp-player-list td{border:0;padding:5px;}
19
  .wcmp-player-list table{width:100%;margin:0;}
js/public.js CHANGED
@@ -3,9 +3,9 @@ $jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.definePrope
3
  $jscomp.polyfill=function(a,c,b,f){if(c){b=$jscomp.global;a=a.split(".");for(f=0;f<a.length-1;f++){var g=a[f];g in b||(b[g]={});b=b[g]}a=a[a.length-1];f=b[a];c=c(f);c!=f&&null!=c&&$jscomp.defineProperty(b,a,{configurable:!0,writable:!0,value:c})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,b){return $jscomp.findInternal(this,a,b).v}},"es6","es3");
4
  (function(){var a=[],c=0;window.generate_the_wcmp=function(b){function f(e){if(e+1<c){var h=e+1;a[h]instanceof d&&a[h].is("a")?a[h].is(":visible")?a[h].click():f(e+1):d(a[h].container).is(":visible")?a[h].play():f(e+1)}}function g(a){var e=a.data("product"),b=d("img.product-"+e);b.length&&1==d('[data-product="'+e+'"]').length&&(e=b.offset(),a=a.closest("div.wcmp-player"),a.css({position:"absolute","z-index":999999}).offset({left:e.left+(b.width()-a.width())/2,top:e.top+(b.height()-a.height())/2}))}
5
  if(!("boolean"!==typeof b&&"undefined"!=typeof wcmp_global_settings&&1*wcmp_global_settings.onload)&&"undefined"===typeof generated_the_wcmp){generated_the_wcmp=!0;var d=jQuery;d(document).on("click",".wcmp-player-container",function(a){a.preventDefault();a.stopPropagation()});d.expr[":"].regex=function(a,b,c){b=c[3].split(",");var e=/^(data|css):/;c=b[0].match(e)?b[0].split(":")[0]:"attr";e=b.shift().replace(e,"");return(new RegExp(b.join("").replace(/^\s+|\s+$/g,""),"ig")).test(d(a)[c](e))};var m=
6
- "undefined"!=typeof wcmp_global_settings?wcmp_global_settings.play_all:!0;b=d("audio.wcmp-player:not(.track):not([playernumber])");var n=d("audio.wcmp-player.track:not([playernumber])"),k={iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,success:function(a,b){var e=function(a){a=d(a.target);var b=a.data("duration");"undefined"!=typeof b&&a.closest(".wcmp-player-container").find(".mejs-duration").html(b)};a.addEventListener("timeupdate",function(a){e(a);isNaN(this.currentTime)||isNaN(this.duration)||
7
- -1==this.src.indexOf("ms-action=secure")||(4>this.duration-this.currentTime?this.setVolume(this.volume-this.volume/3):("undefined"==typeof this.bkVolume&&(this.bkVolume=this.volume),this.setVolume(this.bkVolume)))});a.addEventListener("volumechange",function(a){!isNaN(this.currentTime)&&!isNaN(this.duration)&&-1!=this.src.indexOf("ms-action=secure")&&4<this.duration-this.currentTime&&this.currentTime&&(this.bkVolume=this.volume)});a.addEventListener("ended",function(a){1*m&&(a=1*d(this).attr("playernumber"),
8
- f(a))});a.addEventListener("loadedmetadata",function(a){e(a)})}},l=".product-type-grouped :regex(name,quantity\\[\\d+\\])";b.each(function(){var b=d(this);b.find("source").attr("src");k.audioVolume="vertical";try{a[c]=new MediaElementPlayer(b,k)}catch(h){a[c]=new MediaElementPlayer(b[0],k)}b.attr("playernumber",c);c++});n.each(function(){var b=d(this);b.find("source").attr("src");k.features=["playpause"];try{a[c]=new MediaElementPlayer(b,k)}catch(h){a[c]=new MediaElementPlayer(b[0],k)}b.attr("playernumber",
9
- c);c++;g(b);d(window).resize(function(){g(b)})});d(l).length||(l=".product-type-grouped [data-product_id]");d(l).each(function(){var a=d(this),b=a.data("product_id")||a.attr("name").replace(/[^\d]/g,"");b=d(".wcmp-player-list.merge_in_grouped_products .product-"+b+":first .wcmp-player-title");var c=d("<table></table>");b.length&&(b.closest("tr").addClass("wcmp-first-in-product"),0==b.closest("form").length&&b.closest(".wcmp-player-list").prependTo(a.closest("form")),c.append(a.closest("tr").prepend("<td>"+
10
- b.html()+"</td>")),b.html("").append(c))})}};window.wcmp_force_init=function(){delete window.generated_the_wcmp;generate_the_wcmp(!0)};jQuery(generate_the_wcmp);jQuery(window).on("load",function(){generate_the_wcmp(!0);var a=jQuery,c=window.navigator.userAgent;a("[data-lazyloading]").each(function(){var b=a(this);b.attr("preload",b.data("lazyloading"))});if(c.match(/iPad/i)||c.match(/iPhone/i))if("undefined"!=typeof wcmp_global_settings?wcmp_global_settings.play_all:1)a(".wcmp-player .mejs-play button").one("click",
11
- function(){if("undefined"==typeof wcmp_preprocessed_players){wcmp_preprocessed_players=!0;var b=a(this);a(".wcmp-player audio").each(function(){this.play();this.pause()});setTimeout(function(){b.click()},500)}})}).on("popstate",function(){jQuery("audio[data-product]:not([playernumber])").length&&wcmp_force_init()})})();
3
  $jscomp.polyfill=function(a,c,b,f){if(c){b=$jscomp.global;a=a.split(".");for(f=0;f<a.length-1;f++){var g=a[f];g in b||(b[g]={});b=b[g]}a=a[a.length-1];f=b[a];c=c(f);c!=f&&null!=c&&$jscomp.defineProperty(b,a,{configurable:!0,writable:!0,value:c})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,b){return $jscomp.findInternal(this,a,b).v}},"es6","es3");
4
  (function(){var a=[],c=0;window.generate_the_wcmp=function(b){function f(e){if(e+1<c){var h=e+1;a[h]instanceof d&&a[h].is("a")?a[h].is(":visible")?a[h].click():f(e+1):d(a[h].container).is(":visible")?a[h].play():f(e+1)}}function g(a){var e=a.data("product"),b=d("img.product-"+e);b.length&&1==d('[data-product="'+e+'"]').length&&(e=b.offset(),a=a.closest("div.wcmp-player"),a.css({position:"absolute","z-index":999999}).offset({left:e.left+(b.width()-a.width())/2,top:e.top+(b.height()-a.height())/2}))}
5
  if(!("boolean"!==typeof b&&"undefined"!=typeof wcmp_global_settings&&1*wcmp_global_settings.onload)&&"undefined"===typeof generated_the_wcmp){generated_the_wcmp=!0;var d=jQuery;d(document).on("click",".wcmp-player-container",function(a){a.preventDefault();a.stopPropagation()});d.expr[":"].regex=function(a,b,c){b=c[3].split(",");var e=/^(data|css):/;c=b[0].match(e)?b[0].split(":")[0]:"attr";e=b.shift().replace(e,"");return(new RegExp(b.join("").replace(/^\s+|\s+$/g,""),"ig")).test(d(a)[c](e))};var m=
6
+ "undefined"!=typeof wcmp_global_settings?wcmp_global_settings.play_all:!0,k="undefined"!=typeof wcmp_global_settings&&"ios_controls"in wcmp_global_settings&&1*wcmp_global_settings.ios_controls?!0:!1;b=d("audio.wcmp-player:not(.track):not([playernumber])");var n=d("audio.wcmp-player.track:not([playernumber])"),l={iPadUseNativeControls:k,iPhoneUseNativeControls:k,success:function(a,b){var e=function(a){a=d(a.target);var b=a.data("duration");"undefined"!=typeof b&&a.closest(".wcmp-player-container").find(".mejs-duration").html(b)};
7
+ a.addEventListener("timeupdate",function(a){e(a);isNaN(this.currentTime)||isNaN(this.duration)||-1==this.src.indexOf("ms-action=secure")||(4>this.duration-this.currentTime?this.setVolume(this.volume-this.volume/3):("undefined"==typeof this.bkVolume&&(this.bkVolume=this.volume),this.setVolume(this.bkVolume)))});a.addEventListener("volumechange",function(a){!isNaN(this.currentTime)&&!isNaN(this.duration)&&-1!=this.src.indexOf("ms-action=secure")&&4<this.duration-this.currentTime&&this.currentTime&&
8
+ (this.bkVolume=this.volume)});a.addEventListener("ended",function(a){1*m&&(a=1*d(this).attr("playernumber"),f(a))});a.addEventListener("loadedmetadata",function(a){e(a)})}};k=".product-type-grouped :regex(name,quantity\\[\\d+\\])";b.each(function(){var b=d(this);b.find("source").attr("src");l.audioVolume="vertical";try{a[c]=new MediaElementPlayer(b,l)}catch(h){a[c]=new MediaElementPlayer(b[0],l)}b.attr("playernumber",c);c++});n.each(function(){var b=d(this);b.find("source").attr("src");l.features=
9
+ ["playpause"];try{a[c]=new MediaElementPlayer(b,l)}catch(h){a[c]=new MediaElementPlayer(b[0],l)}b.attr("playernumber",c);c++;g(b);d(window).resize(function(){g(b)})});d(k).length||(k=".product-type-grouped [data-product_id]");d(k).each(function(){var a=d(this),b=a.data("product_id")||a.attr("name").replace(/[^\d]/g,"");b=d(".wcmp-player-list.merge_in_grouped_products .product-"+b+":first .wcmp-player-title");var c=d("<table></table>");b.length&&(b.closest("tr").addClass("wcmp-first-in-product"),0==
10
+ b.closest("form").length&&b.closest(".wcmp-player-list").prependTo(a.closest("form")),c.append(a.closest("tr").prepend("<td>"+b.html()+"</td>")),b.html("").append(c))})}};window.wcmp_force_init=function(){delete window.generated_the_wcmp;generate_the_wcmp(!0)};jQuery(generate_the_wcmp);jQuery(window).on("load",function(){generate_the_wcmp(!0);var a=jQuery,c=window.navigator.userAgent;a("[data-lazyloading]").each(function(){var b=a(this);b.attr("preload",b.data("lazyloading"))});if(c.match(/iPad/i)||
11
+ c.match(/iPhone/i))if("undefined"!=typeof wcmp_global_settings?wcmp_global_settings.play_all:1)a(".wcmp-player .mejs-play button").one("click",function(){if("undefined"==typeof wcmp_preprocessed_players){wcmp_preprocessed_players=!0;var b=a(this);a(".wcmp-player audio").each(function(){this.play();this.pause()});setTimeout(function(){b.click()},500)}})}).on("popstate",function(){jQuery("audio[data-product]:not([playernumber])").length&&wcmp_force_init()})})();
js/public_src.js CHANGED
@@ -66,11 +66,16 @@
66
 
67
  //------------------------ MAIN CODE ------------------------
68
  var play_all = (typeof wcmp_global_settings != 'undefined') ? wcmp_global_settings[ 'play_all' ] : true, // Play all songs on page
 
 
 
 
 
69
  s = $('audio.wcmp-player:not(.track):not([playernumber])'),
70
  m = $('audio.wcmp-player.track:not([playernumber])'),
71
  c = {
72
- iPadUseNativeControls: false,
73
- iPhoneUseNativeControls: false,
74
  success: function( media, dom ){
75
  var update_duration = function(e){
76
  var t = $(e.target),
66
 
67
  //------------------------ MAIN CODE ------------------------
68
  var play_all = (typeof wcmp_global_settings != 'undefined') ? wcmp_global_settings[ 'play_all' ] : true, // Play all songs on page
69
+ ios_controls = (
70
+ typeof wcmp_global_settings != 'undefined' &&
71
+ ('ios_controls' in wcmp_global_settings) &&
72
+ wcmp_global_settings['ios_controls']*1
73
+ ) ? true : false,
74
  s = $('audio.wcmp-player:not(.track):not([playernumber])'),
75
  m = $('audio.wcmp-player.track:not([playernumber])'),
76
  c = {
77
+ iPadUseNativeControls: ios_controls,
78
+ iPhoneUseNativeControls: ios_controls,
79
  success: function( media, dom ){
80
  var update_duration = function(e){
81
  var t = $(e.target),
languages/music-player-for-woocommerce-en_US.mo CHANGED
Binary file
languages/music-player-for-woocommerce-en_US.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: music-player-for-woocommerce\n"
4
- "POT-Creation-Date: 2020-06-04 02:57+0200\n"
5
- "PO-Revision-Date: 2020-06-04 02:57+0200\n"
6
  "Last-Translator: CodePeople\n"
7
  "Language-Team: CodePeople\n"
8
  "Language: en_US\n"
@@ -116,7 +116,7 @@ msgid ""
116
  "modified as <b>dl=1</b>"
117
  msgstr ""
118
 
119
- #: addons/dokan/player_options.php:181 views/global_options.php:213
120
  msgid ""
121
  "The player is shown only if the product is \"downloadable\" with at least an "
122
  "audio file between the \"Downloadable files\", or you have selected your own "
@@ -127,88 +127,88 @@ msgstr ""
127
  msgid "Include music player"
128
  msgstr ""
129
 
130
- #: addons/dokan/player_options.php:185 views/global_options.php:216
131
  #: views/player_options.php:180
132
  msgid "Include in"
133
  msgstr ""
134
 
135
- #: addons/dokan/player_options.php:188 views/global_options.php:219
136
  #: views/player_options.php:183
137
  msgid "single-entry pages <i>(Product's page only)</i>"
138
  msgstr ""
139
 
140
- #: addons/dokan/player_options.php:191 views/global_options.php:222
141
  #: views/player_options.php:186
142
  msgid ""
143
  "multiple entries pages <i>(Shop pages, archive pages, but not in the "
144
  "product's page)</i>"
145
  msgstr ""
146
 
147
- #: addons/dokan/player_options.php:194 views/global_options.php:225
148
  #: views/player_options.php:189
149
  msgid "all pages <i>(with single or multiple-entries)</i>"
150
  msgstr ""
151
 
152
- #: addons/dokan/player_options.php:198 views/global_options.php:235
153
  #: views/player_options.php:193
154
  msgid "Merge in grouped products"
155
  msgstr ""
156
 
157
- #: addons/dokan/player_options.php:200 views/global_options.php:236
158
  #: views/player_options.php:194
159
  msgid ""
160
  "In grouped products, display the \"Add to cart\" buttons and quantity fields "
161
  "in the players rows"
162
  msgstr ""
163
 
164
- #: addons/dokan/player_options.php:203 views/global_options.php:239
165
  #: views/player_options.php:197 widgets/playlist_widget.php:71
166
  msgid "Player layout"
167
  msgstr ""
168
 
169
- #: addons/dokan/player_options.php:222 views/global_options.php:261
170
  #: views/player_options.php:219 widgets/playlist_widget.php:87
171
  msgid "Preload"
172
  msgstr ""
173
 
174
- #: addons/dokan/player_options.php:230 views/global_options.php:271
175
  #: views/player_options.php:229 widgets/playlist_widget.php:83
176
  msgid "Play all"
177
  msgstr ""
178
 
179
- #: addons/dokan/player_options.php:233 views/global_options.php:278
180
  #: views/player_options.php:236
181
  msgid "Player controls"
182
  msgstr ""
183
 
184
- #: addons/dokan/player_options.php:235 views/global_options.php:280
185
  #: views/player_options.php:238
186
  msgid "the play/pause button only"
187
  msgstr ""
188
 
189
- #: addons/dokan/player_options.php:236 views/global_options.php:281
190
  #: views/player_options.php:239
191
  msgid "all controls"
192
  msgstr ""
193
 
194
- #: addons/dokan/player_options.php:237 views/global_options.php:282
195
  #: views/player_options.php:240
196
  msgid "the play/pause button only, or all controls depending on context"
197
  msgstr ""
198
 
199
- #: addons/dokan/player_options.php:241 views/global_options.php:287
200
  #: views/player_options.php:245
201
  msgid "for play/pause button players display them on cover images."
202
  msgstr ""
203
 
204
- #: addons/dokan/player_options.php:242 views/global_options.php:290
205
  #: views/player_options.php:248
206
  msgid ""
207
  "(This feature is experimental, and will depend on the theme active on the "
208
  "website.)"
209
  msgstr ""
210
 
211
- #: addons/dokan/player_options.php:247 views/global_options.php:297
212
  #: views/player_options.php:255
213
  msgid "Display the player's title"
214
  msgstr ""
@@ -264,11 +264,11 @@ msgstr ""
264
  msgid "Insert a playlist with the products players"
265
  msgstr ""
266
 
267
- #: views/global_options.php:34
268
  msgid "Music Player for WooCommerce - Global Settings"
269
  msgstr ""
270
 
271
- #: views/global_options.php:38
272
  msgid ""
273
  "For reporting any issue or to request a customization, <a href=\"https://"
274
  "wordpress.dwbooster.com/contact-us\" target=\"_blank\">CLICK HERE</a><br />\n"
@@ -280,19 +280,19 @@ msgid ""
280
  "target=\"_blank\">Public page: Click to visit the WooCommerce Store</a>"
281
  msgstr ""
282
 
283
- #: views/global_options.php:47
284
  msgid "Registering of Plugin"
285
  msgstr ""
286
 
287
- #: views/global_options.php:49
288
  msgid "Enter the email address of buyer"
289
  msgstr ""
290
 
291
- #: views/global_options.php:50
292
  msgid "Register"
293
  msgstr ""
294
 
295
- #: views/global_options.php:62 views/player_options.php:43
296
  msgid ""
297
  "<p>The player uses the audio files associated to the product. If you want "
298
  "protecting the audio files for selling, tick the checkbox: <b>\"Protect the "
@@ -304,102 +304,111 @@ msgid ""
304
  "pay for them.</b></p>"
305
  msgstr ""
306
 
307
- #: views/global_options.php:73
308
  msgid "General Settings"
309
  msgstr ""
310
 
311
- #: views/global_options.php:76
312
  msgid "Include the players only for registered users"
313
  msgstr ""
314
 
315
- #: views/global_options.php:80
316
  msgid "The general settings affect only the PRO version of the plugin"
317
  msgstr ""
318
 
319
- #: views/global_options.php:80 views/global_options.php:303
320
  #: views/player_options.php:47 views/player_options.php:261
321
  msgid "CLICK HERE TO GET THE PRO VERSION OF THE PLUGIN"
322
  msgstr ""
323
 
324
- #: views/global_options.php:83
325
  msgid ""
326
  "For buyers, play the purchased audio files instead the truncated files for "
327
  "demo"
328
  msgstr ""
329
 
330
- #: views/global_options.php:90
331
  msgid "Truncate the audio files for demo with ffmpeg"
332
  msgstr ""
333
 
334
- #: views/global_options.php:94
335
  msgid "ffmpeg path"
336
  msgstr ""
337
 
338
- #: views/global_options.php:101
339
  msgid "Delete the demo files generated previously"
340
  msgstr ""
341
 
342
- #: views/global_options.php:108
343
  msgid "Store demo files on Google Drive"
344
  msgstr ""
345
 
346
- #: views/global_options.php:112
347
  msgid "Import a JSON Key file"
348
  msgstr ""
349
 
350
- #: views/global_options.php:158
351
  msgid "Troubleshoot Area"
352
  msgstr ""
353
 
354
- #: views/global_options.php:162
 
 
 
 
 
 
 
 
 
355
  msgid "Loading players in the onload event"
356
  msgstr ""
357
 
358
- #: views/global_options.php:166
359
  msgid "tick the checkbox if the players are not being loaded properly"
360
  msgstr ""
361
 
362
- #: views/global_options.php:171
363
  msgid "For files whose extensions cannot be determined"
364
  msgstr ""
365
 
366
- #: views/global_options.php:175
367
  msgid "handle them as mp3 files"
368
  msgstr ""
369
 
370
- #: views/global_options.php:180
371
  msgid ""
372
  "For the WooCommerce Gutenberg Blocks, include the main player in the "
373
  "products titles"
374
  msgstr ""
375
 
376
- #: views/global_options.php:184
377
  msgid "Includes the main player in front of products titles"
378
  msgstr ""
379
 
380
- #: views/global_options.php:189
381
  msgid "WooCommerce hook used to display the players in the shop pages"
382
  msgstr ""
383
 
384
- #: views/global_options.php:193
385
  msgid ""
386
  "The plugin uses by default the <b>woocommerce_shop_loop_item_title</b> hook. "
387
  "If the player is not being displayed, enter the hook used by the theme "
388
  "active on your website."
389
  msgstr ""
390
 
391
- #: views/global_options.php:198
392
  msgid "WooCommerce hook used to display the players in the products pages"
393
  msgstr ""
394
 
395
- #: views/global_options.php:202
396
  msgid ""
397
  "The plugin uses by default the <b>woocommerce_single_product_summary</b> "
398
  "hook. If the player is not being displayed, enter the hook used by the theme "
399
  "active on your website."
400
  msgstr ""
401
 
402
- #: views/global_options.php:207
403
  msgid ""
404
  "Click on the <a href=\"https://docs.woocommerce.com/wc-apidocs/hook-docs.html"
405
  "\" target=\"_blank\">THIS LINK</a> for the list of available <a href="
@@ -407,79 +416,79 @@ msgid ""
407
  "style=\"font-weight:bold;font-size:1.3em;\">WooCommerce Hooks</a>"
408
  msgstr ""
409
 
410
- #: views/global_options.php:212
411
  msgid "Include music player in all products"
412
  msgstr ""
413
 
414
- #: views/global_options.php:229
415
  msgid "Include players in cart"
416
  msgstr ""
417
 
418
- #: views/global_options.php:303 views/player_options.php:261
419
  msgid "The security feature is only available in the PRO version of the plugin"
420
  msgstr ""
421
 
422
- #: views/global_options.php:306 views/player_options.php:264
423
  msgid "Protect the file"
424
  msgstr ""
425
 
426
- #: views/global_options.php:310 views/player_options.php:268
427
  msgid "Percent of audio used for protected playbacks"
428
  msgstr ""
429
 
430
- #: views/global_options.php:313 views/player_options.php:271
431
  msgid ""
432
  "To prevent unauthorized copying of audio files, the files will be partially "
433
  "accessible"
434
  msgstr ""
435
 
436
- #: views/global_options.php:318
437
  msgid ""
438
  "Text to display beside the player explaining that demos are partial versions "
439
  "of the original files"
440
  msgstr ""
441
 
442
- #: views/global_options.php:334
443
  msgid "Scope"
444
  msgstr ""
445
 
446
- #: views/global_options.php:335
447
  msgid ""
448
  "Ticking the checkbox the previous settings are applied to all products, even "
449
  "if they have a player enabled."
450
  msgstr ""
451
 
452
- #: views/global_options.php:335
453
  msgid "Apply the previous settings to all products pages in the website."
454
  msgstr ""
455
 
456
- #: views/global_options.php:347
457
  msgid "Analytics"
458
  msgstr ""
459
 
460
- #: views/global_options.php:351
461
  msgid ""
462
  "Allows the integration with Google Analytics for registering new events when "
463
  "the songs are played. The event information would include: the URL to the "
464
  "audio file as the event label and the product's id as its value."
465
  msgstr ""
466
 
467
- #: views/global_options.php:352
468
  msgid "Note"
469
  msgstr ""
470
 
471
- #: views/global_options.php:352
472
  msgid ""
473
  "If the preload option is configured as Metadata or Auto in the players "
474
  "settings, the event would be registered when the audio file is loaded by the "
475
  "player and not exactly when they are playing."
476
  msgstr ""
477
 
478
- #: views/global_options.php:357
479
  msgid "Tracking Id"
480
  msgstr ""
481
 
482
- #: views/global_options.php:365
483
  msgid "Save settings"
484
  msgstr ""
485
 
@@ -529,7 +538,7 @@ msgstr ""
529
  msgid "Help"
530
  msgstr ""
531
 
532
- #: wcmp.php:931
533
  msgid "There are no products that satisfy the block's settings"
534
  msgstr ""
535
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: music-player-for-woocommerce\n"
4
+ "POT-Creation-Date: 2020-06-17 20:26+0200\n"
5
+ "PO-Revision-Date: 2020-06-17 20:27+0200\n"
6
  "Last-Translator: CodePeople\n"
7
  "Language-Team: CodePeople\n"
8
  "Language: en_US\n"
116
  "modified as <b>dl=1</b>"
117
  msgstr ""
118
 
119
+ #: addons/dokan/player_options.php:181 views/global_options.php:223
120
  msgid ""
121
  "The player is shown only if the product is \"downloadable\" with at least an "
122
  "audio file between the \"Downloadable files\", or you have selected your own "
127
  msgid "Include music player"
128
  msgstr ""
129
 
130
+ #: addons/dokan/player_options.php:185 views/global_options.php:226
131
  #: views/player_options.php:180
132
  msgid "Include in"
133
  msgstr ""
134
 
135
+ #: addons/dokan/player_options.php:188 views/global_options.php:229
136
  #: views/player_options.php:183
137
  msgid "single-entry pages <i>(Product's page only)</i>"
138
  msgstr ""
139
 
140
+ #: addons/dokan/player_options.php:191 views/global_options.php:232
141
  #: views/player_options.php:186
142
  msgid ""
143
  "multiple entries pages <i>(Shop pages, archive pages, but not in the "
144
  "product's page)</i>"
145
  msgstr ""
146
 
147
+ #: addons/dokan/player_options.php:194 views/global_options.php:235
148
  #: views/player_options.php:189
149
  msgid "all pages <i>(with single or multiple-entries)</i>"
150
  msgstr ""
151
 
152
+ #: addons/dokan/player_options.php:198 views/global_options.php:245
153
  #: views/player_options.php:193
154
  msgid "Merge in grouped products"
155
  msgstr ""
156
 
157
+ #: addons/dokan/player_options.php:200 views/global_options.php:246
158
  #: views/player_options.php:194
159
  msgid ""
160
  "In grouped products, display the \"Add to cart\" buttons and quantity fields "
161
  "in the players rows"
162
  msgstr ""
163
 
164
+ #: addons/dokan/player_options.php:203 views/global_options.php:249
165
  #: views/player_options.php:197 widgets/playlist_widget.php:71
166
  msgid "Player layout"
167
  msgstr ""
168
 
169
+ #: addons/dokan/player_options.php:222 views/global_options.php:271
170
  #: views/player_options.php:219 widgets/playlist_widget.php:87
171
  msgid "Preload"
172
  msgstr ""
173
 
174
+ #: addons/dokan/player_options.php:230 views/global_options.php:281
175
  #: views/player_options.php:229 widgets/playlist_widget.php:83
176
  msgid "Play all"
177
  msgstr ""
178
 
179
+ #: addons/dokan/player_options.php:233 views/global_options.php:288
180
  #: views/player_options.php:236
181
  msgid "Player controls"
182
  msgstr ""
183
 
184
+ #: addons/dokan/player_options.php:235 views/global_options.php:290
185
  #: views/player_options.php:238
186
  msgid "the play/pause button only"
187
  msgstr ""
188
 
189
+ #: addons/dokan/player_options.php:236 views/global_options.php:291
190
  #: views/player_options.php:239
191
  msgid "all controls"
192
  msgstr ""
193
 
194
+ #: addons/dokan/player_options.php:237 views/global_options.php:292
195
  #: views/player_options.php:240
196
  msgid "the play/pause button only, or all controls depending on context"
197
  msgstr ""
198
 
199
+ #: addons/dokan/player_options.php:241 views/global_options.php:297
200
  #: views/player_options.php:245
201
  msgid "for play/pause button players display them on cover images."
202
  msgstr ""
203
 
204
+ #: addons/dokan/player_options.php:242 views/global_options.php:300
205
  #: views/player_options.php:248
206
  msgid ""
207
  "(This feature is experimental, and will depend on the theme active on the "
208
  "website.)"
209
  msgstr ""
210
 
211
+ #: addons/dokan/player_options.php:247 views/global_options.php:307
212
  #: views/player_options.php:255
213
  msgid "Display the player's title"
214
  msgstr ""
264
  msgid "Insert a playlist with the products players"
265
  msgstr ""
266
 
267
+ #: views/global_options.php:35
268
  msgid "Music Player for WooCommerce - Global Settings"
269
  msgstr ""
270
 
271
+ #: views/global_options.php:39
272
  msgid ""
273
  "For reporting any issue or to request a customization, <a href=\"https://"
274
  "wordpress.dwbooster.com/contact-us\" target=\"_blank\">CLICK HERE</a><br />\n"
280
  "target=\"_blank\">Public page: Click to visit the WooCommerce Store</a>"
281
  msgstr ""
282
 
283
+ #: views/global_options.php:48
284
  msgid "Registering of Plugin"
285
  msgstr ""
286
 
287
+ #: views/global_options.php:50
288
  msgid "Enter the email address of buyer"
289
  msgstr ""
290
 
291
+ #: views/global_options.php:51
292
  msgid "Register"
293
  msgstr ""
294
 
295
+ #: views/global_options.php:63 views/player_options.php:43
296
  msgid ""
297
  "<p>The player uses the audio files associated to the product. If you want "
298
  "protecting the audio files for selling, tick the checkbox: <b>\"Protect the "
304
  "pay for them.</b></p>"
305
  msgstr ""
306
 
307
+ #: views/global_options.php:74
308
  msgid "General Settings"
309
  msgstr ""
310
 
311
+ #: views/global_options.php:77
312
  msgid "Include the players only for registered users"
313
  msgstr ""
314
 
315
+ #: views/global_options.php:81
316
  msgid "The general settings affect only the PRO version of the plugin"
317
  msgstr ""
318
 
319
+ #: views/global_options.php:81 views/global_options.php:313
320
  #: views/player_options.php:47 views/player_options.php:261
321
  msgid "CLICK HERE TO GET THE PRO VERSION OF THE PLUGIN"
322
  msgstr ""
323
 
324
+ #: views/global_options.php:84
325
  msgid ""
326
  "For buyers, play the purchased audio files instead the truncated files for "
327
  "demo"
328
  msgstr ""
329
 
330
+ #: views/global_options.php:91
331
  msgid "Truncate the audio files for demo with ffmpeg"
332
  msgstr ""
333
 
334
+ #: views/global_options.php:95
335
  msgid "ffmpeg path"
336
  msgstr ""
337
 
338
+ #: views/global_options.php:102
339
  msgid "Delete the demo files generated previously"
340
  msgstr ""
341
 
342
+ #: views/global_options.php:109
343
  msgid "Store demo files on Google Drive"
344
  msgstr ""
345
 
346
+ #: views/global_options.php:113
347
  msgid "Import a JSON Key file"
348
  msgstr ""
349
 
350
+ #: views/global_options.php:159
351
  msgid "Troubleshoot Area"
352
  msgstr ""
353
 
354
+ #: views/global_options.php:163
355
+ msgid "On iPads and iPhones, use native controls"
356
+ msgstr ""
357
+
358
+ #: views/global_options.php:167
359
+ msgid ""
360
+ "tick the checkbox if the players do not work properly on iPads or iPhones"
361
+ msgstr ""
362
+
363
+ #: views/global_options.php:172
364
  msgid "Loading players in the onload event"
365
  msgstr ""
366
 
367
+ #: views/global_options.php:176
368
  msgid "tick the checkbox if the players are not being loaded properly"
369
  msgstr ""
370
 
371
+ #: views/global_options.php:181
372
  msgid "For files whose extensions cannot be determined"
373
  msgstr ""
374
 
375
+ #: views/global_options.php:185
376
  msgid "handle them as mp3 files"
377
  msgstr ""
378
 
379
+ #: views/global_options.php:190
380
  msgid ""
381
  "For the WooCommerce Gutenberg Blocks, include the main player in the "
382
  "products titles"
383
  msgstr ""
384
 
385
+ #: views/global_options.php:194
386
  msgid "Includes the main player in front of products titles"
387
  msgstr ""
388
 
389
+ #: views/global_options.php:199
390
  msgid "WooCommerce hook used to display the players in the shop pages"
391
  msgstr ""
392
 
393
+ #: views/global_options.php:203
394
  msgid ""
395
  "The plugin uses by default the <b>woocommerce_shop_loop_item_title</b> hook. "
396
  "If the player is not being displayed, enter the hook used by the theme "
397
  "active on your website."
398
  msgstr ""
399
 
400
+ #: views/global_options.php:208
401
  msgid "WooCommerce hook used to display the players in the products pages"
402
  msgstr ""
403
 
404
+ #: views/global_options.php:212
405
  msgid ""
406
  "The plugin uses by default the <b>woocommerce_single_product_summary</b> "
407
  "hook. If the player is not being displayed, enter the hook used by the theme "
408
  "active on your website."
409
  msgstr ""
410
 
411
+ #: views/global_options.php:217
412
  msgid ""
413
  "Click on the <a href=\"https://docs.woocommerce.com/wc-apidocs/hook-docs.html"
414
  "\" target=\"_blank\">THIS LINK</a> for the list of available <a href="
416
  "style=\"font-weight:bold;font-size:1.3em;\">WooCommerce Hooks</a>"
417
  msgstr ""
418
 
419
+ #: views/global_options.php:222
420
  msgid "Include music player in all products"
421
  msgstr ""
422
 
423
+ #: views/global_options.php:239
424
  msgid "Include players in cart"
425
  msgstr ""
426
 
427
+ #: views/global_options.php:313 views/player_options.php:261
428
  msgid "The security feature is only available in the PRO version of the plugin"
429
  msgstr ""
430
 
431
+ #: views/global_options.php:316 views/player_options.php:264
432
  msgid "Protect the file"
433
  msgstr ""
434
 
435
+ #: views/global_options.php:320 views/player_options.php:268
436
  msgid "Percent of audio used for protected playbacks"
437
  msgstr ""
438
 
439
+ #: views/global_options.php:323 views/player_options.php:271
440
  msgid ""
441
  "To prevent unauthorized copying of audio files, the files will be partially "
442
  "accessible"
443
  msgstr ""
444
 
445
+ #: views/global_options.php:328
446
  msgid ""
447
  "Text to display beside the player explaining that demos are partial versions "
448
  "of the original files"
449
  msgstr ""
450
 
451
+ #: views/global_options.php:344
452
  msgid "Scope"
453
  msgstr ""
454
 
455
+ #: views/global_options.php:345
456
  msgid ""
457
  "Ticking the checkbox the previous settings are applied to all products, even "
458
  "if they have a player enabled."
459
  msgstr ""
460
 
461
+ #: views/global_options.php:345
462
  msgid "Apply the previous settings to all products pages in the website."
463
  msgstr ""
464
 
465
+ #: views/global_options.php:357
466
  msgid "Analytics"
467
  msgstr ""
468
 
469
+ #: views/global_options.php:361
470
  msgid ""
471
  "Allows the integration with Google Analytics for registering new events when "
472
  "the songs are played. The event information would include: the URL to the "
473
  "audio file as the event label and the product's id as its value."
474
  msgstr ""
475
 
476
+ #: views/global_options.php:362
477
  msgid "Note"
478
  msgstr ""
479
 
480
+ #: views/global_options.php:362
481
  msgid ""
482
  "If the preload option is configured as Metadata or Auto in the players "
483
  "settings, the event would be registered when the audio file is loaded by the "
484
  "player and not exactly when they are playing."
485
  msgstr ""
486
 
487
+ #: views/global_options.php:367
488
  msgid "Tracking Id"
489
  msgstr ""
490
 
491
+ #: views/global_options.php:375
492
  msgid "Save settings"
493
  msgstr ""
494
 
538
  msgid "Help"
539
  msgstr ""
540
 
541
+ #: wcmp.php:935
542
  msgid "There are no products that satisfy the block's settings"
543
  msgstr ""
544
 
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Music Player for WooCommerce ===
2
  Contributors: codepeople
3
  Donate link: https://wcmp.dwbooster.com
4
- Tags:WooCommerce,music player,audio,music,song,player,audio player,media player,mp3,wav,oga,ogg,dokan
5
  Requires at least: 3.5.0
6
- Tested up to: 5.4
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -12,9 +12,9 @@ Music Player for WooCommerce includes the MediaElement.js music player in the pa
12
 
13
  == Description ==
14
 
15
- Features of the Music Player for WooCommerce and Dokan:
16
 
17
- ♪ Integrate a music player into the WooCommerce products and Dokan
18
  ♪ Includes an audio player that supports formats: OGA, MP3, WAV, WMA
19
  ♪ Includes multiple skins for the Music Player
20
  ♪ Supports all most popular web browsers and mobile devices
@@ -28,7 +28,7 @@ Features of the Music Player for WooCommerce and Dokan:
28
 
29
  Note: for the other editors, insert directly the playlists' shortcodes.
30
 
31
- Music Player for WooCommerce includes the MediaElement.js music player in the pages of the products with audio files associated, and in the store's pages. It allows the integration with Dokan multivendor store. Furthermore, the plugin allows selecting between multiple skins.
32
 
33
  MediaElement.js is an music player compatible with all major browsers: Internet Explorer, Firefox, Opera, Safari, Chrome and mobile devices: iPhone, iPad, Android. The music player is developed following the html5 standard. The music player supports the following file formats: MP3, WAV, WMA and OGA.
34
 
@@ -73,7 +73,7 @@ The global settings are accessible through the menu option: "Settings/Music Play
73
 
74
  **Setting up the Music Players through the products' pages**
75
 
76
- The Music Players are configured from the products pages and Dokan interface.
77
 
78
  **Settings Interface**
79
 
@@ -199,6 +199,35 @@ Each time save the data of a product, the files for demo are deleted and generat
199
 
200
  == Changelog ==
201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
  = 1.0.104 =
203
 
204
  * Modifies the settings page of the plugin.
@@ -648,6 +677,6 @@ Each time save the data of a product, the files for demo are deleted and generat
648
 
649
  == Upgrade Notice ==
650
 
651
- = 1.0.104 =
652
 
653
  Important note: If you are using the Professional version don't update via the WP dashboard but using your personal update link. Contact us if you need further information: http://wordpress.dwbooster.com/support
1
  === Music Player for WooCommerce ===
2
  Contributors: codepeople
3
  Donate link: https://wcmp.dwbooster.com
4
+ Tags:WooCommerce,music player,audio,music,song,player,audio player,media player,mp3,wav,oga,ogg,dokan,wcfm
5
  Requires at least: 3.5.0
6
+ Tested up to: 5.5
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
13
  == Description ==
14
 
15
+ Features of the Music Player for WooCommerce, Dokan, and WCFM Marketplace:
16
 
17
+ ♪ Integrate a music player into the WooCommerce products, Dokan and WCFM Marketplace
18
  ♪ Includes an audio player that supports formats: OGA, MP3, WAV, WMA
19
  ♪ Includes multiple skins for the Music Player
20
  ♪ Supports all most popular web browsers and mobile devices
28
 
29
  Note: for the other editors, insert directly the playlists' shortcodes.
30
 
31
+ Music Player for WooCommerce includes the MediaElement.js music player in the pages of the products with audio files associated, and in the store's pages. It allows the integration with the multivendor stores generated with Dokan and WCFM Marketplace. Furthermore, the plugin allows selecting between multiple skins.
32
 
33
  MediaElement.js is an music player compatible with all major browsers: Internet Explorer, Firefox, Opera, Safari, Chrome and mobile devices: iPhone, iPad, Android. The music player is developed following the html5 standard. The music player supports the following file formats: MP3, WAV, WMA and OGA.
34
 
73
 
74
  **Setting up the Music Players through the products' pages**
75
 
76
+ The Music Players are configured from the products pages, the Dokan interface, and WCFM Marketplace.
77
 
78
  **Settings Interface**
79
 
199
 
200
  == Changelog ==
201
 
202
+ = 1.0.112 =
203
+
204
+ * Hides the download control of players, when are used the default players of devices.
205
+
206
+ = 1.0.111 =
207
+ = 1.0.110 =
208
+
209
+ * Fixes a CSS conflict with themes of thirds.
210
+
211
+ = 1.0.109 =
212
+
213
+ * Includes the integration with WCFM Marketplace.
214
+
215
+ = 1.0.108 =
216
+
217
+ * Fixes a conflict with themes of thirds.
218
+
219
+ = 1.0.107 =
220
+
221
+ * Modifies the module that generates the demo files.
222
+
223
+ = 1.0.106 =
224
+
225
+ * Includes new options in the troubleshoot area, in the settings page of the plugin, to load the players on iPads and iPhones with the default controls of devices.
226
+
227
+ = 1.0.105 =
228
+
229
+ * Updates some vendors libraries.
230
+
231
  = 1.0.104 =
232
 
233
  * Modifies the settings page of the plugin.
677
 
678
  == Upgrade Notice ==
679
 
680
+ = 1.0.112 =
681
 
682
  Important note: If you are using the Professional version don't update via the WP dashboard but using your personal update link. Contact us if you need further information: http://wordpress.dwbooster.com/support
views/global_options.php CHANGED
@@ -6,6 +6,7 @@ wp_enqueue_style( 'wcmp-admin-style', plugin_dir_url(__FILE__).'../css/style.adm
6
 
7
  $troubleshoot_default_extension = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_default_extension', false );
8
  $force_main_player_in_title = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_force_main_player_in_title', 1 );
 
9
  $troubleshoot_onload = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_onload', false );
10
  $include_main_player_hook = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_main_player_hook', ''));
11
  $include_all_players_hook = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_all_players_hook', ''));
@@ -157,6 +158,15 @@ _e(
157
  <tr>
158
  <td colspan="2"><h2><?php _e('Troubleshoot Area', 'music-player-for-woocommerce'); ?></h2></td>
159
  </tr>
 
 
 
 
 
 
 
 
 
160
  <tr>
161
  <td width="30%">
162
  <?php _e( 'Loading players in the onload event', 'music-player-for-woocommerce' ); ?>
6
 
7
  $troubleshoot_default_extension = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_default_extension', false );
8
  $force_main_player_in_title = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_force_main_player_in_title', 1 );
9
+ $ios_controls = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_ios_controls', false );
10
  $troubleshoot_onload = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_onload', false );
11
  $include_main_player_hook = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_main_player_hook', ''));
12
  $include_all_players_hook = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_all_players_hook', ''));
158
  <tr>
159
  <td colspan="2"><h2><?php _e('Troubleshoot Area', 'music-player-for-woocommerce'); ?></h2></td>
160
  </tr>
161
+ <tr>
162
+ <td width="30%">
163
+ <?php _e( 'On iPads and iPhones, use native controls', 'music-player-for-woocommerce' ); ?>
164
+ </td>
165
+ <td>
166
+ <input type="checkbox" name="_wcmp_ios_controls" <?php if($ios_controls) print 'CHECKED'; ?>/>
167
+ <?php _e( 'tick the checkbox if the players do not work properly on iPads or iPhones', 'music-player-for-woocommerce' ); ?>
168
+ </td>
169
+ </tr>
170
  <tr>
171
  <td width="30%">
172
  <?php _e( 'Loading players in the onload event', 'music-player-for-woocommerce' ); ?>
views/player_options.php CHANGED
@@ -4,7 +4,8 @@ if( !defined( 'WCMP_PLUGIN_URL' ) ) { echo 'Direct access not allowed.'; exit;
4
  // include resources
5
  wp_enqueue_style( 'wcmp-admin-style', plugin_dir_url(__FILE__).'../css/style.admin.css', array(), '1.0.24' );
6
 
7
- global $post;
 
8
  $enable_player = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_product_attr( $post->ID, '_wcmp_enable_player', false );
9
  $show_in = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_product_attr( $post->ID, '_wcmp_show_in', 'all' );
10
  $player_style = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_product_attr( $post->ID, '_wcmp_player_layout', WCMP_DEFAULT_PLAYER_LAYOUT );
@@ -278,7 +279,7 @@ $on_cover = intval( $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_product_attr( $p
278
  <table class="widefat" style="border:0;padding-bottom:20px;">
279
  <tr valign="top">
280
  <td style="color:#DDDDDD;">
281
- <table class="widefat" style="border:1px solid #e1e1e1;">
282
  <tr valign="top">
283
  <td style="color:#DDDDDD;"><input type="checkbox" disabled /> <?php _e('Select my own demo files', 'music-player-for-woocommerce'); ?></td>
284
  </tr>
4
  // include resources
5
  wp_enqueue_style( 'wcmp-admin-style', plugin_dir_url(__FILE__).'../css/style.admin.css', array(), '1.0.24' );
6
 
7
+ if(empty($post)) global $post;
8
+
9
  $enable_player = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_product_attr( $post->ID, '_wcmp_enable_player', false );
10
  $show_in = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_product_attr( $post->ID, '_wcmp_show_in', 'all' );
11
  $player_style = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_product_attr( $post->ID, '_wcmp_player_layout', WCMP_DEFAULT_PLAYER_LAYOUT );
279
  <table class="widefat" style="border:0;padding-bottom:20px;">
280
  <tr valign="top">
281
  <td style="color:#DDDDDD;">
282
+ <table class="widefat wcmp-player-demos" style="border:1px solid #e1e1e1;">
283
  <tr valign="top">
284
  <td style="color:#DDDDDD;"><input type="checkbox" disabled /> <?php _e('Select my own demo files', 'music-player-for-woocommerce'); ?></td>
285
  </tr>
wcmp.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: Music Player for WooCommerce
4
  Plugin URI: https://wcmp.dwbooster.com
5
- Version: 1.0.104
6
  Text Domain: music-player-for-woocommerce
7
  Author: CodePeople
8
  Author URI: https://wcmp.dwbooster.com
@@ -243,6 +243,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
243
  $registered_only = (isset($_REQUEST['_wcmp_registered_only'])) ? 1 : 0;
244
  $troubleshoot_default_extension = (isset($_REQUEST['_wcmp_default_extension'])) ? true : false;
245
  $force_main_player_in_title = (isset($_REQUEST['_wcmp_force_main_player_in_title'])) ? 1 : 0;
 
246
  $troubleshoot_onload = (isset($_REQUEST['_wcmp_onload'])) ? true : false;
247
  $include_main_player_hook = (isset($_REQUEST['_wcmp_main_player_hook'])) ? sanitize_text_field($_REQUEST['_wcmp_main_player_hook']) : '';
248
  $include_all_players_hook = (isset($_REQUEST['_wcmp_all_players_hook'])) ? sanitize_text_field($_REQUEST['_wcmp_all_players_hook']) : '';
@@ -283,6 +284,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
283
  '_wcmp_on_cover' => $on_cover,
284
  '_wcmp_default_extension' => $troubleshoot_default_extension,
285
  '_wcmp_force_main_player_in_title' => $force_main_player_in_title,
 
286
  '_wcmp_onload' => $troubleshoot_onload,
287
  '_wcmp_main_player_hook' => $include_main_player_hook,
288
  '_wcmp_all_players_hook' => $include_all_players_hook,
@@ -400,19 +402,19 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
400
  // Registering resources
401
  wp_register_style(
402
  'wp-mediaelement_22212',
403
- 'https://cdnjs.cloudflare.com/ajax/libs/mediaelement/2.21.2/mediaelementplayer.min.css'
404
  );
405
  wp_register_script(
406
  'wp-mediaelement_22212',
407
- 'https://cdnjs.cloudflare.com/ajax/libs/mediaelement/2.21.2/mediaelement-and-player.min.js'
408
  );
409
 
410
  wp_enqueue_style( 'wp-mediaelement_22212' );
411
- wp_enqueue_style( 'wp-mediaelement-skins', 'https://cdnjs.cloudflare.com/ajax/libs/mediaelement/2.21.2/mejs-skins.min.css' );
412
  wp_enqueue_style( 'wcmp-style', plugin_dir_url(__FILE__).'css/style.css' );
413
  wp_enqueue_script('jquery');
414
  wp_enqueue_script('wp-mediaelement_22212');
415
- wp_enqueue_script('wcmp-script', plugin_dir_url(__FILE__).'js/public.js', array('jquery', 'wp-mediaelement_22212'),'1.0.104');
416
 
417
  $play_all = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr(
418
  '_wcmp_play_all',
@@ -437,11 +439,13 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
437
  );
438
  }
439
  }
 
440
  wp_localize_script(
441
  'wcmp-script',
442
  'wcmp_global_settings',
443
  array(
444
  'play_all'=>intval($play_all),
 
445
  'onload' => $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_onload', false)
446
  )
447
  );
@@ -867,7 +871,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
867
 
868
  public function add_data_product($player, $product_id, $index)
869
  {
870
- $player = preg_replace('/<audio\b/i', '<audio data-product="'.esc_attr($product_id).'" ',$player);
871
  return $player;
872
  } // End add_data_product
873
 
@@ -1028,7 +1032,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
1028
 
1029
  $file_path = $this->_files_directory_path.$file_name;
1030
 
1031
- if(file_exists($file_path))
1032
  {
1033
  return 'http'.((is_ssl()) ? 's:' : ':').$this->_files_directory_url.$file_name;
1034
  }
@@ -1190,6 +1194,17 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
1190
  return $file_name;
1191
  } // End _demo_file_name
1192
 
 
 
 
 
 
 
 
 
 
 
 
1193
  /**
1194
  * Create a temporal file and redirect to the new file
1195
  */
@@ -1207,7 +1222,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
1207
  $text = 'The requested URL was not found on this server';
1208
  $file_path = $this->_files_directory_path.$file_name;
1209
 
1210
- if(file_exists($file_path)){
1211
  header('location: http'.((is_ssl()) ? 's:' : ':').$this->_files_directory_url.$file_name);
1212
  exit;
1213
  }else{
2
  /*
3
  Plugin Name: Music Player for WooCommerce
4
  Plugin URI: https://wcmp.dwbooster.com
5
+ Version: 1.0.112
6
  Text Domain: music-player-for-woocommerce
7
  Author: CodePeople
8
  Author URI: https://wcmp.dwbooster.com
243
  $registered_only = (isset($_REQUEST['_wcmp_registered_only'])) ? 1 : 0;
244
  $troubleshoot_default_extension = (isset($_REQUEST['_wcmp_default_extension'])) ? true : false;
245
  $force_main_player_in_title = (isset($_REQUEST['_wcmp_force_main_player_in_title'])) ? 1 : 0;
246
+ $ios_controls = (isset($_REQUEST['_wcmp_ios_controls'])) ? true : false;
247
  $troubleshoot_onload = (isset($_REQUEST['_wcmp_onload'])) ? true : false;
248
  $include_main_player_hook = (isset($_REQUEST['_wcmp_main_player_hook'])) ? sanitize_text_field($_REQUEST['_wcmp_main_player_hook']) : '';
249
  $include_all_players_hook = (isset($_REQUEST['_wcmp_all_players_hook'])) ? sanitize_text_field($_REQUEST['_wcmp_all_players_hook']) : '';
284
  '_wcmp_on_cover' => $on_cover,
285
  '_wcmp_default_extension' => $troubleshoot_default_extension,
286
  '_wcmp_force_main_player_in_title' => $force_main_player_in_title,
287
+ '_wcmp_ios_controls' => $ios_controls,
288
  '_wcmp_onload' => $troubleshoot_onload,
289
  '_wcmp_main_player_hook' => $include_main_player_hook,
290
  '_wcmp_all_players_hook' => $include_all_players_hook,
402
  // Registering resources
403
  wp_register_style(
404
  'wp-mediaelement_22212',
405
+ 'https://cdnjs.cloudflare.com/ajax/libs/mediaelement/2.23.5/mediaelementplayer.min.css'
406
  );
407
  wp_register_script(
408
  'wp-mediaelement_22212',
409
+ 'https://cdnjs.cloudflare.com/ajax/libs/mediaelement/2.23.5/mediaelement-and-player.min.js'
410
  );
411
 
412
  wp_enqueue_style( 'wp-mediaelement_22212' );
413
+ wp_enqueue_style( 'wp-mediaelement-skins', 'https://cdnjs.cloudflare.com/ajax/libs/mediaelement/2.23.5/mejs-skins.min.css' );
414
  wp_enqueue_style( 'wcmp-style', plugin_dir_url(__FILE__).'css/style.css' );
415
  wp_enqueue_script('jquery');
416
  wp_enqueue_script('wp-mediaelement_22212');
417
+ wp_enqueue_script('wcmp-script', plugin_dir_url(__FILE__).'js/public.js', array('jquery', 'wp-mediaelement_22212'),'1.0.112');
418
 
419
  $play_all = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr(
420
  '_wcmp_play_all',
439
  );
440
  }
441
  }
442
+
443
  wp_localize_script(
444
  'wcmp-script',
445
  'wcmp_global_settings',
446
  array(
447
  'play_all'=>intval($play_all),
448
+ 'ios_controls' => $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_ios_controls', false),
449
  'onload' => $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_onload', false)
450
  )
451
  );
871
 
872
  public function add_data_product($player, $product_id, $index)
873
  {
874
+ $player = preg_replace('/<audio\b/i', '<audio controlslist="nodownload" data-product="'.esc_attr($product_id).'" ',$player);
875
  return $player;
876
  } // End add_data_product
877
 
1032
 
1033
  $file_path = $this->_files_directory_path.$file_name;
1034
 
1035
+ if($this->_valid_demo($file_path))
1036
  {
1037
  return 'http'.((is_ssl()) ? 's:' : ':').$this->_files_directory_url.$file_name;
1038
  }
1194
  return $file_name;
1195
  } // End _demo_file_name
1196
 
1197
+ private function _valid_demo($file_path)
1198
+ {
1199
+ if(!file_exists($file_path) || filesize($file_path) == 0) return false;
1200
+ if(function_exists('finfo_open'))
1201
+ {
1202
+ $finfo = finfo_open(FILEINFO_MIME);
1203
+ return substr(finfo_file($finfo, $file_path), 0, 4) !== 'text';
1204
+ }
1205
+ return true;
1206
+ } // End _valid_demo
1207
+
1208
  /**
1209
  * Create a temporal file and redirect to the new file
1210
  */
1222
  $text = 'The requested URL was not found on this server';
1223
  $file_path = $this->_files_directory_path.$file_name;
1224
 
1225
+ if($this->_valid_demo($file_path)){
1226
  header('location: http'.((is_ssl()) ? 's:' : ':').$this->_files_directory_url.$file_name);
1227
  exit;
1228
  }else{
widgets/playlist_widget/css/style.css CHANGED
@@ -8,7 +8,7 @@
8
 
9
  /* New playlist layout */
10
  .wcmp-widget-product{padding:10px;margin:0 !important;}
11
- .wcmp-widget-product *{font-family: Arial, Helvetica, sans-serif !important;word-break:normal !important;color:#111;}
12
  .wcmp-widget-product.wcmp-odd-product{background-color:rgba(250, 250, 250, 0.9); border: 0 !important;}
13
  .wcmp-widget-product.wcmp-even-product{background-color: rgba(255,255,255,0.8);}
14
  .wcmp-widget-product:hover,
@@ -23,7 +23,7 @@ display:inline-block; width:24px; height:24px;
23
  }
24
  .wcmp-widget-product .wcmp-widget-product-file{display:block;margin-bottom:5px;}
25
 
26
- .wcmp-widget-product-files{display: table-row;}
27
  .wcmp-widget-feature-image{display:table-cell;max-width:80px;margin-right:10px;}
28
  .wcmp-widget-playlist .wcmp-widget-feature-image{margin-top:5px; margin-bottom: 5px;}
29
- .wcmp-widget-product-files-list{display:table-cell;vertical-align: top;}
8
 
9
  /* New playlist layout */
10
  .wcmp-widget-product{padding:10px;margin:0 !important;}
11
+ .wcmp-widget-product :not([class*=mejs-]){font-family: Arial, Helvetica, sans-serif;word-break:normal !important;color:#111;}
12
  .wcmp-widget-product.wcmp-odd-product{background-color:rgba(250, 250, 250, 0.9); border: 0 !important;}
13
  .wcmp-widget-product.wcmp-even-product{background-color: rgba(255,255,255,0.8);}
14
  .wcmp-widget-product:hover,
23
  }
24
  .wcmp-widget-product .wcmp-widget-product-file{display:block;margin-bottom:5px;}
25
 
26
+ .wcmp-widget-product-files{display: table;width:100%;}
27
  .wcmp-widget-feature-image{display:table-cell;max-width:80px;margin-right:10px;}
28
  .wcmp-widget-playlist .wcmp-widget-feature-image{margin-top:5px; margin-bottom: 5px;}
29
+ .wcmp-widget-product-files-list{display:table-cell;width:100%; vertical-align: top;}