Photo Gallery by WD – Responsive Photo Gallery - Version 1.5.36

Version Description

  • Added: Ask a question button.
  • Fixed: Issue with lightbox opening.
Download this release

Release Info

Developer 10web
Plugin Icon 128x128 Photo Gallery by WD – Responsive Photo Gallery
Version 1.5.36
Comparing to
See all releases

Code changes from version 1.5.35 to 1.5.36

css/images/help.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="19" height="19" viewBox="0 0 19 19"><defs><style>.a{fill:#fff;}</style></defs><g transform="translate(-64 -64)"><path class="a" d="M73.5,64A9.5,9.5,0,1,0,83,73.5,9.5,9.5,0,0,0,73.5,64Zm0,17.388A7.888,7.888,0,1,1,81.388,73.5,7.89,7.89,0,0,1,73.5,81.388Z"/><path class="a" d="M357.759,276.863a3.676,3.676,0,0,0-4.733,0A2.891,2.891,0,0,0,352,279.054v.161a.17.17,0,0,0,.17.17h1.018a.17.17,0,0,0,.17-.17v-.161a2.07,2.07,0,0,1,4.071,0,1.716,1.716,0,0,1-1.19,1.542,2.37,2.37,0,0,0-1.1.867,2.427,2.427,0,0,0-.422,1.376v.456a.17.17,0,0,0,.17.17H355.9a.17.17,0,0,0,.17-.17v-.481a1.025,1.025,0,0,1,.655-.95,3.061,3.061,0,0,0,2.059-2.81,2.882,2.882,0,0,0-1.024-2.191Zm-3.215,8.807a.848.848,0,1,0,.848-.848A.848.848,0,0,0,354.545,285.67Z" transform="translate(-281.893 -207.504)"/></g></svg>
css/pricing.css CHANGED
@@ -448,18 +448,34 @@
448
  .bwg-topbar-container * {
449
  box-sizing: border-box;
450
  }
451
- .bwg-topbar {
452
  background-color: #FFFFFF;
453
  border: 1px solid #D0D0D080;
454
  border-radius: 7px;
455
  color: #000000;
456
- padding: 5px;
457
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
458
  .bwg-topbar-content {
459
  display: flex;
460
  justify-content: space-between;
461
  flex: auto;
462
- margin: 0 2px 0 0;
463
  padding: 10px 15px;
464
  height: 60px;
465
  }
@@ -486,17 +502,26 @@
486
  width: 170px;
487
  line-height: 50px;
488
  }
 
489
  .bwg-topbar-links * {
490
  font-size: 18px;
491
  }
492
  .bwg-topbar-links a,
493
  .bwg-topbar-links a:focus {
494
- text-decoration: none;
495
  align-self: center;
496
  box-shadow: none;
497
  color: #000000;
498
- cursor:pointer;
499
  }
 
 
 
 
 
 
 
 
 
500
  .bwg-topbar-links a:hover {
501
  opacity: 0.5;
502
  text-decoration: none;
@@ -737,4 +762,13 @@
737
  .bwg-add-ons .bwg-add-on .bwg-add-on-learn-more:hover {
738
  color: rgba(0, 115, 170, 0.8);
739
  }
740
- /* Add-ons end */
 
 
 
 
 
 
 
 
 
448
  .bwg-topbar-container * {
449
  box-sizing: border-box;
450
  }
451
+ .bwg-topbar-container .bwg-topbar {
452
  background-color: #FFFFFF;
453
  border: 1px solid #D0D0D080;
454
  border-radius: 7px;
455
  color: #000000;
456
+ padding: 10px;
457
  }
458
+
459
+ .bwg-topbar_cont {
460
+ display: flex;
461
+ }
462
+
463
+ .bwg-topbar-container .bwg-topbar.bwg-topbar_support_forum {
464
+ background-color: #4786FF;
465
+ margin-left: 20px;
466
+ }
467
+
468
+ .bwg-topbar-container .bwg-topbar.bwg-topbar_support_forum:hover
469
+ {
470
+ background-color: #3077FF;
471
+ opacity:1
472
+ }
473
+
474
  .bwg-topbar-content {
475
  display: flex;
476
  justify-content: space-between;
477
  flex: auto;
478
+ margin: 0 20px 0 0;
479
  padding: 10px 15px;
480
  height: 60px;
481
  }
502
  width: 170px;
503
  line-height: 50px;
504
  }
505
+
506
  .bwg-topbar-links * {
507
  font-size: 18px;
508
  }
509
  .bwg-topbar-links a,
510
  .bwg-topbar-links a:focus {
 
511
  align-self: center;
512
  box-shadow: none;
513
  color: #000000;
514
+ text-decoration: none;
515
  }
516
+
517
+ .bwg-topbar-links a.bwg-topbar_support_forum {
518
+ color: #fff;
519
+ }
520
+
521
+ .bwg-topbar-links a.bwg-topbar_support_forum .help_icon {
522
+ margin-right: 10px;
523
+ }
524
+
525
  .bwg-topbar-links a:hover {
526
  opacity: 0.5;
527
  text-decoration: none;
762
  .bwg-add-ons .bwg-add-on .bwg-add-on-learn-more:hover {
763
  color: rgba(0, 115, 170, 0.8);
764
  }
765
+ /* Add-ons end */
766
+ @media screen and (max-width: 450px) {
767
+ .bwg-topbar_cont {
768
+ display: block;
769
+ }
770
+
771
+ .bwg-topbar-container .bwg-topbar.bwg-topbar_support_forum {
772
+ margin-left: 0px;
773
+ }
774
+ }
framework/WDWLibrary.php CHANGED
@@ -2581,7 +2581,7 @@ class WDWLibrary {
2581
  }
2582
  $user_guide_link .= BWG()->utm_source;
2583
  $show_content = $show_content && !BWG()->is_pro;
2584
- $support_forum_link = 'https://wordpress.org/support/plugin/photo-gallery';
2585
  $premium_link = BWG()->plugin_link . BWG()->utm_source;
2586
  wp_enqueue_style(BWG()->prefix . '-roboto');
2587
  wp_enqueue_style(BWG()->prefix . '-pricing');
@@ -2609,71 +2609,74 @@ class WDWLibrary {
2609
  <?php
2610
  }
2611
  ?>
2612
- <div class="bwg-topbar bwg-topbar-links">
2613
- <div class="bwg-topbar-links-container">
2614
- <?php
2615
- if ( $show_guide_link ) {
2616
- ?>
2617
- <a href="<?php echo $user_guide_link; ?>" target="_blank">
2618
- <div class="bwg-topbar-links-item">
2619
- <?php _e('User guide', BWG()->prefix); ?>
2620
- </div>
2621
- </a>
2622
  <?php
2623
- }
2624
- if (!BWG()->is_pro) {
2625
  if ( $show_guide_link ) {
2626
  ?>
2627
- <span class="bwg-topbar-separator"></span>
 
 
 
 
2628
  <?php
2629
- }
2630
- ?>
2631
- <a href="<?php echo $support_forum_link; ?>" target="_blank">
2632
- <div class="bwg-topbar-links-item">
2633
- <?php _e('Support Forum', BWG()->prefix); ?>
2634
- </div>
2635
- </a>
2636
- <?php
2637
- }
2638
- ?>
2639
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2640
  </div>
2641
  </div>
2642
- <?php if ( $show_head ) {
2643
- $menus = array(
2644
- 'manage' => array(
2645
- 'href' => add_query_arg( array('page' => 'manage' . BWG()->menu_postfix ), admin_url('admin.php')),
2646
- 'name' => __('Forms', BWG()->prefix)
2647
- ),
2648
- 'addons' => array(
2649
- 'href' => add_query_arg( array('page' => 'addons' . BWG()->menu_postfix ), admin_url('admin.php')),
2650
- 'name' => __('Add-ons', BWG()->prefix)
2651
- ),
2652
- 'pricing' => array(
2653
- 'href' => add_query_arg( array('page' => 'pricing' . BWG()->menu_postfix ), admin_url('admin.php')),
2654
- 'name' => __('Premium Version', BWG()->prefix) .' <span class="bwg-upgrade">' . __('Upgrade', BWG()->prefix) . '</span>'
2655
- ),
2656
- );
2657
- ?>
2658
- <style>#wpbody-content>div:not(.wrap), .wrap .notice:not(#wd_bp_notice_cont) { display: none; }</style>
2659
- <div class="bwg-head">
2660
- <div><img src="<?php echo BWG()->plugin_url . '/images/FormMaker.png'; ?>"></div>
2661
- <ul class="bwg-breadcrumbs">
2662
- <?php
2663
- foreach ( $menus as $key => $item ) {
2664
- if ( BWG()->is_pro && $key == 'pricing' ) {
2665
- continue;
2666
- }
2667
- ?>
2668
- <li class="bwg-breadcrumb-item">
2669
- <a class="bwg-breadcrumb-item-link<?php echo ( $key == $page ) ? ' bwg-breadcrumb-item-link-active' : ''; ?>" href="<?php echo $item['href']; ?>"><?php echo $item['name']; ?></a>
2670
- </li>
2671
- <?php
2672
  }
2673
  ?>
2674
- </ul>
2675
- </div>
2676
- <?php } ?>
 
 
 
 
 
 
2677
  </div>
2678
  <?php
2679
  echo ob_get_clean();
2581
  }
2582
  $user_guide_link .= BWG()->utm_source;
2583
  $show_content = $show_content && !BWG()->is_pro;
2584
+ $support_forum_link = 'https://wordpress.org/support/plugin/photo-gallery/#new-post';
2585
  $premium_link = BWG()->plugin_link . BWG()->utm_source;
2586
  wp_enqueue_style(BWG()->prefix . '-roboto');
2587
  wp_enqueue_style(BWG()->prefix . '-pricing');
2609
  <?php
2610
  }
2611
  ?>
2612
+ <div class="bwg-topbar_cont">
2613
+ <div class="bwg-topbar bwg-topbar-links">
2614
+ <div class="bwg-topbar-links-container">
 
 
 
 
 
 
 
2615
  <?php
 
 
2616
  if ( $show_guide_link ) {
2617
  ?>
2618
+ <a href="<?php echo $user_guide_link; ?>" target="_blank" class="bwg-topbar_user_guid">
2619
+ <div class="bwg-topbar-links-item">
2620
+ <?php _e('User guide', BWG()->prefix); ?>
2621
+ </div>
2622
+ </a>
2623
  <?php
2624
+ }?>
2625
+ </div>
 
 
 
 
 
 
 
 
2626
  </div>
2627
+ <?php
2628
+ if (!BWG()->is_pro) {
2629
+ ?>
2630
+ <div class="bwg-topbar bwg-topbar-links bwg-topbar_support_forum">
2631
+ <div class="bwg-topbar-links-container">
2632
+ <a href="<?php echo $support_forum_link; ?>" target="_blank" class="bwg-topbar_support_forum">
2633
+ <div class="bwg-topbar-links-item">
2634
+ <img src="<?php echo BWG()->plugin_url . '/css/images/help.svg'; ?>" class="help_icon" />
2635
+ <?php _e('Ask a question', BWG()->prefix); ?>
2636
+ </div>
2637
+ </a>
2638
+ </div>
2639
+ </div>
2640
+ <?php
2641
+ }
2642
+ ?>
2643
  </div>
2644
  </div>
2645
+ <?php if ( $show_head ) {
2646
+ $menus = array(
2647
+ 'manage' => array(
2648
+ 'href' => add_query_arg( array('page' => 'manage' . BWG()->menu_postfix ), admin_url('admin.php')),
2649
+ 'name' => __('Forms', BWG()->prefix)
2650
+ ),
2651
+ 'addons' => array(
2652
+ 'href' => add_query_arg( array('page' => 'addons' . BWG()->menu_postfix ), admin_url('admin.php')),
2653
+ 'name' => __('Add-ons', BWG()->prefix)
2654
+ ),
2655
+ 'pricing' => array(
2656
+ 'href' => add_query_arg( array('page' => 'pricing' . BWG()->menu_postfix ), admin_url('admin.php')),
2657
+ 'name' => __('Premium Version', BWG()->prefix) .' <span class="bwg-upgrade">' . __('Upgrade', BWG()->prefix) . '</span>'
2658
+ ),
2659
+ );
2660
+ ?>
2661
+ <style>#wpbody-content>div:not(.wrap), .wrap .notice:not(#wd_bp_notice_cont) { display: none; }</style>
2662
+ <div class="bwg-head">
2663
+ <div><img src="<?php echo BWG()->plugin_url . '/images/FormMaker.png'; ?>"></div>
2664
+ <ul class="bwg-breadcrumbs">
2665
+ <?php
2666
+ foreach ( $menus as $key => $item ) {
2667
+ if ( BWG()->is_pro && $key == 'pricing' ) {
2668
+ continue;
 
 
 
 
 
 
2669
  }
2670
  ?>
2671
+ <li class="bwg-breadcrumb-item">
2672
+ <a class="bwg-breadcrumb-item-link<?php echo ( $key == $page ) ? ' bwg-breadcrumb-item-link-active' : ''; ?>" href="<?php echo $item['href']; ?>"><?php echo $item['name']; ?></a>
2673
+ </li>
2674
+ <?php
2675
+ }
2676
+ ?>
2677
+ </ul>
2678
+ </div>
2679
+ <?php } ?>
2680
  </div>
2681
  <?php
2682
  echo ob_get_clean();
frontend/models/BWGModelGalleryBox.php CHANGED
@@ -105,6 +105,7 @@ class BWGModelGalleryBox {
105
  $images = array();
106
  if ( !empty($rows) ) {
107
  foreach ( $rows as $row ) {
 
108
  $row->pure_image_url = $row->image_url;
109
  $row->pure_thumb_url = $row->thumb_url;
110
  if ( strpos($row->filetype, 'EMBED') === FALSE ) {
105
  $images = array();
106
  if ( !empty($rows) ) {
107
  foreach ( $rows as $row ) {
108
+ $row->alt = esc_html($row->alt);
109
  $row->pure_image_url = $row->image_url;
110
  $row->pure_thumb_url = $row->thumb_url;
111
  if ( strpos($row->filetype, 'EMBED') === FALSE ) {
js/bwg.js CHANGED
@@ -153,6 +153,8 @@ jQuery(document).ready(function () {
153
  var value = jQuery(this).val();
154
  show_hide_extended_album_view( value );
155
  });
 
 
156
  /*jQuery( window ). scroll(function(){
157
  if( jQuery( window ).scrollTop() >= jQuery( 'div.wd-page-title' ).offset().top ) {
158
  jQuery( '#search_in_options_container' ).addClass('fixed');
153
  var value = jQuery(this).val();
154
  show_hide_extended_album_view( value );
155
  });
156
+
157
+ jQuery('#bwg_ask_question').parent().attr('target', '_blank');
158
  /*jQuery( window ). scroll(function(){
159
  if( jQuery( window ).scrollTop() >= jQuery( 'div.wd-page-title' ).offset().top ) {
160
  jQuery( '#search_in_options_container' ).addClass('fixed');
photo-gallery.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Photo Gallery
4
  * Plugin URI: https://10web.io/plugins/wordpress-photo-gallery/?utm_source=photo_gallery&utm_medium=free_plugin
5
  * Description: This plugin is a fully responsive gallery plugin with advanced functionality. It allows having different image galleries for your posts and pages. You can create unlimited number of galleries, combine them into albums, and provide descriptions and tags.
6
- * Version: 1.5.35
7
  * Author: Photo Gallery Team
8
  * Author URI: https://10web.io/plugins/?utm_source=photo_gallery&utm_medium=free_plugin
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
@@ -84,8 +84,8 @@ final class BWG {
84
  $this->plugin_dir = WP_PLUGIN_DIR . "/" . plugin_basename(dirname(__FILE__));
85
  $this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
86
  $this->main_file = plugin_basename(__FILE__);
87
- $this->plugin_version = '1.5.35';
88
- $this->db_version = '1.5.35';
89
  $this->prefix = 'bwg';
90
  $this->nicename = __('Photo Gallery', $this->prefix);
91
 
@@ -248,6 +248,27 @@ final class BWG {
248
  require_once ($this->plugin_dir . '/framework/WDWSitemap.php');
249
  add_filter('wd_seo_sitemap_images', array( WDWSitemap::instance(), 'add_wpseo_xml_sitemap_images'), 10, 2);
250
  add_filter('wpseo_sitemap_urlimages', array( WDWSitemap::instance(), 'add_wpseo_xml_sitemap_images'), 10, 2);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  }
252
 
253
  public function enqueue_divi_bulder_assets() {
@@ -490,6 +511,17 @@ final class BWG {
490
 
491
  add_submenu_page(NULL, __('Uninstall', $this->prefix), __('Uninstall', $this->prefix), 'manage_options', 'uninstall_' . $this->prefix, array($this , 'admin_pages'));
492
  add_submenu_page(NULL, __('Generate Shortcode', $this->prefix), __('Generate Shortcode', $this->prefix), $permissions, 'shortcode_' . $this->prefix, array($this , 'admin_pages'));
 
 
 
 
 
 
 
 
 
 
 
493
  }
494
 
495
  /**
@@ -1892,7 +1924,7 @@ final class BWG {
1892
  if ( plugin_basename(__FILE__) == $file ) {
1893
  $plugin_url = "https://wordpress.org/support/plugin/photo-gallery";
1894
  $prefix = $this->prefix;
1895
- $meta_fields[] = "<a href='" . $plugin_url . "' target='_blank'>" . __('Support Forum', $prefix) . "</a>";
1896
  $meta_fields[] = "<a href='" . $plugin_url . "/reviews#new-post' target='_blank' title='" . __('Rate', $prefix) . "'>
1897
  <i class='wdi-rate-stars'>"
1898
  . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
3
  * Plugin Name: Photo Gallery
4
  * Plugin URI: https://10web.io/plugins/wordpress-photo-gallery/?utm_source=photo_gallery&utm_medium=free_plugin
5
  * Description: This plugin is a fully responsive gallery plugin with advanced functionality. It allows having different image galleries for your posts and pages. You can create unlimited number of galleries, combine them into albums, and provide descriptions and tags.
6
+ * Version: 1.5.36
7
  * Author: Photo Gallery Team
8
  * Author URI: https://10web.io/plugins/?utm_source=photo_gallery&utm_medium=free_plugin
9
  * License: GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
84
  $this->plugin_dir = WP_PLUGIN_DIR . "/" . plugin_basename(dirname(__FILE__));
85
  $this->plugin_url = plugins_url(plugin_basename(dirname(__FILE__)));
86
  $this->main_file = plugin_basename(__FILE__);
87
+ $this->plugin_version = '1.5.36';
88
+ $this->db_version = '1.5.36';
89
  $this->prefix = 'bwg';
90
  $this->nicename = __('Photo Gallery', $this->prefix);
91
 
248
  require_once ($this->plugin_dir . '/framework/WDWSitemap.php');
249
  add_filter('wd_seo_sitemap_images', array( WDWSitemap::instance(), 'add_wpseo_xml_sitemap_images'), 10, 2);
250
  add_filter('wpseo_sitemap_urlimages', array( WDWSitemap::instance(), 'add_wpseo_xml_sitemap_images'), 10, 2);
251
+
252
+ if ( !$this->is_pro ) {
253
+ /* Add wordpress.org support custom link in plugin page */
254
+ add_filter('plugin_action_links_' . plugin_basename(__FILE__), array( $this, 'add_ask_question_links' ));
255
+ }
256
+ }
257
+
258
+ /**
259
+ * Add plugin action links.
260
+ *
261
+ * Add a link to the settings page on the plugins.php page.
262
+ *
263
+ * @since 1.0.0
264
+ *
265
+ * @param array $links List of existing plugin action links.
266
+ * @return array List of modified plugin action links.
267
+ */
268
+ function add_ask_question_links ( $links ) {
269
+ $slug = 'photo-gallery';
270
+ $fm_ask_question_link = array('<a href="https://wordpress.org/support/plugin/' . $slug . '/#new-post" target="_blank">' . __('Help', $this->prefix) . '</a>');
271
+ return array_merge( $links, $fm_ask_question_link );
272
  }
273
 
274
  public function enqueue_divi_bulder_assets() {
511
 
512
  add_submenu_page(NULL, __('Uninstall', $this->prefix), __('Uninstall', $this->prefix), 'manage_options', 'uninstall_' . $this->prefix, array($this , 'admin_pages'));
513
  add_submenu_page(NULL, __('Generate Shortcode', $this->prefix), __('Generate Shortcode', $this->prefix), $permissions, 'shortcode_' . $this->prefix, array($this , 'admin_pages'));
514
+
515
+ if ( !$this->is_pro ) {
516
+ /* Custom link to wordpress.org*/
517
+ global $submenu;
518
+ $slug = 'photo-gallery';
519
+ $submenu[$parent_slug][] = array(
520
+ '<div id="bwg_ask_question">' . __('Ask a question', $this->prefix) . '</div>',
521
+ 'manage_options',
522
+ 'https://wordpress.org/support/plugin/' . $slug . '/#new-post',
523
+ );
524
+ }
525
  }
526
 
527
  /**
1924
  if ( plugin_basename(__FILE__) == $file ) {
1925
  $plugin_url = "https://wordpress.org/support/plugin/photo-gallery";
1926
  $prefix = $this->prefix;
1927
+ $meta_fields[] = "<a href='" . $plugin_url . "/#new-post' target='_blank'>" . __('Ask a question', $prefix) . "</a>";
1928
  $meta_fields[] = "<a href='" . $plugin_url . "/reviews#new-post' target='_blank' title='" . __('Rate', $prefix) . "'>
1929
  <i class='wdi-rate-stars'>"
1930
  . "<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: webdorado,wdsupport,photogallerysupport,10web
3
  Tags: gallery, photo gallery, image gallery, responsive gallery, wordpress gallery plugin, photo albums, gallery slider, gallery lightbox, wordpress photo gallery plugin, fullscreen gallery, watermarking, video gallery
4
  Requires at least: 3.4
5
  Tested up to: 5.2
6
- Stable tag: 1.5.35
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -282,6 +282,10 @@ Choose whether to display random or the first/last specific number of images.
282
 
283
  == Changelog ==
284
 
 
 
 
 
285
  = 1.5.35 =
286
  * Added: Gallery, Gallery group, Tag edit links in widget for Elementor.
287
  * Improved: Add gallery images to the XML generated with Yoast or Seo by 10Web.
3
  Tags: gallery, photo gallery, image gallery, responsive gallery, wordpress gallery plugin, photo albums, gallery slider, gallery lightbox, wordpress photo gallery plugin, fullscreen gallery, watermarking, video gallery
4
  Requires at least: 3.4
5
  Tested up to: 5.2
6
+ Stable tag: 1.5.36
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
282
 
283
  == Changelog ==
284
 
285
+ = 1.5.36 =
286
+ * Added: Ask a question button.
287
+ * Fixed: Issue with lightbox opening.
288
+
289
  = 1.5.35 =
290
  * Added: Gallery, Gallery group, Tag edit links in widget for Elementor.
291
  * Improved: Add gallery images to the XML generated with Yoast or Seo by 10Web.