Version Description
- Include the purchased_times attribute in the playlist shortcode to show how many times a product has been purchased.
Download this release
Release Info
Developer | codepeople |
Plugin | Music Player for WooCommerce |
Version | 1.0.167 |
Comparing to | |
See all releases |
Code changes from version 1.0.161 to 1.0.167
- css/style.css +1 -0
- js/public.js +1 -1
- js/public_src.js +1 -1
- languages/music-player-for-woocommerce-en_US.mo +0 -0
- languages/music-player-for-woocommerce-en_US.po +162 -136
- pagebuilders/beaverbuilder/wcmp/includes/frontend.php +7 -3
- pagebuilders/divi/divi.pb.php +3 -3
- pagebuilders/visualcomposer/WCMPplaylist/public/dist/element.bundle.js +1 -1
- readme.txt +53 -4
- views/global_options.php +8 -1
- wcmp.php +81 -29
- widgets/playlist_widget.php +1 -0
css/style.css
CHANGED
@@ -60,4 +60,5 @@
|
|
60 |
.wcmp-player.track.mejs-classic .mejs-controls{padding:0 !important; height:26px;}
|
61 |
.wcmp-player.track.mejs-classic .mejs-playpause-button button{position: absolute;top: 50%;left: 50%;margin:0;transform: translate(-50%, -50%);}
|
62 |
|
|
|
63 |
.mini_cart_item .wcmp-player{display:none !important;}
|
60 |
.wcmp-player.track.mejs-classic .mejs-controls{padding:0 !important; height:26px;}
|
61 |
.wcmp-player.track.mejs-classic .mejs-playpause-button button{position: absolute;top: 50%;left: 50%;margin:0;transform: translate(-50%, -50%);}
|
62 |
|
63 |
+
.wcmp-purchased-times{display:inline-block;margin-left:10px;margin-right:10px;font-size:0.8em;}
|
64 |
.mini_cart_item .wcmp-player{display:none !important;}
|
js/public.js
CHANGED
@@ -10,4 +10,4 @@ p||!a.currentTime||(a.bkVolume=a.volume)});a.addEventListener("ended",function(a
|
|
10 |
console.log(l)}e++});t.each(function(){var b=c(this);b.find("source").attr("src");b.attr("playernumber",e);n.features=["playpause"];try{a[e]=new MediaElementPlayer(b[0],n)}catch(l){"console"in window&&console.log(l)}e++;h(b);c(window).resize(function(){h(b)})});c(k).length||(k=".product-type-grouped [data-product_id]");c(k).length||(k=".woocommerce-grouped-product-list [data-product_id]");c(k).length||(k='.woocommerce-grouped-product-list [id*="product-"]');c(k).each(function(){try{var a=c(this),
|
11 |
b=(a.data("product_id")||a.attr("name")||a.attr("id")).replace(/[^\d]/g,""),d=c(".wcmp-player-list.merge_in_grouped_products .product-"+b+":first .wcmp-player-title"),e=c("<table></table>");d.length&&!d.closest(".wcmp-first-in-product").length&&(d.closest("tr").addClass("wcmp-first-in-product"),0==d.closest("form").length&&d.closest(".wcmp-player-list").prependTo(a.closest("form")),e.append(a.closest("tr").prepend("<td>"+d.html()+"</td>")),d.html("").append(e))}catch(u){}})}};window.wcmp_force_init=
|
12 |
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,e=window.navigator.userAgent;a("[data-lazyloading]").each(function(){var b=a(this);b.attr("preload",b.data("lazyloading"))});if(e.match(/iPad/i)||e.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=
|
13 |
-
!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()});jQuery(document).on("scroll wpfAjaxSuccess woof_ajax_done yith-wcan-ajax-filtered wpf_ajax_success",wcmp_force_init)})();
|
10 |
console.log(l)}e++});t.each(function(){var b=c(this);b.find("source").attr("src");b.attr("playernumber",e);n.features=["playpause"];try{a[e]=new MediaElementPlayer(b[0],n)}catch(l){"console"in window&&console.log(l)}e++;h(b);c(window).resize(function(){h(b)})});c(k).length||(k=".product-type-grouped [data-product_id]");c(k).length||(k=".woocommerce-grouped-product-list [data-product_id]");c(k).length||(k='.woocommerce-grouped-product-list [id*="product-"]');c(k).each(function(){try{var a=c(this),
|
11 |
b=(a.data("product_id")||a.attr("name")||a.attr("id")).replace(/[^\d]/g,""),d=c(".wcmp-player-list.merge_in_grouped_products .product-"+b+":first .wcmp-player-title"),e=c("<table></table>");d.length&&!d.closest(".wcmp-first-in-product").length&&(d.closest("tr").addClass("wcmp-first-in-product"),0==d.closest("form").length&&d.closest(".wcmp-player-list").prependTo(a.closest("form")),e.append(a.closest("tr").prepend("<td>"+d.html()+"</td>")),d.html("").append(e))}catch(u){}})}};window.wcmp_force_init=
|
12 |
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,e=window.navigator.userAgent;a("[data-lazyloading]").each(function(){var b=a(this);b.attr("preload",b.data("lazyloading"))});if(e.match(/iPad/i)||e.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=
|
13 |
+
!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()});jQuery(document).on("scroll wpfAjaxSuccess woof_ajax_done yith-wcan-ajax-filtered wpf_ajax_success berocket_ajax_products_loaded berocket_ajax_products_infinite_loaded",wcmp_force_init)})();
|
js/public_src.js
CHANGED
@@ -250,5 +250,5 @@
|
|
250 |
if(jQuery('audio[data-product]:not([playernumber])').length) wcmp_force_init();
|
251 |
});
|
252 |
|
253 |
-
jQuery(document).on('scroll wpfAjaxSuccess woof_ajax_done yith-wcan-ajax-filtered wpf_ajax_success', wcmp_force_init);
|
254 |
})()
|
250 |
if(jQuery('audio[data-product]:not([playernumber])').length) wcmp_force_init();
|
251 |
});
|
252 |
|
253 |
+
jQuery(document).on('scroll wpfAjaxSuccess woof_ajax_done yith-wcan-ajax-filtered wpf_ajax_success berocket_ajax_products_loaded berocket_ajax_products_infinite_loaded', wcmp_force_init);
|
254 |
})()
|
languages/music-player-for-woocommerce-en_US.mo
CHANGED
Binary file
|
languages/music-player-for-woocommerce-en_US.po
CHANGED
@@ -1,70 +1,82 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: music-player-for-woocommerce\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
6 |
"Last-Translator: CodePeople\n"
|
7 |
"Language-Team: CodePeople\n"
|
8 |
"Language: en_US\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 3.0\n"
|
13 |
-
"X-Poedit-Basepath: ..\n"
|
14 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
|
|
|
15 |
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_attr_e\n"
|
16 |
"X-Poedit-SearchPath-0: .\n"
|
17 |
|
18 |
-
#: addons/ap-compact-audio-player.addon.php:
|
19 |
msgid "Use Compact Audio Player instead of the current plugin players"
|
20 |
msgstr ""
|
21 |
|
22 |
-
#: addons/ap-compact-audio-player.addon.php:
|
23 |
msgid "Use \"Compact Audio Player\" instead of the current plugin players"
|
24 |
msgstr ""
|
25 |
|
26 |
-
#: addons/ap-compact-audio-player.addon.php:
|
27 |
-
#: addons/ap-cp-media-player.addon.php:
|
28 |
-
#: addons/ap-html5-audio-player.addon.php:
|
29 |
msgid ""
|
30 |
"The player functions configured above do not apply, except for audio "
|
31 |
"protection if applicable.<br>This player <b>will take precedence</b> over "
|
32 |
"the player configured in the products' settings."
|
33 |
msgstr ""
|
34 |
|
35 |
-
#: addons/ap-compact-audio-player.addon.php:
|
36 |
msgid ""
|
37 |
"The \"Compact WP Audio Player\" plugin is not installed on your WordPress."
|
38 |
msgstr ""
|
39 |
|
40 |
-
#: addons/ap-cp-media-player.addon.php:
|
41 |
msgid "Use CP Media Player instead of the current plugin players"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: addons/ap-cp-media-player.addon.php:
|
45 |
msgid "Use \"CP Media Player\" instead of the current plugin players"
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: addons/ap-cp-media-player.addon.php:
|
49 |
msgid "Select player skin"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: addons/ap-cp-media-player.addon.php:
|
53 |
msgid "The \"CP Media Player\" plugin is not installed on your WordPress."
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: addons/ap-html5-audio-player.addon.php:
|
57 |
msgid "Use HTML5 Audio Player instead of the current plugin players"
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: addons/ap-html5-audio-player.addon.php:
|
61 |
msgid "Use \"HTML5 Audio Player\" instead of the current plugin players"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: addons/ap-html5-audio-player.addon.php:
|
65 |
msgid "The \"HTML5 Audio Player\" plugin is not installed on your WordPress."
|
66 |
msgstr ""
|
67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
#: addons/dokan.addon.php:26
|
69 |
msgid "Activate the Dokan add-on"
|
70 |
msgstr ""
|
@@ -184,12 +196,12 @@ msgid ""
|
|
184 |
"modified as <b>dl=1</b>"
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: addons/dokan/player_options.php:181 views/global_options.php:
|
188 |
#: views/player_options.php:181
|
189 |
msgid "Enable player"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: addons/dokan/player_options.php:181 views/global_options.php:
|
193 |
msgid ""
|
194 |
"The player is shown only if the product is \"downloadable\" with at least an "
|
195 |
"audio file between the \"Downloadable files\", or you have selected your own "
|
@@ -200,7 +212,7 @@ msgstr ""
|
|
200 |
msgid "Include music player"
|
201 |
msgstr ""
|
202 |
|
203 |
-
#: addons/dokan/player_options.php:185 views/global_options.php:
|
204 |
#: views/player_options.php:184
|
205 |
msgid "Include in"
|
206 |
msgstr ""
|
@@ -209,7 +221,7 @@ msgstr ""
|
|
209 |
msgid "Include on products pages only"
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: addons/dokan/player_options.php:188 views/global_options.php:
|
213 |
#: views/player_options.php:187
|
214 |
msgid "single-entry pages <i>(Product's page only)</i>"
|
215 |
msgstr ""
|
@@ -218,7 +230,7 @@ msgstr ""
|
|
218 |
msgid "Include on multiple-entry pages"
|
219 |
msgstr ""
|
220 |
|
221 |
-
#: addons/dokan/player_options.php:191 views/global_options.php:
|
222 |
#: views/player_options.php:190
|
223 |
msgid ""
|
224 |
"multiple entries pages <i>(Shop pages, archive pages, but not in the "
|
@@ -229,103 +241,103 @@ msgstr ""
|
|
229 |
msgid "Include on products and multiple-entry pages"
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: addons/dokan/player_options.php:194 views/global_options.php:
|
233 |
#: views/player_options.php:193
|
234 |
msgid "all pages <i>(with single or multiple-entries)</i>"
|
235 |
msgstr ""
|
236 |
|
237 |
#: addons/dokan/player_options.php:198 addons/dokan/player_options.php:199
|
238 |
-
#: views/global_options.php:
|
239 |
#: views/player_options.php:197 views/player_options.php:198
|
240 |
msgid "Merge in grouped products"
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: addons/dokan/player_options.php:200 views/global_options.php:
|
244 |
#: views/player_options.php:198
|
245 |
msgid ""
|
246 |
"In grouped products, display the \"Add to cart\" buttons and quantity fields "
|
247 |
"in the players rows"
|
248 |
msgstr ""
|
249 |
|
250 |
-
#: addons/dokan/player_options.php:203 views/global_options.php:
|
251 |
-
#: views/player_options.php:201 widgets/playlist_widget.php:
|
252 |
msgid "Player layout"
|
253 |
msgstr ""
|
254 |
|
255 |
-
#: addons/dokan/player_options.php:206 views/global_options.php:
|
256 |
-
#: views/global_options.php:
|
257 |
#: views/player_options.php:206
|
258 |
msgid "Skin 1"
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: addons/dokan/player_options.php:211 views/global_options.php:
|
262 |
#: views/player_options.php:210 views/player_options.php:211
|
263 |
msgid "Skin 2"
|
264 |
msgstr ""
|
265 |
|
266 |
-
#: addons/dokan/player_options.php:216 views/global_options.php:
|
267 |
-
#: views/global_options.php:
|
268 |
#: views/player_options.php:216
|
269 |
msgid "Skin 3"
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: addons/dokan/player_options.php:222 views/global_options.php:
|
273 |
-
#: views/player_options.php:223 widgets/playlist_widget.php:
|
274 |
msgid "Preload"
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: addons/dokan/player_options.php:224 views/global_options.php:
|
278 |
#: views/player_options.php:226
|
279 |
msgid "Preload - none"
|
280 |
msgstr ""
|
281 |
|
282 |
-
#: addons/dokan/player_options.php:225 views/global_options.php:
|
283 |
#: views/player_options.php:227
|
284 |
msgid "Preload - metadata"
|
285 |
msgstr ""
|
286 |
|
287 |
-
#: addons/dokan/player_options.php:226 views/global_options.php:
|
288 |
#: views/player_options.php:228
|
289 |
msgid "Preload - auto"
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: addons/dokan/player_options.php:230 views/global_options.php:
|
293 |
-
#: views/global_options.php:
|
294 |
-
#: views/player_options.php:236 widgets/playlist_widget.php:
|
295 |
msgid "Play all"
|
296 |
msgstr ""
|
297 |
|
298 |
-
#: addons/dokan/player_options.php:233 views/global_options.php:
|
299 |
#: views/player_options.php:246
|
300 |
msgid "Player controls"
|
301 |
msgstr ""
|
302 |
|
303 |
-
#: addons/dokan/player_options.php:235 views/global_options.php:
|
304 |
#: views/player_options.php:248
|
305 |
msgid "Play/pause button"
|
306 |
msgstr ""
|
307 |
|
308 |
-
#: addons/dokan/player_options.php:235 views/global_options.php:
|
309 |
#: views/player_options.php:248
|
310 |
msgid "the play/pause button only"
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: addons/dokan/player_options.php:236 views/global_options.php:
|
314 |
#: views/player_options.php:249
|
315 |
msgid "All controls"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: addons/dokan/player_options.php:236 views/global_options.php:
|
319 |
#: views/player_options.php:249
|
320 |
msgid "all controls"
|
321 |
msgstr ""
|
322 |
|
323 |
-
#: addons/dokan/player_options.php:237 views/global_options.php:
|
324 |
#: views/player_options.php:250
|
325 |
msgid "Depending on context"
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: addons/dokan/player_options.php:237 views/global_options.php:
|
329 |
#: views/player_options.php:250
|
330 |
msgid "the play/pause button only, or all controls depending on context"
|
331 |
msgstr ""
|
@@ -334,19 +346,19 @@ msgstr ""
|
|
334 |
msgid "Player on cover"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: addons/dokan/player_options.php:241 views/global_options.php:
|
338 |
#: views/player_options.php:255
|
339 |
msgid "for play/pause button players display them on cover images."
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: addons/dokan/player_options.php:242 views/global_options.php:
|
343 |
#: views/player_options.php:258
|
344 |
msgid ""
|
345 |
"(This feature is experimental, and will depend on the theme active on the "
|
346 |
"website.)"
|
347 |
msgstr ""
|
348 |
|
349 |
-
#: addons/dokan/player_options.php:247 views/global_options.php:
|
350 |
#: views/player_options.php:265
|
351 |
msgid "Display the player's title"
|
352 |
msgstr ""
|
@@ -402,7 +414,7 @@ msgstr ""
|
|
402 |
#: pagebuilders/beaverbuilder/wcmp/wcmp.pb.php:9
|
403 |
#: pagebuilders/beaverbuilder/wcmp/wcmp.pb.php:11
|
404 |
#: pagebuilders/beaverbuilder/wcmp/wcmp.pb.php:12 pagebuilders/builders.php:130
|
405 |
-
#: pagebuilders/siteorigin/siteorigin-wcmp/siteorigin-wcmp.php:17 wcmp.php:
|
406 |
msgid "Music Player for WooCommerce"
|
407 |
msgstr ""
|
408 |
|
@@ -440,11 +452,11 @@ msgstr ""
|
|
440 |
msgid "Insert a playlist with the products players"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: views/global_options.php:
|
444 |
msgid "Music Player for WooCommerce - Global Settings"
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: views/global_options.php:
|
448 |
msgid ""
|
449 |
"For reporting any issue or to request a customization, <a href=\"https://"
|
450 |
"wordpress.dwbooster.com/contact-us\" target=\"_blank\">CLICK HERE</a><br />\n"
|
@@ -456,23 +468,23 @@ msgid ""
|
|
456 |
"target=\"_blank\">Public page: Click to visit the WooCommerce Store</a>"
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: views/global_options.php:
|
460 |
msgid "Registering of Plugin"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: views/global_options.php:
|
464 |
msgid "Enter the email address of buyer"
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: views/global_options.php:
|
468 |
msgid "Buyer email"
|
469 |
msgstr ""
|
470 |
|
471 |
-
#: views/global_options.php:
|
472 |
msgid "Register"
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: views/global_options.php:
|
476 |
msgid ""
|
477 |
"<p>The player uses the audio files associated to the product. If you want "
|
478 |
"protecting the audio files for selling, tick the checkbox: <b>\"Protect the "
|
@@ -484,163 +496,177 @@ msgid ""
|
|
484 |
"pay for them.</b></p>"
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: views/global_options.php:
|
488 |
msgid "General Settings"
|
489 |
msgstr ""
|
490 |
|
491 |
-
#: views/global_options.php:
|
492 |
msgid "Include the players only for registered users"
|
493 |
msgstr ""
|
494 |
|
495 |
-
#: views/global_options.php:
|
496 |
msgid "Apply fade out to playing audio when possible"
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: views/global_options.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
500 |
msgid "The general settings affect only the PRO version of the plugin"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: views/global_options.php:
|
504 |
#: views/player_options.php:50 views/player_options.php:271
|
505 |
msgid "CLICK HERE TO GET THE PRO VERSION OF THE PLUGIN"
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: views/global_options.php:
|
509 |
msgid ""
|
510 |
"For buyers, play the purchased audio files instead of the truncated files "
|
511 |
"for demo"
|
512 |
msgstr ""
|
513 |
|
514 |
-
#: views/global_options.php:
|
515 |
msgid "Reset the files"
|
516 |
msgstr ""
|
517 |
|
518 |
-
#: views/global_options.php:
|
519 |
msgid "Reset files interval"
|
520 |
msgstr ""
|
521 |
|
522 |
-
#: views/global_options.php:
|
523 |
msgid "daily"
|
524 |
msgstr ""
|
525 |
|
526 |
-
#: views/global_options.php:
|
527 |
msgid "Truncate the audio files for demo with ffmpeg"
|
528 |
msgstr ""
|
529 |
|
530 |
-
#: views/global_options.php:
|
531 |
msgid "ffmpeg path"
|
532 |
msgstr ""
|
533 |
|
534 |
-
#: views/global_options.php:
|
535 |
msgid "Watermark audio"
|
536 |
msgstr ""
|
537 |
|
538 |
-
#: views/global_options.php:
|
539 |
msgid "Select"
|
540 |
msgstr ""
|
541 |
|
542 |
-
#: views/global_options.php:
|
543 |
msgid ""
|
544 |
"Select an audio file if you want to apply a watermark to the audio files for "
|
545 |
"demos. The watermark will be applied to the protected demos (Experimental "
|
546 |
"feature)."
|
547 |
msgstr ""
|
548 |
|
549 |
-
#: views/global_options.php:
|
550 |
msgid "Delete the demo files generated previously"
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: views/global_options.php:
|
554 |
msgid "Store demo files on Google Drive"
|
555 |
msgstr ""
|
556 |
|
557 |
-
#: views/global_options.php:
|
558 |
msgid "Import a JSON Key file"
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: views/global_options.php:
|
562 |
msgid "JSON Key file"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: views/global_options.php:
|
566 |
msgid "Troubleshoot Area"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: views/global_options.php:
|
570 |
msgid "On iPads and iPhones, use native controls"
|
571 |
msgstr ""
|
572 |
|
573 |
-
#: views/global_options.php:
|
574 |
msgid ""
|
575 |
"tick the checkbox if the players do not work properly on iPads or iPhones"
|
576 |
msgstr ""
|
577 |
|
578 |
-
#: views/global_options.php:
|
579 |
msgid "Loading players in the onload event"
|
580 |
msgstr ""
|
581 |
|
582 |
-
#: views/global_options.php:
|
583 |
msgid "Loading placeholder in the onload event"
|
584 |
msgstr ""
|
585 |
|
586 |
-
#: views/global_options.php:
|
587 |
msgid "tick the checkbox if the players are not being loaded properly"
|
588 |
msgstr ""
|
589 |
|
590 |
-
#: views/global_options.php:
|
591 |
msgid "For files whose extensions cannot be determined"
|
592 |
msgstr ""
|
593 |
|
594 |
-
#: views/global_options.php:
|
595 |
msgid ""
|
596 |
"For files whose extensions cannot be determined, handle them as mp3 files"
|
597 |
msgstr ""
|
598 |
|
599 |
-
#: views/global_options.php:
|
600 |
msgid "handle them as mp3 files"
|
601 |
msgstr ""
|
602 |
|
603 |
-
#: views/global_options.php:
|
604 |
msgid ""
|
605 |
"For the WooCommerce Gutenberg Blocks, include the main player in the "
|
606 |
"products titles"
|
607 |
msgstr ""
|
608 |
|
609 |
-
#: views/global_options.php:
|
610 |
msgid "Includes the main player in front of products titles"
|
611 |
msgstr ""
|
612 |
|
613 |
-
#: views/global_options.php:
|
614 |
msgid "WooCommerce hook used to display the players in the shop pages"
|
615 |
msgstr ""
|
616 |
|
617 |
-
#: views/global_options.php:
|
618 |
msgid ""
|
619 |
"The plugin uses by default the <b>woocommerce_shop_loop_item_title</b> hook. "
|
620 |
"If the player is not being displayed, enter the hook used by the theme "
|
621 |
"active on your website."
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: views/global_options.php:
|
625 |
msgid "Force the player in the title"
|
626 |
msgstr ""
|
627 |
|
628 |
-
#: views/global_options.php:
|
629 |
msgid "Forces the audio player to be displayed in the product title."
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: views/global_options.php:
|
633 |
msgid "WooCommerce hook used to display the players in the products pages"
|
634 |
msgstr ""
|
635 |
|
636 |
-
#: views/global_options.php:
|
637 |
msgid ""
|
638 |
"The plugin uses by default the <b>woocommerce_single_product_summary</b> "
|
639 |
"hook. If the player is not being displayed, enter the hook used by the theme "
|
640 |
"active on your website."
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: views/global_options.php:
|
644 |
msgid ""
|
645 |
"Click on the <a href=\"https://docs.woocommerce.com/wc-apidocs/hook-docs.html"
|
646 |
"\" target=\"_blank\">THIS LINK</a> for the list of available <a href="
|
@@ -648,136 +674,136 @@ msgid ""
|
|
648 |
"style=\"font-weight:bold;font-size:1.3em;\">WooCommerce Hooks</a>"
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: views/global_options.php:
|
652 |
msgid "Include music player in all products"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: views/global_options.php:
|
656 |
msgid "Products pages only"
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: views/global_options.php:
|
660 |
msgid "Multiple-entry pages"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: views/global_options.php:
|
664 |
msgid "Product and multiple-entry pages"
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: views/global_options.php:
|
668 |
msgid "Include players in cart"
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: views/global_options.php:
|
672 |
msgid "skin 2"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: views/global_options.php:
|
676 |
msgid "Allow multiple players to play simultaneously"
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: views/global_options.php:
|
680 |
msgid ""
|
681 |
"By default, only one player would be playing at once. By pressing the play "
|
682 |
"button of a player, the other players would stop. By ticking the checkbox, "
|
683 |
"multiple players could play simultaneously."
|
684 |
msgstr ""
|
685 |
|
686 |
-
#: views/global_options.php:
|
687 |
msgid "Player volume (from 0 to 1)"
|
688 |
msgstr ""
|
689 |
|
690 |
-
#: views/global_options.php:
|
691 |
msgid "Player volume"
|
692 |
msgstr ""
|
693 |
|
694 |
-
#: views/global_options.php:
|
695 |
msgid "On cover"
|
696 |
msgstr ""
|
697 |
|
698 |
-
#: views/global_options.php:
|
699 |
msgid "Display the player title"
|
700 |
msgstr ""
|
701 |
|
702 |
-
#: views/global_options.php:
|
703 |
msgid "The security feature is only available in the PRO version of the plugin"
|
704 |
msgstr ""
|
705 |
|
706 |
-
#: views/global_options.php:
|
707 |
#: views/player_options.php:274 views/player_options.php:275
|
708 |
msgid "Protect the file"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: views/global_options.php:
|
712 |
#: views/player_options.php:278 views/player_options.php:280
|
713 |
msgid "Percent of audio used for protected playbacks"
|
714 |
msgstr ""
|
715 |
|
716 |
-
#: views/global_options.php:
|
717 |
msgid ""
|
718 |
"To prevent unauthorized copying of audio files, the files will be partially "
|
719 |
"accessible"
|
720 |
msgstr ""
|
721 |
|
722 |
-
#: views/global_options.php:
|
723 |
msgid ""
|
724 |
"Text to display beside the player explaining that demos are partial versions "
|
725 |
"of the original files"
|
726 |
msgstr ""
|
727 |
|
728 |
-
#: views/global_options.php:
|
729 |
msgid "Explaining that demos are partial versions of the original files"
|
730 |
msgstr ""
|
731 |
|
732 |
-
#: views/global_options.php:
|
733 |
msgid "Scope"
|
734 |
msgstr ""
|
735 |
|
736 |
-
#: views/global_options.php:
|
737 |
msgid ""
|
738 |
"Ticking the checkbox the previous settings are applied to all products, even "
|
739 |
"if they have a player enabled."
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: views/global_options.php:
|
743 |
msgid "Apply the previous settings to all products"
|
744 |
msgstr ""
|
745 |
|
746 |
-
#: views/global_options.php:
|
747 |
msgid "Apply the previous settings to all products pages in the website."
|
748 |
msgstr ""
|
749 |
|
750 |
-
#: views/global_options.php:
|
751 |
msgid "Analytics"
|
752 |
msgstr ""
|
753 |
|
754 |
-
#: views/global_options.php:
|
755 |
msgid ""
|
756 |
"Allows the integration with Google Analytics for registering new events when "
|
757 |
"the songs are played. The event information would include: the URL to the "
|
758 |
"audio file as the event label and the product's id as its value."
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: views/global_options.php:
|
762 |
msgid "Note"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: views/global_options.php:
|
766 |
msgid ""
|
767 |
"If the preload option is configured as Metadata or Auto in the players "
|
768 |
"settings, the event would be registered when the audio file is loaded by the "
|
769 |
"player and not exactly when they are playing."
|
770 |
msgstr ""
|
771 |
|
772 |
-
#: views/global_options.php:
|
773 |
msgid "Tracking Id"
|
774 |
msgstr ""
|
775 |
|
776 |
-
#: views/global_options.php:
|
777 |
msgid "Add ons"
|
778 |
msgstr ""
|
779 |
|
780 |
-
#: views/global_options.php:
|
781 |
msgid "Save settings"
|
782 |
msgstr ""
|
783 |
|
@@ -839,57 +865,57 @@ msgstr ""
|
|
839 |
msgid "Add File"
|
840 |
msgstr ""
|
841 |
|
842 |
-
#: wcmp.php:
|
843 |
msgid "Help"
|
844 |
msgstr ""
|
845 |
|
846 |
-
#: wcmp.php:
|
847 |
msgid "There are no products that satisfy the block's settings"
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: widgets/playlist_widget.php:
|
851 |
msgid "Title"
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: widgets/playlist_widget.php:
|
855 |
msgid "Products IDs"
|
856 |
msgstr ""
|
857 |
|
858 |
-
#: widgets/playlist_widget.php:
|
859 |
msgid "Products IDs separated by comma, or a * for all"
|
860 |
msgstr ""
|
861 |
|
862 |
-
#: widgets/playlist_widget.php:
|
863 |
msgid ""
|
864 |
"Enter the ID of products separated by comma, or a * symbol to includes all "
|
865 |
"products in the playlist."
|
866 |
msgstr ""
|
867 |
|
868 |
-
#: widgets/playlist_widget.php:
|
869 |
msgid "Volume (enter a number between 0 and 1)"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: widgets/playlist_widget.php:
|
873 |
msgid "Playlist layout"
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: widgets/playlist_widget.php:
|
877 |
msgid "New layout"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: widgets/playlist_widget.php:
|
881 |
msgid "Original layout"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: widgets/playlist_widget.php:
|
885 |
msgid "Highlight the current product"
|
886 |
msgstr ""
|
887 |
|
888 |
-
#: widgets/playlist_widget.php:
|
889 |
msgid "Continue playing after navigate"
|
890 |
msgstr ""
|
891 |
|
892 |
-
#: widgets/playlist_widget.php:
|
893 |
msgid ""
|
894 |
"Continue playing the same song at same position after navigate. You can "
|
895 |
"experiment some delay because the music player should to load the audio file "
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: music-player-for-woocommerce\n"
|
4 |
+
"POT-Creation-Date: 2022-03-03 00:43+0100\n"
|
5 |
+
"PO-Revision-Date: 2022-03-03 00:43+0100\n"
|
6 |
"Last-Translator: CodePeople\n"
|
7 |
"Language-Team: CodePeople\n"
|
8 |
"Language: en_US\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
|
12 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
13 |
+
"X-Generator: Poedit 3.0.1\n"
|
14 |
+
"X-Poedit-Basepath: ..\n"
|
15 |
"X-Poedit-KeywordsList: __;_e;esc_attr__;esc_attr_e\n"
|
16 |
"X-Poedit-SearchPath-0: .\n"
|
17 |
|
18 |
+
#: addons/ap-compact-audio-player.addon.php:33
|
19 |
msgid "Use Compact Audio Player instead of the current plugin players"
|
20 |
msgstr ""
|
21 |
|
22 |
+
#: addons/ap-compact-audio-player.addon.php:33
|
23 |
msgid "Use \"Compact Audio Player\" instead of the current plugin players"
|
24 |
msgstr ""
|
25 |
|
26 |
+
#: addons/ap-compact-audio-player.addon.php:35
|
27 |
+
#: addons/ap-cp-media-player.addon.php:76
|
28 |
+
#: addons/ap-html5-audio-player.addon.php:37 addons/ap-mp3-jplayer.addon.php:35
|
29 |
msgid ""
|
30 |
"The player functions configured above do not apply, except for audio "
|
31 |
"protection if applicable.<br>This player <b>will take precedence</b> over "
|
32 |
"the player configured in the products' settings."
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: addons/ap-compact-audio-player.addon.php:36
|
36 |
msgid ""
|
37 |
"The \"Compact WP Audio Player\" plugin is not installed on your WordPress."
|
38 |
msgstr ""
|
39 |
|
40 |
+
#: addons/ap-cp-media-player.addon.php:72
|
41 |
msgid "Use CP Media Player instead of the current plugin players"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: addons/ap-cp-media-player.addon.php:72
|
45 |
msgid "Use \"CP Media Player\" instead of the current plugin players"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: addons/ap-cp-media-player.addon.php:73
|
49 |
msgid "Select player skin"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: addons/ap-cp-media-player.addon.php:77
|
53 |
msgid "The \"CP Media Player\" plugin is not installed on your WordPress."
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: addons/ap-html5-audio-player.addon.php:35
|
57 |
msgid "Use HTML5 Audio Player instead of the current plugin players"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: addons/ap-html5-audio-player.addon.php:35
|
61 |
msgid "Use \"HTML5 Audio Player\" instead of the current plugin players"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: addons/ap-html5-audio-player.addon.php:38
|
65 |
msgid "The \"HTML5 Audio Player\" plugin is not installed on your WordPress."
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: addons/ap-mp3-jplayer.addon.php:33
|
69 |
+
msgid "Use MP3 jPlayer instead of the current plugin players"
|
70 |
+
msgstr ""
|
71 |
+
|
72 |
+
#: addons/ap-mp3-jplayer.addon.php:33
|
73 |
+
msgid "Use \"MP3 jPlayer\" instead of the current plugin players"
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: addons/ap-mp3-jplayer.addon.php:36
|
77 |
+
msgid "The \"MP3 jPlayer\" plugin is not installed on your WordPress."
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
#: addons/dokan.addon.php:26
|
81 |
msgid "Activate the Dokan add-on"
|
82 |
msgstr ""
|
196 |
"modified as <b>dl=1</b>"
|
197 |
msgstr ""
|
198 |
|
199 |
+
#: addons/dokan/player_options.php:181 views/global_options.php:253
|
200 |
#: views/player_options.php:181
|
201 |
msgid "Enable player"
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: addons/dokan/player_options.php:181 views/global_options.php:253
|
205 |
msgid ""
|
206 |
"The player is shown only if the product is \"downloadable\" with at least an "
|
207 |
"audio file between the \"Downloadable files\", or you have selected your own "
|
212 |
msgid "Include music player"
|
213 |
msgstr ""
|
214 |
|
215 |
+
#: addons/dokan/player_options.php:185 views/global_options.php:256
|
216 |
#: views/player_options.php:184
|
217 |
msgid "Include in"
|
218 |
msgstr ""
|
221 |
msgid "Include on products pages only"
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: addons/dokan/player_options.php:188 views/global_options.php:259
|
225 |
#: views/player_options.php:187
|
226 |
msgid "single-entry pages <i>(Product's page only)</i>"
|
227 |
msgstr ""
|
230 |
msgid "Include on multiple-entry pages"
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: addons/dokan/player_options.php:191 views/global_options.php:262
|
234 |
#: views/player_options.php:190
|
235 |
msgid ""
|
236 |
"multiple entries pages <i>(Shop pages, archive pages, but not in the "
|
241 |
msgid "Include on products and multiple-entry pages"
|
242 |
msgstr ""
|
243 |
|
244 |
+
#: addons/dokan/player_options.php:194 views/global_options.php:265
|
245 |
#: views/player_options.php:193
|
246 |
msgid "all pages <i>(with single or multiple-entries)</i>"
|
247 |
msgstr ""
|
248 |
|
249 |
#: addons/dokan/player_options.php:198 addons/dokan/player_options.php:199
|
250 |
+
#: views/global_options.php:275 views/global_options.php:276
|
251 |
#: views/player_options.php:197 views/player_options.php:198
|
252 |
msgid "Merge in grouped products"
|
253 |
msgstr ""
|
254 |
|
255 |
+
#: addons/dokan/player_options.php:200 views/global_options.php:276
|
256 |
#: views/player_options.php:198
|
257 |
msgid ""
|
258 |
"In grouped products, display the \"Add to cart\" buttons and quantity fields "
|
259 |
"in the players rows"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: addons/dokan/player_options.php:203 views/global_options.php:279
|
263 |
+
#: views/player_options.php:201 widgets/playlist_widget.php:76
|
264 |
msgid "Player layout"
|
265 |
msgstr ""
|
266 |
|
267 |
+
#: addons/dokan/player_options.php:206 views/global_options.php:283
|
268 |
+
#: views/global_options.php:284 views/player_options.php:205
|
269 |
#: views/player_options.php:206
|
270 |
msgid "Skin 1"
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: addons/dokan/player_options.php:211 views/global_options.php:289
|
274 |
#: views/player_options.php:210 views/player_options.php:211
|
275 |
msgid "Skin 2"
|
276 |
msgstr ""
|
277 |
|
278 |
+
#: addons/dokan/player_options.php:216 views/global_options.php:293
|
279 |
+
#: views/global_options.php:294 views/player_options.php:215
|
280 |
#: views/player_options.php:216
|
281 |
msgid "Skin 3"
|
282 |
msgstr ""
|
283 |
|
284 |
+
#: addons/dokan/player_options.php:222 views/global_options.php:301
|
285 |
+
#: views/player_options.php:223 widgets/playlist_widget.php:92
|
286 |
msgid "Preload"
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: addons/dokan/player_options.php:224 views/global_options.php:304
|
290 |
#: views/player_options.php:226
|
291 |
msgid "Preload - none"
|
292 |
msgstr ""
|
293 |
|
294 |
+
#: addons/dokan/player_options.php:225 views/global_options.php:305
|
295 |
#: views/player_options.php:227
|
296 |
msgid "Preload - metadata"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: addons/dokan/player_options.php:226 views/global_options.php:306
|
300 |
#: views/player_options.php:228
|
301 |
msgid "Preload - auto"
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: addons/dokan/player_options.php:230 views/global_options.php:311
|
305 |
+
#: views/global_options.php:314 views/player_options.php:233
|
306 |
+
#: views/player_options.php:236 widgets/playlist_widget.php:88
|
307 |
msgid "Play all"
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: addons/dokan/player_options.php:233 views/global_options.php:335
|
311 |
#: views/player_options.php:246
|
312 |
msgid "Player controls"
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: addons/dokan/player_options.php:235 views/global_options.php:337
|
316 |
#: views/player_options.php:248
|
317 |
msgid "Play/pause button"
|
318 |
msgstr ""
|
319 |
|
320 |
+
#: addons/dokan/player_options.php:235 views/global_options.php:337
|
321 |
#: views/player_options.php:248
|
322 |
msgid "the play/pause button only"
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: addons/dokan/player_options.php:236 views/global_options.php:338
|
326 |
#: views/player_options.php:249
|
327 |
msgid "All controls"
|
328 |
msgstr ""
|
329 |
|
330 |
+
#: addons/dokan/player_options.php:236 views/global_options.php:338
|
331 |
#: views/player_options.php:249
|
332 |
msgid "all controls"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: addons/dokan/player_options.php:237 views/global_options.php:339
|
336 |
#: views/player_options.php:250
|
337 |
msgid "Depending on context"
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: addons/dokan/player_options.php:237 views/global_options.php:339
|
341 |
#: views/player_options.php:250
|
342 |
msgid "the play/pause button only, or all controls depending on context"
|
343 |
msgstr ""
|
346 |
msgid "Player on cover"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: addons/dokan/player_options.php:241 views/global_options.php:344
|
350 |
#: views/player_options.php:255
|
351 |
msgid "for play/pause button players display them on cover images."
|
352 |
msgstr ""
|
353 |
|
354 |
+
#: addons/dokan/player_options.php:242 views/global_options.php:347
|
355 |
#: views/player_options.php:258
|
356 |
msgid ""
|
357 |
"(This feature is experimental, and will depend on the theme active on the "
|
358 |
"website.)"
|
359 |
msgstr ""
|
360 |
|
361 |
+
#: addons/dokan/player_options.php:247 views/global_options.php:354
|
362 |
#: views/player_options.php:265
|
363 |
msgid "Display the player's title"
|
364 |
msgstr ""
|
414 |
#: pagebuilders/beaverbuilder/wcmp/wcmp.pb.php:9
|
415 |
#: pagebuilders/beaverbuilder/wcmp/wcmp.pb.php:11
|
416 |
#: pagebuilders/beaverbuilder/wcmp/wcmp.pb.php:12 pagebuilders/builders.php:130
|
417 |
+
#: pagebuilders/siteorigin/siteorigin-wcmp/siteorigin-wcmp.php:17 wcmp.php:225
|
418 |
msgid "Music Player for WooCommerce"
|
419 |
msgstr ""
|
420 |
|
452 |
msgid "Insert a playlist with the products players"
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: views/global_options.php:41
|
456 |
msgid "Music Player for WooCommerce - Global Settings"
|
457 |
msgstr ""
|
458 |
|
459 |
+
#: views/global_options.php:45
|
460 |
msgid ""
|
461 |
"For reporting any issue or to request a customization, <a href=\"https://"
|
462 |
"wordpress.dwbooster.com/contact-us\" target=\"_blank\">CLICK HERE</a><br />\n"
|
468 |
"target=\"_blank\">Public page: Click to visit the WooCommerce Store</a>"
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: views/global_options.php:54
|
472 |
msgid "Registering of Plugin"
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: views/global_options.php:56
|
476 |
msgid "Enter the email address of buyer"
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: views/global_options.php:57
|
480 |
msgid "Buyer email"
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: views/global_options.php:57
|
484 |
msgid "Register"
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: views/global_options.php:69 views/player_options.php:46
|
488 |
msgid ""
|
489 |
"<p>The player uses the audio files associated to the product. If you want "
|
490 |
"protecting the audio files for selling, tick the checkbox: <b>\"Protect the "
|
496 |
"pay for them.</b></p>"
|
497 |
msgstr ""
|
498 |
|
499 |
+
#: views/global_options.php:80
|
500 |
msgid "General Settings"
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: views/global_options.php:83 views/global_options.php:84
|
504 |
msgid "Include the players only for registered users"
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: views/global_options.php:87 views/global_options.php:88
|
508 |
msgid "Apply fade out to playing audio when possible"
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: views/global_options.php:91
|
512 |
+
msgid "Text for product purchased times in playlists"
|
513 |
+
msgstr ""
|
514 |
+
|
515 |
+
#: views/global_options.php:92
|
516 |
+
msgid "Purchased times text"
|
517 |
+
msgstr ""
|
518 |
+
|
519 |
+
#: views/global_options.php:93
|
520 |
+
msgid ""
|
521 |
+
"Texts to display when the playlist shortcode includes the purchased_times "
|
522 |
+
"attribute.<br>Ex."
|
523 |
+
msgstr ""
|
524 |
+
|
525 |
+
#: views/global_options.php:97
|
526 |
msgid "The general settings affect only the PRO version of the plugin"
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: views/global_options.php:97 views/global_options.php:360
|
530 |
#: views/player_options.php:50 views/player_options.php:271
|
531 |
msgid "CLICK HERE TO GET THE PRO VERSION OF THE PLUGIN"
|
532 |
msgstr ""
|
533 |
|
534 |
+
#: views/global_options.php:100 views/global_options.php:102
|
535 |
msgid ""
|
536 |
"For buyers, play the purchased audio files instead of the truncated files "
|
537 |
"for demo"
|
538 |
msgstr ""
|
539 |
|
540 |
+
#: views/global_options.php:103
|
541 |
msgid "Reset the files"
|
542 |
msgstr ""
|
543 |
|
544 |
+
#: views/global_options.php:104
|
545 |
msgid "Reset files interval"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: views/global_options.php:105
|
549 |
msgid "daily"
|
550 |
msgstr ""
|
551 |
|
552 |
+
#: views/global_options.php:113 views/global_options.php:114
|
553 |
msgid "Truncate the audio files for demo with ffmpeg"
|
554 |
msgstr ""
|
555 |
|
556 |
+
#: views/global_options.php:117 views/global_options.php:118
|
557 |
msgid "ffmpeg path"
|
558 |
msgstr ""
|
559 |
|
560 |
+
#: views/global_options.php:121 views/global_options.php:123
|
561 |
msgid "Watermark audio"
|
562 |
msgstr ""
|
563 |
|
564 |
+
#: views/global_options.php:123
|
565 |
msgid "Select"
|
566 |
msgstr ""
|
567 |
|
568 |
+
#: views/global_options.php:124
|
569 |
msgid ""
|
570 |
"Select an audio file if you want to apply a watermark to the audio files for "
|
571 |
"demos. The watermark will be applied to the protected demos (Experimental "
|
572 |
"feature)."
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: views/global_options.php:131 views/global_options.php:132
|
576 |
msgid "Delete the demo files generated previously"
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: views/global_options.php:138 views/global_options.php:139
|
580 |
msgid "Store demo files on Google Drive"
|
581 |
msgstr ""
|
582 |
|
583 |
+
#: views/global_options.php:142
|
584 |
msgid "Import a JSON Key file"
|
585 |
msgstr ""
|
586 |
|
587 |
+
#: views/global_options.php:144
|
588 |
msgid "JSON Key file"
|
589 |
msgstr ""
|
590 |
|
591 |
+
#: views/global_options.php:188
|
592 |
msgid "Troubleshoot Area"
|
593 |
msgstr ""
|
594 |
|
595 |
+
#: views/global_options.php:192 views/global_options.php:195
|
596 |
msgid "On iPads and iPhones, use native controls"
|
597 |
msgstr ""
|
598 |
|
599 |
+
#: views/global_options.php:196
|
600 |
msgid ""
|
601 |
"tick the checkbox if the players do not work properly on iPads or iPhones"
|
602 |
msgstr ""
|
603 |
|
604 |
+
#: views/global_options.php:201
|
605 |
msgid "Loading players in the onload event"
|
606 |
msgstr ""
|
607 |
|
608 |
+
#: views/global_options.php:204
|
609 |
msgid "Loading placeholder in the onload event"
|
610 |
msgstr ""
|
611 |
|
612 |
+
#: views/global_options.php:205
|
613 |
msgid "tick the checkbox if the players are not being loaded properly"
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: views/global_options.php:210
|
617 |
msgid "For files whose extensions cannot be determined"
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: views/global_options.php:213
|
621 |
msgid ""
|
622 |
"For files whose extensions cannot be determined, handle them as mp3 files"
|
623 |
msgstr ""
|
624 |
|
625 |
+
#: views/global_options.php:214
|
626 |
msgid "handle them as mp3 files"
|
627 |
msgstr ""
|
628 |
|
629 |
+
#: views/global_options.php:219 views/global_options.php:222
|
630 |
msgid ""
|
631 |
"For the WooCommerce Gutenberg Blocks, include the main player in the "
|
632 |
"products titles"
|
633 |
msgstr ""
|
634 |
|
635 |
+
#: views/global_options.php:223
|
636 |
msgid "Includes the main player in front of products titles"
|
637 |
msgstr ""
|
638 |
|
639 |
+
#: views/global_options.php:228 views/global_options.php:231
|
640 |
msgid "WooCommerce hook used to display the players in the shop pages"
|
641 |
msgstr ""
|
642 |
|
643 |
+
#: views/global_options.php:232
|
644 |
msgid ""
|
645 |
"The plugin uses by default the <b>woocommerce_shop_loop_item_title</b> hook. "
|
646 |
"If the player is not being displayed, enter the hook used by the theme "
|
647 |
"active on your website."
|
648 |
msgstr ""
|
649 |
|
650 |
+
#: views/global_options.php:233
|
651 |
msgid "Force the player in the title"
|
652 |
msgstr ""
|
653 |
|
654 |
+
#: views/global_options.php:233
|
655 |
msgid "Forces the audio player to be displayed in the product title."
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: views/global_options.php:238 views/global_options.php:241
|
659 |
msgid "WooCommerce hook used to display the players in the products pages"
|
660 |
msgstr ""
|
661 |
|
662 |
+
#: views/global_options.php:242
|
663 |
msgid ""
|
664 |
"The plugin uses by default the <b>woocommerce_single_product_summary</b> "
|
665 |
"hook. If the player is not being displayed, enter the hook used by the theme "
|
666 |
"active on your website."
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: views/global_options.php:247
|
670 |
msgid ""
|
671 |
"Click on the <a href=\"https://docs.woocommerce.com/wc-apidocs/hook-docs.html"
|
672 |
"\" target=\"_blank\">THIS LINK</a> for the list of available <a href="
|
674 |
"style=\"font-weight:bold;font-size:1.3em;\">WooCommerce Hooks</a>"
|
675 |
msgstr ""
|
676 |
|
677 |
+
#: views/global_options.php:252
|
678 |
msgid "Include music player in all products"
|
679 |
msgstr ""
|
680 |
|
681 |
+
#: views/global_options.php:258
|
682 |
msgid "Products pages only"
|
683 |
msgstr ""
|
684 |
|
685 |
+
#: views/global_options.php:261
|
686 |
msgid "Multiple-entry pages"
|
687 |
msgstr ""
|
688 |
|
689 |
+
#: views/global_options.php:264
|
690 |
msgid "Product and multiple-entry pages"
|
691 |
msgstr ""
|
692 |
|
693 |
+
#: views/global_options.php:269 views/global_options.php:271
|
694 |
msgid "Include players in cart"
|
695 |
msgstr ""
|
696 |
|
697 |
+
#: views/global_options.php:288
|
698 |
msgid "skin 2"
|
699 |
msgstr ""
|
700 |
|
701 |
+
#: views/global_options.php:319 views/global_options.php:322
|
702 |
msgid "Allow multiple players to play simultaneously"
|
703 |
msgstr ""
|
704 |
|
705 |
+
#: views/global_options.php:324
|
706 |
msgid ""
|
707 |
"By default, only one player would be playing at once. By pressing the play "
|
708 |
"button of a player, the other players would stop. By ticking the checkbox, "
|
709 |
"multiple players could play simultaneously."
|
710 |
msgstr ""
|
711 |
|
712 |
+
#: views/global_options.php:329 views/player_options.php:240
|
713 |
msgid "Player volume (from 0 to 1)"
|
714 |
msgstr ""
|
715 |
|
716 |
+
#: views/global_options.php:331 views/player_options.php:242
|
717 |
msgid "Player volume"
|
718 |
msgstr ""
|
719 |
|
720 |
+
#: views/global_options.php:341 views/player_options.php:252
|
721 |
msgid "On cover"
|
722 |
msgstr ""
|
723 |
|
724 |
+
#: views/global_options.php:356 views/player_options.php:267
|
725 |
msgid "Display the player title"
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: views/global_options.php:360 views/player_options.php:271
|
729 |
msgid "The security feature is only available in the PRO version of the plugin"
|
730 |
msgstr ""
|
731 |
|
732 |
+
#: views/global_options.php:363 views/global_options.php:364
|
733 |
#: views/player_options.php:274 views/player_options.php:275
|
734 |
msgid "Protect the file"
|
735 |
msgstr ""
|
736 |
|
737 |
+
#: views/global_options.php:367 views/global_options.php:369
|
738 |
#: views/player_options.php:278 views/player_options.php:280
|
739 |
msgid "Percent of audio used for protected playbacks"
|
740 |
msgstr ""
|
741 |
|
742 |
+
#: views/global_options.php:370 views/player_options.php:281
|
743 |
msgid ""
|
744 |
"To prevent unauthorized copying of audio files, the files will be partially "
|
745 |
"accessible"
|
746 |
msgstr ""
|
747 |
|
748 |
+
#: views/global_options.php:375
|
749 |
msgid ""
|
750 |
"Text to display beside the player explaining that demos are partial versions "
|
751 |
"of the original files"
|
752 |
msgstr ""
|
753 |
|
754 |
+
#: views/global_options.php:377
|
755 |
msgid "Explaining that demos are partial versions of the original files"
|
756 |
msgstr ""
|
757 |
|
758 |
+
#: views/global_options.php:391
|
759 |
msgid "Scope"
|
760 |
msgstr ""
|
761 |
|
762 |
+
#: views/global_options.php:392
|
763 |
msgid ""
|
764 |
"Ticking the checkbox the previous settings are applied to all products, even "
|
765 |
"if they have a player enabled."
|
766 |
msgstr ""
|
767 |
|
768 |
+
#: views/global_options.php:392
|
769 |
msgid "Apply the previous settings to all products"
|
770 |
msgstr ""
|
771 |
|
772 |
+
#: views/global_options.php:392
|
773 |
msgid "Apply the previous settings to all products pages in the website."
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: views/global_options.php:404
|
777 |
msgid "Analytics"
|
778 |
msgstr ""
|
779 |
|
780 |
+
#: views/global_options.php:408
|
781 |
msgid ""
|
782 |
"Allows the integration with Google Analytics for registering new events when "
|
783 |
"the songs are played. The event information would include: the URL to the "
|
784 |
"audio file as the event label and the product's id as its value."
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: views/global_options.php:409
|
788 |
msgid "Note"
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: views/global_options.php:409
|
792 |
msgid ""
|
793 |
"If the preload option is configured as Metadata or Auto in the players "
|
794 |
"settings, the event would be registered when the audio file is loaded by the "
|
795 |
"player and not exactly when they are playing."
|
796 |
msgstr ""
|
797 |
|
798 |
+
#: views/global_options.php:414 views/global_options.php:415
|
799 |
msgid "Tracking Id"
|
800 |
msgstr ""
|
801 |
|
802 |
+
#: views/global_options.php:427
|
803 |
msgid "Add ons"
|
804 |
msgstr ""
|
805 |
|
806 |
+
#: views/global_options.php:434
|
807 |
msgid "Save settings"
|
808 |
msgstr ""
|
809 |
|
865 |
msgid "Add File"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: wcmp.php:235
|
869 |
msgid "Help"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: wcmp.php:1144
|
873 |
msgid "There are no products that satisfy the block's settings"
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: widgets/playlist_widget.php:53
|
877 |
msgid "Title"
|
878 |
msgstr ""
|
879 |
|
880 |
+
#: widgets/playlist_widget.php:56
|
881 |
msgid "Products IDs"
|
882 |
msgstr ""
|
883 |
|
884 |
+
#: widgets/playlist_widget.php:56
|
885 |
msgid "Products IDs separated by comma, or a * for all"
|
886 |
msgstr ""
|
887 |
|
888 |
+
#: widgets/playlist_widget.php:60
|
889 |
msgid ""
|
890 |
"Enter the ID of products separated by comma, or a * symbol to includes all "
|
891 |
"products in the playlist."
|
892 |
msgstr ""
|
893 |
|
894 |
+
#: widgets/playlist_widget.php:64
|
895 |
msgid "Volume (enter a number between 0 and 1)"
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: widgets/playlist_widget.php:67
|
899 |
msgid "Playlist layout"
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: widgets/playlist_widget.php:70
|
903 |
msgid "New layout"
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: widgets/playlist_widget.php:73
|
907 |
msgid "Original layout"
|
908 |
msgstr ""
|
909 |
|
910 |
+
#: widgets/playlist_widget.php:98
|
911 |
msgid "Highlight the current product"
|
912 |
msgstr ""
|
913 |
|
914 |
+
#: widgets/playlist_widget.php:101
|
915 |
msgid "Continue playing after navigate"
|
916 |
msgstr ""
|
917 |
|
918 |
+
#: widgets/playlist_widget.php:105
|
919 |
msgid ""
|
920 |
"Continue playing the same song at same position after navigate. You can "
|
921 |
"experiment some delay because the music player should to load the audio file "
|
pagebuilders/beaverbuilder/wcmp/includes/frontend.php
CHANGED
@@ -1,8 +1,12 @@
|
|
1 |
<?php
|
2 |
-
if(!empty($settings->products_ids))
|
3 |
-
|
|
|
|
|
|
|
|
|
4 |
|
5 |
-
$output = '[wcmp-playlist
|
6 |
|
7 |
if(!empty($settings->attributes)) $output .= ' '.sanitize_text_field($settings->attributes);
|
8 |
|
1 |
<?php
|
2 |
+
if(!empty($settings->products_ids))
|
3 |
+
{
|
4 |
+
$products_ids = preg_replace('/[^\d\,]/', '', $settings->products_ids);
|
5 |
+
$products_ids = trim($products_ids, ',');
|
6 |
+
}
|
7 |
+
if(!empty($products_ids)) $products_ids = ' products_ids="'.sanitize_text_field($products_ids).'"';
|
8 |
|
9 |
+
$output = '[wcmp-playlist'.$products_ids;
|
10 |
|
11 |
if(!empty($settings->attributes)) $output .= ' '.sanitize_text_field($settings->attributes);
|
12 |
|
pagebuilders/divi/divi.pb.php
CHANGED
@@ -39,13 +39,13 @@ class WCMP_DIVI extends ET_Builder_Module
|
|
39 |
);
|
40 |
}
|
41 |
|
42 |
-
public function render($unprocessed_props, $content = null, $render_slug)
|
43 |
{
|
44 |
$output = '';
|
45 |
$products = sanitize_text_field($this->props['wcmp_products_ids']);
|
46 |
-
if(empty($products)) $products = '
|
47 |
|
48 |
-
$output = '[wcmp-playlist
|
49 |
|
50 |
$attributes = sanitize_text_field($this->props['wcmp_attributes']);
|
51 |
if(!empty($attributes)) $output .= ' '.$attributes;
|
39 |
);
|
40 |
}
|
41 |
|
42 |
+
public function render($unprocessed_props, $content = null, $render_slug = null)
|
43 |
{
|
44 |
$output = '';
|
45 |
$products = sanitize_text_field($this->props['wcmp_products_ids']);
|
46 |
+
if(!empty($products)) $products = ' products_ids="'.esc_attr($products).'"';
|
47 |
|
48 |
+
$output = '[wcmp-playlist'.$products;
|
49 |
|
50 |
$attributes = sanitize_text_field($this->props['wcmp_attributes']);
|
51 |
if(!empty($attributes)) $output .= ' '.$attributes;
|
pagebuilders/visualcomposer/WCMPplaylist/public/dist/element.bundle.js
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
/***/ (function(module, exports, __webpack_require__) {
|
9 |
|
10 |
"use strict";
|
11 |
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _vcCake = __webpack_require__(/*! vc-cake */ \"./node_modules/vc-cake/index.js\");\n\nvar _vcCake2 = _interopRequireDefault(_vcCake);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar vcvAPI = _vcCake2.default.getService('api');\n\nvar WCMPplaylistElement = function (_vcvAPI$elementCompon) {\n\t(0, _inherits3.default)(WCMPplaylistElement, _vcvAPI$elementCompon);\n\n\tfunction WCMPplaylistElement() {\n\t\t(0, _classCallCheck3.default)(this, WCMPplaylistElement);\n\t\treturn (0, _possibleConstructorReturn3.default)(this, (WCMPplaylistElement.__proto__ || (0, _getPrototypeOf2.default)(WCMPplaylistElement)).apply(this, arguments));\n\t}\n\n\t(0, _createClass3.default)(WCMPplaylistElement, [{\n\t\tkey: 'sanitize',\n\t\tvalue: function sanitize(str, args) {\n\t\t\tif (typeof args == 'undefined') args = {};\n\t\t\tif (!('quotes' in args)) args['quotes'] = false;\n\t\t\tif (!('spaces' in args)) args['spaces'] = false;\n\n\t\t\tstr = str.replace(/[^a-zA-Z0-9\\.\\-*_\\s\"'=]/g, '');\n\t\t\tif (!args.quotes) str = str.replace(/'\"/g, '');\n\t\t\tif (!args.spaces) str = str.replace(/\\s/g, '');\n\n\t\t\treturn str;\n\t\t}\n\t}, {\n\t\tkey: 'getTheShortcode',\n\t\tvalue: function getTheShortcode(atts) {\n\t\t\t// Generates the form's shortcode\n\t\t\tvar _atts$products_ids = atts.products_ids,\n\t\t\t products_ids = _atts$products_ids === undefined ? \"\" : _atts$products_ids,\n\t\t\t _atts$attrs = atts.attrs,\n\t\t\t attrs = _atts$attrs === undefined ? \"\" : _atts$attrs;\n\n\t\t\tif (products_ids
|
12 |
|
13 |
/***/ }),
|
14 |
|
8 |
/***/ (function(module, exports, __webpack_require__) {
|
9 |
|
10 |
"use strict";
|
11 |
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _vcCake = __webpack_require__(/*! vc-cake */ \"./node_modules/vc-cake/index.js\");\n\nvar _vcCake2 = _interopRequireDefault(_vcCake);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar vcvAPI = _vcCake2.default.getService('api');\n\nvar WCMPplaylistElement = function (_vcvAPI$elementCompon) {\n\t(0, _inherits3.default.default)(WCMPplaylistElement, _vcvAPI$elementCompon);\n\n\tfunction WCMPplaylistElement() {\n\t\t(0, _classCallCheck3.default.default)(this, WCMPplaylistElement);\n\t\treturn (0, _possibleConstructorReturn3.default.default)(this, (WCMPplaylistElement.__proto__ || (0, _getPrototypeOf2.default)(WCMPplaylistElement)).apply(this, arguments));\n\t}\n\n\t(0, _createClass3.default.default)(WCMPplaylistElement, [{\n\t\tkey: 'sanitize',\n\t\tvalue: function sanitize(str, args) {\n\t\t\tif (typeof args == 'undefined') args = {};\n\t\t\tif (!('quotes' in args)) args['quotes'] = false;\n\t\t\tif (!('spaces' in args)) args['spaces'] = false;\n\n\t\t\tstr = str.replace(/[^a-zA-Z0-9\\.\\-*_\\s\"'=]/g, '');\n\t\t\tif (!args.quotes) str = str.replace(/'\"/g, '');\n\t\t\tif (!args.spaces) str = str.replace(/\\s/g, '');\n\n\t\t\treturn str;\n\t\t}\n\t}, {\n\t\tkey: 'getTheShortcode',\n\t\tvalue: function getTheShortcode(atts) {\n\t\t\t// Generates the form's shortcode\n\t\t\tvar _atts$products_ids = atts.products_ids,\n\t\t\t products_ids = _atts$products_ids === undefined ? \"\" : _atts$products_ids,\n\t\t\t _atts$attrs = atts.attrs,\n\t\t\t attrs = _atts$attrs === undefined ? \"\" : _atts$attrs;\n\n\t\t\tif (products_ids != '') products_ids = ' products_ids=\"' + this.sanitize(products_ids, { spaces: true }) + '\"';\n\t\t\tvar shortcode = '[wcmp-playlist' + products_ids;\n\t\t\tif (attrs != '') shortcode += ' ' + this.sanitize(attrs, { quotes: true, spaces: true });\n\t\t\tshortcode += ']';\n\n\t\t\treturn shortcode;\n\t\t}\n\t}, {\n\t\tkey: 'addFormGeneratorForVSEditor',\n\t\tvalue: function addFormGeneratorForVSEditor(base) {\n\t\t\treturn base != '' ? base + '<script>delete generated_the_wcmp; if(typeof generate_the_wcmp!=\"undefined\")generate_the_wcmp();</script>' : base;\n\t\t}\n\t}, {\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\n\t\t\tvar shortcode = this.addFormGeneratorForVSEditor(this.getTheShortcode(this.props.atts));\n\t\t\t(0, _get3.default.default)(WCMPplaylistElement.prototype.__proto__ || (0, _getPrototypeOf2.default)(WCMPplaylistElement.prototype), 'updateShortcodeToHtml', this).call(this, shortcode, this.refs.vcvhelper);\n\t\t\tif (!window.wp || !window.wp.shortcode || !window.VCV_API_WPBAKERY_WPB_MAP) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.multipleShortcodesRegex = window.wp.shortcode.regexp(window.VCV_API_WPBAKERY_WPB_MAP().join('|'));\n\t\t\tthis.localShortcodesRegex = new RegExp(this.multipleShortcodesRegex.source);\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(props) {\n\n\t\t\tvar shortcode = this.addFormGeneratorForVSEditor(this.getTheShortcode(this.props.atts));\n\t\t\tvar shortcodeCmp = this.getTheShortcode(props.atts);\n\t\t\t// update only if shortcode changed\n\t\t\tif (shortcode !== shortcodeCmp) {\n\t\t\t\t(0, _get3.default.default)(WCMPplaylistElement.prototype.__proto__ || (0, _getPrototypeOf2.default)(WCMPplaylistElement.prototype), 'updateShortcodeToHtml', this).call(this, shortcode, this.refs.vcvhelper);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _props = this.props,\n\t\t\t id = _props.id,\n\t\t\t atts = _props.atts,\n\t\t\t editor = _props.editor;\n\n\n\t\t\tvar shortcode = this.getTheShortcode(atts);\n\t\t\tvar elementClasses = 'vce-wcmp-playlist';\n\t\t\tvar wrapperClasses = 'vce-wcmp-playlist-wrapper vce';\n\t\t\tvar customProps = {};\n\n\t\t\tvar doAll = this.applyDO('all');\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t(0, _extends3.default.default)({ className: elementClasses }, editor, customProps),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t(0, _extends3.default.default)({ className: wrapperClasses, id: 'el-' + id }, doAll),\n\t\t\t\t\t_react2.default.createElement('style', { className: 'vcvhelper', ref: 'style' }),\n\t\t\t\t\t_react2.default.createElement('div', { className: 'vcvhelper', ref: 'vcvhelper', 'data-vcvs-html': shortcode })\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\treturn WCMPplaylistElement;\n}(vcvAPI.elementComponent);\n\nexports.default = WCMPplaylistElement;\n\n//# sourceURL=webpack:///./WCMPplaylist/component.js?");
|
12 |
|
13 |
/***/ }),
|
14 |
|
readme.txt
CHANGED
@@ -40,6 +40,28 @@ The basic version of the plugin, available for free from the WordPress Directory
|
|
40 |
* Allows playing the audio files in secure mode to prevent unauthorized downloading of the audio files.
|
41 |
* Allows to define the percent of the audio file's size to be played in secure mode.
|
42 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
== Installation ==
|
44 |
|
45 |
**To install Music Player for WooCommerce, follow these steps:**
|
@@ -204,6 +226,33 @@ Each time save the data of a product, the files for demo are deleted and generat
|
|
204 |
|
205 |
== Changelog ==
|
206 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
= 1.0.161 =
|
208 |
|
209 |
* Fixes an issue with the players in the WooCommerce products list (backend).
|
@@ -214,19 +263,19 @@ Each time save the data of a product, the files for demo are deleted and generat
|
|
214 |
|
215 |
= 1.0.159 =
|
216 |
|
217 |
-
* Implements the integration with the 'Themify
|
218 |
|
219 |
= 1.0.158 =
|
220 |
|
221 |
-
* Implements the integration with the 'YITH WooCommerce Ajax Product Filter' plugin
|
222 |
|
223 |
= 1.0.157 =
|
224 |
|
225 |
-
* Implements the integration with the 'WOOF
|
226 |
|
227 |
= 1.0.156 =
|
228 |
|
229 |
-
* Implements the integration with the 'Product Filter by WooBeWoo
|
230 |
|
231 |
= 1.0.155 =
|
232 |
|
40 |
* Allows playing the audio files in secure mode to prevent unauthorized downloading of the audio files.
|
41 |
* Allows to define the percent of the audio file's size to be played in secure mode.
|
42 |
|
43 |
+
**Supports integration with plugins:**
|
44 |
+
|
45 |
+
* WooCommerce
|
46 |
+
* Dokan
|
47 |
+
* WCFM - Marketplace
|
48 |
+
* WC Vendors
|
49 |
+
* Advanced AJAX Product Filters by berocket
|
50 |
+
* Load More Products for WooCommerce by berocket
|
51 |
+
* Themify - WooCommerce Product Filter by Themify
|
52 |
+
* YITH WooCommerce Ajax Product Filter by YITH
|
53 |
+
* WOOF - Products Filter for WooCommerce by realmag777
|
54 |
+
* Product Filter by WooBeWoo
|
55 |
+
|
56 |
+
Support post_type like auctions, included by third-party plugins.
|
57 |
+
|
58 |
+
And third-party players like:
|
59 |
+
|
60 |
+
* Compact Audio Player
|
61 |
+
* CP Media Player
|
62 |
+
* HTML5 Audio Player
|
63 |
+
* MP3 jPlayer
|
64 |
+
|
65 |
== Installation ==
|
66 |
|
67 |
**To install Music Player for WooCommerce, follow these steps:**
|
226 |
|
227 |
== Changelog ==
|
228 |
|
229 |
+
= 1.0.167 =
|
230 |
+
|
231 |
+
* Include the purchased_times attribute in the playlist shortcode to show how many times a product has been purchased.
|
232 |
+
|
233 |
+
= 1.0.166 =
|
234 |
+
|
235 |
+
* It checks if WooCommerce is installed before running the player's code.
|
236 |
+
|
237 |
+
= 1.0.165 =
|
238 |
+
|
239 |
+
* Includes a new validation rule to prevent conflicts with third-party plugins.
|
240 |
+
* Fixes a conflict with PHP 8.1.1
|
241 |
+
|
242 |
+
= 1.0.164 =
|
243 |
+
|
244 |
+
* Implements the integration with the 'Load More Products for WooCommerce' plugin by berocket.
|
245 |
+
|
246 |
+
= 1.0.163 =
|
247 |
+
|
248 |
+
* Enables the player in the products titles by default.
|
249 |
+
* Fixes an issue in the integration with the latest version of Visual Composer.
|
250 |
+
* Modifies the integration with the other pages builders.
|
251 |
+
|
252 |
+
= 1.0.162 =
|
253 |
+
|
254 |
+
* Implements the integration with the 'Advanced AJAX Product Filters' plugin by berocket.
|
255 |
+
|
256 |
= 1.0.161 =
|
257 |
|
258 |
* Fixes an issue with the players in the WooCommerce products list (backend).
|
263 |
|
264 |
= 1.0.159 =
|
265 |
|
266 |
+
* Implements the integration with the 'Themify - WooCommerce Product Filter' plugin by Themify.
|
267 |
|
268 |
= 1.0.158 =
|
269 |
|
270 |
+
* Implements the integration with the 'YITH WooCommerce Ajax Product Filter' plugin by YITH.
|
271 |
|
272 |
= 1.0.157 =
|
273 |
|
274 |
+
* Implements the integration with the 'WOOF - Products Filter for WooCommerce' plugin by realmag777.
|
275 |
|
276 |
= 1.0.156 =
|
277 |
|
278 |
+
* Implements the integration with the 'Product Filter' plugin by WooBeWoo.
|
279 |
|
280 |
= 1.0.155 =
|
281 |
|
views/global_options.php
CHANGED
@@ -10,7 +10,7 @@ $force_main_player_in_title = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_a
|
|
10 |
$ios_controls = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_ios_controls', false );
|
11 |
$troubleshoot_onload = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_onload', false );
|
12 |
$include_main_player_hook = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_main_player_hook', ''));
|
13 |
-
$main_player_hook_title = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_main_player_hook_title',
|
14 |
$include_all_players_hook = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_all_players_hook', ''));
|
15 |
|
16 |
$enable_player = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_enable_player', false );
|
@@ -36,6 +36,7 @@ $on_cover = intval( $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_w
|
|
36 |
$analytics_property = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_analytics_property', '' );
|
37 |
$registered_only = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_registered_only', 0 );
|
38 |
$fade_out = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_fade_out', 1 );
|
|
|
39 |
?>
|
40 |
<h1><?php _e('Music Player for WooCommerce - Global Settings', 'music-player-for-woocommerce'); ?></h1>
|
41 |
<div style="border:1px solid #E6DB55;margin-bottom:10px;padding:5px;background-color: #FFFFE0;">
|
@@ -86,6 +87,12 @@ _e(
|
|
86 |
<td width="30%"><?php _e( 'Apply fade out to playing audio when possible', 'music-player-for-woocommerce' ); ?></td>
|
87 |
<td><input aria-label="<?php print esc_attr(__('Apply fade out to playing audio when possible', 'music-player-for-woocommerce')); ?>" type="checkbox" name="_wcmp_fade_out" <?php print(($fade_out) ? 'CHECKED' : '' ); ?> /></td>
|
88 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
<tr>
|
90 |
<td colspan="2" style="color:red;"><?php _e( 'The general settings affect only the PRO version of the plugin', 'music-player-for-woocommerce'); ?>. <a target="_blank" href="https://wcmp.dwbooster.com"><?php _e('CLICK HERE TO GET THE PRO VERSION OF THE PLUGIN', 'music-player-for-woocommerce'); ?></a></td>
|
91 |
</tr>
|
10 |
$ios_controls = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_ios_controls', false );
|
11 |
$troubleshoot_onload = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_onload', false );
|
12 |
$include_main_player_hook = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_main_player_hook', ''));
|
13 |
+
$main_player_hook_title = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_main_player_hook_title', 1));
|
14 |
$include_all_players_hook = trim($GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr('_wcmp_all_players_hook', ''));
|
15 |
|
16 |
$enable_player = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_enable_player', false );
|
36 |
$analytics_property = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_analytics_property', '' );
|
37 |
$registered_only = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_registered_only', 0 );
|
38 |
$fade_out = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_fade_out', 1 );
|
39 |
+
$purchased_times_text = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr( '_wcmp_purchased_times_text', '- purchased %d time(s)' );
|
40 |
?>
|
41 |
<h1><?php _e('Music Player for WooCommerce - Global Settings', 'music-player-for-woocommerce'); ?></h1>
|
42 |
<div style="border:1px solid #E6DB55;margin-bottom:10px;padding:5px;background-color: #FFFFE0;">
|
87 |
<td width="30%"><?php _e( 'Apply fade out to playing audio when possible', 'music-player-for-woocommerce' ); ?></td>
|
88 |
<td><input aria-label="<?php print esc_attr(__('Apply fade out to playing audio when possible', 'music-player-for-woocommerce')); ?>" type="checkbox" name="_wcmp_fade_out" <?php print(($fade_out) ? 'CHECKED' : '' ); ?> /></td>
|
89 |
</tr>
|
90 |
+
<tr>
|
91 |
+
<td width="30%"><?php _e( 'Text for product purchased times in playlists', 'music-player-for-woocommerce' ); ?></td>
|
92 |
+
<td><input aria-label="<?php print esc_attr(__('Purchased times text', 'music-player-for-woocommerce')); ?>" type="text" name="_wcmp_purchased_times_text" value="<?php print esc_attr($purchased_times_text);?>" style="width:100%;" /><br>
|
93 |
+
<i><?php _e('Texts to display when the playlist shortcode includes the purchased_times attribute.<br>Ex.', 'music-player-for-woocommerce'); ?>[wcmp-playlist products_ids="*" controls="track" purchased_times="1"]</i>
|
94 |
+
</td>
|
95 |
+
</tr>
|
96 |
<tr>
|
97 |
<td colspan="2" style="color:red;"><?php _e( 'The general settings affect only the PRO version of the plugin', 'music-player-for-woocommerce'); ?>. <a target="_blank" href="https://wcmp.dwbooster.com"><?php _e('CLICK HERE TO GET THE PRO VERSION OF THE PLUGIN', 'music-player-for-woocommerce'); ?></a></td>
|
98 |
</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.
|
6 |
Text Domain: music-player-for-woocommerce
|
7 |
Author: CodePeople
|
8 |
Author URI: https://wcmp.dwbooster.com
|
@@ -59,18 +59,9 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
59 |
register_activation_hook( __FILE__, array( &$this, 'activation' ) );
|
60 |
register_deactivation_hook( __FILE__, array( &$this, 'deactivation' ) );
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
add_action( 'plugins_loaded', array(&$this, 'load_textdomain') );
|
65 |
add_action('init', array(&$this, 'init'));
|
66 |
add_action('admin_init', array(&$this, 'admin_init'), 99);
|
67 |
-
add_filter( 'the_title', array(&$this, 'include_main_player_filter'), 11, 2);
|
68 |
-
|
69 |
-
$this->_load_addons();
|
70 |
-
|
71 |
-
// Integration with the content editors
|
72 |
-
require_once dirname(__FILE__).'/pagebuilders/builders.php';
|
73 |
-
WCMP_BUILDERS::run();
|
74 |
} // End __constructor
|
75 |
|
76 |
public function activation()
|
@@ -84,9 +75,18 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
84 |
$this->_deleteDir( $this->_files_directory_path );
|
85 |
}
|
86 |
|
87 |
-
public function
|
88 |
{
|
|
|
89 |
load_plugin_textdomain( 'music-player-for-woocommerce', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
}
|
91 |
|
92 |
public function get_product_attr( $product_id, $attr, $default = false )
|
@@ -253,6 +253,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
253 |
// Save the player settings
|
254 |
$registered_only = (isset($_REQUEST['_wcmp_registered_only'])) ? 1 : 0;
|
255 |
$fade_out = (isset($_REQUEST['_wcmp_fade_out'])) ? 1 : 0;
|
|
|
256 |
$troubleshoot_default_extension = (isset($_REQUEST['_wcmp_default_extension'])) ? true : false;
|
257 |
$force_main_player_in_title = (isset($_REQUEST['_wcmp_force_main_player_in_title'])) ? 1 : 0;
|
258 |
$ios_controls = (isset($_REQUEST['_wcmp_ios_controls'])) ? true : false;
|
@@ -288,6 +289,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
288 |
$global_settings = array(
|
289 |
'_wcmp_registered_only' => $registered_only,
|
290 |
'_wcmp_fade_out' => $fade_out,
|
|
|
291 |
'_wcmp_enable_player' => $enable_player,
|
292 |
'_wcmp_show_in' => $show_in,
|
293 |
'_wcmp_players_in_cart' => $players_in_cart,
|
@@ -431,7 +433,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
431 |
wp_enqueue_style( 'wcmp-style', plugin_dir_url(__FILE__).'css/style.css' );
|
432 |
wp_enqueue_script('jquery');
|
433 |
wp_enqueue_script('wp-mediaelement');
|
434 |
-
wp_enqueue_script('wcmp-script', plugin_dir_url(__FILE__).'js/public.js', array('jquery', 'wp-mediaelement'), '1.0.
|
435 |
|
436 |
$play_all = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr(
|
437 |
'_wcmp_play_all',
|
@@ -479,6 +481,19 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
479 |
public function replace_playlist_shortcode($atts)
|
480 |
{
|
481 |
if(!class_exists('woocommerce')) return '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
482 |
global $post;
|
483 |
|
484 |
$output = '';
|
@@ -525,7 +540,8 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
525 |
'volume' => 1,
|
526 |
'hide_purchase_buttons' => 0,
|
527 |
'class' => '',
|
528 |
-
'loop' => 0
|
|
|
529 |
),
|
530 |
$atts
|
531 |
)
|
@@ -534,6 +550,12 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
534 |
// Typecasting variables.
|
535 |
$cover = @intval($cover);
|
536 |
$volume = @floatval($volume);
|
|
|
|
|
|
|
|
|
|
|
|
|
537 |
|
538 |
// get the produts ids
|
539 |
$products_ids = preg_replace( '/[^\d\,\*]/', '', $products_ids);
|
@@ -572,7 +594,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
572 |
if(empty($customer_orders)) return $output;
|
573 |
|
574 |
// LOOP THROUGH ORDERS AND GET PRODUCT IDS
|
575 |
-
$
|
576 |
|
577 |
foreach($customer_orders as $customer_order)
|
578 |
{
|
@@ -581,14 +603,14 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
581 |
foreach($items as $item)
|
582 |
{
|
583 |
$product_id = $item->get_product_id();
|
584 |
-
$
|
585 |
}
|
586 |
}
|
587 |
-
$
|
588 |
-
$
|
589 |
|
590 |
-
$query .= ' AND posts.ID IN ('.$
|
591 |
-
$query .= ' ORDER BY FIELD(posts.ID,'.$
|
592 |
}
|
593 |
else
|
594 |
{
|
@@ -607,6 +629,19 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
607 |
|
608 |
if( !empty( $products ) )
|
609 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
610 |
// Enqueue resources
|
611 |
|
612 |
$this->enqueue_resources();
|
@@ -618,7 +653,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
618 |
array('continue_playing' => $continue_playing)
|
619 |
);
|
620 |
$counter = 0;
|
621 |
-
$output .= '<div data-loop="'.(
|
622 |
foreach( $products as $product )
|
623 |
{
|
624 |
$product_obj = wc_get_product( $product->ID );
|
@@ -642,10 +677,18 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
642 |
<div class="wcmp-widget-product controls-'.esc_attr($controls).' '.esc_attr($class).' '.esc_attr( $row_class ).' '.esc_attr( ( $product->ID == $current_post_id && $highlight_current_product) ? 'wcmp-current-product' : '' ).'">
|
643 |
<div class="wcmp-widget-product-header">
|
644 |
<div class="wcmp-widget-product-title">
|
645 |
-
<a href="'.esc_url( get_permalink( $product->ID ) ).'">'.$product_obj->get_name().'</a>
|
646 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
647 |
';
|
648 |
-
if(@floatval($price) != 0 &&
|
649 |
{
|
650 |
$output .= '<div class="wcmp-widget-product-purchase">
|
651 |
'.wc_price($product_obj->get_price(), '').' <a href="?add-to-cart='.$product->ID.'"></a>
|
@@ -730,7 +773,16 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
730 |
);
|
731 |
$file_title = esc_html(apply_filters('wcmp_widget_file_name', ( ( !empty( $file[ 'name' ] ) ) ? $file[ 'name' ] : $product->post_title ),$product->ID, $index));
|
732 |
|
733 |
-
$output .= '<li class="wcmp-widget-playlist-item">'.$audio_tag.'<a href="'.esc_url( get_permalink( $product->ID ) ).'">'.$file_title.'</a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
734 |
}
|
735 |
if(!empty($featured_image))
|
736 |
{
|
@@ -821,7 +873,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
821 |
if($this->_force_hook_title)
|
822 |
{
|
823 |
try{
|
824 |
-
if(!is_admin() && !is_product() && !is_cart() && !is_page('cart') && !is_checkout() && is_int($id))
|
825 |
{
|
826 |
$p = wc_get_product($id);
|
827 |
if(!empty($p))
|
@@ -850,8 +902,8 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
850 |
|
851 |
$show_in = $this->get_product_attr( $id, '_wcmp_show_in', 'all' );
|
852 |
if(
|
853 |
-
($show_in == 'single' && !is_product()) ||
|
854 |
-
($show_in == 'multiple' && is_product() && get_queried_object_id() == $id)
|
855 |
) return;
|
856 |
$preload = $this->get_product_attr($id, '_wcmp_preload', '');
|
857 |
$this->enqueue_resources();
|
@@ -1033,7 +1085,7 @@ if ( !class_exists( 'WooCommerceMusicPlayer' ) ) {
|
|
1033 |
|
1034 |
private function _init_force_in_title()
|
1035 |
{
|
1036 |
-
$this->_force_hook_title = $this->get_global_attr('_wcmp_main_player_hook_title',
|
1037 |
|
1038 |
// Integration with "WOOF – Products Filter for WooCommerce" by realmag777
|
1039 |
if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'woof_draw_products') $this->_force_hook_title = 1;
|
2 |
/*
|
3 |
Plugin Name: Music Player for WooCommerce
|
4 |
Plugin URI: https://wcmp.dwbooster.com
|
5 |
+
Version: 1.0.167
|
6 |
Text Domain: music-player-for-woocommerce
|
7 |
Author: CodePeople
|
8 |
Author URI: https://wcmp.dwbooster.com
|
59 |
register_activation_hook( __FILE__, array( &$this, 'activation' ) );
|
60 |
register_deactivation_hook( __FILE__, array( &$this, 'deactivation' ) );
|
61 |
|
62 |
+
add_action('plugins_loaded', array(&$this, 'plugins_loaded'));
|
|
|
|
|
63 |
add_action('init', array(&$this, 'init'));
|
64 |
add_action('admin_init', array(&$this, 'admin_init'), 99);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
} // End __constructor
|
66 |
|
67 |
public function activation()
|
75 |
$this->_deleteDir( $this->_files_directory_path );
|
76 |
}
|
77 |
|
78 |
+
public function plugins_loaded()
|
79 |
{
|
80 |
+
if(!class_exists('woocommerce')) return;
|
81 |
load_plugin_textdomain( 'music-player-for-woocommerce', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' );
|
82 |
+
|
83 |
+
add_filter('the_title', array(&$this, 'include_main_player_filter'), 11, 2);
|
84 |
+
$this->_init_force_in_title();
|
85 |
+
$this->_load_addons();
|
86 |
+
|
87 |
+
// Integration with the content editors
|
88 |
+
require_once dirname(__FILE__).'/pagebuilders/builders.php';
|
89 |
+
WCMP_BUILDERS::run();
|
90 |
}
|
91 |
|
92 |
public function get_product_attr( $product_id, $attr, $default = false )
|
253 |
// Save the player settings
|
254 |
$registered_only = (isset($_REQUEST['_wcmp_registered_only'])) ? 1 : 0;
|
255 |
$fade_out = (isset($_REQUEST['_wcmp_fade_out'])) ? 1 : 0;
|
256 |
+
$purchased_times_text = sanitize_text_field($_REQUEST['_wcmp_purchased_times_text']);
|
257 |
$troubleshoot_default_extension = (isset($_REQUEST['_wcmp_default_extension'])) ? true : false;
|
258 |
$force_main_player_in_title = (isset($_REQUEST['_wcmp_force_main_player_in_title'])) ? 1 : 0;
|
259 |
$ios_controls = (isset($_REQUEST['_wcmp_ios_controls'])) ? true : false;
|
289 |
$global_settings = array(
|
290 |
'_wcmp_registered_only' => $registered_only,
|
291 |
'_wcmp_fade_out' => $fade_out,
|
292 |
+
'_wcmp_purchased_times_text' => $purchased_times_text,
|
293 |
'_wcmp_enable_player' => $enable_player,
|
294 |
'_wcmp_show_in' => $show_in,
|
295 |
'_wcmp_players_in_cart' => $players_in_cart,
|
433 |
wp_enqueue_style( 'wcmp-style', plugin_dir_url(__FILE__).'css/style.css' );
|
434 |
wp_enqueue_script('jquery');
|
435 |
wp_enqueue_script('wp-mediaelement');
|
436 |
+
wp_enqueue_script('wcmp-script', plugin_dir_url(__FILE__).'js/public.js', array('jquery', 'wp-mediaelement'), '1.0.167');
|
437 |
|
438 |
$play_all = $GLOBALS[ 'WooCommerceMusicPlayer' ]->get_global_attr(
|
439 |
'_wcmp_play_all',
|
481 |
public function replace_playlist_shortcode($atts)
|
482 |
{
|
483 |
if(!class_exists('woocommerce')) return '';
|
484 |
+
|
485 |
+
$get_times = function($product_id, $products_list)
|
486 |
+
{
|
487 |
+
if(!empty($products_list))
|
488 |
+
{
|
489 |
+
foreach($products_list as $product)
|
490 |
+
{
|
491 |
+
if($product->product_id == $product_id) return $product->times;
|
492 |
+
}
|
493 |
+
}
|
494 |
+
return 0;
|
495 |
+
};
|
496 |
+
|
497 |
global $post;
|
498 |
|
499 |
$output = '';
|
540 |
'volume' => 1,
|
541 |
'hide_purchase_buttons' => 0,
|
542 |
'class' => '',
|
543 |
+
'loop' => 0,
|
544 |
+
'purchased_times' => 0
|
545 |
),
|
546 |
$atts
|
547 |
)
|
550 |
// Typecasting variables.
|
551 |
$cover = @intval($cover);
|
552 |
$volume = @floatval($volume);
|
553 |
+
$purchased_products = @intval($purchased_products);
|
554 |
+
$highlight_current_product = @intval($highlight_current_product);
|
555 |
+
$continue_playing = @intval($continue_playing);
|
556 |
+
$hide_purchase_buttons = @intval($hide_purchase_buttons);
|
557 |
+
$loop = @intval($loop);
|
558 |
+
$purchased_times = @intval($purchased_times);
|
559 |
|
560 |
// get the produts ids
|
561 |
$products_ids = preg_replace( '/[^\d\,\*]/', '', $products_ids);
|
594 |
if(empty($customer_orders)) return $output;
|
595 |
|
596 |
// LOOP THROUGH ORDERS AND GET PRODUCT IDS
|
597 |
+
$products_ids = array();
|
598 |
|
599 |
foreach($customer_orders as $customer_order)
|
600 |
{
|
603 |
foreach($items as $item)
|
604 |
{
|
605 |
$product_id = $item->get_product_id();
|
606 |
+
$products_ids[] = $product_id;
|
607 |
}
|
608 |
}
|
609 |
+
$products_ids = array_unique( $products_ids );
|
610 |
+
$products_ids_str = implode( ",", $products_ids );
|
611 |
|
612 |
+
$query .= ' AND posts.ID IN ('.$products_ids_str.')';
|
613 |
+
$query .= ' ORDER BY FIELD(posts.ID,'.$products_ids_str.')';
|
614 |
}
|
615 |
else
|
616 |
{
|
629 |
|
630 |
if( !empty( $products ) )
|
631 |
{
|
632 |
+
$product_purchased_times = [];
|
633 |
+
if($purchased_times)
|
634 |
+
{
|
635 |
+
$products_ids_str = (is_array($products_ids)) ? implode( ",", $products_ids ) : $products_ids;
|
636 |
+
|
637 |
+
$product_purchased_times = $wpdb->get_results('SELECT order_itemmeta.meta_value product_id, COUNT(order_itemmeta.meta_value) as times
|
638 |
+
FROM
|
639 |
+
'.$wpdb->prefix.'posts as orders INNER JOIN '.$wpdb->prefix.'woocommerce_order_items as order_items ON (orders.ID=order_items.order_id)
|
640 |
+
INNER JOIN '.$wpdb->prefix.'woocommerce_order_itemmeta as order_itemmeta ON (order_items.order_item_id=order_itemmeta.order_item_id)
|
641 |
+
WHERE orders.post_type="shop_order" AND orders.post_status="wc-completed" AND order_itemmeta.meta_key="_product_id" '.( strlen($products_ids_str) && strpos('*', $products_ids_str) === false ? ' AND order_itemmeta.meta_value IN ('.$products_ids_str.')' : '').'
|
642 |
+
GROUP BY order_itemmeta.meta_value');
|
643 |
+
}
|
644 |
+
|
645 |
// Enqueue resources
|
646 |
|
647 |
$this->enqueue_resources();
|
653 |
array('continue_playing' => $continue_playing)
|
654 |
);
|
655 |
$counter = 0;
|
656 |
+
$output .= '<div data-loop="'.($loop ? 1 : 0).'">';
|
657 |
foreach( $products as $product )
|
658 |
{
|
659 |
$product_obj = wc_get_product( $product->ID );
|
677 |
<div class="wcmp-widget-product controls-'.esc_attr($controls).' '.esc_attr($class).' '.esc_attr( $row_class ).' '.esc_attr( ( $product->ID == $current_post_id && $highlight_current_product) ? 'wcmp-current-product' : '' ).'">
|
678 |
<div class="wcmp-widget-product-header">
|
679 |
<div class="wcmp-widget-product-title">
|
680 |
+
<a href="'.esc_url( get_permalink( $product->ID ) ).'">'.$product_obj->get_name().'</a>'.
|
681 |
+
(
|
682 |
+
$purchased_times ?
|
683 |
+
'<span class="wcmp-purchased-times">'.
|
684 |
+
sprintf(
|
685 |
+
__($this->get_global_attr( '_wcmp_purchased_times_text', '- purchased %d time(s)')),
|
686 |
+
$get_times($product->ID, $product_purchased_times)
|
687 |
+
).'</span>' : ''
|
688 |
+
).
|
689 |
+
'</div><!-- product title -->
|
690 |
';
|
691 |
+
if(@floatval($price) != 0 && $hide_purchase_buttons == 0)
|
692 |
{
|
693 |
$output .= '<div class="wcmp-widget-product-purchase">
|
694 |
'.wc_price($product_obj->get_price(), '').' <a href="?add-to-cart='.$product->ID.'"></a>
|
773 |
);
|
774 |
$file_title = esc_html(apply_filters('wcmp_widget_file_name', ( ( !empty( $file[ 'name' ] ) ) ? $file[ 'name' ] : $product->post_title ),$product->ID, $index));
|
775 |
|
776 |
+
$output .= '<li class="wcmp-widget-playlist-item">'.$audio_tag.'<a href="'.esc_url( get_permalink( $product->ID ) ).'">'.$file_title.'</a>'.
|
777 |
+
(
|
778 |
+
$purchased_times ?
|
779 |
+
'<span class="wcmp-purchased-times">'.
|
780 |
+
sprintf(
|
781 |
+
__($this->get_global_attr( '_wcmp_purchased_times_text', '- purchased %d time(s)')),
|
782 |
+
$get_times($product->ID, $product_purchased_times)
|
783 |
+
).'</span>' : ''
|
784 |
+
)
|
785 |
+
.'<div style="clear:both;"/></li>';
|
786 |
}
|
787 |
if(!empty($featured_image))
|
788 |
{
|
873 |
if($this->_force_hook_title)
|
874 |
{
|
875 |
try{
|
876 |
+
if(!is_admin() && (!function_exists('is_product') || !is_product()) && !is_cart() && !is_page('cart') && !is_checkout() && is_int($id))
|
877 |
{
|
878 |
$p = wc_get_product($id);
|
879 |
if(!empty($p))
|
902 |
|
903 |
$show_in = $this->get_product_attr( $id, '_wcmp_show_in', 'all' );
|
904 |
if(
|
905 |
+
($show_in == 'single' && (!function_exists('is_product') || !is_product())) ||
|
906 |
+
($show_in == 'multiple' && (function_exists('is_product') && is_product()) && get_queried_object_id() == $id)
|
907 |
) return;
|
908 |
$preload = $this->get_product_attr($id, '_wcmp_preload', '');
|
909 |
$this->enqueue_resources();
|
1085 |
|
1086 |
private function _init_force_in_title()
|
1087 |
{
|
1088 |
+
$this->_force_hook_title = $this->get_global_attr('_wcmp_main_player_hook_title', 1);
|
1089 |
|
1090 |
// Integration with "WOOF – Products Filter for WooCommerce" by realmag777
|
1091 |
if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'woof_draw_products') $this->_force_hook_title = 1;
|
widgets/playlist_widget.php
CHANGED
@@ -3,6 +3,7 @@ if(!function_exists('wcmp_register_playlist_widget'))
|
|
3 |
{
|
4 |
function wcmp_register_playlist_widget()
|
5 |
{
|
|
|
6 |
return register_widget("WCMP_PLAYLIST_WIDGET");
|
7 |
}
|
8 |
}
|
3 |
{
|
4 |
function wcmp_register_playlist_widget()
|
5 |
{
|
6 |
+
if(!class_exists('woocommerce')) return;
|
7 |
return register_widget("WCMP_PLAYLIST_WIDGET");
|
8 |
}
|
9 |
}
|