EmbedPress – Embed Google Docs, YouTube, Maps, Vimeo, Wistia Videos & Upload PDF, PPT in Gutenberg & Elementor - Version 3.0.4

Version Description

Download this release

Release Info

Developer wpdevteam
Plugin Icon wp plugin EmbedPress – Embed Google Docs, YouTube, Maps, Vimeo, Wistia Videos & Upload PDF, PPT in Gutenberg & Elementor
Version 3.0.4
Comparing to
See all releases

Code changes from version 3.0.3 to 3.0.4

EmbedPress/Core.php CHANGED
@@ -405,11 +405,12 @@ class Core {
405
  include $additionalProvidersFilePath;
406
 
407
  if (isset($additionalServiceProviders)) {
408
- return $additionalServiceProviders;
409
  }
410
  }
411
 
412
- return [];
 
413
  }
414
 
415
  /**
405
  include $additionalProvidersFilePath;
406
 
407
  if (isset($additionalServiceProviders)) {
408
+ return apply_filters( 'embedpress_additional_service_providers', $additionalServiceProviders);
409
  }
410
  }
411
 
412
+ return apply_filters( 'embedpress_additional_service_providers', []);
413
+
414
  }
415
 
416
  /**
EmbedPress/CoreLegacy.php CHANGED
@@ -224,13 +224,12 @@ class CoreLegacy
224
  $additionalProvidersFilePath = EMBEDPRESS_PATH_BASE . 'providers.php';
225
  if (file_exists($additionalProvidersFilePath)) {
226
  include $additionalProvidersFilePath;
227
-
228
  if (isset($additionalServiceProviders)) {
229
- return $additionalServiceProviders;
230
  }
231
  }
232
 
233
- return [];
234
  }
235
 
236
  /**
224
  $additionalProvidersFilePath = EMBEDPRESS_PATH_BASE . 'providers.php';
225
  if (file_exists($additionalProvidersFilePath)) {
226
  include $additionalProvidersFilePath;
 
227
  if (isset($additionalServiceProviders)) {
228
+ return apply_filters( 'embedpress_additional_service_providers', $additionalServiceProviders);
229
  }
230
  }
231
 
232
+ return apply_filters( 'embedpress_additional_service_providers', []);
233
  }
234
 
235
  /**
EmbedPress/Elementor/Widgets/Embedpress_Elementor.php CHANGED
@@ -98,6 +98,23 @@ class Embedpress_Elementor extends Widget_Base {
98
  ]
99
  );
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  do_action( 'embedpress/control/extend', $this );
102
 
103
  $this->end_controls_section();
@@ -215,6 +232,7 @@ class Embedpress_Elementor extends Widget_Base {
215
  }
216
 
217
  protected function render() {
 
218
  $settings = $this->get_settings_for_display();
219
  $height = (!empty( $settings['height']) && !empty( $settings['height']['size'] ))
220
  ? $settings['height']['size'] : null;
@@ -222,6 +240,7 @@ class Embedpress_Elementor extends Widget_Base {
222
  ? $settings['width']['size'] : null;
223
 
224
  $embed_content = Shortcode::parseContent( $settings['embedpress_embeded_link'], true, [ 'height'=> $height, 'width'=>$width ] );
 
225
  $embed = apply_filters( 'embedpress_elementor_embed', $embed_content, $settings );
226
  $content = is_object( $embed ) ? $embed->embed : $embed;
227
 
@@ -232,5 +251,27 @@ class Embedpress_Elementor extends Widget_Base {
232
  <?php
233
  }
234
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
235
 
236
  }
98
  ]
99
  );
100
 
101
+ $this->add_control(
102
+ 'spotify_theme',
103
+ [
104
+ 'label' => __( 'Player Background', 'embedpress-pro' ),
105
+ 'description' => __( 'Dynamic option will use the most vibrant color from the album art.', 'embedpress-pro' ),
106
+ 'type' => Controls_Manager::SELECT,
107
+ 'label_block' => false,
108
+ 'default' => '1',
109
+ 'options' => [
110
+ '1' => __( 'Dynamic', 'embedpress-pro' ),
111
+ '0' => __( 'Black & White', 'embedpress-pro' )
112
+ ],
113
+ 'condition' => [
114
+ 'embedpress_pro_embeded_source' => 'spotify'
115
+ ]
116
+ ]
117
+ );
118
  do_action( 'embedpress/control/extend', $this );
119
 
120
  $this->end_controls_section();
232
  }
233
 
234
  protected function render() {
235
+ add_filter( 'embedpress_should_modify_spotify', '__return_false');
236
  $settings = $this->get_settings_for_display();
237
  $height = (!empty( $settings['height']) && !empty( $settings['height']['size'] ))
238
  ? $settings['height']['size'] : null;
240
  ? $settings['width']['size'] : null;
241
 
242
  $embed_content = Shortcode::parseContent( $settings['embedpress_embeded_link'], true, [ 'height'=> $height, 'width'=>$width ] );
243
+ $embed_content = $this->onAfterEmbedSpotify($embed_content, $settings);
244
  $embed = apply_filters( 'embedpress_elementor_embed', $embed_content, $settings );
245
  $content = is_object( $embed ) ? $embed->embed : $embed;
246
 
251
  <?php
252
  }
253
 
254
+ public function onAfterEmbedSpotify( $embed, $setting ) {
255
+ if ( !isset( $embed->provider_name ) || strtolower( $embed->provider_name ) !== 'spotify' || !isset( $embed->embed ) ) {
256
+ return $embed;
257
+ }
258
+ preg_match( '/src=\"(.+?)\"/', $embed->embed, $match );
259
+ $url_full = $match[ 1 ];
260
+ $modified_url = str_replace( 'playlist-v2', 'playlist', $url_full);
261
+ // apply elementor related mod
262
+ if(isset( $setting['spotify_theme'])){
263
+ if ( strpos( $modified_url, '?') !== false ) {
264
+ $modified_url .= '&theme='.sanitize_text_field( $setting['spotify_theme']);
265
+ }else{
266
+ $modified_url .= '?theme='.sanitize_text_field( $setting['spotify_theme']);
267
+ }
268
+ }
269
+
270
+
271
+ $embed->embed = str_replace( $url_full, $modified_url, $embed->embed );
272
+ return $embed;
273
+ }
274
+
275
+
276
 
277
  }
EmbedPress/Ends/Back/Handler.php CHANGED
@@ -192,6 +192,7 @@ class Handler extends EndHandlerAbstract {
192
 
193
  // YouTube (http://www.youtube.com/)
194
  'youtube.com/watch\\?*',
 
195
 
196
  // Flickr (http://www.flickr.com/)
197
  'flickr.com/photos/*/*',
@@ -419,6 +420,8 @@ class Handler extends EndHandlerAbstract {
419
  // Wistia
420
  '*.wistia.com/medias/*',
421
  'fast.wistia.com/embed/medias/*.jsonp',
 
 
422
  ];
423
  }
424
 
192
 
193
  // YouTube (http://www.youtube.com/)
194
  'youtube.com/watch\\?*',
195
+ 'youtube.com/playlist\\?*',
196
 
197
  // Flickr (http://www.flickr.com/)
198
  'flickr.com/photos/*/*',
420
  // Wistia
421
  '*.wistia.com/medias/*',
422
  'fast.wistia.com/embed/medias/*.jsonp',
423
+ // Boomplay (http://boomplay.com/)
424
+ 'boomplay.com/*',
425
  ];
426
  }
427
 
EmbedPress/Ends/Back/Settings/EmbedpressSettings.php CHANGED
@@ -147,13 +147,14 @@ class EmbedpressSettings {
147
  }
148
 
149
  public function render_settings_page( ) {
150
- global $template, $page_slug, $nonce_field, $ep_page, $gen_menu_template_names, $brand_menu_template_names, $pro_active, $coming_soon, $success_message, $error_message;
151
 
152
  $page_slug = $this->page_slug; // make this available for included template
153
  $template = !empty( $_GET['page_type'] ) ? sanitize_text_field( $_GET['page_type']) : 'general';
154
  $nonce_field = wp_nonce_field('ep_settings_nonce', 'ep_settings_nonce', true, false);
155
  $ep_page = admin_url('admin.php?page='.$this->page_slug);
156
- $gen_menu_template_names = apply_filters('ep_general_menu_tmpl_names', ['general', 'youtube', 'vimeo', 'wistia', 'twitch']);
 
157
  $brand_menu_template_names = apply_filters('ep_brand_menu_templates', ['custom-logo', 'branding',]);
158
  $pro_active = is_embedpress_pro_active();
159
  $coming_soon = "<span class='ep-coming-soon'>". esc_html__( '(Coming soon)', 'embedpress'). "</span>";
@@ -252,6 +253,19 @@ class EmbedpressSettings {
252
  do_action( 'ep_twitch_settings_after_save', $settings);
253
  }
254
 
 
 
 
 
 
 
 
 
 
 
 
 
 
255
  public function save_custom_logo_settings() {
256
  do_action( 'before_embedpress_branding_save');
257
  $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
147
  }
148
 
149
  public function render_settings_page( ) {
150
+ global $template, $page_slug, $nonce_field, $ep_page, $gen_menu_template_names, $brand_menu_template_names, $pro_active, $coming_soon, $success_message, $error_message, $platform_menu_template_names;
151
 
152
  $page_slug = $this->page_slug; // make this available for included template
153
  $template = !empty( $_GET['page_type'] ) ? sanitize_text_field( $_GET['page_type']) : 'general';
154
  $nonce_field = wp_nonce_field('ep_settings_nonce', 'ep_settings_nonce', true, false);
155
  $ep_page = admin_url('admin.php?page='.$this->page_slug);
156
+ $gen_menu_template_names = apply_filters('ep_general_menu_tmpl_names', ['general', 'shortcode',]);
157
+ $platform_menu_template_names = apply_filters('ep_general_menu_tmpl_names', [ 'youtube', 'vimeo', 'wistia', 'twitch', 'spotify']);
158
  $brand_menu_template_names = apply_filters('ep_brand_menu_templates', ['custom-logo', 'branding',]);
159
  $pro_active = is_embedpress_pro_active();
160
  $coming_soon = "<span class='ep-coming-soon'>". esc_html__( '(Coming soon)', 'embedpress'). "</span>";
253
  do_action( 'ep_twitch_settings_after_save', $settings);
254
  }
255
 
256
+ public function save_spotify_settings() {
257
+ $option_name = EMBEDPRESS_PLG_NAME.':spotify';
258
+ $settings = get_option( $option_name);
259
+ $settings['theme'] = isset( $_POST['spotify_theme']) ? sanitize_text_field( $_POST['spotify_theme']) : '1';
260
+ $settings['license_key'] = 1; // backward compatibility
261
+
262
+ // Pro will handle g_loading_animation settings and other
263
+ $settings = apply_filters( 'ep_spotify_settings_before_save', $settings);
264
+ update_option( $option_name, $settings);
265
+ do_action( 'ep_spotify_settings_after_save', $settings);
266
+ return $settings;
267
+ }
268
+
269
  public function save_custom_logo_settings() {
270
  do_action( 'before_embedpress_branding_save');
271
  $settings = (array) get_option( EMBEDPRESS_PLG_NAME, []);
EmbedPress/Ends/Back/Settings/assets/css/icon/fonts/icomoon.eot CHANGED
Binary file
EmbedPress/Ends/Back/Settings/assets/css/icon/fonts/icomoon.svg CHANGED
@@ -19,5 +19,8 @@
19
  <glyph unicode="&#xe909;" glyph-name="branding" horiz-adv-x="1203" d="M1179.665 953.326c-6.897 4.197-15.237 6.681-24.158 6.681-8.105 0-15.731-2.051-22.387-5.661l0.248 0.123-282.591-151.156-223.487 148.811c-7.319 4.928-16.334 7.866-26.034 7.866s-18.715-2.938-26.203-7.972l0.168 0.107-223.547-148.811-282.591 151.156c-6.404 3.488-14.026 5.54-22.126 5.54-25.934 0-46.958-21.024-46.958-46.958 0-0.003 0-0.006 0-0.008v0-930.084c0-25.934 21.024-46.958 46.958-46.958v0h1108.537c0.018 0 0.039 0 0.060 0 25.934 0 46.958 21.024 46.958 46.958v0 930.084c-0.004 17.028-9.071 31.936-22.639 40.167l-0.209 0.118zM1108.537 29.916h-1014.62v804.722l238.278-127.166c6.394-3.475 14.002-5.519 22.087-5.519 9.694 0 18.701 2.937 26.181 7.97l-0.168-0.106 220.962 146.767 220.902-147.067c7.312-4.927 16.32-7.864 26.013-7.864 8.085 0 15.693 2.043 22.335 5.642l-0.248-0.123 238.218 127.406zM716.337 611.271c-0.196 0.001-0.427 0.001-0.658 0.001-43.996 0-84.142-16.488-114.594-43.623l0.172 0.15c-30.281 26.984-70.426 43.472-114.422 43.472-0.232 0-0.463 0-0.694-0.001h0.036c-90.056-1.554-162.463-74.922-162.463-165.202 0-2.25 0.045-4.489 0.134-6.716l-0.010 0.32c0-134.802 135.643-233.348 256.797-291.549 5.942-2.918 12.933-4.625 20.322-4.625s14.38 1.707 20.6 4.748l-0.277-0.122c121.093 58.142 256.797 156.748 256.797 291.549 0.079 1.908 0.124 4.147 0.124 6.396 0 90.28-72.408 163.649-162.318 165.2l-0.146 0.002zM601.257 243.062c-164.865 84.597-183.203 165.225-183.203 196.791-0.168 1.84-0.264 3.98-0.264 6.143 0 38.403 30.256 69.74 68.23 71.474l0.156 0.006c31.368-0.865 58.448-18.413 72.769-44.057l0.223-0.436c7.47-15.993 23.42-26.877 41.911-26.877 0.062 0 0.124 0 0.186 0h-0.010c18.52 0.227 34.447 11.1 41.966 26.773l0.122 0.283c14.509 25.997 41.485 43.504 72.625 44.43l0.127 0.003c38.127-1.705 68.392-33.029 68.392-71.422 0-2.183-0.098-4.342-0.289-6.475l0.020 0.275c0-31.566-18.338-112.134-183.203-196.731z" />
20
  <glyph unicode="&#xe90a;" glyph-name="upload" d="M977.469 397.424c-0.061 0-0.133 0-0.205 0-25.525 0-46.231-20.634-46.347-46.132v-194.411c-0.406-71.109-58.145-128.597-129.311-128.597-0.145 0-0.289 0-0.434 0.001h-578.345c-0.122 0-0.267-0.001-0.412-0.001-71.166 0-128.905 57.488-129.311 128.558v194.439c-0.547 25.286-21.175 45.576-46.542 45.576s-45.994-20.289-46.541-45.525l-0.001-0.051v-194.4c0.685-122.136 99.854-220.882 222.086-220.882 0.253 0 0.506 0 0.759 0.001h578.328c0.22-0.001 0.48-0.001 0.741-0.001 122.232 0 221.401 98.746 222.086 220.817v194.466c-0.116 25.509-20.822 46.143-46.347 46.143-0.072 0-0.144 0-0.216 0h0.011zM264.443 604.378l200.708 198.087v-580.742c0-25.834 20.943-46.777 46.777-46.777s46.777 20.943 46.777 46.777v0 580.742l200.81-198.087c8.514-8.358 20.192-13.516 33.076-13.516s24.562 5.159 33.083 13.524l-0.007-0.007c8.454 8.301 13.693 19.851 13.693 32.625s-5.239 24.324-13.687 32.619l-0.007 0.007-280.643 276.854c-8.514 8.358-20.192 13.516-33.076 13.516s-24.562-5.159-33.083-13.524l0.007 0.007-280.602-276.854c-8.459-8.299-13.702-19.85-13.702-32.625s5.243-24.326 13.695-32.618l0.007-0.007c8.514-8.358 20.192-13.516 33.076-13.516s24.562 5.159 33.083 13.524l-0.007-0.007z" />
21
  <glyph unicode="&#xe90b;" glyph-name="bar" horiz-adv-x="896" d="M32 696h832c17.674 0 32 14.326 32 32v80c0 17.674-14.326 32-32 32h-832c-17.674 0-32-14.326-32-32v-80c0-17.674 14.326-32 32-32zM32 376h832c17.674 0 32 14.326 32 32v80c0 17.674-14.326 32-32 32h-832c-17.674 0-32-14.326-32-32v-80c0-17.674 14.326-32 32-32zM32 56h832c17.674 0 32 14.326 32 32v80c0 17.674-14.326 32-32 32h-832c-17.674 0-32-14.326-32-32v-80c0-17.674 14.326-32 32-32z" />
 
 
 
22
  <glyph unicode="&#xea0f;" glyph-name="cross" d="M1014.662 137.34c-0.004 0.004-0.008 0.008-0.012 0.010l-310.644 310.65 310.644 310.65c0.004 0.004 0.008 0.006 0.012 0.010 3.344 3.346 5.762 7.254 7.312 11.416 4.246 11.376 1.824 24.682-7.324 33.83l-146.746 146.746c-9.148 9.146-22.45 11.566-33.828 7.32-4.16-1.55-8.070-3.968-11.418-7.31 0-0.004-0.004-0.006-0.008-0.010l-310.648-310.652-310.648 310.65c-0.004 0.004-0.006 0.006-0.010 0.010-3.346 3.342-7.254 5.76-11.414 7.31-11.38 4.248-24.682 1.826-33.83-7.32l-146.748-146.748c-9.148-9.148-11.568-22.452-7.322-33.828 1.552-4.16 3.97-8.072 7.312-11.416 0.004-0.002 0.006-0.006 0.010-0.010l310.65-310.648-310.65-310.652c-0.002-0.004-0.006-0.006-0.008-0.010-3.342-3.346-5.76-7.254-7.314-11.414-4.248-11.376-1.826-24.682 7.322-33.83l146.748-146.746c9.15-9.148 22.452-11.568 33.83-7.322 4.16 1.552 8.070 3.97 11.416 7.312 0.002 0.004 0.006 0.006 0.010 0.010l310.648 310.65 310.648-310.65c0.004-0.002 0.008-0.006 0.012-0.008 3.348-3.344 7.254-5.762 11.414-7.314 11.378-4.246 24.684-1.826 33.828 7.322l146.746 146.748c9.148 9.148 11.57 22.454 7.324 33.83-1.552 4.16-3.97 8.068-7.314 11.414z" />
23
  </font></defs></svg>
19
  <glyph unicode="&#xe909;" glyph-name="branding" horiz-adv-x="1203" d="M1179.665 953.326c-6.897 4.197-15.237 6.681-24.158 6.681-8.105 0-15.731-2.051-22.387-5.661l0.248 0.123-282.591-151.156-223.487 148.811c-7.319 4.928-16.334 7.866-26.034 7.866s-18.715-2.938-26.203-7.972l0.168 0.107-223.547-148.811-282.591 151.156c-6.404 3.488-14.026 5.54-22.126 5.54-25.934 0-46.958-21.024-46.958-46.958 0-0.003 0-0.006 0-0.008v0-930.084c0-25.934 21.024-46.958 46.958-46.958v0h1108.537c0.018 0 0.039 0 0.060 0 25.934 0 46.958 21.024 46.958 46.958v0 930.084c-0.004 17.028-9.071 31.936-22.639 40.167l-0.209 0.118zM1108.537 29.916h-1014.62v804.722l238.278-127.166c6.394-3.475 14.002-5.519 22.087-5.519 9.694 0 18.701 2.937 26.181 7.97l-0.168-0.106 220.962 146.767 220.902-147.067c7.312-4.927 16.32-7.864 26.013-7.864 8.085 0 15.693 2.043 22.335 5.642l-0.248-0.123 238.218 127.406zM716.337 611.271c-0.196 0.001-0.427 0.001-0.658 0.001-43.996 0-84.142-16.488-114.594-43.623l0.172 0.15c-30.281 26.984-70.426 43.472-114.422 43.472-0.232 0-0.463 0-0.694-0.001h0.036c-90.056-1.554-162.463-74.922-162.463-165.202 0-2.25 0.045-4.489 0.134-6.716l-0.010 0.32c0-134.802 135.643-233.348 256.797-291.549 5.942-2.918 12.933-4.625 20.322-4.625s14.38 1.707 20.6 4.748l-0.277-0.122c121.093 58.142 256.797 156.748 256.797 291.549 0.079 1.908 0.124 4.147 0.124 6.396 0 90.28-72.408 163.649-162.318 165.2l-0.146 0.002zM601.257 243.062c-164.865 84.597-183.203 165.225-183.203 196.791-0.168 1.84-0.264 3.98-0.264 6.143 0 38.403 30.256 69.74 68.23 71.474l0.156 0.006c31.368-0.865 58.448-18.413 72.769-44.057l0.223-0.436c7.47-15.993 23.42-26.877 41.911-26.877 0.062 0 0.124 0 0.186 0h-0.010c18.52 0.227 34.447 11.1 41.966 26.773l0.122 0.283c14.509 25.997 41.485 43.504 72.625 44.43l0.127 0.003c38.127-1.705 68.392-33.029 68.392-71.422 0-2.183-0.098-4.342-0.289-6.475l0.020 0.275c0-31.566-18.338-112.134-183.203-196.731z" />
20
  <glyph unicode="&#xe90a;" glyph-name="upload" d="M977.469 397.424c-0.061 0-0.133 0-0.205 0-25.525 0-46.231-20.634-46.347-46.132v-194.411c-0.406-71.109-58.145-128.597-129.311-128.597-0.145 0-0.289 0-0.434 0.001h-578.345c-0.122 0-0.267-0.001-0.412-0.001-71.166 0-128.905 57.488-129.311 128.558v194.439c-0.547 25.286-21.175 45.576-46.542 45.576s-45.994-20.289-46.541-45.525l-0.001-0.051v-194.4c0.685-122.136 99.854-220.882 222.086-220.882 0.253 0 0.506 0 0.759 0.001h578.328c0.22-0.001 0.48-0.001 0.741-0.001 122.232 0 221.401 98.746 222.086 220.817v194.466c-0.116 25.509-20.822 46.143-46.347 46.143-0.072 0-0.144 0-0.216 0h0.011zM264.443 604.378l200.708 198.087v-580.742c0-25.834 20.943-46.777 46.777-46.777s46.777 20.943 46.777 46.777v0 580.742l200.81-198.087c8.514-8.358 20.192-13.516 33.076-13.516s24.562 5.159 33.083 13.524l-0.007-0.007c8.454 8.301 13.693 19.851 13.693 32.625s-5.239 24.324-13.687 32.619l-0.007 0.007-280.643 276.854c-8.514 8.358-20.192 13.516-33.076 13.516s-24.562-5.159-33.083-13.524l0.007 0.007-280.602-276.854c-8.459-8.299-13.702-19.85-13.702-32.625s5.243-24.326 13.695-32.618l0.007-0.007c8.514-8.358 20.192-13.516 33.076-13.516s24.562 5.159 33.083 13.524l-0.007-0.007z" />
21
  <glyph unicode="&#xe90b;" glyph-name="bar" horiz-adv-x="896" d="M32 696h832c17.674 0 32 14.326 32 32v80c0 17.674-14.326 32-32 32h-832c-17.674 0-32-14.326-32-32v-80c0-17.674 14.326-32 32-32zM32 376h832c17.674 0 32 14.326 32 32v80c0 17.674-14.326 32-32 32h-832c-17.674 0-32-14.326-32-32v-80c0-17.674 14.326-32 32-32zM32 56h832c17.674 0 32 14.326 32 32v80c0 17.674-14.326 32-32 32h-832c-17.674 0-32-14.326-32-32v-80c0-17.674 14.326-32 32-32z" />
22
+ <glyph unicode="&#xe90c;" glyph-name="code" d="M768.013 874.688c94.227-0.088 170.588-76.45 170.676-170.667v-512.030c-0.088-94.227-76.446-170.588-170.667-170.676h-512.034c-94.227 0.088-170.588 76.446-170.676 170.667v512.030c0.088 94.227 76.446 170.588 170.667 170.676h0.008zM768.013 960h-512.026c-141.378 0-255.987-114.61-255.987-255.987v0-512.026c0-141.378 114.61-255.987 255.987-255.987v0h512.026c141.378 0 255.987 114.61 255.987 255.987v0 512.026c0 141.378-114.61 255.987-255.987 255.987v0zM394.62 255.97c-8.81 0.023-16.994 2.701-23.788 7.274l0.153-0.094-223.995 149.348c-11.529 7.757-19.013 20.757-19.013 35.504s7.483 27.742 18.861 35.408l0.152 0.094 224.046 149.296c6.655 4.495 14.858 7.176 23.686 7.176 23.571 0 42.68-19.108 42.68-42.68 0-14.743-7.475-27.739-18.842-35.408l-0.152-0.094-170.778-113.818 170.778-113.818c11.55-7.754 19.052-20.766 19.052-35.53 0-23.558-19.098-42.654-42.654-42.654-0.065 0-0.13 0-0.195 0h0.010zM629.436 255.97c-0.040 0-0.086 0-0.133 0-23.558 0-42.654 19.098-42.654 42.654 0 14.764 7.5 27.775 18.898 35.433l0.153 0.094 170.778 113.818-170.778 113.818c-11.519 7.764-18.994 20.761-18.994 35.504 0 23.571 19.108 42.68 42.68 42.68 8.828 0 17.031-2.68 23.838-7.272l-0.152 0.094 223.995-149.348c11.529-7.757 19.013-20.757 19.013-35.504s-7.483-27.742-18.861-35.408l-0.152-0.094-223.995-149.296c-6.643-4.479-14.825-7.157-23.63-7.177h-0.005z" />
23
+ <glyph unicode="&#xe90d;" glyph-name="copy" d="M153.6 960c-84.645-0.462-153.138-68.956-153.6-153.556v-409.644c0.462-84.645 68.956-153.138 153.556-153.6h153.644v-153.6c0.319-84.702 68.897-153.281 153.569-153.6h409.631c84.702 0.319 153.281 68.897 153.6 153.569v409.631c-0.261 84.726-68.874 153.339-153.575 153.6h-153.625v153.6c-0.462 84.645-68.956 153.138-153.556 153.6h-0.044zM153.6 857.6h409.6c0.355 0.009 0.773 0.014 1.192 0.014 27.627 0 50.022-22.396 50.022-50.022 0-0.419-0.005-0.837-0.015-1.254l0.001 0.062v-153.6h-153.6c-84.726-0.261-153.339-68.874-153.6-153.575v-153.625h-153.6c-0.355-0.009-0.773-0.014-1.192-0.014-27.627 0-50.022 22.396-50.022 50.022 0 0.419 0.005 0.837 0.015 1.254l-0.001-0.062v409.6c-0.009 0.355-0.014 0.773-0.014 1.192 0 27.627 22.396 50.022 50.022 50.022 0.419 0 0.837-0.005 1.254-0.015l-0.062 0.001zM460.8 550.4h409.6c0.355 0.009 0.773 0.014 1.192 0.014 27.627 0 50.022-22.396 50.022-50.022 0-0.419-0.005-0.837-0.015-1.254l0.001 0.062v-409.6c0.014-0.433 0.021-0.943 0.021-1.455 0-27.485-22.281-49.766-49.766-49.766-0.512 0-1.021 0.008-1.529 0.023l0.074-0.002h-409.6c-0.433-0.014-0.943-0.021-1.455-0.021-27.485 0-49.766 22.281-49.766 49.766 0 0.512 0.008 1.021 0.023 1.529l-0.002-0.074v409.6c-0.009 0.355-0.014 0.773-0.014 1.192 0 27.627 22.396 50.022 50.022 50.022 0.419 0 0.837-0.005 1.254-0.015l-0.062 0.001z" />
24
+ <glyph unicode="&#xe90e;" glyph-name="platform" d="M945.68 526.32c-37.555-0.078-68.912-26.523-76.546-61.803l-0.094-0.517h-133.68c-3.668 50.372-23.549 95.504-54.385 130.823l0.225-0.263 94.8 94.64c12.052-7.963 26.841-12.703 42.737-12.703 43.211 0 78.24 35.029 78.24 78.24s-35.029 78.24-78.24 78.24c-43.211 0-78.24-35.029-78.24-78.24 0-15.896 4.741-30.685 12.885-43.030l-0.182 0.293-94.64-94.8c-35.056 30.611-80.188 50.492-129.832 54.117l-0.728 0.043v133.68c35.839 7.674 62.32 39.079 62.32 76.668 0 43.255-35.065 78.32-78.32 78.32s-78.32-35.065-78.32-78.32c0-37.59 26.481-68.994 61.806-76.576l0.514-0.093v-133.68c-50.372-3.668-95.504-23.549-130.823-54.385l0.263 0.225-94.64 94.8c7.99 12.083 12.748 26.912 12.748 42.852 0 43.299-35.101 78.4-78.4 78.4s-78.4-35.101-78.4-78.4c0-43.299 35.101-78.4 78.4-78.4 15.94 0 30.77 4.757 43.146 12.93l-0.293-0.182 94.8-94.64c-30.611-35.056-50.492-80.188-54.117-129.832l-0.043-0.728h-133.68c-7.674 35.839-39.079 62.32-76.668 62.32-43.255 0-78.32-35.065-78.32-78.32s35.065-78.32 78.32-78.32c37.59 0 68.994 26.481 76.576 61.806l0.093 0.514h133.68c3.668-50.372 23.549-95.504 54.385-130.823l-0.225 0.263-94.8-94.64c-12.052 7.963-26.841 12.703-42.737 12.703-43.211 0-78.24-35.029-78.24-78.24s35.029-78.24 78.24-78.24c43.211 0 78.24 35.029 78.24 78.24 0 15.896-4.741 30.685-12.885 43.030l0.182-0.293 94.64 94.8c35.056-30.611 80.188-50.492 129.832-54.117l0.728-0.043v-133.68c-35.839-7.674-62.32-39.079-62.32-76.668 0-43.255 35.065-78.32 78.32-78.32s78.32 35.065 78.32 78.32c0 37.59-26.481 68.994-61.806 76.576l-0.514 0.093v133.68c50.372 3.668 95.504 23.549 130.823 54.385l-0.263-0.225 94.64-94.8c-7.963-12.052-12.703-26.841-12.703-42.737 0-43.211 35.029-78.24 78.24-78.24s78.24 35.029 78.24 78.24c0 43.211-35.029 78.24-78.24 78.24-15.896 0-30.685-4.741-43.030-12.885l0.293 0.182-94.8 94.64c30.611 35.056 50.492 80.188 54.117 129.832l0.043 0.728h133.68c7.674-35.839 39.079-62.32 76.668-62.32 43.255 0 78.32 35.065 78.32 78.32s-35.065 78.32-78.32 78.32c-0.010 0-0.020 0-0.030 0h0.001zM785.68 787.44c8.382 8.378 19.959 13.56 32.746 13.56 25.582 0 46.32-20.738 46.32-46.32s-20.738-46.32-46.32-46.32c-12.788 0-24.365 5.182-32.747 13.56v0c-8.296 8.379-13.421 19.911-13.421 32.64 0 12.848 5.222 24.477 13.659 32.879l0.002 0.002zM465.68 881.68c0 0.024 0 0.052 0 0.080 0 25.582 20.738 46.32 46.32 46.32s46.32-20.738 46.32-46.32c0-25.582-20.738-46.32-46.32-46.32v0c-25.535 0.045-46.229 20.711-46.32 46.231v0.009zM172.56 721.68c-8.378 8.382-13.56 19.959-13.56 32.746 0 25.582 20.738 46.32 46.32 46.32s46.32-20.738 46.32-46.32c0-12.788-5.182-24.365-13.56-32.747v0c-8.388-8.277-19.917-13.388-32.639-13.388-12.842 0-24.468 5.208-32.88 13.628v0zM78.32 401.68c-0.024 0-0.052 0-0.080 0-25.582 0-46.32 20.738-46.32 46.32s20.738 46.32 46.32 46.32c25.582 0 46.32-20.738 46.32-46.32v0c-0.045-25.535-20.711-46.229-46.231-46.32h-0.009zM454.72 493.6c0 31.635 25.645 57.28 57.28 57.28s57.28-25.645 57.28-57.28c0-31.635-25.645-57.28-57.28-57.28v0c-31.635 0-57.28 25.645-57.28 57.28v0zM512 256c-0.051 0-0.11 0-0.17 0-43.755 0-84.074 14.71-116.282 39.454l0.452-0.334c4.039 60.903 54.429 108.774 116 108.774s111.961-47.871 115.981-108.424l0.019-0.351c-31.756-24.41-72.075-39.12-115.83-39.12-0.060 0-0.12 0-0.179 0h0.009zM238.080 108.56c-8.382-8.378-19.959-13.56-32.746-13.56-25.582 0-46.32 20.738-46.32 46.32s20.738 46.32 46.32 46.32c12.788 0 24.365-5.182 32.747-13.56v0c8.348-8.401 13.508-19.978 13.508-32.76s-5.16-24.36-13.51-32.762l0.002 0.002zM558.080 14.32c0-0.024 0-0.051 0-0.079 0-25.582-20.738-46.32-46.32-46.32s-46.32 20.738-46.32 46.32c0 25.582 20.738 46.32 46.32 46.32 0.084 0 0.169 0 0.253-0.001h-0.013c25.535-0.045 46.229-20.711 46.32-46.231v-0.009zM851.2 174.32c8.378-8.382 13.56-19.959 13.56-32.746 0-25.582-20.738-46.32-46.32-46.32s-46.32 20.738-46.32 46.32c0 12.788 5.182 24.365 13.56 32.747v0c8.401 8.348 19.978 13.508 32.76 13.508 12.902 0 24.576-5.257 32.997-13.745l0.003-0.003zM656 321.6c-11.189 46.942-43.494 84.589-86.074 102.91l-0.966 0.37c19.806 16.494 32.32 41.16 32.32 68.749 0 49.308-39.972 89.28-89.28 89.28s-89.28-39.972-89.28-89.28c0-27.589 12.514-52.256 32.176-68.633l0.144-0.117c-43.546-18.691-75.851-56.338-86.836-102.268l-0.204-1.012c-29.802 33.668-48 78.207-48 126.996 0 106.039 85.961 192 192 192s192-85.961 192-192c0-48.789-18.198-93.328-48.176-127.199l0.176 0.203zM945.36 401.6c-25.444 0.181-46 20.85-46 46.319 0 25.582 20.738 46.32 46.32 46.32 25.553 0 46.274-20.692 46.32-46.234v-0.004c0-25.582-20.738-46.32-46.32-46.32v0z" />
25
  <glyph unicode="&#xea0f;" glyph-name="cross" d="M1014.662 137.34c-0.004 0.004-0.008 0.008-0.012 0.010l-310.644 310.65 310.644 310.65c0.004 0.004 0.008 0.006 0.012 0.010 3.344 3.346 5.762 7.254 7.312 11.416 4.246 11.376 1.824 24.682-7.324 33.83l-146.746 146.746c-9.148 9.146-22.45 11.566-33.828 7.32-4.16-1.55-8.070-3.968-11.418-7.31 0-0.004-0.004-0.006-0.008-0.010l-310.648-310.652-310.648 310.65c-0.004 0.004-0.006 0.006-0.010 0.010-3.346 3.342-7.254 5.76-11.414 7.31-11.38 4.248-24.682 1.826-33.83-7.32l-146.748-146.748c-9.148-9.148-11.568-22.452-7.322-33.828 1.552-4.16 3.97-8.072 7.312-11.416 0.004-0.002 0.006-0.006 0.010-0.010l310.65-310.648-310.65-310.652c-0.002-0.004-0.006-0.006-0.008-0.010-3.342-3.346-5.76-7.254-7.314-11.414-4.248-11.376-1.826-24.682 7.322-33.83l146.748-146.746c9.15-9.148 22.452-11.568 33.83-7.322 4.16 1.552 8.070 3.97 11.416 7.312 0.002 0.004 0.006 0.006 0.010 0.010l310.648 310.65 310.648-310.65c0.004-0.002 0.008-0.006 0.012-0.008 3.348-3.344 7.254-5.762 11.414-7.314 11.378-4.246 24.684-1.826 33.828 7.322l146.746 146.748c9.148 9.148 11.57 22.454 7.324 33.83-1.552 4.16-3.97 8.068-7.314 11.414z" />
26
  </font></defs></svg>
EmbedPress/Ends/Back/Settings/assets/css/icon/fonts/icomoon.ttf CHANGED
Binary file
EmbedPress/Ends/Back/Settings/assets/css/icon/fonts/icomoon.woff CHANGED
Binary file
EmbedPress/Ends/Back/Settings/assets/css/icon/style.css CHANGED
@@ -1,10 +1,10 @@
1
  @font-face {
2
  font-family: 'icomoon';
3
- src: url('fonts/icomoon.eot?vkygzw');
4
- src: url('fonts/icomoon.eot?vkygzw#iefix') format('embedded-opentype'),
5
- url('fonts/icomoon.ttf?vkygzw') format('truetype'),
6
- url('fonts/icomoon.woff?vkygzw') format('woff'),
7
- url('fonts/icomoon.svg?vkygzw#icomoon') format('svg');
8
  font-weight: normal;
9
  font-style: normal;
10
  font-display: block;
@@ -25,8 +25,14 @@
25
  -moz-osx-font-smoothing: grayscale;
26
  }
27
 
28
- .ep-cross:before {
29
- content: "\ea0f";
 
 
 
 
 
 
30
  }
31
  .ep-bar:before {
32
  content: "\e90b";
@@ -64,3 +70,6 @@
64
  .ep-premium:before {
65
  content: "\e905";
66
  }
 
 
 
1
  @font-face {
2
  font-family: 'icomoon';
3
+ src: url('fonts/icomoon.eot?gc2ib3');
4
+ src: url('fonts/icomoon.eot?gc2ib3#iefix') format('embedded-opentype'),
5
+ url('fonts/icomoon.ttf?gc2ib3') format('truetype'),
6
+ url('fonts/icomoon.woff?gc2ib3') format('woff'),
7
+ url('fonts/icomoon.svg?gc2ib3#icomoon') format('svg');
8
  font-weight: normal;
9
  font-style: normal;
10
  font-display: block;
25
  -moz-osx-font-smoothing: grayscale;
26
  }
27
 
28
+ .ep-platform:before {
29
+ content: "\e90e";
30
+ }
31
+ .ep-copy:before {
32
+ content: "\e90d";
33
+ }
34
+ .ep-code:before {
35
+ content: "\e90c";
36
  }
37
  .ep-bar:before {
38
  content: "\e90b";
70
  .ep-premium:before {
71
  content: "\e905";
72
  }
73
+ .ep-cross:before {
74
+ content: "\ea0f";
75
+ }
EmbedPress/Ends/Back/Settings/assets/css/style.css CHANGED
@@ -2826,8 +2826,8 @@ button.button__instagram.hover__highlight:hover .icon {
2826
 
2827
  .embedpress-license__details .license__content {
2828
  background: #ffffff;
2829
- padding: 100px;
2830
- padding-left: 50px;
2831
  }
2832
 
2833
  @media (max-width: 1199px) {
@@ -3254,6 +3254,10 @@ button.button__instagram.hover__highlight:hover .icon {
3254
  background: #FE504F;
3255
  }
3256
 
 
 
 
 
3257
  .embedpress-toast__message.toast__message--success {
3258
  background: #00CC76;
3259
  }
@@ -3294,9 +3298,13 @@ button.button__instagram.hover__highlight:hover .icon {
3294
  font-size: 12px;
3295
  font-weight: 900;
3296
  }
3297
- .embedpress-card a{
 
3298
  color:#5b4e96;
3299
  }
 
 
 
3300
  .proOverlay {
3301
  opacity: .3;
3302
  position: relative;
@@ -3311,3 +3319,42 @@ button.button__instagram.hover__highlight:hover .icon {
3311
  height: 100%;
3312
  display: block;
3313
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2826
 
2827
  .embedpress-license__details .license__content {
2828
  background: #ffffff;
2829
+ padding: 40px 100px 50px 50px;
2830
+
2831
  }
2832
 
2833
  @media (max-width: 1199px) {
3254
  background: #FE504F;
3255
  }
3256
 
3257
+ .embedpress-toast__message.toast__message--attention {
3258
+ background: #FFA53C
3259
+ }
3260
+
3261
  .embedpress-toast__message.toast__message--success {
3262
  background: #00CC76;
3263
  }
3298
  font-size: 12px;
3299
  font-weight: 900;
3300
  }
3301
+
3302
+ .embedpress-card a, .template__wrapper .ep-link{
3303
  color:#5b4e96;
3304
  }
3305
+ .template__wrapper .ep-link {
3306
+ font-weight: 600;
3307
+ }
3308
  .proOverlay {
3309
  opacity: .3;
3310
  position: relative;
3319
  height: 100%;
3320
  display: block;
3321
  }
3322
+
3323
+ .embedpress__shortcode .shortcode__text {
3324
+ padding: 25px;
3325
+ border: 2px solid rgba(91, 78, 150, 0.1);
3326
+ border-radius: 10px;
3327
+ margin-bottom: 30px;
3328
+ font-size: 16px;
3329
+ color:#25396F;
3330
+ }
3331
+
3332
+ .embedpress__shortcode .shortcode__form .form__group {
3333
+ -webkit-box-flex: 0;
3334
+ -ms-flex: 0 0 40%;
3335
+ flex: 0 0 40%;
3336
+ }
3337
+
3338
+ .embedpress__shortcode .shortcode__form .form__group .form__control {
3339
+ height: 50px;
3340
+ }
3341
+
3342
+ .embedpress__shortcode .shortcode__form .form__group .form__control[readonly] {
3343
+ background: #F5F7FD;
3344
+ }
3345
+
3346
+ .embedpress__shortcode .shortcode__form .copy__button {
3347
+ padding: 16px;
3348
+ width: 50px;
3349
+ text-align: center;
3350
+ }
3351
+
3352
+ @media all and (max-width: 767px) {
3353
+ .embedpress__shortcode .shortcode__form {
3354
+ display: block;
3355
+ }
3356
+ .embedpress__shortcode .shortcode__form .form__group {
3357
+ margin-right: 0;
3358
+ margin-bottom: 25px;
3359
+ }
3360
+ }
EmbedPress/Ends/Back/Settings/assets/img/attention.svg ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs" version="1.1" width="512" height="512" x="0" y="0" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512" xml:space="preserve" class=""><g>
3
+ <g xmlns="http://www.w3.org/2000/svg">
4
+ <g>
5
+ <path d="M256,0C114.497,0,0,114.507,0,256c0,141.503,114.507,256,256,256c141.503,0,256-114.507,256-256 C512,114.497,397.493,0,256,0z M256,472c-119.393,0-216-96.615-216-216c0-119.393,96.615-216,216-216 c119.393,0,216,96.615,216,216C472,375.393,375.385,472,256,472z" fill="#ffffff" data-original="#000000" style="" class=""/>
6
+ </g>
7
+ </g>
8
+ <g xmlns="http://www.w3.org/2000/svg">
9
+ <g>
10
+ <path d="M256,128.877c-11.046,0-20,8.954-20,20V277.67c0,11.046,8.954,20,20,20s20-8.954,20-20V148.877 C276,137.831,267.046,128.877,256,128.877z" fill="#ffffff" data-original="#000000" style="" class=""/>
11
+ </g>
12
+ </g>
13
+ <g xmlns="http://www.w3.org/2000/svg">
14
+ <g>
15
+ <circle cx="256" cy="349.16" r="27" fill="#ffffff" data-original="#000000" style="" class=""/>
16
+ </g>
17
+ </g>
18
+ <g xmlns="http://www.w3.org/2000/svg">
19
+ </g>
20
+ <g xmlns="http://www.w3.org/2000/svg">
21
+ </g>
22
+ <g xmlns="http://www.w3.org/2000/svg">
23
+ </g>
24
+ <g xmlns="http://www.w3.org/2000/svg">
25
+ </g>
26
+ <g xmlns="http://www.w3.org/2000/svg">
27
+ </g>
28
+ <g xmlns="http://www.w3.org/2000/svg">
29
+ </g>
30
+ <g xmlns="http://www.w3.org/2000/svg">
31
+ </g>
32
+ <g xmlns="http://www.w3.org/2000/svg">
33
+ </g>
34
+ <g xmlns="http://www.w3.org/2000/svg">
35
+ </g>
36
+ <g xmlns="http://www.w3.org/2000/svg">
37
+ </g>
38
+ <g xmlns="http://www.w3.org/2000/svg">
39
+ </g>
40
+ <g xmlns="http://www.w3.org/2000/svg">
41
+ </g>
42
+ <g xmlns="http://www.w3.org/2000/svg">
43
+ </g>
44
+ <g xmlns="http://www.w3.org/2000/svg">
45
+ </g>
46
+ <g xmlns="http://www.w3.org/2000/svg">
47
+ </g>
48
+ <script/></g></svg>
EmbedPress/Ends/Back/Settings/assets/img/shortcode.svg ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs" version="1.1" width="512" height="512" x="0" y="0" viewBox="0 0 94.504 94.504" style="enable-background:new 0 0 512 512" xml:space="preserve" class=""><g>
3
+ <g xmlns="http://www.w3.org/2000/svg">
4
+ <g>
5
+ <path d="M93.918,45.833L69.799,21.714c-0.75-0.75-2.077-0.75-2.827,0l-5.229,5.229c-0.781,0.781-0.781,2.047,0,2.828 l17.477,17.475L61.744,64.724c-0.781,0.781-0.781,2.047,0,2.828l5.229,5.229c0.375,0.375,0.884,0.587,1.414,0.587 c0.529,0,1.039-0.212,1.414-0.587l24.117-24.118C94.699,47.881,94.699,46.614,93.918,45.833z" fill="#5b4e96" data-original="#000000" style="" class=""/>
6
+ <path d="M32.759,64.724L15.285,47.248l17.477-17.475c0.375-0.375,0.586-0.883,0.586-1.414c0-0.53-0.21-1.039-0.586-1.414 l-5.229-5.229c-0.375-0.375-0.884-0.586-1.414-0.586c-0.53,0-1.039,0.211-1.414,0.586L0.585,45.833 c-0.781,0.781-0.781,2.047,0,2.829L24.704,72.78c0.375,0.375,0.884,0.587,1.414,0.587c0.53,0,1.039-0.212,1.414-0.587l5.229-5.229 C33.542,66.771,33.542,65.505,32.759,64.724z" fill="#5b4e96" data-original="#000000" style="" class=""/>
7
+ <path d="M60.967,13.6c-0.254-0.466-0.682-0.812-1.19-0.962l-4.239-1.251c-1.058-0.314-2.172,0.293-2.484,1.352L33.375,79.382 c-0.15,0.509-0.092,1.056,0.161,1.521c0.253,0.467,0.682,0.812,1.19,0.963l4.239,1.251c0.189,0.056,0.38,0.083,0.567,0.083 c0.863,0,1.66-0.564,1.917-1.435l19.679-66.644C61.278,14.612,61.221,14.065,60.967,13.6z" fill="#5b4e96" data-original="#000000" style="" class=""/>
8
+ </g>
9
+ </g>
10
+ <script/></g></svg>
EmbedPress/Ends/Back/Settings/assets/img/spotify.svg ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 427.652 427.652" style="enable-background:new 0 0 427.652 427.652;" xml:space="preserve">
5
+ <path style="fill:#00D95F;" d="M213.826,0C95.733,0,0,95.733,0,213.826s95.733,213.826,213.826,213.826
6
+ s213.826-95.733,213.826-213.826S331.919,0,213.826,0z M306.886,310.32c-2.719,4.652-7.612,7.246-12.638,7.247
7
+ c-2.506,0-5.044-0.645-7.364-2c-38.425-22.456-82.815-26.065-113.295-25.138c-33.763,1.027-58.523,7.692-58.769,7.76
8
+ c-7.783,2.126-15.826-2.454-17.961-10.236c-2.134-7.781,2.43-15.819,10.209-17.962c1.116-0.307,27.76-7.544,64.811-8.766
9
+ c21.824-0.72,42.834,0.801,62.438,4.52c24.83,4.71,47.48,12.978,67.322,24.574C308.612,294.393,310.96,303.349,306.886,310.32z
10
+ M334.07,253.861c-3.22,5.511-9.016,8.583-14.97,8.584c-2.968,0-5.975-0.763-8.723-2.369c-45.514-26.6-98.097-30.873-134.2-29.776
11
+ c-39.994,1.217-69.323,9.112-69.614,9.192c-9.217,2.515-18.746-2.906-21.275-12.124c-2.528-9.218,2.879-18.738,12.093-21.277
12
+ c1.322-0.364,32.882-8.937,76.77-10.384c25.853-0.852,50.739,0.949,73.96,5.354c29.412,5.58,56.241,15.373,79.744,29.108
13
+ C336.115,234.995,338.897,245.603,334.07,253.861z M350.781,202.526c-3.641,0-7.329-0.936-10.7-2.906
14
+ c-108.207-63.238-248.572-25.643-249.977-25.255c-11.313,3.117-23.008-3.527-26.124-14.839
15
+ c-3.117-11.312,3.527-23.008,14.839-26.124c1.621-0.447,40.333-10.962,94.166-12.737c31.713-1.044,62.237,1.164,90.72,6.567
16
+ c36.077,6.844,68.987,18.856,97.815,35.704c10.13,5.92,13.543,18.931,7.623,29.061C365.193,198.757,358.084,202.526,350.781,202.526
17
+ z"/>
18
+ <g>
19
+ </g>
20
+ <g>
21
+ </g>
22
+ <g>
23
+ </g>
24
+ <g>
25
+ </g>
26
+ <g>
27
+ </g>
28
+ <g>
29
+ </g>
30
+ <g>
31
+ </g>
32
+ <g>
33
+ </g>
34
+ <g>
35
+ </g>
36
+ <g>
37
+ </g>
38
+ <g>
39
+ </g>
40
+ <g>
41
+ </g>
42
+ <g>
43
+ </g>
44
+ <g>
45
+ </g>
46
+ <g>
47
+ </g>
48
+ </svg>
EmbedPress/Ends/Back/Settings/assets/js/settings.js CHANGED
@@ -339,4 +339,103 @@ jQuery(document).ready( function($){
339
  $this.html('Activating.....');
340
  }
341
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
342
  });
 
339
  $this.html('Activating.....');
340
  }
341
  });
342
+ // Helpers
343
+ function copyToClipboard(text) {
344
+ if (window.clipboardData && window.clipboardData.setData) {
345
+ // Internet Explorer-specific code path to prevent textarea being shown while dialog is visible.
346
+ return window.clipboardData.setData("Text", text);
347
+
348
+ }
349
+ else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
350
+ var textarea = document.createElement("textarea");
351
+ textarea.textContent = text;
352
+ textarea.style.position = "fixed"; // Prevent scrolling to bottom of page in Microsoft Edge.
353
+ document.body.appendChild(textarea);
354
+ textarea.select();
355
+ try {
356
+ return document.execCommand("copy"); // Security exception may be thrown by some browsers.
357
+ }
358
+ catch (ex) {
359
+ console.warn("Copy to clipboard failed.", ex);
360
+ return false;
361
+ }
362
+ finally {
363
+ document.body.removeChild(textarea);
364
+ }
365
+ }
366
+ }
367
+ function validateUrl(value) {
368
+ return /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value);
369
+ }
370
+ // Generate Shortcode
371
+ let $shortcodePreview = $('#ep-shortcode');
372
+
373
+ $(document).on('click', '#ep-shortcode-btn', function (e){
374
+ e.preventDefault();
375
+ let $linkNode = $('#ep-link');
376
+ let link = $linkNode.val();
377
+ if (!validateUrl(link)){
378
+ show_attention_alert('Please enter a valid URL.');
379
+ $linkNode.val('');
380
+ $shortcodePreview.val('');
381
+ return;
382
+ }
383
+ $linkNode.val('');
384
+ $shortcodePreview.val('[embedpress]'+link+'[/embedpress]');
385
+ $shortcodePreview.focus();
386
+ });
387
+
388
+ $(document).on('click', '#ep-shortcode-cp', function (e){
389
+ e.preventDefault();
390
+ let shortcode = $shortcodePreview.val();
391
+ if (shortcode.length < 1){
392
+ show_error_alert('Please enter a valid URL and generate a shortcode first.');
393
+ return;
394
+ }
395
+ copyToClipboard(shortcode);
396
+ $shortcodePreview.removeClass('active');
397
+ show_success_alert('Copied to your clipboard successfully.');
398
+ });
399
+
400
+ $shortcodePreview.on('focus', function (e) {
401
+ $(this).select();
402
+ });
403
+
404
+ function show_attention_alert(message='') {
405
+ let $attention_message_node = $('.toast__message--attention');
406
+ if (message.length>0){
407
+ $attention_message_node.find('p').html(message);
408
+ }
409
+ $attention_message_node.addClass('show');
410
+ setTimeout(function (){
411
+ $attention_message_node.removeClass('show');
412
+ history.pushState('', '', embedPressRemoveURLParameter(location.href, 'attention'));
413
+ }, 3000);
414
+ }
415
+
416
+ function show_error_alert(message='') {
417
+ let $error_message_node = $('.toast__message--error');
418
+ if (message.length>0){
419
+ $error_message_node.find('p').html(message);
420
+ }
421
+ $error_message_node.addClass('show');
422
+ setTimeout(function (){
423
+ $error_message_node.removeClass('show');
424
+ history.pushState('', '', embedPressRemoveURLParameter(location.href, 'error'));
425
+ }, 3000);
426
+ }
427
+
428
+ function show_success_alert(message='') {
429
+ let $success_message_node = $('.toast__message--success');
430
+ if (message.length>0){
431
+ $success_message_node.find('p').html(message);
432
+ }
433
+ $success_message_node.addClass('show');
434
+ setTimeout(function (){
435
+ $success_message_node.removeClass('show');
436
+ history.pushState('', '', embedPressRemoveURLParameter(location.href, 'success'));
437
+ }, 3000);
438
+ }
439
+
440
  });
441
+
EmbedPress/Ends/Back/Settings/templates/main-template.php CHANGED
@@ -11,11 +11,16 @@
11
  <?php include_once EMBEDPRESS_SETTINGS_PATH . 'templates/partials/sidebar.php'; ?>
12
  <div class="embedpress-content">
13
  <?php
14
- include_once EMBEDPRESS_SETTINGS_PATH . "templates/{$template}.php";
 
 
 
15
  if ( 'license' != $template) {
16
  include_once EMBEDPRESS_SETTINGS_PATH . 'templates/partials/toast-message.php';
17
  }
18
- ?>
 
 
19
  </div>
20
  </div>
21
  <?php include_once EMBEDPRESS_SETTINGS_PATH . 'templates/partials/footer.php'; ?>
11
  <?php include_once EMBEDPRESS_SETTINGS_PATH . 'templates/partials/sidebar.php'; ?>
12
  <div class="embedpress-content">
13
  <?php
14
+ $template_file = apply_filters( 'embedpress_settings_template_path', EMBEDPRESS_SETTINGS_PATH . "templates/{$template}.php", $template);
15
+ if ( file_exists( $template_file ) ) {
16
+ include_once $template_file;
17
+ }
18
  if ( 'license' != $template) {
19
  include_once EMBEDPRESS_SETTINGS_PATH . 'templates/partials/toast-message.php';
20
  }
21
+ do_action( 'embedpress_settings_template', $template);
22
+
23
+ ?>
24
  </div>
25
  </div>
26
  <?php include_once EMBEDPRESS_SETTINGS_PATH . 'templates/partials/footer.php'; ?>
EmbedPress/Ends/Back/Settings/templates/partials/sidebar.php CHANGED
@@ -14,38 +14,66 @@
14
  <?php do_action( 'ep_before_general_menu_items'); ?>
15
  <li class="dropdown__item">
16
  <a href="<?php echo esc_url( $ep_page.'&page_type=general'); ?>" class="dropdown__link <?php echo 'general' === $template ? 'active' : ''; ?>">
17
- <img src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/settings-sub.svg" alt="">
18
  <?php esc_html_e( "Settings", "embedpress" ); ?>
19
  </a>
20
  </li>
21
  <li class="dropdown__item">
22
- <a href="<?php echo esc_url( $ep_page.'&page_type=youtube'); ?>" class="dropdown__link <?php echo 'youtube' === $template ? 'active' : ''; ?>">
23
- <img src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/youtube.svg" alt="">
24
- <?php esc_html_e( "YouTube", "embedpress" ); ?>
25
- </a>
26
- </li>
27
- <li class="dropdown__item">
28
- <a href="<?php echo esc_url( $ep_page.'&page_type=vimeo'); ?>" class="dropdown__link <?php echo 'vimeo' === $template ? 'active' : ''; ?>">
29
- <img src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/vimeo.svg" alt="">
30
- <?php esc_html_e( "Vimeo", "embedpress" ); ?>
31
- </a>
32
- </li>
33
- <li class="dropdown__item">
34
- <a href="<?php echo esc_url( $ep_page.'&page_type=wistia'); ?>" class="dropdown__link <?php echo 'wistia' === $template ? 'active' : ''; ?>">
35
- <img src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/wistia.svg" alt="">
36
- <?php esc_html_e( "Wistia", "embedpress" ); ?>
37
- </a>
38
- </li>
39
- <li class="dropdown__item">
40
- <a href="<?php echo esc_url( $ep_page.'&page_type=twitch'); ?>" class="dropdown__link <?php echo 'twitch' === $template ? 'active' : ''; ?>">
41
- <img src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/twitch.svg" alt="">
42
- <?php esc_html_e( "Twitch", "embedpress" ); ?>
43
  </a>
44
  </li>
45
  <?php do_action( 'ep_after_general_menu_items'); ?>
46
  </ul>
47
  </li>
48
  <?php do_action( 'ep_after_general_menu'); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  <?php do_action( 'ep_before_element_menu'); ?>
50
  <li class="sidebar__item <?php echo 'elements' === $template ? 'show' : ''; ?>">
51
  <?php do_action( 'ep_before_element_item'); ?>
14
  <?php do_action( 'ep_before_general_menu_items'); ?>
15
  <li class="dropdown__item">
16
  <a href="<?php echo esc_url( $ep_page.'&page_type=general'); ?>" class="dropdown__link <?php echo 'general' === $template ? 'active' : ''; ?>">
17
+ <img class="embedpress-settings-icon" src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/settings-sub.svg" alt="">
18
  <?php esc_html_e( "Settings", "embedpress" ); ?>
19
  </a>
20
  </li>
21
  <li class="dropdown__item">
22
+ <a href="<?php echo esc_url( $ep_page.'&page_type=shortcode'); ?>" class="dropdown__link <?php echo 'shortcode' === $template ? 'active' : ''; ?>">
23
+ <img class="embedpress-settings-icon" src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/shortcode.svg" alt="">
24
+ <?php esc_html_e( "Shortcode", "embedpress" ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  </a>
26
  </li>
27
  <?php do_action( 'ep_after_general_menu_items'); ?>
28
  </ul>
29
  </li>
30
  <?php do_action( 'ep_after_general_menu'); ?>
31
+
32
+
33
+
34
+ <?php do_action( 'ep_before_platform_menu'); ?>
35
+ <li class="sidebar__item sidebar__dropdown <?php echo in_array( $template, $platform_menu_template_names)? 'show' : ''; ?>">
36
+ <a href="<?php echo esc_url( $ep_page.'&page_type=youtube'); ?>" class="sidebar__link sidebar__link--toggler <?php echo in_array( $template, $platform_menu_template_names) ? 'active' : ''; ?>"><span><i class="ep-icon ep-platform"></i></span> Platforms</a>
37
+ <ul class="dropdown__menu <?php echo in_array( $template, $platform_menu_template_names) ? 'show' : ''; ?>">
38
+ <?php do_action( 'ep_before_platform_menu_items'); ?>
39
+ <li class="dropdown__item">
40
+ <a href="<?php echo esc_url( $ep_page.'&page_type=youtube'); ?>" class="dropdown__link <?php echo 'youtube' === $template ? 'active' : ''; ?>">
41
+ <img class="embedpress-settings-icon" src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/youtube.svg" alt="">
42
+ <?php esc_html_e( "YouTube", "embedpress" ); ?>
43
+ </a>
44
+ </li>
45
+ <li class="dropdown__item">
46
+ <a href="<?php echo esc_url( $ep_page.'&page_type=vimeo'); ?>" class="dropdown__link <?php echo 'vimeo' === $template ? 'active' : ''; ?>">
47
+ <img class="embedpress-settings-icon" src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/vimeo.svg" alt="">
48
+ <?php esc_html_e( "Vimeo", "embedpress" ); ?>
49
+ </a>
50
+ </li>
51
+ <li class="dropdown__item">
52
+ <a href="<?php echo esc_url( $ep_page.'&page_type=wistia'); ?>" class="dropdown__link <?php echo 'wistia' === $template ? 'active' : ''; ?>">
53
+ <img class="embedpress-settings-icon" src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/wistia.svg" alt="">
54
+ <?php esc_html_e( "Wistia", "embedpress" ); ?>
55
+ </a>
56
+ </li>
57
+ <li class="dropdown__item">
58
+ <a href="<?php echo esc_url( $ep_page.'&page_type=twitch'); ?>" class="dropdown__link <?php echo 'twitch' === $template ? 'active' : ''; ?>">
59
+ <img class="embedpress-settings-icon" src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/twitch.svg" alt="">
60
+ <?php esc_html_e( "Twitch", "embedpress" ); ?>
61
+ </a>
62
+ </li>
63
+ <li class="dropdown__item">
64
+ <a href="<?php echo esc_url( $ep_page.'&page_type=spotify'); ?>" class="dropdown__link <?php echo 'spotify' === $template ? 'active' : ''; ?>">
65
+ <img class="embedpress-settings-icon" src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/spotify.svg" alt="">
66
+
67
+ <?php esc_html_e( "Spotify", "embedpress" ); ?>
68
+ </a>
69
+ </li>
70
+ <?php do_action( 'ep_after_platform_menu_items'); ?>
71
+ </ul>
72
+ </li>
73
+ <?php do_action( 'ep_after_platform_menu'); ?>
74
+
75
+
76
+
77
  <?php do_action( 'ep_before_element_menu'); ?>
78
  <li class="sidebar__item <?php echo 'elements' === $template ? 'show' : ''; ?>">
79
  <?php do_action( 'ep_before_element_item'); ?>
EmbedPress/Ends/Back/Settings/templates/partials/toast-message.php CHANGED
@@ -7,6 +7,9 @@ if ( !isset( $success_message) ) {
7
  if ( !isset( $error_message) ) {
8
  $error_message = esc_html__( "Ops! Something went wrong.", "embedpress" );
9
  }
 
 
 
10
  ?>
11
 
12
  <div class="embedpress-toast__message toast__message--success">
@@ -19,6 +22,11 @@ if ( !isset( $error_message) ) {
19
  <p><?php echo esc_html( $error_message); ?></p>
20
  </div>
21
 
 
 
 
 
 
22
  <?php if (!empty( $_GET['success'])){ ?>
23
  <script>
24
  (function ($) {
@@ -45,5 +53,18 @@ if ( !isset( $error_message) ) {
45
  })(jQuery);
46
  </script>
47
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  }
49
- ?>
7
  if ( !isset( $error_message) ) {
8
  $error_message = esc_html__( "Ops! Something went wrong.", "embedpress" );
9
  }
10
+ if ( !isset( $warning_message) ) {
11
+ $warning_message = esc_html__( "Please provide valid data", "embedpress" );
12
+ }
13
  ?>
14
 
15
  <div class="embedpress-toast__message toast__message--success">
22
  <p><?php echo esc_html( $error_message); ?></p>
23
  </div>
24
 
25
+ <div class="embedpress-toast__message toast__message--attention">
26
+ <img src="<?php echo EMBEDPRESS_SETTINGS_ASSETS_URL; ?>img/attention.svg" alt="">
27
+ <p><?php echo esc_html( $warning_message); ?></p>
28
+ </div>
29
+
30
  <?php if (!empty( $_GET['success'])){ ?>
31
  <script>
32
  (function ($) {
53
  })(jQuery);
54
  </script>
55
  <?php
56
+ } elseif (!empty( $_GET['attention'])){ ?>
57
+ <script>
58
+ (function ($) {
59
+ let $attention_message_node = $('.toast__message--attention');
60
+ $attention_message_node.addClass('show');
61
+ setTimeout(function (){
62
+ $attention_message_node.removeClass('show');
63
+ history.pushState('', '', embedPressRemoveURLParameter(location.href, 'attention'));
64
+ }, 3000);
65
+
66
+ })(jQuery);
67
+ </script>
68
+ <?php
69
  }
70
+ ?>
EmbedPress/Ends/Back/Settings/templates/shortcode.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Shortcode Settings page
4
+ * All undefined vars comes from 'render_settings_page' method
5
+ */
6
+ ?>
7
+ <div class="embedpress__settings background__white radius-25 p40">
8
+ <h3><?php esc_html_e( "Shortcode", "embedpress" ); ?></h3>
9
+ <div class="embedpress__shortcode">
10
+ <p class="shortcode__text"><?php printf( esc_html__( "EmbedPress has direct integration with Classic, Gutenberg and Elementor Editor. But for other page editor you can use EmbedPress shortcode feature. To generate shortcode simply insert your link, click %s'Generate'%s button and then copy your shortcode. For details, check out this %sdocumentation%s.", "embedpress" ),'<strong>', '</strong>','<a class="ep-link" href="https://embedpress.com/docs/how-to-use-embedpress-shortcodes-page-builders/" target="_blank">', '</a>'); ?></p>
11
+ <div class="shortcode__form form__inline mb30">
12
+ <div class="form__group">
13
+ <input type="url" id="ep-link" class="form__control" placeholder="<?php esc_attr_e( "Place your link here to generate shortcode", "embedpress" ); ?>">
14
+ </div>
15
+ <button class="button button__themeColor radius-10" id="ep-shortcode-btn"><?php esc_html_e( "Generate", "embedpress" ); ?></button>
16
+ </div>
17
+ <div class="shortcode__form form__inline">
18
+ <div class="form__group">
19
+ <input type="text" class="form__control" id="ep-shortcode" readonly>
20
+ </div>
21
+ <button class="button button__themeColor copy__button radius-10" id="ep-shortcode-cp"><i class="ep-icon ep-copy"></i></button>
22
+ </div>
23
+ </div>
24
+ </div>
25
+
EmbedPress/Ends/Back/Settings/templates/spotify.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Spotify Settings page template
4
+ * All undefined vars comes from 'render_settings_page' method
5
+ * */
6
+ $settings = get_option( EMBEDPRESS_PLG_NAME.':spotify');
7
+ $spotify_theme = isset( $settings['theme']) ? $settings['theme'] : '1';
8
+ $follow_theme = isset( $settings['follow_theme']) ? $settings['follow_theme'] : 'light';
9
+ $follow_layout = isset( $settings['follow_layout']) ? $settings['follow_layout'] : 'detail';
10
+ $follow_count = isset( $settings['follow_count']) ? $settings['follow_count'] : 1;
11
+ ?>
12
+
13
+ <div class="embedpress__settings background__white radius-25 p40">
14
+ <h3><?php esc_html_e( "Spotify Settings", "embedpress-pro" ); ?></h3>
15
+ <div class="embedpress__settings__form">
16
+ <form action="" method="post" class="embedpress-settings-form" >
17
+ <?php
18
+ do_action( 'embedpress_before_spotify_settings_fields');
19
+ echo $nonce_field ; ?>
20
+ <div class="form__group">
21
+ <label class="form__label" for="spotify_theme"><?php esc_html_e( "Player Background Color", "embedpress-pro" ); ?></label>
22
+ <div class="form__control__wrap">
23
+ <div class="embedpress__select">
24
+ <span><i class="ep-icon ep-caret-down"></i></span>
25
+ <select name="spotify_theme" id="spotify_theme" data-default="<?php echo esc_attr( $spotify_theme ); ?>">
26
+ <option value="1" <?php selected( '1', $spotify_theme); ?> ><?php esc_html_e( "Dynamic", "embedpress-pro" ); ?></option>
27
+ <option value="0" <?php selected( '0', $spotify_theme); ?> ><?php esc_html_e( "Black & White", "embedpress-pro" ); ?></option>
28
+ </select>
29
+ </div>
30
+
31
+ <p><?php printf( esc_html__( "Dynamic option will use the most vibrant color from the album art.", 'embedpress'), '<br>'); ?></p>
32
+ </div>
33
+ </div>
34
+ <h3><?php esc_html_e( "Artist Follower Widget", "embedpress" ); ?></h3>
35
+
36
+ <div class="form__group">
37
+ <label class="form__label" for="follow_theme"><?php esc_html_e( "Follow Widget Theme", "embedpress-pro" ); echo !$pro_active ? ' <span class="isPro">PRO</span>' : ''; ?></label>
38
+ <div class="form__control__wrap">
39
+ <div class="embedpress__select <?php echo $pro_active ? '': 'isPro'; ?>">
40
+ <span><i class="ep-icon ep-caret-down"></i></span>
41
+ <select name="follow_theme" id="follow_theme" data-default="<?php echo esc_attr( $follow_theme ); ?>" <?php echo !$pro_active ? 'disabled' : ''; ?>>
42
+ <option value="light" <?php selected( 'light', $follow_theme); ?> ><?php esc_html_e( "For Light Background", "embedpress-pro" ); ?></option>
43
+ <option value="dark" <?php selected( 'dark', $follow_theme); ?> ><?php esc_html_e( "For Dark Background", "embedpress-pro" ); ?></option>
44
+ </select>
45
+ </div>
46
+ <?php if ( !$pro_active ) { include EMBEDPRESS_SETTINGS_PATH . 'templates/partials/alert-pro.php'; } ?>
47
+
48
+ </div>
49
+ </div>
50
+
51
+ <div class="form__group">
52
+ <label class="form__label" for="follow_layout"><?php esc_html_e( "Follow Widget Layout", "embedpress-pro" ); echo !$pro_active ? ' <span class="isPro">PRO</span>' : ''; ?></label>
53
+ <div class="form__control__wrap">
54
+ <div class="embedpress__select <?php echo $pro_active ? '': 'isPro'; ?>">
55
+ <span><i class="ep-icon ep-caret-down"></i></span>
56
+ <select name="follow_layout" id="follow_layout" data-default="<?php echo esc_attr( $follow_layout ); ?>" <?php echo !$pro_active ? 'disabled' : ''; ?>>
57
+ <option value="detail" <?php selected( 'detail', $follow_layout); ?> ><?php esc_html_e( "Details", "embedpress-pro" ); ?></option>
58
+ <option value="basic" <?php selected( 'basic', $follow_layout); ?> ><?php esc_html_e( "Basic", "embedpress-pro" ); ?></option>
59
+ </select>
60
+ </div>
61
+ <?php if ( !$pro_active ) { include EMBEDPRESS_SETTINGS_PATH . 'templates/partials/alert-pro.php'; } ?>
62
+
63
+ </div>
64
+ </div>
65
+ <div class="form__group">
66
+ <label class="form__label" for="follow_count"><?php esc_html_e( "Show Follower Statistics", "embedpress-pro" ); echo !$pro_active ? ' <span class="isPro">PRO</span>' : ''; ?></label>
67
+ <div class="form__control__wrap">
68
+ <div class="embedpress__select <?php echo $pro_active ? '': 'isPro'; ?>">
69
+ <span><i class="ep-icon ep-caret-down"></i></span>
70
+ <select name="follow_count" id="follow_count" data-default="<?php echo esc_attr( $follow_count ); ?>" <?php echo !$pro_active ? 'disabled' : ''; ?>>
71
+ <option value="1" <?php selected( '1', $follow_count); ?> ><?php esc_html_e( "Yes", "embedpress-pro" ); ?></option>
72
+ <option value="0" <?php selected( '0', $follow_count); ?> ><?php esc_html_e( "No", "embedpress-pro" ); ?></option>
73
+ </select>
74
+ </div>
75
+ <?php if ( !$pro_active ) { include EMBEDPRESS_SETTINGS_PATH . 'templates/partials/alert-pro.php'; } ?>
76
+ </div>
77
+ </div>
78
+
79
+ <div class="form__group">
80
+ <p class="embedpress-note" style="font-size: 14px; color:#7C8DB5;"><strong><?php esc_html_e( "Note:", "embedpress" ); ?></strong><?php printf( __( "To add follow widget, please add '%s:follow_widget%s' to the end of an artist URL. For details, check out this %s documentation%s.", "embedpress" ), '<strong>','</strong>', '<a class="ep-link" href="https://embedpress.com/docs/how-to-embed-spotify-artist-follower-widget/" target="_blank">', '</a>'); ?></p>
81
+ </div>
82
+
83
+ <?php do_action( 'embedpress_after_spotify_settings_fields'); ?>
84
+ <button class="button button__themeColor radius-10 embedpress-submit-btn" name="submit" value="spotify"><?php esc_html_e( 'Save Changes', 'embedpress'); ?></button>
85
+ </form>
86
+ </div>
87
+ </div>
EmbedPress/Providers/Boomplay.php ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace EmbedPress\Providers;
3
+
4
+ use Embera\Provider\ProviderAdapter;
5
+ use Embera\Provider\ProviderInterface;
6
+ use Embera\Url;
7
+
8
+ (defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed. or EmbedPress is not loaded yet.");
9
+
10
+ /**
11
+ * Entity responsible to support Boomplay embeds.
12
+ *
13
+ * @package EmbedPress
14
+ * @subpackage EmbedPress/Providers
15
+ * @author EmbedPress <help@embedpress.com>
16
+ * @copyright Copyright (C) 2021 WPDeveloper. All rights reserved.
17
+ * @license GPLv3 or later
18
+ * @since 1.5.0
19
+ */
20
+ class Boomplay extends ProviderAdapter implements ProviderInterface
21
+ {
22
+ /**
23
+ * The regex which identifies Boomplay URLs.
24
+ *
25
+ * @since 1.5.0
26
+ * @access private
27
+ *
28
+ * @var string
29
+ */
30
+ private $urlRegexPattern = '/boomplay\.com\/(songs|playlists|albums)\/(\d+)/';
31
+
32
+ /**
33
+ * Method that verifies if the embed URL belongs to Boomplay.
34
+ *
35
+ * @param Url $url
36
+ * @return boolean
37
+ *
38
+ */
39
+ public function validateUrl(Url $url)
40
+ {
41
+ return (bool) preg_match($this->urlRegexPattern, $this->url);
42
+ }
43
+
44
+ /**
45
+ * This method fakes an Oembed response.
46
+ *
47
+ * @since 1.5.0
48
+ *
49
+ * @return array
50
+ */
51
+ public function fakeResponse()
52
+ {
53
+ $url = $this->getUrl();
54
+ $providerUrl = 'https://www.boomplay.com';
55
+
56
+ if (preg_match("{$this->urlRegexPattern}i", $url, $matches)) {
57
+ $type = $matches[1]; // songs | playlists | album
58
+ $content_id = $matches[2];
59
+ $endpoint_type = apply_filters( 'embedpress_boomplay_content_type', 'MUSIC', $type);
60
+
61
+ $width = isset( $this->config['maxwidth']) ? $this->config['maxwidth']: '100%';
62
+ $height = isset( $this->config['maxheight']) ? $this->config['maxheight']: 450;
63
+
64
+ $html = "<iframe src='https://www.boomplay.com/embed/$content_id/$endpoint_type' frameborder='0' height='$height' width='$width'></iframe>";
65
+
66
+
67
+
68
+ $response = [
69
+ 'type' => $type,
70
+ 'content_id' => $content_id,
71
+ 'provider_name' => 'Boomplay',
72
+ 'provider_url' => $providerUrl,
73
+ 'url' => $url,
74
+ 'html' => $html,
75
+ ];
76
+
77
+ if ( in_array( $type, ['albums', 'playlists'])) {
78
+ $alert_message = sprintf( '<p><strong>%s</strong>. <span style="font-size: 13px;">%s</span></p>', __( 'Embedding Boomplay playlists and albums are supported in EmbedPress Pro', 'embedpress'), __( 'This message is only visible to you.', 'embedpress'));
79
+ // for gutenberg
80
+
81
+ if ( !is_embedpress_pro_active() ) {
82
+ $response['alert'] = $alert_message;
83
+ }
84
+
85
+ if ( is_admin() && !is_embedpress_pro_active() ) {
86
+ $response['html'] = $alert_message;
87
+ }
88
+
89
+ if ( !is_admin() && !is_embedpress_pro_active() ) {
90
+ $response['html'] = $url;
91
+ }
92
+
93
+ }
94
+ } else {
95
+ $response = [];
96
+ }
97
+
98
+ return $response;
99
+ }
100
+ /** inline @inheritDoc */
101
+ public function modifyResponse( array $response = [])
102
+ {
103
+ return $this->fakeResponse();
104
+ }
105
+ }
EmbedPress/Providers/GoogleMaps.php CHANGED
@@ -53,7 +53,8 @@ class GoogleMaps extends ProviderAdapter implements ProviderInterface
53
  } else {
54
  // Extract coordinates and zoom from the url
55
  if (preg_match('~@(-?[0-9\.]+,-?[0-9\.]+).+,([0-9\.]+[a-z])~i', $this->url, $matches)) {
56
- $iframeSrc = 'https://maps.google.com/maps?hl=en&ie=UTF8&ll=' . $matches[1] . '&spn=' . $matches[1] . '&t=m&z=' . round($matches[2]) . '&output=embed';
 
57
  } else {
58
  return [];
59
  }
53
  } else {
54
  // Extract coordinates and zoom from the url
55
  if (preg_match('~@(-?[0-9\.]+,-?[0-9\.]+).+,([0-9\.]+[a-z])~i', $this->url, $matches)) {
56
+ $z = floatval( $matches[2]);
57
+ $iframeSrc = 'https://maps.google.com/maps?hl=en&ie=UTF8&ll=' . $matches[1] . '&spn=' . $matches[1] . '&t=m&z=' . round($z) . '&output=embed';
58
  } else {
59
  return [];
60
  }
EmbedPress/RestAPI.php CHANGED
@@ -28,6 +28,11 @@ class RestAPI
28
  public static function oembed($request)
29
  {
30
  $url = esc_url_raw($request->get_param('url'));
 
 
 
 
 
31
  $atts = [
32
  'width' => intval( $request->get_param('width')),
33
  'height' => intval( $request->get_param('height')),
28
  public static function oembed($request)
29
  {
30
  $url = esc_url_raw($request->get_param('url'));
31
+ $playlist_id = $request->get_param( 'list');
32
+ if ( !empty( $playlist_id) ) {
33
+ $url .= "&list=$playlist_id";
34
+ }
35
+
36
  $atts = [
37
  'width' => intval( $request->get_param('width')),
38
  'height' => intval( $request->get_param('height')),
EmbedPress/Shortcode.php CHANGED
@@ -65,6 +65,7 @@ class Shortcode {
65
  // Register the new shortcode for embeds.
66
  add_shortcode( EMBEDPRESS_SHORTCODE, ['\\EmbedPress\\Shortcode', 'do_shortcode'] );
67
  add_shortcode( 'embed_oembed_html', ['\\EmbedPress\\Shortcode', 'do_shortcode'] );
 
68
  }
69
 
70
  /**
@@ -80,7 +81,7 @@ class Shortcode {
80
  */
81
 
82
  public static function do_shortcode( $attributes = [], $subject = null ) {
83
- $plgSettings = Core::getSettings();
84
  $default = [];
85
  if ( $plgSettings->enableGlobalEmbedResize ) {
86
  $default = [
@@ -116,7 +117,7 @@ class Shortcode {
116
  // Converts any special HTML entities back to characters.
117
  $url = htmlspecialchars_decode( $url );
118
  $content_uid = md5( $url );
119
- $hash = 'embedpress_'.$content_uid . md5( implode( ':', array_values( $customAttributes)));
120
 
121
  // check if we have data cached
122
  //@TODO; add caching later and remove caching on settings save
@@ -128,8 +129,8 @@ class Shortcode {
128
  self::set_embera_settings(self::$ombed_attributes);
129
 
130
  // Identify what service provider the shortcode's link belongs to
131
- $serviceProvider = self::get_oembed()->get_provider( $url );
132
 
 
133
  $urlData = self::get_url_data( $url, self::$ombed_attributes, $serviceProvider);
134
 
135
  // Sanitize the data
@@ -138,7 +139,7 @@ class Shortcode {
138
  if ( is_object( $urlData ) ) {
139
  $urlData->originalContent = $url;
140
  }
141
-
142
  $eventResults = apply_filters( 'embedpress:onBeforeEmbed', $urlData );
143
  if ( empty( $eventResults ) ) {
144
  return $subject;
@@ -243,7 +244,7 @@ KAMAL;
243
  $parsedContent = preg_replace( '/\n/', '', $parsedContent );
244
  }
245
 
246
-
247
  $parsedContent = apply_filters( 'pp_embed_parsed_content', $parsedContent, $urlData, self::get_oembed_attributes() );
248
 
249
  if ( !empty( $parsedContent ) ) {
@@ -252,6 +253,7 @@ KAMAL;
252
  'embed' => $parsedContent,
253
  'url' => $url,
254
  ] );
 
255
  $embed = apply_filters( 'embedpress:onAfterEmbed', $embed );
256
  //set_transient( $hash, $embed, HOUR_IN_SECONDS * 6);
257
  return $embed;
@@ -330,7 +332,7 @@ KAMAL;
330
  self::$collection = new DefaultProviderCollection();
331
  }
332
  if ( is_string( $reference ) ) {
333
- self::$collection->addProvider( $reference, EMBEDPRESS_NAMESPACE . "\\Providers\\{$className}" );
334
  return self::$collection;
335
  } elseif ( is_array( $reference ) ) {
336
  foreach ( $reference as $serviceProviderUrl ) {
@@ -609,7 +611,7 @@ KAMAL;
609
  if ( !$html ) {
610
  $html = str_replace( '{html}', self::get_embera_instance()->autoEmbed($url), $template );
611
  }
612
- return $html = str_replace( '{html}', $html, $template );
613
  }
614
 
615
  protected static function get_oembed_attributes() {
@@ -697,4 +699,27 @@ KAMAL;
697
  }
698
  }
699
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
700
  }
65
  // Register the new shortcode for embeds.
66
  add_shortcode( EMBEDPRESS_SHORTCODE, ['\\EmbedPress\\Shortcode', 'do_shortcode'] );
67
  add_shortcode( 'embed_oembed_html', ['\\EmbedPress\\Shortcode', 'do_shortcode'] );
68
+ add_shortcode( 'embedpress', ['\\EmbedPress\\Shortcode', 'do_shortcode'] );
69
  }
70
 
71
  /**
81
  */
82
 
83
  public static function do_shortcode( $attributes = [], $subject = null ) {
84
+ $plgSettings = Core::getSettings();
85
  $default = [];
86
  if ( $plgSettings->enableGlobalEmbedResize ) {
87
  $default = [
117
  // Converts any special HTML entities back to characters.
118
  $url = htmlspecialchars_decode( $url );
119
  $content_uid = md5( $url );
120
+ //$hash = 'embedpress_'.$content_uid . md5( implode( ':', array_values( $customAttributes)));
121
 
122
  // check if we have data cached
123
  //@TODO; add caching later and remove caching on settings save
129
  self::set_embera_settings(self::$ombed_attributes);
130
 
131
  // Identify what service provider the shortcode's link belongs to
 
132
 
133
+ $serviceProvider = self::get_oembed()->get_provider( $url );
134
  $urlData = self::get_url_data( $url, self::$ombed_attributes, $serviceProvider);
135
 
136
  // Sanitize the data
139
  if ( is_object( $urlData ) ) {
140
  $urlData->originalContent = $url;
141
  }
142
+
143
  $eventResults = apply_filters( 'embedpress:onBeforeEmbed', $urlData );
144
  if ( empty( $eventResults ) ) {
145
  return $subject;
244
  $parsedContent = preg_replace( '/\n/', '', $parsedContent );
245
  }
246
 
247
+
248
  $parsedContent = apply_filters( 'pp_embed_parsed_content', $parsedContent, $urlData, self::get_oembed_attributes() );
249
 
250
  if ( !empty( $parsedContent ) ) {
253
  'embed' => $parsedContent,
254
  'url' => $url,
255
  ] );
256
+ $embed = self::modify_spotify_content( $embed);
257
  $embed = apply_filters( 'embedpress:onAfterEmbed', $embed );
258
  //set_transient( $hash, $embed, HOUR_IN_SECONDS * 6);
259
  return $embed;
332
  self::$collection = new DefaultProviderCollection();
333
  }
334
  if ( is_string( $reference ) ) {
335
+ self::$collection->addProvider( $reference, $className );
336
  return self::$collection;
337
  } elseif ( is_array( $reference ) ) {
338
  foreach ( $reference as $serviceProviderUrl ) {
611
  if ( !$html ) {
612
  $html = str_replace( '{html}', self::get_embera_instance()->autoEmbed($url), $template );
613
  }
614
+ return str_replace( '{html}', $html, $template );
615
  }
616
 
617
  protected static function get_oembed_attributes() {
699
  }
700
  }
701
  }
702
+
703
+ public static function modify_spotify_content( $embed ) {
704
+ $should_modify = apply_filters( 'embedpress_should_modify_spotify', true);
705
+ $isSpotify = ( isset($embed->provider_name) && strtoupper( $embed->provider_name ) === 'SPOTIFY' ) || (isset( $embed->url) && isset( $embed->{$embed->url}) && isset( $embed->{$embed->url}['provider_name']) && strtoupper($embed->{$embed->url}['provider_name'] ) === 'SPOTIFY');
706
+ if ($should_modify && $isSpotify && isset( $embed->embed )
707
+ && preg_match( '/src=\"(.+?)\"/', $embed->embed, $match ) ) {
708
+ $options = (array)get_option(EMBEDPRESS_PLG_NAME . ':spotify');
709
+ // Parse the url to retrieve all its info like variables etc.
710
+ $url_full = $match[ 1 ];
711
+ $modified_url = str_replace( 'playlist-v2', 'playlist', $url_full);
712
+ if(isset( $options['theme'])){
713
+ if ( strpos( $modified_url, '?') !== false ) {
714
+ $modified_url .= '&theme='.sanitize_text_field( $options['theme']);
715
+ }else{
716
+ $modified_url .= '?theme='.sanitize_text_field( $options['theme']);
717
+ }
718
+ }
719
+
720
+ // Replaces the old url with the new one.
721
+ $embed->embed = str_replace( $url_full, $modified_url, $embed->embed );
722
+ }
723
+ return $embed;
724
+ }
725
  }
embedpress.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: EmbedPress lets you embed videos, images, posts, audio, maps and uplaoad PDF, DOC, PPT & all other types of content into your WordPress site with one-click and showcase it beautifully for the visitors. 100+ sources supported.
6
  * Author: WPDeveloper
7
  * Author URI: https://wpdeveloper.net
8
- * Version: 3.0.3
9
  * Text Domain: embedpress
10
  * Domain Path: /languages
11
  *
@@ -25,6 +25,7 @@ use EmbedPress\Core;
25
  use EmbedPress\CoreLegacy;
26
  use EmbedPress\Elementor\Embedpress_Elementor_Integration;
27
  use EmbedPress\Includes\Classes\Feature_Enhancer;
 
28
 
29
  defined('ABSPATH') or die("No direct script access allowed.");
30
 
@@ -92,7 +93,6 @@ register_activation_hook(__FILE__, 'onPluginActivationCallback');
92
  register_deactivation_hook(__FILE__, 'onPluginDeactivationCallback');
93
 
94
 
95
- if ( ! is_plugin_active('gutenberg/gutenberg.php')) {
96
  add_action( 'plugins_loaded', function() {
97
  do_action( 'embedpress_before_init' );
98
  } );
@@ -105,9 +105,11 @@ if ( ! is_plugin_active('gutenberg/gutenberg.php')) {
105
 
106
  $embedPressPlugin->initialize();
107
  new Feature_Enhancer();
108
- }
109
 
110
  if ( is_plugin_active('elementor/elementor.php')) {
111
  $embedPressElements = new Embedpress_Elementor_Integration();
112
  $embedPressElements->init();
113
  }
 
 
5
  * Description: EmbedPress lets you embed videos, images, posts, audio, maps and uplaoad PDF, DOC, PPT & all other types of content into your WordPress site with one-click and showcase it beautifully for the visitors. 100+ sources supported.
6
  * Author: WPDeveloper
7
  * Author URI: https://wpdeveloper.net
8
+ * Version: 3.0.4
9
  * Text Domain: embedpress
10
  * Domain Path: /languages
11
  *
25
  use EmbedPress\CoreLegacy;
26
  use EmbedPress\Elementor\Embedpress_Elementor_Integration;
27
  use EmbedPress\Includes\Classes\Feature_Enhancer;
28
+ use EmbedPress\Shortcode;
29
 
30
  defined('ABSPATH') or die("No direct script access allowed.");
31
 
93
  register_deactivation_hook(__FILE__, 'onPluginDeactivationCallback');
94
 
95
 
 
96
  add_action( 'plugins_loaded', function() {
97
  do_action( 'embedpress_before_init' );
98
  } );
105
 
106
  $embedPressPlugin->initialize();
107
  new Feature_Enhancer();
108
+
109
 
110
  if ( is_plugin_active('elementor/elementor.php')) {
111
  $embedPressElements = new Embedpress_Elementor_Integration();
112
  $embedPressElements->init();
113
  }
114
+
115
+ Shortcode::register();
includes.php CHANGED
@@ -22,7 +22,7 @@ if ( ! defined('EMBEDPRESS_PLG_NAME')) {
22
  }
23
 
24
  if ( ! defined('EMBEDPRESS_VERSION')) {
25
- define('EMBEDPRESS_VERSION', "3.0.3");
26
  /**
27
  * @deprecated 2.2.0
28
  */
22
  }
23
 
24
  if ( ! defined('EMBEDPRESS_VERSION')) {
25
+ define('EMBEDPRESS_VERSION', "3.0.4");
26
  /**
27
  * @deprecated 2.2.0
28
  */
providers.php CHANGED
@@ -15,8 +15,10 @@
15
  */
16
 
17
  $additionalServiceProviders = [
18
- 'GoogleMaps' => ["google.com", "google.com.*", "maps.google.com", "goo.gl", "google.co.*"],
19
- 'GoogleDocs' => ["docs.google.com"],
20
- 'Twitch' => ["twitch.tv", "clips.twitch.tv"],
21
- 'Giphy' => ["giphy.com", "i.giphy.com"],
 
 
22
  ];
15
  */
16
 
17
  $additionalServiceProviders = [
18
+ EMBEDPRESS_NAMESPACE . "\\Providers\\GoogleMaps" => ["google.com", "google.com.*", "maps.google.com", "goo.gl", "google.co.*"],
19
+ EMBEDPRESS_NAMESPACE . "\\Providers\\GoogleDocs" => ["docs.google.com"],
20
+ EMBEDPRESS_NAMESPACE . "\\Providers\\Twitch" => ["twitch.tv", "clips.twitch.tv"],
21
+ EMBEDPRESS_NAMESPACE . "\\Providers\\Giphy" => ["giphy.com", "i.giphy.com"],
22
+ EMBEDPRESS_NAMESPACE . "\\Providers\\Boomplay" => ["boomplay.com"],
23
+
24
  ];
readme.txt CHANGED
@@ -6,7 +6,7 @@ Tags: embed, embed youtube, gutenberg embed, pdf, doc, docs, ppt, elementor embe
6
  Requires at least: 4.6
7
  Tested up to: 5.7
8
  Requires PHP: 5.6
9
- Stable tag: 3.0.3
10
  License: GPLv3 or later
11
  License URI: https://opensource.org/licenses/GPL-3.0
12
 
@@ -301,6 +301,15 @@ Not at all. You can set up everything your team needs without any coding knowled
301
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
302
  and this project adheres to [Semantic Versioning](http://semver.org/).
303
 
 
 
 
 
 
 
 
 
 
304
  = [3.0.3] - 2021-06-08 =
305
  * Added: Compatibility with Wistia, Vimeo and Twitch Branding
306
  * Improved: JS for logo uploading and refactored some previous code.
6
  Requires at least: 4.6
7
  Tested up to: 5.7
8
  Requires PHP: 5.6
9
+ Stable tag: 3.0.4
10
  License: GPLv3 or later
11
  License URI: https://opensource.org/licenses/GPL-3.0
12
 
301
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
302
  and this project adheres to [Semantic Versioning](http://semver.org/).
303
 
304
+ = [3.0.4] - 2021-06-23 =
305
+ * Added: Shortcode feature for all editor
306
+ * Added: Boomplay Single track support
307
+ * Fixed: Conflict with Gutenberg plugin.
308
+ * Fixed: Youtube Playlist preview not working in Gutenberg and classic editor
309
+ * Fixed: Google map error in php 8
310
+ * Fixed: Spotify album and playlist not loading issue
311
+ * Few minor bug fix and improvements.
312
+
313
  = [3.0.3] - 2021-06-08 =
314
  * Added: Compatibility with Wistia, Vimeo and Twitch Branding
315
  * Improved: JS for logo uploading and refactored some previous code.