Page Builder: Live Composer – drag and drop website builder (visual front end site editor) - Version 1.4.4

Version Description

  • May 23rd 2019 =
  • Bug: WordPress automatically create a page when defining the image title in LC.
  • New text shortcode: [dslc_bloghome] Outputs the blog index page URL ( home_url() ).
  • New text shortcode: [dslc_archive_heading] Heading for the archive pages.
  • New text shortcode: [nextpost_url] and [prevpost_url] Output an URL to the next previous post the same way as next post link works.
  • New text shortcode: [dslc_postpagination] Outputs single post pagination.
Download this release

Release Info

Developer LiveComposer
Plugin Icon 128x128 Page Builder: Live Composer – drag and drop website builder (visual front end site editor)
Version 1.4.4
Comparing to
See all releases

Code changes from version 1.4.3 to 1.4.4

ds-live-composer.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin URI: https://www.livecomposerplugin.com
5
  * Description: Front-end page builder for WordPress with drag and drop editing. Build PRO responsive websites and landing pages. Visually customize any page element.
6
  * Author: Live Composer Team
7
- * Version: 1.4.3
8
  * Author URI: https://livecomposerplugin.com
9
  * License: GPL3
10
  * License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -41,7 +41,7 @@ if ( ! defined( 'DS_LIVE_COMPOSER_VER' ) && version_compare( PHP_VERSION, '5.3.0
41
  * Constants
42
  */
43
 
44
- define( 'DS_LIVE_COMPOSER_VER', '1.4.3' );
45
 
46
  define( 'DS_LIVE_COMPOSER_SHORTNAME', __( 'Live Composer', 'live-composer-page-builder' ) );
47
  define( 'DS_LIVE_COMPOSER_BASENAME', plugin_basename( __FILE__ ) );
4
  * Plugin URI: https://www.livecomposerplugin.com
5
  * Description: Front-end page builder for WordPress with drag and drop editing. Build PRO responsive websites and landing pages. Visually customize any page element.
6
  * Author: Live Composer Team
7
+ * Version: 1.4.4
8
  * Author URI: https://livecomposerplugin.com
9
  * License: GPL3
10
  * License URI: https://www.gnu.org/licenses/gpl-2.0.html
41
  * Constants
42
  */
43
 
44
+ define( 'DS_LIVE_COMPOSER_VER', '1.4.4' );
45
 
46
  define( 'DS_LIVE_COMPOSER_SHORTNAME', __( 'Live Composer', 'live-composer-page-builder' ) );
47
  define( 'DS_LIVE_COMPOSER_BASENAME', plugin_basename( __FILE__ ) );
includes/shortcodes.php CHANGED
@@ -202,6 +202,22 @@ function dslc_sc_page_title() {
202
  }
203
  add_shortcode( 'dslc_page_title', 'dslc_sc_page_title' );
204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  /**
206
  * Add Shortcode:
207
  * [dslc_authorbio]
@@ -243,4 +259,163 @@ function dslc_sc_commentscount() {
243
  $output = $comments;
244
 
245
  return $output;
246
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
  }
203
  add_shortcode( 'dslc_page_title', 'dslc_sc_page_title' );
204
 
205
+
206
+ /**
207
+ * Add Shortcode:
208
+ * [dslc_bloghome]
209
+ *
210
+ * Outputs the blog index page URL
211
+ * http://codex.wordpress.org/Function_Reference/get_option
212
+ */
213
+ add_shortcode( 'dslc_bloghome', 'dslc_bloghome_shortcode' );
214
+ function dslc_bloghome_shortcode() {
215
+ // Code
216
+ $output = home_url();
217
+
218
+ return $output;
219
+ }
220
+
221
  /**
222
  * Add Shortcode:
223
  * [dslc_authorbio]
259
  $output = $comments;
260
 
261
  return $output;
262
+ }
263
+
264
+ /**
265
+ * Add Shortcode:
266
+ * [dslc_archive_heading]
267
+ *
268
+ * Outputs archive page headings.
269
+ */
270
+ add_shortcode( 'dslc_archive_heading', 'dslc_archive_heading_shortcode' );
271
+ function dslc_archive_heading_shortcode() {
272
+
273
+ $output = '';
274
+
275
+ if ( DS_LIVE_COMPOSER_ACTIVE ) :
276
+ $output .= __( 'This heading will be automatically generated by a theme', 'live-composer-page-builder' );
277
+
278
+ elseif ( is_category() ) :
279
+ $output .= sprintf( __( 'Category Archives: %s', 'live-composer-page-builder' ), '<span>' . single_cat_title( '', false ) . '</span>' );
280
+
281
+ elseif ( is_tag() ) :
282
+ $output .= sprintf( __( 'Tag Archives: %s', 'live-composer-page-builder' ), '<span>' . single_tag_title( '', false ) . '</span>' );
283
+
284
+ elseif ( is_author() ) :
285
+ /* Queue the first post, that way we know
286
+ * what author we're dealing with (if that is the case).
287
+ */
288
+ the_post();
289
+ $output .= sprintf( __( 'Author Archives: %s', 'live-composer-page-builder' ), '<span class="vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '" title="' . esc_attr( get_the_author() ) . '" rel="me">' . get_the_author() . '</a></span>' );
290
+ /* Since we called the_post() above, we need to
291
+ * rewind the loop back to the beginning that way
292
+ * we can run the loop properly, in full.
293
+ */
294
+ rewind_posts();
295
+
296
+ elseif ( is_day() ) :
297
+ $output .= sprintf( __( 'Daily Archives: %s', 'live-composer-page-builder' ), '<span>' . get_the_date() . '</span>' );
298
+
299
+ elseif ( is_month() ) :
300
+ $output .= sprintf( __( 'Monthly Archives: %s', 'live-composer-page-builder' ), '<span>' . get_the_date( 'F Y' ) . '</span>' );
301
+
302
+ elseif ( is_year() ) :
303
+ $output .= sprintf( __( 'Yearly Archives: %s', 'live-composer-page-builder' ), '<span>' . get_the_date( 'Y' ) . '</span>' );
304
+
305
+ elseif ( is_tax( 'post_format', 'post-format-aside' ) ) :
306
+ $output .= __( 'Asides', 'live-composer-page-builder' );
307
+
308
+ elseif ( is_tax( 'post_format', 'post-format-image' ) ) :
309
+ $output .= __( 'Images', 'live-composer-page-builder' );
310
+
311
+ elseif ( is_tax( 'post_format', 'post-format-video' ) ) :
312
+ $output .= __( 'Videos', 'live-composer-page-builder' );
313
+
314
+ elseif ( is_tax( 'post_format', 'post-format-quote' ) ) :
315
+ $output .= __( 'Quotes', 'live-composer-page-builder' );
316
+
317
+ elseif ( is_tax( 'post_format', 'post-format-link' ) ) :
318
+ $output .= __( 'Links', 'live-composer-page-builder' );
319
+
320
+ elseif ( is_tax() ) :
321
+ $output .= sprintf( __( 'Category Archives: %s', 'live-composer-page-builder' ), '<span>' . single_cat_title( '', false ) . '</span>' );
322
+
323
+ elseif ( is_search() ) : // special title for search result page
324
+ // get number of posts found for search query
325
+ global $wp_query;
326
+ $search_results_count = $wp_query->found_posts;
327
+
328
+ $output .= __( 'You are searching for: ', 'live-composer-page-builder' );
329
+ $output .= '<strong>' . get_query_var( 's' ) . '</strong>. <br />';
330
+
331
+ if ( 1 == $search_results_count ) {
332
+ $output .= __( 'There is one post that match your criteria...', 'live-composer-page-builder' );
333
+ } elseif ( 1 < $search_results_count ) {
334
+ $output .= sprintf( __( 'Here are %s posts that match your criteria...', 'live-composer-page-builder' ), '<span>' . $search_results_count . '</span>' );
335
+ } else {
336
+ $output .= __( 'Looks like nothing was found. Sorry.', 'live-composer-page-builder' );
337
+ }
338
+
339
+ elseif ( is_front_page() ) :
340
+ $output .= get_bloginfo( 'description' );
341
+
342
+ else :
343
+ $output .= __( 'Archives', 'live-composer-page-builder' );
344
+
345
+ endif;
346
+
347
+ return $output;
348
+ }
349
+
350
+ /**
351
+ * Add Shortcode: [nextpost_url] [prevpost_url]
352
+ * Output an URL to the next previous post the same way as next post link works
353
+ * https://codex.wordpress.org/Function_Reference/get_next_posts_link
354
+ * http://wordpress.org/support/topic/nextpreviews-post-url-only
355
+ * https://codex.wordpress.org/Function_Reference/get_adjacent_post
356
+ */
357
+
358
+ // [nextpost_url]
359
+ add_shortcode( 'dslc_nextpost_url', 'dslc_nextpost_url_shortcode' );
360
+ function dslc_nextpost_url_shortcode( $atts ) {
361
+
362
+ // Attributes
363
+ extract( shortcode_atts( array(
364
+ 'previous' => false,
365
+ // Whether to retrieve previous or next post.
366
+ 'in_same_cat' => false,
367
+ // Whether post should be in same category. Whether post should be in same category.
368
+ 'excluded_categories' => '',
369
+ // Excluded categories IDs.
370
+ ), $atts ) );
371
+
372
+ // Code
373
+ $output = get_permalink( get_adjacent_post( $in_same_cat, $excluded_categories, $previous ) );
374
+
375
+ // for your reference: get_adjacent_post( $in_same_cat, $excluded_categories, $previous )
376
+ return $output;
377
+ }
378
+
379
+ // [prevpost_url]
380
+ add_shortcode( 'dslc_prevpost_url', 'dslc_prevpost_url_shortcode' );
381
+ function dslc_prevpost_url_shortcode( $atts ) {
382
+
383
+ // Attributes
384
+ extract( shortcode_atts( array(
385
+ 'previous' => true,
386
+ // Whether to retrieve previous or next post.
387
+ 'in_same_cat' => false,
388
+ // Whether post should be in same category. Whether post should be in same category.
389
+ 'excluded_categories' => '',
390
+ // Excluded categories IDs.
391
+ ), $atts ) );
392
+
393
+ // Code
394
+ $output = get_permalink( get_adjacent_post( $in_same_cat, $excluded_categories, $previous ) );
395
+
396
+ // for your reference: get_adjacent_post( $in_same_cat, $excluded_categories, $previous )
397
+ return $output;
398
+ }
399
+
400
+ /**
401
+ * Add Shortcode:
402
+ * [dslc_postpagination]
403
+ *
404
+ * Outputs single post pagination
405
+ */
406
+ add_shortcode( 'dslc_postpagination', 'dslc_postpagination_shortcode' );
407
+ function dslc_postpagination_shortcode() {
408
+ $output = wp_link_pages( array(
409
+ 'before' => '<div class="page-links"><span class="page-links__title">' . __( 'Pages:', 'live-composer-page-builder' ) . '</span><span class="page-numbers">',
410
+ 'after' => '</span></div>',
411
+ 'echo' => 0,
412
+ ) );
413
+
414
+ if ( ! $output ) {
415
+ $output = ' ';
416
+ // to prevent "Looks like there is no content" message
417
+ // in the Live Composer
418
+ }
419
+
420
+ return $output;
421
+ }
js/builder/builder.modalwindow.functions.js CHANGED
@@ -69,8 +69,6 @@
69
 
70
  if ( typeof dslcDebug !== 'undefined' && dslcDebug ) console.log( 'dslc_hide_modal' );
71
 
72
- console.log( 'dslc_hide_modal' );
73
-
74
  // Vars
75
  var modal = jQuery(modal);
76
 
69
 
70
  if ( typeof dslcDebug !== 'undefined' && dslcDebug ) console.log( 'dslc_hide_modal' );
71
 
 
 
72
  // Vars
73
  var modal = jQuery(modal);
74
 
modules/image/module.php CHANGED
@@ -831,11 +831,8 @@ class DSLC_Image extends DSLC_Module {
831
  $the_image = $options['image'];
832
 
833
  if ( empty( $options['image'] ) ) {
834
-
835
  $the_image = $options['image_url'];
836
-
837
  } else {
838
-
839
  if ( ! empty( $options['resize_width'] ) || ! empty( $options['resize_height'] ) ) {
840
 
841
  $resize = true;
@@ -868,7 +865,7 @@ class DSLC_Image extends DSLC_Module {
868
 
869
  if ( strlen( $options['image_title'] ) === 0 ) {
870
  $options['image_title'] = $image_title;
871
- } elseif ( $options['image_title'] !== $image_title ) {
872
  $image = array();
873
  $image['ID'] = $image_id;
874
  $image['post_title'] = $options['image_title'];
@@ -879,7 +876,7 @@ class DSLC_Image extends DSLC_Module {
879
  ?>
880
 
881
  <?php
882
-
883
 
884
  $parsed = parse_url( $anchor_href );
885
  if ( '/' === $anchor_href || ! empty( $parsed['scheme'] ) ) {
@@ -899,7 +896,7 @@ class DSLC_Image extends DSLC_Module {
899
  $srcset = 'srcset="' . esc_attr( $img_srcset ) . '"';
900
  $sizes = 'sizes="' . esc_attr( $img_sizes ) . '"';
901
  }
902
-
903
  ?>
904
 
905
  <?php if ( 'none' !== $options['link_type'] ) : ?>
@@ -927,16 +924,11 @@ class DSLC_Image extends DSLC_Module {
927
  echo apply_filters( 'dslc_text_block_render', $output_content );
928
  ?>
929
  <?php endif; ?>
930
-
931
  </div>
932
-
933
  <?php endif; ?>
934
-
935
  <?php endif; ?>
936
-
937
  </div><!-- .dslc-image -->
938
  </div>
939
  <?php
940
-
941
  }
942
  }
831
  $the_image = $options['image'];
832
 
833
  if ( empty( $options['image'] ) ) {
 
834
  $the_image = $options['image_url'];
 
835
  } else {
 
836
  if ( ! empty( $options['resize_width'] ) || ! empty( $options['resize_height'] ) ) {
837
 
838
  $resize = true;
865
 
866
  if ( strlen( $options['image_title'] ) === 0 ) {
867
  $options['image_title'] = $image_title;
868
+ } elseif ( ! empty( $image_id ) && $options['image_title'] !== $image_title ) {
869
  $image = array();
870
  $image['ID'] = $image_id;
871
  $image['post_title'] = $options['image_title'];
876
  ?>
877
 
878
  <?php
879
+
880
 
881
  $parsed = parse_url( $anchor_href );
882
  if ( '/' === $anchor_href || ! empty( $parsed['scheme'] ) ) {
896
  $srcset = 'srcset="' . esc_attr( $img_srcset ) . '"';
897
  $sizes = 'sizes="' . esc_attr( $img_sizes ) . '"';
898
  }
899
+
900
  ?>
901
 
902
  <?php if ( 'none' !== $options['link_type'] ) : ?>
924
  echo apply_filters( 'dslc_text_block_render', $output_content );
925
  ?>
926
  <?php endif; ?>
 
927
  </div>
 
928
  <?php endif; ?>
 
929
  <?php endif; ?>
 
930
  </div><!-- .dslc-image -->
931
  </div>
932
  <?php
 
933
  }
934
  }
modules/projects/functions.php CHANGED
@@ -7,10 +7,10 @@ if ( ! defined( 'ABSPATH' ) ) {
7
  }
8
 
9
  /*
10
- * All Staff
11
  */
12
 
13
- $args = array(
14
  'post_type' => 'dslc_staff',
15
  'posts_per_page' => -1,
16
  'post_status' => 'publish'
@@ -31,10 +31,10 @@ foreach ( $staffs as $staff ) {
31
  }
32
 
33
  /*
34
- * All Partners
35
  */
36
 
37
- $args = array(
38
  'post_type' => 'dslc_partners',
39
  'posts_per_page' => -1,
40
  'post_status' => 'publish'
7
  }
8
 
9
  /*
10
+ * All Staff
11
  */
12
 
13
+ $args = array(
14
  'post_type' => 'dslc_staff',
15
  'posts_per_page' => -1,
16
  'post_status' => 'publish'
31
  }
32
 
33
  /*
34
+ * All Partners
35
  */
36
 
37
+ $args = array(
38
  'post_type' => 'dslc_partners',
39
  'posts_per_page' => -1,
40
  'post_status' => 'publish'
modules/projects/module.php CHANGED
@@ -2889,14 +2889,14 @@ class DSLC_Projects extends DSLC_Module {
2889
  }
2890
 
2891
  function dslc_module_projects_output( $atts, $content = null ) {
2892
-
2893
  // Uncode module options passed as serialized content.
2894
  $data = @unserialize( $content );
2895
 
2896
  if ( $data !== false ) {
2897
  $options = unserialize( $content );
2898
  } else {
2899
- $fixed_data = preg_replace_callback( '!s:(\d+):"(.*?)";!', function( $match ) {
2900
  return ( $match[1] == strlen( $match[2] ) ) ? $match[0] : 's:' . strlen( $match[2] ) . ':"' . $match[2] . '";';
2901
  }, $content );
2902
  $options = unserialize( $fixed_data );
@@ -3097,7 +3097,7 @@ function dslc_module_projects_output( $atts, $content = null ) {
3097
  if ( $show_heading || $show_filters || $show_carousel_arrows ) {
3098
  $show_header = true;
3099
  }
3100
-
3101
  if ( $show_carousel_arrows && ( $options['arrows_position'] == 'aside' ) ) {
3102
  $container_class .= 'dslc-carousel-arrow-aside ';
3103
  }
@@ -3218,7 +3218,7 @@ function dslc_module_projects_output( $atts, $content = null ) {
3218
  if ( $dslc_query->have_posts() ) :
3219
 
3220
  ?><div class="<?php echo $container_class; ?>">
3221
-
3222
  <?php if ( $show_carousel_arrows && ( $options['arrows_position'] == 'aside' ) ) : ?>
3223
  <a href="#" class="dslc-carousel-nav-prev position-aside"><span class="dslc-icon-chevron-left"></span></a>
3224
  <?php endif; ?>
@@ -3276,308 +3276,301 @@ while ( $dslc_query->have_posts() ) : $dslc_query->the_post();
3276
 
3277
  <div class="<?php echo $element_class . $columns_class . $extra_class; ?>" data-cats="<?php echo $project_cats_data; ?>">
3278
 
3279
- <?php if ( $post_elements == 'all' || in_array( 'thumbnail', $post_elements ) ) : ?>
3280
-
3281
- <?php
3282
- /**
3283
- * Manual Resize
3284
- */
3285
-
3286
- $manual_resize = false;
3287
- if ( isset( $options['thumb_resize_height'] ) && ! empty( $options['thumb_resize_height'] ) || isset( $options['thumb_resize_width_manual'] ) && ! empty( $options['thumb_resize_width_manual'] ) ) {
3288
-
3289
- $manual_resize = true;
3290
- $thumb_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' );
3291
- $thumb_url = $thumb_url[0];
3292
-
3293
- $thumb_alt = get_post_meta( get_post_thumbnail_id(), '_wp_attachment_image_alt', true );
3294
- if ( ! $thumb_alt ) { $thumb_alt = '';
3295
- }
3296
-
3297
- $thumb_title = get_the_title( get_post_thumbnail_id() );
3298
- if ( ! $thumb_title ) { $thumb_title = ''; }
3299
-
3300
- $resize_width = false;
3301
- $resize_height = false;
3302
-
3303
- if ( isset( $options['thumb_resize_width_manual'] ) && ! empty( $options['thumb_resize_width_manual'] ) ) {
3304
- $resize_width = $options['thumb_resize_width_manual'];
3305
- }
3306
-
3307
- if ( isset( $options['thumb_resize_height'] ) && ! empty( $options['thumb_resize_height'] ) ) {
3308
- $resize_height = $options['thumb_resize_height'];
3309
- }
3310
- }
3311
- ?>
3312
 
3313
- <?php if ( has_post_thumbnail() ) : ?>
 
3314
 
3315
- <div class="dslc-post-thumb dslc-project-thumb dslc-on-hover-anim">
3316
- <div class="dslc-project-thumb-inner dslca-post-thumb">
3317
- <?php
3318
- $anchor_class = '';
3319
- $anchor_href = $the_project_url;
3320
 
3321
- if ( 'lightbox' === $options['link_type'] ) {
3322
- $anchor_class = 'dslc-lightbox-image';
3323
- $anchor_href = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' );
3324
- $anchor_href = $anchor_href[0];
3325
- }
3326
- ?>
3327
 
3328
- <?php if ( $manual_resize ) : ?>
3329
- <a href="<?php echo $anchor_href; ?>" class="<?php echo $anchor_class; ?>" target="<?php echo $the_project_url_target; ?>"><img src="<?php $res_img = dslc_aq_resize( $thumb_url, $resize_width, $resize_height, true );
3330
- echo $res_img; ?>" alt="<?php echo $thumb_alt; ?>" title="<?php echo $thumb_title; ?>" /></a>
3331
- <?php else : ?>
3332
- <a href="<?php echo $anchor_href; ?>" class="<?php echo $anchor_class; ?>" target="<?php echo $the_project_url_target; ?>"><?php the_post_thumbnail( 'full', array( 'title' => get_the_title( get_post_thumbnail_id() ) ) ); ?></a>
3333
- <?php endif; ?>
3334
- </div><!-- .dslc-project-thumb-inner -->
3335
 
3336
- <?php if ( ( $options['main_location'] == 'inside' || $options['main_location'] == 'inside_visible' ) && ( $post_elements == 'all' || in_array( 'title', $post_elements ) || in_array( 'categories', $post_elements ) || in_array( 'excerpt', $post_elements ) || in_array( 'button', $post_elements ) ) ) : ?>
3337
 
3338
- <div class="dslc-project-main dslc-init-<?php echo $options['main_position']; ?> <?php if ( $options['main_location'] == 'inside_visible' ) { echo 'dslc-project-main-visible';} ?> dslc-on-hover-anim-target dslc-anim-<?php echo $options['css_anim_hover']; ?>" data-dslc-anim="<?php echo $options['css_anim_hover']; ?>" data-dslc-anim-speed="<?php echo $options['css_anim_speed']; ?>">
 
 
 
 
3339
 
3340
- <div class="dslc-project-main-inner dslc-init-target">
 
 
 
 
 
3341
 
3342
- <?php if ( $post_elements == 'all' || in_array( 'title', $post_elements ) ) : ?>
 
 
 
 
 
3343
 
3344
- <div class="dslc-project-title">
3345
- <h2><a href="<?php echo $the_project_url; ?>" target="<?php echo $the_project_url_target; ?>"><?php the_title(); ?></a></h2>
3346
- </div><!-- .dslc-project-title -->
3347
 
3348
- <?php endif; ?>
3349
 
3350
- <?php if ( $post_elements == 'all' || in_array( 'categories', $post_elements ) ) : ?>
3351
 
3352
- <?php if ( ! empty( $project_cats ) ) : ?>
3353
- <div class="dslc-project-cats">
3354
- <?php
3355
- foreach ( $project_cats as $project_cat ) {
3356
- $project_cats_count++;
3357
- if ( $project_cats_count > 1 ) { echo ', '; }
3358
- echo $project_cat->name;
3359
- }
3360
- ?>
3361
- </div><!-- .dslc-project-cats -->
3362
- <?php endif; ?>
3363
 
3364
- <?php endif; ?>
 
 
3365
 
3366
- <?php if ( $post_elements == 'all' || in_array( 'staff', $post_elements ) ) : ?>
3367
 
3368
- <?php $staff = get_post_meta( get_the_ID(), 'dslc_project_staffs', true ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
3369
 
3370
- <?php if ( ! empty( $staff ) && ( 'not_set' !== $staff ) ) : ?>
3371
 
3372
- <div class="dslc-project-staff">
3373
- <?php echo $staff; ?>
3374
- </div><!-- .dslc-project-staff -->
3375
 
3376
- <?php endif; ?>
3377
 
3378
- <?php endif; ?>
3379
 
3380
- <?php if ( $post_elements == 'all' || in_array( 'partner', $post_elements ) ) : ?>
 
 
3381
 
3382
- <?php $partner = get_post_meta( get_the_ID(), 'dslc_project_partners', true ); ?>
3383
 
3384
- <?php if ( ! empty( $staff ) && ( 'not_set' !== $partner ) ) : ?>
3385
 
3386
- <div class="dslc-project-partner">
3387
- <?php echo $partner; ?>
3388
- </div><!-- .dslc-project-partner -->
3389
 
3390
- <?php endif; ?>
3391
 
3392
- <?php endif; ?>
3393
 
3394
- <?php if ( $post_elements == 'all' || in_array( 'excerpt', $post_elements ) ) : ?>
 
 
3395
 
3396
- <div class="dslc-project-excerpt">
3397
- <?php if ( $options['excerpt_or_content'] == 'content' ) : ?>
3398
- <?php
3399
- if ( $options['excerpt_length'] > 0 ) {
3400
- echo wp_trim_words( get_the_content(), $options['excerpt_length'] );
3401
- } else {
3402
- echo get_the_content();
3403
- }
3404
- ?>
3405
- <?php else : ?>
3406
- <?php
3407
- if ( $options['excerpt_length'] > 0 ) {
3408
- if ( has_excerpt() ) {
3409
- echo wp_trim_words( get_the_excerpt(), $options['excerpt_length'] );
3410
- } else { echo wp_trim_words( get_the_content(), $options['excerpt_length'] );
3411
- }
3412
- } else {
3413
- if ( has_excerpt() ) {
3414
- echo get_the_excerpt();
3415
- } else { echo get_the_content();
3416
- }
3417
- }
3418
- ?>
3419
- <?php endif; ?>
3420
- </div><!-- .dslc-project-excerpt -->
3421
 
3422
- <?php endif; ?>
3423
 
3424
- <?php if ( $post_elements == 'all' || in_array( 'button', $post_elements ) ) : ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3425
 
3426
- <div class="dslc-project-read-more">
3427
- <a href="<?php echo $the_project_url; ?>" target="<?php echo $the_project_url_target; ?>">
3428
- <?php if ( 'svg' == $options['show_icon'] ) : ?>
3429
- <?php echo stripslashes( $options['button_inline_svg'] ); ?>
3430
- <?php else : ?>
3431
- <span class="dslc-icon dslc-icon-<?php echo $options['button_icon_id']; ?>"></span>
3432
- <?php endif; ?>
3433
- <?php echo $options['button_text']; ?>
3434
- </a>
3435
- </div><!-- .dslc-project-read-more -->
3436
 
3437
- <?php endif; ?>
3438
 
3439
- </div>
 
 
 
 
 
 
 
 
 
3440
 
3441
- <a href="<?php echo $the_project_url; ?>" class="dslc-post-main-inner-link-cover"></a>
3442
 
3443
- </div><!-- .dslc-project-main -->
3444
 
3445
- <?php endif; ?>
3446
 
3447
- </div><!-- .dslc-project-thumb -->
3448
 
3449
- <?php endif; ?>
3450
 
3451
- <?php endif; ?>
3452
 
3453
- <?php if ( $options['main_location'] == 'bellow' && ( $post_elements == 'all' || in_array( 'title', $post_elements ) || in_array( 'categories', $post_elements ) || in_array( 'excerpt', $post_elements ) || in_array( 'button', $post_elements ) ) ) : ?>
3454
 
3455
- <div class="dslc-post-main dslc-project-main">
3456
 
3457
- <?php do_action( 'dslc_module_projects_main_after', $options ); ?>
3458
 
3459
- <?php if ( $post_elements == 'all' || in_array( 'title', $post_elements ) ) : ?>
3460
 
3461
- <div class="dslc-project-title">
3462
- <h2><a href="<?php echo $the_project_url; ?>" target="<?php echo $the_project_url_target; ?>"><?php the_title(); ?></a></h2>
3463
- </div><!-- .dslc-project-title -->
3464
 
3465
- <?php endif; ?>
3466
 
3467
- <?php if ( $post_elements == 'all' || in_array( 'categories', $post_elements ) ) : ?>
3468
-
3469
- <?php if ( ! empty( $project_cats ) ) : ?>
3470
- <div class="dslc-project-cats">
3471
- <?php
3472
- foreach ( $project_cats as $project_cat ) {
3473
- $project_cats_count++;
3474
- if ( $project_cats_count > 1 ) { echo ', '; }
3475
- echo $project_cat->name;
3476
- }
3477
- ?>
3478
- </div><!-- .dslc-project-cats -->
3479
- <?php endif; ?>
3480
 
3481
- <?php endif; ?>
3482
 
3483
- <?php if ( $post_elements == 'all' || in_array( 'staff', $post_elements ) ) : ?>
3484
 
3485
- <?php $staff = get_post_meta( get_the_ID(), 'dslc_project_staffs', true ); ?>
 
 
 
 
 
 
 
 
 
 
3486
 
3487
- <?php if ( ! empty( $staff ) && ( 'not_set' !== $staff ) ) : ?>
3488
 
3489
- <div class="dslc-project-staff">
3490
- <?php echo $staff; ?>
3491
- </div><!-- .dslc-project-staff -->
3492
 
3493
- <?php endif; ?>
3494
 
3495
- <?php endif; ?>
3496
 
3497
- <?php if ( $post_elements == 'all' || in_array( 'partner', $post_elements ) ) : ?>
 
 
3498
 
3499
- <?php $partner = get_post_meta( get_the_ID(), 'dslc_project_partners', true ); ?>
3500
 
3501
- <?php if ( ! empty( $staff ) && ( 'not_set' !== $partner ) ) : ?>
3502
 
3503
- <div class="dslc-project-partner">
3504
- <?php echo $partner; ?>
3505
- </div><!-- .dslc-project-partner -->
3506
 
3507
- <?php endif; ?>
3508
 
3509
- <?php endif; ?>
3510
 
3511
- <?php if ( $post_elements == 'all' || in_array( 'excerpt', $post_elements ) ) : ?>
3512
-
3513
- <div class="dslc-project-excerpt">
3514
- <?php if ( $options['excerpt_or_content'] == 'content' ) : ?>
3515
- <?php
3516
- if ( $options['excerpt_length'] > 0 ) {
3517
- echo wp_trim_words( get_the_content(), $options['excerpt_length'] );
3518
- } else {
3519
- echo get_the_content();
3520
- }
3521
- ?>
3522
- <?php else : ?>
3523
- <?php
3524
- if ( $options['excerpt_length'] > 0 ) {
3525
- if ( has_excerpt() ) {
3526
- echo wp_trim_words( get_the_excerpt(), $options['excerpt_length'] );
3527
- } else { echo wp_trim_words( get_the_content(), $options['excerpt_length'] );
3528
- }
3529
- } else {
3530
- if ( has_excerpt() ) {
3531
- echo get_the_excerpt();
3532
- } else { echo get_the_content();
3533
- }
3534
- }
3535
- ?>
3536
- <?php endif; ?>
3537
- </div><!-- .dslc-project-excerpt -->
3538
 
3539
- <?php endif; ?>
3540
 
3541
- <?php if ( $post_elements == 'all' || in_array( 'button', $post_elements ) ) : ?>
3542
 
3543
- <div class="dslc-project-read-more">
3544
- <a href="<?php echo $the_project_url; ?>" target="<?php echo $the_project_url_target; ?>">
3545
- <?php if ( 'svg' == $options['show_icon'] ) : ?>
3546
- <?php echo stripslashes( $options['button_inline_svg'] ); ?>
3547
- <?php else : ?>
3548
- <span class="dslc-icon dslc-icon-<?php echo $options['button_icon_id']; ?>"></span>
3549
- <?php endif; ?>
3550
- <?php echo $options['button_text']; ?>
3551
- </a>
3552
- </div><!-- .dslc-project-read-more -->
3553
 
3554
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3555
 
3556
- </div><!-- .dslc-project-main -->
3557
 
3558
- <?php endif; ?>
3559
 
3560
- </div><!-- .dslc-project -->
 
 
 
 
 
 
 
 
 
3561
 
3562
- <?php
3563
 
3564
- // Row Separator
3565
- if ( $options['type'] == 'grid' && $count == 0 && $real_count != $dslc_query->found_posts && $real_count != $options['amount'] && $options['separator_enabled'] == 'enabled' ) {
3566
- echo '<div class="dslc-post-separator"></div>';
3567
- }
3568
 
3569
- endwhile;
3570
 
3571
- if ( $options['type'] == 'carousel' ) :
3572
 
3573
- ?></div><?php
3574
 
3575
- endif;
 
 
 
3576
 
3577
- ?>
3578
 
 
3579
  </div><!-- .dslc-posts-inner -->
3580
-
3581
  <?php if ( $show_carousel_arrows && ( $options['arrows_position'] == 'aside' ) ) : ?>
3582
  <a href="#" class="dslc-carousel-nav-next position-aside"><span class="dslc-icon-chevron-right"></span></a>
3583
  <?php endif; ?>
2889
  }
2890
 
2891
  function dslc_module_projects_output( $atts, $content = null ) {
2892
+
2893
  // Uncode module options passed as serialized content.
2894
  $data = @unserialize( $content );
2895
 
2896
  if ( $data !== false ) {
2897
  $options = unserialize( $content );
2898
  } else {
2899
+ $fixed_data = preg_replace_callback( '!s:(\d+):"(.*?)";!', function( $match ) {
2900
  return ( $match[1] == strlen( $match[2] ) ) ? $match[0] : 's:' . strlen( $match[2] ) . ':"' . $match[2] . '";';
2901
  }, $content );
2902
  $options = unserialize( $fixed_data );
3097
  if ( $show_heading || $show_filters || $show_carousel_arrows ) {
3098
  $show_header = true;
3099
  }
3100
+
3101
  if ( $show_carousel_arrows && ( $options['arrows_position'] == 'aside' ) ) {
3102
  $container_class .= 'dslc-carousel-arrow-aside ';
3103
  }
3218
  if ( $dslc_query->have_posts() ) :
3219
 
3220
  ?><div class="<?php echo $container_class; ?>">
3221
+
3222
  <?php if ( $show_carousel_arrows && ( $options['arrows_position'] == 'aside' ) ) : ?>
3223
  <a href="#" class="dslc-carousel-nav-prev position-aside"><span class="dslc-icon-chevron-left"></span></a>
3224
  <?php endif; ?>
3276
 
3277
  <div class="<?php echo $element_class . $columns_class . $extra_class; ?>" data-cats="<?php echo $project_cats_data; ?>">
3278
 
3279
+ <?php if ( 'all' === $post_elements || in_array( 'thumbnail', $post_elements ) ) :
3280
+ /**
3281
+ * Manual Resize
3282
+ */
3283
+ $manual_resize = false;
3284
+ if ( isset( $options['thumb_resize_height'] )
3285
+ && ! empty( $options['thumb_resize_height'] )
3286
+ || isset( $options['thumb_resize_width_manual'] )
3287
+ && ! empty( $options['thumb_resize_width_manual'] ) ) {
3288
+
3289
+ $manual_resize = true;
3290
+ $thumb_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' );
3291
+ $thumb_url = $thumb_url[0];
3292
+
3293
+ $thumb_alt = get_post_meta( get_post_thumbnail_id(), '_wp_attachment_image_alt', true );
3294
+ if ( ! $thumb_alt ) {
3295
+ $thumb_alt = '';
3296
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3297
 
3298
+ $thumb_title = get_the_title( get_post_thumbnail_id() );
3299
+ if ( ! $thumb_title ) { $thumb_title = ''; }
3300
 
3301
+ $resize_width = false;
3302
+ $resize_height = false;
 
 
 
3303
 
3304
+ if ( isset( $options['thumb_resize_width_manual'] ) && ! empty( $options['thumb_resize_width_manual'] ) ) {
3305
+ $resize_width = $options['thumb_resize_width_manual'];
3306
+ }
 
 
 
3307
 
3308
+ if ( isset( $options['thumb_resize_height'] ) && ! empty( $options['thumb_resize_height'] ) ) {
3309
+ $resize_height = $options['thumb_resize_height'];
3310
+ }
3311
+ }
3312
+ ?>
 
 
3313
 
3314
+ <?php if ( has_post_thumbnail() ) : ?>
3315
 
3316
+ <div class="dslc-post-thumb dslc-project-thumb dslc-on-hover-anim">
3317
+ <div class="dslc-project-thumb-inner dslca-post-thumb">
3318
+ <?php
3319
+ $anchor_class = '';
3320
+ $anchor_href = $the_project_url;
3321
 
3322
+ if ( 'lightbox' === $options['link_type'] ) {
3323
+ $anchor_class = 'dslc-lightbox-image';
3324
+ $anchor_href = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' );
3325
+ $anchor_href = $anchor_href[0];
3326
+ }
3327
+ ?>
3328
 
3329
+ <?php if ( $manual_resize ) : ?>
3330
+ <a href="<?php echo $anchor_href; ?>" class="<?php echo $anchor_class; ?>" target="<?php echo $the_project_url_target; ?>"><img src="<?php $res_img = dslc_aq_resize( $thumb_url, $resize_width, $resize_height, true ); echo $res_img; ?>" alt="<?php echo $thumb_alt; ?>" title="<?php echo $thumb_title; ?>" /></a>
3331
+ <?php else : ?>
3332
+ <a href="<?php echo $anchor_href; ?>" class="<?php echo $anchor_class; ?>" target="<?php echo $the_project_url_target; ?>"><?php the_post_thumbnail( 'full', array( 'title' => get_the_title( get_post_thumbnail_id() ) ) ); ?></a>
3333
+ <?php endif; ?>
3334
+ </div><!-- .dslc-project-thumb-inner -->
3335
 
3336
+ <?php if ( ( $options['main_location'] == 'inside' || $options['main_location'] == 'inside_visible' ) && ( $post_elements == 'all' || in_array( 'title', $post_elements ) || in_array( 'categories', $post_elements ) || in_array( 'excerpt', $post_elements ) || in_array( 'button', $post_elements ) ) ) : ?>
 
 
3337
 
3338
+ <div class="dslc-project-main dslc-init-<?php echo $options['main_position']; ?> <?php if ( $options['main_location'] == 'inside_visible' ) { echo 'dslc-project-main-visible';} ?> dslc-on-hover-anim-target dslc-anim-<?php echo $options['css_anim_hover']; ?>" data-dslc-anim="<?php echo $options['css_anim_hover']; ?>" data-dslc-anim-speed="<?php echo $options['css_anim_speed']; ?>">
3339
 
3340
+ <div class="dslc-project-main-inner dslc-init-target">
3341
 
3342
+ <?php if ( $post_elements == 'all' || in_array( 'title', $post_elements ) ) : ?>
 
 
 
 
 
 
 
 
 
 
3343
 
3344
+ <div class="dslc-project-title">
3345
+ <h2><a href="<?php echo $the_project_url; ?>" target="<?php echo $the_project_url_target; ?>"><?php the_title(); ?></a></h2>
3346
+ </div><!-- .dslc-project-title -->
3347
 
3348
+ <?php endif; ?>
3349
 
3350
+ <?php if ( $post_elements == 'all' || in_array( 'categories', $post_elements ) ) : ?>
3351
+
3352
+ <?php if ( ! empty( $project_cats ) ) : ?>
3353
+ <div class="dslc-project-cats">
3354
+ <?php
3355
+ foreach ( $project_cats as $project_cat ) {
3356
+ $project_cats_count++;
3357
+ if ( $project_cats_count > 1 ) { echo ', '; }
3358
+ echo $project_cat->name;
3359
+ }
3360
+ ?>
3361
+ </div><!-- .dslc-project-cats -->
3362
+ <?php endif; ?>
3363
 
3364
+ <?php endif; ?>
3365
 
3366
+ <?php if ( $post_elements == 'all' || in_array( 'staff', $post_elements ) ) : ?>
 
 
3367
 
3368
+ <?php $staff = get_post_meta( get_the_ID(), 'dslc_project_staffs', true ); ?>
3369
 
3370
+ <?php if ( ! empty( $staff ) && ( 'not_set' !== $staff ) ) : ?>
3371
 
3372
+ <div class="dslc-project-staff">
3373
+ <?php echo $staff; ?>
3374
+ </div><!-- .dslc-project-staff -->
3375
 
3376
+ <?php endif; ?>
3377
 
3378
+ <?php endif; ?>
3379
 
3380
+ <?php if ( $post_elements == 'all' || in_array( 'partner', $post_elements ) ) : ?>
 
 
3381
 
3382
+ <?php $partner = get_post_meta( get_the_ID(), 'dslc_project_partners', true ); ?>
3383
 
3384
+ <?php if ( ! empty( $staff ) && ( 'not_set' !== $partner ) ) : ?>
3385
 
3386
+ <div class="dslc-project-partner">
3387
+ <?php echo $partner; ?>
3388
+ </div><!-- .dslc-project-partner -->
3389
 
3390
+ <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3391
 
3392
+ <?php endif; ?>
3393
 
3394
+ <?php if ( $post_elements == 'all' || in_array( 'excerpt', $post_elements ) ) : ?>
3395
+
3396
+ <div class="dslc-project-excerpt">
3397
+ <?php if ( $options['excerpt_or_content'] == 'content' ) : ?>
3398
+ <?php
3399
+ if ( $options['excerpt_length'] > 0 ) {
3400
+ echo wp_trim_words( get_the_content(), $options['excerpt_length'] );
3401
+ } else {
3402
+ echo get_the_content();
3403
+ }
3404
+ ?>
3405
+ <?php else : ?>
3406
+ <?php
3407
+ if ( $options['excerpt_length'] > 0 ) {
3408
+ if ( has_excerpt() ) {
3409
+ echo wp_trim_words( get_the_excerpt(), $options['excerpt_length'] );
3410
+ } else { echo wp_trim_words( get_the_content(), $options['excerpt_length'] );
3411
+ }
3412
+ } else {
3413
+ if ( has_excerpt() ) {
3414
+ echo get_the_excerpt();
3415
+ } else { echo get_the_content();
3416
+ }
3417
+ }
3418
+ ?>
3419
+ <?php endif; ?>
3420
+ </div><!-- .dslc-project-excerpt -->
3421
 
3422
+ <?php endif; ?>
 
 
 
 
 
 
 
 
 
3423
 
3424
+ <?php if ( $post_elements == 'all' || in_array( 'button', $post_elements ) ) : ?>
3425
 
3426
+ <div class="dslc-project-read-more">
3427
+ <a href="<?php echo $the_project_url; ?>" target="<?php echo $the_project_url_target; ?>">
3428
+ <?php if ( 'svg' == $options['show_icon'] ) : ?>
3429
+ <?php echo stripslashes( $options['button_inline_svg'] ); ?>
3430
+ <?php else : ?>
3431
+ <span class="dslc-icon dslc-icon-<?php echo $options['button_icon_id']; ?>"></span>
3432
+ <?php endif; ?>
3433
+ <?php echo $options['button_text']; ?>
3434
+ </a>
3435
+ </div><!-- .dslc-project-read-more -->
3436
 
3437
+ <?php endif; ?>
3438
 
3439
+ </div>
3440
 
3441
+ <a href="<?php echo $the_project_url; ?>" class="dslc-post-main-inner-link-cover"></a>
3442
 
3443
+ </div><!-- .dslc-project-main -->
3444
 
3445
+ <?php endif; ?>
3446
 
3447
+ </div><!-- .dslc-project-thumb -->
3448
 
3449
+ <?php endif; ?>
3450
 
3451
+ <?php endif; ?>
3452
 
3453
+ <?php if ( $options['main_location'] == 'bellow' && ( $post_elements == 'all' || in_array( 'title', $post_elements ) || in_array( 'categories', $post_elements ) || in_array( 'excerpt', $post_elements ) || in_array( 'button', $post_elements ) ) ) : ?>
3454
 
3455
+ <div class="dslc-post-main dslc-project-main">
3456
 
3457
+ <?php do_action( 'dslc_module_projects_main_after', $options ); ?>
 
 
3458
 
3459
+ <?php if ( $post_elements == 'all' || in_array( 'title', $post_elements ) ) : ?>
3460
 
3461
+ <div class="dslc-project-title">
3462
+ <h2><a href="<?php echo $the_project_url; ?>" target="<?php echo $the_project_url_target; ?>"><?php the_title(); ?></a></h2>
3463
+ </div><!-- .dslc-project-title -->
 
 
 
 
 
 
 
 
 
 
3464
 
3465
+ <?php endif; ?>
3466
 
3467
+ <?php if ( $post_elements == 'all' || in_array( 'categories', $post_elements ) ) : ?>
3468
 
3469
+ <?php if ( ! empty( $project_cats ) ) : ?>
3470
+ <div class="dslc-project-cats">
3471
+ <?php
3472
+ foreach ( $project_cats as $project_cat ) {
3473
+ $project_cats_count++;
3474
+ if ( $project_cats_count > 1 ) { echo ', '; }
3475
+ echo $project_cat->name;
3476
+ }
3477
+ ?>
3478
+ </div><!-- .dslc-project-cats -->
3479
+ <?php endif; ?>
3480
 
3481
+ <?php endif; ?>
3482
 
3483
+ <?php if ( $post_elements == 'all' || in_array( 'staff', $post_elements ) ) : ?>
 
 
3484
 
3485
+ <?php $staff = get_post_meta( get_the_ID(), 'dslc_project_staffs', true ); ?>
3486
 
3487
+ <?php if ( ! empty( $staff ) && ( 'not_set' !== $staff ) ) : ?>
3488
 
3489
+ <div class="dslc-project-staff">
3490
+ <?php echo $staff; ?>
3491
+ </div><!-- .dslc-project-staff -->
3492
 
3493
+ <?php endif; ?>
3494
 
3495
+ <?php endif; ?>
3496
 
3497
+ <?php if ( $post_elements == 'all' || in_array( 'partner', $post_elements ) ) : ?>
 
 
3498
 
3499
+ <?php $partner = get_post_meta( get_the_ID(), 'dslc_project_partners', true ); ?>
3500
 
3501
+ <?php if ( ! empty( $staff ) && ( 'not_set' !== $partner ) ) : ?>
3502
 
3503
+ <div class="dslc-project-partner">
3504
+ <?php echo $partner; ?>
3505
+ </div><!-- .dslc-project-partner -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3506
 
3507
+ <?php endif; ?>
3508
 
3509
+ <?php endif; ?>
3510
 
3511
+ <?php if ( $post_elements == 'all' || in_array( 'excerpt', $post_elements ) ) : ?>
 
 
 
 
 
 
 
 
 
3512
 
3513
+ <div class="dslc-project-excerpt">
3514
+ <?php if ( $options['excerpt_or_content'] == 'content' ) : ?>
3515
+ <?php
3516
+ if ( $options['excerpt_length'] > 0 ) {
3517
+ echo wp_trim_words( get_the_content(), $options['excerpt_length'] );
3518
+ } else {
3519
+ echo get_the_content();
3520
+ }
3521
+ ?>
3522
+ <?php else : ?>
3523
+ <?php
3524
+ if ( $options['excerpt_length'] > 0 ) {
3525
+ if ( has_excerpt() ) {
3526
+ echo wp_trim_words( get_the_excerpt(), $options['excerpt_length'] );
3527
+ } else { echo wp_trim_words( get_the_content(), $options['excerpt_length'] );
3528
+ }
3529
+ } else {
3530
+ if ( has_excerpt() ) {
3531
+ echo get_the_excerpt();
3532
+ } else { echo get_the_content();
3533
+ }
3534
+ }
3535
+ ?>
3536
+ <?php endif; ?>
3537
+ </div><!-- .dslc-project-excerpt -->
3538
 
3539
+ <?php endif; ?>
3540
 
3541
+ <?php if ( $post_elements == 'all' || in_array( 'button', $post_elements ) ) : ?>
3542
 
3543
+ <div class="dslc-project-read-more">
3544
+ <a href="<?php echo $the_project_url; ?>" target="<?php echo $the_project_url_target; ?>">
3545
+ <?php if ( 'svg' == $options['show_icon'] ) : ?>
3546
+ <?php echo stripslashes( $options['button_inline_svg'] ); ?>
3547
+ <?php else : ?>
3548
+ <span class="dslc-icon dslc-icon-<?php echo $options['button_icon_id']; ?>"></span>
3549
+ <?php endif; ?>
3550
+ <?php echo $options['button_text']; ?>
3551
+ </a>
3552
+ </div><!-- .dslc-project-read-more -->
3553
 
3554
+ <?php endif; ?>
3555
 
3556
+ </div><!-- .dslc-project-main -->
 
 
 
3557
 
3558
+ <?php endif; ?>
3559
 
3560
+ </div><!-- .dslc-project -->
3561
 
3562
+ <?php
3563
 
3564
+ // Row Separator
3565
+ if ( $options['type'] == 'grid' && $count == 0 && $real_count != $dslc_query->found_posts && $real_count != $options['amount'] && $options['separator_enabled'] == 'enabled' ) {
3566
+ echo '<div class="dslc-post-separator"></div>';
3567
+ }
3568
 
3569
+ endwhile;
3570
 
3571
+ if ( $options['type'] == 'carousel' ) :?></div><?php endif; ?>
3572
  </div><!-- .dslc-posts-inner -->
3573
+
3574
  <?php if ( $show_carousel_arrows && ( $options['arrows_position'] == 'aside' ) ) : ?>
3575
  <a href="#" class="dslc-carousel-nav-next position-aside"><span class="dslc-icon-chevron-right"></span></a>
3576
  <?php endif; ?>
readme.txt CHANGED
@@ -1,36 +1,57 @@
1
- === Page Builder: Live Composer ===
2
  Contributors: LiveComposer
3
- Tags: page builder, drag-n-drop page builder, landing page builder, visual page builder, landing page builder
4
  Requires at least: 4.7
5
  Tested up to: 5.2
6
- Stable tag: 1.4.3
7
  License: GPLv3
8
 
9
- Front-end page builder for the whole site.
10
 
11
  == Description ==
12
 
13
  = 👓 Create Stunning Websites Visually =
14
 
15
- [Live Composer page builder](https://livecomposerplugin.com/) is the complete and feature-reach website builder for WordPress. In our page builder, you get most of the features for free paying only for [Woo-Commerce support](https://livecomposerplugin.com/downloads/woocommerce-page-builder/?utm_source=wp-admin&utm_medium=changelog&utm_campaign=woo-integration) and [advanced integrations](https://livecomposerplugin.com/downloads/extensions/?utm_source=wp-admin&utm_medium=changelog&utm_campaign=add-ons) (ACF, CPT, Mega Menus). Create stunning custom page designs in real-time. Drag & drop front-end editing is an entirely intuitive way to create and customize great looking websites.
 
 
16
 
17
  = 🏆 Over 50,000 Site Owners Chose Live Composer page builder =
18
 
19
- = 📙 Our Page Builder comes with an [extensive documentation](https://livecomposer.help/) =
 
 
 
 
20
 
21
  = ⏳ Create Custom Page Layouts in Minutes =
22
 
 
 
23
  = 🎯 Well Integrated With WordPress =
24
 
25
- Our page builder works with any standard compliant WordPress theme. It's fully compatible with other plugins like Yoast WP SEO or contact form builders. We also have a [marketplace with free and premium themes](https://livecomposerplugin.com/themes/) created especially for Live Composer.
26
 
27
  = ♻ No Code Left Behind When the Plugin Deactivated =
28
 
29
  Unlike other page builders, Live Composer doesn't leave behind the horrible amount of shortcodes when the plugin deactivated. It's not a commitment to a single plugin. We don't lock you. It's easy to start using any other page builder without a need to remove all the custom shortcodes before implementing a new solution.
30
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  = 📱 Mobile Responsive Page Builder =
32
 
33
- Creating responsive websites in our page builder is easy. You can customize the responsive presentation of any page element to make it looks perfect on all mobile devices, ensuring your site is mobile-ready.
 
34
 
35
  == Installation ==
36
 
@@ -62,6 +83,13 @@ In most of the cases, this is because the homepage is not a real WordPress page,
62
  * 🦊 [Check out our WooCommerce Page Builder Extension](https://livecomposerplugin.com/downloads/woocommerce-page-builder/?utm_source=wp-admin&utm_medium=changelog&utm_campaign=woo-integration)
63
  * 👀 [We keep updating and improving our extensions pack](https://livecomposerplugin.com/downloads/extensions/?utm_source=wp-admin&utm_medium=changelog&utm_campaign=add-ons) ACF + CPT + MegaMenu + 9 more add-ons.
64
 
 
 
 
 
 
 
 
65
  = 1.4.3 - May 9th 2019 =
66
  * WordPress 5.1 is not compatible with older PHP versions anymore. If you have issues after updating WordPress or our plugin, please ask your hosting to upgrade PHP version or do it yourself via the control panel.
67
  * Issue [#979](https://github.com/live-composer/live-composer-page-builder/issues/979): Fix php notices related to presets functionality.
1
+ === Page Builder: Live Composer – drag and drop website builder (visual front end site editor) ===
2
  Contributors: LiveComposer
3
+ Tags: page builder, visual composer, visual editor, visual builder, drag and drop builder, landing page builder, frontend editor, frontend builder, landing pages, landing page, website builder, theme builder, site-builder, layout builder, drag-and-drop, builder, editor, responsive, mobile, layout, front end, frontend, Page Layout, squeeze page, page builder plugin, drag-n-drop page builder
4
  Requires at least: 4.7
5
  Tested up to: 5.2
6
+ Stable tag: 1.4.4
7
  License: GPLv3
8
 
9
+ Front-end page builder for WordPress with drag and drop editing. Build PRO responsive websites and landing pages. Visually customize any page element.
10
 
11
  == Description ==
12
 
13
  = 👓 Create Stunning Websites Visually =
14
 
15
+ [Live Composer page builder](https://livecomposerplugin.com/) is complete and feature-reach website builder for WordPress. In our page builder, you get most of the features for free paying only for [Woo-Commerce support](https://livecomposerplugin.com/downloads/woocommerce-page-builder/?utm_source=wp-admin&utm_medium=changelog&utm_campaign=woo-integration) and [advanced integrations](https://livecomposerplugin.com/downloads/extensions/?utm_source=wp-admin&utm_medium=changelog&utm_campaign=add-ons) (ACF, CPT, Mega Menus). Create stunning custom page designs in real-time. Drag & drop front-end editing is a perfectly intuitive way to create and customize great looking websites.
16
+
17
+ Do it yourself with easy content editing in real-time. Save your money on expensive coding and customization services. No tech skills needed to create professional websites in our page builder. Live Composer is a great tool for web designers, digital marketing specialists, WordPress theme developers and freelance consultants. Learn our page builder once and cut your website building time with every next project. Create an exceptional landing page, portfolio or fully featured pro website for your client.
18
 
19
  = 🏆 Over 50,000 Site Owners Chose Live Composer page builder =
20
 
21
+ You can trust our plugin. 100% open source page builder backed by the experienced team of web developers. Our page builder on the market for more than 2 years. All the major bugs already fixed and new updates released regularly. Every day our developers work on code improvements and new features. With a purchase of any [premium extension](https://livecomposerplugin.com/downloads/extensions/?utm_source=wp-admin&utm_medium=changelog&utm_campaign=add-ons) you also getting access to our exceptional one-to-one support.
22
+
23
+ = 📙 Our Page Builder comes with an [extensive documentation](https://livecomposer.help/), but you don't need it =
24
+
25
+ Site design customization or page layout changes shouldn't be difficult or expensive. Our page builder is easy to use without reading [any documentation](https://livecomposer.help/). You'll be building beautiful custom WordPress site designs in no time. Create multi-media rich pages with very little effort: add new sections, rearrange columns, and add media from the same screen. It's a perfect solution for ALL users. No technical skills required.
26
 
27
  = ⏳ Create Custom Page Layouts in Minutes =
28
 
29
+ Live Composer page builder is a simple but very powerful [WordPress site builder](https://livecomposerplugin.com/). Customize every little detail on your website or build stunning custom pages from scratch.
30
+
31
  = 🎯 Well Integrated With WordPress =
32
 
33
+ Our page builder works with works with any standard compliant WordPress theme. It's fully compatible with other plugins like Yoast WP SEO or contact form builders. We also have a [marketplace with free and premium themes](https://livecomposerplugin.com/themes/) created especially for Live Composer.
34
 
35
  = ♻ No Code Left Behind When the Plugin Deactivated =
36
 
37
  Unlike other page builders, Live Composer doesn't leave behind the horrible amount of shortcodes when the plugin deactivated. It's not a commitment to a single plugin. We don't lock you. It's easy to start using any other page builder without a need to remove all the custom shortcodes before implementing a new solution.
38
 
39
+ = ⭐ 100% Open Source Page Builder =
40
+
41
+ Previously a premium plugin, Live Composer page builder is now a free fully functional plugin. Actively developed by [professional web developers](https://livecomposerplugin.com/) it has a bright future for years to come.
42
+
43
+ = 🙈 No Coding Skills Required =
44
+
45
+ Anyone can build pro website with Live Composer page builder. No coding or technical skills required. Our site builder will generate all the code for you.
46
+
47
+ = 🌀 Export/Import Sections, Layouts or while Pages =
48
+
49
+ Export any page section or the whole page. Reuse layout or page design you created.
50
+
51
  = 📱 Mobile Responsive Page Builder =
52
 
53
+ It's easy to create responsive websites in our page builder. You can customize the responsive presentation of any page element to make it looks perfect on all mobile devices, ensuring your site is mobile-ready.
54
+
55
 
56
  == Installation ==
57
 
83
  * 🦊 [Check out our WooCommerce Page Builder Extension](https://livecomposerplugin.com/downloads/woocommerce-page-builder/?utm_source=wp-admin&utm_medium=changelog&utm_campaign=woo-integration)
84
  * 👀 [We keep updating and improving our extensions pack](https://livecomposerplugin.com/downloads/extensions/?utm_source=wp-admin&utm_medium=changelog&utm_campaign=add-ons) ACF + CPT + MegaMenu + 9 more add-ons.
85
 
86
+ = 1.4.4 - May 23rd 2019 =
87
+ * 🕷 Bug: WordPress automatically create a page when defining the image title in LC.
88
+ * 🆕 New text shortcode: [dslc_bloghome] – Outputs the blog index page URL ( home_url() ).
89
+ * 🆕 New text shortcode: [dslc_archive_heading] – Heading for the archive pages.
90
+ * 🆕 New text shortcode: [nextpost_url] and [prevpost_url] – Output an URL to the next previous post the same way as next post link works.
91
+ * 🆕 New text shortcode: [dslc_postpagination] – Outputs single post pagination.
92
+
93
  = 1.4.3 - May 9th 2019 =
94
  * WordPress 5.1 is not compatible with older PHP versions anymore. If you have issues after updating WordPress or our plugin, please ask your hosting to upgrade PHP version or do it yourself via the control panel.
95
  * Issue [#979](https://github.com/live-composer/live-composer-page-builder/issues/979): Fix php notices related to presets functionality.