Visual Portfolio, Photo Gallery & Post Grid - Version 2.10.0

Version Description

Download this release

Release Info

Developer nko
Plugin Icon 128x128 Visual Portfolio, Photo Gallery & Post Grid
Version 2.10.0
Comparing to
See all releases

Code changes from version 2.9.1 to 2.10.0

Files changed (62) hide show
  1. assets/admin/css/style-rtl.min.css +1 -1
  2. assets/admin/css/style.min.css +1 -1
  3. assets/admin/js/elementor.js +1 -1
  4. assets/admin/js/mce-dropdown.js +1 -1
  5. assets/admin/js/script.js +1 -1
  6. assets/admin/js/vc-frontend.js +1 -1
  7. assets/js/main.js +7 -2
  8. assets/js/main.min.js +1 -1
  9. assets/js/preview.js +1 -1
  10. class-visual-portfolio.php +6 -62
  11. classes/class-admin.php +66 -10
  12. classes/class-assets.php +22 -18
  13. classes/class-custom-post-type.php +2 -2
  14. classes/class-elementor-widget.php +2 -2
  15. classes/class-get-portfolio.php +26 -2
  16. classes/class-gutenberg.php +3 -3
  17. classes/class-migration.php +1 -1
  18. classes/class-preview.php +2 -2
  19. classes/class-settings.php +9 -1
  20. classes/class-supported-themes.php +1 -1
  21. classes/class-templates.php +102 -0
  22. classes/class-tinymce.php +1 -1
  23. classes/class-vc.php +1 -1
  24. gutenberg/components/controls-render/index.js +1 -1
  25. languages/visual-portfolio.pot +171 -167
  26. readme.md +70 -40
  27. templates/global/link-end.php +21 -0
  28. templates/global/link-start.php +46 -0
  29. templates/items-list/filter/dropdown/filter.php +3 -1
  30. templates/items-list/filter/filter.php +3 -1
  31. templates/items-list/filter/minimal/filter.php +3 -1
  32. templates/items-list/item-parts/excerpt.php +25 -0
  33. templates/items-list/item-parts/icon.php +42 -0
  34. templates/items-list/item-parts/inline-meta.php +53 -0
  35. templates/items-list/item-parts/meta-author.php +55 -0
  36. templates/items-list/item-parts/meta-categories.php +51 -0
  37. templates/items-list/item-parts/meta-comments.php +50 -0
  38. templates/items-list/item-parts/meta-date.php +33 -0
  39. templates/items-list/item-parts/meta-reading-time.php +46 -0
  40. templates/items-list/item-parts/meta-views.php +36 -0
  41. templates/items-list/item-parts/read-more.php +23 -0
  42. templates/items-list/item-parts/title.php +37 -0
  43. templates/items-list/items-style/emerge/image.php +14 -25
  44. templates/items-list/items-style/emerge/meta.php +16 -223
  45. templates/items-list/items-style/fade/image.php +14 -24
  46. templates/items-list/items-style/fade/meta.php +34 -257
  47. templates/items-list/items-style/fly/image.php +14 -24
  48. templates/items-list/items-style/fly/meta.php +35 -257
  49. templates/items-list/items-style/image.php +25 -58
  50. templates/items-list/items-style/meta.php +18 -231
  51. templates/items-list/layouts/slider/thumbnails.php +2 -1
  52. templates/items-list/pagination/infinite.php +1 -0
  53. templates/items-list/pagination/load-more.php +1 -0
  54. templates/items-list/pagination/minimal/infinite.php +1 -0
  55. templates/items-list/pagination/minimal/load-more.php +1 -0
  56. templates/items-list/pagination/minimal/paged.php +3 -1
  57. templates/items-list/pagination/paged.php +3 -1
  58. templates/items-list/sort/dropdown/sort.php +3 -1
  59. templates/items-list/sort/minimal/sort.php +3 -1
  60. templates/items-list/sort/sort.php +3 -1
  61. templates/items-list/wrapper-start.php +2 -1
  62. vendors/class-settings-api.php +38 -33
assets/admin/css/style-rtl.min.css CHANGED
@@ -2,4 +2,4 @@
2
  * Name : Visual Portfolio
3
  * Version : @@plugin_version
4
  * Author : nK https://nkdev.info
5
- */#adminmenu a[href*="page=visual_portfolio_go_pro"],.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]{font-weight:700;color:#ff6a38}#adminmenu a[href*="page=visual_portfolio_go_pro"] .dashicons,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"] .dashicons{-webkit-transition:none;-o-transition:none;transition:none}#adminmenu a[href*="page=visual_portfolio_go_pro"]:hover,#adminmenu a[href*="page=visual_portfolio_go_pro"]:focus,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]:hover,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]:focus{color:#f59372}.dashicons-visual-portfolio,.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon.svg");background-repeat:no-repeat;background-position:center center;background-size:18px;opacity:.6}.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon-mce.svg");opacity:1}.menu-top.current .dashicons-visual-portfolio,.menu-top:hover .dashicons-visual-portfolio,.wp-has-current-submenu .dashicons-visual-portfolio{opacity:1}.vc_element-icon[data-is-container="true"].icon-visual-portfolio,.vc_element-icon.icon-visual-portfolio{background-position:50% 50%}.vc_element-icon.icon-visual-portfolio,.vc_control-visual-portfolio{position:relative;overflow:hidden;background-image:url("../images/icon-gutenberg.svg");background-position:50% 50%;background-size:cover;border-radius:3px}.vc_add-element-container .icon-visual-portfolio{position:absolute}.vc_control-visual-portfolio{display:inline-block;width:18px;height:18px;margin:0 2px;cursor:pointer}.vc_controls-row .vc_control-visual-portfolio{float:left;margin:4px}.vc_control-visual-portfolio-overlay{position:absolute;top:0;left:0;bottom:0;right:0;z-index:2}.vp-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-sizing:border-box;box-sizing:border-box;margin-left:-15px;margin-right:-15px}.vp-col-1,.vp-col-2,.vp-col-3,.vp-col-4,.vp-col-5,.vp-col-6,.vp-col-7,.vp-col-8,.vp-col-9,.vp-col-10,.vp-col-11,.vp-col-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:15px;padding-right:15px}.vp-col-1{-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%;max-width:8.33333%}.vp-col-2{-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%;max-width:16.66667%}.vp-col-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.vp-col-4{-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%;max-width:33.33333%}.vp-col-5{-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%;max-width:41.66667%}.vp-col-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.vp-col-7{-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%;max-width:58.33333%}.vp-col-8{-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%;max-width:66.66667%}.vp-col-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.vp-col-10{-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%;max-width:83.33333%}.vp-col-11{-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%;max-width:91.66667%}.vp-col-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix .vp-control-html{margin-bottom:0}.vp-oembed-preview{position:relative;width:100%;padding-top:56.25%;color:#a2a2a2;background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-oembed-preview::after{content:"\f126";position:absolute;display:block;top:50%;right:50%;width:20px;height:20px;margin-top:-10px;margin-right:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;z-index:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vp-oembed-preview>iframe{position:absolute;top:0;right:0;width:100%;height:100%;z-index:2}.vpf-post-image-focal-point-panel .components-focal-point-picker_position-display-container .components-base-control__label{max-width:100%}.vpf-post-image-focal-point-panel .components-focal-point-picker_position-display-container .components-base-control{margin-bottom:0}.vpf-post-image-focal-point-panel ~ .editor-post-featured-image .editor-post-featured-image__preview{display:none}.vp-input{width:100%}.vp-portfolio__thumbnail{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;border-radius:3px}.vp-portfolio__thumbnail img{position:absolute;display:block;top:0;right:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.vp-portfolio__thumbnail:empty{background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-portfolio__thumbnail:empty,.vp-portfolio__thumbnail:empty:hover,.vp-portfolio__thumbnail:empty:active,.vp-portfolio__thumbnail:empty:focus{color:#a2a2a2}.vp-portfolio__thumbnail:empty::after{content:"\f128";position:absolute;display:block;top:50%;right:50%;width:20px;height:20px;margin-top:-10px;margin-right:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-list-table th.column-portfolio_post_thumbs{width:70px}.wp-list-table th.column-vp_lists_post_icon{width:28px}.wp-list-table th.column-vp_lists_post_shortcode{width:250px}@media screen and (max-width: 782px){.wp-list-table th.column-portfolio_post_thumbs,.wp-list-table th.column-vp_lists_post_icon{display:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-vp_lists_post_icon{float:right;width:70px !important;min-width:70px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-vp_lists_post_icon{width:40px !important}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs::before{content:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-title{overflow:hidden;clear:left}}.notice.vpf-saved-layouts-notice{padding:11px 15px;margin-top:15px;font-size:14px;line-height:1.4}.notice.vpf-saved-layouts-notice h2{margin-top:5px;margin-bottom:12px}.notice.vpf-saved-layouts-notice p{font-size:15px}.notice.vpf-saved-layouts-notice svg{display:inline-block;width:1.3em;height:1.3em;margin-left:.2em;vertical-align:-.28em}.vp-portfolio-list__icon{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;color:inherit;color:#868686;background-color:#f1f1f1;border:1px solid #e8e8e8;border-radius:3px}.vp-portfolio-list__icon:hover,.vp-portfolio-list__icon:active,.vp-portfolio-list__icon:focus{color:#5f5f5f}.vp-portfolio-list__icon svg{position:absolute;display:block;top:15%;right:15%;width:70%;height:70%;-o-object-fit:cover;object-fit:cover}.portfolio_page_visual-portfolio-settings .description{opacity:.7}.portfolio_page_visual-portfolio-settings .metabox-holder .notice{padding:15px}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro>td{pointer-events:none}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .description{opacity:.3}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:18px;height:18px;margin-right:10px;font-family:sans-serif;font-size:11px;line-height:18px;color:#fff;text-align:center;cursor:pointer;background-color:#4c4c4c;border-radius:10px}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label>span{position:absolute;display:none;bottom:100%;width:130px;padding:5px;margin-bottom:10px;background-color:rgba(0,0,0,0.8);border-radius:4px;z-index:9990}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label:hover>span,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label:focus>span{display:block}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_xs .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_sm .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_md .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_lg .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_xl .vpf-settings-control-pro-label{display:none}.portfolio_page_visual-portfolio-settings .social_pro_info>th{display:none}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro{max-width:240px;padding:20px;text-align:center;background-color:#e2e2e2;border-radius:4px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro h3{margin-top:0;margin-bottom:15px;font-size:13px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro p{margin-bottom:1em;font-size:13px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button{display:inline-block;padding:7px 15px;margin-top:5px;text-decoration:none;background:#2540cc;border-radius:3px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:hover,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:focus,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:active{color:#fff}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:hover,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:focus{background:#314cda}#vp_social_integrations h2,#vp_social_integrations .submit{display:none}
2
  * Name : Visual Portfolio
3
  * Version : @@plugin_version
4
  * Author : nK https://nkdev.info
5
+ */#adminmenu a[href*="page=visual_portfolio_go_pro"],.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]{font-weight:700;color:#ff6a38}#adminmenu a[href*="page=visual_portfolio_go_pro"] .dashicons,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"] .dashicons{-webkit-transition:none;-o-transition:none;transition:none}#adminmenu a[href*="page=visual_portfolio_go_pro"]:hover,#adminmenu a[href*="page=visual_portfolio_go_pro"]:focus,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]:hover,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]:focus{color:#f59372}.dashicons-visual-portfolio,.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon.svg");background-repeat:no-repeat;background-position:center center;background-size:18px;opacity:.6}.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon-mce.svg");opacity:1}.menu-top.current .dashicons-visual-portfolio,.menu-top:hover .dashicons-visual-portfolio,.wp-has-current-submenu .dashicons-visual-portfolio{opacity:1}.vc_element-icon[data-is-container="true"].icon-visual-portfolio,.vc_element-icon.icon-visual-portfolio{background-position:50% 50%}.vc_element-icon.icon-visual-portfolio,.vc_control-visual-portfolio{position:relative;overflow:hidden;background-image:url("../images/icon-gutenberg.svg");background-position:50% 50%;background-size:cover;border-radius:3px}.vc_add-element-container .icon-visual-portfolio{position:absolute}.vc_control-visual-portfolio{display:inline-block;width:18px;height:18px;margin:0 2px;cursor:pointer}.vc_controls-row .vc_control-visual-portfolio{float:left;margin:4px}.vc_control-visual-portfolio-overlay{position:absolute;top:0;left:0;bottom:0;right:0;z-index:2}.vp-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-sizing:border-box;box-sizing:border-box;margin-left:-15px;margin-right:-15px}.vp-col-1,.vp-col-2,.vp-col-3,.vp-col-4,.vp-col-5,.vp-col-6,.vp-col-7,.vp-col-8,.vp-col-9,.vp-col-10,.vp-col-11,.vp-col-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:15px;padding-right:15px}.vp-col-1{-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%;max-width:8.33333%}.vp-col-2{-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%;max-width:16.66667%}.vp-col-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.vp-col-4{-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%;max-width:33.33333%}.vp-col-5{-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%;max-width:41.66667%}.vp-col-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.vp-col-7{-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%;max-width:58.33333%}.vp-col-8{-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%;max-width:66.66667%}.vp-col-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.vp-col-10{-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%;max-width:83.33333%}.vp-col-11{-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%;max-width:91.66667%}.vp-col-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix .vp-control-html{margin-bottom:0}.vp-oembed-preview{position:relative;width:100%;padding-top:56.25%;color:#a2a2a2;background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-oembed-preview::after{content:"\f126";position:absolute;display:block;top:50%;right:50%;width:20px;height:20px;margin-top:-10px;margin-right:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;z-index:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vp-oembed-preview>iframe{position:absolute;top:0;right:0;width:100%;height:100%;z-index:2}.vpf-post-image-focal-point-panel .components-focal-point-picker_position-display-container .components-base-control__label{max-width:100%}.vpf-post-image-focal-point-panel .components-focal-point-picker_position-display-container .components-base-control{margin-bottom:0}.vpf-post-image-focal-point-panel ~ .editor-post-featured-image .editor-post-featured-image__preview{display:none}.vp-input{width:100%}.vp-portfolio__thumbnail{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;border-radius:3px}.vp-portfolio__thumbnail img{position:absolute;display:block;top:0;right:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.vp-portfolio__thumbnail:empty{background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-portfolio__thumbnail:empty,.vp-portfolio__thumbnail:empty:hover,.vp-portfolio__thumbnail:empty:active,.vp-portfolio__thumbnail:empty:focus{color:#a2a2a2}.vp-portfolio__thumbnail:empty::after{content:"\f128";position:absolute;display:block;top:50%;right:50%;width:20px;height:20px;margin-top:-10px;margin-right:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-list-table th.column-portfolio_post_thumbs{width:70px}.wp-list-table th.column-vp_lists_post_icon{width:28px}.wp-list-table th.column-vp_lists_post_shortcode{width:250px}@media screen and (max-width: 782px){.wp-list-table th.column-portfolio_post_thumbs,.wp-list-table th.column-vp_lists_post_icon{display:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-vp_lists_post_icon{float:right;width:70px !important;min-width:70px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-vp_lists_post_icon{width:40px !important}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs::before{content:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-title{overflow:hidden;clear:left}}.notice.vpf-saved-layouts-notice{padding:11px 15px;margin-top:15px;font-size:14px;line-height:1.4}.notice.vpf-saved-layouts-notice h2{margin-top:5px;margin-bottom:12px}.notice.vpf-saved-layouts-notice p{font-size:15px}.notice.vpf-saved-layouts-notice svg{display:inline-block;width:1.3em;height:1.3em;margin-left:.2em;vertical-align:-.28em}.vp-portfolio-list__icon{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;color:inherit;color:#868686;background-color:#f1f1f1;border:1px solid #e8e8e8;border-radius:3px}.vp-portfolio-list__icon:hover,.vp-portfolio-list__icon:active,.vp-portfolio-list__icon:focus{color:#5f5f5f}.vp-portfolio-list__icon svg{position:absolute;display:block;top:15%;right:15%;width:70%;height:70%;-o-object-fit:cover;object-fit:cover}.portfolio_page_visual-portfolio-settings .description{opacity:.7}.portfolio_page_visual-portfolio-settings .wpsa-image-remove{display:none;margin-right:10px}.portfolio_page_visual-portfolio-settings .metabox-holder .notice{padding:15px}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro>td{pointer-events:none}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .description{opacity:.3}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:18px;height:18px;margin-right:10px;font-family:sans-serif;font-size:11px;line-height:18px;color:#fff;text-align:center;cursor:pointer;background-color:#4c4c4c;border-radius:10px}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label>span{position:absolute;display:none;bottom:100%;width:130px;padding:5px;margin-bottom:10px;background-color:rgba(0,0,0,0.8);border-radius:4px;z-index:9990}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label:hover>span,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label:focus>span{display:block}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_xs .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_sm .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_md .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_lg .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_xl .vpf-settings-control-pro-label{display:none}.portfolio_page_visual-portfolio-settings .social_pro_info>th{display:none}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro{max-width:240px;padding:20px;text-align:center;background-color:#e2e2e2;border-radius:4px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro h3{margin-top:0;margin-bottom:15px;font-size:13px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro p{margin-bottom:1em;font-size:13px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button{display:inline-block;padding:7px 15px;margin-top:5px;text-decoration:none;background:#2540cc;border-radius:3px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:hover,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:focus,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:active{color:#fff}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:hover,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:focus{background:#314cda}#vp_social_integrations h2,#vp_social_integrations .submit{display:none}
assets/admin/css/style.min.css CHANGED
@@ -2,4 +2,4 @@
2
  * Name : Visual Portfolio
3
  * Version : @@plugin_version
4
  * Author : nK https://nkdev.info
5
- */#adminmenu a[href*="page=visual_portfolio_go_pro"],.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]{font-weight:700;color:#ff6a38}#adminmenu a[href*="page=visual_portfolio_go_pro"] .dashicons,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"] .dashicons{-webkit-transition:none;-o-transition:none;transition:none}#adminmenu a[href*="page=visual_portfolio_go_pro"]:hover,#adminmenu a[href*="page=visual_portfolio_go_pro"]:focus,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]:hover,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]:focus{color:#f59372}.dashicons-visual-portfolio,.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon.svg");background-repeat:no-repeat;background-position:center center;background-size:18px;opacity:.6}.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon-mce.svg");opacity:1}.menu-top.current .dashicons-visual-portfolio,.menu-top:hover .dashicons-visual-portfolio,.wp-has-current-submenu .dashicons-visual-portfolio{opacity:1}.vc_element-icon[data-is-container="true"].icon-visual-portfolio,.vc_element-icon.icon-visual-portfolio{background-position:50% 50%}.vc_element-icon.icon-visual-portfolio,.vc_control-visual-portfolio{position:relative;overflow:hidden;background-image:url("../images/icon-gutenberg.svg");background-position:50% 50%;background-size:cover;border-radius:3px}.vc_add-element-container .icon-visual-portfolio{position:absolute}.vc_control-visual-portfolio{display:inline-block;width:18px;height:18px;margin:0 2px;cursor:pointer}.vc_controls-row .vc_control-visual-portfolio{float:right;margin:4px}.vc_control-visual-portfolio-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.vp-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-sizing:border-box;box-sizing:border-box;margin-right:-15px;margin-left:-15px}.vp-col-1,.vp-col-2,.vp-col-3,.vp-col-4,.vp-col-5,.vp-col-6,.vp-col-7,.vp-col-8,.vp-col-9,.vp-col-10,.vp-col-11,.vp-col-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:15px;padding-left:15px}.vp-col-1{-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%;max-width:8.33333%}.vp-col-2{-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%;max-width:16.66667%}.vp-col-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.vp-col-4{-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%;max-width:33.33333%}.vp-col-5{-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%;max-width:41.66667%}.vp-col-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.vp-col-7{-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%;max-width:58.33333%}.vp-col-8{-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%;max-width:66.66667%}.vp-col-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.vp-col-10{-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%;max-width:83.33333%}.vp-col-11{-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%;max-width:91.66667%}.vp-col-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix .vp-control-html{margin-bottom:0}.vp-oembed-preview{position:relative;width:100%;padding-top:56.25%;color:#a2a2a2;background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-oembed-preview::after{content:"\f126";position:absolute;display:block;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;z-index:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vp-oembed-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.vpf-post-image-focal-point-panel .components-focal-point-picker_position-display-container .components-base-control__label{max-width:100%}.vpf-post-image-focal-point-panel .components-focal-point-picker_position-display-container .components-base-control{margin-bottom:0}.vpf-post-image-focal-point-panel ~ .editor-post-featured-image .editor-post-featured-image__preview{display:none}.vp-input{width:100%}.vp-portfolio__thumbnail{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;border-radius:3px}.vp-portfolio__thumbnail img{position:absolute;display:block;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.vp-portfolio__thumbnail:empty{background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-portfolio__thumbnail:empty,.vp-portfolio__thumbnail:empty:hover,.vp-portfolio__thumbnail:empty:active,.vp-portfolio__thumbnail:empty:focus{color:#a2a2a2}.vp-portfolio__thumbnail:empty::after{content:"\f128";position:absolute;display:block;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-list-table th.column-portfolio_post_thumbs{width:70px}.wp-list-table th.column-vp_lists_post_icon{width:28px}.wp-list-table th.column-vp_lists_post_shortcode{width:250px}@media screen and (max-width: 782px){.wp-list-table th.column-portfolio_post_thumbs,.wp-list-table th.column-vp_lists_post_icon{display:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-vp_lists_post_icon{float:left;width:70px !important;min-width:70px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-vp_lists_post_icon{width:40px !important}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs::before{content:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-title{overflow:hidden;clear:right}}.notice.vpf-saved-layouts-notice{padding:11px 15px;margin-top:15px;font-size:14px;line-height:1.4}.notice.vpf-saved-layouts-notice h2{margin-top:5px;margin-bottom:12px}.notice.vpf-saved-layouts-notice p{font-size:15px}.notice.vpf-saved-layouts-notice svg{display:inline-block;width:1.3em;height:1.3em;margin-right:.2em;vertical-align:-.28em}.vp-portfolio-list__icon{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;color:inherit;color:#868686;background-color:#f1f1f1;border:1px solid #e8e8e8;border-radius:3px}.vp-portfolio-list__icon:hover,.vp-portfolio-list__icon:active,.vp-portfolio-list__icon:focus{color:#5f5f5f}.vp-portfolio-list__icon svg{position:absolute;display:block;top:15%;left:15%;width:70%;height:70%;-o-object-fit:cover;object-fit:cover}.portfolio_page_visual-portfolio-settings .description{opacity:.7}.portfolio_page_visual-portfolio-settings .metabox-holder .notice{padding:15px}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro>td{pointer-events:none}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .description{opacity:.3}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:18px;height:18px;margin-left:10px;font-family:sans-serif;font-size:11px;line-height:18px;color:#fff;text-align:center;cursor:pointer;background-color:#4c4c4c;border-radius:10px}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label>span{position:absolute;display:none;bottom:100%;width:130px;padding:5px;margin-bottom:10px;background-color:rgba(0,0,0,0.8);border-radius:4px;z-index:9990}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label:hover>span,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label:focus>span{display:block}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_xs .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_sm .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_md .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_lg .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_xl .vpf-settings-control-pro-label{display:none}.portfolio_page_visual-portfolio-settings .social_pro_info>th{display:none}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro{max-width:240px;padding:20px;text-align:center;background-color:#e2e2e2;border-radius:4px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro h3{margin-top:0;margin-bottom:15px;font-size:13px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro p{margin-bottom:1em;font-size:13px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button{display:inline-block;padding:7px 15px;margin-top:5px;text-decoration:none;background:#2540cc;border-radius:3px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:hover,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:focus,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:active{color:#fff}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:hover,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:focus{background:#314cda}#vp_social_integrations h2,#vp_social_integrations .submit{display:none}
2
  * Name : Visual Portfolio
3
  * Version : @@plugin_version
4
  * Author : nK https://nkdev.info
5
+ */#adminmenu a[href*="page=visual_portfolio_go_pro"],.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]{font-weight:700;color:#ff6a38}#adminmenu a[href*="page=visual_portfolio_go_pro"] .dashicons,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"] .dashicons{-webkit-transition:none;-o-transition:none;transition:none}#adminmenu a[href*="page=visual_portfolio_go_pro"]:hover,#adminmenu a[href*="page=visual_portfolio_go_pro"]:focus,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]:hover,.wp-list-table.plugins a[href*="page=visual_portfolio_go_pro"]:focus{color:#f59372}.dashicons-visual-portfolio,.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon.svg");background-repeat:no-repeat;background-position:center center;background-size:18px;opacity:.6}.mce-widget .mce-i-visual-portfolio{background-image:url("../images/icon-mce.svg");opacity:1}.menu-top.current .dashicons-visual-portfolio,.menu-top:hover .dashicons-visual-portfolio,.wp-has-current-submenu .dashicons-visual-portfolio{opacity:1}.vc_element-icon[data-is-container="true"].icon-visual-portfolio,.vc_element-icon.icon-visual-portfolio{background-position:50% 50%}.vc_element-icon.icon-visual-portfolio,.vc_control-visual-portfolio{position:relative;overflow:hidden;background-image:url("../images/icon-gutenberg.svg");background-position:50% 50%;background-size:cover;border-radius:3px}.vc_add-element-container .icon-visual-portfolio{position:absolute}.vc_control-visual-portfolio{display:inline-block;width:18px;height:18px;margin:0 2px;cursor:pointer}.vc_controls-row .vc_control-visual-portfolio{float:right;margin:4px}.vc_control-visual-portfolio-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.vp-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-sizing:border-box;box-sizing:border-box;margin-right:-15px;margin-left:-15px}.vp-col-1,.vp-col-2,.vp-col-3,.vp-col-4,.vp-col-5,.vp-col-6,.vp-col-7,.vp-col-8,.vp-col-9,.vp-col-10,.vp-col-11,.vp-col-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:15px;padding-left:15px}.vp-col-1{-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%;max-width:8.33333%}.vp-col-2{-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%;max-width:16.66667%}.vp-col-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.vp-col-4{-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%;max-width:33.33333%}.vp-col-5{-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%;max-width:41.66667%}.vp-col-6{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.vp-col-7{-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%;max-width:58.33333%}.vp-col-8{-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%;max-width:66.66667%}.vp-col-9{-ms-flex-preferred-size:75%;flex-basis:75%;max-width:75%}.vp-col-10{-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%;max-width:83.33333%}.vp-col-11{-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%;max-width:91.66667%}.vp-col-12{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.vp-col-clearfix .vp-control-html{margin-bottom:0}.vp-oembed-preview{position:relative;width:100%;padding-top:56.25%;color:#a2a2a2;background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-oembed-preview::after{content:"\f126";position:absolute;display:block;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;z-index:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vp-oembed-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.vpf-post-image-focal-point-panel .components-focal-point-picker_position-display-container .components-base-control__label{max-width:100%}.vpf-post-image-focal-point-panel .components-focal-point-picker_position-display-container .components-base-control{margin-bottom:0}.vpf-post-image-focal-point-panel ~ .editor-post-featured-image .editor-post-featured-image__preview{display:none}.vp-input{width:100%}.vp-portfolio__thumbnail{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;border-radius:3px}.vp-portfolio__thumbnail img{position:absolute;display:block;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.vp-portfolio__thumbnail:empty{background-color:#f1f1f1;border:1px solid #e8e8e8}.vp-portfolio__thumbnail:empty,.vp-portfolio__thumbnail:empty:hover,.vp-portfolio__thumbnail:empty:active,.vp-portfolio__thumbnail:empty:focus{color:#a2a2a2}.vp-portfolio__thumbnail:empty::after{content:"\f128";position:absolute;display:block;top:50%;left:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:dashicons;font-size:20px;font-style:normal;font-weight:400;line-height:1;text-align:center;text-decoration:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-list-table th.column-portfolio_post_thumbs{width:70px}.wp-list-table th.column-vp_lists_post_icon{width:28px}.wp-list-table th.column-vp_lists_post_shortcode{width:250px}@media screen and (max-width: 782px){.wp-list-table th.column-portfolio_post_thumbs,.wp-list-table th.column-vp_lists_post_icon{display:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-vp_lists_post_icon{float:left;width:70px !important;min-width:70px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-vp_lists_post_icon{width:40px !important}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-portfolio_post_thumbs::before{content:none}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-title{overflow:hidden;clear:right}}.notice.vpf-saved-layouts-notice{padding:11px 15px;margin-top:15px;font-size:14px;line-height:1.4}.notice.vpf-saved-layouts-notice h2{margin-top:5px;margin-bottom:12px}.notice.vpf-saved-layouts-notice p{font-size:15px}.notice.vpf-saved-layouts-notice svg{display:inline-block;width:1.3em;height:1.3em;margin-right:.2em;vertical-align:-.28em}.vp-portfolio-list__icon{position:relative;display:block;max-width:70px;padding-top:100%;overflow:hidden;color:inherit;color:#868686;background-color:#f1f1f1;border:1px solid #e8e8e8;border-radius:3px}.vp-portfolio-list__icon:hover,.vp-portfolio-list__icon:active,.vp-portfolio-list__icon:focus{color:#5f5f5f}.vp-portfolio-list__icon svg{position:absolute;display:block;top:15%;left:15%;width:70%;height:70%;-o-object-fit:cover;object-fit:cover}.portfolio_page_visual-portfolio-settings .description{opacity:.7}.portfolio_page_visual-portfolio-settings .wpsa-image-remove{display:none;margin-left:10px}.portfolio_page_visual-portfolio-settings .metabox-holder .notice{padding:15px}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro>td{pointer-events:none}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .description{opacity:.3}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:18px;height:18px;margin-left:10px;font-family:sans-serif;font-size:11px;line-height:18px;color:#fff;text-align:center;cursor:pointer;background-color:#4c4c4c;border-radius:10px}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label>span{position:absolute;display:none;bottom:100%;width:130px;padding:5px;margin-bottom:10px;background-color:rgba(0,0,0,0.8);border-radius:4px;z-index:9990}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label:hover>span,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro .vpf-settings-control-pro-label:focus>span{display:block}.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_xs .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_sm .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_md .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_lg .vpf-settings-control-pro-label,.portfolio_page_visual-portfolio-settings .vpf-settings-control-pro.breakpoint_xl .vpf-settings-control-pro-label{display:none}.portfolio_page_visual-portfolio-settings .social_pro_info>th{display:none}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro{max-width:240px;padding:20px;text-align:center;background-color:#e2e2e2;border-radius:4px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro h3{margin-top:0;margin-bottom:15px;font-size:13px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro p{margin-bottom:1em;font-size:13px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button{display:inline-block;padding:7px 15px;margin-top:5px;text-decoration:none;background:#2540cc;border-radius:3px}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:hover,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:focus,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:active{color:#fff}.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:hover,.portfolio_page_visual-portfolio-settings .vpf-settings-info-pro-button:focus{background:#314cda}#vp_social_integrations h2,#vp_social_integrations .submit{display:none}
assets/admin/js/elementor.js CHANGED
@@ -2,7 +2,7 @@
2
  * Additional js for Elementor
3
  *
4
  * Name : Visual Portfolio
5
- * Version : 2.9.1
6
  * Author : nK https://nkdev.info
7
  */
8
  import { throttle } from 'throttle-debounce';
2
  * Additional js for Elementor
3
  *
4
  * Name : Visual Portfolio
5
+ * Version : 2.10.0
6
  * Author : nK https://nkdev.info
7
  */
8
  import { throttle } from 'throttle-debounce';
assets/admin/js/mce-dropdown.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 2.9.1
4
  * Author : nK https://nkdev.info
5
  */
6
  const {
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 2.10.0
4
  * Author : nK https://nkdev.info
5
  */
6
  const {
assets/admin/js/script.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 2.9.1
4
  * Author : nK https://nkdev.info
5
  */
6
  import { debounce } from 'throttle-debounce';
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 2.10.0
4
  * Author : nK https://nkdev.info
5
  */
6
  import { debounce } from 'throttle-debounce';
assets/admin/js/vc-frontend.js CHANGED
@@ -2,7 +2,7 @@
2
  * Additional js for frontend VC
3
  *
4
  * Name : Visual Portfolio
5
- * Version : 2.9.1
6
  * Author : nK https://nkdev.info
7
  */
8
  const {
2
  * Additional js for frontend VC
3
  *
4
  * Name : Visual Portfolio
5
+ * Version : 2.10.0
6
  * Author : nK https://nkdev.info
7
  */
8
  const {
assets/js/main.js CHANGED
@@ -433,8 +433,10 @@ class VP {
433
  const ml = parseFloat( self.$item.css( 'margin-left' ) || 0 );
434
  const mr = parseFloat( self.$item.css( 'margin-right' ) || 0 );
435
  self.$item.css( {
436
- 'margin-left': ml - left,
437
- 'margin-right': mr - right,
 
 
438
  } );
439
  }
440
  if ( self.$item.hasClass( 'vp-portfolio__stretch' ) && ! self.isPreview() ) {
@@ -676,6 +678,9 @@ class VP {
676
  const ajaxData = {
677
  method: 'POST',
678
  url,
 
 
 
679
  complete( { responseText } ) {
680
  self.href = url;
681
  self.replaceItems( responseText, removeExisting, cb );
433
  const ml = parseFloat( self.$item.css( 'margin-left' ) || 0 );
434
  const mr = parseFloat( self.$item.css( 'margin-right' ) || 0 );
435
  self.$item.css( {
436
+ marginLeft: ml - left,
437
+ marginRight: mr - right,
438
+ maxWidth: 'none',
439
+ width: 'auto',
440
  } );
441
  }
442
  if ( self.$item.hasClass( 'vp-portfolio__stretch' ) && ! self.isPreview() ) {
678
  const ajaxData = {
679
  method: 'POST',
680
  url,
681
+ data: {
682
+ vpf_ajax_call: true,
683
+ },
684
  complete( { responseText } ) {
685
  self.href = url;
686
  self.replaceItems( responseText, removeExisting, cb );
assets/js/main.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){var i={};function e(o){if(i[o])return i[o].exports;var n=i[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,e),n.l=!0,n.exports}e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:o})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,i){if(1&i&&(t=e(t)),8&i)return t;if(4&i&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(e.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&i&&"string"!=typeof t)for(var n in t)e.d(o,n,function(i){return t[i]}.bind(null,n));return o},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},e.p="",e(e.s=237)}({237:function(t,i,e){t.exports=e(238)},238:function(t,i,e){"use strict";e.r(i);var o=e(3),n=e(4);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,i){for(var e=0;e<i.length;e++){var o=i[e];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var a=window,l=a.jQuery,c=a.VPData.__,f=l(window);function p(){if("function"==typeof window.Event)window.dispatchEvent(new window.Event("resize"));else{var t=window.document.createEvent("UIEvents");t.initUIEvent("resize",!0,!1,window,0),window.dispatchEvent(t)}}var v={},d=!1,u=!1;function h(){if(clearTimeout(u),d){var t=l(".vp-portfolio__ready");if(t.length){var i=!1;t.each((function(){var t=this.vpf;if(t){var e=v[t.uid]||"none";v[t.uid]=null===this.offsetParent?"hidden":"visible","hidden"===e&&"visible"===v[t.uid]&&(i=!0)}})),i&&p()}else d=!1;u=setTimeout(h,500)}}l(document).on("inited.vpf",(function(t){"vpf"===t.namespace&&(d=!0,h())}));var m=function(){function t(i,e){!function(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}(this,t);this.$item=i;for(var o=i[0].className.split(/\s+/),n=0;n<o.length;n+=1)o[n]&&/^vp-uid-/.test(o[n])&&(this.uid=o[n].replace(/^vp-uid-/,"")),o[n]&&/^vp-id-/.test(o[n])&&(this.id=o[n].replace(/^vp-id-/,""));this.uid?(this.href=window.location.href,this.$items_wrap=i.find(".vp-portfolio__items"),this.$slider_thumbnails_wrap=i.find(".vp-portfolio__thumbnails"),this.$pagination=i.find(".vp-portfolio__pagination-wrap"),this.$filter=i.find(".vp-portfolio__filter-wrap"),this.$sort=i.find(".vp-portfolio__sort-wrap"),this.id&&(this.$filter=this.$filter.add(".vp-single-filter.vp-id-".concat(this.id," .vp-portfolio__filter-wrap"))),this.id&&(this.$sort=this.$sort.add(".vp-single-sort.vp-id-".concat(this.id," .vp-portfolio__sort-wrap"))),this.userOptions=e,this.firstRun=!0,this.init()):console.error(c.couldnt_retrieve_vp)}var i,e,o;return i=t,(e=[{key:"emitEvent",value:function(t,i){i=i?[this].concat(i):[this],this.$item.trigger("".concat(t,".vpf"),i),this.$item.trigger("".concat(t,".vpf-uid-").concat(this.uid),i)}},{key:"init",value:function(){this.firstRun||this.destroy(),this.destroyed=!1,this.removeNoscriptTags(this.$items_wrap),this.initOptions(),this.initEvents(),this.initLayout(),this.initCustomColors(),this.emitEvent("init"),this.$item.addClass("vp-portfolio__ready"),this.id&&(l(".vp-single-filter.vp-id-".concat(this.id)).addClass("vp-single-filter__ready"),l(".vp-single-sort.vp-id-".concat(this.id)).addClass("vp-single-sort__ready")),this.resized(),this.imagesLoaded(),this.emitEvent("inited"),this.firstRun=!1}},{key:"isPreview",value:function(){return!!this.$item.closest("#vp_preview").length}},{key:"resized",value:function(){p(),this.emitEvent("resized")}},{key:"imagesLoaded",value:function(){var t=this;this.$items_wrap.imagesLoaded&&this.$items_wrap.imagesLoaded((function(){t.emitEvent("imagesLoaded")}))}},{key:"destroy",value:function(){this.$item.removeClass("vp-portfolio__ready"),this.id&&(l(".vp-single-filter.vp-id-".concat(this.id)).removeClass("vp-single-filter__ready"),l(".vp-single-sort.vp-id-".concat(this.id)).removeClass("vp-single-sort__ready")),this.destroyEvents(),this.removeStyle(),this.renderStyle(),this.emitEvent("destroy"),this.destroyed=!0}},{key:"addStyle",value:function(t,i,e){e=e||"";var o=this.uid;this.stylesList||(this.stylesList={}),void 0===this.stylesList[o]&&(this.stylesList[o]={}),void 0===this.stylesList[o][e]&&(this.stylesList[o][e]={}),void 0===this.stylesList[o][e][t]&&(this.stylesList[o][e][t]={}),this.stylesList[o][e][t]=l.extend(this.stylesList[o][e][t],i),this.emitEvent("addStyle",[t,i,e,this.stylesList])}},{key:"removeStyle",value:function(t,i,e){e=e||"";var o=this.uid;this.stylesList||(this.stylesList={}),void 0===this.stylesList[o]||t||(this.stylesList[o]={}),void 0!==this.stylesList[o]&&void 0!==this.stylesList[o][e]&&void 0!==this.stylesList[o][e][t]&&t&&delete this.stylesList[o][e][t],this.emitEvent("removeStyle",[t,i,this.stylesList])}},{key:"renderStyle",value:function(){var t=this,i=t.uid,e="";t.stylesList||(t.stylesList={}),void 0!==t.stylesList[i]&&Object.keys(t.stylesList[i]).forEach((function(o){o&&(e+="@media ".concat(o," {")),Object.keys(t.stylesList[i][o]).forEach((function(n){e+=".vp-uid-".concat(i," ").concat(n," {"),Object.keys(t.stylesList[i][o][n]).forEach((function(s){e+="".concat(s,":").concat(t.stylesList[i][o][n][s],";")})),e+="}"})),o&&(e+="}")}));var o=l("#vp-style-".concat(i));o.length||(o=l("<style>").attr("id","vp-style-".concat(i)).appendTo("head")),o.html(e),t.emitEvent("renderStyle",[e,t.stylesList,o])}},{key:"firstToLowerCase",value:function(t){return t.substr(0,1).toLowerCase()+t.substr(1)}},{key:"initOptions",value:function(t){var i=this;i.defaults={layout:"tile",itemsGap:0,pagination:"load-more"},t&&(i.userOptions=t);var e=i.$item[0].dataset,o={};Object.keys(e).forEach((function(t){t&&"vp"===t.substring(0,2)&&(o[i.firstToLowerCase(t.substring(2))]=e[t])})),i.options=l.extend({},i.defaults,o,i.userOptions),i.emitEvent("initOptions")}},{key:"initEvents",value:function(){var t,i=this,e=".vpf-uid-".concat(i.uid);function o(){var t=i.$item[0].getBoundingClientRect(),e=t.left,o=window.innerWidth-t.right,n=parseFloat(i.$item.css("margin-left")||0),s=parseFloat(i.$item.css("margin-right")||0);i.$item.css({"margin-left":n-e,"margin-right":s-o})}function n(){var e=i.$item[0].getBoundingClientRect();0<e.bottom&&e.bottom-250<=window.innerHeight&&i.loadNewItems(i.options.nextPageUrl,!1,(function(){clearTimeout(t),t=setTimeout((function(){n()}),300)}))}i.$item.hasClass("vp-portfolio__stretch")&&!i.isPreview()&&(f.on("load".concat(e," resize").concat(e," orientationchange").concat(e),(function(){o()})),o()),i.$item.on("focus".concat(e),".vp-portfolio__item a",(function(){l(this).closest(".vp-portfolio__item").addClass("vp-portfolio__item-focus")})),i.$item.on("blur".concat(e),".vp-portfolio__item a",(function(){l(this).closest(".vp-portfolio__item").removeClass("vp-portfolio__item-focus")})),i.$filter.on("click".concat(e),".vp-filter .vp-filter__item a",(function(t){t.preventDefault();var e=l(this);i.loading||e.closest(".vp-filter__item").addClass("vp-filter__item-active").siblings().removeClass("vp-filter__item-active"),i.loadNewItems(e.attr("href"),!0)})),i.$sort.on("click".concat(e),".vp-sort .vp-sort__item a",(function(t){t.preventDefault();var e=l(this);i.loading||e.closest(".vp-sort__item").addClass("vp-sort__item-active").siblings().removeClass("vp-sort__item-active"),i.loadNewItems(e.attr("href"),!0)})),i.$filter.add(i.$sort).on("change".concat(e),".vp-filter select, .vp-sort select",(function(){var t=l(this),e=t.val(),o=t.find('[value="'.concat(e,'"]'));o.length&&i.loadNewItems(o.attr("data-vp-url"),!0)})),i.$item.on("click".concat(e),".vp-pagination .vp-pagination__item a",(function(t){t.preventDefault();var e=l(this),o=e.closest(".vp-pagination");if((!o.hasClass("vp-pagination__no-more")||"paged"===i.options.pagination)&&(i.loadNewItems(e.attr("href"),"paged"===i.options.pagination),"paged"===i.options.pagination&&o.hasClass("vp-pagination__scroll-top"))){var n=l("#wpadminbar"),s=window.pageYOffset||document.documentElement.scrollTop,r=i.$item.offset().top;o.attr("data-vp-pagination-scroll-top")&&(r-=parseInt(o.attr("data-vp-pagination-scroll-top"),10)||0),n.length&&"fixed"===n.css("position")&&(r-=n.outerHeight()),s>(r=Math.max(0,r))&&window.scrollTo({top:r,behavior:"smooth"})}})),i.$item.on("click".concat(e),".vp-portfolio__items .vp-portfolio__item-meta-category a",(function(t){t.preventDefault(),t.stopPropagation(),i.loadNewItems(l(this).attr("href"),!0)})),"infinite"===i.options.pagination&&(f.on("load".concat(e," scroll").concat(e," resize").concat(e," orientationchange").concat(e),(function(){clearTimeout(t),t=setTimeout((function(){n()}),60)})),n()),i.$item.on("transitionend".concat(e),".vp-portfolio__items",(function(t){t.currentTarget===t.target&&i.resized()})),i.emitEvent("initEvents")}},{key:"destroyEvents",value:function(){var t=".vpf-uid-".concat(this.uid);this.$item.off(t),this.$filter.off(t),this.$sort.off(t),f.off(t),this.emitEvent("destroyEvents")}},{key:"removeNoscriptTags",value:function(t){t.find("noscript").remove()}},{key:"initLayout",value:function(){this.emitEvent("initLayout"),this.renderStyle()}},{key:"initCustomColors",value:function(){var t=this;t.$item.find("[data-vp-bg-color]").each((function(){var i=l(this).attr("data-vp-bg-color");t.addStyle('[data-vp-bg-color="'.concat(i,'"]'),{"background-color":"".concat(i," !important")})})),t.$item.find("[data-vp-text-color]").each((function(){var i=l(this).attr("data-vp-text-color");t.addStyle('[data-vp-text-color="'.concat(i,'"]'),{color:"".concat(i," !important")})})),t.renderStyle(),t.emitEvent("initCustomColors")}},{key:"addItems",value:function(t,i,e){this.removeNoscriptTags(t),this.emitEvent("addItems",[t,i,e])}},{key:"removeItems",value:function(t){this.emitEvent("removeItems",[t])}},{key:"loadNewItems",value:function(t,i,e){var o=this;if(!o.loading&&t&&o.href!==t){var n={method:"POST",url:t,complete:function(n){var s=n.responseText;o.href=t,o.replaceItems(s,i,e)}};o.loading=!0,o.$item.addClass("vp-portfolio__loading"),o.emitEvent("startLoadingNewItems",[t,n]),l.ajax(n)}}},{key:"replaceItems",value:function(t,i,e){if(t){t=t.replace("<body",'<body><div id="vp-infinite-load-body"').replace("</body>","</div></body>");var o=l(t).filter("#vp-infinite-load-body"),n=o.find(".vp-portfolio.vp-uid-".concat(this.uid));if(n.length){var s=n.find(".vp-portfolio__items").html();n.hasClass("vp-portfolio-not-found")?(this.$item.find(".vp-portfolio__items-wrap").before(n.find(".vp-notice").clone()),this.$item.addClass("vp-portfolio-not-found")):(this.$item.find(".vp-notice").remove(),this.$item.removeClass("vp-portfolio-not-found")),this.$filter.length&&this.$filter.each((function(){var t=l(this),i="";i=t.parent().hasClass("vp-single-filter")?o.find('[class="'.concat(t.parent().attr("class").replace(" vp-single-filter__ready",""),'"] .vp-portfolio__filter-wrap')).html():n.find(".vp-portfolio__filter-wrap").html(),t.html(i)})),this.$sort.length&&this.$sort.each((function(){var t=l(this),i="";i=t.parent().hasClass("vp-single-sort")?o.find('[class="'.concat(t.parent().attr("class").replace(" vp-single-sort__ready",""),'"] .vp-portfolio__sort-wrap')).html():n.find(".vp-portfolio__sort-wrap").html(),t.html(i)})),this.$pagination.length&&this.$pagination.html(n.find(".vp-portfolio__pagination-wrap").html()),this.addItems(l(s),i,n),this.emitEvent("loadedNewItems",[n,i,t]),e&&e()}var r=n.attr("data-vp-next-page-url");this.options.nextPageUrl=r,this.$item.attr("data-vp-next-page-url",r),this.$item.removeClass("vp-portfolio__loading"),this.loading=!1,this.emitEvent("endLoadingNewItems"),this.imagesLoaded(),this.initCustomColors()}}}])&&r(i.prototype,e),o&&r(i,o),t}();l(".elementor").length&&l(document).on("init.vpf addItems.vpf",(function(t,i){"vpf"===t.namespace&&i.$item.find(".vp-portfolio__item a").each((function(){/\.(png|jpe?g|gif|svg)(\?.*)?$/i.test(this.href)&&l(this).attr("data-elementor-open-lightbox","no")}))})),l(document).trigger("extendClass.vpf",[m]);var y=function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),o=1;o<i;o++)e[o-1]=arguments[o];var n;return this.each((function(){if(void 0===n)if("object"===s(t)||void 0===t)this.vpf||(this.vpf=new m(l(this),t));else if(this.vpf){var i;n=(i=this.vpf)[t].apply(i,e)}})),void 0!==n?n:this};y.constructor=m;var g=l.fn.vpf;l.fn.vpf=y,l.fn.vpf.noConflict=function(){return l.fn.vpf=g,this},l(".vp-portfolio").vpf(),l((function(){l(".vp-portfolio").vpf()}));var _=Object(o.throttle)(200,Object(n.a)((function(){l(".vp-portfolio:not(.vp-portfolio__ready)").vpf()})));window.MutationObserver?new window.MutationObserver(_).observe(document.documentElement,{childList:!0,subtree:!0}):l(document).on("DOMContentLoaded DOMNodeInserted load",(function(){_()}))},3:function(t,i,e){var o,n,s,r;function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}r=function(t){"use strict";function i(t,i,e,o){var n,s=!1,r=0;function a(){n&&clearTimeout(n)}function l(){for(var l=arguments.length,c=new Array(l),f=0;f<l;f++)c[f]=arguments[f];var p=this,v=Date.now()-r;function d(){r=Date.now(),e.apply(p,c)}function u(){n=void 0}s||(o&&!n&&d(),a(),void 0===o&&v>t?d():!0!==i&&(n=setTimeout(o?u:d,void 0===o?t-v:t)))}return"boolean"!=typeof i&&(o=e,e=i,i=void 0),l.cancel=function(){a(),s=!0},l}t.debounce=function(t,e,o){return void 0===o?i(t,e,!1):i(t,o,!1!==e)},t.throttle=i,Object.defineProperty(t,"__esModule",{value:!0})},"object"===a(i)&&void 0!==t?r(i):(n=[i],void 0===(s="function"==typeof(o=r)?o.apply(i,n):o)||(t.exports=s))},4:function(t,i,e){"use strict";i.a=function(t){var i=[],e=null,o=function(){for(var o=arguments.length,n=new Array(o),s=0;s<o;s++)n[s]=arguments[s];i=n,e||(e=requestAnimationFrame((function(){e=null,t.apply(void 0,i)})))};return o.cancel=function(){e&&(cancelAnimationFrame(e),e=null)},o}}});
1
+ !function(t){var i={};function e(o){if(i[o])return i[o].exports;var n=i[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,e),n.l=!0,n.exports}e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:o})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,i){if(1&i&&(t=e(t)),8&i)return t;if(4&i&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(e.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&i&&"string"!=typeof t)for(var n in t)e.d(o,n,function(i){return t[i]}.bind(null,n));return o},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},e.p="",e(e.s=237)}({237:function(t,i,e){t.exports=e(238)},238:function(t,i,e){"use strict";e.r(i);var o=e(3),n=e(4);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,i){for(var e=0;e<i.length;e++){var o=i[e];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var a=window,l=a.jQuery,c=a.VPData.__,f=l(window);function p(){if("function"==typeof window.Event)window.dispatchEvent(new window.Event("resize"));else{var t=window.document.createEvent("UIEvents");t.initUIEvent("resize",!0,!1,window,0),window.dispatchEvent(t)}}var v={},d=!1,u=!1;function h(){if(clearTimeout(u),d){var t=l(".vp-portfolio__ready");if(t.length){var i=!1;t.each((function(){var t=this.vpf;if(t){var e=v[t.uid]||"none";v[t.uid]=null===this.offsetParent?"hidden":"visible","hidden"===e&&"visible"===v[t.uid]&&(i=!0)}})),i&&p()}else d=!1;u=setTimeout(h,500)}}l(document).on("inited.vpf",(function(t){"vpf"===t.namespace&&(d=!0,h())}));var m=function(){function t(i,e){!function(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}(this,t);this.$item=i;for(var o=i[0].className.split(/\s+/),n=0;n<o.length;n+=1)o[n]&&/^vp-uid-/.test(o[n])&&(this.uid=o[n].replace(/^vp-uid-/,"")),o[n]&&/^vp-id-/.test(o[n])&&(this.id=o[n].replace(/^vp-id-/,""));this.uid?(this.href=window.location.href,this.$items_wrap=i.find(".vp-portfolio__items"),this.$slider_thumbnails_wrap=i.find(".vp-portfolio__thumbnails"),this.$pagination=i.find(".vp-portfolio__pagination-wrap"),this.$filter=i.find(".vp-portfolio__filter-wrap"),this.$sort=i.find(".vp-portfolio__sort-wrap"),this.id&&(this.$filter=this.$filter.add(".vp-single-filter.vp-id-".concat(this.id," .vp-portfolio__filter-wrap"))),this.id&&(this.$sort=this.$sort.add(".vp-single-sort.vp-id-".concat(this.id," .vp-portfolio__sort-wrap"))),this.userOptions=e,this.firstRun=!0,this.init()):console.error(c.couldnt_retrieve_vp)}var i,e,o;return i=t,(e=[{key:"emitEvent",value:function(t,i){i=i?[this].concat(i):[this],this.$item.trigger("".concat(t,".vpf"),i),this.$item.trigger("".concat(t,".vpf-uid-").concat(this.uid),i)}},{key:"init",value:function(){this.firstRun||this.destroy(),this.destroyed=!1,this.removeNoscriptTags(this.$items_wrap),this.initOptions(),this.initEvents(),this.initLayout(),this.initCustomColors(),this.emitEvent("init"),this.$item.addClass("vp-portfolio__ready"),this.id&&(l(".vp-single-filter.vp-id-".concat(this.id)).addClass("vp-single-filter__ready"),l(".vp-single-sort.vp-id-".concat(this.id)).addClass("vp-single-sort__ready")),this.resized(),this.imagesLoaded(),this.emitEvent("inited"),this.firstRun=!1}},{key:"isPreview",value:function(){return!!this.$item.closest("#vp_preview").length}},{key:"resized",value:function(){p(),this.emitEvent("resized")}},{key:"imagesLoaded",value:function(){var t=this;this.$items_wrap.imagesLoaded&&this.$items_wrap.imagesLoaded((function(){t.emitEvent("imagesLoaded")}))}},{key:"destroy",value:function(){this.$item.removeClass("vp-portfolio__ready"),this.id&&(l(".vp-single-filter.vp-id-".concat(this.id)).removeClass("vp-single-filter__ready"),l(".vp-single-sort.vp-id-".concat(this.id)).removeClass("vp-single-sort__ready")),this.destroyEvents(),this.removeStyle(),this.renderStyle(),this.emitEvent("destroy"),this.destroyed=!0}},{key:"addStyle",value:function(t,i,e){e=e||"";var o=this.uid;this.stylesList||(this.stylesList={}),void 0===this.stylesList[o]&&(this.stylesList[o]={}),void 0===this.stylesList[o][e]&&(this.stylesList[o][e]={}),void 0===this.stylesList[o][e][t]&&(this.stylesList[o][e][t]={}),this.stylesList[o][e][t]=l.extend(this.stylesList[o][e][t],i),this.emitEvent("addStyle",[t,i,e,this.stylesList])}},{key:"removeStyle",value:function(t,i,e){e=e||"";var o=this.uid;this.stylesList||(this.stylesList={}),void 0===this.stylesList[o]||t||(this.stylesList[o]={}),void 0!==this.stylesList[o]&&void 0!==this.stylesList[o][e]&&void 0!==this.stylesList[o][e][t]&&t&&delete this.stylesList[o][e][t],this.emitEvent("removeStyle",[t,i,this.stylesList])}},{key:"renderStyle",value:function(){var t=this,i=t.uid,e="";t.stylesList||(t.stylesList={}),void 0!==t.stylesList[i]&&Object.keys(t.stylesList[i]).forEach((function(o){o&&(e+="@media ".concat(o," {")),Object.keys(t.stylesList[i][o]).forEach((function(n){e+=".vp-uid-".concat(i," ").concat(n," {"),Object.keys(t.stylesList[i][o][n]).forEach((function(s){e+="".concat(s,":").concat(t.stylesList[i][o][n][s],";")})),e+="}"})),o&&(e+="}")}));var o=l("#vp-style-".concat(i));o.length||(o=l("<style>").attr("id","vp-style-".concat(i)).appendTo("head")),o.html(e),t.emitEvent("renderStyle",[e,t.stylesList,o])}},{key:"firstToLowerCase",value:function(t){return t.substr(0,1).toLowerCase()+t.substr(1)}},{key:"initOptions",value:function(t){var i=this;i.defaults={layout:"tile",itemsGap:0,pagination:"load-more"},t&&(i.userOptions=t);var e=i.$item[0].dataset,o={};Object.keys(e).forEach((function(t){t&&"vp"===t.substring(0,2)&&(o[i.firstToLowerCase(t.substring(2))]=e[t])})),i.options=l.extend({},i.defaults,o,i.userOptions),i.emitEvent("initOptions")}},{key:"initEvents",value:function(){var t,i=this,e=".vpf-uid-".concat(i.uid);function o(){var t=i.$item[0].getBoundingClientRect(),e=t.left,o=window.innerWidth-t.right,n=parseFloat(i.$item.css("margin-left")||0),s=parseFloat(i.$item.css("margin-right")||0);i.$item.css({marginLeft:n-e,marginRight:s-o,maxWidth:"none",width:"auto"})}function n(){var e=i.$item[0].getBoundingClientRect();0<e.bottom&&e.bottom-250<=window.innerHeight&&i.loadNewItems(i.options.nextPageUrl,!1,(function(){clearTimeout(t),t=setTimeout((function(){n()}),300)}))}i.$item.hasClass("vp-portfolio__stretch")&&!i.isPreview()&&(f.on("load".concat(e," resize").concat(e," orientationchange").concat(e),(function(){o()})),o()),i.$item.on("focus".concat(e),".vp-portfolio__item a",(function(){l(this).closest(".vp-portfolio__item").addClass("vp-portfolio__item-focus")})),i.$item.on("blur".concat(e),".vp-portfolio__item a",(function(){l(this).closest(".vp-portfolio__item").removeClass("vp-portfolio__item-focus")})),i.$filter.on("click".concat(e),".vp-filter .vp-filter__item a",(function(t){t.preventDefault();var e=l(this);i.loading||e.closest(".vp-filter__item").addClass("vp-filter__item-active").siblings().removeClass("vp-filter__item-active"),i.loadNewItems(e.attr("href"),!0)})),i.$sort.on("click".concat(e),".vp-sort .vp-sort__item a",(function(t){t.preventDefault();var e=l(this);i.loading||e.closest(".vp-sort__item").addClass("vp-sort__item-active").siblings().removeClass("vp-sort__item-active"),i.loadNewItems(e.attr("href"),!0)})),i.$filter.add(i.$sort).on("change".concat(e),".vp-filter select, .vp-sort select",(function(){var t=l(this),e=t.val(),o=t.find('[value="'.concat(e,'"]'));o.length&&i.loadNewItems(o.attr("data-vp-url"),!0)})),i.$item.on("click".concat(e),".vp-pagination .vp-pagination__item a",(function(t){t.preventDefault();var e=l(this),o=e.closest(".vp-pagination");if((!o.hasClass("vp-pagination__no-more")||"paged"===i.options.pagination)&&(i.loadNewItems(e.attr("href"),"paged"===i.options.pagination),"paged"===i.options.pagination&&o.hasClass("vp-pagination__scroll-top"))){var n=l("#wpadminbar"),s=window.pageYOffset||document.documentElement.scrollTop,r=i.$item.offset().top;o.attr("data-vp-pagination-scroll-top")&&(r-=parseInt(o.attr("data-vp-pagination-scroll-top"),10)||0),n.length&&"fixed"===n.css("position")&&(r-=n.outerHeight()),s>(r=Math.max(0,r))&&window.scrollTo({top:r,behavior:"smooth"})}})),i.$item.on("click".concat(e),".vp-portfolio__items .vp-portfolio__item-meta-category a",(function(t){t.preventDefault(),t.stopPropagation(),i.loadNewItems(l(this).attr("href"),!0)})),"infinite"===i.options.pagination&&(f.on("load".concat(e," scroll").concat(e," resize").concat(e," orientationchange").concat(e),(function(){clearTimeout(t),t=setTimeout((function(){n()}),60)})),n()),i.$item.on("transitionend".concat(e),".vp-portfolio__items",(function(t){t.currentTarget===t.target&&i.resized()})),i.emitEvent("initEvents")}},{key:"destroyEvents",value:function(){var t=".vpf-uid-".concat(this.uid);this.$item.off(t),this.$filter.off(t),this.$sort.off(t),f.off(t),this.emitEvent("destroyEvents")}},{key:"removeNoscriptTags",value:function(t){t.find("noscript").remove()}},{key:"initLayout",value:function(){this.emitEvent("initLayout"),this.renderStyle()}},{key:"initCustomColors",value:function(){var t=this;t.$item.find("[data-vp-bg-color]").each((function(){var i=l(this).attr("data-vp-bg-color");t.addStyle('[data-vp-bg-color="'.concat(i,'"]'),{"background-color":"".concat(i," !important")})})),t.$item.find("[data-vp-text-color]").each((function(){var i=l(this).attr("data-vp-text-color");t.addStyle('[data-vp-text-color="'.concat(i,'"]'),{color:"".concat(i," !important")})})),t.renderStyle(),t.emitEvent("initCustomColors")}},{key:"addItems",value:function(t,i,e){this.removeNoscriptTags(t),this.emitEvent("addItems",[t,i,e])}},{key:"removeItems",value:function(t){this.emitEvent("removeItems",[t])}},{key:"loadNewItems",value:function(t,i,e){var o=this;if(!o.loading&&t&&o.href!==t){var n={method:"POST",url:t,data:{vpf_ajax_call:!0},complete:function(n){var s=n.responseText;o.href=t,o.replaceItems(s,i,e)}};o.loading=!0,o.$item.addClass("vp-portfolio__loading"),o.emitEvent("startLoadingNewItems",[t,n]),l.ajax(n)}}},{key:"replaceItems",value:function(t,i,e){if(t){t=t.replace("<body",'<body><div id="vp-infinite-load-body"').replace("</body>","</div></body>");var o=l(t).filter("#vp-infinite-load-body"),n=o.find(".vp-portfolio.vp-uid-".concat(this.uid));if(n.length){var s=n.find(".vp-portfolio__items").html();n.hasClass("vp-portfolio-not-found")?(this.$item.find(".vp-portfolio__items-wrap").before(n.find(".vp-notice").clone()),this.$item.addClass("vp-portfolio-not-found")):(this.$item.find(".vp-notice").remove(),this.$item.removeClass("vp-portfolio-not-found")),this.$filter.length&&this.$filter.each((function(){var t=l(this),i="";i=t.parent().hasClass("vp-single-filter")?o.find('[class="'.concat(t.parent().attr("class").replace(" vp-single-filter__ready",""),'"] .vp-portfolio__filter-wrap')).html():n.find(".vp-portfolio__filter-wrap").html(),t.html(i)})),this.$sort.length&&this.$sort.each((function(){var t=l(this),i="";i=t.parent().hasClass("vp-single-sort")?o.find('[class="'.concat(t.parent().attr("class").replace(" vp-single-sort__ready",""),'"] .vp-portfolio__sort-wrap')).html():n.find(".vp-portfolio__sort-wrap").html(),t.html(i)})),this.$pagination.length&&this.$pagination.html(n.find(".vp-portfolio__pagination-wrap").html()),this.addItems(l(s),i,n),this.emitEvent("loadedNewItems",[n,i,t]),e&&e()}var r=n.attr("data-vp-next-page-url");this.options.nextPageUrl=r,this.$item.attr("data-vp-next-page-url",r),this.$item.removeClass("vp-portfolio__loading"),this.loading=!1,this.emitEvent("endLoadingNewItems"),this.imagesLoaded(),this.initCustomColors()}}}])&&r(i.prototype,e),o&&r(i,o),t}();l(".elementor").length&&l(document).on("init.vpf addItems.vpf",(function(t,i){"vpf"===t.namespace&&i.$item.find(".vp-portfolio__item a").each((function(){/\.(png|jpe?g|gif|svg)(\?.*)?$/i.test(this.href)&&l(this).attr("data-elementor-open-lightbox","no")}))})),l(document).trigger("extendClass.vpf",[m]);var y=function(t){for(var i=arguments.length,e=new Array(i>1?i-1:0),o=1;o<i;o++)e[o-1]=arguments[o];var n;return this.each((function(){if(void 0===n)if("object"===s(t)||void 0===t)this.vpf||(this.vpf=new m(l(this),t));else if(this.vpf){var i;n=(i=this.vpf)[t].apply(i,e)}})),void 0!==n?n:this};y.constructor=m;var g=l.fn.vpf;l.fn.vpf=y,l.fn.vpf.noConflict=function(){return l.fn.vpf=g,this},l(".vp-portfolio").vpf(),l((function(){l(".vp-portfolio").vpf()}));var _=Object(o.throttle)(200,Object(n.a)((function(){l(".vp-portfolio:not(.vp-portfolio__ready)").vpf()})));window.MutationObserver?new window.MutationObserver(_).observe(document.documentElement,{childList:!0,subtree:!0}):l(document).on("DOMContentLoaded DOMNodeInserted load",(function(){_()}))},3:function(t,i,e){var o,n,s,r;function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}r=function(t){"use strict";function i(t,i,e,o){var n,s=!1,r=0;function a(){n&&clearTimeout(n)}function l(){for(var l=arguments.length,c=new Array(l),f=0;f<l;f++)c[f]=arguments[f];var p=this,v=Date.now()-r;function d(){r=Date.now(),e.apply(p,c)}function u(){n=void 0}s||(o&&!n&&d(),a(),void 0===o&&v>t?d():!0!==i&&(n=setTimeout(o?u:d,void 0===o?t-v:t)))}return"boolean"!=typeof i&&(o=e,e=i,i=void 0),l.cancel=function(){a(),s=!0},l}t.debounce=function(t,e,o){return void 0===o?i(t,e,!1):i(t,o,!1!==e)},t.throttle=i,Object.defineProperty(t,"__esModule",{value:!0})},"object"===a(i)&&void 0!==t?r(i):(n=[i],void 0===(s="function"==typeof(o=r)?o.apply(i,n):o)||(t.exports=s))},4:function(t,i,e){"use strict";i.a=function(t){var i=[],e=null,o=function(){for(var o=arguments.length,n=new Array(o),s=0;s<o;s++)n[s]=arguments[s];i=n,e||(e=requestAnimationFrame((function(){e=null,t.apply(void 0,i)})))};return o.cancel=function(){e&&(cancelAnimationFrame(e),e=null)},o}}});
assets/js/preview.js CHANGED
@@ -1,6 +1,6 @@
1
  /*!
2
  * Name : Visual Portfolio
3
- * Version : 2.9.1
4
  * Author : nK https://nkdev.info
5
  */
6
  const $ = window.jQuery;
1
  /*!
2
  * Name : Visual Portfolio
3
+ * Version : 2.10.0
4
  * Author : nK https://nkdev.info
5
  */
6
  const $ = window.jQuery;
class-visual-portfolio.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: Visual Portfolio, Posts & Image Gallery
4
  * Description: Modern gallery and portfolio plugin with advanced layouts editor. Clean and powerful gallery styles with enormous settings in the Gutenberg block.
5
- * Version: 2.9.1
6
  * Author: nK
7
  * Author URI: https://nkdev.info
8
  * License: GPLv2 or later
@@ -171,6 +171,7 @@ class Visual_Portfolio {
171
  require_once $this->plugin_path . 'gutenberg/utils/control-condition-check/index.php';
172
  require_once $this->plugin_path . 'gutenberg/utils/control-get-value/index.php';
173
  require_once $this->plugin_path . 'gutenberg/utils/controls-dynamic-css/index.php';
 
174
  require_once $this->plugin_path . 'classes/class-parse-blocks.php';
175
  require_once $this->plugin_path . 'classes/class-assets.php';
176
  require_once $this->plugin_path . 'classes/class-images.php';
@@ -203,56 +204,18 @@ class Visual_Portfolio {
203
  * @param array $args args for template.
204
  */
205
  public function include_template( $template_name, $args = array() ) {
206
- if ( ! empty( $args ) && is_array( $args ) ) {
207
- // phpcs:ignore
208
- extract( $args );
209
- }
210
-
211
- // template in theme folder.
212
- $template = locate_template( array( '/visual-portfolio/' . $template_name . '.php' ) );
213
-
214
- // pro plugin template.
215
- if ( ! $template && $this->pro_plugin_path && file_exists( $this->pro_plugin_path . 'templates/' . $template_name . '.php' ) ) {
216
- $template = $this->pro_plugin_path . 'templates/' . $template_name . '.php';
217
- }
218
-
219
- // default template.
220
- if ( ! $template ) {
221
- $template = $this->plugin_path . 'templates/' . $template_name . '.php';
222
- }
223
-
224
- // Allow 3rd party plugin filter template file from their plugin.
225
- $template = apply_filters( 'vpf_include_template', $template, $template_name, $args );
226
-
227
- if ( file_exists( $template ) ) {
228
- include $template;
229
- }
230
  }
231
 
232
  /**
233
  * Find css template file
234
  *
235
  * @param string $template_name file name.
 
236
  * @return string
237
  */
238
  public function find_template_styles( $template_name ) {
239
- $template = '';
240
-
241
- if ( file_exists( get_stylesheet_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
242
- // Child Theme (or just theme).
243
- $template = trailingslashit( get_stylesheet_directory_uri() ) . 'visual-portfolio/' . $template_name . '.css';
244
- } elseif ( file_exists( get_template_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
245
- // Parent Theme (when parent exists).
246
- $template = trailingslashit( get_template_directory_uri() ) . 'visual-portfolio/' . $template_name . '.css';
247
- } elseif ( $this->pro_plugin_path && file_exists( $this->pro_plugin_path . 'templates/' . $template_name . '.css' ) ) {
248
- // PRO plugin folder.
249
- $template = $this->pro_plugin_url . 'templates/' . $template_name . '.css';
250
- } elseif ( file_exists( $this->plugin_path . 'templates/' . $template_name . '.css' ) ) {
251
- // Default file in plugin folder.
252
- $template = $this->plugin_url . 'templates/' . $template_name . '.css';
253
- }
254
-
255
- return $template;
256
  }
257
 
258
  /**
@@ -265,26 +228,7 @@ class Visual_Portfolio {
265
  * @param string $media media string.
266
  */
267
  public function include_template_style( $handle, $template_name, $deps = array(), $ver = false, $media = 'all' ) {
268
- $template = $this->find_template_styles( $template_name );
269
- $is_min = false;
270
-
271
- // maybe find minified style.
272
- if ( ! $template ) {
273
- $template = $this->find_template_styles( $template_name . '.min' );
274
- $is_min = true;
275
- }
276
-
277
- // Allow 3rd party plugin filter template file from their plugin.
278
- $template = apply_filters( 'vpf_include_template_style', $template, $template_name, $deps, $ver, $media );
279
-
280
- if ( $template ) {
281
- wp_enqueue_style( $handle, $template, $deps, $ver, $media );
282
- wp_style_add_data( $handle, 'rtl', 'replace' );
283
-
284
- if ( $template ) {
285
- wp_style_add_data( $handle, 'suffix', '.min' );
286
- }
287
- }
288
  }
289
 
290
  /**
2
  /**
3
  * Plugin Name: Visual Portfolio, Posts & Image Gallery
4
  * Description: Modern gallery and portfolio plugin with advanced layouts editor. Clean and powerful gallery styles with enormous settings in the Gutenberg block.
5
+ * Version: 2.10.0
6
  * Author: nK
7
  * Author URI: https://nkdev.info
8
  * License: GPLv2 or later
171
  require_once $this->plugin_path . 'gutenberg/utils/control-condition-check/index.php';
172
  require_once $this->plugin_path . 'gutenberg/utils/control-get-value/index.php';
173
  require_once $this->plugin_path . 'gutenberg/utils/controls-dynamic-css/index.php';
174
+ require_once $this->plugin_path . 'classes/class-templates.php';
175
  require_once $this->plugin_path . 'classes/class-parse-blocks.php';
176
  require_once $this->plugin_path . 'classes/class-assets.php';
177
  require_once $this->plugin_path . 'classes/class-images.php';
204
  * @param array $args args for template.
205
  */
206
  public function include_template( $template_name, $args = array() ) {
207
+ Visual_Portfolio_Templates::include_template( $template_name, $args );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
208
  }
209
 
210
  /**
211
  * Find css template file
212
  *
213
  * @param string $template_name file name.
214
+ *
215
  * @return string
216
  */
217
  public function find_template_styles( $template_name ) {
218
+ return Visual_Portfolio_Templates::find_template_styles( $template_name );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  }
220
 
221
  /**
228
  * @param string $media media string.
229
  */
230
  public function include_template_style( $handle, $template_name, $deps = array(), $ver = false, $media = 'all' ) {
231
+ Visual_Portfolio_Templates::include_template_style( $handle, $template_name, $deps, $ver, $media );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
  }
233
 
234
  /**
classes/class-admin.php CHANGED
@@ -42,9 +42,9 @@ class Visual_Portfolio_Admin {
42
  'nonce' => wp_create_nonce( 'vp-ajax-nonce' ),
43
  );
44
 
45
- wp_enqueue_script( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/js/script.min.js', array( 'jquery', 'wp-data' ), '2.9.1', true );
46
  wp_localize_script( 'visual-portfolio-admin', 'VPAdminVariables', $data_init );
47
- wp_enqueue_style( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/css/style.min.css', array(), '2.9.1' );
48
  wp_style_add_data( 'visual-portfolio-admin', 'rtl', 'replace' );
49
  wp_style_add_data( 'visual-portfolio-admin', 'suffix', '.min' );
50
  }
@@ -58,8 +58,8 @@ class Visual_Portfolio_Admin {
58
  );
59
 
60
  if ( 'vp_lists' === get_post_type() ) {
61
- wp_enqueue_script( 'visual-portfolio-saved-layouts', visual_portfolio()->plugin_url . 'gutenberg/layouts-editor.min.js', array( 'jquery' ), '2.9.1', true );
62
- wp_enqueue_style( 'visual-portfolio-saved-layouts', visual_portfolio()->plugin_url . 'gutenberg/layouts-editor.min.css', array(), '2.9.1' );
63
  wp_style_add_data( 'visual-portfolio-saved-layouts', 'rtl', 'replace' );
64
  wp_style_add_data( 'visual-portfolio-saved-layouts', 'suffix', '.min' );
65
 
@@ -105,7 +105,7 @@ class Visual_Portfolio_Admin {
105
  // phpcs:ignore
106
  if ( 'visual_portfolio_go_pro' === $_GET['page'] ) {
107
  // phpcs:ignore
108
- wp_redirect( 'https://visualportfolio.co/pro/?utm_source=freeplugin&utm_medium=link&utm_campaign=admin_page&utm_content=2.9.1' );
109
  exit();
110
  }
111
  }
@@ -1134,6 +1134,23 @@ class Visual_Portfolio_Admin {
1134
  ),
1135
  )
1136
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1137
  Visual_Portfolio_Controls::register(
1138
  array(
1139
  'category' => 'content-source-post-based',
@@ -2842,17 +2859,22 @@ selector p {
2842
  );
2843
  }
2844
  }
2845
- $post_types_selector['ids'] = array(
 
 
 
 
 
2846
  'value' => 'ids',
2847
  'title' => esc_html__( 'Manual Selection', 'visual-portfolio' ),
2848
  'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.75" y="0.75" width="18.5" height="18.5" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/><path d="M5 11.6L7.30769 14L15 6" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/></svg>',
2849
  );
2850
- $post_types_selector['custom_query'] = array(
2851
  'value' => 'custom_query',
2852
  'title' => esc_html__( 'Custom Query', 'visual-portfolio' ),
2853
  'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.7678 0.91749L10.7678 0.917496L10.7707 0.919154L17.7678 4.91831C17.7682 4.91856 17.7687 4.91882 17.7691 4.91907C17.9584 5.02866 18.1156 5.186 18.225 5.37541C18.3347 5.56526 18.3926 5.78064 18.3929 5.99995V14.0001C18.3926 14.2194 18.3347 14.4347 18.225 14.6246C18.1156 14.814 17.9583 14.9714 17.769 15.081C17.7686 15.0812 17.7682 15.0814 17.7678 15.0817L10.7707 19.0808L10.7678 19.0825C10.5778 19.1922 10.3622 19.25 10.1429 19.25C9.92346 19.25 9.70793 19.1922 9.51791 19.0825L9.51501 19.0808L2.51791 15.0817C2.5175 15.0814 2.51708 15.0812 2.51667 15.081C2.32739 14.9714 2.17015 14.814 2.06067 14.6246C1.95102 14.4348 1.89314 14.2196 1.89285 14.0004V5.99959C1.89314 5.78041 1.95102 5.56516 2.06067 5.37541C2.17014 5.186 2.32736 5.02865 2.5166 4.91907C2.51704 4.91881 2.51747 4.91856 2.51791 4.91831L9.51501 0.919154L9.51502 0.91916L9.51791 0.91749C9.70793 0.807761 9.92346 0.75 10.1429 0.75C10.3622 0.75 10.5778 0.807761 10.7678 0.91749Z" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/><path d="M10.1449 18.9286V9.42857" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/><path d="M18.1159 4.78261L10.1449 9.42029L2.02899 4.78261" stroke="currentColor" stroke-width="1.5" fill="transparent"/></svg>',
2854
  );
2855
- $post_types_selector['current_query'] = array(
2856
  'value' => 'current_query',
2857
  'title' => esc_html__( 'Current Query', 'visual-portfolio' ),
2858
  'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.7678 0.91749L10.7678 0.917496L10.7707 0.919154L17.7678 4.91831C17.7682 4.91856 17.7687 4.91882 17.7691 4.91907C17.9584 5.02866 18.1156 5.186 18.225 5.37541C18.3347 5.56526 18.3926 5.78064 18.3929 5.99995V14.0001C18.3926 14.2194 18.3347 14.4347 18.225 14.6246C18.1156 14.814 17.9583 14.9714 17.769 15.081C17.7686 15.0812 17.7682 15.0814 17.7678 15.0817L10.7707 19.0808L10.7678 19.0825C10.5778 19.1922 10.3622 19.25 10.1429 19.25C9.92346 19.25 9.70793 19.1922 9.51791 19.0825L9.51501 19.0808L2.51791 15.0817C2.5175 15.0814 2.51708 15.0812 2.51667 15.081C2.32739 14.9714 2.17015 14.814 2.06067 14.6246C1.95102 14.4348 1.89314 14.2196 1.89285 14.0004V5.99959C1.89314 5.78041 1.95102 5.56516 2.06067 5.37541C2.17014 5.186 2.32736 5.02865 2.5166 4.91907C2.51704 4.91881 2.51747 4.91856 2.51791 4.91831L9.51501 0.919154L9.51502 0.91916L9.51791 0.91749C9.70793 0.807761 9.92346 0.75 10.1429 0.75C10.3622 0.75 10.5778 0.807761 10.7678 0.91749Z" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/><path d="M10.1449 18.9286V9.42857" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/><path d="M18.1159 4.78261L10.1449 9.42029L2.02899 4.78261" stroke="currentColor" stroke-width="1.5" fill="transparent"/></svg>',
@@ -2863,6 +2885,40 @@ selector p {
2863
  );
2864
  }
2865
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2866
  /**
2867
  * Find posts for select control.
2868
  *
@@ -2885,7 +2941,7 @@ selector p {
2885
 
2886
  $post_type = isset( $attributes['posts_source'] ) ? sanitize_text_field( wp_unslash( $attributes['posts_source'] ) ) : 'any';
2887
 
2888
- if ( ! $post_type || 'custom_query' === $post_type || 'ids' === $post_type ) {
2889
  $post_type = 'any';
2890
  }
2891
 
@@ -2948,7 +3004,7 @@ selector p {
2948
  if ( isset( $_POST['q'] ) ) {
2949
  $post_type = isset( $_POST['post_type'] ) ? sanitize_text_field( wp_unslash( $_POST['post_type'] ) ) : 'any';
2950
 
2951
- if ( ! $post_type || 'custom_query' === $post_type || 'ids' === $post_type ) {
2952
  $post_type = 'any';
2953
  }
2954
 
42
  'nonce' => wp_create_nonce( 'vp-ajax-nonce' ),
43
  );
44
 
45
+ wp_enqueue_script( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/js/script.min.js', array( 'jquery', 'wp-data' ), '2.10.0', true );
46
  wp_localize_script( 'visual-portfolio-admin', 'VPAdminVariables', $data_init );
47
+ wp_enqueue_style( 'visual-portfolio-admin', visual_portfolio()->plugin_url . 'assets/admin/css/style.min.css', array(), '2.10.0' );
48
  wp_style_add_data( 'visual-portfolio-admin', 'rtl', 'replace' );
49
  wp_style_add_data( 'visual-portfolio-admin', 'suffix', '.min' );
50
  }
58
  );
59
 
60
  if ( 'vp_lists' === get_post_type() ) {
61
+ wp_enqueue_script( 'visual-portfolio-saved-layouts', visual_portfolio()->plugin_url . 'gutenberg/layouts-editor.min.js', array( 'jquery' ), '2.10.0', true );
62
+ wp_enqueue_style( 'visual-portfolio-saved-layouts', visual_portfolio()->plugin_url . 'gutenberg/layouts-editor.min.css', array(), '2.10.0' );
63
  wp_style_add_data( 'visual-portfolio-saved-layouts', 'rtl', 'replace' );
64
  wp_style_add_data( 'visual-portfolio-saved-layouts', 'suffix', '.min' );
65
 
105
  // phpcs:ignore
106
  if ( 'visual_portfolio_go_pro' === $_GET['page'] ) {
107
  // phpcs:ignore
108
+ wp_redirect( 'https://visualportfolio.co/pro/?utm_source=freeplugin&utm_medium=link&utm_campaign=admin_page&utm_content=2.10.0' );
109
  exit();
110
  }
111
  }
1134
  ),
1135
  )
1136
  );
1137
+ Visual_Portfolio_Controls::register(
1138
+ array(
1139
+ 'category' => 'content-source-post-based',
1140
+ 'type' => 'select',
1141
+ 'label' => esc_html__( 'Post Types', 'visual-portfolio' ),
1142
+ 'name' => 'post_types_set',
1143
+ 'default' => array( 'post' ),
1144
+ 'value_callback' => array( $this, 'find_posts_types_select_control' ),
1145
+ 'multiple' => true,
1146
+ 'condition' => array(
1147
+ array(
1148
+ 'control' => 'posts_source',
1149
+ 'value' => 'post_types_set',
1150
+ ),
1151
+ ),
1152
+ )
1153
+ );
1154
  Visual_Portfolio_Controls::register(
1155
  array(
1156
  'category' => 'content-source-post-based',
2859
  );
2860
  }
2861
  }
2862
+ $post_types_selector['post_types_set'] = array(
2863
+ 'value' => 'post_types_set',
2864
+ 'title' => esc_html__( 'Post Types Set', 'visual-portfolio' ),
2865
+ 'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 1C11 1 5.5 1 5 1C4.5 1 3.94017 1.06696 3.5 1.5C3.02194 1.97032 3 2.5 3 3.14286C3 3.78571 3 16 3 16" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M6.75 3.75H13.4457L18.25 8.41705V18.3C18.25 18.5448 18.1501 18.7842 17.9648 18.9641C17.7789 19.1448 17.5221 19.25 17.25 19.25H6.75C6.47788 19.25 6.22113 19.1448 6.03515 18.9641C5.84991 18.7842 5.75 18.5448 5.75 18.3V4.7C5.75 4.45517 5.84991 4.21582 6.03515 4.03588C6.22113 3.85521 6.47788 3.75 6.75 3.75Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M14 4V9H19" stroke="currentColor" stroke-width="1.5"/><path d="M15 12H9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M11 8H9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M15 16H9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',
2866
+ );
2867
+ $post_types_selector['ids'] = array(
2868
  'value' => 'ids',
2869
  'title' => esc_html__( 'Manual Selection', 'visual-portfolio' ),
2870
  'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.75" y="0.75" width="18.5" height="18.5" rx="1.25" stroke="currentColor" stroke-width="1.5" fill="transparent"/><path d="M5 11.6L7.30769 14L15 6" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/></svg>',
2871
  );
2872
+ $post_types_selector['custom_query'] = array(
2873
  'value' => 'custom_query',
2874
  'title' => esc_html__( 'Custom Query', 'visual-portfolio' ),
2875
  'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.7678 0.91749L10.7678 0.917496L10.7707 0.919154L17.7678 4.91831C17.7682 4.91856 17.7687 4.91882 17.7691 4.91907C17.9584 5.02866 18.1156 5.186 18.225 5.37541C18.3347 5.56526 18.3926 5.78064 18.3929 5.99995V14.0001C18.3926 14.2194 18.3347 14.4347 18.225 14.6246C18.1156 14.814 17.9583 14.9714 17.769 15.081C17.7686 15.0812 17.7682 15.0814 17.7678 15.0817L10.7707 19.0808L10.7678 19.0825C10.5778 19.1922 10.3622 19.25 10.1429 19.25C9.92346 19.25 9.70793 19.1922 9.51791 19.0825L9.51501 19.0808L2.51791 15.0817C2.5175 15.0814 2.51708 15.0812 2.51667 15.081C2.32739 14.9714 2.17015 14.814 2.06067 14.6246C1.95102 14.4348 1.89314 14.2196 1.89285 14.0004V5.99959C1.89314 5.78041 1.95102 5.56516 2.06067 5.37541C2.17014 5.186 2.32736 5.02865 2.5166 4.91907C2.51704 4.91881 2.51747 4.91856 2.51791 4.91831L9.51501 0.919154L9.51502 0.91916L9.51791 0.91749C9.70793 0.807761 9.92346 0.75 10.1429 0.75C10.3622 0.75 10.5778 0.807761 10.7678 0.91749Z" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/><path d="M10.1449 18.9286V9.42857" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/><path d="M18.1159 4.78261L10.1449 9.42029L2.02899 4.78261" stroke="currentColor" stroke-width="1.5" fill="transparent"/></svg>',
2876
  );
2877
+ $post_types_selector['current_query'] = array(
2878
  'value' => 'current_query',
2879
  'title' => esc_html__( 'Current Query', 'visual-portfolio' ),
2880
  'icon' => '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.7678 0.91749L10.7678 0.917496L10.7707 0.919154L17.7678 4.91831C17.7682 4.91856 17.7687 4.91882 17.7691 4.91907C17.9584 5.02866 18.1156 5.186 18.225 5.37541C18.3347 5.56526 18.3926 5.78064 18.3929 5.99995V14.0001C18.3926 14.2194 18.3347 14.4347 18.225 14.6246C18.1156 14.814 17.9583 14.9714 17.769 15.081C17.7686 15.0812 17.7682 15.0814 17.7678 15.0817L10.7707 19.0808L10.7678 19.0825C10.5778 19.1922 10.3622 19.25 10.1429 19.25C9.92346 19.25 9.70793 19.1922 9.51791 19.0825L9.51501 19.0808L2.51791 15.0817C2.5175 15.0814 2.51708 15.0812 2.51667 15.081C2.32739 14.9714 2.17015 14.814 2.06067 14.6246C1.95102 14.4348 1.89314 14.2196 1.89285 14.0004V5.99959C1.89314 5.78041 1.95102 5.56516 2.06067 5.37541C2.17014 5.186 2.32736 5.02865 2.5166 4.91907C2.51704 4.91881 2.51747 4.91856 2.51791 4.91831L9.51501 0.919154L9.51502 0.91916L9.51791 0.91749C9.70793 0.807761 9.92346 0.75 10.1429 0.75C10.3622 0.75 10.5778 0.807761 10.7678 0.91749Z" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/><path d="M10.1449 18.9286V9.42857" stroke="currentColor" stroke-width="1.5" fill="transparent" stroke-linecap="round" stroke-linejoin="round"/><path d="M18.1159 4.78261L10.1449 9.42029L2.02899 4.78261" stroke="currentColor" stroke-width="1.5" fill="transparent"/></svg>',
2885
  );
2886
  }
2887
 
2888
+ /**
2889
+ * Find post types for select control.
2890
+ *
2891
+ * @return array
2892
+ */
2893
+ public function find_posts_types_select_control() {
2894
+ check_ajax_referer( 'vp-ajax-nonce', 'nonce' );
2895
+
2896
+ $result = array();
2897
+
2898
+ // post types list.
2899
+ $post_types = get_post_types(
2900
+ array(
2901
+ 'public' => false,
2902
+ 'name' => 'attachment',
2903
+ ),
2904
+ 'names',
2905
+ 'NOT'
2906
+ );
2907
+
2908
+ if ( is_array( $post_types ) && ! empty( $post_types ) ) {
2909
+ $result['options'] = array();
2910
+
2911
+ foreach ( $post_types as $post_type ) {
2912
+ $result['options'][ $post_type ] = array(
2913
+ 'value' => $post_type,
2914
+ 'label' => ucfirst( $post_type ),
2915
+ );
2916
+ }
2917
+ }
2918
+
2919
+ return $result;
2920
+ }
2921
+
2922
  /**
2923
  * Find posts for select control.
2924
  *
2941
 
2942
  $post_type = isset( $attributes['posts_source'] ) ? sanitize_text_field( wp_unslash( $attributes['posts_source'] ) ) : 'any';
2943
 
2944
+ if ( ! $post_type || 'post_types_set' === $post_type || 'custom_query' === $post_type || 'ids' === $post_type ) {
2945
  $post_type = 'any';
2946
  }
2947
 
3004
  if ( isset( $_POST['q'] ) ) {
3005
  $post_type = isset( $_POST['post_type'] ) ? sanitize_text_field( wp_unslash( $_POST['post_type'] ) ) : 'any';
3006
 
3007
+ if ( ! $post_type || 'post_types_set' === $post_type || 'custom_query' === $post_type || 'ids' === $post_type ) {
3008
  $post_type = 'any';
3009
  }
3010
 
classes/class-assets.php CHANGED
@@ -98,11 +98,11 @@ class Visual_Portfolio_Assets {
98
  foreach ( self::$stored_assets[ $type ] as $name => $data ) {
99
  if ( isset( $data['value'] ) && $data['value'] ) {
100
  if ( 'script' === $type ) {
101
- wp_enqueue_script( $name, '', array(), '2.9.1', true );
102
  } elseif ( is_string( $data['value'] ) ) {
103
- visual_portfolio()->include_template_style( $name, $data['value'], array(), '2.9.1' );
104
  } else {
105
- wp_enqueue_style( $name, '', array(), '2.9.1' );
106
  }
107
 
108
  self::$stored_assets[ $type ]['value'] = false;
@@ -259,7 +259,7 @@ class Visual_Portfolio_Assets {
259
  $dynamic_styles = Visual_Portfolio_Controls_Dynamic_CSS::get( $options );
260
  $controls_css_handle = 'vp-dynamic-styles-' . $options['id'];
261
 
262
- wp_register_style( $controls_css_handle, false, array(), '2.9.1' );
263
  wp_enqueue_style( $controls_css_handle );
264
  wp_add_inline_style( $controls_css_handle, $dynamic_styles ? $dynamic_styles : ' ' );
265
 
@@ -395,7 +395,7 @@ class Visual_Portfolio_Assets {
395
  );
396
 
397
  foreach ( $vp_styles as $name => $data ) {
398
- wp_register_style( $name, visual_portfolio()->plugin_url . $data[0], $data[1], '2.9.1' );
399
  wp_style_add_data( $name, 'rtl', 'replace' );
400
  wp_style_add_data( $name, 'suffix', '.min' );
401
  }
@@ -514,7 +514,7 @@ class Visual_Portfolio_Assets {
514
  );
515
 
516
  foreach ( $vp_scripts as $name => $data ) {
517
- wp_register_script( $name, visual_portfolio()->plugin_url . $data[0], $data[1], '2.9.1', true );
518
  }
519
 
520
  do_action( 'vpf_after_assets_register' );
@@ -573,25 +573,29 @@ class Visual_Portfolio_Assets {
573
  ),
574
  'settingsPopupGallery' => array(
575
  // Default WordPress Images.
576
- 'enable_on_wordpress_images' => Visual_Portfolio_Settings::get_option( 'enable_on_wordpress_images', 'vp_popup_gallery' ),
577
 
578
  // Vendor.
579
- 'vendor' => Visual_Portfolio_Settings::get_option( 'vendor', 'vp_popup_gallery' ),
 
 
 
 
580
 
581
  // General.
582
- 'show_arrows' => Visual_Portfolio_Settings::get_option( 'show_arrows', 'vp_popup_gallery' ),
583
- 'show_counter' => Visual_Portfolio_Settings::get_option( 'show_counter', 'vp_popup_gallery' ),
584
- 'show_zoom_button' => Visual_Portfolio_Settings::get_option( 'show_zoom_button', 'vp_popup_gallery' ),
585
- 'show_fullscreen_button' => Visual_Portfolio_Settings::get_option( 'show_fullscreen_button', 'vp_popup_gallery' ),
586
- 'show_share_button' => Visual_Portfolio_Settings::get_option( 'show_share_button', 'vp_popup_gallery' ),
587
- 'show_close_button' => Visual_Portfolio_Settings::get_option( 'show_close_button', 'vp_popup_gallery' ),
588
 
589
  // Fancybox.
590
- 'show_download_button' => Visual_Portfolio_Settings::get_option( 'show_download_button', 'vp_popup_gallery' ),
591
- 'show_slideshow' => Visual_Portfolio_Settings::get_option( 'show_slideshow', 'vp_popup_gallery' ),
592
- 'show_thumbs' => Visual_Portfolio_Settings::get_option( 'show_thumbs', 'vp_popup_gallery' ),
593
 
594
- 'click_to_zoom' => Visual_Portfolio_Settings::get_option( 'click_to_zoom', 'vp_popup_gallery' ),
595
  ),
596
 
597
  // Screen sizes (breakpoints) for responsive feature: xs, sm, md, lg, xl.
98
  foreach ( self::$stored_assets[ $type ] as $name => $data ) {
99
  if ( isset( $data['value'] ) && $data['value'] ) {
100
  if ( 'script' === $type ) {
101
+ wp_enqueue_script( $name, '', array(), '2.10.0', true );
102
  } elseif ( is_string( $data['value'] ) ) {
103
+ visual_portfolio()->include_template_style( $name, $data['value'], array(), '2.10.0' );
104
  } else {
105
+ wp_enqueue_style( $name, '', array(), '2.10.0' );
106
  }
107
 
108
  self::$stored_assets[ $type ]['value'] = false;
259
  $dynamic_styles = Visual_Portfolio_Controls_Dynamic_CSS::get( $options );
260
  $controls_css_handle = 'vp-dynamic-styles-' . $options['id'];
261
 
262
+ wp_register_style( $controls_css_handle, false, array(), '2.10.0' );
263
  wp_enqueue_style( $controls_css_handle );
264
  wp_add_inline_style( $controls_css_handle, $dynamic_styles ? $dynamic_styles : ' ' );
265
 
395
  );
396
 
397
  foreach ( $vp_styles as $name => $data ) {
398
+ wp_register_style( $name, visual_portfolio()->plugin_url . $data[0], $data[1], '2.10.0' );
399
  wp_style_add_data( $name, 'rtl', 'replace' );
400
  wp_style_add_data( $name, 'suffix', '.min' );
401
  }
514
  );
515
 
516
  foreach ( $vp_scripts as $name => $data ) {
517
+ wp_register_script( $name, visual_portfolio()->plugin_url . $data[0], $data[1], '2.10.0', true );
518
  }
519
 
520
  do_action( 'vpf_after_assets_register' );
573
  ),
574
  'settingsPopupGallery' => array(
575
  // Default WordPress Images.
576
+ 'enable_on_wordpress_images' => Visual_Portfolio_Settings::get_option( 'enable_on_wordpress_images', 'vp_popup_gallery' ),
577
 
578
  // Vendor.
579
+ 'vendor' => Visual_Portfolio_Settings::get_option( 'vendor', 'vp_popup_gallery' ),
580
+
581
+ // Deep Linking.
582
+ 'deep_linking' => Visual_Portfolio_Settings::get_option( 'deep_linking', 'vp_popup_gallery' ),
583
+ 'deep_linking_url_to_share_images' => Visual_Portfolio_Settings::get_option( 'deep_linking_url_to_share_images', 'vp_popup_gallery' ),
584
 
585
  // General.
586
+ 'show_arrows' => Visual_Portfolio_Settings::get_option( 'show_arrows', 'vp_popup_gallery' ),
587
+ 'show_counter' => Visual_Portfolio_Settings::get_option( 'show_counter', 'vp_popup_gallery' ),
588
+ 'show_zoom_button' => Visual_Portfolio_Settings::get_option( 'show_zoom_button', 'vp_popup_gallery' ),
589
+ 'show_fullscreen_button' => Visual_Portfolio_Settings::get_option( 'show_fullscreen_button', 'vp_popup_gallery' ),
590
+ 'show_share_button' => Visual_Portfolio_Settings::get_option( 'show_share_button', 'vp_popup_gallery' ),
591
+ 'show_close_button' => Visual_Portfolio_Settings::get_option( 'show_close_button', 'vp_popup_gallery' ),
592
 
593
  // Fancybox.
594
+ 'show_thumbs' => Visual_Portfolio_Settings::get_option( 'show_thumbs', 'vp_popup_gallery' ),
595
+ 'show_download_button' => Visual_Portfolio_Settings::get_option( 'show_download_button', 'vp_popup_gallery' ),
596
+ 'show_slideshow' => Visual_Portfolio_Settings::get_option( 'show_slideshow', 'vp_popup_gallery' ),
597
 
598
+ 'click_to_zoom' => Visual_Portfolio_Settings::get_option( 'click_to_zoom', 'vp_popup_gallery' ),
599
  ),
600
 
601
  // Screen sizes (breakpoints) for responsive feature: xs, sm, md, lg, xl.
classes/class-custom-post-type.php CHANGED
@@ -248,7 +248,7 @@ class Visual_Portfolio_Custom_Post_Type {
248
  if ( ! is_blog_installed() ) {
249
  return;
250
  }
251
- if ( get_option( 'visual_portfolio_updated_caps' ) === '2.9.1' ) {
252
  return;
253
  }
254
 
@@ -325,7 +325,7 @@ class Visual_Portfolio_Custom_Post_Type {
325
  $wp_roles->add_cap( 'administrator', $cap );
326
  }
327
 
328
- update_option( 'visual_portfolio_updated_caps', '2.9.1' );
329
  }
330
 
331
  /**
248
  if ( ! is_blog_installed() ) {
249
  return;
250
  }
251
+ if ( get_option( 'visual_portfolio_updated_caps' ) === '2.10.0' ) {
252
  return;
253
  }
254
 
325
  $wp_roles->add_cap( 'administrator', $cap );
326
  }
327
 
328
+ update_option( 'visual_portfolio_updated_caps', '2.10.0' );
329
  }
330
 
331
  /**
classes/class-elementor-widget.php CHANGED
@@ -33,9 +33,9 @@ class Visual_Portfolio_Elementor_Widget extends \Elementor\Widget_Base {
33
 
34
  if ( $this->is_preview_mode() ) {
35
  wp_register_script( 'iframe-resizer', visual_portfolio()->plugin_url . 'assets/vendor/iframe-resizer/js/iframeResizer.min.js', '', '4.2.11', true );
36
- wp_register_script( 'visual-portfolio-elementor', visual_portfolio()->plugin_url . 'assets/admin/js/elementor.min.js', array( 'elementor-frontend', 'iframe-resizer', 'jquery' ), '2.9.1', true );
37
 
38
- wp_register_style( 'visual-portfolio-elementor', visual_portfolio()->plugin_url . 'assets/admin/css/elementor.min.css', array(), '2.9.1' );
39
  wp_style_add_data( 'visual-portfolio-elementor', 'rtl', 'replace' );
40
  wp_style_add_data( 'visual-portfolio-elementor', 'suffix', '.min' );
41
  }
33
 
34
  if ( $this->is_preview_mode() ) {
35
  wp_register_script( 'iframe-resizer', visual_portfolio()->plugin_url . 'assets/vendor/iframe-resizer/js/iframeResizer.min.js', '', '4.2.11', true );
36
+ wp_register_script( 'visual-portfolio-elementor', visual_portfolio()->plugin_url . 'assets/admin/js/elementor.min.js', array( 'elementor-frontend', 'iframe-resizer', 'jquery' ), '2.10.0', true );
37
 
38
+ wp_register_style( 'visual-portfolio-elementor', visual_portfolio()->plugin_url . 'assets/admin/css/elementor.min.css', array(), '2.10.0' );
39
  wp_style_add_data( 'visual-portfolio-elementor', 'rtl', 'replace' );
40
  wp_style_add_data( 'visual-portfolio-elementor', 'suffix', '.min' );
41
  }
classes/class-get-portfolio.php CHANGED
@@ -1281,6 +1281,11 @@ class Visual_Portfolio_Get {
1281
  } else {
1282
  $query_opts['post_type'] = $options['posts_source'];
1283
 
 
 
 
 
 
1284
  // Taxonomies.
1285
  if ( ! empty( $options['posts_taxonomies'] ) && ! isset( $query_opts['tax_query'] ) ) {
1286
  $terms_list = get_terms(
@@ -1669,6 +1674,13 @@ class Visual_Portfolio_Get {
1669
 
1670
  visual_portfolio()->include_template( 'items-list/filter' . $filter_style_pref . '/filter', $args );
1671
 
 
 
 
 
 
 
 
1672
  ?>
1673
  </div>
1674
  <?php
@@ -1764,6 +1776,13 @@ class Visual_Portfolio_Get {
1764
 
1765
  visual_portfolio()->include_template( 'items-list/sort' . $sort_style_pref . '/sort', $args );
1766
 
 
 
 
 
 
 
 
1767
  ?>
1768
  </div>
1769
  <?php
@@ -1840,6 +1859,9 @@ class Visual_Portfolio_Get {
1840
  }
1841
 
1842
  // Click action.
 
 
 
1843
  switch ( $args['vp_opts']['items_click_action'] ) {
1844
  case 'popup_gallery':
1845
  break;
@@ -1847,8 +1869,8 @@ class Visual_Portfolio_Get {
1847
  $args['url'] = false;
1848
  break;
1849
  default:
1850
- $args['url_target'] = $args['vp_opts']['items_click_action_url_target'] ? $args['vp_opts']['items_click_action_url_target'] : '';
1851
- $args['url_rel'] = $args['vp_opts']['items_click_action_url_rel'] ? $args['vp_opts']['items_click_action_url_rel'] : '';
1852
  break;
1853
  }
1854
 
@@ -2206,6 +2228,8 @@ class Visual_Portfolio_Get {
2206
  // Add custom query args.
2207
  $current_url = add_query_arg( $query_arg, $current_url );
2208
 
 
 
2209
  return $current_url;
2210
  }
2211
 
1281
  } else {
1282
  $query_opts['post_type'] = $options['posts_source'];
1283
 
1284
+ // Post Types Set.
1285
+ if ( 'post_types_set' === $options['posts_source'] ) {
1286
+ $query_opts['post_type'] = (array) $options['post_types_set'];
1287
+ }
1288
+
1289
  // Taxonomies.
1290
  if ( ! empty( $options['posts_taxonomies'] ) && ! isset( $query_opts['tax_query'] ) ) {
1291
  $terms_list = get_terms(
1674
 
1675
  visual_portfolio()->include_template( 'items-list/filter' . $filter_style_pref . '/filter', $args );
1676
 
1677
+ // We need to include these styles, since users can insert filters using separate shortcode.
1678
+ Visual_Portfolio_Assets::store_used_assets(
1679
+ 'visual-portfolio-filter-' . $vp_options['filter'],
1680
+ 'items-list/filter' . $filter_style_pref . '/style',
1681
+ 'template_style'
1682
+ );
1683
+
1684
  ?>
1685
  </div>
1686
  <?php
1776
 
1777
  visual_portfolio()->include_template( 'items-list/sort' . $sort_style_pref . '/sort', $args );
1778
 
1779
+ // We need to include these styles, since users can insert sort using separate shortcode.
1780
+ Visual_Portfolio_Assets::store_used_assets(
1781
+ 'visual-portfolio-sort-' . $vp_options['sort'],
1782
+ 'items-list/sort' . $sort_style_pref . '/style',
1783
+ 'template_style'
1784
+ );
1785
+
1786
  ?>
1787
  </div>
1788
  <?php
1859
  }
1860
 
1861
  // Click action.
1862
+ $args['url_target'] = false;
1863
+ $args['url_rel'] = false;
1864
+
1865
  switch ( $args['vp_opts']['items_click_action'] ) {
1866
  case 'popup_gallery':
1867
  break;
1869
  $args['url'] = false;
1870
  break;
1871
  default:
1872
+ $args['url_target'] = $args['vp_opts']['items_click_action_url_target'] ? $args['vp_opts']['items_click_action_url_target'] : false;
1873
+ $args['url_rel'] = $args['vp_opts']['items_click_action_url_rel'] ? $args['vp_opts']['items_click_action_url_rel'] : false;
1874
  break;
1875
  }
1876
 
2228
  // Add custom query args.
2229
  $current_url = add_query_arg( $query_arg, $current_url );
2230
 
2231
+ $current_url = apply_filters( 'vpf_get_pagenum_link', $current_url, $query_arg );
2232
+
2233
  return $current_url;
2234
  }
2235
 
classes/class-gutenberg.php CHANGED
@@ -173,14 +173,14 @@ class Visual_Portfolio_Gutenberg_Block {
173
  'visual-portfolio-gutenberg',
174
  plugins_url( '../gutenberg/index.min.js', __FILE__ ),
175
  array( 'wp-editor', 'wp-i18n', 'wp-element', 'wp-components', 'jquery' ),
176
- '2.9.1',
177
  true
178
  );
179
  wp_enqueue_style(
180
  'visual-portfolio-gutenberg',
181
  plugins_url( '../gutenberg/style.min.css', __FILE__ ),
182
  array(),
183
- '2.9.1'
184
  );
185
  wp_style_add_data( 'visual-portfolio-gutenberg', 'rtl', 'replace' );
186
  wp_style_add_data( 'visual-portfolio-gutenberg', 'suffix', '.min' );
@@ -200,7 +200,7 @@ class Visual_Portfolio_Gutenberg_Block {
200
  'visual-portfolio-gutenberg-custom-post-meta',
201
  plugins_url( '../gutenberg/custom-post-meta.min.js', __FILE__ ),
202
  array( 'wp-editor', 'wp-i18n', 'wp-element', 'wp-components', 'wp-plugins', 'jquery' ),
203
- '2.9.1',
204
  true
205
  );
206
 
173
  'visual-portfolio-gutenberg',
174
  plugins_url( '../gutenberg/index.min.js', __FILE__ ),
175
  array( 'wp-editor', 'wp-i18n', 'wp-element', 'wp-components', 'jquery' ),
176
+ '2.10.0',
177
  true
178
  );
179
  wp_enqueue_style(
180
  'visual-portfolio-gutenberg',
181
  plugins_url( '../gutenberg/style.min.css', __FILE__ ),
182
  array(),
183
+ '2.10.0'
184
  );
185
  wp_style_add_data( 'visual-portfolio-gutenberg', 'rtl', 'replace' );
186
  wp_style_add_data( 'visual-portfolio-gutenberg', 'suffix', '.min' );
200
  'visual-portfolio-gutenberg-custom-post-meta',
201
  plugins_url( '../gutenberg/custom-post-meta.min.js', __FILE__ ),
202
  array( 'wp-editor', 'wp-i18n', 'wp-element', 'wp-components', 'wp-plugins', 'jquery' ),
203
+ '2.10.0',
204
  true
205
  );
206
 
classes/class-migration.php CHANGED
@@ -18,7 +18,7 @@ class Visual_Portfolio_Migrations {
18
  *
19
  * @var string
20
  */
21
- protected $version = '2.9.1';
22
 
23
  /**
24
  * Initial version.
18
  *
19
  * @var string
20
  */
21
+ protected $version = '2.10.0';
22
 
23
  /**
24
  * Initial version.
classes/class-preview.php CHANGED
@@ -232,7 +232,7 @@ class Visual_Portfolio_Preview {
232
 
233
  // Enqueue assets.
234
  wp_enqueue_script( 'iframe-resizer-content', visual_portfolio()->plugin_url . 'assets/vendor/iframe-resizer/js/iframeResizer.contentWindow.min.js', array(), '4.2.11', true );
235
- wp_enqueue_script( 'visual-portfolio-preview', visual_portfolio()->plugin_url . 'assets/js/preview.min.js', array( 'jquery', 'iframe-resizer-content' ), '2.9.1', true );
236
 
237
  // Post data for script.
238
  wp_localize_script(
@@ -275,7 +275,7 @@ class Visual_Portfolio_Preview {
275
  Visual_Portfolio_Assets::enqueue( $options );
276
 
277
  // Custom styles.
278
- visual_portfolio()->include_template_style( 'visual-portfolio-preview', 'preview/style', array(), '2.9.1' );
279
 
280
  // Output template.
281
  visual_portfolio()->include_template(
232
 
233
  // Enqueue assets.
234
  wp_enqueue_script( 'iframe-resizer-content', visual_portfolio()->plugin_url . 'assets/vendor/iframe-resizer/js/iframeResizer.contentWindow.min.js', array(), '4.2.11', true );
235
+ wp_enqueue_script( 'visual-portfolio-preview', visual_portfolio()->plugin_url . 'assets/js/preview.min.js', array( 'jquery', 'iframe-resizer-content' ), '2.10.0', true );
236
 
237
  // Post data for script.
238
  wp_localize_script(
275
  Visual_Portfolio_Assets::enqueue( $options );
276
 
277
  // Custom styles.
278
+ visual_portfolio()->include_template_style( 'visual-portfolio-preview', 'preview/style', array(), '2.10.0' );
279
 
280
  // Output template.
281
  visual_portfolio()->include_template(
classes/class-settings.php CHANGED
@@ -372,6 +372,14 @@ class Visual_Portfolio_Settings {
372
  'default' => ! class_exists( 'Visual_Portfolio_Pro' ) ? 'off' : 'on',
373
  'is_pro' => true,
374
  ),
 
 
 
 
 
 
 
 
375
 
376
  // General Popup Settings.
377
  array(
@@ -473,7 +481,7 @@ class Visual_Portfolio_Settings {
473
  <h3>' . esc_html__( 'PRO Feature', 'visual-portfolio' ) . '</h3>
474
  <div>
475
  <p>' . esc_html__( 'Social feeds such as Instagram, Youtube, Flickr, Twitter, etc...', 'visual-portfolio' ) . '</p>
476
- <a class="vpf-settings-info-pro-button" target="_blank" rel="noopener noreferrer" href="https://visualportfolio.co/pro/?utm_source=freeplugin&utm_medium=link&utm_campaign=plugin_settings&utm_content=2.9.1">' . esc_html__( 'Read More', 'visual-portfolio' ) . '</a>
477
  </div>
478
  </div>
479
  ',
372
  'default' => ! class_exists( 'Visual_Portfolio_Pro' ) ? 'off' : 'on',
373
  'is_pro' => true,
374
  ),
375
+ array(
376
+ 'name' => 'deep_linking_url_to_share_images',
377
+ 'label' => esc_html__( 'Use Deep Linking URL to Share Images', 'visual-portfolio' ),
378
+ 'desc' => esc_html__( 'Check to share Deep Linking URLs when sharing images. When disabled, all galleries will share direct links to image files.', 'visual-portfolio' ),
379
+ 'type' => 'checkbox',
380
+ 'default' => 'off',
381
+ 'is_pro' => true,
382
+ ),
383
 
384
  // General Popup Settings.
385
  array(
481
  <h3>' . esc_html__( 'PRO Feature', 'visual-portfolio' ) . '</h3>
482
  <div>
483
  <p>' . esc_html__( 'Social feeds such as Instagram, Youtube, Flickr, Twitter, etc...', 'visual-portfolio' ) . '</p>
484
+ <a class="vpf-settings-info-pro-button" target="_blank" rel="noopener noreferrer" href="https://visualportfolio.co/pro/?utm_source=freeplugin&utm_medium=link&utm_campaign=plugin_settings&utm_content=2.10.0">' . esc_html__( 'Read More', 'visual-portfolio' ) . '</a>
485
  </div>
486
  </div>
487
  ',
classes/class-supported-themes.php CHANGED
@@ -74,7 +74,7 @@ class Visual_Portfolio_Supported_Themes {
74
  public function wp_enqueue_scripts() {
75
  $theme_compat = $this->get_theme_compatibility_style();
76
  if ( $theme_compat ) {
77
- wp_enqueue_style( $theme_compat['name'], $theme_compat['url'], array(), '2.9.1' );
78
  wp_style_add_data( $theme_compat['name'], 'rtl', 'replace' );
79
  wp_style_add_data( $theme_compat['name'], 'suffix', '.min' );
80
  }
74
  public function wp_enqueue_scripts() {
75
  $theme_compat = $this->get_theme_compatibility_style();
76
  if ( $theme_compat ) {
77
+ wp_enqueue_style( $theme_compat['name'], $theme_compat['url'], array(), '2.10.0' );
78
  wp_style_add_data( $theme_compat['name'], 'rtl', 'replace' );
79
  wp_style_add_data( $theme_compat['name'], 'suffix', '.min' );
80
  }
classes/class-templates.php ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Methods to work with templates.
4
+ *
5
+ * @package visual-portfolio
6
+ */
7
+
8
+ /**
9
+ * Visual_Portfolio_Templates
10
+ */
11
+ class Visual_Portfolio_Templates {
12
+ /**
13
+ * Include template
14
+ *
15
+ * @param string $template_name file name.
16
+ * @param array $args args for template.
17
+ */
18
+ public static function include_template( $template_name, $args = array() ) {
19
+ if ( ! empty( $args ) && is_array( $args ) ) {
20
+ // phpcs:ignore
21
+ extract( $args );
22
+ }
23
+
24
+ // template in theme folder.
25
+ $template = locate_template( array( '/visual-portfolio/' . $template_name . '.php' ) );
26
+
27
+ // pro plugin template.
28
+ if ( ! $template && visual_portfolio()->pro_plugin_path && file_exists( visual_portfolio()->pro_plugin_path . 'templates/' . $template_name . '.php' ) ) {
29
+ $template = visual_portfolio()->pro_plugin_path . 'templates/' . $template_name . '.php';
30
+ }
31
+
32
+ // default template.
33
+ if ( ! $template ) {
34
+ $template = visual_portfolio()->plugin_path . 'templates/' . $template_name . '.php';
35
+ }
36
+
37
+ // Allow 3rd party plugin filter template file from their plugin.
38
+ $template = apply_filters( 'vpf_include_template', $template, $template_name, $args );
39
+
40
+ if ( file_exists( $template ) ) {
41
+ include $template;
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Find css template file
47
+ *
48
+ * @param string $template_name file name.
49
+ * @return string
50
+ */
51
+ public static function find_template_styles( $template_name ) {
52
+ $template = '';
53
+
54
+ if ( file_exists( get_stylesheet_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
55
+ // Child Theme (or just theme).
56
+ $template = trailingslashit( get_stylesheet_directory_uri() ) . 'visual-portfolio/' . $template_name . '.css';
57
+ } elseif ( file_exists( get_template_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
58
+ // Parent Theme (when parent exists).
59
+ $template = trailingslashit( get_template_directory_uri() ) . 'visual-portfolio/' . $template_name . '.css';
60
+ } elseif ( visual_portfolio()->pro_plugin_path && file_exists( visual_portfolio()->pro_plugin_path . 'templates/' . $template_name . '.css' ) ) {
61
+ // PRO plugin folder.
62
+ $template = visual_portfolio()->pro_plugin_url . 'templates/' . $template_name . '.css';
63
+ } elseif ( file_exists( visual_portfolio()->plugin_path . 'templates/' . $template_name . '.css' ) ) {
64
+ // Default file in plugin folder.
65
+ $template = visual_portfolio()->plugin_url . 'templates/' . $template_name . '.css';
66
+ }
67
+
68
+ return $template;
69
+ }
70
+
71
+ /**
72
+ * Include template style
73
+ *
74
+ * @param string $handle style handle name.
75
+ * @param string $template_name file name.
76
+ * @param array $deps dependencies array.
77
+ * @param string|bool|null $ver version string.
78
+ * @param string $media media string.
79
+ */
80
+ public static function include_template_style( $handle, $template_name, $deps = array(), $ver = false, $media = 'all' ) {
81
+ $template = visual_portfolio()->find_template_styles( $template_name );
82
+ $is_min = false;
83
+
84
+ // maybe find minified style.
85
+ if ( ! $template ) {
86
+ $template = visual_portfolio()->find_template_styles( $template_name . '.min' );
87
+ $is_min = true;
88
+ }
89
+
90
+ // Allow 3rd party plugin filter template file from their plugin.
91
+ $template = apply_filters( 'vpf_include_template_style', $template, $template_name, $deps, $ver, $media );
92
+
93
+ if ( $template ) {
94
+ wp_enqueue_style( $handle, $template, $deps, $ver, $media );
95
+ wp_style_add_data( $handle, 'rtl', 'replace' );
96
+
97
+ if ( $is_min ) {
98
+ wp_style_add_data( $handle, 'suffix', '.min' );
99
+ }
100
+ }
101
+ }
102
+ }
classes/class-tinymce.php CHANGED
@@ -70,7 +70,7 @@ class Visual_Portfolio_TinyMCE {
70
  return;
71
  }
72
 
73
- wp_enqueue_script( 'visual-portfolio-tinymce-localize', visual_portfolio()->plugin_url . 'assets/admin/js/mce-localize.min.js', array(), '2.9.1', true );
74
  wp_localize_script( 'visual-portfolio-tinymce-localize', 'VPTinyMCEOptions', $data_tiny_mce );
75
  }
76
  }
70
  return;
71
  }
72
 
73
+ wp_enqueue_script( 'visual-portfolio-tinymce-localize', visual_portfolio()->plugin_url . 'assets/admin/js/mce-localize.min.js', array(), '2.10.0', true );
74
  wp_localize_script( 'visual-portfolio-tinymce-localize', 'VPTinyMCEOptions', $data_tiny_mce );
75
  }
76
  }
classes/class-vc.php CHANGED
@@ -35,7 +35,7 @@ class Visual_Portfolio_VC {
35
  */
36
  public function admin_enqueue_scripts( $page ) {
37
  if ( 'post.php' === $page || 'post-new.php' === $page ) {
38
- wp_enqueue_script( 'visual-portfolio-vc-frontend', visual_portfolio()->plugin_url . 'assets/admin/js/vc-frontend.min.js', array( 'jquery' ), '2.9.1', true );
39
  }
40
  }
41
 
35
  */
36
  public function admin_enqueue_scripts( $page ) {
37
  if ( 'post.php' === $page || 'post-new.php' === $page ) {
38
+ wp_enqueue_script( 'visual-portfolio-vc-frontend', visual_portfolio()->plugin_url . 'assets/admin/js/vc-frontend.min.js', array( 'jquery' ), '2.10.0', true );
39
  }
40
  }
41
 
gutenberg/components/controls-render/index.js CHANGED
@@ -463,7 +463,7 @@ ControlsRender.Control = function( props ) {
463
  { renderControlHelp ? (
464
  <p>{ renderControlHelp }</p>
465
  ) : '' }
466
- <ProNote.Button target="_blank" rel="noopener noreferrer" href="https://visualportfolio.co/pro/?utm_source=freeplugin&amp;utm_medium=link&amp;utm_campaign=block_settings&amp;utm_content=2.9.1">
467
  { __( 'Read More', 'visual-portfolio' ) }
468
  </ProNote.Button>
469
  </ProNote>
463
  { renderControlHelp ? (
464
  <p>{ renderControlHelp }</p>
465
  ) : '' }
466
+ <ProNote.Button target="_blank" rel="noopener noreferrer" href="https://visualportfolio.co/pro/?utm_source=freeplugin&amp;utm_medium=link&amp;utm_campaign=block_settings&amp;utm_content=2.10.0">
467
  { __( 'Read More', 'visual-portfolio' ) }
468
  </ProNote.Button>
469
  </ProNote>
languages/visual-portfolio.pot CHANGED
@@ -135,7 +135,7 @@ msgstr ""
135
  msgid "Slides Per View"
136
  msgstr ""
137
 
138
- #: dist/visual-portfolio/classes/class-admin.php:439, dist/visual-portfolio/classes/class-admin.php:609, dist/visual-portfolio/classes/class-admin.php:1446, dist/visual-portfolio/classes/class-admin.php:1463
139
  msgid "Custom"
140
  msgstr ""
141
 
@@ -155,7 +155,7 @@ msgstr ""
155
  msgid "Free Scroll Sticky"
156
  msgstr ""
157
 
158
- #: dist/visual-portfolio/classes/class-admin.php:506, dist/visual-portfolio/classes/class-admin.php:2707, dist/visual-portfolio/classes/class-settings.php:379
159
  msgid "Display Arrows"
160
  msgstr ""
161
 
@@ -171,7 +171,7 @@ msgstr ""
171
  msgid "Mousewheel Control"
172
  msgstr ""
173
 
174
- #: dist/visual-portfolio/classes/class-admin.php:535, dist/visual-portfolio/classes/class-settings.php:419
175
  msgid "Display Thumbnails"
176
  msgstr ""
177
 
@@ -187,7 +187,7 @@ msgstr ""
187
  msgid "Thumbnails Per View"
188
  msgstr ""
189
 
190
- #: dist/visual-portfolio/classes/class-admin.php:653, dist/visual-portfolio/classes/class-admin.php:2183, dist/visual-portfolio/classes/class-admin.php:2312, dist/visual-portfolio/classes/class-admin.php:2434
191
  msgid "Classic"
192
  msgstr ""
193
 
@@ -195,7 +195,7 @@ msgstr ""
195
  msgid "Display Read More Button"
196
  msgstr ""
197
 
198
- #: dist/visual-portfolio/classes/class-admin.php:675, dist/visual-portfolio/classes/class-admin.php:1536, dist/visual-portfolio/classes/class-admin.php:1816
199
  msgid "Hide"
200
  msgstr ""
201
 
@@ -247,7 +247,7 @@ msgstr ""
247
  msgid "Caption Links Hover Color"
248
  msgstr ""
249
 
250
- #: dist/visual-portfolio/classes/class-admin.php:770, dist/visual-portfolio/classes/class-admin.php:832, dist/visual-portfolio/classes/class-admin.php:883, dist/visual-portfolio/classes/class-admin.php:992, dist/visual-portfolio/classes/class-admin.php:1341, dist/visual-portfolio/classes/class-admin.php:1508, dist/visual-portfolio/classes/class-admin.php:2082, dist/visual-portfolio/classes/class-admin.php:2415, dist/visual-portfolio/classes/class-settings.php:473
251
  msgid "PRO Feature"
252
  msgstr ""
253
 
@@ -323,7 +323,7 @@ msgstr ""
323
  msgid "Social"
324
  msgstr ""
325
 
326
- #: dist/visual-portfolio/classes/class-admin.php:1122, dist/visual-portfolio/classes/class-admin.php:2852
327
  msgid "Custom Query"
328
  msgstr ""
329
 
@@ -333,448 +333,456 @@ msgid "Build custom query according to WordPress Codex. See example here <a href
333
  msgstr ""
334
 
335
  #: dist/visual-portfolio/classes/class-admin.php:1141
 
 
 
 
336
  msgid "Specific Posts"
337
  msgstr ""
338
 
339
- #: dist/visual-portfolio/classes/class-admin.php:1159
340
  msgid "Excluded Posts"
341
  msgstr ""
342
 
343
- #: dist/visual-portfolio/classes/class-admin.php:1188
344
  msgid "Taxonomies"
345
  msgstr ""
346
 
347
- #: dist/visual-portfolio/classes/class-admin.php:1217
348
  msgid "Taxonomies Relation"
349
  msgstr ""
350
 
351
- #: dist/visual-portfolio/classes/class-admin.php:1221
352
  msgid "OR"
353
  msgstr ""
354
 
355
- #: dist/visual-portfolio/classes/class-admin.php:1222
356
  msgid "AND"
357
  msgstr ""
358
 
359
- #: dist/visual-portfolio/classes/class-admin.php:1247, dist/visual-portfolio/classes/class-admin.php:1475
360
  msgid "Order by"
361
  msgstr ""
362
 
363
- #: dist/visual-portfolio/classes/class-admin.php:1251, dist/visual-portfolio/templates/items-list/items-style/meta.php:146, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:147, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:178, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:177
364
  msgid "Date"
365
  msgstr ""
366
 
367
- #: dist/visual-portfolio/classes/class-admin.php:1252, dist/visual-portfolio/classes/class-admin.php:1360, dist/visual-portfolio/classes/class-admin.php:1481
368
  msgid "Title"
369
  msgstr ""
370
 
371
- #: dist/visual-portfolio/classes/class-admin.php:1253
372
  msgid "ID"
373
  msgstr ""
374
 
375
- #: dist/visual-portfolio/classes/class-admin.php:1254
376
  msgid "Comments Count"
377
  msgstr ""
378
 
379
- #: dist/visual-portfolio/classes/class-admin.php:1255
380
  msgid "Modified"
381
  msgstr ""
382
 
383
- #: dist/visual-portfolio/classes/class-admin.php:1256
384
  msgid "Menu Order"
385
  msgstr ""
386
 
387
- #: dist/visual-portfolio/classes/class-admin.php:1257, dist/visual-portfolio/classes/class-admin.php:1482
388
  msgid "Random"
389
  msgstr ""
390
 
391
- #: dist/visual-portfolio/classes/class-admin.php:1277, dist/visual-portfolio/classes/class-admin.php:1490
392
  msgid "Order Direction"
393
  msgstr ""
394
 
395
- #: dist/visual-portfolio/classes/class-admin.php:1281, dist/visual-portfolio/classes/class-admin.php:1494
396
  msgid "ASC"
397
  msgstr ""
398
 
399
- #: dist/visual-portfolio/classes/class-admin.php:1282, dist/visual-portfolio/classes/class-admin.php:1495
400
  msgid "DESC"
401
  msgstr ""
402
 
403
- #: dist/visual-portfolio/classes/class-admin.php:1302
404
  msgid "Avoid Duplicates"
405
  msgstr ""
406
 
407
- #: dist/visual-portfolio/classes/class-admin.php:1303
408
  msgid "Enable to avoid duplicate posts from showing up. This only affects the frontend"
409
  msgstr ""
410
 
411
- #: dist/visual-portfolio/classes/class-admin.php:1312
412
  msgid "Offset"
413
  msgstr ""
414
 
415
- #: dist/visual-portfolio/classes/class-admin.php:1313
416
  msgid "Use this setting to skip over posts (e.g. `2` to skip over 2 posts)"
417
  msgstr ""
418
 
419
- #: dist/visual-portfolio/classes/class-admin.php:1342
420
  msgid "Additional query settings."
421
  msgstr ""
422
 
423
- #: dist/visual-portfolio/classes/class-admin.php:1371
424
  msgid "Description"
425
  msgstr ""
426
 
427
- #: dist/visual-portfolio/classes/class-admin.php:1382, dist/visual-portfolio/classes/class-custom-post-type.php:124
428
  msgid "Categories"
429
  msgstr ""
430
 
431
- #: dist/visual-portfolio/classes/class-admin.php:1388
432
  msgid "Format"
433
  msgstr ""
434
 
435
- #: dist/visual-portfolio/classes/class-admin.php:1391
436
  msgid "Standard"
437
  msgstr ""
438
 
439
- #: dist/visual-portfolio/classes/class-admin.php:1392, dist/visual-portfolio/classes/class-custom-post-meta.php:140
440
  msgid "Video"
441
  msgstr ""
442
 
443
- #: dist/visual-portfolio/classes/class-admin.php:1397
444
  msgid "Video URL"
445
  msgstr ""
446
 
447
- #: dist/visual-portfolio/classes/class-admin.php:1398, dist/visual-portfolio/classes/class-admin.php:1411
448
  msgid "https://..."
449
  msgstr ""
450
 
451
- #: dist/visual-portfolio/classes/class-admin.php:1399
452
  msgid "Full list of supported links"
453
  msgstr ""
454
 
455
- #: dist/visual-portfolio/classes/class-admin.php:1399
456
  msgid "see here"
457
  msgstr ""
458
 
459
- #: dist/visual-portfolio/classes/class-admin.php:1409, dist/visual-portfolio/classes/class-admin.php:1983
460
  msgid "URL"
461
  msgstr ""
462
 
463
- #: dist/visual-portfolio/classes/class-admin.php:1410
464
  msgid "By default used full image url, you can use custom one"
465
  msgstr ""
466
 
467
- #: dist/visual-portfolio/classes/class-admin.php:1415
468
  msgid "Author Name"
469
  msgstr ""
470
 
471
- #: dist/visual-portfolio/classes/class-admin.php:1420
472
  msgid "Author URL"
473
  msgstr ""
474
 
475
- #: dist/visual-portfolio/classes/class-admin.php:1441
476
  msgid "Titles Source"
477
  msgstr ""
478
 
479
- #: dist/visual-portfolio/classes/class-admin.php:1445, dist/visual-portfolio/classes/class-admin.php:1462, dist/visual-portfolio/classes/class-admin.php:2041, dist/visual-portfolio/classes/class-admin.php:2063
480
  msgid "None"
481
  msgstr ""
482
 
483
- #: dist/visual-portfolio/classes/class-admin.php:1447, dist/visual-portfolio/classes/class-admin.php:1464, dist/visual-portfolio/classes/class-admin.php:2042, dist/visual-portfolio/classes/class-admin.php:2064
484
  msgid "Image Title"
485
  msgstr ""
486
 
487
- #: dist/visual-portfolio/classes/class-admin.php:1448, dist/visual-portfolio/classes/class-admin.php:1465, dist/visual-portfolio/classes/class-admin.php:2043, dist/visual-portfolio/classes/class-admin.php:2065
488
  msgid "Image Caption"
489
  msgstr ""
490
 
491
- #: dist/visual-portfolio/classes/class-admin.php:1449, dist/visual-portfolio/classes/class-admin.php:1466, dist/visual-portfolio/classes/class-admin.php:2044, dist/visual-portfolio/classes/class-admin.php:2066
492
  msgid "Image Alt"
493
  msgstr ""
494
 
495
- #: dist/visual-portfolio/classes/class-admin.php:1450, dist/visual-portfolio/classes/class-admin.php:1467, dist/visual-portfolio/classes/class-admin.php:2045, dist/visual-portfolio/classes/class-admin.php:2067
496
  msgid "Image Description"
497
  msgstr ""
498
 
499
- #: dist/visual-portfolio/classes/class-admin.php:1458
500
  msgid "Descriptions Source"
501
  msgstr ""
502
 
503
- #: dist/visual-portfolio/classes/class-admin.php:1479, dist/visual-portfolio/classes/class-admin.php:1817, dist/visual-portfolio/classes/class-admin.php:2004
504
  msgid "Default"
505
  msgstr ""
506
 
507
- #: dist/visual-portfolio/classes/class-admin.php:1480
508
  msgid "Uploaded"
509
  msgstr ""
510
 
511
- #: dist/visual-portfolio/classes/class-admin.php:1509, dist/visual-portfolio/classes/class-settings.php:475
512
  msgid "Social feeds such as Instagram, Youtube, Flickr, Twitter, etc..."
513
  msgstr ""
514
 
515
- #: dist/visual-portfolio/classes/class-admin.php:1520
516
  msgid "Items Per Page"
517
  msgstr ""
518
 
519
- #: dist/visual-portfolio/classes/class-admin.php:1531
520
  msgid "No Items Action"
521
  msgstr ""
522
 
523
- #: dist/visual-portfolio/classes/class-admin.php:1535, dist/visual-portfolio/classes/class-admin.php:1544
524
  msgid "Notice"
525
  msgstr ""
526
 
527
- #: dist/visual-portfolio/classes/class-admin.php:1546
528
  msgid "No items were found matching your selection."
529
  msgstr ""
530
 
531
- #: dist/visual-portfolio/classes/class-admin.php:1561
532
  msgid "Note: you will see the notice in the preview. Block will be hidden in the site frontend."
533
  msgstr ""
534
 
535
- #: dist/visual-portfolio/classes/class-admin.php:1577
536
  msgid "Stretch"
537
  msgstr ""
538
 
539
- #: dist/visual-portfolio/classes/class-admin.php:1580
540
  msgid "Break container and display it wide"
541
  msgstr ""
542
 
543
- #: dist/visual-portfolio/classes/class-admin.php:1649
544
  msgid "Gap"
545
  msgstr ""
546
 
547
- #: dist/visual-portfolio/classes/class-admin.php:1667
548
  msgid "Vertical Gap"
549
  msgstr ""
550
 
551
- #: dist/visual-portfolio/classes/class-admin.php:1668
552
  msgid "When empty, used Gap option"
553
  msgstr ""
554
 
555
- #: dist/visual-portfolio/classes/class-admin.php:1766
556
  msgid "Images Rounded Corners"
557
  msgstr ""
558
 
559
- #: dist/visual-portfolio/classes/class-admin.php:1783
560
  msgid "Display Title"
561
  msgstr ""
562
 
563
- #: dist/visual-portfolio/classes/class-admin.php:1791
564
  msgid "Display Categories"
565
  msgstr ""
566
 
567
- #: dist/visual-portfolio/classes/class-admin.php:1797
568
  msgid "Categories Count"
569
  msgstr ""
570
 
571
- #: dist/visual-portfolio/classes/class-admin.php:1812
572
  msgid "Display Date"
573
  msgstr ""
574
 
575
- #: dist/visual-portfolio/classes/class-admin.php:1818
576
  msgid "Human Format"
577
  msgstr ""
578
 
579
- #: dist/visual-portfolio/classes/class-admin.php:1826
580
  msgid ""
581
  "Date format
582
  " Example: F j, Y"
583
  msgstr ""
584
 
585
- #: dist/visual-portfolio/classes/class-admin.php:1839
586
  msgid "Display Author"
587
  msgstr ""
588
 
589
- #: dist/visual-portfolio/classes/class-admin.php:1847
590
  msgid "Display Comments Count"
591
  msgstr ""
592
 
593
- #: dist/visual-portfolio/classes/class-admin.php:1861
594
  msgid "Display Views Count"
595
  msgstr ""
596
 
597
- #: dist/visual-portfolio/classes/class-admin.php:1875
598
  msgid "Display Reading Time"
599
  msgstr ""
600
 
601
- #: dist/visual-portfolio/classes/class-admin.php:1889
602
  msgid "Display Excerpt"
603
  msgstr ""
604
 
605
- #: dist/visual-portfolio/classes/class-admin.php:1895
606
  msgid "Excerpt Words Count"
607
  msgstr ""
608
 
609
- #: dist/visual-portfolio/classes/class-admin.php:1910
610
  msgid "Display Icon"
611
  msgstr ""
612
 
613
- #: dist/visual-portfolio/classes/class-admin.php:1918
614
  msgid "Caption Align"
615
  msgstr ""
616
 
617
- #: dist/visual-portfolio/classes/class-admin.php:1978
618
  msgid "Disabled"
619
  msgstr ""
620
 
621
- #: dist/visual-portfolio/classes/class-admin.php:1988
622
  msgid "Popup"
623
  msgstr ""
624
 
625
- #: dist/visual-portfolio/classes/class-admin.php:2000
626
  msgid "Target"
627
  msgstr ""
628
 
629
- #: dist/visual-portfolio/classes/class-admin.php:2005
630
  msgid "New Tab (_blank)"
631
  msgstr ""
632
 
633
- #: dist/visual-portfolio/classes/class-admin.php:2006
634
  msgid "Top Frame (_top)"
635
  msgstr ""
636
 
637
- #: dist/visual-portfolio/classes/class-admin.php:2020
638
  msgid "Rel"
639
  msgstr ""
640
 
641
- #: dist/visual-portfolio/classes/class-admin.php:2037
642
  msgid "Title Source"
643
  msgstr ""
644
 
645
- #: dist/visual-portfolio/classes/class-admin.php:2059
646
  msgid "Description Source"
647
  msgstr ""
648
 
649
- #: dist/visual-portfolio/classes/class-admin.php:2083
650
  msgid "Display pages in popup iframe, not just images."
651
  msgstr ""
652
 
653
- #: dist/visual-portfolio/classes/class-admin.php:2103
654
  msgid "Top"
655
  msgstr ""
656
 
657
- #: dist/visual-portfolio/classes/class-admin.php:2113
658
  msgid "Bottom"
659
  msgstr ""
660
 
661
- #: dist/visual-portfolio/classes/class-admin.php:2137
662
  msgid "Filter"
663
  msgstr ""
664
 
665
- #: dist/visual-portfolio/classes/class-admin.php:2143
666
  msgid "Sort"
667
  msgstr ""
668
 
669
- #: dist/visual-portfolio/classes/class-admin.php:2149
670
  msgid "Search"
671
  msgstr ""
672
 
673
- #: dist/visual-portfolio/classes/class-admin.php:2155
674
  msgid "Items"
675
  msgstr ""
676
 
677
- #: dist/visual-portfolio/classes/class-admin.php:2160
678
  msgid "Pagination"
679
  msgstr ""
680
 
681
- #: dist/visual-portfolio/classes/class-admin.php:2176, dist/visual-portfolio/classes/class-admin.php:2305, dist/visual-portfolio/classes/class-admin.php:2427
682
  msgid "Minimal"
683
  msgstr ""
684
 
685
- #: dist/visual-portfolio/classes/class-admin.php:2190, dist/visual-portfolio/classes/class-admin.php:2319
686
  msgid "Dropdown"
687
  msgstr ""
688
 
689
- #: dist/visual-portfolio/classes/class-admin.php:2282
690
  msgid "Display Count"
691
  msgstr ""
692
 
693
- #: dist/visual-portfolio/classes/class-admin.php:2291
694
  msgid "All Button Text"
695
  msgstr ""
696
 
697
- #: dist/visual-portfolio/classes/class-admin.php:2293
698
  msgid "All"
699
  msgstr ""
700
 
701
- #: dist/visual-portfolio/classes/class-admin.php:2416
702
  msgid "The search module is only available for PRO users."
703
  msgstr ""
704
 
705
- #: dist/visual-portfolio/classes/class-admin.php:2521
706
  msgid "Type"
707
  msgstr ""
708
 
709
- #: dist/visual-portfolio/classes/class-admin.php:2528
710
  msgid "Paged"
711
  msgstr ""
712
 
713
- #: dist/visual-portfolio/classes/class-admin.php:2533, dist/visual-portfolio/classes/class-admin.php:2594, dist/visual-portfolio/classes/class-admin.php:2651
714
  msgid "Load More"
715
  msgstr ""
716
 
717
- #: dist/visual-portfolio/classes/class-admin.php:2538
718
  msgid "Infinite"
719
  msgstr ""
720
 
721
- #: dist/visual-portfolio/classes/class-admin.php:2548
722
  msgid "Note: you will see the \"Load More\" pagination in the preview. \"Infinite\" pagination will be visible on the site."
723
  msgstr ""
724
 
725
- #: dist/visual-portfolio/classes/class-admin.php:2563, dist/visual-portfolio/classes/class-admin.php:2578
726
  msgid "Texts"
727
  msgstr ""
728
 
729
- #: dist/visual-portfolio/classes/class-admin.php:2595, dist/visual-portfolio/classes/class-admin.php:2596, dist/visual-portfolio/classes/class-admin.php:2652, dist/visual-portfolio/classes/class-admin.php:2653
730
  msgid "Load more button label"
731
  msgstr ""
732
 
733
- #: dist/visual-portfolio/classes/class-admin.php:2613, dist/visual-portfolio/classes/class-admin.php:2670
734
  msgid "Loading More..."
735
  msgstr ""
736
 
737
- #: dist/visual-portfolio/classes/class-admin.php:2614, dist/visual-portfolio/classes/class-admin.php:2615, dist/visual-portfolio/classes/class-admin.php:2671, dist/visual-portfolio/classes/class-admin.php:2672
738
  msgid "Loading more button label"
739
  msgstr ""
740
 
741
- #: dist/visual-portfolio/classes/class-admin.php:2632, dist/visual-portfolio/classes/class-admin.php:2689
742
  msgid "You’ve reached the end of the list"
743
  msgstr ""
744
 
745
- #: dist/visual-portfolio/classes/class-admin.php:2633, dist/visual-portfolio/classes/class-admin.php:2634, dist/visual-portfolio/classes/class-admin.php:2690, dist/visual-portfolio/classes/class-admin.php:2691
746
  msgid "End of the list text"
747
  msgstr ""
748
 
749
- #: dist/visual-portfolio/classes/class-admin.php:2722
750
  msgid "Display Numbers"
751
  msgstr ""
752
 
753
- #: dist/visual-portfolio/classes/class-admin.php:2737
754
  msgid "Scroll to Top"
755
  msgstr ""
756
 
757
- #: dist/visual-portfolio/classes/class-admin.php:2752
758
  msgid "Scroll to Top Offset"
759
  msgstr ""
760
 
761
- #: dist/visual-portfolio/classes/class-admin.php:2770
762
  msgid "Hide on Reached End"
763
  msgstr ""
764
 
765
- #: dist/visual-portfolio/classes/class-admin.php:2800
766
  msgid "Use <code>selector</code> rule to change block styles."
767
  msgstr ""
768
 
769
- #: dist/visual-portfolio/classes/class-admin.php:2801
770
  msgid "Example:"
771
  msgstr ""
772
 
773
- #: dist/visual-portfolio/classes/class-admin.php:2847
 
 
 
 
774
  msgid "Manual Selection"
775
  msgstr ""
776
 
777
- #: dist/visual-portfolio/classes/class-admin.php:2857
778
  msgid "Current Query"
779
  msgstr ""
780
 
@@ -1026,28 +1034,28 @@ msgstr ""
1026
  msgid "Select Layout"
1027
  msgstr ""
1028
 
1029
- #: dist/visual-portfolio/classes/class-get-portfolio.php:1701
1030
  msgid "Default sorting"
1031
  msgstr ""
1032
 
1033
- #: dist/visual-portfolio/classes/class-get-portfolio.php:1702
1034
  msgid "Sort by date (newest)"
1035
  msgstr ""
1036
 
1037
- #: dist/visual-portfolio/classes/class-get-portfolio.php:1703
1038
  msgid "Sort by date (oldest)"
1039
  msgstr ""
1040
 
1041
- #: dist/visual-portfolio/classes/class-get-portfolio.php:1704
1042
  msgid "Sort by title (A-Z)"
1043
  msgstr ""
1044
 
1045
- #: dist/visual-portfolio/classes/class-get-portfolio.php:1705
1046
  msgid "Sort by title (Z-A)"
1047
  msgstr ""
1048
 
1049
  #. translators: %s - published in human format.
1050
- #: dist/visual-portfolio/classes/class-get-portfolio.php:1810
1051
  msgid "%s ago"
1052
  msgstr ""
1053
 
@@ -1213,63 +1221,71 @@ msgstr ""
1213
  msgid "Makes URL automatically change to reflect the current opened popup, and you can easily link directly to that image or video."
1214
  msgstr ""
1215
 
1216
- #: dist/visual-portfolio/classes/class-settings.php:380
 
 
 
 
 
 
 
 
1217
  msgid "Arrows to navigate between images."
1218
  msgstr ""
1219
 
1220
- #: dist/visual-portfolio/classes/class-settings.php:386
1221
  msgid "Display Images Counter"
1222
  msgstr ""
1223
 
1224
- #: dist/visual-portfolio/classes/class-settings.php:387
1225
  msgid "On the top left corner will be showed images counter."
1226
  msgstr ""
1227
 
1228
- #: dist/visual-portfolio/classes/class-settings.php:393
1229
  msgid "Display Zoom Button"
1230
  msgstr ""
1231
 
1232
- #: dist/visual-portfolio/classes/class-settings.php:399
1233
  msgid "Display Fullscreen Button"
1234
  msgstr ""
1235
 
1236
- #: dist/visual-portfolio/classes/class-settings.php:405
1237
  msgid "Display Share Button"
1238
  msgstr ""
1239
 
1240
- #: dist/visual-portfolio/classes/class-settings.php:411
1241
  msgid "Display Close Button"
1242
  msgstr ""
1243
 
1244
- #: dist/visual-portfolio/classes/class-settings.php:425
1245
  msgid "Display Download Button"
1246
  msgstr ""
1247
 
1248
- #: dist/visual-portfolio/classes/class-settings.php:431
1249
  msgid "Display Slideshow"
1250
  msgstr ""
1251
 
1252
- #: dist/visual-portfolio/classes/class-settings.php:439
1253
  msgid "Click to Zoom"
1254
  msgstr ""
1255
 
1256
- #: dist/visual-portfolio/classes/class-settings.php:447
1257
  msgid "Background Color"
1258
  msgstr ""
1259
 
1260
- #: dist/visual-portfolio/classes/class-settings.php:455
1261
  msgid "Pages iFrame Custom CSS"
1262
  msgstr ""
1263
 
1264
- #: dist/visual-portfolio/classes/class-settings.php:456
1265
  msgid "When you display pages in popup iframe, you may not need some page elements like header and footer. Hide it using custom CSS with classname `.vp-popup-iframe`."
1266
  msgstr ""
1267
 
1268
- #: dist/visual-portfolio/classes/class-settings.php:476
1269
  msgid "Read More"
1270
  msgstr ""
1271
 
1272
- #: dist/visual-portfolio/classes/class-settings.php:497
1273
  msgid "Visual Portfolio Settings"
1274
  msgstr ""
1275
 
@@ -1289,61 +1305,49 @@ msgstr ""
1289
  msgid "This feature available in PRO plugin only"
1290
  msgstr ""
1291
 
1292
- #: dist/visual-portfolio/templates/items-list/items-style/meta.php:105, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:106, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:137, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:136
1293
  msgid "Author"
1294
  msgstr ""
1295
 
1296
  #. translators: %s - author name.
1297
- #. translators: %s - author name.
1298
- #. translators: %s - author name.
1299
- #. translators: %s - author name.
1300
- #: dist/visual-portfolio/templates/items-list/items-style/meta.php:131, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:132, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:163, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:162
1301
  msgid "By %s"
1302
  msgstr ""
1303
 
1304
- #: dist/visual-portfolio/templates/items-list/items-style/meta.php:163, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:164, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:195, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:194
1305
  msgid "Comments"
1306
  msgstr ""
1307
 
1308
  #. translators: %s Number of comments.
1309
- #. translators: %s Number of comments.
1310
- #. translators: %s Number of comments.
1311
- #. translators: %s Number of comments.
1312
- #: dist/visual-portfolio/templates/items-list/items-style/meta.php:179, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:180, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:211, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:210
1313
  msgid "%s Comment"
1314
  msgid_plural "%s Comments"
1315
  msgstr[0] ""
1316
  msgstr[1] ""
1317
 
1318
- #: dist/visual-portfolio/templates/items-list/items-style/meta.php:176, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:177, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:208, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:207
1319
  msgid "No Comments"
1320
  msgstr ""
1321
 
1322
- #: dist/visual-portfolio/templates/items-list/items-style/meta.php:199, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:200, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:231, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:230
1323
- msgid "Views"
1324
  msgstr ""
1325
 
1326
- #. translators: %s Number of views.
1327
- #. translators: %s Number of views.
1328
- #. translators: %s Number of views.
1329
- #. translators: %s Number of views.
1330
- #: dist/visual-portfolio/templates/items-list/items-style/meta.php:206, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:207, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:238, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:237
1331
- msgid "%s View"
1332
- msgid_plural "%s Views"
1333
  msgstr[0] ""
1334
  msgstr[1] ""
1335
 
1336
- #: dist/visual-portfolio/templates/items-list/items-style/meta.php:219, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:220, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:251, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:250
1337
- msgid "Reading Time"
1338
  msgstr ""
1339
 
1340
- #. translators: %s Reading time minutes.
1341
- #. translators: %s Reading time minutes.
1342
- #. translators: %s Reading time minutes.
1343
- #. translators: %s Reading time minutes.
1344
- #: dist/visual-portfolio/templates/items-list/items-style/meta.php:228, dist/visual-portfolio/templates/items-list/items-style/emerge/meta.php:229, dist/visual-portfolio/templates/items-list/items-style/fade/meta.php:260, dist/visual-portfolio/templates/items-list/items-style/fly/meta.php:259
1345
- msgid "%s Min Read"
1346
- msgid_plural "%s Mins Read"
1347
  msgstr[0] ""
1348
  msgstr[1] ""
1349
 
135
  msgid "Slides Per View"
136
  msgstr ""
137
 
138
+ #: dist/visual-portfolio/classes/class-admin.php:439, dist/visual-portfolio/classes/class-admin.php:609, dist/visual-portfolio/classes/class-admin.php:1463, dist/visual-portfolio/classes/class-admin.php:1480
139
  msgid "Custom"
140
  msgstr ""
141
 
155
  msgid "Free Scroll Sticky"
156
  msgstr ""
157
 
158
+ #: dist/visual-portfolio/classes/class-admin.php:506, dist/visual-portfolio/classes/class-admin.php:2724, dist/visual-portfolio/classes/class-settings.php:387
159
  msgid "Display Arrows"
160
  msgstr ""
161
 
171
  msgid "Mousewheel Control"
172
  msgstr ""
173
 
174
+ #: dist/visual-portfolio/classes/class-admin.php:535, dist/visual-portfolio/classes/class-settings.php:427
175
  msgid "Display Thumbnails"
176
  msgstr ""
177
 
187
  msgid "Thumbnails Per View"
188
  msgstr ""
189
 
190
+ #: dist/visual-portfolio/classes/class-admin.php:653, dist/visual-portfolio/classes/class-admin.php:2200, dist/visual-portfolio/classes/class-admin.php:2329, dist/visual-portfolio/classes/class-admin.php:2451
191
  msgid "Classic"
192
  msgstr ""
193
 
195
  msgid "Display Read More Button"
196
  msgstr ""
197
 
198
+ #: dist/visual-portfolio/classes/class-admin.php:675, dist/visual-portfolio/classes/class-admin.php:1553, dist/visual-portfolio/classes/class-admin.php:1833
199
  msgid "Hide"
200
  msgstr ""
201
 
247
  msgid "Caption Links Hover Color"
248
  msgstr ""
249
 
250
+ #: dist/visual-portfolio/classes/class-admin.php:770, dist/visual-portfolio/classes/class-admin.php:832, dist/visual-portfolio/classes/class-admin.php:883, dist/visual-portfolio/classes/class-admin.php:992, dist/visual-portfolio/classes/class-admin.php:1358, dist/visual-portfolio/classes/class-admin.php:1525, dist/visual-portfolio/classes/class-admin.php:2099, dist/visual-portfolio/classes/class-admin.php:2432, dist/visual-portfolio/classes/class-settings.php:481
251
  msgid "PRO Feature"
252
  msgstr ""
253
 
323
  msgid "Social"
324
  msgstr ""
325
 
326
+ #: dist/visual-portfolio/classes/class-admin.php:1122, dist/visual-portfolio/classes/class-admin.php:2874
327
  msgid "Custom Query"
328
  msgstr ""
329
 
333
  msgstr ""
334
 
335
  #: dist/visual-portfolio/classes/class-admin.php:1141
336
+ msgid "Post Types"
337
+ msgstr ""
338
+
339
+ #: dist/visual-portfolio/classes/class-admin.php:1158
340
  msgid "Specific Posts"
341
  msgstr ""
342
 
343
+ #: dist/visual-portfolio/classes/class-admin.php:1176
344
  msgid "Excluded Posts"
345
  msgstr ""
346
 
347
+ #: dist/visual-portfolio/classes/class-admin.php:1205
348
  msgid "Taxonomies"
349
  msgstr ""
350
 
351
+ #: dist/visual-portfolio/classes/class-admin.php:1234
352
  msgid "Taxonomies Relation"
353
  msgstr ""
354
 
355
+ #: dist/visual-portfolio/classes/class-admin.php:1238
356
  msgid "OR"
357
  msgstr ""
358
 
359
+ #: dist/visual-portfolio/classes/class-admin.php:1239
360
  msgid "AND"
361
  msgstr ""
362
 
363
+ #: dist/visual-portfolio/classes/class-admin.php:1264, dist/visual-portfolio/classes/class-admin.php:1492
364
  msgid "Order by"
365
  msgstr ""
366
 
367
+ #: dist/visual-portfolio/classes/class-admin.php:1268, dist/visual-portfolio/templates/items-list/item-parts/meta-date.php:26
368
  msgid "Date"
369
  msgstr ""
370
 
371
+ #: dist/visual-portfolio/classes/class-admin.php:1269, dist/visual-portfolio/classes/class-admin.php:1377, dist/visual-portfolio/classes/class-admin.php:1498
372
  msgid "Title"
373
  msgstr ""
374
 
375
+ #: dist/visual-portfolio/classes/class-admin.php:1270
376
  msgid "ID"
377
  msgstr ""
378
 
379
+ #: dist/visual-portfolio/classes/class-admin.php:1271
380
  msgid "Comments Count"
381
  msgstr ""
382
 
383
+ #: dist/visual-portfolio/classes/class-admin.php:1272
384
  msgid "Modified"
385
  msgstr ""
386
 
387
+ #: dist/visual-portfolio/classes/class-admin.php:1273
388
  msgid "Menu Order"
389
  msgstr ""
390
 
391
+ #: dist/visual-portfolio/classes/class-admin.php:1274, dist/visual-portfolio/classes/class-admin.php:1499
392
  msgid "Random"
393
  msgstr ""
394
 
395
+ #: dist/visual-portfolio/classes/class-admin.php:1294, dist/visual-portfolio/classes/class-admin.php:1507
396
  msgid "Order Direction"
397
  msgstr ""
398
 
399
+ #: dist/visual-portfolio/classes/class-admin.php:1298, dist/visual-portfolio/classes/class-admin.php:1511
400
  msgid "ASC"
401
  msgstr ""
402
 
403
+ #: dist/visual-portfolio/classes/class-admin.php:1299, dist/visual-portfolio/classes/class-admin.php:1512
404
  msgid "DESC"
405
  msgstr ""
406
 
407
+ #: dist/visual-portfolio/classes/class-admin.php:1319
408
  msgid "Avoid Duplicates"
409
  msgstr ""
410
 
411
+ #: dist/visual-portfolio/classes/class-admin.php:1320
412
  msgid "Enable to avoid duplicate posts from showing up. This only affects the frontend"
413
  msgstr ""
414
 
415
+ #: dist/visual-portfolio/classes/class-admin.php:1329
416
  msgid "Offset"
417
  msgstr ""
418
 
419
+ #: dist/visual-portfolio/classes/class-admin.php:1330
420
  msgid "Use this setting to skip over posts (e.g. `2` to skip over 2 posts)"
421
  msgstr ""
422
 
423
+ #: dist/visual-portfolio/classes/class-admin.php:1359
424
  msgid "Additional query settings."
425
  msgstr ""
426
 
427
+ #: dist/visual-portfolio/classes/class-admin.php:1388
428
  msgid "Description"
429
  msgstr ""
430
 
431
+ #: dist/visual-portfolio/classes/class-admin.php:1399, dist/visual-portfolio/classes/class-custom-post-type.php:124
432
  msgid "Categories"
433
  msgstr ""
434
 
435
+ #: dist/visual-portfolio/classes/class-admin.php:1405
436
  msgid "Format"
437
  msgstr ""
438
 
439
+ #: dist/visual-portfolio/classes/class-admin.php:1408
440
  msgid "Standard"
441
  msgstr ""
442
 
443
+ #: dist/visual-portfolio/classes/class-admin.php:1409, dist/visual-portfolio/classes/class-custom-post-meta.php:140
444
  msgid "Video"
445
  msgstr ""
446
 
447
+ #: dist/visual-portfolio/classes/class-admin.php:1414
448
  msgid "Video URL"
449
  msgstr ""
450
 
451
+ #: dist/visual-portfolio/classes/class-admin.php:1415, dist/visual-portfolio/classes/class-admin.php:1428
452
  msgid "https://..."
453
  msgstr ""
454
 
455
+ #: dist/visual-portfolio/classes/class-admin.php:1416
456
  msgid "Full list of supported links"
457
  msgstr ""
458
 
459
+ #: dist/visual-portfolio/classes/class-admin.php:1416
460
  msgid "see here"
461
  msgstr ""
462
 
463
+ #: dist/visual-portfolio/classes/class-admin.php:1426, dist/visual-portfolio/classes/class-admin.php:2000
464
  msgid "URL"
465
  msgstr ""
466
 
467
+ #: dist/visual-portfolio/classes/class-admin.php:1427
468
  msgid "By default used full image url, you can use custom one"
469
  msgstr ""
470
 
471
+ #: dist/visual-portfolio/classes/class-admin.php:1432
472
  msgid "Author Name"
473
  msgstr ""
474
 
475
+ #: dist/visual-portfolio/classes/class-admin.php:1437
476
  msgid "Author URL"
477
  msgstr ""
478
 
479
+ #: dist/visual-portfolio/classes/class-admin.php:1458
480
  msgid "Titles Source"
481
  msgstr ""
482
 
483
+ #: dist/visual-portfolio/classes/class-admin.php:1462, dist/visual-portfolio/classes/class-admin.php:1479, dist/visual-portfolio/classes/class-admin.php:2058, dist/visual-portfolio/classes/class-admin.php:2080
484
  msgid "None"
485
  msgstr ""
486
 
487
+ #: dist/visual-portfolio/classes/class-admin.php:1464, dist/visual-portfolio/classes/class-admin.php:1481, dist/visual-portfolio/classes/class-admin.php:2059, dist/visual-portfolio/classes/class-admin.php:2081
488
  msgid "Image Title"
489
  msgstr ""
490
 
491
+ #: dist/visual-portfolio/classes/class-admin.php:1465, dist/visual-portfolio/classes/class-admin.php:1482, dist/visual-portfolio/classes/class-admin.php:2060, dist/visual-portfolio/classes/class-admin.php:2082
492
  msgid "Image Caption"
493
  msgstr ""
494
 
495
+ #: dist/visual-portfolio/classes/class-admin.php:1466, dist/visual-portfolio/classes/class-admin.php:1483, dist/visual-portfolio/classes/class-admin.php:2061, dist/visual-portfolio/classes/class-admin.php:2083
496
  msgid "Image Alt"
497
  msgstr ""
498
 
499
+ #: dist/visual-portfolio/classes/class-admin.php:1467, dist/visual-portfolio/classes/class-admin.php:1484, dist/visual-portfolio/classes/class-admin.php:2062, dist/visual-portfolio/classes/class-admin.php:2084
500
  msgid "Image Description"
501
  msgstr ""
502
 
503
+ #: dist/visual-portfolio/classes/class-admin.php:1475
504
  msgid "Descriptions Source"
505
  msgstr ""
506
 
507
+ #: dist/visual-portfolio/classes/class-admin.php:1496, dist/visual-portfolio/classes/class-admin.php:1834, dist/visual-portfolio/classes/class-admin.php:2021
508
  msgid "Default"
509
  msgstr ""
510
 
511
+ #: dist/visual-portfolio/classes/class-admin.php:1497
512
  msgid "Uploaded"
513
  msgstr ""
514
 
515
+ #: dist/visual-portfolio/classes/class-admin.php:1526, dist/visual-portfolio/classes/class-settings.php:483
516
  msgid "Social feeds such as Instagram, Youtube, Flickr, Twitter, etc..."
517
  msgstr ""
518
 
519
+ #: dist/visual-portfolio/classes/class-admin.php:1537
520
  msgid "Items Per Page"
521
  msgstr ""
522
 
523
+ #: dist/visual-portfolio/classes/class-admin.php:1548
524
  msgid "No Items Action"
525
  msgstr ""
526
 
527
+ #: dist/visual-portfolio/classes/class-admin.php:1552, dist/visual-portfolio/classes/class-admin.php:1561
528
  msgid "Notice"
529
  msgstr ""
530
 
531
+ #: dist/visual-portfolio/classes/class-admin.php:1563
532
  msgid "No items were found matching your selection."
533
  msgstr ""
534
 
535
+ #: dist/visual-portfolio/classes/class-admin.php:1578
536
  msgid "Note: you will see the notice in the preview. Block will be hidden in the site frontend."
537
  msgstr ""
538
 
539
+ #: dist/visual-portfolio/classes/class-admin.php:1594
540
  msgid "Stretch"
541
  msgstr ""
542
 
543
+ #: dist/visual-portfolio/classes/class-admin.php:1597
544
  msgid "Break container and display it wide"
545
  msgstr ""
546
 
547
+ #: dist/visual-portfolio/classes/class-admin.php:1666
548
  msgid "Gap"
549
  msgstr ""
550
 
551
+ #: dist/visual-portfolio/classes/class-admin.php:1684
552
  msgid "Vertical Gap"
553
  msgstr ""
554
 
555
+ #: dist/visual-portfolio/classes/class-admin.php:1685
556
  msgid "When empty, used Gap option"
557
  msgstr ""
558
 
559
+ #: dist/visual-portfolio/classes/class-admin.php:1783
560
  msgid "Images Rounded Corners"
561
  msgstr ""
562
 
563
+ #: dist/visual-portfolio/classes/class-admin.php:1800
564
  msgid "Display Title"
565
  msgstr ""
566
 
567
+ #: dist/visual-portfolio/classes/class-admin.php:1808
568
  msgid "Display Categories"
569
  msgstr ""
570
 
571
+ #: dist/visual-portfolio/classes/class-admin.php:1814
572
  msgid "Categories Count"
573
  msgstr ""
574
 
575
+ #: dist/visual-portfolio/classes/class-admin.php:1829
576
  msgid "Display Date"
577
  msgstr ""
578
 
579
+ #: dist/visual-portfolio/classes/class-admin.php:1835
580
  msgid "Human Format"
581
  msgstr ""
582
 
583
+ #: dist/visual-portfolio/classes/class-admin.php:1843
584
  msgid ""
585
  "Date format
586
  " Example: F j, Y"
587
  msgstr ""
588
 
589
+ #: dist/visual-portfolio/classes/class-admin.php:1856
590
  msgid "Display Author"
591
  msgstr ""
592
 
593
+ #: dist/visual-portfolio/classes/class-admin.php:1864
594
  msgid "Display Comments Count"
595
  msgstr ""
596
 
597
+ #: dist/visual-portfolio/classes/class-admin.php:1878
598
  msgid "Display Views Count"
599
  msgstr ""
600
 
601
+ #: dist/visual-portfolio/classes/class-admin.php:1892
602
  msgid "Display Reading Time"
603
  msgstr ""
604
 
605
+ #: dist/visual-portfolio/classes/class-admin.php:1906
606
  msgid "Display Excerpt"
607
  msgstr ""
608
 
609
+ #: dist/visual-portfolio/classes/class-admin.php:1912
610
  msgid "Excerpt Words Count"
611
  msgstr ""
612
 
613
+ #: dist/visual-portfolio/classes/class-admin.php:1927
614
  msgid "Display Icon"
615
  msgstr ""
616
 
617
+ #: dist/visual-portfolio/classes/class-admin.php:1935
618
  msgid "Caption Align"
619
  msgstr ""
620
 
621
+ #: dist/visual-portfolio/classes/class-admin.php:1995
622
  msgid "Disabled"
623
  msgstr ""
624
 
625
+ #: dist/visual-portfolio/classes/class-admin.php:2005
626
  msgid "Popup"
627
  msgstr ""
628
 
629
+ #: dist/visual-portfolio/classes/class-admin.php:2017
630
  msgid "Target"
631
  msgstr ""
632
 
633
+ #: dist/visual-portfolio/classes/class-admin.php:2022
634
  msgid "New Tab (_blank)"
635
  msgstr ""
636
 
637
+ #: dist/visual-portfolio/classes/class-admin.php:2023
638
  msgid "Top Frame (_top)"
639
  msgstr ""
640
 
641
+ #: dist/visual-portfolio/classes/class-admin.php:2037
642
  msgid "Rel"
643
  msgstr ""
644
 
645
+ #: dist/visual-portfolio/classes/class-admin.php:2054
646
  msgid "Title Source"
647
  msgstr ""
648
 
649
+ #: dist/visual-portfolio/classes/class-admin.php:2076
650
  msgid "Description Source"
651
  msgstr ""
652
 
653
+ #: dist/visual-portfolio/classes/class-admin.php:2100
654
  msgid "Display pages in popup iframe, not just images."
655
  msgstr ""
656
 
657
+ #: dist/visual-portfolio/classes/class-admin.php:2120
658
  msgid "Top"
659
  msgstr ""
660
 
661
+ #: dist/visual-portfolio/classes/class-admin.php:2130
662
  msgid "Bottom"
663
  msgstr ""
664
 
665
+ #: dist/visual-portfolio/classes/class-admin.php:2154
666
  msgid "Filter"
667
  msgstr ""
668
 
669
+ #: dist/visual-portfolio/classes/class-admin.php:2160
670
  msgid "Sort"
671
  msgstr ""
672
 
673
+ #: dist/visual-portfolio/classes/class-admin.php:2166
674
  msgid "Search"
675
  msgstr ""
676
 
677
+ #: dist/visual-portfolio/classes/class-admin.php:2172
678
  msgid "Items"
679
  msgstr ""
680
 
681
+ #: dist/visual-portfolio/classes/class-admin.php:2177
682
  msgid "Pagination"
683
  msgstr ""
684
 
685
+ #: dist/visual-portfolio/classes/class-admin.php:2193, dist/visual-portfolio/classes/class-admin.php:2322, dist/visual-portfolio/classes/class-admin.php:2444
686
  msgid "Minimal"
687
  msgstr ""
688
 
689
+ #: dist/visual-portfolio/classes/class-admin.php:2207, dist/visual-portfolio/classes/class-admin.php:2336
690
  msgid "Dropdown"
691
  msgstr ""
692
 
693
+ #: dist/visual-portfolio/classes/class-admin.php:2299
694
  msgid "Display Count"
695
  msgstr ""
696
 
697
+ #: dist/visual-portfolio/classes/class-admin.php:2308
698
  msgid "All Button Text"
699
  msgstr ""
700
 
701
+ #: dist/visual-portfolio/classes/class-admin.php:2310
702
  msgid "All"
703
  msgstr ""
704
 
705
+ #: dist/visual-portfolio/classes/class-admin.php:2433
706
  msgid "The search module is only available for PRO users."
707
  msgstr ""
708
 
709
+ #: dist/visual-portfolio/classes/class-admin.php:2538
710
  msgid "Type"
711
  msgstr ""
712
 
713
+ #: dist/visual-portfolio/classes/class-admin.php:2545
714
  msgid "Paged"
715
  msgstr ""
716
 
717
+ #: dist/visual-portfolio/classes/class-admin.php:2550, dist/visual-portfolio/classes/class-admin.php:2611, dist/visual-portfolio/classes/class-admin.php:2668
718
  msgid "Load More"
719
  msgstr ""
720
 
721
+ #: dist/visual-portfolio/classes/class-admin.php:2555
722
  msgid "Infinite"
723
  msgstr ""
724
 
725
+ #: dist/visual-portfolio/classes/class-admin.php:2565
726
  msgid "Note: you will see the \"Load More\" pagination in the preview. \"Infinite\" pagination will be visible on the site."
727
  msgstr ""
728
 
729
+ #: dist/visual-portfolio/classes/class-admin.php:2580, dist/visual-portfolio/classes/class-admin.php:2595
730
  msgid "Texts"
731
  msgstr ""
732
 
733
+ #: dist/visual-portfolio/classes/class-admin.php:2612, dist/visual-portfolio/classes/class-admin.php:2613, dist/visual-portfolio/classes/class-admin.php:2669, dist/visual-portfolio/classes/class-admin.php:2670
734
  msgid "Load more button label"
735
  msgstr ""
736
 
737
+ #: dist/visual-portfolio/classes/class-admin.php:2630, dist/visual-portfolio/classes/class-admin.php:2687
738
  msgid "Loading More..."
739
  msgstr ""
740
 
741
+ #: dist/visual-portfolio/classes/class-admin.php:2631, dist/visual-portfolio/classes/class-admin.php:2632, dist/visual-portfolio/classes/class-admin.php:2688, dist/visual-portfolio/classes/class-admin.php:2689
742
  msgid "Loading more button label"
743
  msgstr ""
744
 
745
+ #: dist/visual-portfolio/classes/class-admin.php:2649, dist/visual-portfolio/classes/class-admin.php:2706
746
  msgid "You’ve reached the end of the list"
747
  msgstr ""
748
 
749
+ #: dist/visual-portfolio/classes/class-admin.php:2650, dist/visual-portfolio/classes/class-admin.php:2651, dist/visual-portfolio/classes/class-admin.php:2707, dist/visual-portfolio/classes/class-admin.php:2708
750
  msgid "End of the list text"
751
  msgstr ""
752
 
753
+ #: dist/visual-portfolio/classes/class-admin.php:2739
754
  msgid "Display Numbers"
755
  msgstr ""
756
 
757
+ #: dist/visual-portfolio/classes/class-admin.php:2754
758
  msgid "Scroll to Top"
759
  msgstr ""
760
 
761
+ #: dist/visual-portfolio/classes/class-admin.php:2769
762
  msgid "Scroll to Top Offset"
763
  msgstr ""
764
 
765
+ #: dist/visual-portfolio/classes/class-admin.php:2787
766
  msgid "Hide on Reached End"
767
  msgstr ""
768
 
769
+ #: dist/visual-portfolio/classes/class-admin.php:2817
770
  msgid "Use <code>selector</code> rule to change block styles."
771
  msgstr ""
772
 
773
+ #: dist/visual-portfolio/classes/class-admin.php:2818
774
  msgid "Example:"
775
  msgstr ""
776
 
777
+ #: dist/visual-portfolio/classes/class-admin.php:2864
778
+ msgid "Post Types Set"
779
+ msgstr ""
780
+
781
+ #: dist/visual-portfolio/classes/class-admin.php:2869
782
  msgid "Manual Selection"
783
  msgstr ""
784
 
785
+ #: dist/visual-portfolio/classes/class-admin.php:2879
786
  msgid "Current Query"
787
  msgstr ""
788
 
1034
  msgid "Select Layout"
1035
  msgstr ""
1036
 
1037
+ #: dist/visual-portfolio/classes/class-get-portfolio.php:1713
1038
  msgid "Default sorting"
1039
  msgstr ""
1040
 
1041
+ #: dist/visual-portfolio/classes/class-get-portfolio.php:1714
1042
  msgid "Sort by date (newest)"
1043
  msgstr ""
1044
 
1045
+ #: dist/visual-portfolio/classes/class-get-portfolio.php:1715
1046
  msgid "Sort by date (oldest)"
1047
  msgstr ""
1048
 
1049
+ #: dist/visual-portfolio/classes/class-get-portfolio.php:1716
1050
  msgid "Sort by title (A-Z)"
1051
  msgstr ""
1052
 
1053
+ #: dist/visual-portfolio/classes/class-get-portfolio.php:1717
1054
  msgid "Sort by title (Z-A)"
1055
  msgstr ""
1056
 
1057
  #. translators: %s - published in human format.
1058
+ #: dist/visual-portfolio/classes/class-get-portfolio.php:1829
1059
  msgid "%s ago"
1060
  msgstr ""
1061
 
1221
  msgid "Makes URL automatically change to reflect the current opened popup, and you can easily link directly to that image or video."
1222
  msgstr ""
1223
 
1224
+ #: dist/visual-portfolio/classes/class-settings.php:377
1225
+ msgid "Use Deep Linking URL to Share Images"
1226
+ msgstr ""
1227
+
1228
+ #: dist/visual-portfolio/classes/class-settings.php:378
1229
+ msgid "Check to share Deep Linking URLs when sharing images. When disabled, all galleries will share direct links to image files."
1230
+ msgstr ""
1231
+
1232
+ #: dist/visual-portfolio/classes/class-settings.php:388
1233
  msgid "Arrows to navigate between images."
1234
  msgstr ""
1235
 
1236
+ #: dist/visual-portfolio/classes/class-settings.php:394
1237
  msgid "Display Images Counter"
1238
  msgstr ""
1239
 
1240
+ #: dist/visual-portfolio/classes/class-settings.php:395
1241
  msgid "On the top left corner will be showed images counter."
1242
  msgstr ""
1243
 
1244
+ #: dist/visual-portfolio/classes/class-settings.php:401
1245
  msgid "Display Zoom Button"
1246
  msgstr ""
1247
 
1248
+ #: dist/visual-portfolio/classes/class-settings.php:407
1249
  msgid "Display Fullscreen Button"
1250
  msgstr ""
1251
 
1252
+ #: dist/visual-portfolio/classes/class-settings.php:413
1253
  msgid "Display Share Button"
1254
  msgstr ""
1255
 
1256
+ #: dist/visual-portfolio/classes/class-settings.php:419
1257
  msgid "Display Close Button"
1258
  msgstr ""
1259
 
1260
+ #: dist/visual-portfolio/classes/class-settings.php:433
1261
  msgid "Display Download Button"
1262
  msgstr ""
1263
 
1264
+ #: dist/visual-portfolio/classes/class-settings.php:439
1265
  msgid "Display Slideshow"
1266
  msgstr ""
1267
 
1268
+ #: dist/visual-portfolio/classes/class-settings.php:447
1269
  msgid "Click to Zoom"
1270
  msgstr ""
1271
 
1272
+ #: dist/visual-portfolio/classes/class-settings.php:455
1273
  msgid "Background Color"
1274
  msgstr ""
1275
 
1276
+ #: dist/visual-portfolio/classes/class-settings.php:463
1277
  msgid "Pages iFrame Custom CSS"
1278
  msgstr ""
1279
 
1280
+ #: dist/visual-portfolio/classes/class-settings.php:464
1281
  msgid "When you display pages in popup iframe, you may not need some page elements like header and footer. Hide it using custom CSS with classname `.vp-popup-iframe`."
1282
  msgstr ""
1283
 
1284
+ #: dist/visual-portfolio/classes/class-settings.php:484
1285
  msgid "Read More"
1286
  msgstr ""
1287
 
1288
+ #: dist/visual-portfolio/classes/class-settings.php:505
1289
  msgid "Visual Portfolio Settings"
1290
  msgstr ""
1291
 
1305
  msgid "This feature available in PRO plugin only"
1306
  msgstr ""
1307
 
1308
+ #: dist/visual-portfolio/templates/items-list/item-parts/meta-author.php:32
1309
  msgid "Author"
1310
  msgstr ""
1311
 
1312
  #. translators: %s - author name.
1313
+ #: dist/visual-portfolio/templates/items-list/item-parts/meta-author.php:50
 
 
 
1314
  msgid "By %s"
1315
  msgstr ""
1316
 
1317
+ #: dist/visual-portfolio/templates/items-list/item-parts/meta-comments.php:32
1318
  msgid "Comments"
1319
  msgstr ""
1320
 
1321
  #. translators: %s Number of comments.
1322
+ #: dist/visual-portfolio/templates/items-list/item-parts/meta-comments.php:44
 
 
 
1323
  msgid "%s Comment"
1324
  msgid_plural "%s Comments"
1325
  msgstr[0] ""
1326
  msgstr[1] ""
1327
 
1328
+ #: dist/visual-portfolio/templates/items-list/item-parts/meta-comments.php:41
1329
  msgid "No Comments"
1330
  msgstr ""
1331
 
1332
+ #: dist/visual-portfolio/templates/items-list/item-parts/meta-reading-time.php:26
1333
+ msgid "Reading Time"
1334
  msgstr ""
1335
 
1336
+ #. translators: %s Reading time minutes.
1337
+ #: dist/visual-portfolio/templates/items-list/item-parts/meta-reading-time.php:35
1338
+ msgid "%s Min Read"
1339
+ msgid_plural "%s Mins Read"
 
 
 
1340
  msgstr[0] ""
1341
  msgstr[1] ""
1342
 
1343
+ #: dist/visual-portfolio/templates/items-list/item-parts/meta-views.php:26
1344
+ msgid "Views"
1345
  msgstr ""
1346
 
1347
+ #. translators: %s Number of views.
1348
+ #: dist/visual-portfolio/templates/items-list/item-parts/meta-views.php:33
1349
+ msgid "%s View"
1350
+ msgid_plural "%s Views"
 
 
 
1351
  msgstr[0] ""
1352
  msgstr[1] ""
1353
 
readme.md CHANGED
@@ -5,7 +5,7 @@
5
  * Requires at least: 5.4
6
  * Tested up to: 5.6
7
  * Requires PHP: 5.5.9
8
- * Stable tag: 2.9.1
9
  * License: GPLv2 or later
10
  * License URI: <http://www.gnu.org/licenses/gpl-2.0.html>
11
 
@@ -22,21 +22,23 @@ Modern gallery and portfolio plugin with advanced layouts editor. Clean and powe
22
 
23
  Create beautiful, clean, and powerful photo galleries and portfolio layouts using the Visual Portfolio gallery plugin. It is easy for simple photo galleries, but powerful enough for professionals. Whether you're a photographer, agency, or anything in between, **Visual Portfolio will boost your online presence**.
24
 
25
- Convenient visual block editor with support to various layouts such as Masonry, Justified, Tiles, Grid, and Carousel. A **well thought out design, powerful features, and years of development** by the nK team make Visual Portfolio a game-changing Portfolio and Gallery plugin that will level the WordPress showcases playing field in your favor to help increase visitors engagement.
26
-
27
- ### Visual Gallery Builder ###
28
 
29
  Build your portfolio and gallery blocks with no coding knowledge. Thanks to Gutenberg page builder you are able to create and customize galleries visually.
30
 
31
- ### Optimized to be Fast as Native ###
 
 
32
 
33
  Despite the rich functionality, the Visual Portfolio is optimized as much as possible, to be fast and lightweight.
34
 
35
- All scripts and styles are loaded only when they are needed for the current page that displays your gallery. Pictures are not loaded in the main thread due to lazy loading. Moreover, our plugin is compatible with third-party WebP providers and image optimization plugins.
 
 
36
 
37
  Smart adaptive image sizes fully supported in any gallery, created with Visual Portfolio plugin.
38
 
39
- ### Layouts ###
40
 
41
  Our gallery plugin shipped with popular layouts such as Masonry and Justified (Flickr). Every feature optimized and works seamlessly with all of these layouts, you just need to set up and go with no headache. See it in action:
42
 
@@ -46,7 +48,7 @@ Our gallery plugin shipped with popular layouts such as Masonry and Justified (F
46
  * [Grid Gallery](https://visualportfolio.co/grid/)
47
  * [Slider Gallery](https://visualportfolio.co/slider/) (Fade, Carousel, Coverflow)
48
 
49
- ### Visual Effects ###
50
 
51
  Showcase your portfolio items ang gallery images with clean and beautiful visual styles. See it in action:
52
 
@@ -56,23 +58,23 @@ Showcase your portfolio items ang gallery images with clean and beautiful visual
56
  * [Fly Effect](https://visualportfolio.co/tiles-popup-gallery/)
57
  * [Caption Move Effect](https://visualportfolio.co/masonry-caption-move/)
58
 
59
- ### Easy to Customize ###
60
 
61
  The gallery block with live preview includes a lot of design settings that are point-and-click, no coding knowledge required. If you're a bit more adventurous, the custom CSS module and PHP filters are set up to be easily used by developers.
62
 
63
- ### Portfolio Post Type ###
64
 
65
  Custom post type `portfolio` will ensure all your portfolios to keep in a single post type. In this way, you can distinguish your portfolios from other post types. Taxonomies are used to categorize your portfolio types, it will help you to group and sort your portfolios. Moreover, you can use these portfolios as a source for your showcase gallery using Visual Portfolio block.
66
 
67
- ### Posts Query Builder ###
68
 
69
  Fine-tune the source of your galleries. Display posts, portfolios, and any other post types, filter by taxonomies, author, and date ranges, include or exclude specific posts, and much more options.
70
 
71
- ### Photo Galleries ###
72
 
73
  You can also create galleries using image sets right inside block editor. Just drop your images and gallery is ready.
74
 
75
- ### Powerful Lightbox ###
76
 
77
  Visual Portfolio uses only modern solutions, and lightboxes are not an exception. High performance, mobile optimization, retina-ready, and a wide range of features available in Fancybox and PhotoSwipe plugins, that you can choose for your gallery lightboxes.
78
 
@@ -84,7 +86,7 @@ Visual Portfolio uses only modern solutions, and lightboxes are not an exception
84
 
85
  **Social Sharing** <br> You can allow users to share photos on Facebook, Twitter, and Pinterest with social sharing buttons.
86
 
87
- ### Audio and Video Support ###
88
 
89
  Visual Portfolio plugin allows you to work with audios and videos within a single gallery. You just need to copy the URL of the video or audio and it will work automatically in the popup gallery. The full list with supported vendors see below (mostly thanks to the Pro plugin).
90
 
@@ -99,8 +101,10 @@ Supported Video Vendors:
99
  * DailyMotion
100
  * Wistia
101
  * VideoPress
 
102
  * Rutube
103
  * Metacafe
 
104
  * Self Hosted Video
105
 
106
  Supported Audio Vendors:
@@ -111,46 +115,62 @@ Supported Audio Vendors:
111
  * Beatport
112
  * Self Hosted Audio
113
 
114
- ### SEO-Friendly ###
115
 
116
  Visual Portfolio plugin is built keeping SEO and performance in mind by defining proper structure and tags. Furthermore, due to optimization, it is lightweight and fast when it comes to page load.
117
 
118
- ### Multilingual ###
119
 
120
  Visual Portfolio adds a new layer of compatibility for [WPML](https://wpml.org/). All blocks are compatible with it and ready for translation. <https://visualportfolio.co/documentation/multilingual/>
121
 
122
- ### Built For Developers ###
123
 
124
  Visual Portfolio gives you a wide range of filters and actions to customize every part of your gallery. Also, it allows you to overwrite templates and change it in the theme directory. Moreover, you can customize separate portfolio lists using custom CSS and CSS Variables.
125
 
126
- ### Pro ###
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
 
128
- The Visual Portfolio plugin is also available in a professional version which includes more features and enhanced performance! [Learn more](https://visualportfolio.co/pro/?utm_source=wporg&utm_medium=link&utm_campaign=pro).
129
 
130
- #### Some Neat Pro Features ####
 
 
131
 
132
- * Social Integrations - automatically fetch posts for your social networks to display in gallery on your site
133
- * Youtube
134
- * Instagram
135
- * Vimeo
136
- * Flickr
137
- * Twitter
138
- * Dribbble
139
- * Google Photos
140
- * Stylish interaction effects
141
- * Hover Tilt Effect
142
- * Custom Hover Image (useful for animated GIFs)
143
- * Caption Move Style
144
- * Responsive Breakpoints settings
145
- * Instagram-like image filters for normal and hover states
146
- * AJAX Improvements
147
- * Advanced query builder settings
148
- * Popup gallery Deep Linking
149
- * Find more portfolio and gallery features here - [https://visualportfolio.co/pro/](https://visualportfolio.co/pro/?utm_source=wporg&utm_medium=link&utm_campaign=pro)
150
 
151
- If you don't want any of the Pro features, but want to support us, this is the only way you may do it.
 
152
 
153
- ### More Features ###
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
 
155
  * **Lightboxes for Standard WordPress Images**
156
  Image lightbox available for Visual Portfolio galleries as well as for standard WordPress images and galleries in your content.
@@ -269,6 +289,16 @@ For more information, feel free to visit [Visual Portfolio official website](htt
269
 
270
  ## Changelog ##
271
 
 
 
 
 
 
 
 
 
 
 
272
  = 2.9.1 =
273
 
274
  * added full support for WPML plugin
5
  * Requires at least: 5.4
6
  * Tested up to: 5.6
7
  * Requires PHP: 5.5.9
8
+ * Stable tag: 2.10.0
9
  * License: GPLv2 or later
10
  * License URI: <http://www.gnu.org/licenses/gpl-2.0.html>
11
 
22
 
23
  Create beautiful, clean, and powerful photo galleries and portfolio layouts using the Visual Portfolio gallery plugin. It is easy for simple photo galleries, but powerful enough for professionals. Whether you're a photographer, agency, or anything in between, **Visual Portfolio will boost your online presence**.
24
 
25
+ ### 💯 Visual Gallery Builder ###
 
 
26
 
27
  Build your portfolio and gallery blocks with no coding knowledge. Thanks to Gutenberg page builder you are able to create and customize galleries visually.
28
 
29
+ Convenient visual block editor with support to various layouts such as Masonry, Justified, Tiles, Grid, and Carousel. A **well thought out design, powerful features, and years of development** by the nK team make Visual Portfolio a game-changing Portfolio and Gallery plugin that will level the WordPress showcases playing field in your favor to help increase visitors engagement.
30
+
31
+ ### 🚀 Optimized to be Fast as Native ###
32
 
33
  Despite the rich functionality, the Visual Portfolio is optimized as much as possible, to be fast and lightweight.
34
 
35
+ Due to the modular code structure, all scripts and styles are loaded only when they are needed for the current page that displays your gallery. So, your pages will never load unused features.
36
+
37
+ Pictures are not loaded in the main thread due to lazy loading. Moreover, our plugin is compatible with third-party WebP providers and image optimization plugins.
38
 
39
  Smart adaptive image sizes fully supported in any gallery, created with Visual Portfolio plugin.
40
 
41
+ ### 📱 Layouts ###
42
 
43
  Our gallery plugin shipped with popular layouts such as Masonry and Justified (Flickr). Every feature optimized and works seamlessly with all of these layouts, you just need to set up and go with no headache. See it in action:
44
 
48
  * [Grid Gallery](https://visualportfolio.co/grid/)
49
  * [Slider Gallery](https://visualportfolio.co/slider/) (Fade, Carousel, Coverflow)
50
 
51
+ ### 🎨 Visual Effects ###
52
 
53
  Showcase your portfolio items ang gallery images with clean and beautiful visual styles. See it in action:
54
 
58
  * [Fly Effect](https://visualportfolio.co/tiles-popup-gallery/)
59
  * [Caption Move Effect](https://visualportfolio.co/masonry-caption-move/)
60
 
61
+ ### ⚙️ Easy to Customize ###
62
 
63
  The gallery block with live preview includes a lot of design settings that are point-and-click, no coding knowledge required. If you're a bit more adventurous, the custom CSS module and PHP filters are set up to be easily used by developers.
64
 
65
+ ### 📁 Portfolio Post Type ###
66
 
67
  Custom post type `portfolio` will ensure all your portfolios to keep in a single post type. In this way, you can distinguish your portfolios from other post types. Taxonomies are used to categorize your portfolio types, it will help you to group and sort your portfolios. Moreover, you can use these portfolios as a source for your showcase gallery using Visual Portfolio block.
68
 
69
+ ### 💎 Posts Query Builder ###
70
 
71
  Fine-tune the source of your galleries. Display posts, portfolios, and any other post types, filter by taxonomies, author, and date ranges, include or exclude specific posts, and much more options.
72
 
73
+ ### 🖼️ Photo Galleries ###
74
 
75
  You can also create galleries using image sets right inside block editor. Just drop your images and gallery is ready.
76
 
77
+ ### Powerful Lightbox ###
78
 
79
  Visual Portfolio uses only modern solutions, and lightboxes are not an exception. High performance, mobile optimization, retina-ready, and a wide range of features available in Fancybox and PhotoSwipe plugins, that you can choose for your gallery lightboxes.
80
 
86
 
87
  **Social Sharing** <br> You can allow users to share photos on Facebook, Twitter, and Pinterest with social sharing buttons.
88
 
89
+ ### 📹 Video and 🎵 Audio Support ###
90
 
91
  Visual Portfolio plugin allows you to work with audios and videos within a single gallery. You just need to copy the URL of the video or audio and it will work automatically in the popup gallery. The full list with supported vendors see below (mostly thanks to the Pro plugin).
92
 
101
  * DailyMotion
102
  * Wistia
103
  * VideoPress
104
+ * TED
105
  * Rutube
106
  * Metacafe
107
+ * Coub
108
  * Self Hosted Video
109
 
110
  Supported Audio Vendors:
115
  * Beatport
116
  * Self Hosted Audio
117
 
118
+ ### 📈 SEO-Friendly ###
119
 
120
  Visual Portfolio plugin is built keeping SEO and performance in mind by defining proper structure and tags. Furthermore, due to optimization, it is lightweight and fast when it comes to page load.
121
 
122
+ ### 🏳️ Multilingual ###
123
 
124
  Visual Portfolio adds a new layer of compatibility for [WPML](https://wpml.org/). All blocks are compatible with it and ready for translation. <https://visualportfolio.co/documentation/multilingual/>
125
 
126
+ ### 🛠 Built For Developers ###
127
 
128
  Visual Portfolio gives you a wide range of filters and actions to customize every part of your gallery. Also, it allows you to overwrite templates and change it in the theme directory. Moreover, you can customize separate portfolio lists using custom CSS and CSS Variables.
129
 
130
+ ### 🌟 Visual Portfolio Pro ###
131
+
132
+ > The Visual Portfolio plugin is also available in a professional version which includes more features and enhanced performance! [**Learn more about Visual Portfolio Pro**](https://visualportfolio.co/pro/?utm_source=wporg&utm_medium=link&utm_campaign=pro)
133
+ >
134
+ > In order to maintain the free version of the plugin on an ongoing basis, and to provide quick and effective support for free, we offer a Pro version of the plugin. The Pro version allows you to:
135
+
136
+ * **Social Integrations**
137
+ Automatically fetch posts from your social networks to display in gallery on your site.
138
+
139
+ * [Youtube](https://visualportfolio.co/social-youtube/)
140
+ * [Instagram](https://visualportfolio.co/social-instagram/)
141
+ * [Vimeo](https://visualportfolio.co/social-vimeo/)
142
+ * [Flickr](https://visualportfolio.co/social-flickr/)
143
+ * [Twitter](https://visualportfolio.co/social-twitter/)
144
+ * [Dribbble](https://visualportfolio.co/social-dribbble/)
145
+ * [Google Photos](https://visualportfolio.co/social-google-photos/)
146
 
147
+ * **Stylish interaction effects**
148
 
149
+ * [Hover Tilt Effect](https://visualportfolio.co/justified-tilt-effect/)
150
+ * [Custom Hover Image](https://visualportfolio.co/custom-hover-image-animated-gif/) - useful for animated GIFs
151
+ * [Caption Move Style](https://visualportfolio.co/masonry-caption-move/)
152
 
153
+ * **Responsive Breakpoints Settings**
154
+ Manually control the screen sizes, which used by the automatic responsive function to adapt your gallery layouts.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
 
156
+ * **Instagram-like Image Filters**
157
+ Improve visual look of you gallery images by adding filters on your normal or hovered images.
158
 
159
+ * **AJAX Improvements**
160
+ Requests properly cached and links preloaded before you click.
161
+
162
+ * **Advanced Query Settings**
163
+ Filter by Author, Date Range, Ignore Sticky Posts, exclude posts without Featured Image, and much more...
164
+
165
+ * **Popup Gallery for Posts and Pages**
166
+ Display posts and pages in popup iframe, not only image and video galleries. It's like works preview in Dribbble and Behance, but on your own site.
167
+
168
+ * **Popup Gallery Deep Linking**
169
+ Makes URL automatically change when you open popup and you can easily link to a specific popup image.
170
+
171
+ [**Find much more portfolio and gallery features of Visual Portfolio Pro today!**](https://visualportfolio.co/pro/?utm_source=wporg&utm_medium=link&utm_campaign=pro)
172
+
173
+ ### ⭐ More Features ###
174
 
175
  * **Lightboxes for Standard WordPress Images**
176
  Image lightbox available for Visual Portfolio galleries as well as for standard WordPress images and galleries in your content.
289
 
290
  ## Changelog ##
291
 
292
+ = 2.10.0 =
293
+
294
+ * added new Query setting to select multiple post types
295
+ * added new setting - 'Use Deep Linking URL to Share Images'
296
+ * added support for TED and Coub Video popups in Pro plugin
297
+ * added possibility to remove no-image from Settings
298
+ * added more templates for items (split meta parts to separate templates)
299
+ * added width and max-width styles to JS Stretch code to prevent possible styles conflicts
300
+ * fixed styles loading when using filter and sort shortcodes
301
+
302
  = 2.9.1 =
303
 
304
  * added full support for WPML plugin
templates/global/link-end.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Link end template.
4
+ *
5
+ * @var $href
6
+ * @var $target
7
+ * @var $class
8
+ * @var $fallback
9
+ *
10
+ * @package visual-portfolio
11
+ */
12
+
13
+ if ( ! defined( 'ABSPATH' ) ) {
14
+ exit;
15
+ }
16
+
17
+ if ( isset( $href ) && $href ) {
18
+ echo '</a>';
19
+ } elseif ( isset( $fallback ) && $fallback ) {
20
+ echo '</' . esc_html( $fallback ) . '>';
21
+ }
templates/global/link-start.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Link start template.
4
+ *
5
+ * @var $href
6
+ * @var $target
7
+ * @var $rel
8
+ * @var $tabindex
9
+ * @var $class
10
+ * @var $fallback
11
+ *
12
+ * @package visual-portfolio
13
+ */
14
+
15
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
16
+
17
+ if ( ! defined( 'ABSPATH' ) ) {
18
+ exit;
19
+ }
20
+
21
+ $attributes = ' ';
22
+
23
+ if ( isset( $href ) && $href ) {
24
+ $attributes .= 'href="' . esc_url( $href ) . '" ';
25
+
26
+ if ( isset( $target ) && $target ) {
27
+ $attributes .= 'target="' . esc_attr( $target ) . '" ';
28
+ }
29
+ if ( isset( $rel ) && $rel ) {
30
+ $attributes .= 'rel="' . esc_attr( $rel ) . '" ';
31
+ }
32
+ if ( isset( $tabindex ) && $tabindex ) {
33
+ $attributes .= 'tabindex="' . esc_attr( $tabindex ) . '" ';
34
+ }
35
+ }
36
+ if ( isset( $class ) && $class ) {
37
+ $attributes .= 'class="' . esc_attr( $class ) . '" ';
38
+ }
39
+
40
+ if ( isset( $href ) && $href ) {
41
+ // phpcs:ignore
42
+ echo '<a ' . $attributes . '>';
43
+ } elseif ( isset( $fallback ) && $fallback ) {
44
+ // phpcs:ignore
45
+ echo '<' . esc_html( $fallback ) . ' ' . $attributes . '>';
46
+ }
templates/items-list/filter/dropdown/filter.php CHANGED
@@ -3,9 +3,12 @@
3
  * Dropdown filter template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
 
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
@@ -15,7 +18,6 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-filter__style-dropdown">
16
  <select>
17
  <?php
18
- // phpcs:ignore
19
  foreach ( $args['items'] as $item ) {
20
  ?>
21
  <option class="<?php echo esc_attr( $item['class'] ); ?>" data-vp-url="<?php echo esc_url( $item['url'] ); ?>" data-vp-filter="<?php echo esc_attr( $item['filter'] ); ?>" value="<?php echo esc_attr( $item['filter'] ); ?>" <?php selected( $item['active'] ); ?>>
3
  * Dropdown filter template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
10
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
11
+
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
18
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-filter__style-dropdown">
19
  <select>
20
  <?php
 
21
  foreach ( $args['items'] as $item ) {
22
  ?>
23
  <option class="<?php echo esc_attr( $item['class'] ); ?>" data-vp-url="<?php echo esc_url( $item['url'] ); ?>" data-vp-filter="<?php echo esc_attr( $item['filter'] ); ?>" value="<?php echo esc_attr( $item['filter'] ); ?>" <?php selected( $item['active'] ); ?>>
templates/items-list/filter/filter.php CHANGED
@@ -3,9 +3,12 @@
3
  * Default filter template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
 
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
@@ -14,7 +17,6 @@ if ( ! defined( 'ABSPATH' ) ) {
14
 
15
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-filter__style-default">
16
  <?php
17
- // phpcs:ignore
18
  foreach ( $args['items'] as $item ) {
19
  ?>
20
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
3
  * Default filter template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
10
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
11
+
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
17
 
18
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-filter__style-default">
19
  <?php
 
20
  foreach ( $args['items'] as $item ) {
21
  ?>
22
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
templates/items-list/filter/minimal/filter.php CHANGED
@@ -3,9 +3,12 @@
3
  * Minimal filter template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
 
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
@@ -14,7 +17,6 @@ if ( ! defined( 'ABSPATH' ) ) {
14
 
15
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-filter__style-minimal">
16
  <?php
17
- // phpcs:ignore
18
  foreach ( $args['items'] as $item ) {
19
  ?>
20
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
3
  * Minimal filter template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
10
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
11
+
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
17
 
18
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-filter__style-minimal">
19
  <?php
 
20
  foreach ( $args['items'] as $item ) {
21
  ?>
22
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
templates/items-list/item-parts/excerpt.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item excerpt template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ *
8
+ * @package visual-portfolio
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ if ( ! $opts['show_excerpt'] || ! $args['excerpt'] ) {
16
+ return;
17
+ }
18
+
19
+ ?>
20
+
21
+ <div class="vp-portfolio__item-meta-excerpt">
22
+ <div>
23
+ <?php echo wp_kses_post( $args['excerpt'] ); ?>
24
+ </div>
25
+ </div>
templates/items-list/item-parts/icon.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item meta icon template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ *
8
+ * @package visual-portfolio
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ if ( ! $opts['show_icon'] ) {
16
+ return;
17
+ }
18
+
19
+ ?>
20
+
21
+ <div class="vp-portfolio__item-meta-icon">
22
+ <?php
23
+ switch ( $args['format'] ) {
24
+ case 'video':
25
+ visual_portfolio()->include_template( 'icons/play' );
26
+ break;
27
+ case 'audio':
28
+ visual_portfolio()->include_template( 'icons/music' );
29
+ break;
30
+ case 'gallery':
31
+ visual_portfolio()->include_template( 'icons/gallery' );
32
+ break;
33
+ default:
34
+ if ( isset( $args['vp_opts']['items_click_action'] ) && 'popup_gallery' === $args['vp_opts']['items_click_action'] ) {
35
+ visual_portfolio()->include_template( 'icons/search' );
36
+ } else {
37
+ visual_portfolio()->include_template( 'icons/image' );
38
+ }
39
+ break;
40
+ }
41
+ ?>
42
+ </div>
templates/items-list/item-parts/inline-meta.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item inline meta template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ * @var $allow_links
8
+ *
9
+ * @package visual-portfolio
10
+ */
11
+
12
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
13
+
14
+ if ( ! defined( 'ABSPATH' ) ) {
15
+ exit;
16
+ }
17
+
18
+ $inline_meta = $opts['show_author'] && $args['author'] ||
19
+ $opts['show_date'] ||
20
+ $opts['show_comments_count'] && '' !== $args['comments_count'] ||
21
+ $opts['show_views_count'] && $args['views_count'] ||
22
+ $opts['show_reading_time'] && $args['reading_time'];
23
+
24
+ $templates_data = array(
25
+ 'args' => $args,
26
+ 'opts' => $opts,
27
+ 'allow_links' => isset( $allow_links ) ? $allow_links : false,
28
+ );
29
+
30
+ if ( ! $inline_meta ) {
31
+ return;
32
+ }
33
+
34
+ ?>
35
+
36
+ <div class="vp-portfolio__item-meta-inline">
37
+ <?php
38
+ // Author.
39
+ visual_portfolio()->include_template( 'items-list/item-parts/meta-author', $templates_data );
40
+
41
+ // Date.
42
+ visual_portfolio()->include_template( 'items-list/item-parts/meta-date', $templates_data );
43
+
44
+ // Comments.
45
+ visual_portfolio()->include_template( 'items-list/item-parts/meta-comments', $templates_data );
46
+
47
+ // Views.
48
+ visual_portfolio()->include_template( 'items-list/item-parts/meta-views', $templates_data );
49
+
50
+ // Reading Time.
51
+ visual_portfolio()->include_template( 'items-list/item-parts/meta-reading-time', $templates_data );
52
+ ?>
53
+ </div>
templates/items-list/item-parts/meta-author.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item meta author template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ * @var $allow_links
8
+ *
9
+ * @package visual-portfolio
10
+ */
11
+
12
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
13
+
14
+ if ( ! defined( 'ABSPATH' ) ) {
15
+ exit;
16
+ }
17
+
18
+ if ( ! $opts['show_author'] || ! $args['author'] ) {
19
+ return;
20
+ }
21
+
22
+ $allow_links = isset( $allow_links ) ? $allow_links : false;
23
+ $link_data = array(
24
+ 'href' => $allow_links ? $args['author_url'] : false,
25
+ );
26
+
27
+ ?>
28
+
29
+ <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-author">
30
+ <span class="vp-portfolio__item-meta-part-icon">
31
+ <span class="vp-screen-reader-text">
32
+ <?php echo esc_html__( 'Author', 'visual-portfolio' ); ?>
33
+ </span>
34
+ <?php
35
+ if ( $args['author_avatar'] ) {
36
+ visual_portfolio()->include_template( 'global/link-start', $link_data );
37
+ ?>
38
+ <img src="<?php echo esc_url( $args['author_avatar'] ); ?>" alt="<?php echo esc_attr( $args['author'] ); ?>" width="50" height="50">
39
+ <?php
40
+ visual_portfolio()->include_template( 'global/link-end', $link_data );
41
+ } else {
42
+ visual_portfolio()->include_template( 'icons/user' );
43
+ }
44
+ ?>
45
+ </span>
46
+ <span class="vp-portfolio__item-meta-part-text">
47
+ <?php
48
+ printf(
49
+ // translators: %s - author name.
50
+ esc_html__( 'By %s', 'visual-portfolio' ),
51
+ $link_data['href'] ? '<a href="' . esc_url( $link_data['href'] ) . '">' . esc_html( $args['author'] ) . '</a>' : esc_html( $args['author'] )
52
+ );
53
+ ?>
54
+ </span>
55
+ </div>
templates/items-list/item-parts/meta-categories.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item meta categories template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ * @var $allow_links
8
+ *
9
+ * @package visual-portfolio
10
+ */
11
+
12
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
13
+
14
+ if ( ! defined( 'ABSPATH' ) ) {
15
+ exit;
16
+ }
17
+
18
+ if ( ! $opts['show_categories'] || ! $args['categories'] || empty( $args['categories'] ) ) {
19
+ return;
20
+ }
21
+
22
+ $allow_links = isset( $allow_links ) ? $allow_links : false;
23
+ $count = $opts['categories_count'];
24
+
25
+ ?>
26
+
27
+ <div class="vp-portfolio__item-meta-categories">
28
+ <?php
29
+ foreach ( $args['categories'] as $category ) {
30
+ if ( ! $count ) {
31
+ break;
32
+ }
33
+
34
+ $link_data = array(
35
+ 'href' => $allow_links ? $category['url'] : false,
36
+ 'fallback' => 'span',
37
+ );
38
+
39
+ ?>
40
+ <div class="vp-portfolio__item-meta-category">
41
+ <?php
42
+ visual_portfolio()->include_template( 'global/link-start', $link_data );
43
+ echo esc_html( $category['label'] );
44
+ visual_portfolio()->include_template( 'global/link-end', $link_data );
45
+ ?>
46
+ </div>
47
+ <?php
48
+ $count--;
49
+ }
50
+ ?>
51
+ </div>
templates/items-list/item-parts/meta-comments.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item meta comments template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ * @var $allow_links
8
+ *
9
+ * @package visual-portfolio
10
+ */
11
+
12
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
13
+
14
+ if ( ! defined( 'ABSPATH' ) ) {
15
+ exit;
16
+ }
17
+
18
+ if ( ! $opts['show_comments_count'] || '' === $args['comments_count'] ) {
19
+ return;
20
+ }
21
+
22
+ $allow_links = isset( $allow_links ) ? $allow_links : false;
23
+ $link_data = array(
24
+ 'href' => $allow_links ? $args['comments_url'] : false,
25
+ );
26
+
27
+ ?>
28
+
29
+ <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-comments">
30
+ <span class="vp-portfolio__item-meta-part-icon">
31
+ <span class="vp-screen-reader-text">
32
+ <?php echo esc_html__( 'Comments', 'visual-portfolio' ); ?>
33
+ </span>
34
+ <?php visual_portfolio()->include_template( 'icons/message' ); ?>
35
+ </span>
36
+ <span class="vp-portfolio__item-meta-part-text">
37
+ <?php
38
+ visual_portfolio()->include_template( 'global/link-start', $link_data );
39
+
40
+ if ( ! $args['comments_count'] ) {
41
+ echo esc_html__( 'No Comments', 'visual-portfolio' );
42
+ } else {
43
+ // translators: %s Number of comments.
44
+ echo esc_html( sprintf( _n( '%s Comment', '%s Comments', $args['comments_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['comments_count'] ) ) );
45
+ }
46
+
47
+ visual_portfolio()->include_template( 'global/link-end', $link_data );
48
+ ?>
49
+ </span>
50
+ </div>
templates/items-list/item-parts/meta-date.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item meta date template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ *
8
+ * @package visual-portfolio
9
+ */
10
+
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
+ if ( ! defined( 'ABSPATH' ) ) {
14
+ exit;
15
+ }
16
+
17
+ if ( ! $opts['show_date'] ) {
18
+ return;
19
+ }
20
+
21
+ ?>
22
+
23
+ <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-date">
24
+ <span class="vp-portfolio__item-meta-part-icon">
25
+ <span class="vp-screen-reader-text">
26
+ <?php echo esc_html__( 'Date', 'visual-portfolio' ); ?>
27
+ </span>
28
+ <?php visual_portfolio()->include_template( 'icons/calendar' ); ?>
29
+ </span>
30
+ <span class="vp-portfolio__item-meta-part-text">
31
+ <?php echo esc_html( $args['published'] ); ?>
32
+ </span>
33
+ </div>
templates/items-list/item-parts/meta-reading-time.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item meta reading time template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ *
8
+ * @package visual-portfolio
9
+ */
10
+
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
+ if ( ! defined( 'ABSPATH' ) ) {
14
+ exit;
15
+ }
16
+
17
+ if ( ! $opts['show_reading_time'] || ! $args['reading_time'] ) {
18
+ return;
19
+ }
20
+
21
+ ?>
22
+
23
+ <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-reading-rime">
24
+ <span class="vp-portfolio__item-meta-part-icon">
25
+ <span class="vp-screen-reader-text">
26
+ <?php echo esc_html__( 'Reading Time', 'visual-portfolio' ); ?>
27
+ </span>
28
+ <?php visual_portfolio()->include_template( 'icons/book' ); ?>
29
+ </span>
30
+ <span class="vp-portfolio__item-meta-part-text">
31
+ <?php
32
+ echo esc_html(
33
+ sprintf(
34
+ // translators: %s Reading time minutes.
35
+ _n(
36
+ '%s Min Read',
37
+ '%s Mins Read',
38
+ is_string( $args['reading_time'] ) ? 1 : $args['reading_time'],
39
+ 'visual-portfolio'
40
+ ),
41
+ is_string( $args['reading_time'] ) ? $args['reading_time'] : number_format_i18n( (int) $args['reading_time'] )
42
+ )
43
+ );
44
+ ?>
45
+ </span>
46
+ </div>
templates/items-list/item-parts/meta-views.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item meta views template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ *
8
+ * @package visual-portfolio
9
+ */
10
+
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
+ if ( ! defined( 'ABSPATH' ) ) {
14
+ exit;
15
+ }
16
+
17
+ if ( ! $opts['show_views_count'] || ! $args['views_count'] ) {
18
+ return;
19
+ }
20
+
21
+ ?>
22
+
23
+ <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-views">
24
+ <span class="vp-portfolio__item-meta-part-icon">
25
+ <span class="vp-screen-reader-text">
26
+ <?php echo esc_html__( 'Views', 'visual-portfolio' ); ?>
27
+ </span>
28
+ <?php visual_portfolio()->include_template( 'icons/eye' ); ?>
29
+ </span>
30
+ <span class="vp-portfolio__item-meta-part-text">
31
+ <?php
32
+ // translators: %s Number of views.
33
+ echo esc_html( sprintf( _n( '%s View', '%s Views', $args['views_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['views_count'] ) ) );
34
+ ?>
35
+ </span>
36
+ </div>
templates/items-list/item-parts/read-more.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item read more template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ *
8
+ * @package visual-portfolio
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ if ( ! $opts['show_read_more'] || ! $opts['read_more_label'] ) {
16
+ return;
17
+ }
18
+
19
+ ?>
20
+
21
+ <a class="vp-portfolio__item-meta-read-more" href="<?php echo esc_url( $opts['read_more_url'] ); ?>">
22
+ <?php echo esc_html( $opts['read_more_label'] ); ?>
23
+ </a>
templates/items-list/item-parts/title.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Item title template.
4
+ *
5
+ * @var $args
6
+ * @var $opts
7
+ * @var $allow_links
8
+ *
9
+ * @package visual-portfolio
10
+ */
11
+
12
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
13
+
14
+ if ( ! defined( 'ABSPATH' ) ) {
15
+ exit;
16
+ }
17
+
18
+ if ( ! $opts['show_title'] || ! $args['title'] ) {
19
+ return;
20
+ }
21
+
22
+ $allow_links = isset( $allow_links ) ? $allow_links : false;
23
+ $link_data = array(
24
+ 'href' => $allow_links ? $args['url'] : false,
25
+ 'target' => $args['url_target'],
26
+ 'rel' => $args['url_rel'],
27
+ );
28
+
29
+ ?>
30
+
31
+ <h2 class="vp-portfolio__item-meta-title">
32
+ <?php
33
+ visual_portfolio()->include_template( 'global/link-start', $link_data );
34
+ echo wp_kses_post( $args['title'] );
35
+ visual_portfolio()->include_template( 'global/link-end', $link_data );
36
+ ?>
37
+ </h2>
templates/items-list/items-style/emerge/image.php CHANGED
@@ -4,42 +4,31 @@
4
  *
5
  * @var $args
6
  * @var $opts
 
7
  * @package visual-portfolio
8
  */
9
 
 
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
 
 
 
 
 
 
14
  ?>
15
 
16
  <div class="vp-portfolio__item-img-wrap">
17
  <div class="vp-portfolio__item-img">
18
- <?php
19
- if ( $args['url'] ) {
20
- ?>
21
- <a href="<?php echo esc_url( $args['url'] ); ?>"
22
- <?php
23
- if ( isset( $args['url_target'] ) && $args['url_target'] ) :
24
- ?>
25
- target="<?php echo esc_attr( $args['url_target'] ); ?>"
26
- <?php
27
- endif;
28
- if ( isset( $args['url_rel'] ) && $args['url_rel'] ) :
29
- ?>
30
- rel="<?php echo esc_attr( $args['url_rel'] ); ?>"
31
- <?php
32
- endif;
33
- ?>
34
- >
35
- <?php echo wp_kses( $args['image'], $args['image_allowed_html'] ); ?>
36
 
37
- <div class="vp-portfolio__item-img-overlay"></div>
38
- </a>
39
- <?php
40
- } else {
41
- echo wp_kses( $args['image'], $args['image_allowed_html'] );
42
- }
43
- ?>
44
  </div>
45
  </div>
4
  *
5
  * @var $args
6
  * @var $opts
7
+ *
8
  * @package visual-portfolio
9
  */
10
 
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
+ $link_data = array(
18
+ 'href' => $args['url'],
19
+ 'target' => $args['url_target'],
20
+ 'rel' => $args['url_rel'],
21
+ );
22
+
23
  ?>
24
 
25
  <div class="vp-portfolio__item-img-wrap">
26
  <div class="vp-portfolio__item-img">
27
+ <?php visual_portfolio()->include_template( 'global/link-start', $link_data ); ?>
28
+
29
+ <?php echo wp_kses( $args['image'], $args['image_allowed_html'] ); ?>
30
+ <div class="vp-portfolio__item-img-overlay"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
+ <?php visual_portfolio()->include_template( 'global/link-утв', $link_data ); ?>
 
 
 
 
 
 
33
  </div>
34
  </div>
templates/items-list/items-style/emerge/meta.php CHANGED
@@ -4,26 +4,33 @@
4
  *
5
  * @var $args
6
  * @var $opts
 
7
  * @package visual-portfolio
8
  */
9
 
 
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
14
- // phpcs:ignore
15
  $inline_meta = $opts['show_author'] && $args['author'] ||
16
  $opts['show_date'] ||
17
  $opts['show_comments_count'] && '' !== $args['comments_count'] ||
18
  $opts['show_views_count'] && $args['views_count'] ||
19
  $opts['show_reading_time'] && $args['reading_time'];
20
 
21
- // phpcs:ignore
22
  $show_meta = $inline_meta ||
23
  $opts['show_title'] && $args['title'] ||
24
  $opts['show_excerpt'] && $args['excerpt'] ||
25
  $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] );
26
 
 
 
 
 
 
 
27
  ?>
28
 
29
  <figcaption class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
@@ -31,231 +38,17 @@ $show_meta = $inline_meta ||
31
  <div class="vp-portfolio__item-meta-wrap vp-portfolio__custom-scrollbar">
32
  <div class="vp-portfolio__item-meta">
33
  <?php
 
 
34
 
35
- // Show Categories.
36
- if ( $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] ) ) {
37
- ?>
38
- <div class="vp-portfolio__item-meta-categories">
39
- <?php
40
- // phpcs:ignore
41
- $count = $opts['categories_count'];
42
-
43
- // phpcs:ignore
44
- foreach ( $args['categories'] as $category ) {
45
- if ( ! $count ) {
46
- break;
47
- }
48
- ?>
49
- <div class="vp-portfolio__item-meta-category">
50
- <a href="<?php echo esc_url( $category['url'] ); ?>">
51
- <?php echo esc_html( $category['label'] ); ?>
52
- </a>
53
- </div>
54
- <?php
55
- $count--;
56
- }
57
- ?>
58
- </div>
59
- <?php
60
- }
61
-
62
- // Show Title.
63
- if ( $opts['show_title'] && $args['title'] ) {
64
- ?>
65
- <h2 class="vp-portfolio__item-meta-title">
66
- <?php
67
- if ( $args['url'] ) {
68
- ?>
69
- <a href="<?php echo esc_url( $args['url'] ); ?>"
70
- <?php
71
- if ( isset( $args['url_target'] ) && $args['url_target'] ) :
72
- ?>
73
- target="<?php echo esc_attr( $args['url_target'] ); ?>"
74
- <?php
75
- endif;
76
- if ( isset( $args['url_rel'] ) && $args['url_rel'] ) :
77
- ?>
78
- rel="<?php echo esc_attr( $args['url_rel'] ); ?>"
79
- <?php
80
- endif;
81
- ?>
82
- >
83
- <?php echo wp_kses_post( $args['title'] ); ?>
84
- </a>
85
- <?php
86
- } else {
87
- echo wp_kses_post( $args['title'] );
88
- }
89
- ?>
90
- </h2>
91
- <?php
92
- }
93
 
94
  // Inline Meta.
95
- if ( $inline_meta ) {
96
- ?>
97
- <div class="vp-portfolio__item-meta-inline">
98
- <?php
99
-
100
- // Show Author.
101
- if ( $opts['show_author'] && $args['author'] ) {
102
- ?>
103
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-author">
104
- <span class="vp-portfolio__item-meta-part-icon">
105
- <span class="vp-screen-reader-text">
106
- <?php echo esc_html__( 'Author', 'visual-portfolio' ); ?>
107
- </span>
108
- <?php
109
- if ( $args['author_avatar'] ) {
110
- if ( $args['author_url'] ) {
111
- ?>
112
- <a href="<?php echo esc_url( $args['author_url'] ); ?>">
113
- <?php
114
- }
115
- ?>
116
- <img src="<?php echo esc_url( $args['author_avatar'] ); ?>" alt="<?php echo esc_attr( $args['author'] ); ?>" width="50" height="50">
117
- <?php
118
- if ( $args['author_url'] ) {
119
- ?>
120
- </a>
121
- <?php
122
- }
123
- } else {
124
- visual_portfolio()->include_template( 'icons/user' );
125
- }
126
- ?>
127
- </span>
128
- <span class="vp-portfolio__item-meta-part-text">
129
- <?php
130
- printf(
131
- // translators: %s - author name.
132
- esc_html__( 'By %s', 'visual-portfolio' ),
133
- $args['author_url'] ? '<a href="' . esc_url( $args['author_url'] ) . '">' . esc_html( $args['author'] ) . '</a>' : esc_html( $args['author'] )
134
- );
135
- ?>
136
- </span>
137
- </div>
138
- <?php
139
- }
140
-
141
- // Show Date.
142
- if ( $opts['show_date'] ) {
143
- ?>
144
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-date">
145
- <span class="vp-portfolio__item-meta-part-icon">
146
- <span class="vp-screen-reader-text">
147
- <?php echo esc_html__( 'Date', 'visual-portfolio' ); ?>
148
- </span>
149
- <?php visual_portfolio()->include_template( 'icons/calendar' ); ?>
150
- </span>
151
- <span class="vp-portfolio__item-meta-part-text">
152
- <?php echo esc_html( $args['published'] ); ?>
153
- </span>
154
- </div>
155
- <?php
156
- }
157
-
158
- // Show Comments Count.
159
- if ( $opts['show_comments_count'] && '' !== $args['comments_count'] ) {
160
- ?>
161
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-comments">
162
- <span class="vp-portfolio__item-meta-part-icon">
163
- <span class="vp-screen-reader-text">
164
- <?php echo esc_html__( 'Comments', 'visual-portfolio' ); ?>
165
- </span>
166
- <?php visual_portfolio()->include_template( 'icons/message' ); ?>
167
- </span>
168
- <span class="vp-portfolio__item-meta-part-text">
169
- <?php
170
- if ( $args['comments_url'] ) {
171
- ?>
172
- <a href="<?php echo esc_url( $args['comments_url'] ); ?>">
173
- <?php
174
- }
175
-
176
- if ( ! $args['comments_count'] ) {
177
- echo esc_html__( 'No Comments', 'visual-portfolio' );
178
- } else {
179
- // translators: %s Number of comments.
180
- echo esc_html( sprintf( _n( '%s Comment', '%s Comments', $args['comments_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['comments_count'] ) ) );
181
- }
182
-
183
- if ( $args['comments_url'] ) {
184
- ?>
185
- </a>
186
- <?php
187
- }
188
- ?>
189
- </span>
190
- </div>
191
- <?php
192
- }
193
-
194
- // Show Views Count.
195
- if ( $opts['show_views_count'] && $args['views_count'] ) {
196
- ?>
197
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-views">
198
- <span class="vp-portfolio__item-meta-part-icon">
199
- <span class="vp-screen-reader-text">
200
- <?php echo esc_html__( 'Views', 'visual-portfolio' ); ?>
201
- </span>
202
- <?php visual_portfolio()->include_template( 'icons/eye' ); ?>
203
- </span>
204
- <span class="vp-portfolio__item-meta-part-text">
205
- <?php
206
- // translators: %s Number of views.
207
- echo esc_html( sprintf( _n( '%s View', '%s Views', $args['views_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['views_count'] ) ) );
208
- ?>
209
- </span>
210
- </div>
211
- <?php
212
- }
213
-
214
- // Show Reading Time.
215
- if ( $opts['show_reading_time'] && $args['reading_time'] ) {
216
- ?>
217
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-reading-rime">
218
- <span class="vp-portfolio__item-meta-part-icon">
219
- <span class="vp-screen-reader-text">
220
- <?php echo esc_html__( 'Reading Time', 'visual-portfolio' ); ?>
221
- </span>
222
- <?php visual_portfolio()->include_template( 'icons/book' ); ?>
223
- </span>
224
- <span class="vp-portfolio__item-meta-part-text">
225
- <?php
226
- echo esc_html(
227
- sprintf(
228
- // translators: %s Reading time minutes.
229
- _n(
230
- '%s Min Read',
231
- '%s Mins Read',
232
- is_string( $args['reading_time'] ) ? 1 : $args['reading_time'],
233
- 'visual-portfolio'
234
- ),
235
- is_string( $args['reading_time'] ) ? $args['reading_time'] : number_format_i18n( (int) $args['reading_time'] )
236
- )
237
- );
238
- ?>
239
- </span>
240
- </div>
241
- <?php
242
- }
243
-
244
- ?>
245
- </div>
246
- <?php
247
- }
248
 
249
- // Show Excerpt.
250
- if ( $opts['show_excerpt'] && $args['excerpt'] ) {
251
- ?>
252
- <div class="vp-portfolio__item-meta-excerpt">
253
- <div>
254
- <?php echo wp_kses_post( $args['excerpt'] ); ?>
255
- </div>
256
- </div>
257
- <?php
258
- }
259
  ?>
260
  </div>
261
  </div>
4
  *
5
  * @var $args
6
  * @var $opts
7
+ *
8
  * @package visual-portfolio
9
  */
10
 
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
 
17
  $inline_meta = $opts['show_author'] && $args['author'] ||
18
  $opts['show_date'] ||
19
  $opts['show_comments_count'] && '' !== $args['comments_count'] ||
20
  $opts['show_views_count'] && $args['views_count'] ||
21
  $opts['show_reading_time'] && $args['reading_time'];
22
 
 
23
  $show_meta = $inline_meta ||
24
  $opts['show_title'] && $args['title'] ||
25
  $opts['show_excerpt'] && $args['excerpt'] ||
26
  $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] );
27
 
28
+ $templates_data = array(
29
+ 'args' => $args,
30
+ 'opts' => $opts,
31
+ 'allow_links' => true,
32
+ );
33
+
34
  ?>
35
 
36
  <figcaption class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
38
  <div class="vp-portfolio__item-meta-wrap vp-portfolio__custom-scrollbar">
39
  <div class="vp-portfolio__item-meta">
40
  <?php
41
+ // Categories.
42
+ visual_portfolio()->include_template( 'items-list/item-parts/meta-categories', $templates_data );
43
 
44
+ // Title.
45
+ visual_portfolio()->include_template( 'items-list/item-parts/title', $templates_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
  // Inline Meta.
48
+ visual_portfolio()->include_template( 'items-list/item-parts/inline-meta', $templates_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ // Excerpt.
51
+ visual_portfolio()->include_template( 'items-list/item-parts/excerpt', $templates_data );
 
 
 
 
 
 
 
 
52
  ?>
53
  </div>
54
  </div>
templates/items-list/items-style/fade/image.php CHANGED
@@ -4,40 +4,30 @@
4
  *
5
  * @var $args
6
  * @var $opts
 
7
  * @package visual-portfolio
8
  */
9
 
 
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
 
 
 
 
 
 
14
  ?>
15
 
16
  <div class="vp-portfolio__item-img-wrap">
17
  <div class="vp-portfolio__item-img">
18
- <?php
19
- if ( $args['url'] ) {
20
- ?>
21
- <a href="<?php echo esc_url( $args['url'] ); ?>"
22
- <?php
23
- if ( isset( $args['url_target'] ) && $args['url_target'] ) :
24
- ?>
25
- target="<?php echo esc_attr( $args['url_target'] ); ?>"
26
- <?php
27
- endif;
28
- if ( isset( $args['url_rel'] ) && $args['url_rel'] ) :
29
- ?>
30
- rel="<?php echo esc_attr( $args['url_rel'] ); ?>"
31
- <?php
32
- endif;
33
- ?>
34
- >
35
- <?php echo wp_kses( $args['image'], $args['image_allowed_html'] ); ?>
36
- </a>
37
- <?php
38
- } else {
39
- echo wp_kses( $args['image'], $args['image_allowed_html'] );
40
- }
41
- ?>
42
  </div>
43
  </div>
4
  *
5
  * @var $args
6
  * @var $opts
7
+ *
8
  * @package visual-portfolio
9
  */
10
 
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
+ $link_data = array(
18
+ 'href' => $args['url'],
19
+ 'target' => $args['url_target'],
20
+ 'rel' => $args['url_rel'],
21
+ );
22
+
23
  ?>
24
 
25
  <div class="vp-portfolio__item-img-wrap">
26
  <div class="vp-portfolio__item-img">
27
+ <?php visual_portfolio()->include_template( 'global/link-start', $link_data ); ?>
28
+
29
+ <?php echo wp_kses( $args['image'], $args['image_allowed_html'] ); ?>
30
+
31
+ <?php visual_portfolio()->include_template( 'global/link-end', $link_data ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  </div>
33
  </div>
templates/items-list/items-style/fade/meta.php CHANGED
@@ -4,291 +4,68 @@
4
  *
5
  * @var $args
6
  * @var $opts
 
7
  * @package visual-portfolio
8
  */
9
 
 
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
14
- // phpcs:ignore
15
- $tag = 'a';
16
- if ( ! $args['url'] ) {
17
- // phpcs:ignore
18
- $tag = 'span';
19
- }
20
-
21
- // phpcs:ignore
22
  $inline_meta = $opts['show_author'] && $args['author'] ||
23
  $opts['show_date'] ||
24
  $opts['show_comments_count'] && '' !== $args['comments_count'] ||
25
  $opts['show_views_count'] && $args['views_count'] ||
26
  $opts['show_reading_time'] && $args['reading_time'];
27
 
28
- // phpcs:ignore
29
  $show_meta = $inline_meta ||
30
  $opts['show_icon'] ||
31
  $opts['show_title'] && $args['title'] ||
32
  $opts['show_excerpt'] && $args['excerpt'] ||
33
  $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] );
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  ?>
36
 
37
  <figcaption class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
38
  <div class="vp-portfolio__item-meta-wrap vp-portfolio__custom-scrollbar">
39
- <<?php echo esc_html( $tag ); ?>
40
- <?php if ( $args['url'] ) : ?>
41
- href="<?php echo esc_url( $args['url'] ); ?>"
42
- <?php
43
- if ( isset( $args['url_target'] ) && $args['url_target'] ) :
44
- ?>
45
- target="<?php echo esc_attr( $args['url_target'] ); ?>"
46
- <?php
47
- endif;
48
- if ( isset( $args['url_rel'] ) && $args['url_rel'] ) :
49
- ?>
50
- rel="<?php echo esc_attr( $args['url_rel'] ); ?>"
51
- <?php
52
- endif;
53
- ?>
54
- tabindex="-1"
55
- <?php endif; ?>
56
- class="vp-portfolio__item-meta">
57
-
58
- <?php if ( $show_meta ) : ?>
59
- <?php
60
-
61
- // Show Icon.
62
- if ( $opts['show_icon'] ) {
63
- ?>
64
- <div class="vp-portfolio__item-meta-icon">
65
- <?php
66
- switch ( $args['format'] ) {
67
- case 'video':
68
- visual_portfolio()->include_template( 'icons/play' );
69
- break;
70
- case 'audio':
71
- visual_portfolio()->include_template( 'icons/music' );
72
- break;
73
- case 'gallery':
74
- visual_portfolio()->include_template( 'icons/gallery' );
75
- break;
76
- default:
77
- if ( isset( $args['vp_opts']['items_click_action'] ) && 'popup_gallery' === $args['vp_opts']['items_click_action'] ) {
78
- visual_portfolio()->include_template( 'icons/search' );
79
- } else {
80
- visual_portfolio()->include_template( 'icons/image' );
81
- }
82
- break;
83
- }
84
- ?>
85
- </div>
86
- <?php
87
- }
88
-
89
- // Show Categories.
90
- if ( $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] ) ) {
91
- ?>
92
- <div class="vp-portfolio__item-meta-categories">
93
- <?php
94
- // phpcs:ignore
95
- $count = $opts['categories_count'];
96
-
97
- // phpcs:ignore
98
- foreach ( $args['categories'] as $category ) {
99
- if ( ! $count ) {
100
- break;
101
- }
102
- ?>
103
- <div class="vp-portfolio__item-meta-category">
104
- <span><?php echo esc_html( $category['label'] ); ?></span>
105
- </div>
106
- <?php
107
- $count--;
108
- }
109
- ?>
110
- </div>
111
- <?php
112
- }
113
-
114
- // Show Title.
115
- if ( $opts['show_title'] && $args['title'] ) {
116
- ?>
117
- <h2 class="vp-portfolio__item-meta-title">
118
- <?php
119
- echo wp_kses_post( $args['title'] );
120
- ?>
121
- </h2>
122
- <?php
123
- }
124
-
125
- // Inline Meta.
126
- if ( $inline_meta ) {
127
- ?>
128
- <div class="vp-portfolio__item-meta-inline">
129
- <?php
130
-
131
- // Show Author.
132
- if ( $opts['show_author'] && $args['author'] ) {
133
- ?>
134
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-author">
135
- <span class="vp-portfolio__item-meta-part-icon">
136
- <span class="vp-screen-reader-text">
137
- <?php echo esc_html__( 'Author', 'visual-portfolio' ); ?>
138
- </span>
139
- <?php
140
- if ( $args['author_avatar'] ) {
141
- if ( $args['author_url'] && 'a' !== $tag ) {
142
- ?>
143
- <a href="<?php echo esc_url( $args['author_url'] ); ?>">
144
- <?php
145
- }
146
- ?>
147
- <img src="<?php echo esc_url( $args['author_avatar'] ); ?>" alt="<?php echo esc_attr( $args['author'] ); ?>" width="50" height="50">
148
- <?php
149
- if ( $args['author_url'] && 'a' !== $tag ) {
150
- ?>
151
- </a>
152
- <?php
153
- }
154
- } else {
155
- visual_portfolio()->include_template( 'icons/user' );
156
- }
157
- ?>
158
- </span>
159
- <span class="vp-portfolio__item-meta-part-text">
160
- <?php
161
- printf(
162
- // translators: %s - author name.
163
- esc_html__( 'By %s', 'visual-portfolio' ),
164
- $args['author_url'] && 'a' !== $tag ? '<a href="' . esc_url( $args['author_url'] ) . '">' . esc_html( $args['author'] ) . '</a>' : esc_html( $args['author'] )
165
- );
166
- ?>
167
- </span>
168
- </div>
169
- <?php
170
- }
171
-
172
- // Show Date.
173
- if ( $opts['show_date'] ) {
174
- ?>
175
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-date">
176
- <span class="vp-portfolio__item-meta-part-icon">
177
- <span class="vp-screen-reader-text">
178
- <?php echo esc_html__( 'Date', 'visual-portfolio' ); ?>
179
- </span>
180
- <?php visual_portfolio()->include_template( 'icons/calendar' ); ?>
181
- </span>
182
- <span class="vp-portfolio__item-meta-part-text">
183
- <?php echo esc_html( $args['published'] ); ?>
184
- </span>
185
- </div>
186
- <?php
187
- }
188
-
189
- // Show Comments Count.
190
- if ( $opts['show_comments_count'] && '' !== $args['comments_count'] ) {
191
- ?>
192
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-comments">
193
- <span class="vp-portfolio__item-meta-part-icon">
194
- <span class="vp-screen-reader-text">
195
- <?php echo esc_html__( 'Comments', 'visual-portfolio' ); ?>
196
- </span>
197
- <?php visual_portfolio()->include_template( 'icons/message' ); ?>
198
- </span>
199
- <span class="vp-portfolio__item-meta-part-text">
200
- <?php
201
- if ( $args['comments_url'] && 'a' !== $tag ) {
202
- ?>
203
- <a href="<?php echo esc_url( $args['comments_url'] ); ?>">
204
- <?php
205
- }
206
 
207
- if ( ! $args['comments_count'] ) {
208
- echo esc_html__( 'No Comments', 'visual-portfolio' );
209
- } else {
210
- // translators: %s Number of comments.
211
- echo esc_html( sprintf( _n( '%s Comment', '%s Comments', $args['comments_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['comments_count'] ) ) );
212
- }
213
 
214
- if ( $args['comments_url'] && 'a' !== $tag ) {
215
- ?>
216
- </a>
217
- <?php
218
- }
219
- ?>
220
- </span>
221
- </div>
222
- <?php
223
- }
224
 
225
- // Show Views Count.
226
- if ( $opts['show_views_count'] && $args['views_count'] ) {
227
- ?>
228
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-views">
229
- <span class="vp-portfolio__item-meta-part-icon">
230
- <span class="vp-screen-reader-text">
231
- <?php echo esc_html__( 'Views', 'visual-portfolio' ); ?>
232
- </span>
233
- <?php visual_portfolio()->include_template( 'icons/eye' ); ?>
234
- </span>
235
- <span class="vp-portfolio__item-meta-part-text">
236
- <?php
237
- // translators: %s Number of views.
238
- echo esc_html( sprintf( _n( '%s View', '%s Views', $args['views_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['views_count'] ) ) );
239
- ?>
240
- </span>
241
- </div>
242
- <?php
243
- }
244
 
245
- // Show Reading Time.
246
- if ( $opts['show_reading_time'] && $args['reading_time'] ) {
247
- ?>
248
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-reading-rime">
249
- <span class="vp-portfolio__item-meta-part-icon">
250
- <span class="vp-screen-reader-text">
251
- <?php echo esc_html__( 'Reading Time', 'visual-portfolio' ); ?>
252
- </span>
253
- <?php visual_portfolio()->include_template( 'icons/book' ); ?>
254
- </span>
255
- <span class="vp-portfolio__item-meta-part-text">
256
- <?php
257
- echo esc_html(
258
- sprintf(
259
- // translators: %s Reading time minutes.
260
- _n(
261
- '%s Min Read',
262
- '%s Mins Read',
263
- is_string( $args['reading_time'] ) ? 1 : $args['reading_time'],
264
- 'visual-portfolio'
265
- ),
266
- is_string( $args['reading_time'] ) ? $args['reading_time'] : number_format_i18n( (int) $args['reading_time'] )
267
- )
268
- );
269
- ?>
270
- </span>
271
- </div>
272
- <?php
273
- }
274
 
275
- ?>
276
- </div>
277
- <?php
278
- }
279
 
280
- // Show Excerpt.
281
- if ( $opts['show_excerpt'] && $args['excerpt'] ) {
282
- ?>
283
- <div class="vp-portfolio__item-meta-excerpt">
284
- <div>
285
- <?php echo wp_kses_post( $args['excerpt'] ); ?>
286
- </div>
287
- </div>
288
- <?php
289
- }
290
- ?>
291
- <?php endif; ?>
292
- </<?php echo esc_html( $tag ); ?>>
293
  </div>
294
  </figcaption>
4
  *
5
  * @var $args
6
  * @var $opts
7
+ *
8
  * @package visual-portfolio
9
  */
10
 
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
 
 
 
 
 
 
 
 
17
  $inline_meta = $opts['show_author'] && $args['author'] ||
18
  $opts['show_date'] ||
19
  $opts['show_comments_count'] && '' !== $args['comments_count'] ||
20
  $opts['show_views_count'] && $args['views_count'] ||
21
  $opts['show_reading_time'] && $args['reading_time'];
22
 
 
23
  $show_meta = $inline_meta ||
24
  $opts['show_icon'] ||
25
  $opts['show_title'] && $args['title'] ||
26
  $opts['show_excerpt'] && $args['excerpt'] ||
27
  $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] );
28
 
29
+ $templates_data = array(
30
+ 'args' => $args,
31
+ 'opts' => $opts,
32
+ 'allow_links' => ! $args['url'],
33
+ );
34
+
35
+ $link_data = array(
36
+ 'href' => $args['url'],
37
+ 'target' => $args['url_target'],
38
+ 'rel' => $args['url_rel'],
39
+ 'fallback' => 'span',
40
+ 'class' => 'vp-portfolio__item-meta',
41
+ 'tabindex' => '-1',
42
+ );
43
+
44
  ?>
45
 
46
  <figcaption class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
47
  <div class="vp-portfolio__item-meta-wrap vp-portfolio__custom-scrollbar">
48
+ <?php visual_portfolio()->include_template( 'global/link-start', $link_data ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ <?php
51
+ if ( $show_meta ) {
52
+ // Icon.
53
+ visual_portfolio()->include_template( 'items-list/item-parts/icon', $templates_data );
 
 
54
 
55
+ // Categories.
56
+ visual_portfolio()->include_template( 'items-list/item-parts/meta-categories', $templates_data );
 
 
 
 
 
 
 
 
57
 
58
+ // Title.
59
+ visual_portfolio()->include_template( 'items-list/item-parts/title', $templates_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
+ // Inline Meta.
62
+ visual_portfolio()->include_template( 'items-list/item-parts/inline-meta', $templates_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
+ // Excerpt.
65
+ visual_portfolio()->include_template( 'items-list/item-parts/excerpt', $templates_data );
66
+ }
67
+ ?>
68
 
69
+ <?php visual_portfolio()->include_template( 'global/link-end', $link_data ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
70
  </div>
71
  </figcaption>
templates/items-list/items-style/fly/image.php CHANGED
@@ -4,40 +4,30 @@
4
  *
5
  * @var $args
6
  * @var $opts
 
7
  * @package visual-portfolio
8
  */
9
 
 
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
 
 
 
 
 
 
14
  ?>
15
 
16
  <div class="vp-portfolio__item-img-wrap">
17
  <div class="vp-portfolio__item-img">
18
- <?php
19
- if ( $args['url'] ) {
20
- ?>
21
- <a href="<?php echo esc_url( $args['url'] ); ?>"
22
- <?php
23
- if ( isset( $args['url_target'] ) && $args['url_target'] ) :
24
- ?>
25
- target="<?php echo esc_attr( $args['url_target'] ); ?>"
26
- <?php
27
- endif;
28
- if ( isset( $args['url_rel'] ) && $args['url_rel'] ) :
29
- ?>
30
- rel="<?php echo esc_attr( $args['url_rel'] ); ?>"
31
- <?php
32
- endif;
33
- ?>
34
- >
35
- <?php echo wp_kses( $args['image'], $args['image_allowed_html'] ); ?>
36
- </a>
37
- <?php
38
- } else {
39
- echo wp_kses( $args['image'], $args['image_allowed_html'] );
40
- }
41
- ?>
42
  </div>
43
  </div>
4
  *
5
  * @var $args
6
  * @var $opts
7
+ *
8
  * @package visual-portfolio
9
  */
10
 
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
+ $link_data = array(
18
+ 'href' => $args['url'],
19
+ 'target' => $args['url_target'],
20
+ 'rel' => $args['url_rel'],
21
+ );
22
+
23
  ?>
24
 
25
  <div class="vp-portfolio__item-img-wrap">
26
  <div class="vp-portfolio__item-img">
27
+ <?php visual_portfolio()->include_template( 'global/link-start', $link_data ); ?>
28
+
29
+ <?php echo wp_kses( $args['image'], $args['image_allowed_html'] ); ?>
30
+
31
+ <?php visual_portfolio()->include_template( 'global/link-end', $link_data ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  </div>
33
  </div>
templates/items-list/items-style/fly/meta.php CHANGED
@@ -4,290 +4,68 @@
4
  *
5
  * @var $args
6
  * @var $opts
 
7
  * @package visual-portfolio
8
  */
9
 
 
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
14
- // phpcs:ignore
15
- $tag = 'a';
16
- if ( ! $args['url'] ) {
17
- // phpcs:ignore
18
- $tag = 'span';
19
- }
20
-
21
- // phpcs:ignore
22
  $inline_meta = $opts['show_author'] && $args['author'] ||
23
  $opts['show_date'] ||
24
  $opts['show_comments_count'] && '' !== $args['comments_count'] ||
25
  $opts['show_views_count'] && $args['views_count'] ||
26
  $opts['show_reading_time'] && $args['reading_time'];
27
 
28
- // phpcs:ignore
29
  $show_meta = $inline_meta ||
30
  $opts['show_icon'] ||
31
  $opts['show_title'] && $args['title'] ||
32
  $opts['show_excerpt'] && $args['excerpt'] ||
33
  $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  ?>
35
 
36
  <figcaption class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
37
  <div class="vp-portfolio__item-meta-wrap vp-portfolio__custom-scrollbar">
38
- <<?php echo esc_html( $tag ); ?>
39
- <?php if ( $args['url'] ) : ?>
40
- href="<?php echo esc_url( $args['url'] ); ?>"
41
- <?php
42
- if ( isset( $args['url_target'] ) && $args['url_target'] ) :
43
- ?>
44
- target="<?php echo esc_attr( $args['url_target'] ); ?>"
45
- <?php
46
- endif;
47
- if ( isset( $args['url_rel'] ) && $args['url_rel'] ) :
48
- ?>
49
- rel="<?php echo esc_attr( $args['url_rel'] ); ?>"
50
- <?php
51
- endif;
52
- ?>
53
- tabindex="-1"
54
- <?php endif; ?>
55
- class="vp-portfolio__item-meta">
56
-
57
- <?php if ( $show_meta ) : ?>
58
- <?php
59
-
60
- // Show Icon.
61
- if ( $opts['show_icon'] ) {
62
- ?>
63
- <div class="vp-portfolio__item-meta-icon">
64
- <?php
65
- switch ( $args['format'] ) {
66
- case 'video':
67
- visual_portfolio()->include_template( 'icons/play' );
68
- break;
69
- case 'audio':
70
- visual_portfolio()->include_template( 'icons/music' );
71
- break;
72
- case 'gallery':
73
- visual_portfolio()->include_template( 'icons/gallery' );
74
- break;
75
- default:
76
- if ( isset( $args['vp_opts']['items_click_action'] ) && 'popup_gallery' === $args['vp_opts']['items_click_action'] ) {
77
- visual_portfolio()->include_template( 'icons/search' );
78
- } else {
79
- visual_portfolio()->include_template( 'icons/image' );
80
- }
81
- break;
82
- }
83
- ?>
84
- </div>
85
- <?php
86
- }
87
-
88
- // Show Categories.
89
- if ( $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] ) ) {
90
- ?>
91
- <div class="vp-portfolio__item-meta-categories">
92
- <?php
93
- // phpcs:ignore
94
- $count = $opts['categories_count'];
95
-
96
- // phpcs:ignore
97
- foreach ( $args['categories'] as $category ) {
98
- if ( ! $count ) {
99
- break;
100
- }
101
- ?>
102
- <div class="vp-portfolio__item-meta-category">
103
- <span><?php echo esc_html( $category['label'] ); ?></span>
104
- </div>
105
- <?php
106
- $count--;
107
- }
108
- ?>
109
- </div>
110
- <?php
111
- }
112
-
113
- // Show Title.
114
- if ( $opts['show_title'] && $args['title'] ) {
115
- ?>
116
- <h2 class="vp-portfolio__item-meta-title">
117
- <?php
118
- echo wp_kses_post( $args['title'] );
119
- ?>
120
- </h2>
121
- <?php
122
- }
123
-
124
- // Inline Meta.
125
- if ( $inline_meta ) {
126
- ?>
127
- <div class="vp-portfolio__item-meta-inline">
128
- <?php
129
-
130
- // Show Author.
131
- if ( $opts['show_author'] && $args['author'] ) {
132
- ?>
133
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-author">
134
- <span class="vp-portfolio__item-meta-part-icon">
135
- <span class="vp-screen-reader-text">
136
- <?php echo esc_html__( 'Author', 'visual-portfolio' ); ?>
137
- </span>
138
- <?php
139
- if ( $args['author_avatar'] ) {
140
- if ( $args['author_url'] && 'a' !== $tag ) {
141
- ?>
142
- <a href="<?php echo esc_url( $args['author_url'] ); ?>">
143
- <?php
144
- }
145
- ?>
146
- <img src="<?php echo esc_url( $args['author_avatar'] ); ?>" alt="<?php echo esc_attr( $args['author'] ); ?>" width="50" height="50">
147
- <?php
148
- if ( $args['author_url'] && 'a' !== $tag ) {
149
- ?>
150
- </a>
151
- <?php
152
- }
153
- } else {
154
- visual_portfolio()->include_template( 'icons/user' );
155
- }
156
- ?>
157
- </span>
158
- <span class="vp-portfolio__item-meta-part-text">
159
- <?php
160
- printf(
161
- // translators: %s - author name.
162
- esc_html__( 'By %s', 'visual-portfolio' ),
163
- $args['author_url'] && 'a' !== $tag ? '<a href="' . esc_url( $args['author_url'] ) . '">' . esc_html( $args['author'] ) . '</a>' : esc_html( $args['author'] )
164
- );
165
- ?>
166
- </span>
167
- </div>
168
- <?php
169
- }
170
-
171
- // Show Date.
172
- if ( $opts['show_date'] ) {
173
- ?>
174
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-date">
175
- <span class="vp-portfolio__item-meta-part-icon">
176
- <span class="vp-screen-reader-text">
177
- <?php echo esc_html__( 'Date', 'visual-portfolio' ); ?>
178
- </span>
179
- <?php visual_portfolio()->include_template( 'icons/calendar' ); ?>
180
- </span>
181
- <span class="vp-portfolio__item-meta-part-text">
182
- <?php echo esc_html( $args['published'] ); ?>
183
- </span>
184
- </div>
185
- <?php
186
- }
187
-
188
- // Show Comments Count.
189
- if ( $opts['show_comments_count'] && '' !== $args['comments_count'] ) {
190
- ?>
191
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-comments">
192
- <span class="vp-portfolio__item-meta-part-icon">
193
- <span class="vp-screen-reader-text">
194
- <?php echo esc_html__( 'Comments', 'visual-portfolio' ); ?>
195
- </span>
196
- <?php visual_portfolio()->include_template( 'icons/message' ); ?>
197
- </span>
198
- <span class="vp-portfolio__item-meta-part-text">
199
- <?php
200
- if ( $args['comments_url'] && 'a' !== $tag ) {
201
- ?>
202
- <a href="<?php echo esc_url( $args['comments_url'] ); ?>">
203
- <?php
204
- }
205
 
206
- if ( ! $args['comments_count'] ) {
207
- echo esc_html__( 'No Comments', 'visual-portfolio' );
208
- } else {
209
- // translators: %s Number of comments.
210
- echo esc_html( sprintf( _n( '%s Comment', '%s Comments', $args['comments_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['comments_count'] ) ) );
211
- }
212
 
213
- if ( $args['comments_url'] && 'a' !== $tag ) {
214
- ?>
215
- </a>
216
- <?php
217
- }
218
- ?>
219
- </span>
220
- </div>
221
- <?php
222
- }
223
 
224
- // Show Views Count.
225
- if ( $opts['show_views_count'] && $args['views_count'] ) {
226
- ?>
227
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-views">
228
- <span class="vp-portfolio__item-meta-part-icon">
229
- <span class="vp-screen-reader-text">
230
- <?php echo esc_html__( 'Views', 'visual-portfolio' ); ?>
231
- </span>
232
- <?php visual_portfolio()->include_template( 'icons/eye' ); ?>
233
- </span>
234
- <span class="vp-portfolio__item-meta-part-text">
235
- <?php
236
- // translators: %s Number of views.
237
- echo esc_html( sprintf( _n( '%s View', '%s Views', $args['views_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['views_count'] ) ) );
238
- ?>
239
- </span>
240
- </div>
241
- <?php
242
- }
243
 
244
- // Show Reading Time.
245
- if ( $opts['show_reading_time'] && $args['reading_time'] ) {
246
- ?>
247
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-reading-rime">
248
- <span class="vp-portfolio__item-meta-part-icon">
249
- <span class="vp-screen-reader-text">
250
- <?php echo esc_html__( 'Reading Time', 'visual-portfolio' ); ?>
251
- </span>
252
- <?php visual_portfolio()->include_template( 'icons/book' ); ?>
253
- </span>
254
- <span class="vp-portfolio__item-meta-part-text">
255
- <?php
256
- echo esc_html(
257
- sprintf(
258
- // translators: %s Reading time minutes.
259
- _n(
260
- '%s Min Read',
261
- '%s Mins Read',
262
- is_string( $args['reading_time'] ) ? 1 : $args['reading_time'],
263
- 'visual-portfolio'
264
- ),
265
- is_string( $args['reading_time'] ) ? $args['reading_time'] : number_format_i18n( (int) $args['reading_time'] )
266
- )
267
- );
268
- ?>
269
- </span>
270
- </div>
271
- <?php
272
- }
273
 
274
- ?>
275
- </div>
276
- <?php
277
- }
278
 
279
- // Show Excerpt.
280
- if ( $opts['show_excerpt'] && $args['excerpt'] ) {
281
- ?>
282
- <div class="vp-portfolio__item-meta-excerpt">
283
- <div>
284
- <?php echo wp_kses_post( $args['excerpt'] ); ?>
285
- </div>
286
- </div>
287
- <?php
288
- }
289
- ?>
290
- <?php endif; ?>
291
- </<?php echo esc_html( $tag ); ?>>
292
  </div>
293
  </figcaption>
4
  *
5
  * @var $args
6
  * @var $opts
7
+ *
8
  * @package visual-portfolio
9
  */
10
 
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
 
 
 
 
 
 
 
 
17
  $inline_meta = $opts['show_author'] && $args['author'] ||
18
  $opts['show_date'] ||
19
  $opts['show_comments_count'] && '' !== $args['comments_count'] ||
20
  $opts['show_views_count'] && $args['views_count'] ||
21
  $opts['show_reading_time'] && $args['reading_time'];
22
 
 
23
  $show_meta = $inline_meta ||
24
  $opts['show_icon'] ||
25
  $opts['show_title'] && $args['title'] ||
26
  $opts['show_excerpt'] && $args['excerpt'] ||
27
  $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] );
28
+
29
+ $templates_data = array(
30
+ 'args' => $args,
31
+ 'opts' => $opts,
32
+ 'allow_links' => ! $args['url'],
33
+ );
34
+
35
+ $link_data = array(
36
+ 'href' => $args['url'],
37
+ 'target' => $args['url_target'],
38
+ 'rel' => $args['url_rel'],
39
+ 'fallback' => 'span',
40
+ 'class' => 'vp-portfolio__item-meta',
41
+ 'tabindex' => '-1',
42
+ );
43
+
44
  ?>
45
 
46
  <figcaption class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
47
  <div class="vp-portfolio__item-meta-wrap vp-portfolio__custom-scrollbar">
48
+ <?php visual_portfolio()->include_template( 'global/link-start', $link_data ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ <?php
51
+ if ( $show_meta ) {
52
+ // Icon.
53
+ visual_portfolio()->include_template( 'items-list/item-parts/icon', $templates_data );
 
 
54
 
55
+ // Categories.
56
+ visual_portfolio()->include_template( 'items-list/item-parts/meta-categories', $templates_data );
 
 
 
 
 
 
 
 
57
 
58
+ // Title.
59
+ visual_portfolio()->include_template( 'items-list/item-parts/title', $templates_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
+ // Inline Meta.
62
+ visual_portfolio()->include_template( 'items-list/item-parts/inline-meta', $templates_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
+ // Excerpt.
65
+ visual_portfolio()->include_template( 'items-list/item-parts/excerpt', $templates_data );
66
+ }
67
+ ?>
68
 
69
+ <?php visual_portfolio()->include_template( 'global/link-end', $link_data ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
70
  </div>
71
  </figcaption>
templates/items-list/items-style/image.php CHANGED
@@ -4,76 +4,43 @@
4
  *
5
  * @var $args
6
  * @var $opts
 
7
  * @package visual-portfolio
8
  */
9
 
 
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
 
 
 
 
 
 
14
  ?>
15
 
16
  <div class="vp-portfolio__item-img-wrap">
17
  <div class="vp-portfolio__item-img">
18
- <?php
19
- if ( $args['url'] ) {
20
- ?>
21
- <a href="<?php echo esc_url( $args['url'] ); ?>"
22
- <?php
23
- if ( isset( $args['url_target'] ) && $args['url_target'] ) :
24
- ?>
25
- target="<?php echo esc_attr( $args['url_target'] ); ?>"
26
- <?php
27
- endif;
28
- if ( isset( $args['url_rel'] ) && $args['url_rel'] ) :
29
- ?>
30
- rel="<?php echo esc_attr( $args['url_rel'] ); ?>"
31
- <?php
32
- endif;
33
- ?>
34
- >
35
- <?php
36
- }
37
- ?>
38
- <?php echo wp_kses( $args['image'], $args['image_allowed_html'] ); ?>
39
 
40
- <div class="vp-portfolio__item-img-overlay">
41
- <?php
42
- // Show Icon.
43
- if ( $opts['show_icon'] ) {
44
- ?>
45
- <div class="vp-portfolio__item-meta-icon">
46
- <?php
47
- switch ( $args['format'] ) {
48
- case 'video':
49
- visual_portfolio()->include_template( 'icons/play' );
50
- break;
51
- case 'audio':
52
- visual_portfolio()->include_template( 'icons/music' );
53
- break;
54
- case 'gallery':
55
- visual_portfolio()->include_template( 'icons/gallery' );
56
- break;
57
- default:
58
- if ( isset( $args['vp_opts']['items_click_action'] ) && 'popup_gallery' === $args['vp_opts']['items_click_action'] ) {
59
- visual_portfolio()->include_template( 'icons/search' );
60
- } else {
61
- visual_portfolio()->include_template( 'icons/image' );
62
- }
63
- break;
64
- }
65
- ?>
66
- </div>
67
- <?php
68
- }
69
- ?>
70
- </div>
71
- <?php
72
- if ( $args['url'] ) {
73
- ?>
74
- </a>
75
  <?php
76
- }
77
- ?>
 
 
 
 
 
 
 
 
 
 
78
  </div>
79
  </div>
4
  *
5
  * @var $args
6
  * @var $opts
7
+ *
8
  * @package visual-portfolio
9
  */
10
 
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
+ $link_data = array(
18
+ 'href' => $args['url'],
19
+ 'target' => $args['url_target'],
20
+ 'rel' => $args['url_rel'],
21
+ );
22
+
23
  ?>
24
 
25
  <div class="vp-portfolio__item-img-wrap">
26
  <div class="vp-portfolio__item-img">
27
+ <?php visual_portfolio()->include_template( 'global/link-start', $link_data ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
+ <?php echo wp_kses( $args['image'], $args['image_allowed_html'] ); ?>
30
+
31
+ <div class="vp-portfolio__item-img-overlay">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  <?php
33
+ // Show Icon.
34
+ visual_portfolio()->include_template(
35
+ 'items-list/item-parts/icon',
36
+ array(
37
+ 'args' => $args,
38
+ 'opts' => $opts,
39
+ )
40
+ );
41
+ ?>
42
+ </div>
43
+
44
+ <?php visual_portfolio()->include_template( 'global/link-end', $link_data ); ?>
45
  </div>
46
  </div>
templates/items-list/items-style/meta.php CHANGED
@@ -4,266 +4,53 @@
4
  *
5
  * @var $args
6
  * @var $opts
 
7
  * @package visual-portfolio
8
  */
9
 
 
 
10
  if ( ! defined( 'ABSPATH' ) ) {
11
  exit;
12
  }
13
 
14
- // phpcs:ignore
15
  $inline_meta = $opts['show_author'] && $args['author'] ||
16
  $opts['show_date'] ||
17
  $opts['show_comments_count'] && '' !== $args['comments_count'] ||
18
  $opts['show_views_count'] && $args['views_count'] ||
19
  $opts['show_reading_time'] && $args['reading_time'];
20
 
21
- // phpcs:ignore
22
  $show_meta = $inline_meta ||
23
  $opts['show_title'] && $args['title'] ||
24
  $opts['show_excerpt'] && $args['excerpt'] ||
25
  $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] );
26
 
 
 
 
 
 
 
27
  ?>
28
 
29
  <figcaption class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
30
  <?php if ( $show_meta ) : ?>
31
  <div class="vp-portfolio__item-meta">
32
  <?php
 
 
33
 
34
- // Show Categories.
35
- if ( $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] ) ) {
36
- ?>
37
- <div class="vp-portfolio__item-meta-categories">
38
- <?php
39
- // phpcs:ignore
40
- $count = $opts['categories_count'];
41
-
42
- // phpcs:ignore
43
- foreach ( $args['categories'] as $category ) {
44
- if ( ! $count ) {
45
- break;
46
- }
47
- ?>
48
- <div class="vp-portfolio__item-meta-category">
49
- <a href="<?php echo esc_url( $category['url'] ); ?>">
50
- <?php echo esc_html( $category['label'] ); ?>
51
- </a>
52
- </div>
53
- <?php
54
- $count--;
55
- }
56
- ?>
57
- </div>
58
- <?php
59
- }
60
-
61
- // Show Title.
62
- if ( $opts['show_title'] && $args['title'] ) {
63
- ?>
64
- <h2 class="vp-portfolio__item-meta-title">
65
- <?php
66
- if ( $args['url'] ) {
67
- ?>
68
- <a href="<?php echo esc_url( $args['url'] ); ?>"
69
- <?php
70
- if ( isset( $args['url_target'] ) && $args['url_target'] ) :
71
- ?>
72
- target="<?php echo esc_attr( $args['url_target'] ); ?>"
73
- <?php
74
- endif;
75
- if ( isset( $args['url_rel'] ) && $args['url_rel'] ) :
76
- ?>
77
- rel="<?php echo esc_attr( $args['url_rel'] ); ?>"
78
- <?php
79
- endif;
80
- ?>
81
- >
82
- <?php echo wp_kses_post( $args['title'] ); ?>
83
- </a>
84
- <?php
85
- } else {
86
- echo wp_kses_post( $args['title'] );
87
- }
88
- ?>
89
- </h2>
90
- <?php
91
- }
92
 
93
  // Inline Meta.
94
- if ( $inline_meta ) {
95
- ?>
96
- <div class="vp-portfolio__item-meta-inline">
97
- <?php
98
-
99
- // Show Author.
100
- if ( $opts['show_author'] && $args['author'] ) {
101
- ?>
102
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-author">
103
- <span class="vp-portfolio__item-meta-part-icon">
104
- <span class="vp-screen-reader-text">
105
- <?php echo esc_html__( 'Author', 'visual-portfolio' ); ?>
106
- </span>
107
- <?php
108
- if ( $args['author_avatar'] ) {
109
- if ( $args['author_url'] ) {
110
- ?>
111
- <a href="<?php echo esc_url( $args['author_url'] ); ?>">
112
- <?php
113
- }
114
- ?>
115
- <img src="<?php echo esc_url( $args['author_avatar'] ); ?>" alt="<?php echo esc_attr( $args['author'] ); ?>" width="50" height="50">
116
- <?php
117
- if ( $args['author_url'] ) {
118
- ?>
119
- </a>
120
- <?php
121
- }
122
- } else {
123
- visual_portfolio()->include_template( 'icons/user' );
124
- }
125
- ?>
126
- </span>
127
- <span class="vp-portfolio__item-meta-part-text">
128
- <?php
129
- printf(
130
- // translators: %s - author name.
131
- esc_html__( 'By %s', 'visual-portfolio' ),
132
- $args['author_url'] ? '<a href="' . esc_url( $args['author_url'] ) . '">' . esc_html( $args['author'] ) . '</a>' : esc_html( $args['author'] )
133
- );
134
- ?>
135
- </span>
136
- </div>
137
- <?php
138
- }
139
-
140
- // Show Date.
141
- if ( $opts['show_date'] ) {
142
- ?>
143
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-date">
144
- <span class="vp-portfolio__item-meta-part-icon">
145
- <span class="vp-screen-reader-text">
146
- <?php echo esc_html__( 'Date', 'visual-portfolio' ); ?>
147
- </span>
148
- <?php visual_portfolio()->include_template( 'icons/calendar' ); ?>
149
- </span>
150
- <span class="vp-portfolio__item-meta-part-text">
151
- <?php echo esc_html( $args['published'] ); ?>
152
- </span>
153
- </div>
154
- <?php
155
- }
156
-
157
- // Show Comments Count.
158
- if ( $opts['show_comments_count'] && '' !== $args['comments_count'] ) {
159
- ?>
160
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-comments">
161
- <span class="vp-portfolio__item-meta-part-icon">
162
- <span class="vp-screen-reader-text">
163
- <?php echo esc_html__( 'Comments', 'visual-portfolio' ); ?>
164
- </span>
165
- <?php visual_portfolio()->include_template( 'icons/message' ); ?>
166
- </span>
167
- <span class="vp-portfolio__item-meta-part-text">
168
- <?php
169
- if ( $args['comments_url'] ) {
170
- ?>
171
- <a href="<?php echo esc_url( $args['comments_url'] ); ?>">
172
- <?php
173
- }
174
-
175
- if ( ! $args['comments_count'] ) {
176
- echo esc_html__( 'No Comments', 'visual-portfolio' );
177
- } else {
178
- // translators: %s Number of comments.
179
- echo esc_html( sprintf( _n( '%s Comment', '%s Comments', $args['comments_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['comments_count'] ) ) );
180
- }
181
-
182
- if ( $args['comments_url'] ) {
183
- ?>
184
- </a>
185
- <?php
186
- }
187
- ?>
188
- </span>
189
- </div>
190
- <?php
191
- }
192
-
193
- // Show Views Count.
194
- if ( $opts['show_views_count'] && $args['views_count'] ) {
195
- ?>
196
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-views">
197
- <span class="vp-portfolio__item-meta-part-icon">
198
- <span class="vp-screen-reader-text">
199
- <?php echo esc_html__( 'Views', 'visual-portfolio' ); ?>
200
- </span>
201
- <?php visual_portfolio()->include_template( 'icons/eye' ); ?>
202
- </span>
203
- <span class="vp-portfolio__item-meta-part-text">
204
- <?php
205
- // translators: %s Number of views.
206
- echo esc_html( sprintf( _n( '%s View', '%s Views', $args['views_count'], 'visual-portfolio' ), number_format_i18n( (int) $args['views_count'] ) ) );
207
- ?>
208
- </span>
209
- </div>
210
- <?php
211
- }
212
-
213
- // Show Reading Time.
214
- if ( $opts['show_reading_time'] && $args['reading_time'] ) {
215
- ?>
216
- <div class="vp-portfolio__item-meta-part vp-portfolio__item-meta-reading-rime">
217
- <span class="vp-portfolio__item-meta-part-icon">
218
- <span class="vp-screen-reader-text">
219
- <?php echo esc_html__( 'Reading Time', 'visual-portfolio' ); ?>
220
- </span>
221
- <?php visual_portfolio()->include_template( 'icons/book' ); ?>
222
- </span>
223
- <span class="vp-portfolio__item-meta-part-text">
224
- <?php
225
- echo esc_html(
226
- sprintf(
227
- // translators: %s Reading time minutes.
228
- _n(
229
- '%s Min Read',
230
- '%s Mins Read',
231
- is_string( $args['reading_time'] ) ? 1 : $args['reading_time'],
232
- 'visual-portfolio'
233
- ),
234
- is_string( $args['reading_time'] ) ? $args['reading_time'] : number_format_i18n( (int) $args['reading_time'] )
235
- )
236
- );
237
- ?>
238
- </span>
239
- </div>
240
- <?php
241
- }
242
-
243
- ?>
244
- </div>
245
- <?php
246
- }
247
 
248
- // Show Excerpt.
249
- if ( $opts['show_excerpt'] && $args['excerpt'] ) {
250
- ?>
251
- <div class="vp-portfolio__item-meta-excerpt">
252
- <div>
253
- <?php echo wp_kses_post( $args['excerpt'] ); ?>
254
- </div>
255
- </div>
256
- <?php
257
- }
258
 
259
- // Show Read More.
260
- if ( $opts['show_read_more'] && $opts['read_more_label'] ) {
261
- ?>
262
- <a class="vp-portfolio__item-meta-read-more" href="<?php echo esc_url( $opts['read_more_url'] ); ?>">
263
- <?php echo esc_html( $opts['read_more_label'] ); ?>
264
- </a>
265
- <?php
266
- }
267
  ?>
268
  </div>
269
  <?php endif; ?>
4
  *
5
  * @var $args
6
  * @var $opts
7
+ *
8
  * @package visual-portfolio
9
  */
10
 
11
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
12
+
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
 
17
  $inline_meta = $opts['show_author'] && $args['author'] ||
18
  $opts['show_date'] ||
19
  $opts['show_comments_count'] && '' !== $args['comments_count'] ||
20
  $opts['show_views_count'] && $args['views_count'] ||
21
  $opts['show_reading_time'] && $args['reading_time'];
22
 
 
23
  $show_meta = $inline_meta ||
24
  $opts['show_title'] && $args['title'] ||
25
  $opts['show_excerpt'] && $args['excerpt'] ||
26
  $opts['show_categories'] && $args['categories'] && ! empty( $args['categories'] );
27
 
28
+ $templates_data = array(
29
+ 'args' => $args,
30
+ 'opts' => $opts,
31
+ 'allow_links' => true,
32
+ );
33
+
34
  ?>
35
 
36
  <figcaption class="vp-portfolio__item-overlay vp-portfolio__item-align-<?php echo esc_attr( $opts['align'] ); ?>">
37
  <?php if ( $show_meta ) : ?>
38
  <div class="vp-portfolio__item-meta">
39
  <?php
40
+ // Categories.
41
+ visual_portfolio()->include_template( 'items-list/item-parts/meta-categories', $templates_data );
42
 
43
+ // Title.
44
+ visual_portfolio()->include_template( 'items-list/item-parts/title', $templates_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  // Inline Meta.
47
+ visual_portfolio()->include_template( 'items-list/item-parts/inline-meta', $templates_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
+ // Excerpt.
50
+ visual_portfolio()->include_template( 'items-list/item-parts/excerpt', $templates_data );
 
 
 
 
 
 
 
 
51
 
52
+ // Read More.
53
+ visual_portfolio()->include_template( 'items-list/item-parts/read-more', $templates_data );
 
 
 
 
 
 
54
  ?>
55
  </div>
56
  <?php endif; ?>
templates/items-list/layouts/slider/thumbnails.php CHANGED
@@ -10,6 +10,8 @@
10
  * @package visual-portfolio
11
  */
12
 
 
 
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
@@ -19,7 +21,6 @@ if ( ! defined( 'ABSPATH' ) ) {
19
  <div class="vp-portfolio__thumbnails-wrap">
20
  <div class="vp-portfolio__thumbnails">
21
  <?php
22
- // phpcs:ignore
23
  foreach ( $thumbnails as $image_id ) {
24
  ?>
25
  <div class="vp-portfolio__thumbnail-wrap">
10
  * @package visual-portfolio
11
  */
12
 
13
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
14
+
15
  if ( ! defined( 'ABSPATH' ) ) {
16
  exit;
17
  }
21
  <div class="vp-portfolio__thumbnails-wrap">
22
  <div class="vp-portfolio__thumbnails">
23
  <?php
 
24
  foreach ( $thumbnails as $image_id ) {
25
  ?>
26
  <div class="vp-portfolio__thumbnail-wrap">
templates/items-list/pagination/infinite.php CHANGED
@@ -3,6 +3,7 @@
3
  * Default infinite pagination template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
3
  * Default infinite pagination template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
templates/items-list/pagination/load-more.php CHANGED
@@ -3,6 +3,7 @@
3
  * Default load more pagination template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
3
  * Default load more pagination template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
templates/items-list/pagination/minimal/infinite.php CHANGED
@@ -3,6 +3,7 @@
3
  * Minimal infinite pagination template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
3
  * Minimal infinite pagination template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
templates/items-list/pagination/minimal/load-more.php CHANGED
@@ -3,6 +3,7 @@
3
  * Minimal load more pagination template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
3
  * Minimal load more pagination template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
templates/items-list/pagination/minimal/paged.php CHANGED
@@ -3,9 +3,12 @@
3
  * Minimal paged pagination template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
 
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
@@ -14,7 +17,6 @@ if ( ! defined( 'ABSPATH' ) ) {
14
 
15
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-pagination__style-minimal" data-vp-pagination-type="<?php echo esc_attr( $args['type'] ); ?>">
16
  <?php
17
- // phpcs:ignore
18
  foreach ( $args['items'] as $item ) {
19
  ?>
20
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
3
  * Minimal paged pagination template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
10
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
11
+
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
17
 
18
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-pagination__style-minimal" data-vp-pagination-type="<?php echo esc_attr( $args['type'] ); ?>">
19
  <?php
 
20
  foreach ( $args['items'] as $item ) {
21
  ?>
22
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
templates/items-list/pagination/paged.php CHANGED
@@ -3,9 +3,12 @@
3
  * Default paged pagination template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
 
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
@@ -18,7 +21,6 @@ if ( ! defined( 'ABSPATH' ) ) {
18
  <?php endif; ?>
19
  >
20
  <?php
21
- // phpcs:ignore
22
  foreach ( $args['items'] as $item ) {
23
  ?>
24
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
3
  * Default paged pagination template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
10
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
11
+
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
21
  <?php endif; ?>
22
  >
23
  <?php
 
24
  foreach ( $args['items'] as $item ) {
25
  ?>
26
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
templates/items-list/sort/dropdown/sort.php CHANGED
@@ -3,9 +3,12 @@
3
  * Dropdown sort template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
 
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
@@ -15,7 +18,6 @@ if ( ! defined( 'ABSPATH' ) ) {
15
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-sort__style-dropdown">
16
  <select>
17
  <?php
18
- // phpcs:ignore
19
  foreach ( $args['items'] as $item ) {
20
  ?>
21
  <option class="<?php echo esc_attr( $item['class'] ); ?>" data-vp-url="<?php echo esc_url( $item['url'] ); ?>" data-vp-sort="<?php echo esc_attr( $item['sort'] ); ?>" value="<?php echo esc_attr( $item['sort'] ); ?>" <?php selected( $item['active'] ); ?>>
3
  * Dropdown sort template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
10
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
11
+
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
18
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-sort__style-dropdown">
19
  <select>
20
  <?php
 
21
  foreach ( $args['items'] as $item ) {
22
  ?>
23
  <option class="<?php echo esc_attr( $item['class'] ); ?>" data-vp-url="<?php echo esc_url( $item['url'] ); ?>" data-vp-sort="<?php echo esc_attr( $item['sort'] ); ?>" value="<?php echo esc_attr( $item['sort'] ); ?>" <?php selected( $item['active'] ); ?>>
templates/items-list/sort/minimal/sort.php CHANGED
@@ -3,9 +3,12 @@
3
  * Minimal sort template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
 
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
@@ -14,7 +17,6 @@ if ( ! defined( 'ABSPATH' ) ) {
14
 
15
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-sort__style-minimal">
16
  <?php
17
- // phpcs:ignore
18
  foreach ( $args['items'] as $item ) {
19
  ?>
20
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
3
  * Minimal sort template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
10
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
11
+
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
17
 
18
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-sort__style-minimal">
19
  <?php
 
20
  foreach ( $args['items'] as $item ) {
21
  ?>
22
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
templates/items-list/sort/sort.php CHANGED
@@ -3,9 +3,12 @@
3
  * Default sort template.
4
  *
5
  * @var $args
 
6
  * @package visual-portfolio
7
  */
8
 
 
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
11
  }
@@ -14,7 +17,6 @@ if ( ! defined( 'ABSPATH' ) ) {
14
 
15
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-sort__style-default">
16
  <?php
17
- // phpcs:ignore
18
  foreach ( $args['items'] as $item ) {
19
  ?>
20
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
3
  * Default sort template.
4
  *
5
  * @var $args
6
+ *
7
  * @package visual-portfolio
8
  */
9
 
10
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
11
+
12
  if ( ! defined( 'ABSPATH' ) ) {
13
  exit;
14
  }
17
 
18
  <div class="<?php echo esc_attr( $args['class'] ); ?> vp-sort__style-default">
19
  <?php
 
20
  foreach ( $args['items'] as $item ) {
21
  ?>
22
  <div class="<?php echo esc_attr( $item['class'] ); ?>">
templates/items-list/wrapper-start.php CHANGED
@@ -10,6 +10,8 @@
10
  * @package visual-portfolio
11
  */
12
 
 
 
13
  if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
@@ -18,7 +20,6 @@ if ( ! defined( 'ABSPATH' ) ) {
18
 
19
  <div class="<?php echo esc_attr( $class ); ?>"
20
  <?php
21
- // phpcs:ignore
22
  foreach ( $data_attrs as $name => $data ) {
23
  if ( 'data-vp-next-page-url' === $name ) {
24
  echo esc_html( $name ) . '="' . esc_url( $data ) . '" ';
10
  * @package visual-portfolio
11
  */
12
 
13
+ // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
14
+
15
  if ( ! defined( 'ABSPATH' ) ) {
16
  exit;
17
  }
20
 
21
  <div class="<?php echo esc_attr( $class ); ?>"
22
  <?php
 
23
  foreach ( $data_attrs as $name => $data ) {
24
  if ( 'data-vp-next-page-url' === $name ) {
25
  echo esc_html( $name ) . '="' . esc_url( $data ) . '" ';
vendors/class-settings-api.php CHANGED
@@ -400,15 +400,15 @@ class Visual_Portfolio_Settings_API {
400
  $value = esc_attr( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
401
  $size = isset( $args['size'] ) && ! is_null( $args['size'] ) ? $args['size'] : 'regular';
402
  $id = $args['section'] . '[' . $args['id'] . ']';
403
- $label = isset( $args['options']['button_label'] ) ?
404
- $args['options']['button_label'] :
405
- __( 'Choose Image' );
406
  $img = wp_get_attachment_image_src( $value );
407
  $img_url = $img ? $img[0] : '';
408
 
409
  $html = sprintf( '<input type="hidden" class="%1$s-text wpsa-image-id" id="%2$s" name="%2$s" value="%3$s"/>', $size, $id, $value );
410
  $html .= '<p class="wpsa-image-preview"><img src="' . $img_url . '" /></p>';
411
- $html .= '<input type="button" class="button wpsa-image-browse" value="' . $label . '" />';
 
412
  $html .= $this->get_field_description( $args );
413
 
414
  echo $html;
@@ -651,35 +651,35 @@ class Visual_Portfolio_Settings_API {
651
  $('.wpsa-browse').on('click', function (event) {
652
  event.preventDefault();
653
 
654
- var self = $(this);
655
 
656
  // Create the media frame.
657
  var file_frame = wp.media.frames.file_frame = wp.media({
658
- title: self.data('uploader_title'),
659
  button: {
660
- text: self.data('uploader_button_text'),
661
  },
662
  multiple: false
663
  });
664
 
665
  file_frame.on('select', function () {
666
  attachment = file_frame.state().get('selection').first().toJSON();
667
- self.prev('.wpsa-url').val(attachment.url).change();
668
  });
669
 
670
  // Finally, open the modal
671
  file_frame.open();
672
  });
673
 
674
- $('.wpsa-image-browse').on('click', function (event) {
675
  event.preventDefault();
676
- var self = $(this);
677
 
678
  // Create the media frame.
679
  var file_frame = wp.media.frames.file_frame = wp.media({
680
- title: self.data('uploader_title'),
681
  button: {
682
- text: self.data('uploader_button_text'),
683
  },
684
  multiple: false,
685
  library: { type: 'image' }
@@ -688,35 +688,40 @@ class Visual_Portfolio_Settings_API {
688
  .on('select', function () {
689
  attachment = file_frame.state().get('selection').first().toJSON();
690
  var url;
691
- if (attachment.sizes && attachment.sizes.thumbnail)
692
- url = attachment.sizes.thumbnail.url;
693
- else
 
694
  url = attachment.url;
695
- self.parent().children('.wpsa-image-id').val(attachment.id).change();
696
- self.parent().children('.wpsa-image-preview').children('img').attr('src', url);
 
 
 
697
  })
698
 
699
  // Finally, open the modal
700
  .open();
701
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
702
  });
703
  </script>
704
  <?php
705
- $this->_style_fix();
706
  }
707
-
708
- function _style_fix() {
709
- global $wp_version;
710
-
711
- if ( version_compare( $wp_version, '3.8', '<=' ) ) :
712
- ?>
713
- <style type="text/css">
714
- /** WordPress 3.8 Fix **/
715
- .form-table th { padding: 20px 10px; }
716
- #wpbody-content .metabox-holder { padding-top: 5px; }
717
- </style>
718
- <?php
719
- endif;
720
- }
721
-
722
  }
400
  $value = esc_attr( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
401
  $size = isset( $args['size'] ) && ! is_null( $args['size'] ) ? $args['size'] : 'regular';
402
  $id = $args['section'] . '[' . $args['id'] . ']';
403
+ $label = isset( $args['options']['button_label'] ) ? $args['options']['button_label'] : __( 'Choose Image' );
404
+ $label_remove = isset( $args['options']['button_remove_label'] ) ? $args['options']['button_remove_label'] : __( 'Remove Image' );
 
405
  $img = wp_get_attachment_image_src( $value );
406
  $img_url = $img ? $img[0] : '';
407
 
408
  $html = sprintf( '<input type="hidden" class="%1$s-text wpsa-image-id" id="%2$s" name="%2$s" value="%3$s"/>', $size, $id, $value );
409
  $html .= '<p class="wpsa-image-preview"><img src="' . $img_url . '" /></p>';
410
+ $html .= '<input type="button" class="button button-primary wpsa-image-browse" value="' . $label . '" />';
411
+ $html .= '<input type="button" class="button button-link wpsa-image-remove" value="' . $label_remove . '" />';
412
  $html .= $this->get_field_description( $args );
413
 
414
  echo $html;
651
  $('.wpsa-browse').on('click', function (event) {
652
  event.preventDefault();
653
 
654
+ var $this = $(this);
655
 
656
  // Create the media frame.
657
  var file_frame = wp.media.frames.file_frame = wp.media({
658
+ title: $this.data('uploader_title'),
659
  button: {
660
+ text: $this.data('uploader_button_text'),
661
  },
662
  multiple: false
663
  });
664
 
665
  file_frame.on('select', function () {
666
  attachment = file_frame.state().get('selection').first().toJSON();
667
+ $this.prev('.wpsa-url').val(attachment.url).change();
668
  });
669
 
670
  // Finally, open the modal
671
  file_frame.open();
672
  });
673
 
674
+ $('.wpsa-image-browse').on('click', function(event) {
675
  event.preventDefault();
676
+ var $this = $(this);
677
 
678
  // Create the media frame.
679
  var file_frame = wp.media.frames.file_frame = wp.media({
680
+ title: $this.data('uploader_title'),
681
  button: {
682
+ text: $this.data('uploader_button_text'),
683
  },
684
  multiple: false,
685
  library: { type: 'image' }
688
  .on('select', function () {
689
  attachment = file_frame.state().get('selection').first().toJSON();
690
  var url;
691
+
692
+ if (attachment.sizes && attachment.sizes.thumbnail) {
693
+ url = attachment.sizes.thumbnail.url;
694
+ } else {
695
  url = attachment.url;
696
+ }
697
+
698
+ $this.siblings('.wpsa-image-id').val(attachment.id).change();
699
+ $this.siblings('.wpsa-image-preview').children('img').attr('src', url);
700
+ $this.siblings('.wpsa-image-remove').css('display', 'inline-block');
701
  })
702
 
703
  // Finally, open the modal
704
  .open();
705
  });
706
+
707
+ $('.wpsa-image-remove').each(function() {
708
+ var $this = $(this);
709
+
710
+ if ( $this.siblings('.wpsa-image-id').val() ) {
711
+ $this.css('display', 'inline-block');
712
+ }
713
+ });
714
+
715
+ $('.wpsa-image-remove').on('click', function(event) {
716
+ event.preventDefault();
717
+ var $this = $(this);
718
+
719
+ $this.siblings('.wpsa-image-id').val('').change();
720
+ $this.siblings('.wpsa-image-preview').children('img').attr('src', '');
721
+ $this.css('display', '');
722
+ });
723
  });
724
  </script>
725
  <?php
 
726
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
727
  }